Version Description
02.05.2022
- Tweak: Set that admins and shop managers are being tracked by default, because the majority of new users expects this
- Fix: Fixed document links for Meta (Facebook) settings
Download this release
Release Info
Developer | alekv |
Plugin | Pixel Manager for WooCommerce – Track Google Analytics, Google Ads, Facebook and more |
Version | 1.16.14 |
Comparing to | |
See all releases |
Code changes from version 1.16.13 to 1.16.14
- classes/admin/class-documentation.php +5 -5
- classes/class-db-upgrade.php +8 -0
- classes/class-default-options.php +3 -4
- classes/pixels/class-cookie-consent-management.php +0 -142
- classes/pixels/class-pixel-manager.php +10 -4
- classes/pixels/class-pixel.php +1 -2
- classes/pixels/class-shortcodes.php +4 -0
- classes/pixels/trait-product.php +1 -0
- js/public/wpm-public.p1.min.js +1 -1
- js/public/wpm-public.p1.min.js.map +1 -1
- languages/woocommerce-google-adwords-conversion-tracking-tag.pot +169 -169
- readme.txt +8 -2
- wgact.php +2 -2
classes/admin/class-documentation.php
CHANGED
@@ -37,7 +37,7 @@ class Documentation {
|
|
37 |
'default' => '/docs/wpm/plugin-configuration/google-optimize?utm_source=woocommerce-plugin&utm_medium=documentation-link&utm_campaign=woocommerce-pixel-manager-docs&utm_content=google-optimize',
|
38 |
'wcm' => '/'],
|
39 |
'facebook_pixel_id' => [
|
40 |
-
'default' => '/docs/wpm/plugin-configuration/
|
41 |
'wcm' => '/'],
|
42 |
'bing_uet_tag_id' => [
|
43 |
'default' => '/docs/wpm/plugin-configuration/microsoft-advertising#setting-up-the-uet-tag?utm_source=woocommerce-plugin&utm_medium=documentation-link&utm_campaign=woocommerce-pixel-manager-docs&utm_content=microsoft-advertising-uet-tag-id',
|
@@ -85,16 +85,16 @@ class Documentation {
|
|
85 |
'default' => '/docs/wpm/consent-management/overview/#explicit-consent-mode',
|
86 |
'wcm' => '/'],
|
87 |
'facebook_capi_token' => [
|
88 |
-
'default' => '/docs/wpm/plugin-configuration/
|
89 |
'wcm' => '/'],
|
90 |
'facebook_capi_user_transparency_process_anonymous_hits' => [
|
91 |
-
'default' => '/docs/wpm/plugin-configuration/
|
92 |
'wcm' => '/'],
|
93 |
'facebook_capi_user_transparency_send_additional_client_identifiers' => [
|
94 |
-
'default' => '/docs/wpm/plugin-configuration/
|
95 |
'wcm' => '/'],
|
96 |
'facebook_microdata' => [
|
97 |
-
'default' => '/docs/wpm/plugin-configuration/
|
98 |
'wcm' => '/'],
|
99 |
'maximum_compatibility_mode' => [
|
100 |
'default' => '/docs/wpm/plugin-configuration/general-settings/#maximum-compatibility-mode?utm_source=woocommerce-plugin&utm_medium=documentation-link&utm_campaign=woocommerce-pixel-manager-docs&utm_content=maximum-compatibility-mode',
|
37 |
'default' => '/docs/wpm/plugin-configuration/google-optimize?utm_source=woocommerce-plugin&utm_medium=documentation-link&utm_campaign=woocommerce-pixel-manager-docs&utm_content=google-optimize',
|
38 |
'wcm' => '/'],
|
39 |
'facebook_pixel_id' => [
|
40 |
+
'default' => '/docs/wpm/plugin-configuration/meta#find-the-pixel-id?utm_source=woocommerce-plugin&utm_medium=documentation-link&utm_campaign=woocommerce-pixel-manager-docs&utm_content=facebook-pixel-id',
|
41 |
'wcm' => '/'],
|
42 |
'bing_uet_tag_id' => [
|
43 |
'default' => '/docs/wpm/plugin-configuration/microsoft-advertising#setting-up-the-uet-tag?utm_source=woocommerce-plugin&utm_medium=documentation-link&utm_campaign=woocommerce-pixel-manager-docs&utm_content=microsoft-advertising-uet-tag-id',
|
85 |
'default' => '/docs/wpm/consent-management/overview/#explicit-consent-mode',
|
86 |
'wcm' => '/'],
|
87 |
'facebook_capi_token' => [
|
88 |
+
'default' => '/docs/wpm/plugin-configuration/meta#facebook-conversion-api-capi?utm_source=woocommerce-plugin&utm_medium=documentation-link&utm_campaign=woocommerce-pixel-manager-docs&utm_content=facebook-capi-token',
|
89 |
'wcm' => '/'],
|
90 |
'facebook_capi_user_transparency_process_anonymous_hits' => [
|
91 |
+
'default' => '/docs/wpm/plugin-configuration/meta#user-transparency-settings?utm_source=woocommerce-plugin&utm_medium=documentation-link&utm_campaign=woocommerce-pixel-manager-docs&utm_content=facebook-capi-transparency-settings',
|
92 |
'wcm' => '/'],
|
93 |
'facebook_capi_user_transparency_send_additional_client_identifiers' => [
|
94 |
+
'default' => '/docs/wpm/plugin-configuration/meta#user-transparency-settings?utm_source=woocommerce-plugin&utm_medium=documentation-link&utm_campaign=woocommerce-pixel-manager-docs&utm_content=facebook-capi-transparency-settings',
|
95 |
'wcm' => '/'],
|
96 |
'facebook_microdata' => [
|
97 |
+
'default' => '/docs/wpm/plugin-configuration/meta#microdata-tags-for-catalogues?utm_source=woocommerce-plugin&utm_medium=documentation-link&utm_campaign=woocommerce-pixel-manager-docs&utm_content=facebook-microdata',
|
98 |
'wcm' => '/'],
|
99 |
'maximum_compatibility_mode' => [
|
100 |
'default' => '/docs/wpm/plugin-configuration/general-settings/#maximum-compatibility-mode?utm_source=woocommerce-plugin&utm_medium=documentation-link&utm_campaign=woocommerce-pixel-manager-docs&utm_content=maximum-compatibility-mode',
|
classes/class-db-upgrade.php
CHANGED
@@ -10,9 +10,11 @@ if (!defined('ABSPATH')) {
|
|
10 |
}
|
11 |
|
12 |
class Db_Upgrade {
|
|
|
13 |
protected $options_backup_name = 'wgact_options_backup';
|
14 |
|
15 |
public function run_options_db_upgrade() {
|
|
|
16 |
$mysql_db_version = $this->get_mysql_db_version();
|
17 |
|
18 |
// determine version and run version specific upgrade function
|
@@ -31,6 +33,7 @@ class Db_Upgrade {
|
|
31 |
}
|
32 |
|
33 |
protected function up_from_2_to_3() {
|
|
|
34 |
$options_old = get_option(WPM_DB_OPTIONS_NAME);
|
35 |
|
36 |
$this->backup_options($options_old, '2');
|
@@ -56,6 +59,7 @@ class Db_Upgrade {
|
|
56 |
}
|
57 |
|
58 |
protected function up_from_1_to_2() {
|
|
|
59 |
$options_old = get_option(WPM_DB_OPTIONS_NAME);
|
60 |
|
61 |
$this->backup_options($options_old, '1');
|
@@ -79,6 +83,7 @@ class Db_Upgrade {
|
|
79 |
}
|
80 |
|
81 |
protected function get_mysql_db_version() {
|
|
|
82 |
$options = get_option(WPM_DB_OPTIONS_NAME);
|
83 |
|
84 |
// error_log(print_r($options,true));
|
@@ -93,6 +98,7 @@ class Db_Upgrade {
|
|
93 |
}
|
94 |
|
95 |
public function up_from_zero_to_1() {
|
|
|
96 |
$option_name_old_1 = 'wgact_plugin_options_1';
|
97 |
$option_name_old_2 = 'wgact_plugin_options_2';
|
98 |
|
@@ -113,6 +119,7 @@ class Db_Upgrade {
|
|
113 |
}
|
114 |
|
115 |
protected function get_option_value_v1( $option_name ) {
|
|
|
116 |
if (!get_option($option_name)) {
|
117 |
$option_value = '';
|
118 |
} else {
|
@@ -124,6 +131,7 @@ class Db_Upgrade {
|
|
124 |
}
|
125 |
|
126 |
protected function backup_options( $options, $version ) {
|
|
|
127 |
$options_backup = get_option($this->options_backup_name);
|
128 |
|
129 |
$options_backup[$version] = $options;
|
10 |
}
|
11 |
|
12 |
class Db_Upgrade {
|
13 |
+
|
14 |
protected $options_backup_name = 'wgact_options_backup';
|
15 |
|
16 |
public function run_options_db_upgrade() {
|
17 |
+
|
18 |
$mysql_db_version = $this->get_mysql_db_version();
|
19 |
|
20 |
// determine version and run version specific upgrade function
|
33 |
}
|
34 |
|
35 |
protected function up_from_2_to_3() {
|
36 |
+
|
37 |
$options_old = get_option(WPM_DB_OPTIONS_NAME);
|
38 |
|
39 |
$this->backup_options($options_old, '2');
|
59 |
}
|
60 |
|
61 |
protected function up_from_1_to_2() {
|
62 |
+
|
63 |
$options_old = get_option(WPM_DB_OPTIONS_NAME);
|
64 |
|
65 |
$this->backup_options($options_old, '1');
|
83 |
}
|
84 |
|
85 |
protected function get_mysql_db_version() {
|
86 |
+
|
87 |
$options = get_option(WPM_DB_OPTIONS_NAME);
|
88 |
|
89 |
// error_log(print_r($options,true));
|
98 |
}
|
99 |
|
100 |
public function up_from_zero_to_1() {
|
101 |
+
|
102 |
$option_name_old_1 = 'wgact_plugin_options_1';
|
103 |
$option_name_old_2 = 'wgact_plugin_options_2';
|
104 |
|
119 |
}
|
120 |
|
121 |
protected function get_option_value_v1( $option_name ) {
|
122 |
+
|
123 |
if (!get_option($option_name)) {
|
124 |
$option_value = '';
|
125 |
} else {
|
131 |
}
|
132 |
|
133 |
protected function backup_options( $options, $version ) {
|
134 |
+
|
135 |
$options_backup = get_option($this->options_backup_name);
|
136 |
|
137 |
$options_backup[$version] = $options;
|
classes/class-default-options.php
CHANGED
@@ -10,6 +10,7 @@ class Default_Options {
|
|
10 |
|
11 |
// get the default options
|
12 |
public function get_default_options() {
|
|
|
13 |
// default options settings
|
14 |
return [
|
15 |
'google' => [
|
@@ -85,10 +86,7 @@ class Default_Options {
|
|
85 |
'explicit_consent' => 0,
|
86 |
],
|
87 |
'order_deduplication' => 1,
|
88 |
-
'disable_tracking_for' => [
|
89 |
-
'administrator',
|
90 |
-
'shop_manager',
|
91 |
-
],
|
92 |
],
|
93 |
'general' => [
|
94 |
'variations_output' => 1,
|
@@ -138,6 +136,7 @@ class Default_Options {
|
|
138 |
}
|
139 |
|
140 |
protected function is_associative_array( $array ) {
|
|
|
141 |
if (is_array($array)) {
|
142 |
return ( array_values($array) !== $array );
|
143 |
} else {
|
10 |
|
11 |
// get the default options
|
12 |
public function get_default_options() {
|
13 |
+
|
14 |
// default options settings
|
15 |
return [
|
16 |
'google' => [
|
86 |
'explicit_consent' => 0,
|
87 |
],
|
88 |
'order_deduplication' => 1,
|
89 |
+
'disable_tracking_for' => [],
|
|
|
|
|
|
|
90 |
],
|
91 |
'general' => [
|
92 |
'variations_output' => 1,
|
136 |
}
|
137 |
|
138 |
protected function is_associative_array( $array ) {
|
139 |
+
|
140 |
if (is_array($array)) {
|
141 |
return ( array_values($array) !== $array );
|
142 |
} else {
|
classes/pixels/class-cookie-consent-management.php
DELETED
@@ -1,142 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Name: Cookie Consent Management
|
5 |
-
* Version: 1.0
|
6 |
-
*/
|
7 |
-
|
8 |
-
// TODO implement CCM https://wordpress.org/plugins/uk-cookie-consent/ (200k) -> doesn't allow cookies to be disabled
|
9 |
-
// TODO implement CCM https://wordpress.org/plugins/auto-terms-of-service-and-privacy-policy/ (100k)
|
10 |
-
// TODO implement CCM https://wordpress.org/plugins/complianz-gdpr/ (100k)
|
11 |
-
// TODO implement CCM https://wordpress.org/plugins/eu-cookie-law/ (100k) -> doesn't set a non tracking cookie. bad programming overall
|
12 |
-
// TODO https://wordpress.org/plugins/gdpr-cookie-compliance/ (100k)
|
13 |
-
// TODO https://wordpress.org/plugins/cookiebot/ (60k) -> no cookie or filter based third party tracking opt out
|
14 |
-
// TODO https://wordpress.org/plugins/gdpr/ (30k) -> not possible to implement since users can choose their own cookie names
|
15 |
-
// TODO https://wordpress.org/plugins/gdpr-framework/ (30k)
|
16 |
-
// TODO https://wordpress.org/plugins/wf-cookie-consent/ (20k)
|
17 |
-
// TODO https://wordpress.org/plugins/responsive-cookie-consent/ (3k)
|
18 |
-
// TODO https://wordpress.org/plugins/surbma-gdpr-proof-google-analytics/ (1k)
|
19 |
-
|
20 |
-
namespace WCPM\Classes\Pixels;
|
21 |
-
|
22 |
-
if (!defined('ABSPATH')) {
|
23 |
-
exit; // Exit if accessed directly
|
24 |
-
}
|
25 |
-
|
26 |
-
class Cookie_Consent_Management {
|
27 |
-
public $plugin_prefix;
|
28 |
-
|
29 |
-
// check if third party cookie prevention is active
|
30 |
-
public function is_cookie_prevention_active() {
|
31 |
-
$cookie_prevention = false;
|
32 |
-
|
33 |
-
// use filter to set default to activate prevention
|
34 |
-
// add_filter( 'wgact_cookie_prevention', '__return_true' );
|
35 |
-
// later, turn it off in order to allow cookies in case they have been actively approved
|
36 |
-
$cookie_prevention = apply_filters_deprecated('wgact_cookie_prevention', [$cookie_prevention], '1.10.4', 'wooptpm_cookie_prevention');
|
37 |
-
$cookie_prevention = apply_filters_deprecated('wooptpm_cookie_prevention', [$cookie_prevention], '1.13.0', 'wpm_cookie_prevention');
|
38 |
-
$cookie_prevention = apply_filters('wpm_cookie_prevention', $cookie_prevention);
|
39 |
-
|
40 |
-
// check if the Moove third party cookie prevention is on
|
41 |
-
if ($this->is_moove_cookie_prevention_active()) {
|
42 |
-
$cookie_prevention = true;
|
43 |
-
}
|
44 |
-
|
45 |
-
// check if the Cookie Notice Plugin third party cookie prevention is on
|
46 |
-
if ($this->is_cookie_notice_plugin_cookie_prevention_active()) {
|
47 |
-
$cookie_prevention = true;
|
48 |
-
}
|
49 |
-
|
50 |
-
// check if the Cookie Law Info third party cookie prevention is on
|
51 |
-
if ($this->is_cookie_law_info_cookie_prevention_active()) {
|
52 |
-
$cookie_prevention = true;
|
53 |
-
}
|
54 |
-
|
55 |
-
// check if marketing cookies have been approved by Borlabs
|
56 |
-
if ($this->check_borlabs_gave_marketing_consent()) {
|
57 |
-
$cookie_prevention = false;
|
58 |
-
}
|
59 |
-
|
60 |
-
return $cookie_prevention;
|
61 |
-
}
|
62 |
-
|
63 |
-
public function check_borlabs_gave_marketing_consent() {
|
64 |
-
// check if Borlabs is running
|
65 |
-
if (function_exists('BorlabsCookieHelper')) {
|
66 |
-
|
67 |
-
// check if Borlabs minimum version is installed
|
68 |
-
$borlabs_info = get_file_data(ABSPATH . 'wp-content/plugins/borlabs-cookie/borlabs-cookie.php', [
|
69 |
-
'Version' => 'Version'
|
70 |
-
]);
|
71 |
-
|
72 |
-
// the minimum version I know of that supports gaveConsent('marketing') is 2.2.4
|
73 |
-
if (version_compare('2.1.0', $borlabs_info['Version'], '<=')) {
|
74 |
-
|
75 |
-
if (BorlabsCookieHelper()->gaveConsent('google-ads') || BorlabsCookieHelper()->gaveConsent('woopt-pixel-manager')) {
|
76 |
-
return true;
|
77 |
-
}
|
78 |
-
}
|
79 |
-
}
|
80 |
-
|
81 |
-
return false;
|
82 |
-
}
|
83 |
-
|
84 |
-
public function set_plugin_prefix( $name ) {
|
85 |
-
$this->plugin_prefix = $name;
|
86 |
-
}
|
87 |
-
|
88 |
-
// return the cookie contents, if the cookie is set
|
89 |
-
public function get_cookie( $cookie_name ) {
|
90 |
-
|
91 |
-
$_cookie = filter_input_array(INPUT_COOKIE, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
|
92 |
-
|
93 |
-
return $_cookie[$cookie_name] ? $_cookie[$cookie_name] : null;
|
94 |
-
}
|
95 |
-
|
96 |
-
// check if the Cookie Law Info plugin prevents third party cookies
|
97 |
-
// https://wordpress.org/plugins/cookie-law-info/
|
98 |
-
public function is_cookie_law_info_cookie_prevention_active() {
|
99 |
-
$cookie_consent_management_cookie = $this->get_cookie('cookielawinfo-checkbox-non-necessary');
|
100 |
-
|
101 |
-
if ('no' == $cookie_consent_management_cookie) {
|
102 |
-
return true;
|
103 |
-
} else {
|
104 |
-
return false;
|
105 |
-
}
|
106 |
-
}
|
107 |
-
|
108 |
-
// check if the Cookie Notice Plugin prevents third party cookies
|
109 |
-
// https://wordpress.org/plugins/cookie-notice/
|
110 |
-
public function is_cookie_notice_plugin_cookie_prevention_active() {
|
111 |
-
$cookie_consent_management_cookie = $this->get_cookie('cookie_notice_accepted');
|
112 |
-
|
113 |
-
if ('false' == $cookie_consent_management_cookie) {
|
114 |
-
return true;
|
115 |
-
} else {
|
116 |
-
return false;
|
117 |
-
}
|
118 |
-
}
|
119 |
-
|
120 |
-
// check if the Moove GDPR Cookie Compliance prevents third party cookies
|
121 |
-
// https://wordpress.org/plugins/gdpr-cookie-compliance/
|
122 |
-
public function is_moove_cookie_prevention_active() {
|
123 |
-
|
124 |
-
$_cookie = filter_input_array(INPUT_COOKIE, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
|
125 |
-
|
126 |
-
if (isset($_cookie['moove_gdpr_popup'])) {
|
127 |
-
|
128 |
-
$cookie_consent_management_cookie = $_cookie['moove_gdpr_popup'];
|
129 |
-
$cookie_consent_management_cookie = json_decode(stripslashes($cookie_consent_management_cookie), true);
|
130 |
-
|
131 |
-
if (array_key_exists('thirdparty', $cookie_consent_management_cookie) && 0 == $cookie_consent_management_cookie['thirdparty']) {
|
132 |
-
// print_r( $cookie_consent_management_cookie );
|
133 |
-
return true;
|
134 |
-
} else {
|
135 |
-
return false;
|
136 |
-
}
|
137 |
-
|
138 |
-
} else {
|
139 |
-
return false;
|
140 |
-
}
|
141 |
-
}
|
142 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
classes/pixels/class-pixel-manager.php
CHANGED
@@ -2,6 +2,8 @@
|
|
2 |
|
3 |
namespace WCPM\Classes\Pixels;
|
4 |
|
|
|
|
|
5 |
use WCPM\Classes\Pixels\Facebook\Facebook_Microdata ;
|
6 |
use WCPM\Classes\Pixels\Facebook\Facebook_Pixel_Manager ;
|
7 |
use WCPM\Classes\Pixels\Facebook\Facebook_Pixel_Manager_Microdata ;
|
@@ -66,10 +68,6 @@ class Pixel_Manager extends Script_Manager
|
|
66 |
}
|
67 |
add_action( 'wp_head', function () {
|
68 |
$this->inject_wpm_closing();
|
69 |
-
// if( isset(WC()->session)) {
|
70 |
-
// error_log('session is set');
|
71 |
-
// error_log(print_r(WC()->session,true));
|
72 |
-
// }
|
73 |
} );
|
74 |
/**
|
75 |
* Front-end script section
|
@@ -136,6 +134,14 @@ class Pixel_Manager extends Script_Manager
|
|
136 |
);
|
137 |
add_action( 'woocommerce_mini_cart_contents', [ $this, 'woocommerce_mini_cart_contents' ] );
|
138 |
add_action( 'woocommerce_new_order', [ $this, 'wpm_woocommerce_new_order' ] );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
139 |
}
|
140 |
|
141 |
public function wpm_woocommerce_new_order( $order_id )
|
2 |
|
3 |
namespace WCPM\Classes\Pixels;
|
4 |
|
5 |
+
use WCPM\Classes\Http\Facebook_CAPI ;
|
6 |
+
use WCPM\Classes\Http\Google_MP ;
|
7 |
use WCPM\Classes\Pixels\Facebook\Facebook_Microdata ;
|
8 |
use WCPM\Classes\Pixels\Facebook\Facebook_Pixel_Manager ;
|
9 |
use WCPM\Classes\Pixels\Facebook\Facebook_Pixel_Manager_Microdata ;
|
68 |
}
|
69 |
add_action( 'wp_head', function () {
|
70 |
$this->inject_wpm_closing();
|
|
|
|
|
|
|
|
|
71 |
} );
|
72 |
/**
|
73 |
* Front-end script section
|
134 |
);
|
135 |
add_action( 'woocommerce_mini_cart_contents', [ $this, 'woocommerce_mini_cart_contents' ] );
|
136 |
add_action( 'woocommerce_new_order', [ $this, 'wpm_woocommerce_new_order' ] );
|
137 |
+
/**
|
138 |
+
* Run background processes
|
139 |
+
*/
|
140 |
+
add_action( 'template_redirect', [ $this, 'run_background_processes' ] );
|
141 |
+
}
|
142 |
+
|
143 |
+
public function run_background_processes()
|
144 |
+
{
|
145 |
}
|
146 |
|
147 |
public function wpm_woocommerce_new_order( $order_id )
|
classes/pixels/class-pixel.php
CHANGED
@@ -2,13 +2,12 @@
|
|
2 |
|
3 |
namespace WCPM\Classes\Pixels;
|
4 |
|
5 |
-
use stdClass;
|
6 |
-
|
7 |
if (!defined('ABSPATH')) {
|
8 |
exit; // Exit if accessed directly
|
9 |
}
|
10 |
|
11 |
class Pixel {
|
|
|
12 |
use Trait_Product;
|
13 |
|
14 |
protected $add_cart_data;
|
2 |
|
3 |
namespace WCPM\Classes\Pixels;
|
4 |
|
|
|
|
|
5 |
if (!defined('ABSPATH')) {
|
6 |
exit; // Exit if accessed directly
|
7 |
}
|
8 |
|
9 |
class Pixel {
|
10 |
+
|
11 |
use Trait_Product;
|
12 |
|
13 |
protected $add_cart_data;
|
classes/pixels/class-shortcodes.php
CHANGED
@@ -9,11 +9,13 @@ if (!defined('ABSPATH')) {
|
|
9 |
}
|
10 |
|
11 |
class Shortcodes extends Pixel {
|
|
|
12 |
use Trait_Product;
|
13 |
|
14 |
private $google;
|
15 |
|
16 |
public function __construct( $options ) {
|
|
|
17 |
parent::__construct($options);
|
18 |
|
19 |
$this->google = new Google($options);
|
@@ -23,6 +25,7 @@ class Shortcodes extends Pixel {
|
|
23 |
}
|
24 |
|
25 |
public function wpm_view_item( $attributes ) {
|
|
|
26 |
$shortcode_attributes = shortcode_atts(
|
27 |
[
|
28 |
'product-id' => null,
|
@@ -51,6 +54,7 @@ class Shortcodes extends Pixel {
|
|
51 |
}
|
52 |
|
53 |
public function wpm_conversion_pixel( $attributes ) {
|
|
|
54 |
$this->function_exists_script();
|
55 |
|
56 |
$pairs = [
|
9 |
}
|
10 |
|
11 |
class Shortcodes extends Pixel {
|
12 |
+
|
13 |
use Trait_Product;
|
14 |
|
15 |
private $google;
|
16 |
|
17 |
public function __construct( $options ) {
|
18 |
+
|
19 |
parent::__construct($options);
|
20 |
|
21 |
$this->google = new Google($options);
|
25 |
}
|
26 |
|
27 |
public function wpm_view_item( $attributes ) {
|
28 |
+
|
29 |
$shortcode_attributes = shortcode_atts(
|
30 |
[
|
31 |
'product-id' => null,
|
54 |
}
|
55 |
|
56 |
public function wpm_conversion_pixel( $attributes ) {
|
57 |
+
|
58 |
$this->function_exists_script();
|
59 |
|
60 |
$pairs = [
|
classes/pixels/trait-product.php
CHANGED
@@ -12,6 +12,7 @@ if (!defined('ABSPATH')) {
|
|
12 |
trait Trait_Product {
|
13 |
|
14 |
protected function get_formatted_variant_text( $product ) {
|
|
|
15 |
$variant_text_array = [];
|
16 |
|
17 |
$attributes = $product->get_attributes();
|
12 |
trait Trait_Product {
|
13 |
|
14 |
protected function get_formatted_variant_text( $product ) {
|
15 |
+
|
16 |
$variant_text_array = [];
|
17 |
|
18 |
$attributes = $product->get_attributes();
|
js/public/wpm-public.p1.min.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
(()=>{var e={164:()=>{jQuery(document).on("wpmLoadPixels",(function(){var e,t,a,o,r,i;null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.facebook)||void 0===a||!a.pixel_id||null!==(o=wpmDataLayer)&&void 0!==o&&null!==(r=o.pixels)&&void 0!==r&&null!==(i=r.facebook)&&void 0!==i&&i.loaded||wpm.canIFire("ads","facebook-ads")&&wpm.loadFacebookPixel()})),jQuery(document).on("wpmAddToCart",(function(e,t){try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;let e=wpm.getRandomEventId();fbq("track","AddToCart",{content_type:"product",content_name:t.name,content_ids:t.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],value:parseFloat(t.quantity*t.price),currency:t.currency},{eventID:e}),t.currency=wpmDataLayer.shop.currency,jQuery(document).trigger("wpmFbCapiEvent",{event_name:"AddToCart",event_id:e,user_data:wpm.getFbUserData(),product_data:t,product_id:t.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],event_source_url:window.location.href})}catch(e){console.error(e)}})),jQuery(document).on("wpmBeginCheckout",(function(e){try{var t,a,o;if(null===(t=wpmDataLayer)||void 0===t||null===(a=t.pixels)||void 0===a||null===(o=a.facebook)||void 0===o||!o.loaded)return;let e=wpm.getRandomEventId();fbq("track","InitiateCheckout",{},{eventID:e}),jQuery(document).trigger("wpmFbCapiEvent",{event_name:"InitiateCheckout",event_id:e,user_data:wpm.getFbUserData(),event_source_url:window.location.href})}catch(e){console.error(e)}})),jQuery(document).on("wpmAddToWishlist",(function(e,t){try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;let e=wpm.getRandomEventId();fbq("track","AddToWishlist",{content_type:"product",content_name:t.name,content_ids:t.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],value:parseFloat(t.quantity*t.price),currency:t.currency},{eventID:e}),t.currency=wpmDataLayer.shop.currency,jQuery(document).trigger("wpmFbCapiEvent",{event_name:"AddToWishlist",event_id:e,user_data:wpm.getFbUserData(),product_data:t,product_id:t.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],event_source_url:window.location.href})}catch(e){console.error(e)}})),jQuery(document).on("wpmViewItem",(function(e,t){try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;wpm.fbViewContent(t)}catch(e){console.error(e)}})),jQuery(document).on("wpmSearch",(function(){try{var e,t,a;if(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.facebook)||void 0===a||!a.loaded)return;let o=wpm.getRandomEventId();fbq("track","Search",{},{eventID:o}),jQuery(document).trigger("wpmFbCapiEvent",{event_name:"Search",event_id:o,user_data:wpm.getFbUserData(),event_source_url:window.location.href})}catch(e){console.error(e)}})),jQuery(document).on("wpmLoadAlways",(function(){try{var e,t,a;if(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.facebook)||void 0===a||!a.loaded)return;wpm.setFbUserData()}catch(e){console.error(e)}})),jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a;if(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.facebook)||void 0===a||!a.loaded)return;fbq("track","Purchase",{content_type:"product",value:wpmDataLayer.order.value_filtered,currency:wpmDataLayer.order.currency,content_ids:wpm.facebookContentIds()},{eventID:wpmDataLayer.order.id})}catch(e){console.error(e)}}))},1:()=>{!function(e,t,a){let o;e.loadFacebookPixel=()=>{try{wpmDataLayer.pixels.facebook.loaded=!0,e=window,t=document,a="script",e.fbq||(o=e.fbq=function(){o.callMethod?o.callMethod.apply(o,arguments):o.queue.push(arguments)},e._fbq||(e._fbq=o),o.push=o,o.loaded=!0,o.version="2.0",o.queue=[],(r=t.createElement(a)).async=!0,r.src="https://connect.facebook.net/en_US/fbevents.js",(i=t.getElementsByTagName(a)[0]).parentNode.insertBefore(r,i)),fbq("init",wpmDataLayer.pixels.facebook.pixel_id),fbq("track","PageView")}catch(a){console.error(a)}var e,t,a,o,r,i},e.getRandomEventId=()=>(Math.random()+1).toString(36).substring(2),e.getFbUserData=()=>o||e.getFbUserDataFromBrowser(),e.setFbUserData=()=>{o=e.getFbUserDataFromBrowser()},e.getFbUserDataFromBrowser=()=>({fbp:e.getCookie("_fbp"),fbc:e.getCookie("_fbc"),client_user_agent:navigator.userAgent}),e.fbViewContent=t=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;let i=e.getRandomEventId();fbq("track","ViewContent",{content_type:"product",content_name:t.name,content_ids:t.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],currency:wpmDataLayer.shop.currency,value:t.price},{eventID:i}),t.currency=wpmDataLayer.shop.currency,jQuery(document).trigger("wpmFbCapiEvent",{event_name:"ViewContent",event_id:i,user_data:e.getFbUserData(),product_data:t,product_id:t.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],event_source_url:window.location.href})}catch(e){console.error(e)}},e.facebookContentIds=()=>{let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?e.push(String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type])):e.push(String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))}return e},e.trackCustomFacebookEvent=t=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;let i=e.getRandomEventId();fbq("trackCustom",t,{},{eventID:i}),jQuery(document).trigger("wpmFbCapiEvent",{event_name:t,event_id:i,user_data:e.getFbUserData(),event_source_url:window.location.href})}catch(e){console.error(e)}}}(window.wpm=window.wpm||{},jQuery)},12:(e,t,a)=>{a(1),a(164)},165:()=>{jQuery(document).on("wpmViewItemList",(function(e,t){try{var a,o,r,i,n,s,d,l,c,u,p;if(jQuery.isEmptyObject(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(i=r.ads)||void 0===i?void 0:i.conversionIds))return;if(null===(n=wpmDataLayer)||void 0===n||null===(s=n.pixels)||void 0===s||null===(d=s.google)||void 0===d||null===(l=d.ads)||void 0===l||null===(c=l.dynamic_remarketing)||void 0===c||!c.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;if(null!==(u=wpmDataLayer)&&void 0!==u&&null!==(p=u.general)&&void 0!==p&&p.variationsOutput&&t.isVariable&&!1===wpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids)return;if(!t)return;wpm.gtagLoaded().then((function(){gtag("event","view_item_list",{send_to:wpm.getGoogleAdsConversionIdentifiers(),items:[{id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical}]})}))}catch(e){console.error(e)}})),jQuery(document).on("wpmAddToCart",(function(e,t){try{var a,o,r,i,n,s,d,l,c;if(jQuery.isEmptyObject(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(i=r.ads)||void 0===i?void 0:i.conversionIds))return;if(null===(n=wpmDataLayer)||void 0===n||null===(s=n.pixels)||void 0===s||null===(d=s.google)||void 0===d||null===(l=d.ads)||void 0===l||null===(c=l.dynamic_remarketing)||void 0===c||!c.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;wpm.gtagLoaded().then((function(){gtag("event","add_to_cart",{send_to:wpm.getGoogleAdsConversionIdentifiers(),value:t.quantity*t.price,items:[{id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],quantity:t.quantity,price:t.price,google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical}]})}))}catch(e){console.error(e)}})),jQuery(document).on("wpmViewItem",(function(e,t){try{var a,o,r,i,n,s,d,l,c;if(jQuery.isEmptyObject(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(i=r.ads)||void 0===i?void 0:i.conversionIds))return;if(null===(n=wpmDataLayer)||void 0===n||null===(s=n.pixels)||void 0===s||null===(d=s.google)||void 0===d||null===(l=d.ads)||void 0===l||null===(c=l.dynamic_remarketing)||void 0===c||!c.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;wpm.gtagLoaded().then((function(){gtag("event","view_item",{send_to:wpm.getGoogleAdsConversionIdentifiers(),value:(t.quantity?t.quantity:1)*t.price,items:[{id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],quantity:t.quantity?t.quantity:1,price:t.price,google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical}]})}))}catch(e){console.error(e)}})),jQuery(document).on("wpmSearch",(function(){try{var e,t,a,o,r,i,n,s,d;if(jQuery.isEmptyObject(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.ads)||void 0===o?void 0:o.conversionIds))return;if(null===(r=wpmDataLayer)||void 0===r||null===(i=r.pixels)||void 0===i||null===(n=i.google)||void 0===n||null===(s=n.ads)||void 0===s||null===(d=s.dynamic_remarketing)||void 0===d||!d.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let u=[];for(const[e,t]of Object.entries(wpmDataLayer.products)){var l,c;if(null!==(l=wpmDataLayer)&&void 0!==l&&null!==(c=l.general)&&void 0!==c&&c.variationsOutput&&t.isVariable&&!1===wpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids)return;u.push({id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical})}wpm.gtagLoaded().then((function(){gtag("event","view_search_results",{send_to:wpm.getGoogleAdsConversionIdentifiers(),items:u})}))}catch(e){console.error(e)}})),jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,i,n,s,d;if(jQuery.isEmptyObject(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.ads)||void 0===o?void 0:o.conversionIds))return;if(null===(r=wpmDataLayer)||void 0===r||null===(i=r.pixels)||void 0===i||null===(n=i.google)||void 0===n||null===(s=n.ads)||void 0===s||null===(d=s.dynamic_remarketing)||void 0===d||!d.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;wpm.gtagLoaded().then((function(){gtag("event","purchase",{send_to:wpm.getGoogleAdsConversionIdentifiers(),value:wpmDataLayer.order.value_filtered,items:wpm.getGoogleAdsDynamicRemarketingOrderItems()})}))}catch(e){console.error(e)}})),jQuery(document).on("wpmLogin",(function(){try{var e,t,a,o,r,i,n,s,d;if(jQuery.isEmptyObject(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.ads)||void 0===o?void 0:o.conversionIds))return;if(null===(r=wpmDataLayer)||void 0===r||null===(i=r.pixels)||void 0===i||null===(n=i.google)||void 0===n||null===(s=n.ads)||void 0===s||null===(d=s.dynamic_remarketing)||void 0===d||!d.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;wpm.gtagLoaded().then((function(){gtag("event","login",{send_to:wpm.getGoogleAdsConversionIdentifiers()})}))}catch(e){console.error(e)}})),jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,i;if(jQuery.isEmptyObject(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.ads)||void 0===o?void 0:o.conversionIds))return;if(!wpm.googleConfigConditionsMet("ads"))return;let n={},s={};n={send_to:wpm.getGoogleAdsConversionIdentifiersWithLabel(),transaction_id:wpmDataLayer.order.number,value:wpmDataLayer.order.value_filtered,currency:wpmDataLayer.order.currency,new_customer:wpmDataLayer.order.new_customer},null!==(r=wpmDataLayer)&&void 0!==r&&null!==(i=r.order)&&void 0!==i&&i.aw_merchant_id&&(s={discount:wpmDataLayer.order.discount,aw_merchant_id:wpmDataLayer.order.aw_merchant_id,aw_feed_country:wpmDataLayer.order.aw_feed_country,aw_feed_language:wpmDataLayer.order.aw_feed_language,items:wpm.getGoogleAdsRegularOrderItems()}),wpm.gtagLoaded().then((function(){gtag("event","conversion",{...n,...s})}))}catch(e){console.error(e)}}))},42:()=>{!function(e,t,a){let o=[];e.getGoogleAdsConversionIdentifiersWithLabel=function(){for(const[e,t]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))o.push(e+"/"+t);return o},e.getGoogleAdsConversionIdentifiers=function(){let e=[];for(const[t,a]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))e.push(t);return e},e.getGoogleAdsRegularOrderItems=function(){let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;let o;o={quantity:r.quantity,price:r.price},null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?(o.id=String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o)):(o.id=String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o))}return e},e.getGoogleAdsDynamicRemarketingOrderItems=function(){let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;let o;o={quantity:r.quantity,price:r.price,google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical},null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?(o.id=String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o)):(o.id=String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o))}return e}}(window.wpm=window.wpm||{},jQuery)},190:(e,t,a)=>{a(42),a(165)},625:()=>{jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,i,n,s,d,l;if(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.analytics)||void 0===o||null===(r=o.universal)||void 0===r||!r.property_id)return;if(null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(s=n.google)&&void 0!==s&&null!==(d=s.analytics)&&void 0!==d&&null!==(l=d.universal)&&void 0!==l&&l.mp_active)return;if(!wpm.googleConfigConditionsMet("analytics"))return;wpm.gtagLoaded().then((function(){gtag("event","purchase",{send_to:[wpmDataLayer.pixels.google.analytics.universal.property_id],transaction_id:wpmDataLayer.order.number,affiliation:wpmDataLayer.order.affiliation,currency:wpmDataLayer.order.currency,value:wpmDataLayer.order.value_regular,discount:wpmDataLayer.order.discount,tax:wpmDataLayer.order.tax,shipping:wpmDataLayer.order.shipping,coupon:wpmDataLayer.order.coupon,items:wpm.getGAUAOrderItems()})}))}catch(e){console.error(e)}}))},19:()=>{!function(e,t,a){e.getGAUAOrderItems=function(){let t=[];for(const[r,i]of Object.entries(wpmDataLayer.order.items)){var a,o;let r;r={quantity:i.quantity,price:i.price,name:i.name,currency:wpmDataLayer.order.currency,category:wpmDataLayer.products[i.id].category.join("/")},null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.general)&&void 0!==o&&o.variationsOutput&&0!==i.variation_id?(r.id=String(wpmDataLayer.products[i.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),r.variant=wpmDataLayer.products[i.variation_id].variant_name,r.brand=wpmDataLayer.products[i.variation_id].brand):(r.id=String(wpmDataLayer.products[i.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),r.brand=wpmDataLayer.products[i.id].brand),r=e.ga3AddListNameToProduct(r),t.push(r)}return t},e.ga3AddListNameToProduct=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:null;return e.list_name=wpmDataLayer.shop.list_name,t&&(e.list_position=t),e}}(window.wpm=window.wpm||{},jQuery)},562:(e,t,a)=>{a(19),a(625)},572:()=>{jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,i,n,s,d,l;if(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.analytics)||void 0===o||null===(r=o.ga4)||void 0===r||!r.measurement_id)return;if(null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(s=n.google)&&void 0!==s&&null!==(d=s.analytics)&&void 0!==d&&null!==(l=d.ga4)&&void 0!==l&&l.mp_active)return;if(!wpm.googleConfigConditionsMet("analytics"))return;wpm.gtagLoaded().then((function(){gtag("event","purchase",{send_to:[wpmDataLayer.pixels.google.analytics.ga4.measurement_id],transaction_id:wpmDataLayer.order.number,affiliation:wpmDataLayer.order.affiliation,currency:wpmDataLayer.order.currency,value:wpmDataLayer.order.value_regular,discount:wpmDataLayer.order.discount,tax:wpmDataLayer.order.tax,shipping:wpmDataLayer.order.shipping,coupon:wpmDataLayer.order.coupon,items:wpm.getGA4OrderItems()})}))}catch(e){console.error(e)}}))},228:()=>{!function(e,t,a){e.getGA4OrderItems=function(){let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;let o;o={quantity:r.quantity,price:r.price,item_name:r.name,currency:wpmDataLayer.order.currency,item_category:wpmDataLayer.products[r.id].category.join("/")},null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?(o.item_id=String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),o.item_variant=wpmDataLayer.products[r.variation_id].variant_name,o.item_brand=wpmDataLayer.products[r.variation_id].brand):(o.item_id=String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),o.item_brand=wpmDataLayer.products[r.id].brand),e.push(o)}return e}}(window.wpm=window.wpm||{},jQuery)},522:(e,t,a)=>{a(228),a(572)},774:(e,t,a)=>{a(562),a(522)},294:()=>{jQuery(document).on("wpmLoadPixels",(function(){var e,t,a;void 0===(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a?void 0:a.state)&&(wpm.canGoogleLoad()?wpm.loadGoogle():wpm.logPreventedPixelLoading("google","analytics / ads"))}))},860:()=>{!function(e,t,a){e.googleConfigConditionsMet=function(t){var a,o,r,i;return!(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(i=r.consent_mode)||void 0===i||!i.active)||("category"===e.getConsentValues().mode?!0===e.getConsentValues().categories[t]:"pixel"===e.getConsentValues().mode&&e.getConsentValues().pixels.includes("google-"+t))},e.getVisitorConsentStatusAndUpdateGoogleConsentSettings=function(t){return"category"===e.getConsentValues().mode?(e.getConsentValues().categories.analytics&&(t.analytics_storage="granted"),e.getConsentValues().categories.ads&&(t.ad_storage="granted")):"pixel"===e.getConsentValues().mode&&(t.analytics_storage=e.getConsentValues().pixels.includes("google-analytics")?"granted":"denied",t.ad_storage=e.getConsentValues().pixels.includes("google-ads")?"granted":"denied"),t},e.updateGoogleConsentMode=function(){let e=!(arguments.length>0&&arguments[0]!==a)||arguments[0],t=!(arguments.length>1&&arguments[1]!==a)||arguments[1];try{if(!window.gtag||!wpmDataLayer.shop.cookie_consent_mgmt.explicit_consent)return;gtag("consent","update",{analytics_storage:e?"granted":"denied",ad_storage:t?"granted":"denied"})}catch(e){console.error(e)}},e.fireGtagGoogleAds=function(){try{var e,t,a,o,r,i,n,s,d,l,c,u,p,g,m,y,w,v,_,f,h;if(wpmDataLayer.pixels.google.ads.state="loading",null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.ads)&&void 0!==o&&null!==(r=o.enhanced_conversions)&&void 0!==r&&r.active)for(const[e,t]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))gtag("config",e,{allow_enhanced_conversions:!0});else for(const[e,t]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))gtag("config",e);null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(s=n.google)&&void 0!==s&&null!==(d=s.ads)&&void 0!==d&&d.conversionIds&&null!==(l=wpmDataLayer)&&void 0!==l&&null!==(c=l.pixels)&&void 0!==c&&null!==(u=c.google)&&void 0!==u&&null!==(p=u.ads)&&void 0!==p&&p.phone_conversion_label&&null!==(g=wpmDataLayer)&&void 0!==g&&null!==(m=g.pixels)&&void 0!==m&&null!==(y=m.google)&&void 0!==y&&null!==(w=y.ads)&&void 0!==w&&w.phone_conversion_number&>ag("config",Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]+"/"+wpmDataLayer.pixels.google.ads.phone_conversion_label,{phone_conversion_number:wpmDataLayer.pixels.google.ads.phone_conversion_number}),"order_received_page"===wpmDataLayer.shop.page_type&&null!==(v=wpmDataLayer)&&void 0!==v&&null!==(_=v.order)&&void 0!==_&&null!==(f=_.google)&&void 0!==f&&null!==(h=f.ads)&&void 0!==h&&h.enhanced_conversion_data&&(window.enhanced_conversion_data=wpmDataLayer.order.google.ads.enhanced_conversion_data),wpmDataLayer.pixels.google.ads.state="ready"}catch(e){console.error(e)}},e.fireGtagGoogleAnalyticsUA=function(){try{wpmDataLayer.pixels.google.analytics.universal.state="loading",gtag("config",wpmDataLayer.pixels.google.analytics.universal.property_id,wpmDataLayer.pixels.google.analytics.universal.parameters),wpmDataLayer.pixels.google.analytics.universal.state="ready"}catch(e){console.error(e)}},e.fireGtagGoogleAnalyticsGA4=function(){try{wpmDataLayer.pixels.google.analytics.ga4.state="loading",gtag("config",wpmDataLayer.pixels.google.analytics.ga4.measurement_id,wpmDataLayer.pixels.google.analytics.ga4.parameters),wpmDataLayer.pixels.google.analytics.ga4.state="ready"}catch(e){console.error(e)}},e.isGoogleActive=function(){var e,t,a,o,r,i,n,s,d,l,c,u,p,g;return!(!(null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.analytics)&&void 0!==o&&null!==(r=o.universal)&&void 0!==r&&r.property_id||null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(s=n.google)&&void 0!==s&&null!==(d=s.analytics)&&void 0!==d&&null!==(l=d.ga4)&&void 0!==l&&l.measurement_id)&&jQuery.isEmptyObject(null===(c=wpmDataLayer)||void 0===c||null===(u=c.pixels)||void 0===u||null===(p=u.google)||void 0===p||null===(g=p.ads)||void 0===g?void 0:g.conversionIds))},e.getGoogleGtagId=function(){var e,t,a,o,r,i,n,s,d,l;return null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.analytics)&&void 0!==o&&null!==(r=o.universal)&&void 0!==r&&r.property_id?wpmDataLayer.pixels.google.analytics.universal.property_id:null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(s=n.google)&&void 0!==s&&null!==(d=s.analytics)&&void 0!==d&&null!==(l=d.ga4)&&void 0!==l&&l.measurement_id?wpmDataLayer.pixels.google.analytics.ga4.measurement_id:Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]},e.loadGoogle=function(){e.isGoogleActive()&&(wpmDataLayer.pixels.google.state="loading",e.loadScriptAndCacheIt("https://www.googletagmanager.com/gtag/js?id="+e.getGoogleGtagId()).done((function(t,a){try{var o,r,i,n,s,d,l,c,u,p,g,m,y,w,v,_,f,h,L,D,C,j;if(window.dataLayer=window.dataLayer||[],window.gtag=function(){dataLayer.push(arguments)},null!==(o=wpmDataLayer)&&void 0!==o&&null!==(r=o.pixels)&&void 0!==r&&null!==(i=r.google)&&void 0!==i&&null!==(n=i.consent_mode)&&void 0!==n&&n.active){var b,x,k,I;let t={ad_storage:wpmDataLayer.pixels.google.consent_mode.ad_storage,analytics_storage:wpmDataLayer.pixels.google.consent_mode.analytics_storage,wait_for_update:wpmDataLayer.pixels.google.consent_mode.wait_for_update};null!==(b=wpmDataLayer)&&void 0!==b&&null!==(x=b.pixels)&&void 0!==x&&null!==(k=x.google)&&void 0!==k&&null!==(I=k.consent_mode)&&void 0!==I&&I.region&&(t.region=wpmDataLayer.pixels.google.consent_mode.region),t=e.getVisitorConsentStatusAndUpdateGoogleConsentSettings(t),gtag("consent","default",t),gtag("set","ads_data_redaction",wpmDataLayer.pixels.google.consent_mode.ads_data_redaction),gtag("set","url_passthrough",wpmDataLayer.pixels.google.consent_mode.url_passthrough)}null!==(s=wpmDataLayer)&&void 0!==s&&null!==(d=s.pixels)&&void 0!==d&&null!==(l=d.google)&&void 0!==l&&null!==(c=l.linker)&&void 0!==c&&c.settings&>ag("set","linker",wpmDataLayer.pixels.google.linker.settings),gtag("js",new Date),jQuery.isEmptyObject(null===(u=wpmDataLayer)||void 0===u||null===(p=u.pixels)||void 0===p||null===(g=p.google)||void 0===g||null===(m=g.ads)||void 0===m?void 0:m.conversionIds)||(e.googleConfigConditionsMet("ads")?e.fireGtagGoogleAds():e.logPreventedPixelLoading("google-ads","ads")),null!==(y=wpmDataLayer)&&void 0!==y&&null!==(w=y.pixels)&&void 0!==w&&null!==(v=w.google)&&void 0!==v&&null!==(_=v.analytics)&&void 0!==_&&null!==(f=_.universal)&&void 0!==f&&f.property_id&&(e.googleConfigConditionsMet("analytics")?e.fireGtagGoogleAnalyticsUA():e.logPreventedPixelLoading("google-universal-analytics","analytics")),null!==(h=wpmDataLayer)&&void 0!==h&&null!==(L=h.pixels)&&void 0!==L&&null!==(D=L.google)&&void 0!==D&&null!==(C=D.analytics)&&void 0!==C&&null!==(j=C.ga4)&&void 0!==j&&j.measurement_id&&(e.googleConfigConditionsMet("analytics")?e.fireGtagGoogleAnalyticsGA4():e.logPreventedPixelLoading("ga4","analytics")),wpmDataLayer.pixels.google.state="ready"}catch(e){console.error(e)}})))},e.canGoogleLoad=function(){var t,a,o,r;return!(null===(t=wpmDataLayer)||void 0===t||null===(a=t.pixels)||void 0===a||null===(o=a.google)||void 0===o||null===(r=o.consent_mode)||void 0===r||!r.active)||("category"===e.getConsentValues().mode?!(!e.getConsentValues().categories.ads&&!e.getConsentValues().categories.analytics):"pixel"===e.getConsentValues().mode?e.getConsentValues().pixels.includes("google-ads")||e.getConsentValues().pixels.includes("google-analytics"):(console.error("Couldn't find a valid load condition for Google mode in wpmConsentValues"),!1))},e.gtagLoaded=function(){return new Promise((function(e,t){var a,o,r;void 0===(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r?void 0:r.state)&&t();let i=0;!function a(){var o,r,n;return"ready"===(null===(o=wpmDataLayer)||void 0===o||null===(r=o.pixels)||void 0===r||null===(n=r.google)||void 0===n?void 0:n.state)?e():i>=5e3?t():(i+=200,void setTimeout(a,200))}()}))}}(window.wpm=window.wpm||{},jQuery)},580:(e,t,a)=>{a(860),a(294)},69:(e,t,a)=>{a(580),a(190),a(774),a(463)},945:()=>{jQuery(document).on("wpmLoadPixels",(function(){var e,t,a,o,r,i,n,s;null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.optimize)||void 0===o||!o.container_id||null!==(r=wpmDataLayer)&&void 0!==r&&null!==(i=r.pixels)&&void 0!==i&&null!==(n=i.google)&&void 0!==n&&null!==(s=n.optimize)&&void 0!==s&&s.loaded||wpm.canIFire("analytics","google-optimize")&&wpm.load_google_optimize_pixel()}))},962:()=>{!function(e,t,a){e.load_google_optimize_pixel=function(){try{wpmDataLayer.pixels.google.optimize.loaded=!0,e.loadScriptAndCacheIt("https://www.googleoptimize.com/optimize.js?id="+wpmDataLayer.pixels.google.optimize.container_id)}catch(e){console.error(e)}}}(window.wpm=window.wpm||{},jQuery)},463:(e,t,a)=>{a(962),a(945)},300:()=>{jQuery(document).on("wpmLoadPixels",(function(){var e,t,a,o,r,i,n,s,d;null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.hotjar)||void 0===a||!a.site_id||null!==(o=wpmDataLayer)&&void 0!==o&&null!==(r=o.pixels)&&void 0!==r&&null!==(i=r.hotjar)&&void 0!==i&&i.loaded||!wpm.canIFire("analytics","hotjar")||null!==(n=wpmDataLayer)&&void 0!==n&&null!==(s=n.pixels)&&void 0!==s&&null!==(d=s.hotjar)&&void 0!==d&&d.loaded||wpm.load_hotjar_pixel()}))},376:()=>{!function(e,t,a){e.load_hotjar_pixel=function(){try{wpmDataLayer.pixels.hotjar.loaded=!0,e=window,t=document,e.hj=e.hj||function(){(e.hj.q=e.hj.q||[]).push(arguments)},e._hjSettings={hjid:wpmDataLayer.pixels.hotjar.site_id,hjsv:6},a=t.getElementsByTagName("head")[0],(o=t.createElement("script")).async=1,o.src="https://static.hotjar.com/c/hotjar-"+e._hjSettings.hjid+".js?sv="+e._hjSettings.hjsv,a.appendChild(o)}catch(e){console.error(e)}var e,t,a,o}}(window.wpm=window.wpm||{},jQuery)},787:(e,t,a)=>{a(376),a(300)},473:()=>{!function(e,t,a){let o=()=>{let t=e.getCookie("cmplz_statistics"),a=e.getCookie("cmplz_marketing");return!(!e.getCookie("cmplz_consent_status")&&!e.getCookie("cmplz_banner-status"))&&{analytics:"allow"===t,ads:"allow"===a,visitorHasChosen:!0}},r=()=>{let t=e.getCookie("cookielawinfo-checkbox-analytics")||e.getCookie("cookielawinfo-checkbox-analytiques"),a=e.getCookie("cookielawinfo-checkbox-advertisement")||e.getCookie("cookielawinfo-checkbox-performance")||e.getCookie("cookielawinfo-checkbox-publicite"),o=e.getCookie("CookieLawInfoConsent");return!(!t&&!a)&&{analytics:"yes"===t,ads:"yes"===a,visitorHasChosen:!!o}},i={categories:{},pixels:[],mode:"category",visitorHasChosen:!1};e.getConsentValues=()=>i,e.setConsentValueCategories=function(){let e=arguments.length>0&&arguments[0]!==a&&arguments[0],t=arguments.length>1&&arguments[1]!==a&&arguments[1];i.categories.analytics=e,i.categories.ads=t},e.updateConsentCookieValues=function(){let t,n=arguments.length>0&&arguments[0]!==a?arguments[0]:null,s=arguments.length>1&&arguments[1]!==a?arguments[1]:null,d=arguments.length>2&&arguments[2]!==a&&arguments[2];if(n||s)n&&(i.categories.analytics=!!n),s&&(i.categories.ads=!!s);else if(t=e.getCookie("CookieConsent"))t=decodeURI(t),i.categories.analytics=t.indexOf("statistics:true")>=0,i.categories.ads=t.indexOf("marketing:true")>=0,i.visitorHasChosen=!0;else if(t=e.getCookie("CookieScriptConsent"))t=JSON.parse(t),"reject"===t.action?(i.categories.analytics=!1,i.categories.ads=!1):2===t.categories.length?(i.categories.analytics=!0,i.categories.ads=!0):(i.categories.analytics=t.categories.indexOf("performance")>=0,i.categories.ads=t.categories.indexOf("targeting")>=0),i.visitorHasChosen=!0;else if(t=e.getCookie("borlabs-cookie")){var l,c,u,p,g,m,y,w;t=decodeURI(t),t=JSON.parse(t),i.categories.analytics=!(null===(l=t)||void 0===l||null===(c=l.consents)||void 0===c||!c.statistics),i.categories.ads=!(null===(u=t)||void 0===u||null===(p=u.consents)||void 0===p||!p.marketing),i.visitorHasChosen=!0,i.pixels=[...(null===(g=t)||void 0===g||null===(m=g.consents)||void 0===m?void 0:m.statistics)||[],...(null===(y=t)||void 0===y||null===(w=y.consents)||void 0===w?void 0:w.marketing)||[]],i.mode="pixel"}else(t=o())?(i.categories.analytics=!0===t.analytics,i.categories.ads=!0===t.ads,i.visitorHasChosen=t.visitorHasChosen):(t=e.getCookie("cookie_notice_accepted"))?(i.categories.analytics=!0,i.categories.ads=!0,i.visitorHasChosen=!0):(t=e.getCookie("hu-consent"))?(t=JSON.parse(t),i.categories.analytics=!!t.categories[3],i.categories.ads=!!t.categories[4],i.visitorHasChosen=!0):(t=r())?(i.categories.analytics=!0===t.analytics,i.categories.ads=!0===t.ads,i.visitorHasChosen=!0===t.visitorHasChosen):(t=e.getCookie("moove_gdpr_popup"))?(t=JSON.parse(t),i.categories.analytics="1"===t.thirdparty,i.categories.ads="1"===t.advanced,i.visitorHasChosen=!0):(i.categories.analytics=!d,i.categories.ads=!d)},e.updateConsentCookieValues(),e.setConsentDefaultValuesToExplicit=()=>{i.categories={analytics:!1,ads:!1}},e.canIFire=(t,a)=>{let o;return"category"===i.mode?o=!!i.categories[t]:"pixel"===i.mode?(o=i.pixels.includes(a),!1===o&&"microsoft-ads"===a&&(o=i.pixels.includes("bing-ads"))):(console.error("Couldn't find a valid consent mode in wpmConsentValues"),o=!1),!!o||(e.logPreventedPixelLoading(a,t),!1)},e.logPreventedPixelLoading=(e,t)=>{var a,o,r;null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.shop)&&void 0!==o&&null!==(r=o.cookie_consent_mgmt)&&void 0!==r&&r.explicit_consent?console.log('WooCommerce Pixel Manager: The "'+e+" (category: "+t+')" pixel has not fired because you have not given consent for it yet. (WPM is in explicit consent mode.)'):console.log('WooCommerce Pixel Manager: The "'+e+" (category: "+t+')" pixel has not fired because you have removed consent for this pixel. (WPM is in implicit consent mode.)')},e.scriptTagObserver=new MutationObserver((a=>{a.forEach((a=>{let{addedNodes:o}=a;[...o].forEach((a=>{t(a).data("wpm-cookie-category")&&(e.shouldScriptBeActive(a)?e.unblockScript(a):e.blockScript(a))}))}))})),e.scriptTagObserver.observe(document.head,{childList:!0,subtree:!0}),jQuery(document).on("DOMContentLoaded",(()=>e.scriptTagObserver.disconnect())),e.shouldScriptBeActive=e=>{var a,o,r,n;return!((wpmDataLayer.shop.cookie_consent_mgmt.explicit_consent||i.visitorHasChosen)&&("category"!==i.mode||!t(e).data("wpm-cookie-category").split(",").some((e=>i.categories[e])))&&("pixel"!==i.mode||!i.pixels.includes(t(e).data("wpm-pixel-name")))&&("pixel"!==i.mode||"google"!==t(e).data("wpm-pixel-name")||!["google-analytics","google-ads"].some((e=>i.pixels.includes(e))))&&(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(n=r.consent_mode)||void 0===n||!n.active||"google"!==t(e).data("wpm-pixel-name")))},e.unblockScript=function(e){let o=arguments.length>1&&arguments[1]!==a&&arguments[1];o&&t(e).remove();let r=t(e).data("wpm-src");r&&t(e).attr("src",r),e.type="text/javascript",o&&t(e).appendTo("head"),jQuery(document).trigger("wpmPreLoadPixels",{})},e.blockScript=function(e){let o=arguments.length>1&&arguments[1]!==a&&arguments[1];o&&t(e).remove(),t(e).attr("src")&&t(e).removeAttr("src"),e.type="blocked/javascript",o&&t(e).appendTo("head")},e.unblockAllScripts=function(){jQuery(document).trigger("wpmPreLoadPixels",{})},e.unblockSelectedPixels=()=>{jQuery(document).trigger("wpmPreLoadPixels",{})},jQuery(document).on("borlabs-cookie-consent-saved",(()=>{e.updateConsentCookieValues(),"pixel"===i.mode?(e.unblockSelectedPixels(),e.updateGoogleConsentMode(i.pixels.includes("google-analytics"),i.pixels.includes("google-ads"))):(e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads))})),jQuery(document).on("CookiebotOnAccept",(()=>{Cookiebot.consent.statistics&&(i.categories.analytics=!0),Cookiebot.consent.marketing&&(i.categories.ads=!0),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)}),!1),jQuery(document).on("CookieScriptAccept",(t=>{t.detail.categories.includes("performance")&&(i.categories.analytics=!0),t.detail.categories.includes("targeting")&&(i.categories.ads=!0),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)})),jQuery(document).on("CookieScriptAcceptAll",(()=>{e.unblockAllScripts(!0,!0),e.updateGoogleConsentMode(!0,!0)})),e.cmplzStatusChange=t=>{t.detail.categories.includes("statistics")&&e.updateConsentCookieValues(!0,null),t.detail.categories.includes("marketing")&&e.updateConsentCookieValues(null,!0),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)},jQuery(document).on("cmplzStatusChange",e.cmplzStatusChange),jQuery(document).on("cmplz_status_change",e.cmplzStatusChange),jQuery(document).on("setCookieNotice",(()=>{e.updateConsentCookieValues(),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)})),e.huObserver=new MutationObserver((t=>{t.forEach((t=>{let{addedNodes:a}=t;[...a].forEach((t=>{"hu"===t.id&&jQuery(".hu-cookies-save").on("click",(function(){e.updateConsentCookieValues(),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)}))}))}))})),window.hu&&e.huObserver.observe(document.documentElement||document.body,{childList:!0,subtree:!0}),e.explicitConsentStateAlreadySet=()=>{if(i.explicitConsentStateAlreadySet)return!0;i.explicitConsentStateAlreadySet=!0}}(window.wpm=window.wpm||{},jQuery)},299:()=>{jQuery(document).on("click",".remove_from_cart_button, .remove",(function(){try{let e=new URL(jQuery(this).attr("href")),t=wpm.getProductIdByCartItemKeyUrl(e);wpm.removeProductFromCart(t)}catch(e){console.error(e)}})),jQuery(document).on("click",".add_to_cart_button:not(.product_type_variable), .ajax_add_to_cart, .single_add_to_cart_button",(function(){try{if("product"===wpmDataLayer.shop.page_type){if(void 0!==jQuery(this).attr("href")&&jQuery(this).attr("href").includes("add-to-cart")){let e=1,t=jQuery(this).data("product_id");wpm.addProductToCart(t,e)}else if("simple"===wpmDataLayer.shop.product_type){let e=Number(jQuery(".input-text.qty").val());e||0===e||(e=1);let t=jQuery(this).val();wpm.addProductToCart(t,e)}else if("variable"===wpmDataLayer.shop.product_type){let e=Number(jQuery(".input-text.qty").val());e||0===e||(e=1);let t=jQuery("[name='variation_id']").val();wpm.addProductToCart(t,e)}else if("grouped"===wpmDataLayer.shop.product_type)jQuery(".woocommerce-grouped-product-list-item").each((function(){let e=Number(jQuery(this).find(".input-text.qty").val());e||0===e||(e=1);let t=jQuery(this).attr("class"),a=wpm.getPostIdFromString(t);wpm.addProductToCart(a,e)}));else if("bundle"===wpmDataLayer.shop.product_type){let e=Number(jQuery(".input-text.qty").val());e||0===e||(e=1);let t=jQuery("input[name=add-to-cart]").val();wpm.addProductToCart(t,e)}}else{let e=1,t=jQuery(this).data("product_id");wpm.addProductToCart(t,e)}}catch(e){console.error(e)}})),jQuery(document).one("click","a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)",(function(e){try{if(jQuery(e.target).closest("a").attr("href")){let t=jQuery(e.target).closest("a").attr("href");if(t.includes("add-to-cart=")){let e=t.match(/(add-to-cart=)(\d+)/);e&&wpm.addProductToCart(e[2],1)}}}catch(e){console.error(e)}})),jQuery(document).on("click",".woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product",(function(){try{let e=jQuery(this).nextAll(".wpmProductId:first").data("id");if(e){if(e=wpm.getIdBasedOndVariationsOutputSetting(e),!e)throw Error("Wasn't able to retrieve a productId");if(wpmDataLayer.products&&wpmDataLayer.products[e]){let t=wpm.getProductDetailsFormattedForEvent(e);jQuery(document).trigger("wpmSelectContentGaUa",t),jQuery(document).trigger("wpmSelectItem",t)}}}catch(e){console.error(e)}})),jQuery(document).one("click",[".checkout-button",".cart-checkout-button",".button.checkout",".xoo-wsc-ft-btn-checkout"].join(","),(function(){jQuery(document).trigger("wpmBeginCheckout")})),jQuery(document).on("input","#billing_email",(function(){wpm.isEmail(jQuery(this).val())&&(wpm.fireCheckoutProgress(2),wpm.emailSelected=!0)})),jQuery(document).on("click",".wc_payment_methods",(function(){!1===wpm.paymentMethodSelected&&wpm.fireCheckoutProgress(3),wpm.fireCheckoutOption(3,jQuery("input[name='payment_method']:checked").val()),wpm.paymentMethodSelected=!0})),jQuery(document).one("click","#place_order",(function(){!1===wpm.emailSelected&&wpm.fireCheckoutProgress(2),!1===wpm.paymentMethodSelected&&(wpm.fireCheckoutProgress(3),wpm.fireCheckoutOption(3,jQuery("input[name='payment_method']:checked").val())),wpm.fireCheckoutProgress(4)})),jQuery(document).on("click","[name='update_cart']",(function(){try{jQuery(".cart_item").each((function(){let e=new URL(jQuery(this).find(".product-remove").find("a").attr("href")),t=wpm.getProductIdByCartItemKeyUrl(e),a=jQuery(this).find(".qty").val();0===a?wpm.removeProductFromCart(t):a<wpmDataLayer.cart[t].quantity?wpm.removeProductFromCart(t,wpmDataLayer.cart[t].quantity-a):a>wpmDataLayer.cart[t].quantity&&wpm.addProductToCart(t,a-wpmDataLayer.cart[t].quantity)}))}catch(e){console.error(e),wpm.getCartItemsFromBackend()}})),jQuery(document).on("click",".add_to_wishlist, .wl-add-to",(function(){try{let e;if(jQuery(this).data("productid")?e=jQuery(this).data("productid"):jQuery(this).data("product-id")&&(e=jQuery(this).data("product-id")),!e)throw Error("Wasn't able to retrieve a productId");let t=wpm.getProductDetailsFormattedForEvent(e);jQuery(document).trigger("wpmAddToWishlist",t)}catch(e){console.error(e)}})),jQuery(document).on("updated_cart_totals",(function(){jQuery(document).trigger("wpmViewCart")})),jQuery((function(){jQuery(".single_variation_wrap").on("show_variation",(function(e,t){try{let e=wpm.getIdBasedOndVariationsOutputSetting(t.variation_id);if(!e)throw Error("Wasn't able to retrieve a productId");if(wpmDataLayer.products&&wpmDataLayer.products[e]){let t=wpm.getProductDetailsFormattedForEvent(e);jQuery(document).trigger("wpmViewItem",t)}}catch(e){console.error(e)}}))})),jQuery((function(){jQuery(".single_variation_wrap").on("hide_variation",(function(){try{var e,t;let i=jQuery("body").attr("class").match(/(postid-)(\d+)/)[2];if(!i)throw Error("Wasn't able to retrieve a productId");if("variable"===wpmDataLayer.shop.product_type&&null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.general)&&void 0!==t&&t.variationsOutput){var a,o,r;for(const[e,t]of Object.entries(wpmDataLayer.products))if("parentId"in t){i=t.id;break}null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.pixels)&&void 0!==o&&null!==(r=o.facebook)&&void 0!==r&&r.microdata_product_id&&(i=wpmDataLayer.pixels.facebook.microdata_product_id)}if(wpmDataLayer.products&&wpmDataLayer.products[i]){let e=wpm.getProductDetailsFormattedForEvent(i);jQuery(document).trigger("wpmViewItem",e)}}catch(e){console.error(e)}}))})),jQuery(window).on("wpmLoad",(function(){try{wpm.doesWooCommerceCartExist()&&wpm.getCartItems()}catch(e){console.error(e)}})),jQuery(window).on("wpmLoad",(function(){wpmDataLayer.products=wpmDataLayer.products||{};let e=wpm.getAddToCartLinkProductIds();wpm.getProductsFromBackend(e)})),jQuery(window).on("wpmLoad",(function(){if(!wpm.getCookie("wpmReferrer"))if(document.referrer){let e=new URL(document.referrer).hostname;e!==window.location.host?wpm.setCookie("wpmReferrer",e):wpm.setCookie("wpmReferrer","")}else wpm.setCookie("wpmReferrer","")})),jQuery(window).on("wpmLoad",(function(){try{var e;if("undefined"!=typeof wpmDataLayer&&(null===(e=wpmDataLayer)||void 0===e||!e.wpmLoadFired)){var t,a;if(jQuery(document).trigger("wpmLoadAlways"),"product"===wpmDataLayer.shop.page_type&&"variable"!==wpmDataLayer.shop.product_type&&wpm.getMainProductIdFromProductPage()){let e=wpm.getProductDataForViewItemEvent(wpm.getMainProductIdFromProductPage());jQuery(document).trigger("wpmViewItem",e)}else"product_category"===wpmDataLayer.shop.page_type?jQuery(document).trigger("wpmCategory"):"search"===wpmDataLayer.shop.page_type?jQuery(document).trigger("wpmSearch"):"cart"===wpmDataLayer.shop.page_type?jQuery(document).trigger("wpmViewCart"):"order_received_page"===wpmDataLayer.shop.page_type&&wpmDataLayer.order?wpm.isOrderIdStored(wpmDataLayer.order.id)||(jQuery(document).trigger("wpmOrderReceivedPage"),wpm.writeOrderIdToStorage(wpmDataLayer.order.id)):jQuery(document).trigger("wpmEverywhereElse");null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.user)&&void 0!==a&&a.id&&!wpm.hasLoginEventFired()&&(jQuery(document).trigger("wpmLogin"),wpm.setLoginEventFired()),wpmDataLayer.wpmLoadFired=!0}}catch(e){console.error(e)}})),jQuery(window).on("wpmPreLoadPixels",(function(){var e,t,a;null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.shop)&&void 0!==t&&null!==(a=t.cookie_consent_mgmt)&&void 0!==a&&a.explicit_consent&&!wpm.explicitConsentStateAlreadySet()&&wpm.updateConsentCookieValues(null,null,!0),jQuery(document).trigger("wpmLoadPixels",{})}))},584:()=>{!function(e,t,a){const o="_wpm_order_ids",r="_wpm_endpoint_available",i="/wp-json/";function n(){return""!==e.getCookie(o)}e.emailSelected=!1,e.paymentMethodSelected=!1,e.useRestEndpoint=()=>e.isSessionStorageAvailable()&&e.isRestEndpointAvailable()&&e.isBelowRestErrorThreshold(),e.isBelowRestErrorThreshold=()=>window.sessionStorage.getItem(0)<=10,e.isRestEndpointAvailable=()=>{if(window.sessionStorage.getItem(r))return JSON.parse(window.sessionStorage.getItem(r));e.testEndpoint()},e.isSessionStorageAvailable=()=>!!window.sessionStorage,e.testEndpoint=function(){let e=arguments.length>0&&arguments[0]!==a?arguments[0]:location.protocol+"//"+location.host+i,t=arguments.length>1&&arguments[1]!==a?arguments[1]:r;jQuery.ajax(e,{type:"HEAD",timeout:1e3,statusCode:{200:function(e){window.sessionStorage.setItem(t,JSON.stringify(!0))},404:function(e){window.sessionStorage.setItem(t,JSON.stringify(!1))},0:function(e){window.sessionStorage.setItem(t,JSON.stringify(!1))}}}).then((e=>{}))},e.isWpmRestEndpointAvailable=function(){let t=arguments.length>0&&arguments[0]!==a?arguments[0]:r;return!!e.getCookie(t)},e.writeOrderIdToStorage=function(t){if(window.Storage)if(null===localStorage.getItem(o)){let e=[];e.push(t),window.localStorage.setItem(o,JSON.stringify(e))}else{let e=JSON.parse(localStorage.getItem(o));e.includes(t)||(e.push(t),window.localStorage.setItem(o,JSON.stringify(e)))}else{let a=new Date;a.setDate(a.getDate()+365);let r=[];n()&&(r=JSON.parse(e.getCookie(o))),r.includes(t)||(r.push(t),document.cookie="_wpm_order_ids="+JSON.stringify(r)+";expires="+a.toUTCString())}"function"==typeof e.storeOrderIdOnServer&&wpmDataLayer.orderDeduplication&&e.storeOrderIdOnServer(t)},e.isOrderIdStored=t=>wpmDataLayer.orderDeduplication?window.Storage?null!==localStorage.getItem(o)&&JSON.parse(localStorage.getItem(o)).includes(t):!!n()&&JSON.parse(e.getCookie(o)).includes(t):(console.log("order duplication prevention: off"),!1),e.isEmail=e=>/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e),e.removeProductFromCart=function(t){let o=arguments.length>1&&arguments[1]!==a?arguments[1]:null;try{if(!t)throw Error("Wasn't able to retrieve a productId");if(!(t=e.getIdBasedOndVariationsOutputSetting(t)))throw Error("Wasn't able to retrieve a productId");let a;if(a=null==o?wpmDataLayer.cart[t].quantity:o,wpmDataLayer.cart[t]){let r=e.getProductDetailsFormattedForEvent(t,a);jQuery(document).trigger("wpmRemoveFromCart",r),null==o||wpmDataLayer.cart[t].quantity===o?(delete wpmDataLayer.cart[t],sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(wpmDataLayer.cart))):(wpmDataLayer.cart[t].quantity=wpmDataLayer.cart[t].quantity-a,sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(wpmDataLayer.cart)))}}catch(e){console.error(e)}},e.getIdBasedOndVariationsOutputSetting=e=>{try{var t,a;return null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput?e:wpmDataLayer.products[e].isVariation?wpmDataLayer.products[e].parentId:e}catch(e){console.error(e)}},e.addProductToCart=(t,a)=>{try{var o;if(!t)throw Error("Wasn't able to retrieve a productId");if(!(t=e.getIdBasedOndVariationsOutputSetting(t)))throw Error("Wasn't able to retrieve a productId");if(null!==(o=wpmDataLayer)&&void 0!==o&&o.products[t]){var r;let o=e.getProductDetailsFormattedForEvent(t,a);jQuery(document).trigger("wpmAddToCart",o),null!==(r=wpmDataLayer)&&void 0!==r&&r.cart[t]?wpmDataLayer.cart[t].quantity=wpmDataLayer.cart[t].quantity+a:("cart"in wpmDataLayer||(wpmDataLayer.cart={}),wpmDataLayer.cart[t]=e.getProductDetailsFormattedForEvent(t,a)),sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(wpmDataLayer.cart))}}catch(t){console.error(t),e.getCartItemsFromBackend()}},e.getCartItems=()=>{sessionStorage?sessionStorage.getItem("wpmDataLayerCart")&&"order_received_page"!==wpmDataLayer.shop.page_type?e.saveCartObjectToDataLayer(JSON.parse(sessionStorage.getItem("wpmDataLayerCart"))):sessionStorage.setItem("wpmDataLayerCart",JSON.stringify({})):e.getCartItemsFromBackend()},e.getCartItemsFromBackend=()=>{try{let t={action:"wpm_get_cart_items"};jQuery.ajax({type:"get",dataType:"json",url:e.ajax_url,data:t,success:function(t){t.cart||(t.cart={}),e.saveCartObjectToDataLayer(t.cart),sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(t.cart))}})}catch(e){console.error(e)}},e.getProductsFromBackend=t=>{if((t=t.filter((e=>!wpmDataLayer.products.hasOwnProperty(e))))&&0!==t.length)try{let a={action:"wpm_get_product_ids",productIds:t};jQuery.ajax({type:"get",dataType:"json",url:e.ajax_url,data:a,success:function(e){wpmDataLayer.products=Object.assign({},wpmDataLayer.products,e)},error:function(e){console.log(e)}})}catch(e){console.error(e)}},e.saveCartObjectToDataLayer=e=>{wpmDataLayer.cart=e,wpmDataLayer.products=Object.assign({},wpmDataLayer.products,e)},e.fireCheckoutOption=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:null,o=arguments.length>2&&arguments[2]!==a?arguments[2]:null,r={step:e,checkout_option:t,value:o};jQuery(document).trigger("wpmFireCheckoutOption",r)},e.fireCheckoutProgress=e=>{let t={step:e};jQuery(document).trigger("wpmFireCheckoutProgress",t)},e.getPostIdFromString=e=>{try{return e.match(/(post-)(\d+)/)[2]}catch(e){console.error(e)}},e.triggerViewItemList=t=>{if(!t)throw Error("Wasn't able to retrieve a productId");if(!(t=e.getIdBasedOndVariationsOutputSetting(t)))throw Error("Wasn't able to retrieve a productId");jQuery(document).trigger("wpmViewItemList",e.getProductDataForViewItemEvent(t))},e.getProductDataForViewItemEvent=t=>{if(!t)throw Error("Wasn't able to retrieve a productId");try{if(wpmDataLayer.products[t])return e.getProductDetailsFormattedForEvent(t)}catch(e){console.error(e)}},e.getMainProductIdFromProductPage=()=>{try{return["simple","variable","grouped","composite","bundle"].indexOf(wpmDataLayer.shop.product_type)>=0&&jQuery(".wpmProductId:first").data("id")}catch(e){console.error(e)}},e.viewItemListTriggerTestMode=e=>{jQuery(e).css({position:"relative"}),jQuery(e).append('<div id="viewItemListTriggerOverlay"></div>'),jQuery(e).find("#viewItemListTriggerOverlay").css({"z-index":"10",display:"block",position:"absolute",height:"100%",top:"0",left:"0",right:"0",opacity:wpmDataLayer.viewItemListTrigger.opacity,"background-color":wpmDataLayer.viewItemListTrigger.backgroundColor})},e.getSearchTermFromUrl=()=>{try{return new URLSearchParams(window.location.search).get("s")}catch(e){console.error(e)}};let s,d={};e.observerCallback=(t,a)=>{t.forEach((t=>{try{let o,r=jQuery(t.target).data("ioid");if(o=jQuery(t.target).next(".wpmProductId").length?jQuery(t.target).next(".wpmProductId").data("id"):jQuery(t.target).find(".wpmProductId").data("id"),!o)throw Error("wpmProductId element not found");t.isIntersecting?d[r]=setTimeout((()=>{e.triggerViewItemList(o),wpmDataLayer.viewItemListTrigger.testMode&&e.viewItemListTriggerTestMode(t.target),!1===wpmDataLayer.viewItemListTrigger.repeat&&a.unobserve(t.target)}),wpmDataLayer.viewItemListTrigger.timeout):(clearTimeout(d[r]),wpmDataLayer.viewItemListTrigger.testMode&&jQuery(t.target).find("#viewItemListTriggerOverlay").remove())}catch(e){console.error(e)}}))};let l,c=0,u=()=>{l=jQuery(".wpmProductId").map((function(e,t){return jQuery(t).parent().hasClass("type-product")||jQuery(t).parent().hasClass("product")||jQuery(t).parent().hasClass("product-item-inner")?jQuery(t).parent():jQuery(t).prev().hasClass("wc-block-grid__product")||jQuery(t).prev().hasClass("product")||jQuery(t).prev().hasClass("product-small")||jQuery(t).prev().hasClass("woocommerce-LoopProduct-link")?jQuery(this).prev():jQuery(t).closest(".product").length?jQuery(t).closest(".product"):void 0}))};e.startIntersectionObserverToWatch=()=>{try{e.urlHasParameter("vildemomode")&&(wpmDataLayer.viewItemListTrigger.testMode=!0),s=new IntersectionObserver(e.observerCallback,{threshold:wpmDataLayer.viewItemListTrigger.threshold}),u(),l.each(((e,t)=>{jQuery(t[0]).data("ioid",c++),s.observe(t[0])}))}catch(e){console.error(e)}},e.startProductsMutationObserverToWatch=()=>{try{let e=jQuery(".wpmProductId:eq(0)").parents().has(jQuery(".wpmProductId:eq(1)").parents()).first();e.length&&p.observe(e[0],{attributes:!0,childList:!0,characterData:!0})}catch(e){console.error(e)}};let p=new MutationObserver((e=>{e.forEach((e=>{let t=e.addedNodes;null!==t&&jQuery(t).each((function(){(jQuery(this).hasClass("type-product")||jQuery(this).hasClass("product-small")||jQuery(this).hasClass("wc-block-grid__product"))&&g(this)&&(jQuery(this).data("ioid",c++),s.observe(this))}))}))})),g=e=>!(!jQuery(e).find(".wpmProductId").length&&!jQuery(e).siblings(".wpmProductId").length);e.setCookie=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:"",o=arguments.length>2&&arguments[2]!==a?arguments[2]:null;if(o){let a=new Date;a.setTime(a.getTime()+24*o*60*60*1e3);let r="expires="+a.toUTCString();document.cookie=e+"="+t+";"+r+";path=/"}else document.cookie=e+"="+t+";path=/"},e.getCookie=e=>{let t=e+"=",a=decodeURIComponent(document.cookie).split(";");for(let e=0;e<a.length;e++){let o=a[e];for(;" "==o.charAt(0);)o=o.substring(1);if(0==o.indexOf(t))return o.substring(t.length,o.length)}return""},e.getWpmSessionData=()=>{if(window.sessionStorage){let e=window.sessionStorage.getItem("_wpm");return null!==e?JSON.parse(e):{}}return{}},e.setWpmSessionData=e=>{window.sessionStorage&&window.sessionStorage.setItem("_wpm",JSON.stringify(e))},e.storeOrderIdOnServer=t=>{try{let a={action:"wpm_purchase_pixels_fired",order_id:t,nonce:e.nonce};jQuery.ajax({type:"post",dataType:"json",url:e.ajax_url,data:a,success:function(e){!1===e.success&&console.log(e)},error:function(e){console.log(e)}})}catch(e){console.error(e)}},e.getProductIdByCartItemKeyUrl=e=>{let t,a=new URLSearchParams(e.search).get("remove_item");return t=0===wpmDataLayer.cartItemKeys[a].variation_id?wpmDataLayer.cartItemKeys[a].product_id:wpmDataLayer.cartItemKeys[a].variation_id,t},e.getAddToCartLinkProductIds=()=>jQuery("a").map((function(){let e=jQuery(this).attr("href");if(e&&e.includes("?add-to-cart=")){let t=e.match(/(add-to-cart=)(\d+)/);if(t)return t[2]}})).get(),e.getProductDetailsFormattedForEvent=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:1,o={id:e.toString(),dyn_r_ids:wpmDataLayer.products[e].dyn_r_ids,name:wpmDataLayer.products[e].name,list_name:wpmDataLayer.shop.list_name,brand:wpmDataLayer.products[e].brand,category:wpmDataLayer.products[e].category,variant:wpmDataLayer.products[e].variant,list_position:wpmDataLayer.products[e].position,quantity:t,price:wpmDataLayer.products[e].price,currency:wpmDataLayer.shop.currency,isVariable:wpmDataLayer.products[e].isVariable,isVariation:wpmDataLayer.products[e].isVariation,parentId:wpmDataLayer.products[e].parentId};return o.isVariation&&(o.parentId_dyn_r_ids=wpmDataLayer.products[e].parentId_dyn_r_ids),o},e.setReferrerToCookie=()=>{e.getCookie("wpmReferrer")||e.setCookie("wpmReferrer",document.referrer)},e.getReferrerFromCookie=()=>e.getCookie("wpmReferrer")?e.getCookie("wpmReferrer"):null,e.getClidFromBrowser=function(){let t,o=arguments.length>0&&arguments[0]!==a?arguments[0]:"gclid";return t={gclid:"_gcl_aw",dclid:"_gcl_dc"},e.getCookie(t[o])?e.getCookie(t[o]).match(/(GCL.[\d]*.)(.*)/)[2]:""},e.getUserAgent=()=>navigator.userAgent,e.getViewPort=()=>({width:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),height:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}),e.version=()=>{console.log(wpmDataLayer.version)},e.loadScriptAndCacheIt=(e,t)=>(t=jQuery.extend(t||{},{dataType:"script",cache:!0,url:e}),jQuery.ajax(t)),e.getOrderItemPrice=e=>(e.total+e.total_tax)/e.quantity,e.hasLoginEventFired=()=>{let t=e.getWpmSessionData();return null==t?void 0:t.loginEventFired},e.setLoginEventFired=()=>{let t=e.getWpmSessionData();t.loginEventFired=!0,e.setWpmSessionData(t)},e.wpmDataLayerExists=()=>new Promise((e=>{!function t(){if("undefined"!=typeof wpmDataLayer)return e();setTimeout(t,50)}()})),e.jQueryExists=()=>new Promise((e=>{!function t(){if("undefined"!=typeof jQuery)return e();setTimeout(t,100)}()})),e.pageLoaded=()=>new Promise((e=>{!function t(){if("complete"===document.readyState)return e();setTimeout(t,50)}()})),e.pageReady=()=>new Promise((e=>{!function t(){if("interactive"===document.readyState||"complete"===document.readyState)return e();setTimeout(t,50)}()})),e.isMiniCartActive=()=>{if(window.sessionStorage){for(const[e,t]of Object.entries(window.sessionStorage))if(e.includes("wc_fragments"))return!0;return!1}return!1},e.doesWooCommerceCartExist=()=>document.cookie.includes("woocommerce_items_in_cart"),e.urlHasParameter=e=>new URLSearchParams(window.location.search).has(e)}(window.wpm=window.wpm||{},jQuery)},534:(e,t,a)=>{a(584),a(473)},207:()=>{wpm.wpmDataLayerExists().then((function(){console.log("WooCommerce Pixel Manager: "+(wpmDataLayer.version.pro?"Pro":"Free")+" Version "+wpmDataLayer.version.number+" loaded"),jQuery(document).trigger("wpmPreLoadPixels",{})})).then((function(){wpm.pageLoaded().then((function(){jQuery(document).trigger("wpmLoad",{})}))})),wpm.pageReady().then((function(){wpm.wpmDataLayerExists().then((function(){wpm.startIntersectionObserverToWatch(),wpm.startProductsMutationObserverToWatch()}))}))}},t={};function a(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,a),i.exports}a(534),wpm.jQueryExists().then((function(){a(299),a(69),a(12),a(787),a(207)}))})();
|
2 |
//# sourceMappingURL=wpm-public.p1.min.js.map
|
1 |
+
(()=>{var e={164:()=>{jQuery(document).on("wpmLoadPixels",(function(){var e,t,a,o,r,i;null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.facebook)||void 0===a||!a.pixel_id||null!==(o=wpmDataLayer)&&void 0!==o&&null!==(r=o.pixels)&&void 0!==r&&null!==(i=r.facebook)&&void 0!==i&&i.loaded||wpm.canIFire("ads","facebook-ads")&&wpm.loadFacebookPixel()})),jQuery(document).on("wpmAddToCart",(function(e,t){try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;let e=wpm.getRandomEventId();fbq("track","AddToCart",{content_type:"product",content_name:t.name,content_ids:t.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],value:parseFloat(t.quantity*t.price),currency:t.currency},{eventID:e}),t.currency=wpmDataLayer.shop.currency,jQuery(document).trigger("wpmFbCapiEvent",{event_name:"AddToCart",event_id:e,user_data:wpm.getFbUserData(),product_data:t,product_id:t.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],event_source_url:window.location.href})}catch(e){console.error(e)}})),jQuery(document).on("wpmBeginCheckout",(function(e){try{var t,a,o;if(null===(t=wpmDataLayer)||void 0===t||null===(a=t.pixels)||void 0===a||null===(o=a.facebook)||void 0===o||!o.loaded)return;let e=wpm.getRandomEventId();fbq("track","InitiateCheckout",{},{eventID:e}),jQuery(document).trigger("wpmFbCapiEvent",{event_name:"InitiateCheckout",event_id:e,user_data:wpm.getFbUserData(),event_source_url:window.location.href})}catch(e){console.error(e)}})),jQuery(document).on("wpmAddToWishlist",(function(e,t){try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;let e=wpm.getRandomEventId();fbq("track","AddToWishlist",{content_type:"product",content_name:t.name,content_ids:t.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],value:parseFloat(t.quantity*t.price),currency:t.currency},{eventID:e}),t.currency=wpmDataLayer.shop.currency,jQuery(document).trigger("wpmFbCapiEvent",{event_name:"AddToWishlist",event_id:e,user_data:wpm.getFbUserData(),product_data:t,product_id:t.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],event_source_url:window.location.href})}catch(e){console.error(e)}})),jQuery(document).on("wpmViewItem",(function(e,t){try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;wpm.fbViewContent(t)}catch(e){console.error(e)}})),jQuery(document).on("wpmSearch",(function(){try{var e,t,a;if(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.facebook)||void 0===a||!a.loaded)return;let o=wpm.getRandomEventId();fbq("track","Search",{},{eventID:o}),jQuery(document).trigger("wpmFbCapiEvent",{event_name:"Search",event_id:o,user_data:wpm.getFbUserData(),event_source_url:window.location.href})}catch(e){console.error(e)}})),jQuery(document).on("wpmLoadAlways",(function(){try{var e,t,a;if(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.facebook)||void 0===a||!a.loaded)return;wpm.setFbUserData()}catch(e){console.error(e)}})),jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a;if(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.facebook)||void 0===a||!a.loaded)return;fbq("track","Purchase",{content_type:"product",value:wpmDataLayer.order.value_filtered,currency:wpmDataLayer.order.currency,content_ids:wpm.facebookContentIds()},{eventID:wpmDataLayer.order.id})}catch(e){console.error(e)}}))},1:()=>{!function(e,t,a){let o;e.loadFacebookPixel=()=>{try{wpmDataLayer.pixels.facebook.loaded=!0,e=window,t=document,a="script",e.fbq||(o=e.fbq=function(){o.callMethod?o.callMethod.apply(o,arguments):o.queue.push(arguments)},e._fbq||(e._fbq=o),o.push=o,o.loaded=!0,o.version="2.0",o.queue=[],(r=t.createElement(a)).async=!0,r.src="https://connect.facebook.net/en_US/fbevents.js",(i=t.getElementsByTagName(a)[0]).parentNode.insertBefore(r,i)),fbq("init",wpmDataLayer.pixels.facebook.pixel_id),fbq("track","PageView")}catch(a){console.error(a)}var e,t,a,o,r,i},e.getRandomEventId=()=>(Math.random()+1).toString(36).substring(2),e.getFbUserData=()=>o||e.getFbUserDataFromBrowser(),e.setFbUserData=()=>{o=e.getFbUserDataFromBrowser()},e.getFbUserDataFromBrowser=()=>{var t,a;let o={};return e.getCookie("_fbp")&&(o.fbp=e.getCookie("_fbp")),e.getCookie("_fbc")&&(o.fbp=e.getCookie("_fbc")),null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.user)&&void 0!==a&&a.id&&(o.external_id=wpmDataLayer.user.id),navigator.userAgent&&(o.client_user_agent=navigator.userAgent),o},e.fbViewContent=t=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;let i=e.getRandomEventId();fbq("track","ViewContent",{content_type:"product",content_name:t.name,content_ids:t.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],currency:wpmDataLayer.shop.currency,value:t.price},{eventID:i}),t.currency=wpmDataLayer.shop.currency,jQuery(document).trigger("wpmFbCapiEvent",{event_name:"ViewContent",event_id:i,user_data:e.getFbUserData(),product_data:t,product_id:t.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],event_source_url:window.location.href})}catch(e){console.error(e)}},e.facebookContentIds=()=>{let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?e.push(String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type])):e.push(String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))}return e},e.trackCustomFacebookEvent=t=>{try{var a,o,r;if(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.facebook)||void 0===r||!r.loaded)return;let i=e.getRandomEventId();fbq("trackCustom",t,{},{eventID:i}),jQuery(document).trigger("wpmFbCapiEvent",{event_name:t,event_id:i,user_data:e.getFbUserData(),event_source_url:window.location.href})}catch(e){console.error(e)}}}(window.wpm=window.wpm||{},jQuery)},12:(e,t,a)=>{a(1),a(164)},165:()=>{jQuery(document).on("wpmViewItemList",(function(e,t){try{var a,o,r,i,n,s,d,l,c,u,p;if(jQuery.isEmptyObject(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(i=r.ads)||void 0===i?void 0:i.conversionIds))return;if(null===(n=wpmDataLayer)||void 0===n||null===(s=n.pixels)||void 0===s||null===(d=s.google)||void 0===d||null===(l=d.ads)||void 0===l||null===(c=l.dynamic_remarketing)||void 0===c||!c.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;if(null!==(u=wpmDataLayer)&&void 0!==u&&null!==(p=u.general)&&void 0!==p&&p.variationsOutput&&t.isVariable&&!1===wpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids)return;if(!t)return;wpm.gtagLoaded().then((function(){gtag("event","view_item_list",{send_to:wpm.getGoogleAdsConversionIdentifiers(),items:[{id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical}]})}))}catch(e){console.error(e)}})),jQuery(document).on("wpmAddToCart",(function(e,t){try{var a,o,r,i,n,s,d,l,c;if(jQuery.isEmptyObject(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(i=r.ads)||void 0===i?void 0:i.conversionIds))return;if(null===(n=wpmDataLayer)||void 0===n||null===(s=n.pixels)||void 0===s||null===(d=s.google)||void 0===d||null===(l=d.ads)||void 0===l||null===(c=l.dynamic_remarketing)||void 0===c||!c.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;wpm.gtagLoaded().then((function(){gtag("event","add_to_cart",{send_to:wpm.getGoogleAdsConversionIdentifiers(),value:t.quantity*t.price,items:[{id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],quantity:t.quantity,price:t.price,google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical}]})}))}catch(e){console.error(e)}})),jQuery(document).on("wpmViewItem",(function(e,t){try{var a,o,r,i,n,s,d,l,c;if(jQuery.isEmptyObject(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(i=r.ads)||void 0===i?void 0:i.conversionIds))return;if(null===(n=wpmDataLayer)||void 0===n||null===(s=n.pixels)||void 0===s||null===(d=s.google)||void 0===d||null===(l=d.ads)||void 0===l||null===(c=l.dynamic_remarketing)||void 0===c||!c.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;wpm.gtagLoaded().then((function(){gtag("event","view_item",{send_to:wpm.getGoogleAdsConversionIdentifiers(),value:(t.quantity?t.quantity:1)*t.price,items:[{id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],quantity:t.quantity?t.quantity:1,price:t.price,google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical}]})}))}catch(e){console.error(e)}})),jQuery(document).on("wpmSearch",(function(){try{var e,t,a,o,r,i,n,s,d;if(jQuery.isEmptyObject(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.ads)||void 0===o?void 0:o.conversionIds))return;if(null===(r=wpmDataLayer)||void 0===r||null===(i=r.pixels)||void 0===i||null===(n=i.google)||void 0===n||null===(s=n.ads)||void 0===s||null===(d=s.dynamic_remarketing)||void 0===d||!d.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;let u=[];for(const[e,t]of Object.entries(wpmDataLayer.products)){var l,c;if(null!==(l=wpmDataLayer)&&void 0!==l&&null!==(c=l.general)&&void 0!==c&&c.variationsOutput&&t.isVariable&&!1===wpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids)return;u.push({id:t.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical})}wpm.gtagLoaded().then((function(){gtag("event","view_search_results",{send_to:wpm.getGoogleAdsConversionIdentifiers(),items:u})}))}catch(e){console.error(e)}})),jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,i,n,s,d;if(jQuery.isEmptyObject(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.ads)||void 0===o?void 0:o.conversionIds))return;if(null===(r=wpmDataLayer)||void 0===r||null===(i=r.pixels)||void 0===i||null===(n=i.google)||void 0===n||null===(s=n.ads)||void 0===s||null===(d=s.dynamic_remarketing)||void 0===d||!d.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;wpm.gtagLoaded().then((function(){gtag("event","purchase",{send_to:wpm.getGoogleAdsConversionIdentifiers(),value:wpmDataLayer.order.value_filtered,items:wpm.getGoogleAdsDynamicRemarketingOrderItems()})}))}catch(e){console.error(e)}})),jQuery(document).on("wpmLogin",(function(){try{var e,t,a,o,r,i,n,s,d;if(jQuery.isEmptyObject(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.ads)||void 0===o?void 0:o.conversionIds))return;if(null===(r=wpmDataLayer)||void 0===r||null===(i=r.pixels)||void 0===i||null===(n=i.google)||void 0===n||null===(s=n.ads)||void 0===s||null===(d=s.dynamic_remarketing)||void 0===d||!d.status)return;if(!wpm.googleConfigConditionsMet("ads"))return;wpm.gtagLoaded().then((function(){gtag("event","login",{send_to:wpm.getGoogleAdsConversionIdentifiers()})}))}catch(e){console.error(e)}})),jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,i;if(jQuery.isEmptyObject(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.ads)||void 0===o?void 0:o.conversionIds))return;if(!wpm.googleConfigConditionsMet("ads"))return;let n={},s={};n={send_to:wpm.getGoogleAdsConversionIdentifiersWithLabel(),transaction_id:wpmDataLayer.order.number,value:wpmDataLayer.order.value_filtered,currency:wpmDataLayer.order.currency,new_customer:wpmDataLayer.order.new_customer},null!==(r=wpmDataLayer)&&void 0!==r&&null!==(i=r.order)&&void 0!==i&&i.aw_merchant_id&&(s={discount:wpmDataLayer.order.discount,aw_merchant_id:wpmDataLayer.order.aw_merchant_id,aw_feed_country:wpmDataLayer.order.aw_feed_country,aw_feed_language:wpmDataLayer.order.aw_feed_language,items:wpm.getGoogleAdsRegularOrderItems()}),wpm.gtagLoaded().then((function(){gtag("event","conversion",{...n,...s})}))}catch(e){console.error(e)}}))},42:()=>{!function(e,t,a){let o=[];e.getGoogleAdsConversionIdentifiersWithLabel=function(){for(const[e,t]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))o.push(e+"/"+t);return o},e.getGoogleAdsConversionIdentifiers=function(){let e=[];for(const[t,a]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))e.push(t);return e},e.getGoogleAdsRegularOrderItems=function(){let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;let o;o={quantity:r.quantity,price:r.price},null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?(o.id=String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o)):(o.id=String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o))}return e},e.getGoogleAdsDynamicRemarketingOrderItems=function(){let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;let o;o={quantity:r.quantity,price:r.price,google_business_vertical:wpmDataLayer.pixels.google.ads.google_business_vertical},null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?(o.id=String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o)):(o.id=String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type]),e.push(o))}return e}}(window.wpm=window.wpm||{},jQuery)},190:(e,t,a)=>{a(42),a(165)},625:()=>{jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,i,n,s,d,l;if(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.analytics)||void 0===o||null===(r=o.universal)||void 0===r||!r.property_id)return;if(null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(s=n.google)&&void 0!==s&&null!==(d=s.analytics)&&void 0!==d&&null!==(l=d.universal)&&void 0!==l&&l.mp_active)return;if(!wpm.googleConfigConditionsMet("analytics"))return;wpm.gtagLoaded().then((function(){gtag("event","purchase",{send_to:[wpmDataLayer.pixels.google.analytics.universal.property_id],transaction_id:wpmDataLayer.order.number,affiliation:wpmDataLayer.order.affiliation,currency:wpmDataLayer.order.currency,value:wpmDataLayer.order.value_regular,discount:wpmDataLayer.order.discount,tax:wpmDataLayer.order.tax,shipping:wpmDataLayer.order.shipping,coupon:wpmDataLayer.order.coupon,items:wpm.getGAUAOrderItems()})}))}catch(e){console.error(e)}}))},19:()=>{!function(e,t,a){e.getGAUAOrderItems=function(){let t=[];for(const[r,i]of Object.entries(wpmDataLayer.order.items)){var a,o;let r;r={quantity:i.quantity,price:i.price,name:i.name,currency:wpmDataLayer.order.currency,category:wpmDataLayer.products[i.id].category.join("/")},null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.general)&&void 0!==o&&o.variationsOutput&&0!==i.variation_id?(r.id=String(wpmDataLayer.products[i.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),r.variant=wpmDataLayer.products[i.variation_id].variant_name,r.brand=wpmDataLayer.products[i.variation_id].brand):(r.id=String(wpmDataLayer.products[i.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),r.brand=wpmDataLayer.products[i.id].brand),r=e.ga3AddListNameToProduct(r),t.push(r)}return t},e.ga3AddListNameToProduct=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:null;return e.list_name=wpmDataLayer.shop.list_name,t&&(e.list_position=t),e}}(window.wpm=window.wpm||{},jQuery)},562:(e,t,a)=>{a(19),a(625)},572:()=>{jQuery(document).on("wpmOrderReceivedPage",(function(){try{var e,t,a,o,r,i,n,s,d,l;if(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.analytics)||void 0===o||null===(r=o.ga4)||void 0===r||!r.measurement_id)return;if(null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(s=n.google)&&void 0!==s&&null!==(d=s.analytics)&&void 0!==d&&null!==(l=d.ga4)&&void 0!==l&&l.mp_active)return;if(!wpm.googleConfigConditionsMet("analytics"))return;wpm.gtagLoaded().then((function(){gtag("event","purchase",{send_to:[wpmDataLayer.pixels.google.analytics.ga4.measurement_id],transaction_id:wpmDataLayer.order.number,affiliation:wpmDataLayer.order.affiliation,currency:wpmDataLayer.order.currency,value:wpmDataLayer.order.value_regular,discount:wpmDataLayer.order.discount,tax:wpmDataLayer.order.tax,shipping:wpmDataLayer.order.shipping,coupon:wpmDataLayer.order.coupon,items:wpm.getGA4OrderItems()})}))}catch(e){console.error(e)}}))},228:()=>{!function(e,t,a){e.getGA4OrderItems=function(){let e=[];for(const[o,r]of Object.entries(wpmDataLayer.order.items)){var t,a;let o;o={quantity:r.quantity,price:r.price,item_name:r.name,currency:wpmDataLayer.order.currency,item_category:wpmDataLayer.products[r.id].category.join("/")},null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput&&0!==r.variation_id?(o.item_id=String(wpmDataLayer.products[r.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),o.item_variant=wpmDataLayer.products[r.variation_id].variant_name,o.item_brand=wpmDataLayer.products[r.variation_id].brand):(o.item_id=String(wpmDataLayer.products[r.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type]),o.item_brand=wpmDataLayer.products[r.id].brand),e.push(o)}return e}}(window.wpm=window.wpm||{},jQuery)},522:(e,t,a)=>{a(228),a(572)},774:(e,t,a)=>{a(562),a(522)},294:()=>{jQuery(document).on("wpmLoadPixels",(function(){var e,t,a;void 0===(null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a?void 0:a.state)&&(wpm.canGoogleLoad()?wpm.loadGoogle():wpm.logPreventedPixelLoading("google","analytics / ads"))}))},860:()=>{!function(e,t,a){e.googleConfigConditionsMet=function(t){var a,o,r,i;return!(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(i=r.consent_mode)||void 0===i||!i.active)||("category"===e.getConsentValues().mode?!0===e.getConsentValues().categories[t]:"pixel"===e.getConsentValues().mode&&e.getConsentValues().pixels.includes("google-"+t))},e.getVisitorConsentStatusAndUpdateGoogleConsentSettings=function(t){return"category"===e.getConsentValues().mode?(e.getConsentValues().categories.analytics&&(t.analytics_storage="granted"),e.getConsentValues().categories.ads&&(t.ad_storage="granted")):"pixel"===e.getConsentValues().mode&&(t.analytics_storage=e.getConsentValues().pixels.includes("google-analytics")?"granted":"denied",t.ad_storage=e.getConsentValues().pixels.includes("google-ads")?"granted":"denied"),t},e.updateGoogleConsentMode=function(){let e=!(arguments.length>0&&arguments[0]!==a)||arguments[0],t=!(arguments.length>1&&arguments[1]!==a)||arguments[1];try{if(!window.gtag||!wpmDataLayer.shop.cookie_consent_mgmt.explicit_consent)return;gtag("consent","update",{analytics_storage:e?"granted":"denied",ad_storage:t?"granted":"denied"})}catch(e){console.error(e)}},e.fireGtagGoogleAds=function(){try{var e,t,a,o,r,i,n,s,d,l,c,u,p,g,m,y,w,v,_,f,h;if(wpmDataLayer.pixels.google.ads.state="loading",null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.ads)&&void 0!==o&&null!==(r=o.enhanced_conversions)&&void 0!==r&&r.active)for(const[e,t]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))gtag("config",e,{allow_enhanced_conversions:!0});else for(const[e,t]of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds))gtag("config",e);null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(s=n.google)&&void 0!==s&&null!==(d=s.ads)&&void 0!==d&&d.conversionIds&&null!==(l=wpmDataLayer)&&void 0!==l&&null!==(c=l.pixels)&&void 0!==c&&null!==(u=c.google)&&void 0!==u&&null!==(p=u.ads)&&void 0!==p&&p.phone_conversion_label&&null!==(g=wpmDataLayer)&&void 0!==g&&null!==(m=g.pixels)&&void 0!==m&&null!==(y=m.google)&&void 0!==y&&null!==(w=y.ads)&&void 0!==w&&w.phone_conversion_number&>ag("config",Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]+"/"+wpmDataLayer.pixels.google.ads.phone_conversion_label,{phone_conversion_number:wpmDataLayer.pixels.google.ads.phone_conversion_number}),"order_received_page"===wpmDataLayer.shop.page_type&&null!==(v=wpmDataLayer)&&void 0!==v&&null!==(_=v.order)&&void 0!==_&&null!==(f=_.google)&&void 0!==f&&null!==(h=f.ads)&&void 0!==h&&h.enhanced_conversion_data&&(window.enhanced_conversion_data=wpmDataLayer.order.google.ads.enhanced_conversion_data),wpmDataLayer.pixels.google.ads.state="ready"}catch(e){console.error(e)}},e.fireGtagGoogleAnalyticsUA=function(){try{wpmDataLayer.pixels.google.analytics.universal.state="loading",gtag("config",wpmDataLayer.pixels.google.analytics.universal.property_id,wpmDataLayer.pixels.google.analytics.universal.parameters),wpmDataLayer.pixels.google.analytics.universal.state="ready"}catch(e){console.error(e)}},e.fireGtagGoogleAnalyticsGA4=function(){try{wpmDataLayer.pixels.google.analytics.ga4.state="loading",gtag("config",wpmDataLayer.pixels.google.analytics.ga4.measurement_id,wpmDataLayer.pixels.google.analytics.ga4.parameters),wpmDataLayer.pixels.google.analytics.ga4.state="ready"}catch(e){console.error(e)}},e.isGoogleActive=function(){var e,t,a,o,r,i,n,s,d,l,c,u,p,g;return!(!(null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.analytics)&&void 0!==o&&null!==(r=o.universal)&&void 0!==r&&r.property_id||null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(s=n.google)&&void 0!==s&&null!==(d=s.analytics)&&void 0!==d&&null!==(l=d.ga4)&&void 0!==l&&l.measurement_id)&&jQuery.isEmptyObject(null===(c=wpmDataLayer)||void 0===c||null===(u=c.pixels)||void 0===u||null===(p=u.google)||void 0===p||null===(g=p.ads)||void 0===g?void 0:g.conversionIds))},e.getGoogleGtagId=function(){var e,t,a,o,r,i,n,s,d,l;return null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.pixels)&&void 0!==t&&null!==(a=t.google)&&void 0!==a&&null!==(o=a.analytics)&&void 0!==o&&null!==(r=o.universal)&&void 0!==r&&r.property_id?wpmDataLayer.pixels.google.analytics.universal.property_id:null!==(i=wpmDataLayer)&&void 0!==i&&null!==(n=i.pixels)&&void 0!==n&&null!==(s=n.google)&&void 0!==s&&null!==(d=s.analytics)&&void 0!==d&&null!==(l=d.ga4)&&void 0!==l&&l.measurement_id?wpmDataLayer.pixels.google.analytics.ga4.measurement_id:Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]},e.loadGoogle=function(){e.isGoogleActive()&&(wpmDataLayer.pixels.google.state="loading",e.loadScriptAndCacheIt("https://www.googletagmanager.com/gtag/js?id="+e.getGoogleGtagId()).done((function(t,a){try{var o,r,i,n,s,d,l,c,u,p,g,m,y,w,v,_,f,h,L,D,C,b;if(window.dataLayer=window.dataLayer||[],window.gtag=function(){dataLayer.push(arguments)},null!==(o=wpmDataLayer)&&void 0!==o&&null!==(r=o.pixels)&&void 0!==r&&null!==(i=r.google)&&void 0!==i&&null!==(n=i.consent_mode)&&void 0!==n&&n.active){var j,x,k,I;let t={ad_storage:wpmDataLayer.pixels.google.consent_mode.ad_storage,analytics_storage:wpmDataLayer.pixels.google.consent_mode.analytics_storage,wait_for_update:wpmDataLayer.pixels.google.consent_mode.wait_for_update};null!==(j=wpmDataLayer)&&void 0!==j&&null!==(x=j.pixels)&&void 0!==x&&null!==(k=x.google)&&void 0!==k&&null!==(I=k.consent_mode)&&void 0!==I&&I.region&&(t.region=wpmDataLayer.pixels.google.consent_mode.region),t=e.getVisitorConsentStatusAndUpdateGoogleConsentSettings(t),gtag("consent","default",t),gtag("set","ads_data_redaction",wpmDataLayer.pixels.google.consent_mode.ads_data_redaction),gtag("set","url_passthrough",wpmDataLayer.pixels.google.consent_mode.url_passthrough)}null!==(s=wpmDataLayer)&&void 0!==s&&null!==(d=s.pixels)&&void 0!==d&&null!==(l=d.google)&&void 0!==l&&null!==(c=l.linker)&&void 0!==c&&c.settings&>ag("set","linker",wpmDataLayer.pixels.google.linker.settings),gtag("js",new Date),jQuery.isEmptyObject(null===(u=wpmDataLayer)||void 0===u||null===(p=u.pixels)||void 0===p||null===(g=p.google)||void 0===g||null===(m=g.ads)||void 0===m?void 0:m.conversionIds)||(e.googleConfigConditionsMet("ads")?e.fireGtagGoogleAds():e.logPreventedPixelLoading("google-ads","ads")),null!==(y=wpmDataLayer)&&void 0!==y&&null!==(w=y.pixels)&&void 0!==w&&null!==(v=w.google)&&void 0!==v&&null!==(_=v.analytics)&&void 0!==_&&null!==(f=_.universal)&&void 0!==f&&f.property_id&&(e.googleConfigConditionsMet("analytics")?e.fireGtagGoogleAnalyticsUA():e.logPreventedPixelLoading("google-universal-analytics","analytics")),null!==(h=wpmDataLayer)&&void 0!==h&&null!==(L=h.pixels)&&void 0!==L&&null!==(D=L.google)&&void 0!==D&&null!==(C=D.analytics)&&void 0!==C&&null!==(b=C.ga4)&&void 0!==b&&b.measurement_id&&(e.googleConfigConditionsMet("analytics")?e.fireGtagGoogleAnalyticsGA4():e.logPreventedPixelLoading("ga4","analytics")),wpmDataLayer.pixels.google.state="ready"}catch(e){console.error(e)}})))},e.canGoogleLoad=function(){var t,a,o,r;return!(null===(t=wpmDataLayer)||void 0===t||null===(a=t.pixels)||void 0===a||null===(o=a.google)||void 0===o||null===(r=o.consent_mode)||void 0===r||!r.active)||("category"===e.getConsentValues().mode?!(!e.getConsentValues().categories.ads&&!e.getConsentValues().categories.analytics):"pixel"===e.getConsentValues().mode?e.getConsentValues().pixels.includes("google-ads")||e.getConsentValues().pixels.includes("google-analytics"):(console.error("Couldn't find a valid load condition for Google mode in wpmConsentValues"),!1))},e.gtagLoaded=function(){return new Promise((function(e,t){var a,o,r;void 0===(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r?void 0:r.state)&&t();let i=0;!function a(){var o,r,n;return"ready"===(null===(o=wpmDataLayer)||void 0===o||null===(r=o.pixels)||void 0===r||null===(n=r.google)||void 0===n?void 0:n.state)?e():i>=5e3?t():(i+=200,void setTimeout(a,200))}()}))}}(window.wpm=window.wpm||{},jQuery)},580:(e,t,a)=>{a(860),a(294)},69:(e,t,a)=>{a(580),a(190),a(774),a(463)},945:()=>{jQuery(document).on("wpmLoadPixels",(function(){var e,t,a,o,r,i,n,s;null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.google)||void 0===a||null===(o=a.optimize)||void 0===o||!o.container_id||null!==(r=wpmDataLayer)&&void 0!==r&&null!==(i=r.pixels)&&void 0!==i&&null!==(n=i.google)&&void 0!==n&&null!==(s=n.optimize)&&void 0!==s&&s.loaded||wpm.canIFire("analytics","google-optimize")&&wpm.load_google_optimize_pixel()}))},962:()=>{!function(e,t,a){e.load_google_optimize_pixel=function(){try{wpmDataLayer.pixels.google.optimize.loaded=!0,e.loadScriptAndCacheIt("https://www.googleoptimize.com/optimize.js?id="+wpmDataLayer.pixels.google.optimize.container_id)}catch(e){console.error(e)}}}(window.wpm=window.wpm||{},jQuery)},463:(e,t,a)=>{a(962),a(945)},300:()=>{jQuery(document).on("wpmLoadPixels",(function(){var e,t,a,o,r,i,n,s,d;null===(e=wpmDataLayer)||void 0===e||null===(t=e.pixels)||void 0===t||null===(a=t.hotjar)||void 0===a||!a.site_id||null!==(o=wpmDataLayer)&&void 0!==o&&null!==(r=o.pixels)&&void 0!==r&&null!==(i=r.hotjar)&&void 0!==i&&i.loaded||!wpm.canIFire("analytics","hotjar")||null!==(n=wpmDataLayer)&&void 0!==n&&null!==(s=n.pixels)&&void 0!==s&&null!==(d=s.hotjar)&&void 0!==d&&d.loaded||wpm.load_hotjar_pixel()}))},376:()=>{!function(e,t,a){e.load_hotjar_pixel=function(){try{wpmDataLayer.pixels.hotjar.loaded=!0,e=window,t=document,e.hj=e.hj||function(){(e.hj.q=e.hj.q||[]).push(arguments)},e._hjSettings={hjid:wpmDataLayer.pixels.hotjar.site_id,hjsv:6},a=t.getElementsByTagName("head")[0],(o=t.createElement("script")).async=1,o.src="https://static.hotjar.com/c/hotjar-"+e._hjSettings.hjid+".js?sv="+e._hjSettings.hjsv,a.appendChild(o)}catch(e){console.error(e)}var e,t,a,o}}(window.wpm=window.wpm||{},jQuery)},787:(e,t,a)=>{a(376),a(300)},473:()=>{!function(e,t,a){let o=()=>{let t=e.getCookie("cmplz_statistics"),a=e.getCookie("cmplz_marketing");return!(!e.getCookie("cmplz_consent_status")&&!e.getCookie("cmplz_banner-status"))&&{analytics:"allow"===t,ads:"allow"===a,visitorHasChosen:!0}},r=()=>{let t=e.getCookie("cookielawinfo-checkbox-analytics")||e.getCookie("cookielawinfo-checkbox-analytiques"),a=e.getCookie("cookielawinfo-checkbox-advertisement")||e.getCookie("cookielawinfo-checkbox-performance")||e.getCookie("cookielawinfo-checkbox-publicite"),o=e.getCookie("CookieLawInfoConsent");return!(!t&&!a)&&{analytics:"yes"===t,ads:"yes"===a,visitorHasChosen:!!o}},i={categories:{},pixels:[],mode:"category",visitorHasChosen:!1};e.getConsentValues=()=>i,e.setConsentValueCategories=function(){let e=arguments.length>0&&arguments[0]!==a&&arguments[0],t=arguments.length>1&&arguments[1]!==a&&arguments[1];i.categories.analytics=e,i.categories.ads=t},e.updateConsentCookieValues=function(){let t,n=arguments.length>0&&arguments[0]!==a?arguments[0]:null,s=arguments.length>1&&arguments[1]!==a?arguments[1]:null,d=arguments.length>2&&arguments[2]!==a&&arguments[2];if(n||s)n&&(i.categories.analytics=!!n),s&&(i.categories.ads=!!s);else if(t=e.getCookie("CookieConsent"))t=decodeURI(t),i.categories.analytics=t.indexOf("statistics:true")>=0,i.categories.ads=t.indexOf("marketing:true")>=0,i.visitorHasChosen=!0;else if(t=e.getCookie("CookieScriptConsent"))t=JSON.parse(t),"reject"===t.action?(i.categories.analytics=!1,i.categories.ads=!1):2===t.categories.length?(i.categories.analytics=!0,i.categories.ads=!0):(i.categories.analytics=t.categories.indexOf("performance")>=0,i.categories.ads=t.categories.indexOf("targeting")>=0),i.visitorHasChosen=!0;else if(t=e.getCookie("borlabs-cookie")){var l,c,u,p,g,m,y,w;t=decodeURI(t),t=JSON.parse(t),i.categories.analytics=!(null===(l=t)||void 0===l||null===(c=l.consents)||void 0===c||!c.statistics),i.categories.ads=!(null===(u=t)||void 0===u||null===(p=u.consents)||void 0===p||!p.marketing),i.visitorHasChosen=!0,i.pixels=[...(null===(g=t)||void 0===g||null===(m=g.consents)||void 0===m?void 0:m.statistics)||[],...(null===(y=t)||void 0===y||null===(w=y.consents)||void 0===w?void 0:w.marketing)||[]],i.mode="pixel"}else(t=o())?(i.categories.analytics=!0===t.analytics,i.categories.ads=!0===t.ads,i.visitorHasChosen=t.visitorHasChosen):(t=e.getCookie("cookie_notice_accepted"))?(i.categories.analytics=!0,i.categories.ads=!0,i.visitorHasChosen=!0):(t=e.getCookie("hu-consent"))?(t=JSON.parse(t),i.categories.analytics=!!t.categories[3],i.categories.ads=!!t.categories[4],i.visitorHasChosen=!0):(t=r())?(i.categories.analytics=!0===t.analytics,i.categories.ads=!0===t.ads,i.visitorHasChosen=!0===t.visitorHasChosen):(t=e.getCookie("moove_gdpr_popup"))?(t=JSON.parse(t),i.categories.analytics="1"===t.thirdparty,i.categories.ads="1"===t.advanced,i.visitorHasChosen=!0):(i.categories.analytics=!d,i.categories.ads=!d)},e.updateConsentCookieValues(),e.setConsentDefaultValuesToExplicit=()=>{i.categories={analytics:!1,ads:!1}},e.canIFire=(t,a)=>{let o;return"category"===i.mode?o=!!i.categories[t]:"pixel"===i.mode?(o=i.pixels.includes(a),!1===o&&"microsoft-ads"===a&&(o=i.pixels.includes("bing-ads"))):(console.error("Couldn't find a valid consent mode in wpmConsentValues"),o=!1),!!o||(e.logPreventedPixelLoading(a,t),!1)},e.logPreventedPixelLoading=(e,t)=>{var a,o,r;null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.shop)&&void 0!==o&&null!==(r=o.cookie_consent_mgmt)&&void 0!==r&&r.explicit_consent?console.log('WooCommerce Pixel Manager: The "'+e+" (category: "+t+')" pixel has not fired because you have not given consent for it yet. (WPM is in explicit consent mode.)'):console.log('WooCommerce Pixel Manager: The "'+e+" (category: "+t+')" pixel has not fired because you have removed consent for this pixel. (WPM is in implicit consent mode.)')},e.scriptTagObserver=new MutationObserver((a=>{a.forEach((a=>{let{addedNodes:o}=a;[...o].forEach((a=>{t(a).data("wpm-cookie-category")&&(e.shouldScriptBeActive(a)?e.unblockScript(a):e.blockScript(a))}))}))})),e.scriptTagObserver.observe(document.head,{childList:!0,subtree:!0}),jQuery(document).on("DOMContentLoaded",(()=>e.scriptTagObserver.disconnect())),e.shouldScriptBeActive=e=>{var a,o,r,n;return!((wpmDataLayer.shop.cookie_consent_mgmt.explicit_consent||i.visitorHasChosen)&&("category"!==i.mode||!t(e).data("wpm-cookie-category").split(",").some((e=>i.categories[e])))&&("pixel"!==i.mode||!i.pixels.includes(t(e).data("wpm-pixel-name")))&&("pixel"!==i.mode||"google"!==t(e).data("wpm-pixel-name")||!["google-analytics","google-ads"].some((e=>i.pixels.includes(e))))&&(null===(a=wpmDataLayer)||void 0===a||null===(o=a.pixels)||void 0===o||null===(r=o.google)||void 0===r||null===(n=r.consent_mode)||void 0===n||!n.active||"google"!==t(e).data("wpm-pixel-name")))},e.unblockScript=function(e){let o=arguments.length>1&&arguments[1]!==a&&arguments[1];o&&t(e).remove();let r=t(e).data("wpm-src");r&&t(e).attr("src",r),e.type="text/javascript",o&&t(e).appendTo("head"),jQuery(document).trigger("wpmPreLoadPixels",{})},e.blockScript=function(e){let o=arguments.length>1&&arguments[1]!==a&&arguments[1];o&&t(e).remove(),t(e).attr("src")&&t(e).removeAttr("src"),e.type="blocked/javascript",o&&t(e).appendTo("head")},e.unblockAllScripts=function(){jQuery(document).trigger("wpmPreLoadPixels",{})},e.unblockSelectedPixels=()=>{jQuery(document).trigger("wpmPreLoadPixels",{})},jQuery(document).on("borlabs-cookie-consent-saved",(()=>{e.updateConsentCookieValues(),"pixel"===i.mode?(e.unblockSelectedPixels(),e.updateGoogleConsentMode(i.pixels.includes("google-analytics"),i.pixels.includes("google-ads"))):(e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads))})),jQuery(document).on("CookiebotOnAccept",(()=>{Cookiebot.consent.statistics&&(i.categories.analytics=!0),Cookiebot.consent.marketing&&(i.categories.ads=!0),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)}),!1),jQuery(document).on("CookieScriptAccept",(t=>{t.detail.categories.includes("performance")&&(i.categories.analytics=!0),t.detail.categories.includes("targeting")&&(i.categories.ads=!0),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)})),jQuery(document).on("CookieScriptAcceptAll",(()=>{e.unblockAllScripts(!0,!0),e.updateGoogleConsentMode(!0,!0)})),e.cmplzStatusChange=t=>{t.detail.categories.includes("statistics")&&e.updateConsentCookieValues(!0,null),t.detail.categories.includes("marketing")&&e.updateConsentCookieValues(null,!0),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)},jQuery(document).on("cmplzStatusChange",e.cmplzStatusChange),jQuery(document).on("cmplz_status_change",e.cmplzStatusChange),jQuery(document).on("setCookieNotice",(()=>{e.updateConsentCookieValues(),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)})),e.huObserver=new MutationObserver((t=>{t.forEach((t=>{let{addedNodes:a}=t;[...a].forEach((t=>{"hu"===t.id&&jQuery(".hu-cookies-save").on("click",(function(){e.updateConsentCookieValues(),e.unblockAllScripts(i.categories.analytics,i.categories.ads),e.updateGoogleConsentMode(i.categories.analytics,i.categories.ads)}))}))}))})),window.hu&&e.huObserver.observe(document.documentElement||document.body,{childList:!0,subtree:!0}),e.explicitConsentStateAlreadySet=()=>{if(i.explicitConsentStateAlreadySet)return!0;i.explicitConsentStateAlreadySet=!0}}(window.wpm=window.wpm||{},jQuery)},299:()=>{jQuery(document).on("click",".remove_from_cart_button, .remove",(function(){try{let e=new URL(jQuery(this).attr("href")),t=wpm.getProductIdByCartItemKeyUrl(e);wpm.removeProductFromCart(t)}catch(e){console.error(e)}})),jQuery(document).on("click",".add_to_cart_button:not(.product_type_variable), .ajax_add_to_cart, .single_add_to_cart_button",(function(){try{if("product"===wpmDataLayer.shop.page_type){if(void 0!==jQuery(this).attr("href")&&jQuery(this).attr("href").includes("add-to-cart")){let e=1,t=jQuery(this).data("product_id");wpm.addProductToCart(t,e)}else if("simple"===wpmDataLayer.shop.product_type){let e=Number(jQuery(".input-text.qty").val());e||0===e||(e=1);let t=jQuery(this).val();wpm.addProductToCart(t,e)}else if("variable"===wpmDataLayer.shop.product_type){let e=Number(jQuery(".input-text.qty").val());e||0===e||(e=1);let t=jQuery("[name='variation_id']").val();wpm.addProductToCart(t,e)}else if("grouped"===wpmDataLayer.shop.product_type)jQuery(".woocommerce-grouped-product-list-item").each((function(){let e=Number(jQuery(this).find(".input-text.qty").val());e||0===e||(e=1);let t=jQuery(this).attr("class"),a=wpm.getPostIdFromString(t);wpm.addProductToCart(a,e)}));else if("bundle"===wpmDataLayer.shop.product_type){let e=Number(jQuery(".input-text.qty").val());e||0===e||(e=1);let t=jQuery("input[name=add-to-cart]").val();wpm.addProductToCart(t,e)}}else{let e=1,t=jQuery(this).data("product_id");wpm.addProductToCart(t,e)}}catch(e){console.error(e)}})),jQuery(document).one("click","a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)",(function(e){try{if(jQuery(e.target).closest("a").attr("href")){let t=jQuery(e.target).closest("a").attr("href");if(t.includes("add-to-cart=")){let e=t.match(/(add-to-cart=)(\d+)/);e&&wpm.addProductToCart(e[2],1)}}}catch(e){console.error(e)}})),jQuery(document).on("click",".woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product",(function(){try{let e=jQuery(this).nextAll(".wpmProductId:first").data("id");if(e){if(e=wpm.getIdBasedOndVariationsOutputSetting(e),!e)throw Error("Wasn't able to retrieve a productId");if(wpmDataLayer.products&&wpmDataLayer.products[e]){let t=wpm.getProductDetailsFormattedForEvent(e);jQuery(document).trigger("wpmSelectContentGaUa",t),jQuery(document).trigger("wpmSelectItem",t)}}}catch(e){console.error(e)}})),jQuery(document).one("click",[".checkout-button",".cart-checkout-button",".button.checkout",".xoo-wsc-ft-btn-checkout"].join(","),(function(){jQuery(document).trigger("wpmBeginCheckout")})),jQuery(document).on("input","#billing_email",(function(){wpm.isEmail(jQuery(this).val())&&(wpm.fireCheckoutProgress(2),wpm.emailSelected=!0)})),jQuery(document).on("click",".wc_payment_methods",(function(){!1===wpm.paymentMethodSelected&&wpm.fireCheckoutProgress(3),wpm.fireCheckoutOption(3,jQuery("input[name='payment_method']:checked").val()),wpm.paymentMethodSelected=!0})),jQuery(document).one("click","#place_order",(function(){!1===wpm.emailSelected&&wpm.fireCheckoutProgress(2),!1===wpm.paymentMethodSelected&&(wpm.fireCheckoutProgress(3),wpm.fireCheckoutOption(3,jQuery("input[name='payment_method']:checked").val())),wpm.fireCheckoutProgress(4)})),jQuery(document).on("click","[name='update_cart']",(function(){try{jQuery(".cart_item").each((function(){let e=new URL(jQuery(this).find(".product-remove").find("a").attr("href")),t=wpm.getProductIdByCartItemKeyUrl(e),a=jQuery(this).find(".qty").val();0===a?wpm.removeProductFromCart(t):a<wpmDataLayer.cart[t].quantity?wpm.removeProductFromCart(t,wpmDataLayer.cart[t].quantity-a):a>wpmDataLayer.cart[t].quantity&&wpm.addProductToCart(t,a-wpmDataLayer.cart[t].quantity)}))}catch(e){console.error(e),wpm.getCartItemsFromBackend()}})),jQuery(document).on("click",".add_to_wishlist, .wl-add-to",(function(){try{let e;if(jQuery(this).data("productid")?e=jQuery(this).data("productid"):jQuery(this).data("product-id")&&(e=jQuery(this).data("product-id")),!e)throw Error("Wasn't able to retrieve a productId");let t=wpm.getProductDetailsFormattedForEvent(e);jQuery(document).trigger("wpmAddToWishlist",t)}catch(e){console.error(e)}})),jQuery(document).on("updated_cart_totals",(function(){jQuery(document).trigger("wpmViewCart")})),jQuery((function(){jQuery(".single_variation_wrap").on("show_variation",(function(e,t){try{let e=wpm.getIdBasedOndVariationsOutputSetting(t.variation_id);if(!e)throw Error("Wasn't able to retrieve a productId");if(wpmDataLayer.products&&wpmDataLayer.products[e]){let t=wpm.getProductDetailsFormattedForEvent(e);jQuery(document).trigger("wpmViewItem",t)}}catch(e){console.error(e)}}))})),jQuery((function(){jQuery(".single_variation_wrap").on("hide_variation",(function(){try{var e,t;let i=jQuery("body").attr("class").match(/(postid-)(\d+)/)[2];if(!i)throw Error("Wasn't able to retrieve a productId");if("variable"===wpmDataLayer.shop.product_type&&null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.general)&&void 0!==t&&t.variationsOutput){var a,o,r;for(const[e,t]of Object.entries(wpmDataLayer.products))if("parentId"in t){i=t.id;break}null!==(a=wpmDataLayer)&&void 0!==a&&null!==(o=a.pixels)&&void 0!==o&&null!==(r=o.facebook)&&void 0!==r&&r.microdata_product_id&&(i=wpmDataLayer.pixels.facebook.microdata_product_id)}if(wpmDataLayer.products&&wpmDataLayer.products[i]){let e=wpm.getProductDetailsFormattedForEvent(i);jQuery(document).trigger("wpmViewItem",e)}}catch(e){console.error(e)}}))})),jQuery(window).on("wpmLoad",(function(){try{wpm.doesWooCommerceCartExist()&&wpm.getCartItems()}catch(e){console.error(e)}})),jQuery(window).on("wpmLoad",(function(){wpmDataLayer.products=wpmDataLayer.products||{};let e=wpm.getAddToCartLinkProductIds();wpm.getProductsFromBackend(e)})),jQuery(window).on("wpmLoad",(function(){if(!wpm.getCookie("wpmReferrer")&&document.referrer){let e=new URL(document.referrer).hostname;e!==window.location.host&&wpm.setCookie("wpmReferrer",e)}})),jQuery(window).on("wpmLoad",(function(){try{var e;if("undefined"!=typeof wpmDataLayer&&(null===(e=wpmDataLayer)||void 0===e||!e.wpmLoadFired)){var t,a;if(jQuery(document).trigger("wpmLoadAlways"),"product"===wpmDataLayer.shop.page_type&&"variable"!==wpmDataLayer.shop.product_type&&wpm.getMainProductIdFromProductPage()){let e=wpm.getProductDataForViewItemEvent(wpm.getMainProductIdFromProductPage());jQuery(document).trigger("wpmViewItem",e)}else"product_category"===wpmDataLayer.shop.page_type?jQuery(document).trigger("wpmCategory"):"search"===wpmDataLayer.shop.page_type?jQuery(document).trigger("wpmSearch"):"cart"===wpmDataLayer.shop.page_type?jQuery(document).trigger("wpmViewCart"):"order_received_page"===wpmDataLayer.shop.page_type&&wpmDataLayer.order?wpm.isOrderIdStored(wpmDataLayer.order.id)||(jQuery(document).trigger("wpmOrderReceivedPage"),wpm.writeOrderIdToStorage(wpmDataLayer.order.id)):jQuery(document).trigger("wpmEverywhereElse");null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.user)&&void 0!==a&&a.id&&!wpm.hasLoginEventFired()&&(jQuery(document).trigger("wpmLogin"),wpm.setLoginEventFired()),wpmDataLayer.wpmLoadFired=!0}}catch(e){console.error(e)}})),jQuery(window).on("wpmPreLoadPixels",(function(){var e,t,a;null!==(e=wpmDataLayer)&&void 0!==e&&null!==(t=e.shop)&&void 0!==t&&null!==(a=t.cookie_consent_mgmt)&&void 0!==a&&a.explicit_consent&&!wpm.explicitConsentStateAlreadySet()&&wpm.updateConsentCookieValues(null,null,!0),jQuery(document).trigger("wpmLoadPixels",{})}))},584:()=>{!function(e,t,a){const o="_wpm_order_ids",r="_wpm_endpoint_available",i="/wp-json/";function n(){return""!==e.getCookie(o)}e.emailSelected=!1,e.paymentMethodSelected=!1,e.useRestEndpoint=()=>e.isSessionStorageAvailable()&&e.isRestEndpointAvailable()&&e.isBelowRestErrorThreshold(),e.isBelowRestErrorThreshold=()=>window.sessionStorage.getItem(0)<=10,e.isRestEndpointAvailable=()=>{if(window.sessionStorage.getItem(r))return JSON.parse(window.sessionStorage.getItem(r));e.testEndpoint()},e.isSessionStorageAvailable=()=>!!window.sessionStorage,e.testEndpoint=function(){let e=arguments.length>0&&arguments[0]!==a?arguments[0]:location.protocol+"//"+location.host+i,t=arguments.length>1&&arguments[1]!==a?arguments[1]:r;jQuery.ajax(e,{type:"HEAD",timeout:1e3,statusCode:{200:function(e){window.sessionStorage.setItem(t,JSON.stringify(!0))},404:function(e){window.sessionStorage.setItem(t,JSON.stringify(!1))},0:function(e){window.sessionStorage.setItem(t,JSON.stringify(!1))}}}).then((e=>{}))},e.isWpmRestEndpointAvailable=function(){let t=arguments.length>0&&arguments[0]!==a?arguments[0]:r;return!!e.getCookie(t)},e.writeOrderIdToStorage=function(t){if(window.Storage)if(null===localStorage.getItem(o)){let e=[];e.push(t),window.localStorage.setItem(o,JSON.stringify(e))}else{let e=JSON.parse(localStorage.getItem(o));e.includes(t)||(e.push(t),window.localStorage.setItem(o,JSON.stringify(e)))}else{let a=new Date;a.setDate(a.getDate()+365);let r=[];n()&&(r=JSON.parse(e.getCookie(o))),r.includes(t)||(r.push(t),document.cookie="_wpm_order_ids="+JSON.stringify(r)+";expires="+a.toUTCString())}"function"==typeof e.storeOrderIdOnServer&&wpmDataLayer.orderDeduplication&&e.storeOrderIdOnServer(t)},e.isOrderIdStored=t=>wpmDataLayer.orderDeduplication?window.Storage?null!==localStorage.getItem(o)&&JSON.parse(localStorage.getItem(o)).includes(t):!!n()&&JSON.parse(e.getCookie(o)).includes(t):(console.log("order duplication prevention: off"),!1),e.isEmail=e=>/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e),e.removeProductFromCart=function(t){let o=arguments.length>1&&arguments[1]!==a?arguments[1]:null;try{if(!t)throw Error("Wasn't able to retrieve a productId");if(!(t=e.getIdBasedOndVariationsOutputSetting(t)))throw Error("Wasn't able to retrieve a productId");let a;if(a=null==o?wpmDataLayer.cart[t].quantity:o,wpmDataLayer.cart[t]){let r=e.getProductDetailsFormattedForEvent(t,a);jQuery(document).trigger("wpmRemoveFromCart",r),null==o||wpmDataLayer.cart[t].quantity===o?(delete wpmDataLayer.cart[t],sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(wpmDataLayer.cart))):(wpmDataLayer.cart[t].quantity=wpmDataLayer.cart[t].quantity-a,sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(wpmDataLayer.cart)))}}catch(e){console.error(e)}},e.getIdBasedOndVariationsOutputSetting=e=>{try{var t,a;return null!==(t=wpmDataLayer)&&void 0!==t&&null!==(a=t.general)&&void 0!==a&&a.variationsOutput?e:wpmDataLayer.products[e].isVariation?wpmDataLayer.products[e].parentId:e}catch(e){console.error(e)}},e.addProductToCart=(t,a)=>{try{var o;if(!t)throw Error("Wasn't able to retrieve a productId");if(!(t=e.getIdBasedOndVariationsOutputSetting(t)))throw Error("Wasn't able to retrieve a productId");if(null!==(o=wpmDataLayer)&&void 0!==o&&o.products[t]){var r;let o=e.getProductDetailsFormattedForEvent(t,a);jQuery(document).trigger("wpmAddToCart",o),null!==(r=wpmDataLayer)&&void 0!==r&&r.cart[t]?wpmDataLayer.cart[t].quantity=wpmDataLayer.cart[t].quantity+a:("cart"in wpmDataLayer||(wpmDataLayer.cart={}),wpmDataLayer.cart[t]=e.getProductDetailsFormattedForEvent(t,a)),sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(wpmDataLayer.cart))}}catch(t){console.error(t),e.getCartItemsFromBackend()}},e.getCartItems=()=>{sessionStorage?sessionStorage.getItem("wpmDataLayerCart")&&"order_received_page"!==wpmDataLayer.shop.page_type?e.saveCartObjectToDataLayer(JSON.parse(sessionStorage.getItem("wpmDataLayerCart"))):sessionStorage.setItem("wpmDataLayerCart",JSON.stringify({})):e.getCartItemsFromBackend()},e.getCartItemsFromBackend=()=>{try{let t={action:"wpm_get_cart_items"};jQuery.ajax({type:"get",dataType:"json",url:e.ajax_url,data:t,success:function(t){t.cart||(t.cart={}),e.saveCartObjectToDataLayer(t.cart),sessionStorage&&sessionStorage.setItem("wpmDataLayerCart",JSON.stringify(t.cart))}})}catch(e){console.error(e)}},e.getProductsFromBackend=t=>{if((t=t.filter((e=>!wpmDataLayer.products.hasOwnProperty(e))))&&0!==t.length)try{let a={action:"wpm_get_product_ids",productIds:t};jQuery.ajax({type:"get",dataType:"json",url:e.ajax_url,data:a,success:function(e){wpmDataLayer.products=Object.assign({},wpmDataLayer.products,e)},error:function(e){console.log(e)}})}catch(e){console.error(e)}},e.saveCartObjectToDataLayer=e=>{wpmDataLayer.cart=e,wpmDataLayer.products=Object.assign({},wpmDataLayer.products,e)},e.fireCheckoutOption=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:null,o=arguments.length>2&&arguments[2]!==a?arguments[2]:null,r={step:e,checkout_option:t,value:o};jQuery(document).trigger("wpmFireCheckoutOption",r)},e.fireCheckoutProgress=e=>{let t={step:e};jQuery(document).trigger("wpmFireCheckoutProgress",t)},e.getPostIdFromString=e=>{try{return e.match(/(post-)(\d+)/)[2]}catch(e){console.error(e)}},e.triggerViewItemList=t=>{if(!t)throw Error("Wasn't able to retrieve a productId");if(!(t=e.getIdBasedOndVariationsOutputSetting(t)))throw Error("Wasn't able to retrieve a productId");jQuery(document).trigger("wpmViewItemList",e.getProductDataForViewItemEvent(t))},e.getProductDataForViewItemEvent=t=>{if(!t)throw Error("Wasn't able to retrieve a productId");try{if(wpmDataLayer.products[t])return e.getProductDetailsFormattedForEvent(t)}catch(e){console.error(e)}},e.getMainProductIdFromProductPage=()=>{try{return["simple","variable","grouped","composite","bundle"].indexOf(wpmDataLayer.shop.product_type)>=0&&jQuery(".wpmProductId:first").data("id")}catch(e){console.error(e)}},e.viewItemListTriggerTestMode=e=>{jQuery(e).css({position:"relative"}),jQuery(e).append('<div id="viewItemListTriggerOverlay"></div>'),jQuery(e).find("#viewItemListTriggerOverlay").css({"z-index":"10",display:"block",position:"absolute",height:"100%",top:"0",left:"0",right:"0",opacity:wpmDataLayer.viewItemListTrigger.opacity,"background-color":wpmDataLayer.viewItemListTrigger.backgroundColor})},e.getSearchTermFromUrl=()=>{try{return new URLSearchParams(window.location.search).get("s")}catch(e){console.error(e)}};let s,d={};e.observerCallback=(t,a)=>{t.forEach((t=>{try{let o,r=jQuery(t.target).data("ioid");if(o=jQuery(t.target).next(".wpmProductId").length?jQuery(t.target).next(".wpmProductId").data("id"):jQuery(t.target).find(".wpmProductId").data("id"),!o)throw Error("wpmProductId element not found");t.isIntersecting?d[r]=setTimeout((()=>{e.triggerViewItemList(o),wpmDataLayer.viewItemListTrigger.testMode&&e.viewItemListTriggerTestMode(t.target),!1===wpmDataLayer.viewItemListTrigger.repeat&&a.unobserve(t.target)}),wpmDataLayer.viewItemListTrigger.timeout):(clearTimeout(d[r]),wpmDataLayer.viewItemListTrigger.testMode&&jQuery(t.target).find("#viewItemListTriggerOverlay").remove())}catch(e){console.error(e)}}))};let l,c=0,u=()=>{l=jQuery(".wpmProductId").map((function(e,t){return jQuery(t).parent().hasClass("type-product")||jQuery(t).parent().hasClass("product")||jQuery(t).parent().hasClass("product-item-inner")?jQuery(t).parent():jQuery(t).prev().hasClass("wc-block-grid__product")||jQuery(t).prev().hasClass("product")||jQuery(t).prev().hasClass("product-small")||jQuery(t).prev().hasClass("woocommerce-LoopProduct-link")?jQuery(this).prev():jQuery(t).closest(".product").length?jQuery(t).closest(".product"):void 0}))};e.startIntersectionObserverToWatch=()=>{try{e.urlHasParameter("vildemomode")&&(wpmDataLayer.viewItemListTrigger.testMode=!0),s=new IntersectionObserver(e.observerCallback,{threshold:wpmDataLayer.viewItemListTrigger.threshold}),u(),l.each(((e,t)=>{jQuery(t[0]).data("ioid",c++),s.observe(t[0])}))}catch(e){console.error(e)}},e.startProductsMutationObserverToWatch=()=>{try{let e=jQuery(".wpmProductId:eq(0)").parents().has(jQuery(".wpmProductId:eq(1)").parents()).first();e.length&&p.observe(e[0],{attributes:!0,childList:!0,characterData:!0})}catch(e){console.error(e)}};let p=new MutationObserver((e=>{e.forEach((e=>{let t=e.addedNodes;null!==t&&jQuery(t).each((function(){(jQuery(this).hasClass("type-product")||jQuery(this).hasClass("product-small")||jQuery(this).hasClass("wc-block-grid__product"))&&g(this)&&(jQuery(this).data("ioid",c++),s.observe(this))}))}))})),g=e=>!(!jQuery(e).find(".wpmProductId").length&&!jQuery(e).siblings(".wpmProductId").length);e.setCookie=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:"",o=arguments.length>2&&arguments[2]!==a?arguments[2]:null;if(o){let a=new Date;a.setTime(a.getTime()+24*o*60*60*1e3);let r="expires="+a.toUTCString();document.cookie=e+"="+t+";"+r+";path=/"}else document.cookie=e+"="+t+";path=/"},e.getCookie=e=>{let t=e+"=",a=decodeURIComponent(document.cookie).split(";");for(let e=0;e<a.length;e++){let o=a[e];for(;" "==o.charAt(0);)o=o.substring(1);if(0==o.indexOf(t))return o.substring(t.length,o.length)}return""},e.getWpmSessionData=()=>{if(window.sessionStorage){let e=window.sessionStorage.getItem("_wpm");return null!==e?JSON.parse(e):{}}return{}},e.setWpmSessionData=e=>{window.sessionStorage&&window.sessionStorage.setItem("_wpm",JSON.stringify(e))},e.storeOrderIdOnServer=t=>{try{let a={action:"wpm_purchase_pixels_fired",order_id:t,nonce:e.nonce};jQuery.ajax({type:"post",dataType:"json",url:e.ajax_url,data:a,success:function(e){!1===e.success&&console.log(e)},error:function(e){console.log(e)}})}catch(e){console.error(e)}},e.getProductIdByCartItemKeyUrl=e=>{let t,a=new URLSearchParams(e.search).get("remove_item");return t=0===wpmDataLayer.cartItemKeys[a].variation_id?wpmDataLayer.cartItemKeys[a].product_id:wpmDataLayer.cartItemKeys[a].variation_id,t},e.getAddToCartLinkProductIds=()=>jQuery("a").map((function(){let e=jQuery(this).attr("href");if(e&&e.includes("?add-to-cart=")){let t=e.match(/(add-to-cart=)(\d+)/);if(t)return t[2]}})).get(),e.getProductDetailsFormattedForEvent=function(e){let t=arguments.length>1&&arguments[1]!==a?arguments[1]:1,o={id:e.toString(),dyn_r_ids:wpmDataLayer.products[e].dyn_r_ids,name:wpmDataLayer.products[e].name,list_name:wpmDataLayer.shop.list_name,brand:wpmDataLayer.products[e].brand,category:wpmDataLayer.products[e].category,variant:wpmDataLayer.products[e].variant,list_position:wpmDataLayer.products[e].position,quantity:t,price:wpmDataLayer.products[e].price,currency:wpmDataLayer.shop.currency,isVariable:wpmDataLayer.products[e].isVariable,isVariation:wpmDataLayer.products[e].isVariation,parentId:wpmDataLayer.products[e].parentId};return o.isVariation&&(o.parentId_dyn_r_ids=wpmDataLayer.products[e].parentId_dyn_r_ids),o},e.setReferrerToCookie=()=>{e.getCookie("wpmReferrer")||e.setCookie("wpmReferrer",document.referrer)},e.getReferrerFromCookie=()=>e.getCookie("wpmReferrer")?e.getCookie("wpmReferrer"):null,e.getClidFromBrowser=function(){let t,o=arguments.length>0&&arguments[0]!==a?arguments[0]:"gclid";return t={gclid:"_gcl_aw",dclid:"_gcl_dc"},e.getCookie(t[o])?e.getCookie(t[o]).match(/(GCL.[\d]*.)(.*)/)[2]:""},e.getUserAgent=()=>navigator.userAgent,e.getViewPort=()=>({width:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),height:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}),e.version=()=>{console.log(wpmDataLayer.version)},e.loadScriptAndCacheIt=(e,t)=>(t=jQuery.extend(t||{},{dataType:"script",cache:!0,url:e}),jQuery.ajax(t)),e.getOrderItemPrice=e=>(e.total+e.total_tax)/e.quantity,e.hasLoginEventFired=()=>{let t=e.getWpmSessionData();return null==t?void 0:t.loginEventFired},e.setLoginEventFired=()=>{let t=e.getWpmSessionData();t.loginEventFired=!0,e.setWpmSessionData(t)},e.wpmDataLayerExists=()=>new Promise((e=>{!function t(){if("undefined"!=typeof wpmDataLayer)return e();setTimeout(t,50)}()})),e.jQueryExists=()=>new Promise((e=>{!function t(){if("undefined"!=typeof jQuery)return e();setTimeout(t,100)}()})),e.pageLoaded=()=>new Promise((e=>{!function t(){if("complete"===document.readyState)return e();setTimeout(t,50)}()})),e.pageReady=()=>new Promise((e=>{!function t(){if("interactive"===document.readyState||"complete"===document.readyState)return e();setTimeout(t,50)}()})),e.isMiniCartActive=()=>{if(window.sessionStorage){for(const[e,t]of Object.entries(window.sessionStorage))if(e.includes("wc_fragments"))return!0;return!1}return!1},e.doesWooCommerceCartExist=()=>document.cookie.includes("woocommerce_items_in_cart"),e.urlHasParameter=e=>new URLSearchParams(window.location.search).has(e)}(window.wpm=window.wpm||{},jQuery)},534:(e,t,a)=>{a(584),a(473)},207:()=>{wpm.wpmDataLayerExists().then((function(){console.log("WooCommerce Pixel Manager: "+(wpmDataLayer.version.pro?"Pro":"Free")+" Version "+wpmDataLayer.version.number+" loaded"),jQuery(document).trigger("wpmPreLoadPixels",{})})).then((function(){wpm.pageLoaded().then((function(){jQuery(document).trigger("wpmLoad",{})}))})),wpm.pageReady().then((function(){wpm.wpmDataLayerExists().then((function(){wpm.startIntersectionObserverToWatch(),wpm.startProductsMutationObserverToWatch()}))}))}},t={};function a(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,a),i.exports}a(534),wpm.jQueryExists().then((function(){a(299),a(69),a(12),a(787),a(207)}))})();
|
2 |
//# sourceMappingURL=wpm-public.p1.min.js.map
|
js/public/wpm-public.p1.min.js.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"file":"wpm-public.p1.min.js","mappings":"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","sources":["webpack://WooCommerce-Pixel-Manager/./src/js/public/facebook/event_listeners.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/facebook/functions.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/facebook/loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/ads/event_listeners.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/ads/functions.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/ads/loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/analytics/ga3/event_listeners.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/analytics/ga3/functions.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/analytics/ga3/loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/analytics/ga4/event_listeners.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/analytics/ga4/functions.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/analytics/ga4/loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/analytics/loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/base/event_listeners.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/base/functions.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/base/loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/optimize/event_listeners.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/optimize/functions.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/optimize/loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/hotjar/event_listeners.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/hotjar/functions.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/hotjar/loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/wpm/cookie_consent.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/wpm/event_listeners.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/wpm/functions.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/wpm/functions_loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/wpm/init.js","webpack://WooCommerce-Pixel-Manager/webpack/bootstrap","webpack://WooCommerce-Pixel-Manager/./src/js/public/main.js"],"sourcesContent":["/**\n * All event listeners\n *\n * https://developers.facebook.com/docs/meta-pixel/reference\n * */\n\n// Load pixel event\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.facebook?.pixel_id && !wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tif (wpm.canIFire(\"ads\", \"facebook-ads\")) wpm.loadFacebookPixel()\n\t}\n})\n\n// AddToCart event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmAddToCart\", function (event, product) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tlet eventId = wpm.getRandomEventId()\n\n\t\tfbq(\"track\", \"AddToCart\", {\n\t\t\tcontent_type: \"product\",\n\t\t\tcontent_name: product.name,\n\t\t\tcontent_ids : product.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],\n\t\t\tvalue : parseFloat(product.quantity * product.price),\n\t\t\tcurrency : product.currency,\n\t\t}, {\n\t\t\teventID: eventId,\n\t\t})\n\n\t\tproduct[\"currency\"] = wpmDataLayer.shop.currency\n\n\t\tjQuery(document).trigger(\"wpmFbCapiEvent\", {\n\t\t\tevent_name : \"AddToCart\",\n\t\t\tevent_id : eventId,\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tproduct_data : product,\n\t\t\tproduct_id : product.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],\n\t\t\tevent_source_url: window.location.href,\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// InitiateCheckout event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmBeginCheckout\", function (event) {\n\n\ttry {\n\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tlet eventId = wpm.getRandomEventId()\n\n\t\tfbq(\"track\", \"InitiateCheckout\", {}, {\n\t\t\teventID: eventId,\n\t\t})\n\n\t\tjQuery(document).trigger(\"wpmFbCapiEvent\", {\n\t\t\tevent_name : \"InitiateCheckout\",\n\t\t\tevent_id : eventId,\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// AddToWishlist event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmAddToWishlist\", function (event, product) {\n\n\ttry {\n\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tlet eventId = wpm.getRandomEventId()\n\n\t\tfbq(\"track\", \"AddToWishlist\", {\n\t\t\tcontent_type: \"product\",\n\t\t\tcontent_name: product.name,\n\t\t\tcontent_ids : product.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],\n\t\t\tvalue : parseFloat(product.quantity * product.price),\n\t\t\tcurrency : product.currency,\n\t\t}, {\n\t\t\teventID: eventId,\n\t\t})\n\n\t\tproduct[\"currency\"] = wpmDataLayer.shop.currency\n\n\t\tjQuery(document).trigger(\"wpmFbCapiEvent\", {\n\t\t\tevent_name : \"AddToWishlist\",\n\t\t\tevent_id : eventId,\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tproduct_data : product,\n\t\t\tproduct_id : product.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],\n\t\t\tevent_source_url: window.location.href,\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// ViewContent event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmViewItem\", function (event, product) {\n\n\ttry {\n\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\twpm.fbViewContent(product)\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view search event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmSearch\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tlet eventId = wpm.getRandomEventId()\n\n\t\tfbq(\"track\", \"Search\", {}, {\n\t\t\teventID: eventId,\n\t\t})\n\n\t\tjQuery(document).trigger(\"wpmFbCapiEvent\", {\n\t\t\tevent_name : \"Search\",\n\t\t\tevent_id : eventId,\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// load always event\njQuery(document).on(\"wpmLoadAlways\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\twpm.setFbUserData()\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view order received page event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"Purchase\",\n\t\t\t{\n\t\t\t\tcontent_type: \"product\",\n\t\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tcontent_ids : wpm.facebookContentIds(),\n\t\t\t},\n\t\t\t{eventID: wpmDataLayer.order.id},\n\t\t)\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Add functions for Facebook\n * */\n\n(function (wpm, $, undefined) {\n\n\tlet fBUserData\n\n\twpm.loadFacebookPixel = () => {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.facebook.loaded = true\n\n\t\t\t// @formatter:off\n\t\t\t!function(f,b,e,v,n,t,s)\n\t\t\t{if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n\t\t\t\tn.callMethod.apply(n,arguments):n.queue.push(arguments)};\n\t\t\t\tif(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n\t\t\t\tn.queue=[];t=b.createElement(e);t.async=!0;\n\t\t\t\tt.src=v;s=b.getElementsByTagName(e)[0];\n\t\t\t\ts.parentNode.insertBefore(t,s)}(window, document,'script',\n\t\t\t\t'https://connect.facebook.net/en_US/fbevents.js');\n\t\t\t// @formatter:on\n\n\t\t\tfbq(\"init\", wpmDataLayer.pixels.facebook.pixel_id)\n\t\t\tfbq(\"track\", \"PageView\")\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.getRandomEventId = () => (Math.random() + 1).toString(36).substring(2)\n\n\twpm.getFbUserData = () => {\n\n\t\t/**\n\t\t * We need the first one for InitiateCheckout\n\t\t * where getting the user_data from the browser is too slow\n\t\t * using wpm.getCookie(), so we cache the user_data earlier.\n\t\t * And we need the second one because the ViewContent hit happens too fast\n\t\t * after adding a variation to the cart because the function to cache\n\t\t * the user_data is too slow. But we can get the user_data using wpm.getCookie()\n\t\t * because we don't move away from the page and can wait for the browser\n\t\t * to get it.\n\t\t */\n\n\t\tif (fBUserData) {\n\t\t\treturn fBUserData\n\t\t} else {\n\t\t\treturn wpm.getFbUserDataFromBrowser()\n\t\t}\n\t}\n\n\twpm.setFbUserData = () => {\n\t\tfBUserData = wpm.getFbUserDataFromBrowser()\n\t}\n\n\twpm.getFbUserDataFromBrowser = () => ({\n\t\tfbp : wpm.getCookie(\"_fbp\"),\n\t\tfbc : wpm.getCookie(\"_fbc\"),\n\t\tclient_user_agent: navigator.userAgent,\n\t})\n\n\twpm.fbViewContent = product => {\n\n\t\ttry {\n\t\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\t\tlet eventId = wpm.getRandomEventId()\n\n\t\t\tfbq(\"track\", \"ViewContent\", {\n\t\t\t\tcontent_type: \"product\",\n\t\t\t\tcontent_name: product.name,\n\t\t\t\t// content_category: product.category,\n\t\t\t\tcontent_ids: product.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],\n\t\t\t\tcurrency : wpmDataLayer.shop.currency,\n\t\t\t\tvalue : product.price,\n\t\t\t}, {\n\t\t\t\teventID: eventId,\n\t\t\t})\n\n\t\t\tproduct[\"currency\"] = wpmDataLayer.shop.currency\n\n\t\t\tjQuery(document).trigger(\"wpmFbCapiEvent\", {\n\t\t\t\tevent_name : \"ViewContent\",\n\t\t\t\tevent_id : eventId,\n\t\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\t\tproduct_data : product,\n\t\t\t\tproduct_id : product.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],\n\t\t\t\tevent_source_url: window.location.href,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.facebookContentIds = () => {\n\t\tlet prodIds = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\t\t\t\tprodIds.push(String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))\n\t\t\t} else {\n\t\t\t\tprodIds.push(String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))\n\t\t\t}\n\t\t}\n\n\t\treturn prodIds\n\t}\n\n\twpm.trackCustomFacebookEvent = (eventName) => {\n\t\ttry {\n\t\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\t\tlet eventId = wpm.getRandomEventId()\n\n\t\t\tfbq(\"trackCustom\", eventName, {}, {\n\t\t\t\teventID: eventId,\n\t\t\t})\n\n\t\t\tjQuery(document).trigger(\"wpmFbCapiEvent\", {\n\t\t\t\tevent_name : eventName,\n\t\t\t\tevent_id : eventId,\n\t\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\t\tevent_source_url: window.location.href,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Facebook loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n\n","/**\n * Load Google Ads event listeners\n * */\n\n// view_item_list event\njQuery(document).on(\"wpmViewItemList\", function (event, product) {\n\n\ttry {\n\t\tif(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\tif (\n\t\t\twpmDataLayer?.general?.variationsOutput &&\n\t\t\tproduct.isVariable &&\n\t\t\twpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids === false\n\t\t) return\n\n\t\t// try to prevent that WC sends cached hits to Google\n\t\tif (!product) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_item_list\", {\n\t\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\t\titems : [{\n\t\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t\t}],\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// add_to_cart event\njQuery(document).on(\"wpmAddToCart\", function (event, product) {\n\n\ttry {\n\t\tif(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"add_to_cart\", {\n\t\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\t\tvalue : product.quantity * product.price,\n\t\t\t\titems : [{\n\t\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\t\tquantity : product.quantity,\n\t\t\t\t\tprice : product.price,\n\t\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t\t}],\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view_item event\njQuery(document).on(\"wpmViewItem\", function (event, product) {\n\n\ttry {\n\t\tif(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_item\", {\n\t\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\t\tvalue : (product.quantity ? product.quantity : 1) * product.price,\n\t\t\t\titems : [{\n\t\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\t\tquantity : (product.quantity ? product.quantity : 1),\n\t\t\t\t\tprice : product.price,\n\t\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t\t}],\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// view search event\njQuery(document).on(\"wpmSearch\", function () {\n\n\ttry {\n\t\tif(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\tlet products = []\n\n\t\tfor (const [key, product] of Object.entries(wpmDataLayer.products)) {\n\n\t\t\tif (\n\t\t\t\twpmDataLayer?.general?.variationsOutput &&\n\t\t\t\tproduct.isVariable &&\n\t\t\t\twpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids === false\n\t\t\t) return\n\n\t\t\tproducts.push({\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t})\n\t\t}\n\n\t\t// console.log(products);\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_search_results\", {\n\t\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\t\t// value : 1 * product.price,\n\t\t\t\titems: products,\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// view order received page event\n// TODO distinguish with or without cart data active\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", {\n\t\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\t\titems : wpm.getGoogleAdsDynamicRemarketingOrderItems(),\n\t\t\t})\n\t\t})\n\n\t\t// console.log(wpm.getGoogleAdsDynamicRemarketingOrderItems())\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// user log in event\njQuery(document).on(\"wpmLogin\", function () {\n\n\ttry {\n\t\tif(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"login\", {\n\t\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view order received page event\n// new_customer parameter: https://support.google.com/google-ads/answer/9917012\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data_basic = {}\n\t\tlet data_with_cart = {}\n\n\t\tdata_basic = {\n\t\t\tsend_to : wpm.getGoogleAdsConversionIdentifiersWithLabel(),\n\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\tnew_customer : wpmDataLayer.order.new_customer,\n\t\t}\n\n\t\tif (wpmDataLayer?.order?.aw_merchant_id) {\n\t\t\tdata_with_cart = {\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\taw_merchant_id : wpmDataLayer.order.aw_merchant_id,\n\t\t\t\taw_feed_country : wpmDataLayer.order.aw_feed_country,\n\t\t\t\taw_feed_language: wpmDataLayer.order.aw_feed_language,\n\t\t\t\titems : wpm.getGoogleAdsRegularOrderItems(),\n\t\t\t}\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"conversion\", {...data_basic, ...data_with_cart})\n\t\t})\n\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n\n\n\n","/**\n * Load Google Ads functions\n * */\n\n(function (wpm, $, undefined) {\n\n\tlet conversionIdentifiers = []\n\n\twpm.getGoogleAdsConversionIdentifiersWithLabel = function () {\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\tconversionIdentifiers.push(key + \"/\" + item)\n\t\t}\n\t\treturn conversionIdentifiers\n\t}\n\n\twpm.getGoogleAdsConversionIdentifiers = function () {\n\n\t\tlet conversionIdentifiers = []\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\tconversionIdentifiers.push(key)\n\t\t}\n\n\t\treturn conversionIdentifiers\n\t}\n\n\twpm.getGoogleAdsRegularOrderItems = function () {\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity: item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t}\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n\twpm.getGoogleAdsDynamicRemarketingOrderItems = function () {\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity : item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t}\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load Google Ads\n */\n\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Load Google Universal Analytics (GA3) event listeners\n * */\n\n\n// view order received page event\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) return\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.mp_active) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", {\n\t\t\t\tsend_to : [wpmDataLayer.pixels.google.analytics.universal.property_id],\n\t\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\t\taffiliation : wpmDataLayer.order.affiliation,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tvalue : wpmDataLayer.order.value_regular,\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\ttax : wpmDataLayer.order.tax,\n\t\t\t\tshipping : wpmDataLayer.order.shipping,\n\t\t\t\tcoupon : wpmDataLayer.order.coupon,\n\t\t\t\titems : wpm.getGAUAOrderItems(),\n\t\t\t})\n\t\t})\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Add functions for Google Analytics Universal\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.getGAUAOrderItems = function () {\n\n\t\t// \"id\" : \"34\",\n\t\t// \"name\" : \"Hoodie\",\n\t\t// \"brand\" : \"\",\n\t\t// \"category\" : \"Hoodies\",\n\t\t// \"list_position\": 1,\n\t\t// \"price\" : 45,\n\t\t// \"quantity\" : 1,\n\t\t// \"variant\" : \"Color: blue | Logo: yes\"\n\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity: item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\tname : item.name,\n\t\t\t\tcurrency: wpmDataLayer.order.currency,\n\t\t\t\tcategory: wpmDataLayer.products[item.id].category.join(\"/\"),\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.variant = wpmDataLayer.products[item.variation_id].variant_name\n\t\t\t\torderItem.brand = wpmDataLayer.products[item.variation_id].brand\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.brand = wpmDataLayer.products[item.id].brand\n\t\t\t}\n\n\t\t\torderItem = wpm.ga3AddListNameToProduct(orderItem)\n\n\t\t\torderItems.push(orderItem)\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n\twpm.ga3AddListNameToProduct = function (item_data, productPosition = null) {\n\n\t\t// if (wpm.ga3CanProductListBeSet(item_data.id)) {\n\t\t// \titem_data.listname = wpmDataLayer.shop.list_name\n\t\t//\n\t\t// \tif (productPosition) {\n\t\t// \t\titem_data.list_position = productPosition\n\t\t// \t}\n\t\t// }\n\n\t\titem_data.list_name = wpmDataLayer.shop.list_name\n\n\t\tif (productPosition) {\n\t\t\titem_data.list_position = productPosition\n\t\t}\n\n\t\treturn item_data\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Google Universal Analytics (GA3) loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n","/**\n * Load GA4 event listeners\n * */\n\n\n// view order received page event\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.mp_active) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", {\n\t\t\t\tsend_to : [wpmDataLayer.pixels.google.analytics.ga4.measurement_id],\n\t\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\t\taffiliation : wpmDataLayer.order.affiliation,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tvalue : wpmDataLayer.order.value_regular,\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\ttax : wpmDataLayer.order.tax,\n\t\t\t\tshipping : wpmDataLayer.order.shipping,\n\t\t\t\tcoupon : wpmDataLayer.order.coupon,\n\t\t\t\titems : wpm.getGA4OrderItems(),\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Load GA4 functions\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.getGA4OrderItems = function () {\n\n\t\t// \"item_id\" : \"34\",\n\t\t// \"item_name\" : \"Hoodie\",\n\t\t// \"quantity\" : 1,\n\t\t// \"item_brand\" : \"\",\n\t\t// \"item_variant\" : \"Color: blue | Logo: yes\",\n\t\t// \"price\" : 45,\n\t\t// \"currency\" : \"CHF\",\n\t\t// \"item_category\": \"Hoodies\"\n\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity : item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\titem_name : item.name,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\titem_category: wpmDataLayer.products[item.id].category.join(\"/\"),\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.item_id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.item_variant = wpmDataLayer.products[item.variation_id].variant_name\n\t\t\t\torderItem.item_brand = wpmDataLayer.products[item.variation_id].brand\n\t\t\t} else {\n\n\t\t\t\torderItem.item_id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.item_brand = wpmDataLayer.products[item.id].brand\n\t\t\t}\n\n\t\t\torderItems.push(orderItem)\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * GA4 loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n","/**\n * Google Analytics loader\n */\n\nrequire(\"./ga3/loader\")\nrequire(\"./ga4/loader\")\n","/**\n * Load Google base event listeners\n */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (typeof wpmDataLayer?.pixels?.google?.state === \"undefined\") {\n\t\tif (wpm.canGoogleLoad()) {\n\t\t\twpm.loadGoogle()\n\t\t} else {\n\t\t\twpm.logPreventedPixelLoading(\"google\", \"analytics / ads\")\n\t\t}\n\t}\n})\n","/**\n * Load Google base functions\n */\n\n(function (wpm, $, undefined) {\n\n\twpm.googleConfigConditionsMet = function (type) {\n\n\t\t// always returns true if Google Consent Mode is active\n\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\t\t\treturn true\n\t\t} else if (wpm.getConsentValues().mode === \"category\") {\n\t\t\treturn wpm.getConsentValues().categories[type] === true\n\t\t} else if (wpm.getConsentValues().mode === \"pixel\") {\n\t\t\treturn wpm.getConsentValues().pixels.includes(\"google-\" + type)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.getVisitorConsentStatusAndUpdateGoogleConsentSettings = function (google_consent_settings) {\n\n\t\tif (wpm.getConsentValues().mode === \"category\") {\n\n\t\t\tif (wpm.getConsentValues().categories.analytics) google_consent_settings.analytics_storage = \"granted\"\n\t\t\tif (wpm.getConsentValues().categories.ads) google_consent_settings.ad_storage = \"granted\"\n\t\t} else if ((wpm.getConsentValues().mode === \"pixel\")) {\n\n\t\t\tgoogle_consent_settings.analytics_storage = wpm.getConsentValues().pixels.includes(\"google-analytics\") ? \"granted\" : \"denied\"\n\t\t\tgoogle_consent_settings.ad_storage = wpm.getConsentValues().pixels.includes(\"google-ads\") ? \"granted\" : \"denied\"\n\t\t}\n\n\t\treturn google_consent_settings\n\t}\n\n\twpm.updateGoogleConsentMode = function (analytics = true, ads = true) {\n\n\t\ttry {\n\t\t\tif (\n\t\t\t\t!window.gtag ||\n\t\t\t\t!wpmDataLayer.shop.cookie_consent_mgmt.explicit_consent\n\t\t\t) return\n\n\t\t\tgtag(\"consent\", \"update\", {\n\t\t\t\tanalytics_storage: analytics ? \"granted\" : \"denied\",\n\t\t\t\tad_storage : ads ? \"granted\" : \"denied\",\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAds = function () {\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.ads.state = \"loading\"\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.ads?.enhanced_conversions?.active) {\n\t\t\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\t\t\tgtag(\"config\", key, {\"allow_enhanced_conversions\": true})\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\t\t\tgtag(\"config\", key)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.ads?.conversionIds && wpmDataLayer?.pixels?.google?.ads?.phone_conversion_label && wpmDataLayer?.pixels?.google?.ads?.phone_conversion_number) {\n\t\t\t\tgtag(\"config\", Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0] + \"/\" + wpmDataLayer.pixels.google.ads.phone_conversion_label, {\n\t\t\t\t\tphone_conversion_number: wpmDataLayer.pixels.google.ads.phone_conversion_number,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// ! enhanced_conversion_data needs to set on the window object\n\t\t\t// https://support.google.com/google-ads/answer/9888145#zippy=%2Cvalidate-your-implementation-using-chrome-developer-tools\n\t\t\tif (\"order_received_page\" === wpmDataLayer.shop.page_type && wpmDataLayer?.order?.google?.ads?.enhanced_conversion_data) {\n\t\t\t\twindow.enhanced_conversion_data = wpmDataLayer.order.google.ads.enhanced_conversion_data\n\t\t\t}\n\n\t\t\twpmDataLayer.pixels.google.ads.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAnalyticsUA = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.analytics.universal.state = \"loading\"\n\n\t\t\tgtag(\"config\", wpmDataLayer.pixels.google.analytics.universal.property_id, wpmDataLayer.pixels.google.analytics.universal.parameters)\n\t\t\twpmDataLayer.pixels.google.analytics.universal.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAnalyticsGA4 = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.analytics.ga4.state = \"loading\"\n\n\t\t\tgtag(\"config\", wpmDataLayer.pixels.google.analytics.ga4.measurement_id, wpmDataLayer.pixels.google.analytics.ga4.parameters)\n\t\t\twpmDataLayer.pixels.google.analytics.ga4.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.isGoogleActive = function () {\n\n\t\tif (\n\t\t\twpmDataLayer?.pixels?.google?.analytics?.universal?.property_id ||\n\t\t\twpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id ||\n\t\t\t!jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)\n\t\t) {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.getGoogleGtagId = function () {\n\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) {\n\t\t\treturn wpmDataLayer.pixels.google.analytics.universal.property_id\n\t\t} else if (wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) {\n\t\t\treturn wpmDataLayer.pixels.google.analytics.ga4.measurement_id\n\t\t} else {\n\t\t\treturn Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]\n\t\t}\n\t}\n\n\twpm.loadGoogle = function () {\n\n\t\tif (wpm.isGoogleActive()) {\n\n\t\t\twpmDataLayer.pixels.google.state = \"loading\"\n\n\t\t\twpm.loadScriptAndCacheIt(\"https://www.googletagmanager.com/gtag/js?id=\" + wpm.getGoogleGtagId())\n\t\t\t\t.done(function (script, textStatus) {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\t// Initiate Google dataLayer and gtag\n\t\t\t\t\t\twindow.dataLayer = window.dataLayer || []\n\t\t\t\t\t\twindow.gtag = function gtag() {\n\t\t\t\t\t\t\tdataLayer.push(arguments)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Google Consent Mode\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\n\t\t\t\t\t\t\tlet google_consent_settings = {\n\t\t\t\t\t\t\t\t\"ad_storage\" : wpmDataLayer.pixels.google.consent_mode.ad_storage,\n\t\t\t\t\t\t\t\t\"analytics_storage\": wpmDataLayer.pixels.google.consent_mode.analytics_storage,\n\t\t\t\t\t\t\t\t\"wait_for_update\" : wpmDataLayer.pixels.google.consent_mode.wait_for_update,\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.region) {\n\t\t\t\t\t\t\t\tgoogle_consent_settings.region = wpmDataLayer.pixels.google.consent_mode.region\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tgoogle_consent_settings = wpm.getVisitorConsentStatusAndUpdateGoogleConsentSettings(google_consent_settings)\n\n\t\t\t\t\t\t\tgtag(\"consent\", \"default\", google_consent_settings)\n\t\t\t\t\t\t\tgtag(\"set\", \"ads_data_redaction\", wpmDataLayer.pixels.google.consent_mode.ads_data_redaction)\n\t\t\t\t\t\t\tgtag(\"set\", \"url_passthrough\", wpmDataLayer.pixels.google.consent_mode.url_passthrough)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Google Linker\n\t\t\t\t\t\t// https://developers.google.com/gtagjs/devguide/linker\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.linker?.settings) {\n\t\t\t\t\t\t\tgtag(\"set\", \"linker\", wpmDataLayer.pixels.google.linker.settings)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgtag(\"js\", new Date())\n\n\t\t\t\t\t\t// Google Ads loader\n\t\t\t\t\t\tif (!jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) { // Only run if the pixel has set up\n\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"ads\")) { \t\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAds()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"google-ads\", \"ads\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t// Google Universal Analytics loader\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) { \t\t// Only run if the pixel has set up\n\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"analytics\")) {\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAnalyticsUA()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"google-universal-analytics\", \"analytics\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// GA4 loader\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) { \t\t\t// Only run if the pixel has set up\n\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"analytics\")) {\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAnalyticsGA4()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"ga4\", \"analytics\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twpmDataLayer.pixels.google.state = \"ready\"\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.error(e)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t}\n\n\twpm.canGoogleLoad = function () {\n\n\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\t\t\treturn true\n\t\t} else if (\"category\" === wpm.getConsentValues().mode) {\n\t\t\treturn !!(wpm.getConsentValues().categories[\"ads\"] || wpm.getConsentValues().categories[\"analytics\"])\n\t\t} else if (\"pixel\" === wpm.getConsentValues().mode) {\n\t\t\treturn wpm.getConsentValues().pixels.includes(\"google-ads\") || wpm.getConsentValues().pixels.includes(\"google-analytics\")\n\t\t} else {\n\t\t\tconsole.error(\"Couldn't find a valid load condition for Google mode in wpmConsentValues\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.gtagLoaded = function () {\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (typeof wpmDataLayer?.pixels?.google?.state === \"undefined\") reject()\n\n\t\t\tlet startTime = 0\n\t\t\tlet timeout = 5000\n\t\t\tlet frequency = 200;\n\n\t\t\t(function wait() {\n\t\t\t\tif (wpmDataLayer?.pixels?.google?.state === \"ready\") return resolve()\n\t\t\t\tif (startTime >= timeout) return reject()\n\t\t\t\tstartTime += frequency\n\t\t\t\tsetTimeout(wait, frequency)\n\t\t\t})()\n\t\t})\n\t}\n\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Load Google base\n */\n\n// Load base\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n","/**\n * Load Google\n */\n\n// Load base\nrequire(\"./base/loader\")\n\n//Load additional Google libraries\nrequire(\"./ads/loader\")\nrequire(\"./analytics/loader\")\nrequire(\"./optimize/loader\")\n\n\n","/**\n * Load Google Optimize event listeners\n */\n\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.google?.optimize?.container_id && !wpmDataLayer?.pixels?.google?.optimize?.loaded) {\n\t\tif (wpm.canIFire(\"analytics\", \"google-optimize\")) wpm.load_google_optimize_pixel()\n\t}\n})\n","/**\n * Load Google Optimize functions\n */\n\n\n(function (wpm, $, undefined) {\n\n\twpm.load_google_optimize_pixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.optimize.loaded = true\n\n\t\t\twpm.loadScriptAndCacheIt(\"https://www.googleoptimize.com/optimize.js?id=\" + wpmDataLayer.pixels.google.optimize.container_id)\n\t\t\t// .done(function (script, textStatus) {\n\t\t\t// \t\tconsole.log('Google Optimize loaded')\n\t\t\t// });\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Load Google Optimize\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Load Hotjar event listeners\n */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.hotjar?.site_id && !wpmDataLayer?.pixels?.hotjar?.loaded) {\n\t\tif (wpm.canIFire(\"analytics\", \"hotjar\") && !wpmDataLayer?.pixels?.hotjar?.loaded) wpm.load_hotjar_pixel()\n\t}\n})\n","/**\n * Load Hotjar functions\n */\n\n(function (wpm, $, undefined) {\n\n\twpm.load_hotjar_pixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.hotjar.loaded = true;\n\n\t\t\t// @formatter:off\n\t\t\t(function(h,o,t,j,a,r){\n\t\t\t\th.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};\n\t\t\t\th._hjSettings={hjid:wpmDataLayer.pixels.hotjar.site_id,hjsv:6};\n\t\t\t\ta=o.getElementsByTagName('head')[0];\n\t\t\t\tr=o.createElement('script');r.async=1;\n\t\t\t\tr.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;\n\t\t\t\ta.appendChild(r);\n\t\t\t})(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');\n\t\t\t// @formatter:on\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Hotjar loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Consent Mode functions\n */\n\n(function (wpm, $, undefined) {\n\n\n\t/**\n\t * Handle Cookie Management Platforms\n\t */\n\n\tlet getComplianzCookies = () => {\n\n\t\tlet cmplz_statistics = wpm.getCookie(\"cmplz_statistics\")\n\t\tlet cmplz_marketing = wpm.getCookie(\"cmplz_marketing\")\n\t\tlet cmplz_consent_status = wpm.getCookie(\"cmplz_consent_status\") || wpm.getCookie(\"cmplz_banner-status\")\n\n\t\tif (cmplz_consent_status) {\n\t\t\treturn {\n\t\t\t\tanalytics : cmplz_statistics === \"allow\",\n\t\t\t\tads : cmplz_marketing === \"allow\",\n\t\t\t\tvisitorHasChosen: true,\n\t\t\t}\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tlet getCookieLawInfoCookies = () => {\n\n\t\tlet analyticsCookie = wpm.getCookie(\"cookielawinfo-checkbox-analytics\") || wpm.getCookie(\"cookielawinfo-checkbox-analytiques\")\n\t\tlet adsCookie = wpm.getCookie(\"cookielawinfo-checkbox-advertisement\") || wpm.getCookie(\"cookielawinfo-checkbox-performance\") || wpm.getCookie(\"cookielawinfo-checkbox-publicite\")\n\t\tlet visitorHasChosen = wpm.getCookie(\"CookieLawInfoConsent\")\n\n\t\tif (analyticsCookie || adsCookie) {\n\n\t\t\treturn {\n\t\t\t\tanalytics : analyticsCookie === \"yes\",\n\t\t\t\tads : adsCookie === \"yes\",\n\t\t\t\tvisitorHasChosen: !!visitorHasChosen,\n\t\t\t}\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\n\tlet\n\t\twpmConsentValues = {}\n\twpmConsentValues.categories = {}\n\twpmConsentValues.pixels = []\n\twpmConsentValues.mode = \"category\"\n\twpmConsentValues.visitorHasChosen = false\n\n\twpm.getConsentValues = () => wpmConsentValues\n\n\twpm.setConsentValueCategories = (analytics = false, ads = false) => {\n\t\twpmConsentValues.categories.analytics = analytics\n\t\twpmConsentValues.categories.ads = ads\n\t}\n\n\twpm.updateConsentCookieValues = (analytics = null, ads = null, explicitConsent = false) => {\n\n\t\t// ad_storage\n\t\t// analytics_storage\n\t\t// functionality_storage\n\t\t// personalization_storage\n\t\t// security_storage\n\n\t\tlet cookie\n\n\t\tif (analytics || ads) {\n\n\t\t\tif (analytics) {\n\t\t\t\twpmConsentValues.categories.analytics = !!analytics\n\t\t\t}\n\t\t\tif (ads) {\n\t\t\t\twpmConsentValues.categories.ads = !!ads\n\t\t\t}\n\n\t\t} else if (cookie = wpm.getCookie(\"CookieConsent\")) {\n\n\t\t\t// Cookiebot\n\t\t\t// https://wordpress.org/plugins/cookiebot/\n\t\t\tcookie = decodeURI(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.indexOf(\"statistics:true\") >= 0\n\t\t\twpmConsentValues.categories.ads = cookie.indexOf(\"marketing:true\") >= 0\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t} else if (cookie = wpm.getCookie(\"CookieScriptConsent\")) {\n\n\t\t\t// Cookie Script\n\t\t\t// https://wordpress.org/plugins/cookie-script-com/\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\tif (cookie.action === \"reject\") {\n\t\t\t\twpmConsentValues.categories.analytics = false\n\t\t\t\twpmConsentValues.categories.ads = false\n\t\t\t} else if (cookie.categories.length === 2) {\n\t\t\t\twpmConsentValues.categories.analytics = true\n\t\t\t\twpmConsentValues.categories.ads = true\n\t\t\t} else {\n\t\t\t\twpmConsentValues.categories.analytics = cookie.categories.indexOf(\"performance\") >= 0\n\t\t\t\twpmConsentValues.categories.ads = cookie.categories.indexOf(\"targeting\") >= 0\n\t\t\t}\n\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t} else if (cookie = wpm.getCookie(\"borlabs-cookie\")) {\n\n\t\t\t// Borlabs Cookie\n\t\t\t// https://borlabs.io/borlabs-cookie/\n\n\t\t\tcookie = decodeURI(cookie)\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = !!cookie?.consents?.statistics\n\t\t\twpmConsentValues.categories.ads = !!cookie?.consents?.marketing\n\t\t\twpmConsentValues.visitorHasChosen = true\n\t\t\twpmConsentValues.pixels = [...cookie?.consents?.statistics || [], ...cookie?.consents?.marketing || []]\n\t\t\twpmConsentValues.mode = \"pixel\"\n\n\t\t} else if (cookie = getComplianzCookies()) {\n\n\t\t\t// Complianz Cookie\n\t\t\t// https://wordpress.org/plugins/complianz-gdpr/\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = cookie.visitorHasChosen\n\n\t\t} else if (cookie = wpm.getCookie(\"cookie_notice_accepted\")) {\n\n\t\t\t// Cookie Compliance (free version)\n\t\t\t// https://wordpress.org/plugins/cookie-notice/\n\n\t\t\twpmConsentValues.categories.analytics = true\n\t\t\twpmConsentValues.categories.ads = true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t} else if (cookie = wpm.getCookie(\"hu-consent\")) {\n\n\t\t\t// Cookie Compliance (pro version)\n\t\t\t// https://wordpress.org/plugins/cookie-notice/\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = !!cookie.categories[\"3\"]\n\t\t\twpmConsentValues.categories.ads = !!cookie.categories[\"4\"]\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t} else if (cookie = getCookieLawInfoCookies()) {\n\n\t\t\t// CookieYes, GDPR Cookie Consent (Cookie Law Info)\n\t\t\t// https://wordpress.org/plugins/cookie-law-info/\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = cookie.visitorHasChosen === true\n\n\t\t} else if (cookie = wpm.getCookie(\"moove_gdpr_popup\")) {\n\n\t\t\t// GDPR Cookie Compliance Plugin by Moove Agency\n\t\t\t// https://wordpress.org/plugins/gdpr-cookie-compliance/\n\t\t\t// TODO write documentation on how to set up the plugin in order for this to work properly\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.thirdparty === \"1\"\n\t\t\twpmConsentValues.categories.ads = cookie.advanced === \"1\"\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t} else {\n\t\t\t// consentValues.categories.analytics = true\n\t\t\t// consentValues.categories.ads = true\n\n\t\t\twpmConsentValues.categories.analytics = !explicitConsent\n\t\t\twpmConsentValues.categories.ads = !explicitConsent\n\t\t}\n\t}\n\n\twpm.updateConsentCookieValues()\n\n\twpm.setConsentDefaultValuesToExplicit = () => {\n\t\twpmConsentValues.categories = {\n\t\t\tanalytics: false,\n\t\t\tads : false,\n\t\t}\n\t}\n\n\twpm.canIFire = (category, pixelName) => {\n\n\t\tlet canIFireMode\n\n\t\tif (\"category\" === wpmConsentValues.mode) {\n\t\t\tcanIFireMode = !!wpmConsentValues.categories[category]\n\t\t} else if (\"pixel\" === wpmConsentValues.mode) {\n\t\t\tcanIFireMode = wpmConsentValues.pixels.includes(pixelName)\n\n\t\t\t// If a user sets \"bing-ads\" in Borlabs Cookie instead of\n\t\t\t// \"microsoft-ads\" in the Borlabs settings, we need to check\n\t\t\t// for that too.\n\t\t\tif (false === canIFireMode && \"microsoft-ads\" === pixelName) {\n\t\t\t\tcanIFireMode = wpmConsentValues.pixels.includes(\"bing-ads\")\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.error(\"Couldn't find a valid consent mode in wpmConsentValues\")\n\t\t\tcanIFireMode = false\n\t\t}\n\n\t\tif (canIFireMode) {\n\t\t\treturn true\n\t\t} else {\n\t\t\tif (true || wpm.urlHasParameter(\"debugConsentMode\")) {\n\t\t\t\twpm.logPreventedPixelLoading(pixelName, category)\n\t\t\t}\n\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.logPreventedPixelLoading = (pixelName, category) => {\n\n\t\tif (wpmDataLayer?.shop?.cookie_consent_mgmt?.explicit_consent) {\n\t\t\tconsole.log(\"WooCommerce Pixel Manager: The \\\"\" + pixelName + \" (category: \" + category + \")\\\" pixel has not fired because you have not given consent for it yet. (WPM is in explicit consent mode.)\")\n\t\t} else {\n\t\t\tconsole.log(\"WooCommerce Pixel Manager: The \\\"\" + pixelName + \" (category: \" + category + \")\\\" pixel has not fired because you have removed consent for this pixel. (WPM is in implicit consent mode.)\")\n\t\t}\n\t}\n\n\t/**\n\t * Runs through each script in <head> and blocks / unblocks it according to the plugin settings\n\t * and user consent.\n\t */\n\n\t// https://stackoverflow.com/q/65453565/4688612\n\twpm.scriptTagObserver = new MutationObserver((mutations) => {\n\t\tmutations.forEach(({addedNodes}) => {\n\t\t\t[...addedNodes]\n\t\t\t\t.forEach(node => {\n\n\t\t\t\t\tif ($(node).data(\"wpm-cookie-category\")) {\n\n\t\t\t\t\t\t// If the pixel category has been approved > unblock\n\t\t\t\t\t\t// If the pixel belongs to more than one category, then unblock if one of the categories has been approved\n\t\t\t\t\t\t// If no category has been approved, but the Google Consent Mode is active, then only unblock the Google scripts\n\n\t\t\t\t\t\tif (wpm.shouldScriptBeActive(node)) {\n\t\t\t\t\t\t\twpm.unblockScript(node)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twpm.blockScript(node)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t})\n\t})\n\n\twpm.scriptTagObserver.observe(document.head, {childList: true, subtree: true})\n\tjQuery(document).on(\"DOMContentLoaded\", () => wpm.scriptTagObserver.disconnect())\n\n\twpm.shouldScriptBeActive = node => {\n\n\t\tif (\n\t\t\twpmDataLayer.shop.cookie_consent_mgmt.explicit_consent ||\n\t\t\twpmConsentValues.visitorHasChosen\n\t\t) {\n\n\t\t\tif (wpmConsentValues.mode === \"category\" && $(node).data(\"wpm-cookie-category\").split(\",\").some(element => wpmConsentValues.categories[element])) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmConsentValues.mode === \"pixel\" && wpmConsentValues.pixels.includes($(node).data(\"wpm-pixel-name\"))) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmConsentValues.mode === \"pixel\" && $(node).data(\"wpm-pixel-name\") === \"google\" && [\"google-analytics\", \"google-ads\"].some(element => wpmConsentValues.pixels.includes(element))) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmDataLayer?.pixels?.google?.consent_mode?.active && $(node).data(\"wpm-pixel-name\") === \"google\") {\n\t\t\t\treturn true\n\t\t\t} else {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\treturn true\n\t\t}\n\t}\n\n\n\twpm.unblockScript = (scriptNode, removeAttach = false) => {\n\n\t\tif (removeAttach) $(scriptNode).remove()\n\n\t\tlet wpmSrc = $(scriptNode).data(\"wpm-src\")\n\t\tif (wpmSrc) $(scriptNode).attr(\"src\", wpmSrc)\n\n\t\tscriptNode.type = \"text/javascript\"\n\n\t\tif (removeAttach) $(scriptNode).appendTo(\"head\")\n\n\t\tjQuery(document).trigger(\"wpmPreLoadPixels\", {})\n\t}\n\n\twpm.blockScript = (scriptNode, removeAttach = false) => {\n\n\t\tif (removeAttach) $(scriptNode).remove()\n\n\t\tif ($(scriptNode).attr(\"src\")) $(scriptNode).removeAttr(\"src\")\n\t\tscriptNode.type = \"blocked/javascript\"\n\n\t\tif (removeAttach) $(scriptNode).appendTo(\"head\")\n\t}\n\n\twpm.unblockAllScripts = (analytics = true, ads = true) => {\n\t\tjQuery(document).trigger(\"wpmPreLoadPixels\", {})\n\t}\n\n\twpm.unblockSelectedPixels = () => {\n\t\tjQuery(document).trigger(\"wpmPreLoadPixels\", {})\n\t}\n\n\n\t/**\n\t * Block or unblock scripts for each CMP immediately after cookie consent has been updated\n\t * by the visitor.\n\t */\n\n\t// Borlabs Cookie\n\t// If visitor accepts cookies in Borlabs Cookie unblock the scripts\n\tjQuery(document).on(\"borlabs-cookie-consent-saved\", () => {\n\n\t\twpm.updateConsentCookieValues()\n\n\t\tif (wpmConsentValues.mode === \"pixel\") {\n\n\t\t\twpm.unblockSelectedPixels()\n\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.pixels.includes(\"google-analytics\"), wpmConsentValues.pixels.includes(\"google-ads\"))\n\t\t} else {\n\n\t\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t}\n\t})\n\n\t// Cookiebot\n\t// If visitor accepts cookies in Cookiebot unblock the scripts\n\t// https://www.cookiebot.com/en/developer/\n\tjQuery(document).on(\"CookiebotOnAccept\", () => {\n\n\t\tif (Cookiebot.consent.statistics) wpmConsentValues.categories.analytics = true\n\t\tif (Cookiebot.consent.marketing) wpmConsentValues.categories.ads = true\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\n\t}, false)\n\n\t/**\n\t * Cookie Script\n\t * If visitor accepts cookies in Cookie Script unblock the scripts\n\t * https://support.cookie-script.com/article/20-custom-events\n\t */\n\tjQuery(document).on(\"CookieScriptAccept\", e => {\n\n\t\tif (e.detail.categories.includes(\"performance\")) wpmConsentValues.categories.analytics = true\n\t\tif (e.detail.categories.includes(\"targeting\")) wpmConsentValues.categories.ads = true\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t})\n\n\t/**\n\t * Cookie Script\n\t * If visitor accepts cookies in Cookie Script unblock the scripts\n\t * https://support.cookie-script.com/\n\t */\n\tjQuery(document).on(\"CookieScriptAcceptAll\", () => {\n\n\t\twpm.unblockAllScripts(true, true)\n\t\twpm.updateGoogleConsentMode(true, true)\n\t})\n\n\t/**\n\t * Complianz Cookie\n\t *\n\t * If visitor accepts cookies in Complianz unblock the scripts\n\t */\n\n\twpm.cmplzStatusChange = (cmplzConsentData) => {\n\n\t\tif (cmplzConsentData.detail.categories.includes(\"statistics\")) wpm.updateConsentCookieValues(true, null)\n\t\tif (cmplzConsentData.detail.categories.includes(\"marketing\")) wpm.updateConsentCookieValues(null, true)\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t}\n\n\tjQuery(document).on(\"cmplzStatusChange\", wpm.cmplzStatusChange)\n\tjQuery(document).on(\"cmplz_status_change\", wpm.cmplzStatusChange)\n\n\n\t// Cookie Compliance by hu-manity.co (free and pro)\n\t// If visitor accepts cookies in Cookie Notice by hu-manity.co unblock the scripts (free version)\n\t// https://wordpress.org/support/topic/events-on-consent-change/#post-15202792\n\tjQuery(document).on(\"setCookieNotice\", () => {\n\n\t\twpm.updateConsentCookieValues()\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t})\n\n\t/**\n\t * Cookie Compliance by hu-manity.co (free and pro)\n\t * If visitor accepts cookies in Cookie Notice by hu-manity.co unblock the scripts (pro version)\n\t * https://wordpress.org/support/topic/events-on-consent-change/#post-15202792\n\t * Because Cookie Notice has no documented API or event that is being triggered on consent save or update\n\t * we have to solve this by using a mutation observer.\n\t *\n\t * @type {MutationObserver}\n\t */\n\n\twpm.huObserver = new MutationObserver(mutations => {\n\t\tmutations.forEach(({addedNodes}) => {\n\t\t\t[...addedNodes]\n\t\t\t\t.forEach(node => {\n\n\t\t\t\t\tif (node.id === \"hu\") {\n\n\t\t\t\t\t\tjQuery(\".hu-cookies-save\").on(\"click\", function () {\n\t\t\t\t\t\t\twpm.updateConsentCookieValues()\n\t\t\t\t\t\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\t\t\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t})\n\t})\n\n\tif (window.hu) {\n\t\twpm.huObserver.observe(document.documentElement || document.body, {childList: true, subtree: true})\n\t}\n\n\twpm.explicitConsentStateAlreadySet = () => {\n\n\t\tif (wpmConsentValues.explicitConsentStateAlreadySet) {\n\t\t\treturn true\n\t\t} else {\n\t\t\twpmConsentValues.explicitConsentStateAlreadySet = true\n\t\t}\n\t}\n\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Register event listeners\n */\n\n// remove_from_cart event\n// jQuery('.remove_from_cart_button, .remove').on('click', function (e) {\njQuery(document).on(\"click\", \".remove_from_cart_button, .remove\", function () {\n\n\ttry {\n\n\t\tlet url = new URL(jQuery(this).attr(\"href\"))\n\t\tlet productId = wpm.getProductIdByCartItemKeyUrl(url)\n\n\t\twpm.removeProductFromCart(productId)\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// add_to_cart event\n// jQuery('.add_to_cart_button:not(.product_type_variable), .ajax_add_to_cart, .js-ajax-add-to-cart, .single_add_to_cart_button, .btn_color-2').on('click', function (e) {\njQuery(document).on(\"click\", \".add_to_cart_button:not(.product_type_variable), .ajax_add_to_cart, .single_add_to_cart_button\", function () {\n\n\ttry {\n\n\t\tif (wpmDataLayer.shop.page_type === \"product\") {\n\n\t\t\t// First process related and upsell products\n\t\t\tif (typeof jQuery(this).attr(\"href\") !== \"undefined\" && jQuery(this).attr(\"href\").includes(\"add-to-cart\")) {\n\n\t\t\t\tlet quantity = 1\n\t\t\t\tlet productId = jQuery(this).data(\"product_id\")\n\n\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t} else {\n\n\t\t\t\tif (wpmDataLayer.shop.product_type === \"simple\") {\n\n\t\t\t\t\tlet quantity = Number(jQuery(\".input-text.qty\").val())\n\n\t\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\n\t\t\t\t\tlet productId = jQuery(this).val()\n\n\t\t\t\t\twpm.addProductToCart(productId, quantity)\n\n\t\t\t\t} else if (wpmDataLayer.shop.product_type === \"variable\") {\n\n\t\t\t\t\tlet quantity = Number(jQuery(\".input-text.qty\").val())\n\n\t\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\n\t\t\t\t\tlet productId = jQuery(\"[name='variation_id']\").val()\n\n\t\t\t\t\twpm.addProductToCart(productId, quantity)\n\n\t\t\t\t} else if (wpmDataLayer.shop.product_type === \"grouped\") {\n\n\t\t\t\t\tjQuery(\".woocommerce-grouped-product-list-item\").each(function () {\n\n\t\t\t\t\t\tlet quantity = Number(jQuery(this).find(\".input-text.qty\").val())\n\n\t\t\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\n\t\t\t\t\t\tlet classes = jQuery(this).attr(\"class\")\n\t\t\t\t\t\tlet productId = wpm.getPostIdFromString(classes)\n\n\t\t\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t\t\t})\n\t\t\t\t} else if (wpmDataLayer.shop.product_type === \"bundle\") {\n\n\t\t\t\t\tlet quantity = Number(jQuery(\".input-text.qty\").val())\n\n\t\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\n\t\t\t\t\tlet productId = jQuery(\"input[name=add-to-cart]\").val()\n\n\t\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\n\t\t\tlet quantity = 1\n\t\t\tlet productId = jQuery(this).data(\"product_id\")\n\n\t\t\twpm.addProductToCart(productId, quantity)\n\t\t}\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n/**\n * If someone clicks anywhere on a custom /?add-to-cart=123 link\n * trigger the add to cart event\n */\n// jQuery('a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)').one('click', function (event) {\njQuery(document).one(\"click\", \"a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)\", function (event) {\n\n\ttry {\n\t\tif (jQuery(event.target).closest(\"a\").attr(\"href\")) {\n\n\t\t\tlet href = jQuery(event.target).closest(\"a\").attr(\"href\")\n\n\t\t\tif (href.includes(\"add-to-cart=\")) {\n\n\t\t\t\tlet matches = href.match(/(add-to-cart=)(\\d+)/)\n\t\t\t\tif (matches) wpm.addProductToCart(matches[2], 1)\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// select_content GA UA event\n// select_item GA 4 event\n// jQuery(document).on('click', '.woocommerce-LoopProduct-link, .wc-block-grid__product, .product-small.box', function (e) {\n// jQuery('.woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product').on('click', function (e) {\njQuery(document).on(\"click\", \".woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product\", function () {\n\n\ttry {\n\n\t\t/**\n\t\t * On some pages the event fires multiple times, and on product pages\n\t\t * even on page load. Using e.stopPropagation helps to prevent this,\n\t\t * but I don't know why. We don't even have to use this, since only a real\n\t\t * product click yields a valid productId. So we filter the invalid click\n\t\t * events out later down in the code. I'll keep it that way because this is\n\t\t * the most compatible way across shops.\n\t\t *\n\t\t * e.stopPropagation();\n\t\t * */\n\n\t\tlet productId = jQuery(this).nextAll(\".wpmProductId:first\").data(\"id\")\n\n\t\t/**\n\t\t * On product pages, for some reason, the click event is triggered on the main product on page load.\n\t\t * In that case no ID is found. But we can discard it, since we only want to trigger the event on\n\t\t * related products, which are found below.\n\t\t */\n\n\t\tif (productId) {\n\n\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tif (wpmDataLayer.products && wpmDataLayer.products[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\t\t\t\tjQuery(document).trigger(\"wpmSelectContentGaUa\", product)\n\t\t\t\tjQuery(document).trigger(\"wpmSelectItem\", product)\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// begin_checkout event\nlet checkoutButtonClasses = [\n\t\".checkout-button\",\n\t\".cart-checkout-button\",\n\t\".button.checkout\",\n\t\".xoo-wsc-ft-btn-checkout\", // https://xootix.com/side-cart-for-woocommerce/\n]\n\njQuery(document).one(\"click\", checkoutButtonClasses.join(\",\"), function () {\n\tjQuery(document).trigger(\"wpmBeginCheckout\")\n})\n\n\n// checkout_progress event\n// track checkout option event: entered valid billing email\njQuery(document).on(\"input\", \"#billing_email\", function () {\n\n\tif (wpm.isEmail(jQuery(this).val())) {\n\t\t// wpm.fireCheckoutOption(2);\n\t\twpm.fireCheckoutProgress(2)\n\t\twpm.emailSelected = true\n\t}\n})\n\n// track checkout option event: purchase click\njQuery(document).on(\"click\", \".wc_payment_methods\", function () {\n\n\tif (false === wpm.paymentMethodSelected) {\n\t\twpm.fireCheckoutProgress(3)\n\t}\n\n\twpm.fireCheckoutOption(3, jQuery(\"input[name='payment_method']:checked\").val())\n\twpm.paymentMethodSelected = true\n})\n\n// track checkout option event: purchase click\n// jQuery('#place_order').one('click', function () {\njQuery(document).one(\"click\", \"#place_order\", function () {\n\n\tif (false === wpm.emailSelected) {\n\t\twpm.fireCheckoutProgress(2)\n\t}\n\n\tif (false === wpm.paymentMethodSelected) {\n\t\twpm.fireCheckoutProgress(3)\n\t\twpm.fireCheckoutOption(3, jQuery(\"input[name='payment_method']:checked\").val())\n\t}\n\n\twpm.fireCheckoutProgress(4)\n})\n\n// update cart event\n// jQuery(\"[name='update_cart']\").on('click', function (e) {\njQuery(document).on(\"click\", \"[name='update_cart']\", function () {\n\n\ttry {\n\t\tjQuery(\".cart_item\").each(function () {\n\n\t\t\tlet url = new URL(jQuery(this).find(\".product-remove\").find(\"a\").attr(\"href\"))\n\t\t\tlet productId = wpm.getProductIdByCartItemKeyUrl(url)\n\n\n\t\t\tlet quantity = jQuery(this).find(\".qty\").val()\n\n\t\t\tif (quantity === 0) {\n\t\t\t\twpm.removeProductFromCart(productId)\n\t\t\t} else if (quantity < wpmDataLayer.cart[productId].quantity) {\n\t\t\t\twpm.removeProductFromCart(productId, wpmDataLayer.cart[productId].quantity - quantity)\n\t\t\t} else if (quantity > wpmDataLayer.cart[productId].quantity) {\n\t\t\t\twpm.addProductToCart(productId, quantity - wpmDataLayer.cart[productId].quantity)\n\t\t\t}\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t\twpm.getCartItemsFromBackend()\n\t}\n})\n\n\n// add_to_wishlist\njQuery(document).on(\"click\", \".add_to_wishlist, .wl-add-to\", function () {\n\n\ttry {\n\n\t\tlet productId\n\n\t\tif (jQuery(this).data(\"productid\")) { // for the WooCommerce wishlist plugin\n\n\t\t\tproductId = jQuery(this).data(\"productid\")\n\t\t} else if (jQuery(this).data(\"product-id\")) { // for the YITH wishlist plugin\n\n\t\t\tproductId = jQuery(this).data(\"product-id\")\n\t\t}\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\t\tjQuery(document).trigger(\"wpmAddToWishlist\", product)\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\njQuery(document).on(\"updated_cart_totals\", function () {\n\tjQuery(document).trigger(\"wpmViewCart\")\n})\n\n\n/**\n * Called when the user selects all the required dropdowns / attributes\n *\n * Has to be hooked after document ready !\n *\n * https://stackoverflow.com/a/27849208/4688612\n * https://stackoverflow.com/a/65065335/4688612\n */\n\njQuery(function () {\n\n\tjQuery(\".single_variation_wrap\").on(\"show_variation\", function (event, variation) {\n\n\t\ttry {\n\t\t\tlet productId = wpm.getIdBasedOndVariationsOutputSetting(variation.variation_id)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tif (wpmDataLayer.products && wpmDataLayer.products[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\t\t\t\tjQuery(document).trigger(\"wpmViewItem\", product)\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t})\n})\n\n\n/**\n * Called on variable products when no selection has been done yet\n * or when the visitor deselects his choice.\n *\n * Has to be hooked after document ready !\n */\n\njQuery(function () {\n\n\tjQuery(\".single_variation_wrap\").on(\"hide_variation\", function () {\n\n\t\ttry {\n\t\t\tlet classes = jQuery(\"body\").attr(\"class\")\n\t\t\tlet productId = classes.match(/(postid-)(\\d+)/)[2]\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\t/**\n\t\t\t * If we have a variable product with no preset,\n\t\t\t * and variations output is enabled,\n\t\t\t * then we send a viewItem event with the first\n\t\t\t * variation we find for the parent.\n\t\t\t * If variations output is disabled,\n\t\t\t * we just send the parent ID.\n\t\t\t *\n\t\t\t * And if Facebook microdata is active, use the\n\t\t\t * microdata product ID.\n\t\t\t */\n\n\t\t\tif (\n\t\t\t\t\"variable\" === wpmDataLayer.shop.product_type &&\n\t\t\t\twpmDataLayer?.general?.variationsOutput\n\t\t\t) {\n\t\t\t\tfor (const [key, product] of Object.entries(wpmDataLayer.products)) {\n\t\t\t\t\tif (\"parentId\" in product) {\n\n\t\t\t\t\t\tproductId = product.id\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\n\n\t\t\t\tif (wpmDataLayer?.pixels?.facebook?.microdata_product_id) {\n\t\t\t\t\tproductId = wpmDataLayer.pixels.facebook.microdata_product_id\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (wpmDataLayer.products && wpmDataLayer.products[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\t\t\t\tjQuery(document).trigger(\"wpmViewItem\", product)\n\t\t\t}\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t})\n})\n\n\n/**\n * Set up wpm events\n */\n\n// populate the wpmDataLayer with the cart items\njQuery(window).on(\"wpmLoad\", function () {\n\n\ttry {\n\t\t// When a new session is initiated there are no items in the cart,\n\t\t// so we can save the call to get the cart items\n\t\tif (wpm.doesWooCommerceCartExist()) wpm.getCartItems()\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// get all add-to-cart= products from backend\njQuery(window).on(\"wpmLoad\", function () {\n\n\twpmDataLayer.products = wpmDataLayer.products || {}\n\n\t// scan page for add-to-cart= links\n\tlet productIds = wpm.getAddToCartLinkProductIds()\n\n\twpm.getProductsFromBackend(productIds)\n})\n\n/**\n * Save the referrer into a cookie\n */\n\njQuery(window).on(\"wpmLoad\", function () {\n\n\t// can't use session storage as we can't read it from the server\n\tif (!wpm.getCookie(\"wpmReferrer\")) {\n\n\t\tif (document.referrer) {\n\t\t\tlet referrerUrl = new URL(document.referrer)\n\t\t\tlet referrerHostname = referrerUrl.hostname\n\n\t\t\tif (referrerHostname !== window.location.host) {\n\t\t\t\twpm.setCookie(\"wpmReferrer\", referrerHostname)\n\t\t\t} else {\n\t\t\t\twpm.setCookie(\"wpmReferrer\", \"\")\n\t\t\t}\n\n\t\t} else {\n\t\t\twpm.setCookie(\"wpmReferrer\", \"\")\n\t\t}\n\t}\n})\n\n\n/**\n * Create our own load event in order to better handle script flow execution when JS \"optimizers\" shuffle the code.\n */\n\njQuery(window).on(\"wpmLoad\", function () {\n\ttry {\n\t\tif (typeof wpmDataLayer != \"undefined\" && !wpmDataLayer?.wpmLoadFired) {\n\n\t\t\tjQuery(document).trigger(\"wpmLoadAlways\")\n\n\t\t\tif (\"product\" === wpmDataLayer.shop.page_type && \"variable\" !== wpmDataLayer.shop.product_type && wpm.getMainProductIdFromProductPage()) {\n\n\t\t\t\tlet product = wpm.getProductDataForViewItemEvent(wpm.getMainProductIdFromProductPage())\n\t\t\t\tjQuery(document).trigger(\"wpmViewItem\", product)\n\n\t\t\t} else if (\"product_category\" === wpmDataLayer.shop.page_type) {\n\n\t\t\t\tjQuery(document).trigger(\"wpmCategory\")\n\n\t\t\t} else if (\"search\" === wpmDataLayer.shop.page_type) {\n\n\t\t\t\tjQuery(document).trigger(\"wpmSearch\")\n\n\t\t\t} else if (\"cart\" === wpmDataLayer.shop.page_type) {\n\n\t\t\t\tjQuery(document).trigger(\"wpmViewCart\")\n\n\t\t\t} else if (\"order_received_page\" === wpmDataLayer.shop.page_type && wpmDataLayer.order) {\n\n\t\t\t\tif (!wpm.isOrderIdStored(wpmDataLayer.order.id)) {\n\n\t\t\t\t\tjQuery(document).trigger(\"wpmOrderReceivedPage\")\n\t\t\t\t\twpm.writeOrderIdToStorage(wpmDataLayer.order.id)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tjQuery(document).trigger(\"wpmEverywhereElse\")\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.user?.id && !wpm.hasLoginEventFired()) {\n\t\t\t\tjQuery(document).trigger(\"wpmLogin\")\n\t\t\t\twpm.setLoginEventFired()\n\t\t\t}\n\n\t\t\t// /**\n\t\t\t// * Load mini cart fragments into a wpm session storage key,\n\t\t\t// * after the document load event.\n\t\t\t// */\n\t\t\t// jQuery(document).ajaxSend(function (event, jqxhr, settings) {\n\t\t\t// \t// console.log('settings.url: ' + settings.url);\n\t\t\t//\n\t\t\t// \tif (settings.url.includes(\"get_refreshed_fragments\") && sessionStorage) {\n\t\t\t// \t\tif (!sessionStorage.getItem(\"wpmMiniCartActive\")) {\n\t\t\t// \t\t\tsessionStorage.setItem(\"wpmMiniCartActive\", JSON.stringify(true))\n\t\t\t// \t\t}\n\t\t\t// \t}\n\t\t\t// })\n\n\t\t\twpmDataLayer.wpmLoadFired = true\n\t\t}\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n/**\n * Load all pixels\n */\njQuery(window).on(\"wpmPreLoadPixels\", function () {\n\n\tif (wpmDataLayer?.shop?.cookie_consent_mgmt?.explicit_consent && !wpm.explicitConsentStateAlreadySet()) {\n\t\twpm.updateConsentCookieValues(null, null,true)\n\t}\n\n\tjQuery(document).trigger(\"wpmLoadPixels\", {})\n})\n","/**\n * Create a wpm namespace under which all functions are declared\n */\n\n// https://stackoverflow.com/a/5947280/4688612\n\n(function (wpm, $, undefined) {\n\n\tconst wpmDeduper = {\n\t\tkeyName : \"_wpm_order_ids\",\n\t\tcookieExpiresDays: 365,\n\t}\n\n\tconst wpmRestSettings = {\n\t\t// cookiesAvailable : '_wpm_cookies_are_available',\n\t\tcookieWpmRestEndpointAvailable: \"_wpm_endpoint_available\",\n\t\trestEndpoint : \"/wp-json/\",\n\t\trestFails : 0,\n\t\trestFailsThreshold : 10,\n\t}\n\n\twpm.emailSelected = false\n\twpm.paymentMethodSelected = false\n\n\t// wpm.checkIfCookiesAvailable = function () {\n\t//\n\t// // read the cookie if previously set, if it is return true, otherwise continue\n\t// if (wpm.getCookie(wpmRestSettings.cookiesAvailable)) {\n\t// return true;\n\t// }\n\t//\n\t// // set the cookie for the session\n\t// Cookies.set(wpmRestSettings.cookiesAvailable, true);\n\t//\n\t// // read cookie, true if ok, false if not ok\n\t// return !!wpm.getCookie(wpmRestSettings.cookiesAvailable);\n\t// }\n\n\twpm.useRestEndpoint = () => {\n\n\t\t// only if sessionStorage is available\n\n\t\t// only if REST API endpoint is generally accessible\n\t\t// check in sessionStorage if we checked before and return answer\n\t\t// otherwise check if the endpoint is available, save answer in sessionStorage and return answer\n\n\t\t// only if not too many REST API errors happened\n\n\t\treturn wpm.isSessionStorageAvailable() &&\n\t\t\twpm.isRestEndpointAvailable() &&\n\t\t\twpm.isBelowRestErrorThreshold()\n\t}\n\n\twpm.isBelowRestErrorThreshold = () => window.sessionStorage.getItem(wpmRestSettings.restFails) <= wpmRestSettings.restFailsThreshold\n\n\twpm.isRestEndpointAvailable = () => {\n\n\t\tif (window.sessionStorage.getItem(wpmRestSettings.cookieWpmRestEndpointAvailable)) {\n\t\t\treturn JSON.parse(window.sessionStorage.getItem(wpmRestSettings.cookieWpmRestEndpointAvailable))\n\t\t} else {\n\t\t\t// return wpm.testEndpoint();\n\t\t\t// just set the value whenever possible in order not to wait or block the main thread\n\t\t\twpm.testEndpoint()\n\t\t}\n\t}\n\n\twpm.isSessionStorageAvailable = () => !!window.sessionStorage\n\n\twpm.testEndpoint = (\n\t\turl = location.protocol + \"//\" + location.host + wpmRestSettings.restEndpoint,\n\t\tcookieName = wpmRestSettings.cookieWpmRestEndpointAvailable,\n\t) => {\n\t\t// console.log('testing endpoint');\n\n\t\tjQuery.ajax(url, {\n\t\t\ttype : \"HEAD\",\n\t\t\ttimeout: 1000,\n\t\t\t// async: false,\n\t\t\tstatusCode: {\n\t\t\t\t200: function (response) {\n\t\t\t\t\t// Cookies.set(cookieName, true);\n\t\t\t\t\t// console.log('endpoint works');\n\t\t\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(true))\n\t\t\t\t},\n\t\t\t\t404: function (response) {\n\t\t\t\t\t// Cookies.set(cookieName, false);\n\t\t\t\t\t// console.log('endpoint doesn\\'t work');\n\t\t\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(false))\n\t\t\t\t},\n\t\t\t\t0 : function (response) {\n\t\t\t\t\t// Cookies.set(cookieName, false);\n\t\t\t\t\t// console.log('endpoint doesn\\'t work');\n\t\t\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(false))\n\t\t\t\t},\n\t\t\t},\n\t\t}).then(response => {\n\t\t\t// console.log('test done')\n\t\t\t// console.log('result: ' + JSON.parse(window.sessionStorage.getItem(cookieName)));\n\t\t\t// return JSON.parse(window.sessionStorage.getItem(cookieName));\n\t\t})\n\t}\n\n\twpm.isWpmRestEndpointAvailable = (cookieName = wpmRestSettings.cookieWpmRestEndpointAvailable) => !!wpm.getCookie(cookieName)\n\n\twpm.writeOrderIdToStorage = (orderId, expireDays = 365) => {\n\n\t\t// save the order ID in the browser storage\n\n\t\tif (!window.Storage) {\n\t\t\tlet expiresDate = new Date()\n\t\t\texpiresDate.setDate(expiresDate.getDate() + wpmDeduper.cookieExpiresDays)\n\n\t\t\tlet ids = []\n\t\t\tif (checkCookie()) {\n\t\t\t\tids = JSON.parse(wpm.getCookie(wpmDeduper.keyName))\n\t\t\t}\n\n\t\t\tif (!ids.includes(orderId)) {\n\t\t\t\tids.push(orderId)\n\t\t\t\tdocument.cookie = wpmDeduper.keyName + \"=\" + JSON.stringify(ids) + \";expires=\" + expiresDate.toUTCString()\n\t\t\t}\n\n\t\t} else {\n\t\t\tif (localStorage.getItem(wpmDeduper.keyName) === null) {\n\t\t\t\tlet ids = []\n\t\t\t\tids.push(orderId)\n\t\t\t\twindow.localStorage.setItem(wpmDeduper.keyName, JSON.stringify(ids))\n\n\t\t\t} else {\n\t\t\t\tlet ids = JSON.parse(localStorage.getItem(wpmDeduper.keyName))\n\t\t\t\tif (!ids.includes(orderId)) {\n\t\t\t\t\tids.push(orderId)\n\t\t\t\t\twindow.localStorage.setItem(wpmDeduper.keyName, JSON.stringify(ids))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (typeof wpm.storeOrderIdOnServer === \"function\" && wpmDataLayer.orderDeduplication) {\n\t\t\twpm.storeOrderIdOnServer(orderId)\n\t\t}\n\t}\n\n\tfunction checkCookie() {\n\t\tlet key = wpm.getCookie(wpmDeduper.keyName)\n\t\treturn key !== \"\"\n\t}\n\n\twpm.isOrderIdStored = orderId => {\n\n\t\tif (wpmDataLayer.orderDeduplication) {\n\n\t\t\tif (!window.Storage) {\n\n\t\t\t\tif (checkCookie()) {\n\t\t\t\t\tlet ids = JSON.parse(wpm.getCookie(wpmDeduper.keyName))\n\t\t\t\t\treturn ids.includes(orderId)\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (localStorage.getItem(wpmDeduper.keyName) !== null) {\n\t\t\t\t\tlet ids = JSON.parse(localStorage.getItem(wpmDeduper.keyName))\n\t\t\t\t\treturn ids.includes(orderId)\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.log(\"order duplication prevention: off\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.isEmail = email => {\n\n\t\t// https://emailregex.com/\n\n\t\tlet regex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\n\t\treturn regex.test(email)\n\t}\n\n\twpm.removeProductFromCart = (productId, quantityToRemove = null) => {\n\n\t\ttry {\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tlet quantity\n\n\t\t\tif (quantityToRemove == null) {\n\t\t\t\tquantity = wpmDataLayer.cart[productId].quantity\n\t\t\t} else {\n\t\t\t\tquantity = quantityToRemove\n\t\t\t}\n\n\t\t\tif (wpmDataLayer.cart[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\n\t\t\t\tjQuery(document).trigger(\"wpmRemoveFromCart\", product)\n\n\t\t\t\tif (quantityToRemove == null || wpmDataLayer.cart[productId].quantity === quantityToRemove) {\n\n\t\t\t\t\tdelete wpmDataLayer.cart[productId]\n\n\t\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t\t} else {\n\n\t\t\t\t\twpmDataLayer.cart[productId].quantity = wpmDataLayer.cart[productId].quantity - quantity\n\n\t\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t\t// console.log('getting cart from back end');\n\t\t\t// wpm.getCartItemsFromBackend();\n\t\t\t// console.log('getting cart from back end done');\n\t\t}\n\t}\n\n\twpm.getIdBasedOndVariationsOutputSetting = productId => {\n\n\t\ttry {\n\t\t\tif (wpmDataLayer?.general?.variationsOutput) {\n\n\t\t\t\treturn productId\n\t\t\t} else {\n\t\t\t\tif (wpmDataLayer.products[productId].isVariation) {\n\n\t\t\t\t\treturn wpmDataLayer.products[productId].parentId\n\t\t\t\t} else {\n\n\t\t\t\t\treturn productId\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// add_to_cart\n\twpm.addProductToCart = (productId, quantity) => {\n\n\t\ttry {\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tif (wpmDataLayer?.products[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\n\t\t\t\tjQuery(document).trigger(\"wpmAddToCart\", product)\n\n\t\t\t\t// add product to cart wpmDataLayer['cart']\n\n\t\t\t\t// if the product already exists in the object, only add the additional quantity\n\t\t\t\t// otherwise create that product object in the wpmDataLayer['cart']\n\t\t\t\tif (wpmDataLayer?.cart[productId]) {\n\n\t\t\t\t\twpmDataLayer.cart[productId].quantity = wpmDataLayer.cart[productId].quantity + quantity\n\t\t\t\t} else {\n\n\t\t\t\t\tif (!(\"cart\" in wpmDataLayer)) wpmDataLayer.cart = {}\n\n\t\t\t\t\twpmDataLayer.cart[productId] = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\t\t\t\t}\n\n\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\n\t\t\t// fallback if wpmDataLayer.cart and wpmDataLayer.products got out of sync in case cart caching has an issue\n\t\t\twpm.getCartItemsFromBackend()\n\t\t}\n\t}\n\n\twpm.getCartItems = () => {\n\n\t\tif (sessionStorage) {\n\t\t\tif (!sessionStorage.getItem(\"wpmDataLayerCart\") || wpmDataLayer.shop.page_type === \"order_received_page\") {\n\t\t\t\tsessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify({}))\n\t\t\t} else {\n\t\t\t\twpm.saveCartObjectToDataLayer(JSON.parse(sessionStorage.getItem(\"wpmDataLayerCart\")))\n\t\t\t}\n\t\t} else {\n\t\t\twpm.getCartItemsFromBackend()\n\t\t}\n\t}\n\n\t// get all cart items from the backend\n\twpm.getCartItemsFromBackend = () => {\n\t\ttry {\n\t\t\tlet data = {\n\t\t\t\taction: \"wpm_get_cart_items\",\n\t\t\t}\n\n\t\t\tjQuery.ajax(\n\t\t\t\t{\n\t\t\t\t\ttype : \"get\",\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\t// url : ajax_object.ajax_url,\n\t\t\t\t\turl : wpm.ajax_url,\n\t\t\t\t\tdata : data,\n\t\t\t\t\tsuccess: function (cartItems) {\n\n\t\t\t\t\t\t// save all cart items into wpmDataLayer\n\n\t\t\t\t\t\tif (!cartItems[\"cart\"]) cartItems[\"cart\"] = {}\n\n\t\t\t\t\t\twpm.saveCartObjectToDataLayer(cartItems[\"cart\"])\n\n\t\t\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(cartItems[\"cart\"]))\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// get productIds from the backend\n\twpm.getProductsFromBackend = productIds => {\n\n\n\t\t// reduce productIds by products already in the dataLayer\n\t\tproductIds = productIds.filter(item => !wpmDataLayer.products.hasOwnProperty(item))\n\n\t\t// if no products IDs are in the object, don't try to get anything from the server\n\t\tif (!productIds || productIds.length === 0) return\n\n\t\ttry {\n\t\t\tlet data = {\n\t\t\t\taction : \"wpm_get_product_ids\",\n\t\t\t\tproductIds: productIds,\n\t\t\t}\n\n\t\t\tjQuery.ajax(\n\t\t\t\t{\n\t\t\t\t\ttype : \"get\",\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\t// url : ajax_object.ajax_url,\n\t\t\t\t\turl : wpm.ajax_url,\n\t\t\t\t\tdata : data,\n\t\t\t\t\tsuccess: function (products) {\n\n\t\t\t\t\t\t// merge products into wpmDataLayer.products\n\t\t\t\t\t\twpmDataLayer.products = Object.assign({}, wpmDataLayer.products, products)\n\t\t\t\t\t},\n\t\t\t\t\terror : function (response) {\n\t\t\t\t\t\tconsole.log(response)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.saveCartObjectToDataLayer = cartObject => {\n\n\t\twpmDataLayer.cart = cartObject\n\t\twpmDataLayer.products = Object.assign({}, wpmDataLayer.products, cartObject)\n\t}\n\n\twpm.fireCheckoutOption = (step, checkout_option = null, value = null) => {\n\n\t\tlet data = {\n\t\t\tstep : step,\n\t\t\tcheckout_option: checkout_option,\n\t\t\tvalue : value,\n\t\t}\n\n\t\tjQuery(document).trigger(\"wpmFireCheckoutOption\", data)\n\t}\n\n\twpm.fireCheckoutProgress = step => {\n\n\t\tlet data = {\n\t\t\tstep: step,\n\t\t}\n\n\t\tjQuery(document).trigger(\"wpmFireCheckoutProgress\", data)\n\t}\n\n\twpm.getPostIdFromString = string => {\n\n\t\ttry {\n\t\t\treturn string.match(/(post-)(\\d+)/)[2]\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.triggerViewItemList = productId => {\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\tjQuery(document).trigger(\"wpmViewItemList\", wpm.getProductDataForViewItemEvent(productId))\n\t}\n\n\twpm.getProductDataForViewItemEvent = productId => {\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\ttry {\n\t\t\tif (wpmDataLayer.products[productId]) {\n\n\t\t\t\treturn wpm.getProductDetailsFormattedForEvent(productId)\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.getMainProductIdFromProductPage = () => {\n\n\t\ttry {\n\t\t\tif ([\"simple\", \"variable\", \"grouped\", \"composite\", \"bundle\"].indexOf(wpmDataLayer.shop.product_type) >= 0) {\n\t\t\t\treturn jQuery(\".wpmProductId:first\").data(\"id\")\n\t\t\t} else {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.viewItemListTriggerTestMode = target => {\n\n\t\tjQuery(target).css({\"position\": \"relative\"})\n\t\tjQuery(target).append(\"<div id=\\\"viewItemListTriggerOverlay\\\"></div>\")\n\t\tjQuery(target).find(\"#viewItemListTriggerOverlay\").css({\n\t\t\t\"z-index\" : \"10\",\n\t\t\t\"display\" : \"block\",\n\t\t\t\"position\" : \"absolute\",\n\t\t\t\"height\" : \"100%\",\n\t\t\t\"top\" : \"0\",\n\t\t\t\"left\" : \"0\",\n\t\t\t\"right\" : \"0\",\n\t\t\t\"opacity\" : wpmDataLayer.viewItemListTrigger.opacity,\n\t\t\t\"background-color\": wpmDataLayer.viewItemListTrigger.backgroundColor,\n\t\t})\n\t}\n\n\twpm.getSearchTermFromUrl = () => {\n\n\t\ttry {\n\t\t\tlet urlParameters = new URLSearchParams(window.location.search)\n\t\t\treturn urlParameters.get(\"s\")\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// we need this to track timeouts for intersection observers\n\tlet ioTimeouts = {}\n\n\twpm.observerCallback = (entries, observer) => {\n\n\t\tentries.forEach((entry) => {\n\n\t\t\ttry {\n\t\t\t\tlet productId\n\n\t\t\t\tlet elementId = jQuery(entry.target).data(\"ioid\")\n\n\t\t\t\t// Get the productId from next element, if wpmProductId is a sibling, like in Gutenberg blocks\n\t\t\t\t// otherwise go search in children, like in regular WC loop items\n\t\t\t\tif (jQuery(entry.target).next(\".wpmProductId\").length) {\n\t\t\t\t\t// console.log('test 1');\n\t\t\t\t\tproductId = jQuery(entry.target).next(\".wpmProductId\").data(\"id\")\n\t\t\t\t} else {\n\t\t\t\t\tproductId = jQuery(entry.target).find(\".wpmProductId\").data(\"id\")\n\t\t\t\t}\n\n\n\t\t\t\tif (!productId) throw Error(\"wpmProductId element not found\")\n\n\t\t\t\tif (entry.isIntersecting) {\n\n\t\t\t\t\tioTimeouts[elementId] = setTimeout(() => {\n\n\t\t\t\t\t\twpm.triggerViewItemList(productId)\n\t\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.testMode) wpm.viewItemListTriggerTestMode(entry.target)\n\t\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.repeat === false) observer.unobserve(entry.target)\n\t\t\t\t\t}, wpmDataLayer.viewItemListTrigger.timeout)\n\n\t\t\t\t} else {\n\n\t\t\t\t\tclearTimeout(ioTimeouts[elementId])\n\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.testMode) jQuery(entry.target).find(\"#viewItemListTriggerOverlay\").remove()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e)\n\t\t\t}\n\t\t})\n\t}\n\n\t// fire view_item_list only on products that have become visible\n\tlet io\n\tlet ioid = 0\n\tlet allIoElementsToWatch\n\n\tlet getAllElementsToWatch = () => {\n\n\t\tallIoElementsToWatch = jQuery(\".wpmProductId\")\n\t\t\t.map(function (i, elem) {\n\n\t\t\t\tif (\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"type-product\") ||\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"product\") ||\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"product-item-inner\")\n\t\t\t\t) {\n\t\t\t\t\treturn jQuery(elem).parent()\n\t\t\t\t} else if (\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"wc-block-grid__product\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"product\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"product-small\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"woocommerce-LoopProduct-link\")\n\t\t\t\t) {\n\t\t\t\t\treturn jQuery(this).prev()\n\t\t\t\t} else if (jQuery(elem).closest(\".product\").length) {\n\t\t\t\t\treturn jQuery(elem).closest(\".product\")\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\twpm.startIntersectionObserverToWatch = () => {\n\n\t\ttry {\n\t\t\t// enable view_item_list test mode from browser\n\t\t\tif (wpm.urlHasParameter(\"vildemomode\")) wpmDataLayer.viewItemListTrigger.testMode = true\n\n\t\t\t// set up intersection observer\n\t\t\tio = new IntersectionObserver(wpm.observerCallback, {\n\t\t\t\tthreshold: wpmDataLayer.viewItemListTrigger.threshold,\n\t\t\t})\n\n\t\t\tgetAllElementsToWatch()\n\n\t\t\tallIoElementsToWatch.each((i, elem) => {\n\n\t\t\t\tjQuery(elem[0]).data(\"ioid\", ioid++)\n\n\t\t\t\tio.observe(elem[0])\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// watch DOM for new lazy loaded products and add them to the intersection observer\n\twpm.startProductsMutationObserverToWatch = () => {\n\n\t\ttry {\n\t\t\t// Pass in the target node, as well as the observer options\n\n\t\t\t// selects the most common parent node\n\t\t\t// https://stackoverflow.com/a/7648323/4688612\n\t\t\tlet productsNode = jQuery(\".wpmProductId:eq(0)\").parents().has(jQuery(\".wpmProductId:eq(1)\").parents()).first()\n\n\t\t\tif (productsNode.length) {\n\t\t\t\tproductsMutationObserver.observe(productsNode[0], {\n\t\t\t\t\tattributes : true,\n\t\t\t\t\tchildList : true,\n\t\t\t\t\tcharacterData: true,\n\t\t\t\t})\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// Create an observer instance\n\tlet productsMutationObserver = new MutationObserver(mutations => {\n\n\t\tmutations.forEach(mutation => {\n\t\t\tlet newNodes = mutation.addedNodes // DOM NodeList\n\t\t\tif (newNodes !== null) { // If there are new nodes added\n\t\t\t\tlet nodes = jQuery(newNodes) // jQuery set\n\t\t\t\tnodes.each(function () {\n\t\t\t\t\tif (\n\t\t\t\t\t\tjQuery(this).hasClass(\"type-product\") ||\n\t\t\t\t\t\tjQuery(this).hasClass(\"product-small\") ||\n\t\t\t\t\t\tjQuery(this).hasClass(\"wc-block-grid__product\")\n\t\t\t\t\t) {\n\t\t\t\t\t\t// check if the node has a child or sibling wpmProductId\n\t\t\t\t\t\t// if yes add it to the intersectionObserver\n\t\t\t\t\t\tif (hasWpmProductIdElement(this)) {\n\t\t\t\t\t\t\tjQuery(this).data(\"ioid\", ioid++)\n\t\t\t\t\t\t\tio.observe(this)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t})\n\n\tlet hasWpmProductIdElement = elem =>\n\t\t!!(jQuery(elem).find(\".wpmProductId\").length ||\n\t\tjQuery(elem).siblings(\".wpmProductId\").length)\n\n\twpm.setCookie = (cookieName, cookieValue = \"\", expiryDays = null) => {\n\n\t\tif (expiryDays) {\n\n\t\t\tlet d = new Date()\n\t\t\td.setTime(d.getTime() + (expiryDays * 24 * 60 * 60 * 1000))\n\t\t\tlet expires = \"expires=\" + d.toUTCString()\n\t\t\tdocument.cookie = cookieName + \"=\" + cookieValue + \";\" + expires + \";path=/\"\n\t\t} else {\n\t\t\tdocument.cookie = cookieName + \"=\" + cookieValue + \";path=/\"\n\t\t}\n\t}\n\n\twpm.getCookie = cookieName => {\n\n\t\tlet name = cookieName + \"=\"\n\t\tlet decodedCookie = decodeURIComponent(document.cookie)\n\t\tlet ca = decodedCookie.split(\";\")\n\n\t\tfor (let i = 0; i < ca.length; i++) {\n\n\t\t\tlet c = ca[i]\n\n\t\t\twhile (c.charAt(0) == \" \") {\n\t\t\t\tc = c.substring(1)\n\t\t\t}\n\n\t\t\tif (c.indexOf(name) == 0) {\n\t\t\t\treturn c.substring(name.length, c.length)\n\t\t\t}\n\t\t}\n\n\t\treturn \"\"\n\t}\n\n\twpm.getWpmSessionData = () => {\n\n\t\tif (window.sessionStorage) {\n\n\t\t\tlet data = window.sessionStorage.getItem(\"_wpm\")\n\n\t\t\tif (data !== null) {\n\t\t\t\treturn JSON.parse(data)\n\t\t\t} else {\n\t\t\t\treturn {}\n\t\t\t}\n\t\t} else {\n\t\t\treturn {}\n\t\t}\n\t}\n\n\twpm.setWpmSessionData = data => {\n\t\tif (window.sessionStorage) {\n\t\t\twindow.sessionStorage.setItem(\"_wpm\", JSON.stringify(data))\n\t\t}\n\t}\n\n\twpm.storeOrderIdOnServer = orderId => {\n\n\t\ttry {\n\t\t\t// save the state in the database\n\t\t\tlet data = {\n\t\t\t\taction : \"wpm_purchase_pixels_fired\",\n\t\t\t\torder_id: orderId,\n\t\t\t\t// nonce : ajax_object.nonce,\n\t\t\t\tnonce: wpm.nonce,\n\t\t\t}\n\n\t\t\tjQuery.ajax(\n\t\t\t\t{\n\t\t\t\t\ttype : \"post\",\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\t// url : ajax_object.ajax_url,\n\t\t\t\t\turl : wpm.ajax_url,\n\t\t\t\t\tdata : data,\n\t\t\t\t\tsuccess: function (response) {\n\t\t\t\t\t\tif (response.success === false) {\n\t\t\t\t\t\t\tconsole.log(response)\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\terror : function (response) {\n\t\t\t\t\t\tconsole.log(response)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.getProductIdByCartItemKeyUrl = url => {\n\n\t\tlet searchParams = new URLSearchParams(url.search)\n\t\tlet cartItemKey = searchParams.get(\"remove_item\")\n\n\t\tlet productId\n\n\t\tif (wpmDataLayer.cartItemKeys[cartItemKey][\"variation_id\"] === 0) {\n\t\t\tproductId = wpmDataLayer.cartItemKeys[cartItemKey][\"product_id\"]\n\t\t} else {\n\t\t\tproductId = wpmDataLayer.cartItemKeys[cartItemKey][\"variation_id\"]\n\t\t}\n\n\t\treturn productId\n\t}\n\n\twpm.getAddToCartLinkProductIds = () =>\n\t\tjQuery(\"a\").map(function () {\n\t\t\tlet href = jQuery(this).attr(\"href\")\n\n\t\t\tif (href && href.includes(\"?add-to-cart=\")) {\n\t\t\t\tlet matches = href.match(/(add-to-cart=)(\\d+)/)\n\t\t\t\tif (matches) return matches[2]\n\t\t\t}\n\t\t}).get()\n\n\twpm.getProductDetailsFormattedForEvent = (productId, quantity = 1) => {\n\n\t\tlet product = {\n\t\t\tid : productId.toString(),\n\t\t\tdyn_r_ids : wpmDataLayer.products[productId].dyn_r_ids,\n\t\t\tname : wpmDataLayer.products[productId].name,\n\t\t\tlist_name : wpmDataLayer.shop.list_name,\n\t\t\tbrand : wpmDataLayer.products[productId].brand,\n\t\t\tcategory : wpmDataLayer.products[productId].category,\n\t\t\tvariant : wpmDataLayer.products[productId].variant,\n\t\t\tlist_position: wpmDataLayer.products[productId].position,\n\t\t\tquantity : quantity,\n\t\t\tprice : wpmDataLayer.products[productId].price,\n\t\t\tcurrency : wpmDataLayer.shop.currency,\n\t\t\tisVariable : wpmDataLayer.products[productId].isVariable,\n\t\t\tisVariation : wpmDataLayer.products[productId].isVariation,\n\t\t\tparentId : wpmDataLayer.products[productId].parentId,\n\t\t}\n\n\t\tif (product.isVariation) product[\"parentId_dyn_r_ids\"] = wpmDataLayer.products[productId].parentId_dyn_r_ids\n\n\t\treturn product\n\t}\n\n\twpm.setReferrerToCookie = () => {\n\n\t\t// can't use session storage as we can't read it from the server\n\t\tif (!wpm.getCookie(\"wpmReferrer\")) {\n\t\t\twpm.setCookie(\"wpmReferrer\", document.referrer)\n\t\t}\n\t}\n\n\twpm.getReferrerFromCookie = () => {\n\n\t\tif (wpm.getCookie(\"wpmReferrer\")) {\n\t\t\treturn wpm.getCookie(\"wpmReferrer\")\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t}\n\n\twpm.getClidFromBrowser = (clidId = \"gclid\") => {\n\n\t\tlet clidCookieId\n\n\t\tclidCookieId = {\n\t\t\tgclid: \"_gcl_aw\",\n\t\t\tdclid: \"_gcl_dc\",\n\t\t}\n\n\t\tif (wpm.getCookie(clidCookieId[clidId])) {\n\n\t\t\tlet clidCookie = wpm.getCookie(clidCookieId[clidId])\n\t\t\tlet matches = clidCookie.match(/(GCL.[\\d]*.)(.*)/)\n\t\t\treturn matches[2]\n\t\t} else {\n\t\t\treturn \"\"\n\t\t}\n\t}\n\n\twpm.getUserAgent = () => navigator.userAgent\n\n\twpm.getViewPort = () => ({\n\t\twidth : Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0),\n\t\theight: Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0),\n\t})\n\n\n\twpm.version = () => {\n\t\tconsole.log(wpmDataLayer.version)\n\t}\n\n\t// https://api.jquery.com/jquery.getscript/\n\twpm.loadScriptAndCacheIt = (url, options) => {\n\n\t\t// Allow user to set any option except for dataType, cache, and url\n\t\toptions = jQuery.extend(options || {}, {\n\t\t\tdataType: \"script\",\n\t\t\tcache : true,\n\t\t\turl : url,\n\t\t})\n\n\t\t// Use $.ajax() since it is more flexible than $.getScript\n\t\t// Return the jqXHR object so we can chain callbacks\n\t\treturn jQuery.ajax(options)\n\t}\n\n\twpm.getOrderItemPrice = orderItem => (orderItem.total + orderItem.total_tax) / orderItem.quantity\n\n\twpm.hasLoginEventFired = () => {\n\t\tlet data = wpm.getWpmSessionData()\n\t\treturn data?.loginEventFired\n\t}\n\n\twpm.setLoginEventFired = () => {\n\t\tlet data = wpm.getWpmSessionData()\n\t\tdata[\"loginEventFired\"] = true\n\t\twpm.setWpmSessionData(data)\n\t}\n\n\twpm.wpmDataLayerExists = () => new Promise(resolve => {\n\t\t(function waitForVar() {\n\t\t\tif (typeof wpmDataLayer !== \"undefined\") return resolve()\n\t\t\tsetTimeout(waitForVar, 50)\n\t\t})()\n\t})\n\n\twpm.jQueryExists = () => new Promise(resolve => {\n\t\t(function waitForjQuery() {\n\t\t\tif (typeof jQuery !== \"undefined\") return resolve()\n\t\t\tsetTimeout(waitForjQuery, 100)\n\t\t})()\n\t})\n\n\twpm.pageLoaded = () => new Promise(resolve => {\n\t\t(function waitForVar() {\n\t\t\tif (\"complete\" === document.readyState) return resolve()\n\t\t\tsetTimeout(waitForVar, 50)\n\t\t})()\n\t})\n\n\twpm.pageReady = () => {\n\t\treturn new Promise(resolve => {\n\t\t\t(function waitForVar() {\n\t\t\t\tif (\"interactive\" === document.readyState || \"complete\" === document.readyState) return resolve()\n\t\t\t\tsetTimeout(waitForVar, 50)\n\t\t\t})()\n\t\t})\n\t}\n\n\twpm.isMiniCartActive = () => {\n\t\tif (window.sessionStorage) {\n\t\t\tfor (const [key, value] of Object.entries(window.sessionStorage)) {\n\t\t\t\tif (key.includes(\"wc_fragments\")) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.doesWooCommerceCartExist = () => document.cookie.includes(\"woocommerce_items_in_cart\")\n\n\twpm.urlHasParameter = parameter => {\n\t\tlet urlParams = new URLSearchParams(window.location.search)\n\t\treturn urlParams.has(parameter)\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load all WPM functions\n *\n * Ignore event listeners. They need to be loaded after\n * we made sure that jQuery has been loaded.\n */\n\nrequire(\"./functions\")\nrequire(\"./cookie_consent\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// #endif\n","/**\n * After WPM is loaded\n * we first check if wpmDataLayer is loaded,\n * and as soon as it is, we load the pixels,\n * and as soon as the page load is complete,\n * we fire the wpmLoad event.\n *\n * @param {{pro:bool}} wpmDataLayer.version\n *\n * https://stackoverflow.com/a/25868457/4688612\n * https://stackoverflow.com/a/44093516/4688612\n */\n\nwpm.wpmDataLayerExists()\n\t.then(function () {\n\t\tconsole.log(\"WooCommerce Pixel Manager: \" + (wpmDataLayer.version.pro ? \"Pro\" : \"Free\") +\" Version \" + wpmDataLayer.version.number + \" loaded\")\n\t\tjQuery(document).trigger(\"wpmPreLoadPixels\", {})\n\t})\n\t.then(function () {\n\t\twpm.pageLoaded().then(function () {\n\t\t\tjQuery(document).trigger(\"wpmLoad\", {})\n\t\t})\n\t})\n\n\n\n/**\n * Run when page is ready\n *\n */\n\nwpm.pageReady().then(function () {\n\n\t/**\n\t * Run as soon as wpm namespace is loaded\n\t */\n\n\twpm.wpmDataLayerExists()\n\t\t.then(function () {\n\t\t\t// watch for products visible in viewport\n\t\t\twpm.startIntersectionObserverToWatch()\n\n\t\t\t// watch for lazy loaded products\n\t\t\twpm.startProductsMutationObserverToWatch()\n\t\t})\n})\n\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/**\n * Load all essential scripts first\n */\n\nrequire(\"./wpm/functions_loader\")\n\n// Only load the event listeners after jQuery has been loaded for sure\nwpm.jQueryExists().then(function () {\n\n\trequire(\"./wpm/event_listeners\")\n\n\trequire(\"./google/loader\")\n\trequire(\"./facebook/loader\")\n\trequire(\"./hotjar/loader\")\n\n\t/**\n\t * Load all premium scripts\n\t */\n\n\t// #if process.env.TIER === 'premium'\n// \trequire(\"./microsoft-ads/loader\")\n// \trequire(\"./pinterest/loader\")\n// \trequire(\"./snapchat/loader\")\n// \trequire(\"./tiktok/loader\")\n// \trequire(\"./twitter/loader\")\n\t// #endif\n\n\n\t/**\n\t * Initiate WPM.\n\t *\n\t * It makes sure that the script flow gets executed correctly,\n\t * no matter how JS \"optimizers\" shuffle the code.\n\t */\n\n\trequire(\"./wpm/init\")\n})\n\n"],"names":["jQuery","document","on","wpmDataLayer","pixels","facebook","pixel_id","loaded","wpm","canIFire","loadFacebookPixel","event","product","eventId","getRandomEventId","fbq","content_type","content_name","name","content_ids","dyn_r_ids","dynamic_remarketing","id_type","value","parseFloat","quantity","price","currency","eventID","shop","trigger","event_name","event_id","user_data","getFbUserData","product_data","product_id","event_source_url","window","location","href","e","console","error","fbViewContent","setFbUserData","order","value_filtered","facebookContentIds","id","$","undefined","fBUserData","f","b","n","callMethod","apply","arguments","queue","push","_fbq","version","t","createElement","async","src","s","getElementsByTagName","parentNode","insertBefore","Math","random","toString","substring","getFbUserDataFromBrowser","fbp","getCookie","fbc","client_user_agent","navigator","userAgent","prodIds","key","item","Object","entries","items","general","variationsOutput","variation_id","String","products","trackCustomFacebookEvent","eventName","require","isEmptyObject","google","ads","conversionIds","status","googleConfigConditionsMet","isVariable","send_events_with_parent_ids","gtagLoaded","then","gtag","send_to","getGoogleAdsConversionIdentifiers","google_business_vertical","getGoogleAdsDynamicRemarketingOrderItems","data_basic","data_with_cart","getGoogleAdsConversionIdentifiersWithLabel","transaction_id","number","new_customer","aw_merchant_id","discount","aw_feed_country","aw_feed_language","getGoogleAdsRegularOrderItems","conversionIdentifiers","orderItems","orderItem","analytics","universal","property_id","mp_active","affiliation","value_regular","tax","shipping","coupon","getGAUAOrderItems","category","join","variant","variant_name","brand","ga3AddListNameToProduct","item_data","productPosition","list_name","list_position","ga4","measurement_id","getGA4OrderItems","item_name","item_category","item_id","item_variant","item_brand","state","canGoogleLoad","loadGoogle","logPreventedPixelLoading","type","consent_mode","active","getConsentValues","mode","categories","includes","getVisitorConsentStatusAndUpdateGoogleConsentSettings","google_consent_settings","analytics_storage","ad_storage","updateGoogleConsentMode","cookie_consent_mgmt","explicit_consent","fireGtagGoogleAds","enhanced_conversions","phone_conversion_label","phone_conversion_number","keys","page_type","enhanced_conversion_data","fireGtagGoogleAnalyticsUA","parameters","fireGtagGoogleAnalyticsGA4","isGoogleActive","getGoogleGtagId","loadScriptAndCacheIt","done","script","textStatus","dataLayer","wait_for_update","region","ads_data_redaction","url_passthrough","linker","settings","Date","Promise","resolve","reject","startTime","wait","setTimeout","optimize","container_id","load_google_optimize_pixel","hotjar","site_id","load_hotjar_pixel","h","o","hj","q","_hjSettings","hjid","hjsv","a","r","appendChild","getComplianzCookies","cmplz_statistics","cmplz_marketing","visitorHasChosen","getCookieLawInfoCookies","analyticsCookie","adsCookie","wpmConsentValues","setConsentValueCategories","updateConsentCookieValues","cookie","explicitConsent","decodeURI","indexOf","JSON","parse","action","length","consents","statistics","marketing","thirdparty","advanced","setConsentDefaultValuesToExplicit","pixelName","canIFireMode","log","scriptTagObserver","MutationObserver","mutations","forEach","addedNodes","node","data","shouldScriptBeActive","unblockScript","blockScript","observe","head","childList","subtree","disconnect","split","some","element","scriptNode","removeAttach","remove","wpmSrc","attr","appendTo","removeAttr","unblockAllScripts","unblockSelectedPixels","Cookiebot","consent","detail","cmplzStatusChange","cmplzConsentData","huObserver","hu","documentElement","body","explicitConsentStateAlreadySet","url","URL","this","productId","getProductIdByCartItemKeyUrl","removeProductFromCart","addProductToCart","product_type","Number","val","each","find","classes","getPostIdFromString","one","target","closest","matches","match","nextAll","getIdBasedOndVariationsOutputSetting","Error","getProductDetailsFormattedForEvent","isEmail","fireCheckoutProgress","emailSelected","paymentMethodSelected","fireCheckoutOption","cart","getCartItemsFromBackend","variation","microdata_product_id","doesWooCommerceCartExist","getCartItems","productIds","getAddToCartLinkProductIds","getProductsFromBackend","referrer","referrerHostname","hostname","host","setCookie","wpmLoadFired","getMainProductIdFromProductPage","getProductDataForViewItemEvent","isOrderIdStored","writeOrderIdToStorage","user","hasLoginEventFired","setLoginEventFired","wpmDeduper","wpmRestSettings","checkCookie","useRestEndpoint","isSessionStorageAvailable","isRestEndpointAvailable","isBelowRestErrorThreshold","sessionStorage","getItem","testEndpoint","protocol","cookieName","ajax","timeout","statusCode","response","setItem","stringify","isWpmRestEndpointAvailable","orderId","Storage","localStorage","ids","expiresDate","setDate","getDate","toUTCString","storeOrderIdOnServer","orderDeduplication","email","test","quantityToRemove","isVariation","parentId","saveCartObjectToDataLayer","dataType","ajax_url","success","cartItems","filter","hasOwnProperty","assign","cartObject","step","checkout_option","string","triggerViewItemList","viewItemListTriggerTestMode","css","append","viewItemListTrigger","opacity","backgroundColor","getSearchTermFromUrl","URLSearchParams","search","get","io","ioTimeouts","observerCallback","observer","entry","elementId","next","isIntersecting","testMode","repeat","unobserve","clearTimeout","allIoElementsToWatch","ioid","getAllElementsToWatch","map","i","elem","parent","hasClass","prev","startIntersectionObserverToWatch","urlHasParameter","IntersectionObserver","threshold","startProductsMutationObserverToWatch","productsNode","parents","has","first","productsMutationObserver","attributes","characterData","mutation","newNodes","hasWpmProductIdElement","siblings","cookieValue","expiryDays","d","setTime","getTime","expires","ca","decodeURIComponent","c","charAt","getWpmSessionData","setWpmSessionData","order_id","nonce","cartItemKey","cartItemKeys","position","parentId_dyn_r_ids","setReferrerToCookie","getReferrerFromCookie","getClidFromBrowser","clidCookieId","clidId","gclid","dclid","getUserAgent","getViewPort","width","max","clientWidth","innerWidth","height","clientHeight","innerHeight","options","extend","cache","getOrderItemPrice","total","total_tax","loginEventFired","wpmDataLayerExists","waitForVar","jQueryExists","waitForjQuery","pageLoaded","readyState","pageReady","isMiniCartActive","parameter","pro","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__"],"sourceRoot":""}
|
1 |
+
{"version":3,"file":"wpm-public.p1.min.js","mappings":"sBAOAA,OAAOC,UAAUC,GAAG,iBAAiB,WAAY,gBAEhC,QAAZ,EAAAC,oBAAA,mBAAcC,cAAd,mBAAsBC,gBAAtB,UAAgCC,UAAY,UAACH,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsBC,gBAAvB,OAAC,EAAgCE,QAC5EC,IAAIC,SAAS,MAAO,iBAAiBD,IAAIE,uBAM/CV,OAAOC,UAAUC,GAAG,gBAAgB,SAAUS,EAAOC,GAEpD,IAAI,UACH,GAAI,UAACT,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsBC,gBAAvB,QAAC,EAAgCE,OAAQ,OAE7C,IAAIM,EAAUL,IAAIM,mBAElBC,IAAI,QAAS,YAAa,CACzBC,aAAc,UACdC,aAAcL,EAAQM,KACtBC,YAAcP,EAAQQ,UAAUjB,aAAaC,OAAOC,SAASgB,oBAAoBC,SACjFC,MAAcC,WAAWZ,EAAQa,SAAWb,EAAQc,OACpDC,SAAcf,EAAQe,UACpB,CACFC,QAASf,IAGVD,EAAO,SAAeT,aAAa0B,KAAKF,SAExC3B,OAAOC,UAAU6B,QAAQ,iBAAkB,CAC1CC,WAAkB,YAClBC,SAAkBnB,EAClBoB,UAAkBzB,IAAI0B,gBACtBC,aAAkBvB,EAClBwB,WAAkBxB,EAAQQ,UAAUjB,aAAaC,OAAOC,SAASgB,oBAAoBC,SACrFe,iBAAkBC,OAAOC,SAASC,OAElC,MAAOC,GACRC,QAAQC,MAAMF,OAMhBzC,OAAOC,UAAUC,GAAG,oBAAoB,SAAUS,GAEjD,IAAI,UAEH,GAAI,UAACR,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsBC,gBAAvB,QAAC,EAAgCE,OAAQ,OAE7C,IAAIM,EAAUL,IAAIM,mBAElBC,IAAI,QAAS,mBAAoB,GAAI,CACpCa,QAASf,IAGVb,OAAOC,UAAU6B,QAAQ,iBAAkB,CAC1CC,WAAkB,mBAClBC,SAAkBnB,EAClBoB,UAAkBzB,IAAI0B,gBACtBG,iBAAkBC,OAAOC,SAASC,OAElC,MAAOC,GACRC,QAAQC,MAAMF,OAMhBzC,OAAOC,UAAUC,GAAG,oBAAoB,SAAUS,EAAOC,GAExD,IAAI,UAEH,GAAI,UAACT,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsBC,gBAAvB,QAAC,EAAgCE,OAAQ,OAE7C,IAAIM,EAAUL,IAAIM,mBAElBC,IAAI,QAAS,gBAAiB,CAC7BC,aAAc,UACdC,aAAcL,EAAQM,KACtBC,YAAcP,EAAQQ,UAAUjB,aAAaC,OAAOC,SAASgB,oBAAoBC,SACjFC,MAAcC,WAAWZ,EAAQa,SAAWb,EAAQc,OACpDC,SAAcf,EAAQe,UACpB,CACFC,QAASf,IAGVD,EAAO,SAAeT,aAAa0B,KAAKF,SAExC3B,OAAOC,UAAU6B,QAAQ,iBAAkB,CAC1CC,WAAkB,gBAClBC,SAAkBnB,EAClBoB,UAAkBzB,IAAI0B,gBACtBC,aAAkBvB,EAClBwB,WAAkBxB,EAAQQ,UAAUjB,aAAaC,OAAOC,SAASgB,oBAAoBC,SACrFe,iBAAkBC,OAAOC,SAASC,OAElC,MAAOC,GACRC,QAAQC,MAAMF,OAMhBzC,OAAOC,UAAUC,GAAG,eAAe,SAAUS,EAAOC,GAEnD,IAAI,UAEH,GAAI,UAACT,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsBC,gBAAvB,QAAC,EAAgCE,OAAQ,OAE7CC,IAAIoC,cAAchC,GACjB,MAAO6B,GACRC,QAAQC,MAAMF,OAMhBzC,OAAOC,UAAUC,GAAG,aAAa,WAEhC,IAAI,UACH,GAAI,UAACC,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsBC,gBAAvB,QAAC,EAAgCE,OAAQ,OAE7C,IAAIM,EAAUL,IAAIM,mBAElBC,IAAI,QAAS,SAAU,GAAI,CAC1Ba,QAASf,IAGVb,OAAOC,UAAU6B,QAAQ,iBAAkB,CAC1CC,WAAkB,SAClBC,SAAkBnB,EAClBoB,UAAkBzB,IAAI0B,gBACtBG,iBAAkBC,OAAOC,SAASC,OAElC,MAAOC,GACRC,QAAQC,MAAMF,OAKhBzC,OAAOC,UAAUC,GAAG,iBAAiB,WAEpC,IAAI,UACH,GAAI,UAACC,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsBC,gBAAvB,QAAC,EAAgCE,OAAQ,OAE7CC,IAAIqC,gBACH,MAAOJ,GACRC,QAAQC,MAAMF,OAMhBzC,OAAOC,UAAUC,GAAG,wBAAwB,WAE3C,IAAI,UAEH,GAAI,UAACC,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsBC,gBAAvB,QAAC,EAAgCE,OAAQ,OAE7CQ,IAAI,QAAS,WACZ,CACCC,aAAc,UACdO,MAAcpB,aAAa2C,MAAMC,eACjCpB,SAAcxB,aAAa2C,MAAMnB,SACjCR,YAAcX,IAAIwC,sBAEnB,CAACpB,QAASzB,aAAa2C,MAAMG,KAG7B,MAAOR,GACRC,QAAQC,MAAMF,Q,QC7Kf,SAAUjC,EAAK0C,EAAGC,GAElB,IAAIC,EAEJ5C,EAAIE,kBAAoB,KAEvB,IACCP,aAAaC,OAAOC,SAASE,QAAS,EAG5B8C,EAMuBf,OANrBgB,EAM6BrD,SAN3BwC,EAMoC,SAL9CY,EAAEtC,MAAWwC,EAAEF,EAAEtC,IAAI,WAAWwC,EAAEC,WACrCD,EAAEC,WAAWC,MAAMF,EAAEG,WAAWH,EAAEI,MAAMC,KAAKF,YACzCL,EAAEQ,OAAKR,EAAEQ,KAAKN,GAAEA,EAAEK,KAAKL,EAAEA,EAAEhD,QAAO,EAAGgD,EAAEO,QAAQ,MACnDP,EAAEI,MAAM,IAAGI,EAAET,EAAEU,cAAcvB,IAAKwB,OAAM,EACxCF,EAAEG,IAEF,kDAFQC,EAAEb,EAAEc,qBAAqB3B,GAAG,IAClC4B,WAAWC,aAAaP,EAAEI,IAI7BpD,IAAI,OAAQZ,aAAaC,OAAOC,SAASC,UACzCS,IAAI,QAAS,YAEZ,MAAO0B,GACRC,QAAQC,MAAMF,GAdb,IAASY,EAAEC,EAAEb,EAAIc,EAAEQ,EAAEI,GAkBxB3D,EAAIM,iBAAmB,KAAOyD,KAAKC,SAAW,GAAGC,SAAS,IAAIC,UAAU,GAExElE,EAAI0B,cAAgB,IAafkB,GAGI5C,EAAImE,2BAIbnE,EAAIqC,cAAgB,KACnBO,EAAa5C,EAAImE,4BAGlBnE,EAAImE,yBAA2B,KAAM,QAEpC,IACCC,EAAO,GAkBR,OAhBIpE,EAAIqE,UAAU,UACjBD,EAAKE,IAAMtE,EAAIqE,UAAU,SAGtBrE,EAAIqE,UAAU,UACjBD,EAAKE,IAAMtE,EAAIqE,UAAU,SAG1B,UAAG1E,oBAAH,iBAAG,EAAc4E,YAAjB,OAAG,EAAoB9B,KACtB2B,EAAKI,YAAc7E,aAAa4E,KAAK9B,IAGlCgC,UAAUC,YACbN,EAAKO,kBAAoBF,UAAUC,WAG7BN,GAGRpE,EAAIoC,cAAgBhC,IAEnB,IAAI,UACH,GAAI,UAACT,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsBC,gBAAvB,QAAC,EAAgCE,OAAQ,OAE7C,IAAIM,EAAUL,EAAIM,mBAElBC,IAAI,QAAS,cAAe,CAC3BC,aAAc,UACdC,aAAcL,EAAQM,KAEtBC,YAAaP,EAAQQ,UAAUjB,aAAaC,OAAOC,SAASgB,oBAAoBC,SAChFK,SAAaxB,aAAa0B,KAAKF,SAC/BJ,MAAaX,EAAQc,OACnB,CACFE,QAASf,IAGVD,EAAO,SAAeT,aAAa0B,KAAKF,SAExC3B,OAAOC,UAAU6B,QAAQ,iBAAkB,CAC1CC,WAAkB,cAClBC,SAAkBnB,EAClBoB,UAAkBzB,EAAI0B,gBACtBC,aAAkBvB,EAClBwB,WAAkBxB,EAAQQ,UAAUjB,aAAaC,OAAOC,SAASgB,oBAAoBC,SACrFe,iBAAkBC,OAAOC,SAASC,OAElC,MAAOC,GACRC,QAAQC,MAAMF,KAIhBjC,EAAIwC,mBAAqB,KACxB,IAAIoC,EAAU,GAEd,IAAK,MAAOC,EAAKC,KAASC,OAAOC,QAAQrF,aAAa2C,MAAM2C,OAAQ,SAEnD,QAAZ,EAAAtF,oBAAA,mBAAcuF,eAAd,SAAuBC,kBAAoB,IAAML,EAAKM,aACzDR,EAAQxB,KAAKiC,OAAO1F,aAAa2F,SAASR,EAAKM,cAAcxE,UAAUjB,aAAaC,OAAOC,SAASgB,oBAAoBC,WAExH8D,EAAQxB,KAAKiC,OAAO1F,aAAa2F,SAASR,EAAKrC,IAAI7B,UAAUjB,aAAaC,OAAOC,SAASgB,oBAAoBC,WAIhH,OAAO8D,GAGR5E,EAAIuF,yBAA4BC,IAC/B,IAAI,UACH,GAAI,UAAC7F,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsBC,gBAAvB,QAAC,EAAgCE,OAAQ,OAE7C,IAAIM,EAAUL,EAAIM,mBAElBC,IAAI,cAAeiF,EAAW,GAAI,CACjCpE,QAASf,IAGVb,OAAOC,UAAU6B,QAAQ,iBAAkB,CAC1CC,WAAkBiE,EAClBhE,SAAkBnB,EAClBoB,UAAkBzB,EAAI0B,gBACtBG,iBAAkBC,OAAOC,SAASC,OAElC,MAAOC,GACRC,QAAQC,MAAMF,KA/IhB,CAmJCH,OAAO9B,IAAM8B,OAAO9B,KAAO,GAAIR,S,aCnJjCiG,EAAQ,GACRA,EAAQ,M,SCARjG,OAAOC,UAAUC,GAAG,mBAAmB,SAAUS,EAAOC,GAEvD,IAAI,0BACH,GAAGZ,OAAOkG,cAAP,UAAqB/F,oBAArB,iBAAqB,EAAcC,cAAnC,iBAAqB,EAAsB+F,cAA3C,iBAAqB,EAA8BC,WAAnD,aAAqB,EAAmCC,eAAgB,OAC3E,GAAI,UAAClG,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsB+F,cAAvB,iBAAC,EAA8BC,WAA/B,iBAAC,EAAmC/E,2BAApC,QAAC,EAAwDiF,OAAQ,OACrE,IAAK9F,IAAI+F,0BAA0B,OAAQ,OAG3C,GACa,QAAZ,EAAApG,oBAAA,mBAAcuF,eAAd,SAAuBC,kBACvB/E,EAAQ4F,aAC2E,IAAnFrG,aAAaC,OAAO+F,OAAOC,IAAI/E,oBAAoBoF,4BAClD,OAGF,IAAK7F,EAAS,OAEdJ,IAAIkG,aAAaC,MAAK,WACrBC,KAAK,QAAS,iBAAkB,CAC/BC,QAASrG,IAAIsG,oCACbrB,MAAS,CAAC,CACTxC,GAA0BrC,EAAQQ,UAAUjB,aAAaC,OAAO+F,OAAOC,IAAI/E,oBAAoBC,SAC/FyF,yBAA0B5G,aAAaC,OAAO+F,OAAOC,IAAIW,gCAI3D,MAAOtE,GACRC,QAAQC,MAAMF,OAKhBzC,OAAOC,UAAUC,GAAG,gBAAgB,SAAUS,EAAOC,GAEpD,IAAI,sBACH,GAAGZ,OAAOkG,cAAP,UAAqB/F,oBAArB,iBAAqB,EAAcC,cAAnC,iBAAqB,EAAsB+F,cAA3C,iBAAqB,EAA8BC,WAAnD,aAAqB,EAAmCC,eAAgB,OAC3E,GAAI,UAAClG,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsB+F,cAAvB,iBAAC,EAA8BC,WAA/B,iBAAC,EAAmC/E,2BAApC,QAAC,EAAwDiF,OAAQ,OACrE,IAAK9F,IAAI+F,0BAA0B,OAAQ,OAE3C/F,IAAIkG,aAAaC,MAAK,WACrBC,KAAK,QAAS,cAAe,CAC5BC,QAASrG,IAAIsG,oCACbvF,MAASX,EAAQa,SAAWb,EAAQc,MACpC+D,MAAS,CAAC,CACTxC,GAA0BrC,EAAQQ,UAAUjB,aAAaC,OAAO+F,OAAOC,IAAI/E,oBAAoBC,SAC/FG,SAA0Bb,EAAQa,SAClCC,MAA0Bd,EAAQc,MAClCqF,yBAA0B5G,aAAaC,OAAO+F,OAAOC,IAAIW,gCAI3D,MAAOtE,GACRC,QAAQC,MAAMF,OAKhBzC,OAAOC,UAAUC,GAAG,eAAe,SAAUS,EAAOC,GAEnD,IAAI,sBACH,GAAGZ,OAAOkG,cAAP,UAAqB/F,oBAArB,iBAAqB,EAAcC,cAAnC,iBAAqB,EAAsB+F,cAA3C,iBAAqB,EAA8BC,WAAnD,aAAqB,EAAmCC,eAAgB,OAC3E,GAAI,UAAClG,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsB+F,cAAvB,iBAAC,EAA8BC,WAA/B,iBAAC,EAAmC/E,2BAApC,QAAC,EAAwDiF,OAAQ,OACrE,IAAK9F,IAAI+F,0BAA0B,OAAQ,OAG3C/F,IAAIkG,aAAaC,MAAK,WACrBC,KAAK,QAAS,YAAa,CAC1BC,QAASrG,IAAIsG,oCACbvF,OAAUX,EAAQa,SAAWb,EAAQa,SAAW,GAAKb,EAAQc,MAC7D+D,MAAS,CAAC,CACTxC,GAA0BrC,EAAQQ,UAAUjB,aAAaC,OAAO+F,OAAOC,IAAI/E,oBAAoBC,SAC/FG,SAA2Bb,EAAQa,SAAWb,EAAQa,SAAW,EACjEC,MAA0Bd,EAAQc,MAClCqF,yBAA0B5G,aAAaC,OAAO+F,OAAOC,IAAIW,gCAI3D,MAAOtE,GACRC,QAAQC,MAAMF,OAMhBzC,OAAOC,UAAUC,GAAG,aAAa,WAEhC,IAAI,sBACH,GAAGF,OAAOkG,cAAP,UAAqB/F,oBAArB,iBAAqB,EAAcC,cAAnC,iBAAqB,EAAsB+F,cAA3C,iBAAqB,EAA8BC,WAAnD,aAAqB,EAAmCC,eAAgB,OAC3E,GAAI,UAAClG,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsB+F,cAAvB,iBAAC,EAA8BC,WAA/B,iBAAC,EAAmC/E,2BAApC,QAAC,EAAwDiF,OAAQ,OACrE,IAAK9F,IAAI+F,0BAA0B,OAAQ,OAG3C,IAAIT,EAAW,GAEf,IAAK,MAAOT,EAAKzE,KAAY2E,OAAOC,QAAQrF,aAAa2F,UAAW,SAEnE,GACa,QAAZ,EAAA3F,oBAAA,mBAAcuF,eAAd,SAAuBC,kBACvB/E,EAAQ4F,aAC2E,IAAnFrG,aAAaC,OAAO+F,OAAOC,IAAI/E,oBAAoBoF,4BAClD,OAEFX,EAASlC,KAAK,CACbX,GAA0BrC,EAAQQ,UAAUjB,aAAaC,OAAO+F,OAAOC,IAAI/E,oBAAoBC,SAC/FyF,yBAA0B5G,aAAaC,OAAO+F,OAAOC,IAAIW,2BAM3DvG,IAAIkG,aAAaC,MAAK,WACrBC,KAAK,QAAS,sBAAuB,CACpCC,QAASrG,IAAIsG,oCAEbrB,MAAOK,OAGR,MAAOrD,GACRC,QAAQC,MAAMF,OAOhBzC,OAAOC,UAAUC,GAAG,wBAAwB,WAE3C,IAAI,sBACH,GAAGF,OAAOkG,cAAP,UAAqB/F,oBAArB,iBAAqB,EAAcC,cAAnC,iBAAqB,EAAsB+F,cAA3C,iBAAqB,EAA8BC,WAAnD,aAAqB,EAAmCC,eAAgB,OAC3E,GAAI,UAAClG,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsB+F,cAAvB,iBAAC,EAA8BC,WAA/B,iBAAC,EAAmC/E,2BAApC,QAAC,EAAwDiF,OAAQ,OACrE,IAAK9F,IAAI+F,0BAA0B,OAAQ,OAE3C/F,IAAIkG,aAAaC,MAAK,WACrBC,KAAK,QAAS,WAAY,CACzBC,QAASrG,IAAIsG,oCACbvF,MAASpB,aAAa2C,MAAMC,eAC5B0C,MAASjF,IAAIwG,gDAKd,MAAOvE,GACRC,QAAQC,MAAMF,OAKhBzC,OAAOC,UAAUC,GAAG,YAAY,WAE/B,IAAI,sBACH,GAAGF,OAAOkG,cAAP,UAAqB/F,oBAArB,iBAAqB,EAAcC,cAAnC,iBAAqB,EAAsB+F,cAA3C,iBAAqB,EAA8BC,WAAnD,aAAqB,EAAmCC,eAAgB,OAC3E,GAAI,UAAClG,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsB+F,cAAvB,iBAAC,EAA8BC,WAA/B,iBAAC,EAAmC/E,2BAApC,QAAC,EAAwDiF,OAAQ,OACrE,IAAK9F,IAAI+F,0BAA0B,OAAQ,OAG3C/F,IAAIkG,aAAaC,MAAK,WACrBC,KAAK,QAAS,QAAS,CACtBC,QAASrG,IAAIsG,yCAGd,MAAOrE,GACRC,QAAQC,MAAMF,OAMhBzC,OAAOC,UAAUC,GAAG,wBAAwB,WAE3C,IAAI,gBACH,GAAGF,OAAOkG,cAAP,UAAqB/F,oBAArB,iBAAqB,EAAcC,cAAnC,iBAAqB,EAAsB+F,cAA3C,iBAAqB,EAA8BC,WAAnD,aAAqB,EAAmCC,eAAgB,OAC3E,IAAK7F,IAAI+F,0BAA0B,OAAQ,OAE3C,IAAIU,EAAiB,GACjBC,EAAiB,GAErBD,EAAa,CACZJ,QAAgBrG,IAAI2G,6CACpBC,eAAgBjH,aAAa2C,MAAMuE,OACnC9F,MAAgBpB,aAAa2C,MAAMC,eACnCpB,SAAgBxB,aAAa2C,MAAMnB,SACnC2F,aAAgBnH,aAAa2C,MAAMwE,cAGpC,UAAInH,oBAAJ,iBAAI,EAAc2C,aAAlB,OAAI,EAAqByE,iBACxBL,EAAiB,CAChBM,SAAkBrH,aAAa2C,MAAM0E,SACrCD,eAAkBpH,aAAa2C,MAAMyE,eACrCE,gBAAkBtH,aAAa2C,MAAM2E,gBACrCC,iBAAkBvH,aAAa2C,MAAM4E,iBACrCjC,MAAkBjF,IAAImH,kCAIxBnH,IAAIkG,aAAaC,MAAK,WACrBC,KAAK,QAAS,aAAc,IAAIK,KAAeC,OAI/C,MAAOzE,GACRC,QAAQC,MAAMF,Q,SCzMf,SAAUjC,EAAK0C,EAAGC,GAElB,IAAIyE,EAAwB,GAE5BpH,EAAI2G,2CAA6C,WAEhD,IAAK,MAAO9B,EAAKC,KAASC,OAAOC,QAAQrF,aAAaC,OAAO+F,OAAOC,IAAIC,eACvEuB,EAAsBhE,KAAKyB,EAAM,IAAMC,GAExC,OAAOsC,GAGRpH,EAAIsG,kCAAoC,WAEvC,IAAIc,EAAwB,GAC5B,IAAK,MAAOvC,EAAKC,KAASC,OAAOC,QAAQrF,aAAaC,OAAO+F,OAAOC,IAAIC,eACvEuB,EAAsBhE,KAAKyB,GAG5B,OAAOuC,GAGRpH,EAAImH,8BAAgC,WAEnC,IAAIE,EAAa,GAEjB,IAAK,MAAOxC,EAAKC,KAASC,OAAOC,QAAQrF,aAAa2C,MAAM2C,OAAQ,SAEnE,IAAIqC,EAEJA,EAAY,CACXrG,SAAU6D,EAAK7D,SACfC,MAAU4D,EAAK5D,OAGA,QAAZ,EAAAvB,oBAAA,mBAAcuF,eAAd,SAAuBC,kBAAoB,IAAML,EAAKM,cAEzDkC,EAAU7E,GAAK4C,OAAO1F,aAAa2F,SAASR,EAAKM,cAAcxE,UAAUjB,aAAaC,OAAO+F,OAAOC,IAAI/E,oBAAoBC,UAC5HuG,EAAWjE,KAAKkE,KAGhBA,EAAU7E,GAAK4C,OAAO1F,aAAa2F,SAASR,EAAKrC,IAAI7B,UAAUjB,aAAaC,OAAO+F,OAAOC,IAAI/E,oBAAoBC,UAClHuG,EAAWjE,KAAKkE,IAIlB,OAAOD,GAGRrH,EAAIwG,yCAA2C,WAE9C,IAAIa,EAAa,GAEjB,IAAK,MAAOxC,EAAKC,KAASC,OAAOC,QAAQrF,aAAa2C,MAAM2C,OAAQ,SAEnE,IAAIqC,EAEJA,EAAY,CACXrG,SAA0B6D,EAAK7D,SAC/BC,MAA0B4D,EAAK5D,MAC/BqF,yBAA0B5G,aAAaC,OAAO+F,OAAOC,IAAIW,0BAG1C,QAAZ,EAAA5G,oBAAA,mBAAcuF,eAAd,SAAuBC,kBAAoB,IAAML,EAAKM,cAEzDkC,EAAU7E,GAAK4C,OAAO1F,aAAa2F,SAASR,EAAKM,cAAcxE,UAAUjB,aAAaC,OAAO+F,OAAOC,IAAI/E,oBAAoBC,UAC5HuG,EAAWjE,KAAKkE,KAGhBA,EAAU7E,GAAK4C,OAAO1F,aAAa2F,SAASR,EAAKrC,IAAI7B,UAAUjB,aAAaC,OAAO+F,OAAOC,IAAI/E,oBAAoBC,UAClHuG,EAAWjE,KAAKkE,IAIlB,OAAOD,GA1ER,CA6ECvF,OAAO9B,IAAM8B,OAAO9B,KAAO,GAAIR,S,cC5EjCiG,EAAQ,IACRA,EAAQ,M,SCARjG,OAAOC,UAAUC,GAAG,wBAAwB,WAE3C,IAAI,wBACH,GAAI,UAACC,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsB+F,cAAvB,iBAAC,EAA8B4B,iBAA/B,iBAAC,EAAyCC,iBAA1C,QAAC,EAAoDC,YAAa,OACtE,aAAI9H,oBAAJ,iBAAI,EAAcC,cAAlB,iBAAI,EAAsB+F,cAA1B,iBAAI,EAA8B4B,iBAAlC,iBAAI,EAAyCC,iBAA7C,OAAI,EAAoDE,UAAW,OACnE,IAAK1H,IAAI+F,0BAA0B,aAAc,OAEjD/F,IAAIkG,aAAaC,MAAK,WACrBC,KAAK,QAAS,WAAY,CACzBC,QAAgB,CAAC1G,aAAaC,OAAO+F,OAAO4B,UAAUC,UAAUC,aAChEb,eAAgBjH,aAAa2C,MAAMuE,OACnCc,YAAgBhI,aAAa2C,MAAMqF,YACnCxG,SAAgBxB,aAAa2C,MAAMnB,SACnCJ,MAAgBpB,aAAa2C,MAAMsF,cACnCZ,SAAgBrH,aAAa2C,MAAM0E,SACnCa,IAAgBlI,aAAa2C,MAAMuF,IACnCC,SAAgBnI,aAAa2C,MAAMwF,SACnCC,OAAgBpI,aAAa2C,MAAMyF,OACnC9C,MAAgBjF,IAAIgI,yBAIrB,MAAO/F,GACRC,QAAQC,MAAMF,Q,SCzBf,SAAUjC,EAAK0C,EAAGC,GAElB3C,EAAIgI,kBAAoB,WAYvB,IAAIX,EAAa,GAEjB,IAAK,MAAOxC,EAAKC,KAASC,OAAOC,QAAQrF,aAAa2C,MAAM2C,OAAQ,SAEnE,IAAIqC,EAEJA,EAAY,CACXrG,SAAU6D,EAAK7D,SACfC,MAAU4D,EAAK5D,MACfR,KAAUoE,EAAKpE,KACfS,SAAUxB,aAAa2C,MAAMnB,SAC7B8G,SAAUtI,aAAa2F,SAASR,EAAKrC,IAAIwF,SAASC,KAAK,MAGxC,QAAZ,EAAAvI,oBAAA,mBAAcuF,eAAd,SAAuBC,kBAAoB,IAAML,EAAKM,cAEzDkC,EAAU7E,GAAU4C,OAAO1F,aAAa2F,SAASR,EAAKM,cAAcxE,UAAUjB,aAAaC,OAAO+F,OAAO4B,UAAUzG,UACnHwG,EAAUa,QAAUxI,aAAa2F,SAASR,EAAKM,cAAcgD,aAC7Dd,EAAUe,MAAU1I,aAAa2F,SAASR,EAAKM,cAAciD,QAG7Df,EAAU7E,GAAQ4C,OAAO1F,aAAa2F,SAASR,EAAKrC,IAAI7B,UAAUjB,aAAaC,OAAO+F,OAAO4B,UAAUzG,UACvGwG,EAAUe,MAAQ1I,aAAa2F,SAASR,EAAKrC,IAAI4F,OAGlDf,EAAYtH,EAAIsI,wBAAwBhB,GAExCD,EAAWjE,KAAKkE,GAGjB,OAAOD,GAGRrH,EAAIsI,wBAA0B,SAAUC,GAAmC,IAAxBC,EAAwB,kDAAN,KAgBpE,OANAD,EAAUE,UAAY9I,aAAa0B,KAAKoH,UAEpCD,IACHD,EAAUG,cAAgBF,GAGpBD,GA/DR,CAkECzG,OAAO9B,IAAM8B,OAAO9B,KAAO,GAAIR,S,cClEjCiG,EAAQ,IACRA,EAAQ,M,SCCRjG,OAAOC,UAAUC,GAAG,wBAAwB,WAE3C,IAAI,wBACH,GAAI,UAACC,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsB+F,cAAvB,iBAAC,EAA8B4B,iBAA/B,iBAAC,EAAyCoB,WAA1C,QAAC,EAA8CC,eAAgB,OACnE,aAAIjJ,oBAAJ,iBAAI,EAAcC,cAAlB,iBAAI,EAAsB+F,cAA1B,iBAAI,EAA8B4B,iBAAlC,iBAAI,EAAyCoB,WAA7C,OAAI,EAA8CjB,UAAW,OAC7D,IAAK1H,IAAI+F,0BAA0B,aAAc,OAEjD/F,IAAIkG,aAAaC,MAAK,WACrBC,KAAK,QAAS,WAAY,CACzBC,QAAgB,CAAC1G,aAAaC,OAAO+F,OAAO4B,UAAUoB,IAAIC,gBAC1DhC,eAAgBjH,aAAa2C,MAAMuE,OACnCc,YAAgBhI,aAAa2C,MAAMqF,YACnCxG,SAAgBxB,aAAa2C,MAAMnB,SACnCJ,MAAgBpB,aAAa2C,MAAMsF,cACnCZ,SAAgBrH,aAAa2C,MAAM0E,SACnCa,IAAgBlI,aAAa2C,MAAMuF,IACnCC,SAAgBnI,aAAa2C,MAAMwF,SACnCC,OAAgBpI,aAAa2C,MAAMyF,OACnC9C,MAAgBjF,IAAI6I,wBAGrB,MAAO5G,GACRC,QAAQC,MAAMF,Q,UCxBf,SAAUjC,EAAK0C,EAAGC,GAElB3C,EAAI6I,iBAAmB,WAYtB,IAAIxB,EAAa,GAEjB,IAAK,MAAOxC,EAAKC,KAASC,OAAOC,QAAQrF,aAAa2C,MAAM2C,OAAQ,SAEnE,IAAIqC,EAEJA,EAAY,CACXrG,SAAe6D,EAAK7D,SACpBC,MAAe4D,EAAK5D,MACpB4H,UAAehE,EAAKpE,KACpBS,SAAexB,aAAa2C,MAAMnB,SAClC4H,cAAepJ,aAAa2F,SAASR,EAAKrC,IAAIwF,SAASC,KAAK,MAG7C,QAAZ,EAAAvI,oBAAA,mBAAcuF,eAAd,SAAuBC,kBAAoB,IAAML,EAAKM,cAEzDkC,EAAU0B,QAAe3D,OAAO1F,aAAa2F,SAASR,EAAKM,cAAcxE,UAAUjB,aAAaC,OAAO+F,OAAO4B,UAAUzG,UACxHwG,EAAU2B,aAAetJ,aAAa2F,SAASR,EAAKM,cAAcgD,aAClEd,EAAU4B,WAAevJ,aAAa2F,SAASR,EAAKM,cAAciD,QAGlEf,EAAU0B,QAAa3D,OAAO1F,aAAa2F,SAASR,EAAKrC,IAAI7B,UAAUjB,aAAaC,OAAO+F,OAAO4B,UAAUzG,UAC5GwG,EAAU4B,WAAavJ,aAAa2F,SAASR,EAAKrC,IAAI4F,OAGvDhB,EAAWjE,KAAKkE,GAGjB,OAAOD,GA1CR,CA6CCvF,OAAO9B,IAAM8B,OAAO9B,KAAO,GAAIR,S,cC7CjCiG,EAAQ,KACRA,EAAQ,M,cCDRA,EAAQ,KACRA,EAAQ,M,SCARjG,OAAOC,UAAUC,GAAG,iBAAiB,WAAY,eAEG,KAA/C,UAAOC,oBAAP,iBAAO,EAAcC,cAArB,iBAAO,EAAsB+F,cAA7B,aAAO,EAA8BwD,SACpCnJ,IAAIoJ,gBACPpJ,IAAIqJ,aAEJrJ,IAAIsJ,yBAAyB,SAAU,wB,UCPzC,SAAUtJ,EAAK0C,EAAGC,GAElB3C,EAAI+F,0BAA4B,SAAUwD,GAAM,YAG/C,kBAAI5J,oBAAJ,iBAAI,EAAcC,cAAlB,iBAAI,EAAsB+F,cAA1B,iBAAI,EAA8B6D,oBAAlC,QAAI,EAA4CC,UAEL,aAAhCzJ,EAAI0J,mBAAmBC,MACkB,IAA5C3J,EAAI0J,mBAAmBE,WAAWL,GACC,UAAhCvJ,EAAI0J,mBAAmBC,MAC1B3J,EAAI0J,mBAAmB9J,OAAOiK,SAAS,UAAYN,KAM5DvJ,EAAI8J,sDAAwD,SAAUC,GAYrE,MAVoC,aAAhC/J,EAAI0J,mBAAmBC,MAEtB3J,EAAI0J,mBAAmBE,WAAWrC,YAAWwC,EAAwBC,kBAAoB,WACzFhK,EAAI0J,mBAAmBE,WAAWhE,MAAKmE,EAAwBE,WAAa,YACrC,UAAhCjK,EAAI0J,mBAAmBC,OAElCI,EAAwBC,kBAAoBhK,EAAI0J,mBAAmB9J,OAAOiK,SAAS,oBAAsB,UAAY,SACrHE,EAAwBE,WAAoBjK,EAAI0J,mBAAmB9J,OAAOiK,SAAS,cAAgB,UAAY,UAGzGE,GAGR/J,EAAIkK,wBAA0B,WAAwC,IAA9B3C,IAA8B,oDAAZ3B,IAAY,oDAErE,IACC,IACE9D,OAAOsE,OACPzG,aAAa0B,KAAK8I,oBAAoBC,iBACtC,OAEFhE,KAAK,UAAW,SAAU,CACzB4D,kBAAmBzC,EAAY,UAAY,SAC3C0C,WAAmBrE,EAAM,UAAY,WAErC,MAAO3D,GACRC,QAAQC,MAAMF,KAIhBjC,EAAIqK,kBAAoB,WACvB,IAAI,8CAGH,GAFA1K,aAAaC,OAAO+F,OAAOC,IAAIuD,MAAQ,UAEvC,UAAIxJ,oBAAJ,iBAAI,EAAcC,cAAlB,iBAAI,EAAsB+F,cAA1B,iBAAI,EAA8BC,WAAlC,iBAAI,EAAmC0E,4BAAvC,OAAI,EAAyDb,OAC5D,IAAK,MAAO5E,EAAKC,KAASC,OAAOC,QAAQrF,aAAaC,OAAO+F,OAAOC,IAAIC,eACvEO,KAAK,SAAUvB,EAAK,CAAC,4BAA8B,SAGpD,IAAK,MAAOA,EAAKC,KAASC,OAAOC,QAAQrF,aAAaC,OAAO+F,OAAOC,IAAIC,eACvEO,KAAK,SAAUvB,GAID,QAAZ,EAAAlF,oBAAA,mBAAcC,cAAd,mBAAsB+F,cAAtB,mBAA8BC,WAA9B,SAAmCC,eAAnC,UAAoDlG,oBAApD,iBAAoD,EAAcC,cAAlE,iBAAoD,EAAsB+F,cAA1E,iBAAoD,EAA8BC,WAAlF,OAAoD,EAAmC2E,wBAAvF,UAAiH5K,oBAAjH,iBAAiH,EAAcC,cAA/H,iBAAiH,EAAsB+F,cAAvI,iBAAiH,EAA8BC,WAA/I,OAAiH,EAAmC4E,yBACvJpE,KAAK,SAAUrB,OAAO0F,KAAK9K,aAAaC,OAAO+F,OAAOC,IAAIC,eAAe,GAAK,IAAMlG,aAAaC,OAAO+F,OAAOC,IAAI2E,uBAAwB,CAC1IC,wBAAyB7K,aAAaC,OAAO+F,OAAOC,IAAI4E,0BAMtD,wBAA0B7K,aAAa0B,KAAKqJ,WAA5C,UAAyD/K,oBAAzD,iBAAyD,EAAc2C,aAAvE,iBAAyD,EAAqBqD,cAA9E,iBAAyD,EAA6BC,WAAtF,OAAyD,EAAkC+E,2BAC9F7I,OAAO6I,yBAA2BhL,aAAa2C,MAAMqD,OAAOC,IAAI+E,0BAGjEhL,aAAaC,OAAO+F,OAAOC,IAAIuD,MAAQ,QACtC,MAAOlH,GACRC,QAAQC,MAAMF,KAIhBjC,EAAI4K,0BAA4B,WAE/B,IACCjL,aAAaC,OAAO+F,OAAO4B,UAAUC,UAAU2B,MAAQ,UAEvD/C,KAAK,SAAUzG,aAAaC,OAAO+F,OAAO4B,UAAUC,UAAUC,YAAa9H,aAAaC,OAAO+F,OAAO4B,UAAUC,UAAUqD,YAC1HlL,aAAaC,OAAO+F,OAAO4B,UAAUC,UAAU2B,MAAQ,QACtD,MAAOlH,GACRC,QAAQC,MAAMF,KAIhBjC,EAAI8K,2BAA6B,WAEhC,IACCnL,aAAaC,OAAO+F,OAAO4B,UAAUoB,IAAIQ,MAAQ,UAEjD/C,KAAK,SAAUzG,aAAaC,OAAO+F,OAAO4B,UAAUoB,IAAIC,eAAgBjJ,aAAaC,OAAO+F,OAAO4B,UAAUoB,IAAIkC,YACjHlL,aAAaC,OAAO+F,OAAO4B,UAAUoB,IAAIQ,MAAQ,QAChD,MAAOlH,GACRC,QAAQC,MAAMF,KAIhBjC,EAAI+K,eAAiB,WAAY,gCAEhC,UACa,QAAZ,EAAApL,oBAAA,mBAAcC,cAAd,mBAAsB+F,cAAtB,mBAA8B4B,iBAA9B,mBAAyCC,iBAAzC,SAAoDC,aAApD,UACA9H,oBADA,iBACA,EAAcC,cADd,iBACA,EAAsB+F,cADtB,iBACA,EAA8B4B,iBAD9B,iBACA,EAAyCoB,WADzC,OACA,EAA8CC,iBAC7CpJ,OAAOkG,cAAP,UAAqB/F,oBAArB,iBAAqB,EAAcC,cAAnC,iBAAqB,EAAsB+F,cAA3C,iBAAqB,EAA8BC,WAAnD,aAAqB,EAAmCC,iBAQ3D7F,EAAIgL,gBAAkB,WAAY,wBAEjC,iBAAIrL,oBAAJ,iBAAI,EAAcC,cAAlB,iBAAI,EAAsB+F,cAA1B,iBAAI,EAA8B4B,iBAAlC,iBAAI,EAAyCC,iBAA7C,OAAI,EAAoDC,YAChD9H,aAAaC,OAAO+F,OAAO4B,UAAUC,UAAUC,YAChD,UAAI9H,oBAAJ,iBAAI,EAAcC,cAAlB,iBAAI,EAAsB+F,cAA1B,iBAAI,EAA8B4B,iBAAlC,iBAAI,EAAyCoB,WAA7C,OAAI,EAA8CC,eACjDjJ,aAAaC,OAAO+F,OAAO4B,UAAUoB,IAAIC,eAEzC7D,OAAO0F,KAAK9K,aAAaC,OAAO+F,OAAOC,IAAIC,eAAe,IAInE7F,EAAIqJ,WAAa,WAEZrJ,EAAI+K,mBAEPpL,aAAaC,OAAO+F,OAAOwD,MAAQ,UAEnCnJ,EAAIiL,qBAAqB,+CAAiDjL,EAAIgL,mBAC5EE,MAAK,SAAUC,EAAQC,GAEvB,IAAI,gDASH,GANAtJ,OAAOuJ,UAAYvJ,OAAOuJ,WAAa,GACvCvJ,OAAOsE,KAAY,WAClBiF,UAAUjI,KAAKF,YAIhB,UAAIvD,oBAAJ,iBAAI,EAAcC,cAAlB,iBAAI,EAAsB+F,cAA1B,iBAAI,EAA8B6D,oBAAlC,OAAI,EAA4CC,OAAQ,aAEvD,IAAIM,EAA0B,CAC7B,WAAqBpK,aAAaC,OAAO+F,OAAO6D,aAAaS,WAC7D,kBAAqBtK,aAAaC,OAAO+F,OAAO6D,aAAaQ,kBAC7D,gBAAqBrK,aAAaC,OAAO+F,OAAO6D,aAAa8B,iBAG9D,UAAI3L,oBAAJ,iBAAI,EAAcC,cAAlB,iBAAI,EAAsB+F,cAA1B,iBAAI,EAA8B6D,oBAAlC,OAAI,EAA4C+B,SAC/CxB,EAAwBwB,OAAS5L,aAAaC,OAAO+F,OAAO6D,aAAa+B,QAE1ExB,EAA0B/J,EAAI8J,sDAAsDC,GAEpF3D,KAAK,UAAW,UAAW2D,GAC3B3D,KAAK,MAAO,qBAAsBzG,aAAaC,OAAO+F,OAAO6D,aAAagC,oBAC1EpF,KAAK,MAAO,kBAAmBzG,aAAaC,OAAO+F,OAAO6D,aAAaiC,iBAKxE,UAAI9L,oBAAJ,iBAAI,EAAcC,cAAlB,iBAAI,EAAsB+F,cAA1B,iBAAI,EAA8B+F,cAAlC,OAAI,EAAsCC,UACzCvF,KAAK,MAAO,SAAUzG,aAAaC,OAAO+F,OAAO+F,OAAOC,UAGzDvF,KAAK,KAAM,IAAIwF,MAGVpM,OAAOkG,cAAP,UAAqB/F,oBAArB,iBAAqB,EAAcC,cAAnC,iBAAqB,EAAsB+F,cAA3C,iBAAqB,EAA8BC,WAAnD,aAAqB,EAAmCC,iBAExD7F,EAAI+F,0BAA0B,OACjC/F,EAAIqK,oBAEJrK,EAAIsJ,yBAAyB,aAAc,QAM7C,UAAI3J,oBAAJ,iBAAI,EAAcC,cAAlB,iBAAI,EAAsB+F,cAA1B,iBAAI,EAA8B4B,iBAAlC,iBAAI,EAAyCC,iBAA7C,OAAI,EAAoDC,cAEnDzH,EAAI+F,0BAA0B,aACjC/F,EAAI4K,4BAEJ5K,EAAIsJ,yBAAyB,6BAA8B,cAK7D,UAAI3J,oBAAJ,iBAAI,EAAcC,cAAlB,iBAAI,EAAsB+F,cAA1B,iBAAI,EAA8B4B,iBAAlC,iBAAI,EAAyCoB,WAA7C,OAAI,EAA8CC,iBAE7C5I,EAAI+F,0BAA0B,aACjC/F,EAAI8K,6BAEJ9K,EAAIsJ,yBAAyB,MAAO,cAItC3J,aAAaC,OAAO+F,OAAOwD,MAAQ,QAClC,MAAOlH,GACRC,QAAQC,MAAMF,SAMnBjC,EAAIoJ,cAAgB,WAAY,YAE/B,kBAAIzJ,oBAAJ,iBAAI,EAAcC,cAAlB,iBAAI,EAAsB+F,cAA1B,iBAAI,EAA8B6D,oBAAlC,QAAI,EAA4CC,UAErC,aAAezJ,EAAI0J,mBAAmBC,QACtC3J,EAAI0J,mBAAmBE,WAAvB,MAA4C5J,EAAI0J,mBAAmBE,WAAvB,WAC5C,UAAY5J,EAAI0J,mBAAmBC,KACtC3J,EAAI0J,mBAAmB9J,OAAOiK,SAAS,eAAiB7J,EAAI0J,mBAAmB9J,OAAOiK,SAAS,qBAEtG3H,QAAQC,MAAM,6EACP,KAITnC,EAAIkG,WAAa,WAChB,OAAO,IAAI2F,SAAQ,SAAUC,EAASC,GAAQ,eAEM,KAA/C,UAAOpM,oBAAP,iBAAO,EAAcC,cAArB,iBAAO,EAAsB+F,cAA7B,aAAO,EAA8BwD,QAAuB4C,IAEhE,IAAIC,EAAY,GAIhB,SAAUC,IAAO,UAChB,MAA4C,WAA5B,QAAZ,EAAAtM,oBAAA,mBAAcC,cAAd,mBAAsB+F,cAAtB,eAA8BwD,OAA0B2C,IACxDE,GALW,IAKkBD,KACjCC,GALe,SAMfE,WAAWD,EANI,MAEhB,OA1OF,CAoPCnK,OAAO9B,IAAM8B,OAAO9B,KAAO,GAAIR,S,cCnPjCiG,EAAQ,KACRA,EAAQ,M,aCDRA,EAAQ,KAGRA,EAAQ,KACRA,EAAQ,KACRA,EAAQ,M,SCNRjG,OAAOC,UAAUC,GAAG,iBAAiB,WAAY,oBAEhC,QAAZ,EAAAC,oBAAA,mBAAcC,cAAd,mBAAsB+F,cAAtB,mBAA8BwG,gBAA9B,UAAwCC,cAAgB,UAACzM,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsB+F,cAAvB,iBAAC,EAA8BwG,gBAA/B,OAAC,EAAwCpM,QAChGC,IAAIC,SAAS,YAAa,oBAAoBD,IAAIqM,iC,UCFvD,SAAUrM,EAAK0C,EAAGC,GAElB3C,EAAIqM,2BAA6B,WAEhC,IACC1M,aAAaC,OAAO+F,OAAOwG,SAASpM,QAAS,EAE7CC,EAAIiL,qBAAqB,iDAAmDtL,aAAaC,OAAO+F,OAAOwG,SAASC,cAK/G,MAAOnK,GACRC,QAAQC,MAAMF,KAbhB,CAiBCH,OAAO9B,IAAM8B,OAAO9B,KAAO,GAAIR,S,cClBjCiG,EAAQ,KACRA,EAAQ,M,SCARjG,OAAOC,UAAUC,GAAG,iBAAiB,WAAY,gBAEoC,MAApE,QAAZ,EAAAC,oBAAA,mBAAcC,cAAd,mBAAsB0M,cAAtB,UAA8BC,SAAW,UAAC5M,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsB0M,cAAvB,OAAC,EAA8BvM,SACvEC,IAAIC,SAAS,YAAa,WAAa,UAACN,oBAAD,iBAAC,EAAcC,cAAf,iBAAC,EAAsB0M,cAAvB,OAAC,EAA8BvM,QAAQC,IAAIwM,wB,UCJvF,SAAUxM,EAAK0C,EAAGC,GAElB3C,EAAIwM,kBAAoB,WAEvB,IACC7M,aAAaC,OAAO0M,OAAOvM,QAAS,EAG1B0M,EAOP3K,OAPS4K,EAOFjN,SANTgN,EAAEE,GAAGF,EAAEE,IAAI,YAAYF,EAAEE,GAAGC,EAAEH,EAAEE,GAAGC,GAAG,IAAIxJ,KAAKF,YAC/CuJ,EAAEI,YAAY,CAACC,KAAKnN,aAAaC,OAAO0M,OAAOC,QAAQQ,KAAK,GAC5DC,EAAEN,EAAE9I,qBAAqB,QAAQ,IACjCqJ,EAAEP,EAAElJ,cAAc,WAAYC,MAAM,EACpCwJ,EAAEvJ,IAEgB,sCAFV+I,EAAEI,YAAYC,KAEkC,UAF3BL,EAAEI,YAAYE,KAC3CC,EAAEE,YAAYD,GAId,MAAOhL,GACRC,QAAQC,MAAMF,GAXd,IAAUwK,EAAEC,EAAMM,EAAEC,GARtB,CAuBCnL,OAAO9B,IAAM8B,OAAO9B,KAAO,GAAIR,S,cCvBjCiG,EAAQ,KACRA,EAAQ,M,UCDP,SAAUzF,EAAK0C,EAAGC,GAOlB,IAAIwK,EAAsB,KAEzB,IAAIC,EAAuBpN,EAAIqE,UAAU,oBACrCgJ,EAAuBrN,EAAIqE,UAAU,mBAGzC,SAF2BrE,EAAIqE,UAAU,0BAA2BrE,EAAIqE,UAAU,yBAG1E,CACNkD,UAAuC,UAArB6F,EAClBxH,IAAsC,UAApByH,EAClBC,kBAAkB,IAOjBC,EAA0B,KAE7B,IAAIC,EAAmBxN,EAAIqE,UAAU,qCAAuCrE,EAAIqE,UAAU,sCACtFoJ,EAAmBzN,EAAIqE,UAAU,yCAA2CrE,EAAIqE,UAAU,uCAAyCrE,EAAIqE,UAAU,oCACjJiJ,EAAmBtN,EAAIqE,UAAU,wBAErC,SAAImJ,IAAmBC,IAEf,CACNlG,UAAsC,QAApBiG,EAClB5H,IAAgC,QAAd6H,EAClBH,mBAAoBA,IAStBI,EAAgC,CACjCA,WAAoC,GACpCA,OAAoC,GACpCA,KAAoC,WACpCA,kBAAoC,GAEpC1N,EAAI0J,iBAAmB,IAAMgE,EAE7B1N,EAAI2N,0BAA4B,WAAoC,IAAnCpG,EAAmC,mDAAhB3B,EAAgB,mDACnE8H,EAAiB9D,WAAWrC,UAAYA,EACxCmG,EAAiB9D,WAAWhE,IAAYA,GAGzC5F,EAAI4N,0BAA4B,WAA2D,IAQtFC,EAR4BtG,EAA0D,kDAA9C,KAAM3B,EAAwC,kDAAlC,KAAMkI,EAA4B,mDAU1F,GAAIvG,GAAa3B,EAEZ2B,IACHmG,EAAiB9D,WAAWrC,YAAcA,GAEvC3B,IACH8H,EAAiB9D,WAAWhE,MAAQA,QAG/B,GAAIiI,EAAS7N,EAAIqE,UAAU,iBAIjCwJ,EAASE,UAAUF,GAEnBH,EAAiB9D,WAAWrC,UAAYsG,EAAOG,QAAQ,oBAAsB,EAC7EN,EAAiB9D,WAAWhE,IAAYiI,EAAOG,QAAQ,mBAAqB,EAC5EN,EAAiBJ,kBAAuB,OAElC,GAAIO,EAAS7N,EAAIqE,UAAU,uBAKjCwJ,EAASI,KAAKC,MAAML,GAEE,WAAlBA,EAAOM,QACVT,EAAiB9D,WAAWrC,WAAY,EACxCmG,EAAiB9D,WAAWhE,KAAY,GACD,IAA7BiI,EAAOjE,WAAWwE,QAC5BV,EAAiB9D,WAAWrC,WAAY,EACxCmG,EAAiB9D,WAAWhE,KAAY,IAExC8H,EAAiB9D,WAAWrC,UAAYsG,EAAOjE,WAAWoE,QAAQ,gBAAkB,EACpFN,EAAiB9D,WAAWhE,IAAYiI,EAAOjE,WAAWoE,QAAQ,cAAgB,GAGnFN,EAAiBJ,kBAAmB,OAE9B,GAAIO,EAAS7N,EAAIqE,UAAU,kBAAmB,qBAKpDwJ,EAASE,UAAUF,GACnBA,EAASI,KAAKC,MAAML,GAEpBH,EAAiB9D,WAAWrC,YAAa,UAACsG,SAAD,iBAAC,EAAQQ,gBAAT,QAAC,EAAkBC,YAC5DZ,EAAiB9D,WAAWhE,MAAa,UAACiI,SAAD,iBAAC,EAAQQ,gBAAT,QAAC,EAAkBE,WAC5Db,EAAiBJ,kBAAuB,EACxCI,EAAiB9N,OAAuB,KAAU,QAAN,EAAAiO,SAAA,mBAAQQ,gBAAR,eAAkBC,aAAc,OAAa,QAAN,EAAAT,SAAA,mBAAQQ,gBAAR,eAAkBE,YAAa,IAClHb,EAAiB/D,KAAuB,aAE9BkE,EAASV,MAKnBO,EAAiB9D,WAAWrC,WAAiC,IAArBsG,EAAOtG,UAC/CmG,EAAiB9D,WAAWhE,KAA2B,IAAfiI,EAAOjI,IAC/C8H,EAAiBJ,iBAAuBO,EAAOP,mBAErCO,EAAS7N,EAAIqE,UAAU,4BAKjCqJ,EAAiB9D,WAAWrC,WAAY,EACxCmG,EAAiB9D,WAAWhE,KAAY,EACxC8H,EAAiBJ,kBAAuB,IAE9BO,EAAS7N,EAAIqE,UAAU,gBAKjCwJ,EAASI,KAAKC,MAAML,GAEpBH,EAAiB9D,WAAWrC,YAAcsG,EAAOjE,WAAW,GAC5D8D,EAAiB9D,WAAWhE,MAAciI,EAAOjE,WAAW,GAC5D8D,EAAiBJ,kBAAuB,IAE9BO,EAASN,MAKnBG,EAAiB9D,WAAWrC,WAAiC,IAArBsG,EAAOtG,UAC/CmG,EAAiB9D,WAAWhE,KAA2B,IAAfiI,EAAOjI,IAC/C8H,EAAiBJ,kBAAmD,IAA5BO,EAAOP,mBAErCO,EAAS7N,EAAIqE,UAAU,sBAMjCwJ,EAASI,KAAKC,MAAML,GAEpBH,EAAiB9D,WAAWrC,UAAkC,MAAtBsG,EAAOW,WAC/Cd,EAAiB9D,WAAWhE,IAAgC,MAApBiI,EAAOY,SAC/Cf,EAAiBJ,kBAAuB,IAMxCI,EAAiB9D,WAAWrC,WAAauG,EACzCJ,EAAiB9D,WAAWhE,KAAakI,IAI3C9N,EAAI4N,4BAEJ5N,EAAI0O,kCAAoC,KACvChB,EAAiB9D,WAAa,CAC7BrC,WAAW,EACX3B,KAAW,IAIb5F,EAAIC,SAAW,CAACgI,EAAU0G,KAEzB,IAAIC,EAkBJ,MAhBI,aAAelB,EAAiB/D,KACnCiF,IAAiBlB,EAAiB9D,WAAW3B,GACnC,UAAYyF,EAAiB/D,MACvCiF,EAAelB,EAAiB9N,OAAOiK,SAAS8E,IAK5C,IAAUC,GAAgB,kBAAoBD,IACjDC,EAAelB,EAAiB9N,OAAOiK,SAAS,eAGjD3H,QAAQC,MAAM,0DACdyM,GAAe,KAGZA,IAIF5O,EAAIsJ,yBAAyBqF,EAAW1G,IAGlC,IAITjI,EAAIsJ,yBAA2B,CAACqF,EAAW1G,KAAa,UAEvD,UAAItI,oBAAJ,iBAAI,EAAc0B,YAAlB,iBAAI,EAAoB8I,2BAAxB,OAAI,EAAyCC,iBAC5ClI,QAAQ2M,IAAI,mCAAsCF,EAAY,eAAiB1G,EAAW,4GAE1F/F,QAAQ2M,IAAI,mCAAsCF,EAAY,eAAiB1G,EAAW,+GAU5FjI,EAAI8O,kBAAoB,IAAIC,kBAAkBC,IAC7CA,EAAUC,SAAQ,IAAkB,IAAjB,WAACC,GAAgB,EACnC,IAAIA,GACFD,SAAQE,IAEJzM,EAAEyM,GAAM/K,KAAK,yBAMZpE,EAAIoP,qBAAqBD,GAC5BnP,EAAIqP,cAAcF,GAElBnP,EAAIsP,YAAYH,aAOtBnP,EAAI8O,kBAAkBS,QAAQ9P,SAAS+P,KAAM,CAACC,WAAW,EAAMC,SAAS,IACxElQ,OAAOC,UAAUC,GAAG,oBAAoB,IAAMM,EAAI8O,kBAAkBa,eAEpE3P,EAAIoP,qBAAuBD,IAKxB,YAHF,SACCxP,aAAa0B,KAAK8I,oBAAoBC,kBACtCsD,EAAiBJ,oBAGa,aAA1BI,EAAiB/D,OAAuBjH,EAAEyM,GAAM/K,KAAK,uBAAuBwL,MAAM,KAAKC,MAAKC,GAAWpC,EAAiB9D,WAAWkG,QAElG,UAA1BpC,EAAiB/D,OAAoB+D,EAAiB9N,OAAOiK,SAASnH,EAAEyM,GAAM/K,KAAK,sBAEzD,UAA1BsJ,EAAiB/D,MAAuD,WAAnCjH,EAAEyM,GAAM/K,KAAK,oBAAkC,CAAC,mBAAoB,cAAcyL,MAAKC,GAAWpC,EAAiB9N,OAAOiK,SAASiG,QAE5J,QAAZ,EAAAnQ,oBAAA,mBAAcC,cAAd,mBAAsB+F,cAAtB,mBAA8B6D,oBAA9B,UAA4CC,QAA6C,WAAnC/G,EAAEyM,GAAM/K,KAAK,qBAWhFpE,EAAIqP,cAAgB,SAACU,GAAqC,IAAzBC,EAAyB,mDAErDA,GAActN,EAAEqN,GAAYE,SAEhC,IAAIC,EAASxN,EAAEqN,GAAY3L,KAAK,WAC5B8L,GAAQxN,EAAEqN,GAAYI,KAAK,MAAOD,GAEtCH,EAAWxG,KAAO,kBAEdyG,GAActN,EAAEqN,GAAYK,SAAS,QAEzC5Q,OAAOC,UAAU6B,QAAQ,mBAAoB,KAG9CtB,EAAIsP,YAAc,SAACS,GAAqC,IAAzBC,EAAyB,mDAEnDA,GAActN,EAAEqN,GAAYE,SAE5BvN,EAAEqN,GAAYI,KAAK,QAAQzN,EAAEqN,GAAYM,WAAW,OACxDN,EAAWxG,KAAO,qBAEdyG,GAActN,EAAEqN,GAAYK,SAAS,SAG1CpQ,EAAIsQ,kBAAoB,WACvB9Q,OAAOC,UAAU6B,QAAQ,mBAAoB,KAG9CtB,EAAIuQ,sBAAwB,KAC3B/Q,OAAOC,UAAU6B,QAAQ,mBAAoB,KAW9C9B,OAAOC,UAAUC,GAAG,gCAAgC,KAEnDM,EAAI4N,4BAE0B,UAA1BF,EAAiB/D,MAEpB3J,EAAIuQ,wBACJvQ,EAAIkK,wBAAwBwD,EAAiB9N,OAAOiK,SAAS,oBAAqB6D,EAAiB9N,OAAOiK,SAAS,iBAGnH7J,EAAIsQ,kBAAkB5C,EAAiB9D,WAAWrC,UAAWmG,EAAiB9D,WAAWhE,KACzF5F,EAAIkK,wBAAwBwD,EAAiB9D,WAAWrC,UAAWmG,EAAiB9D,WAAWhE,SAOjGpG,OAAOC,UAAUC,GAAG,qBAAqB,KAEpC8Q,UAAUC,QAAQnC,aAAYZ,EAAiB9D,WAAWrC,WAAY,GACtEiJ,UAAUC,QAAQlC,YAAWb,EAAiB9D,WAAWhE,KAAM,GAEnE5F,EAAIsQ,kBAAkB5C,EAAiB9D,WAAWrC,UAAWmG,EAAiB9D,WAAWhE,KACzF5F,EAAIkK,wBAAwBwD,EAAiB9D,WAAWrC,UAAWmG,EAAiB9D,WAAWhE,QAE7F,GAOHpG,OAAOC,UAAUC,GAAG,sBAAsBuC,IAErCA,EAAEyO,OAAO9G,WAAWC,SAAS,iBAAgB6D,EAAiB9D,WAAWrC,WAAY,GACrFtF,EAAEyO,OAAO9G,WAAWC,SAAS,eAAc6D,EAAiB9D,WAAWhE,KAAM,GAEjF5F,EAAIsQ,kBAAkB5C,EAAiB9D,WAAWrC,UAAWmG,EAAiB9D,WAAWhE,KACzF5F,EAAIkK,wBAAwBwD,EAAiB9D,WAAWrC,UAAWmG,EAAiB9D,WAAWhE,QAQhGpG,OAAOC,UAAUC,GAAG,yBAAyB,KAE5CM,EAAIsQ,mBAAkB,GAAM,GAC5BtQ,EAAIkK,yBAAwB,GAAM,MASnClK,EAAI2Q,kBAAqBC,IAEpBA,EAAiBF,OAAO9G,WAAWC,SAAS,eAAe7J,EAAI4N,2BAA0B,EAAM,MAC/FgD,EAAiBF,OAAO9G,WAAWC,SAAS,cAAc7J,EAAI4N,0BAA0B,MAAM,GAElG5N,EAAIsQ,kBAAkB5C,EAAiB9D,WAAWrC,UAAWmG,EAAiB9D,WAAWhE,KACzF5F,EAAIkK,wBAAwBwD,EAAiB9D,WAAWrC,UAAWmG,EAAiB9D,WAAWhE,MAGhGpG,OAAOC,UAAUC,GAAG,oBAAqBM,EAAI2Q,mBAC7CnR,OAAOC,UAAUC,GAAG,sBAAuBM,EAAI2Q,mBAM/CnR,OAAOC,UAAUC,GAAG,mBAAmB,KAEtCM,EAAI4N,4BAEJ5N,EAAIsQ,kBAAkB5C,EAAiB9D,WAAWrC,UAAWmG,EAAiB9D,WAAWhE,KACzF5F,EAAIkK,wBAAwBwD,EAAiB9D,WAAWrC,UAAWmG,EAAiB9D,WAAWhE,QAahG5F,EAAI6Q,WAAa,IAAI9B,kBAAiBC,IACrCA,EAAUC,SAAQ,IAAkB,IAAjB,WAACC,GAAgB,EACnC,IAAIA,GACFD,SAAQE,IAEQ,OAAZA,EAAK1M,IAERjD,OAAO,oBAAoBE,GAAG,SAAS,WACtCM,EAAI4N,4BACJ5N,EAAIsQ,kBAAkB5C,EAAiB9D,WAAWrC,UAAWmG,EAAiB9D,WAAWhE,KACzF5F,EAAIkK,wBAAwBwD,EAAiB9D,WAAWrC,UAAWmG,EAAiB9D,WAAWhE,iBAOjG9D,OAAOgP,IACV9Q,EAAI6Q,WAAWtB,QAAQ9P,SAASsR,iBAAmBtR,SAASuR,KAAM,CAACvB,WAAW,EAAMC,SAAS,IAG9F1P,EAAIiR,+BAAiC,KAEpC,GAAIvD,EAAiBuD,+BACpB,OAAO,EAEPvD,EAAiBuD,gCAAiC,GAzbpD,CA8bCnP,OAAO9B,IAAM8B,OAAO9B,KAAO,GAAIR,S,SC5bjCA,OAAOC,UAAUC,GAAG,QAAS,qCAAqC,WAEjE,IAEC,IAAIwR,EAAY,IAAIC,IAAI3R,OAAO4R,MAAMjB,KAAK,SACtCkB,EAAYrR,IAAIsR,6BAA6BJ,GAEjDlR,IAAIuR,sBAAsBF,GAEzB,MAAOpP,GACRC,QAAQC,MAAMF,OAOhBzC,OAAOC,UAAUC,GAAG,QAAS,kGAAkG,WAE9H,IAEC,GAAoC,YAAhCC,aAAa0B,KAAKqJ,WAGrB,QAAyC,IAA9BlL,OAAO4R,MAAMjB,KAAK,SAA2B3Q,OAAO4R,MAAMjB,KAAK,QAAQtG,SAAS,eAAgB,CAE1G,IAAI5I,EAAY,EACZoQ,EAAY7R,OAAO4R,MAAMhN,KAAK,cAElCpE,IAAIwR,iBAAiBH,EAAWpQ,QAGhC,GAAuC,WAAnCtB,aAAa0B,KAAKoQ,aAA2B,CAEhD,IAAIxQ,EAAWyQ,OAAOlS,OAAO,mBAAmBmS,OAE3C1Q,GAAyB,IAAbA,IAAgBA,EAAW,GAE5C,IAAIoQ,EAAY7R,OAAO4R,MAAMO,MAE7B3R,IAAIwR,iBAAiBH,EAAWpQ,QAE1B,GAAuC,aAAnCtB,aAAa0B,KAAKoQ,aAA6B,CAEzD,IAAIxQ,EAAWyQ,OAAOlS,OAAO,mBAAmBmS,OAE3C1Q,GAAyB,IAAbA,IAAgBA,EAAW,GAE5C,IAAIoQ,EAAY7R,OAAO,yBAAyBmS,MAEhD3R,IAAIwR,iBAAiBH,EAAWpQ,QAE1B,GAAuC,YAAnCtB,aAAa0B,KAAKoQ,aAE5BjS,OAAO,0CAA0CoS,MAAK,WAErD,IAAI3Q,EAAWyQ,OAAOlS,OAAO4R,MAAMS,KAAK,mBAAmBF,OAEtD1Q,GAAyB,IAAbA,IAAgBA,EAAW,GAE5C,IAAI6Q,EAAYtS,OAAO4R,MAAMjB,KAAK,SAC9BkB,EAAYrR,IAAI+R,oBAAoBD,GAExC9R,IAAIwR,iBAAiBH,EAAWpQ,WAE3B,GAAuC,WAAnCtB,aAAa0B,KAAKoQ,aAA2B,CAEvD,IAAIxQ,EAAWyQ,OAAOlS,OAAO,mBAAmBmS,OAE3C1Q,GAAyB,IAAbA,IAAgBA,EAAW,GAE5C,IAAIoQ,EAAY7R,OAAO,2BAA2BmS,MAElD3R,IAAIwR,iBAAiBH,EAAWpQ,QAG5B,CAEN,IAAIA,EAAY,EACZoQ,EAAY7R,OAAO4R,MAAMhN,KAAK,cAElCpE,IAAIwR,iBAAiBH,EAAWpQ,IAEhC,MAAOgB,GACRC,QAAQC,MAAMF,OAUhBzC,OAAOC,UAAUuS,IAAI,QAAS,6EAA6E,SAAU7R,GAEpH,IACC,GAAIX,OAAOW,EAAM8R,QAAQC,QAAQ,KAAK/B,KAAK,QAAS,CAEnD,IAAInO,EAAOxC,OAAOW,EAAM8R,QAAQC,QAAQ,KAAK/B,KAAK,QAElD,GAAInO,EAAK6H,SAAS,gBAAiB,CAElC,IAAIsI,EAAUnQ,EAAKoQ,MAAM,uBACrBD,GAASnS,IAAIwR,iBAAiBW,EAAQ,GAAI,KAG/C,MAAOlQ,GACRC,QAAQC,MAAMF,OAQhBzC,OAAOC,UAAUC,GAAG,QAAS,mGAAmG,WAE/H,IAaC,IAAI2R,EAAY7R,OAAO4R,MAAMiB,QAAQ,uBAAuBjO,KAAK,MAQjE,GAAIiN,EAAW,CAId,GAFAA,EAAYrR,IAAIsS,qCAAqCjB,IAEhDA,EAAW,MAAMkB,MAAM,uCAE5B,GAAI5S,aAAa2F,UAAY3F,aAAa2F,SAAS+L,GAAY,CAE9D,IAAIjR,EAAUJ,IAAIwS,mCAAmCnB,GAErD7R,OAAOC,UAAU6B,QAAQ,uBAAwBlB,GACjDZ,OAAOC,UAAU6B,QAAQ,gBAAiBlB,KAG3C,MAAO6B,GACRC,QAAQC,MAAMF,OAYhBzC,OAAOC,UAAUuS,IAAI,QAPO,CAC3B,mBACA,wBACA,mBACA,4BAGmD9J,KAAK,MAAM,WAC9D1I,OAAOC,UAAU6B,QAAQ,uBAM1B9B,OAAOC,UAAUC,GAAG,QAAS,kBAAkB,WAE1CM,IAAIyS,QAAQjT,OAAO4R,MAAMO,SAE5B3R,IAAI0S,qBAAqB,GACzB1S,IAAI2S,eAAgB,MAKtBnT,OAAOC,UAAUC,GAAG,QAAS,uBAAuB,YAE/C,IAAUM,IAAI4S,uBACjB5S,IAAI0S,qBAAqB,GAG1B1S,IAAI6S,mBAAmB,EAAGrT,OAAO,wCAAwCmS,OACzE3R,IAAI4S,uBAAwB,KAK7BpT,OAAOC,UAAUuS,IAAI,QAAS,gBAAgB,YAEzC,IAAUhS,IAAI2S,eACjB3S,IAAI0S,qBAAqB,IAGtB,IAAU1S,IAAI4S,wBACjB5S,IAAI0S,qBAAqB,GACzB1S,IAAI6S,mBAAmB,EAAGrT,OAAO,wCAAwCmS,QAG1E3R,IAAI0S,qBAAqB,MAK1BlT,OAAOC,UAAUC,GAAG,QAAS,wBAAwB,WAEpD,IACCF,OAAO,cAAcoS,MAAK,WAEzB,IAAIV,EAAY,IAAIC,IAAI3R,OAAO4R,MAAMS,KAAK,mBAAmBA,KAAK,KAAK1B,KAAK,SACxEkB,EAAYrR,IAAIsR,6BAA6BJ,GAG7CjQ,EAAWzB,OAAO4R,MAAMS,KAAK,QAAQF,MAExB,IAAb1Q,EACHjB,IAAIuR,sBAAsBF,GAChBpQ,EAAWtB,aAAamT,KAAKzB,GAAWpQ,SAClDjB,IAAIuR,sBAAsBF,EAAW1R,aAAamT,KAAKzB,GAAWpQ,SAAWA,GACnEA,EAAWtB,aAAamT,KAAKzB,GAAWpQ,UAClDjB,IAAIwR,iBAAiBH,EAAWpQ,EAAWtB,aAAamT,KAAKzB,GAAWpQ,aAGzE,MAAOgB,GACRC,QAAQC,MAAMF,GACdjC,IAAI+S,8BAMNvT,OAAOC,UAAUC,GAAG,QAAS,gCAAgC,WAE5D,IAEC,IAAI2R,EAUJ,GARI7R,OAAO4R,MAAMhN,KAAK,aAErBiN,EAAY7R,OAAO4R,MAAMhN,KAAK,aACpB5E,OAAO4R,MAAMhN,KAAK,gBAE5BiN,EAAY7R,OAAO4R,MAAMhN,KAAK,gBAG1BiN,EAAW,MAAMkB,MAAM,uCAE5B,IAAInS,EAAUJ,IAAIwS,mCAAmCnB,GAErD7R,OAAOC,UAAU6B,QAAQ,mBAAoBlB,GAC5C,MAAO6B,GACRC,QAAQC,MAAMF,OAIhBzC,OAAOC,UAAUC,GAAG,uBAAuB,WAC1CF,OAAOC,UAAU6B,QAAQ,kBAa1B9B,QAAO,WAENA,OAAO,0BAA0BE,GAAG,kBAAkB,SAAUS,EAAO6S,GAEtE,IACC,IAAI3B,EAAYrR,IAAIsS,qCAAqCU,EAAU5N,cAEnE,IAAKiM,EAAW,MAAMkB,MAAM,uCAE5B,GAAI5S,aAAa2F,UAAY3F,aAAa2F,SAAS+L,GAAY,CAE9D,IAAIjR,EAAUJ,IAAIwS,mCAAmCnB,GAErD7R,OAAOC,UAAU6B,QAAQ,cAAelB,IAExC,MAAO6B,GACRC,QAAQC,MAAMF,UAajBzC,QAAO,WAENA,OAAO,0BAA0BE,GAAG,kBAAkB,WAErD,IAAI,QACH,IACI2R,EADY7R,OAAO,QAAQ2Q,KAAK,SACZiC,MAAM,kBAAkB,GAEhD,IAAKf,EAAW,MAAMkB,MAAM,uCAc5B,GACC,aAAe5S,aAAa0B,KAAKoQ,cAAjC,UACA9R,oBADA,iBACA,EAAcuF,eADd,OACA,EAAuBC,iBACtB,WACD,IAAK,MAAON,EAAKzE,KAAY2E,OAAOC,QAAQrF,aAAa2F,UACxD,GAAI,aAAclF,EAAS,CAE1BiR,EAAYjR,EAAQqC,GACpB,MAMF,UAAI9C,oBAAJ,iBAAI,EAAcC,cAAlB,iBAAI,EAAsBC,gBAA1B,OAAI,EAAgCoT,uBACnC5B,EAAY1R,aAAaC,OAAOC,SAASoT,sBAI3C,GAAItT,aAAa2F,UAAY3F,aAAa2F,SAAS+L,GAAY,CAE9D,IAAIjR,EAAUJ,IAAIwS,mCAAmCnB,GAErD7R,OAAOC,UAAU6B,QAAQ,cAAelB,IAGxC,MAAO6B,GACRC,QAAQC,MAAMF,UAWjBzC,OAAOsC,QAAQpC,GAAG,WAAW,WAE5B,IAGKM,IAAIkT,4BAA4BlT,IAAImT,eAEvC,MAAOlR,GACRC,QAAQC,MAAMF,OAKhBzC,OAAOsC,QAAQpC,GAAG,WAAW,WAE5BC,aAAa2F,SAAW3F,aAAa2F,UAAY,GAGjD,IAAI8N,EAAapT,IAAIqT,6BAErBrT,IAAIsT,uBAAuBF,MAO5B5T,OAAOsC,QAAQpC,GAAG,WAAW,WAG5B,IAAKM,IAAIqE,UAAU,gBAEd5E,SAAS8T,SAAU,CACtB,IACIC,EADmB,IAAIrC,IAAI1R,SAAS8T,UACLE,SAE/BD,IAAqB1R,OAAOC,SAAS2R,MACxC1T,IAAI2T,UAAU,cAAeH,OAWjChU,OAAOsC,QAAQpC,GAAG,WAAW,WAC5B,IAAI,MACH,GAA2B,oBAAhBC,eAA+B,UAACA,oBAAD,QAAC,EAAciU,cAAc,SAItE,GAFApU,OAAOC,UAAU6B,QAAQ,iBAErB,YAAc3B,aAAa0B,KAAKqJ,WAAa,aAAe/K,aAAa0B,KAAKoQ,cAAgBzR,IAAI6T,kCAAmC,CAExI,IAAIzT,EAAUJ,IAAI8T,+BAA+B9T,IAAI6T,mCACrDrU,OAAOC,UAAU6B,QAAQ,cAAelB,OAE9B,qBAAuBT,aAAa0B,KAAKqJ,UAEnDlL,OAAOC,UAAU6B,QAAQ,eAEf,WAAa3B,aAAa0B,KAAKqJ,UAEzClL,OAAOC,UAAU6B,QAAQ,aAEf,SAAW3B,aAAa0B,KAAKqJ,UAEvClL,OAAOC,UAAU6B,QAAQ,eAEf,wBAA0B3B,aAAa0B,KAAKqJ,WAAa/K,aAAa2C,MAE3EtC,IAAI+T,gBAAgBpU,aAAa2C,MAAMG,MAE3CjD,OAAOC,UAAU6B,QAAQ,wBACzBtB,IAAIgU,sBAAsBrU,aAAa2C,MAAMG,KAG9CjD,OAAOC,UAAU6B,QAAQ,qBAGV,QAAZ,EAAA3B,oBAAA,mBAAc4E,YAAd,SAAoB9B,KAAOzC,IAAIiU,uBAClCzU,OAAOC,UAAU6B,QAAQ,YACzBtB,IAAIkU,sBAiBLvU,aAAaiU,cAAe,GAG5B,MAAO3R,GACRC,QAAQC,MAAMF,OAOhBzC,OAAOsC,QAAQpC,GAAG,oBAAoB,WAAY,UAEjC,QAAZ,EAAAC,oBAAA,mBAAc0B,YAAd,mBAAoB8I,2BAApB,SAAyCC,mBAAqBpK,IAAIiR,kCACrEjR,IAAI4N,0BAA0B,KAAM,MAAK,GAG1CpO,OAAOC,UAAU6B,QAAQ,gBAAiB,Q,UCne1C,SAAUtB,EAAK0C,EAAGC,GAElB,MAAMwR,EACc,iBAIdC,EAE2B,0BAF3BA,EAG2B,YA8HjC,SAASC,IAER,MAAe,KADLrU,EAAIqE,UAAU8P,GA1HzBnU,EAAI2S,eAAwB,EAC5B3S,EAAI4S,uBAAwB,EAgB5B5S,EAAIsU,gBAAkB,IAUdtU,EAAIuU,6BACVvU,EAAIwU,2BACJxU,EAAIyU,4BAGNzU,EAAIyU,0BAA4B,IAAM3S,OAAO4S,eAAeC,QApC3B,IACA,GAqCjC3U,EAAIwU,wBAA0B,KAE7B,GAAI1S,OAAO4S,eAAeC,QAAQP,GACjC,OAAOnG,KAAKC,MAAMpM,OAAO4S,eAAeC,QAAQP,IAIhDpU,EAAI4U,gBAIN5U,EAAIuU,0BAA4B,MAAQzS,OAAO4S,eAE/C1U,EAAI4U,aAAe,WAGd,IAFJ1D,EAEI,kDAFSnP,SAAS8S,SAAW,KAAO9S,SAAS2R,KAAOU,EACxDU,EACI,kDADSV,EAIb5U,OAAOuV,KAAK7D,EAAK,CAChB3H,KAAS,OACTyL,QAAS,IAETC,WAAY,CACX,IAAK,SAAUC,GAGdpT,OAAO4S,eAAeS,QAAQL,EAAY7G,KAAKmH,WAAU,KAE1D,IAAK,SAAUF,GAGdpT,OAAO4S,eAAeS,QAAQL,EAAY7G,KAAKmH,WAAU,KAE1D,EAAK,SAAUF,GAGdpT,OAAO4S,eAAeS,QAAQL,EAAY7G,KAAKmH,WAAU,QAGzDjP,MAAK+O,SAOTlV,EAAIqV,2BAA6B,eAACP,EAAD,kDAAcV,EAAd,QAAmEpU,EAAIqE,UAAUyQ,IAElH9U,EAAIgU,sBAAwB,SAACsB,GAI5B,GAAKxT,OAAOyT,QAeX,GAAiD,OAA7CC,aAAab,QAAQR,GAA8B,CACtD,IAAIsB,EAAM,GACVA,EAAIrS,KAAKkS,GACTxT,OAAO0T,aAAaL,QAAQhB,EAAoBlG,KAAKmH,UAAUK,QAEzD,CACN,IAAIA,EAAMxH,KAAKC,MAAMsH,aAAab,QAAQR,IACrCsB,EAAI5L,SAASyL,KACjBG,EAAIrS,KAAKkS,GACTxT,OAAO0T,aAAaL,QAAQhB,EAAoBlG,KAAKmH,UAAUK,SAxB7C,CACpB,IAAIC,EAAc,IAAI9J,KACtB8J,EAAYC,QAAQD,EAAYE,UApGd,KAsGlB,IAAIH,EAAM,GACNpB,MACHoB,EAAMxH,KAAKC,MAAMlO,EAAIqE,UAAU8P,KAG3BsB,EAAI5L,SAASyL,KACjBG,EAAIrS,KAAKkS,GACT7V,SAASoO,OAASsG,kBAA2BlG,KAAKmH,UAAUK,GAAO,YAAcC,EAAYG,eAkBvD,mBAA7B7V,EAAI8V,sBAAuCnW,aAAaoW,oBAClE/V,EAAI8V,qBAAqBR,IAS3BtV,EAAI+T,gBAAkBuB,GAEjB3V,aAAaoW,mBAEXjU,OAAOyT,QASsC,OAA7CC,aAAab,QAAQR,IACdlG,KAAKC,MAAMsH,aAAab,QAAQR,IAC/BtK,SAASyL,KATjBjB,KACOpG,KAAKC,MAAMlO,EAAIqE,UAAU8P,IACxBtK,SAASyL,IAatBpT,QAAQ2M,IAAI,sCACL,GAIT7O,EAAIyS,QAAUuD,GAID,yJAECC,KAAKD,GAGnBhW,EAAIuR,sBAAwB,SAACF,GAAuC,IAA5B6E,EAA4B,kDAAT,KAE1D,IAEC,IAAK7E,EAAW,MAAMkB,MAAM,uCAI5B,KAFAlB,EAAYrR,EAAIsS,qCAAqCjB,IAErC,MAAMkB,MAAM,uCAE5B,IAAItR,EAQJ,GALCA,EADuB,MAApBiV,EACQvW,aAAamT,KAAKzB,GAAWpQ,SAE7BiV,EAGRvW,aAAamT,KAAKzB,GAAY,CAEjC,IAAIjR,EAAUJ,EAAIwS,mCAAmCnB,EAAWpQ,GAEhEzB,OAAOC,UAAU6B,QAAQ,oBAAqBlB,GAEtB,MAApB8V,GAA4BvW,aAAamT,KAAKzB,GAAWpQ,WAAaiV,UAElEvW,aAAamT,KAAKzB,GAErBqD,gBAAgBA,eAAeS,QAAQ,mBAAoBlH,KAAKmH,UAAUzV,aAAamT,SAG3FnT,aAAamT,KAAKzB,GAAWpQ,SAAWtB,aAAamT,KAAKzB,GAAWpQ,SAAWA,EAE5EyT,gBAAgBA,eAAeS,QAAQ,mBAAoBlH,KAAKmH,UAAUzV,aAAamT,SAG5F,MAAO7Q,GACRC,QAAQC,MAAMF,KAOhBjC,EAAIsS,qCAAuCjB,IAE1C,IAAI,QACH,iBAAI1R,oBAAJ,iBAAI,EAAcuF,eAAlB,OAAI,EAAuBC,iBAEnBkM,EAEH1R,aAAa2F,SAAS+L,GAAW8E,YAE7BxW,aAAa2F,SAAS+L,GAAW+E,SAGjC/E,EAGR,MAAOpP,GACRC,QAAQC,MAAMF,KAKhBjC,EAAIwR,iBAAmB,CAACH,EAAWpQ,KAElC,IAAI,MAEH,IAAKoQ,EAAW,MAAMkB,MAAM,uCAI5B,KAFAlB,EAAYrR,EAAIsS,qCAAqCjB,IAErC,MAAMkB,MAAM,uCAE5B,aAAI5S,oBAAJ,OAAI,EAAc2F,SAAS+L,GAAY,OAEtC,IAAIjR,EAAUJ,EAAIwS,mCAAmCnB,EAAWpQ,GAEhEzB,OAAOC,UAAU6B,QAAQ,eAAgBlB,GAMzC,UAAIT,oBAAJ,OAAI,EAAcmT,KAAKzB,GAEtB1R,aAAamT,KAAKzB,GAAWpQ,SAAWtB,aAAamT,KAAKzB,GAAWpQ,SAAWA,GAG1E,SAAUtB,eAAeA,aAAamT,KAAO,IAEnDnT,aAAamT,KAAKzB,GAAarR,EAAIwS,mCAAmCnB,EAAWpQ,IAG9EyT,gBAAgBA,eAAeS,QAAQ,mBAAoBlH,KAAKmH,UAAUzV,aAAamT,QAE3F,MAAO7Q,GACRC,QAAQC,MAAMF,GAGdjC,EAAI+S,4BAIN/S,EAAImT,aAAe,KAEduB,eACEA,eAAeC,QAAQ,qBAAuD,wBAAhChV,aAAa0B,KAAKqJ,UAGpE1K,EAAIqW,0BAA0BpI,KAAKC,MAAMwG,eAAeC,QAAQ,sBAFhED,eAAeS,QAAQ,mBAAoBlH,KAAKmH,UAAU,KAK3DpV,EAAI+S,2BAKN/S,EAAI+S,wBAA0B,KAC7B,IACC,IAAI3O,EAAO,CACV+J,OAAQ,sBAGT3O,OAAOuV,KACN,CACCxL,KAAU,MACV+M,SAAU,OAEVpF,IAASlR,EAAIuW,SACbnS,KAASA,EACToS,QAAS,SAAUC,GAIbA,EAAS,OAAUA,EAAS,KAAW,IAE5CzW,EAAIqW,0BAA0BI,EAAS,MAEnC/B,gBAAgBA,eAAeS,QAAQ,mBAAoBlH,KAAKmH,UAAUqB,EAAS,UAGzF,MAAOxU,GACRC,QAAQC,MAAMF,KAKhBjC,EAAIsT,uBAAyBF,IAO5B,IAHAA,EAAaA,EAAWsD,QAAO5R,IAASnF,aAAa2F,SAASqR,eAAe7R,OAGpC,IAAtBsO,EAAWhF,OAE9B,IACC,IAAIhK,EAAO,CACV+J,OAAY,sBACZiF,WAAYA,GAGb5T,OAAOuV,KACN,CACCxL,KAAU,MACV+M,SAAU,OAEVpF,IAASlR,EAAIuW,SACbnS,KAASA,EACToS,QAAS,SAAUlR,GAGlB3F,aAAa2F,SAAWP,OAAO6R,OAAO,GAAIjX,aAAa2F,SAAUA,IAElEnD,MAAS,SAAU+S,GAClBhT,QAAQ2M,IAAIqG,MAGd,MAAOjT,GACRC,QAAQC,MAAMF,KAIhBjC,EAAIqW,0BAA4BQ,IAE/BlX,aAAamT,KAAW+D,EACxBlX,aAAa2F,SAAWP,OAAO6R,OAAO,GAAIjX,aAAa2F,SAAUuR,IAGlE7W,EAAI6S,mBAAqB,SAACiE,GAA+C,IAAzCC,EAAyC,kDAAvB,KAAMhW,EAAiB,kDAAT,KAE3DqD,EAAO,CACV0S,KAAiBA,EACjBC,gBAAiBA,EACjBhW,MAAiBA,GAGlBvB,OAAOC,UAAU6B,QAAQ,wBAAyB8C,IAGnDpE,EAAI0S,qBAAuBoE,IAE1B,IAAI1S,EAAO,CACV0S,KAAMA,GAGPtX,OAAOC,UAAU6B,QAAQ,0BAA2B8C,IAGrDpE,EAAI+R,oBAAsBiF,IAEzB,IACC,OAAOA,EAAO5E,MAAM,gBAAgB,GACnC,MAAOnQ,GACRC,QAAQC,MAAMF,KAIhBjC,EAAIiX,oBAAsB5F,IAEzB,IAAKA,EAAW,MAAMkB,MAAM,uCAI5B,KAFAlB,EAAYrR,EAAIsS,qCAAqCjB,IAErC,MAAMkB,MAAM,uCAE5B/S,OAAOC,UAAU6B,QAAQ,kBAAmBtB,EAAI8T,+BAA+BzC,KAGhFrR,EAAI8T,+BAAiCzC,IAEpC,IAAKA,EAAW,MAAMkB,MAAM,uCAE5B,IACC,GAAI5S,aAAa2F,SAAS+L,GAEzB,OAAOrR,EAAIwS,mCAAmCnB,GAE9C,MAAOpP,GACRC,QAAQC,MAAMF,KAIhBjC,EAAI6T,gCAAkC,KAErC,IACC,MAAI,CAAC,SAAU,WAAY,UAAW,YAAa,UAAU7F,QAAQrO,aAAa0B,KAAKoQ,eAAiB,GAChGjS,OAAO,uBAAuB4E,KAAK,MAI1C,MAAOnC,GACRC,QAAQC,MAAMF,KAIhBjC,EAAIkX,4BAA8BjF,IAEjCzS,OAAOyS,GAAQkF,IAAI,CAAC,SAAY,aAChC3X,OAAOyS,GAAQmF,OAAO,+CACtB5X,OAAOyS,GAAQJ,KAAK,+BAA+BsF,IAAI,CACtD,UAAoB,KACpB,QAAoB,QACpB,SAAoB,WACpB,OAAoB,OACpB,IAAoB,IACpB,KAAoB,IACpB,MAAoB,IACpB,QAAoBxX,aAAa0X,oBAAoBC,QACrD,mBAAoB3X,aAAa0X,oBAAoBE,mBAIvDvX,EAAIwX,qBAAuB,KAE1B,IAEC,OADoB,IAAIC,gBAAgB3V,OAAOC,SAAS2V,QACnCC,IAAI,KACxB,MAAO1V,GACRC,QAAQC,MAAMF,KAKhB,IA4CI2V,EA5CAC,EAAa,GAEjB7X,EAAI8X,iBAAmB,CAAC9S,EAAS+S,KAEhC/S,EAAQiK,SAAS+I,IAEhB,IACC,IAAI3G,EAEA4G,EAAYzY,OAAOwY,EAAM/F,QAAQ7N,KAAK,QAY1C,GANCiN,EAFG7R,OAAOwY,EAAM/F,QAAQiG,KAAK,iBAAiB9J,OAElC5O,OAAOwY,EAAM/F,QAAQiG,KAAK,iBAAiB9T,KAAK,MAEhD5E,OAAOwY,EAAM/F,QAAQJ,KAAK,iBAAiBzN,KAAK,OAIxDiN,EAAW,MAAMkB,MAAM,kCAExByF,EAAMG,eAETN,EAAWI,GAAa/L,YAAW,KAElClM,EAAIiX,oBAAoB5F,GACpB1R,aAAa0X,oBAAoBe,UAAUpY,EAAIkX,4BAA4Bc,EAAM/F,SACrC,IAA5CtS,aAAa0X,oBAAoBgB,QAAkBN,EAASO,UAAUN,EAAM/F,UAC9EtS,aAAa0X,oBAAoBrC,UAIpCuD,aAAaV,EAAWI,IACpBtY,aAAa0X,oBAAoBe,UAAU5Y,OAAOwY,EAAM/F,QAAQJ,KAAK,+BAA+B5B,UAExG,MAAOhO,GACRC,QAAQC,MAAMF,QAOjB,IACIuW,EADAC,EAAO,EAGPC,EAAwB,KAE3BF,EAAuBhZ,OAAO,iBAC5BmZ,KAAI,SAAUC,EAAGC,GAEjB,OACCrZ,OAAOqZ,GAAMC,SAASC,SAAS,iBAC/BvZ,OAAOqZ,GAAMC,SAASC,SAAS,YAC/BvZ,OAAOqZ,GAAMC,SAASC,SAAS,sBAExBvZ,OAAOqZ,GAAMC,SAEpBtZ,OAAOqZ,GAAMG,OAAOD,SAAS,2BAC7BvZ,OAAOqZ,GAAMG,OAAOD,SAAS,YAC7BvZ,OAAOqZ,GAAMG,OAAOD,SAAS,kBAC7BvZ,OAAOqZ,GAAMG,OAAOD,SAAS,gCAEtBvZ,OAAO4R,MAAM4H,OACVxZ,OAAOqZ,GAAM3G,QAAQ,YAAY9D,OACpC5O,OAAOqZ,GAAM3G,QAAQ,iBADtB,MAMVlS,EAAIiZ,iCAAmC,KAEtC,IAEKjZ,EAAIkZ,gBAAgB,iBAAgBvZ,aAAa0X,oBAAoBe,UAAW,GAGpFR,EAAK,IAAIuB,qBAAqBnZ,EAAI8X,iBAAkB,CACnDsB,UAAWzZ,aAAa0X,oBAAoB+B,YAG7CV,IAEAF,EAAqB5G,MAAK,CAACgH,EAAGC,KAE7BrZ,OAAOqZ,EAAK,IAAIzU,KAAK,OAAQqU,KAE7Bb,EAAGrI,QAAQsJ,EAAK,OAEhB,MAAO5W,GACRC,QAAQC,MAAMF,KAKhBjC,EAAIqZ,qCAAuC,KAE1C,IAKC,IAAIC,EAAe9Z,OAAO,uBAAuB+Z,UAAUC,IAAIha,OAAO,uBAAuB+Z,WAAWE,QAEpGH,EAAalL,QAChBsL,EAAyBnK,QAAQ+J,EAAa,GAAI,CACjDK,YAAe,EACflK,WAAe,EACfmK,eAAe,IAGhB,MAAO3X,GACRC,QAAQC,MAAMF,KAKhB,IAAIyX,EAA2B,IAAI3K,kBAAiBC,IAEnDA,EAAUC,SAAQ4K,IACjB,IAAIC,EAAWD,EAAS3K,WACP,OAAb4K,GACSta,OAAOsa,GACblI,MAAK,YAETpS,OAAO4R,MAAM2H,SAAS,iBACtBvZ,OAAO4R,MAAM2H,SAAS,kBACtBvZ,OAAO4R,MAAM2H,SAAS,4BAIlBgB,EAAuB3I,QAC1B5R,OAAO4R,MAAMhN,KAAK,OAAQqU,KAC1Bb,EAAGrI,QAAQ6B,gBAQb2I,EAAyBlB,MACzBrZ,OAAOqZ,GAAMhH,KAAK,iBAAiBzD,SACtC5O,OAAOqZ,GAAMmB,SAAS,iBAAiB5L,QAExCpO,EAAI2T,UAAY,SAACmB,GAAoD,IAAxCmF,EAAwC,kDAA1B,GAAIC,EAAsB,kDAAT,KAE3D,GAAIA,EAAY,CAEf,IAAIC,EAAI,IAAIvO,KACZuO,EAAEC,QAAQD,EAAEE,UAA0B,GAAbH,EAAkB,GAAK,GAAK,KACrD,IAAII,EAAc,WAAaH,EAAEtE,cACjCpW,SAASoO,OAASiH,EAAa,IAAMmF,EAAc,IAAMK,EAAU,eAEnE7a,SAASoO,OAASiH,EAAa,IAAMmF,EAAc,WAIrDja,EAAIqE,UAAYyQ,IAEf,IAAIpU,EAAgBoU,EAAa,IAE7ByF,EADgBC,mBAAmB/a,SAASoO,QACd+B,MAAM,KAExC,IAAK,IAAIgJ,EAAI,EAAGA,EAAI2B,EAAGnM,OAAQwK,IAAK,CAEnC,IAAI6B,EAAIF,EAAG3B,GAEX,KAAsB,KAAf6B,EAAEC,OAAO,IACfD,EAAIA,EAAEvW,UAAU,GAGjB,GAAuB,GAAnBuW,EAAEzM,QAAQtN,GACb,OAAO+Z,EAAEvW,UAAUxD,EAAK0N,OAAQqM,EAAErM,QAIpC,MAAO,IAGRpO,EAAI2a,kBAAoB,KAEvB,GAAI7Y,OAAO4S,eAAgB,CAE1B,IAAItQ,EAAOtC,OAAO4S,eAAeC,QAAQ,QAEzC,OAAa,OAATvQ,EACI6J,KAAKC,MAAM9J,GAEX,GAGR,MAAO,IAITpE,EAAI4a,kBAAoBxW,IACnBtC,OAAO4S,gBACV5S,OAAO4S,eAAeS,QAAQ,OAAQlH,KAAKmH,UAAUhR,KAIvDpE,EAAI8V,qBAAuBR,IAE1B,IAEC,IAAIlR,EAAO,CACV+J,OAAU,4BACV0M,SAAUvF,EAEVwF,MAAO9a,EAAI8a,OAGZtb,OAAOuV,KACN,CACCxL,KAAU,OACV+M,SAAU,OAEVpF,IAASlR,EAAIuW,SACbnS,KAASA,EACToS,QAAS,SAAUtB,IACO,IAArBA,EAASsB,SACZtU,QAAQ2M,IAAIqG,IAGd/S,MAAS,SAAU+S,GAClBhT,QAAQ2M,IAAIqG,MAGd,MAAOjT,GACRC,QAAQC,MAAMF,KAIhBjC,EAAIsR,6BAA+BJ,IAElC,IAGIG,EAFA0J,EADe,IAAItD,gBAAgBvG,EAAIwG,QACXC,IAAI,eAUpC,OALCtG,EAD8D,IAA3D1R,aAAaqb,aAAaD,GAA1B,aACSpb,aAAaqb,aAAaD,GAA1B,WAEApb,aAAaqb,aAAaD,GAA1B,aAGN1J,GAGRrR,EAAIqT,2BAA6B,IAChC7T,OAAO,KAAKmZ,KAAI,WACf,IAAI3W,EAAOxC,OAAO4R,MAAMjB,KAAK,QAE7B,GAAInO,GAAQA,EAAK6H,SAAS,iBAAkB,CAC3C,IAAIsI,EAAUnQ,EAAKoQ,MAAM,uBACzB,GAAID,EAAS,OAAOA,EAAQ,OAE3BwF,MAEJ3X,EAAIwS,mCAAqC,SAACnB,GAA4B,IAAjBpQ,EAAiB,kDAAN,EAE3Db,EAAU,CACbqC,GAAe4O,EAAUpN,WACzBrD,UAAejB,aAAa2F,SAAS+L,GAAWzQ,UAChDF,KAAef,aAAa2F,SAAS+L,GAAW3Q,KAChD+H,UAAe9I,aAAa0B,KAAKoH,UACjCJ,MAAe1I,aAAa2F,SAAS+L,GAAWhJ,MAChDJ,SAAetI,aAAa2F,SAAS+L,GAAWpJ,SAChDE,QAAexI,aAAa2F,SAAS+L,GAAWlJ,QAChDO,cAAe/I,aAAa2F,SAAS+L,GAAW4J,SAChDha,SAAeA,EACfC,MAAevB,aAAa2F,SAAS+L,GAAWnQ,MAChDC,SAAexB,aAAa0B,KAAKF,SACjC6E,WAAerG,aAAa2F,SAAS+L,GAAWrL,WAChDmQ,YAAexW,aAAa2F,SAAS+L,GAAW8E,YAChDC,SAAezW,aAAa2F,SAAS+L,GAAW+E,UAKjD,OAFIhW,EAAQ+V,cAAa/V,EAAO,mBAAyBT,aAAa2F,SAAS+L,GAAW6J,oBAEnF9a,GAGRJ,EAAImb,oBAAsB,KAGpBnb,EAAIqE,UAAU,gBAClBrE,EAAI2T,UAAU,cAAelU,SAAS8T,WAIxCvT,EAAIob,sBAAwB,IAEvBpb,EAAIqE,UAAU,eACVrE,EAAIqE,UAAU,eAEd,KAITrE,EAAIqb,mBAAqB,WAAsB,IAE1CC,EAFqBC,EAAqB,kDAAZ,QASlC,OALAD,EAAe,CACdE,MAAO,UACPC,MAAO,WAGJzb,EAAIqE,UAAUiX,EAAaC,IAEbvb,EAAIqE,UAAUiX,EAAaC,IAChBnJ,MAAM,oBACnB,GAER,IAITpS,EAAI0b,aAAe,IAAMjX,UAAUC,UAEnC1E,EAAI2b,YAAc,KAAM,CACvBC,MAAQ7X,KAAK8X,IAAIpc,SAASsR,gBAAgB+K,aAAe,EAAGha,OAAOia,YAAc,GACjFC,OAAQjY,KAAK8X,IAAIpc,SAASsR,gBAAgBkL,cAAgB,EAAGna,OAAOoa,aAAe,KAIpFlc,EAAIsD,QAAU,KACbpB,QAAQ2M,IAAIlP,aAAa2D,UAI1BtD,EAAIiL,qBAAuB,CAACiG,EAAKiL,KAGhCA,EAAU3c,OAAO4c,OAAOD,GAAW,GAAI,CACtC7F,SAAU,SACV+F,OAAU,EACVnL,IAAUA,IAKJ1R,OAAOuV,KAAKoH,IAGpBnc,EAAIsc,kBAAoBhV,IAAcA,EAAUiV,MAAQjV,EAAUkV,WAAalV,EAAUrG,SAEzFjB,EAAIiU,mBAAqB,KACxB,IAAI7P,EAAOpE,EAAI2a,oBACf,OAAOvW,MAAAA,OAAP,EAAOA,EAAMqY,iBAGdzc,EAAIkU,mBAAqB,KACxB,IAAI9P,EAAsBpE,EAAI2a,oBAC9BvW,EAAI,iBAAsB,EAC1BpE,EAAI4a,kBAAkBxW,IAGvBpE,EAAI0c,mBAAqB,IAAM,IAAI7Q,SAAQC,KAC1C,SAAU6Q,IACT,GAA4B,oBAAjBhd,aAA8B,OAAOmM,IAChDI,WAAWyQ,EAAY,IAFxB,MAMD3c,EAAI4c,aAAe,IAAM,IAAI/Q,SAAQC,KACpC,SAAU+Q,IACT,GAAsB,oBAAXrd,OAAwB,OAAOsM,IAC1CI,WAAW2Q,EAAe,KAF3B,MAMD7c,EAAI8c,WAAa,IAAM,IAAIjR,SAAQC,KAClC,SAAU6Q,IACT,GAAI,aAAeld,SAASsd,WAAY,OAAOjR,IAC/CI,WAAWyQ,EAAY,IAFxB,MAMD3c,EAAIgd,UAAY,IACR,IAAInR,SAAQC,KAClB,SAAU6Q,IACT,GAAI,gBAAkBld,SAASsd,YAAc,aAAetd,SAASsd,WAAY,OAAOjR,IACxFI,WAAWyQ,EAAY,IAFxB,MAOF3c,EAAIid,iBAAmB,KACtB,GAAInb,OAAO4S,eAAgB,CAC1B,IAAK,MAAO7P,EAAK9D,KAAUgE,OAAOC,QAAQlD,OAAO4S,gBAChD,GAAI7P,EAAIgF,SAAS,gBAChB,OAAO,EAGT,OAAO,EAEP,OAAO,GAIT7J,EAAIkT,yBAA2B,IAAMzT,SAASoO,OAAOhE,SAAS,6BAE9D7J,EAAIkZ,gBAAkBgE,GACL,IAAIzF,gBAAgB3V,OAAOC,SAAS2V,QACnC8B,IAAI0D,GAv2BtB,CA02BCpb,OAAO9B,IAAM8B,OAAO9B,KAAO,GAAIR,S,cCz2BjCiG,EAAQ,KACRA,EAAQ,M,SCKRzF,IAAI0c,qBACFvW,MAAK,WACLjE,QAAQ2M,IAAI,+BAAiClP,aAAa2D,QAAQ6Z,IAAM,MAAQ,QAAS,YAAcxd,aAAa2D,QAAQuD,OAAS,WACrIrH,OAAOC,UAAU6B,QAAQ,mBAAoB,OAE7C6E,MAAK,WACLnG,IAAI8c,aAAa3W,MAAK,WACrB3G,OAAOC,UAAU6B,QAAQ,UAAW,UAWvCtB,IAAIgd,YAAY7W,MAAK,WAMpBnG,IAAI0c,qBACFvW,MAAK,WAELnG,IAAIiZ,mCAGJjZ,IAAIqZ,+CC1CH+D,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3a,IAAjB4a,EACH,OAAOA,EAAaC,QAGrB,IAAIC,EAASL,EAAyBE,GAAY,CAGjDE,QAAS,IAOV,OAHAE,EAAoBJ,GAAUG,EAAQA,EAAOD,QAASH,GAG/CI,EAAOD,QCjBf/X,EAAQ,KAGRzF,IAAI4c,eAAezW,MAAK,WAEvBV,EAAQ,KAERA,EAAQ,IACRA,EAAQ,IACRA,EAAQ,KAsBRA,EAAQ,S","sources":["webpack://WooCommerce-Pixel-Manager/./src/js/public/facebook/event_listeners.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/facebook/functions.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/facebook/loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/ads/event_listeners.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/ads/functions.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/ads/loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/analytics/ga3/event_listeners.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/analytics/ga3/functions.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/analytics/ga3/loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/analytics/ga4/event_listeners.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/analytics/ga4/functions.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/analytics/ga4/loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/analytics/loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/base/event_listeners.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/base/functions.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/base/loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/optimize/event_listeners.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/optimize/functions.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/google/optimize/loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/hotjar/event_listeners.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/hotjar/functions.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/hotjar/loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/wpm/cookie_consent.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/wpm/event_listeners.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/wpm/functions.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/wpm/functions_loader.js","webpack://WooCommerce-Pixel-Manager/./src/js/public/wpm/init.js","webpack://WooCommerce-Pixel-Manager/webpack/bootstrap","webpack://WooCommerce-Pixel-Manager/./src/js/public/main.js"],"sourcesContent":["/**\n * All event listeners\n *\n * https://developers.facebook.com/docs/meta-pixel/reference\n * */\n\n// Load pixel event\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.facebook?.pixel_id && !wpmDataLayer?.pixels?.facebook?.loaded) {\n\t\tif (wpm.canIFire(\"ads\", \"facebook-ads\")) wpm.loadFacebookPixel()\n\t}\n})\n\n// AddToCart event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmAddToCart\", function (event, product) {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tlet eventId = wpm.getRandomEventId()\n\n\t\tfbq(\"track\", \"AddToCart\", {\n\t\t\tcontent_type: \"product\",\n\t\t\tcontent_name: product.name,\n\t\t\tcontent_ids : product.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],\n\t\t\tvalue : parseFloat(product.quantity * product.price),\n\t\t\tcurrency : product.currency,\n\t\t}, {\n\t\t\teventID: eventId,\n\t\t})\n\n\t\tproduct[\"currency\"] = wpmDataLayer.shop.currency\n\n\t\tjQuery(document).trigger(\"wpmFbCapiEvent\", {\n\t\t\tevent_name : \"AddToCart\",\n\t\t\tevent_id : eventId,\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tproduct_data : product,\n\t\t\tproduct_id : product.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],\n\t\t\tevent_source_url: window.location.href,\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// InitiateCheckout event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmBeginCheckout\", function (event) {\n\n\ttry {\n\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tlet eventId = wpm.getRandomEventId()\n\n\t\tfbq(\"track\", \"InitiateCheckout\", {}, {\n\t\t\teventID: eventId,\n\t\t})\n\n\t\tjQuery(document).trigger(\"wpmFbCapiEvent\", {\n\t\t\tevent_name : \"InitiateCheckout\",\n\t\t\tevent_id : eventId,\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// AddToWishlist event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmAddToWishlist\", function (event, product) {\n\n\ttry {\n\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tlet eventId = wpm.getRandomEventId()\n\n\t\tfbq(\"track\", \"AddToWishlist\", {\n\t\t\tcontent_type: \"product\",\n\t\t\tcontent_name: product.name,\n\t\t\tcontent_ids : product.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],\n\t\t\tvalue : parseFloat(product.quantity * product.price),\n\t\t\tcurrency : product.currency,\n\t\t}, {\n\t\t\teventID: eventId,\n\t\t})\n\n\t\tproduct[\"currency\"] = wpmDataLayer.shop.currency\n\n\t\tjQuery(document).trigger(\"wpmFbCapiEvent\", {\n\t\t\tevent_name : \"AddToWishlist\",\n\t\t\tevent_id : eventId,\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tproduct_data : product,\n\t\t\tproduct_id : product.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],\n\t\t\tevent_source_url: window.location.href,\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// ViewContent event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmViewItem\", function (event, product) {\n\n\ttry {\n\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\twpm.fbViewContent(product)\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view search event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmSearch\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tlet eventId = wpm.getRandomEventId()\n\n\t\tfbq(\"track\", \"Search\", {}, {\n\t\t\teventID: eventId,\n\t\t})\n\n\t\tjQuery(document).trigger(\"wpmFbCapiEvent\", {\n\t\t\tevent_name : \"Search\",\n\t\t\tevent_id : eventId,\n\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\tevent_source_url: window.location.href,\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// load always event\njQuery(document).on(\"wpmLoadAlways\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\twpm.setFbUserData()\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view order received page event\n// https://developers.facebook.com/docs/meta-pixel/reference\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\n\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\tfbq(\"track\", \"Purchase\",\n\t\t\t{\n\t\t\t\tcontent_type: \"product\",\n\t\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tcontent_ids : wpm.facebookContentIds(),\n\t\t\t},\n\t\t\t{eventID: wpmDataLayer.order.id},\n\t\t)\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Add functions for Facebook\n * */\n\n(function (wpm, $, undefined) {\n\n\tlet fBUserData\n\n\twpm.loadFacebookPixel = () => {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.facebook.loaded = true\n\n\t\t\t// @formatter:off\n\t\t\t!function(f,b,e,v,n,t,s)\n\t\t\t{if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n\t\t\t\tn.callMethod.apply(n,arguments):n.queue.push(arguments)};\n\t\t\t\tif(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n\t\t\t\tn.queue=[];t=b.createElement(e);t.async=!0;\n\t\t\t\tt.src=v;s=b.getElementsByTagName(e)[0];\n\t\t\t\ts.parentNode.insertBefore(t,s)}(window, document,'script',\n\t\t\t\t'https://connect.facebook.net/en_US/fbevents.js');\n\t\t\t// @formatter:on\n\n\t\t\tfbq(\"init\", wpmDataLayer.pixels.facebook.pixel_id)\n\t\t\tfbq(\"track\", \"PageView\")\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.getRandomEventId = () => (Math.random() + 1).toString(36).substring(2)\n\n\twpm.getFbUserData = () => {\n\n\t\t/**\n\t\t * We need the first one for InitiateCheckout\n\t\t * where getting the user_data from the browser is too slow\n\t\t * using wpm.getCookie(), so we cache the user_data earlier.\n\t\t * And we need the second one because the ViewContent hit happens too fast\n\t\t * after adding a variation to the cart because the function to cache\n\t\t * the user_data is too slow. But we can get the user_data using wpm.getCookie()\n\t\t * because we don't move away from the page and can wait for the browser\n\t\t * to get it.\n\t\t */\n\n\t\tif (fBUserData) {\n\t\t\treturn fBUserData\n\t\t} else {\n\t\t\treturn wpm.getFbUserDataFromBrowser()\n\t\t}\n\t}\n\n\twpm.setFbUserData = () => {\n\t\tfBUserData = wpm.getFbUserDataFromBrowser()\n\t}\n\n\twpm.getFbUserDataFromBrowser = () => {\n\n\t\tlet\n\t\t\tdata = {}\n\n\t\tif (wpm.getCookie(\"_fbp\")) {\n\t\t\tdata.fbp = wpm.getCookie(\"_fbp\")\n\t\t}\n\n\t\tif (wpm.getCookie(\"_fbc\")) {\n\t\t\tdata.fbp = wpm.getCookie(\"_fbc\")\n\t\t}\n\n\t\tif(wpmDataLayer?.user?.id){\n\t\t\tdata.external_id = wpmDataLayer.user.id\n\t\t}\n\n\t\tif (navigator.userAgent) {\n\t\t\tdata.client_user_agent = navigator.userAgent\n\t\t}\n\n\t\treturn data\n\t}\n\n\twpm.fbViewContent = product => {\n\n\t\ttry {\n\t\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\t\tlet eventId = wpm.getRandomEventId()\n\n\t\t\tfbq(\"track\", \"ViewContent\", {\n\t\t\t\tcontent_type: \"product\",\n\t\t\t\tcontent_name: product.name,\n\t\t\t\t// content_category: product.category,\n\t\t\t\tcontent_ids: product.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],\n\t\t\t\tcurrency : wpmDataLayer.shop.currency,\n\t\t\t\tvalue : product.price,\n\t\t\t}, {\n\t\t\t\teventID: eventId,\n\t\t\t})\n\n\t\t\tproduct[\"currency\"] = wpmDataLayer.shop.currency\n\n\t\t\tjQuery(document).trigger(\"wpmFbCapiEvent\", {\n\t\t\t\tevent_name : \"ViewContent\",\n\t\t\t\tevent_id : eventId,\n\t\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\t\tproduct_data : product,\n\t\t\t\tproduct_id : product.dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type],\n\t\t\t\tevent_source_url: window.location.href,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.facebookContentIds = () => {\n\t\tlet prodIds = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\t\t\t\tprodIds.push(String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))\n\t\t\t} else {\n\t\t\t\tprodIds.push(String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.facebook.dynamic_remarketing.id_type]))\n\t\t\t}\n\t\t}\n\n\t\treturn prodIds\n\t}\n\n\twpm.trackCustomFacebookEvent = (eventName) => {\n\t\ttry {\n\t\t\tif (!wpmDataLayer?.pixels?.facebook?.loaded) return\n\n\t\t\tlet eventId = wpm.getRandomEventId()\n\n\t\t\tfbq(\"trackCustom\", eventName, {}, {\n\t\t\t\teventID: eventId,\n\t\t\t})\n\n\t\t\tjQuery(document).trigger(\"wpmFbCapiEvent\", {\n\t\t\t\tevent_name : eventName,\n\t\t\t\tevent_id : eventId,\n\t\t\t\tuser_data : wpm.getFbUserData(),\n\t\t\t\tevent_source_url: window.location.href,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Facebook loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n\n","/**\n * Load Google Ads event listeners\n * */\n\n// view_item_list event\njQuery(document).on(\"wpmViewItemList\", function (event, product) {\n\n\ttry {\n\t\tif(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\tif (\n\t\t\twpmDataLayer?.general?.variationsOutput &&\n\t\t\tproduct.isVariable &&\n\t\t\twpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids === false\n\t\t) return\n\n\t\t// try to prevent that WC sends cached hits to Google\n\t\tif (!product) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_item_list\", {\n\t\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\t\titems : [{\n\t\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t\t}],\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// add_to_cart event\njQuery(document).on(\"wpmAddToCart\", function (event, product) {\n\n\ttry {\n\t\tif(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"add_to_cart\", {\n\t\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\t\tvalue : product.quantity * product.price,\n\t\t\t\titems : [{\n\t\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\t\tquantity : product.quantity,\n\t\t\t\t\tprice : product.price,\n\t\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t\t}],\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view_item event\njQuery(document).on(\"wpmViewItem\", function (event, product) {\n\n\ttry {\n\t\tif(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_item\", {\n\t\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\t\tvalue : (product.quantity ? product.quantity : 1) * product.price,\n\t\t\t\titems : [{\n\t\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\t\tquantity : (product.quantity ? product.quantity : 1),\n\t\t\t\t\tprice : product.price,\n\t\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t\t}],\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// view search event\njQuery(document).on(\"wpmSearch\", function () {\n\n\ttry {\n\t\tif(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\tlet products = []\n\n\t\tfor (const [key, product] of Object.entries(wpmDataLayer.products)) {\n\n\t\t\tif (\n\t\t\t\twpmDataLayer?.general?.variationsOutput &&\n\t\t\t\tproduct.isVariable &&\n\t\t\t\twpmDataLayer.pixels.google.ads.dynamic_remarketing.send_events_with_parent_ids === false\n\t\t\t) return\n\n\t\t\tproducts.push({\n\t\t\t\tid : product.dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type],\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t})\n\t\t}\n\n\t\t// console.log(products);\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"view_search_results\", {\n\t\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\t\t// value : 1 * product.price,\n\t\t\t\titems: products,\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// view order received page event\n// TODO distinguish with or without cart data active\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", {\n\t\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\t\titems : wpm.getGoogleAdsDynamicRemarketingOrderItems(),\n\t\t\t})\n\t\t})\n\n\t\t// console.log(wpm.getGoogleAdsDynamicRemarketingOrderItems())\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// user log in event\njQuery(document).on(\"wpmLogin\", function () {\n\n\ttry {\n\t\tif(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpmDataLayer?.pixels?.google?.ads?.dynamic_remarketing?.status) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"login\", {\n\t\t\t\tsend_to: wpm.getGoogleAdsConversionIdentifiers(),\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// view order received page event\n// new_customer parameter: https://support.google.com/google-ads/answer/9917012\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif(jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) return\n\t\tif (!wpm.googleConfigConditionsMet(\"ads\")) return\n\n\t\tlet data_basic = {}\n\t\tlet data_with_cart = {}\n\n\t\tdata_basic = {\n\t\t\tsend_to : wpm.getGoogleAdsConversionIdentifiersWithLabel(),\n\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\tvalue : wpmDataLayer.order.value_filtered,\n\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\tnew_customer : wpmDataLayer.order.new_customer,\n\t\t}\n\n\t\tif (wpmDataLayer?.order?.aw_merchant_id) {\n\t\t\tdata_with_cart = {\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\taw_merchant_id : wpmDataLayer.order.aw_merchant_id,\n\t\t\t\taw_feed_country : wpmDataLayer.order.aw_feed_country,\n\t\t\t\taw_feed_language: wpmDataLayer.order.aw_feed_language,\n\t\t\t\titems : wpm.getGoogleAdsRegularOrderItems(),\n\t\t\t}\n\t\t}\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"conversion\", {...data_basic, ...data_with_cart})\n\t\t})\n\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n\n\n\n","/**\n * Load Google Ads functions\n * */\n\n(function (wpm, $, undefined) {\n\n\tlet conversionIdentifiers = []\n\n\twpm.getGoogleAdsConversionIdentifiersWithLabel = function () {\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\tconversionIdentifiers.push(key + \"/\" + item)\n\t\t}\n\t\treturn conversionIdentifiers\n\t}\n\n\twpm.getGoogleAdsConversionIdentifiers = function () {\n\n\t\tlet conversionIdentifiers = []\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\tconversionIdentifiers.push(key)\n\t\t}\n\n\t\treturn conversionIdentifiers\n\t}\n\n\twpm.getGoogleAdsRegularOrderItems = function () {\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity: item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t}\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n\twpm.getGoogleAdsDynamicRemarketingOrderItems = function () {\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity : item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\tgoogle_business_vertical: wpmDataLayer.pixels.google.ads.google_business_vertical,\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.ads.dynamic_remarketing.id_type])\n\t\t\t\torderItems.push(orderItem)\n\t\t\t}\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load Google Ads\n */\n\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Load Google Universal Analytics (GA3) event listeners\n * */\n\n\n// view order received page event\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) return\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.mp_active) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", {\n\t\t\t\tsend_to : [wpmDataLayer.pixels.google.analytics.universal.property_id],\n\t\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\t\taffiliation : wpmDataLayer.order.affiliation,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tvalue : wpmDataLayer.order.value_regular,\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\ttax : wpmDataLayer.order.tax,\n\t\t\t\tshipping : wpmDataLayer.order.shipping,\n\t\t\t\tcoupon : wpmDataLayer.order.coupon,\n\t\t\t\titems : wpm.getGAUAOrderItems(),\n\t\t\t})\n\t\t})\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Add functions for Google Analytics Universal\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.getGAUAOrderItems = function () {\n\n\t\t// \"id\" : \"34\",\n\t\t// \"name\" : \"Hoodie\",\n\t\t// \"brand\" : \"\",\n\t\t// \"category\" : \"Hoodies\",\n\t\t// \"list_position\": 1,\n\t\t// \"price\" : 45,\n\t\t// \"quantity\" : 1,\n\t\t// \"variant\" : \"Color: blue | Logo: yes\"\n\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity: item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\tname : item.name,\n\t\t\t\tcurrency: wpmDataLayer.order.currency,\n\t\t\t\tcategory: wpmDataLayer.products[item.id].category.join(\"/\"),\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.variant = wpmDataLayer.products[item.variation_id].variant_name\n\t\t\t\torderItem.brand = wpmDataLayer.products[item.variation_id].brand\n\t\t\t} else {\n\n\t\t\t\torderItem.id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.brand = wpmDataLayer.products[item.id].brand\n\t\t\t}\n\n\t\t\torderItem = wpm.ga3AddListNameToProduct(orderItem)\n\n\t\t\torderItems.push(orderItem)\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n\twpm.ga3AddListNameToProduct = function (item_data, productPosition = null) {\n\n\t\t// if (wpm.ga3CanProductListBeSet(item_data.id)) {\n\t\t// \titem_data.listname = wpmDataLayer.shop.list_name\n\t\t//\n\t\t// \tif (productPosition) {\n\t\t// \t\titem_data.list_position = productPosition\n\t\t// \t}\n\t\t// }\n\n\t\titem_data.list_name = wpmDataLayer.shop.list_name\n\n\t\tif (productPosition) {\n\t\t\titem_data.list_position = productPosition\n\t\t}\n\n\t\treturn item_data\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Google Universal Analytics (GA3) loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n","/**\n * Load GA4 event listeners\n * */\n\n\n// view order received page event\njQuery(document).on(\"wpmOrderReceivedPage\", function () {\n\n\ttry {\n\t\tif (!wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) return\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.mp_active) return\n\t\tif (!wpm.googleConfigConditionsMet(\"analytics\")) return\n\n\t\twpm.gtagLoaded().then(function () {\n\t\t\tgtag(\"event\", \"purchase\", {\n\t\t\t\tsend_to : [wpmDataLayer.pixels.google.analytics.ga4.measurement_id],\n\t\t\t\ttransaction_id: wpmDataLayer.order.number,\n\t\t\t\taffiliation : wpmDataLayer.order.affiliation,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\tvalue : wpmDataLayer.order.value_regular,\n\t\t\t\tdiscount : wpmDataLayer.order.discount,\n\t\t\t\ttax : wpmDataLayer.order.tax,\n\t\t\t\tshipping : wpmDataLayer.order.shipping,\n\t\t\t\tcoupon : wpmDataLayer.order.coupon,\n\t\t\t\titems : wpm.getGA4OrderItems(),\n\t\t\t})\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n","/**\n * Load GA4 functions\n * */\n\n(function (wpm, $, undefined) {\n\n\twpm.getGA4OrderItems = function () {\n\n\t\t// \"item_id\" : \"34\",\n\t\t// \"item_name\" : \"Hoodie\",\n\t\t// \"quantity\" : 1,\n\t\t// \"item_brand\" : \"\",\n\t\t// \"item_variant\" : \"Color: blue | Logo: yes\",\n\t\t// \"price\" : 45,\n\t\t// \"currency\" : \"CHF\",\n\t\t// \"item_category\": \"Hoodies\"\n\n\n\t\tlet orderItems = []\n\n\t\tfor (const [key, item] of Object.entries(wpmDataLayer.order.items)) {\n\n\t\t\tlet orderItem\n\n\t\t\torderItem = {\n\t\t\t\tquantity : item.quantity,\n\t\t\t\tprice : item.price,\n\t\t\t\titem_name : item.name,\n\t\t\t\tcurrency : wpmDataLayer.order.currency,\n\t\t\t\titem_category: wpmDataLayer.products[item.id].category.join(\"/\"),\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.general?.variationsOutput && 0 !== item.variation_id) {\n\n\t\t\t\torderItem.item_id = String(wpmDataLayer.products[item.variation_id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.item_variant = wpmDataLayer.products[item.variation_id].variant_name\n\t\t\t\torderItem.item_brand = wpmDataLayer.products[item.variation_id].brand\n\t\t\t} else {\n\n\t\t\t\torderItem.item_id = String(wpmDataLayer.products[item.id].dyn_r_ids[wpmDataLayer.pixels.google.analytics.id_type])\n\t\t\t\torderItem.item_brand = wpmDataLayer.products[item.id].brand\n\t\t\t}\n\n\t\t\torderItems.push(orderItem)\n\t\t}\n\n\t\treturn orderItems\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * GA4 loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n","/**\n * Google Analytics loader\n */\n\nrequire(\"./ga3/loader\")\nrequire(\"./ga4/loader\")\n","/**\n * Load Google base event listeners\n */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (typeof wpmDataLayer?.pixels?.google?.state === \"undefined\") {\n\t\tif (wpm.canGoogleLoad()) {\n\t\t\twpm.loadGoogle()\n\t\t} else {\n\t\t\twpm.logPreventedPixelLoading(\"google\", \"analytics / ads\")\n\t\t}\n\t}\n})\n","/**\n * Load Google base functions\n */\n\n(function (wpm, $, undefined) {\n\n\twpm.googleConfigConditionsMet = function (type) {\n\n\t\t// always returns true if Google Consent Mode is active\n\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\t\t\treturn true\n\t\t} else if (wpm.getConsentValues().mode === \"category\") {\n\t\t\treturn wpm.getConsentValues().categories[type] === true\n\t\t} else if (wpm.getConsentValues().mode === \"pixel\") {\n\t\t\treturn wpm.getConsentValues().pixels.includes(\"google-\" + type)\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.getVisitorConsentStatusAndUpdateGoogleConsentSettings = function (google_consent_settings) {\n\n\t\tif (wpm.getConsentValues().mode === \"category\") {\n\n\t\t\tif (wpm.getConsentValues().categories.analytics) google_consent_settings.analytics_storage = \"granted\"\n\t\t\tif (wpm.getConsentValues().categories.ads) google_consent_settings.ad_storage = \"granted\"\n\t\t} else if ((wpm.getConsentValues().mode === \"pixel\")) {\n\n\t\t\tgoogle_consent_settings.analytics_storage = wpm.getConsentValues().pixels.includes(\"google-analytics\") ? \"granted\" : \"denied\"\n\t\t\tgoogle_consent_settings.ad_storage = wpm.getConsentValues().pixels.includes(\"google-ads\") ? \"granted\" : \"denied\"\n\t\t}\n\n\t\treturn google_consent_settings\n\t}\n\n\twpm.updateGoogleConsentMode = function (analytics = true, ads = true) {\n\n\t\ttry {\n\t\t\tif (\n\t\t\t\t!window.gtag ||\n\t\t\t\t!wpmDataLayer.shop.cookie_consent_mgmt.explicit_consent\n\t\t\t) return\n\n\t\t\tgtag(\"consent\", \"update\", {\n\t\t\t\tanalytics_storage: analytics ? \"granted\" : \"denied\",\n\t\t\t\tad_storage : ads ? \"granted\" : \"denied\",\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAds = function () {\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.ads.state = \"loading\"\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.ads?.enhanced_conversions?.active) {\n\t\t\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\t\t\tgtag(\"config\", key, {\"allow_enhanced_conversions\": true})\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (const [key, item] of Object.entries(wpmDataLayer.pixels.google.ads.conversionIds)) {\n\t\t\t\t\tgtag(\"config\", key)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.pixels?.google?.ads?.conversionIds && wpmDataLayer?.pixels?.google?.ads?.phone_conversion_label && wpmDataLayer?.pixels?.google?.ads?.phone_conversion_number) {\n\t\t\t\tgtag(\"config\", Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0] + \"/\" + wpmDataLayer.pixels.google.ads.phone_conversion_label, {\n\t\t\t\t\tphone_conversion_number: wpmDataLayer.pixels.google.ads.phone_conversion_number,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// ! enhanced_conversion_data needs to set on the window object\n\t\t\t// https://support.google.com/google-ads/answer/9888145#zippy=%2Cvalidate-your-implementation-using-chrome-developer-tools\n\t\t\tif (\"order_received_page\" === wpmDataLayer.shop.page_type && wpmDataLayer?.order?.google?.ads?.enhanced_conversion_data) {\n\t\t\t\twindow.enhanced_conversion_data = wpmDataLayer.order.google.ads.enhanced_conversion_data\n\t\t\t}\n\n\t\t\twpmDataLayer.pixels.google.ads.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAnalyticsUA = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.analytics.universal.state = \"loading\"\n\n\t\t\tgtag(\"config\", wpmDataLayer.pixels.google.analytics.universal.property_id, wpmDataLayer.pixels.google.analytics.universal.parameters)\n\t\t\twpmDataLayer.pixels.google.analytics.universal.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.fireGtagGoogleAnalyticsGA4 = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.analytics.ga4.state = \"loading\"\n\n\t\t\tgtag(\"config\", wpmDataLayer.pixels.google.analytics.ga4.measurement_id, wpmDataLayer.pixels.google.analytics.ga4.parameters)\n\t\t\twpmDataLayer.pixels.google.analytics.ga4.state = \"ready\"\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.isGoogleActive = function () {\n\n\t\tif (\n\t\t\twpmDataLayer?.pixels?.google?.analytics?.universal?.property_id ||\n\t\t\twpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id ||\n\t\t\t!jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)\n\t\t) {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.getGoogleGtagId = function () {\n\n\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) {\n\t\t\treturn wpmDataLayer.pixels.google.analytics.universal.property_id\n\t\t} else if (wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) {\n\t\t\treturn wpmDataLayer.pixels.google.analytics.ga4.measurement_id\n\t\t} else {\n\t\t\treturn Object.keys(wpmDataLayer.pixels.google.ads.conversionIds)[0]\n\t\t}\n\t}\n\n\twpm.loadGoogle = function () {\n\n\t\tif (wpm.isGoogleActive()) {\n\n\t\t\twpmDataLayer.pixels.google.state = \"loading\"\n\n\t\t\twpm.loadScriptAndCacheIt(\"https://www.googletagmanager.com/gtag/js?id=\" + wpm.getGoogleGtagId())\n\t\t\t\t.done(function (script, textStatus) {\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\t// Initiate Google dataLayer and gtag\n\t\t\t\t\t\twindow.dataLayer = window.dataLayer || []\n\t\t\t\t\t\twindow.gtag = function gtag() {\n\t\t\t\t\t\t\tdataLayer.push(arguments)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Google Consent Mode\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\n\t\t\t\t\t\t\tlet google_consent_settings = {\n\t\t\t\t\t\t\t\t\"ad_storage\" : wpmDataLayer.pixels.google.consent_mode.ad_storage,\n\t\t\t\t\t\t\t\t\"analytics_storage\": wpmDataLayer.pixels.google.consent_mode.analytics_storage,\n\t\t\t\t\t\t\t\t\"wait_for_update\" : wpmDataLayer.pixels.google.consent_mode.wait_for_update,\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.region) {\n\t\t\t\t\t\t\t\tgoogle_consent_settings.region = wpmDataLayer.pixels.google.consent_mode.region\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tgoogle_consent_settings = wpm.getVisitorConsentStatusAndUpdateGoogleConsentSettings(google_consent_settings)\n\n\t\t\t\t\t\t\tgtag(\"consent\", \"default\", google_consent_settings)\n\t\t\t\t\t\t\tgtag(\"set\", \"ads_data_redaction\", wpmDataLayer.pixels.google.consent_mode.ads_data_redaction)\n\t\t\t\t\t\t\tgtag(\"set\", \"url_passthrough\", wpmDataLayer.pixels.google.consent_mode.url_passthrough)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Google Linker\n\t\t\t\t\t\t// https://developers.google.com/gtagjs/devguide/linker\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.linker?.settings) {\n\t\t\t\t\t\t\tgtag(\"set\", \"linker\", wpmDataLayer.pixels.google.linker.settings)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgtag(\"js\", new Date())\n\n\t\t\t\t\t\t// Google Ads loader\n\t\t\t\t\t\tif (!jQuery.isEmptyObject(wpmDataLayer?.pixels?.google?.ads?.conversionIds)) { // Only run if the pixel has set up\n\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"ads\")) { \t\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAds()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"google-ads\", \"ads\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t// Google Universal Analytics loader\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.universal?.property_id) { \t\t// Only run if the pixel has set up\n\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"analytics\")) {\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAnalyticsUA()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"google-universal-analytics\", \"analytics\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// GA4 loader\n\t\t\t\t\t\tif (wpmDataLayer?.pixels?.google?.analytics?.ga4?.measurement_id) { \t\t\t// Only run if the pixel has set up\n\n\t\t\t\t\t\t\tif (wpm.googleConfigConditionsMet(\"analytics\")) {\t\t\t\t\t\t// Only run if cookie consent has been given\n\t\t\t\t\t\t\t\twpm.fireGtagGoogleAnalyticsGA4()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twpm.logPreventedPixelLoading(\"ga4\", \"analytics\")\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twpmDataLayer.pixels.google.state = \"ready\"\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.error(e)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t}\n\n\twpm.canGoogleLoad = function () {\n\n\t\tif (wpmDataLayer?.pixels?.google?.consent_mode?.active) {\n\t\t\treturn true\n\t\t} else if (\"category\" === wpm.getConsentValues().mode) {\n\t\t\treturn !!(wpm.getConsentValues().categories[\"ads\"] || wpm.getConsentValues().categories[\"analytics\"])\n\t\t} else if (\"pixel\" === wpm.getConsentValues().mode) {\n\t\t\treturn wpm.getConsentValues().pixels.includes(\"google-ads\") || wpm.getConsentValues().pixels.includes(\"google-analytics\")\n\t\t} else {\n\t\t\tconsole.error(\"Couldn't find a valid load condition for Google mode in wpmConsentValues\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.gtagLoaded = function () {\n\t\treturn new Promise(function (resolve, reject) {\n\n\t\t\tif (typeof wpmDataLayer?.pixels?.google?.state === \"undefined\") reject()\n\n\t\t\tlet startTime = 0\n\t\t\tlet timeout = 5000\n\t\t\tlet frequency = 200;\n\n\t\t\t(function wait() {\n\t\t\t\tif (wpmDataLayer?.pixels?.google?.state === \"ready\") return resolve()\n\t\t\t\tif (startTime >= timeout) return reject()\n\t\t\t\tstartTime += frequency\n\t\t\t\tsetTimeout(wait, frequency)\n\t\t\t})()\n\t\t})\n\t}\n\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Load Google base\n */\n\n// Load base\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// require(\"./event_listeners_premium\")\n// #endif\n","/**\n * Load Google\n */\n\n// Load base\nrequire(\"./base/loader\")\n\n//Load additional Google libraries\nrequire(\"./ads/loader\")\nrequire(\"./analytics/loader\")\nrequire(\"./optimize/loader\")\n\n\n","/**\n * Load Google Optimize event listeners\n */\n\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.google?.optimize?.container_id && !wpmDataLayer?.pixels?.google?.optimize?.loaded) {\n\t\tif (wpm.canIFire(\"analytics\", \"google-optimize\")) wpm.load_google_optimize_pixel()\n\t}\n})\n","/**\n * Load Google Optimize functions\n */\n\n\n(function (wpm, $, undefined) {\n\n\twpm.load_google_optimize_pixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.google.optimize.loaded = true\n\n\t\t\twpm.loadScriptAndCacheIt(\"https://www.googleoptimize.com/optimize.js?id=\" + wpmDataLayer.pixels.google.optimize.container_id)\n\t\t\t// .done(function (script, textStatus) {\n\t\t\t// \t\tconsole.log('Google Optimize loaded')\n\t\t\t// });\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Load Google Optimize\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Load Hotjar event listeners\n */\n\n// Pixel load event listener\njQuery(document).on(\"wpmLoadPixels\", function () {\n\n\tif (wpmDataLayer?.pixels?.hotjar?.site_id && !wpmDataLayer?.pixels?.hotjar?.loaded) {\n\t\tif (wpm.canIFire(\"analytics\", \"hotjar\") && !wpmDataLayer?.pixels?.hotjar?.loaded) wpm.load_hotjar_pixel()\n\t}\n})\n","/**\n * Load Hotjar functions\n */\n\n(function (wpm, $, undefined) {\n\n\twpm.load_hotjar_pixel = function () {\n\n\t\ttry {\n\t\t\twpmDataLayer.pixels.hotjar.loaded = true;\n\n\t\t\t// @formatter:off\n\t\t\t(function(h,o,t,j,a,r){\n\t\t\t\th.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};\n\t\t\t\th._hjSettings={hjid:wpmDataLayer.pixels.hotjar.site_id,hjsv:6};\n\t\t\t\ta=o.getElementsByTagName('head')[0];\n\t\t\t\tr=o.createElement('script');r.async=1;\n\t\t\t\tr.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;\n\t\t\t\ta.appendChild(r);\n\t\t\t})(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');\n\t\t\t// @formatter:on\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery));\n","/**\n * Hotjar loader\n */\n\nrequire(\"./functions\")\nrequire(\"./event_listeners\")\n","/**\n * Consent Mode functions\n */\n\n(function (wpm, $, undefined) {\n\n\n\t/**\n\t * Handle Cookie Management Platforms\n\t */\n\n\tlet getComplianzCookies = () => {\n\n\t\tlet cmplz_statistics = wpm.getCookie(\"cmplz_statistics\")\n\t\tlet cmplz_marketing = wpm.getCookie(\"cmplz_marketing\")\n\t\tlet cmplz_consent_status = wpm.getCookie(\"cmplz_consent_status\") || wpm.getCookie(\"cmplz_banner-status\")\n\n\t\tif (cmplz_consent_status) {\n\t\t\treturn {\n\t\t\t\tanalytics : cmplz_statistics === \"allow\",\n\t\t\t\tads : cmplz_marketing === \"allow\",\n\t\t\t\tvisitorHasChosen: true,\n\t\t\t}\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tlet getCookieLawInfoCookies = () => {\n\n\t\tlet analyticsCookie = wpm.getCookie(\"cookielawinfo-checkbox-analytics\") || wpm.getCookie(\"cookielawinfo-checkbox-analytiques\")\n\t\tlet adsCookie = wpm.getCookie(\"cookielawinfo-checkbox-advertisement\") || wpm.getCookie(\"cookielawinfo-checkbox-performance\") || wpm.getCookie(\"cookielawinfo-checkbox-publicite\")\n\t\tlet visitorHasChosen = wpm.getCookie(\"CookieLawInfoConsent\")\n\n\t\tif (analyticsCookie || adsCookie) {\n\n\t\t\treturn {\n\t\t\t\tanalytics : analyticsCookie === \"yes\",\n\t\t\t\tads : adsCookie === \"yes\",\n\t\t\t\tvisitorHasChosen: !!visitorHasChosen,\n\t\t\t}\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\n\tlet\n\t\twpmConsentValues = {}\n\twpmConsentValues.categories = {}\n\twpmConsentValues.pixels = []\n\twpmConsentValues.mode = \"category\"\n\twpmConsentValues.visitorHasChosen = false\n\n\twpm.getConsentValues = () => wpmConsentValues\n\n\twpm.setConsentValueCategories = (analytics = false, ads = false) => {\n\t\twpmConsentValues.categories.analytics = analytics\n\t\twpmConsentValues.categories.ads = ads\n\t}\n\n\twpm.updateConsentCookieValues = (analytics = null, ads = null, explicitConsent = false) => {\n\n\t\t// ad_storage\n\t\t// analytics_storage\n\t\t// functionality_storage\n\t\t// personalization_storage\n\t\t// security_storage\n\n\t\tlet cookie\n\n\t\tif (analytics || ads) {\n\n\t\t\tif (analytics) {\n\t\t\t\twpmConsentValues.categories.analytics = !!analytics\n\t\t\t}\n\t\t\tif (ads) {\n\t\t\t\twpmConsentValues.categories.ads = !!ads\n\t\t\t}\n\n\t\t} else if (cookie = wpm.getCookie(\"CookieConsent\")) {\n\n\t\t\t// Cookiebot\n\t\t\t// https://wordpress.org/plugins/cookiebot/\n\t\t\tcookie = decodeURI(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.indexOf(\"statistics:true\") >= 0\n\t\t\twpmConsentValues.categories.ads = cookie.indexOf(\"marketing:true\") >= 0\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t} else if (cookie = wpm.getCookie(\"CookieScriptConsent\")) {\n\n\t\t\t// Cookie Script\n\t\t\t// https://wordpress.org/plugins/cookie-script-com/\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\tif (cookie.action === \"reject\") {\n\t\t\t\twpmConsentValues.categories.analytics = false\n\t\t\t\twpmConsentValues.categories.ads = false\n\t\t\t} else if (cookie.categories.length === 2) {\n\t\t\t\twpmConsentValues.categories.analytics = true\n\t\t\t\twpmConsentValues.categories.ads = true\n\t\t\t} else {\n\t\t\t\twpmConsentValues.categories.analytics = cookie.categories.indexOf(\"performance\") >= 0\n\t\t\t\twpmConsentValues.categories.ads = cookie.categories.indexOf(\"targeting\") >= 0\n\t\t\t}\n\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t} else if (cookie = wpm.getCookie(\"borlabs-cookie\")) {\n\n\t\t\t// Borlabs Cookie\n\t\t\t// https://borlabs.io/borlabs-cookie/\n\n\t\t\tcookie = decodeURI(cookie)\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = !!cookie?.consents?.statistics\n\t\t\twpmConsentValues.categories.ads = !!cookie?.consents?.marketing\n\t\t\twpmConsentValues.visitorHasChosen = true\n\t\t\twpmConsentValues.pixels = [...cookie?.consents?.statistics || [], ...cookie?.consents?.marketing || []]\n\t\t\twpmConsentValues.mode = \"pixel\"\n\n\t\t} else if (cookie = getComplianzCookies()) {\n\n\t\t\t// Complianz Cookie\n\t\t\t// https://wordpress.org/plugins/complianz-gdpr/\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = cookie.visitorHasChosen\n\n\t\t} else if (cookie = wpm.getCookie(\"cookie_notice_accepted\")) {\n\n\t\t\t// Cookie Compliance (free version)\n\t\t\t// https://wordpress.org/plugins/cookie-notice/\n\n\t\t\twpmConsentValues.categories.analytics = true\n\t\t\twpmConsentValues.categories.ads = true\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t} else if (cookie = wpm.getCookie(\"hu-consent\")) {\n\n\t\t\t// Cookie Compliance (pro version)\n\t\t\t// https://wordpress.org/plugins/cookie-notice/\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = !!cookie.categories[\"3\"]\n\t\t\twpmConsentValues.categories.ads = !!cookie.categories[\"4\"]\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t} else if (cookie = getCookieLawInfoCookies()) {\n\n\t\t\t// CookieYes, GDPR Cookie Consent (Cookie Law Info)\n\t\t\t// https://wordpress.org/plugins/cookie-law-info/\n\n\t\t\twpmConsentValues.categories.analytics = cookie.analytics === true\n\t\t\twpmConsentValues.categories.ads = cookie.ads === true\n\t\t\twpmConsentValues.visitorHasChosen = cookie.visitorHasChosen === true\n\n\t\t} else if (cookie = wpm.getCookie(\"moove_gdpr_popup\")) {\n\n\t\t\t// GDPR Cookie Compliance Plugin by Moove Agency\n\t\t\t// https://wordpress.org/plugins/gdpr-cookie-compliance/\n\t\t\t// TODO write documentation on how to set up the plugin in order for this to work properly\n\n\t\t\tcookie = JSON.parse(cookie)\n\n\t\t\twpmConsentValues.categories.analytics = cookie.thirdparty === \"1\"\n\t\t\twpmConsentValues.categories.ads = cookie.advanced === \"1\"\n\t\t\twpmConsentValues.visitorHasChosen = true\n\n\t\t} else {\n\t\t\t// consentValues.categories.analytics = true\n\t\t\t// consentValues.categories.ads = true\n\n\t\t\twpmConsentValues.categories.analytics = !explicitConsent\n\t\t\twpmConsentValues.categories.ads = !explicitConsent\n\t\t}\n\t}\n\n\twpm.updateConsentCookieValues()\n\n\twpm.setConsentDefaultValuesToExplicit = () => {\n\t\twpmConsentValues.categories = {\n\t\t\tanalytics: false,\n\t\t\tads : false,\n\t\t}\n\t}\n\n\twpm.canIFire = (category, pixelName) => {\n\n\t\tlet canIFireMode\n\n\t\tif (\"category\" === wpmConsentValues.mode) {\n\t\t\tcanIFireMode = !!wpmConsentValues.categories[category]\n\t\t} else if (\"pixel\" === wpmConsentValues.mode) {\n\t\t\tcanIFireMode = wpmConsentValues.pixels.includes(pixelName)\n\n\t\t\t// If a user sets \"bing-ads\" in Borlabs Cookie instead of\n\t\t\t// \"microsoft-ads\" in the Borlabs settings, we need to check\n\t\t\t// for that too.\n\t\t\tif (false === canIFireMode && \"microsoft-ads\" === pixelName) {\n\t\t\t\tcanIFireMode = wpmConsentValues.pixels.includes(\"bing-ads\")\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.error(\"Couldn't find a valid consent mode in wpmConsentValues\")\n\t\t\tcanIFireMode = false\n\t\t}\n\n\t\tif (canIFireMode) {\n\t\t\treturn true\n\t\t} else {\n\t\t\tif (true || wpm.urlHasParameter(\"debugConsentMode\")) {\n\t\t\t\twpm.logPreventedPixelLoading(pixelName, category)\n\t\t\t}\n\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.logPreventedPixelLoading = (pixelName, category) => {\n\n\t\tif (wpmDataLayer?.shop?.cookie_consent_mgmt?.explicit_consent) {\n\t\t\tconsole.log(\"WooCommerce Pixel Manager: The \\\"\" + pixelName + \" (category: \" + category + \")\\\" pixel has not fired because you have not given consent for it yet. (WPM is in explicit consent mode.)\")\n\t\t} else {\n\t\t\tconsole.log(\"WooCommerce Pixel Manager: The \\\"\" + pixelName + \" (category: \" + category + \")\\\" pixel has not fired because you have removed consent for this pixel. (WPM is in implicit consent mode.)\")\n\t\t}\n\t}\n\n\t/**\n\t * Runs through each script in <head> and blocks / unblocks it according to the plugin settings\n\t * and user consent.\n\t */\n\n\t// https://stackoverflow.com/q/65453565/4688612\n\twpm.scriptTagObserver = new MutationObserver((mutations) => {\n\t\tmutations.forEach(({addedNodes}) => {\n\t\t\t[...addedNodes]\n\t\t\t\t.forEach(node => {\n\n\t\t\t\t\tif ($(node).data(\"wpm-cookie-category\")) {\n\n\t\t\t\t\t\t// If the pixel category has been approved > unblock\n\t\t\t\t\t\t// If the pixel belongs to more than one category, then unblock if one of the categories has been approved\n\t\t\t\t\t\t// If no category has been approved, but the Google Consent Mode is active, then only unblock the Google scripts\n\n\t\t\t\t\t\tif (wpm.shouldScriptBeActive(node)) {\n\t\t\t\t\t\t\twpm.unblockScript(node)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twpm.blockScript(node)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t})\n\t})\n\n\twpm.scriptTagObserver.observe(document.head, {childList: true, subtree: true})\n\tjQuery(document).on(\"DOMContentLoaded\", () => wpm.scriptTagObserver.disconnect())\n\n\twpm.shouldScriptBeActive = node => {\n\n\t\tif (\n\t\t\twpmDataLayer.shop.cookie_consent_mgmt.explicit_consent ||\n\t\t\twpmConsentValues.visitorHasChosen\n\t\t) {\n\n\t\t\tif (wpmConsentValues.mode === \"category\" && $(node).data(\"wpm-cookie-category\").split(\",\").some(element => wpmConsentValues.categories[element])) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmConsentValues.mode === \"pixel\" && wpmConsentValues.pixels.includes($(node).data(\"wpm-pixel-name\"))) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmConsentValues.mode === \"pixel\" && $(node).data(\"wpm-pixel-name\") === \"google\" && [\"google-analytics\", \"google-ads\"].some(element => wpmConsentValues.pixels.includes(element))) {\n\t\t\t\treturn true\n\t\t\t} else if (wpmDataLayer?.pixels?.google?.consent_mode?.active && $(node).data(\"wpm-pixel-name\") === \"google\") {\n\t\t\t\treturn true\n\t\t\t} else {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\treturn true\n\t\t}\n\t}\n\n\n\twpm.unblockScript = (scriptNode, removeAttach = false) => {\n\n\t\tif (removeAttach) $(scriptNode).remove()\n\n\t\tlet wpmSrc = $(scriptNode).data(\"wpm-src\")\n\t\tif (wpmSrc) $(scriptNode).attr(\"src\", wpmSrc)\n\n\t\tscriptNode.type = \"text/javascript\"\n\n\t\tif (removeAttach) $(scriptNode).appendTo(\"head\")\n\n\t\tjQuery(document).trigger(\"wpmPreLoadPixels\", {})\n\t}\n\n\twpm.blockScript = (scriptNode, removeAttach = false) => {\n\n\t\tif (removeAttach) $(scriptNode).remove()\n\n\t\tif ($(scriptNode).attr(\"src\")) $(scriptNode).removeAttr(\"src\")\n\t\tscriptNode.type = \"blocked/javascript\"\n\n\t\tif (removeAttach) $(scriptNode).appendTo(\"head\")\n\t}\n\n\twpm.unblockAllScripts = (analytics = true, ads = true) => {\n\t\tjQuery(document).trigger(\"wpmPreLoadPixels\", {})\n\t}\n\n\twpm.unblockSelectedPixels = () => {\n\t\tjQuery(document).trigger(\"wpmPreLoadPixels\", {})\n\t}\n\n\n\t/**\n\t * Block or unblock scripts for each CMP immediately after cookie consent has been updated\n\t * by the visitor.\n\t */\n\n\t// Borlabs Cookie\n\t// If visitor accepts cookies in Borlabs Cookie unblock the scripts\n\tjQuery(document).on(\"borlabs-cookie-consent-saved\", () => {\n\n\t\twpm.updateConsentCookieValues()\n\n\t\tif (wpmConsentValues.mode === \"pixel\") {\n\n\t\t\twpm.unblockSelectedPixels()\n\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.pixels.includes(\"google-analytics\"), wpmConsentValues.pixels.includes(\"google-ads\"))\n\t\t} else {\n\n\t\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t}\n\t})\n\n\t// Cookiebot\n\t// If visitor accepts cookies in Cookiebot unblock the scripts\n\t// https://www.cookiebot.com/en/developer/\n\tjQuery(document).on(\"CookiebotOnAccept\", () => {\n\n\t\tif (Cookiebot.consent.statistics) wpmConsentValues.categories.analytics = true\n\t\tif (Cookiebot.consent.marketing) wpmConsentValues.categories.ads = true\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\n\t}, false)\n\n\t/**\n\t * Cookie Script\n\t * If visitor accepts cookies in Cookie Script unblock the scripts\n\t * https://support.cookie-script.com/article/20-custom-events\n\t */\n\tjQuery(document).on(\"CookieScriptAccept\", e => {\n\n\t\tif (e.detail.categories.includes(\"performance\")) wpmConsentValues.categories.analytics = true\n\t\tif (e.detail.categories.includes(\"targeting\")) wpmConsentValues.categories.ads = true\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t})\n\n\t/**\n\t * Cookie Script\n\t * If visitor accepts cookies in Cookie Script unblock the scripts\n\t * https://support.cookie-script.com/\n\t */\n\tjQuery(document).on(\"CookieScriptAcceptAll\", () => {\n\n\t\twpm.unblockAllScripts(true, true)\n\t\twpm.updateGoogleConsentMode(true, true)\n\t})\n\n\t/**\n\t * Complianz Cookie\n\t *\n\t * If visitor accepts cookies in Complianz unblock the scripts\n\t */\n\n\twpm.cmplzStatusChange = (cmplzConsentData) => {\n\n\t\tif (cmplzConsentData.detail.categories.includes(\"statistics\")) wpm.updateConsentCookieValues(true, null)\n\t\tif (cmplzConsentData.detail.categories.includes(\"marketing\")) wpm.updateConsentCookieValues(null, true)\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t}\n\n\tjQuery(document).on(\"cmplzStatusChange\", wpm.cmplzStatusChange)\n\tjQuery(document).on(\"cmplz_status_change\", wpm.cmplzStatusChange)\n\n\n\t// Cookie Compliance by hu-manity.co (free and pro)\n\t// If visitor accepts cookies in Cookie Notice by hu-manity.co unblock the scripts (free version)\n\t// https://wordpress.org/support/topic/events-on-consent-change/#post-15202792\n\tjQuery(document).on(\"setCookieNotice\", () => {\n\n\t\twpm.updateConsentCookieValues()\n\n\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t})\n\n\t/**\n\t * Cookie Compliance by hu-manity.co (free and pro)\n\t * If visitor accepts cookies in Cookie Notice by hu-manity.co unblock the scripts (pro version)\n\t * https://wordpress.org/support/topic/events-on-consent-change/#post-15202792\n\t * Because Cookie Notice has no documented API or event that is being triggered on consent save or update\n\t * we have to solve this by using a mutation observer.\n\t *\n\t * @type {MutationObserver}\n\t */\n\n\twpm.huObserver = new MutationObserver(mutations => {\n\t\tmutations.forEach(({addedNodes}) => {\n\t\t\t[...addedNodes]\n\t\t\t\t.forEach(node => {\n\n\t\t\t\t\tif (node.id === \"hu\") {\n\n\t\t\t\t\t\tjQuery(\".hu-cookies-save\").on(\"click\", function () {\n\t\t\t\t\t\t\twpm.updateConsentCookieValues()\n\t\t\t\t\t\t\twpm.unblockAllScripts(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\t\t\t\t\twpm.updateGoogleConsentMode(wpmConsentValues.categories.analytics, wpmConsentValues.categories.ads)\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t})\n\t})\n\n\tif (window.hu) {\n\t\twpm.huObserver.observe(document.documentElement || document.body, {childList: true, subtree: true})\n\t}\n\n\twpm.explicitConsentStateAlreadySet = () => {\n\n\t\tif (wpmConsentValues.explicitConsentStateAlreadySet) {\n\t\t\treturn true\n\t\t} else {\n\t\t\twpmConsentValues.explicitConsentStateAlreadySet = true\n\t\t}\n\t}\n\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Register event listeners\n */\n\n// remove_from_cart event\n// jQuery('.remove_from_cart_button, .remove').on('click', function (e) {\njQuery(document).on(\"click\", \".remove_from_cart_button, .remove\", function () {\n\n\ttry {\n\n\t\tlet url = new URL(jQuery(this).attr(\"href\"))\n\t\tlet productId = wpm.getProductIdByCartItemKeyUrl(url)\n\n\t\twpm.removeProductFromCart(productId)\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n// add_to_cart event\n// jQuery('.add_to_cart_button:not(.product_type_variable), .ajax_add_to_cart, .js-ajax-add-to-cart, .single_add_to_cart_button, .btn_color-2').on('click', function (e) {\njQuery(document).on(\"click\", \".add_to_cart_button:not(.product_type_variable), .ajax_add_to_cart, .single_add_to_cart_button\", function () {\n\n\ttry {\n\n\t\tif (wpmDataLayer.shop.page_type === \"product\") {\n\n\t\t\t// First process related and upsell products\n\t\t\tif (typeof jQuery(this).attr(\"href\") !== \"undefined\" && jQuery(this).attr(\"href\").includes(\"add-to-cart\")) {\n\n\t\t\t\tlet quantity = 1\n\t\t\t\tlet productId = jQuery(this).data(\"product_id\")\n\n\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t} else {\n\n\t\t\t\tif (wpmDataLayer.shop.product_type === \"simple\") {\n\n\t\t\t\t\tlet quantity = Number(jQuery(\".input-text.qty\").val())\n\n\t\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\n\t\t\t\t\tlet productId = jQuery(this).val()\n\n\t\t\t\t\twpm.addProductToCart(productId, quantity)\n\n\t\t\t\t} else if (wpmDataLayer.shop.product_type === \"variable\") {\n\n\t\t\t\t\tlet quantity = Number(jQuery(\".input-text.qty\").val())\n\n\t\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\n\t\t\t\t\tlet productId = jQuery(\"[name='variation_id']\").val()\n\n\t\t\t\t\twpm.addProductToCart(productId, quantity)\n\n\t\t\t\t} else if (wpmDataLayer.shop.product_type === \"grouped\") {\n\n\t\t\t\t\tjQuery(\".woocommerce-grouped-product-list-item\").each(function () {\n\n\t\t\t\t\t\tlet quantity = Number(jQuery(this).find(\".input-text.qty\").val())\n\n\t\t\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\n\t\t\t\t\t\tlet classes = jQuery(this).attr(\"class\")\n\t\t\t\t\t\tlet productId = wpm.getPostIdFromString(classes)\n\n\t\t\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t\t\t})\n\t\t\t\t} else if (wpmDataLayer.shop.product_type === \"bundle\") {\n\n\t\t\t\t\tlet quantity = Number(jQuery(\".input-text.qty\").val())\n\n\t\t\t\t\tif (!quantity && quantity !== 0) quantity = 1\n\n\t\t\t\t\tlet productId = jQuery(\"input[name=add-to-cart]\").val()\n\n\t\t\t\t\twpm.addProductToCart(productId, quantity)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\n\t\t\tlet quantity = 1\n\t\t\tlet productId = jQuery(this).data(\"product_id\")\n\n\t\t\twpm.addProductToCart(productId, quantity)\n\t\t}\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n\n/**\n * If someone clicks anywhere on a custom /?add-to-cart=123 link\n * trigger the add to cart event\n */\n// jQuery('a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)').one('click', function (event) {\njQuery(document).one(\"click\", \"a:not(.add_to_cart_button, .ajax_add_to_cart, .single_add_to_cart_button)\", function (event) {\n\n\ttry {\n\t\tif (jQuery(event.target).closest(\"a\").attr(\"href\")) {\n\n\t\t\tlet href = jQuery(event.target).closest(\"a\").attr(\"href\")\n\n\t\t\tif (href.includes(\"add-to-cart=\")) {\n\n\t\t\t\tlet matches = href.match(/(add-to-cart=)(\\d+)/)\n\t\t\t\tif (matches) wpm.addProductToCart(matches[2], 1)\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// select_content GA UA event\n// select_item GA 4 event\n// jQuery(document).on('click', '.woocommerce-LoopProduct-link, .wc-block-grid__product, .product-small.box', function (e) {\n// jQuery('.woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product').on('click', function (e) {\njQuery(document).on(\"click\", \".woocommerce-LoopProduct-link, .wc-block-grid__product, .product, .product-small, .type-product\", function () {\n\n\ttry {\n\n\t\t/**\n\t\t * On some pages the event fires multiple times, and on product pages\n\t\t * even on page load. Using e.stopPropagation helps to prevent this,\n\t\t * but I don't know why. We don't even have to use this, since only a real\n\t\t * product click yields a valid productId. So we filter the invalid click\n\t\t * events out later down in the code. I'll keep it that way because this is\n\t\t * the most compatible way across shops.\n\t\t *\n\t\t * e.stopPropagation();\n\t\t * */\n\n\t\tlet productId = jQuery(this).nextAll(\".wpmProductId:first\").data(\"id\")\n\n\t\t/**\n\t\t * On product pages, for some reason, the click event is triggered on the main product on page load.\n\t\t * In that case no ID is found. But we can discard it, since we only want to trigger the event on\n\t\t * related products, which are found below.\n\t\t */\n\n\t\tif (productId) {\n\n\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tif (wpmDataLayer.products && wpmDataLayer.products[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\t\t\t\tjQuery(document).trigger(\"wpmSelectContentGaUa\", product)\n\t\t\t\tjQuery(document).trigger(\"wpmSelectItem\", product)\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// begin_checkout event\nlet checkoutButtonClasses = [\n\t\".checkout-button\",\n\t\".cart-checkout-button\",\n\t\".button.checkout\",\n\t\".xoo-wsc-ft-btn-checkout\", // https://xootix.com/side-cart-for-woocommerce/\n]\n\njQuery(document).one(\"click\", checkoutButtonClasses.join(\",\"), function () {\n\tjQuery(document).trigger(\"wpmBeginCheckout\")\n})\n\n\n// checkout_progress event\n// track checkout option event: entered valid billing email\njQuery(document).on(\"input\", \"#billing_email\", function () {\n\n\tif (wpm.isEmail(jQuery(this).val())) {\n\t\t// wpm.fireCheckoutOption(2);\n\t\twpm.fireCheckoutProgress(2)\n\t\twpm.emailSelected = true\n\t}\n})\n\n// track checkout option event: purchase click\njQuery(document).on(\"click\", \".wc_payment_methods\", function () {\n\n\tif (false === wpm.paymentMethodSelected) {\n\t\twpm.fireCheckoutProgress(3)\n\t}\n\n\twpm.fireCheckoutOption(3, jQuery(\"input[name='payment_method']:checked\").val())\n\twpm.paymentMethodSelected = true\n})\n\n// track checkout option event: purchase click\n// jQuery('#place_order').one('click', function () {\njQuery(document).one(\"click\", \"#place_order\", function () {\n\n\tif (false === wpm.emailSelected) {\n\t\twpm.fireCheckoutProgress(2)\n\t}\n\n\tif (false === wpm.paymentMethodSelected) {\n\t\twpm.fireCheckoutProgress(3)\n\t\twpm.fireCheckoutOption(3, jQuery(\"input[name='payment_method']:checked\").val())\n\t}\n\n\twpm.fireCheckoutProgress(4)\n})\n\n// update cart event\n// jQuery(\"[name='update_cart']\").on('click', function (e) {\njQuery(document).on(\"click\", \"[name='update_cart']\", function () {\n\n\ttry {\n\t\tjQuery(\".cart_item\").each(function () {\n\n\t\t\tlet url = new URL(jQuery(this).find(\".product-remove\").find(\"a\").attr(\"href\"))\n\t\t\tlet productId = wpm.getProductIdByCartItemKeyUrl(url)\n\n\n\t\t\tlet quantity = jQuery(this).find(\".qty\").val()\n\n\t\t\tif (quantity === 0) {\n\t\t\t\twpm.removeProductFromCart(productId)\n\t\t\t} else if (quantity < wpmDataLayer.cart[productId].quantity) {\n\t\t\t\twpm.removeProductFromCart(productId, wpmDataLayer.cart[productId].quantity - quantity)\n\t\t\t} else if (quantity > wpmDataLayer.cart[productId].quantity) {\n\t\t\t\twpm.addProductToCart(productId, quantity - wpmDataLayer.cart[productId].quantity)\n\t\t\t}\n\t\t})\n\t} catch (e) {\n\t\tconsole.error(e)\n\t\twpm.getCartItemsFromBackend()\n\t}\n})\n\n\n// add_to_wishlist\njQuery(document).on(\"click\", \".add_to_wishlist, .wl-add-to\", function () {\n\n\ttry {\n\n\t\tlet productId\n\n\t\tif (jQuery(this).data(\"productid\")) { // for the WooCommerce wishlist plugin\n\n\t\t\tproductId = jQuery(this).data(\"productid\")\n\t\t} else if (jQuery(this).data(\"product-id\")) { // for the YITH wishlist plugin\n\n\t\t\tproductId = jQuery(this).data(\"product-id\")\n\t\t}\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\t\tjQuery(document).trigger(\"wpmAddToWishlist\", product)\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\njQuery(document).on(\"updated_cart_totals\", function () {\n\tjQuery(document).trigger(\"wpmViewCart\")\n})\n\n\n/**\n * Called when the user selects all the required dropdowns / attributes\n *\n * Has to be hooked after document ready !\n *\n * https://stackoverflow.com/a/27849208/4688612\n * https://stackoverflow.com/a/65065335/4688612\n */\n\njQuery(function () {\n\n\tjQuery(\".single_variation_wrap\").on(\"show_variation\", function (event, variation) {\n\n\t\ttry {\n\t\t\tlet productId = wpm.getIdBasedOndVariationsOutputSetting(variation.variation_id)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tif (wpmDataLayer.products && wpmDataLayer.products[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\t\t\t\tjQuery(document).trigger(\"wpmViewItem\", product)\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t})\n})\n\n\n/**\n * Called on variable products when no selection has been done yet\n * or when the visitor deselects his choice.\n *\n * Has to be hooked after document ready !\n */\n\njQuery(function () {\n\n\tjQuery(\".single_variation_wrap\").on(\"hide_variation\", function () {\n\n\t\ttry {\n\t\t\tlet classes = jQuery(\"body\").attr(\"class\")\n\t\t\tlet productId = classes.match(/(postid-)(\\d+)/)[2]\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\t/**\n\t\t\t * If we have a variable product with no preset,\n\t\t\t * and variations output is enabled,\n\t\t\t * then we send a viewItem event with the first\n\t\t\t * variation we find for the parent.\n\t\t\t * If variations output is disabled,\n\t\t\t * we just send the parent ID.\n\t\t\t *\n\t\t\t * And if Facebook microdata is active, use the\n\t\t\t * microdata product ID.\n\t\t\t */\n\n\t\t\tif (\n\t\t\t\t\"variable\" === wpmDataLayer.shop.product_type &&\n\t\t\t\twpmDataLayer?.general?.variationsOutput\n\t\t\t) {\n\t\t\t\tfor (const [key, product] of Object.entries(wpmDataLayer.products)) {\n\t\t\t\t\tif (\"parentId\" in product) {\n\n\t\t\t\t\t\tproductId = product.id\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\n\n\t\t\t\tif (wpmDataLayer?.pixels?.facebook?.microdata_product_id) {\n\t\t\t\t\tproductId = wpmDataLayer.pixels.facebook.microdata_product_id\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (wpmDataLayer.products && wpmDataLayer.products[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId)\n\n\t\t\t\tjQuery(document).trigger(\"wpmViewItem\", product)\n\t\t\t}\n\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t})\n})\n\n\n/**\n * Set up wpm events\n */\n\n// populate the wpmDataLayer with the cart items\njQuery(window).on(\"wpmLoad\", function () {\n\n\ttry {\n\t\t// When a new session is initiated there are no items in the cart,\n\t\t// so we can save the call to get the cart items\n\t\tif (wpm.doesWooCommerceCartExist()) wpm.getCartItems()\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n// get all add-to-cart= products from backend\njQuery(window).on(\"wpmLoad\", function () {\n\n\twpmDataLayer.products = wpmDataLayer.products || {}\n\n\t// scan page for add-to-cart= links\n\tlet productIds = wpm.getAddToCartLinkProductIds()\n\n\twpm.getProductsFromBackend(productIds)\n})\n\n/**\n * Save the referrer into a cookie\n */\n\njQuery(window).on(\"wpmLoad\", function () {\n\n\t// can't use session storage as we can't read it from the server\n\tif (!wpm.getCookie(\"wpmReferrer\")) {\n\n\t\tif (document.referrer) {\n\t\t\tlet referrerUrl = new URL(document.referrer)\n\t\t\tlet referrerHostname = referrerUrl.hostname\n\n\t\t\tif (referrerHostname !== window.location.host) {\n\t\t\t\twpm.setCookie(\"wpmReferrer\", referrerHostname)\n\t\t\t}\n\t\t}\n\t}\n})\n\n\n/**\n * Create our own load event in order to better handle script flow execution when JS \"optimizers\" shuffle the code.\n */\n\njQuery(window).on(\"wpmLoad\", function () {\n\ttry {\n\t\tif (typeof wpmDataLayer != \"undefined\" && !wpmDataLayer?.wpmLoadFired) {\n\n\t\t\tjQuery(document).trigger(\"wpmLoadAlways\")\n\n\t\t\tif (\"product\" === wpmDataLayer.shop.page_type && \"variable\" !== wpmDataLayer.shop.product_type && wpm.getMainProductIdFromProductPage()) {\n\n\t\t\t\tlet product = wpm.getProductDataForViewItemEvent(wpm.getMainProductIdFromProductPage())\n\t\t\t\tjQuery(document).trigger(\"wpmViewItem\", product)\n\n\t\t\t} else if (\"product_category\" === wpmDataLayer.shop.page_type) {\n\n\t\t\t\tjQuery(document).trigger(\"wpmCategory\")\n\n\t\t\t} else if (\"search\" === wpmDataLayer.shop.page_type) {\n\n\t\t\t\tjQuery(document).trigger(\"wpmSearch\")\n\n\t\t\t} else if (\"cart\" === wpmDataLayer.shop.page_type) {\n\n\t\t\t\tjQuery(document).trigger(\"wpmViewCart\")\n\n\t\t\t} else if (\"order_received_page\" === wpmDataLayer.shop.page_type && wpmDataLayer.order) {\n\n\t\t\t\tif (!wpm.isOrderIdStored(wpmDataLayer.order.id)) {\n\n\t\t\t\t\tjQuery(document).trigger(\"wpmOrderReceivedPage\")\n\t\t\t\t\twpm.writeOrderIdToStorage(wpmDataLayer.order.id)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tjQuery(document).trigger(\"wpmEverywhereElse\")\n\t\t\t}\n\n\t\t\tif (wpmDataLayer?.user?.id && !wpm.hasLoginEventFired()) {\n\t\t\t\tjQuery(document).trigger(\"wpmLogin\")\n\t\t\t\twpm.setLoginEventFired()\n\t\t\t}\n\n\t\t\t// /**\n\t\t\t// * Load mini cart fragments into a wpm session storage key,\n\t\t\t// * after the document load event.\n\t\t\t// */\n\t\t\t// jQuery(document).ajaxSend(function (event, jqxhr, settings) {\n\t\t\t// \t// console.log('settings.url: ' + settings.url);\n\t\t\t//\n\t\t\t// \tif (settings.url.includes(\"get_refreshed_fragments\") && sessionStorage) {\n\t\t\t// \t\tif (!sessionStorage.getItem(\"wpmMiniCartActive\")) {\n\t\t\t// \t\t\tsessionStorage.setItem(\"wpmMiniCartActive\", JSON.stringify(true))\n\t\t\t// \t\t}\n\t\t\t// \t}\n\t\t\t// })\n\n\t\t\twpmDataLayer.wpmLoadFired = true\n\t\t}\n\n\t} catch (e) {\n\t\tconsole.error(e)\n\t}\n})\n\n/**\n * Load all pixels\n */\njQuery(window).on(\"wpmPreLoadPixels\", function () {\n\n\tif (wpmDataLayer?.shop?.cookie_consent_mgmt?.explicit_consent && !wpm.explicitConsentStateAlreadySet()) {\n\t\twpm.updateConsentCookieValues(null, null,true)\n\t}\n\n\tjQuery(document).trigger(\"wpmLoadPixels\", {})\n})\n","/**\n * Create a wpm namespace under which all functions are declared\n */\n\n// https://stackoverflow.com/a/5947280/4688612\n\n(function (wpm, $, undefined) {\n\n\tconst wpmDeduper = {\n\t\tkeyName : \"_wpm_order_ids\",\n\t\tcookieExpiresDays: 365,\n\t}\n\n\tconst wpmRestSettings = {\n\t\t// cookiesAvailable : '_wpm_cookies_are_available',\n\t\tcookieWpmRestEndpointAvailable: \"_wpm_endpoint_available\",\n\t\trestEndpoint : \"/wp-json/\",\n\t\trestFails : 0,\n\t\trestFailsThreshold : 10,\n\t}\n\n\twpm.emailSelected = false\n\twpm.paymentMethodSelected = false\n\n\t// wpm.checkIfCookiesAvailable = function () {\n\t//\n\t// // read the cookie if previously set, if it is return true, otherwise continue\n\t// if (wpm.getCookie(wpmRestSettings.cookiesAvailable)) {\n\t// return true;\n\t// }\n\t//\n\t// // set the cookie for the session\n\t// Cookies.set(wpmRestSettings.cookiesAvailable, true);\n\t//\n\t// // read cookie, true if ok, false if not ok\n\t// return !!wpm.getCookie(wpmRestSettings.cookiesAvailable);\n\t// }\n\n\twpm.useRestEndpoint = () => {\n\n\t\t// only if sessionStorage is available\n\n\t\t// only if REST API endpoint is generally accessible\n\t\t// check in sessionStorage if we checked before and return answer\n\t\t// otherwise check if the endpoint is available, save answer in sessionStorage and return answer\n\n\t\t// only if not too many REST API errors happened\n\n\t\treturn wpm.isSessionStorageAvailable() &&\n\t\t\twpm.isRestEndpointAvailable() &&\n\t\t\twpm.isBelowRestErrorThreshold()\n\t}\n\n\twpm.isBelowRestErrorThreshold = () => window.sessionStorage.getItem(wpmRestSettings.restFails) <= wpmRestSettings.restFailsThreshold\n\n\twpm.isRestEndpointAvailable = () => {\n\n\t\tif (window.sessionStorage.getItem(wpmRestSettings.cookieWpmRestEndpointAvailable)) {\n\t\t\treturn JSON.parse(window.sessionStorage.getItem(wpmRestSettings.cookieWpmRestEndpointAvailable))\n\t\t} else {\n\t\t\t// return wpm.testEndpoint();\n\t\t\t// just set the value whenever possible in order not to wait or block the main thread\n\t\t\twpm.testEndpoint()\n\t\t}\n\t}\n\n\twpm.isSessionStorageAvailable = () => !!window.sessionStorage\n\n\twpm.testEndpoint = (\n\t\turl = location.protocol + \"//\" + location.host + wpmRestSettings.restEndpoint,\n\t\tcookieName = wpmRestSettings.cookieWpmRestEndpointAvailable,\n\t) => {\n\t\t// console.log('testing endpoint');\n\n\t\tjQuery.ajax(url, {\n\t\t\ttype : \"HEAD\",\n\t\t\ttimeout: 1000,\n\t\t\t// async: false,\n\t\t\tstatusCode: {\n\t\t\t\t200: function (response) {\n\t\t\t\t\t// Cookies.set(cookieName, true);\n\t\t\t\t\t// console.log('endpoint works');\n\t\t\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(true))\n\t\t\t\t},\n\t\t\t\t404: function (response) {\n\t\t\t\t\t// Cookies.set(cookieName, false);\n\t\t\t\t\t// console.log('endpoint doesn\\'t work');\n\t\t\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(false))\n\t\t\t\t},\n\t\t\t\t0 : function (response) {\n\t\t\t\t\t// Cookies.set(cookieName, false);\n\t\t\t\t\t// console.log('endpoint doesn\\'t work');\n\t\t\t\t\twindow.sessionStorage.setItem(cookieName, JSON.stringify(false))\n\t\t\t\t},\n\t\t\t},\n\t\t}).then(response => {\n\t\t\t// console.log('test done')\n\t\t\t// console.log('result: ' + JSON.parse(window.sessionStorage.getItem(cookieName)));\n\t\t\t// return JSON.parse(window.sessionStorage.getItem(cookieName));\n\t\t})\n\t}\n\n\twpm.isWpmRestEndpointAvailable = (cookieName = wpmRestSettings.cookieWpmRestEndpointAvailable) => !!wpm.getCookie(cookieName)\n\n\twpm.writeOrderIdToStorage = (orderId, expireDays = 365) => {\n\n\t\t// save the order ID in the browser storage\n\n\t\tif (!window.Storage) {\n\t\t\tlet expiresDate = new Date()\n\t\t\texpiresDate.setDate(expiresDate.getDate() + wpmDeduper.cookieExpiresDays)\n\n\t\t\tlet ids = []\n\t\t\tif (checkCookie()) {\n\t\t\t\tids = JSON.parse(wpm.getCookie(wpmDeduper.keyName))\n\t\t\t}\n\n\t\t\tif (!ids.includes(orderId)) {\n\t\t\t\tids.push(orderId)\n\t\t\t\tdocument.cookie = wpmDeduper.keyName + \"=\" + JSON.stringify(ids) + \";expires=\" + expiresDate.toUTCString()\n\t\t\t}\n\n\t\t} else {\n\t\t\tif (localStorage.getItem(wpmDeduper.keyName) === null) {\n\t\t\t\tlet ids = []\n\t\t\t\tids.push(orderId)\n\t\t\t\twindow.localStorage.setItem(wpmDeduper.keyName, JSON.stringify(ids))\n\n\t\t\t} else {\n\t\t\t\tlet ids = JSON.parse(localStorage.getItem(wpmDeduper.keyName))\n\t\t\t\tif (!ids.includes(orderId)) {\n\t\t\t\t\tids.push(orderId)\n\t\t\t\t\twindow.localStorage.setItem(wpmDeduper.keyName, JSON.stringify(ids))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (typeof wpm.storeOrderIdOnServer === \"function\" && wpmDataLayer.orderDeduplication) {\n\t\t\twpm.storeOrderIdOnServer(orderId)\n\t\t}\n\t}\n\n\tfunction checkCookie() {\n\t\tlet key = wpm.getCookie(wpmDeduper.keyName)\n\t\treturn key !== \"\"\n\t}\n\n\twpm.isOrderIdStored = orderId => {\n\n\t\tif (wpmDataLayer.orderDeduplication) {\n\n\t\t\tif (!window.Storage) {\n\n\t\t\t\tif (checkCookie()) {\n\t\t\t\t\tlet ids = JSON.parse(wpm.getCookie(wpmDeduper.keyName))\n\t\t\t\t\treturn ids.includes(orderId)\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (localStorage.getItem(wpmDeduper.keyName) !== null) {\n\t\t\t\t\tlet ids = JSON.parse(localStorage.getItem(wpmDeduper.keyName))\n\t\t\t\t\treturn ids.includes(orderId)\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.log(\"order duplication prevention: off\")\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.isEmail = email => {\n\n\t\t// https://emailregex.com/\n\n\t\tlet regex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\n\t\treturn regex.test(email)\n\t}\n\n\twpm.removeProductFromCart = (productId, quantityToRemove = null) => {\n\n\t\ttry {\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tlet quantity\n\n\t\t\tif (quantityToRemove == null) {\n\t\t\t\tquantity = wpmDataLayer.cart[productId].quantity\n\t\t\t} else {\n\t\t\t\tquantity = quantityToRemove\n\t\t\t}\n\n\t\t\tif (wpmDataLayer.cart[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\n\t\t\t\tjQuery(document).trigger(\"wpmRemoveFromCart\", product)\n\n\t\t\t\tif (quantityToRemove == null || wpmDataLayer.cart[productId].quantity === quantityToRemove) {\n\n\t\t\t\t\tdelete wpmDataLayer.cart[productId]\n\n\t\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t\t} else {\n\n\t\t\t\t\twpmDataLayer.cart[productId].quantity = wpmDataLayer.cart[productId].quantity - quantity\n\n\t\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t\t// console.log('getting cart from back end');\n\t\t\t// wpm.getCartItemsFromBackend();\n\t\t\t// console.log('getting cart from back end done');\n\t\t}\n\t}\n\n\twpm.getIdBasedOndVariationsOutputSetting = productId => {\n\n\t\ttry {\n\t\t\tif (wpmDataLayer?.general?.variationsOutput) {\n\n\t\t\t\treturn productId\n\t\t\t} else {\n\t\t\t\tif (wpmDataLayer.products[productId].isVariation) {\n\n\t\t\t\t\treturn wpmDataLayer.products[productId].parentId\n\t\t\t\t} else {\n\n\t\t\t\t\treturn productId\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// add_to_cart\n\twpm.addProductToCart = (productId, quantity) => {\n\n\t\ttry {\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\t\tif (wpmDataLayer?.products[productId]) {\n\n\t\t\t\tlet product = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\n\t\t\t\tjQuery(document).trigger(\"wpmAddToCart\", product)\n\n\t\t\t\t// add product to cart wpmDataLayer['cart']\n\n\t\t\t\t// if the product already exists in the object, only add the additional quantity\n\t\t\t\t// otherwise create that product object in the wpmDataLayer['cart']\n\t\t\t\tif (wpmDataLayer?.cart[productId]) {\n\n\t\t\t\t\twpmDataLayer.cart[productId].quantity = wpmDataLayer.cart[productId].quantity + quantity\n\t\t\t\t} else {\n\n\t\t\t\t\tif (!(\"cart\" in wpmDataLayer)) wpmDataLayer.cart = {}\n\n\t\t\t\t\twpmDataLayer.cart[productId] = wpm.getProductDetailsFormattedForEvent(productId, quantity)\n\t\t\t\t}\n\n\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(wpmDataLayer.cart))\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\n\t\t\t// fallback if wpmDataLayer.cart and wpmDataLayer.products got out of sync in case cart caching has an issue\n\t\t\twpm.getCartItemsFromBackend()\n\t\t}\n\t}\n\n\twpm.getCartItems = () => {\n\n\t\tif (sessionStorage) {\n\t\t\tif (!sessionStorage.getItem(\"wpmDataLayerCart\") || wpmDataLayer.shop.page_type === \"order_received_page\") {\n\t\t\t\tsessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify({}))\n\t\t\t} else {\n\t\t\t\twpm.saveCartObjectToDataLayer(JSON.parse(sessionStorage.getItem(\"wpmDataLayerCart\")))\n\t\t\t}\n\t\t} else {\n\t\t\twpm.getCartItemsFromBackend()\n\t\t}\n\t}\n\n\t// get all cart items from the backend\n\twpm.getCartItemsFromBackend = () => {\n\t\ttry {\n\t\t\tlet data = {\n\t\t\t\taction: \"wpm_get_cart_items\",\n\t\t\t}\n\n\t\t\tjQuery.ajax(\n\t\t\t\t{\n\t\t\t\t\ttype : \"get\",\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\t// url : ajax_object.ajax_url,\n\t\t\t\t\turl : wpm.ajax_url,\n\t\t\t\t\tdata : data,\n\t\t\t\t\tsuccess: function (cartItems) {\n\n\t\t\t\t\t\t// save all cart items into wpmDataLayer\n\n\t\t\t\t\t\tif (!cartItems[\"cart\"]) cartItems[\"cart\"] = {}\n\n\t\t\t\t\t\twpm.saveCartObjectToDataLayer(cartItems[\"cart\"])\n\n\t\t\t\t\t\tif (sessionStorage) sessionStorage.setItem(\"wpmDataLayerCart\", JSON.stringify(cartItems[\"cart\"]))\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// get productIds from the backend\n\twpm.getProductsFromBackend = productIds => {\n\n\n\t\t// reduce productIds by products already in the dataLayer\n\t\tproductIds = productIds.filter(item => !wpmDataLayer.products.hasOwnProperty(item))\n\n\t\t// if no products IDs are in the object, don't try to get anything from the server\n\t\tif (!productIds || productIds.length === 0) return\n\n\t\ttry {\n\t\t\tlet data = {\n\t\t\t\taction : \"wpm_get_product_ids\",\n\t\t\t\tproductIds: productIds,\n\t\t\t}\n\n\t\t\tjQuery.ajax(\n\t\t\t\t{\n\t\t\t\t\ttype : \"get\",\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\t// url : ajax_object.ajax_url,\n\t\t\t\t\turl : wpm.ajax_url,\n\t\t\t\t\tdata : data,\n\t\t\t\t\tsuccess: function (products) {\n\n\t\t\t\t\t\t// merge products into wpmDataLayer.products\n\t\t\t\t\t\twpmDataLayer.products = Object.assign({}, wpmDataLayer.products, products)\n\t\t\t\t\t},\n\t\t\t\t\terror : function (response) {\n\t\t\t\t\t\tconsole.log(response)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.saveCartObjectToDataLayer = cartObject => {\n\n\t\twpmDataLayer.cart = cartObject\n\t\twpmDataLayer.products = Object.assign({}, wpmDataLayer.products, cartObject)\n\t}\n\n\twpm.fireCheckoutOption = (step, checkout_option = null, value = null) => {\n\n\t\tlet data = {\n\t\t\tstep : step,\n\t\t\tcheckout_option: checkout_option,\n\t\t\tvalue : value,\n\t\t}\n\n\t\tjQuery(document).trigger(\"wpmFireCheckoutOption\", data)\n\t}\n\n\twpm.fireCheckoutProgress = step => {\n\n\t\tlet data = {\n\t\t\tstep: step,\n\t\t}\n\n\t\tjQuery(document).trigger(\"wpmFireCheckoutProgress\", data)\n\t}\n\n\twpm.getPostIdFromString = string => {\n\n\t\ttry {\n\t\t\treturn string.match(/(post-)(\\d+)/)[2]\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.triggerViewItemList = productId => {\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\tproductId = wpm.getIdBasedOndVariationsOutputSetting(productId)\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\tjQuery(document).trigger(\"wpmViewItemList\", wpm.getProductDataForViewItemEvent(productId))\n\t}\n\n\twpm.getProductDataForViewItemEvent = productId => {\n\n\t\tif (!productId) throw Error(\"Wasn't able to retrieve a productId\")\n\n\t\ttry {\n\t\t\tif (wpmDataLayer.products[productId]) {\n\n\t\t\t\treturn wpm.getProductDetailsFormattedForEvent(productId)\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.getMainProductIdFromProductPage = () => {\n\n\t\ttry {\n\t\t\tif ([\"simple\", \"variable\", \"grouped\", \"composite\", \"bundle\"].indexOf(wpmDataLayer.shop.product_type) >= 0) {\n\t\t\t\treturn jQuery(\".wpmProductId:first\").data(\"id\")\n\t\t\t} else {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.viewItemListTriggerTestMode = target => {\n\n\t\tjQuery(target).css({\"position\": \"relative\"})\n\t\tjQuery(target).append(\"<div id=\\\"viewItemListTriggerOverlay\\\"></div>\")\n\t\tjQuery(target).find(\"#viewItemListTriggerOverlay\").css({\n\t\t\t\"z-index\" : \"10\",\n\t\t\t\"display\" : \"block\",\n\t\t\t\"position\" : \"absolute\",\n\t\t\t\"height\" : \"100%\",\n\t\t\t\"top\" : \"0\",\n\t\t\t\"left\" : \"0\",\n\t\t\t\"right\" : \"0\",\n\t\t\t\"opacity\" : wpmDataLayer.viewItemListTrigger.opacity,\n\t\t\t\"background-color\": wpmDataLayer.viewItemListTrigger.backgroundColor,\n\t\t})\n\t}\n\n\twpm.getSearchTermFromUrl = () => {\n\n\t\ttry {\n\t\t\tlet urlParameters = new URLSearchParams(window.location.search)\n\t\t\treturn urlParameters.get(\"s\")\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// we need this to track timeouts for intersection observers\n\tlet ioTimeouts = {}\n\n\twpm.observerCallback = (entries, observer) => {\n\n\t\tentries.forEach((entry) => {\n\n\t\t\ttry {\n\t\t\t\tlet productId\n\n\t\t\t\tlet elementId = jQuery(entry.target).data(\"ioid\")\n\n\t\t\t\t// Get the productId from next element, if wpmProductId is a sibling, like in Gutenberg blocks\n\t\t\t\t// otherwise go search in children, like in regular WC loop items\n\t\t\t\tif (jQuery(entry.target).next(\".wpmProductId\").length) {\n\t\t\t\t\t// console.log('test 1');\n\t\t\t\t\tproductId = jQuery(entry.target).next(\".wpmProductId\").data(\"id\")\n\t\t\t\t} else {\n\t\t\t\t\tproductId = jQuery(entry.target).find(\".wpmProductId\").data(\"id\")\n\t\t\t\t}\n\n\n\t\t\t\tif (!productId) throw Error(\"wpmProductId element not found\")\n\n\t\t\t\tif (entry.isIntersecting) {\n\n\t\t\t\t\tioTimeouts[elementId] = setTimeout(() => {\n\n\t\t\t\t\t\twpm.triggerViewItemList(productId)\n\t\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.testMode) wpm.viewItemListTriggerTestMode(entry.target)\n\t\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.repeat === false) observer.unobserve(entry.target)\n\t\t\t\t\t}, wpmDataLayer.viewItemListTrigger.timeout)\n\n\t\t\t\t} else {\n\n\t\t\t\t\tclearTimeout(ioTimeouts[elementId])\n\t\t\t\t\tif (wpmDataLayer.viewItemListTrigger.testMode) jQuery(entry.target).find(\"#viewItemListTriggerOverlay\").remove()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e)\n\t\t\t}\n\t\t})\n\t}\n\n\t// fire view_item_list only on products that have become visible\n\tlet io\n\tlet ioid = 0\n\tlet allIoElementsToWatch\n\n\tlet getAllElementsToWatch = () => {\n\n\t\tallIoElementsToWatch = jQuery(\".wpmProductId\")\n\t\t\t.map(function (i, elem) {\n\n\t\t\t\tif (\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"type-product\") ||\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"product\") ||\n\t\t\t\t\tjQuery(elem).parent().hasClass(\"product-item-inner\")\n\t\t\t\t) {\n\t\t\t\t\treturn jQuery(elem).parent()\n\t\t\t\t} else if (\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"wc-block-grid__product\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"product\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"product-small\") ||\n\t\t\t\t\tjQuery(elem).prev().hasClass(\"woocommerce-LoopProduct-link\")\n\t\t\t\t) {\n\t\t\t\t\treturn jQuery(this).prev()\n\t\t\t\t} else if (jQuery(elem).closest(\".product\").length) {\n\t\t\t\t\treturn jQuery(elem).closest(\".product\")\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\twpm.startIntersectionObserverToWatch = () => {\n\n\t\ttry {\n\t\t\t// enable view_item_list test mode from browser\n\t\t\tif (wpm.urlHasParameter(\"vildemomode\")) wpmDataLayer.viewItemListTrigger.testMode = true\n\n\t\t\t// set up intersection observer\n\t\t\tio = new IntersectionObserver(wpm.observerCallback, {\n\t\t\t\tthreshold: wpmDataLayer.viewItemListTrigger.threshold,\n\t\t\t})\n\n\t\t\tgetAllElementsToWatch()\n\n\t\t\tallIoElementsToWatch.each((i, elem) => {\n\n\t\t\t\tjQuery(elem[0]).data(\"ioid\", ioid++)\n\n\t\t\t\tio.observe(elem[0])\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// watch DOM for new lazy loaded products and add them to the intersection observer\n\twpm.startProductsMutationObserverToWatch = () => {\n\n\t\ttry {\n\t\t\t// Pass in the target node, as well as the observer options\n\n\t\t\t// selects the most common parent node\n\t\t\t// https://stackoverflow.com/a/7648323/4688612\n\t\t\tlet productsNode = jQuery(\".wpmProductId:eq(0)\").parents().has(jQuery(\".wpmProductId:eq(1)\").parents()).first()\n\n\t\t\tif (productsNode.length) {\n\t\t\t\tproductsMutationObserver.observe(productsNode[0], {\n\t\t\t\t\tattributes : true,\n\t\t\t\t\tchildList : true,\n\t\t\t\t\tcharacterData: true,\n\t\t\t\t})\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\t// Create an observer instance\n\tlet productsMutationObserver = new MutationObserver(mutations => {\n\n\t\tmutations.forEach(mutation => {\n\t\t\tlet newNodes = mutation.addedNodes // DOM NodeList\n\t\t\tif (newNodes !== null) { // If there are new nodes added\n\t\t\t\tlet nodes = jQuery(newNodes) // jQuery set\n\t\t\t\tnodes.each(function () {\n\t\t\t\t\tif (\n\t\t\t\t\t\tjQuery(this).hasClass(\"type-product\") ||\n\t\t\t\t\t\tjQuery(this).hasClass(\"product-small\") ||\n\t\t\t\t\t\tjQuery(this).hasClass(\"wc-block-grid__product\")\n\t\t\t\t\t) {\n\t\t\t\t\t\t// check if the node has a child or sibling wpmProductId\n\t\t\t\t\t\t// if yes add it to the intersectionObserver\n\t\t\t\t\t\tif (hasWpmProductIdElement(this)) {\n\t\t\t\t\t\t\tjQuery(this).data(\"ioid\", ioid++)\n\t\t\t\t\t\t\tio.observe(this)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t})\n\n\tlet hasWpmProductIdElement = elem =>\n\t\t!!(jQuery(elem).find(\".wpmProductId\").length ||\n\t\tjQuery(elem).siblings(\".wpmProductId\").length)\n\n\twpm.setCookie = (cookieName, cookieValue = \"\", expiryDays = null) => {\n\n\t\tif (expiryDays) {\n\n\t\t\tlet d = new Date()\n\t\t\td.setTime(d.getTime() + (expiryDays * 24 * 60 * 60 * 1000))\n\t\t\tlet expires = \"expires=\" + d.toUTCString()\n\t\t\tdocument.cookie = cookieName + \"=\" + cookieValue + \";\" + expires + \";path=/\"\n\t\t} else {\n\t\t\tdocument.cookie = cookieName + \"=\" + cookieValue + \";path=/\"\n\t\t}\n\t}\n\n\twpm.getCookie = cookieName => {\n\n\t\tlet name = cookieName + \"=\"\n\t\tlet decodedCookie = decodeURIComponent(document.cookie)\n\t\tlet ca = decodedCookie.split(\";\")\n\n\t\tfor (let i = 0; i < ca.length; i++) {\n\n\t\t\tlet c = ca[i]\n\n\t\t\twhile (c.charAt(0) == \" \") {\n\t\t\t\tc = c.substring(1)\n\t\t\t}\n\n\t\t\tif (c.indexOf(name) == 0) {\n\t\t\t\treturn c.substring(name.length, c.length)\n\t\t\t}\n\t\t}\n\n\t\treturn \"\"\n\t}\n\n\twpm.getWpmSessionData = () => {\n\n\t\tif (window.sessionStorage) {\n\n\t\t\tlet data = window.sessionStorage.getItem(\"_wpm\")\n\n\t\t\tif (data !== null) {\n\t\t\t\treturn JSON.parse(data)\n\t\t\t} else {\n\t\t\t\treturn {}\n\t\t\t}\n\t\t} else {\n\t\t\treturn {}\n\t\t}\n\t}\n\n\twpm.setWpmSessionData = data => {\n\t\tif (window.sessionStorage) {\n\t\t\twindow.sessionStorage.setItem(\"_wpm\", JSON.stringify(data))\n\t\t}\n\t}\n\n\twpm.storeOrderIdOnServer = orderId => {\n\n\t\ttry {\n\t\t\t// save the state in the database\n\t\t\tlet data = {\n\t\t\t\taction : \"wpm_purchase_pixels_fired\",\n\t\t\t\torder_id: orderId,\n\t\t\t\t// nonce : ajax_object.nonce,\n\t\t\t\tnonce: wpm.nonce,\n\t\t\t}\n\n\t\t\tjQuery.ajax(\n\t\t\t\t{\n\t\t\t\t\ttype : \"post\",\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\t// url : ajax_object.ajax_url,\n\t\t\t\t\turl : wpm.ajax_url,\n\t\t\t\t\tdata : data,\n\t\t\t\t\tsuccess: function (response) {\n\t\t\t\t\t\tif (response.success === false) {\n\t\t\t\t\t\t\tconsole.log(response)\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\terror : function (response) {\n\t\t\t\t\t\tconsole.log(response)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t}\n\t}\n\n\twpm.getProductIdByCartItemKeyUrl = url => {\n\n\t\tlet searchParams = new URLSearchParams(url.search)\n\t\tlet cartItemKey = searchParams.get(\"remove_item\")\n\n\t\tlet productId\n\n\t\tif (wpmDataLayer.cartItemKeys[cartItemKey][\"variation_id\"] === 0) {\n\t\t\tproductId = wpmDataLayer.cartItemKeys[cartItemKey][\"product_id\"]\n\t\t} else {\n\t\t\tproductId = wpmDataLayer.cartItemKeys[cartItemKey][\"variation_id\"]\n\t\t}\n\n\t\treturn productId\n\t}\n\n\twpm.getAddToCartLinkProductIds = () =>\n\t\tjQuery(\"a\").map(function () {\n\t\t\tlet href = jQuery(this).attr(\"href\")\n\n\t\t\tif (href && href.includes(\"?add-to-cart=\")) {\n\t\t\t\tlet matches = href.match(/(add-to-cart=)(\\d+)/)\n\t\t\t\tif (matches) return matches[2]\n\t\t\t}\n\t\t}).get()\n\n\twpm.getProductDetailsFormattedForEvent = (productId, quantity = 1) => {\n\n\t\tlet product = {\n\t\t\tid : productId.toString(),\n\t\t\tdyn_r_ids : wpmDataLayer.products[productId].dyn_r_ids,\n\t\t\tname : wpmDataLayer.products[productId].name,\n\t\t\tlist_name : wpmDataLayer.shop.list_name,\n\t\t\tbrand : wpmDataLayer.products[productId].brand,\n\t\t\tcategory : wpmDataLayer.products[productId].category,\n\t\t\tvariant : wpmDataLayer.products[productId].variant,\n\t\t\tlist_position: wpmDataLayer.products[productId].position,\n\t\t\tquantity : quantity,\n\t\t\tprice : wpmDataLayer.products[productId].price,\n\t\t\tcurrency : wpmDataLayer.shop.currency,\n\t\t\tisVariable : wpmDataLayer.products[productId].isVariable,\n\t\t\tisVariation : wpmDataLayer.products[productId].isVariation,\n\t\t\tparentId : wpmDataLayer.products[productId].parentId,\n\t\t}\n\n\t\tif (product.isVariation) product[\"parentId_dyn_r_ids\"] = wpmDataLayer.products[productId].parentId_dyn_r_ids\n\n\t\treturn product\n\t}\n\n\twpm.setReferrerToCookie = () => {\n\n\t\t// can't use session storage as we can't read it from the server\n\t\tif (!wpm.getCookie(\"wpmReferrer\")) {\n\t\t\twpm.setCookie(\"wpmReferrer\", document.referrer)\n\t\t}\n\t}\n\n\twpm.getReferrerFromCookie = () => {\n\n\t\tif (wpm.getCookie(\"wpmReferrer\")) {\n\t\t\treturn wpm.getCookie(\"wpmReferrer\")\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t}\n\n\twpm.getClidFromBrowser = (clidId = \"gclid\") => {\n\n\t\tlet clidCookieId\n\n\t\tclidCookieId = {\n\t\t\tgclid: \"_gcl_aw\",\n\t\t\tdclid: \"_gcl_dc\",\n\t\t}\n\n\t\tif (wpm.getCookie(clidCookieId[clidId])) {\n\n\t\t\tlet clidCookie = wpm.getCookie(clidCookieId[clidId])\n\t\t\tlet matches = clidCookie.match(/(GCL.[\\d]*.)(.*)/)\n\t\t\treturn matches[2]\n\t\t} else {\n\t\t\treturn \"\"\n\t\t}\n\t}\n\n\twpm.getUserAgent = () => navigator.userAgent\n\n\twpm.getViewPort = () => ({\n\t\twidth : Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0),\n\t\theight: Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0),\n\t})\n\n\n\twpm.version = () => {\n\t\tconsole.log(wpmDataLayer.version)\n\t}\n\n\t// https://api.jquery.com/jquery.getscript/\n\twpm.loadScriptAndCacheIt = (url, options) => {\n\n\t\t// Allow user to set any option except for dataType, cache, and url\n\t\toptions = jQuery.extend(options || {}, {\n\t\t\tdataType: \"script\",\n\t\t\tcache : true,\n\t\t\turl : url,\n\t\t})\n\n\t\t// Use $.ajax() since it is more flexible than $.getScript\n\t\t// Return the jqXHR object so we can chain callbacks\n\t\treturn jQuery.ajax(options)\n\t}\n\n\twpm.getOrderItemPrice = orderItem => (orderItem.total + orderItem.total_tax) / orderItem.quantity\n\n\twpm.hasLoginEventFired = () => {\n\t\tlet data = wpm.getWpmSessionData()\n\t\treturn data?.loginEventFired\n\t}\n\n\twpm.setLoginEventFired = () => {\n\t\tlet data = wpm.getWpmSessionData()\n\t\tdata[\"loginEventFired\"] = true\n\t\twpm.setWpmSessionData(data)\n\t}\n\n\twpm.wpmDataLayerExists = () => new Promise(resolve => {\n\t\t(function waitForVar() {\n\t\t\tif (typeof wpmDataLayer !== \"undefined\") return resolve()\n\t\t\tsetTimeout(waitForVar, 50)\n\t\t})()\n\t})\n\n\twpm.jQueryExists = () => new Promise(resolve => {\n\t\t(function waitForjQuery() {\n\t\t\tif (typeof jQuery !== \"undefined\") return resolve()\n\t\t\tsetTimeout(waitForjQuery, 100)\n\t\t})()\n\t})\n\n\twpm.pageLoaded = () => new Promise(resolve => {\n\t\t(function waitForVar() {\n\t\t\tif (\"complete\" === document.readyState) return resolve()\n\t\t\tsetTimeout(waitForVar, 50)\n\t\t})()\n\t})\n\n\twpm.pageReady = () => {\n\t\treturn new Promise(resolve => {\n\t\t\t(function waitForVar() {\n\t\t\t\tif (\"interactive\" === document.readyState || \"complete\" === document.readyState) return resolve()\n\t\t\t\tsetTimeout(waitForVar, 50)\n\t\t\t})()\n\t\t})\n\t}\n\n\twpm.isMiniCartActive = () => {\n\t\tif (window.sessionStorage) {\n\t\t\tfor (const [key, value] of Object.entries(window.sessionStorage)) {\n\t\t\t\tif (key.includes(\"wc_fragments\")) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\twpm.doesWooCommerceCartExist = () => document.cookie.includes(\"woocommerce_items_in_cart\")\n\n\twpm.urlHasParameter = parameter => {\n\t\tlet urlParams = new URLSearchParams(window.location.search)\n\t\treturn urlParams.has(parameter)\n\t}\n\n}(window.wpm = window.wpm || {}, jQuery))\n","/**\n * Load all WPM functions\n *\n * Ignore event listeners. They need to be loaded after\n * we made sure that jQuery has been loaded.\n */\n\nrequire(\"./functions\")\nrequire(\"./cookie_consent\")\n\n// #if process.env.TIER === 'premium'\n// require(\"./functions_premium\")\n// #endif\n","/**\n * After WPM is loaded\n * we first check if wpmDataLayer is loaded,\n * and as soon as it is, we load the pixels,\n * and as soon as the page load is complete,\n * we fire the wpmLoad event.\n *\n * @param {{pro:bool}} wpmDataLayer.version\n *\n * https://stackoverflow.com/a/25868457/4688612\n * https://stackoverflow.com/a/44093516/4688612\n */\n\nwpm.wpmDataLayerExists()\n\t.then(function () {\n\t\tconsole.log(\"WooCommerce Pixel Manager: \" + (wpmDataLayer.version.pro ? \"Pro\" : \"Free\") +\" Version \" + wpmDataLayer.version.number + \" loaded\")\n\t\tjQuery(document).trigger(\"wpmPreLoadPixels\", {})\n\t})\n\t.then(function () {\n\t\twpm.pageLoaded().then(function () {\n\t\t\tjQuery(document).trigger(\"wpmLoad\", {})\n\t\t})\n\t})\n\n\n\n/**\n * Run when page is ready\n *\n */\n\nwpm.pageReady().then(function () {\n\n\t/**\n\t * Run as soon as wpm namespace is loaded\n\t */\n\n\twpm.wpmDataLayerExists()\n\t\t.then(function () {\n\t\t\t// watch for products visible in viewport\n\t\t\twpm.startIntersectionObserverToWatch()\n\n\t\t\t// watch for lazy loaded products\n\t\t\twpm.startProductsMutationObserverToWatch()\n\t\t})\n})\n\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/**\n * Load all essential scripts first\n */\n\nrequire(\"./wpm/functions_loader\")\n\n// Only load the event listeners after jQuery has been loaded for sure\nwpm.jQueryExists().then(function () {\n\n\trequire(\"./wpm/event_listeners\")\n\n\trequire(\"./google/loader\")\n\trequire(\"./facebook/loader\")\n\trequire(\"./hotjar/loader\")\n\n\t/**\n\t * Load all premium scripts\n\t */\n\n\t// #if process.env.TIER === 'premium'\n// \trequire(\"./microsoft-ads/loader\")\n// \trequire(\"./pinterest/loader\")\n// \trequire(\"./snapchat/loader\")\n// \trequire(\"./tiktok/loader\")\n// \trequire(\"./twitter/loader\")\n\t// #endif\n\n\n\t/**\n\t * Initiate WPM.\n\t *\n\t * It makes sure that the script flow gets executed correctly,\n\t * no matter how JS \"optimizers\" shuffle the code.\n\t */\n\n\trequire(\"./wpm/init\")\n})\n\n"],"names":["jQuery","document","on","wpmDataLayer","pixels","facebook","pixel_id","loaded","wpm","canIFire","loadFacebookPixel","event","product","eventId","getRandomEventId","fbq","content_type","content_name","name","content_ids","dyn_r_ids","dynamic_remarketing","id_type","value","parseFloat","quantity","price","currency","eventID","shop","trigger","event_name","event_id","user_data","getFbUserData","product_data","product_id","event_source_url","window","location","href","e","console","error","fbViewContent","setFbUserData","order","value_filtered","facebookContentIds","id","$","undefined","fBUserData","f","b","n","callMethod","apply","arguments","queue","push","_fbq","version","t","createElement","async","src","s","getElementsByTagName","parentNode","insertBefore","Math","random","toString","substring","getFbUserDataFromBrowser","data","getCookie","fbp","user","external_id","navigator","userAgent","client_user_agent","prodIds","key","item","Object","entries","items","general","variationsOutput","variation_id","String","products","trackCustomFacebookEvent","eventName","require","isEmptyObject","google","ads","conversionIds","status","googleConfigConditionsMet","isVariable","send_events_with_parent_ids","gtagLoaded","then","gtag","send_to","getGoogleAdsConversionIdentifiers","google_business_vertical","getGoogleAdsDynamicRemarketingOrderItems","data_basic","data_with_cart","getGoogleAdsConversionIdentifiersWithLabel","transaction_id","number","new_customer","aw_merchant_id","discount","aw_feed_country","aw_feed_language","getGoogleAdsRegularOrderItems","conversionIdentifiers","orderItems","orderItem","analytics","universal","property_id","mp_active","affiliation","value_regular","tax","shipping","coupon","getGAUAOrderItems","category","join","variant","variant_name","brand","ga3AddListNameToProduct","item_data","productPosition","list_name","list_position","ga4","measurement_id","getGA4OrderItems","item_name","item_category","item_id","item_variant","item_brand","state","canGoogleLoad","loadGoogle","logPreventedPixelLoading","type","consent_mode","active","getConsentValues","mode","categories","includes","getVisitorConsentStatusAndUpdateGoogleConsentSettings","google_consent_settings","analytics_storage","ad_storage","updateGoogleConsentMode","cookie_consent_mgmt","explicit_consent","fireGtagGoogleAds","enhanced_conversions","phone_conversion_label","phone_conversion_number","keys","page_type","enhanced_conversion_data","fireGtagGoogleAnalyticsUA","parameters","fireGtagGoogleAnalyticsGA4","isGoogleActive","getGoogleGtagId","loadScriptAndCacheIt","done","script","textStatus","dataLayer","wait_for_update","region","ads_data_redaction","url_passthrough","linker","settings","Date","Promise","resolve","reject","startTime","wait","setTimeout","optimize","container_id","load_google_optimize_pixel","hotjar","site_id","load_hotjar_pixel","h","o","hj","q","_hjSettings","hjid","hjsv","a","r","appendChild","getComplianzCookies","cmplz_statistics","cmplz_marketing","visitorHasChosen","getCookieLawInfoCookies","analyticsCookie","adsCookie","wpmConsentValues","setConsentValueCategories","updateConsentCookieValues","cookie","explicitConsent","decodeURI","indexOf","JSON","parse","action","length","consents","statistics","marketing","thirdparty","advanced","setConsentDefaultValuesToExplicit","pixelName","canIFireMode","log","scriptTagObserver","MutationObserver","mutations","forEach","addedNodes","node","shouldScriptBeActive","unblockScript","blockScript","observe","head","childList","subtree","disconnect","split","some","element","scriptNode","removeAttach","remove","wpmSrc","attr","appendTo","removeAttr","unblockAllScripts","unblockSelectedPixels","Cookiebot","consent","detail","cmplzStatusChange","cmplzConsentData","huObserver","hu","documentElement","body","explicitConsentStateAlreadySet","url","URL","this","productId","getProductIdByCartItemKeyUrl","removeProductFromCart","addProductToCart","product_type","Number","val","each","find","classes","getPostIdFromString","one","target","closest","matches","match","nextAll","getIdBasedOndVariationsOutputSetting","Error","getProductDetailsFormattedForEvent","isEmail","fireCheckoutProgress","emailSelected","paymentMethodSelected","fireCheckoutOption","cart","getCartItemsFromBackend","variation","microdata_product_id","doesWooCommerceCartExist","getCartItems","productIds","getAddToCartLinkProductIds","getProductsFromBackend","referrer","referrerHostname","hostname","host","setCookie","wpmLoadFired","getMainProductIdFromProductPage","getProductDataForViewItemEvent","isOrderIdStored","writeOrderIdToStorage","hasLoginEventFired","setLoginEventFired","wpmDeduper","wpmRestSettings","checkCookie","useRestEndpoint","isSessionStorageAvailable","isRestEndpointAvailable","isBelowRestErrorThreshold","sessionStorage","getItem","testEndpoint","protocol","cookieName","ajax","timeout","statusCode","response","setItem","stringify","isWpmRestEndpointAvailable","orderId","Storage","localStorage","ids","expiresDate","setDate","getDate","toUTCString","storeOrderIdOnServer","orderDeduplication","email","test","quantityToRemove","isVariation","parentId","saveCartObjectToDataLayer","dataType","ajax_url","success","cartItems","filter","hasOwnProperty","assign","cartObject","step","checkout_option","string","triggerViewItemList","viewItemListTriggerTestMode","css","append","viewItemListTrigger","opacity","backgroundColor","getSearchTermFromUrl","URLSearchParams","search","get","io","ioTimeouts","observerCallback","observer","entry","elementId","next","isIntersecting","testMode","repeat","unobserve","clearTimeout","allIoElementsToWatch","ioid","getAllElementsToWatch","map","i","elem","parent","hasClass","prev","startIntersectionObserverToWatch","urlHasParameter","IntersectionObserver","threshold","startProductsMutationObserverToWatch","productsNode","parents","has","first","productsMutationObserver","attributes","characterData","mutation","newNodes","hasWpmProductIdElement","siblings","cookieValue","expiryDays","d","setTime","getTime","expires","ca","decodeURIComponent","c","charAt","getWpmSessionData","setWpmSessionData","order_id","nonce","cartItemKey","cartItemKeys","position","parentId_dyn_r_ids","setReferrerToCookie","getReferrerFromCookie","getClidFromBrowser","clidCookieId","clidId","gclid","dclid","getUserAgent","getViewPort","width","max","clientWidth","innerWidth","height","clientHeight","innerHeight","options","extend","cache","getOrderItemPrice","total","total_tax","loginEventFired","wpmDataLayerExists","waitForVar","jQueryExists","waitForjQuery","pageLoaded","readyState","pageReady","isMiniCartActive","parameter","pro","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__"],"sourceRoot":""}
|
languages/woocommerce-google-adwords-conversion-tracking-tag.pot
CHANGED
@@ -2,14 +2,14 @@
|
|
2 |
# This file is distributed under the GNU General Public License v3.0.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: WooCommerce Pixel Manager 1.16.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"POT-Creation-Date: 2022-
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.6.0\n"
|
15 |
"X-Domain: woocommerce-google-adwords-conversion-tracking-tag\n"
|
@@ -36,222 +36,222 @@ msgstr ""
|
|
36 |
msgid "https://sweetcode.com"
|
37 |
msgstr ""
|
38 |
|
39 |
-
#: classes/admin/class-admin.php:226
|
40 |
#: classes/admin/class-admin.php:227
|
|
|
41 |
msgid "Pixel Manager"
|
42 |
msgstr ""
|
43 |
|
44 |
-
#: classes/admin/class-admin.php:
|
45 |
msgid "Main"
|
46 |
msgstr ""
|
47 |
|
48 |
-
#: classes/admin/class-admin.php:
|
49 |
msgid "Google"
|
50 |
msgstr ""
|
51 |
|
52 |
-
#: classes/admin/class-admin.php:
|
53 |
msgid "Google Ads Conversion ID"
|
54 |
msgstr ""
|
55 |
|
56 |
-
#: classes/admin/class-admin.php:
|
57 |
msgid "Google Ads Purchase Conversion Label"
|
58 |
msgstr ""
|
59 |
|
60 |
-
#: classes/admin/class-admin.php:
|
61 |
msgid "Google Analytics UA"
|
62 |
msgstr ""
|
63 |
|
64 |
-
#: classes/admin/class-admin.php:
|
65 |
msgid "Google Analytics 4"
|
66 |
msgstr ""
|
67 |
|
68 |
-
#: classes/admin/class-admin.php:
|
69 |
msgid "Google Optimize"
|
70 |
msgstr ""
|
71 |
|
72 |
-
#: classes/admin/class-admin.php:
|
73 |
msgid "Meta (Facebook)"
|
74 |
msgstr ""
|
75 |
|
76 |
-
#: classes/admin/class-admin.php:
|
77 |
msgid "Meta (Facebook) pixel ID"
|
78 |
msgstr ""
|
79 |
|
80 |
-
#: classes/admin/class-admin.php:
|
81 |
msgid "more pixels"
|
82 |
msgstr ""
|
83 |
|
84 |
-
#: classes/admin/class-admin.php:
|
85 |
msgid "Microsoft Advertising UET tag ID"
|
86 |
msgstr ""
|
87 |
|
88 |
-
#: classes/admin/class-admin.php:
|
89 |
msgid "Twitter pixel ID"
|
90 |
msgstr ""
|
91 |
|
92 |
-
#: classes/admin/class-admin.php:
|
93 |
msgid "Pinterest pixel ID"
|
94 |
msgstr ""
|
95 |
|
96 |
-
#: classes/admin/class-admin.php:
|
97 |
msgid "Snapchat pixel ID"
|
98 |
msgstr ""
|
99 |
|
100 |
-
#: classes/admin/class-admin.php:
|
101 |
msgid "TikTok pixel ID"
|
102 |
msgstr ""
|
103 |
|
104 |
-
#: classes/admin/class-admin.php:
|
105 |
msgid "Hotjar site ID"
|
106 |
msgstr ""
|
107 |
|
108 |
-
#: classes/admin/class-admin.php:
|
109 |
msgid "Advanced"
|
110 |
msgstr ""
|
111 |
|
112 |
-
#: classes/admin/class-admin.php:
|
113 |
msgid "Order Total Logic"
|
114 |
msgstr ""
|
115 |
|
116 |
-
#: classes/admin/class-admin.php:
|
117 |
msgid "Order Duplication Prevention"
|
118 |
msgstr ""
|
119 |
|
120 |
-
#: classes/admin/class-admin.php:
|
121 |
msgid "Maximum Compatibility Mode"
|
122 |
msgstr ""
|
123 |
|
124 |
-
#: classes/admin/class-admin.php:
|
125 |
msgid "Disable Tracking for User Roles"
|
126 |
msgstr ""
|
127 |
|
128 |
-
#: classes/admin/class-admin.php:
|
129 |
msgid "Conversion Cart Data"
|
130 |
msgstr ""
|
131 |
|
132 |
-
#: classes/admin/class-admin.php:
|
133 |
msgid "Enhanced E-Commerce"
|
134 |
msgstr ""
|
135 |
|
136 |
-
#: classes/admin/class-admin.php:
|
137 |
msgid "GA 4 API secret"
|
138 |
msgstr ""
|
139 |
|
140 |
-
#: classes/admin/class-admin.php:
|
141 |
msgid "Enhanced Link Attribution"
|
142 |
msgstr ""
|
143 |
|
144 |
-
#: classes/admin/class-admin.php:
|
145 |
msgid "Google User ID"
|
146 |
msgstr ""
|
147 |
|
148 |
-
#: classes/admin/class-admin.php:
|
149 |
msgid "Google Ads Enhanced Conversions"
|
150 |
msgstr ""
|
151 |
|
152 |
-
#: classes/admin/class-admin.php:
|
153 |
msgid "Google Ads Phone Conversion Number"
|
154 |
msgstr ""
|
155 |
|
156 |
-
#: classes/admin/class-admin.php:
|
157 |
msgid "Google Ads Phone Conversion Label"
|
158 |
msgstr ""
|
159 |
|
160 |
-
#: classes/admin/class-admin.php:
|
161 |
msgid "Cookie Consent Management"
|
162 |
msgstr ""
|
163 |
|
164 |
-
#: classes/admin/class-admin.php:
|
165 |
msgid "Google Consent Mode"
|
166 |
msgstr ""
|
167 |
|
168 |
-
#: classes/admin/class-admin.php:
|
169 |
msgid "Google Consent Regions"
|
170 |
msgstr ""
|
171 |
|
172 |
-
#: classes/admin/class-admin.php:
|
173 |
msgid "Explicit Consent Mode"
|
174 |
msgstr ""
|
175 |
|
176 |
-
#: classes/admin/class-admin.php:
|
177 |
msgid "Borlabs Cookie support"
|
178 |
msgstr ""
|
179 |
|
180 |
-
#: classes/admin/class-admin.php:
|
181 |
msgid "Cookiebot support"
|
182 |
msgstr ""
|
183 |
|
184 |
-
#: classes/admin/class-admin.php:
|
185 |
msgid "Complianz GDPR support"
|
186 |
msgstr ""
|
187 |
|
188 |
-
#: classes/admin/class-admin.php:
|
189 |
msgid "Cookie Notice support"
|
190 |
msgstr ""
|
191 |
|
192 |
-
#: classes/admin/class-admin.php:
|
193 |
msgid "Cookie Script support"
|
194 |
msgstr ""
|
195 |
|
196 |
-
#: classes/admin/class-admin.php:
|
197 |
msgid "GDPR Cookie Compliance support"
|
198 |
msgstr ""
|
199 |
|
200 |
-
#: classes/admin/class-admin.php:
|
201 |
msgid "GDPR Cookie Consent support"
|
202 |
msgstr ""
|
203 |
|
204 |
-
#: classes/admin/class-admin.php:
|
205 |
msgid "Meta (Facebook) CAPI: token"
|
206 |
msgstr ""
|
207 |
|
208 |
-
#: classes/admin/class-admin.php:
|
209 |
msgid "Meta (Facebook) CAPI: process anonymous hits"
|
210 |
msgstr ""
|
211 |
|
212 |
-
#: classes/admin/class-admin.php:
|
213 |
msgid "Meta (Facebook) CAPI: send additional visitor identifiers"
|
214 |
msgstr ""
|
215 |
|
216 |
-
#: classes/admin/class-admin.php:
|
217 |
msgid "Meta (Facebook) Microdata Tags for Catalogues"
|
218 |
msgstr ""
|
219 |
|
220 |
-
#: classes/admin/class-admin.php:
|
221 |
-
#: classes/admin/class-admin.php:
|
222 |
-
#: classes/admin/class-admin.php:
|
223 |
msgid "Dynamic Remarketing"
|
224 |
msgstr ""
|
225 |
|
226 |
-
#: classes/admin/class-admin.php:
|
227 |
msgid "Product Identifier"
|
228 |
msgstr ""
|
229 |
|
230 |
-
#: classes/admin/class-admin.php:
|
231 |
msgid "Variations output"
|
232 |
msgstr ""
|
233 |
|
234 |
-
#: classes/admin/class-admin.php:
|
235 |
msgid "Google Business Vertical"
|
236 |
msgstr ""
|
237 |
|
238 |
-
#: classes/admin/class-admin.php:
|
239 |
-
#: classes/admin/class-admin.php:
|
240 |
msgid "Support"
|
241 |
msgstr ""
|
242 |
|
243 |
-
#: classes/admin/class-admin.php:
|
244 |
-
#: classes/admin/class-admin.php:
|
245 |
msgid "Author"
|
246 |
msgstr ""
|
247 |
|
248 |
-
#: classes/admin/class-admin.php:
|
249 |
msgid ""
|
250 |
"It looks like you are using some sort of ad or script blocker which is blocking the script and CSS files of this plugin.\n"
|
251 |
" In order for the plugin to work properly you need to disable the script blocker."
|
252 |
msgstr ""
|
253 |
|
254 |
-
#: classes/admin/class-admin.php:
|
255 |
#: classes/admin/class-notifications.php:31
|
256 |
#: classes/admin/class-notifications.php:73
|
257 |
#: classes/admin/class-notifications.php:114
|
@@ -259,413 +259,413 @@ msgstr ""
|
|
259 |
msgid "Learn more"
|
260 |
msgstr ""
|
261 |
|
262 |
-
#: classes/admin/class-admin.php:
|
263 |
msgid "Profit Driven Marketing by SweetCode"
|
264 |
msgstr ""
|
265 |
|
266 |
-
#: classes/admin/class-admin.php:
|
267 |
msgid "Visit us here:"
|
268 |
msgstr ""
|
269 |
|
270 |
-
#: classes/admin/class-admin.php:
|
271 |
msgid "Contacting Support"
|
272 |
msgstr ""
|
273 |
|
274 |
-
#: classes/admin/class-admin.php:
|
275 |
msgid "Debug Information"
|
276 |
msgstr ""
|
277 |
|
278 |
-
#: classes/admin/class-admin.php:
|
279 |
msgid "copy to clipboard"
|
280 |
msgstr ""
|
281 |
|
282 |
-
#: classes/admin/class-admin.php:
|
283 |
msgid "Translations"
|
284 |
msgstr ""
|
285 |
|
286 |
-
#: classes/admin/class-admin.php:
|
287 |
msgid "If you want to participate improving the translations of this plugin into your language, please follow this link:"
|
288 |
msgstr ""
|
289 |
|
290 |
-
#: classes/admin/class-admin.php:
|
291 |
msgid "Post a support request in the WordPress support forum here: "
|
292 |
msgstr ""
|
293 |
|
294 |
-
#: classes/admin/class-admin.php:
|
295 |
msgid "Support forum"
|
296 |
msgstr ""
|
297 |
|
298 |
-
#: classes/admin/class-admin.php:
|
299 |
msgid "(Never post the debug or other sensitive information to the support forum. Instead send us the information by email.)"
|
300 |
msgstr ""
|
301 |
|
302 |
-
#: classes/admin/class-admin.php:
|
303 |
msgid "Or send us an email to the following address: "
|
304 |
msgstr ""
|
305 |
|
306 |
-
#: classes/admin/class-admin.php:
|
307 |
msgid "Send us your support request through the WooCommerce.com dashboard: "
|
308 |
msgstr ""
|
309 |
|
310 |
-
#: classes/admin/class-admin.php:
|
311 |
msgid "More details about the developer of this plugin: "
|
312 |
msgstr ""
|
313 |
|
314 |
-
#: classes/admin/class-admin.php:
|
315 |
msgid "Developer: SweetCode"
|
316 |
msgstr ""
|
317 |
|
318 |
-
#: classes/admin/class-admin.php:
|
319 |
msgid "Website: "
|
320 |
msgstr ""
|
321 |
|
322 |
-
#: classes/admin/class-admin.php:
|
323 |
msgid "The Google Analytics Universal property ID looks like this:"
|
324 |
msgstr ""
|
325 |
|
326 |
-
#: classes/admin/class-admin.php:
|
327 |
msgid "The Google Analytics 4 measurement ID looks like this:"
|
328 |
msgstr ""
|
329 |
|
330 |
-
#: classes/admin/class-admin.php:
|
331 |
msgid "The conversion ID looks similar to this:"
|
332 |
msgstr ""
|
333 |
|
334 |
-
#: classes/admin/class-admin.php:
|
335 |
msgid "The purchase conversion label looks similar to this:"
|
336 |
msgstr ""
|
337 |
|
338 |
-
#: classes/admin/class-admin.php:
|
339 |
-
#: classes/admin/class-admin.php:
|
340 |
msgid "Requires an active Google Ads Conversion ID"
|
341 |
msgstr ""
|
342 |
|
343 |
-
#: classes/admin/class-admin.php:
|
344 |
msgid "The Google Optimize container ID looks like this:"
|
345 |
msgstr ""
|
346 |
|
347 |
-
#: classes/admin/class-admin.php:
|
348 |
msgid "The Meta (Facebook) pixel ID looks similar to this:"
|
349 |
msgstr ""
|
350 |
|
351 |
-
#: classes/admin/class-admin.php:
|
352 |
msgid "The Microsoft Advertising UET tag ID looks similar to this:"
|
353 |
msgstr ""
|
354 |
|
355 |
-
#: classes/admin/class-admin.php:
|
356 |
msgid "The Twitter pixel ID looks similar to this:"
|
357 |
msgstr ""
|
358 |
|
359 |
-
#: classes/admin/class-admin.php:
|
360 |
msgid "The Pinterest pixel ID looks similar to this:"
|
361 |
msgstr ""
|
362 |
|
363 |
-
#: classes/admin/class-admin.php:
|
364 |
msgid "The Snapchat pixel ID looks similar to this:"
|
365 |
msgstr ""
|
366 |
|
367 |
-
#: classes/admin/class-admin.php:
|
368 |
msgid "The TikTok pixel ID looks similar to this:"
|
369 |
msgstr ""
|
370 |
|
371 |
-
#: classes/admin/class-admin.php:
|
372 |
msgid "The Hotjar site ID looks similar to this:"
|
373 |
msgstr ""
|
374 |
|
375 |
-
#: classes/admin/class-admin.php:
|
376 |
msgid "Use order_subtotal: Doesn't include tax and shipping (default)"
|
377 |
msgstr ""
|
378 |
|
379 |
-
#: classes/admin/class-admin.php:
|
380 |
msgid "Use order_total: Includes tax and shipping"
|
381 |
msgstr ""
|
382 |
|
383 |
-
#: classes/admin/class-admin.php:
|
384 |
msgid "This is the order total amount reported back to Google Ads"
|
385 |
msgstr ""
|
386 |
|
387 |
-
#: classes/admin/class-admin.php:
|
388 |
msgid "open the documentation"
|
389 |
msgstr ""
|
390 |
|
391 |
-
#: classes/admin/class-admin.php:
|
392 |
msgid "Enable Google consent mode with standard settings"
|
393 |
msgstr ""
|
394 |
|
395 |
-
#: classes/admin/class-admin.php:
|
396 |
msgid "If no region is set, then the restrictions are enabled for all regions. If you specify one or more regions, then the restrictions only apply for the specified regions."
|
397 |
msgstr ""
|
398 |
|
399 |
-
#: classes/admin/class-admin.php:
|
400 |
msgid "Enable Google Analytics enhanced e-commerce"
|
401 |
msgstr ""
|
402 |
|
403 |
-
#: classes/admin/class-admin.php:
|
404 |
-
#: classes/admin/class-admin.php:
|
405 |
-
#: classes/admin/class-admin.php:
|
406 |
msgid "You need to activate at least Google Analytics UA or Google Analytics 4"
|
407 |
msgstr ""
|
408 |
|
409 |
-
#: classes/admin/class-admin.php:
|
410 |
msgid "Google Analytics 4 activation required"
|
411 |
msgstr ""
|
412 |
|
413 |
-
#: classes/admin/class-admin.php:
|
414 |
msgid "Enhanced E-Commerce activation required"
|
415 |
msgstr ""
|
416 |
|
417 |
-
#: classes/admin/class-admin.php:
|
418 |
msgid "If enabled, purchase and refund events will be sent to Google through the measurement protocol for increased accuracy."
|
419 |
msgstr ""
|
420 |
|
421 |
-
#: classes/admin/class-admin.php:
|
422 |
msgid "Enable Google Analytics enhanced link attribution"
|
423 |
msgstr ""
|
424 |
|
425 |
-
#: classes/admin/class-admin.php:
|
426 |
msgid "Enable Google user ID"
|
427 |
msgstr ""
|
428 |
|
429 |
-
#: classes/admin/class-admin.php:
|
430 |
msgid "Enable Google Ads Enhanced Conversions"
|
431 |
msgstr ""
|
432 |
|
433 |
-
#: classes/admin/class-admin.php:
|
434 |
msgid "You need to activate Google Ads"
|
435 |
msgstr ""
|
436 |
|
437 |
-
#: classes/admin/class-admin.php:
|
438 |
msgid "The Google Ads phone conversion number must be in the same format as on the website."
|
439 |
msgstr ""
|
440 |
|
441 |
-
#: classes/admin/class-admin.php:
|
442 |
msgid "Borlabs Cookie detected. Automatic support is:"
|
443 |
msgstr ""
|
444 |
|
445 |
-
#: classes/admin/class-admin.php:
|
446 |
msgid "Cookiebot detected. Automatic support is:"
|
447 |
msgstr ""
|
448 |
|
449 |
-
#: classes/admin/class-admin.php:
|
450 |
msgid "Complianz GDPR detected. Automatic support is:"
|
451 |
msgstr ""
|
452 |
|
453 |
-
#: classes/admin/class-admin.php:
|
454 |
msgid "Cookie Notice (by hu-manity.co) detected. Automatic support is:"
|
455 |
msgstr ""
|
456 |
|
457 |
-
#: classes/admin/class-admin.php:
|
458 |
msgid "Cookie Script (by cookie-script.com) detected. Automatic support is:"
|
459 |
msgstr ""
|
460 |
|
461 |
-
#: classes/admin/class-admin.php:
|
462 |
msgid "GDPR Cookie Compliance (by Moove Agency) detected. Automatic support is:"
|
463 |
msgstr ""
|
464 |
|
465 |
-
#: classes/admin/class-admin.php:
|
466 |
msgid "GDPR Cookie Consent (by WebToffee) detected. Automatic support is:"
|
467 |
msgstr ""
|
468 |
|
469 |
-
#: classes/admin/class-admin.php:
|
470 |
msgid "Enable Explicit Consent Mode"
|
471 |
msgstr ""
|
472 |
|
473 |
-
#: classes/admin/class-admin.php:
|
474 |
msgid "Only activate the Explicit Consent Mode if you are also using a Cookie Management Platform (a cookie banner) that is compatible with this plugin. Find a list of compatible plugins in the documentation."
|
475 |
msgstr ""
|
476 |
|
477 |
-
#: classes/admin/class-admin.php:
|
478 |
-
#: classes/admin/class-admin.php:
|
479 |
-
#: classes/admin/class-admin.php:
|
480 |
-
#: classes/admin/class-admin.php:
|
481 |
msgid "You need to activate the Meta (Facebook) pixel"
|
482 |
msgstr ""
|
483 |
|
484 |
-
#: classes/admin/class-admin.php:
|
485 |
msgid "Send CAPI hits for anonymous visitors who likely have blocked the Meta (Facebook) pixel."
|
486 |
msgstr ""
|
487 |
|
488 |
-
#: classes/admin/class-admin.php:
|
489 |
msgid "Include additional visitor's identifiers, such as IP address, email and shop ID in the CAPI hit."
|
490 |
msgstr ""
|
491 |
|
492 |
-
#: classes/admin/class-admin.php:
|
493 |
msgid "Enable Meta (Facebook) product microdata output"
|
494 |
msgstr ""
|
495 |
|
496 |
-
#: classes/admin/class-admin.php:
|
497 |
msgid "Only disable order duplication prevention for testing. Remember to re-enable the setting once done."
|
498 |
msgstr ""
|
499 |
|
500 |
-
#: classes/admin/class-admin.php:
|
501 |
msgid "Enable the maximum compatibility mode"
|
502 |
msgstr ""
|
503 |
|
504 |
-
#: classes/admin/class-admin.php:
|
505 |
msgid "Advanced order duplication prevention is "
|
506 |
msgstr ""
|
507 |
|
508 |
-
#: classes/admin/class-admin.php:
|
509 |
msgid "Basic order duplication prevention is "
|
510 |
msgstr ""
|
511 |
|
512 |
-
#: classes/admin/class-admin.php:
|
513 |
msgid "Enable dynamic remarketing audience collection"
|
514 |
msgstr ""
|
515 |
|
516 |
-
#: classes/admin/class-admin.php:
|
517 |
msgid "You need to choose the correct product identifier setting in order to match the product identifiers in the product feeds."
|
518 |
msgstr ""
|
519 |
|
520 |
-
#: classes/admin/class-admin.php:
|
521 |
msgid "Enable variations output"
|
522 |
msgstr ""
|
523 |
|
524 |
-
#: classes/admin/class-admin.php:
|
525 |
msgid "In order for this to work you need to upload your product feed including product variations and the item_group_id. Disable it, if you choose only to upload the parent product for variable products."
|
526 |
msgstr ""
|
527 |
|
528 |
-
#: classes/admin/class-admin.php:
|
529 |
msgid "Retail"
|
530 |
msgstr ""
|
531 |
|
532 |
-
#: classes/admin/class-admin.php:
|
533 |
msgid "Education"
|
534 |
msgstr ""
|
535 |
|
536 |
-
#: classes/admin/class-admin.php:
|
537 |
msgid "Hotels and rentals"
|
538 |
msgstr ""
|
539 |
|
540 |
-
#: classes/admin/class-admin.php:
|
541 |
msgid "Jobs"
|
542 |
msgstr ""
|
543 |
|
544 |
-
#: classes/admin/class-admin.php:
|
545 |
msgid "Local deals"
|
546 |
msgstr ""
|
547 |
|
548 |
-
#: classes/admin/class-admin.php:
|
549 |
msgid "Real estate"
|
550 |
msgstr ""
|
551 |
|
552 |
-
#: classes/admin/class-admin.php:
|
553 |
msgid "Custom"
|
554 |
msgstr ""
|
555 |
|
556 |
-
#: classes/admin/class-admin.php:
|
557 |
msgid "ID of your Google Merchant Center account. It looks like this: 12345678"
|
558 |
msgstr ""
|
559 |
|
560 |
-
#: classes/admin/class-admin.php:
|
561 |
msgid "post ID (default)"
|
562 |
msgstr ""
|
563 |
|
564 |
-
#: classes/admin/class-admin.php:
|
565 |
msgid "SKU"
|
566 |
msgstr ""
|
567 |
|
568 |
-
#: classes/admin/class-admin.php:
|
569 |
msgid "ID for the WooCommerce Google Product Feed. Outputs the post ID with woocommerce_gpf_ prefix *"
|
570 |
msgstr ""
|
571 |
|
572 |
-
#: classes/admin/class-admin.php:
|
573 |
msgid "ID for the WooCommerce Google Listings & Ads Plugin. Outputs the post ID with gla_ prefix **"
|
574 |
msgstr ""
|
575 |
|
576 |
-
#: classes/admin/class-admin.php:
|
577 |
msgid "Choose a product identifier."
|
578 |
msgstr ""
|
579 |
|
580 |
-
#: classes/admin/class-admin.php:
|
581 |
msgid "* This is for users of the WooCommerce Google Product Feed Plugin"
|
582 |
msgstr ""
|
583 |
|
584 |
-
#: classes/admin/class-admin.php:
|
585 |
msgid "** This is for users of the WooCommerce Google Listings & Ads Plugin"
|
586 |
msgstr ""
|
587 |
|
588 |
-
#: classes/admin/class-admin.php:
|
589 |
msgid "beta"
|
590 |
msgstr ""
|
591 |
|
592 |
-
#: classes/admin/class-admin.php:
|
593 |
-
#: classes/admin/class-admin.php:
|
594 |
msgid "active"
|
595 |
msgstr ""
|
596 |
|
597 |
-
#: classes/admin/class-admin.php:
|
598 |
-
#: classes/admin/class-admin.php:
|
599 |
msgid "inactive"
|
600 |
msgstr ""
|
601 |
|
602 |
-
#: classes/admin/class-admin.php:
|
603 |
-
#: classes/admin/class-admin.php:
|
604 |
msgid "partially active"
|
605 |
msgstr ""
|
606 |
|
607 |
-
#: classes/admin/class-admin.php:
|
608 |
msgid "Pro Feature"
|
609 |
msgstr ""
|
610 |
|
611 |
-
#: classes/admin/class-admin.php:
|
612 |
msgid "You have entered an invalid Google Analytics Universal property ID."
|
613 |
msgstr ""
|
614 |
|
615 |
-
#: classes/admin/class-admin.php:
|
616 |
msgid "You have entered an invalid Google Analytics 4 measurement ID."
|
617 |
msgstr ""
|
618 |
|
619 |
-
#: classes/admin/class-admin.php:
|
620 |
msgid "You have entered an invalid Google Analytics 4 API key."
|
621 |
msgstr ""
|
622 |
|
623 |
-
#: classes/admin/class-admin.php:
|
624 |
msgid "You have entered an invalid conversion ID. It only contains 8 to 10 digits."
|
625 |
msgstr ""
|
626 |
|
627 |
-
#: classes/admin/class-admin.php:
|
628 |
-
#: classes/admin/class-admin.php:
|
629 |
msgid "You have entered an invalid conversion label."
|
630 |
msgstr ""
|
631 |
|
632 |
-
#: classes/admin/class-admin.php:
|
633 |
msgid "You have entered an invalid merchant ID. It only contains 6 to 12 digits."
|
634 |
msgstr ""
|
635 |
|
636 |
-
#: classes/admin/class-admin.php:
|
637 |
msgid "You have entered an invalid Google Optimize container ID."
|
638 |
msgstr ""
|
639 |
|
640 |
-
#: classes/admin/class-admin.php:
|
641 |
msgid "You have entered an invalid Meta (Facebook) pixel ID. It only contains 14 to 16 digits."
|
642 |
msgstr ""
|
643 |
|
644 |
-
#: classes/admin/class-admin.php:
|
645 |
msgid "You have entered an invalid Meta (Facebook) CAPI token."
|
646 |
msgstr ""
|
647 |
|
648 |
-
#: classes/admin/class-admin.php:
|
649 |
msgid "You have entered an invalid Bing Ads UET tag ID. It only contains 7 to 9 digits."
|
650 |
msgstr ""
|
651 |
|
652 |
-
#: classes/admin/class-admin.php:
|
653 |
msgid "You have entered an invalid Twitter pixel ID. It only contains 5 to 7 lowercase letters and numbers."
|
654 |
msgstr ""
|
655 |
|
656 |
-
#: classes/admin/class-admin.php:
|
657 |
msgid "You have entered an invalid Pinterest pixel ID. It only contains 13 digits."
|
658 |
msgstr ""
|
659 |
|
660 |
-
#: classes/admin/class-admin.php:
|
661 |
msgid "You have entered an invalid Snapchat pixel ID."
|
662 |
msgstr ""
|
663 |
|
664 |
-
#: classes/admin/class-admin.php:
|
665 |
msgid "You have entered an invalid TikTok pixel ID."
|
666 |
msgstr ""
|
667 |
|
668 |
-
#: classes/admin/class-admin.php:
|
669 |
msgid "You have entered an invalid Hotjar site ID. It only contains 6 to 9 digits."
|
670 |
msgstr ""
|
671 |
|
2 |
# This file is distributed under the GNU General Public License v3.0.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: WooCommerce Pixel Manager 1.16.14\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/src\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"POT-Creation-Date: 2022-05-02T04:42:49+00:00\n"
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.6.0\n"
|
15 |
"X-Domain: woocommerce-google-adwords-conversion-tracking-tag\n"
|
36 |
msgid "https://sweetcode.com"
|
37 |
msgstr ""
|
38 |
|
|
|
39 |
#: classes/admin/class-admin.php:227
|
40 |
+
#: classes/admin/class-admin.php:228
|
41 |
msgid "Pixel Manager"
|
42 |
msgstr ""
|
43 |
|
44 |
+
#: classes/admin/class-admin.php:258
|
45 |
msgid "Main"
|
46 |
msgstr ""
|
47 |
|
48 |
+
#: classes/admin/class-admin.php:279
|
49 |
msgid "Google"
|
50 |
msgstr ""
|
51 |
|
52 |
+
#: classes/admin/class-admin.php:302
|
53 |
msgid "Google Ads Conversion ID"
|
54 |
msgstr ""
|
55 |
|
56 |
+
#: classes/admin/class-admin.php:314
|
57 |
msgid "Google Ads Purchase Conversion Label"
|
58 |
msgstr ""
|
59 |
|
60 |
+
#: classes/admin/class-admin.php:325
|
61 |
msgid "Google Analytics UA"
|
62 |
msgstr ""
|
63 |
|
64 |
+
#: classes/admin/class-admin.php:336
|
65 |
msgid "Google Analytics 4"
|
66 |
msgstr ""
|
67 |
|
68 |
+
#: classes/admin/class-admin.php:347
|
69 |
msgid "Google Optimize"
|
70 |
msgstr ""
|
71 |
|
72 |
+
#: classes/admin/class-admin.php:359
|
73 |
msgid "Meta (Facebook)"
|
74 |
msgstr ""
|
75 |
|
76 |
+
#: classes/admin/class-admin.php:382
|
77 |
msgid "Meta (Facebook) pixel ID"
|
78 |
msgstr ""
|
79 |
|
80 |
+
#: classes/admin/class-admin.php:394
|
81 |
msgid "more pixels"
|
82 |
msgstr ""
|
83 |
|
84 |
+
#: classes/admin/class-admin.php:419
|
85 |
msgid "Microsoft Advertising UET tag ID"
|
86 |
msgstr ""
|
87 |
|
88 |
+
#: classes/admin/class-admin.php:431
|
89 |
msgid "Twitter pixel ID"
|
90 |
msgstr ""
|
91 |
|
92 |
+
#: classes/admin/class-admin.php:443
|
93 |
msgid "Pinterest pixel ID"
|
94 |
msgstr ""
|
95 |
|
96 |
+
#: classes/admin/class-admin.php:455
|
97 |
msgid "Snapchat pixel ID"
|
98 |
msgstr ""
|
99 |
|
100 |
+
#: classes/admin/class-admin.php:467
|
101 |
msgid "TikTok pixel ID"
|
102 |
msgstr ""
|
103 |
|
104 |
+
#: classes/admin/class-admin.php:480
|
105 |
msgid "Hotjar site ID"
|
106 |
msgstr ""
|
107 |
|
108 |
+
#: classes/admin/class-admin.php:492
|
109 |
msgid "Advanced"
|
110 |
msgstr ""
|
111 |
|
112 |
+
#: classes/admin/class-admin.php:543
|
113 |
msgid "Order Total Logic"
|
114 |
msgstr ""
|
115 |
|
116 |
+
#: classes/admin/class-admin.php:555
|
117 |
msgid "Order Duplication Prevention"
|
118 |
msgstr ""
|
119 |
|
120 |
+
#: classes/admin/class-admin.php:567
|
121 |
msgid "Maximum Compatibility Mode"
|
122 |
msgstr ""
|
123 |
|
124 |
+
#: classes/admin/class-admin.php:581
|
125 |
msgid "Disable Tracking for User Roles"
|
126 |
msgstr ""
|
127 |
|
128 |
+
#: classes/admin/class-admin.php:615
|
129 |
msgid "Conversion Cart Data"
|
130 |
msgstr ""
|
131 |
|
132 |
+
#: classes/admin/class-admin.php:628
|
133 |
msgid "Enhanced E-Commerce"
|
134 |
msgstr ""
|
135 |
|
136 |
+
#: classes/admin/class-admin.php:640
|
137 |
msgid "GA 4 API secret"
|
138 |
msgstr ""
|
139 |
|
140 |
+
#: classes/admin/class-admin.php:653
|
141 |
msgid "Enhanced Link Attribution"
|
142 |
msgstr ""
|
143 |
|
144 |
+
#: classes/admin/class-admin.php:666
|
145 |
msgid "Google User ID"
|
146 |
msgstr ""
|
147 |
|
148 |
+
#: classes/admin/class-admin.php:678
|
149 |
msgid "Google Ads Enhanced Conversions"
|
150 |
msgstr ""
|
151 |
|
152 |
+
#: classes/admin/class-admin.php:692
|
153 |
msgid "Google Ads Phone Conversion Number"
|
154 |
msgstr ""
|
155 |
|
156 |
+
#: classes/admin/class-admin.php:704
|
157 |
msgid "Google Ads Phone Conversion Label"
|
158 |
msgstr ""
|
159 |
|
160 |
+
#: classes/admin/class-admin.php:717
|
161 |
msgid "Cookie Consent Management"
|
162 |
msgstr ""
|
163 |
|
164 |
+
#: classes/admin/class-admin.php:740
|
165 |
msgid "Google Consent Mode"
|
166 |
msgstr ""
|
167 |
|
168 |
+
#: classes/admin/class-admin.php:752
|
169 |
msgid "Google Consent Regions"
|
170 |
msgstr ""
|
171 |
|
172 |
+
#: classes/admin/class-admin.php:764
|
173 |
msgid "Explicit Consent Mode"
|
174 |
msgstr ""
|
175 |
|
176 |
+
#: classes/admin/class-admin.php:777
|
177 |
msgid "Borlabs Cookie support"
|
178 |
msgstr ""
|
179 |
|
180 |
+
#: classes/admin/class-admin.php:791
|
181 |
msgid "Cookiebot support"
|
182 |
msgstr ""
|
183 |
|
184 |
+
#: classes/admin/class-admin.php:805
|
185 |
msgid "Complianz GDPR support"
|
186 |
msgstr ""
|
187 |
|
188 |
+
#: classes/admin/class-admin.php:819
|
189 |
msgid "Cookie Notice support"
|
190 |
msgstr ""
|
191 |
|
192 |
+
#: classes/admin/class-admin.php:833
|
193 |
msgid "Cookie Script support"
|
194 |
msgstr ""
|
195 |
|
196 |
+
#: classes/admin/class-admin.php:847
|
197 |
msgid "GDPR Cookie Compliance support"
|
198 |
msgstr ""
|
199 |
|
200 |
+
#: classes/admin/class-admin.php:861
|
201 |
msgid "GDPR Cookie Consent support"
|
202 |
msgstr ""
|
203 |
|
204 |
+
#: classes/admin/class-admin.php:894
|
205 |
msgid "Meta (Facebook) CAPI: token"
|
206 |
msgstr ""
|
207 |
|
208 |
+
#: classes/admin/class-admin.php:906
|
209 |
msgid "Meta (Facebook) CAPI: process anonymous hits"
|
210 |
msgstr ""
|
211 |
|
212 |
+
#: classes/admin/class-admin.php:918
|
213 |
msgid "Meta (Facebook) CAPI: send additional visitor identifiers"
|
214 |
msgstr ""
|
215 |
|
216 |
+
#: classes/admin/class-admin.php:930
|
217 |
msgid "Meta (Facebook) Microdata Tags for Catalogues"
|
218 |
msgstr ""
|
219 |
|
220 |
+
#: classes/admin/class-admin.php:942
|
221 |
+
#: classes/admin/class-admin.php:955
|
222 |
+
#: classes/admin/class-admin.php:966
|
223 |
msgid "Dynamic Remarketing"
|
224 |
msgstr ""
|
225 |
|
226 |
+
#: classes/admin/class-admin.php:978
|
227 |
msgid "Product Identifier"
|
228 |
msgstr ""
|
229 |
|
230 |
+
#: classes/admin/class-admin.php:990
|
231 |
msgid "Variations output"
|
232 |
msgstr ""
|
233 |
|
234 |
+
#: classes/admin/class-admin.php:1003
|
235 |
msgid "Google Business Vertical"
|
236 |
msgstr ""
|
237 |
|
238 |
+
#: classes/admin/class-admin.php:1016
|
239 |
+
#: classes/admin/class-admin.php:1025
|
240 |
msgid "Support"
|
241 |
msgstr ""
|
242 |
|
243 |
+
#: classes/admin/class-admin.php:1033
|
244 |
+
#: classes/admin/class-admin.php:1043
|
245 |
msgid "Author"
|
246 |
msgstr ""
|
247 |
|
248 |
+
#: classes/admin/class-admin.php:1079
|
249 |
msgid ""
|
250 |
"It looks like you are using some sort of ad or script blocker which is blocking the script and CSS files of this plugin.\n"
|
251 |
" In order for the plugin to work properly you need to disable the script blocker."
|
252 |
msgstr ""
|
253 |
|
254 |
+
#: classes/admin/class-admin.php:1086
|
255 |
#: classes/admin/class-notifications.php:31
|
256 |
#: classes/admin/class-notifications.php:73
|
257 |
#: classes/admin/class-notifications.php:114
|
259 |
msgid "Learn more"
|
260 |
msgstr ""
|
261 |
|
262 |
+
#: classes/admin/class-admin.php:1131
|
263 |
msgid "Profit Driven Marketing by SweetCode"
|
264 |
msgstr ""
|
265 |
|
266 |
+
#: classes/admin/class-admin.php:1156
|
267 |
msgid "Visit us here:"
|
268 |
msgstr ""
|
269 |
|
270 |
+
#: classes/admin/class-admin.php:1201
|
271 |
msgid "Contacting Support"
|
272 |
msgstr ""
|
273 |
|
274 |
+
#: classes/admin/class-admin.php:1215
|
275 |
msgid "Debug Information"
|
276 |
msgstr ""
|
277 |
|
278 |
+
#: classes/admin/class-admin.php:1224
|
279 |
msgid "copy to clipboard"
|
280 |
msgstr ""
|
281 |
|
282 |
+
#: classes/admin/class-admin.php:1238
|
283 |
msgid "Translations"
|
284 |
msgstr ""
|
285 |
|
286 |
+
#: classes/admin/class-admin.php:1239
|
287 |
msgid "If you want to participate improving the translations of this plugin into your language, please follow this link:"
|
288 |
msgstr ""
|
289 |
|
290 |
+
#: classes/admin/class-admin.php:1257
|
291 |
msgid "Post a support request in the WordPress support forum here: "
|
292 |
msgstr ""
|
293 |
|
294 |
+
#: classes/admin/class-admin.php:1260
|
295 |
msgid "Support forum"
|
296 |
msgstr ""
|
297 |
|
298 |
+
#: classes/admin/class-admin.php:1264
|
299 |
msgid "(Never post the debug or other sensitive information to the support forum. Instead send us the information by email.)"
|
300 |
msgstr ""
|
301 |
|
302 |
+
#: classes/admin/class-admin.php:1267
|
303 |
msgid "Or send us an email to the following address: "
|
304 |
msgstr ""
|
305 |
|
306 |
+
#: classes/admin/class-admin.php:1283
|
307 |
msgid "Send us your support request through the WooCommerce.com dashboard: "
|
308 |
msgstr ""
|
309 |
|
310 |
+
#: classes/admin/class-admin.php:1297
|
311 |
msgid "More details about the developer of this plugin: "
|
312 |
msgstr ""
|
313 |
|
314 |
+
#: classes/admin/class-admin.php:1300
|
315 |
msgid "Developer: SweetCode"
|
316 |
msgstr ""
|
317 |
|
318 |
+
#: classes/admin/class-admin.php:1302
|
319 |
msgid "Website: "
|
320 |
msgstr ""
|
321 |
|
322 |
+
#: classes/admin/class-admin.php:1325
|
323 |
msgid "The Google Analytics Universal property ID looks like this:"
|
324 |
msgstr ""
|
325 |
|
326 |
+
#: classes/admin/class-admin.php:1341
|
327 |
msgid "The Google Analytics 4 measurement ID looks like this:"
|
328 |
msgstr ""
|
329 |
|
330 |
+
#: classes/admin/class-admin.php:1357
|
331 |
msgid "The conversion ID looks similar to this:"
|
332 |
msgstr ""
|
333 |
|
334 |
+
#: classes/admin/class-admin.php:1373
|
335 |
msgid "The purchase conversion label looks similar to this:"
|
336 |
msgstr ""
|
337 |
|
338 |
+
#: classes/admin/class-admin.php:1377
|
339 |
+
#: classes/admin/class-admin.php:2104
|
340 |
msgid "Requires an active Google Ads Conversion ID"
|
341 |
msgstr ""
|
342 |
|
343 |
+
#: classes/admin/class-admin.php:1395
|
344 |
msgid "The Google Optimize container ID looks like this:"
|
345 |
msgstr ""
|
346 |
|
347 |
+
#: classes/admin/class-admin.php:1411
|
348 |
msgid "The Meta (Facebook) pixel ID looks similar to this:"
|
349 |
msgstr ""
|
350 |
|
351 |
+
#: classes/admin/class-admin.php:1429
|
352 |
msgid "The Microsoft Advertising UET tag ID looks similar to this:"
|
353 |
msgstr ""
|
354 |
|
355 |
+
#: classes/admin/class-admin.php:1448
|
356 |
msgid "The Twitter pixel ID looks similar to this:"
|
357 |
msgstr ""
|
358 |
|
359 |
+
#: classes/admin/class-admin.php:1467
|
360 |
msgid "The Pinterest pixel ID looks similar to this:"
|
361 |
msgstr ""
|
362 |
|
363 |
+
#: classes/admin/class-admin.php:1486
|
364 |
msgid "The Snapchat pixel ID looks similar to this:"
|
365 |
msgstr ""
|
366 |
|
367 |
+
#: classes/admin/class-admin.php:1505
|
368 |
msgid "The TikTok pixel ID looks similar to this:"
|
369 |
msgstr ""
|
370 |
|
371 |
+
#: classes/admin/class-admin.php:1517
|
372 |
msgid "The Hotjar site ID looks similar to this:"
|
373 |
msgstr ""
|
374 |
|
375 |
+
#: classes/admin/class-admin.php:1527
|
376 |
msgid "Use order_subtotal: Doesn't include tax and shipping (default)"
|
377 |
msgstr ""
|
378 |
|
379 |
+
#: classes/admin/class-admin.php:1534
|
380 |
msgid "Use order_total: Includes tax and shipping"
|
381 |
msgstr ""
|
382 |
|
383 |
+
#: classes/admin/class-admin.php:1537
|
384 |
msgid "This is the order total amount reported back to Google Ads"
|
385 |
msgstr ""
|
386 |
|
387 |
+
#: classes/admin/class-admin.php:1557
|
388 |
msgid "open the documentation"
|
389 |
msgstr ""
|
390 |
|
391 |
+
#: classes/admin/class-admin.php:1577
|
392 |
msgid "Enable Google consent mode with standard settings"
|
393 |
msgstr ""
|
394 |
|
395 |
+
#: classes/admin/class-admin.php:1615
|
396 |
msgid "If no region is set, then the restrictions are enabled for all regions. If you specify one or more regions, then the restrictions only apply for the specified regions."
|
397 |
msgstr ""
|
398 |
|
399 |
+
#: classes/admin/class-admin.php:1636
|
400 |
msgid "Enable Google Analytics enhanced e-commerce"
|
401 |
msgstr ""
|
402 |
|
403 |
+
#: classes/admin/class-admin.php:1647
|
404 |
+
#: classes/admin/class-admin.php:1708
|
405 |
+
#: classes/admin/class-admin.php:1738
|
406 |
msgid "You need to activate at least Google Analytics UA or Google Analytics 4"
|
407 |
msgstr ""
|
408 |
|
409 |
+
#: classes/admin/class-admin.php:1669
|
410 |
msgid "Google Analytics 4 activation required"
|
411 |
msgstr ""
|
412 |
|
413 |
+
#: classes/admin/class-admin.php:1674
|
414 |
msgid "Enhanced E-Commerce activation required"
|
415 |
msgstr ""
|
416 |
|
417 |
+
#: classes/admin/class-admin.php:1677
|
418 |
msgid "If enabled, purchase and refund events will be sent to Google through the measurement protocol for increased accuracy."
|
419 |
msgstr ""
|
420 |
|
421 |
+
#: classes/admin/class-admin.php:1692
|
422 |
msgid "Enable Google Analytics enhanced link attribution"
|
423 |
msgstr ""
|
424 |
|
425 |
+
#: classes/admin/class-admin.php:1727
|
426 |
msgid "Enable Google user ID"
|
427 |
msgstr ""
|
428 |
|
429 |
+
#: classes/admin/class-admin.php:1757
|
430 |
msgid "Enable Google Ads Enhanced Conversions"
|
431 |
msgstr ""
|
432 |
|
433 |
+
#: classes/admin/class-admin.php:1768
|
434 |
msgid "You need to activate Google Ads"
|
435 |
msgstr ""
|
436 |
|
437 |
+
#: classes/admin/class-admin.php:1788
|
438 |
msgid "The Google Ads phone conversion number must be in the same format as on the website."
|
439 |
msgstr ""
|
440 |
|
441 |
+
#: classes/admin/class-admin.php:1810
|
442 |
msgid "Borlabs Cookie detected. Automatic support is:"
|
443 |
msgstr ""
|
444 |
|
445 |
+
#: classes/admin/class-admin.php:1816
|
446 |
msgid "Cookiebot detected. Automatic support is:"
|
447 |
msgstr ""
|
448 |
|
449 |
+
#: classes/admin/class-admin.php:1822
|
450 |
msgid "Complianz GDPR detected. Automatic support is:"
|
451 |
msgstr ""
|
452 |
|
453 |
+
#: classes/admin/class-admin.php:1828
|
454 |
msgid "Cookie Notice (by hu-manity.co) detected. Automatic support is:"
|
455 |
msgstr ""
|
456 |
|
457 |
+
#: classes/admin/class-admin.php:1834
|
458 |
msgid "Cookie Script (by cookie-script.com) detected. Automatic support is:"
|
459 |
msgstr ""
|
460 |
|
461 |
+
#: classes/admin/class-admin.php:1840
|
462 |
msgid "GDPR Cookie Compliance (by Moove Agency) detected. Automatic support is:"
|
463 |
msgstr ""
|
464 |
|
465 |
+
#: classes/admin/class-admin.php:1846
|
466 |
msgid "GDPR Cookie Consent (by WebToffee) detected. Automatic support is:"
|
467 |
msgstr ""
|
468 |
|
469 |
+
#: classes/admin/class-admin.php:1865
|
470 |
msgid "Enable Explicit Consent Mode"
|
471 |
msgstr ""
|
472 |
|
473 |
+
#: classes/admin/class-admin.php:1874
|
474 |
msgid "Only activate the Explicit Consent Mode if you are also using a Cookie Management Platform (a cookie banner) that is compatible with this plugin. Find a list of compatible plugins in the documentation."
|
475 |
msgstr ""
|
476 |
|
477 |
+
#: classes/admin/class-admin.php:1893
|
478 |
+
#: classes/admin/class-admin.php:1926
|
479 |
+
#: classes/admin/class-admin.php:1955
|
480 |
+
#: classes/admin/class-admin.php:1983
|
481 |
msgid "You need to activate the Meta (Facebook) pixel"
|
482 |
msgstr ""
|
483 |
|
484 |
+
#: classes/admin/class-admin.php:1917
|
485 |
msgid "Send CAPI hits for anonymous visitors who likely have blocked the Meta (Facebook) pixel."
|
486 |
msgstr ""
|
487 |
|
488 |
+
#: classes/admin/class-admin.php:1946
|
489 |
msgid "Include additional visitor's identifiers, such as IP address, email and shop ID in the CAPI hit."
|
490 |
msgstr ""
|
491 |
|
492 |
+
#: classes/admin/class-admin.php:1974
|
493 |
msgid "Enable Meta (Facebook) product microdata output"
|
494 |
msgstr ""
|
495 |
|
496 |
+
#: classes/admin/class-admin.php:2010
|
497 |
msgid "Only disable order duplication prevention for testing. Remember to re-enable the setting once done."
|
498 |
msgstr ""
|
499 |
|
500 |
+
#: classes/admin/class-admin.php:2027
|
501 |
msgid "Enable the maximum compatibility mode"
|
502 |
msgstr ""
|
503 |
|
504 |
+
#: classes/admin/class-admin.php:2063
|
505 |
msgid "Advanced order duplication prevention is "
|
506 |
msgstr ""
|
507 |
|
508 |
+
#: classes/admin/class-admin.php:2065
|
509 |
msgid "Basic order duplication prevention is "
|
510 |
msgstr ""
|
511 |
|
512 |
+
#: classes/admin/class-admin.php:2089
|
513 |
msgid "Enable dynamic remarketing audience collection"
|
514 |
msgstr ""
|
515 |
|
516 |
+
#: classes/admin/class-admin.php:2110
|
517 |
msgid "You need to choose the correct product identifier setting in order to match the product identifiers in the product feeds."
|
518 |
msgstr ""
|
519 |
|
520 |
+
#: classes/admin/class-admin.php:2128
|
521 |
msgid "Enable variations output"
|
522 |
msgstr ""
|
523 |
|
524 |
+
#: classes/admin/class-admin.php:2139
|
525 |
msgid "In order for this to work you need to upload your product feed including product variations and the item_group_id. Disable it, if you choose only to upload the parent product for variable products."
|
526 |
msgstr ""
|
527 |
|
528 |
+
#: classes/admin/class-admin.php:2154
|
529 |
msgid "Retail"
|
530 |
msgstr ""
|
531 |
|
532 |
+
#: classes/admin/class-admin.php:2164
|
533 |
msgid "Education"
|
534 |
msgstr ""
|
535 |
|
536 |
+
#: classes/admin/class-admin.php:2174
|
537 |
msgid "Hotels and rentals"
|
538 |
msgstr ""
|
539 |
|
540 |
+
#: classes/admin/class-admin.php:2184
|
541 |
msgid "Jobs"
|
542 |
msgstr ""
|
543 |
|
544 |
+
#: classes/admin/class-admin.php:2194
|
545 |
msgid "Local deals"
|
546 |
msgstr ""
|
547 |
|
548 |
+
#: classes/admin/class-admin.php:2204
|
549 |
msgid "Real estate"
|
550 |
msgstr ""
|
551 |
|
552 |
+
#: classes/admin/class-admin.php:2214
|
553 |
msgid "Custom"
|
554 |
msgstr ""
|
555 |
|
556 |
+
#: classes/admin/class-admin.php:2233
|
557 |
msgid "ID of your Google Merchant Center account. It looks like this: 12345678"
|
558 |
msgstr ""
|
559 |
|
560 |
+
#: classes/admin/class-admin.php:2242
|
561 |
msgid "post ID (default)"
|
562 |
msgstr ""
|
563 |
|
564 |
+
#: classes/admin/class-admin.php:2248
|
565 |
msgid "SKU"
|
566 |
msgstr ""
|
567 |
|
568 |
+
#: classes/admin/class-admin.php:2255
|
569 |
msgid "ID for the WooCommerce Google Product Feed. Outputs the post ID with woocommerce_gpf_ prefix *"
|
570 |
msgstr ""
|
571 |
|
572 |
+
#: classes/admin/class-admin.php:2262
|
573 |
msgid "ID for the WooCommerce Google Listings & Ads Plugin. Outputs the post ID with gla_ prefix **"
|
574 |
msgstr ""
|
575 |
|
576 |
+
#: classes/admin/class-admin.php:2266
|
577 |
msgid "Choose a product identifier."
|
578 |
msgstr ""
|
579 |
|
580 |
+
#: classes/admin/class-admin.php:2269
|
581 |
msgid "* This is for users of the WooCommerce Google Product Feed Plugin"
|
582 |
msgstr ""
|
583 |
|
584 |
+
#: classes/admin/class-admin.php:2273
|
585 |
msgid "** This is for users of the WooCommerce Google Listings & Ads Plugin"
|
586 |
msgstr ""
|
587 |
|
588 |
+
#: classes/admin/class-admin.php:2282
|
589 |
msgid "beta"
|
590 |
msgstr ""
|
591 |
|
592 |
+
#: classes/admin/class-admin.php:2286
|
593 |
+
#: classes/admin/class-admin.php:2291
|
594 |
msgid "active"
|
595 |
msgstr ""
|
596 |
|
597 |
+
#: classes/admin/class-admin.php:2296
|
598 |
+
#: classes/admin/class-admin.php:2301
|
599 |
msgid "inactive"
|
600 |
msgstr ""
|
601 |
|
602 |
+
#: classes/admin/class-admin.php:2306
|
603 |
+
#: classes/admin/class-admin.php:2311
|
604 |
msgid "partially active"
|
605 |
msgstr ""
|
606 |
|
607 |
+
#: classes/admin/class-admin.php:2322
|
608 |
msgid "Pro Feature"
|
609 |
msgstr ""
|
610 |
|
611 |
+
#: classes/admin/class-admin.php:2366
|
612 |
msgid "You have entered an invalid Google Analytics Universal property ID."
|
613 |
msgstr ""
|
614 |
|
615 |
+
#: classes/admin/class-admin.php:2374
|
616 |
msgid "You have entered an invalid Google Analytics 4 measurement ID."
|
617 |
msgstr ""
|
618 |
|
619 |
+
#: classes/admin/class-admin.php:2382
|
620 |
msgid "You have entered an invalid Google Analytics 4 API key."
|
621 |
msgstr ""
|
622 |
|
623 |
+
#: classes/admin/class-admin.php:2390
|
624 |
msgid "You have entered an invalid conversion ID. It only contains 8 to 10 digits."
|
625 |
msgstr ""
|
626 |
|
627 |
+
#: classes/admin/class-admin.php:2398
|
628 |
+
#: classes/admin/class-admin.php:2406
|
629 |
msgid "You have entered an invalid conversion label."
|
630 |
msgstr ""
|
631 |
|
632 |
+
#: classes/admin/class-admin.php:2414
|
633 |
msgid "You have entered an invalid merchant ID. It only contains 6 to 12 digits."
|
634 |
msgstr ""
|
635 |
|
636 |
+
#: classes/admin/class-admin.php:2422
|
637 |
msgid "You have entered an invalid Google Optimize container ID."
|
638 |
msgstr ""
|
639 |
|
640 |
+
#: classes/admin/class-admin.php:2430
|
641 |
msgid "You have entered an invalid Meta (Facebook) pixel ID. It only contains 14 to 16 digits."
|
642 |
msgstr ""
|
643 |
|
644 |
+
#: classes/admin/class-admin.php:2438
|
645 |
msgid "You have entered an invalid Meta (Facebook) CAPI token."
|
646 |
msgstr ""
|
647 |
|
648 |
+
#: classes/admin/class-admin.php:2446
|
649 |
msgid "You have entered an invalid Bing Ads UET tag ID. It only contains 7 to 9 digits."
|
650 |
msgstr ""
|
651 |
|
652 |
+
#: classes/admin/class-admin.php:2454
|
653 |
msgid "You have entered an invalid Twitter pixel ID. It only contains 5 to 7 lowercase letters and numbers."
|
654 |
msgstr ""
|
655 |
|
656 |
+
#: classes/admin/class-admin.php:2462
|
657 |
msgid "You have entered an invalid Pinterest pixel ID. It only contains 13 digits."
|
658 |
msgstr ""
|
659 |
|
660 |
+
#: classes/admin/class-admin.php:2470
|
661 |
msgid "You have entered an invalid Snapchat pixel ID."
|
662 |
msgstr ""
|
663 |
|
664 |
+
#: classes/admin/class-admin.php:2478
|
665 |
msgid "You have entered an invalid TikTok pixel ID."
|
666 |
msgstr ""
|
667 |
|
668 |
+
#: classes/admin/class-admin.php:2486
|
669 |
msgid "You have entered an invalid Hotjar site ID. It only contains 6 to 9 digits."
|
670 |
msgstr ""
|
671 |
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Tags: woocommerce, google ads, google analytics, facebook pixel, conversion trac
|
|
4 |
Requires at least: 3.7
|
5 |
Tested up to: 5.9
|
6 |
Requires PHP: 7.3
|
7 |
-
Stable tag: 1.16.
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -41,7 +41,7 @@ Read more about the importance of tracking accuracy over [here](https://sweetcod
|
|
41 |
* Google Ads Enhanced Conversions (Pro version)
|
42 |
* Meta Conversion API (Facebook Conversion API) (Pro version)
|
43 |
* Google Analytics Enhanced E-Commerce (Pro version)
|
44 |
-
* Precise measurement by preventing duplicate reporting effectively,
|
45 |
* Collects dynamic remarketing audiences for dynamic retargeting (Google Ads, Meta (Facebook), etc.)
|
46 |
* Google Add Cart Data feature. [Google support page](https://support.google.com/google-ads/answer/9028254)
|
47 |
* Support for various cookie consent management systems
|
@@ -186,6 +186,12 @@ You can send the link to the front page of your shop too if you think it would b
|
|
186 |
|
187 |
== Changelog ==
|
188 |
|
|
|
|
|
|
|
|
|
|
|
|
|
189 |
= 1.16.13 = 30.04.2022
|
190 |
|
191 |
* Tweak: One more adjustment to make sure categories are being output for purchase events on shops that don't properly sync the categories down to the variants
|
4 |
Requires at least: 3.7
|
5 |
Tested up to: 5.9
|
6 |
Requires PHP: 7.3
|
7 |
+
Stable tag: 1.16.14
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
41 |
* Google Ads Enhanced Conversions (Pro version)
|
42 |
* Meta Conversion API (Facebook Conversion API) (Pro version)
|
43 |
* Google Analytics Enhanced E-Commerce (Pro version)
|
44 |
+
* Precise measurement by preventing duplicate reporting effectively, and not counting failed payments.
|
45 |
* Collects dynamic remarketing audiences for dynamic retargeting (Google Ads, Meta (Facebook), etc.)
|
46 |
* Google Add Cart Data feature. [Google support page](https://support.google.com/google-ads/answer/9028254)
|
47 |
* Support for various cookie consent management systems
|
186 |
|
187 |
== Changelog ==
|
188 |
|
189 |
+
= 1.16.14 = 02.05.2022
|
190 |
+
|
191 |
+
|
192 |
+
* Tweak: Set that admins and shop managers are being tracked by default, because the majority of new users expects this
|
193 |
+
* Fix: Fixed document links for Meta (Facebook) settings
|
194 |
+
|
195 |
= 1.16.13 = 30.04.2022
|
196 |
|
197 |
* Tweak: One more adjustment to make sure categories are being output for purchase events on shops that don't properly sync the categories down to the variants
|
wgact.php
CHANGED
@@ -10,7 +10,7 @@
|
|
10 |
* Developer URI: https://sweetcode.com
|
11 |
* Text Domain: woocommerce-google-adwords-conversion-tracking-tag
|
12 |
* Domain path: /languages
|
13 |
-
* * Version: 1.16.
|
14 |
*
|
15 |
* WC requires at least: 3.7
|
16 |
* WC tested up to: 6.4
|
@@ -20,7 +20,7 @@
|
|
20 |
*
|
21 |
*
|
22 |
**/
|
23 |
-
const WPM_CURRENT_VERSION = '1.16.
|
24 |
// TODO export settings function
|
25 |
// TODO add option checkbox on uninstall and ask if user wants to delete options from db
|
26 |
|
10 |
* Developer URI: https://sweetcode.com
|
11 |
* Text Domain: woocommerce-google-adwords-conversion-tracking-tag
|
12 |
* Domain path: /languages
|
13 |
+
* * Version: 1.16.14
|
14 |
*
|
15 |
* WC requires at least: 3.7
|
16 |
* WC tested up to: 6.4
|
20 |
*
|
21 |
*
|
22 |
**/
|
23 |
+
const WPM_CURRENT_VERSION = '1.16.14' ;
|
24 |
// TODO export settings function
|
25 |
// TODO add option checkbox on uninstall and ask if user wants to delete options from db
|
26 |
|