Version Description
Download this release
Release Info
Developer | Icegram |
Plugin | Email Subscribers & Newsletters |
Version | 4.6.7 |
Comparing to | |
See all releases |
Code changes from version 4.6.6 to 4.6.7
- email-subscribers.php +3 -2
- lite/admin/class-email-subscribers-admin.php +2 -2
- lite/admin/css/email-subscribers-admin.css +37 -1
- lite/admin/dist/main.css +1 -1
- lite/admin/images/aws.svg +1 -0
- lite/admin/js/email-subscribers-admin.js +5 -3
- lite/admin/js/subscribers.js +74 -5
- lite/includes/class-email-subscribers.php +1 -1
- lite/includes/class-es-common.php +1 -0
- lite/includes/class-es-install.php +6 -1
- lite/includes/classes/class-es-admin-settings.php +9 -2
- lite/includes/classes/class-es-contacts-table.php +1 -1
- lite/includes/classes/class-es-cron.php +3 -0
- lite/includes/classes/class-es-handle-post-notification.php +6 -7
- lite/includes/classes/class-es-handle-subscription.php +19 -0
- lite/includes/classes/class-es-import-subscribers.php +124 -46
- lite/includes/classes/class-es-mailer.php +37 -10
- lite/includes/classes/class-es-message.php +20 -0
- lite/includes/classes/class-es-newsletters.php +31 -15
- lite/includes/classes/class-es-queue.php +3 -6
- lite/includes/classes/class-es-reports-table.php +56 -8
- lite/includes/classes/class-es-tools.php +5 -1
- lite/includes/classes/class-ig-es-background-process-helper.php +5 -3
- lite/includes/db/class-es-db-contacts.php +5 -1
- lite/includes/db/class-es-db-sending-queue.php +115 -0
- lite/includes/libraries/class-es-html2text.php +9 -2
- lite/includes/mailers/class-es-pepipost-mailer.php +14 -0
- lite/includes/mailers/class-es-phpmail-mailer.php +59 -7
- lite/includes/mailers/class-es-wpmail-mailer.php +1 -1
- lite/includes/pro-features.php +76 -2
- lite/includes/upgrade/es-update-functions.php +41 -0
- lite/public/js/email-subscribers-public.js +23 -0
- lite/public/partials/class-es-shortcode.php +0 -1
- readme.txt +10 -1
email-subscribers.php
CHANGED
@@ -3,13 +3,14 @@
|
|
3 |
* Plugin Name: Email Subscribers & Newsletters
|
4 |
* Plugin URI: https://www.icegram.com/
|
5 |
* Description: Add subscription forms on website, send HTML newsletters & automatically notify subscribers about new blog posts once it is published.
|
6 |
-
* Version: 4.6.
|
7 |
* Author: Icegram
|
8 |
* Author URI: https://www.icegram.com/
|
9 |
* Requires at least: 3.9
|
10 |
* Tested up to: 5.6
|
11 |
* WC requires at least: 3.6.0
|
12 |
* WC tested up to: 4.6.2
|
|
|
13 |
* Requires PHP: 5.6
|
14 |
* Text Domain: email-subscribers
|
15 |
* Domain Path: /lite/languages/
|
@@ -177,7 +178,7 @@ if ( 'premium' === $ig_es_plan ) {
|
|
177 |
/* ***************************** Initial Compatibility Work (End) ******************* */
|
178 |
|
179 |
if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
|
180 |
-
define( 'ES_PLUGIN_VERSION', '4.6.
|
181 |
}
|
182 |
|
183 |
// Plugin Folder Path.
|
3 |
* Plugin Name: Email Subscribers & Newsletters
|
4 |
* Plugin URI: https://www.icegram.com/
|
5 |
* Description: Add subscription forms on website, send HTML newsletters & automatically notify subscribers about new blog posts once it is published.
|
6 |
+
* Version: 4.6.7
|
7 |
* Author: Icegram
|
8 |
* Author URI: https://www.icegram.com/
|
9 |
* Requires at least: 3.9
|
10 |
* Tested up to: 5.6
|
11 |
* WC requires at least: 3.6.0
|
12 |
* WC tested up to: 4.6.2
|
13 |
+
* ES WOO: 7120515:9f4c7f8bb491260ef19edf9699db73e6
|
14 |
* Requires PHP: 5.6
|
15 |
* Text Domain: email-subscribers
|
16 |
* Domain Path: /lite/languages/
|
178 |
/* ***************************** Initial Compatibility Work (End) ******************* */
|
179 |
|
180 |
if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
|
181 |
+
define( 'ES_PLUGIN_VERSION', '4.6.7' );
|
182 |
}
|
183 |
|
184 |
// Plugin Folder Path.
|
lite/admin/class-email-subscribers-admin.php
CHANGED
@@ -135,7 +135,7 @@ class Email_Subscribers_Admin {
|
|
135 |
wp_enqueue_style( 'ig-es-style', plugin_dir_url( __FILE__ ) . 'dist/main.css', array(), $this->version, 'all' );
|
136 |
|
137 |
$get_page = ig_es_get_request_data( 'page' );
|
138 |
-
if ( ! empty( $get_page ) && 'es_reports' === $get_page ) {
|
139 |
wp_enqueue_style( 'flag-icon-css', 'https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.5.0/css/flag-icon.min.css', array(), $this->version, 'all' );
|
140 |
}
|
141 |
}
|
@@ -198,7 +198,7 @@ class Email_Subscribers_Admin {
|
|
198 |
'security' => wp_create_nonce( 'ig-es-admin-ajax-nonce' ),
|
199 |
'i18n' => array(
|
200 |
'select_status' => esc_html__( 'Please select the status for the importing contacts!', 'email-subscribers' ),
|
201 |
-
'
|
202 |
'prepare_data' => esc_html__( 'Preparing Data', 'email-subscribers' ),
|
203 |
/* translators: %s: Upload progress */
|
204 |
'uploading' => esc_html__( 'Uploading...%s', 'email-subscribers' ),
|
135 |
wp_enqueue_style( 'ig-es-style', plugin_dir_url( __FILE__ ) . 'dist/main.css', array(), $this->version, 'all' );
|
136 |
|
137 |
$get_page = ig_es_get_request_data( 'page' );
|
138 |
+
if ( ! empty( $get_page ) && ( 'es_reports' === $get_page || 'es_subscribers' === $get_page ) ) {
|
139 |
wp_enqueue_style( 'flag-icon-css', 'https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.5.0/css/flag-icon.min.css', array(), $this->version, 'all' );
|
140 |
}
|
141 |
}
|
198 |
'security' => wp_create_nonce( 'ig-es-admin-ajax-nonce' ),
|
199 |
'i18n' => array(
|
200 |
'select_status' => esc_html__( 'Please select the status for the importing contacts!', 'email-subscribers' ),
|
201 |
+
'select_email_column' => esc_html__( 'Please select the email address column!', 'email-subscribers' ),
|
202 |
'prepare_data' => esc_html__( 'Preparing Data', 'email-subscribers' ),
|
203 |
/* translators: %s: Upload progress */
|
204 |
'uploading' => esc_html__( 'Uploading...%s', 'email-subscribers' ),
|
lite/admin/css/email-subscribers-admin.css
CHANGED
@@ -1783,6 +1783,19 @@ div.broadcast_side_content{
|
|
1783 |
height: 1.2rem !important;
|
1784 |
}
|
1785 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1786 |
/* Import Subscriber */
|
1787 |
|
1788 |
.step2 {
|
@@ -1827,10 +1840,33 @@ div.broadcast_side_content{
|
|
1827 |
100%{left:120%;}
|
1828 |
}
|
1829 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1830 |
/* Import Subscriber: end; */
|
1831 |
|
1832 |
|
1833 |
.tablenav {
|
1834 |
padding-top: 0px !important;
|
1835 |
clear: none !important;
|
1836 |
-
}
|
1783 |
height: 1.2rem !important;
|
1784 |
}
|
1785 |
|
1786 |
+
|
1787 |
+
#es_country_flag{
|
1788 |
+
width:2.3em;
|
1789 |
+
}
|
1790 |
+
|
1791 |
+
#es-flag-icon{
|
1792 |
+
width:2.3em !important;
|
1793 |
+
}
|
1794 |
+
|
1795 |
+
.ig-es-attachment-container{
|
1796 |
+
margin-left: -120px;
|
1797 |
+
margin-right: -200px;
|
1798 |
+
}
|
1799 |
/* Import Subscriber */
|
1800 |
|
1801 |
.step2 {
|
1840 |
100%{left:120%;}
|
1841 |
}
|
1842 |
|
1843 |
+
.upload-method-or {
|
1844 |
+
font-size: 23px;
|
1845 |
+
text-align: center;
|
1846 |
+
line-height: 11em;
|
1847 |
+
position: relative;
|
1848 |
+
}
|
1849 |
+
|
1850 |
+
.upload-method-or::before {
|
1851 |
+
content: '';
|
1852 |
+
display: block;
|
1853 |
+
height: 100%;
|
1854 |
+
width: 1px;
|
1855 |
+
position: absolute;
|
1856 |
+
background-color: #d2d5dc;
|
1857 |
+
z-index: 0;
|
1858 |
+
left: 50%;
|
1859 |
+
}
|
1860 |
+
|
1861 |
+
.upload-method-or .seperator-text {
|
1862 |
+
background: #fff;
|
1863 |
+
position: relative;
|
1864 |
+
}
|
1865 |
+
|
1866 |
/* Import Subscriber: end; */
|
1867 |
|
1868 |
|
1869 |
.tablenav {
|
1870 |
padding-top: 0px !important;
|
1871 |
clear: none !important;
|
1872 |
+
}
|
lite/admin/dist/main.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box;border:0 solid #d2d6dc}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#a0aec0}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}a{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}img{border-width:0}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-input::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-input::-moz-placeholder{color:#9fa6b2;opacity:1}.form-input::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::placeholder{color:#9fa6b2;opacity:1}.form-input:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-textarea::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-moz-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::placeholder{color:#9fa6b2;opacity:1}.form-textarea:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-multiselect:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;background-repeat:no-repeat;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem 2.5rem .5rem .75rem;font-size:1rem;line-height:1.5;background-position:right .5rem center;background-size:1.5em 1.5em}.form-select::-ms-expand{color:#9fa6b2;border:none}@media not print{.form-select::-ms-expand{display:none}}@media print and (-ms-high-contrast:active),print and (-ms-high-contrast:none){.form-select{padding-right:.75rem}}.form-select:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-checkbox::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.25rem}.form-checkbox:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked:focus,.form-radio:checked{border-color:transparent}.form-radio:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-radio::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;border-radius:100%;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px}.form-radio:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-radio:checked:focus{border-color:transparent}.ig-es-primary-button,.ig-es-send-queue-emails{border-color:transparent;padding:.5rem 1rem;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));color:#fff;color:rgba(255,255,255,var(--text-opacity));background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.ig-es-primary-button,.ig-es-send-queue-emails,.ig-es-title-button,.wp-heading-inline+.page-title-action{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:.375rem;border-width:1px;font-size:.875rem;line-height:1.25rem;font-weight:500;--text-opacity:1;--bg-opacity:1;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.ig-es-title-button,.wp-heading-inline+.page-title-action{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity));color:#374151;color:rgba(55,65,81,var(--text-opacity));background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));padding:.25rem .75rem}.wrap .wp-heading-inline+.page-title-action{margin-left:.5rem}.ig-es-title-button:hover,.wp-heading-inline+.page-title-action:hover{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity));--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.ig-es-title-button:focus,.wp-heading-inline+.page-title-action:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45);--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.ig-es-primary-button:hover{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity));--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.ig-es-primary-button:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45)}.ig-es-imp-button{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important;-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important;border-radius:.375rem!important;border-width:1px!important;border-color:transparent!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;font-size:.875rem!important;line-height:1.25rem!important;font-weight:500!important;background-color:#0e9f6e!important;background-color:rgba(14,159,110,var(--bg-opacity))!important;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform!important;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;-webkit-transition-duration:.15s!important;transition-duration:.15s!important}.ig-es-imp-button,.ig-es-imp-button:hover{--text-opacity:1!important;color:#fff!important;color:rgba(255,255,255,var(--text-opacity))!important;--bg-opacity:1!important}.ig-es-imp-button:hover{background-color:#31c48d!important;background-color:rgba(49,196,141,var(--bg-opacity))!important}.ig-es-imp-button:focus{outline:2px solid transparent!important;outline-offset:2px!important;-webkit-box-shadow:0 0 0 3px rgba(132,225,188,.45)!important;box-shadow:0 0 0 3px rgba(132,225,188,.45)!important}.ig-es-link-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:.375rem;border-width:1px;border-color:transparent;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));font-size:.875rem;line-height:1.25rem;font-weight:500;background-color:#ff5a1f;background-color:rgba(255,90,31,var(--bg-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.ig-es-link-button,.ig-es-link-button:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity));--bg-opacity:1}.ig-es-link-button:hover{background-color:#ff8a4c;background-color:rgba(255,138,76,var(--bg-opacity))}.ig-es-link-button:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(253,186,140,.45);box-shadow:0 0 0 3px rgba(253,186,140,.45)}.ig-es-action.js-open .ig-es-action__header{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity));--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.form-input{--bg-opacity:1!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;border-width:1px!important;border-radius:.375rem!important;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important}.form-input:focus{outline:2px solid transparent!important;outline-offset:2px!important;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;box-shadow:0 0 0 3px rgba(164,202,254,.45)!important}.form-checkbox{content:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E")}.form-radio{content:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}.form-checkbox:checked,.form-radio:checked{--text-opacity:1!important;color:#5850ec!important;color:rgba(88,80,236,var(--text-opacity))!important}.form-select{font-size:.875rem!important;--border-opacity:1!important;border-color:#9fa6b2!important;border-color:rgba(159,166,178,var(--border-opacity))!important;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important}.form-select:focus,input[type=number]:focus{outline:2px solid transparent!important;outline-offset:2px!important;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;--border-opacity:1!important;border-color:#a4cafe!important;border-color:rgba(164,202,254,var(--border-opacity))!important}.es-check-toggle:checked~.es-mail-toggle-line{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.es-check-toggle:checked~.es-mail-toggle-dot{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));--transform-translate-x:100%}.es-mail-toggle-line{width:2.25rem;height:1.25rem;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity));-webkit-box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06);box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06)}.es-mail-toggle-dot,.es-mail-toggle-line{display:block;--bg-opacity:1;border-radius:9999px}.es-mail-toggle-dot{width:.875rem;height:.875rem;margin-left:.25rem;position:absolute;top:0;bottom:0;-webkit-transition-property:all;transition-property:all;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.es-mail-toggle-dot:focus-within{-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45)}[type=radio]:checked+.es-mailer-logo{-webkit-transition-property:all;transition-property:all;-webkit-transition-duration:.1s;transition-duration:.1s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));--transform-scale-x:1.1;--transform-scale-y:1.1;-webkit-box-shadow:0 0 3px 1px #5a67d8;box-shadow:0 0 3px 1px #5a67d8}[type=radio]:checked+.es-mailer-logo:hover{border-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.wp-core-ui .button,.wp-core-ui .button-secondary{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.wp-core-ui .button,.wp-core-ui .button-primary,.wp-core-ui .button-secondary{font-size:.875rem;border-radius:.375rem;border-width:1px;line-height:1.25rem;font-weight:500;--text-opacity:1}.wp-core-ui .button-primary{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity));color:#fff;color:rgba(255,255,255,var(--text-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.wp-core-ui .button-primary:hover,.wp-core-ui .button:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.wp-core-ui .search-box input[name=s],.wp-core-ui select{border-radius:.375rem}.wp-core-ui #bulk-action-selector-top,.wp-core-ui #doaction,.wp-core-ui #doaction2,.wp-core-ui #filter-by-date,.wp-core-ui #post-query-submit,.wp-core-ui #poststuff select,.wp-core-ui #search-submit{cursor:pointer;line-height:1.25rem;--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity));background-color:transparent;font-size:.875rem}.wp-core-ui #search-submit{margin-left:.375rem}.wp-core-ui #doaction2:hover .wp-core-ui #post-query-submit:hover,.wp-core-ui #doaction:hover,.wp-core-ui #search-submit:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));--border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--border-opacity))}.wp-core-ui #doaction2:focus .wp-core-ui #post-query-submit:focus,.wp-core-ui #doaction:focus,.wp-core-ui #search-submit:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(159,166,178,.45);box-shadow:0 0 0 3px rgba(159,166,178,.45)}.es-items-lists table.fixed,.post-type-es_template table.fixed{margin-top:1rem;margin-bottom:1rem;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);border-radius:.5rem;overflow:hidden}.es-items-lists table.fixed tfoot td,.es-items-lists table.fixed tfoot th,.es-items-lists table.fixed thead td,.es-items-lists table.fixed thead th,.post-type-es_template table.fixed tfoot th,.post-type-es_template table.fixed thead td,.post-type-es_template table.fixed thead th{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity));font-weight:500;letter-spacing:.05em}.es-items-lists table.fixed tfoot th,.es-items-lists table.fixed thead th,.post-type-es_template table.fixed tfoot th,.post-type-es_template table.fixed thead th{padding-top:.5rem;padding-bottom:.5rem}.es-items-lists .widefat thead td input,.post-type-es_template .widefat thead td input{margin-right:1.5rem}.post-type-es_template .wrap{padding-top:1rem;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.post-type-es_template .wrap>h1{padding-top:0;font-weight:600;--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));line-height:2.25rem}.es-items-lists .striped>tbody tr,.post-type-es_template .striped>tbody tr{border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));padding-top:.5rem;padding-bottom:.5rem}.es-items-lists .striped>tbody>:nth-child(odd),.post-type-es_template .striped>tbody>:nth-child(odd){--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.es_onboard_email{padding:.25rem .75rem!important}.es_reports_table_header{border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));text-align:left;font-size:.875rem;line-height:1rem;font-weight:500;--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity));letter-spacing:.05em}.importing-progress,.progress{width:100%;height:2rem;--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity));overflow:hidden;position:relative;text-align:right;line-height:1rem;margin-top:.375rem;border-radius:.25rem}.importing-progress span.bar,.progress span.bar{display:block;position:absolute;line-height:2.5rem;padding-top:.25rem;padding-bottom:.25rem;top:0;bottom:0;left:0;border-radius:.25rem;overflow:hidden;background-image:-webkit-gradient(linear,left top,right top,from(var(--gradient-color-stops)));background-image:linear-gradient(90deg,var(--gradient-color-stops));--gradient-from-color:#42389d;--gradient-color-stops:var(--gradient-from-color),var(--gradient-to-color,rgba(66,56,157,0));--gradient-to-color:#6875f5;--bg-opacity:1;background-color:#8da2fb;background-color:rgba(141,162,251,var(--bg-opacity))}.space-y-1>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.25rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.25rem*var(--space-y-reverse))}.space-y-2>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.5rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.5rem*var(--space-y-reverse))}.space-y-3>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.75rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.75rem*var(--space-y-reverse))}.space-x-3>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(0.75rem*var(--space-x-reverse));margin-left:calc(0.75rem*(1 - var(--space-x-reverse)))}.space-y-4>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(1rem*(1 - var(--space-y-reverse)));margin-bottom:calc(1rem*var(--space-y-reverse))}.space-y-5>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--space-y-reverse)));margin-bottom:calc(1.25rem*var(--space-y-reverse))}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-50{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.bg-gray-200{--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity))}.bg-gray-300{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity))}.bg-red-50{--bg-opacity:1;background-color:#fdf2f2;background-color:rgba(253,242,242,var(--bg-opacity))}.bg-red-100{--bg-opacity:1;background-color:#fde8e8;background-color:rgba(253,232,232,var(--bg-opacity))}.bg-yellow-100{--bg-opacity:1;background-color:#fdf6b2;background-color:rgba(253,246,178,var(--bg-opacity))}.bg-green-100{--bg-opacity:1;background-color:#def7ec;background-color:rgba(222,247,236,var(--bg-opacity))}.bg-green-300{--bg-opacity:1;background-color:#84e1bc;background-color:rgba(132,225,188,var(--bg-opacity))}.bg-green-600{--bg-opacity:1;background-color:#057a55;background-color:rgba(5,122,85,var(--bg-opacity))}.bg-teal-50{--bg-opacity:1;background-color:#edfafa;background-color:rgba(237,250,250,var(--bg-opacity))}.bg-blue-50{--bg-opacity:1;background-color:#ebf5ff;background-color:rgba(235,245,255,var(--bg-opacity))}.bg-blue-300{--bg-opacity:1;background-color:#a4cafe;background-color:rgba(164,202,254,var(--bg-opacity))}.bg-indigo-200{--bg-opacity:1;background-color:#cddbfe;background-color:rgba(205,219,254,var(--bg-opacity))}.bg-indigo-500{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity))}.bg-indigo-600{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.bg-indigo-700{--bg-opacity:1;background-color:#5145cd;background-color:rgba(81,69,205,var(--bg-opacity))}.bg-indigo-800{--bg-opacity:1;background-color:#42389d;background-color:rgba(66,56,157,var(--bg-opacity))}.bg-pink-200{--bg-opacity:1;background-color:#fad1e8;background-color:rgba(250,209,232,var(--bg-opacity))}.group:focus .group-focus\:bg-gray-400,.group:hover .group-hover\:bg-gray-400{--bg-opacity:1;background-color:#9fa6b2;background-color:rgba(159,166,178,var(--bg-opacity))}.hover\:bg-gray-50:hover{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.hover\:bg-gray-100:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.hover\:bg-green-500:hover{--bg-opacity:1;background-color:#0e9f6e;background-color:rgba(14,159,110,var(--bg-opacity))}.hover\:bg-indigo-500:hover{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity))}.hover\:bg-indigo-600:hover{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.focus\:bg-gray-50:focus{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.focus\:bg-gray-100:focus{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.border-collapse{border-collapse:collapse}.border-transparent{border-color:transparent}.border-gray-100{--border-opacity:1;border-color:#f4f5f7;border-color:rgba(244,245,247,var(--border-opacity))}.border-gray-200{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.border-gray-300{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.border-indigo-300{--border-opacity:1;border-color:#b4c6fc;border-color:rgba(180,198,252,var(--border-opacity))}.border-indigo-500{--border-opacity:1;border-color:#6875f5;border-color:rgba(104,117,245,var(--border-opacity))}.border-indigo-600{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.hover\:border-gray-200:hover{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.hover\:border-gray-500:hover{--border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--border-opacity))}.hover\:border-red-400:hover{--border-opacity:1;border-color:#f98080;border-color:rgba(249,128,128,var(--border-opacity))}.hover\:border-indigo-600:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.focus\:border-blue-300:focus{--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-0{border-width:0}.border-2{border-width:2px}.border{border-width:1px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.grid{display:grid}.contents{display:contents}.hidden{display:none}.flex-row{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.flex-col,.flex-row{-webkit-box-direction:normal}.flex-col{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column}.flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.self-start{-ms-flex-item-align:start;align-self:flex-start}.justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.flex-1{-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.flex-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.flex-shrink-0{-ms-flex-negative:0;flex-shrink:0}.float-right{float:right}.float-left{float:left}.font-sans{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-thin{font-weight:200}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.h-0{height:0}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-15{height:3.75rem}.h-20{height:5rem}.h-48{height:12rem}.h-auto{height:auto}.h-1\.5{height:.375rem}.h-2\.5{height:.625rem}.h-full{height:100%}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.text-4xl{font-size:2.25rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-9{line-height:2.25rem}.leading-none{line-height:1}.leading-snug{line-height:1.375}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.list-none{list-style-type:none}.list-disc{list-style-type:disc}.list-decimal{list-style-type:decimal}.m-4{margin:1rem}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-4{margin-left:1rem;margin-right:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.mx-8{margin-left:2rem;margin-right:2rem}.my-12{margin-top:3rem;margin-bottom:3rem}.mx-auto{margin-left:auto;margin-right:auto}.-my-4{margin-top:-1rem;margin-bottom:-1rem}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-5{margin-top:1.25rem}.ml-5{margin-left:1.25rem}.mt-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mb-6{margin-bottom:1.5rem}.ml-6{margin-left:1.5rem}.mt-7{margin-top:1.75rem}.mb-7{margin-bottom:1.75rem}.ml-7{margin-left:1.75rem}.mt-8{margin-top:2rem}.mr-8{margin-right:2rem}.ml-8{margin-left:2rem}.mr-10{margin-right:2.5rem}.mt-12{margin-top:3rem}.ml-12{margin-left:3rem}.ml-14{margin-left:3.5rem}.mt-16{margin-top:4rem}.mr-16{margin-right:4rem}.ml-16{margin-left:4rem}.mt-0\.5{margin-top:.125rem}.mt-1\.5{margin-top:.375rem}.mr-1\.5{margin-right:.375rem}.mt-2\.5{margin-top:.625rem}.-mt-1{margin-top:-.25rem}.-mr-1{margin-right:-.25rem}.-mb-1{margin-bottom:-.25rem}.-mb-2{margin-bottom:-.5rem}.-mt-3{margin-top:-.75rem}.-mt-5{margin-top:-1.25rem}.-ml-6{margin-left:-1.5rem}.-ml-8{margin-left:-2rem}.-mb-0\.5{margin-bottom:-.125rem}.-mt-1\.5{margin-top:-.375rem}.max-h-full{max-height:100%}.max-w-7xl{max-width:80rem}.max-w-full{max-width:100%}.min-h-screen{min-height:100vh}.min-w-0{min-width:0}.min-w-full{min-width:100%}.object-cover{-o-object-fit:cover;object-fit:cover}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-100{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.p-0{padding:0}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-13{padding:3.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-12{padding-top:3rem;padding-bottom:3rem}.px-12{padding-left:3rem;padding-right:3rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.pt-1{padding-top:.25rem}.pr-1{padding-right:.25rem}.pb-1{padding-bottom:.25rem}.pl-1{padding-left:.25rem}.pt-2{padding-top:.5rem}.pr-2{padding-right:.5rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pt-3{padding-top:.75rem}.pr-3{padding-right:.75rem}.pb-3{padding-bottom:.75rem}.pl-3{padding-left:.75rem}.pt-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pt-5{padding-top:1.25rem}.pb-5{padding-bottom:1.25rem}.pl-5{padding-left:1.25rem}.pt-6{padding-top:1.5rem}.pr-6{padding-right:1.5rem}.pb-6{padding-bottom:1.5rem}.pl-6{padding-left:1.5rem}.pt-7{padding-top:1.75rem}.pt-8{padding-top:2rem}.pb-8{padding-bottom:2rem}.pl-8{padding-left:2rem}.pt-10{padding-top:2.5rem}.pl-10{padding-left:2.5rem}.pr-12{padding-right:3rem}.pb-12{padding-bottom:3rem}.pl-16{padding-left:4rem}.pt-0\.5{padding-top:.125rem}.pl-0\.5{padding-left:.125rem}.pt-1\.5{padding-top:.375rem}.pb-1\.5{padding-bottom:.375rem}.pointer-events-none{pointer-events:none}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.inset-0{right:0;left:0}.inset-0,.inset-y-0{top:0;bottom:0}.top-0{top:0}.right-0{right:0}.left-0{left:0}.bottom-2{bottom:.5rem}.top-8{top:2rem}.resize{resize:both}.shadow-xs{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.05);box-shadow:0 0 0 1px rgba(0,0,0,.05)}.shadow-sm{-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05);box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.shadow{-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.shadow-md{-webkit-box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.shadow-lg{-webkit-box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.shadow-xl{-webkit-box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.shadow-inner{-webkit-box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06);box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06)}.hover\:shadow-md:hover{-webkit-box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.focus\:shadow-lg:focus{-webkit-box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.focus\:shadow-outline:focus{-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45)}.focus\:shadow-outline-blue:focus{-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45)}.focus\:shadow-outline-red:focus{-webkit-box-shadow:0 0 0 3px rgba(248,180,180,.45);box-shadow:0 0 0 3px rgba(248,180,180,.45)}.focus\:shadow-outline-indigo:focus{-webkit-box-shadow:0 0 0 3px rgba(180,198,252,.45);box-shadow:0 0 0 3px rgba(180,198,252,.45)}.fill-current{fill:currentColor}.table-fixed{table-layout:fixed}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.text-black{--text-opacity:1;color:#000;color:rgba(0,0,0,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.text-gray-800{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.text-red-400{--text-opacity:1;color:#f98080;color:rgba(249,128,128,var(--text-opacity))}.text-red-500{--text-opacity:1;color:#f05252;color:rgba(240,82,82,var(--text-opacity))}.text-red-600{--text-opacity:1;color:#e02424;color:rgba(224,36,36,var(--text-opacity))}.text-red-800{--text-opacity:1;color:#9b1c1c;color:rgba(155,28,28,var(--text-opacity))}.text-orange-400{--text-opacity:1;color:#ff8a4c;color:rgba(255,138,76,var(--text-opacity))}.text-orange-500{--text-opacity:1;color:#ff5a1f;color:rgba(255,90,31,var(--text-opacity))}.text-yellow-400{--text-opacity:1;color:#e3a008;color:rgba(227,160,8,var(--text-opacity))}.text-yellow-600{--text-opacity:1;color:#9f580a;color:rgba(159,88,10,var(--text-opacity))}.text-green-400{--text-opacity:1;color:#31c48d;color:rgba(49,196,141,var(--text-opacity))}.text-green-600{--text-opacity:1;color:#057a55;color:rgba(5,122,85,var(--text-opacity))}.text-green-800{--text-opacity:1;color:#03543f;color:rgba(3,84,63,var(--text-opacity))}.text-teal-400{--text-opacity:1;color:#16bdca;color:rgba(22,189,202,var(--text-opacity))}.text-teal-700{--text-opacity:1;color:#036672;color:rgba(3,102,114,var(--text-opacity))}.text-teal-800{--text-opacity:1;color:#05505c;color:rgba(5,80,92,var(--text-opacity))}.text-blue-400{--text-opacity:1;color:#76a9fa;color:rgba(118,169,250,var(--text-opacity))}.text-blue-500{--text-opacity:1;color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}.text-blue-700{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.text-blue-800{--text-opacity:1;color:#1e429f;color:rgba(30,66,159,var(--text-opacity))}.text-indigo-100{--text-opacity:1;color:#e5edff;color:rgba(229,237,255,var(--text-opacity))}.text-indigo-400{--text-opacity:1;color:#8da2fb;color:rgba(141,162,251,var(--text-opacity))}.text-indigo-500{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.text-indigo-600{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-indigo-700{--text-opacity:1;color:#5145cd;color:rgba(81,69,205,var(--text-opacity))}.text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.group:hover .group-hover\:text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.group:hover .group-hover\:text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.group:focus .group-focus\:text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.group:focus .group-focus\:text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.hover\:text-white:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.hover\:text-gray-800:hover{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.hover\:text-gray-900:hover{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.hover\:text-blue-700:hover{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.hover\:text-indigo-500:hover{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.focus\:text-gray-900:focus{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.active\:text-indigo-600:active{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-opacity-75{--text-opacity:0.75}.italic{font-style:italic}.not-italic{font-style:normal}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.underline{text-decoration:underline}.no-underline{text-decoration:none}.hover\:underline:hover{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.visible{visibility:visible}.whitespace-no-wrap{white-space:nowrap}.break-words{word-wrap:break-word;overflow-wrap:break-word}.break-all{word-break:break-all}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-0{width:0}.w-2{width:.5rem}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-12{width:3rem}.w-24{width:6rem}.w-40{width:10rem}.w-56{width:14rem}.w-auto{width:auto}.w-1\.5{width:.375rem}.w-2\.5{width:.625rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-1\/4{width:25%}.w-2\/4{width:50%}.w-3\/4{width:75%}.w-1\/5{width:20%}.w-2\/5{width:40%}.w-3\/5{width:60%}.w-4\/5{width:80%}.w-3\/6{width:50%}.w-4\/6{width:66.666667%}.w-5\/6{width:83.333333%}.w-1\/12{width:8.333333%}.w-2\/12{width:16.666667%}.w-3\/12{width:25%}.w-4\/12{width:33.333333%}.w-5\/12{width:41.666667%}.w-9\/12{width:75%}.w-10\/12{width:83.333333%}.w-11\/12{width:91.666667%}.w-full{width:100%}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.gap-8{grid-gap:2rem;gap:2rem}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.origin-top-right{-webkit-transform-origin:top right;transform-origin:top right}.scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.scale-100{--transform-scale-x:1;--transform-scale-y:1}.transition-all{-webkit-transition-property:all;transition-property:all}.transition{-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform}.ease-in{-webkit-transition-timing-function:cubic-bezier(.4,0,1,1);transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-75{-webkit-transition-duration:75ms;transition-duration:75ms}.duration-100{-webkit-transition-duration:.1s;transition-duration:.1s}.duration-150{-webkit-transition-duration:.15s;transition-duration:.15s}.duration-300{-webkit-transition-duration:.3s;transition-duration:.3s}@-webkit-keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes ping{75%,to{-webkit-transform:scale(2);transform:scale(2);opacity:0}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{-webkit-transform:translateY(-25%);transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{-webkit-transform:none;transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-ping{-webkit-animation:ping 1s cubic-bezier(0,0,.2,1) infinite;animation:ping 1s cubic-bezier(0,0,.2,1) infinite}.animate-pulse{-webkit-animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@media (min-width:640px){.sm\:space-y-0>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0px*(1 - var(--space-y-reverse)));margin-bottom:calc(0px*var(--space-y-reverse))}.sm\:space-y-3>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.75rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.75rem*var(--space-y-reverse))}.sm\:space-x-4>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(1rem*var(--space-x-reverse));margin-left:calc(1rem*(1 - var(--space-x-reverse)))}.sm\:rounded-md{border-radius:.375rem}.sm\:rounded-lg{border-radius:.5rem}.sm\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.sm\:grid{display:grid}.sm\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.sm\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.sm\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.sm\:h-10{height:2.5rem}.sm\:text-sm{font-size:.875rem}.sm\:text-2xl{font-size:1.5rem}.sm\:text-3xl{font-size:1.875rem}.sm\:leading-5{line-height:1.25rem}.sm\:leading-7{line-height:1.75rem}.sm\:leading-9{line-height:2.25rem}.sm\:my-0{margin-top:0;margin-bottom:0}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-7{margin-top:1.75rem;margin-bottom:1.75rem}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:my-12{margin-top:3rem;margin-bottom:3rem}.sm\:mt-0{margin-top:0}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:mt-5{margin-top:1.25rem}.sm\:max-w-lg{max-width:32rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sm\:w-10{width:2.5rem}.sm\:w-32{width:8rem}.sm\:w-auto{width:auto}.sm\:w-1\/2{width:50%}.sm\:w-1\/3{width:33.333333%}.sm\:w-2\/3{width:66.666667%}.sm\:w-full{width:100%}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:768px){.md\:rounded-lg{border-radius:.5rem}.md\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.md\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.md\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.md\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.md\:text-base{font-size:1rem}.md\:mx-0{margin-left:0;margin-right:0}.md\:my-2{margin-top:.5rem;margin-bottom:.5rem}.md\:mx-auto{margin-left:auto;margin-right:auto}.md\:mt-0{margin-top:0}.md\:ml-2{margin-left:.5rem}.md\:ml-4{margin-left:1rem}.md\:ml-8{margin-left:2rem}.md\:-mr-8{margin-right:-2rem}.md\:max-w-xl{max-width:36rem}.md\:max-w-5xl{max-width:64rem}.md\:p-2{padding:.5rem}.md\:p-6{padding:1.5rem}.md\:py-0{padding-top:0;padding-bottom:0}.md\:px-1{padding-left:.25rem;padding-right:.25rem}.md\:px-2{padding-left:.5rem;padding-right:.5rem}.md\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:pb-2{padding-bottom:.5rem}.md\:pr-4{padding-right:1rem}.md\:pt-6{padding-top:1.5rem}.md\:shadow-xl{-webkit-box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.md\:w-3\/5{width:60%}}@media (min-width:1024px){.lg\:bg-transparent{background-color:transparent}.lg\:border-transparent{border-color:transparent}.lg\:rounded-full{border-radius:9999px}.lg\:block{display:block}.lg\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.lg\:inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.lg\:text-sm{font-size:.875rem}.lg\:text-lg{font-size:1.125rem}.lg\:my-0{margin-top:0;margin-bottom:0}.lg\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.lg\:my-24{margin-top:6rem;margin-bottom:6rem}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:ml-16{margin-left:4rem}.lg\:-mr-16{margin-right:-4rem}.lg\:max-w-3xl{max-width:48rem}.lg\:p-6{padding:1.5rem}.lg\:p-8{padding:2rem}.lg\:px-3{padding-left:.75rem;padding-right:.75rem}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pt-2{padding-top:.5rem}.lg\:pb-2{padding-bottom:.5rem}.lg\:pl-2{padding-left:.5rem}.lg\:top-1\/2{top:50%}.lg\:shadow-none{-webkit-box-shadow:none;box-shadow:none}.lg\:w-40{width:10rem}.lg\:w-48{width:12rem}.lg\:w-1\/2{width:50%}.lg\:w-3\/5{width:60%}.lg\:w-3\/12{width:25%}.lg\:w-7\/12{width:58.333333%}}@media (min-width:1280px){.xl\:mx-7{margin-left:1.75rem;margin-right:1.75rem}.xl\:mr-0{margin-right:0}.xl\:ml-3{margin-left:.75rem}.xl\:ml-4{margin-left:1rem}.xl\:ml-20{margin-left:5rem}.xl\:max-w-4xl{max-width:56rem}.xl\:px-4{padding-left:1rem;padding-right:1rem}.xl\:pb-4{padding-bottom:1rem}.xl\:top-1\/3{top:33.333333%}.xl\:w-1\/4{width:25%}.xl\:w-2\/5{width:40%}.xl\:w-3\/5{width:60%}.xl\:w-2\/12{width:16.666667%}.xl\:w-7\/12{width:58.333333%}}
|
1 |
+
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box;border:0 solid #d2d6dc}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#a0aec0}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}a{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}img{border-width:0}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-input::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-input::-moz-placeholder{color:#9fa6b2;opacity:1}.form-input::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::placeholder{color:#9fa6b2;opacity:1}.form-input:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-textarea::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-moz-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::placeholder{color:#9fa6b2;opacity:1}.form-textarea:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-multiselect:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;background-repeat:no-repeat;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem 2.5rem .5rem .75rem;font-size:1rem;line-height:1.5;background-position:right .5rem center;background-size:1.5em 1.5em}.form-select::-ms-expand{color:#9fa6b2;border:none}@media not print{.form-select::-ms-expand{display:none}}@media print and (-ms-high-contrast:active),print and (-ms-high-contrast:none){.form-select{padding-right:.75rem}}.form-select:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-checkbox::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.25rem}.form-checkbox:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked:focus,.form-radio:checked{border-color:transparent}.form-radio:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-radio::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;border-radius:100%;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px}.form-radio:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-radio:checked:focus{border-color:transparent}.ig-es-primary-button,.ig-es-send-queue-emails{border-color:transparent;padding:.5rem 1rem;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));color:#fff;color:rgba(255,255,255,var(--text-opacity));background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.ig-es-primary-button,.ig-es-send-queue-emails,.ig-es-title-button,.wp-heading-inline+.page-title-action{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:.375rem;border-width:1px;font-size:.875rem;line-height:1.25rem;font-weight:500;--text-opacity:1;--bg-opacity:1;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.ig-es-title-button,.wp-heading-inline+.page-title-action{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity));color:#374151;color:rgba(55,65,81,var(--text-opacity));background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));padding:.25rem .75rem}.wrap .wp-heading-inline+.page-title-action{margin-left:.5rem}.ig-es-title-button:hover,.wp-heading-inline+.page-title-action:hover{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity));--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.ig-es-title-button:focus,.wp-heading-inline+.page-title-action:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45);--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.ig-es-primary-button:hover{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity));--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.ig-es-primary-button:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45)}.ig-es-imp-button{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important;-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important;border-radius:.375rem!important;border-width:1px!important;border-color:transparent!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;font-size:.875rem!important;line-height:1.25rem!important;font-weight:500!important;background-color:#0e9f6e!important;background-color:rgba(14,159,110,var(--bg-opacity))!important;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform!important;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;-webkit-transition-duration:.15s!important;transition-duration:.15s!important}.ig-es-imp-button,.ig-es-imp-button:hover{--text-opacity:1!important;color:#fff!important;color:rgba(255,255,255,var(--text-opacity))!important;--bg-opacity:1!important}.ig-es-imp-button:hover{background-color:#31c48d!important;background-color:rgba(49,196,141,var(--bg-opacity))!important}.ig-es-imp-button:focus{outline:2px solid transparent!important;outline-offset:2px!important;-webkit-box-shadow:0 0 0 3px rgba(132,225,188,.45)!important;box-shadow:0 0 0 3px rgba(132,225,188,.45)!important}.ig-es-link-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:.375rem;border-width:1px;border-color:transparent;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));font-size:.875rem;line-height:1.25rem;font-weight:500;background-color:#ff5a1f;background-color:rgba(255,90,31,var(--bg-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.ig-es-link-button,.ig-es-link-button:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity));--bg-opacity:1}.ig-es-link-button:hover{background-color:#ff8a4c;background-color:rgba(255,138,76,var(--bg-opacity))}.ig-es-link-button:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(253,186,140,.45);box-shadow:0 0 0 3px rgba(253,186,140,.45)}.ig-es-action.js-open .ig-es-action__header{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity));--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.form-input{--bg-opacity:1!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;border-width:1px!important;border-radius:.375rem!important;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important}.form-input:focus{outline:2px solid transparent!important;outline-offset:2px!important;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;box-shadow:0 0 0 3px rgba(164,202,254,.45)!important}.form-checkbox{content:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E")}.form-radio{content:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}.form-checkbox:checked,.form-radio:checked{--text-opacity:1!important;color:#5850ec!important;color:rgba(88,80,236,var(--text-opacity))!important}.form-select{font-size:.875rem!important;--border-opacity:1!important;border-color:#9fa6b2!important;border-color:rgba(159,166,178,var(--border-opacity))!important;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important}.form-select:focus,input[type=number]:focus{outline:2px solid transparent!important;outline-offset:2px!important;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;--border-opacity:1!important;border-color:#a4cafe!important;border-color:rgba(164,202,254,var(--border-opacity))!important}.es-check-toggle:checked~.es-mail-toggle-line{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.es-check-toggle:checked~.es-mail-toggle-dot{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));--transform-translate-x:100%}.es-mail-toggle-line{width:2.25rem;height:1.25rem;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity));-webkit-box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06);box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06)}.es-mail-toggle-dot,.es-mail-toggle-line{display:block;--bg-opacity:1;border-radius:9999px}.es-mail-toggle-dot{width:.875rem;height:.875rem;margin-left:.25rem;position:absolute;top:0;bottom:0;-webkit-transition-property:all;transition-property:all;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.es-mail-toggle-dot:focus-within{-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45)}[type=radio]:checked+.es-mailer-logo{-webkit-transition-property:all;transition-property:all;-webkit-transition-duration:.1s;transition-duration:.1s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));--transform-scale-x:1.1;--transform-scale-y:1.1;-webkit-box-shadow:0 0 3px 1px #5a67d8;box-shadow:0 0 3px 1px #5a67d8}[type=radio]:checked+.es-mailer-logo:hover{border-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.wp-core-ui .button,.wp-core-ui .button-secondary{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.wp-core-ui .button,.wp-core-ui .button-primary,.wp-core-ui .button-secondary{font-size:.875rem;border-radius:.375rem;border-width:1px;line-height:1.25rem;font-weight:500;--text-opacity:1}.wp-core-ui .button-primary{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity));color:#fff;color:rgba(255,255,255,var(--text-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.wp-core-ui .button-primary:hover,.wp-core-ui .button:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.wp-core-ui .search-box input[name=s],.wp-core-ui select{border-radius:.375rem}.wp-core-ui #bulk-action-selector-top,.wp-core-ui #doaction,.wp-core-ui #doaction2,.wp-core-ui #filter-by-date,.wp-core-ui #post-query-submit,.wp-core-ui #poststuff select,.wp-core-ui #search-submit{cursor:pointer;line-height:1.25rem;--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity));background-color:transparent;font-size:.875rem}.wp-core-ui #search-submit{margin-left:.375rem}.wp-core-ui #doaction2:hover .wp-core-ui #post-query-submit:hover,.wp-core-ui #doaction:hover,.wp-core-ui #search-submit:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));--border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--border-opacity))}.wp-core-ui #doaction2:focus .wp-core-ui #post-query-submit:focus,.wp-core-ui #doaction:focus,.wp-core-ui #search-submit:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(159,166,178,.45);box-shadow:0 0 0 3px rgba(159,166,178,.45)}.es-items-lists table.fixed,.post-type-es_template table.fixed{margin-top:1rem;margin-bottom:1rem;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);border-radius:.5rem;overflow:hidden}.es-items-lists table.fixed tfoot td,.es-items-lists table.fixed tfoot th,.es-items-lists table.fixed thead td,.es-items-lists table.fixed thead th,.post-type-es_template table.fixed tfoot th,.post-type-es_template table.fixed thead td,.post-type-es_template table.fixed thead th{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity));font-weight:500;letter-spacing:.05em}.es-items-lists table.fixed tfoot th,.es-items-lists table.fixed thead th,.post-type-es_template table.fixed tfoot th,.post-type-es_template table.fixed thead th{padding-top:.5rem;padding-bottom:.5rem}.es-items-lists .widefat thead td input,.post-type-es_template .widefat thead td input{margin-right:1.5rem}.post-type-es_template .wrap{padding-top:1rem;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.post-type-es_template .wrap>h1{padding-top:0;font-weight:600;--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));line-height:2.25rem}.es-items-lists .striped>tbody tr,.post-type-es_template .striped>tbody tr{border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));padding-top:.5rem;padding-bottom:.5rem}.es-items-lists .striped>tbody>:nth-child(odd),.post-type-es_template .striped>tbody>:nth-child(odd){--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.es_onboard_email{padding:.25rem .75rem!important}.es_reports_table_header{border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));text-align:left;font-size:.875rem;line-height:1rem;font-weight:500;--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity));letter-spacing:.05em}.importing-progress,.progress{width:100%;height:2rem;--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity));overflow:hidden;position:relative;text-align:right;line-height:1rem;margin-top:.375rem;border-radius:.25rem}.importing-progress span.bar,.progress span.bar{display:block;position:absolute;line-height:2.5rem;padding-top:.25rem;padding-bottom:.25rem;top:0;bottom:0;left:0;border-radius:.25rem;overflow:hidden;background-image:-webkit-gradient(linear,left top,right top,from(var(--gradient-color-stops)));background-image:linear-gradient(90deg,var(--gradient-color-stops));--gradient-from-color:#42389d;--gradient-color-stops:var(--gradient-from-color),var(--gradient-to-color,rgba(66,56,157,0));--gradient-to-color:#6875f5;--bg-opacity:1;background-color:#8da2fb;background-color:rgba(141,162,251,var(--bg-opacity))}.space-y-1>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.25rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.25rem*var(--space-y-reverse))}.space-y-2>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.5rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.5rem*var(--space-y-reverse))}.space-y-3>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.75rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.75rem*var(--space-y-reverse))}.space-x-3>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(0.75rem*var(--space-x-reverse));margin-left:calc(0.75rem*(1 - var(--space-x-reverse)))}.space-y-4>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(1rem*(1 - var(--space-y-reverse)));margin-bottom:calc(1rem*var(--space-y-reverse))}.space-y-5>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--space-y-reverse)));margin-bottom:calc(1.25rem*var(--space-y-reverse))}.divide-y>:not(template)~:not(template){--divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--divide-y-reverse)));border-bottom-width:calc(1px*var(--divide-y-reverse))}.divide-gray-200>:not(template)~:not(template){--divide-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--divide-opacity))}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-50{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.bg-gray-200{--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity))}.bg-gray-300{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity))}.bg-red-50{--bg-opacity:1;background-color:#fdf2f2;background-color:rgba(253,242,242,var(--bg-opacity))}.bg-red-100{--bg-opacity:1;background-color:#fde8e8;background-color:rgba(253,232,232,var(--bg-opacity))}.bg-yellow-100{--bg-opacity:1;background-color:#fdf6b2;background-color:rgba(253,246,178,var(--bg-opacity))}.bg-green-100{--bg-opacity:1;background-color:#def7ec;background-color:rgba(222,247,236,var(--bg-opacity))}.bg-green-300{--bg-opacity:1;background-color:#84e1bc;background-color:rgba(132,225,188,var(--bg-opacity))}.bg-green-600{--bg-opacity:1;background-color:#057a55;background-color:rgba(5,122,85,var(--bg-opacity))}.bg-teal-50{--bg-opacity:1;background-color:#edfafa;background-color:rgba(237,250,250,var(--bg-opacity))}.bg-blue-50{--bg-opacity:1;background-color:#ebf5ff;background-color:rgba(235,245,255,var(--bg-opacity))}.bg-blue-300{--bg-opacity:1;background-color:#a4cafe;background-color:rgba(164,202,254,var(--bg-opacity))}.bg-indigo-200{--bg-opacity:1;background-color:#cddbfe;background-color:rgba(205,219,254,var(--bg-opacity))}.bg-indigo-500{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity))}.bg-indigo-600{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.bg-indigo-700{--bg-opacity:1;background-color:#5145cd;background-color:rgba(81,69,205,var(--bg-opacity))}.bg-indigo-800{--bg-opacity:1;background-color:#42389d;background-color:rgba(66,56,157,var(--bg-opacity))}.bg-pink-200{--bg-opacity:1;background-color:#fad1e8;background-color:rgba(250,209,232,var(--bg-opacity))}.group:focus .group-focus\:bg-gray-400,.group:hover .group-hover\:bg-gray-400{--bg-opacity:1;background-color:#9fa6b2;background-color:rgba(159,166,178,var(--bg-opacity))}.hover\:bg-gray-50:hover{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.hover\:bg-gray-100:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.hover\:bg-green-500:hover{--bg-opacity:1;background-color:#0e9f6e;background-color:rgba(14,159,110,var(--bg-opacity))}.hover\:bg-indigo-500:hover{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity))}.hover\:bg-indigo-600:hover{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.focus\:bg-gray-50:focus{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.focus\:bg-gray-100:focus{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.border-collapse{border-collapse:collapse}.border-transparent{border-color:transparent}.border-gray-100{--border-opacity:1;border-color:#f4f5f7;border-color:rgba(244,245,247,var(--border-opacity))}.border-gray-200{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.border-gray-300{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.border-indigo-300{--border-opacity:1;border-color:#b4c6fc;border-color:rgba(180,198,252,var(--border-opacity))}.border-indigo-500{--border-opacity:1;border-color:#6875f5;border-color:rgba(104,117,245,var(--border-opacity))}.border-indigo-600{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.hover\:border-gray-200:hover{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.hover\:border-gray-500:hover{--border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--border-opacity))}.hover\:border-red-400:hover{--border-opacity:1;border-color:#f98080;border-color:rgba(249,128,128,var(--border-opacity))}.hover\:border-indigo-600:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.focus\:border-blue-300:focus{--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-0{border-width:0}.border-2{border-width:2px}.border{border-width:1px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.grid{display:grid}.contents{display:contents}.hidden{display:none}.flex-row{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.flex-col,.flex-row{-webkit-box-direction:normal}.flex-col{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column}.flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.self-start{-ms-flex-item-align:start;align-self:flex-start}.justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.flex-1{-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.flex-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.flex-shrink-0{-ms-flex-negative:0;flex-shrink:0}.float-right{float:right}.float-left{float:left}.clearfix:after{content:"";display:table;clear:both}.font-sans{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-thin{font-weight:200}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.h-0{height:0}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-15{height:3.75rem}.h-20{height:5rem}.h-48{height:12rem}.h-auto{height:auto}.h-1\.5{height:.375rem}.h-2\.5{height:.625rem}.h-full{height:100%}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.text-4xl{font-size:2.25rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-9{line-height:2.25rem}.leading-none{line-height:1}.leading-snug{line-height:1.375}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.list-none{list-style-type:none}.list-disc{list-style-type:disc}.list-decimal{list-style-type:decimal}.m-4{margin:1rem}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-4{margin-left:1rem;margin-right:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.mx-8{margin-left:2rem;margin-right:2rem}.mx-10{margin-left:2.5rem;margin-right:2.5rem}.my-12{margin-top:3rem;margin-bottom:3rem}.mx-auto{margin-left:auto;margin-right:auto}.-my-4{margin-top:-1rem;margin-bottom:-1rem}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-5{margin-top:1.25rem}.ml-5{margin-left:1.25rem}.mt-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mb-6{margin-bottom:1.5rem}.ml-6{margin-left:1.5rem}.mt-7{margin-top:1.75rem}.mb-7{margin-bottom:1.75rem}.ml-7{margin-left:1.75rem}.mt-8{margin-top:2rem}.mr-8{margin-right:2rem}.ml-8{margin-left:2rem}.mt-10{margin-top:2.5rem}.mr-10{margin-right:2.5rem}.mt-12{margin-top:3rem}.ml-12{margin-left:3rem}.ml-14{margin-left:3.5rem}.mt-16{margin-top:4rem}.mr-16{margin-right:4rem}.ml-16{margin-left:4rem}.mt-0\.5{margin-top:.125rem}.mt-1\.5{margin-top:.375rem}.mr-1\.5{margin-right:.375rem}.mt-2\.5{margin-top:.625rem}.-mt-1{margin-top:-.25rem}.-mr-1{margin-right:-.25rem}.-mb-1{margin-bottom:-.25rem}.-mb-2{margin-bottom:-.5rem}.-mt-3{margin-top:-.75rem}.-mb-4{margin-bottom:-1rem}.-mt-5{margin-top:-1.25rem}.-ml-6{margin-left:-1.5rem}.-ml-8{margin-left:-2rem}.-mb-0\.5{margin-bottom:-.125rem}.-mt-1\.5{margin-top:-.375rem}.max-h-full{max-height:100%}.max-w-7xl{max-width:80rem}.max-w-full{max-width:100%}.min-h-screen{min-height:100vh}.min-w-0{min-width:0}.min-w-full{min-width:100%}.object-cover{-o-object-fit:cover;object-fit:cover}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-100{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.p-0{padding:0}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-13{padding:3.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-12{padding-top:3rem;padding-bottom:3rem}.px-12{padding-left:3rem;padding-right:3rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.pt-1{padding-top:.25rem}.pr-1{padding-right:.25rem}.pb-1{padding-bottom:.25rem}.pl-1{padding-left:.25rem}.pt-2{padding-top:.5rem}.pr-2{padding-right:.5rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pt-3{padding-top:.75rem}.pr-3{padding-right:.75rem}.pb-3{padding-bottom:.75rem}.pl-3{padding-left:.75rem}.pt-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pt-5{padding-top:1.25rem}.pb-5{padding-bottom:1.25rem}.pl-5{padding-left:1.25rem}.pt-6{padding-top:1.5rem}.pr-6{padding-right:1.5rem}.pb-6{padding-bottom:1.5rem}.pl-6{padding-left:1.5rem}.pt-7{padding-top:1.75rem}.pt-8{padding-top:2rem}.pb-8{padding-bottom:2rem}.pl-8{padding-left:2rem}.pt-10{padding-top:2.5rem}.pl-10{padding-left:2.5rem}.pr-12{padding-right:3rem}.pb-12{padding-bottom:3rem}.pl-16{padding-left:4rem}.pt-0\.5{padding-top:.125rem}.pl-0\.5{padding-left:.125rem}.pt-1\.5{padding-top:.375rem}.pb-1\.5{padding-bottom:.375rem}.pointer-events-none{pointer-events:none}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.inset-0{right:0;left:0}.inset-0,.inset-y-0{top:0;bottom:0}.top-0{top:0}.right-0{right:0}.left-0{left:0}.bottom-2{bottom:.5rem}.top-8{top:2rem}.resize{resize:both}.shadow-xs{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.05);box-shadow:0 0 0 1px rgba(0,0,0,.05)}.shadow-sm{-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05);box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.shadow{-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.shadow-md{-webkit-box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.shadow-lg{-webkit-box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.shadow-xl{-webkit-box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.shadow-inner{-webkit-box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06);box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06)}.hover\:shadow-md:hover{-webkit-box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.focus\:shadow-lg:focus{-webkit-box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.focus\:shadow-outline:focus{-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45)}.focus\:shadow-outline-blue:focus{-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45)}.focus\:shadow-outline-red:focus{-webkit-box-shadow:0 0 0 3px rgba(248,180,180,.45);box-shadow:0 0 0 3px rgba(248,180,180,.45)}.focus\:shadow-outline-indigo:focus{-webkit-box-shadow:0 0 0 3px rgba(180,198,252,.45);box-shadow:0 0 0 3px rgba(180,198,252,.45)}.fill-current{fill:currentColor}.table-fixed{table-layout:fixed}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.text-black{--text-opacity:1;color:#000;color:rgba(0,0,0,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#d2d6dc;color:rgba(210,214,220,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.text-gray-800{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.text-red-400{--text-opacity:1;color:#f98080;color:rgba(249,128,128,var(--text-opacity))}.text-red-500{--text-opacity:1;color:#f05252;color:rgba(240,82,82,var(--text-opacity))}.text-red-600{--text-opacity:1;color:#e02424;color:rgba(224,36,36,var(--text-opacity))}.text-red-800{--text-opacity:1;color:#9b1c1c;color:rgba(155,28,28,var(--text-opacity))}.text-orange-400{--text-opacity:1;color:#ff8a4c;color:rgba(255,138,76,var(--text-opacity))}.text-orange-500{--text-opacity:1;color:#ff5a1f;color:rgba(255,90,31,var(--text-opacity))}.text-yellow-400{--text-opacity:1;color:#e3a008;color:rgba(227,160,8,var(--text-opacity))}.text-yellow-600{--text-opacity:1;color:#9f580a;color:rgba(159,88,10,var(--text-opacity))}.text-green-400{--text-opacity:1;color:#31c48d;color:rgba(49,196,141,var(--text-opacity))}.text-green-600{--text-opacity:1;color:#057a55;color:rgba(5,122,85,var(--text-opacity))}.text-green-800{--text-opacity:1;color:#03543f;color:rgba(3,84,63,var(--text-opacity))}.text-teal-400{--text-opacity:1;color:#16bdca;color:rgba(22,189,202,var(--text-opacity))}.text-teal-700{--text-opacity:1;color:#036672;color:rgba(3,102,114,var(--text-opacity))}.text-teal-800{--text-opacity:1;color:#05505c;color:rgba(5,80,92,var(--text-opacity))}.text-blue-400{--text-opacity:1;color:#76a9fa;color:rgba(118,169,250,var(--text-opacity))}.text-blue-500{--text-opacity:1;color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}.text-blue-700{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.text-blue-800{--text-opacity:1;color:#1e429f;color:rgba(30,66,159,var(--text-opacity))}.text-indigo-100{--text-opacity:1;color:#e5edff;color:rgba(229,237,255,var(--text-opacity))}.text-indigo-400{--text-opacity:1;color:#8da2fb;color:rgba(141,162,251,var(--text-opacity))}.text-indigo-500{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.text-indigo-600{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-indigo-700{--text-opacity:1;color:#5145cd;color:rgba(81,69,205,var(--text-opacity))}.text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.group:hover .group-hover\:text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.group:hover .group-hover\:text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.group:focus .group-focus\:text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.group:focus .group-focus\:text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.hover\:text-white:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.hover\:text-gray-500:hover{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.hover\:text-gray-800:hover{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.hover\:text-gray-900:hover{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.hover\:text-blue-700:hover{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.hover\:text-indigo-500:hover{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.focus\:text-gray-900:focus{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.active\:text-indigo-600:active{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-opacity-75{--text-opacity:0.75}.italic{font-style:italic}.not-italic{font-style:normal}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.underline{text-decoration:underline}.no-underline{text-decoration:none}.hover\:underline:hover{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.visible{visibility:visible}.whitespace-no-wrap{white-space:nowrap}.break-words{word-wrap:break-word;overflow-wrap:break-word}.break-all{word-break:break-all}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-0{width:0}.w-2{width:.5rem}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-12{width:3rem}.w-24{width:6rem}.w-40{width:10rem}.w-48{width:12rem}.w-56{width:14rem}.w-auto{width:auto}.w-1\.5{width:.375rem}.w-2\.5{width:.625rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-1\/4{width:25%}.w-2\/4{width:50%}.w-3\/4{width:75%}.w-1\/5{width:20%}.w-2\/5{width:40%}.w-3\/5{width:60%}.w-4\/5{width:80%}.w-3\/6{width:50%}.w-4\/6{width:66.666667%}.w-5\/6{width:83.333333%}.w-1\/12{width:8.333333%}.w-2\/12{width:16.666667%}.w-3\/12{width:25%}.w-4\/12{width:33.333333%}.w-5\/12{width:41.666667%}.w-9\/12{width:75%}.w-10\/12{width:83.333333%}.w-11\/12{width:91.666667%}.w-full{width:100%}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.gap-8{grid-gap:2rem;gap:2rem}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.origin-top-right{-webkit-transform-origin:top right;transform-origin:top right}.scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.scale-100{--transform-scale-x:1;--transform-scale-y:1}.transition-all{-webkit-transition-property:all;transition-property:all}.transition{-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform}.ease-in{-webkit-transition-timing-function:cubic-bezier(.4,0,1,1);transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-75{-webkit-transition-duration:75ms;transition-duration:75ms}.duration-100{-webkit-transition-duration:.1s;transition-duration:.1s}.duration-150{-webkit-transition-duration:.15s;transition-duration:.15s}.duration-300{-webkit-transition-duration:.3s;transition-duration:.3s}@-webkit-keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes ping{75%,to{-webkit-transform:scale(2);transform:scale(2);opacity:0}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{-webkit-transform:translateY(-25%);transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{-webkit-transform:none;transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-ping{-webkit-animation:ping 1s cubic-bezier(0,0,.2,1) infinite;animation:ping 1s cubic-bezier(0,0,.2,1) infinite}.animate-pulse{-webkit-animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@media (min-width:640px){.sm\:space-y-0>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0px*(1 - var(--space-y-reverse)));margin-bottom:calc(0px*var(--space-y-reverse))}.sm\:space-y-3>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.75rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.75rem*var(--space-y-reverse))}.sm\:space-x-4>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(1rem*var(--space-x-reverse));margin-left:calc(1rem*(1 - var(--space-x-reverse)))}.sm\:rounded-md{border-radius:.375rem}.sm\:rounded-lg{border-radius:.5rem}.sm\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.sm\:grid{display:grid}.sm\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.sm\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.sm\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.sm\:h-10{height:2.5rem}.sm\:text-sm{font-size:.875rem}.sm\:text-2xl{font-size:1.5rem}.sm\:text-3xl{font-size:1.875rem}.sm\:leading-5{line-height:1.25rem}.sm\:leading-7{line-height:1.75rem}.sm\:leading-9{line-height:2.25rem}.sm\:my-0{margin-top:0;margin-bottom:0}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-7{margin-top:1.75rem;margin-bottom:1.75rem}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:my-12{margin-top:3rem;margin-bottom:3rem}.sm\:mt-0{margin-top:0}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:mt-5{margin-top:1.25rem}.sm\:max-w-lg{max-width:32rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sm\:w-10{width:2.5rem}.sm\:w-32{width:8rem}.sm\:w-auto{width:auto}.sm\:w-1\/2{width:50%}.sm\:w-1\/3{width:33.333333%}.sm\:w-2\/3{width:66.666667%}.sm\:w-full{width:100%}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:768px){.md\:rounded-lg{border-radius:.5rem}.md\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.md\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.md\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.md\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.md\:text-base{font-size:1rem}.md\:mx-0{margin-left:0;margin-right:0}.md\:my-2{margin-top:.5rem;margin-bottom:.5rem}.md\:mx-auto{margin-left:auto;margin-right:auto}.md\:mt-0{margin-top:0}.md\:ml-2{margin-left:.5rem}.md\:ml-4{margin-left:1rem}.md\:ml-8{margin-left:2rem}.md\:-mr-8{margin-right:-2rem}.md\:max-w-xl{max-width:36rem}.md\:max-w-5xl{max-width:64rem}.md\:p-2{padding:.5rem}.md\:p-6{padding:1.5rem}.md\:py-0{padding-top:0;padding-bottom:0}.md\:px-1{padding-left:.25rem;padding-right:.25rem}.md\:px-2{padding-left:.5rem;padding-right:.5rem}.md\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:pb-2{padding-bottom:.5rem}.md\:pr-4{padding-right:1rem}.md\:pt-6{padding-top:1.5rem}.md\:shadow-xl{-webkit-box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.md\:w-3\/5{width:60%}}@media (min-width:1024px){.lg\:bg-transparent{background-color:transparent}.lg\:border-transparent{border-color:transparent}.lg\:rounded-full{border-radius:9999px}.lg\:block{display:block}.lg\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.lg\:inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.lg\:text-sm{font-size:.875rem}.lg\:text-lg{font-size:1.125rem}.lg\:my-0{margin-top:0;margin-bottom:0}.lg\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.lg\:my-24{margin-top:6rem;margin-bottom:6rem}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:ml-16{margin-left:4rem}.lg\:-mr-16{margin-right:-4rem}.lg\:max-w-3xl{max-width:48rem}.lg\:p-6{padding:1.5rem}.lg\:p-8{padding:2rem}.lg\:px-3{padding-left:.75rem;padding-right:.75rem}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pt-2{padding-top:.5rem}.lg\:pb-2{padding-bottom:.5rem}.lg\:pl-2{padding-left:.5rem}.lg\:top-1\/2{top:50%}.lg\:shadow-none{-webkit-box-shadow:none;box-shadow:none}.lg\:w-40{width:10rem}.lg\:w-48{width:12rem}.lg\:w-1\/2{width:50%}.lg\:w-3\/5{width:60%}.lg\:w-3\/12{width:25%}.lg\:w-7\/12{width:58.333333%}}@media (min-width:1280px){.xl\:mx-7{margin-left:1.75rem;margin-right:1.75rem}.xl\:mr-0{margin-right:0}.xl\:ml-3{margin-left:.75rem}.xl\:ml-4{margin-left:1rem}.xl\:ml-20{margin-left:5rem}.xl\:ml-32{margin-left:8rem}.xl\:max-w-4xl{max-width:56rem}.xl\:px-4{padding-left:1rem;padding-right:1rem}.xl\:pb-4{padding-bottom:1rem}.xl\:top-1\/3{top:33.333333%}.xl\:w-1\/4{width:25%}.xl\:w-2\/5{width:40%}.xl\:w-3\/5{width:60%}.xl\:w-2\/12{width:16.666667%}.xl\:w-7\/12{width:58.333333%}}
|
lite/admin/images/aws.svg
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 180"><path d="M84.4 65.4c0 3.7.4 6.7 1.1 8.9.8 2.2 1.8 4.6 3.2 7.2.5.8.7 1.6.7 2.3 0 1-.6 2-1.9 3L81.2 91c-.9.6-1.8.9-2.6.9-1 0-2-.5-3-1.4a31 31 0 01-3.6-4.7l-3.1-5.9a37 37 0 01-29.4 13.8c-8.4 0-15.1-2.4-20-7.2a25.7 25.7 0 01-7.4-19.2c0-8.5 3-15.4 9.1-20.6s14.2-7.8 24.5-7.8c3.4 0 6.9.3 10.6.8s7.5 1.3 11.5 2.2v-7.3c0-7.6-1.6-12.9-4.7-16-3.2-3.1-8.6-4.6-16.3-4.6-3.5 0-7.1.4-10.8 1.3A79.7 79.7 0 0021.7 20l-1.6.3c-1.4 0-2.1-1-2.1-3.1v-4.9c0-1.6.2-2.8.7-3.5s1.4-1.4 2.8-2.1A60.6 60.6 0 0149.7.3C61.6.3 70.3 3 75.9 8.4c5.5 5.4 8.3 13.6 8.3 24.6v32.4h.2zM43.8 80.6c3.3 0 6.7-.6 10.3-1.8 3.6-1.2 6.8-3.4 9.5-6.4 1.6-1.9 2.8-4 3.4-6.4.6-2.4 1-5.3 1-8.7v-4.2a83.5 83.5 0 00-18.6-2.3c-6.7 0-11.6 1.3-14.9 4-3.3 2.7-4.9 6.5-4.9 11.5 0 4.7 1.2 8.2 3.7 10.6 2.4 2.5 5.9 3.7 10.5 3.7zm80.3 10.8c-1.8 0-3-.3-3.8-1-.8-.6-1.5-2-2.1-3.9L94.7 9.2c-.6-2-.9-3.3-.9-4 0-1.6.8-2.5 2.4-2.5h9.8c1.9 0 3.2.3 3.9 1 .8.6 1.4 2 2 3.9l16.8 66.2 15.6-66.2c.5-2 1.1-3.3 1.9-3.9.8-.6 2.2-1 4-1h8c1.9 0 3.2.3 4 1 .8.6 1.5 2 1.9 3.9l15.8 67 17.3-67c.6-2 1.3-3.3 2-3.9.8-.6 2.1-1 3.9-1h9.3c1.6 0 2.5.8 2.5 2.5l-.2 1.6-.7 2.5-24.1 77.3c-.6 2-1.3 3.3-2.1 3.9s-2.1 1-3.8 1h-8.6c-1.9 0-3.2-.3-4-1-.8-.7-1.5-2-1.9-4L154 22l-15.4 64.4c-.5 2-1.1 3.3-1.9 4-.8.7-2.2 1-4 1h-8.6zm128.5 2.7a66.2 66.2 0 01-26.9-5.8c-1.6-.9-2.7-1.9-3.1-2.8a7 7 0 01-.6-2.8v-5.1c0-2.1.8-3.1 2.3-3.1l1.8.3 2.5 1a54.4 54.4 0 0022.9 4.7 27 27 0 0014.6-3.3c3.4-2.2 5.2-5.4 5.2-9.5 0-2.8-.9-5.1-2.7-7a25 25 0 00-10.1-5.2L244 51a30.5 30.5 0 01-16-10.2A23.8 23.8 0 01232.9 7c3-2.3 6.4-4 10.4-5.2A43.6 43.6 0 01262.6.5l6.5 1.1 5.7 1.6c1.8.6 3.2 1.2 4.2 1.8 1.4.8 2.4 1.6 3 2.5.6.8.9 1.9.9 3.3v4.7c0 2.1-.8 3.2-2.3 3.2-.8 0-2.1-.4-3.8-1.2a45.7 45.7 0 00-19.2-3.9c-5.7 0-10.2.9-13.3 2.8-3.1 1.9-4.7 4.8-4.7 8.9 0 2.8 1 5.2 3 7.1 2 1.9 5.7 3.8 11 5.5l14.2 4.5c7.2 2.3 12.4 5.5 15.5 9.6s4.6 8.8 4.6 14c0 4.3-.9 8.2-2.6 11.6a26.9 26.9 0 01-7.3 8.8 32.2 32.2 0 01-11.1 5.6 47.6 47.6 0 01-14.3 2.1z" fill="#262f3e"/><path d="M271.5 142.7c-32.9 24.3-80.7 37.2-121.8 37.2A220.3 220.3 0 011 123.2c-3.1-2.8-.3-6.6 3.4-4.4a299.9 299.9 0 00148.8 39.5 297 297 0 00113.5-23.2c5.5-2.5 10.2 3.6 4.8 7.6zm13.7-15.6c-4.2-5.4-27.8-2.6-38.5-1.3-3.2.4-3.7-2.4-.8-4.5 18.8-13.2 49.7-9.4 53.3-5 3.6 4.5-1 35.4-18.6 50.2-2.7 2.3-5.3 1.1-4.1-1.9 4-9.9 12.9-32.2 8.7-37.5z" fill="#f59931"/></svg>
|
lite/admin/js/email-subscribers-admin.js
CHANGED
@@ -373,8 +373,9 @@
|
|
373 |
//es mailer settings
|
374 |
jQuery(document).on('change', '.es_mailer', function (e) {
|
375 |
var val = jQuery('.es_mailer:checked').val();
|
376 |
-
jQuery(
|
377 |
-
jQuery(
|
|
|
378 |
});
|
379 |
jQuery('.es_mailer').trigger('change');
|
380 |
|
@@ -450,7 +451,7 @@
|
|
450 |
|
451 |
let form_data = $(this).closest('form').serialize();
|
452 |
// Add action to form data
|
453 |
-
form_data +=
|
454 |
jQuery.ajax({
|
455 |
method: 'POST',
|
456 |
url: ajaxurl,
|
@@ -654,6 +655,7 @@
|
|
654 |
jQuery('#ig-es-optin-trial-to-premium-offer').on('click', function(){
|
655 |
jQuery(this).closest('.notice').hide('slow');
|
656 |
});
|
|
|
657 |
});
|
658 |
|
659 |
})(jQuery);
|
373 |
//es mailer settings
|
374 |
jQuery(document).on('change', '.es_mailer', function (e) {
|
375 |
var val = jQuery('.es_mailer:checked').val();
|
376 |
+
var wrapper_row = jQuery(this).closest('tr');
|
377 |
+
jQuery(wrapper_row).find('[name*="ig_es_mailer_settings"], .es_sub_headline, .field-desciption').not('.es_mailer').hide();
|
378 |
+
jQuery(wrapper_row).find('.' + val).show();
|
379 |
});
|
380 |
jQuery('.es_mailer').trigger('change');
|
381 |
|
451 |
|
452 |
let form_data = $(this).closest('form').serialize();
|
453 |
// Add action to form data
|
454 |
+
form_data += '&action=ig_es_draft_broadcast&security=' + ig_es_js_data.security;
|
455 |
jQuery.ajax({
|
456 |
method: 'POST',
|
457 |
url: ajaxurl,
|
655 |
jQuery('#ig-es-optin-trial-to-premium-offer').on('click', function(){
|
656 |
jQuery(this).closest('.notice').hide('slow');
|
657 |
});
|
658 |
+
|
659 |
});
|
660 |
|
661 |
})(jQuery);
|
lite/admin/js/subscribers.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
jQuery(document).ready(function ($) {
|
2 |
"use strict"
|
3 |
|
4 |
-
let importstatus = $('.step1 .import-status'),
|
5 |
progress = $('#progress'),
|
6 |
progressbar = progress.find('.bar'),
|
7 |
importprogress = $('#importing-progress'),
|
@@ -96,8 +96,8 @@ jQuery(document).ready(function ($) {
|
|
96 |
dataType: 'json'
|
97 |
}, function( response ) {
|
98 |
progress.addClass('hidden');
|
99 |
-
|
100 |
-
$('.
|
101 |
$('.step2-body').html(response.html).parent().show();
|
102 |
$('.step2-status,.step2-list').show();
|
103 |
|
@@ -121,7 +121,7 @@ jQuery(document).ready(function ($) {
|
|
121 |
|
122 |
|
123 |
if ( ! is_email_field_set ) {
|
124 |
-
alert(ig_es_subscribers_data.i18n.
|
125 |
return false;
|
126 |
}
|
127 |
|
@@ -146,7 +146,8 @@ jQuery(document).ready(function ($) {
|
|
146 |
|
147 |
progress.removeClass('hidden');
|
148 |
progressbar.stop().width(0);
|
149 |
-
$('.step1').slideUp();
|
|
|
150 |
$('.step2-body').html('<br><br>').parent().show();
|
151 |
$('.step2-status,.step2-list, .es-import-processing ').hide();
|
152 |
|
@@ -272,9 +273,77 @@ jQuery(document).ready(function ($) {
|
|
272 |
return str;
|
273 |
}
|
274 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
275 |
if ( 'object' === typeof (wpUploaderInit) ) {
|
276 |
uploader_init();
|
277 |
}
|
278 |
|
279 |
$('#form_import_subscribers').on('submit', start_import );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
280 |
});
|
1 |
jQuery(document).ready(function ($) {
|
2 |
"use strict"
|
3 |
|
4 |
+
let importstatus = $('.es-import-step1 .import-status'),
|
5 |
progress = $('#progress'),
|
6 |
progressbar = progress.find('.bar'),
|
7 |
importprogress = $('#importing-progress'),
|
96 |
dataType: 'json'
|
97 |
}, function( response ) {
|
98 |
progress.addClass('hidden');
|
99 |
+
$(".es-import-step1").slideUp();
|
100 |
+
$('.es-import-option').hide();
|
101 |
$('.step2-body').html(response.html).parent().show();
|
102 |
$('.step2-status,.step2-list').show();
|
103 |
|
121 |
|
122 |
|
123 |
if ( ! is_email_field_set ) {
|
124 |
+
alert(ig_es_subscribers_data.i18n.select_email_column);
|
125 |
return false;
|
126 |
}
|
127 |
|
146 |
|
147 |
progress.removeClass('hidden');
|
148 |
progressbar.stop().width(0);
|
149 |
+
$('.es-import-step1').slideUp();
|
150 |
+
$('.es-import-option').hide();
|
151 |
$('.step2-body').html('<br><br>').parent().show();
|
152 |
$('.step2-status,.step2-list, .es-import-processing ').hide();
|
153 |
|
273 |
return str;
|
274 |
}
|
275 |
|
276 |
+
let _ajax = function(action, data, callback, errorCallback) {
|
277 |
+
|
278 |
+
if ($.isFunction(data)) {
|
279 |
+
if ($.isFunction(callback)) {
|
280 |
+
errorCallback = callback;
|
281 |
+
}
|
282 |
+
callback = data;
|
283 |
+
data = {};
|
284 |
+
}
|
285 |
+
$.ajax({
|
286 |
+
type: 'POST',
|
287 |
+
url: ajaxurl,
|
288 |
+
data: $.extend({
|
289 |
+
action: 'ig_es_' + action,
|
290 |
+
security: wpnonce
|
291 |
+
}, data),
|
292 |
+
success: function (data, textStatus, jqXHR) {
|
293 |
+
callback && callback.call(this, data, textStatus, jqXHR);
|
294 |
+
},
|
295 |
+
error: function (jqXHR, textStatus, errorThrown) {
|
296 |
+
if (textStatus == 'error' && !errorThrown) return;
|
297 |
+
if (console) console.error($.trim(jqXHR.responseText));
|
298 |
+
errorCallback && errorCallback.call(this, jqXHR, textStatus, errorThrown);
|
299 |
+
},
|
300 |
+
dataType: "JSON"
|
301 |
+
});
|
302 |
+
}
|
303 |
+
|
304 |
if ( 'object' === typeof (wpUploaderInit) ) {
|
305 |
uploader_init();
|
306 |
}
|
307 |
|
308 |
$('#form_import_subscribers').on('submit', start_import );
|
309 |
+
|
310 |
+
$('#import_wordpress')
|
311 |
+
.on('click', function () {
|
312 |
+
|
313 |
+
let selected_roles = [];
|
314 |
+
$('#ig-es-wordpress-user-roles input[name="roles[]"]:checked').each(function(){
|
315 |
+
let selected_role = $(this).val();
|
316 |
+
selected_roles.push(selected_role);
|
317 |
+
});
|
318 |
+
_ajax('import_subscribers_upload_handler', {
|
319 |
+
selected_roles: selected_roles
|
320 |
+
}, function (response) {
|
321 |
+
|
322 |
+
if (response.success) {
|
323 |
+
importidentifier = response.identifier;
|
324 |
+
$('#wordpress-users').fadeOut();
|
325 |
+
get_import_data();
|
326 |
+
} else {
|
327 |
+
importstatus.html(response.message);
|
328 |
+
progress.addClass('error');
|
329 |
+
}
|
330 |
+
}, function () {
|
331 |
+
|
332 |
+
importstatus.html('Error');
|
333 |
+
});
|
334 |
+
|
335 |
+
return false;
|
336 |
+
});
|
337 |
+
|
338 |
+
$("input:radio[name='es-import-subscribers']").click(function() {
|
339 |
+
let import_option = $(this).attr("value");
|
340 |
+
if( "es-sync-wordpress-users" === import_option ){
|
341 |
+
$(".es-sync-wordpress-users").show();
|
342 |
+
$(".es-import-with-csv").hide();
|
343 |
+
}
|
344 |
+
else{
|
345 |
+
$(".es-import-with-csv").show();
|
346 |
+
$(".es-sync-wordpress-users").hide();
|
347 |
+
}
|
348 |
+
});
|
349 |
});
|
lite/includes/class-email-subscribers.php
CHANGED
@@ -749,7 +749,7 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
|
|
749 |
// Pro Feature
|
750 |
'lite/includes/pro-features.php',
|
751 |
// End-IG-Code.
|
752 |
-
|
753 |
// Feedback Class
|
754 |
'lite/includes/feedback/class-ig-tracker.php',
|
755 |
// Start-IG-Code.
|
749 |
// Pro Feature
|
750 |
'lite/includes/pro-features.php',
|
751 |
// End-IG-Code.
|
752 |
+
|
753 |
// Feedback Class
|
754 |
'lite/includes/feedback/class-ig-tracker.php',
|
755 |
// Start-IG-Code.
|
lite/includes/class-es-common.php
CHANGED
@@ -1158,6 +1158,7 @@ class ES_Common {
|
|
1158 |
|
1159 |
/**
|
1160 |
* Get all restricted settings which we can't share
|
|
|
1161 |
* @return array
|
1162 |
*
|
1163 |
* @since 4.6.6
|
1158 |
|
1159 |
/**
|
1160 |
* Get all restricted settings which we can't share
|
1161 |
+
*
|
1162 |
* @return array
|
1163 |
*
|
1164 |
* @since 4.6.6
|
lite/includes/class-es-install.php
CHANGED
@@ -235,11 +235,15 @@ if ( ! class_exists( 'ES_Install' ) ) {
|
|
235 |
'ig_es_update_465_create_tables',
|
236 |
'ig_es_update_465_db_version',
|
237 |
),
|
238 |
-
|
239 |
'4.6.6' => array(
|
240 |
'ig_es_update_466_create_temp_import_table',
|
241 |
'ig_es_update_466_db_version',
|
242 |
),
|
|
|
|
|
|
|
|
|
|
|
243 |
|
244 |
);
|
245 |
|
@@ -889,6 +893,7 @@ if ( ! class_exists( 'ES_Install' ) ) {
|
|
889 |
`email` varchar(50) NOT NULL,
|
890 |
`source` varchar(50) DEFAULT NULL,
|
891 |
`ip_address` varchar(50) DEFAULT NULL,
|
|
|
892 |
`form_id` int(10) NOT NULL DEFAULT '0',
|
893 |
`status` varchar(10) DEFAULT NULL,
|
894 |
`unsubscribed` tinyint(1) NOT NULL DEFAULT '0',
|
235 |
'ig_es_update_465_create_tables',
|
236 |
'ig_es_update_465_db_version',
|
237 |
),
|
|
|
238 |
'4.6.6' => array(
|
239 |
'ig_es_update_466_create_temp_import_table',
|
240 |
'ig_es_update_466_db_version',
|
241 |
),
|
242 |
+
'4.6.7' => array(
|
243 |
+
'ig_es_update_467_alter_contacts_table',
|
244 |
+
'ig_es_add_country_code_to_contacts_table',
|
245 |
+
'ig_es_update_467_db_version',
|
246 |
+
),
|
247 |
|
248 |
);
|
249 |
|
893 |
`email` varchar(50) NOT NULL,
|
894 |
`source` varchar(50) DEFAULT NULL,
|
895 |
`ip_address` varchar(50) DEFAULT NULL,
|
896 |
+
`country_code` varchar(50) DEFAULT NULL,
|
897 |
`form_id` int(10) NOT NULL DEFAULT '0',
|
898 |
`status` varchar(10) DEFAULT NULL,
|
899 |
`unsubscribed` tinyint(1) NOT NULL DEFAULT '0',
|
lite/includes/classes/class-es-admin-settings.php
CHANGED
@@ -714,7 +714,7 @@ class ES_Admin_Settings {
|
|
714 |
// If there is help text
|
715 |
if ( ! empty( $arguments['desc'] ) ) {
|
716 |
$helper = $arguments['desc'];
|
717 |
-
$field_html .= sprintf( '<p class="mb-2 text-xs italic font-normal leading-snug text-gray-500 helper"> %s</p>', $helper ); // Show it
|
718 |
}
|
719 |
|
720 |
return $field_html;
|
@@ -874,7 +874,14 @@ class ES_Admin_Settings {
|
|
874 |
if ( ! empty( $mailer['is_premium'] ) ) {
|
875 |
$html .= '<span class="premium-icon"></span>';
|
876 |
}
|
877 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
878 |
}
|
879 |
|
880 |
return $html;
|
714 |
// If there is help text
|
715 |
if ( ! empty( $arguments['desc'] ) ) {
|
716 |
$helper = $arguments['desc'];
|
717 |
+
$field_html .= sprintf( '<p class="field-desciption mb-2 text-xs italic font-normal leading-snug text-gray-500 helper %s"> %s</p>', $class, $helper ); // Show it
|
718 |
}
|
719 |
|
720 |
return $field_html;
|
874 |
if ( ! empty( $mailer['is_premium'] ) ) {
|
875 |
$html .= '<span class="premium-icon"></span>';
|
876 |
}
|
877 |
+
|
878 |
+
$html .= '</div>';
|
879 |
+
|
880 |
+
if ( ! empty( $mailer['is_premium'] ) ) {
|
881 |
+
$html .= '</a>';
|
882 |
+
}
|
883 |
+
|
884 |
+
$html .= '</label>';
|
885 |
}
|
886 |
|
887 |
return $html;
|
lite/includes/classes/class-es-contacts-table.php
CHANGED
@@ -1000,8 +1000,8 @@ class ES_Contacts_Table extends ES_List_Table {
|
|
1000 |
$delete_nonce = wp_create_nonce( 'ig_es_delete_subscriber' );
|
1001 |
|
1002 |
$name = ES_Common::prepare_name_from_first_name_last_name( $item['first_name'], $item['last_name'] );
|
1003 |
-
$title = '<strong>' . $name . '</strong>';
|
1004 |
|
|
|
1005 |
$page = ig_es_get_request_data( 'page' );
|
1006 |
|
1007 |
$actions = array(
|
1000 |
$delete_nonce = wp_create_nonce( 'ig_es_delete_subscriber' );
|
1001 |
|
1002 |
$name = ES_Common::prepare_name_from_first_name_last_name( $item['first_name'], $item['last_name'] );
|
|
|
1003 |
|
1004 |
+
$title = '<strong class="pl-1">' . $name . '</strong>';
|
1005 |
$page = ig_es_get_request_data( 'page' );
|
1006 |
|
1007 |
$actions = array(
|
lite/includes/classes/class-es-cron.php
CHANGED
@@ -535,6 +535,9 @@ class ES_Cron {
|
|
535 |
}
|
536 |
|
537 |
/**
|
|
|
|
|
|
|
538 |
*
|
539 |
*/
|
540 |
public function handle_data_request() {
|
535 |
}
|
536 |
|
537 |
/**
|
538 |
+
* Handle Data Request
|
539 |
+
*
|
540 |
+
* @since 4.6.6
|
541 |
*
|
542 |
*/
|
543 |
public function handle_data_request() {
|
lite/includes/classes/class-es-handle-post-notification.php
CHANGED
@@ -113,8 +113,8 @@ class ES_Handle_Post_Notification {
|
|
113 |
'campaign_id' => $notification['id'],
|
114 |
'subject' => $post_subject,
|
115 |
'body' => $post_content,
|
116 |
-
'count' => 0,
|
117 |
-
'status' => '
|
118 |
'start_at' => '',
|
119 |
'finish_at' => '',
|
120 |
'created_at' => ig_get_current_date_time(),
|
@@ -129,12 +129,11 @@ class ES_Handle_Post_Notification {
|
|
129 |
|
130 |
// Add entry into mailing queue table
|
131 |
$mailing_queue_id = ES_DB_Mailing_Queue::add_notification( $data );
|
|
|
132 |
if ( $mailing_queue_id ) {
|
133 |
-
$
|
134 |
-
|
135 |
-
|
136 |
-
);
|
137 |
-
IG_ES_Background_Process_Helper::add_action_scheduler_task( 'ig_es_add_subscribers_to_sending_queue', $action_args );
|
138 |
}
|
139 |
}
|
140 |
}
|
113 |
'campaign_id' => $notification['id'],
|
114 |
'subject' => $post_subject,
|
115 |
'body' => $post_content,
|
116 |
+
'count' => 0,
|
117 |
+
'status' => 'In Queue',
|
118 |
'start_at' => '',
|
119 |
'finish_at' => '',
|
120 |
'created_at' => ig_get_current_date_time(),
|
129 |
|
130 |
// Add entry into mailing queue table
|
131 |
$mailing_queue_id = ES_DB_Mailing_Queue::add_notification( $data );
|
132 |
+
|
133 |
if ( $mailing_queue_id ) {
|
134 |
+
$mailing_queue_hash = $guid;
|
135 |
+
$campaign_id = $notification['id'];
|
136 |
+
ES_DB_Sending_Queue::do_insert_from_contacts_table( $mailing_queue_id, $mailing_queue_hash, $campaign_id, $list_id );
|
|
|
|
|
137 |
}
|
138 |
}
|
139 |
}
|
lite/includes/classes/class-es-handle-subscription.php
CHANGED
@@ -132,11 +132,30 @@ if ( ! class_exists( 'ES_Handle_Subscription' ) ) {
|
|
132 |
add_action( 'wp_ajax_nopriv_es_add_subscriber', array( $this, 'process_request' ), 10 );
|
133 |
}
|
134 |
|
|
|
|
|
|
|
135 |
$this->from_rainmaker = $from_rainmaker;
|
136 |
|
137 |
$this->handle_external_subscription();
|
138 |
}
|
139 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
/**
|
141 |
* Process request
|
142 |
*
|
132 |
add_action( 'wp_ajax_nopriv_es_add_subscriber', array( $this, 'process_request' ), 10 );
|
133 |
}
|
134 |
|
135 |
+
add_action( 'wp_ajax_ig_es_get_updated_subscription_nonce', array( $this, 'get_updated_subscription_nonce' ) );
|
136 |
+
add_action( 'wp_ajax_nopriv_ig_es_get_updated_subscription_nonce', array( $this, 'get_updated_subscription_nonce' ) );
|
137 |
+
|
138 |
$this->from_rainmaker = $from_rainmaker;
|
139 |
|
140 |
$this->handle_external_subscription();
|
141 |
}
|
142 |
|
143 |
+
/**
|
144 |
+
* Get updated nonce for 'es-subscribe' action
|
145 |
+
*
|
146 |
+
* @since 4.6.7
|
147 |
+
*/
|
148 |
+
public function get_updated_subscription_nonce() {
|
149 |
+
|
150 |
+
$updated_nonce = wp_create_nonce( 'es-subscribe' );
|
151 |
+
|
152 |
+
$response = array(
|
153 |
+
'updated_nonce' => $updated_nonce,
|
154 |
+
);
|
155 |
+
|
156 |
+
wp_send_json_success( $response );
|
157 |
+
}
|
158 |
+
|
159 |
/**
|
160 |
* Process request
|
161 |
*
|
lite/includes/classes/class-es-import-subscribers.php
CHANGED
@@ -74,46 +74,69 @@ class ES_Import_Subscribers {
|
|
74 |
</script>
|
75 |
<div class="tool-box">
|
76 |
<div class="meta-box-sortables ui-sortable bg-white shadow-md mt-8 rounded-lg">
|
77 |
-
<
|
78 |
-
<div class="
|
79 |
-
<
|
80 |
-
<
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
echo sprintf( esc_html__( 'File size should be less than %s', 'email-subscribers' ), esc_html( size_format( $max_upload_size ) ) );
|
89 |
-
?>
|
90 |
-
</p>
|
91 |
-
<p class="italic text-xs font-normal text-gray-400 mt-2 leading-snug">
|
92 |
-
<?php esc_html_e( 'Check CSV structure', 'email-subscribers' ); ?>
|
93 |
-
<a class="font-medium" target="_blank" href="<?php echo esc_attr( plugin_dir_url( __FILE__ ) ) . '../../admin/partials/sample.csv'; ?>"><?php esc_html_e( 'from here', 'email-subscribers' ); ?></a>
|
94 |
-
</p>
|
95 |
-
</label>
|
96 |
</div>
|
97 |
-
</
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
</div>
|
109 |
</div>
|
110 |
</div>
|
111 |
-
|
112 |
</div>
|
|
|
|
|
113 |
</div>
|
114 |
-
<p class="import-status pt-4 pb-1 text-base font-medium text-gray-600 tracking-wide hidden"> </p>
|
115 |
-
<div id="progress" class="progress hidden w-10/12"><span class="bar" style="width:0%"><span></span></span></div>
|
116 |
</div>
|
|
|
|
|
|
|
117 |
</div>
|
118 |
<div class="step2 w-full overflow-auto mb-6 mr-4 mt-4 border-b border-gray-100">
|
119 |
<h2 class="import-status text-base font-medium text-gray-600 tracking-wide"></h2>
|
@@ -173,12 +196,10 @@ class ES_Import_Subscribers {
|
|
173 |
</div>
|
174 |
</div>
|
175 |
<p style="padding-top:10px;">
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
</div>
|
180 |
-
|
181 |
-
|
182 |
</form>
|
183 |
</div>
|
184 |
<div class="import-progress">
|
@@ -326,12 +347,14 @@ class ES_Import_Subscribers {
|
|
326 |
remove_filter( 'ig_es_memory_limit', 'ig_es_increase_memory_limit' );
|
327 |
}
|
328 |
|
|
|
329 |
if ( isset( $_FILES['async-upload'] ) ) {
|
330 |
|
|
|
331 |
if ( isset( $_FILES['async-upload']['tmp_name'] ) && is_uploaded_file( sanitize_text_field( $_FILES['async-upload']['tmp_name'] ) ) ) {
|
332 |
-
$tmp_file
|
333 |
-
$raw_data
|
334 |
-
$seperator =
|
335 |
|
336 |
$handle = fopen( $tmp_file, 'r' );
|
337 |
// Get Headers.
|
@@ -357,6 +380,60 @@ class ES_Import_Subscribers {
|
|
357 |
$raw_data = mb_convert_encoding( $raw_data, 'UTF-8', mb_detect_encoding( $raw_data, 'UTF-8, ISO-8859-1', true ) );
|
358 |
}
|
359 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
360 |
}
|
361 |
|
362 |
if ( empty( $raw_data ) ) {
|
@@ -371,8 +448,9 @@ class ES_Import_Subscribers {
|
|
371 |
$encoding = 'UTF-8';
|
372 |
}
|
373 |
|
374 |
-
$lines
|
375 |
-
|
|
|
376 |
array_shift( $lines );
|
377 |
}
|
378 |
|
@@ -387,11 +465,11 @@ class ES_Import_Subscribers {
|
|
387 |
'parts' => $partcount,
|
388 |
'lines' => count( $lines ),
|
389 |
'separator' => $seperator,
|
390 |
-
'contain_headers' => $contain_headers,
|
391 |
);
|
392 |
|
393 |
if ( $contain_headers ) {
|
394 |
-
$bulkimport['headers']
|
|
|
395 |
}
|
396 |
|
397 |
$this->do_cleanup();
|
@@ -483,7 +561,7 @@ class ES_Import_Subscribers {
|
|
483 |
$html .= '<thead><tr class="border-b border-gray-200 bg-gray-50 text-left text-sm leading-4 font-medium text-gray-500 tracking-wider"><th class="pl-3 py-4" style="width:20px;">#</th>';
|
484 |
$emailfield = false;
|
485 |
$headers = array();
|
486 |
-
if ( $response['data']['
|
487 |
$headers = $response['data']['headers'];
|
488 |
}
|
489 |
for ( $i = 0; $i < $cols; $i++ ) {
|
74 |
</script>
|
75 |
<div class="tool-box">
|
76 |
<div class="meta-box-sortables ui-sortable bg-white shadow-md mt-8 rounded-lg">
|
77 |
+
<div class="es-import-option bg-gray-50 rounded-lg">
|
78 |
+
<div class="mx-auto flex justify-center pt-2">
|
79 |
+
<label class="inline-flex items-center cursor-pointer mr-3 h-22 w-48">
|
80 |
+
<input type="radio" class="absolute w-0 h-0 opacity-0 es_mailer" name="es-import-subscribers" value="es-import-with-csv" checked />
|
81 |
+
<div class="mt-4 px-3 py-1 border border-gray-200 rounded-lg shadow-md es-mailer-logo h-18 bg-white">
|
82 |
+
<div class="border-0 es-logo-wrapper">
|
83 |
+
<svg class="w-6 h-6 text-gray-500" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path></svg>
|
84 |
+
</div>
|
85 |
+
<p class="mb-2 text-sm inline-block font-medium text-gray-600">
|
86 |
+
<?php echo esc_html__( 'Import CSV', 'email-subscribers' ); ?>
|
87 |
+
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
</div>
|
89 |
+
</label>
|
90 |
+
<?php
|
91 |
+
do_action( 'ig_es_subscriber_import_method_tab_heading' );
|
92 |
+
?>
|
93 |
+
</div>
|
94 |
+
<hr class="mx-10 border-gray-100 mt-6">
|
95 |
+
</div>
|
96 |
+
<form class="ml-7 mr-4 text-left py-4 my-2 item-center" method="post" name="form_import_subscribers" id="form_import_subscribers" action="#" enctype="multipart/form-data">
|
97 |
+
<div class="es-import-step1 flex flex-row">
|
98 |
+
<div class="w-5/6 flex flex-row es-import-with-csv es-import">
|
99 |
+
<div class="es-import-processing flex w-1/4">
|
100 |
+
<div class="ml-6 pt-6">
|
101 |
+
<label for="select_csv">
|
102 |
+
<span class="block pr-4 text-sm font-medium text-gray-600 pb-1">
|
103 |
+
<?php esc_html_e( 'Select CSV file', 'email-subscribers' ); ?>
|
104 |
+
</span>
|
105 |
+
<p class="italic text-xs font-normal text-gray-400 mt-2 leading-snug">
|
106 |
+
<?php
|
107 |
+
/* translators: %s: Max upload size */
|
108 |
+
echo sprintf( esc_html__( 'File size should be less than %s', 'email-subscribers' ), esc_html( size_format( $max_upload_size ) ) );
|
109 |
+
?>
|
110 |
+
</p>
|
111 |
+
<p class="italic text-xs font-normal text-gray-400 mt-2 leading-snug">
|
112 |
+
<?php esc_html_e( 'Check CSV structure', 'email-subscribers' ); ?>
|
113 |
+
<a class="font-medium" target="_blank" href="<?php echo esc_attr( plugin_dir_url( __FILE__ ) ) . '../../admin/partials/sample.csv'; ?>"><?php esc_html_e( 'from here', 'email-subscribers' ); ?></a>
|
114 |
+
</p>
|
115 |
+
</label>
|
116 |
+
</div>
|
117 |
+
</div>
|
118 |
+
<div class="w-3/4 ml-12 xl:ml-32 my-6 mr-4">
|
119 |
+
<div class="es-import-step1-body">
|
120 |
+
<div class="upload-method">
|
121 |
+
<div id="media-upload-error"></div>
|
122 |
+
<div id="plupload-upload-ui" class="hide-if-no-js">
|
123 |
+
<div id="drag-drop-area">
|
124 |
+
<div class="drag-drop-inside">
|
125 |
+
<p class="drag-drop-info"><?php esc_html_e( 'Drop your CSV here', 'email-subscribers' ); ?></p>
|
126 |
+
<p><?php echo esc_html_x( 'or', 'Uploader: Drop files here - or - Select Files', 'email-subscribers' ); ?></p>
|
127 |
+
<p class="drag-drop-buttons"><input id="plupload-browse-button" type="button" value="<?php esc_attr_e( 'Select File', 'email-subscribers' ); ?>" class="button" /></p>
|
128 |
+
</div>
|
129 |
</div>
|
130 |
</div>
|
131 |
</div>
|
|
|
132 |
</div>
|
133 |
+
<p class="import-status pt-4 pb-1 text-base font-medium text-gray-600 tracking-wide hidden"> </p>
|
134 |
+
<div id="progress" class="progress hidden"><span class="bar" style="width:0%"><span></span></span></div>
|
135 |
</div>
|
|
|
|
|
136 |
</div>
|
137 |
+
<?php
|
138 |
+
do_action( 'ig_es_subscriber_import_method_tab_content' );
|
139 |
+
?>
|
140 |
</div>
|
141 |
<div class="step2 w-full overflow-auto mb-6 mr-4 mt-4 border-b border-gray-100">
|
142 |
<h2 class="import-status text-base font-medium text-gray-600 tracking-wide"></h2>
|
196 |
</div>
|
197 |
</div>
|
198 |
<p style="padding-top:10px;">
|
199 |
+
<?php wp_nonce_field( 'import-contacts', 'import_contacts' ); ?>
|
200 |
+
<input type="submit" name="submit" class="start-import cursor-pointer ig-es-primary-button px-4 py-2 ml-6 mr-2 my-4" value="<?php esc_html_e( 'Import', 'email-subscribers' ); ?>" />
|
201 |
+
</p>
|
202 |
</div>
|
|
|
|
|
203 |
</form>
|
204 |
</div>
|
205 |
<div class="import-progress">
|
347 |
remove_filter( 'ig_es_memory_limit', 'ig_es_increase_memory_limit' );
|
348 |
}
|
349 |
|
350 |
+
$importing_from = '';
|
351 |
if ( isset( $_FILES['async-upload'] ) ) {
|
352 |
|
353 |
+
$importing_from = 'csv';
|
354 |
if ( isset( $_FILES['async-upload']['tmp_name'] ) && is_uploaded_file( sanitize_text_field( $_FILES['async-upload']['tmp_name'] ) ) ) {
|
355 |
+
$tmp_file = sanitize_text_field( $_FILES['async-upload']['tmp_name'] );
|
356 |
+
$raw_data = file_get_contents( $tmp_file );
|
357 |
+
$seperator = $this->get_delimiter( $tmp_file );
|
358 |
|
359 |
$handle = fopen( $tmp_file, 'r' );
|
360 |
// Get Headers.
|
380 |
$raw_data = mb_convert_encoding( $raw_data, 'UTF-8', mb_detect_encoding( $raw_data, 'UTF-8, ISO-8859-1', true ) );
|
381 |
}
|
382 |
}
|
383 |
+
} elseif ( isset( $_POST['selected_roles'] ) ) {
|
384 |
+
$importing_from = 'wordpress_users';
|
385 |
+
|
386 |
+
$roles = ig_es_get_request_data( 'selected_roles' );
|
387 |
+
|
388 |
+
$users = $wpdb->get_results(
|
389 |
+
"SELECT u.user_email, IF(meta_role.meta_value = 'a:0:{}',NULL,meta_role.meta_value) AS '_role', meta_firstname.meta_value AS 'firstname', meta_lastname.meta_value AS 'lastname', u.display_name, u.user_nicename
|
390 |
+
FROM {$wpdb->users} AS u
|
391 |
+
LEFT JOIN {$wpdb->usermeta} AS meta_role ON meta_role.user_id = u.id AND meta_role.meta_key = '{$wpdb->prefix}capabilities'
|
392 |
+
LEFT JOIN {$wpdb->usermeta} AS meta_firstname ON meta_firstname.user_id = u.id AND meta_firstname.meta_key = 'first_name'
|
393 |
+
LEFT JOIN {$wpdb->usermeta} AS meta_lastname ON meta_lastname.user_id = u.id AND meta_lastname.meta_key = 'last_name'
|
394 |
+
WHERE meta_role.user_id IS NOT NULL"
|
395 |
+
);
|
396 |
+
|
397 |
+
$raw_data = '';
|
398 |
+
$seperator = ';';
|
399 |
+
$contain_headers = true;
|
400 |
+
$headers = array(
|
401 |
+
__( 'Email', 'email-subscribers' ),
|
402 |
+
__( 'First Name', 'email-subscribers' ),
|
403 |
+
__( 'Last Name', 'email-subscribers' ),
|
404 |
+
__( 'Nick Name', 'email-subscribers' ),
|
405 |
+
__( 'Display Name', 'email-subscribers' ),
|
406 |
+
);
|
407 |
+
|
408 |
+
foreach ( $users as $user ) {
|
409 |
+
|
410 |
+
// User must have a role assigned.
|
411 |
+
if ( ! $user->_role ) {
|
412 |
+
continue;
|
413 |
+
}
|
414 |
+
|
415 |
+
// Role is set but not in the list
|
416 |
+
if ( $user->_role && ! array_intersect( array_keys( unserialize( $user->_role ) ), $roles ) ) {
|
417 |
+
continue;
|
418 |
+
}
|
419 |
+
|
420 |
+
$user_data = array();
|
421 |
+
|
422 |
+
foreach ( $user as $key => $data ) {
|
423 |
+
if ( '_role' === $key ) {
|
424 |
+
continue;
|
425 |
+
}
|
426 |
+
|
427 |
+
if ( 'firstname' === $key && ! $data ) {
|
428 |
+
$data = $user->display_name;
|
429 |
+
}
|
430 |
+
|
431 |
+
$user_data[] = $data;
|
432 |
+
}
|
433 |
+
|
434 |
+
$raw_data .= implode( ';', $user_data );
|
435 |
+
$raw_data .= "\n";
|
436 |
+
}
|
437 |
}
|
438 |
|
439 |
if ( empty( $raw_data ) ) {
|
448 |
$encoding = 'UTF-8';
|
449 |
}
|
450 |
|
451 |
+
$lines = explode( "\n", $raw_data );
|
452 |
+
|
453 |
+
if ( 'csv' === $importing_from && $contain_headers ) {
|
454 |
array_shift( $lines );
|
455 |
}
|
456 |
|
465 |
'parts' => $partcount,
|
466 |
'lines' => count( $lines ),
|
467 |
'separator' => $seperator,
|
|
|
468 |
);
|
469 |
|
470 |
if ( $contain_headers ) {
|
471 |
+
$bulkimport['headers'] = $headers;
|
472 |
+
$bulkimport['contain_headers'] = $contain_headers;
|
473 |
}
|
474 |
|
475 |
$this->do_cleanup();
|
561 |
$html .= '<thead><tr class="border-b border-gray-200 bg-gray-50 text-left text-sm leading-4 font-medium text-gray-500 tracking-wider"><th class="pl-3 py-4" style="width:20px;">#</th>';
|
562 |
$emailfield = false;
|
563 |
$headers = array();
|
564 |
+
if ( ! empty( $response['data']['headers'] ) ) {
|
565 |
$headers = $response['data']['headers'];
|
566 |
}
|
567 |
for ( $i = 0; $i < $cols; $i++ ) {
|
lite/includes/classes/class-es-mailer.php
CHANGED
@@ -576,6 +576,7 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
|
|
576 |
$this->time_start = time();
|
577 |
$message_id = ! empty( $merge_tags['message_id'] ) ? $merge_tags['message_id'] : 0;
|
578 |
$campaign_id = ! empty( $merge_tags['campaign_id'] ) ? $merge_tags['campaign_id'] : 0;
|
|
|
579 |
|
580 |
$sender_data = array();
|
581 |
$campaign_type = '';
|
@@ -591,6 +592,25 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
|
|
591 |
$sender_data['from_email'] = $from_email;
|
592 |
$sender_data['reply_to_email'] = $reply_to_email;
|
593 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
594 |
}
|
595 |
}
|
596 |
|
@@ -695,11 +715,13 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
|
|
695 |
$sender_name = '';
|
696 |
$sender_email = '';
|
697 |
$reply_to_email = '';
|
|
|
698 |
// If sender data is passed .i.g. set in the campaign then use it.
|
699 |
if ( ! empty( $sender_data ) ) {
|
700 |
-
$sender_name = ! empty( $sender_data['from_name'] ) ? $sender_data['from_name']
|
701 |
-
$sender_email = ! empty( $sender_data['from_email'] ) ? $sender_data['from_email']: '';
|
702 |
-
$reply_to_email = ! empty( $sender_data['reply_to_email'] ) ? $sender_data['reply_to_email']
|
|
|
703 |
}
|
704 |
|
705 |
// If sender name is not passed then fetch it from ES settings.
|
@@ -717,19 +739,24 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
|
|
717 |
$reply_to_email = $this->get_from_email();
|
718 |
}
|
719 |
|
720 |
-
$
|
|
|
|
|
721 |
|
722 |
-
$message->from
|
723 |
-
$message->from_name
|
724 |
-
$message->to
|
725 |
-
$message->subject
|
726 |
-
$message->body
|
|
|
|
|
|
|
727 |
|
728 |
$headers = array(
|
729 |
"From: \"$sender_name\" <$sender_email>",
|
730 |
'Return-Path: <' . $sender_email . '>',
|
731 |
'Reply-To: <' . $reply_to_email . '>',
|
732 |
-
'Content-Type: text/html; charset="' .
|
733 |
);
|
734 |
|
735 |
$message->headers = $headers;
|
576 |
$this->time_start = time();
|
577 |
$message_id = ! empty( $merge_tags['message_id'] ) ? $merge_tags['message_id'] : 0;
|
578 |
$campaign_id = ! empty( $merge_tags['campaign_id'] ) ? $merge_tags['campaign_id'] : 0;
|
579 |
+
$attachments = ! empty( $merge_tags['attachments'] ) ? $merge_tags['attachments'] : array();
|
580 |
|
581 |
$sender_data = array();
|
582 |
$campaign_type = '';
|
592 |
$sender_data['from_email'] = $from_email;
|
593 |
$sender_data['reply_to_email'] = $reply_to_email;
|
594 |
}
|
595 |
+
|
596 |
+
$campaign_meta = maybe_unserialize( $campaign['meta'] );
|
597 |
+
if ( ! empty( $campaign_meta['attachments'] ) ) {
|
598 |
+
$sender_data['attachments'] = array();
|
599 |
+
$attachments = $campaign_meta['attachments'];
|
600 |
+
}
|
601 |
+
}
|
602 |
+
}
|
603 |
+
|
604 |
+
if ( ! empty( $attachments ) ) {
|
605 |
+
foreach ( $attachments as $attachment_id ) {
|
606 |
+
if ( ! $attachment_id ) {
|
607 |
+
continue;
|
608 |
+
}
|
609 |
+
$attached_file = get_attached_file( $attachment_id );
|
610 |
+
if ( ! is_file( $attached_file ) ) {
|
611 |
+
continue;
|
612 |
+
}
|
613 |
+
$sender_data['attachments'][ basename( $attached_file ) ] = $attached_file;
|
614 |
}
|
615 |
}
|
616 |
|
715 |
$sender_name = '';
|
716 |
$sender_email = '';
|
717 |
$reply_to_email = '';
|
718 |
+
$attachments = array();
|
719 |
// If sender data is passed .i.g. set in the campaign then use it.
|
720 |
if ( ! empty( $sender_data ) ) {
|
721 |
+
$sender_name = ! empty( $sender_data['from_name'] ) ? $sender_data['from_name'] : '';
|
722 |
+
$sender_email = ! empty( $sender_data['from_email'] ) ? $sender_data['from_email'] : '';
|
723 |
+
$reply_to_email = ! empty( $sender_data['reply_to_email'] ) ? $sender_data['reply_to_email']: '';
|
724 |
+
$attachments = ! empty( $sender_data['attachments'] ) ? $sender_data['attachments'] : array();
|
725 |
}
|
726 |
|
727 |
// If sender name is not passed then fetch it from ES settings.
|
739 |
$reply_to_email = $this->get_from_email();
|
740 |
}
|
741 |
|
742 |
+
$charset = get_bloginfo( 'charset' );
|
743 |
+
|
744 |
+
$subject = html_entity_decode( $subject, ENT_QUOTES, $charset );
|
745 |
|
746 |
+
$message->from = $sender_email;
|
747 |
+
$message->from_name = $sender_name;
|
748 |
+
$message->to = $email;
|
749 |
+
$message->subject = $subject;
|
750 |
+
$message->body = $body;
|
751 |
+
$message->attachments = $attachments;
|
752 |
+
$message->reply_to_email = $reply_to_email;
|
753 |
+
$message->charset = $charset;
|
754 |
|
755 |
$headers = array(
|
756 |
"From: \"$sender_name\" <$sender_email>",
|
757 |
'Return-Path: <' . $sender_email . '>',
|
758 |
'Reply-To: <' . $reply_to_email . '>',
|
759 |
+
'Content-Type: text/html; charset="' . $charset . '"'
|
760 |
);
|
761 |
|
762 |
$message->headers = $headers;
|
lite/includes/classes/class-es-message.php
CHANGED
@@ -92,6 +92,26 @@ if ( ! class_exists( 'ES_Message' ) ) {
|
|
92 |
*/
|
93 |
public $from_name = '';
|
94 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
|
96 |
public function __construct() {
|
97 |
|
92 |
*/
|
93 |
public $from_name = '';
|
94 |
|
95 |
+
/**
|
96 |
+
* Attachments for email
|
97 |
+
*
|
98 |
+
* @since 4.6.7
|
99 |
+
*/
|
100 |
+
public $attachments = array();
|
101 |
+
|
102 |
+
/**
|
103 |
+
* Reply to email
|
104 |
+
*
|
105 |
+
* @since 4.6.7
|
106 |
+
*/
|
107 |
+
public $reply_to_email = '';
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Character set
|
111 |
+
*
|
112 |
+
* @since 4.6.7
|
113 |
+
*/
|
114 |
+
public $charset = '';
|
115 |
|
116 |
public function __construct() {
|
117 |
|
lite/includes/classes/class-es-newsletters.php
CHANGED
@@ -568,13 +568,13 @@ class ES_Newsletters {
|
|
568 |
|
569 |
// Add notification to mailing queue if not already added.
|
570 |
if ( empty( $notification ) ) {
|
571 |
-
|
572 |
-
$data['status'] = 'Queueing';
|
573 |
-
$data['count'] = 0; // Count would be added in background process after all subscribers are added in the sending_queue table.
|
574 |
$mailing_queue_id = ES_DB_Mailing_Queue::add_notification( $data );
|
|
|
575 |
$should_queue_emails = true;
|
576 |
} else {
|
577 |
-
$
|
|
|
578 |
$notification_status = $notification['status'];
|
579 |
// Check if notification is not sending or already sent then only update the notification.
|
580 |
if ( ! in_array( $notification_status, array( 'Sending', 'Sent' ), true ) ) {
|
@@ -586,27 +586,43 @@ class ES_Newsletters {
|
|
586 |
// Check if list has been updated, if yes then we need to delete emails from existing lists and requeue the emails from the updated lists.
|
587 |
if ( $selected_list_ids !== $existing_list_ids ) {
|
588 |
$should_queue_emails = true;
|
589 |
-
$mailing_queue_id = $notification_id;
|
590 |
$data['count'] = 0;
|
591 |
-
$data['status'] = 'Queueing';
|
592 |
} else {
|
593 |
$data['count'] = $notification['count'];
|
594 |
}
|
595 |
|
596 |
-
$notification = ES_DB_Mailing_Queue::update_notification( $
|
597 |
}
|
598 |
}
|
599 |
|
600 |
-
if ( ! empty( $mailing_queue_id )
|
|
|
|
|
601 |
|
602 |
-
|
603 |
-
|
604 |
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
);
|
609 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
610 |
}
|
611 |
}
|
612 |
}
|
568 |
|
569 |
// Add notification to mailing queue if not already added.
|
570 |
if ( empty( $notification ) ) {
|
571 |
+
$data['count'] = 0;
|
|
|
|
|
572 |
$mailing_queue_id = ES_DB_Mailing_Queue::add_notification( $data );
|
573 |
+
$mailing_queue_hash = $guid;
|
574 |
$should_queue_emails = true;
|
575 |
} else {
|
576 |
+
$mailing_queue_id = $notification['id'];
|
577 |
+
$mailing_queue_hash = $notification['hash'];
|
578 |
$notification_status = $notification['status'];
|
579 |
// Check if notification is not sending or already sent then only update the notification.
|
580 |
if ( ! in_array( $notification_status, array( 'Sending', 'Sent' ), true ) ) {
|
586 |
// Check if list has been updated, if yes then we need to delete emails from existing lists and requeue the emails from the updated lists.
|
587 |
if ( $selected_list_ids !== $existing_list_ids ) {
|
588 |
$should_queue_emails = true;
|
|
|
589 |
$data['count'] = 0;
|
|
|
590 |
} else {
|
591 |
$data['count'] = $notification['count'];
|
592 |
}
|
593 |
|
594 |
+
$notification = ES_DB_Mailing_Queue::update_notification( $mailing_queue_id, $data );
|
595 |
}
|
596 |
}
|
597 |
|
598 |
+
if ( ! empty( $mailing_queue_id ) ) {
|
599 |
+
|
600 |
+
if ( $should_queue_emails ) {
|
601 |
|
602 |
+
// Delete existing sending queue if any already present.
|
603 |
+
ES_DB_Sending_Queue::delete_sending_queue_by_mailing_id( array( $mailing_queue_id ) );
|
604 |
|
605 |
+
ES_DB_Sending_Queue::do_insert_from_contacts_table( $mailing_queue_id, $mailing_queue_hash, $campaign_id, $list_id );
|
606 |
+
}
|
607 |
+
|
608 |
+
$mailing_queue = ES_DB_Mailing_Queue::get_email_by_id( $mailing_queue_id );
|
609 |
+
if ( ! empty( $mailing_queue ) ) {
|
610 |
+
|
611 |
+
$queue_start_at = $mailing_queue['start_at'];
|
612 |
+
$current_timestamp = time();
|
613 |
+
$sending_timestamp = strtotime( $queue_start_at );
|
614 |
+
|
615 |
+
// Check if campaign sending time has come.
|
616 |
+
if ( ! empty( $sending_timestamp ) && $sending_timestamp <= $current_timestamp ) {
|
617 |
+
$request_args = array(
|
618 |
+
'action' => 'ig_es_trigger_mailing_queue_sending',
|
619 |
+
'campaign_hash' => $mailing_queue_hash,
|
620 |
+
);
|
621 |
+
// Send an asynchronous request to trigger sending of campaign emails.
|
622 |
+
IG_ES_Background_Process_Helper::send_async_ajax_request( $request_args, true );
|
623 |
+
}
|
624 |
+
|
625 |
+
}
|
626 |
}
|
627 |
}
|
628 |
}
|
lite/includes/classes/class-es-queue.php
CHANGED
@@ -168,11 +168,8 @@ if ( ! class_exists( 'ES_Queue' ) ) {
|
|
168 |
$mailing_queue_id = $result['id'];
|
169 |
|
170 |
if ( ! empty( $mailing_queue_id ) ) {
|
171 |
-
$
|
172 |
-
|
173 |
-
'list_ids' => $list_id,
|
174 |
-
);
|
175 |
-
IG_ES_Background_Process_Helper::add_action_scheduler_task( 'ig_es_add_subscribers_to_sending_queue', $action_args );
|
176 |
}
|
177 |
}
|
178 |
}
|
@@ -363,7 +360,7 @@ if ( ! class_exists( 'ES_Queue' ) ) {
|
|
363 |
'subject' => $subject,
|
364 |
'body' => $content,
|
365 |
'count' => 0,
|
366 |
-
'status' => '
|
367 |
'start_at' => ! empty( $campaign['start_at'] ) ? $campaign['start_at'] : '',
|
368 |
'finish_at' => '',
|
369 |
'created_at' => ig_get_current_date_time(),
|
168 |
$mailing_queue_id = $result['id'];
|
169 |
|
170 |
if ( ! empty( $mailing_queue_id ) ) {
|
171 |
+
$mailing_queue_hash = $result['hash'];
|
172 |
+
ES_DB_Sending_Queue::do_insert_from_contacts_table( $mailing_queue_id, $mailing_queue_hash, $campaign_id, $list_id );
|
|
|
|
|
|
|
173 |
}
|
174 |
}
|
175 |
}
|
360 |
'subject' => $subject,
|
361 |
'body' => $content,
|
362 |
'count' => 0,
|
363 |
+
'status' => 'In Queue',
|
364 |
'start_at' => ! empty( $campaign['start_at'] ) ? $campaign['start_at'] : '',
|
365 |
'finish_at' => '',
|
366 |
'created_at' => ig_get_current_date_time(),
|
lite/includes/classes/class-es-reports-table.php
CHANGED
@@ -124,7 +124,6 @@ class ES_Reports_Table extends ES_List_Table {
|
|
124 |
<th width="24%" class="py-3 pl-4 es_reports_table_header"><?php esc_html_e( 'Email', 'email-subscribers' ); ?></th>
|
125 |
<th width="12%" class=" py-3 pl-6 es_reports_table_header"><?php esc_html_e( 'Status', 'email-subscribers' ); ?></th>
|
126 |
<th width="22%" class="py-3 pl-2 es_reports_table_header"><?php esc_html_e( 'Sent Date', 'email-subscribers' ); ?></th>
|
127 |
-
<th width="17%" class="py-3 pl-6 es_reports_table_header"><?php esc_html_e( 'Viewed Status', 'email-subscribers' ); ?></th>
|
128 |
<th width="22%" class=" py-3 pl-6 es_reports_table_header"><?php esc_html_e( 'Viewed Date', 'email-subscribers' ); ?></th>
|
129 |
</tr>
|
130 |
|
@@ -199,19 +198,68 @@ class ES_Reports_Table extends ES_List_Table {
|
|
199 |
$opened = ! empty( $email['opened'] ) ? $email['opened'] : ( ! empty( $email['es_deliver_status'] ) && 'Viewed' === $email['es_deliver_status'] ? 1 : 0 );
|
200 |
$opened_at = ! empty( $email['opened_at'] ) ? $email['opened_at'] : ( ! empty( $email['es_deliver_viewdate'] ) ? $email['es_deliver_viewdate'] : '' );
|
201 |
|
|
|
|
|
|
|
|
|
202 |
?>
|
203 |
|
204 |
<tr>
|
205 |
<td class="pl-6 py-2 border-b border-gray-200 text-sm leading-5 text-gray-500"><?php echo esc_html( $i ); ?></td>
|
206 |
<td class="pl-4 py-2 border-b border-gray-200 text-sm leading-5 text-gray-600"><?php echo esc_html( $email_id ); ?></td>
|
207 |
-
<td class="pl-6 pr-2 py-2 border-b border-gray-200 text-sm leading-5 text-gray-500"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
208 |
<td class="pl-2 pr-2 py-2 border-b border-gray-200 text-sm leading-5 text-gray-500"><?php echo wp_kses_post( ig_es_format_date_time( $sent_at ) ); ?></td>
|
209 |
-
<td class="pl-6 pr-2 py-2 border-b border-gray-200 text-sm leading-5 text-gray-600"><span>
|
210 |
-
<?php
|
211 |
-
/* translators: 1: Italic tag 2: Class attribute */
|
212 |
-
echo ! empty( $opened ) && 1 == $opened ? esc_html__( 'Viewed', 'email-subscribers' ) : wp_kses_post( '<i title="Not yet viewed" class="dashicons dashicons-es dashicons-minus"/>' );
|
213 |
-
?>
|
214 |
-
</span></td>
|
215 |
<td class="pl-6 pr-1 py-2 border-b border-gray-200 text-sm leading-5 text-gray-500"><?php echo wp_kses_post( ig_es_format_date_time( $opened_at ) ); ?></td>
|
216 |
</tr>
|
217 |
|
124 |
<th width="24%" class="py-3 pl-4 es_reports_table_header"><?php esc_html_e( 'Email', 'email-subscribers' ); ?></th>
|
125 |
<th width="12%" class=" py-3 pl-6 es_reports_table_header"><?php esc_html_e( 'Status', 'email-subscribers' ); ?></th>
|
126 |
<th width="22%" class="py-3 pl-2 es_reports_table_header"><?php esc_html_e( 'Sent Date', 'email-subscribers' ); ?></th>
|
|
|
127 |
<th width="22%" class=" py-3 pl-6 es_reports_table_header"><?php esc_html_e( 'Viewed Date', 'email-subscribers' ); ?></th>
|
128 |
</tr>
|
129 |
|
198 |
$opened = ! empty( $email['opened'] ) ? $email['opened'] : ( ! empty( $email['es_deliver_status'] ) && 'Viewed' === $email['es_deliver_status'] ? 1 : 0 );
|
199 |
$opened_at = ! empty( $email['opened_at'] ) ? $email['opened_at'] : ( ! empty( $email['es_deliver_viewdate'] ) ? $email['es_deliver_viewdate'] : '' );
|
200 |
|
201 |
+
if ( 'Sent' === $status ) {
|
202 |
+
$status = ( $opened ) ? 'Opened' : $status;
|
203 |
+
}
|
204 |
+
|
205 |
?>
|
206 |
|
207 |
<tr>
|
208 |
<td class="pl-6 py-2 border-b border-gray-200 text-sm leading-5 text-gray-500"><?php echo esc_html( $i ); ?></td>
|
209 |
<td class="pl-4 py-2 border-b border-gray-200 text-sm leading-5 text-gray-600"><?php echo esc_html( $email_id ); ?></td>
|
210 |
+
<td class="pl-6 pr-2 py-2 border-b border-gray-200 text-sm leading-5 text-gray-500">
|
211 |
+
<span style="color:#03a025;font-weight:bold;">
|
212 |
+
<?php
|
213 |
+
switch ( $status ) {
|
214 |
+
case 'Sent':
|
215 |
+
?>
|
216 |
+
<svg class="h-6 w-6 text-gray-400" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
217 |
+
<title><?php echo esc_html__( 'Sent', 'email-subscribers' ); ?></title>
|
218 |
+
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
|
219 |
+
</svg>
|
220 |
+
<?php
|
221 |
+
break;
|
222 |
+
case 'In Queue':
|
223 |
+
?>
|
224 |
+
<svg class=" h-6 w-6 text-orange-400" fill="currentColor" viewBox="0 0 20 20">
|
225 |
+
<title><?php echo esc_html__( 'In Queue', 'email-subscribers' ); ?></title>
|
226 |
+
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clip-rule="evenodd"/>
|
227 |
+
</svg>
|
228 |
+
<?php
|
229 |
+
break;
|
230 |
+
case 'Sending':
|
231 |
+
?>
|
232 |
+
<svg class=" h-6 w-6 text-yellow-400" fill="currentColor" viewBox="0 0 20 20">
|
233 |
+
<title><?php echo esc_html__( 'Sending', 'email-subscribers' ); ?></title>
|
234 |
+
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-8.707l-3-3a1 1 0 00-1.414 1.414L10.586 9H7a1 1 0 100 2h3.586l-1.293 1.293a1 1 0 101.414 1.414l3-3a1 1 0 000-1.414z" clip-rule="evenodd"/>
|
235 |
+
</svg>
|
236 |
+
<?php
|
237 |
+
break;
|
238 |
+
case 'Opened':
|
239 |
+
?>
|
240 |
+
<svg xmlns="http://www.w3.org/2000/svg" class="" width="28" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
241 |
+
<title><?php echo esc_html__( 'Opened', 'email-subscribers' ); ?></title>
|
242 |
+
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
|
243 |
+
<path d="M7 12l5 5l10 -10" />
|
244 |
+
<path d="M2 12l5 5m5 -5l5 -5" />
|
245 |
+
</svg>
|
246 |
+
<?php
|
247 |
+
break;
|
248 |
+
case '':
|
249 |
+
?>
|
250 |
+
<i class="dashicons dashicons-es dashicons-minus"/>
|
251 |
+
<?php
|
252 |
+
break;
|
253 |
+
default:
|
254 |
+
echo esc_html( $status );
|
255 |
+
break;
|
256 |
+
|
257 |
+
}
|
258 |
+
?>
|
259 |
+
</span>
|
260 |
+
</td>
|
261 |
+
|
262 |
<td class="pl-2 pr-2 py-2 border-b border-gray-200 text-sm leading-5 text-gray-500"><?php echo wp_kses_post( ig_es_format_date_time( $sent_at ) ); ?></td>
|
|
|
|
|
|
|
|
|
|
|
|
|
263 |
<td class="pl-6 pr-1 py-2 border-b border-gray-200 text-sm leading-5 text-gray-500"><?php echo wp_kses_post( ig_es_format_date_time( $opened_at ) ); ?></td>
|
264 |
</tr>
|
265 |
|
lite/includes/classes/class-es-tools.php
CHANGED
@@ -49,7 +49,11 @@ class ES_Tools {
|
|
49 |
$content = str_replace( '{{NAME}}', 'Username', $content );
|
50 |
}
|
51 |
|
52 |
-
$
|
|
|
|
|
|
|
|
|
53 |
|
54 |
if ( $response && 'SUCCESS' === $response['status'] ) {
|
55 |
$response['message'] = __( 'Email has been sent. Please check your inbox', 'email-subscribers' );
|
49 |
$content = str_replace( '{{NAME}}', 'Username', $content );
|
50 |
}
|
51 |
|
52 |
+
$attachments = ig_es_get_data( $_POST, 'attachments', array() );
|
53 |
+
|
54 |
+
$merge_tags = array( 'attachments' => $attachments );
|
55 |
+
|
56 |
+
$response = ES()->mailer->send_test_email( $email, $subject, $content, $merge_tags );
|
57 |
|
58 |
if ( $response && 'SUCCESS' === $response['status'] ) {
|
59 |
$response['message'] = __( 'Email has been sent. Please check your inbox', 'email-subscribers' );
|
lite/includes/classes/class-ig-es-background-process-helper.php
CHANGED
@@ -158,14 +158,16 @@ if ( ! class_exists( 'IG_ES_Background_Process_Helper' ) ) {
|
|
158 |
*
|
159 |
* @since 4.6.3
|
160 |
*/
|
161 |
-
public static function add_action_scheduler_task( $action = '', $action_args = array(), $process_asynchronously = true, $should_wait = false ) {
|
162 |
|
163 |
-
if ( empty( $action )
|
164 |
return false;
|
165 |
}
|
166 |
|
167 |
if ( function_exists( 'as_schedule_single_action' ) ) {
|
168 |
-
$
|
|
|
|
|
169 |
if ( ! empty( $action_id ) ) {
|
170 |
if ( $process_asynchronously ) {
|
171 |
$request_args = array(
|
158 |
*
|
159 |
* @since 4.6.3
|
160 |
*/
|
161 |
+
public static function add_action_scheduler_task( $action = '', $action_args = array(), $process_asynchronously = true, $should_wait = false, $time = 0 ) {
|
162 |
|
163 |
+
if ( empty( $action ) ) {
|
164 |
return false;
|
165 |
}
|
166 |
|
167 |
if ( function_exists( 'as_schedule_single_action' ) ) {
|
168 |
+
$time = ! empty( $time ) ? $time : time();
|
169 |
+
$action_id = as_schedule_single_action( $time, $action, array( $action_args ), 'email-subscribers' );
|
170 |
+
|
171 |
if ( ! empty( $action_id ) ) {
|
172 |
if ( $process_asynchronously ) {
|
173 |
$request_args = array(
|
lite/includes/db/class-es-db-contacts.php
CHANGED
@@ -66,6 +66,7 @@ class ES_DB_Contacts extends ES_DB {
|
|
66 |
'email' => '%s',
|
67 |
'source' => '%s',
|
68 |
'ip_address' => '%s',
|
|
|
69 |
'form_id' => '%d',
|
70 |
'status' => '%s',
|
71 |
'unsubscribed' => '%d',
|
@@ -95,6 +96,7 @@ class ES_DB_Contacts extends ES_DB {
|
|
95 |
'email' => '',
|
96 |
'source' => '',
|
97 |
'ip_address' => '',
|
|
|
98 |
'form_id' => 0,
|
99 |
'status' => 'verified',
|
100 |
'unsubscribed' => 0,
|
@@ -938,10 +940,12 @@ class ES_DB_Contacts extends ES_DB {
|
|
938 |
$can_track_ip = apply_filters('ig_es_can_track_subscriber_ip', 'yes' );
|
939 |
|
940 |
if ( 'no' === $can_track_ip && ES()->is_pro() ) {
|
941 |
-
$data['ip_address']
|
|
|
942 |
} else {
|
943 |
if ( empty( $data['ip_address'] ) && ! in_array( $data['source'], $source ) ) {
|
944 |
$data['ip_address'] = ig_es_get_ip();
|
|
|
945 |
}
|
946 |
}
|
947 |
return parent::insert( $data, $type );
|
66 |
'email' => '%s',
|
67 |
'source' => '%s',
|
68 |
'ip_address' => '%s',
|
69 |
+
'country_code' => '%s',
|
70 |
'form_id' => '%d',
|
71 |
'status' => '%s',
|
72 |
'unsubscribed' => '%d',
|
96 |
'email' => '',
|
97 |
'source' => '',
|
98 |
'ip_address' => '',
|
99 |
+
'country_code' => '',
|
100 |
'form_id' => 0,
|
101 |
'status' => 'verified',
|
102 |
'unsubscribed' => 0,
|
940 |
$can_track_ip = apply_filters('ig_es_can_track_subscriber_ip', 'yes' );
|
941 |
|
942 |
if ( 'no' === $can_track_ip && ES()->is_pro() ) {
|
943 |
+
$data['ip_address'] = '';
|
944 |
+
$data['country_code'] = '';
|
945 |
} else {
|
946 |
if ( empty( $data['ip_address'] ) && ! in_array( $data['source'], $source ) ) {
|
947 |
$data['ip_address'] = ig_es_get_ip();
|
948 |
+
$data = apply_filters( 'ig_es_get_country_based_on_ip', $data );
|
949 |
}
|
950 |
}
|
951 |
return parent::insert( $data, $type );
|
lite/includes/db/class-es-db-sending-queue.php
CHANGED
@@ -261,6 +261,121 @@ class ES_DB_Sending_Queue {
|
|
261 |
|
262 |
}
|
263 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
264 |
public static function update_viewed_status( $guid = '', $email = '', $message_id = 0 ) {
|
265 |
global $wpdb;
|
266 |
|
261 |
|
262 |
}
|
263 |
|
264 |
+
/**
|
265 |
+
* Method to insert sending queue data from contact table.
|
266 |
+
*
|
267 |
+
* @param int $mailing_queue_id Mailing queue ID.
|
268 |
+
* @param string $mailing_queue_hash Mailing Hash.
|
269 |
+
* @param int $campaign_id Campaign ID.
|
270 |
+
* @param array|string $list_ids List IDs seperated by commas if string i.e. '1,2,3' or array( 1, 2, 3 ) if array.
|
271 |
+
*
|
272 |
+
* @return bool $is_inserted Is contacts inserted into sending_queue table.
|
273 |
+
*
|
274 |
+
* @since 4.6.4
|
275 |
+
*/
|
276 |
+
public static function do_insert_from_contacts_table( $mailing_queue_id = 0, $mailing_queue_hash = '', $campaign_id = 0, $list_ids = array() ) {
|
277 |
+
|
278 |
+
global $wpdb;
|
279 |
+
|
280 |
+
$is_inserted = false;
|
281 |
+
|
282 |
+
if ( empty( $mailing_queue_id ) || empty( $mailing_queue_hash ) || empty( $campaign_id ) || empty( $list_ids ) ) {
|
283 |
+
return $is_inserted;
|
284 |
+
}
|
285 |
+
|
286 |
+
$column_defaults = self::get_column_defaults();
|
287 |
+
|
288 |
+
$queue_status = 'In Queue';
|
289 |
+
$queue_links = isset( $column_defaults['links'] ) ? $column_defaults['links'] : '';
|
290 |
+
$queue_opened = isset( $column_defaults['opened'] ) ? $column_defaults['opened'] : 0;
|
291 |
+
$queue_sent_at = isset( $column_defaults['sent_at'] ) ? $column_defaults['sent_at']: null;
|
292 |
+
$queue_opened_at = isset( $column_defaults['opened_at'] ) ? $column_defaults['opened_at'] : null;
|
293 |
+
|
294 |
+
// Convert to string if list ids are in array.
|
295 |
+
if ( is_array( $list_ids ) ) {
|
296 |
+
$list_ids = implode( ',', $list_ids );
|
297 |
+
}
|
298 |
+
|
299 |
+
$total_contacts_added = $wpdb->query(
|
300 |
+
$wpdb->prepare(
|
301 |
+
"INSERT INTO `{$wpdb->prefix}ig_sending_queue`
|
302 |
+
(
|
303 |
+
`mailing_queue_id`,
|
304 |
+
`mailing_queue_hash`,
|
305 |
+
`campaign_id`,
|
306 |
+
`contact_id`,
|
307 |
+
`contact_hash`,
|
308 |
+
`email`,
|
309 |
+
`status`,
|
310 |
+
`links`,
|
311 |
+
`opened`,
|
312 |
+
`sent_at`,
|
313 |
+
`opened_at`
|
314 |
+
)
|
315 |
+
SELECT
|
316 |
+
%d AS `mailing_queue_id`,
|
317 |
+
%s AS `mailing_queue_hash`,
|
318 |
+
%d AS `campaign_id`,
|
319 |
+
MAX(`ig_contacts`.`id`) AS `contact_id`,
|
320 |
+
MAX(`ig_contacts`.`hash`) AS `contact_hash`,
|
321 |
+
`ig_contacts`.`email` AS `email`,
|
322 |
+
%s AS `status`,
|
323 |
+
%s AS `links`,
|
324 |
+
%d AS `opened`,
|
325 |
+
%s AS `sent_at`,
|
326 |
+
%s AS `opened_at`
|
327 |
+
FROM `{$wpdb->prefix}ig_contacts` AS `ig_contacts`
|
328 |
+
WHERE id IN (
|
329 |
+
SELECT `contact_id` FROM `{$wpdb->prefix}ig_lists_contacts`
|
330 |
+
WHERE FIND_IN_SET( `list_id`, %s ) AND `status` IN ( 'subscribed', 'confirmed' )
|
331 |
+
)
|
332 |
+
GROUP BY `ig_contacts`.`email`",
|
333 |
+
$mailing_queue_id,
|
334 |
+
$mailing_queue_hash,
|
335 |
+
$campaign_id,
|
336 |
+
$queue_status,
|
337 |
+
$queue_links,
|
338 |
+
$queue_opened,
|
339 |
+
$queue_sent_at,
|
340 |
+
$queue_opened_at,
|
341 |
+
$list_ids
|
342 |
+
)
|
343 |
+
);
|
344 |
+
|
345 |
+
// Check if contacts added.
|
346 |
+
if ( ! empty( $total_contacts_added ) ) {
|
347 |
+
$is_inserted = true;
|
348 |
+
ES_DB_Mailing_Queue::update_subscribers_count( $mailing_queue_hash, $total_contacts_added );
|
349 |
+
} else {
|
350 |
+
|
351 |
+
// If some how above sql query fails then queue emails using old approach.
|
352 |
+
// i.e. Preparing data for insert query in PHP and then doing insert.
|
353 |
+
|
354 |
+
// Converto to an array if already not an array.
|
355 |
+
if ( ! is_array( $list_ids ) ) {
|
356 |
+
$list_ids = explode( ',', $list_ids );
|
357 |
+
}
|
358 |
+
|
359 |
+
$subscribers = ES()->contacts_db->get_active_contacts_by_list_id( $list_ids );
|
360 |
+
$subscribers_count = count( $subscribers );
|
361 |
+
if ( $subscribers_count > 0 ) {
|
362 |
+
// Add entry into sending queue table
|
363 |
+
$delivery_data = array();
|
364 |
+
$delivery_data['hash'] = $mailing_queue_hash;
|
365 |
+
$delivery_data['status'] = $queue_status;
|
366 |
+
$delivery_data['subscribers'] = $subscribers;
|
367 |
+
$delivery_data['campaign_id'] = $campaign_id;
|
368 |
+
$delivery_data['mailing_queue_id'] = $mailing_queue_id;
|
369 |
+
$is_inserted = self::do_batch_insert( $delivery_data );
|
370 |
+
if ( $is_inserted ) {
|
371 |
+
ES_DB_Mailing_Queue::update_subscribers_count( $mailing_queue_hash, $subscribers_count );
|
372 |
+
}
|
373 |
+
}
|
374 |
+
}
|
375 |
+
|
376 |
+
return $is_inserted;
|
377 |
+
}
|
378 |
+
|
379 |
public static function update_viewed_status( $guid = '', $email = '', $message_id = 0 ) {
|
380 |
global $wpdb;
|
381 |
|
lite/includes/libraries/class-es-html2text.php
CHANGED
@@ -221,9 +221,16 @@ class ES_Html2Text {
|
|
221 |
* @return unknown
|
222 |
*/
|
223 |
public function __construct( $html = '', $options = array() ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
224 |
// for backwards compatibility
|
225 |
-
if ( !is_array( $options ) ) {
|
226 |
-
return call_user_func_array( array( $this, 'legacyConstruct' ),
|
227 |
}
|
228 |
|
229 |
$this->html = $html;
|
221 |
* @return unknown
|
222 |
*/
|
223 |
public function __construct( $html = '', $options = array() ) {
|
224 |
+
|
225 |
+
/**
|
226 |
+
* It is a good practice to put func_get_args() at the start of the function to avoid a changed function parameter to leak into the original arguments.
|
227 |
+
* By taking the copy early this is avoided. This behavior changed in PHP7: [https://www.php.net/manual/en/function.func-get-args.php#refsect1-function.func-get-args-notes]
|
228 |
+
*/
|
229 |
+
$func_args = func_get_args();
|
230 |
+
|
231 |
// for backwards compatibility
|
232 |
+
if ( ! is_array( $options ) ) {
|
233 |
+
return call_user_func_array( array( $this, 'legacyConstruct' ), $func_args );
|
234 |
}
|
235 |
|
236 |
$this->html = $html;
|
lite/includes/mailers/class-es-pepipost-mailer.php
CHANGED
@@ -65,6 +65,20 @@ if ( ! class_exists( 'ES_Pepipost_Mailer' ) ) {
|
|
65 |
$params['from']['fromName'] = $message->from_name;
|
66 |
$params['subject'] = $message->subject;
|
67 |
$params['content'] = $message->body;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
|
69 |
$headers = array(
|
70 |
'user-agent' => 'APIMATIC 2.0',
|
65 |
$params['from']['fromName'] = $message->from_name;
|
66 |
$params['subject'] = $message->subject;
|
67 |
$params['content'] = $message->body;
|
68 |
+
|
69 |
+
$attachments = $message->attachments;
|
70 |
+
if ( ! empty( $attachments ) ) {
|
71 |
+
foreach ( $attachments as $attachment_name => $attachment_path ) {
|
72 |
+
if ( is_file( $attachment_path ) ) {
|
73 |
+
$attachment_content = file_get_contents( $attachment_path );
|
74 |
+
$encoded_content = base64_encode( $attachment_content );
|
75 |
+
$params['attachments'][] = array(
|
76 |
+
'fileContent' => $encoded_content,
|
77 |
+
'fileName' => $attachment_name,
|
78 |
+
);
|
79 |
+
}
|
80 |
+
}
|
81 |
+
}
|
82 |
|
83 |
$headers = array(
|
84 |
'user-agent' => 'APIMATIC 2.0',
|
lite/includes/mailers/class-es-phpmail-mailer.php
CHANGED
@@ -29,21 +29,73 @@ if ( ! class_exists( 'ES_Phpmail_Mailer' ) ) {
|
|
29 |
*/
|
30 |
public function send( ES_Message $message ) {
|
31 |
|
32 |
-
|
33 |
|
34 |
-
|
35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
|
37 |
-
|
38 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
|
40 |
-
|
41 |
-
return $this->do_response( 'error', 'Error in Email Sending' );
|
42 |
}
|
43 |
|
44 |
ES()->logger->info( 'Email Sent Successfully Using PHP Mail', $this->logger_context );
|
45 |
|
46 |
return $this->do_response( 'success' );
|
|
|
47 |
}
|
48 |
|
49 |
}
|
29 |
*/
|
30 |
public function send( ES_Message $message ) {
|
31 |
|
32 |
+
global $wp_version;
|
33 |
|
34 |
+
ES()->logger->info( 'Start Sending Email Using PHP Mail', $this->logger_context );
|
35 |
+
|
36 |
+
if ( version_compare( $wp_version, '5.5', '<' ) ) {
|
37 |
+
require_once ABSPATH . WPINC . '/class-phpmailer.php';
|
38 |
+
} else {
|
39 |
+
require_once ABSPATH . WPINC . '/PHPMailer/PHPMailer.php';
|
40 |
+
require_once ABSPATH . WPINC . '/PHPMailer/Exception.php';
|
41 |
+
|
42 |
+
// Check if PHPMailer class already exists before creating an alias for it.
|
43 |
+
if ( ! class_exists( 'PHPMailer' ) ) {
|
44 |
+
class_alias( PHPMailer\PHPMailer\PHPMailer::class, 'PHPMailer' );
|
45 |
+
}
|
46 |
+
|
47 |
+
// Check if phpmailerException class already exists before creating an alias for it.
|
48 |
+
if ( ! class_exists( 'phpmailerException' ) ) {
|
49 |
+
class_alias( PHPMailer\PHPMailer\Exception::class, 'phpmailerException' );
|
50 |
+
}
|
51 |
+
}
|
52 |
+
|
53 |
+
$phpmailer = new PHPMailer( true );
|
54 |
+
$phpmailer->From = $message->from;
|
55 |
+
$phpmailer->FromName = $message->from_name;
|
56 |
+
$phpmailer->CharSet = $message->charset;
|
57 |
+
$phpmailer->ClearAllRecipients();
|
58 |
+
$phpmailer->clearAttachments();
|
59 |
+
$phpmailer->clearCustomHeaders();
|
60 |
+
$phpmailer->clearReplyTos();
|
61 |
+
|
62 |
+
$phpmailer->addAddress( $message->to );
|
63 |
+
$phpmailer->addReplyTo( $message->from, $message->from_name );
|
64 |
+
|
65 |
+
$phpmailer->WordWrap = 50;
|
66 |
+
$phpmailer->isHTML( true );
|
67 |
+
|
68 |
+
$phpmailer->Subject = $message->subject;
|
69 |
+
$phpmailer->Body = $message->body;
|
70 |
+
$phpmailer->AltBody = $message->body_text; //Text Email Body for non html email client
|
71 |
+
|
72 |
+
if ( ! empty( $message->attachments ) ) {
|
73 |
+
$attachments = $message->attachments;
|
74 |
+
foreach ( $attachments as $attachment ) {
|
75 |
+
try {
|
76 |
+
$phpmailer->addAttachment( $attachment );
|
77 |
+
} catch ( phpmailerException $e ) {
|
78 |
+
continue;
|
79 |
+
}
|
80 |
+
}
|
81 |
+
}
|
82 |
|
83 |
+
try {
|
84 |
+
if ( ! $phpmailer->send() ) {
|
85 |
+
ES()->logger->error( '[Error in Email Sending] : ' . $message->to . ' Error: ' . $phpmailer->ErrorInfo, $this->logger_context );
|
86 |
+
|
87 |
+
return $this->do_response( 'error', $phpmailer->ErrorInfo );
|
88 |
+
}
|
89 |
+
} catch ( Exception $e ) {
|
90 |
+
ES()->logger->error( '[Error in Email Sending] : ' . $message->to . ' Error: ' . $e->getMessage(), $this->logger_context );
|
91 |
|
92 |
+
return $this->do_response( 'error', $e->getMessage() );
|
|
|
93 |
}
|
94 |
|
95 |
ES()->logger->info( 'Email Sent Successfully Using PHP Mail', $this->logger_context );
|
96 |
|
97 |
return $this->do_response( 'success' );
|
98 |
+
|
99 |
}
|
100 |
|
101 |
}
|
lite/includes/mailers/class-es-wpmail-mailer.php
CHANGED
@@ -27,7 +27,7 @@ if ( ! class_exists( 'ES_Wpmail_Mailer' ) ) {
|
|
27 |
|
28 |
ES()->logger->info( 'Start Sending Email Using WP Mail', $this->logger_context );
|
29 |
|
30 |
-
$send_mail = wp_mail( $message->to, $message->subject, $message->body, $message->headers );
|
31 |
|
32 |
if ( ! $send_mail ) {
|
33 |
global $phpmailer;
|
27 |
|
28 |
ES()->logger->info( 'Start Sending Email Using WP Mail', $this->logger_context );
|
29 |
|
30 |
+
$send_mail = wp_mail( $message->to, $message->subject, $message->body, $message->headers, $message->attachments );
|
31 |
|
32 |
if ( ! $send_mail ) {
|
33 |
global $phpmailer;
|
lite/includes/pro-features.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
add_filter( 'ig_es_settings_tabs', 'ig_es_add_settings_tabs', 10, 1 );
|
4 |
add_filter( 'ig_es_registered_settings', 'ig_es_add_upsale', 10, 2 );
|
5 |
-
add_filter( 'ig_es_mailers', 'ig_es_mailers_promo',
|
6 |
|
7 |
// Add additional tab "Comments" in Audience > Sync
|
8 |
add_filter( 'ig_es_sync_users_tabs', 'ig_es_add_sync_users_tabs', 11, 1 );
|
@@ -28,6 +28,12 @@ add_action( 'ig_es_after_broadcast_tracking_options_settings', 'ig_es_additional
|
|
28 |
add_action( 'ig_es_add_multilist_options', 'ig_es_additional_multilist_and_post_digest' );
|
29 |
add_action( 'ig_es_view_report_data', 'ig_es_view_additional_reports_data');
|
30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
/**
|
32 |
* Promote SMTP mailer for free
|
33 |
*
|
@@ -51,6 +57,17 @@ function ig_es_mailers_promo( $mailers ) {
|
|
51 |
|
52 |
}
|
53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
return $mailers;
|
55 |
}
|
56 |
|
@@ -675,7 +692,7 @@ function add_spam_score_utm_link() {
|
|
675 |
}
|
676 |
|
677 |
/**
|
678 |
-
*
|
679 |
*
|
680 |
* @param $form_data
|
681 |
*
|
@@ -1438,3 +1455,60 @@ function ig_es_view_additional_reports_data() {
|
|
1438 |
}
|
1439 |
}
|
1440 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
add_filter( 'ig_es_settings_tabs', 'ig_es_add_settings_tabs', 10, 1 );
|
4 |
add_filter( 'ig_es_registered_settings', 'ig_es_add_upsale', 10, 2 );
|
5 |
+
add_filter( 'ig_es_mailers', 'ig_es_mailers_promo', 11, 1 );
|
6 |
|
7 |
// Add additional tab "Comments" in Audience > Sync
|
8 |
add_filter( 'ig_es_sync_users_tabs', 'ig_es_add_sync_users_tabs', 11, 1 );
|
28 |
add_action( 'ig_es_add_multilist_options', 'ig_es_additional_multilist_and_post_digest' );
|
29 |
add_action( 'ig_es_view_report_data', 'ig_es_view_additional_reports_data');
|
30 |
|
31 |
+
// Upsell add attachment feature.
|
32 |
+
add_action( 'media_buttons', 'ig_es_upsell_add_attachment_feature' );
|
33 |
+
|
34 |
+
// Upsell existing wp user import feature.
|
35 |
+
add_action( 'ig_es_subscriber_import_method_tab_heading', 'ig_es_upsell_existing_wp_user_import_feature' );
|
36 |
+
|
37 |
/**
|
38 |
* Promote SMTP mailer for free
|
39 |
*
|
57 |
|
58 |
}
|
59 |
|
60 |
+
if ( ES()->can_upsell_features( array( 'lite', 'starter', 'trial' ) ) ) {
|
61 |
+
|
62 |
+
$mailers['Amazon_SES'] = array(
|
63 |
+
'name' => 'Amazon SES',
|
64 |
+
'logo' => ES_PLUGIN_URL . 'lite/admin/images/aws.svg',
|
65 |
+
'is_premium' => true,
|
66 |
+
'url' => ES_Common::get_utm_tracking_url( array( 'utm_medium' => 'amazon_ses_mailer' ) )
|
67 |
+
);
|
68 |
+
|
69 |
+
}
|
70 |
+
|
71 |
return $mailers;
|
72 |
}
|
73 |
|
692 |
}
|
693 |
|
694 |
/**
|
695 |
+
* Upsell ES PRO on Form Captcha
|
696 |
*
|
697 |
* @param $form_data
|
698 |
*
|
1455 |
}
|
1456 |
}
|
1457 |
|
1458 |
+
|
1459 |
+
/**
|
1460 |
+
* Upsell add attachment feature in lite/starter/trial versions.
|
1461 |
+
*
|
1462 |
+
* @param string $editor_id Editor ID
|
1463 |
+
*
|
1464 |
+
* @since 4.6.7
|
1465 |
+
*/
|
1466 |
+
function ig_es_upsell_add_attachment_feature( $editor_id ) {
|
1467 |
+
|
1468 |
+
if ( 'edit-es-boradcast-body' === $editor_id ) {
|
1469 |
+
if ( ES()->can_upsell_features( array( 'lite', 'starter', 'trial' ) ) ) {
|
1470 |
+
?>
|
1471 |
+
<div class="ig-es-attachments-wrapper bg-white inline-block">
|
1472 |
+
<button type="button" class="ig-es-add-attachment button" disabled="disabled">
|
1473 |
+
<svg class="flex-shrink-0 h-5 text-gray-400 inline-block" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
|
1474 |
+
<path fill-rule="evenodd" d="M8 4a3 3 0 00-3 3v4a5 5 0 0010 0V7a1 1 0 112 0v4a7 7 0 11-14 0V7a5 5 0 0110 0v4a3 3 0 11-6 0V7a1 1 0 012 0v4a1 1 0 102 0V7a3 3 0 00-3-3z" clip-rule="evenodd"></path>
|
1475 |
+
</svg>
|
1476 |
+
<?php echo esc_html__( 'Add Attachments', 'email-subscribers' ); ?>
|
1477 |
+
</button>
|
1478 |
+
<span class="premium-icon"></span>
|
1479 |
+
</div>
|
1480 |
+
<?php
|
1481 |
+
}
|
1482 |
+
}
|
1483 |
+
}
|
1484 |
+
|
1485 |
+
/**
|
1486 |
+
* Upsell existing wp user import feature
|
1487 |
+
*
|
1488 |
+
* @since 4.6.7
|
1489 |
+
*/
|
1490 |
+
function ig_es_upsell_existing_wp_user_import_feature() {
|
1491 |
+
|
1492 |
+
if ( ES()->can_upsell_features( array( 'lite', 'starter', 'trial' ) ) ) {
|
1493 |
+
$utm_args = array(
|
1494 |
+
'utm_medium' => 'import_existing_wp_users'
|
1495 |
+
);
|
1496 |
+
|
1497 |
+
$pricing_url = ES_Common::get_utm_tracking_url( $utm_args );
|
1498 |
+
?>
|
1499 |
+
<a href="<?php echo esc_url( $pricing_url ); ?>" target="_blank">
|
1500 |
+
<label class="inline-flex items-center cursor-pointer w-56">
|
1501 |
+
<div class="mt-4 px-1 mx-4 border border-gray-200 rounded-lg shadow-md es-mailer-logo bg-white">
|
1502 |
+
<div class="border-0 es-logo-wrapper">
|
1503 |
+
<svg class="w-6 h-6 text-gray-500 inline-block" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z"></path></svg>
|
1504 |
+
</div>
|
1505 |
+
<p class="mb-2 text-sm inline-block font-medium text-gray-600">
|
1506 |
+
<?php echo esc_html__( 'Import existing WordPress users', 'email-subscribers' ); ?>
|
1507 |
+
<span class="premium-icon inline-block"></span>
|
1508 |
+
</p>
|
1509 |
+
</div>
|
1510 |
+
</label>
|
1511 |
+
</a>
|
1512 |
+
<?php
|
1513 |
+
}
|
1514 |
+
}
|
lite/includes/upgrade/es-update-functions.php
CHANGED
@@ -1325,6 +1325,7 @@ function ig_es_update_465_db_version() {
|
|
1325 |
/* --------------------- ES 4.6.5(End)--------------------------- */
|
1326 |
|
1327 |
/* --------------------- ES 4.6.6(Start)--------------------------- */
|
|
|
1328 |
/**
|
1329 |
* Create table for storing subscribers import CSV data temporarily
|
1330 |
*
|
@@ -1343,3 +1344,43 @@ function ig_es_update_466_db_version() {
|
|
1343 |
ES_Install::update_db_version( '4.6.6' );
|
1344 |
}
|
1345 |
/* --------------------- ES 4.6.6(End)--------------------------- */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1325 |
/* --------------------- ES 4.6.5(End)--------------------------- */
|
1326 |
|
1327 |
/* --------------------- ES 4.6.6(Start)--------------------------- */
|
1328 |
+
|
1329 |
/**
|
1330 |
* Create table for storing subscribers import CSV data temporarily
|
1331 |
*
|
1344 |
ES_Install::update_db_version( '4.6.6' );
|
1345 |
}
|
1346 |
/* --------------------- ES 4.6.6(End)--------------------------- */
|
1347 |
+
|
1348 |
+
/* --------------------- ES 4.6.7(Start)--------------------------- */
|
1349 |
+
|
1350 |
+
/**
|
1351 |
+
* Add Country column in contacts table
|
1352 |
+
*
|
1353 |
+
* @since 4.6.7
|
1354 |
+
*/
|
1355 |
+
function ig_es_update_467_alter_contacts_table() {
|
1356 |
+
global $wpdb;
|
1357 |
+
|
1358 |
+
$cols = $wpdb->get_col( "SHOW COLUMNS FROM {$wpdb->prefix}ig_contacts" );
|
1359 |
+
|
1360 |
+
if ( ! in_array( 'country', $cols, true ) ) {
|
1361 |
+
$wpdb->query(
|
1362 |
+
"ALTER TABLE {$wpdb->prefix}ig_contacts
|
1363 |
+
ADD COLUMN `country_code` varchar(50) NULL AFTER `ip_address`"
|
1364 |
+
);
|
1365 |
+
}
|
1366 |
+
}
|
1367 |
+
|
1368 |
+
/**
|
1369 |
+
* Add country code based on the contacts ip_address
|
1370 |
+
*
|
1371 |
+
* @since 4.6.7
|
1372 |
+
*/
|
1373 |
+
function ig_es_add_country_code_to_contacts_table() {
|
1374 |
+
IG_ES_Background_Process_Helper::add_action_scheduler_task( 'ig_es_add_country_code_to_audience' );
|
1375 |
+
}
|
1376 |
+
|
1377 |
+
/**
|
1378 |
+
* Update DB version
|
1379 |
+
*
|
1380 |
+
* @since 4.6.7
|
1381 |
+
*/
|
1382 |
+
function ig_es_update_467_db_version() {
|
1383 |
+
ES_Install::update_db_version( '4.6.7' );
|
1384 |
+
}
|
1385 |
+
|
1386 |
+
/* --------------------- ES 4.6.7(End)--------------------------- */
|
lite/public/js/email-subscribers-public.js
CHANGED
@@ -119,6 +119,29 @@
|
|
119 |
handleBindFunction(form);
|
120 |
});
|
121 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
122 |
});
|
123 |
// Compatibility of ES with IG
|
124 |
jQuery( window ).on( "init.icegram", function(e, ig) {
|
119 |
handleBindFunction(form);
|
120 |
});
|
121 |
|
122 |
+
let subscription_forms = $('.es_subscription_form');
|
123 |
+
// Check if page contains ES subscription form.
|
124 |
+
if ( subscription_forms.length > 0 ) {
|
125 |
+
// Send an ajax request to get updated nonce value.
|
126 |
+
jQuery.ajax({
|
127 |
+
type: 'POST',
|
128 |
+
url: es_data.es_ajax_url,
|
129 |
+
data: {
|
130 |
+
action: 'ig_es_get_updated_subscription_nonce',
|
131 |
+
},
|
132 |
+
dataType: 'json',
|
133 |
+
success: function(response) {
|
134 |
+
if( true === response.success ) {
|
135 |
+
let data = response.data;
|
136 |
+
let updated_nonce = data.updated_nonce;
|
137 |
+
// Update nonce field in each subscription form.
|
138 |
+
jQuery(subscription_forms).find('input[name="es-subscribe"]').each(function(){
|
139 |
+
$(this).val(updated_nonce);
|
140 |
+
});
|
141 |
+
}
|
142 |
+
}
|
143 |
+
});
|
144 |
+
}
|
145 |
});
|
146 |
// Compatibility of ES with IG
|
147 |
jQuery( window ).on( "init.icegram", function(e, ig) {
|
lite/public/partials/class-es-shortcode.php
CHANGED
@@ -250,7 +250,6 @@ class ES_Shortcode {
|
|
250 |
<span class="es_spinner_image" id="spinner-image"><img src="<?php echo esc_url( $spinner_image_path ); ?>" alt="Loading"/></span>
|
251 |
|
252 |
</form>
|
253 |
-
|
254 |
<span class="es_subscription_message" id="es_subscription_message_<?php echo esc_attr( $unique_id ); ?>"></span>
|
255 |
</div>
|
256 |
|
250 |
<span class="es_spinner_image" id="spinner-image"><img src="<?php echo esc_url( $spinner_image_path ); ?>" alt="Loading"/></span>
|
251 |
|
252 |
</form>
|
|
|
253 |
<span class="es_subscription_message" id="es_subscription_message_<?php echo esc_attr( $unique_id ); ?>"></span>
|
254 |
</div>
|
255 |
|
readme.txt
CHANGED
@@ -6,7 +6,7 @@ Tags: email marketing, subscription, autoresponder, post notification, welcome e
|
|
6 |
Requires at least: 3.9
|
7 |
Tested up to: 5.6
|
8 |
Requires PHP: 5.6
|
9 |
-
Stable tag: 4.6.
|
10 |
License: GPLv3
|
11 |
License URI: http://www.gnu.org/licenses
|
12 |
|
@@ -304,6 +304,15 @@ Refer [here](https://www.icegram.com/documentation/es-faq/).
|
|
304 |
|
305 |
== Changelog ==
|
306 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
307 |
**4.6.6 (14.01.2021)**
|
308 |
|
309 |
* New: Now, able to map fields while importing
|
6 |
Requires at least: 3.9
|
7 |
Tested up to: 5.6
|
8 |
Requires PHP: 5.6
|
9 |
+
Stable tag: 4.6.7
|
10 |
License: GPLv3
|
11 |
License URI: http://www.gnu.org/licenses
|
12 |
|
304 |
|
305 |
== Changelog ==
|
306 |
|
307 |
+
**4.6.7 (21.01.2021)**
|
308 |
+
|
309 |
+
* New: Show contacts' country on the audience page [PRO]
|
310 |
+
* New: Import existing WordPress users [PRO]
|
311 |
+
* New: Add attachments to broadcast and sequence campaigns [PRO]
|
312 |
+
* New: Send emails using Amazon SES [PRO]
|
313 |
+
* Update: Improved campaign report UI
|
314 |
+
* Fix: Invalid nonce issue due to caching while subscribing
|
315 |
+
|
316 |
**4.6.6 (14.01.2021)**
|
317 |
|
318 |
* New: Now, able to map fields while importing
|