Discount Rules for WooCommerce - Version 2.4.0

Version Description

  • 06/04/22 =
  • Deprecated: V1 layout.
  • Fix: Calculating discount for out of stock product variant.
  • Fix: Custom taxonomy query while process on-sale page.
  • Fix: Multiple messages on having BXGY cheapest rules.
  • Improvement - Event advanced_woo_discount_rules_cart_strikeout_quantity_html.
Download this release

Release Info

Developer flycart
Plugin Icon 128x128 Discount Rules for WooCommerce
Version 2.4.0
Comparing to
See all releases

Code changes from version 2.3.13 to 2.4.0

common.php CHANGED
@@ -1,14 +1,6 @@
1
  <?php
2
  if (!defined('ABSPATH')) exit; // Exit if accessed directly
3
 
4
- add_action('wp_ajax_awdr_auto_install_pro_plugin', function (){
5
- if (current_user_can( 'manage_woocommerce' )) {
6
- FlycartWooDiscountRulesExistingPROUpdater::installProPlugin();
7
- exit;
8
- } else {
9
- die(__('Authentication required', 'woo-discount-rules'));
10
- }
11
- });
12
  add_action('wp_ajax_awdr_switch_version', function (){
13
  $version = isset($_REQUEST['version'])? $_REQUEST['version']: '';
14
  $page = isset($_REQUEST['page'])? $_REQUEST['page']: '';
@@ -18,7 +10,7 @@ add_action('wp_ajax_awdr_switch_version', function (){
18
  if($version == "v1"){
19
  \Wdr\App\Helpers\Helper::validateRequest('wdr_ajax_switch_version', $wdr_nonce);
20
  } else {
21
- FlycartWooDiscountRulesGeneralHelper::validateRequest('wdr_ajax_switch_version', $wdr_nonce);
22
  }
23
  if (current_user_can( 'manage_woocommerce' )) {
24
  if($version !== '' && $page !== ''){
@@ -49,26 +41,8 @@ add_action('wp_ajax_awdr_switch_version', function (){
49
  $return['message'] = '';
50
  $return['url'] = $url;
51
  } else {
52
- $has_auto_update = false;
53
- if (!is_multisite()) {
54
- if(class_exists('FlycartWooDiscountRulesExistingPROUpdater')){
55
- if(FlycartWooDiscountRulesExistingPROUpdater::availableAutoInstall()){
56
- $has_auto_update = true;
57
- }
58
- }
59
- }
60
- if($has_auto_update){
61
- $return['type'] = 'auto_install';
62
- $message = __('<p>Since 2.0, you need BOTH Core and Pro (2.0) packages installed and activated.</p>', 'woo-discount-rules');
63
- $message .= __('<p><b>Why we made this change?</b></p>', 'woo-discount-rules');
64
- $message .= __('<p>This arrangement is to avoid the confusion in the installation and upgrade process. Many users first install the core free version. Then purchase the PRO version and try to install it over the free version. Since both free and pro packages have same names, wordpress asks them to uninstall free and then install pro. As you can see, this is quite confusing for the end users.</p>', 'woo-discount-rules');
65
- $message .= __('<p>As a result, starting from 2.0, we now have two packs: 1. Core 2. PRO.</p>', 'woo-discount-rules');
66
- $message .= '<p><button type="button" class="awdr_auto_install_pro_plugin btn btn-info">'.__('Download and Install', 'woo-discount-rules').'</button></p>';
67
- $return['message'] = $message;
68
- } else {
69
- $return['message'] = __('Since 2.0, you need BOTH Core and Pro (2.0) packages installed and activated. Please download the Pro 2.0 pack from My Downloads page in our site, install and activate it. <a href="https://docs.flycart.org/en/articles/4006520-switching-to-2-0-from-v1-x-versions?utm_source=woo-discount-rules-v2&utm_campaign=doc&utm_medium=text-click&utm_content=switch_to_v2" target="_blank">Here is a guide and video tutorial</a>', 'woo-discount-rules');
70
- $return['type'] = 'manual_install';
71
- }
72
  }
73
  }
74
  }
@@ -90,7 +64,7 @@ add_action('advanced_woo_discount_rules_on_settings_head', function () {
90
  $version = ($awdr_load_version == "v1") ? "v2" : "v1";
91
  $url = admin_url('admin.php?page=' . $page . '&awdr_switch_plugin_to=' . $version);
92
  $message = __('Discount Rules V2 comes with a better UI and advanced options.', 'woo-discount-rules');
93
- $button_text = __("Switch to v2", 'woo-discount-rules');
94
  if($version == "v1"){
95
  $has_switch = \Wdr\App\Helpers\Migration::hasSwitchBackOption();
96
  $message = __('Would you like to switch to older Woo Discount Rules?', 'woo-discount-rules');
@@ -100,30 +74,19 @@ add_action('advanced_woo_discount_rules_on_settings_head', function () {
100
  if($version == "v1"){
101
  $nounce = \Wdr\App\Helpers\Helper::create_nonce('wdr_ajax_switch_version');
102
  } else {
103
- $nounce = FlycartWooDiscountRulesGeneralHelper::createNonce('wdr_ajax_switch_version');
104
  }
105
  echo '<div class="notice notice-danger" style="background: red; color:#fff; padding: 20px;font-size: 13px;font-weight: bold;">
106
- <p><b>Important: </b>This UI will be deprecated from 30th March 2022. It is recommended to switch to V2</p>
 
107
  </div>';
108
 
109
  echo '<div style="background: #fff;padding: 20px;font-size: 13px;font-weight: bold;">' . $message . ' <button class="btn btn-info awdr-switch-version-button" data-version="' . $version . '" data-page="'.$page.'" data-nonce="'.$nounce.'">' . $button_text . '</button></div>';
110
  echo "<div class='wdr_switch_message' style='color:#a00;font-weight: bold;'></div>";
111
- echo '<div class="modal" id="wdr_switch_popup">
112
- <div class="modal-sandbox"></div>
113
- <div class="modal-box">
114
- <div class="modal-header">
115
- <div class="close-modal"><span class="wdr-close-modal-box">&#10006;</span></div>
116
- <h1 class="wdr-modal-header-title">'.__("Install 2.0 Pro package", 'woo-discount-rules').'</h1>
117
- </div>
118
- <div class="modal-body">
119
- <div class=\'wdr_pro_install_message\'></div>
120
- </div>
121
- </div>
122
- </div>';
123
  }
124
  });
125
 
126
- add_action('advanced_woo_discount_rules_content_next_to_tabs', function () {
127
  $has_switch = true;
128
  $page = NULL;
129
  if (isset($_GET['page'])) {
@@ -137,13 +100,13 @@ add_action('advanced_woo_discount_rules_content_next_to_tabs', function () {
137
  if($version == "v1"){
138
  $nounce = \Wdr\App\Helpers\Helper::create_nonce('wdr_ajax_switch_version');
139
  } else {
140
- $nounce = FlycartWooDiscountRulesGeneralHelper::createNonce('wdr_ajax_switch_version');
141
  }
142
  if($has_switch){
143
  $button_text = __("Switch back to Discount Rules 1.x", 'woo-discount-rules');
144
  echo '<button class="btn btn-info awdr-switch-version-button awdr-switch-version-button-on-tab" data-version="' . $version . '" data-page="'.$page.'" data-nonce="'.$nounce.'">' . $button_text . '</button>';
145
  }
146
- });
147
 
148
  /**
149
  * Determines if the server environment is compatible with this plugin.
1
  <?php
2
  if (!defined('ABSPATH')) exit; // Exit if accessed directly
3
 
 
 
 
 
 
 
 
 
4
  add_action('wp_ajax_awdr_switch_version', function (){
5
  $version = isset($_REQUEST['version'])? $_REQUEST['version']: '';
6
  $page = isset($_REQUEST['page'])? $_REQUEST['page']: '';
10
  if($version == "v1"){
11
  \Wdr\App\Helpers\Helper::validateRequest('wdr_ajax_switch_version', $wdr_nonce);
12
  } else {
13
+ WDRV1Deprecated::validateRequest('wdr_ajax_switch_version', $wdr_nonce);
14
  }
15
  if (current_user_can( 'manage_woocommerce' )) {
16
  if($version !== '' && $page !== ''){
41
  $return['message'] = '';
42
  $return['url'] = $url;
43
  } else {
44
+ $return['message'] = __('Since 2.0, you need BOTH Core and Pro (2.0) packages installed and activated. Please download the Pro 2.0 pack from My Downloads page in our site, install and activate it. <a href="https://docs.flycart.org/en/articles/4006520-switching-to-2-0-from-v1-x-versions?utm_source=woo-discount-rules-v2&utm_campaign=doc&utm_medium=text-click&utm_content=switch_to_v2" target="_blank">Here is a guide and video tutorial</a>', 'woo-discount-rules');
45
+ $return['type'] = 'manual_install';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  }
47
  }
48
  }
64
  $version = ($awdr_load_version == "v1") ? "v2" : "v1";
65
  $url = admin_url('admin.php?page=' . $page . '&awdr_switch_plugin_to=' . $version);
66
  $message = __('Discount Rules V2 comes with a better UI and advanced options.', 'woo-discount-rules');
67
+ $button_text = __("Switch to New User Interface", 'woo-discount-rules');
68
  if($version == "v1"){
69
  $has_switch = \Wdr\App\Helpers\Migration::hasSwitchBackOption();
70
  $message = __('Would you like to switch to older Woo Discount Rules?', 'woo-discount-rules');
74
  if($version == "v1"){
75
  $nounce = \Wdr\App\Helpers\Helper::create_nonce('wdr_ajax_switch_version');
76
  } else {
77
+ $nounce = WDRV1Deprecated::createNonce('wdr_ajax_switch_version');
78
  }
79
  echo '<div class="notice notice-danger" style="background: red; color:#fff; padding: 20px;font-size: 13px;font-weight: bold;">
80
+ <p><b>Important: </b>It seems you are using the V1 User Interface. This UI was deprecated since March 2020. We have now removed it as it is no longer supported. Please switch to the new User Interface to create and manage your discount rules.
81
+ Click the "Switch" button to start using the new interface.</p>
82
  </div>';
83
 
84
  echo '<div style="background: #fff;padding: 20px;font-size: 13px;font-weight: bold;">' . $message . ' <button class="btn btn-info awdr-switch-version-button" data-version="' . $version . '" data-page="'.$page.'" data-nonce="'.$nounce.'">' . $button_text . '</button></div>';
85
  echo "<div class='wdr_switch_message' style='color:#a00;font-weight: bold;'></div>";
 
 
 
 
 
 
 
 
 
 
 
 
86
  }
87
  });
88
 
89
+ /*add_action('advanced_woo_discount_rules_content_next_to_tabs', function () {
90
  $has_switch = true;
91
  $page = NULL;
92
  if (isset($_GET['page'])) {
100
  if($version == "v1"){
101
  $nounce = \Wdr\App\Helpers\Helper::create_nonce('wdr_ajax_switch_version');
102
  } else {
103
+ $nounce = WDRV1Deprecated::createNonce('wdr_ajax_switch_version');
104
  }
105
  if($has_switch){
106
  $button_text = __("Switch back to Discount Rules 1.x", 'woo-discount-rules');
107
  echo '<button class="btn btn-info awdr-switch-version-button awdr-switch-version-button-on-tab" data-version="' . $version . '" data-page="'.$page.'" data-nonce="'.$nounce.'">' . $button_text . '</button>';
108
  }
109
+ });*/
110
 
111
  /**
112
  * Determines if the server environment is compatible with this plugin.
i18n/languages/woo-discount-rules.pot CHANGED
@@ -4,2575 +4,75 @@ msgstr ""
4
  "Content-Type: text/plain; charset=UTF-8\n"
5
  "Content-Transfer-Encoding: 8bit\n"
6
  "Project-Id-Version: Woo Discount Rules\n"
7
- "POT-Creation-Date: 2021-12-15\n"
8
- "PO-Revision-Date: 2021-12-15"
9
  "Language-Team: Flycart\n"
10
  "MIME-Version: 1.0\n"
11
  "Language: \n"
12
  "X-Generator: Loco https://localise.biz/\n"
13
  "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;"
14
 
15
- #: common.php:9 v2/App/Controllers/Admin/Tabs/Statistics.php:121
16
- #: v2/App/Controllers/Admin/WDRAjax.php:69
17
- #: v2/App/Controllers/Admin/WDRAjax.php:72
18
- msgid "Authentication required"
19
- msgstr ""
20
-
21
- #: common.php:17 v2/App/Controllers/Admin/WDRAjax.php:782
22
- msgid "Invalid request"
23
- msgstr ""
24
-
25
- #: common.php:28
26
- msgid "Discount Rules 2.0 requires minimum PHP version of "
27
- msgstr ""
28
-
29
- #: common.php:32
30
- msgid "Discount Rules 2.0 requires at least Woocommerce"
31
- msgstr ""
32
-
33
- #: common.php:62
34
- msgid ""
35
- "<p>Since 2.0, you need BOTH Core and Pro (2.0) packages installed and "
36
- "activated.</p>"
37
- msgstr ""
38
-
39
- #: common.php:63
40
- msgid "<p><b>Why we made this change?</b></p>"
41
- msgstr ""
42
-
43
- #: common.php:64
44
- msgid ""
45
- "<p>This arrangement is to avoid the confusion in the installation and "
46
- "upgrade process. Many users first install the core free version. Then "
47
- "purchase the PRO version and try to install it over the free version. Since "
48
- "both free and pro packages have same names, wordpress asks them to uninstall "
49
- "free and then install pro. As you can see, this is quite confusing for the "
50
- "end users.</p>"
51
- msgstr ""
52
-
53
- #: common.php:65
54
- msgid ""
55
- "<p>As a result, starting from 2.0, we now have two packs: 1. Core 2. PRO.</p>"
56
- msgstr ""
57
-
58
- #: common.php:66
59
- msgid "Download and Install"
60
- msgstr ""
61
-
62
- #: common.php:69
63
- msgid ""
64
- "Since 2.0, you need BOTH Core and Pro (2.0) packages installed and "
65
- "activated. Please download the Pro 2.0 pack from My Downloads page in our "
66
- "site, install and activate it. <a href=\"https://docs.flycart.org/en/"
67
- "articles/4006520-switching-to-2-0-from-v1-x-versions?utm_source=woo-discount-"
68
- "rules-v2&utm_campaign=doc&utm_medium=text-click&utm_content=switch_to_v2\" "
69
- "target=\"_blank\">Here is a guide and video tutorial</a>"
70
- msgstr ""
71
-
72
- #: common.php:92
73
- msgid "Discount Rules V2 comes with a better UI and advanced options."
74
- msgstr ""
75
-
76
- #: common.php:93
77
- msgid "Switch to v2"
78
- msgstr ""
79
-
80
- #: common.php:96
81
- msgid "Would you like to switch to older Woo Discount Rules?"
82
- msgstr ""
83
-
84
- #: common.php:97
85
- msgid "Click here to Switch back"
86
- msgstr ""
87
-
88
- #: common.php:116
89
- msgid "Install 2.0 Pro package"
90
- msgstr ""
91
-
92
- #: common.php:143
93
- msgid "Switch back to Discount Rules 1.x"
94
- msgstr ""
95
-
96
- #: common.php:230
97
- msgid ""
98
- "This plugin can not be activated because it requires minimum PHP version of "
99
- msgstr ""
100
-
101
- #: common.php:233
102
- msgid ""
103
- "Woocommerce must installed and activated in-order to use Advanced woo "
104
- "discount rules!"
105
- msgstr ""
106
-
107
- #: common.php:236
108
- msgid " Advanced woo discount rules requires at least Woocommerce"
109
- msgstr ""
110
-
111
- #: updater.php:52
112
- msgid ""
113
- "Please download the Pro 2.0 pack from My Downloads page in our site, install "
114
- "and activate it. <a href=\"https://docs.flycart.org/en/collections/2195266?"
115
- "utm_source=woo-discount-rules-v2&utm_campaign=doc&utm_medium=text-"
116
- "click&utm_content=documentation\" target=\"_blank\">Here is a guide and "
117
- "video tutorial</a>"
118
- msgstr ""
119
-
120
- #: updater.php:55
121
- msgid "Redirecting to v2 please wait.."
122
- msgstr ""
123
-
124
- #: updater.php:143 updater.php:308 v1/helper/purchase.php:62
125
- #: v1/helper/purchase.php:66 v1/helper/purchase.php:134
126
- #: v1/helper/purchase.php:137 v1/helper/purchase.php:175
127
- msgid "Please enter a valid license key"
128
- msgstr ""
129
-
130
- #: updater.php:146 v1/helper/purchase.php:184
131
- msgid "License key check : Passed."
132
- msgstr ""
133
-
134
- #: updater.php:148 v1/helper/purchase.php:188 v1/view/settings_general.php:32
135
- msgid "License key seems to be Invalid. Please enter a valid license key"
136
- msgstr ""
137
-
138
- #: updater.php:309 v1/helper/purchase.php:62 v1/helper/purchase.php:66
139
- #: v1/helper/purchase.php:134 v1/helper/purchase.php:137
140
- msgid "our website"
141
- msgstr ""
142
-
143
- #: updater.php:313
144
- #, php-format
145
- msgid "License key for the %s seems invalid. %s, you can get it from %s"
146
- msgstr ""
147
-
148
- #: updater.php:317
149
- #, php-format
150
- msgid "License key for the %s is not entered. %s, you can get it from %s"
151
- msgstr ""
152
-
153
- #: v1/helper/general-helper.php:48 v2/App/Controllers/Admin/Settings.php:329
154
- msgid "Guest"
155
- msgstr ""
156
-
157
- #: v1/helper/general-helper.php:617
158
- msgid "Start date and time is set in the future date"
159
- msgstr ""
160
-
161
- #: v1/helper/general-helper.php:620
162
- msgid "Validity expired"
163
- msgstr ""
164
-
165
- #: v1/helper/general-helper.php:637
166
- msgid "Will run in future"
167
- msgstr ""
168
-
169
- #: v1/helper/general-helper.php:640
170
- msgid "Not running - validity expired"
171
- msgstr ""
172
-
173
- #: v1/helper/general-helper.php:657
174
- msgid "Running"
175
- msgstr ""
176
-
177
- #: v1/helper/general-helper.php:662
178
- msgid "Your server current date and time: "
179
- msgstr ""
180
-
181
- #: v1/helper/general-helper.php:797
182
- #: v2/App/Views/Admin/Rules/Conditions/Main.php:11
183
- #: v2/App/Views/Admin/Rules/Manage.php:181
184
- #: v2/App/Views/Admin/Rules/Manage.php:182
185
- #: v2/App/Views/Admin/Rules/Manage.php:183
186
- #: v2/App/Views/Admin/Rules/Manage.php:184
187
- #: v2/App/Views/Admin/Rules/Manage.php:185
188
- #: v2/App/Views/Admin/Rules/Manage.php:186
189
- #: v2/App/Views/Admin/Rules/Manage.php:187
190
- #: v2/App/Views/Admin/Tabs/settings.php:24
191
- #: v2/App/Views/Admin/Tabs/settings.php:65
192
- #: v2/App/Views/Admin/Tabs/settings.php:138
193
- #: v2/App/Views/Admin/Tabs/settings.php:204
194
- #: v2/App/Views/Admin/Tabs/settings.php:275
195
- #: v2/App/Views/Admin/Tabs/settings.php:394
196
- #: v2/App/Views/Admin/Tabs/settings.php:478
197
- msgid "Read Docs"
198
- msgstr ""
199
-
200
- #: v1/helper/general-helper.php:1034 v1/view/view-cart-rules.php:697
201
- #: v1/view/view-pricing-rules.php:433 v2/App/Helpers/Woocommerce.php:1558
202
- msgid "Coupon already exists in WooCommerce. Please select another name"
203
- msgstr ""
204
-
205
- #: v1/helper/general-helper.php:1266 v2/App/Helpers/Helper.php:325
206
- msgid "Invalid token"
207
- msgstr ""
208
-
209
- #: v1/helper/purchase.php:25 v1/view/includes/cart-menu.php:5
210
- #: v1/view/includes/menu.php:6 v1/view/includes/sub-menu.php:5
211
- #: v2/App/Controllers/Admin/Settings.php:41
212
- #: v2/App/Controllers/Admin/Settings.php:42
213
- msgid "Woo Discount Rules"
214
- msgstr ""
215
-
216
- #: v1/helper/purchase.php:62 v1/helper/purchase.php:134
217
- msgid "The license key for "
218
- msgstr ""
219
-
220
- #: v1/helper/purchase.php:62 v1/helper/purchase.php:134
221
- msgid "seems invalid."
222
- msgstr ""
223
-
224
- #: v1/helper/purchase.php:62 v1/helper/purchase.php:66
225
- #: v1/helper/purchase.php:134 v1/helper/purchase.php:137
226
- msgid "You can get it from"
227
- msgstr ""
228
-
229
- #: v1/helper/purchase.php:66 v1/helper/purchase.php:137
230
- msgid "License key for the "
231
- msgstr ""
232
-
233
- #: v1/helper/purchase.php:66 v1/helper/purchase.php:137
234
- msgid "is not entered."
235
- msgstr ""
236
-
237
- #: v1/helper/purchase.php:73
238
- msgid ": You are using CORE version. Please Update to PRO version."
239
- msgstr ""
240
-
241
- #: v1/helper/purchase.php:97
242
- msgid "-PRO-"
243
- msgstr ""
244
-
245
- #: v1/helper/purchase.php:106
246
- msgid "Pro"
247
- msgstr ""
248
-
249
- #: v1/helper/purchase.php:108
250
- msgid "Core"
251
- msgstr ""
252
-
253
- #: v1/helper/woo-function.php:485 v1/helper/woo-function.php:495
254
- msgid "Search for a product&hellip;"
255
- msgstr ""
256
-
257
- #: v1/helper/woo-function.php:528 v1/helper/woo-function.php:540
258
- msgid "Search for a user&hellip;"
259
- msgstr ""
260
-
261
- #: v1/includes/advanced/free_shipping_method.php:16
262
- msgid "WooDiscount Free Shipping"
263
- msgstr ""
264
-
265
- #: v1/includes/advanced/free_shipping_method.php:17
266
- msgid "Custom Shipping Method for Woocommerce Discount Rules"
267
- msgstr ""
268
-
269
- #: v1/includes/advanced/free_shipping_method.php:68
270
- #: v1/view/documentation.php:63 v1/view/settings_cart_rules.php:126
271
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:197
272
- #: v2/App/Views/Admin/Tabs/help.php:112
273
- msgid "Free Shipping"
274
- msgstr ""
275
-
276
- #: v1/includes/advanced/free_shipping_method.php:73
277
- #: v1/includes/discount-base.php:1128 v1/view/cart-rules.php:135
278
- #: v1/view/pricing-rules.php:165 v1/view/settings_promotion.php:65
279
- #: v1/view/settings_promotion.php:100 v2/App/Controllers/Admin/Settings.php:439
280
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:77
281
- msgid "Enable"
282
- msgstr ""
283
-
284
- #: v1/includes/advanced/free_shipping_method.php:75
285
- msgid "Enable this shipping."
286
- msgstr ""
287
-
288
- #: v1/includes/advanced/free_shipping_method.php:80
289
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:105
290
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:331
291
- msgid "Title"
292
- msgstr ""
293
-
294
- #: v1/includes/advanced/free_shipping_method.php:82
295
- msgid "Title to be display on site"
296
- msgstr ""
297
-
298
- #: v1/includes/cart-rules.php:116 v1/includes/pricing-rules.php:120
299
- msgid "Saved successfully"
300
- msgstr ""
301
-
302
- #: v1/includes/cart-rules.php:187 v1/includes/pricing-rules.php:153
303
- msgid "Failed to save"
304
- msgstr ""
305
-
306
- #: v1/includes/discount-base.php:207 v1/view/cart-rules.php:164
307
- #: v1/view/pricing-rules.php:194 v2/App/Controllers/Admin/Settings.php:438
308
- msgid "Active"
309
- msgstr ""
310
-
311
- #: v1/includes/discount-base.php:209 v1/view/cart-rules.php:166
312
- #: v1/view/pricing-rules.php:196 v1/view/settings_cart_rules.php:95
313
- #: v1/view/settings_cart_rules.php:102 v1/view/settings_price_rules.php:169
314
- #: v1/view/settings_promotion.php:22 v1/view/settings_promotion.php:62
315
- #: v1/view/settings_promotion.php:97 v1/view/settings_promotion.php:132
316
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:252
317
- #: v2/App/Views/Admin/Tabs/settings.php:398
318
- msgid "Disabled"
319
- msgstr ""
320
-
321
- #: v1/includes/discount-base.php:572
322
- msgid "Cache cleared successfully"
323
- msgstr ""
324
-
325
- #: v1/includes/discount-base.php:574
326
- msgid "Failed to clear cache"
327
- msgstr ""
328
-
329
- #: v1/includes/discount-base.php:691 v1/includes/discount-base.php:726
330
- msgid "Failed to do action"
331
- msgstr ""
332
-
333
- #: v1/includes/discount-base.php:730
334
- msgid "Disabled successfully"
335
- msgstr ""
336
-
337
- #: v1/includes/discount-base.php:733
338
- msgid "Deleted successfully"
339
- msgstr ""
340
-
341
- #: v1/includes/discount-base.php:736
342
- msgid "Enabled successfully"
343
- msgstr ""
344
-
345
- #: v1/includes/discount-base.php:762 v1/includes/discount-base.php:763
346
- #: v1/includes/discount-base.php:780
347
- msgid "copy"
348
- msgstr ""
349
-
350
- #: v1/includes/discount-base.php:788
351
- msgid "Duplicate rule created successfully"
352
- msgstr ""
353
-
354
- #: v1/includes/discount-base.php:795
355
- msgid "Failed to create duplicate rule"
356
- msgstr ""
357
-
358
- #: v1/includes/discount-base.php:1082
359
- msgid "Please fill this field"
360
- msgstr ""
361
-
362
- #: v1/includes/discount-base.php:1083
363
- msgid "Please Enter the Rule Name to Create / Save."
364
- msgstr ""
365
-
366
- #: v1/includes/discount-base.php:1084
367
- msgid "Saving..."
368
- msgstr ""
369
-
370
- #: v1/includes/discount-base.php:1085 v1/view/view-cart-rules.php:55
371
- #: v1/view/view-pricing-rules.php:37
372
- msgid "Save Rule"
373
- msgstr ""
374
-
375
- #: v1/includes/discount-base.php:1086
376
- msgid "Please enter a Key"
377
- msgstr ""
378
-
379
- #: v1/includes/discount-base.php:1087 v1/view/view-pricing-rules.php:739
380
- msgid "Min Quantity"
381
- msgstr ""
382
-
383
- #: v1/includes/discount-base.php:1088 v1/view/view-pricing-rules.php:746
384
- msgid "Max Quantity"
385
- msgstr ""
386
-
387
- #: v1/includes/discount-base.php:1089 v1/view/view-pricing-rules.php:654
388
- #: v1/view/view-pricing-rules.php:657 v1/view/view-pricing-rules.php:677
389
- #: v2/App/Controllers/Admin/Settings.php:456
390
- msgid "Quantity"
391
- msgstr ""
392
-
393
- #: v1/includes/discount-base.php:1090 v1/view/view-cart-rules.php:92
394
- #: v1/view/view-pricing-rules.php:74 v1/view/view-pricing-rules.php:744
395
- #: v1/view/view-pricing-rules.php:897 v1/view/view-pricing-rules.php:920
396
- #: v1/view/view-pricing-rules.php:927
397
- msgid "ex. 1"
398
- msgstr ""
399
-
400
- #: v1/includes/discount-base.php:1091 v1/view/view-pricing-rules.php:965
401
- msgid "ex. 10"
402
- msgstr ""
403
-
404
- #: v1/includes/discount-base.php:1092 v1/view/view-pricing-rules.php:751
405
- #: v1/view/view-pricing-rules.php:879
406
- msgid "ex. 50"
407
- msgstr ""
408
-
409
- #: v1/includes/discount-base.php:1093
410
- msgid "Search for a user"
411
- msgstr ""
412
-
413
- #: v1/includes/discount-base.php:1094 v1/view/view-pricing-rules.php:752
414
- msgid "Adjustment Type"
415
- msgstr ""
416
-
417
- #: v1/includes/discount-base.php:1095 v1/view/view-pricing-rules.php:954
418
- #: v2/App/Controllers/Admin/Settings.php:459
419
- msgid "Discount percentage"
420
- msgstr ""
421
-
422
- #: v1/includes/discount-base.php:1096 v1/view/view-cart-rules.php:776
423
- #: v1/view/view-pricing-rules.php:786
424
- msgid "Percentage Discount"
425
- msgstr ""
426
-
427
- #: v1/includes/discount-base.php:1097 v1/view/view-cart-rules.php:782
428
- #: v1/view/view-cart-rules.php:784 v1/view/view-pricing-rules.php:794
429
- #: v1/view/view-pricing-rules.php:796
430
- msgid "Price Discount"
431
- msgstr ""
432
-
433
- #: v1/includes/discount-base.php:1098
434
- msgid "BOGO Product Discount"
435
- msgstr ""
436
-
437
- #: v1/includes/discount-base.php:1099
438
- msgid "Product Discount - Not support for subtotal based rule"
439
- msgstr ""
440
-
441
- #: v1/includes/discount-base.php:1100 v1/view/view-cart-rules.php:462
442
- #: v1/view/view-pricing-rules.php:874 v1/view/view-pricing-rules.php:1014
443
- #: v2/App/Views/Admin/Rules/Discounts/Cart.php:33
444
- #: v2/App/Views/Admin/Rules/Discounts/simple.php:31
445
- msgid "Value"
446
- msgstr ""
447
-
448
- #: v1/includes/discount-base.php:1101 v1/view/view-pricing-rules.php:882
449
- msgid "receive discount for"
450
- msgstr ""
451
-
452
- #: v1/includes/discount-base.php:1102 v1/view/view-pricing-rules.php:884
453
- msgid "Auto add all selected products"
454
- msgstr ""
455
-
456
- #: v1/includes/discount-base.php:1103 v1/view/view-pricing-rules.php:885
457
- msgid "Same product"
458
- msgstr ""
459
-
460
- #: v1/includes/discount-base.php:1104
461
- msgid "Any one cheapest from selected"
462
- msgstr ""
463
-
464
- #: v1/includes/discount-base.php:1105
465
- msgid "Any one cheapest from all products"
466
- msgstr ""
467
-
468
- #: v1/includes/discount-base.php:1106 v1/view/view-pricing-rules.php:854
469
- #: v1/view/view-pricing-rules.php:856
470
- msgid "Buy X Get Y - Selected Categories (Cheapest in cart)"
471
- msgstr ""
472
-
473
- #: v1/includes/discount-base.php:1107 v1/view/view-pricing-rules.php:844
474
- #: v1/view/view-pricing-rules.php:846
475
- msgid "Buy X Get Y - Selected item(s) (Cheapest in cart)"
476
- msgstr ""
477
-
478
- #: v1/includes/discount-base.php:1108 v1/view/view-pricing-rules.php:864
479
- #: v1/view/view-pricing-rules.php:866
480
- msgid "Buy X get Y - Cheapest among all items in cart"
481
- msgstr ""
482
-
483
- #: v1/includes/discount-base.php:1109 v1/view/view-pricing-rules.php:892
484
- msgid "Free quantity"
485
- msgstr ""
486
-
487
- #: v1/includes/discount-base.php:1110 v1/view/view-pricing-rules.php:892
488
- msgid "Number of quantity(ies) in each selected product(s)"
489
- msgstr ""
490
-
491
- #: v1/includes/discount-base.php:1111 v1/view/view-pricing-rules.php:912
492
- msgid "Fixed item count (not recommended)"
493
- msgstr ""
494
-
495
- #: v1/includes/discount-base.php:1112 v1/view/view-pricing-rules.php:911
496
- msgid "Dynamic item count"
497
- msgstr ""
498
-
499
- #: v1/includes/discount-base.php:1113 v1/view/view-pricing-rules.php:914
500
- msgid ""
501
- "Fixed item count - You need to provide item count manually. Dynamic item "
502
- "count - System will choose dynamically based on cart"
503
- msgstr ""
504
-
505
- #: v1/includes/discount-base.php:1114 v1/view/view-pricing-rules.php:915
506
- msgid "Item count"
507
- msgstr ""
508
-
509
- #: v1/includes/discount-base.php:1115 v1/view/view-pricing-rules.php:915
510
- msgid "Discount for number of item(s) in cart"
511
- msgstr ""
512
-
513
- #: v1/includes/discount-base.php:1116 v1/view/view-pricing-rules.php:922
514
- msgid "Discount for number of quantity(ies)"
515
- msgstr ""
516
-
517
- #: v1/includes/discount-base.php:1117 v1/view/view-pricing-rules.php:922
518
- msgid "Item quantity"
519
- msgstr ""
520
-
521
- #: v1/includes/discount-base.php:1118
522
- msgid "Search for a products"
523
- msgstr ""
524
-
525
- #: v1/includes/discount-base.php:1119
526
- msgid "and"
527
- msgstr ""
528
-
529
- #: v1/includes/discount-base.php:1120 v1/view/view-pricing-rules.php:956
530
- msgid "100% percent"
531
- msgstr ""
532
-
533
- #: v1/includes/discount-base.php:1121 v1/view/view-pricing-rules.php:957
534
- msgid "Limited percent"
535
- msgstr ""
536
-
537
- #: v1/includes/discount-base.php:1122
538
- msgid "Percentage"
539
- msgstr ""
540
-
541
- #: v1/includes/discount-base.php:1123
542
- msgid "as discount"
543
- msgstr ""
544
-
545
- #: v1/includes/discount-base.php:1124 v1/view/view-cart-rules.php:701
546
- #: v1/view/view-pricing-rules.php:974
547
- msgid "Remove"
548
- msgstr ""
549
-
550
- #: v1/includes/discount-base.php:1125 v1/view/cart-rules.php:187
551
- #: v1/view/pricing-rules.php:217 v1/view/view-pricing-rules.php:971
552
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:304
553
- msgid "Duplicate"
554
- msgstr ""
555
-
556
- #: v1/includes/discount-base.php:1126
557
- msgid "none"
558
- msgstr ""
559
-
560
- #: v1/includes/discount-base.php:1127
561
- msgid "Are you sure to remove this ?"
562
- msgstr ""
563
-
564
- #: v1/includes/discount-base.php:1129 v1/view/cart-rules.php:132
565
- #: v1/view/pricing-rules.php:162 v2/App/Controllers/Admin/Settings.php:437
566
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:78
567
- msgid "Disable"
568
- msgstr ""
569
-
570
- #: v1/includes/discount-base.php:1130
571
- msgid "Are you sure to remove ?"
572
- msgstr ""
573
-
574
- #: v1/includes/discount-base.php:1131 v1/view/view-cart-rules.php:172
575
- msgid "Type"
576
- msgstr ""
577
-
578
- #: v1/includes/discount-base.php:1132 v1/view/view-cart-rules.php:176
579
- msgid "Cart Subtotal"
580
- msgstr ""
581
-
582
- #: v1/includes/discount-base.php:1133 v1/view/view-cart-rules.php:179
583
- msgid "Subtotal at least"
584
- msgstr ""
585
-
586
- #: v1/includes/discount-base.php:1134 v1/view/view-cart-rules.php:183
587
- msgid "Subtotal less than"
588
- msgstr ""
589
-
590
- #: v1/includes/discount-base.php:1135 v1/view/view-cart-rules.php:186
591
- msgid "Cart Item Count"
592
- msgstr ""
593
-
594
- #: v1/includes/discount-base.php:1136 v1/view/view-cart-rules.php:189
595
- msgid "Number of line items in the cart (not quantity) at least"
596
- msgstr ""
597
-
598
- #: v1/includes/discount-base.php:1137 v1/view/view-cart-rules.php:193
599
- msgid "Number of line items in the cart (not quantity) less than"
600
- msgstr ""
601
-
602
- #: v1/includes/discount-base.php:1138 v1/view/view-cart-rules.php:196
603
- msgid "Quantity Sum"
604
- msgstr ""
605
-
606
- #: v1/includes/discount-base.php:1139 v1/view/view-cart-rules.php:202
607
- #: v1/view/view-cart-rules.php:205
608
- msgid "Total number of quantities in the cart at least"
609
- msgstr ""
610
-
611
- #: v1/includes/discount-base.php:1140 v1/view/view-cart-rules.php:214
612
- #: v1/view/view-cart-rules.php:217
613
- msgid "Total number of quantities in the cart less than"
614
- msgstr ""
615
-
616
- #: v1/includes/discount-base.php:1141 v1/view/view-cart-rules.php:246
617
- msgid "Categories in cart"
618
- msgstr ""
619
-
620
- #: v1/includes/discount-base.php:1142 v1/view/view-cart-rules.php:252
621
- msgid "Including sub-categories in cart"
622
- msgstr ""
623
-
624
- #: v1/includes/discount-base.php:1143 v1/view/view-cart-rules.php:267
625
- msgid "Customer Details (must be logged in)"
626
- msgstr ""
627
-
628
- #: v1/includes/discount-base.php:1144 v1/view/view-cart-rules.php:273
629
- #: v1/view/view-cart-rules.php:275
630
- msgid "User in list"
631
- msgstr ""
632
-
633
- #: v1/includes/discount-base.php:1145 v1/view/view-cart-rules.php:283
634
- #: v1/view/view-cart-rules.php:285
635
- msgid "User role in list"
636
- msgstr ""
637
-
638
- #: v1/includes/discount-base.php:1146 v1/view/view-cart-rules.php:349
639
- #: v1/view/view-cart-rules.php:351
640
- msgid "Shipping country in list"
641
- msgstr ""
642
-
643
- #: v1/includes/discount-base.php:1147 v1/view/view-cart-rules.php:289
644
- msgid "Customer Email"
645
- msgstr ""
646
-
647
- #: v1/includes/discount-base.php:1148
648
- msgid "Email with TLD (Ege: edu)"
649
- msgstr ""
650
-
651
- #: v1/includes/discount-base.php:1149 v1/view/view-cart-rules.php:305
652
- #: v1/view/view-cart-rules.php:307
653
- msgid "Email with Domain (Eg: gmail.com)"
654
- msgstr ""
655
-
656
- #: v1/includes/discount-base.php:1150 v1/view/view-cart-rules.php:311
657
- msgid "Customer Billing Details"
658
- msgstr ""
659
-
660
- #: v1/includes/discount-base.php:1151 v1/view/view-cart-rules.php:317
661
- #: v1/view/view-cart-rules.php:319
662
- msgid "Billing city"
663
- msgstr ""
664
-
665
- #: v1/includes/discount-base.php:1152 v1/view/view-cart-rules.php:323
666
- msgid "Customer Shipping Details"
667
- msgstr ""
668
-
669
- #: v1/includes/discount-base.php:1153 v1/view/view-cart-rules.php:339
670
- #: v1/view/view-cart-rules.php:341
671
- msgid "Shipping state"
672
- msgstr ""
673
-
674
- #: v1/includes/discount-base.php:1154 v1/view/view-cart-rules.php:329
675
- #: v1/view/view-cart-rules.php:331
676
- msgid "Shipping city"
677
- msgstr ""
678
-
679
- #: v1/includes/discount-base.php:1155 v1/view/view-cart-rules.php:359
680
- #: v1/view/view-cart-rules.php:361
681
- msgid "Shipping zip code"
682
- msgstr ""
683
-
684
- #: v1/includes/discount-base.php:1156 v1/view/view-cart-rules.php:365
685
- #: v1/view/view-pricing-rules.php:536 v2/App/Helpers/Helper.php:165
686
- #: v2/App/Helpers/ProOptions.php:192 v2/App/Helpers/ProOptions.php:200
687
- #: v2/App/Helpers/ProOptions.php:208 v2/App/Helpers/ProOptions.php:216
688
- #: v2/App/Helpers/ProOptions.php:224 v2/App/Helpers/ProOptions.php:232
689
- msgid "Purchase History"
690
- msgstr ""
691
-
692
- #: v1/includes/discount-base.php:1157 v1/view/view-cart-rules.php:381
693
- #: v1/view/view-cart-rules.php:383 v1/view/view-pricing-rules.php:551
694
- msgid "Purchased amount"
695
- msgstr ""
696
-
697
- #: v1/includes/discount-base.php:1158 v1/view/view-cart-rules.php:391
698
- #: v1/view/view-cart-rules.php:393 v1/view/view-pricing-rules.php:552
699
- msgid "Number of previous orders made"
700
- msgstr ""
701
-
702
- #: v1/includes/discount-base.php:1159 v1/view/view-cart-rules.php:401
703
- #: v1/view/view-cart-rules.php:403 v1/view/view-pricing-rules.php:553
704
- msgid "Number of previous orders made with following products"
705
- msgstr ""
706
-
707
- #: v1/includes/discount-base.php:1160 v1/view/view-cart-rules.php:411
708
- #: v1/view/view-cart-rules.php:413 v1/view/view-pricing-rules.php:554
709
- msgid "Number of quantity(s) in previous orders made with following products"
710
- msgstr ""
711
-
712
- #: v1/includes/discount-base.php:1161 v1/view/view-cart-rules.php:417
713
- msgid "Coupon applied"
714
- msgstr ""
715
-
716
- #: v1/includes/discount-base.php:1162 v1/view/view-cart-rules.php:423
717
- #: v1/view/view-cart-rules.php:425 v1/view/view-pricing-rules.php:410
718
- msgid "Create your own coupon"
719
- msgstr ""
720
-
721
- #: v1/includes/discount-base.php:1163 v1/view/view-cart-rules.php:433
722
- #: v1/view/view-cart-rules.php:435
723
- msgid "Atleast any one (Select from WooCommerce)"
724
- msgstr ""
725
-
726
- #: v1/includes/discount-base.php:1164 v1/view/view-cart-rules.php:443
727
- #: v1/view/view-cart-rules.php:445
728
- msgid "All selected (Select from WooCommerce)"
729
- msgstr ""
730
-
731
- #: v1/includes/discount-base.php:1165 v1/view/view-cart-rules.php:647
732
- #: v1/view/view-pricing-rules.php:590
733
- msgid "Greater than or equal to"
734
- msgstr ""
735
-
736
- #: v1/includes/discount-base.php:1166 v1/view/view-cart-rules.php:648
737
- #: v1/view/view-pricing-rules.php:591 v1/view/view-pricing-rules.php:650
738
- msgid "Less than or equal to"
739
- msgstr ""
740
-
741
- #: v1/includes/discount-base.php:1167 v1/view/view-cart-rules.php:650
742
- #: v1/view/view-pricing-rules.php:594
743
- msgid "and the order status should be"
744
- msgstr ""
745
-
746
- #: v1/includes/discount-base.php:1168 v1/view/cart-rules.php:116
747
- #: v1/view/cart-rules.php:226 v1/view/pricing-rules.php:146
748
- #: v1/view/pricing-rules.php:256 v1/view/view-cart-rules.php:700
749
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:129
750
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:355
751
- msgid "Action"
752
- msgstr ""
753
-
754
- #: v1/includes/discount-base.php:1169 v1/view/settings.php:33
755
- #: v1/view/settings_taxonomy.php:21 v2/App/Views/Admin/Rules/Manage.php:134
756
- msgid "Save"
757
- msgstr ""
758
-
759
- #: v1/includes/discount-base.php:1170
760
- msgid "Saved Successfully!"
761
- msgstr ""
762
-
763
- #: v1/includes/discount-base.php:1171 v1/view/view-cart-rules.php:491
764
- #: v1/view/view-cart-rules.php:559 v1/view/view-cart-rules.php:579
765
- #: v1/view/view-cart-rules.php:600 v1/view/view-cart-rules.php:655
766
- #: v1/view/view-pricing-rules.php:238 v1/view/view-pricing-rules.php:254
767
- #: v1/view/view-pricing-rules.php:602 v1/view/view-pricing-rules.php:686
768
- #: v1/view/view-pricing-rules.php:942
769
- msgid "None selected"
770
- msgstr ""
771
-
772
- #: v1/includes/discount-base.php:1172 v1/view/view-cart-rules.php:258
773
- msgid "In each category"
774
- msgstr ""
775
-
776
- #: v1/includes/discount-base.php:1173 v1/view/settings_price_rules.php:208
777
- #: v1/view/settings_price_rules.php:226 v1/view/settings_price_rules.php:244
778
- #: v1/view/settings_price_rules.php:262
779
- #: v2/App/Views/Admin/Tabs/settings.php:639
780
- msgid "Show"
781
- msgstr ""
782
-
783
- #: v1/includes/discount-base.php:1174 v1/view/template/sidebar.php:12
784
- msgid "Hide"
785
- msgstr ""
786
-
787
- #: v1/includes/discount-base.php:1175
788
- msgid "Please select at least one rule"
789
- msgstr ""
790
-
791
- #: v1/includes/discount-base.php:1176
792
- msgid "Please select an action to apply"
793
- msgstr ""
794
-
795
- #: v1/includes/discount-base.php:1177
796
- msgid "Are you sure to remove the selected rules"
797
- msgstr ""
798
-
799
- #: v1/includes/discount-base.php:1178 v1/view/view-pricing-rules.php:931
800
- msgid "Choose product(s)"
801
- msgstr ""
802
-
803
- #: v1/includes/discount-base.php:1179 v1/view/view-pricing-rules.php:941
804
- msgid "Choose category(ies)"
805
- msgstr ""
806
-
807
- #: v1/includes/discount-base.php:1180
808
- msgid "Search for a coupon"
809
- msgstr ""
810
-
811
- #: v1/includes/discount-base.php:1181 v1/view/view-pricing-rules.php:965
812
- #, php-format
813
- msgid "Enter only numeric values. Eg: <b>50</b> for 50% discount"
814
- msgstr ""
815
-
816
- #: v1/includes/discount-base.php:1182
817
- #, php-format
818
- msgid "Enter the discount price. Eg: <b>10</b> for %s discount"
819
- msgstr ""
820
-
821
- #: v1/includes/discount-base.php:1183
822
- #, php-format
823
- msgid "Enter the discounted price per unit. Eg: <b>10</b> for %s as unit price"
824
- msgstr ""
825
-
826
- #: v1/includes/discount-base.php:1184
827
- #, php-format
828
- msgid ""
829
- "Enter the price for selected quantity. Eg: <b>10</b> then %s as total price "
830
- "for selected quantity"
831
- msgstr ""
832
-
833
- #: v1/includes/discount-base.php:1185 v1/view/view-pricing-rules.php:890
834
- msgid ""
835
- "Auto add all selected products - Automatically added to the cart <br> Same "
836
- "product - get discount in same product <br> Any one cheapest from selected - "
837
- "Get discount in one selected product <br> Any one cheapest from all products "
838
- "- Get discount in one cheapest product in cart <br> Cheapest in cart - "
839
- "selected category(ies) - cheapest product from the selected category will be "
840
- "discounted <br> Cheapest in cart - selected item(s) - get discount in chosen "
841
- "no.of quantities"
842
- msgstr ""
843
-
844
- #: v1/includes/discount-base.php:1186 v1/view/view-cart-rules.php:221
845
- #: v2/App/Controllers/Base.php:47 v2/App/Views/Admin/Rules/Filters/Main.php:68
846
- msgid "Products"
847
- msgstr ""
848
-
849
- #: v1/includes/discount-base.php:1187 v1/view/view-cart-rules.php:226
850
- msgid "Products in cart"
851
- msgstr ""
852
-
853
- #: v1/includes/discount-base.php:1188 v1/view/view-cart-rules.php:232
854
- #: v1/view/view-pricing-rules.php:273
855
- msgid "Exclude products"
856
- msgstr ""
857
-
858
- #: v1/includes/discount-base.php:1189 v1/view/view-cart-rules.php:238
859
- msgid "Exclude on sale products"
860
- msgstr ""
861
-
862
- #: v1/includes/discount-base.php:1190 v1/view/view-cart-rules.php:529
863
- msgid "This will exclude the on sale products from discount"
864
- msgstr ""
865
-
866
- #: v1/includes/discount-base.php:1191 v1/view/view-cart-rules.php:663
867
- #: v1/view/view-pricing-rules.php:609
868
- msgid "From all previous orders"
869
- msgstr ""
870
-
871
- #: v1/includes/discount-base.php:1192 v1/view/view-cart-rules.php:664
872
- #: v1/view/view-pricing-rules.php:610
873
- msgid "Last 7 days"
874
- msgstr ""
875
-
876
- #: v1/includes/discount-base.php:1193 v1/view/view-cart-rules.php:665
877
- #: v1/view/view-pricing-rules.php:611
878
- msgid "Last 14 days"
879
- msgstr ""
880
-
881
- #: v1/includes/discount-base.php:1194 v1/view/view-cart-rules.php:666
882
- #: v1/view/view-pricing-rules.php:612
883
- msgid "Last 30 days"
884
- msgstr ""
885
-
886
- #: v1/includes/discount-base.php:1195 v1/view/view-cart-rules.php:667
887
- #: v1/view/view-pricing-rules.php:613
888
- msgid "Last 60 days"
889
- msgstr ""
890
-
891
- #: v1/includes/discount-base.php:1196 v1/view/view-cart-rules.php:668
892
- #: v1/view/view-pricing-rules.php:614
893
- msgid "Last 90 days"
894
- msgstr ""
895
-
896
- #: v1/includes/discount-base.php:1197 v1/view/view-cart-rules.php:669
897
- #: v1/view/view-pricing-rules.php:615
898
- msgid "Last 180 days"
899
- msgstr ""
900
-
901
- #: v1/includes/discount-base.php:1198 v1/view/view-cart-rules.php:670
902
- #: v1/view/view-pricing-rules.php:616
903
- msgid "Last 1 year"
904
- msgstr ""
905
-
906
- #: v1/includes/discount-base.php:1199 v1/view/view-cart-rules.php:671
907
- #: v1/view/view-pricing-rules.php:617
908
- msgid "Custom"
909
- msgstr ""
910
-
911
- #: v1/includes/discount-base.php:1200 v1/view/view-cart-rules.php:674
912
- #: v1/view/view-pricing-rules.php:621
913
- msgid "in days"
914
- msgstr ""
915
-
916
- #: v1/includes/discount-base.php:1201 v1/view/view-pricing-rules.php:804
917
- #: v1/view/view-pricing-rules.php:806
918
- msgid "Fixed Price Per Unit"
919
- msgstr ""
920
-
921
- #: v1/includes/discount-base.php:1202 v1/view/view-pricing-rules.php:814
922
- #: v1/view/view-pricing-rules.php:816
923
- msgid "Bundle (Set) Discount"
924
- msgstr ""
925
-
926
- #: v1/includes/discount-base.php:1203 v1/view/view-cart-rules.php:371
927
- #: v1/view/view-cart-rules.php:373 v1/view/view-pricing-rules.php:550
928
- msgid "First Order discount"
929
- msgstr ""
930
-
931
- #: v1/includes/discount-base.php:1204 v1/view/view-cart-rules.php:264
932
- msgid "Exclude categories in cart"
933
- msgstr ""
934
-
935
- #: v1/includes/discount-base.php:1206 v1/view/view-pricing-rules.php:824
936
- #: v1/view/view-pricing-rules.php:826
937
- msgid "Buy X get X (Same product)"
938
- msgstr ""
939
-
940
- #: v1/includes/discount-base.php:1207 v1/view/view-pricing-rules.php:834
941
- #: v1/view/view-pricing-rules.php:836
942
- msgid "Buy X get Y (Auto add all selected products)"
943
- msgstr ""
944
-
945
- #: v1/includes/discount-base.php:1208
946
- #, php-format
947
- msgid ""
948
- "The customer gets the same product free (Buy 2 get 1 free) or a limited "
949
- "percentage (Buy 2 and get 1 at 50% discount)"
950
- msgstr ""
951
-
952
- #: v1/includes/discount-base.php:1209
953
- msgid ""
954
- "Provide a specific product free when purchasing another product."
955
- "<br><br>Example: Buy Product A and get Product B free. Product B will be "
956
- "automatically added to cart."
957
- msgstr ""
958
-
959
- #: v1/includes/discount-base.php:1210
960
- msgid ""
961
- "Provide a specific product free when purchasing another product."
962
- "<br><br>Instead of automatically adding, if you wish to choose the free "
963
- "product, you can select this option.<br><br>Note : Product will be "
964
- "discounted only when the user manually adds the product to cart."
965
- msgstr ""
966
-
967
- #: v1/includes/discount-base.php:1211
968
- msgid ""
969
- "Used to provide BOGO discount within categories.<br><br>Example 1: Buy 2 "
970
- "from Category A and get 1 free from the same Category A.<br>Example 2: Buy "
971
- "any items from Category A and get 20% (limited percent) discount on Category "
972
- "B."
973
- msgstr ""
974
-
975
- #: v1/includes/discount-base.php:1212
976
- msgid ""
977
- "This allows you to offer the cheapest product in cart for free (or at a "
978
- "limited percentage like 50%)"
979
- msgstr ""
980
-
981
- #: v1/includes/discount-base.php:1213
982
- #, php-format
983
- msgid ""
984
- "<span class=\"wdr_desc_text\">Useful for providing a discount on store wide "
985
- "or on all products.</span> <span class=\"wdr_desc_text\"> <a href=\"%s"
986
- "\">Read docs</a>.</span>"
987
- msgstr ""
988
-
989
- #: v1/includes/discount-base.php:1214
990
- #, php-format
991
- msgid ""
992
- "<span class=\"wdr_desc_text\">Useful for providing a discount on selected "
993
- "products. Check the box to count quantities together across products.</"
994
- "span><br><span class=\"wdr_desc_text\"><b>Note:</b> For variable products, "
995
- "you can auto include variants by enabling it in the settings. <a href=\"%s"
996
- "\">Read docs</a>.</span>"
997
- msgstr ""
998
-
999
- #: v1/includes/discount-base.php:1215
1000
- #, php-format
1001
- msgid ""
1002
- "<span class=\"wdr_desc_text\">Useful for providing a discount on a specific "
1003
- "category or multiple categories.</span><br><span class=\"wdr_desc_text"
1004
- "\"><b>Example:</b> 10%% discount for products from category A or category B. "
1005
- "<a href=\"%s\">Read docs</a>.</span>"
1006
- msgstr ""
1007
-
1008
- #: v1/includes/discount-base.php:1216
1009
- #, php-format
1010
- msgid ""
1011
- "<span class=\"wdr_desc_text\">Useful to offer discount based on attributes. "
1012
- "<b>Example:</b> 10%% discount on Small Size T-shirts.</span><br><span class="
1013
- "\"wdr_desc_text\"><b>Note:</b> Please make sure that the attributes are pre-"
1014
- "defined in WooCommerce -> Attributes. <a href=\"%s\">Read docs</a>.</span>"
1015
- msgstr ""
1016
-
1017
- #: v1/includes/discount-base.php:1302
1018
- #: v2/App/Controllers/ManageDiscount.php:1270
1019
- #, php-format
1020
- msgid ""
1021
- "Sorry, it is not possible to apply coupon <b>\"%s\"</b> as you already have "
1022
- "a discount applied in cart."
1023
- msgstr ""
1024
-
1025
- #: v1/includes/discount-base.php:1357 v1/view/includes/menu.php:18
1026
- #: v2/App/Controllers/Admin/Settings.php:66
1027
- #: v2/App/Controllers/Admin/Tabs/GeneralSettings.php:23
1028
- msgid "Settings"
1029
- msgstr ""
1030
-
1031
- #: v1/includes/pricing-rules.php:3209 v1/view/view-pricing-rules.php:642
1032
- msgid "Buy"
1033
- msgstr ""
1034
-
1035
- #: v1/includes/pricing-rules.php:3213
1036
- msgid " less than or equal to "
1037
- msgstr ""
1038
-
1039
- #: v1/includes/pricing-rules.php:3213 v1/includes/pricing-rules.php:3219
1040
- msgid " Quantity"
1041
- msgstr ""
1042
-
1043
- #: v1/includes/pricing-rules.php:3216
1044
- msgid " Quantity "
1045
- msgstr ""
1046
-
1047
- #: v1/includes/pricing-rules.php:3223
1048
- msgid " or more Quantity"
1049
- msgstr ""
1050
-
1051
- #: v1/includes/pricing-rules.php:3232
1052
- msgid " any "
1053
- msgstr ""
1054
-
1055
- #: v1/includes/pricing-rules.php:3232
1056
- msgid " products from "
1057
- msgstr ""
1058
-
1059
- #: v1/includes/pricing-rules.php:3239
1060
- msgid " in each products"
1061
- msgstr ""
1062
-
1063
- #: v1/includes/pricing-rules.php:3251
1064
- msgid " and get discount on "
1065
- msgstr ""
1066
-
1067
- #: v1/includes/pricing-rules.php:3254
1068
- msgid " first "
1069
- msgstr ""
1070
-
1071
- #: v1/includes/pricing-rules.php:3256 v1/includes/pricing-rules.php:3260
1072
- msgid " quantity of product(s) - "
1073
- msgstr ""
1074
-
1075
- #: v1/includes/pricing-rules.php:3258
1076
- msgid " after first "
1077
- msgstr ""
1078
-
1079
- #: v1/includes/pricing-rules.php:3276
1080
- msgid "Category(ies) "
1081
- msgstr ""
1082
-
1083
- #: v1/includes/pricing-rules.php:3347
1084
- msgid "Get "
1085
- msgstr ""
1086
-
1087
- #: v1/includes/pricing-rules.php:3349
1088
- #, php-format
1089
- msgid "% discount in "
1090
- msgstr ""
1091
-
1092
- #: v1/includes/pricing-rules.php:3352
1093
- msgid "same product"
1094
- msgstr ""
1095
-
1096
- #: v1/includes/pricing-rules.php:3354
1097
- msgid "any cheapest one from cart"
1098
- msgstr ""
1099
-
1100
- #: v1/includes/pricing-rules.php:3357
1101
- msgid "any cheapest one of "
1102
- msgstr ""
1103
-
1104
- #: v1/includes/pricing-rules.php:3362
1105
- msgid " quantity of any "
1106
- msgstr ""
1107
-
1108
- #: v1/includes/pricing-rules.php:3364
1109
- msgid " cheapest item "
1110
- msgstr ""
1111
-
1112
- #: v1/includes/pricing-rules.php:3367
1113
- msgid " quantity of cheapest item "
1114
- msgstr ""
1115
-
1116
- #: v1/includes/pricing-rules.php:3371
1117
- msgid "from the category "
1118
- msgstr ""
1119
-
1120
- #: v1/includes/pricing-rules.php:3393
1121
- #, php-format
1122
- msgid "%s for %s Quantity(s)"
1123
- msgstr ""
1124
-
1125
- #: v1/includes/pricing-rules.php:3395
1126
- #, php-format
1127
- msgid "%s as price per unit"
1128
- msgstr ""
1129
-
1130
- #: v1/includes/survey.php:82 v2/App/Helpers/SurveyForm.php:84
1131
- msgid "Please select an option"
1132
- msgstr ""
1133
-
1134
- #: v1/includes/survey.php:85 v2/App/Helpers/SurveyForm.php:87
1135
- msgid "Sending Feedback"
1136
- msgstr ""
1137
-
1138
- #: v1/includes/survey.php:239 v2/App/Helpers/SurveyForm.php:241
1139
- msgid "Upgrading to PRO."
1140
- msgstr ""
1141
-
1142
- #: v1/includes/survey.php:243 v2/App/Helpers/SurveyForm.php:245
1143
- msgid "I am switching to a different discount plugin."
1144
- msgstr ""
1145
-
1146
- #: v1/includes/survey.php:247 v2/App/Helpers/SurveyForm.php:249
1147
- msgid "I could not get my discount rule to work."
1148
- msgstr ""
1149
-
1150
- #: v1/includes/survey.php:251 v2/App/Helpers/SurveyForm.php:253
1151
- msgid "It does not meet my discount requirements."
1152
- msgstr ""
1153
-
1154
- #: v1/includes/survey.php:255 v2/App/Helpers/SurveyForm.php:257
1155
- msgid "Plugin is complex."
1156
- msgstr ""
1157
-
1158
- #: v1/includes/survey.php:259 v2/App/Helpers/SurveyForm.php:261
1159
- msgid "I'm trying to troubleshoot the plugin."
1160
- msgstr ""
1161
-
1162
- #: v1/includes/survey.php:263 v2/App/Helpers/SurveyForm.php:265
1163
- msgid "I was instructed to deactivate by Flycart Support."
1164
- msgstr ""
1165
-
1166
- #: v1/includes/survey.php:267 v2/App/Helpers/SurveyForm.php:269
1167
- msgid "I no longer use this plugin."
1168
- msgstr ""
1169
-
1170
- #: v1/includes/survey.php:271 v2/App/Helpers/SurveyForm.php:273
1171
- msgid "It's a temporary deactivation."
1172
- msgstr ""
1173
-
1174
- #: v1/includes/survey.php:275 v2/App/Helpers/SurveyForm.php:277
1175
- msgid "Other"
1176
- msgstr ""
1177
-
1178
- #: v1/includes/survey.php:277 v2/App/Helpers/SurveyForm.php:279
1179
- msgid "Please share the reason"
1180
- msgstr ""
1181
-
1182
- #: v1/includes/survey.php:287 v2/App/Helpers/SurveyForm.php:289
1183
- msgid "Quick Feedback"
1184
- msgstr ""
1185
-
1186
- #: v1/includes/survey.php:288 v2/App/Helpers/SurveyForm.php:290
1187
- msgid "Close"
1188
- msgstr ""
1189
-
1190
- #: v1/includes/survey.php:296 v2/App/Helpers/SurveyForm.php:298
1191
- #, php-format
1192
- msgid "If you have a moment, please share why you are deactivating %s:"
1193
- msgstr ""
1194
-
1195
- #: v1/includes/survey.php:297 v2/App/Helpers/SurveyForm.php:299
1196
- msgid "Discount Rules for WooCommerce"
1197
- msgstr ""
1198
-
1199
- #: v1/includes/survey.php:325 v2/App/Helpers/SurveyForm.php:327
1200
- msgid "Submit & Deactivate"
1201
- msgstr ""
1202
-
1203
- #: v1/includes/survey.php:327 v2/App/Helpers/SurveyForm.php:329
1204
- msgid "Skip & Deactivate"
1205
- msgstr ""
1206
-
1207
- #: v1/view/cart-rules.php:48
1208
- msgid "Cart Rules"
1209
- msgstr ""
1210
-
1211
- #: v1/view/cart-rules.php:53 v1/view/pricing-rules.php:85
1212
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:56
1213
- msgid "View Examples"
1214
- msgstr ""
1215
-
1216
- #: v1/view/cart-rules.php:54 v1/view/documentation.php:21
1217
- #: v1/view/pricing-rules.php:86 v2/App/Controllers/Admin/Tabs/Help.php:17
1218
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:58
1219
- #: v2/App/Views/Admin/Tabs/help.php:8
1220
- msgid "Documentation"
1221
- msgstr ""
1222
-
1223
- #: v1/view/cart-rules.php:65 v1/view/pricing-rules.php:97
1224
- msgid "You Reach Max. Rule Limit"
1225
- msgstr ""
1226
-
1227
- #: v1/view/cart-rules.php:70 v1/view/pricing-rules.php:101
1228
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:13
1229
- msgid "Add New Rule"
1230
- msgstr ""
1231
-
1232
- #: v1/view/cart-rules.php:81 v1/view/pricing-rules.php:111
1233
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:76
1234
- msgid "Bulk Actions"
1235
- msgstr ""
1236
-
1237
- #: v1/view/cart-rules.php:82 v1/view/pricing-rules.php:112
1238
- msgid "Enable rules"
1239
- msgstr ""
1240
-
1241
- #: v1/view/cart-rules.php:83 v1/view/pricing-rules.php:113
1242
- msgid "Disable rules"
1243
- msgstr ""
1244
-
1245
- #: v1/view/cart-rules.php:84 v1/view/pricing-rules.php:114
1246
- msgid "Delete rules"
1247
- msgstr ""
1248
-
1249
- #: v1/view/cart-rules.php:86 v1/view/pricing-rules.php:116
1250
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:81
1251
- msgid "Apply"
1252
- msgstr ""
1253
-
1254
- #: v1/view/cart-rules.php:100 v1/view/cart-rules.php:210
1255
- #: v1/view/pricing-rules.php:130 v1/view/pricing-rules.php:240
1256
- #: v1/view/template/discount-table.php:36
1257
- msgid "Name"
1258
- msgstr ""
1259
-
1260
- #: v1/view/cart-rules.php:101 v1/view/cart-rules.php:211
1261
- #: v1/view/pricing-rules.php:131 v1/view/pricing-rules.php:241
1262
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:112
1263
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:338
1264
- msgid "Start Date"
1265
- msgstr ""
1266
-
1267
- #: v1/view/cart-rules.php:102 v1/view/cart-rules.php:212
1268
- #: v1/view/pricing-rules.php:132 v1/view/pricing-rules.php:242
1269
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:114
1270
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:340
1271
- msgid "Expired On"
1272
- msgstr ""
1273
-
1274
- #: v1/view/cart-rules.php:103 v1/view/cart-rules.php:213
1275
- #: v1/view/pricing-rules.php:133 v1/view/pricing-rules.php:243
1276
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:127
1277
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:353
1278
- msgid "Status"
1279
- msgstr ""
1280
-
1281
- #: v1/view/cart-rules.php:106 v1/view/cart-rules.php:216
1282
- #: v1/view/pricing-rules.php:136 v1/view/pricing-rules.php:246
1283
- #: v2/App/Views/Admin/Rules/Conditions/Main.php:213
1284
- msgid "Language"
1285
- msgstr ""
1286
-
1287
- #: v1/view/cart-rules.php:111 v1/view/cart-rules.php:221
1288
- #: v1/view/pricing-rules.php:141 v1/view/pricing-rules.php:251
1289
- msgid "Order"
1290
- msgstr ""
1291
-
1292
- #: v1/view/cart-rules.php:183 v1/view/pricing-rules.php:213
1293
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:302
1294
- msgid "Edit"
1295
- msgstr ""
1296
-
1297
- #: v1/view/cart-rules.php:194 v1/view/pricing-rules.php:224
1298
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:79
1299
- #: v2/App/Views/Admin/Tabs/DiscountRule.php:307
1300
- msgid "Delete"
1301
- msgstr ""
1302
-
1303
- #: v1/view/documentation.php:28
1304
- msgid "Installation and Intro:"
1305
- msgstr ""
1306
-
1307
- #: v1/view/documentation.php:30
1308
- msgid "Getting started"
1309
- msgstr ""
1310
-
1311
- #: v1/view/documentation.php:30
1312
- msgid "Welcome onboard"
1313
- msgstr ""
1314
-
1315
- #: v1/view/documentation.php:33 v2/App/Views/Admin/Tabs/help.php:31
1316
- msgid "License Key activation"
1317
- msgstr ""
1318
-
1319
- #: v1/view/documentation.php:33 v2/App/Views/Admin/Tabs/help.php:32
1320
- msgid "Learn how to obtain the license key and activate it"
1321
- msgstr ""
1322
-
1323
- #: v1/view/documentation.php:36 v2/App/Views/Admin/Tabs/help.php:39
1324
- msgid "Version Updates!"
1325
- msgstr ""
1326
-
1327
- #: v1/view/documentation.php:36 v2/App/Views/Admin/Tabs/help.php:40
1328
- msgid "Learn how to update to latest versions"
1329
- msgstr ""
1330
-
1331
- #: v1/view/documentation.php:39
1332
- msgid "Popular Discount Rules"
1333
- msgstr ""
1334
-
1335
- #: v1/view/documentation.php:39
1336
- msgid "What type of discount scenarios are most commonly used"
1337
- msgstr ""
1338
-
1339
- #: v1/view/documentation.php:43
1340
- msgid "Price rules/BOGO discounts:"
1341
- msgstr ""
1342
-
1343
- #: v1/view/documentation.php:45 v2/App/Views/Admin/Tabs/help.php:64
1344
- msgid "Bulk/Tiered pricing discounts"
1345
- msgstr ""
1346
-
1347
- #: v1/view/documentation.php:45 v2/App/Views/Admin/Tabs/help.php:65
1348
- msgid "Learn how to create bulk/tiered quantity discounts in WooCommerce"
1349
- msgstr ""
1350
-
1351
- #: v1/view/documentation.php:48 v2/App/Views/Admin/Tabs/help.php:75
1352
- msgid "How to create a perfect BOGO discount rule in WooCommerce"
1353
- msgstr ""
1354
-
1355
- #: v1/view/documentation.php:48 v2/App/Views/Admin/Tabs/help.php:76
1356
- msgid ""
1357
- "Buy One Get One deals can be simple to complex. Learn how to get them "
1358
- "working correct in your online store"
1359
- msgstr ""
1360
-
1361
- #: v1/view/documentation.php:51
1362
- msgid "User Role based discount rules"
1363
- msgstr ""
1364
-
1365
- #: v1/view/documentation.php:51
1366
- msgid ""
1367
- "Learn how to create user role based / customer group based discount in "
1368
- "WooCommerce"
1369
- msgstr ""
1370
-
1371
- #: v1/view/documentation.php:54
1372
- msgid "Purchase History Based Discount"
1373
- msgstr ""
1374
-
1375
- #: v1/view/documentation.php:54
1376
- msgid ""
1377
- "Price Rule and Cart Rule which gives discount based on the purchase history"
1378
- msgstr ""
1379
-
1380
- #: v1/view/documentation.php:57 v2/App/Views/Admin/Tabs/help.php:85
1381
- msgid "Coupon code based discounts"
1382
- msgstr ""
1383
-
1384
- #: v1/view/documentation.php:57 v2/App/Views/Admin/Tabs/help.php:86
1385
- msgid ""
1386
- "Apply the dynamic discount rules after the customer enters a valid coupon "
1387
- "code"
1388
- msgstr ""
1389
-
1390
- #: v1/view/documentation.php:61
1391
- msgid "Cart Based Rules:"
1392
- msgstr ""
1393
-
1394
- #: v1/view/documentation.php:63 v2/App/Views/Admin/Tabs/help.php:113
1395
- msgid "Learn how to create a free shipping cart based rule"
1396
- msgstr ""
1397
-
1398
- #: v1/view/documentation.php:66 v2/App/Views/Admin/Tabs/help.php:123
1399
- msgid "Subtotal based - Tiered discounts"
1400
- msgstr ""
1401
-
1402
- #: v1/view/documentation.php:66 v2/App/Views/Admin/Tabs/help.php:124
1403
- msgid "Learn how to create tiered discount based on the subtotal value"
1404
- msgstr ""
1405
-
1406
- #: v1/view/documentation.php:69
1407
- msgid "Free product discount"
1408
- msgstr ""
1409
-
1410
- #: v1/view/documentation.php:69 v2/App/Views/Admin/Tabs/help.php:136
1411
- msgid ""
1412
- "How to provide a automatic adding free product in cart under certain "
1413
- "conditions"
1414
- msgstr ""
1415
-
1416
- #: v1/view/documentation.php:72 v2/App/Helpers/Helper.php:173
1417
- #: v2/App/Views/Admin/Tabs/help.php:145
1418
- msgid "Category Combination"
1419
- msgstr ""
1420
-
1421
- #: v1/view/documentation.php:72 v2/App/Views/Admin/Tabs/help.php:146
1422
- msgid ""
1423
- "Category Combination (get discount only when Category A+ B + C are in the "
1424
- "cart)"
1425
- msgstr ""
1426
-
1427
- #: v1/view/includes/cart-menu.php:9 v1/view/includes/sub-menu.php:9
1428
- #: v1/view/settings.php:38 v1/view/view-cart-rules.php:65
1429
- #: v1/view/view-pricing-rules.php:47 v2/App/Views/Admin/Tabs/settings.php:15
1430
- msgid "General"
1431
- msgstr ""
1432
-
1433
- #: v1/view/includes/cart-menu.php:11
1434
- msgid "Conditions"
1435
- msgstr ""
1436
-
1437
- #: v1/view/includes/cart-menu.php:13 v1/view/includes/sub-menu.php:13
1438
- #: v1/view/template/discount-table.php:42 v1/view/view-cart-rules.php:756
1439
- #: v1/view/view-pricing-rules.php:708 v2/App/Controllers/Admin/Settings.php:464
1440
- #: v2/App/Helpers/Rule.php:1237 v2/App/Views/Admin/Rules/Discounts/Bulk.php:59
1441
- #: v2/App/Views/Admin/Rules/Manage.php:242
1442
- msgid "Discount"
1443
- msgstr ""
1444
-
1445
- #: v1/view/includes/footer.php:7
1446
- msgid ""
1447
- "Having trouble in setting up the discount? Let us set up the rules for you "
1448
- "(for free)!"
1449
- msgstr ""
1450
-
1451
- #: v1/view/includes/footer.php:7
1452
- msgid "Please contact our support team"
1453
- msgstr ""
1454
-
1455
- #: v1/view/includes/header.php:14
1456
- #, php-format
1457
- msgid ""
1458
- "An another discount plugin %s is active. Please disable this plugin, Woo "
1459
- "Discount Rules might get conflict."
1460
- msgstr ""
1461
-
1462
- #: v1/view/includes/menu.php:14
1463
- msgid "Price Discount Rules"
1464
- msgstr ""
1465
-
1466
- #: v1/view/includes/menu.php:16
1467
- msgid "Cart Discount Rules"
1468
- msgstr ""
1469
-
1470
- #: v1/view/includes/menu.php:22
1471
- msgid "Taxonomy Settings"
1472
- msgstr ""
1473
-
1474
- #: v1/view/includes/menu.php:25
1475
- msgid "Read documentation"
1476
- msgstr ""
1477
-
1478
- #: v1/view/includes/sub-menu.php:11
1479
- msgid "Condition"
1480
- msgstr ""
1481
-
1482
- #: v1/view/pricing-rules.php:80
1483
- msgid "Price Rules"
1484
- msgstr ""
1485
-
1486
- #: v1/view/settings.php:39
1487
- msgid "Price rules"
1488
- msgstr ""
1489
-
1490
- #: v1/view/settings.php:40
1491
- msgid "Cart rules"
1492
- msgstr ""
1493
-
1494
- #: v1/view/settings.php:41
1495
- msgid "Performance"
1496
- msgstr ""
1497
-
1498
- #: v1/view/settings.php:42 v2/App/Views/Admin/Tabs/settings.php:358
1499
- msgid "Promotion"
1500
- msgstr ""
1501
-
1502
- #: v1/view/settings_cart_rules.php:8
1503
- msgid "Cart rules settings"
1504
- msgstr ""
1505
-
1506
- #: v1/view/settings_cart_rules.php:15
1507
- msgid "Discount identifier in the backend"
1508
- msgstr ""
1509
-
1510
- #: v1/view/settings_cart_rules.php:21
1511
- msgid "Discount Coupon Name"
1512
- msgstr ""
1513
-
1514
- #: v1/view/settings_cart_rules.php:31
1515
- msgid "Coupon name to be used in the cart/checkout in the storefront"
1516
- msgstr ""
1517
-
1518
- #: v1/view/settings_cart_rules.php:35
1519
- msgid "Discounts applied: {rule_name}"
1520
- msgstr ""
1521
-
1522
- #: v1/view/settings_cart_rules.php:38
1523
- msgid ""
1524
- "- Rule name. If more than one rule applies in cart, then the rule names will "
1525
- "be shown separated by comma(,)"
1526
- msgstr ""
1527
-
1528
- #: v1/view/settings_cart_rules.php:42
1529
- msgid "Eg: "
1530
- msgstr ""
1531
-
1532
- #: v1/view/settings_cart_rules.php:53
1533
- msgid "Rule Setup for Cart:"
1534
- msgstr ""
1535
-
1536
- #: v1/view/settings_cart_rules.php:59 v1/view/settings_price_rules.php:32
1537
- msgid "Apply first matched rule"
1538
- msgstr ""
1539
-
1540
- #: v1/view/settings_cart_rules.php:65 v1/view/settings_cart_rules.php:67
1541
- #: v1/view/settings_price_rules.php:38 v1/view/settings_price_rules.php:40
1542
- msgid "Apply all matched rules"
1543
- msgstr ""
1544
-
1545
- #: v1/view/settings_cart_rules.php:74 v1/view/settings_cart_rules.php:76
1546
- #: v1/view/settings_price_rules.php:47 v1/view/settings_price_rules.php:49
1547
- msgid "Apply biggest discount"
1548
- msgstr ""
1549
-
1550
- #: v1/view/settings_cart_rules.php:85
1551
- msgid "Enable free shipping option"
1552
- msgstr ""
1553
-
1554
- #: v1/view/settings_cart_rules.php:92 v1/view/settings_price_rules.php:313
1555
- #: v1/view/view-pricing-rules.php:315 v1/view/view-pricing-rules.php:383
1556
- #: v1/view/view-pricing-rules.php:473 v1/view/view-pricing-rules.php:525
1557
- #: v1/view/view-pricing-rules.php:561
1558
- msgid "Supported in PRO version"
1559
- msgstr ""
1560
-
1561
- #: v1/view/settings_cart_rules.php:105
1562
- msgid "Use Woocommerce free shipping"
1563
- msgstr ""
1564
-
1565
- #: v1/view/settings_cart_rules.php:108
1566
- msgid "Use Woo-Discount free shipping"
1567
- msgstr ""
1568
-
1569
- #: v1/view/settings_cart_rules.php:122
1570
- msgid "Free shipping text to be displayed"
1571
- msgstr ""
1572
-
1573
- #: v1/view/settings_cart_rules.php:129
1574
- msgid "Free Shipping title"
1575
- msgstr ""
1576
-
1577
- #: v1/view/settings_cart_rules.php:136
1578
- msgid "Draft"
1579
- msgstr ""
1580
-
1581
- #: v1/view/settings_cart_rules.php:146
1582
- msgid "Exclude Draft products in product select box."
1583
- msgstr ""
1584
-
1585
- #: v1/view/settings_general.php:6
1586
- msgid "General Settings"
1587
- msgstr ""
1588
-
1589
- #: v1/view/settings_general.php:13
1590
- msgid "License Key :"
1591
- msgstr ""
1592
-
1593
- #: v1/view/settings_general.php:20
1594
- msgid "Your Unique License Key"
1595
- msgstr ""
1596
-
1597
- #: v1/view/settings_general.php:21
1598
- msgid "Validate Key"
1599
- msgstr ""
1600
-
1601
- #: v1/view/settings_general.php:45
1602
- msgid "Tip: Install pro package before validating the licence"
1603
- msgstr ""
1604
-
1605
- #: v1/view/settings_general.php:49
1606
- msgid "Install pro package for validating the licence"
1607
- msgstr ""
1608
-
1609
- #: v1/view/settings_general.php:57
1610
- msgid "Enable dropdowns (applies only for the rule engine in the backend.)"
1611
- msgstr ""
1612
-
1613
- #: v1/view/settings_general.php:62 v1/view/settings_general.php:79
1614
- #: v1/view/settings_general.php:113 v1/view/settings_performance.php:21
1615
- #: v1/view/settings_price_rules.php:86 v1/view/settings_price_rules.php:98
1616
- #: v1/view/settings_price_rules.php:110 v1/view/settings_price_rules.php:151
1617
- #: v2/App/Views/Admin/Rules/DiscountBatch/Main.php:43
1618
- #: v2/App/Views/Admin/Tabs/AdvancedOptions.php:22
1619
- #: v2/App/Views/Admin/Tabs/AdvancedOptions.php:37
1620
- #: v2/App/Views/Admin/Tabs/AdvancedOptions.php:52
1621
- #: v2/App/Views/Admin/Tabs/settings.php:56
1622
- #: v2/App/Views/Admin/Tabs/settings.php:87
1623
- #: v2/App/Views/Admin/Tabs/settings.php:103
1624
- #: v2/App/Views/Admin/Tabs/settings.php:118
1625
- #: v2/App/Views/Admin/Tabs/settings.php:209
1626
- #: v2/App/Views/Admin/Tabs/settings.php:304
1627
- #: v2/App/Views/Admin/Tabs/settings.php:333
1628
- #: v2/App/Views/Admin/Tabs/settings.php:425
1629
- #: v2/App/Views/Admin/Tabs/settings.php:563
1630
- #: v2/App/Views/Admin/Tabs/settings.php:580
1631
- #: v2/App/Views/Admin/Tabs/settings.php:597
1632
- msgid "Yes"
1633
- msgstr ""
1634
-
1635
- #: v1/view/settings_general.php:63 v1/view/settings_general.php:80
1636
- #: v1/view/settings_general.php:114 v1/view/settings_performance.php:22
1637
- #: v1/view/settings_price_rules.php:87 v1/view/settings_price_rules.php:99
1638
- #: v1/view/settings_price_rules.php:111 v1/view/settings_price_rules.php:152
1639
- #: v2/App/Views/Admin/Rules/DiscountBatch/Main.php:48
1640
- #: v2/App/Views/Admin/Tabs/AdvancedOptions.php:26
1641
- #: v2/App/Views/Admin/Tabs/AdvancedOptions.php:41
1642
- #: v2/App/Views/Admin/Tabs/AdvancedOptions.php:56
1643
- #: v2/App/Views/Admin/Tabs/settings.php:60
1644
- #: v2/App/Views/Admin/Tabs/settings.php:91
1645
- #: v2/App/Views/Admin/Tabs/settings.php:107
1646
- #: v2/App/Views/Admin/Tabs/settings.php:122
1647
- #: v2/App/Views/Admin/Tabs/settings.php:212
1648
- #: v2/App/Views/Admin/Tabs/settings.php:308
1649
- #: v2/App/Views/Admin/Tabs/settings.php:339
1650
- #: v2/App/Views/Admin/Tabs/settings.php:430
1651
- #: v2/App/Views/Admin/Tabs/settings.php:568
1652
- #: v2/App/Views/Admin/Tabs/settings.php:585
1653
- #: v2/App/Views/Admin/Tabs/settings.php:602
1654
- msgid "No"
1655
- msgstr ""
1656
-
1657
- #: v1/view/settings_general.php:66
1658
- msgid ""
1659
- "Disabling this setting may affect dropdowns in rule engine (Disabling this "
1660
- "setting is not recommended). Change this only if you know what you are doing."
1661
- msgstr ""
1662
-
1663
- #: v1/view/settings_general.php:74
1664
- msgid "Force refresh the cart widget while add and remove item to cart"
1665
- msgstr ""
1666
-
1667
- #: v1/view/settings_general.php:86 v2/App/Views/Admin/Tabs/settings.php:66
1668
- msgid ""
1669
- "Choose how discount rules should work when WooCommerce coupons (or third "
1670
- "party) coupons are used?"
1671
- msgstr ""
1672
-
1673
- #: v1/view/settings_general.php:93 v2/App/Views/Admin/Tabs/settings.php:73
1674
- msgid "Let both coupons and discount rules run together"
1675
- msgstr ""
1676
-
1677
- #: v1/view/settings_general.php:96 v2/App/Views/Admin/Tabs/settings.php:75
1678
- msgid "Disable the discount rules (coupons will work)"
1679
- msgstr ""
1680
-
1681
- #: v1/view/settings_general.php:99 v2/App/Views/Admin/Tabs/settings.php:74
1682
- msgid "Disable the coupons (discount rules will work)"
1683
- msgstr ""
1684
-
1685
- #: v1/view/settings_general.php:108
1686
- msgid ""
1687
- "Hide $0.00 (zero value) of coupon codes in the totals column. Useful when a "
1688
- "coupon used with discount rule conditions"
1689
- msgstr ""
1690
-
1691
- #: v1/view/settings_performance.php:8
1692
- msgid "Performance settings"
1693
- msgstr ""
1694
-
1695
- #: v1/view/settings_performance.php:16
1696
- msgid "Enable cache for variable products table content"
1697
- msgstr ""
1698
-
1699
- #: v1/view/settings_performance.php:28 v1/view/settings_performance.php:32
1700
- msgid "Clear cache"
1701
- msgstr ""
1702
-
1703
- #: v1/view/settings_price_rules.php:8
1704
- msgid "Price rules settings"
1705
- msgstr ""
1706
-
1707
- #: v1/view/settings_price_rules.php:14
1708
- msgid "Rule setup"
1709
- msgstr ""
1710
-
1711
- #: v1/view/settings_price_rules.php:15
1712
- msgid "Display"
1713
- msgstr ""
1714
-
1715
- #: v1/view/settings_price_rules.php:16
1716
- msgid "Offer table"
1717
- msgstr ""
1718
-
1719
- #: v1/view/settings_price_rules.php:17
1720
- msgid "Sale badge"
1721
- msgstr ""
1722
-
1723
- #: v1/view/settings_price_rules.php:26
1724
- msgid "Rule Setup"
1725
- msgstr ""
1726
-
1727
- #: v1/view/settings_price_rules.php:58
1728
- msgid "Apply discount based on"
1729
- msgstr ""
1730
-
1731
- #: v1/view/settings_price_rules.php:65 v2/App/Views/Admin/Tabs/settings.php:28
1732
- msgid "Sale price"
1733
- msgstr ""
1734
-
1735
- #: v1/view/settings_price_rules.php:68 v2/App/Views/Admin/Tabs/settings.php:29
1736
- msgid "Regular price"
1737
- msgstr ""
1738
-
1739
- #: v1/view/settings_price_rules.php:73
1740
- msgid ""
1741
- "If sale price is not entered in your products, the regular price will be "
1742
- "taken"
1743
- msgstr ""
1744
-
1745
- #: v1/view/settings_price_rules.php:81
1746
- msgid ""
1747
- "Auto add free product when coupon is applied (For coupon-activated rules)"
1748
- msgstr ""
1749
-
1750
- #: v1/view/settings_price_rules.php:93
1751
- msgid ""
1752
- "Auto add free product when checkout fields changed (For purchase history "
1753
- "rules)"
1754
- msgstr ""
1755
-
1756
- #: v1/view/settings_price_rules.php:105
1757
- msgid "Include variants when just parent products are chosen in the rules"
1758
- msgstr ""
1759
-
1760
- #: v1/view/settings_price_rules.php:122
1761
- msgid "Show Price discount on product pages :"
1762
- msgstr ""
1763
-
1764
- #: v1/view/settings_price_rules.php:128
1765
- #: v2/App/Views/Admin/Tabs/settings.php:279
1766
- msgid "Show when a rule condition is matched"
1767
- msgstr ""
1768
-
1769
- #: v1/view/settings_price_rules.php:131
1770
- #: v2/App/Views/Admin/Tabs/settings.php:280
1771
- msgid "Show after a rule condition is matched"
1772
- msgstr ""
1773
-
1774
- #: v1/view/settings_price_rules.php:134
1775
- #: v2/App/Views/Admin/Tabs/settings.php:281
1776
- msgid "Shown on quantity update (dynamic)"
1777
- msgstr ""
1778
-
1779
- #: v1/view/settings_price_rules.php:137 v1/view/settings_price_rules.php:211
1780
- #: v1/view/settings_price_rules.php:229 v1/view/settings_price_rules.php:247
1781
- #: v1/view/settings_price_rules.php:265
1782
- #: v2/App/Views/Admin/Tabs/settings.php:642
1783
- msgid "Don't Show"
1784
- msgstr ""
1785
-
1786
- #: v1/view/settings_price_rules.php:146
1787
- msgid ""
1788
- "Show a crossed-out original price along with discounted price at line items "
1789
- "in cart"
1790
- msgstr ""
1791
-
1792
- #: v1/view/settings_price_rules.php:163
1793
- msgid "Discount Table :"
1794
- msgstr ""
1795
-
1796
- #: v1/view/settings_price_rules.php:172
1797
- msgid "Default layout"
1798
- msgstr ""
1799
-
1800
- #: v1/view/settings_price_rules.php:175
1801
- msgid "Advance layout"
1802
- msgstr ""
1803
-
1804
- #: v1/view/settings_price_rules.php:184
1805
- msgid "Table placement:"
1806
- msgstr ""
1807
-
1808
- #: v1/view/settings_price_rules.php:190
1809
- msgid "Before cart form"
1810
- msgstr ""
1811
-
1812
- #: v1/view/settings_price_rules.php:193
1813
- msgid "After cart form"
1814
- msgstr ""
1815
-
1816
- #: v1/view/settings_price_rules.php:202
1817
- msgid "Table header :"
1818
- msgstr ""
1819
-
1820
- #: v1/view/settings_price_rules.php:220
1821
- msgid "Title column on table :"
1822
- msgstr ""
1823
-
1824
- #: v1/view/settings_price_rules.php:238
1825
- msgid "Range column on table :"
1826
- msgstr ""
1827
-
1828
- #: v1/view/settings_price_rules.php:256
1829
- msgid "Discount column on table :"
1830
- msgstr ""
1831
-
1832
- #: v1/view/settings_price_rules.php:278
1833
- msgid "Show a Sale badge on product pages :"
1834
- msgstr ""
1835
-
1836
- #: v1/view/settings_price_rules.php:284
1837
- #: v2/App/Views/Admin/Tabs/settings.php:147
1838
- msgid "Do not show"
1839
- msgstr ""
1840
-
1841
- #: v1/view/settings_price_rules.php:287
1842
- #: v2/App/Views/Admin/Tabs/settings.php:145
1843
- msgid "Show only after a rule condition is matched exactly"
1844
- msgstr ""
1845
-
1846
- #: v1/view/settings_price_rules.php:290
1847
- msgid ""
1848
- "Show on products that are covered under any price based discount rule in the "
1849
- "plugin"
1850
- msgstr ""
1851
-
1852
- #: v1/view/settings_price_rules.php:301
1853
- #: v2/App/Views/Admin/Tabs/settings.php:153
1854
- msgid "Do you want to customize the sale badge?"
1855
- msgstr ""
1856
-
1857
- #: v1/view/settings_price_rules.php:308
1858
- #: v2/App/Views/Admin/Tabs/settings.php:164
1859
- msgid "Yes, I would like to customize the sale badge"
1860
- msgstr ""
1861
-
1862
- #: v1/view/settings_price_rules.php:310
1863
- #: v2/App/Views/Admin/Tabs/settings.php:168
1864
- msgid ""
1865
- "Force override the label for sale badge (useful when your theme has override "
1866
- "for sale badge)."
1867
- msgstr ""
1868
-
1869
- #: v1/view/settings_price_rules.php:325
1870
- msgid "Sale badge content (TIP: You can use HTML inside)"
1871
- msgstr ""
1872
-
1873
- #: v1/view/settings_price_rules.php:332
1874
- msgid ""
1875
- "IMPORTANT NOTE: This customized sale badge will be applicable only for "
1876
- "products that are part of the discount rules configured in this plugin"
1877
- msgstr ""
1878
-
1879
- #: v1/view/settings_price_rules.php:336
1880
- msgid "Eg:"
1881
- msgstr ""
1882
-
1883
- #: v1/view/settings_promotion.php:8
1884
- msgid "Promotion settings"
1885
- msgstr ""
1886
-
1887
- #: v1/view/settings_promotion.php:16
1888
- msgid "Display savings text (for price rules)"
1889
- msgstr ""
1890
-
1891
- #: v1/view/settings_promotion.php:25 v2/App/Views/Admin/Tabs/settings.php:399
1892
- msgid "On each line item"
1893
- msgstr ""
1894
-
1895
- #: v1/view/settings_promotion.php:28 v2/App/Views/Admin/Tabs/settings.php:400
1896
- msgid "On after total"
1897
- msgstr ""
1898
-
1899
- #: v1/view/settings_promotion.php:31 v2/App/Views/Admin/Tabs/settings.php:401
1900
- msgid "Both in line item and after total"
1901
- msgstr ""
1902
-
1903
- #: v1/view/settings_promotion.php:39 v2/App/Views/Admin/Tabs/settings.php:408
1904
- msgid "Savings text to show"
1905
- msgstr ""
1906
-
1907
- #: v1/view/settings_promotion.php:47
1908
- msgid "{{total_discount_price}} -> Total discount applied"
1909
- msgstr ""
1910
-
1911
- #: v1/view/settings_promotion.php:55
1912
- msgid "Show a message on applying price rules in cart"
1913
- msgstr ""
1914
-
1915
- #: v1/view/settings_promotion.php:73 v1/view/settings_promotion.php:108
1916
- #: v1/view/view-cart-rules.php:730
1917
- #: v2/App/Views/Admin/Rules/Others/QuantityPromotion.php:28
1918
- #: v2/App/Views/Admin/Rules/Others/SubtotalPromotion.php:29
1919
- msgid "Message"
1920
- msgstr ""
1921
-
1922
- #: v1/view/settings_promotion.php:81 v1/view/settings_promotion.php:116
1923
- msgid "{{title}} -> Rule title"
1924
- msgstr ""
1925
-
1926
- #: v1/view/settings_promotion.php:82 v1/view/settings_promotion.php:117
1927
- msgid "{{description}} -> Rule description"
1928
- msgstr ""
1929
-
1930
- #: v1/view/settings_promotion.php:90
1931
- msgid "Show a message on applying cart rules in cart"
1932
- msgstr ""
1933
-
1934
- #: v1/view/settings_promotion.php:125
1935
- msgid ""
1936
- "Subtotal based promo text (available only in cart rules -> subtotal based "
1937
- "discounts)"
1938
- msgstr ""
1939
-
1940
- #: v1/view/settings_promotion.php:134 v2/App/Views/Admin/Tabs/settings.php:384
1941
- msgid "Shop page"
1942
- msgstr ""
1943
-
1944
- #: v1/view/settings_promotion.php:137 v2/App/Views/Admin/Tabs/settings.php:385
1945
- msgid "Product page"
1946
- msgstr ""
1947
-
1948
- #: v1/view/settings_promotion.php:140 v2/App/Views/Admin/Tabs/settings.php:386
1949
- msgid "Cart page"
1950
- msgstr ""
1951
-
1952
- #: v1/view/settings_promotion.php:143 v2/App/Views/Admin/Tabs/settings.php:387
1953
- msgid "Checkout page"
1954
- msgstr ""
1955
-
1956
- #: v1/view/settings_taxonomy.php:32
1957
- msgid ""
1958
- "Choose taxonomies that can be supported in the discount rules (as categories)"
1959
- msgstr ""
1960
-
1961
- #: v1/view/settings_taxonomy.php:36
1962
- msgid ""
1963
- "Useful when you want to provide a taxonomy based discount. The selected "
1964
- "taxonomies here will be available as categories. So you can use the category "
1965
- "specific discount condition to create discounts based on taxonomies.\n"
1966
- "More examples can be found in the documentation"
1967
- msgstr ""
1968
-
1969
- #: v1/view/template/discount-table.php:23
1970
- msgid "Hide table"
1971
- msgstr ""
1972
-
1973
- #: v1/view/template/discount-table.php:25
1974
- msgid "This effect displays only for you (Admin)"
1975
- msgstr ""
1976
-
1977
- #: v1/view/template/discount-table.php:39
1978
- msgid "Range"
1979
- msgstr ""
1980
-
1981
- #: v1/view/template/discount-table.php:74
1982
- msgid "No Active Discounts."
1983
- msgstr ""
1984
-
1985
- #: v1/view/template/loop/sale-flash.php:23
1986
- #: v1/view/template/single-product/sale-flash.php:23
1987
- #: v2/App/Views/Admin/Tabs/settings.php:184
1988
- #: v2/App/Views/Templates/loop/sale-flash.php:23
1989
- #: v2/App/Views/Templates/single-product/sale-flash.php:23
1990
- msgid "Sale!"
1991
- msgstr ""
1992
-
1993
- #: v1/view/template/sidebar.php:7 v2/App/Views/Admin/Tabs/DiscountRule.php:389
1994
- #: v2/App/Views/Admin/Tabs/help.php:160
1995
- msgid "Looking for more features? Upgrade to PRO"
1996
- msgstr ""
1997
-
1998
- #: v1/view/template/sidebar.php:19 v2/App/Views/Admin/Tabs/DiscountRule.php:394
1999
- #: v2/App/Views/Admin/Tabs/help.php:165
2000
- msgid "With PRO version, you can create:"
2001
- msgstr ""
2002
-
2003
- #: v1/view/template/sidebar.php:20 v2/App/Views/Admin/Tabs/DiscountRule.php:395
2004
- #: v2/App/Views/Admin/Tabs/help.php:166
2005
- msgid "- Categories based discounts"
2006
- msgstr ""
2007
-
2008
- #: v1/view/template/sidebar.php:21 v2/App/Views/Admin/Tabs/DiscountRule.php:396
2009
- #: v2/App/Views/Admin/Tabs/help.php:167
2010
- msgid "- User roles based discounts"
2011
- msgstr ""
2012
-
2013
- #: v1/view/template/sidebar.php:22 v2/App/Views/Admin/Tabs/DiscountRule.php:397
2014
- #: v2/App/Views/Admin/Tabs/help.php:168
2015
- msgid "- Buy One Get One Free deals"
2016
- msgstr ""
2017
-
2018
- #: v1/view/template/sidebar.php:23 v2/App/Views/Admin/Tabs/DiscountRule.php:398
2019
- #: v2/App/Views/Admin/Tabs/help.php:169
2020
- msgid "- Buy X Get Y deals"
2021
- msgstr ""
2022
-
2023
- #: v1/view/template/sidebar.php:24 v2/App/Views/Admin/Tabs/DiscountRule.php:399
2024
- #: v2/App/Views/Admin/Tabs/help.php:170
2025
- #, php-format
2026
- msgid "- Buy 2, get 1 at 50% discount"
2027
- msgstr ""
2028
-
2029
- #: v1/view/template/sidebar.php:25 v2/App/Views/Admin/Tabs/DiscountRule.php:400
2030
- #: v2/App/Views/Admin/Tabs/help.php:171
2031
- msgid "- Buy 3 for $10 (Package / Bundle [Set] Discount)"
2032
- msgstr ""
2033
-
2034
- #: v1/view/template/sidebar.php:26 v2/App/Views/Admin/Tabs/DiscountRule.php:401
2035
- #: v2/App/Views/Admin/Tabs/help.php:172
2036
- msgid "- Different discounts with one coupon code"
2037
- msgstr ""
2038
-
2039
- #: v1/view/template/sidebar.php:27 v2/App/Views/Admin/Tabs/DiscountRule.php:402
2040
- #: v2/App/Views/Admin/Tabs/help.php:173
2041
- msgid "- Purchase history based discounts"
2042
- msgstr ""
2043
-
2044
- #: v1/view/template/sidebar.php:28 v2/App/Views/Admin/Tabs/DiscountRule.php:403
2045
- #: v2/App/Views/Admin/Tabs/help.php:174
2046
- msgid "- Free product / gift"
2047
- msgstr ""
2048
-
2049
- #: v1/view/template/sidebar.php:29 v2/App/Views/Admin/Tabs/DiscountRule.php:404
2050
- #: v2/App/Views/Admin/Tabs/help.php:175
2051
- msgid "- Discount for variants"
2052
- msgstr ""
2053
-
2054
- #: v1/view/template/sidebar.php:30 v2/App/Views/Admin/Tabs/DiscountRule.php:405
2055
- #: v2/App/Views/Admin/Tabs/help.php:176
2056
- msgid "- Conditional discounts"
2057
- msgstr ""
2058
-
2059
- #: v1/view/template/sidebar.php:31 v2/App/Views/Admin/Tabs/DiscountRule.php:406
2060
- #: v2/App/Views/Admin/Tabs/help.php:177
2061
- msgid "- Fixed cost discounts"
2062
- msgstr ""
2063
-
2064
- #: v1/view/template/sidebar.php:32 v2/App/Views/Admin/Tabs/DiscountRule.php:407
2065
- #: v2/App/Views/Admin/Tabs/help.php:178
2066
- msgid "- Offer fixed price on certain conditions"
2067
- msgstr ""
2068
-
2069
- #: v1/view/view-cart-rules.php:56 v1/view/view-pricing-rules.php:38
2070
- msgid "Close and go back to list"
2071
- msgstr ""
2072
-
2073
- #: v1/view/view-cart-rules.php:60
2074
- msgid "New Cart Rule"
2075
- msgstr ""
2076
-
2077
- #: v1/view/view-cart-rules.php:62
2078
- msgid "Edit Cart Rule"
2079
- msgstr ""
2080
-
2081
- #: v1/view/view-cart-rules.php:75 v1/view/view-pricing-rules.php:57
2082
- #: v2/App/Views/Admin/Rules/Manage.php:20
2083
- #: v2/App/Views/Admin/Rules/Manage.php:24
2084
- #: v2/App/Views/Admin/Rules/Manage.php:32
2085
- #: v2/App/Views/Admin/Rules/Manage.php:36
2086
- #: v2/App/Views/Admin/Rules/Manage.php:44
2087
- msgid "This rule is not running currently: "
2088
- msgstr ""
2089
-
2090
- #: v1/view/view-cart-rules.php:84 v1/view/view-pricing-rules.php:66
2091
- msgid "Priority :"
2092
- msgstr ""
2093
-
2094
- #: v1/view/view-cart-rules.php:86
2095
- msgid ""
2096
- "The Simple Ranking concept to said, which one is going to execute first and "
2097
- "so on."
2098
- msgstr ""
2099
-
2100
- #: v1/view/view-cart-rules.php:98 v1/view/view-pricing-rules.php:81
2101
- #: v2/App/Controllers/Admin/Tabs/Statistics.php:39
2102
- msgid "Rule Name"
2103
- msgstr ""
2104
-
2105
- #: v1/view/view-cart-rules.php:100 v1/view/view-cart-rules.php:112
2106
- #: v1/view/view-pricing-rules.php:95
2107
- msgid "Rule Descriptions."
2108
- msgstr ""
2109
-
2110
- #: v1/view/view-cart-rules.php:105 v1/view/view-pricing-rules.php:89
2111
- msgid "ex. Standard Rule."
2112
- msgstr ""
2113
-
2114
- #: v1/view/view-cart-rules.php:110 v1/view/view-pricing-rules.php:94
2115
- msgid "Rule Description"
2116
- msgstr ""
2117
-
2118
- #: v1/view/view-cart-rules.php:121 v1/view/view-pricing-rules.php:130
2119
- msgid "Validity"
2120
- msgstr ""
2121
-
2122
- #: v1/view/view-cart-rules.php:122 v1/view/view-pricing-rules.php:131
2123
- msgid "Period of Rule Active. Format: month/day/Year Hour:Min"
2124
- msgstr ""
2125
-
2126
- #: v1/view/view-cart-rules.php:135 v1/view/view-pricing-rules.php:144
2127
- #: v1/view/view-pricing-rules.php:652
2128
- msgid "From"
2129
- msgstr ""
2130
-
2131
- #: v1/view/view-cart-rules.php:139
2132
- msgid "To"
2133
- msgstr ""
2134
-
2135
- #: v1/view/view-cart-rules.php:140 v1/view/view-pricing-rules.php:149
2136
- #, php-format
2137
- msgid "Current date and time: %s"
2138
- msgstr ""
2139
-
2140
- #: v1/view/view-cart-rules.php:145 v1/view/view-cart-rules.php:750
2141
- #: v1/view/view-pricing-rules.php:183 v1/view/view-pricing-rules.php:701
2142
- msgid "Next"
2143
- msgstr ""
2144
-
2145
- #: v1/view/view-cart-rules.php:149
2146
- msgid "Cart Conditions"
2147
- msgstr ""
2148
-
2149
- #: v1/view/view-cart-rules.php:152
2150
- msgid "Add Condition"
2151
- msgstr ""
2152
-
2153
- #: v1/view/view-cart-rules.php:241
2154
- msgid "Categories In Cart"
2155
- msgstr ""
2156
-
2157
- #: v1/view/view-cart-rules.php:295 v1/view/view-cart-rules.php:297
2158
- msgid "Email with TLD (Eg: edu)"
2159
- msgstr ""
2160
-
2161
- #: v1/view/view-cart-rules.php:713
2162
- msgid "Promotion message"
2163
- msgstr ""
2164
-
2165
- #: v1/view/view-cart-rules.php:718
2166
- #: v2/App/Views/Admin/Rules/Others/SubtotalPromotion.php:19
2167
- msgid "Subtotal from"
2168
- msgstr ""
2169
-
2170
- #: v1/view/view-cart-rules.php:724
2171
- #, php-format
2172
- msgid ""
2173
- "Set a threshold from which you want to start showing the promotion "
2174
- "message<br>Example: Let's say, you offer a 10% discount for $1000 and "
2175
- "above. You may want to set 900 here. So that the customer can see the promo "
2176
- "text when his cart subtotal reaches 900"
2177
- msgstr ""
2178
-
2179
- #: v1/view/view-cart-rules.php:735
2180
- #: v2/App/Views/Admin/Rules/Others/SubtotalPromotion.php:33
2181
- #, php-format
2182
- msgid "Spend {{difference_amount}} more and get 10% discount"
2183
- msgstr ""
2184
-
2185
- #: v1/view/view-cart-rules.php:737
2186
- #: v2/App/Views/Admin/Rules/Others/SubtotalPromotion.php:34
2187
- msgid "{{difference_amount}} -> Difference amount to get discount"
2188
- msgstr ""
2189
-
2190
- #: v1/view/view-cart-rules.php:738
2191
- #: v2/App/Views/Admin/Rules/Others/SubtotalPromotion.php:35
2192
- #, php-format
2193
- msgid "<b>Eg:</b> Spend {{difference_amount}} more and get 10% discount"
2194
- msgstr ""
2195
-
2196
- #: v1/view/view-cart-rules.php:749 v1/view/view-cart-rules.php:846
2197
- #: v1/view/view-pricing-rules.php:700 v1/view/view-pricing-rules.php:1019
2198
- msgid "Previous"
2199
- msgstr ""
2200
-
2201
- #: v1/view/view-cart-rules.php:752
2202
- msgid "Guide to create cart rules"
2203
- msgstr ""
2204
-
2205
- #: v1/view/view-cart-rules.php:772
2206
- msgid "Discount Type :"
2207
- msgstr ""
2208
-
2209
- #: v1/view/view-cart-rules.php:791 v1/view/view-cart-rules.php:793
2210
- msgid "Product Discount"
2211
- msgstr ""
2212
-
2213
- #: v1/view/view-cart-rules.php:800 v1/view/view-cart-rules.php:802
2214
- msgid "Free shipping"
2215
- msgstr ""
2216
-
2217
- #: v1/view/view-cart-rules.php:811
2218
- msgid "value :"
2219
- msgstr ""
2220
-
2221
- #: v1/view/view-cart-rules.php:819
2222
- msgid "Select products :"
2223
- msgstr ""
2224
-
2225
- #: v1/view/view-cart-rules.php:833
2226
- msgid "Quantity :"
2227
- msgstr ""
2228
-
2229
- #: v1/view/view-pricing-rules.php:42
2230
- msgid "New Price Rule"
2231
- msgstr ""
2232
-
2233
- #: v1/view/view-pricing-rules.php:44
2234
- msgid "Edit Price Rule"
2235
- msgstr ""
2236
-
2237
- #: v1/view/view-pricing-rules.php:67
2238
- msgid ""
2239
- "The Simple Ranking concept, which one is going to execute first and so on."
2240
- msgstr ""
2241
-
2242
- #: v1/view/view-pricing-rules.php:82
2243
- msgid "Rule name / title."
2244
- msgstr ""
2245
-
2246
- #: v1/view/view-pricing-rules.php:105
2247
- msgid "Method"
2248
- msgstr ""
2249
-
2250
- #: v1/view/view-pricing-rules.php:106
2251
- msgid "Method to Apply."
2252
- msgstr ""
2253
-
2254
- #: v1/view/view-pricing-rules.php:113
2255
- msgid ""
2256
- "Quantity / category / product / user role based discounts and BOGO deals "
2257
- msgstr ""
2258
-
2259
- #: v1/view/view-pricing-rules.php:120 v1/view/view-pricing-rules.php:122
2260
- msgid "Dependent / conditional based discount (by individual product)"
2261
- msgstr ""
2262
-
2263
- #: v1/view/view-pricing-rules.php:148
2264
- msgid "To - Leave Empty if No Expiry"
2265
- msgstr ""
2266
-
2267
- #: v1/view/view-pricing-rules.php:159
2268
- msgid "Format for advanced table display option (see plugin settings)"
2269
- msgstr ""
2270
-
2271
- #: v1/view/view-pricing-rules.php:161
2272
- msgid "Used when advanced table display option is set in the plugin settings"
2273
- msgstr ""
2274
-
2275
- #: v1/view/view-pricing-rules.php:164
2276
- msgid "Buy {{min_quantity}} or more quantity and get {{discount}} as discount"
2277
- msgstr ""
2278
-
2279
- #: v1/view/view-pricing-rules.php:167
2280
- msgid "{{title}} -> Title"
2281
- msgstr ""
2282
-
2283
- #: v1/view/view-pricing-rules.php:168
2284
- msgid "{{description}} -> Description"
2285
- msgstr ""
2286
-
2287
- #: v1/view/view-pricing-rules.php:169
2288
- msgid "{{min_quantity}} -> Minimum quantity"
2289
- msgstr ""
2290
-
2291
- #: v1/view/view-pricing-rules.php:170
2292
- msgid "{{max_quantity}} -> Maximum quantity"
2293
- msgstr ""
2294
-
2295
- #: v1/view/view-pricing-rules.php:171
2296
- msgid "{{discount}} -> Discount"
2297
- msgstr ""
2298
-
2299
- #: v1/view/view-pricing-rules.php:172
2300
- msgid "{{discounted_price}} -> Discounted price"
2301
- msgstr ""
2302
-
2303
- #: v1/view/view-pricing-rules.php:173
2304
- msgid "{{condition}} -> Rule condition text"
2305
- msgstr ""
2306
-
2307
- #: v1/view/view-pricing-rules.php:188
2308
- msgid "Discount Conditions"
2309
- msgstr ""
2310
-
2311
- #: v1/view/view-pricing-rules.php:193
2312
- msgid "Apply To"
2313
- msgstr ""
2314
-
2315
- #: v1/view/view-pricing-rules.php:202
2316
- msgid "All products"
2317
- msgstr ""
2318
-
2319
- #: v1/view/view-pricing-rules.php:206
2320
- msgid "Specific products"
2321
- msgstr ""
2322
-
2323
- #: v1/view/view-pricing-rules.php:212 v1/view/view-pricing-rules.php:214
2324
- msgid "Specific categories"
2325
- msgstr ""
2326
-
2327
- #: v1/view/view-pricing-rules.php:221 v1/view/view-pricing-rules.php:223
2328
- msgid "Specific attributes"
2329
- msgstr ""
2330
-
2331
- #: v1/view/view-pricing-rules.php:234
2332
- msgid ""
2333
- "Check this box to count item quantities in cart cumulatively across products"
2334
- msgstr ""
2335
-
2336
- #: v1/view/view-pricing-rules.php:246
2337
- msgid "Check this box to count quantities cumulatively across category(ies)"
2338
- msgstr ""
2339
-
2340
- #: v1/view/view-pricing-rules.php:249
2341
- msgid "Check this box to apply child category(ies)"
2342
- msgstr ""
2343
-
2344
- #: v1/view/view-pricing-rules.php:263
2345
- msgid "Check this box to count quantities cumulatively across attribute"
2346
- msgstr ""
2347
-
2348
- #: v1/view/view-pricing-rules.php:276
2349
- #, php-format
2350
- msgid ""
2351
- "Use this option to exclude selected products from getting a discount. <a "
2352
- "href=\"%s\">Read docs</a>."
2353
- msgstr ""
2354
-
2355
- #: v1/view/view-pricing-rules.php:298
2356
- msgid "Exclude sale items"
2357
- msgstr ""
2358
-
2359
- #: v1/view/view-pricing-rules.php:301
2360
- msgid ""
2361
- "Tick this checkbox if you wish to exclude products that already have a sale "
2362
- "price set via WooCommerce."
2363
- msgstr ""
2364
-
2365
- #: v1/view/view-pricing-rules.php:309
2366
- msgid "Check this box if the rule should not apply to items on sale."
2367
- msgstr ""
2368
-
2369
- #: v1/view/view-pricing-rules.php:328
2370
- msgid "Customers"
2371
- msgstr ""
2372
-
2373
- #: v1/view/view-pricing-rules.php:331
2374
- #, php-format
2375
- msgid ""
2376
- "Use this option to apply the rule for specific customers. <a href=\"%s"
2377
- "\">Read docs</a>."
2378
- msgstr ""
2379
-
2380
- #: v1/view/view-pricing-rules.php:339 v1/view/view-pricing-rules.php:673
2381
- msgid "All"
2382
- msgstr ""
2383
-
2384
- #: v1/view/view-pricing-rules.php:346 v1/view/view-pricing-rules.php:348
2385
- msgid "Only Given"
2386
- msgstr ""
2387
-
2388
- #: v1/view/view-pricing-rules.php:362
2389
- msgid "User roles"
2390
- msgstr ""
2391
-
2392
- #: v1/view/view-pricing-rules.php:365
2393
- #, php-format
2394
- msgid ""
2395
- "Use this option to set a discount based on user roles. <a href=\"%s\">Read "
2396
- "docs</a>."
2397
- msgstr ""
2398
-
2399
- #: v1/view/view-pricing-rules.php:373 v1/view/view-pricing-rules.php:409
2400
- #: v1/view/view-pricing-rules.php:500 v1/view/view-pricing-rules.php:549
2401
- msgid "Do not use"
2402
- msgstr ""
2403
-
2404
- #: v1/view/view-pricing-rules.php:394 v2/App/Helpers/Helper.php:171
2405
- #: v2/App/Views/Admin/Tabs/settings.php:319
2406
- msgid "Coupon"
2407
- msgstr ""
2408
-
2409
- #: v1/view/view-pricing-rules.php:397
2410
- #, php-format
2411
- msgid ""
2412
- "Useful if you wish to activate this discount rule via coupon code.<br>You "
2413
- "can create your own coupon code here or select coupons created from "
2414
- "WooCommerce -> Coupons. <a href=\"%s\">Read docs</a>."
2415
- msgstr ""
2416
-
2417
- #: v1/view/view-pricing-rules.php:411
2418
- msgid "Apply if any one coupon applied (Select from WooCommerce)"
2419
- msgstr ""
2420
-
2421
- #: v1/view/view-pricing-rules.php:412
2422
- msgid "Apply if all coupon applied (Select from WooCommerce)"
2423
- msgstr ""
2424
-
2425
- #: v1/view/view-pricing-rules.php:463
2426
- msgid "Make sure you have created the coupon already"
2427
- msgstr ""
2428
-
2429
- #: v1/view/view-pricing-rules.php:484 v2/App/Conditions/CartSubTotal.php:18
2430
- #: v2/App/Helpers/Helper.php:162
2431
- msgid "Subtotal"
2432
- msgstr ""
2433
-
2434
- #: v1/view/view-pricing-rules.php:487
2435
- #, php-format
2436
- msgid ""
2437
- "Useful when you want to limit the rule based on subtotal. (Use this only "
2438
- "when absolutely necessary.)<br>See cart based discount rule tab (<a href=\"%s"
2439
- "\" target=\"_blank\">cart based rule</a>) for effective subtotal based "
2440
- "discount rules."
2441
- msgstr ""
2442
-
2443
- #: v1/view/view-pricing-rules.php:501
2444
- msgid "Subtotal atleast"
2445
  msgstr ""
2446
 
2447
- #: v1/view/view-pricing-rules.php:506
2448
- msgid "Enter the amount"
2449
  msgstr ""
2450
 
2451
- #: v1/view/view-pricing-rules.php:516
2452
- msgid "Supported in WooCommerce 3.x"
2453
  msgstr ""
2454
 
2455
- #: v1/view/view-pricing-rules.php:539
2456
- #, php-format
2457
  msgid ""
2458
- "Useful for providing discounts based on previous purchase history."
2459
- "<br><b>Example:</b> First order discount, discount based on customer’s total "
2460
- "spent so far. <a href=\"%s\">Read docs</a>."
2461
- msgstr ""
2462
-
2463
- #: v1/view/view-pricing-rules.php:644
2464
- msgid "Any"
2465
- msgstr ""
2466
-
2467
- #: v1/view/view-pricing-rules.php:645
2468
- msgid "Each"
2469
- msgstr ""
2470
-
2471
- #: v1/view/view-pricing-rules.php:646
2472
- msgid "Combine"
2473
- msgstr ""
2474
-
2475
- #: v1/view/view-pricing-rules.php:649
2476
- msgid "More than or equal to"
2477
- msgstr ""
2478
-
2479
- #: v1/view/view-pricing-rules.php:651
2480
- msgid "Equal"
2481
- msgstr ""
2482
-
2483
- #: v1/view/view-pricing-rules.php:656
2484
- msgid "to"
2485
- msgstr ""
2486
-
2487
- #: v1/view/view-pricing-rules.php:660
2488
- msgid "Product(s) from"
2489
- msgstr ""
2490
-
2491
- #: v1/view/view-pricing-rules.php:666
2492
- msgid "Apply discount in product(s)"
2493
- msgstr ""
2494
-
2495
- #: v1/view/view-pricing-rules.php:667
2496
- msgid "Apply discount in category(ies)"
2497
- msgstr ""
2498
-
2499
- #: v1/view/view-pricing-rules.php:671
2500
- msgid "and get discount on "
2501
- msgstr ""
2502
-
2503
- #: v1/view/view-pricing-rules.php:674
2504
- msgid "First quantity(s)"
2505
- msgstr ""
2506
-
2507
- #: v1/view/view-pricing-rules.php:675
2508
- msgid "Skip first quantity(s)"
2509
- msgstr ""
2510
-
2511
- #: v1/view/view-pricing-rules.php:680
2512
- msgid " Product(s) "
2513
- msgstr ""
2514
-
2515
- #: v1/view/view-pricing-rules.php:684
2516
- msgid "Category(ies)"
2517
- msgstr ""
2518
-
2519
- #: v1/view/view-pricing-rules.php:695
2520
- msgid "Guide for product dependent rules"
2521
- msgstr ""
2522
-
2523
- #: v1/view/view-pricing-rules.php:711
2524
- msgid "Add quantity ranges"
2525
  msgstr ""
2526
 
2527
- #: v1/view/view-pricing-rules.php:716
2528
- msgid ""
2529
- "Bundle (Set) Discount should NOT be mixed with any other adjustment types "
2530
- "when adding ranges. Example: If your first range's adjustment type is Bundle "
2531
- "(Set) Discount, other ranges should also be same type."
2532
  msgstr ""
2533
 
2534
- #: v1/view/view-pricing-rules.php:886
2535
- msgid "Cheapest in cart - selected category(ies)"
2536
  msgstr ""
2537
 
2538
- #: v1/view/view-pricing-rules.php:887
2539
- msgid "Cheapest in cart - selected item(s)"
2540
  msgstr ""
2541
 
2542
- #: v1/view/view-pricing-rules.php:888
2543
- msgid "Cheapest among all items in cart"
2544
  msgstr ""
2545
 
2546
- #: v1/view/view-pricing-rules.php:985
2547
  msgid ""
2548
- "<b>Example for Bundle (Set) Discount:</b> 3 for $10, 6 for $20<br>So "
2549
- "customer can add 3 products / quantities and get them for $10<br><b>NOTE:</"
2550
- "b> You will need to enter the entire package / bundle cost. Example: 10 (for "
2551
- "the 3 for $10 deal)"
2552
- msgstr ""
2553
-
2554
- #: v1/view/view-pricing-rules.php:987 v1/view/view-pricing-rules.php:997
2555
- msgid "Read docs"
2556
  msgstr ""
2557
 
2558
- #: v1/view/view-pricing-rules.php:995
2559
  msgid ""
2560
- "<b>Example for Fixed Price Per Unit:</b> Product A cost is $20. If customers "
2561
- "buy 5 to 10, they can get at $15 each (per unit).<br>Customer adds 6 "
2562
- "quantities of Product A. The price per unit will reduce to $15<br><b>NOTE:</"
2563
- "b> Enter the Unit price like 15"
2564
  msgstr ""
2565
 
2566
- #: v1/view/view-pricing-rules.php:1002
2567
- msgid "Guide to create perfect BOGO rules"
2568
  msgstr ""
2569
 
2570
- #: v1/view/view-pricing-rules.php:1012
2571
- msgid "Percent"
 
 
2572
  msgstr ""
2573
 
2574
- #: v1/view/view-pricing-rules.php:1013
2575
- msgid "Fixed"
2576
  msgstr ""
2577
 
2578
  #: v2/App/Compatibility/AeliaCurrencySwitcherByAelia.php:49
@@ -2644,6 +144,15 @@ msgstr ""
2644
  msgid "Cart"
2645
  msgstr ""
2646
 
 
 
 
 
 
 
 
 
 
2647
  #: v2/App/Controllers/Admin/Settings.php:165
2648
  msgid ""
2649
  "We found that your were using our old \"Woo discount rules\" plugin, Please "
@@ -2662,6 +171,24 @@ msgstr ""
2662
  msgid "Searching…"
2663
  msgstr ""
2664
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2665
  #: v2/App/Controllers/Admin/Settings.php:440
2666
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:294
2667
  msgid " - (Running)"
@@ -2729,6 +256,10 @@ msgstr ""
2729
  msgid "If you make this recursive other row(s) will be removed!"
2730
  msgstr ""
2731
 
 
 
 
 
2732
  #: v2/App/Controllers/Admin/Settings.php:457
2733
  msgid "Minimum Quantity"
2734
  msgstr ""
@@ -2737,6 +268,10 @@ msgstr ""
2737
  msgid "Discount value"
2738
  msgstr ""
2739
 
 
 
 
 
2740
  #: v2/App/Controllers/Admin/Settings.php:460
2741
  msgid "Filter (Buy)"
2742
  msgstr ""
@@ -2753,6 +288,12 @@ msgid ""
2753
  "<p>Note : You can also exclude products/categories.</p>"
2754
  msgstr ""
2755
 
 
 
 
 
 
 
2756
  #: v2/App/Controllers/Admin/Settings.php:465
2757
  msgid ""
2758
  "Discount - <a href=\"https://docs.flycart.org/en/articles/3914904-bulk-"
@@ -3027,6 +568,12 @@ msgstr ""
3027
  msgid "Discount Rules"
3028
  msgstr ""
3029
 
 
 
 
 
 
 
3030
  #: v2/App/Controllers/Admin/Tabs/ImportExport.php:19
3031
  msgid "Import/Export"
3032
  msgstr ""
@@ -3050,6 +597,10 @@ msgstr ""
3050
  msgid "Reports"
3051
  msgstr ""
3052
 
 
 
 
 
3053
  #: v2/App/Controllers/Admin/Tabs/Statistics.php:47
3054
  msgid "All Rules"
3055
  msgstr ""
@@ -3063,6 +614,12 @@ msgstr ""
3063
  msgid "All Rules (except cart adjustment type)"
3064
  msgstr ""
3065
 
 
 
 
 
 
 
3066
  #: v2/App/Controllers/Admin/WDRAjax.php:743
3067
  msgid "Search State"
3068
  msgstr ""
@@ -3078,6 +635,10 @@ msgstr ""
3078
  msgid "Product"
3079
  msgstr ""
3080
 
 
 
 
 
3081
  #: v2/App/Controllers/Base.php:194 v2/App/Views/Admin/Tabs/DiscountRule.php:191
3082
  msgid "Product Adjustment"
3083
  msgstr ""
@@ -3105,28 +666,35 @@ msgstr ""
3105
  msgid "<span class=\"onsale\">Sale!</span>"
3106
  msgstr ""
3107
 
3108
- #: v2/App/Controllers/ManageDiscount.php:771
3109
- #: v2/App/Controllers/ManageDiscount.php:991
3110
- #: v2/App/Controllers/ManageDiscount.php:994 v2/App/Helpers/Helper.php:271
3111
  #: v2/App/Helpers/Helper.php:272
3112
  msgid "Cart discount"
3113
  msgstr ""
3114
 
3115
- #: v2/App/Controllers/ManageDiscount.php:1055
3116
  #, php-format
3117
  msgid "Coupon \"%s\" is currently not available!"
3118
  msgstr ""
3119
 
3120
- #: v2/App/Controllers/ManageDiscount.php:1284
 
 
 
 
 
 
 
3121
  msgid "Coupon code applied successfully."
3122
  msgstr ""
3123
 
3124
- #: v2/App/Controllers/ManageDiscount.php:1708
3125
  #: v2/App/Views/Admin/Tabs/settings.php:441
3126
  msgid "Discount <strong>{{title}}</strong> has been applied to your cart."
3127
  msgstr ""
3128
 
3129
- #: v2/App/Controllers/ManageDiscount.php:1836
3130
  msgid "You saved {{total_discount}}"
3131
  msgstr ""
3132
 
@@ -3146,14 +714,29 @@ msgstr ""
3146
  msgid "Days & Time"
3147
  msgstr ""
3148
 
 
 
 
 
 
 
 
3149
  #: v2/App/Helpers/Helper.php:166
3150
  msgid "Payment Method"
3151
  msgstr ""
3152
 
 
 
 
 
3153
  #: v2/App/Helpers/Helper.php:172
3154
  msgid "Shipping Address"
3155
  msgstr ""
3156
 
 
 
 
 
3157
  #: v2/App/Helpers/Helper.php:174
3158
  msgid "Product Combination"
3159
  msgstr ""
@@ -3384,6 +967,83 @@ msgstr ""
3384
  msgid "Untitled Rule"
3385
  msgstr ""
3386
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3387
  #: v2/App/Helpers/Validation.php:146 v2/App/Helpers/Validation.php:151
3388
  #: v2/App/Helpers/Validation.php:348 v2/App/Helpers/Validation.php:544
3389
  msgid "Invalid characters"
@@ -3426,132 +1086,136 @@ msgstr ""
3426
  msgid "Validation error"
3427
  msgstr ""
3428
 
3429
- #: v2/App/Helpers/Woocommerce.php:984
3430
  msgid "Sunday"
3431
  msgstr ""
3432
 
3433
- #: v2/App/Helpers/Woocommerce.php:985
3434
  msgid "Monday"
3435
  msgstr ""
3436
 
3437
- #: v2/App/Helpers/Woocommerce.php:986
3438
  msgid "Tuesday"
3439
  msgstr ""
3440
 
3441
- #: v2/App/Helpers/Woocommerce.php:987
3442
  msgid "Wednesday"
3443
  msgstr ""
3444
 
3445
- #: v2/App/Helpers/Woocommerce.php:988
3446
  msgid "Thursday"
3447
  msgstr ""
3448
 
3449
- #: v2/App/Helpers/Woocommerce.php:989
3450
  msgid "Friday"
3451
  msgstr ""
3452
 
3453
- #: v2/App/Helpers/Woocommerce.php:990
3454
  msgid "Saturday"
3455
  msgstr ""
3456
 
3457
- #: v2/App/Helpers/Woocommerce.php:1001
3458
  msgid ""
3459
  "Woocommerce before main content(Archive / Shop / Cat Pages / single product)"
3460
  msgstr ""
3461
 
3462
- #: v2/App/Helpers/Woocommerce.php:1002
3463
  msgid "Woocommerce archive description(Archive / Shop / Cat Pages)"
3464
  msgstr ""
3465
 
3466
- #: v2/App/Helpers/Woocommerce.php:1003
3467
  msgid "Woocommerce before shop loop(Archive / Shop / Cat Pages)"
3468
  msgstr ""
3469
 
3470
- #: v2/App/Helpers/Woocommerce.php:1004
3471
  msgid "Woocommerce after shop loop(Archive / Shop / Cat Pages)"
3472
  msgstr ""
3473
 
3474
- #: v2/App/Helpers/Woocommerce.php:1005
3475
  msgid ""
3476
  "Woocommerce after main content(Archive / Shop / Cat Pages / single product)"
3477
  msgstr ""
3478
 
3479
- #: v2/App/Helpers/Woocommerce.php:1006 v2/App/Views/Admin/Tabs/settings.php:230
3480
  #: v2/App/Views/Admin/Tabs/settings.php:248
3481
  msgid "Woocommerce before single product"
3482
  msgstr ""
3483
 
3484
- #: v2/App/Helpers/Woocommerce.php:1007 v2/App/Views/Admin/Tabs/settings.php:232
3485
  #: v2/App/Views/Admin/Tabs/settings.php:250
3486
  msgid "Woocommerce before single product summary"
3487
  msgstr ""
3488
 
3489
- #: v2/App/Helpers/Woocommerce.php:1008 v2/App/Views/Admin/Tabs/settings.php:231
3490
  #: v2/App/Views/Admin/Tabs/settings.php:249
3491
  msgid "Woocommerce after single product summary"
3492
  msgstr ""
3493
 
3494
- #: v2/App/Helpers/Woocommerce.php:1009 v2/App/Views/Admin/Tabs/settings.php:229
3495
  #: v2/App/Views/Admin/Tabs/settings.php:247
3496
  msgid "Woocommerce after single product"
3497
  msgstr ""
3498
 
3499
- #: v2/App/Helpers/Woocommerce.php:1010
3500
  msgid "Woocommerce before cart"
3501
  msgstr ""
3502
 
3503
- #: v2/App/Helpers/Woocommerce.php:1011
3504
  msgid "Woocommerce before cart table"
3505
  msgstr ""
3506
 
3507
- #: v2/App/Helpers/Woocommerce.php:1012
3508
  msgid "Woocommerce before cart contents"
3509
  msgstr ""
3510
 
3511
- #: v2/App/Helpers/Woocommerce.php:1013
3512
  msgid "Woocommerce cart contents"
3513
  msgstr ""
3514
 
3515
- #: v2/App/Helpers/Woocommerce.php:1014
3516
  msgid "Woocommerce after cart contents"
3517
  msgstr ""
3518
 
3519
- #: v2/App/Helpers/Woocommerce.php:1015
3520
  msgid "Woocommerce after cart table"
3521
  msgstr ""
3522
 
3523
- #: v2/App/Helpers/Woocommerce.php:1016
3524
  msgid "Woocommerce after cart"
3525
  msgstr ""
3526
 
3527
- #: v2/App/Helpers/Woocommerce.php:1017
3528
  msgid "Woocommerce before checkout form"
3529
  msgstr ""
3530
 
3531
- #: v2/App/Helpers/Woocommerce.php:1019
3532
  msgid "Woocommerce before checkout billing form"
3533
  msgstr ""
3534
 
3535
- #: v2/App/Helpers/Woocommerce.php:1020
3536
  msgid "Woocommerce after checkout billing form"
3537
  msgstr ""
3538
 
3539
- #: v2/App/Helpers/Woocommerce.php:1021
3540
  msgid "Woocommerce before checkout shipping form"
3541
  msgstr ""
3542
 
3543
- #: v2/App/Helpers/Woocommerce.php:1022
3544
  msgid "Woocommerce after checkout shipping form"
3545
  msgstr ""
3546
 
3547
- #: v2/App/Helpers/Woocommerce.php:1023
3548
  msgid "Woocommerce before order notes"
3549
  msgstr ""
3550
 
3551
- #: v2/App/Helpers/Woocommerce.php:1024
3552
  msgid "Woocommerce after order notes"
3553
  msgstr ""
3554
 
 
 
 
 
3555
  #: v2/App/Views/Admin/Menu.php:33
3556
  msgid "Rebuild index"
3557
  msgstr ""
@@ -3623,6 +1287,24 @@ msgstr ""
3623
  msgid "Rules (Optional)"
3624
  msgstr ""
3625
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3626
  #: v2/App/Views/Admin/Rules/Conditions/Main.php:25
3627
  msgid "Conditions Relationship "
3628
  msgstr ""
@@ -3688,6 +1370,10 @@ msgstr ""
3688
  msgid "Select values"
3689
  msgstr ""
3690
 
 
 
 
 
3691
  #: v2/App/Views/Admin/Rules/DiscountBatch/Main.php:10
3692
  msgid "Discount Bar (optional) - Display discount information"
3693
  msgstr ""
@@ -3721,6 +1407,42 @@ msgstr ""
3721
  msgid "Show/hide discount bar on product pages"
3722
  msgstr ""
3723
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3724
  #: v2/App/Views/Admin/Rules/DiscountBatch/Main.php:50
3725
  #: v2/App/Views/Admin/Rules/DiscountBatch/Main.php:71
3726
  #: v2/App/Views/Admin/Rules/DiscountBatch/Main.php:92
@@ -3846,6 +1568,11 @@ msgstr ""
3846
  msgid "Fixed discount per product -PRO-"
3847
  msgstr ""
3848
 
 
 
 
 
 
3849
  #: v2/App/Views/Admin/Rules/Discounts/Cart.php:40
3850
  msgid "Discount label"
3851
  msgstr ""
@@ -4035,6 +1762,14 @@ msgstr ""
4035
  msgid "Select Products"
4036
  msgstr ""
4037
 
 
 
 
 
 
 
 
 
4038
  #: v2/App/Views/Admin/Rules/Manage.php:20
4039
  msgid " Start date and time is set in the future date"
4040
  msgstr ""
@@ -4063,6 +1798,10 @@ msgstr ""
4063
  msgid "#Rule ID: "
4064
  msgstr ""
4065
 
 
 
 
 
4066
  #: v2/App/Views/Admin/Rules/Manage.php:136
4067
  msgid "Save & Close"
4068
  msgstr ""
@@ -4119,6 +1858,11 @@ msgid ""
4119
  "text when his cart quantities reaches 3"
4120
  msgstr ""
4121
 
 
 
 
 
 
4122
  #: v2/App/Views/Admin/Rules/Others/QuantityPromotion.php:32
4123
  #, php-format
4124
  msgid "Buy {{difference_quantity}} more products and get 10% discount"
@@ -4134,6 +1878,10 @@ msgid ""
4134
  "<b>Eg:</b> Buy {{difference_quantity}} more products and get 10% discount"
4135
  msgstr ""
4136
 
 
 
 
 
4137
  #: v2/App/Views/Admin/Rules/Others/SubtotalPromotion.php:26
4138
  #, php-format
4139
  msgid ""
@@ -4142,6 +1890,20 @@ msgid ""
4142
  "his cart subtotal reaches 900"
4143
  msgstr ""
4144
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4145
  #: v2/App/Views/Admin/Tabs/AdvancedOptions.php:11
4146
  msgid ""
4147
  "Discount Rules Advanced Options <span style=\"color:tomato; font-weight: "
@@ -4167,6 +1929,10 @@ msgstr ""
4167
  msgid "Disable recalculate when coupon apply"
4168
  msgstr ""
4169
 
 
 
 
 
4170
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:16
4171
  msgid "Migrate rules from v1"
4172
  msgstr ""
@@ -4207,12 +1973,29 @@ msgstr ""
4207
  msgid "Skip"
4208
  msgstr ""
4209
 
 
 
 
 
4210
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:68
4211
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:74
4212
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:85
4213
  msgid "Search Rules"
4214
  msgstr ""
4215
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4216
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:89
4217
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:374
4218
  msgid "item"
@@ -4223,11 +2006,36 @@ msgstr ""
4223
  msgid "items"
4224
  msgstr ""
4225
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4226
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:119
4227
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:345
4228
  msgid "Language(s)"
4229
  msgstr ""
4230
 
 
 
 
 
 
 
 
 
 
 
4231
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:151
4232
  msgid "Exclusive"
4233
  msgstr ""
@@ -4245,6 +2053,11 @@ msgstr ""
4245
  msgid "Modified by: "
4246
  msgstr ""
4247
 
 
 
 
 
 
4248
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:203
4249
  msgid "Set Discount"
4250
  msgstr ""
@@ -4261,6 +2074,11 @@ msgstr ""
4261
  msgid "Enabled"
4262
  msgstr ""
4263
 
 
 
 
 
 
4264
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:263
4265
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:277
4266
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:290
@@ -4286,10 +2104,94 @@ msgstr ""
4286
  msgid " - ( Not running - validity expired)"
4287
  msgstr ""
4288
 
 
 
 
 
 
 
 
 
4289
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:318
4290
  msgid "No rules found."
4291
  msgstr ""
4292
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4293
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:408
4294
  #: v2/App/Views/Admin/Tabs/help.php:179
4295
  msgid "Go PRO"
@@ -4455,6 +2357,22 @@ msgstr ""
4455
  msgid "Installation of Advanced discount rules"
4456
  msgstr ""
4457
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4458
  #: v2/App/Views/Admin/Tabs/help.php:46
4459
  msgid "Setting up Discount Rules"
4460
  msgstr ""
@@ -4468,6 +2386,34 @@ msgstr ""
4468
  msgid "Price rules/BOGO discounts"
4469
  msgstr ""
4470
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4471
  #: v2/App/Views/Admin/Tabs/help.php:93
4472
  msgid "Buy One Get One Discount for Products from Same Category"
4473
  msgstr ""
@@ -4482,10 +2428,38 @@ msgstr ""
4482
  msgid "Cart Based Rules"
4483
  msgstr ""
4484
 
 
 
 
 
 
 
 
 
 
 
 
 
4485
  #: v2/App/Views/Admin/Tabs/help.php:135
4486
  msgid " Shipping address based discount"
4487
  msgstr ""
4488
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4489
  #: v2/App/Views/Admin/Tabs/settings.php:23
4490
  msgid "Calculate discount from"
4491
  msgstr ""
@@ -4494,6 +2468,14 @@ msgstr ""
4494
  msgid "sale price or regular price"
4495
  msgstr ""
4496
 
 
 
 
 
 
 
 
 
4497
  #: v2/App/Views/Admin/Tabs/settings.php:35
4498
  msgid "Apply discount"
4499
  msgstr ""
@@ -4536,6 +2518,24 @@ msgstr ""
4536
  msgid "Choose how discount rules should work"
4537
  msgstr ""
4538
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4539
  #: v2/App/Views/Admin/Tabs/settings.php:81
4540
  msgid "Refresh order review in checkout"
4541
  msgstr ""
@@ -4570,14 +2570,36 @@ msgstr ""
4570
  msgid "show on-sale badge"
4571
  msgstr ""
4572
 
 
 
 
 
4573
  #: v2/App/Views/Admin/Tabs/settings.php:146
4574
  msgid "Show on products that are covered under any discount rule in the plugin"
4575
  msgstr ""
4576
 
 
 
 
 
 
 
 
 
4577
  #: v2/App/Views/Admin/Tabs/settings.php:154
4578
  msgid "Customize the sale badge"
4579
  msgstr ""
4580
 
 
 
 
 
 
 
 
 
 
 
4581
  #: v2/App/Views/Admin/Tabs/settings.php:173
4582
  msgid ""
4583
  "I would like to display percentage in sale badge (Displays only when rule "
@@ -4596,6 +2618,12 @@ msgid ""
4596
  "rules configured in this plugin <b>Eg:</b><span class=\"onsale\">Sale!</span>"
4597
  msgstr ""
4598
 
 
 
 
 
 
 
4599
  #: v2/App/Views/Admin/Tabs/settings.php:191
4600
  msgid "Sale badge percentage content"
4601
  msgstr ""
@@ -4681,6 +2709,18 @@ msgstr ""
4681
  msgid "Show Strikeout when this option is matched"
4682
  msgstr ""
4683
 
 
 
 
 
 
 
 
 
 
 
 
 
4684
  #: v2/App/Views/Admin/Tabs/settings.php:298
4685
  msgid "Show strikeout on cart"
4686
  msgstr ""
@@ -4714,6 +2754,10 @@ msgstr ""
4714
  msgid "Discount label for combined discounts"
4715
  msgstr ""
4716
 
 
 
 
 
4717
  #: v2/App/Views/Admin/Tabs/settings.php:363
4718
  msgid "Condition based promotion"
4719
  msgstr ""
@@ -4746,6 +2790,22 @@ msgstr ""
4746
  msgid "Select the page to display promotion message"
4747
  msgstr ""
4748
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4749
  #: v2/App/Views/Admin/Tabs/settings.php:393
4750
  msgid "Display you saved text"
4751
  msgstr ""
@@ -4754,6 +2814,22 @@ msgstr ""
4754
  msgid "Display you saved text when rule applied"
4755
  msgstr ""
4756
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4757
  #: v2/App/Views/Admin/Tabs/settings.php:409
4758
  msgid "You save text to show when rule applied"
4759
  msgstr ""
@@ -4869,6 +2945,14 @@ msgstr ""
4869
  msgid "Show/Hide table header column names"
4870
  msgstr ""
4871
 
 
 
 
 
 
 
 
 
4872
  #: v2/App/Views/Admin/Tabs/settings.php:647
4873
  msgid "Title column Name on table"
4874
  msgstr ""
4
  "Content-Type: text/plain; charset=UTF-8\n"
5
  "Content-Transfer-Encoding: 8bit\n"
6
  "Project-Id-Version: Woo Discount Rules\n"
7
+ "POT-Creation-Date: 2022-04-05\n"
8
+ "PO-Revision-Date: 2022-04-05"
9
  "Language-Team: Flycart\n"
10
  "MIME-Version: 1.0\n"
11
  "Language: \n"
12
  "X-Generator: Loco https://localise.biz/\n"
13
  "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;"
14
 
15
+ #: common.php:9 v2/App/Controllers/Admin/WDRAjax.php:782
16
+ msgid "Invalid request"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  msgstr ""
18
 
19
+ #: common.php:20
20
+ msgid "Discount Rules 2.0 requires minimum PHP version of "
21
  msgstr ""
22
 
23
+ #: common.php:24
24
+ msgid "Discount Rules 2.0 requires at least Woocommerce"
25
  msgstr ""
26
 
27
+ #: common.php:44
 
28
  msgid ""
29
+ "Since 2.0, you need BOTH Core and Pro (2.0) packages installed and "
30
+ "activated. Please download the Pro 2.0 pack from My Downloads page in our "
31
+ "site, install and activate it. <a href=\"https://docs.flycart.org/en/"
32
+ "articles/4006520-switching-to-2-0-from-v1-x-versions?utm_source=woo-discount-"
33
+ "rules-v2&utm_campaign=doc&utm_medium=text-click&utm_content=switch_to_v2\" "
34
+ "target=\"_blank\">Here is a guide and video tutorial</a>"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  msgstr ""
36
 
37
+ #: common.php:66
38
+ msgid "Discount Rules V2 comes with a better UI and advanced options."
 
 
 
39
  msgstr ""
40
 
41
+ #: common.php:67
42
+ msgid "Switch to New User Interface"
43
  msgstr ""
44
 
45
+ #: common.php:70
46
+ msgid "Would you like to switch to older Woo Discount Rules?"
47
  msgstr ""
48
 
49
+ #: common.php:71
50
+ msgid "Click here to Switch back"
51
  msgstr ""
52
 
53
+ #: common.php:193
54
  msgid ""
55
+ "This plugin can not be activated because it requires minimum PHP version of "
 
 
 
 
 
 
 
56
  msgstr ""
57
 
58
+ #: common.php:196
59
  msgid ""
60
+ "Woocommerce must installed and activated in-order to use Advanced woo "
61
+ "discount rules!"
 
 
62
  msgstr ""
63
 
64
+ #: common.php:199
65
+ msgid " Advanced woo discount rules requires at least Woocommerce"
66
  msgstr ""
67
 
68
+ #: v1/index.php:27 v1/index.php:28 v1/menu-html.php:97
69
+ #: v2/App/Controllers/Admin/Settings.php:41
70
+ #: v2/App/Controllers/Admin/Settings.php:42
71
+ msgid "Woo Discount Rules"
72
  msgstr ""
73
 
74
+ #: v1/index.php:84 v2/App/Helpers/Helper.php:325
75
+ msgid "Invalid token"
76
  msgstr ""
77
 
78
  #: v2/App/Compatibility/AeliaCurrencySwitcherByAelia.php:49
144
  msgid "Cart"
145
  msgstr ""
146
 
147
+ #: v2/App/Conditions/CartSubTotal.php:18 v2/App/Helpers/Helper.php:162
148
+ msgid "Subtotal"
149
+ msgstr ""
150
+
151
+ #: v2/App/Controllers/Admin/Settings.php:66
152
+ #: v2/App/Controllers/Admin/Tabs/GeneralSettings.php:23
153
+ msgid "Settings"
154
+ msgstr ""
155
+
156
  #: v2/App/Controllers/Admin/Settings.php:165
157
  msgid ""
158
  "We found that your were using our old \"Woo discount rules\" plugin, Please "
171
  msgid "Searching…"
172
  msgstr ""
173
 
174
+ #: v2/App/Controllers/Admin/Settings.php:329
175
+ msgid "Guest"
176
+ msgstr ""
177
+
178
+ #: v2/App/Controllers/Admin/Settings.php:437
179
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:78
180
+ msgid "Disable"
181
+ msgstr ""
182
+
183
+ #: v2/App/Controllers/Admin/Settings.php:438
184
+ msgid "Active"
185
+ msgstr ""
186
+
187
+ #: v2/App/Controllers/Admin/Settings.php:439
188
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:77
189
+ msgid "Enable"
190
+ msgstr ""
191
+
192
  #: v2/App/Controllers/Admin/Settings.php:440
193
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:294
194
  msgid " - (Running)"
256
  msgid "If you make this recursive other row(s) will be removed!"
257
  msgstr ""
258
 
259
+ #: v2/App/Controllers/Admin/Settings.php:456
260
+ msgid "Quantity"
261
+ msgstr ""
262
+
263
  #: v2/App/Controllers/Admin/Settings.php:457
264
  msgid "Minimum Quantity"
265
  msgstr ""
268
  msgid "Discount value"
269
  msgstr ""
270
 
271
+ #: v2/App/Controllers/Admin/Settings.php:459
272
+ msgid "Discount percentage"
273
+ msgstr ""
274
+
275
  #: v2/App/Controllers/Admin/Settings.php:460
276
  msgid "Filter (Buy)"
277
  msgstr ""
288
  "<p>Note : You can also exclude products/categories.</p>"
289
  msgstr ""
290
 
291
+ #: v2/App/Controllers/Admin/Settings.php:464 v2/App/Helpers/Rule.php:1237
292
+ #: v2/App/Views/Admin/Rules/Discounts/Bulk.php:59
293
+ #: v2/App/Views/Admin/Rules/Manage.php:242
294
+ msgid "Discount"
295
+ msgstr ""
296
+
297
  #: v2/App/Controllers/Admin/Settings.php:465
298
  msgid ""
299
  "Discount - <a href=\"https://docs.flycart.org/en/articles/3914904-bulk-"
568
  msgid "Discount Rules"
569
  msgstr ""
570
 
571
+ #: v2/App/Controllers/Admin/Tabs/Help.php:17
572
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:58
573
+ #: v2/App/Views/Admin/Tabs/help.php:8
574
+ msgid "Documentation"
575
+ msgstr ""
576
+
577
  #: v2/App/Controllers/Admin/Tabs/ImportExport.php:19
578
  msgid "Import/Export"
579
  msgstr ""
597
  msgid "Reports"
598
  msgstr ""
599
 
600
+ #: v2/App/Controllers/Admin/Tabs/Statistics.php:39
601
+ msgid "Rule Name"
602
+ msgstr ""
603
+
604
  #: v2/App/Controllers/Admin/Tabs/Statistics.php:47
605
  msgid "All Rules"
606
  msgstr ""
614
  msgid "All Rules (except cart adjustment type)"
615
  msgstr ""
616
 
617
+ #: v2/App/Controllers/Admin/Tabs/Statistics.php:121
618
+ #: v2/App/Controllers/Admin/WDRAjax.php:69
619
+ #: v2/App/Controllers/Admin/WDRAjax.php:72
620
+ msgid "Authentication required"
621
+ msgstr ""
622
+
623
  #: v2/App/Controllers/Admin/WDRAjax.php:743
624
  msgid "Search State"
625
  msgstr ""
635
  msgid "Product"
636
  msgstr ""
637
 
638
+ #: v2/App/Controllers/Base.php:47 v2/App/Views/Admin/Rules/Filters/Main.php:68
639
+ msgid "Products"
640
+ msgstr ""
641
+
642
  #: v2/App/Controllers/Base.php:194 v2/App/Views/Admin/Tabs/DiscountRule.php:191
643
  msgid "Product Adjustment"
644
  msgstr ""
666
  msgid "<span class=\"onsale\">Sale!</span>"
667
  msgstr ""
668
 
669
+ #: v2/App/Controllers/ManageDiscount.php:774
670
+ #: v2/App/Controllers/ManageDiscount.php:994
671
+ #: v2/App/Controllers/ManageDiscount.php:997 v2/App/Helpers/Helper.php:271
672
  #: v2/App/Helpers/Helper.php:272
673
  msgid "Cart discount"
674
  msgstr ""
675
 
676
+ #: v2/App/Controllers/ManageDiscount.php:1058
677
  #, php-format
678
  msgid "Coupon \"%s\" is currently not available!"
679
  msgstr ""
680
 
681
+ #: v2/App/Controllers/ManageDiscount.php:1273
682
+ #, php-format
683
+ msgid ""
684
+ "Sorry, it is not possible to apply coupon <b>\"%s\"</b> as you already have "
685
+ "a discount applied in cart."
686
+ msgstr ""
687
+
688
+ #: v2/App/Controllers/ManageDiscount.php:1287
689
  msgid "Coupon code applied successfully."
690
  msgstr ""
691
 
692
+ #: v2/App/Controllers/ManageDiscount.php:1711
693
  #: v2/App/Views/Admin/Tabs/settings.php:441
694
  msgid "Discount <strong>{{title}}</strong> has been applied to your cart."
695
  msgstr ""
696
 
697
+ #: v2/App/Controllers/ManageDiscount.php:1841
698
  msgid "You saved {{total_discount}}"
699
  msgstr ""
700
 
714
  msgid "Days & Time"
715
  msgstr ""
716
 
717
+ #: v2/App/Helpers/Helper.php:165 v2/App/Helpers/ProOptions.php:192
718
+ #: v2/App/Helpers/ProOptions.php:200 v2/App/Helpers/ProOptions.php:208
719
+ #: v2/App/Helpers/ProOptions.php:216 v2/App/Helpers/ProOptions.php:224
720
+ #: v2/App/Helpers/ProOptions.php:232
721
+ msgid "Purchase History"
722
+ msgstr ""
723
+
724
  #: v2/App/Helpers/Helper.php:166
725
  msgid "Payment Method"
726
  msgstr ""
727
 
728
+ #: v2/App/Helpers/Helper.php:171 v2/App/Views/Admin/Tabs/settings.php:319
729
+ msgid "Coupon"
730
+ msgstr ""
731
+
732
  #: v2/App/Helpers/Helper.php:172
733
  msgid "Shipping Address"
734
  msgstr ""
735
 
736
+ #: v2/App/Helpers/Helper.php:173 v2/App/Views/Admin/Tabs/help.php:145
737
+ msgid "Category Combination"
738
+ msgstr ""
739
+
740
  #: v2/App/Helpers/Helper.php:174
741
  msgid "Product Combination"
742
  msgstr ""
967
  msgid "Untitled Rule"
968
  msgstr ""
969
 
970
+ #: v2/App/Helpers/SurveyForm.php:84
971
+ msgid "Please select an option"
972
+ msgstr ""
973
+
974
+ #: v2/App/Helpers/SurveyForm.php:87
975
+ msgid "Sending Feedback"
976
+ msgstr ""
977
+
978
+ #: v2/App/Helpers/SurveyForm.php:241
979
+ msgid "Upgrading to PRO."
980
+ msgstr ""
981
+
982
+ #: v2/App/Helpers/SurveyForm.php:245
983
+ msgid "I am switching to a different discount plugin."
984
+ msgstr ""
985
+
986
+ #: v2/App/Helpers/SurveyForm.php:249
987
+ msgid "I could not get my discount rule to work."
988
+ msgstr ""
989
+
990
+ #: v2/App/Helpers/SurveyForm.php:253
991
+ msgid "It does not meet my discount requirements."
992
+ msgstr ""
993
+
994
+ #: v2/App/Helpers/SurveyForm.php:257
995
+ msgid "Plugin is complex."
996
+ msgstr ""
997
+
998
+ #: v2/App/Helpers/SurveyForm.php:261
999
+ msgid "I'm trying to troubleshoot the plugin."
1000
+ msgstr ""
1001
+
1002
+ #: v2/App/Helpers/SurveyForm.php:265
1003
+ msgid "I was instructed to deactivate by Flycart Support."
1004
+ msgstr ""
1005
+
1006
+ #: v2/App/Helpers/SurveyForm.php:269
1007
+ msgid "I no longer use this plugin."
1008
+ msgstr ""
1009
+
1010
+ #: v2/App/Helpers/SurveyForm.php:273
1011
+ msgid "It's a temporary deactivation."
1012
+ msgstr ""
1013
+
1014
+ #: v2/App/Helpers/SurveyForm.php:277
1015
+ msgid "Other"
1016
+ msgstr ""
1017
+
1018
+ #: v2/App/Helpers/SurveyForm.php:279
1019
+ msgid "Please share the reason"
1020
+ msgstr ""
1021
+
1022
+ #: v2/App/Helpers/SurveyForm.php:289
1023
+ msgid "Quick Feedback"
1024
+ msgstr ""
1025
+
1026
+ #: v2/App/Helpers/SurveyForm.php:290
1027
+ msgid "Close"
1028
+ msgstr ""
1029
+
1030
+ #: v2/App/Helpers/SurveyForm.php:298
1031
+ #, php-format
1032
+ msgid "If you have a moment, please share why you are deactivating %s:"
1033
+ msgstr ""
1034
+
1035
+ #: v2/App/Helpers/SurveyForm.php:299
1036
+ msgid "Discount Rules for WooCommerce"
1037
+ msgstr ""
1038
+
1039
+ #: v2/App/Helpers/SurveyForm.php:327
1040
+ msgid "Submit & Deactivate"
1041
+ msgstr ""
1042
+
1043
+ #: v2/App/Helpers/SurveyForm.php:329
1044
+ msgid "Skip & Deactivate"
1045
+ msgstr ""
1046
+
1047
  #: v2/App/Helpers/Validation.php:146 v2/App/Helpers/Validation.php:151
1048
  #: v2/App/Helpers/Validation.php:348 v2/App/Helpers/Validation.php:544
1049
  msgid "Invalid characters"
1086
  msgid "Validation error"
1087
  msgstr ""
1088
 
1089
+ #: v2/App/Helpers/Woocommerce.php:985
1090
  msgid "Sunday"
1091
  msgstr ""
1092
 
1093
+ #: v2/App/Helpers/Woocommerce.php:986
1094
  msgid "Monday"
1095
  msgstr ""
1096
 
1097
+ #: v2/App/Helpers/Woocommerce.php:987
1098
  msgid "Tuesday"
1099
  msgstr ""
1100
 
1101
+ #: v2/App/Helpers/Woocommerce.php:988
1102
  msgid "Wednesday"
1103
  msgstr ""
1104
 
1105
+ #: v2/App/Helpers/Woocommerce.php:989
1106
  msgid "Thursday"
1107
  msgstr ""
1108
 
1109
+ #: v2/App/Helpers/Woocommerce.php:990
1110
  msgid "Friday"
1111
  msgstr ""
1112
 
1113
+ #: v2/App/Helpers/Woocommerce.php:991
1114
  msgid "Saturday"
1115
  msgstr ""
1116
 
1117
+ #: v2/App/Helpers/Woocommerce.php:1002
1118
  msgid ""
1119
  "Woocommerce before main content(Archive / Shop / Cat Pages / single product)"
1120
  msgstr ""
1121
 
1122
+ #: v2/App/Helpers/Woocommerce.php:1003
1123
  msgid "Woocommerce archive description(Archive / Shop / Cat Pages)"
1124
  msgstr ""
1125
 
1126
+ #: v2/App/Helpers/Woocommerce.php:1004
1127
  msgid "Woocommerce before shop loop(Archive / Shop / Cat Pages)"
1128
  msgstr ""
1129
 
1130
+ #: v2/App/Helpers/Woocommerce.php:1005
1131
  msgid "Woocommerce after shop loop(Archive / Shop / Cat Pages)"
1132
  msgstr ""
1133
 
1134
+ #: v2/App/Helpers/Woocommerce.php:1006
1135
  msgid ""
1136
  "Woocommerce after main content(Archive / Shop / Cat Pages / single product)"
1137
  msgstr ""
1138
 
1139
+ #: v2/App/Helpers/Woocommerce.php:1007 v2/App/Views/Admin/Tabs/settings.php:230
1140
  #: v2/App/Views/Admin/Tabs/settings.php:248
1141
  msgid "Woocommerce before single product"
1142
  msgstr ""
1143
 
1144
+ #: v2/App/Helpers/Woocommerce.php:1008 v2/App/Views/Admin/Tabs/settings.php:232
1145
  #: v2/App/Views/Admin/Tabs/settings.php:250
1146
  msgid "Woocommerce before single product summary"
1147
  msgstr ""
1148
 
1149
+ #: v2/App/Helpers/Woocommerce.php:1009 v2/App/Views/Admin/Tabs/settings.php:231
1150
  #: v2/App/Views/Admin/Tabs/settings.php:249
1151
  msgid "Woocommerce after single product summary"
1152
  msgstr ""
1153
 
1154
+ #: v2/App/Helpers/Woocommerce.php:1010 v2/App/Views/Admin/Tabs/settings.php:229
1155
  #: v2/App/Views/Admin/Tabs/settings.php:247
1156
  msgid "Woocommerce after single product"
1157
  msgstr ""
1158
 
1159
+ #: v2/App/Helpers/Woocommerce.php:1011
1160
  msgid "Woocommerce before cart"
1161
  msgstr ""
1162
 
1163
+ #: v2/App/Helpers/Woocommerce.php:1012
1164
  msgid "Woocommerce before cart table"
1165
  msgstr ""
1166
 
1167
+ #: v2/App/Helpers/Woocommerce.php:1013
1168
  msgid "Woocommerce before cart contents"
1169
  msgstr ""
1170
 
1171
+ #: v2/App/Helpers/Woocommerce.php:1014
1172
  msgid "Woocommerce cart contents"
1173
  msgstr ""
1174
 
1175
+ #: v2/App/Helpers/Woocommerce.php:1015
1176
  msgid "Woocommerce after cart contents"
1177
  msgstr ""
1178
 
1179
+ #: v2/App/Helpers/Woocommerce.php:1016
1180
  msgid "Woocommerce after cart table"
1181
  msgstr ""
1182
 
1183
+ #: v2/App/Helpers/Woocommerce.php:1017
1184
  msgid "Woocommerce after cart"
1185
  msgstr ""
1186
 
1187
+ #: v2/App/Helpers/Woocommerce.php:1018
1188
  msgid "Woocommerce before checkout form"
1189
  msgstr ""
1190
 
1191
+ #: v2/App/Helpers/Woocommerce.php:1020
1192
  msgid "Woocommerce before checkout billing form"
1193
  msgstr ""
1194
 
1195
+ #: v2/App/Helpers/Woocommerce.php:1021
1196
  msgid "Woocommerce after checkout billing form"
1197
  msgstr ""
1198
 
1199
+ #: v2/App/Helpers/Woocommerce.php:1022
1200
  msgid "Woocommerce before checkout shipping form"
1201
  msgstr ""
1202
 
1203
+ #: v2/App/Helpers/Woocommerce.php:1023
1204
  msgid "Woocommerce after checkout shipping form"
1205
  msgstr ""
1206
 
1207
+ #: v2/App/Helpers/Woocommerce.php:1024
1208
  msgid "Woocommerce before order notes"
1209
  msgstr ""
1210
 
1211
+ #: v2/App/Helpers/Woocommerce.php:1025
1212
  msgid "Woocommerce after order notes"
1213
  msgstr ""
1214
 
1215
+ #: v2/App/Helpers/Woocommerce.php:1559
1216
+ msgid "Coupon already exists in WooCommerce. Please select another name"
1217
+ msgstr ""
1218
+
1219
  #: v2/App/Views/Admin/Menu.php:33
1220
  msgid "Rebuild index"
1221
  msgstr ""
1287
  msgid "Rules (Optional)"
1288
  msgstr ""
1289
 
1290
+ #: v2/App/Views/Admin/Rules/Conditions/Main.php:11
1291
+ #: v2/App/Views/Admin/Rules/Manage.php:181
1292
+ #: v2/App/Views/Admin/Rules/Manage.php:182
1293
+ #: v2/App/Views/Admin/Rules/Manage.php:183
1294
+ #: v2/App/Views/Admin/Rules/Manage.php:184
1295
+ #: v2/App/Views/Admin/Rules/Manage.php:185
1296
+ #: v2/App/Views/Admin/Rules/Manage.php:186
1297
+ #: v2/App/Views/Admin/Rules/Manage.php:187
1298
+ #: v2/App/Views/Admin/Tabs/settings.php:24
1299
+ #: v2/App/Views/Admin/Tabs/settings.php:65
1300
+ #: v2/App/Views/Admin/Tabs/settings.php:138
1301
+ #: v2/App/Views/Admin/Tabs/settings.php:204
1302
+ #: v2/App/Views/Admin/Tabs/settings.php:275
1303
+ #: v2/App/Views/Admin/Tabs/settings.php:394
1304
+ #: v2/App/Views/Admin/Tabs/settings.php:478
1305
+ msgid "Read Docs"
1306
+ msgstr ""
1307
+
1308
  #: v2/App/Views/Admin/Rules/Conditions/Main.php:25
1309
  msgid "Conditions Relationship "
1310
  msgstr ""
1370
  msgid "Select values"
1371
  msgstr ""
1372
 
1373
+ #: v2/App/Views/Admin/Rules/Conditions/Main.php:213
1374
+ msgid "Language"
1375
+ msgstr ""
1376
+
1377
  #: v2/App/Views/Admin/Rules/DiscountBatch/Main.php:10
1378
  msgid "Discount Bar (optional) - Display discount information"
1379
  msgstr ""
1407
  msgid "Show/hide discount bar on product pages"
1408
  msgstr ""
1409
 
1410
+ #: v2/App/Views/Admin/Rules/DiscountBatch/Main.php:43
1411
+ #: v2/App/Views/Admin/Tabs/AdvancedOptions.php:22
1412
+ #: v2/App/Views/Admin/Tabs/AdvancedOptions.php:37
1413
+ #: v2/App/Views/Admin/Tabs/AdvancedOptions.php:52
1414
+ #: v2/App/Views/Admin/Tabs/settings.php:56
1415
+ #: v2/App/Views/Admin/Tabs/settings.php:87
1416
+ #: v2/App/Views/Admin/Tabs/settings.php:103
1417
+ #: v2/App/Views/Admin/Tabs/settings.php:118
1418
+ #: v2/App/Views/Admin/Tabs/settings.php:209
1419
+ #: v2/App/Views/Admin/Tabs/settings.php:304
1420
+ #: v2/App/Views/Admin/Tabs/settings.php:333
1421
+ #: v2/App/Views/Admin/Tabs/settings.php:425
1422
+ #: v2/App/Views/Admin/Tabs/settings.php:563
1423
+ #: v2/App/Views/Admin/Tabs/settings.php:580
1424
+ #: v2/App/Views/Admin/Tabs/settings.php:597
1425
+ msgid "Yes"
1426
+ msgstr ""
1427
+
1428
+ #: v2/App/Views/Admin/Rules/DiscountBatch/Main.php:48
1429
+ #: v2/App/Views/Admin/Tabs/AdvancedOptions.php:26
1430
+ #: v2/App/Views/Admin/Tabs/AdvancedOptions.php:41
1431
+ #: v2/App/Views/Admin/Tabs/AdvancedOptions.php:56
1432
+ #: v2/App/Views/Admin/Tabs/settings.php:60
1433
+ #: v2/App/Views/Admin/Tabs/settings.php:91
1434
+ #: v2/App/Views/Admin/Tabs/settings.php:107
1435
+ #: v2/App/Views/Admin/Tabs/settings.php:122
1436
+ #: v2/App/Views/Admin/Tabs/settings.php:212
1437
+ #: v2/App/Views/Admin/Tabs/settings.php:308
1438
+ #: v2/App/Views/Admin/Tabs/settings.php:339
1439
+ #: v2/App/Views/Admin/Tabs/settings.php:430
1440
+ #: v2/App/Views/Admin/Tabs/settings.php:568
1441
+ #: v2/App/Views/Admin/Tabs/settings.php:585
1442
+ #: v2/App/Views/Admin/Tabs/settings.php:602
1443
+ msgid "No"
1444
+ msgstr ""
1445
+
1446
  #: v2/App/Views/Admin/Rules/DiscountBatch/Main.php:50
1447
  #: v2/App/Views/Admin/Rules/DiscountBatch/Main.php:71
1448
  #: v2/App/Views/Admin/Rules/DiscountBatch/Main.php:92
1568
  msgid "Fixed discount per product -PRO-"
1569
  msgstr ""
1570
 
1571
+ #: v2/App/Views/Admin/Rules/Discounts/Cart.php:33
1572
+ #: v2/App/Views/Admin/Rules/Discounts/simple.php:31
1573
+ msgid "Value"
1574
+ msgstr ""
1575
+
1576
  #: v2/App/Views/Admin/Rules/Discounts/Cart.php:40
1577
  msgid "Discount label"
1578
  msgstr ""
1762
  msgid "Select Products"
1763
  msgstr ""
1764
 
1765
+ #: v2/App/Views/Admin/Rules/Manage.php:20
1766
+ #: v2/App/Views/Admin/Rules/Manage.php:24
1767
+ #: v2/App/Views/Admin/Rules/Manage.php:32
1768
+ #: v2/App/Views/Admin/Rules/Manage.php:36
1769
+ #: v2/App/Views/Admin/Rules/Manage.php:44
1770
+ msgid "This rule is not running currently: "
1771
+ msgstr ""
1772
+
1773
  #: v2/App/Views/Admin/Rules/Manage.php:20
1774
  msgid " Start date and time is set in the future date"
1775
  msgstr ""
1798
  msgid "#Rule ID: "
1799
  msgstr ""
1800
 
1801
+ #: v2/App/Views/Admin/Rules/Manage.php:134
1802
+ msgid "Save"
1803
+ msgstr ""
1804
+
1805
  #: v2/App/Views/Admin/Rules/Manage.php:136
1806
  msgid "Save & Close"
1807
  msgstr ""
1858
  "text when his cart quantities reaches 3"
1859
  msgstr ""
1860
 
1861
+ #: v2/App/Views/Admin/Rules/Others/QuantityPromotion.php:28
1862
+ #: v2/App/Views/Admin/Rules/Others/SubtotalPromotion.php:29
1863
+ msgid "Message"
1864
+ msgstr ""
1865
+
1866
  #: v2/App/Views/Admin/Rules/Others/QuantityPromotion.php:32
1867
  #, php-format
1868
  msgid "Buy {{difference_quantity}} more products and get 10% discount"
1878
  "<b>Eg:</b> Buy {{difference_quantity}} more products and get 10% discount"
1879
  msgstr ""
1880
 
1881
+ #: v2/App/Views/Admin/Rules/Others/SubtotalPromotion.php:19
1882
+ msgid "Subtotal from"
1883
+ msgstr ""
1884
+
1885
  #: v2/App/Views/Admin/Rules/Others/SubtotalPromotion.php:26
1886
  #, php-format
1887
  msgid ""
1890
  "his cart subtotal reaches 900"
1891
  msgstr ""
1892
 
1893
+ #: v2/App/Views/Admin/Rules/Others/SubtotalPromotion.php:33
1894
+ #, php-format
1895
+ msgid "Spend {{difference_amount}} more and get 10% discount"
1896
+ msgstr ""
1897
+
1898
+ #: v2/App/Views/Admin/Rules/Others/SubtotalPromotion.php:34
1899
+ msgid "{{difference_amount}} -> Difference amount to get discount"
1900
+ msgstr ""
1901
+
1902
+ #: v2/App/Views/Admin/Rules/Others/SubtotalPromotion.php:35
1903
+ #, php-format
1904
+ msgid "<b>Eg:</b> Spend {{difference_amount}} more and get 10% discount"
1905
+ msgstr ""
1906
+
1907
  #: v2/App/Views/Admin/Tabs/AdvancedOptions.php:11
1908
  msgid ""
1909
  "Discount Rules Advanced Options <span style=\"color:tomato; font-weight: "
1929
  msgid "Disable recalculate when coupon apply"
1930
  msgstr ""
1931
 
1932
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:13
1933
+ msgid "Add New Rule"
1934
+ msgstr ""
1935
+
1936
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:16
1937
  msgid "Migrate rules from v1"
1938
  msgstr ""
1973
  msgid "Skip"
1974
  msgstr ""
1975
 
1976
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:56
1977
+ msgid "View Examples"
1978
+ msgstr ""
1979
+
1980
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:68
1981
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:74
1982
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:85
1983
  msgid "Search Rules"
1984
  msgstr ""
1985
 
1986
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:76
1987
+ msgid "Bulk Actions"
1988
+ msgstr ""
1989
+
1990
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:79
1991
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:307
1992
+ msgid "Delete"
1993
+ msgstr ""
1994
+
1995
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:81
1996
+ msgid "Apply"
1997
+ msgstr ""
1998
+
1999
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:89
2000
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:374
2001
  msgid "item"
2006
  msgid "items"
2007
  msgstr ""
2008
 
2009
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:105
2010
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:331
2011
+ msgid "Title"
2012
+ msgstr ""
2013
+
2014
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:112
2015
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:338
2016
+ msgid "Start Date"
2017
+ msgstr ""
2018
+
2019
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:114
2020
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:340
2021
+ msgid "Expired On"
2022
+ msgstr ""
2023
+
2024
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:119
2025
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:345
2026
  msgid "Language(s)"
2027
  msgstr ""
2028
 
2029
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:127
2030
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:353
2031
+ msgid "Status"
2032
+ msgstr ""
2033
+
2034
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:129
2035
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:355
2036
+ msgid "Action"
2037
+ msgstr ""
2038
+
2039
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:151
2040
  msgid "Exclusive"
2041
  msgstr ""
2053
  msgid "Modified by: "
2054
  msgstr ""
2055
 
2056
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:197
2057
+ #: v2/App/Views/Admin/Tabs/help.php:112
2058
+ msgid "Free Shipping"
2059
+ msgstr ""
2060
+
2061
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:203
2062
  msgid "Set Discount"
2063
  msgstr ""
2074
  msgid "Enabled"
2075
  msgstr ""
2076
 
2077
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:252
2078
+ #: v2/App/Views/Admin/Tabs/settings.php:398
2079
+ msgid "Disabled"
2080
+ msgstr ""
2081
+
2082
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:263
2083
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:277
2084
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:290
2104
  msgid " - ( Not running - validity expired)"
2105
  msgstr ""
2106
 
2107
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:302
2108
+ msgid "Edit"
2109
+ msgstr ""
2110
+
2111
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:304
2112
+ msgid "Duplicate"
2113
+ msgstr ""
2114
+
2115
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:318
2116
  msgid "No rules found."
2117
  msgstr ""
2118
 
2119
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:389
2120
+ #: v2/App/Views/Admin/Tabs/help.php:160
2121
+ msgid "Looking for more features? Upgrade to PRO"
2122
+ msgstr ""
2123
+
2124
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:394
2125
+ #: v2/App/Views/Admin/Tabs/help.php:165
2126
+ msgid "With PRO version, you can create:"
2127
+ msgstr ""
2128
+
2129
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:395
2130
+ #: v2/App/Views/Admin/Tabs/help.php:166
2131
+ msgid "- Categories based discounts"
2132
+ msgstr ""
2133
+
2134
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:396
2135
+ #: v2/App/Views/Admin/Tabs/help.php:167
2136
+ msgid "- User roles based discounts"
2137
+ msgstr ""
2138
+
2139
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:397
2140
+ #: v2/App/Views/Admin/Tabs/help.php:168
2141
+ msgid "- Buy One Get One Free deals"
2142
+ msgstr ""
2143
+
2144
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:398
2145
+ #: v2/App/Views/Admin/Tabs/help.php:169
2146
+ msgid "- Buy X Get Y deals"
2147
+ msgstr ""
2148
+
2149
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:399
2150
+ #: v2/App/Views/Admin/Tabs/help.php:170
2151
+ #, php-format
2152
+ msgid "- Buy 2, get 1 at 50% discount"
2153
+ msgstr ""
2154
+
2155
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:400
2156
+ #: v2/App/Views/Admin/Tabs/help.php:171
2157
+ msgid "- Buy 3 for $10 (Package / Bundle [Set] Discount)"
2158
+ msgstr ""
2159
+
2160
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:401
2161
+ #: v2/App/Views/Admin/Tabs/help.php:172
2162
+ msgid "- Different discounts with one coupon code"
2163
+ msgstr ""
2164
+
2165
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:402
2166
+ #: v2/App/Views/Admin/Tabs/help.php:173
2167
+ msgid "- Purchase history based discounts"
2168
+ msgstr ""
2169
+
2170
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:403
2171
+ #: v2/App/Views/Admin/Tabs/help.php:174
2172
+ msgid "- Free product / gift"
2173
+ msgstr ""
2174
+
2175
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:404
2176
+ #: v2/App/Views/Admin/Tabs/help.php:175
2177
+ msgid "- Discount for variants"
2178
+ msgstr ""
2179
+
2180
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:405
2181
+ #: v2/App/Views/Admin/Tabs/help.php:176
2182
+ msgid "- Conditional discounts"
2183
+ msgstr ""
2184
+
2185
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:406
2186
+ #: v2/App/Views/Admin/Tabs/help.php:177
2187
+ msgid "- Fixed cost discounts"
2188
+ msgstr ""
2189
+
2190
+ #: v2/App/Views/Admin/Tabs/DiscountRule.php:407
2191
+ #: v2/App/Views/Admin/Tabs/help.php:178
2192
+ msgid "- Offer fixed price on certain conditions"
2193
+ msgstr ""
2194
+
2195
  #: v2/App/Views/Admin/Tabs/DiscountRule.php:408
2196
  #: v2/App/Views/Admin/Tabs/help.php:179
2197
  msgid "Go PRO"
2357
  msgid "Installation of Advanced discount rules"
2358
  msgstr ""
2359
 
2360
+ #: v2/App/Views/Admin/Tabs/help.php:31
2361
+ msgid "License Key activation"
2362
+ msgstr ""
2363
+
2364
+ #: v2/App/Views/Admin/Tabs/help.php:32
2365
+ msgid "Learn how to obtain the license key and activate it"
2366
+ msgstr ""
2367
+
2368
+ #: v2/App/Views/Admin/Tabs/help.php:39
2369
+ msgid "Version Updates!"
2370
+ msgstr ""
2371
+
2372
+ #: v2/App/Views/Admin/Tabs/help.php:40
2373
+ msgid "Learn how to update to latest versions"
2374
+ msgstr ""
2375
+
2376
  #: v2/App/Views/Admin/Tabs/help.php:46
2377
  msgid "Setting up Discount Rules"
2378
  msgstr ""
2386
  msgid "Price rules/BOGO discounts"
2387
  msgstr ""
2388
 
2389
+ #: v2/App/Views/Admin/Tabs/help.php:64
2390
+ msgid "Bulk/Tiered pricing discounts"
2391
+ msgstr ""
2392
+
2393
+ #: v2/App/Views/Admin/Tabs/help.php:65
2394
+ msgid "Learn how to create bulk/tiered quantity discounts in WooCommerce"
2395
+ msgstr ""
2396
+
2397
+ #: v2/App/Views/Admin/Tabs/help.php:75
2398
+ msgid "How to create a perfect BOGO discount rule in WooCommerce"
2399
+ msgstr ""
2400
+
2401
+ #: v2/App/Views/Admin/Tabs/help.php:76
2402
+ msgid ""
2403
+ "Buy One Get One deals can be simple to complex. Learn how to get them "
2404
+ "working correct in your online store"
2405
+ msgstr ""
2406
+
2407
+ #: v2/App/Views/Admin/Tabs/help.php:85
2408
+ msgid "Coupon code based discounts"
2409
+ msgstr ""
2410
+
2411
+ #: v2/App/Views/Admin/Tabs/help.php:86
2412
+ msgid ""
2413
+ "Apply the dynamic discount rules after the customer enters a valid coupon "
2414
+ "code"
2415
+ msgstr ""
2416
+
2417
  #: v2/App/Views/Admin/Tabs/help.php:93
2418
  msgid "Buy One Get One Discount for Products from Same Category"
2419
  msgstr ""
2428
  msgid "Cart Based Rules"
2429
  msgstr ""
2430
 
2431
+ #: v2/App/Views/Admin/Tabs/help.php:113
2432
+ msgid "Learn how to create a free shipping cart based rule"
2433
+ msgstr ""
2434
+
2435
+ #: v2/App/Views/Admin/Tabs/help.php:123
2436
+ msgid "Subtotal based - Tiered discounts"
2437
+ msgstr ""
2438
+
2439
+ #: v2/App/Views/Admin/Tabs/help.php:124
2440
+ msgid "Learn how to create tiered discount based on the subtotal value"
2441
+ msgstr ""
2442
+
2443
  #: v2/App/Views/Admin/Tabs/help.php:135
2444
  msgid " Shipping address based discount"
2445
  msgstr ""
2446
 
2447
+ #: v2/App/Views/Admin/Tabs/help.php:136
2448
+ msgid ""
2449
+ "How to provide a automatic adding free product in cart under certain "
2450
+ "conditions"
2451
+ msgstr ""
2452
+
2453
+ #: v2/App/Views/Admin/Tabs/help.php:146
2454
+ msgid ""
2455
+ "Category Combination (get discount only when Category A+ B + C are in the "
2456
+ "cart)"
2457
+ msgstr ""
2458
+
2459
+ #: v2/App/Views/Admin/Tabs/settings.php:15
2460
+ msgid "General"
2461
+ msgstr ""
2462
+
2463
  #: v2/App/Views/Admin/Tabs/settings.php:23
2464
  msgid "Calculate discount from"
2465
  msgstr ""
2468
  msgid "sale price or regular price"
2469
  msgstr ""
2470
 
2471
+ #: v2/App/Views/Admin/Tabs/settings.php:28
2472
+ msgid "Sale price"
2473
+ msgstr ""
2474
+
2475
+ #: v2/App/Views/Admin/Tabs/settings.php:29
2476
+ msgid "Regular price"
2477
+ msgstr ""
2478
+
2479
  #: v2/App/Views/Admin/Tabs/settings.php:35
2480
  msgid "Apply discount"
2481
  msgstr ""
2518
  msgid "Choose how discount rules should work"
2519
  msgstr ""
2520
 
2521
+ #: v2/App/Views/Admin/Tabs/settings.php:66
2522
+ msgid ""
2523
+ "Choose how discount rules should work when WooCommerce coupons (or third "
2524
+ "party) coupons are used?"
2525
+ msgstr ""
2526
+
2527
+ #: v2/App/Views/Admin/Tabs/settings.php:73
2528
+ msgid "Let both coupons and discount rules run together"
2529
+ msgstr ""
2530
+
2531
+ #: v2/App/Views/Admin/Tabs/settings.php:74
2532
+ msgid "Disable the coupons (discount rules will work)"
2533
+ msgstr ""
2534
+
2535
+ #: v2/App/Views/Admin/Tabs/settings.php:75
2536
+ msgid "Disable the discount rules (coupons will work)"
2537
+ msgstr ""
2538
+
2539
  #: v2/App/Views/Admin/Tabs/settings.php:81
2540
  msgid "Refresh order review in checkout"
2541
  msgstr ""
2570
  msgid "show on-sale badge"
2571
  msgstr ""
2572
 
2573
+ #: v2/App/Views/Admin/Tabs/settings.php:145
2574
+ msgid "Show only after a rule condition is matched exactly"
2575
+ msgstr ""
2576
+
2577
  #: v2/App/Views/Admin/Tabs/settings.php:146
2578
  msgid "Show on products that are covered under any discount rule in the plugin"
2579
  msgstr ""
2580
 
2581
+ #: v2/App/Views/Admin/Tabs/settings.php:147
2582
+ msgid "Do not show"
2583
+ msgstr ""
2584
+
2585
+ #: v2/App/Views/Admin/Tabs/settings.php:153
2586
+ msgid "Do you want to customize the sale badge?"
2587
+ msgstr ""
2588
+
2589
  #: v2/App/Views/Admin/Tabs/settings.php:154
2590
  msgid "Customize the sale badge"
2591
  msgstr ""
2592
 
2593
+ #: v2/App/Views/Admin/Tabs/settings.php:164
2594
+ msgid "Yes, I would like to customize the sale badge"
2595
+ msgstr ""
2596
+
2597
+ #: v2/App/Views/Admin/Tabs/settings.php:168
2598
+ msgid ""
2599
+ "Force override the label for sale badge (useful when your theme has override "
2600
+ "for sale badge)."
2601
+ msgstr ""
2602
+
2603
  #: v2/App/Views/Admin/Tabs/settings.php:173
2604
  msgid ""
2605
  "I would like to display percentage in sale badge (Displays only when rule "
2618
  "rules configured in this plugin <b>Eg:</b><span class=\"onsale\">Sale!</span>"
2619
  msgstr ""
2620
 
2621
+ #: v2/App/Views/Admin/Tabs/settings.php:184
2622
+ #: v2/App/Views/Templates/loop/sale-flash.php:23
2623
+ #: v2/App/Views/Templates/single-product/sale-flash.php:23
2624
+ msgid "Sale!"
2625
+ msgstr ""
2626
+
2627
  #: v2/App/Views/Admin/Tabs/settings.php:191
2628
  msgid "Sale badge percentage content"
2629
  msgstr ""
2709
  msgid "Show Strikeout when this option is matched"
2710
  msgstr ""
2711
 
2712
+ #: v2/App/Views/Admin/Tabs/settings.php:279
2713
+ msgid "Show when a rule condition is matched"
2714
+ msgstr ""
2715
+
2716
+ #: v2/App/Views/Admin/Tabs/settings.php:280
2717
+ msgid "Show after a rule condition is matched"
2718
+ msgstr ""
2719
+
2720
+ #: v2/App/Views/Admin/Tabs/settings.php:281
2721
+ msgid "Shown on quantity update (dynamic)"
2722
+ msgstr ""
2723
+
2724
  #: v2/App/Views/Admin/Tabs/settings.php:298
2725
  msgid "Show strikeout on cart"
2726
  msgstr ""
2754
  msgid "Discount label for combined discounts"
2755
  msgstr ""
2756
 
2757
+ #: v2/App/Views/Admin/Tabs/settings.php:358
2758
+ msgid "Promotion"
2759
+ msgstr ""
2760
+
2761
  #: v2/App/Views/Admin/Tabs/settings.php:363
2762
  msgid "Condition based promotion"
2763
  msgstr ""
2790
  msgid "Select the page to display promotion message"
2791
  msgstr ""
2792
 
2793
+ #: v2/App/Views/Admin/Tabs/settings.php:384
2794
+ msgid "Shop page"
2795
+ msgstr ""
2796
+
2797
+ #: v2/App/Views/Admin/Tabs/settings.php:385
2798
+ msgid "Product page"
2799
+ msgstr ""
2800
+
2801
+ #: v2/App/Views/Admin/Tabs/settings.php:386
2802
+ msgid "Cart page"
2803
+ msgstr ""
2804
+
2805
+ #: v2/App/Views/Admin/Tabs/settings.php:387
2806
+ msgid "Checkout page"
2807
+ msgstr ""
2808
+
2809
  #: v2/App/Views/Admin/Tabs/settings.php:393
2810
  msgid "Display you saved text"
2811
  msgstr ""
2814
  msgid "Display you saved text when rule applied"
2815
  msgstr ""
2816
 
2817
+ #: v2/App/Views/Admin/Tabs/settings.php:399
2818
+ msgid "On each line item"
2819
+ msgstr ""
2820
+
2821
+ #: v2/App/Views/Admin/Tabs/settings.php:400
2822
+ msgid "On after total"
2823
+ msgstr ""
2824
+
2825
+ #: v2/App/Views/Admin/Tabs/settings.php:401
2826
+ msgid "Both in line item and after total"
2827
+ msgstr ""
2828
+
2829
+ #: v2/App/Views/Admin/Tabs/settings.php:408
2830
+ msgid "Savings text to show"
2831
+ msgstr ""
2832
+
2833
  #: v2/App/Views/Admin/Tabs/settings.php:409
2834
  msgid "You save text to show when rule applied"
2835
  msgstr ""
2945
  msgid "Show/Hide table header column names"
2946
  msgstr ""
2947
 
2948
+ #: v2/App/Views/Admin/Tabs/settings.php:639
2949
+ msgid "Show"
2950
+ msgstr ""
2951
+
2952
+ #: v2/App/Views/Admin/Tabs/settings.php:642
2953
+ msgid "Don't Show"
2954
+ msgstr ""
2955
+
2956
  #: v2/App/Views/Admin/Tabs/settings.php:647
2957
  msgid "Title column Name on table"
2958
  msgstr ""
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://flycart.org/
4
  Tags: woocommerce, coupons, discounts, dynamic pricing, Buy One Get One Free, pricing deals, bulk discount, discount
5
  Requires at least: 4.4.1
6
  Tested up to: 5.9
7
- Stable tag: 2.3.13
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -336,6 +336,13 @@ Note : Enable recursive checkbox if the discounts should be applied in sequentia
336
 
337
  == Changelog ==
338
 
 
 
 
 
 
 
 
339
  = 2.3.13 - 09/02/22 =
340
  * Feature - Apply coupon through URL option.
341
  * Improvement - Compatible option for Multi-Currency by WPML.
4
  Tags: woocommerce, coupons, discounts, dynamic pricing, Buy One Get One Free, pricing deals, bulk discount, discount
5
  Requires at least: 4.4.1
6
  Tested up to: 5.9
7
+ Stable tag: 2.4.0
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
336
 
337
  == Changelog ==
338
 
339
+ = 2.4.0 - 06/04/22 =
340
+ * Deprecated: V1 layout.
341
+ * Fix: Calculating discount for out of stock product variant.
342
+ * Fix: Custom taxonomy query while process on-sale page.
343
+ * Fix: Multiple messages on having BXGY cheapest rules.
344
+ * Improvement - Event advanced_woo_discount_rules_cart_strikeout_quantity_html.
345
+
346
  = 2.3.13 - 09/02/22 =
347
  * Feature - Apply coupon through URL option.
348
  * Improvement - Compatible option for Multi-Currency by WPML.
v1/assets/css/bootstrap-datetimepicker.min.css DELETED
@@ -1,9 +0,0 @@
1
- /*!
2
- * Datetimepicker for Bootstrap
3
- *
4
- * Copyright 2012 Stefan Petre
5
- * Improvements by Andrew Rowls
6
- * Licensed under the Apache License v2.0
7
- * http://www.apache.org/licenses/LICENSE-2.0
8
- *
9
- */.datetimepicker{padding:4px;margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;direction:ltr}.datetimepicker-inline{width:220px}.datetimepicker.datetimepicker-rtl{direction:rtl}.datetimepicker.datetimepicker-rtl table tr td span{float:right}.datetimepicker-dropdown,.datetimepicker-dropdown-left{top:0;left:0}[class*=" datetimepicker-dropdown"]:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,0.2);position:absolute}[class*=" datetimepicker-dropdown"]:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute}[class*=" datetimepicker-dropdown-top"]:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,0.2);border-bottom:0}[class*=" datetimepicker-dropdown-top"]:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;border-bottom:0}.datetimepicker-dropdown-bottom-left:before{top:-7px;right:6px}.datetimepicker-dropdown-bottom-left:after{top:-6px;right:7px}.datetimepicker-dropdown-bottom-right:before{top:-7px;left:6px}.datetimepicker-dropdown-bottom-right:after{top:-6px;left:7px}.datetimepicker-dropdown-top-left:before{bottom:-7px;right:6px}.datetimepicker-dropdown-top-left:after{bottom:-6px;right:7px}.datetimepicker-dropdown-top-right:before{bottom:-7px;left:6px}.datetimepicker-dropdown-top-right:after{bottom:-6px;left:7px}.datetimepicker>div{display:none}.datetimepicker.minutes div.datetimepicker-minutes{display:block}.datetimepicker.hours div.datetimepicker-hours{display:block}.datetimepicker.days div.datetimepicker-days{display:block}.datetimepicker.months div.datetimepicker-months{display:block}.datetimepicker.years div.datetimepicker-years{display:block}.datetimepicker table{margin:0}.datetimepicker td,.datetimepicker th{text-align:center;width:20px;height:20px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:0}.table-striped .datetimepicker table tr td,.table-striped .datetimepicker table tr th{background-color:transparent}.datetimepicker table tr td.minute:hover{background:#eee;cursor:pointer}.datetimepicker table tr td.hour:hover{background:#eee;cursor:pointer}.datetimepicker table tr td.day:hover{background:#eee;cursor:pointer}.datetimepicker table tr td.old,.datetimepicker table tr td.new{color:#999}.datetimepicker table tr td.disabled,.datetimepicker table tr td.disabled:hover{background:0;color:#999;cursor:default}.datetimepicker table tr td.today,.datetimepicker table tr td.today:hover,.datetimepicker table tr td.today.disabled,.datetimepicker table tr td.today.disabled:hover{background-color:#fde19a;background-image:-moz-linear-gradient(top,#fdd49a,#fdf59a);background-image:-ms-linear-gradient(top,#fdd49a,#fdf59a);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdd49a),to(#fdf59a));background-image:-webkit-linear-gradient(top,#fdd49a,#fdf59a);background-image:-o-linear-gradient(top,#fdd49a,#fdf59a);background-image:linear-gradient(to bottom,#fdd49a,#fdf59a);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a',endColorstr='#fdf59a',GradientType=0);border-color:#fdf59a #fdf59a #fbed50;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.datetimepicker table tr td.today:hover,.datetimepicker table tr td.today:hover:hover,.datetimepicker table tr td.today.disabled:hover,.datetimepicker table tr td.today.disabled:hover:hover,.datetimepicker table tr td.today:active,.datetimepicker table tr td.today:hover:active,.datetimepicker table tr td.today.disabled:active,.datetimepicker table tr td.today.disabled:hover:active,.datetimepicker table tr td.today.active,.datetimepicker table tr td.today:hover.active,.datetimepicker table tr td.today.disabled.active,.datetimepicker table tr td.today.disabled:hover.active,.datetimepicker table tr td.today.disabled,.datetimepicker table tr td.today:hover.disabled,.datetimepicker table tr td.today.disabled.disabled,.datetimepicker table tr td.today.disabled:hover.disabled,.datetimepicker table tr td.today[disabled],.datetimepicker table tr td.today:hover[disabled],.datetimepicker table tr td.today.disabled[disabled],.datetimepicker table tr td.today.disabled:hover[disabled]{background-color:#fdf59a}.datetimepicker table tr td.today:active,.datetimepicker table tr td.today:hover:active,.datetimepicker table tr td.today.disabled:active,.datetimepicker table tr td.today.disabled:hover:active,.datetimepicker table tr td.today.active,.datetimepicker table tr td.today:hover.active,.datetimepicker table tr td.today.disabled.active,.datetimepicker table tr td.today.disabled:hover.active{background-color:#fbf069}.datetimepicker table tr td.active,.datetimepicker table tr td.active:hover,.datetimepicker table tr td.active.disabled,.datetimepicker table tr td.active.disabled:hover{background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-ms-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc',endColorstr='#0044cc',GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.datetimepicker table tr td.active:hover,.datetimepicker table tr td.active:hover:hover,.datetimepicker table tr td.active.disabled:hover,.datetimepicker table tr td.active.disabled:hover:hover,.datetimepicker table tr td.active:active,.datetimepicker table tr td.active:hover:active,.datetimepicker table tr td.active.disabled:active,.datetimepicker table tr td.active.disabled:hover:active,.datetimepicker table tr td.active.active,.datetimepicker table tr td.active:hover.active,.datetimepicker table tr td.active.disabled.active,.datetimepicker table tr td.active.disabled:hover.active,.datetimepicker table tr td.active.disabled,.datetimepicker table tr td.active:hover.disabled,.datetimepicker table tr td.active.disabled.disabled,.datetimepicker table tr td.active.disabled:hover.disabled,.datetimepicker table tr td.active[disabled],.datetimepicker table tr td.active:hover[disabled],.datetimepicker table tr td.active.disabled[disabled],.datetimepicker table tr td.active.disabled:hover[disabled]{background-color:#04c}.datetimepicker table tr td.active:active,.datetimepicker table tr td.active:hover:active,.datetimepicker table tr td.active.disabled:active,.datetimepicker table tr td.active.disabled:hover:active,.datetimepicker table tr td.active.active,.datetimepicker table tr td.active:hover.active,.datetimepicker table tr td.active.disabled.active,.datetimepicker table tr td.active.disabled:hover.active{background-color:#039}.datetimepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.datetimepicker .datetimepicker-hours span{height:26px;line-height:26px}.datetimepicker .datetimepicker-hours table tr td span.hour_am,.datetimepicker .datetimepicker-hours table tr td span.hour_pm{width:14.6%}.datetimepicker .datetimepicker-hours fieldset legend,.datetimepicker .datetimepicker-minutes fieldset legend{margin-bottom:inherit;line-height:30px}.datetimepicker .datetimepicker-minutes span{height:26px;line-height:26px}.datetimepicker table tr td span:hover{background:#eee}.datetimepicker table tr td span.disabled,.datetimepicker table tr td span.disabled:hover{background:0;color:#999;cursor:default}.datetimepicker table tr td span.active,.datetimepicker table tr td span.active:hover,.datetimepicker table tr td span.active.disabled,.datetimepicker table tr td span.active.disabled:hover{background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-ms-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc',endColorstr='#0044cc',GradientType=0);border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.datetimepicker table tr td span.active:hover,.datetimepicker table tr td span.active:hover:hover,.datetimepicker table tr td span.active.disabled:hover,.datetimepicker table tr td span.active.disabled:hover:hover,.datetimepicker table tr td span.active:active,.datetimepicker table tr td span.active:hover:active,.datetimepicker table tr td span.active.disabled:active,.datetimepicker table tr td span.active.disabled:hover:active,.datetimepicker table tr td span.active.active,.datetimepicker table tr td span.active:hover.active,.datetimepicker table tr td span.active.disabled.active,.datetimepicker table tr td span.active.disabled:hover.active,.datetimepicker table tr td span.active.disabled,.datetimepicker table tr td span.active:hover.disabled,.datetimepicker table tr td span.active.disabled.disabled,.datetimepicker table tr td span.active.disabled:hover.disabled,.datetimepicker table tr td span.active[disabled],.datetimepicker table tr td span.active:hover[disabled],.datetimepicker table tr td span.active.disabled[disabled],.datetimepicker table tr td span.active.disabled:hover[disabled]{background-color:#04c}.datetimepicker table tr td span.active:active,.datetimepicker table tr td span.active:hover:active,.datetimepicker table tr td span.active.disabled:active,.datetimepicker table tr td span.active.disabled:hover:active,.datetimepicker table tr td span.active.active,.datetimepicker table tr td span.active:hover.active,.datetimepicker table tr td span.active.disabled.active,.datetimepicker table tr td span.active.disabled:hover.active{background-color:#039}.datetimepicker table tr td span.old{color:#999}.datetimepicker th.switch{width:145px}.datetimepicker th span.glyphicon{pointer-events:none}.datetimepicker thead tr:first-child th,.datetimepicker tfoot th{cursor:pointer}.datetimepicker thead tr:first-child th:hover,.datetimepicker tfoot th:hover{background:#eee}.input-append.date .add-on i,.input-prepend.date .add-on i,.input-group.date .input-group-addon span{cursor:pointer;width:14px;height:14px}
 
 
 
 
 
 
 
 
 
v1/assets/css/bootstrap.min.css DELETED
@@ -1,6 +0,0 @@
1
- /*!
2
- * Bootstrap v3.4.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2019 Twitter, Inc.
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
- *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:"Glyphicons Halflings";src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format("embedded-opentype"),url(../fonts/glyphicons-halflings-regular.woff2) format("woff2"),url(../fonts/glyphicons-halflings-regular.woff) format("woff"),url(../fonts/glyphicons-halflings-regular.ttf) format("truetype"),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:"Glyphicons Halflings";font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:"\2014 \00A0"}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:""}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:"\00A0 \2014"}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.row-no-gutters{margin-right:0;margin-left:0}.row-no-gutters [class*=col-]{padding-right:0;padding-left:0}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);opacity:.65;-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;background-image:none;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;background-image:none;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;background-image:none;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;background-image:none;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;background-image:none;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;background-image:none;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-right:-15px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:14px;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover>.arrow{border-width:11px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;filter:alpha(opacity=90);opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:"\2039"}.carousel-control .icon-next:before{content:"\203a"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
6
- /*# sourceMappingURL=bootstrap.min.css.map */
 
 
 
 
 
 
v1/assets/css/bootstrap.select.min.css DELETED
@@ -1,6 +0,0 @@
1
- /*!
2
- * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select)
3
- *
4
- * Copyright 2013-2016 bootstrap-select
5
- * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
6
- */select.bs-select-hidden,select.selectpicker{display:none!important}.bootstrap-select{width:220px\9}.bootstrap-select>.dropdown-toggle{width:100%;padding-right:25px;z-index:1}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;display:block!important;width:.5px!important;height:50%!important;padding:0!important;opacity:0!important;border:none}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2}.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select.btn-group.disabled,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group.disabled:focus,.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group.bs-container{position:absolute}.bootstrap-select.btn-group.bs-container .dropdown-menu{z-index:1060}.bootstrap-select.btn-group .dropdown-toggle .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li.active small{color:#fff}.bootstrap-select.btn-group .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option{position:static}.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none}
 
 
 
 
 
 
v1/assets/css/custom.css DELETED
File without changes
v1/assets/css/jquery-ui.css DELETED
@@ -1,1311 +0,0 @@
1
- /*! jQuery UI - v1.12.1 - 2016-09-14
2
- * http://jqueryui.com
3
- * Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
4
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px
5
- * Copyright jQuery Foundation and other contributors; Licensed MIT */
6
-
7
- /* Layout helpers
8
- ----------------------------------*/
9
- .ui-helper-hidden {
10
- display: none;
11
- }
12
- .ui-helper-hidden-accessible {
13
- border: 0;
14
- clip: rect(0 0 0 0);
15
- height: 1px;
16
- margin: -1px;
17
- overflow: hidden;
18
- padding: 0;
19
- position: absolute;
20
- width: 1px;
21
- }
22
- .ui-helper-reset {
23
- margin: 0;
24
- padding: 0;
25
- border: 0;
26
- outline: 0;
27
- line-height: 1.3;
28
- text-decoration: none;
29
- font-size: 100%;
30
- list-style: none;
31
- }
32
- .ui-helper-clearfix:before,
33
- .ui-helper-clearfix:after {
34
- content: "";
35
- display: table;
36
- border-collapse: collapse;
37
- }
38
- .ui-helper-clearfix:after {
39
- clear: both;
40
- }
41
- .ui-helper-zfix {
42
- width: 100%;
43
- height: 100%;
44
- top: 0;
45
- left: 0;
46
- position: absolute;
47
- opacity: 0;
48
- filter:Alpha(Opacity=0); /* support: IE8 */
49
- }
50
-
51
- .ui-front {
52
- z-index: 100;
53
- }
54
-
55
-
56
- /* Interaction Cues
57
- ----------------------------------*/
58
- .ui-state-disabled {
59
- cursor: default !important;
60
- pointer-events: none;
61
- }
62
-
63
-
64
- /* Icons
65
- ----------------------------------*/
66
- .ui-icon {
67
- display: inline-block;
68
- vertical-align: middle;
69
- margin-top: -.25em;
70
- position: relative;
71
- text-indent: -99999px;
72
- overflow: hidden;
73
- background-repeat: no-repeat;
74
- }
75
-
76
- .ui-widget-icon-block {
77
- left: 50%;
78
- margin-left: -8px;
79
- display: block;
80
- }
81
-
82
- /* Misc visuals
83
- ----------------------------------*/
84
-
85
- /* Overlays */
86
- .ui-widget-overlay {
87
- position: fixed;
88
- top: 0;
89
- left: 0;
90
- width: 100%;
91
- height: 100%;
92
- }
93
- .ui-accordion .ui-accordion-header {
94
- display: block;
95
- cursor: pointer;
96
- position: relative;
97
- margin: 2px 0 0 0;
98
- padding: .5em .5em .5em .7em;
99
- font-size: 100%;
100
- }
101
- .ui-accordion .ui-accordion-content {
102
- padding: 1em 2.2em;
103
- border-top: 0;
104
- overflow: auto;
105
- }
106
- .ui-autocomplete {
107
- position: absolute;
108
- top: 0;
109
- left: 0;
110
- cursor: default;
111
- }
112
- .ui-menu {
113
- list-style: none;
114
- padding: 0;
115
- margin: 0;
116
- display: block;
117
- outline: 0;
118
- }
119
- .ui-menu .ui-menu {
120
- position: absolute;
121
- }
122
- .ui-menu .ui-menu-item {
123
- margin: 0;
124
- cursor: pointer;
125
- /* support: IE10, see #8844 */
126
- list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
127
- }
128
- .ui-menu .ui-menu-item-wrapper {
129
- position: relative;
130
- padding: 3px 1em 3px .4em;
131
- }
132
- .ui-menu .ui-menu-divider {
133
- margin: 5px 0;
134
- height: 0;
135
- font-size: 0;
136
- line-height: 0;
137
- border-width: 1px 0 0 0;
138
- }
139
- .ui-menu .ui-state-focus,
140
- .ui-menu .ui-state-active {
141
- margin: -1px;
142
- }
143
-
144
- /* icon support */
145
- .ui-menu-icons {
146
- position: relative;
147
- }
148
- .ui-menu-icons .ui-menu-item-wrapper {
149
- padding-left: 2em;
150
- }
151
-
152
- /* left-aligned */
153
- .ui-menu .ui-icon {
154
- position: absolute;
155
- top: 0;
156
- bottom: 0;
157
- left: .2em;
158
- margin: auto 0;
159
- }
160
-
161
- /* right-aligned */
162
- .ui-menu .ui-menu-icon {
163
- left: auto;
164
- right: 0;
165
- }
166
- .ui-button {
167
- padding: .4em 1em;
168
- display: inline-block;
169
- position: relative;
170
- line-height: normal;
171
- margin-right: .1em;
172
- cursor: pointer;
173
- vertical-align: middle;
174
- text-align: center;
175
- -webkit-user-select: none;
176
- -moz-user-select: none;
177
- -ms-user-select: none;
178
- user-select: none;
179
-
180
- /* Support: IE <= 11 */
181
- overflow: visible;
182
- }
183
-
184
- .ui-button,
185
- .ui-button:link,
186
- .ui-button:visited,
187
- .ui-button:hover,
188
- .ui-button:active {
189
- text-decoration: none;
190
- }
191
-
192
- /* to make room for the icon, a width needs to be set here */
193
- .ui-button-icon-only {
194
- width: 2em;
195
- box-sizing: border-box;
196
- text-indent: -9999px;
197
- white-space: nowrap;
198
- }
199
-
200
- /* no icon support for input elements */
201
- input.ui-button.ui-button-icon-only {
202
- text-indent: 0;
203
- }
204
-
205
- /* button icon element(s) */
206
- .ui-button-icon-only .ui-icon {
207
- position: absolute;
208
- top: 50%;
209
- left: 50%;
210
- margin-top: -8px;
211
- margin-left: -8px;
212
- }
213
-
214
- .ui-button.ui-icon-notext .ui-icon {
215
- padding: 0;
216
- width: 2.1em;
217
- height: 2.1em;
218
- text-indent: -9999px;
219
- white-space: nowrap;
220
-
221
- }
222
-
223
- input.ui-button.ui-icon-notext .ui-icon {
224
- width: auto;
225
- height: auto;
226
- text-indent: 0;
227
- white-space: normal;
228
- padding: .4em 1em;
229
- }
230
-
231
- /* workarounds */
232
- /* Support: Firefox 5 - 40 */
233
- input.ui-button::-moz-focus-inner,
234
- button.ui-button::-moz-focus-inner {
235
- border: 0;
236
- padding: 0;
237
- }
238
- .ui-controlgroup {
239
- vertical-align: middle;
240
- display: inline-block;
241
- }
242
- .ui-controlgroup > .ui-controlgroup-item {
243
- float: left;
244
- margin-left: 0;
245
- margin-right: 0;
246
- }
247
- .ui-controlgroup > .ui-controlgroup-item:focus,
248
- .ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
249
- z-index: 9999;
250
- }
251
- .ui-controlgroup-vertical > .ui-controlgroup-item {
252
- display: block;
253
- float: none;
254
- width: 100%;
255
- margin-top: 0;
256
- margin-bottom: 0;
257
- text-align: left;
258
- }
259
- .ui-controlgroup-vertical .ui-controlgroup-item {
260
- box-sizing: border-box;
261
- }
262
- .ui-controlgroup .ui-controlgroup-label {
263
- padding: .4em 1em;
264
- }
265
- .ui-controlgroup .ui-controlgroup-label span {
266
- font-size: 80%;
267
- }
268
- .ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
269
- border-left: none;
270
- }
271
- .ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
272
- border-top: none;
273
- }
274
- .ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
275
- border-right: none;
276
- }
277
- .ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
278
- border-bottom: none;
279
- }
280
-
281
- /* Spinner specific style fixes */
282
- .ui-controlgroup-vertical .ui-spinner-input {
283
-
284
- /* Support: IE8 only, Android < 4.4 only */
285
- width: 75%;
286
- width: calc( 100% - 2.4em );
287
- }
288
- .ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
289
- border-top-style: solid;
290
- }
291
-
292
- .ui-checkboxradio-label .ui-icon-background {
293
- box-shadow: inset 1px 1px 1px #ccc;
294
- border-radius: .12em;
295
- border: none;
296
- }
297
- .ui-checkboxradio-radio-label .ui-icon-background {
298
- width: 16px;
299
- height: 16px;
300
- border-radius: 1em;
301
- overflow: visible;
302
- border: none;
303
- }
304
- .ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
305
- .ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
306
- background-image: none;
307
- width: 8px;
308
- height: 8px;
309
- border-width: 4px;
310
- border-style: solid;
311
- }
312
- .ui-checkboxradio-disabled {
313
- pointer-events: none;
314
- }
315
- .ui-datepicker {
316
- width: 17em;
317
- padding: .2em .2em 0;
318
- display: none;
319
- }
320
- .ui-datepicker .ui-datepicker-header {
321
- position: relative;
322
- padding: .2em 0;
323
- }
324
- .ui-datepicker .ui-datepicker-prev,
325
- .ui-datepicker .ui-datepicker-next {
326
- position: absolute;
327
- top: 2px;
328
- width: 1.8em;
329
- height: 1.8em;
330
- }
331
- .ui-datepicker .ui-datepicker-prev-hover,
332
- .ui-datepicker .ui-datepicker-next-hover {
333
- top: 1px;
334
- }
335
- .ui-datepicker .ui-datepicker-prev {
336
- left: 2px;
337
- }
338
- .ui-datepicker .ui-datepicker-next {
339
- right: 2px;
340
- }
341
- .ui-datepicker .ui-datepicker-prev-hover {
342
- left: 1px;
343
- }
344
- .ui-datepicker .ui-datepicker-next-hover {
345
- right: 1px;
346
- }
347
- .ui-datepicker .ui-datepicker-prev span,
348
- .ui-datepicker .ui-datepicker-next span {
349
- display: block;
350
- position: absolute;
351
- left: 50%;
352
- margin-left: -8px;
353
- top: 50%;
354
- margin-top: -8px;
355
- }
356
- .ui-datepicker .ui-datepicker-title {
357
- margin: 0 2.3em;
358
- line-height: 1.8em;
359
- text-align: center;
360
- }
361
- .ui-datepicker .ui-datepicker-title select {
362
- font-size: 1em;
363
- margin: 1px 0;
364
- }
365
- .ui-datepicker select.ui-datepicker-month,
366
- .ui-datepicker select.ui-datepicker-year {
367
- width: 45%;
368
- }
369
- .ui-datepicker table {
370
- width: 100%;
371
- font-size: .9em;
372
- border-collapse: collapse;
373
- margin: 0 0 .4em;
374
- }
375
- .ui-datepicker th {
376
- padding: .7em .3em;
377
- text-align: center;
378
- font-weight: bold;
379
- border: 0;
380
- }
381
- .ui-datepicker td {
382
- border: 0;
383
- padding: 1px;
384
- }
385
- .ui-datepicker td span,
386
- .ui-datepicker td a {
387
- display: block;
388
- padding: .2em;
389
- text-align: right;
390
- text-decoration: none;
391
- }
392
- .ui-datepicker .ui-datepicker-buttonpane {
393
- background-image: none;
394
- margin: .7em 0 0 0;
395
- padding: 0 .2em;
396
- border-left: 0;
397
- border-right: 0;
398
- border-bottom: 0;
399
- }
400
- .ui-datepicker .ui-datepicker-buttonpane button {
401
- float: right;
402
- margin: .5em .2em .4em;
403
- cursor: pointer;
404
- padding: .2em .6em .3em .6em;
405
- width: auto;
406
- overflow: visible;
407
- }
408
- .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
409
- float: left;
410
- }
411
-
412
- /* with multiple calendars */
413
- .ui-datepicker.ui-datepicker-multi {
414
- width: auto;
415
- }
416
- .ui-datepicker-multi .ui-datepicker-group {
417
- float: left;
418
- }
419
- .ui-datepicker-multi .ui-datepicker-group table {
420
- width: 95%;
421
- margin: 0 auto .4em;
422
- }
423
- .ui-datepicker-multi-2 .ui-datepicker-group {
424
- width: 50%;
425
- }
426
- .ui-datepicker-multi-3 .ui-datepicker-group {
427
- width: 33.3%;
428
- }
429
- .ui-datepicker-multi-4 .ui-datepicker-group {
430
- width: 25%;
431
- }
432
- .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
433
- .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
434
- border-left-width: 0;
435
- }
436
- .ui-datepicker-multi .ui-datepicker-buttonpane {
437
- clear: left;
438
- }
439
- .ui-datepicker-row-break {
440
- clear: both;
441
- width: 100%;
442
- font-size: 0;
443
- }
444
-
445
- /* RTL support */
446
- .ui-datepicker-rtl {
447
- direction: rtl;
448
- }
449
- .ui-datepicker-rtl .ui-datepicker-prev {
450
- right: 2px;
451
- left: auto;
452
- }
453
- .ui-datepicker-rtl .ui-datepicker-next {
454
- left: 2px;
455
- right: auto;
456
- }
457
- .ui-datepicker-rtl .ui-datepicker-prev:hover {
458
- right: 1px;
459
- left: auto;
460
- }
461
- .ui-datepicker-rtl .ui-datepicker-next:hover {
462
- left: 1px;
463
- right: auto;
464
- }
465
- .ui-datepicker-rtl .ui-datepicker-buttonpane {
466
- clear: right;
467
- }
468
- .ui-datepicker-rtl .ui-datepicker-buttonpane button {
469
- float: left;
470
- }
471
- .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
472
- .ui-datepicker-rtl .ui-datepicker-group {
473
- float: right;
474
- }
475
- .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
476
- .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
477
- border-right-width: 0;
478
- border-left-width: 1px;
479
- }
480
-
481
- /* Icons */
482
- .ui-datepicker .ui-icon {
483
- display: block;
484
- text-indent: -99999px;
485
- overflow: hidden;
486
- background-repeat: no-repeat;
487
- left: .5em;
488
- top: .3em;
489
- }
490
- .ui-dialog {
491
- position: absolute;
492
- top: 0;
493
- left: 0;
494
- padding: .2em;
495
- outline: 0;
496
- }
497
- .ui-dialog .ui-dialog-titlebar {
498
- padding: .4em 1em;
499
- position: relative;
500
- }
501
- .ui-dialog .ui-dialog-title {
502
- float: left;
503
- margin: .1em 0;
504
- white-space: nowrap;
505
- width: 90%;
506
- overflow: hidden;
507
- text-overflow: ellipsis;
508
- }
509
- .ui-dialog .ui-dialog-titlebar-close {
510
- position: absolute;
511
- right: .3em;
512
- top: 50%;
513
- width: 20px;
514
- margin: -10px 0 0 0;
515
- padding: 1px;
516
- height: 20px;
517
- }
518
- .ui-dialog .ui-dialog-content {
519
- position: relative;
520
- border: 0;
521
- padding: .5em 1em;
522
- background: none;
523
- overflow: auto;
524
- }
525
- .ui-dialog .ui-dialog-buttonpane {
526
- text-align: left;
527
- border-width: 1px 0 0 0;
528
- background-image: none;
529
- margin-top: .5em;
530
- padding: .3em 1em .5em .4em;
531
- }
532
- .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
533
- float: right;
534
- }
535
- .ui-dialog .ui-dialog-buttonpane button {
536
- margin: .5em .4em .5em 0;
537
- cursor: pointer;
538
- }
539
- .ui-dialog .ui-resizable-n {
540
- height: 2px;
541
- top: 0;
542
- }
543
- .ui-dialog .ui-resizable-e {
544
- width: 2px;
545
- right: 0;
546
- }
547
- .ui-dialog .ui-resizable-s {
548
- height: 2px;
549
- bottom: 0;
550
- }
551
- .ui-dialog .ui-resizable-w {
552
- width: 2px;
553
- left: 0;
554
- }
555
- .ui-dialog .ui-resizable-se,
556
- .ui-dialog .ui-resizable-sw,
557
- .ui-dialog .ui-resizable-ne,
558
- .ui-dialog .ui-resizable-nw {
559
- width: 7px;
560
- height: 7px;
561
- }
562
- .ui-dialog .ui-resizable-se {
563
- right: 0;
564
- bottom: 0;
565
- }
566
- .ui-dialog .ui-resizable-sw {
567
- left: 0;
568
- bottom: 0;
569
- }
570
- .ui-dialog .ui-resizable-ne {
571
- right: 0;
572
- top: 0;
573
- }
574
- .ui-dialog .ui-resizable-nw {
575
- left: 0;
576
- top: 0;
577
- }
578
- .ui-draggable .ui-dialog-titlebar {
579
- cursor: move;
580
- }
581
- .ui-draggable-handle {
582
- -ms-touch-action: none;
583
- touch-action: none;
584
- }
585
- .ui-resizable {
586
- position: relative;
587
- }
588
- .ui-resizable-handle {
589
- position: absolute;
590
- font-size: 0.1px;
591
- display: block;
592
- -ms-touch-action: none;
593
- touch-action: none;
594
- }
595
- .ui-resizable-disabled .ui-resizable-handle,
596
- .ui-resizable-autohide .ui-resizable-handle {
597
- display: none;
598
- }
599
- .ui-resizable-n {
600
- cursor: n-resize;
601
- height: 7px;
602
- width: 100%;
603
- top: -5px;
604
- left: 0;
605
- }
606
- .ui-resizable-s {
607
- cursor: s-resize;
608
- height: 7px;
609
- width: 100%;
610
- bottom: -5px;
611
- left: 0;
612
- }
613
- .ui-resizable-e {
614
- cursor: e-resize;
615
- width: 7px;
616
- right: -5px;
617
- top: 0;
618
- height: 100%;
619
- }
620
- .ui-resizable-w {
621
- cursor: w-resize;
622
- width: 7px;
623
- left: -5px;
624
- top: 0;
625
- height: 100%;
626
- }
627
- .ui-resizable-se {
628
- cursor: se-resize;
629
- width: 12px;
630
- height: 12px;
631
- right: 1px;
632
- bottom: 1px;
633
- }
634
- .ui-resizable-sw {
635
- cursor: sw-resize;
636
- width: 9px;
637
- height: 9px;
638
- left: -5px;
639
- bottom: -5px;
640
- }
641
- .ui-resizable-nw {
642
- cursor: nw-resize;
643
- width: 9px;
644
- height: 9px;
645
- left: -5px;
646
- top: -5px;
647
- }
648
- .ui-resizable-ne {
649
- cursor: ne-resize;
650
- width: 9px;
651
- height: 9px;
652
- right: -5px;
653
- top: -5px;
654
- }
655
- .ui-progressbar {
656
- height: 2em;
657
- text-align: left;
658
- overflow: hidden;
659
- }
660
- .ui-progressbar .ui-progressbar-value {
661
- margin: -1px;
662
- height: 100%;
663
- }
664
- .ui-progressbar .ui-progressbar-overlay {
665
- background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");
666
- height: 100%;
667
- filter: alpha(opacity=25); /* support: IE8 */
668
- opacity: 0.25;
669
- }
670
- .ui-progressbar-indeterminate .ui-progressbar-value {
671
- background-image: none;
672
- }
673
- .ui-selectable {
674
- -ms-touch-action: none;
675
- touch-action: none;
676
- }
677
- .ui-selectable-helper {
678
- position: absolute;
679
- z-index: 100;
680
- border: 1px dotted black;
681
- }
682
- .ui-selectmenu-menu {
683
- padding: 0;
684
- margin: 0;
685
- position: absolute;
686
- top: 0;
687
- left: 0;
688
- display: none;
689
- }
690
- .ui-selectmenu-menu .ui-menu {
691
- overflow: auto;
692
- overflow-x: hidden;
693
- padding-bottom: 1px;
694
- }
695
- .ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
696
- font-size: 1em;
697
- font-weight: bold;
698
- line-height: 1.5;
699
- padding: 2px 0.4em;
700
- margin: 0.5em 0 0 0;
701
- height: auto;
702
- border: 0;
703
- }
704
- .ui-selectmenu-open {
705
- display: block;
706
- }
707
- .ui-selectmenu-text {
708
- display: block;
709
- margin-right: 20px;
710
- overflow: hidden;
711
- text-overflow: ellipsis;
712
- }
713
- .ui-selectmenu-button.ui-button {
714
- text-align: left;
715
- white-space: nowrap;
716
- width: 14em;
717
- }
718
- .ui-selectmenu-icon.ui-icon {
719
- float: right;
720
- margin-top: 0;
721
- }
722
- .ui-slider {
723
- position: relative;
724
- text-align: left;
725
- }
726
- .ui-slider .ui-slider-handle {
727
- position: absolute;
728
- z-index: 2;
729
- width: 1.2em;
730
- height: 1.2em;
731
- cursor: default;
732
- -ms-touch-action: none;
733
- touch-action: none;
734
- }
735
- .ui-slider .ui-slider-range {
736
- position: absolute;
737
- z-index: 1;
738
- font-size: .7em;
739
- display: block;
740
- border: 0;
741
- background-position: 0 0;
742
- }
743
-
744
- /* support: IE8 - See #6727 */
745
- .ui-slider.ui-state-disabled .ui-slider-handle,
746
- .ui-slider.ui-state-disabled .ui-slider-range {
747
- filter: inherit;
748
- }
749
-
750
- .ui-slider-horizontal {
751
- height: .8em;
752
- }
753
- .ui-slider-horizontal .ui-slider-handle {
754
- top: -.3em;
755
- margin-left: -.6em;
756
- }
757
- .ui-slider-horizontal .ui-slider-range {
758
- top: 0;
759
- height: 100%;
760
- }
761
- .ui-slider-horizontal .ui-slider-range-min {
762
- left: 0;
763
- }
764
- .ui-slider-horizontal .ui-slider-range-max {
765
- right: 0;
766
- }
767
-
768
- .ui-slider-vertical {
769
- width: .8em;
770
- height: 100px;
771
- }
772
- .ui-slider-vertical .ui-slider-handle {
773
- left: -.3em;
774
- margin-left: 0;
775
- margin-bottom: -.6em;
776
- }
777
- .ui-slider-vertical .ui-slider-range {
778
- left: 0;
779
- width: 100%;
780
- }
781
- .ui-slider-vertical .ui-slider-range-min {
782
- bottom: 0;
783
- }
784
- .ui-slider-vertical .ui-slider-range-max {
785
- top: 0;
786
- }
787
- .ui-sortable-handle {
788
- -ms-touch-action: none;
789
- touch-action: none;
790
- }
791
- .ui-spinner {
792
- position: relative;
793
- display: inline-block;
794
- overflow: hidden;
795
- padding: 0;
796
- vertical-align: middle;
797
- }
798
- .ui-spinner-input {
799
- border: none;
800
- background: none;
801
- color: inherit;
802
- padding: .222em 0;
803
- margin: .2em 0;
804
- vertical-align: middle;
805
- margin-left: .4em;
806
- margin-right: 2em;
807
- }
808
- .ui-spinner-button {
809
- width: 1.6em;
810
- height: 50%;
811
- font-size: .5em;
812
- padding: 0;
813
- margin: 0;
814
- text-align: center;
815
- position: absolute;
816
- cursor: default;
817
- display: block;
818
- overflow: hidden;
819
- right: 0;
820
- }
821
- /* more specificity required here to override default borders */
822
- .ui-spinner a.ui-spinner-button {
823
- border-top-style: none;
824
- border-bottom-style: none;
825
- border-right-style: none;
826
- }
827
- .ui-spinner-up {
828
- top: 0;
829
- }
830
- .ui-spinner-down {
831
- bottom: 0;
832
- }
833
- .ui-tabs {
834
- position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
835
- padding: .2em;
836
- }
837
- .ui-tabs .ui-tabs-nav {
838
- margin: 0;
839
- padding: .2em .2em 0;
840
- }
841
- .ui-tabs .ui-tabs-nav li {
842
- list-style: none;
843
- float: left;
844
- position: relative;
845
- top: 0;
846
- margin: 1px .2em 0 0;
847
- border-bottom-width: 0;
848
- padding: 0;
849
- white-space: nowrap;
850
- }
851
- .ui-tabs .ui-tabs-nav .ui-tabs-anchor {
852
- float: left;
853
- padding: .5em 1em;
854
- text-decoration: none;
855
- }
856
- .ui-tabs .ui-tabs-nav li.ui-tabs-active {
857
- margin-bottom: -1px;
858
- padding-bottom: 1px;
859
- }
860
- .ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
861
- .ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
862
- .ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
863
- cursor: text;
864
- }
865
- .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
866
- cursor: pointer;
867
- }
868
- .ui-tabs .ui-tabs-panel {
869
- display: block;
870
- border-width: 0;
871
- padding: 1em 1.4em;
872
- background: none;
873
- }
874
- .ui-tooltip {
875
- padding: 8px;
876
- position: absolute;
877
- z-index: 9999;
878
- max-width: 300px;
879
- }
880
- body .ui-tooltip {
881
- border-width: 2px;
882
- }
883
- /* Component containers
884
- ----------------------------------*/
885
- .ui-widget {
886
- font-family: Arial,Helvetica,sans-serif;
887
- font-size: 1em;
888
- }
889
- .ui-widget .ui-widget {
890
- font-size: 1em;
891
- }
892
- .ui-widget input,
893
- .ui-widget select,
894
- .ui-widget textarea,
895
- .ui-widget button {
896
- font-family: Arial,Helvetica,sans-serif;
897
- font-size: 1em;
898
- }
899
- .ui-widget.ui-widget-content {
900
- border: 1px solid #c5c5c5;
901
- }
902
- .ui-widget-content {
903
- border: 1px solid #dddddd;
904
- background: #ffffff;
905
- color: #333333;
906
- }
907
- .ui-widget-content a {
908
- color: #333333;
909
- }
910
- .ui-widget-header {
911
- border: 1px solid #dddddd;
912
- background: #e9e9e9;
913
- color: #333333;
914
- font-weight: bold;
915
- }
916
- .ui-widget-header a {
917
- color: #333333;
918
- }
919
-
920
- /* Interaction states
921
- ----------------------------------*/
922
- .ui-state-default,
923
- .ui-widget-content .ui-state-default,
924
- .ui-widget-header .ui-state-default,
925
- .ui-button,
926
-
927
- /* We use html here because we need a greater specificity to make sure disabled
928
- works properly when clicked or hovered */
929
- html .ui-button.ui-state-disabled:hover,
930
- html .ui-button.ui-state-disabled:active {
931
- border: 1px solid #c5c5c5;
932
- background: #f6f6f6;
933
- font-weight: normal;
934
- color: #454545;
935
- }
936
- .ui-state-default a,
937
- .ui-state-default a:link,
938
- .ui-state-default a:visited,
939
- a.ui-button,
940
- a:link.ui-button,
941
- a:visited.ui-button,
942
- .ui-button {
943
- color: #454545;
944
- text-decoration: none;
945
- }
946
- .ui-state-hover,
947
- .ui-widget-content .ui-state-hover,
948
- .ui-widget-header .ui-state-hover,
949
- .ui-state-focus,
950
- .ui-widget-content .ui-state-focus,
951
- .ui-widget-header .ui-state-focus,
952
- .ui-button:hover,
953
- .ui-button:focus {
954
- border: 1px solid #cccccc;
955
- background: #ededed;
956
- font-weight: normal;
957
- color: #2b2b2b;
958
- }
959
- .ui-state-hover a,
960
- .ui-state-hover a:hover,
961
- .ui-state-hover a:link,
962
- .ui-state-hover a:visited,
963
- .ui-state-focus a,
964
- .ui-state-focus a:hover,
965
- .ui-state-focus a:link,
966
- .ui-state-focus a:visited,
967
- a.ui-button:hover,
968
- a.ui-button:focus {
969
- color: #2b2b2b;
970
- text-decoration: none;
971
- }
972
-
973
- .ui-visual-focus {
974
- box-shadow: 0 0 3px 1px rgb(94, 158, 214);
975
- }
976
- .ui-state-active,
977
- .ui-widget-content .ui-state-active,
978
- .ui-widget-header .ui-state-active,
979
- a.ui-button:active,
980
- .ui-button:active,
981
- .ui-button.ui-state-active:hover {
982
- border: 1px solid #003eff;
983
- background: #007fff;
984
- font-weight: normal;
985
- color: #ffffff;
986
- }
987
- .ui-icon-background,
988
- .ui-state-active .ui-icon-background {
989
- border: #003eff;
990
- background-color: #ffffff;
991
- }
992
- .ui-state-active a,
993
- .ui-state-active a:link,
994
- .ui-state-active a:visited {
995
- color: #ffffff;
996
- text-decoration: none;
997
- }
998
-
999
- /* Interaction Cues
1000
- ----------------------------------*/
1001
- .ui-state-highlight,
1002
- .ui-widget-content .ui-state-highlight,
1003
- .ui-widget-header .ui-state-highlight {
1004
- border: 1px solid #dad55e;
1005
- background: #fffa90;
1006
- color: #777620;
1007
- }
1008
- .ui-state-checked {
1009
- border: 1px solid #dad55e;
1010
- background: #fffa90;
1011
- }
1012
- .ui-state-highlight a,
1013
- .ui-widget-content .ui-state-highlight a,
1014
- .ui-widget-header .ui-state-highlight a {
1015
- color: #777620;
1016
- }
1017
- .ui-state-error,
1018
- .ui-widget-content .ui-state-error,
1019
- .ui-widget-header .ui-state-error {
1020
- border: 1px solid #f1a899;
1021
- background: #fddfdf;
1022
- color: #5f3f3f;
1023
- }
1024
- .ui-state-error a,
1025
- .ui-widget-content .ui-state-error a,
1026
- .ui-widget-header .ui-state-error a {
1027
- color: #5f3f3f;
1028
- }
1029
- .ui-state-error-text,
1030
- .ui-widget-content .ui-state-error-text,
1031
- .ui-widget-header .ui-state-error-text {
1032
- color: #5f3f3f;
1033
- }
1034
- .ui-priority-primary,
1035
- .ui-widget-content .ui-priority-primary,
1036
- .ui-widget-header .ui-priority-primary {
1037
- font-weight: bold;
1038
- }
1039
- .ui-priority-secondary,
1040
- .ui-widget-content .ui-priority-secondary,
1041
- .ui-widget-header .ui-priority-secondary {
1042
- opacity: .7;
1043
- filter:Alpha(Opacity=70); /* support: IE8 */
1044
- font-weight: normal;
1045
- }
1046
- .ui-state-disabled,
1047
- .ui-widget-content .ui-state-disabled,
1048
- .ui-widget-header .ui-state-disabled {
1049
- opacity: .35;
1050
- filter:Alpha(Opacity=35); /* support: IE8 */
1051
- background-image: none;
1052
- }
1053
- .ui-state-disabled .ui-icon {
1054
- filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
1055
- }
1056
-
1057
- /* Icons
1058
- ----------------------------------*/
1059
-
1060
- /* states and images */
1061
- .ui-icon {
1062
- width: 16px;
1063
- height: 16px;
1064
- }
1065
- .ui-icon,
1066
- .ui-widget-content .ui-icon {
1067
- background-image: url("images/ui-icons_444444_256x240.png");
1068
- }
1069
- .ui-widget-header .ui-icon {
1070
- background-image: url("images/ui-icons_444444_256x240.png");
1071
- }
1072
- .ui-state-hover .ui-icon,
1073
- .ui-state-focus .ui-icon,
1074
- .ui-button:hover .ui-icon,
1075
- .ui-button:focus .ui-icon {
1076
- background-image: url("images/ui-icons_555555_256x240.png");
1077
- }
1078
- .ui-state-active .ui-icon,
1079
- .ui-button:active .ui-icon {
1080
- background-image: url("images/ui-icons_ffffff_256x240.png");
1081
- }
1082
- .ui-state-highlight .ui-icon,
1083
- .ui-button .ui-state-highlight.ui-icon {
1084
- background-image: url("images/ui-icons_777620_256x240.png");
1085
- }
1086
- .ui-state-error .ui-icon,
1087
- .ui-state-error-text .ui-icon {
1088
- background-image: url("images/ui-icons_cc0000_256x240.png");
1089
- }
1090
- .ui-button .ui-icon {
1091
- background-image: url("images/ui-icons_777777_256x240.png");
1092
- }
1093
-
1094
- /* positioning */
1095
- .ui-icon-blank { background-position: 16px 16px; }
1096
- .ui-icon-caret-1-n { background-position: 0 0; }
1097
- .ui-icon-caret-1-ne { background-position: -16px 0; }
1098
- .ui-icon-caret-1-e { background-position: -32px 0; }
1099
- .ui-icon-caret-1-se { background-position: -48px 0; }
1100
- .ui-icon-caret-1-s { background-position: -65px 0; }
1101
- .ui-icon-caret-1-sw { background-position: -80px 0; }
1102
- .ui-icon-caret-1-w { background-position: -96px 0; }
1103
- .ui-icon-caret-1-nw { background-position: -112px 0; }
1104
- .ui-icon-caret-2-n-s { background-position: -128px 0; }
1105
- .ui-icon-caret-2-e-w { background-position: -144px 0; }
1106
- .ui-icon-triangle-1-n { background-position: 0 -16px; }
1107
- .ui-icon-triangle-1-ne { background-position: -16px -16px; }
1108
- .ui-icon-triangle-1-e { background-position: -32px -16px; }
1109
- .ui-icon-triangle-1-se { background-position: -48px -16px; }
1110
- .ui-icon-triangle-1-s { background-position: -65px -16px; }
1111
- .ui-icon-triangle-1-sw { background-position: -80px -16px; }
1112
- .ui-icon-triangle-1-w { background-position: -96px -16px; }
1113
- .ui-icon-triangle-1-nw { background-position: -112px -16px; }
1114
- .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
1115
- .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
1116
- .ui-icon-arrow-1-n { background-position: 0 -32px; }
1117
- .ui-icon-arrow-1-ne { background-position: -16px -32px; }
1118
- .ui-icon-arrow-1-e { background-position: -32px -32px; }
1119
- .ui-icon-arrow-1-se { background-position: -48px -32px; }
1120
- .ui-icon-arrow-1-s { background-position: -65px -32px; }
1121
- .ui-icon-arrow-1-sw { background-position: -80px -32px; }
1122
- .ui-icon-arrow-1-w { background-position: -96px -32px; }
1123
- .ui-icon-arrow-1-nw { background-position: -112px -32px; }
1124
- .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
1125
- .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
1126
- .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
1127
- .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
1128
- .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
1129
- .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
1130
- .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
1131
- .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
1132
- .ui-icon-arrowthick-1-n { background-position: 1px -48px; }
1133
- .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
1134
- .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
1135
- .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
1136
- .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
1137
- .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
1138
- .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
1139
- .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
1140
- .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
1141
- .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
1142
- .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
1143
- .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
1144
- .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
1145
- .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
1146
- .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
1147
- .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
1148
- .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
1149
- .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
1150
- .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
1151
- .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
1152
- .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
1153
- .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
1154
- .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
1155
- .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
1156
- .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
1157
- .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
1158
- .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
1159
- .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
1160
- .ui-icon-arrow-4 { background-position: 0 -80px; }
1161
- .ui-icon-arrow-4-diag { background-position: -16px -80px; }
1162
- .ui-icon-extlink { background-position: -32px -80px; }
1163
- .ui-icon-newwin { background-position: -48px -80px; }
1164
- .ui-icon-refresh { background-position: -64px -80px; }
1165
- .ui-icon-shuffle { background-position: -80px -80px; }
1166
- .ui-icon-transfer-e-w { background-position: -96px -80px; }
1167
- .ui-icon-transferthick-e-w { background-position: -112px -80px; }
1168
- .ui-icon-folder-collapsed { background-position: 0 -96px; }
1169
- .ui-icon-folder-open { background-position: -16px -96px; }
1170
- .ui-icon-document { background-position: -32px -96px; }
1171
- .ui-icon-document-b { background-position: -48px -96px; }
1172
- .ui-icon-note { background-position: -64px -96px; }
1173
- .ui-icon-mail-closed { background-position: -80px -96px; }
1174
- .ui-icon-mail-open { background-position: -96px -96px; }
1175
- .ui-icon-suitcase { background-position: -112px -96px; }
1176
- .ui-icon-comment { background-position: -128px -96px; }
1177
- .ui-icon-person { background-position: -144px -96px; }
1178
- .ui-icon-print { background-position: -160px -96px; }
1179
- .ui-icon-trash { background-position: -176px -96px; }
1180
- .ui-icon-locked { background-position: -192px -96px; }
1181
- .ui-icon-unlocked { background-position: -208px -96px; }
1182
- .ui-icon-bookmark { background-position: -224px -96px; }
1183
- .ui-icon-tag { background-position: -240px -96px; }
1184
- .ui-icon-home { background-position: 0 -112px; }
1185
- .ui-icon-flag { background-position: -16px -112px; }
1186
- .ui-icon-calendar { background-position: -32px -112px; }
1187
- .ui-icon-cart { background-position: -48px -112px; }
1188
- .ui-icon-pencil { background-position: -64px -112px; }
1189
- .ui-icon-clock { background-position: -80px -112px; }
1190
- .ui-icon-disk { background-position: -96px -112px; }
1191
- .ui-icon-calculator { background-position: -112px -112px; }
1192
- .ui-icon-zoomin { background-position: -128px -112px; }
1193
- .ui-icon-zoomout { background-position: -144px -112px; }
1194
- .ui-icon-search { background-position: -160px -112px; }
1195
- .ui-icon-wrench { background-position: -176px -112px; }
1196
- .ui-icon-gear { background-position: -192px -112px; }
1197
- .ui-icon-heart { background-position: -208px -112px; }
1198
- .ui-icon-star { background-position: -224px -112px; }
1199
- .ui-icon-link { background-position: -240px -112px; }
1200
- .ui-icon-cancel { background-position: 0 -128px; }
1201
- .ui-icon-plus { background-position: -16px -128px; }
1202
- .ui-icon-plusthick { background-position: -32px -128px; }
1203
- .ui-icon-minus { background-position: -48px -128px; }
1204
- .ui-icon-minusthick { background-position: -64px -128px; }
1205
- .ui-icon-close { background-position: -80px -128px; }
1206
- .ui-icon-closethick { background-position: -96px -128px; }
1207
- .ui-icon-key { background-position: -112px -128px; }
1208
- .ui-icon-lightbulb { background-position: -128px -128px; }
1209
- .ui-icon-scissors { background-position: -144px -128px; }
1210
- .ui-icon-clipboard { background-position: -160px -128px; }
1211
- .ui-icon-copy { background-position: -176px -128px; }
1212
- .ui-icon-contact { background-position: -192px -128px; }
1213
- .ui-icon-image { background-position: -208px -128px; }
1214
- .ui-icon-video { background-position: -224px -128px; }
1215
- .ui-icon-script { background-position: -240px -128px; }
1216
- .ui-icon-alert { background-position: 0 -144px; }
1217
- .ui-icon-info { background-position: -16px -144px; }
1218
- .ui-icon-notice { background-position: -32px -144px; }
1219
- .ui-icon-help { background-position: -48px -144px; }
1220
- .ui-icon-check { background-position: -64px -144px; }
1221
- .ui-icon-bullet { background-position: -80px -144px; }
1222
- .ui-icon-radio-on { background-position: -96px -144px; }
1223
- .ui-icon-radio-off { background-position: -112px -144px; }
1224
- .ui-icon-pin-w { background-position: -128px -144px; }
1225
- .ui-icon-pin-s { background-position: -144px -144px; }
1226
- .ui-icon-play { background-position: 0 -160px; }
1227
- .ui-icon-pause { background-position: -16px -160px; }
1228
- .ui-icon-seek-next { background-position: -32px -160px; }
1229
- .ui-icon-seek-prev { background-position: -48px -160px; }
1230
- .ui-icon-seek-end { background-position: -64px -160px; }
1231
- .ui-icon-seek-start { background-position: -80px -160px; }
1232
- /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
1233
- .ui-icon-seek-first { background-position: -80px -160px; }
1234
- .ui-icon-stop { background-position: -96px -160px; }
1235
- .ui-icon-eject { background-position: -112px -160px; }
1236
- .ui-icon-volume-off { background-position: -128px -160px; }
1237
- .ui-icon-volume-on { background-position: -144px -160px; }
1238
- .ui-icon-power { background-position: 0 -176px; }
1239
- .ui-icon-signal-diag { background-position: -16px -176px; }
1240
- .ui-icon-signal { background-position: -32px -176px; }
1241
- .ui-icon-battery-0 { background-position: -48px -176px; }
1242
- .ui-icon-battery-1 { background-position: -64px -176px; }
1243
- .ui-icon-battery-2 { background-position: -80px -176px; }
1244
- .ui-icon-battery-3 { background-position: -96px -176px; }
1245
- .ui-icon-circle-plus { background-position: 0 -192px; }
1246
- .ui-icon-circle-minus { background-position: -16px -192px; }
1247
- .ui-icon-circle-close { background-position: -32px -192px; }
1248
- .ui-icon-circle-triangle-e { background-position: -48px -192px; }
1249
- .ui-icon-circle-triangle-s { background-position: -64px -192px; }
1250
- .ui-icon-circle-triangle-w { background-position: -80px -192px; }
1251
- .ui-icon-circle-triangle-n { background-position: -96px -192px; }
1252
- .ui-icon-circle-arrow-e { background-position: -112px -192px; }
1253
- .ui-icon-circle-arrow-s { background-position: -128px -192px; }
1254
- .ui-icon-circle-arrow-w { background-position: -144px -192px; }
1255
- .ui-icon-circle-arrow-n { background-position: -160px -192px; }
1256
- .ui-icon-circle-zoomin { background-position: -176px -192px; }
1257
- .ui-icon-circle-zoomout { background-position: -192px -192px; }
1258
- .ui-icon-circle-check { background-position: -208px -192px; }
1259
- .ui-icon-circlesmall-plus { background-position: 0 -208px; }
1260
- .ui-icon-circlesmall-minus { background-position: -16px -208px; }
1261
- .ui-icon-circlesmall-close { background-position: -32px -208px; }
1262
- .ui-icon-squaresmall-plus { background-position: -48px -208px; }
1263
- .ui-icon-squaresmall-minus { background-position: -64px -208px; }
1264
- .ui-icon-squaresmall-close { background-position: -80px -208px; }
1265
- .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
1266
- .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
1267
- .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
1268
- .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
1269
- .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
1270
- .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
1271
-
1272
-
1273
- /* Misc visuals
1274
- ----------------------------------*/
1275
-
1276
- /* Corner radius */
1277
- .ui-corner-all,
1278
- .ui-corner-top,
1279
- .ui-corner-left,
1280
- .ui-corner-tl {
1281
- border-top-left-radius: 3px;
1282
- }
1283
- .ui-corner-all,
1284
- .ui-corner-top,
1285
- .ui-corner-right,
1286
- .ui-corner-tr {
1287
- border-top-right-radius: 3px;
1288
- }
1289
- .ui-corner-all,
1290
- .ui-corner-bottom,
1291
- .ui-corner-left,
1292
- .ui-corner-bl {
1293
- border-bottom-left-radius: 3px;
1294
- }
1295
- .ui-corner-all,
1296
- .ui-corner-bottom,
1297
- .ui-corner-right,
1298
- .ui-corner-br {
1299
- border-bottom-right-radius: 3px;
1300
- }
1301
-
1302
- /* Overlays */
1303
- .ui-widget-overlay {
1304
- background: #aaaaaa;
1305
- opacity: .3;
1306
- filter: Alpha(Opacity=30); /* support: IE8 */
1307
- }
1308
- .ui-widget-shadow {
1309
- -webkit-box-shadow: 0px 0px 5px #666666;
1310
- box-shadow: 0px 0px 5px #666666;
1311
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
v1/assets/css/select2.min.css DELETED
@@ -1 +0,0 @@
1
- .select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}
 
v1/assets/css/style.css DELETED
@@ -1,351 +0,0 @@
1
- .row > div{
2
- display: block !important;
3
- }
4
- .hide {
5
- display: none !important;
6
- }
7
-
8
- .show {
9
- display: block !important;
10
- }
11
- .checkbox_label{
12
- margin-bottom: 0;
13
- }
14
- #category_list,
15
- .apply_child_categories{
16
- margin-top: 10px;
17
- }
18
- #form_cart_rule .invalid-field,
19
- #form_price_rule .invalid-field{
20
- border: 1px solid red;
21
- }
22
- #form_cart_rule .error,
23
- #form_price_rule .error{
24
- color: red;
25
- display: inline-block;
26
- padding: 0 5px;
27
- }
28
- .woo-discount-version {
29
- font-size: 16px;
30
- }
31
- .license-success{
32
- color: green;
33
- }
34
- #based_on_purchase_history_fields{
35
- margin-top: 10px;
36
- display: none;
37
- }
38
- .product_based_condition_cont button,
39
- .product_based_condition_cont select,
40
- .product_based_condition_cont input,
41
- .product_based_condition_cont label{
42
- margin: 10px 0;
43
- }
44
- .woo-support-in_pro{
45
- font-style: italic;
46
- color: #999;
47
- }
48
- .discount_product_option_list_con, .discount_product_option_more_cheapest_con, .discount_product_percent_con, .discount_category_option_list_con, .discount_product_option_bogo_con{
49
- display: inline-block;
50
- }
51
- .rule_buttons_con{
52
- margin-top: 15px;
53
- }
54
- .discount_rule_list, .cart_rules_list {
55
- border-bottom: 1px solid #ddd;
56
- margin-bottom: 20px;
57
- }
58
- .product_based_condition_product_from,
59
- .product_based_condition_get_product_discount{
60
- margin: 15px 0;
61
- }
62
- #product_list span.select2-container,
63
- #product_exclude_list span.select2-container{
64
- min-width: 250px ;
65
- width: auto !important;
66
- }
67
- .coupons_to_apply_price_rule_con,
68
- .dynamic_coupons_to_apply_price_rule_con{
69
- margin: 10px 0;
70
- }
71
- .dynamic_coupons_to_apply_price_rule_con input{
72
- max-width: 215px;
73
- }
74
- .woo-discount-hint{
75
- font-size: 13px;
76
- font-style: italic;
77
- }
78
- .coupons_to_apply, .subtotal_to_apply{
79
- max-width: 250px;
80
- }
81
- .discount_product_option {
82
- min-width: 350px;
83
- }
84
- .discount_rule_list input{
85
- width: 95px;
86
- }
87
- .bootstrap-select > select.discount_product_option{
88
- z-index: -1;
89
- }
90
- .discount_product_percent_con, .price_discount_product_list_con{
91
- margin: 10px 0;
92
- }
93
- #product_attributes_list, #product_list, #cumulative_for_products_cont{
94
- margin-top: 10px;
95
- }
96
- .discount_product_item_count_type {
97
- width: 170px !important;
98
- }
99
- .wdr_hide{
100
- display: none;
101
- }
102
- .woo_discount_rules_bulk_action_con{
103
- margin-top: 10px;
104
- }
105
- .woo_discount_loader_outer{
106
- position: relative;
107
- }
108
- .woo_discount_loader_outer .woo_discount_loader{
109
- display: none;
110
- position: absolute;
111
- background-color: rgba(255,255,255,0.5);
112
- top: 0;
113
- left: 0;
114
- width: 100%;
115
- height: 100%;
116
- text-align: center;
117
- }
118
- .woo_discount_loader .lds-ripple {
119
- display: inline-block;
120
- position: relative;
121
- top: 50%;
122
- width: 64px;
123
- height: 64px;
124
- }
125
- .woo_discount_loader .lds-ripple div {
126
- position: absolute;
127
- border: 4px solid #257AF0;
128
- opacity: 1;
129
- border-radius: 50%;
130
- animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;
131
- }
132
- .woo_discount_loader .lds-ripple div:nth-child(2) {
133
- animation-delay: -0.5s;
134
- }
135
- @keyframes lds-ripple {
136
- 0% {
137
- top: 28px;
138
- left: 28px;
139
- width: 0;
140
- height: 0;
141
- opacity: 1;
142
- }
143
- 100% {
144
- top: -1px;
145
- left: -1px;
146
- width: 58px;
147
- height: 58px;
148
- opacity: 0;
149
- }
150
- }
151
- .wdr_read_doc{
152
- font-size: 12px;
153
- }
154
- .wdr_read_documentation_con{
155
- border-bottom: 1px solid #eee;
156
- margin-bottom: 10px;
157
- }
158
- .wdr_read_documentation_con p{
159
- color: #aaa;
160
- font-size: medium;
161
- }
162
- .wdr_current_date_and_time_string{
163
- color: darkgray;
164
- display: inline-block;
165
- margin-top: 10px;
166
- }
167
- .message_on_apply_discount_textarea,.display_you_saved_text_value{
168
- min-width: 500px;
169
- max-width: 100%;
170
- }
171
- .wdr_desc_text{
172
- color: darkgray;
173
- display: inline-block;
174
- font-size: 12px;
175
- }
176
- div.wdr_hide_important{
177
- display: none !important;
178
- }
179
- .price_rule_display_format{
180
- width: 100%;
181
- min-height: 60px;
182
- }
183
- .cart_rules_guide_btn{
184
- margin-bottom: 10px !important;
185
- }
186
- span.wdr_block_span{
187
- display: block;
188
- }
189
- .wdr_status_active_text,.wdr_status_disabled_text {
190
- display: inline-block;
191
- padding: 5px !important;
192
- margin-bottom: 0 !important;
193
- }
194
- .wdr_invalid{
195
- border-color: red !important;
196
- }
197
- .small-text{
198
- width: unset !important;
199
- }
200
- .customize_sale_tag_html_textarea,.customize_coupon_name_html_textarea{
201
- width: 100%;
202
- }
203
- .coupons_selectbox_multi_select{
204
- width: 500px;
205
- }
206
- .coupons_selectbox_multi_select_wdr{
207
- min-width: 200px;
208
- }
209
- .select2-container{
210
- min-width: 150px;
211
- }
212
- .price_rules_s_block_c{
213
- margin-top: 25px;
214
- }
215
- form#discount_config .fade.show{
216
- opacity: 1;
217
- }
218
- form#discount_config .tab-content {
219
- display: block;
220
- }
221
- span.price_discount_amount_tool_tip{
222
- display: inline-block;
223
- }
224
- .woo-side-button{
225
- cursor: pointer;
226
- }
227
- .woo-side-panel p {
228
- margin: 0 0 10px;
229
- padding: 0;
230
- }
231
- .wdr_validation_notice{
232
- display: none;
233
- }
234
- .show_promotion_message_fields_con{
235
- margin-top: 15px;
236
- }
237
- #promotion_qty_from, #promotion_subtotal_from{
238
- max-width: 100px;
239
- }
240
- .woo_discount_loader_outer input[type=checkbox]{
241
- width: 1.5rem;
242
- height: 1.5rem;
243
- }
244
- .woo_discount_loader_outerinput[type=checkbox]::before,
245
- .woo_discount_loader_outer input[type=checkbox]:checked::before{
246
- width: 1.7rem;
247
- height: 1.7rem;
248
- }
249
- .woo_discount_loader_outer input[type=radio]{
250
- width: 1.5rem;
251
- height: 1.5rem;
252
- }
253
- .woo_discount_loader_outer input[type=radio]::before,
254
- .woo_discount_loader_outer input[type=radio]:checked::before{
255
- width: .9rem;
256
- height: .9rem;
257
- margin: .2rem;
258
- }
259
- select#price_rule_method{
260
- max-width: 100%;
261
- }
262
- .discount_product_option_hint,
263
- select.discount_product_option,
264
- .bogo_receive_discount_for_text,
265
- .hide_discount_product_item_count_type{
266
- display: none;
267
- }
268
- .wdr_price_rule_listing_table_con{
269
- padding: 0 15px;
270
- }
271
- .wdr_woo_discount_header_con.woocommerce-message {
272
- display: block !important;
273
- opacity: 1 !important;
274
- }
275
-
276
- /*Model Popup*/
277
- .wdr_woo_discount_header_con .modal,
278
- .wdr_woo_discount_header_con .modal-box {
279
- z-index: 9999;
280
- }
281
-
282
- .wdr_woo_discount_header_con .modal-sandbox {
283
- position: fixed;
284
- width: 100%;
285
- height: 100%;
286
- top: 0;
287
- left: 0;
288
- background: transparent;
289
- }
290
-
291
- .wdr_woo_discount_header_con .modal {
292
- display: none;
293
- position: fixed;
294
- width: 100%;
295
- height: 100%;
296
- left: 0;
297
- top: 0;
298
- background: rgb(0,0,0);
299
- background: rgba(0,0,0,.8);
300
- overflow: auto;
301
- }
302
-
303
- .wdr_woo_discount_header_con .modal-box {
304
- position: relative;
305
- width: 80%;
306
- max-width: 920px;
307
- margin: 100px auto;
308
- animation-name: modalbox;
309
- animation-duration: .4s;
310
- animation-timing-function: cubic-bezier(0,0,.3,1.6);
311
- }
312
-
313
- .wdr_woo_discount_header_con .modal-header {
314
- padding: 20px 40px;
315
- background: #6495ed;
316
- color: #ffffff;
317
- }
318
-
319
- .wdr_woo_discount_header_con .modal-body {
320
- background: #ECEFF1;
321
- padding: 50px 15px;
322
- }
323
-
324
- /* Close Button */
325
- .wdr_woo_discount_header_con .close-modal {
326
- text-align: right;
327
- cursor: pointer;
328
- }
329
-
330
- /* Animation */
331
- @-webkit-keyframes modalbox {
332
- 0% {
333
- top: -250px;
334
- opacity: 0;
335
- }
336
- 100% {
337
- top: 0;
338
- opacity: 1;
339
- }
340
- }
341
-
342
- @keyframes modalbox {
343
- 0% {
344
- top: -250px;
345
- opacity: 0;
346
- }
347
- 100% {
348
- top: 0;
349
- opacity: 1;
350
- }
351
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
v1/assets/css/tabbablePanel.css DELETED
@@ -1,75 +0,0 @@
1
- /* bhoechie tab */
2
- div.bhoechie-tab-container {
3
- z-index: 10;
4
- background-color: #ffffff;
5
- padding: 0 !important;
6
- border-radius: 4px;
7
- -moz-border-radius: 4px;
8
- border: 1px solid #ddd;
9
- -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
10
- box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
11
- -moz-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
12
- background-clip: padding-box;
13
- opacity: 0.97;
14
- filter: alpha(opacity=97);
15
- }
16
-
17
- div.bhoechie-tab-menu {
18
- padding-right: 0;
19
- padding-left: 0;
20
- padding-bottom: 0;
21
- }
22
-
23
- div.bhoechie-tab-menu div.list-group {
24
- margin-bottom: 0;
25
- }
26
-
27
- div.bhoechie-tab-menu div.list-group > a {
28
- margin-bottom: 0;
29
- }
30
-
31
- div.bhoechie-tab-menu div.list-group > a .glyphicon,
32
- div.bhoechie-tab-menu div.list-group > a .fa {
33
- color: #5A55A3;
34
- }
35
-
36
- div.bhoechie-tab-menu div.list-group > a:first-child {
37
- border-top-right-radius: 0;
38
- -moz-border-top-right-radius: 0;
39
- }
40
-
41
- div.bhoechie-tab-menu div.list-group > a:last-child {
42
- border-bottom-right-radius: 0;
43
- -moz-border-bottom-right-radius: 0;
44
- }
45
-
46
- div.bhoechie-tab-menu div.list-group > a.active,
47
- div.bhoechie-tab-menu div.list-group > a.active .glyphicon,
48
- div.bhoechie-tab-menu div.list-group > a.active .fa {
49
- background-color: #5A55A3;
50
- background-image: #5A55A3;
51
- color: #ffffff;
52
- }
53
-
54
- div.bhoechie-tab-menu div.list-group > a.active:after {
55
- content: '';
56
- position: absolute;
57
- left: 100%;
58
- top: 50%;
59
- margin-top: -13px;
60
- border-left: 0;
61
- border-bottom: 13px solid transparent;
62
- border-top: 13px solid transparent;
63
- border-left: 10px solid #5A55A3;
64
- }
65
-
66
- div.bhoechie-tab-content {
67
- background-color: #ffffff;
68
- /* border: 1px solid #eeeeee; */
69
- padding-left: 20px;
70
- padding-top: 10px;
71
- }
72
-
73
- div.bhoechie-tab div.bhoechie-tab-content:not(.active) {
74
- display: none;
75
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
v1/assets/css/woo_discount_rules.css DELETED
@@ -1,32 +0,0 @@
1
- .wdr_you_saved_con {
2
- color: green;
3
- }
4
- .wdr_order_discount-total{
5
- margin: 10px 0;
6
- }
7
- .wdr_table_content_advance_item{
8
- margin: 5px 0;
9
- }
10
- .wdr_table_container_for_admin{
11
- position: relative;
12
- }
13
- .wdr_table_cbr:hover{
14
- border: 1px solid #ddd;
15
- }
16
- .wdr_table_off_settings_link_con{
17
- position: absolute;
18
- top: 0;
19
- right: 0;
20
- display: none;
21
- background-color: #ddd;
22
- padding: 0 5px;
23
- }
24
- .wdr_table_off_settings_hint{
25
- font-size: 12px;
26
- }
27
- .wdr_table_off_settings_hint{
28
- display: block;
29
- }
30
- .wdr_checkout_promotion_messages_data{
31
- display: none;
32
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
v1/assets/fonts/glyphicons-halflings-regular.eot DELETED
Binary file
v1/assets/fonts/glyphicons-halflings-regular.svg DELETED
@@ -1,288 +0,0 @@
1
- <?xml version="1.0" standalone="no"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
- <svg xmlns="http://www.w3.org/2000/svg">
4
- <metadata></metadata>
5
- <defs>
6
- <font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
7
- <font-face units-per-em="1200" ascent="960" descent="-240" />
8
- <missing-glyph horiz-adv-x="500" />
9
- <glyph horiz-adv-x="0" />
10
- <glyph horiz-adv-x="400" />
11
- <glyph unicode=" " />
12
- <glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
13
- <glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
14
- <glyph unicode="&#xa0;" />
15
- <glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
16
- <glyph unicode="&#x2000;" horiz-adv-x="650" />
17
- <glyph unicode="&#x2001;" horiz-adv-x="1300" />
18
- <glyph unicode="&#x2002;" horiz-adv-x="650" />
19
- <glyph unicode="&#x2003;" horiz-adv-x="1300" />
20
- <glyph unicode="&#x2004;" horiz-adv-x="433" />
21
- <glyph unicode="&#x2005;" horiz-adv-x="325" />
22
- <glyph unicode="&#x2006;" horiz-adv-x="216" />
23
- <glyph unicode="&#x2007;" horiz-adv-x="216" />
24
- <glyph unicode="&#x2008;" horiz-adv-x="162" />
25
- <glyph unicode="&#x2009;" horiz-adv-x="260" />
26
- <glyph unicode="&#x200a;" horiz-adv-x="72" />
27
- <glyph unicode="&#x202f;" horiz-adv-x="260" />
28
- <glyph unicode="&#x205f;" horiz-adv-x="325" />
29
- <glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
30
- <glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
31
- <glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
32
- <glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
33
- <glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
34
- <glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
35
- <glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
36
- <glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
37
- <glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
38
- <glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
39
- <glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
40
- <glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
41
- <glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
42
- <glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
43
- <glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
44
- <glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
45
- <glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
46
- <glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
47
- <glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
48
- <glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
49
- <glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
50
- <glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
51
- <glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
52
- <glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
53
- <glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
54
- <glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
55
- <glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
56
- <glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
57
- <glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
58
- <glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
59
- <glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
60
- <glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
61
- <glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
62
- <glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
63
- <glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
64
- <glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
65
- <glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
66
- <glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
67
- <glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
68
- <glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
69
- <glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
70
- <glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
71
- <glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
72
- <glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
73
- <glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
74
- <glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
75
- <glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
76
- <glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
77
- <glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
78
- <glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
79
- <glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
80
- <glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
81
- <glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
82
- <glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
83
- <glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
84
- <glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
85
- <glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
86
- <glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
87
- <glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
88
- <glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
89
- <glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
90
- <glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
91
- <glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
92
- <glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
93
- <glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
94
- <glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
95
- <glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
96
- <glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
97
- <glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
98
- <glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
99
- <glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
100
- <glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
101
- <glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
102
- <glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
103
- <glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
104
- <glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
105
- <glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
106
- <glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
107
- <glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
108
- <glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
109
- <glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
110
- <glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
111
- <glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
112
- <glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
113
- <glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
114
- <glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
115
- <glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
116
- <glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
117
- <glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
118
- <glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
119
- <glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
120
- <glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
121
- <glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
122
- <glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
123
- <glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
124
- <glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
125
- <glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
126
- <glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
127
- <glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
128
- <glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
129
- <glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
130
- <glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
131
- <glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
132
- <glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
133
- <glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
134
- <glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
135
- <glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
136
- <glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
137
- <glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
138
- <glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
139
- <glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
140
- <glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
141
- <glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
142
- <glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
143
- <glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
144
- <glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
145
- <glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
146
- <glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
147
- <glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
148
- <glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
149
- <glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
150
- <glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
151
- <glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
152
- <glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
153
- <glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
154
- <glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
155
- <glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
156
- <glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
157
- <glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
158
- <glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
159
- <glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
160
- <glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
161
- <glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
162
- <glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
163
- <glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
164
- <glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
165
- <glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
166
- <glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
167
- <glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
168
- <glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
169
- <glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
170
- <glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
171
- <glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
172
- <glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
173
- <glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
174
- <glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
175
- <glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
176
- <glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
177
- <glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
178
- <glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
179
- <glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
180
- <glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
181
- <glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
182
- <glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
183
- <glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
184
- <glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
185
- <glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
186
- <glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
187
- <glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
188
- <glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
189
- <glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
190
- <glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
191
- <glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
192
- <glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
193
- <glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
194
- <glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
195
- <glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
196
- <glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
197
- <glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
198
- <glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
199
- <glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
200
- <glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
201
- <glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
202
- <glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
203
- <glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
204
- <glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
205
- <glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
206
- <glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
207
- <glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
208
- <glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
209
- <glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
210
- <glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
211
- <glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
212
- <glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
213
- <glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
214
- <glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
215
- <glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
216
- <glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
217
- <glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
218
- <glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
219
- <glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
220
- <glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
221
- <glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
222
- <glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
223
- <glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
224
- <glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
225
- <glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
226
- <glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
227
- <glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
228
- <glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
229
- <glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
230
- <glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
231
- <glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
232
- <glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
233
- <glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
234
- <glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
235
- <glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
236
- <glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
237
- <glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
238
- <glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
239
- <glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
240
- <glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
241
- <glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
242
- <glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
243
- <glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
244
- <glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
245
- <glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
246
- <glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
247
- <glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
248
- <glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
249
- <glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
250
- <glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
251
- <glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
252
- <glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
253
- <glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
254
- <glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
255
- <glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
256
- <glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
257
- <glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
258
- <glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
259
- <glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
260
- <glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
261
- <glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
262
- <glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
263
- <glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
264
- <glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
265
- <glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
266
- <glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
267
- <glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
268
- <glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
269
- <glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
270
- <glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
271
- <glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
272
- <glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
273
- <glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
274
- <glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
275
- <glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
276
- <glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
277
- <glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
278
- <glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
279
- <glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
280
- <glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
281
- <glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
282
- <glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
283
- <glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
284
- <glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
285
- <glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
286
- <glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
287
- </font>
288
- </defs></svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
v1/assets/fonts/glyphicons-halflings-regular.ttf DELETED
Binary file
v1/assets/fonts/glyphicons-halflings-regular.woff DELETED
Binary file
v1/assets/fonts/glyphicons-halflings-regular.woff2 DELETED
Binary file
v1/assets/js/app.js DELETED
@@ -1,1656 +0,0 @@
1
- //jQuery.noConflict();
2
- function validateFields(){
3
- var returnValue = false;
4
- (function ($) {
5
- var rule_order = $('#rule_order');
6
- if(rule_order.val() != ''){
7
- rule_order.removeClass('invalid-field');
8
- rule_order.next('.error').remove();
9
- returnValue = true;
10
- } else {
11
- $('a.general_tab').trigger('click');
12
- rule_order.addClass('invalid-field');
13
- rule_order.next('.error').remove();
14
- rule_order.after('<span class="error">'+woo_discount_localization.please_fill_this_field+'</span>');
15
- returnValue = false;
16
- }
17
-
18
- })(jQuery);
19
- return returnValue;
20
- }
21
-
22
- function validateWDRBOGOFields(){
23
- var returnValue = true;
24
- var discount_rule_range = jQuery('#discount_rule_list .discount_rule_list');
25
- var wdr_invalid_tags = discount_rule_range.find('.wdr_invalid');
26
- jQuery.each( wdr_invalid_tags, function( key, container ) {
27
- jQuery(container).removeClass('wdr_invalid');
28
- });
29
-
30
- var price_rule_method = jQuery('select#price_rule_method').val();
31
- if(price_rule_method == 'qty_based'){
32
- jQuery.each( discount_rule_range, function( key, container ) {
33
- var price_discount_type = jQuery(container).find('select.price_discount_type');
34
- if(jQuery.inArray(price_discount_type.val(), ['product_discount', 'buy_x_get_x', 'buy_x_get_y', 'more_than_one_cheapest', 'more_than_one_cheapest_from_cat', 'more_than_one_cheapest_from_all']) !== -1){
35
- var discount_product_option = jQuery(container).find('select.discount_product_option');
36
- if(jQuery.inArray(discount_product_option.val(), ['all', 'same_product']) !== -1){
37
- var discount_bogo_qty = jQuery(container).find('input.discount_bogo_qty');
38
- if(discount_bogo_qty.val() == '' || discount_bogo_qty.val() == null){
39
- discount_bogo_qty.addClass('wdr_invalid');
40
- returnValue = false;
41
- } else {
42
- discount_bogo_qty.removeClass('wdr_invalid');
43
- }
44
- }
45
- if(jQuery.inArray(discount_product_option.val(), ['more_than_one_cheapest_from_all', 'more_than_one_cheapest', 'more_than_one_cheapest_from_cat']) !== -1){
46
- var discount_product_qty = jQuery(container).find('input.discount_product_qty');
47
- if(discount_product_qty.val() == '' || discount_product_qty.val() == null){
48
- discount_product_qty.addClass('wdr_invalid');
49
- returnValue = false;
50
- } else {
51
- discount_product_qty.removeClass('wdr_invalid');
52
- }
53
- var discount_product_item_count_type = jQuery(container).find('select.discount_product_item_count_type');
54
- if(discount_product_item_count_type.val() == 'static'){
55
- var discount_product_items_count_field = jQuery(container).find('input.discount_product_items_count_field');
56
- if(discount_product_items_count_field.val() == '' || discount_product_items_count_field.val() == null){
57
- discount_product_items_count_field.addClass('wdr_invalid');
58
- returnValue = false;
59
- } else {
60
- discount_product_items_count_field.removeClass('wdr_invalid');
61
- }
62
- }
63
- }
64
- if(jQuery.inArray(discount_product_option.val(), ['more_than_one_cheapest_from_cat']) !== -1){
65
- var category_list = jQuery(container).find('select.category_list');
66
- if(category_list.val() == '' || category_list.val() == null){
67
- jQuery(container).find('.bootstrap-select.category_list > button').addClass('wdr_invalid');
68
- returnValue = false;
69
- } else {
70
- jQuery(container).find('.bootstrap-select.category_list > button').removeClass('wdr_invalid');
71
- }
72
- }
73
- //discount_category_option_list_con
74
- if(parseInt(jQuery('#flycart_wdr_woocommerce_version').val()) > 2){
75
- if(jQuery.inArray(discount_product_option.val(), ['all', 'any_cheapest', 'more_than_one_cheapest']) !== -1){
76
- var product_field = jQuery(container).find('select.wc-product-search');
77
- if(product_field.val() == '' || product_field.val() == null){
78
- jQuery(container).find('.select2-selection').addClass('wdr_invalid');
79
- returnValue = false;
80
- } else {
81
- jQuery(container).find('.select2-selection').removeClass('wdr_invalid');
82
- }
83
- }
84
- }
85
-
86
- var discount_product_discount_type = jQuery(container).find('select.discount_product_discount_type');
87
- if(discount_product_discount_type.val() == 'limited_percent'){
88
- var discount_product_percent_field = jQuery(container).find('input.discount_product_percent_field');
89
- if(discount_product_percent_field.val() == '' || discount_product_percent_field.val() == null){
90
- discount_product_percent_field.addClass('wdr_invalid');
91
- returnValue = false;
92
- } else {
93
- discount_product_percent_field.removeClass('wdr_invalid');
94
- }
95
- }
96
- } else if(jQuery.inArray(price_discount_type.val(), ['percentage_discount', 'price_discount', 'fixed_price', 'set_discount']) !== -1){
97
- var price_discount_amount = jQuery(container).find('input.price_discount_amount');
98
- if(price_discount_amount.val() == '' || price_discount_amount.val() == null){
99
- price_discount_amount.addClass('wdr_invalid');
100
- returnValue = false;
101
- } else {
102
- price_discount_amount.removeClass('wdr_invalid');
103
- }
104
- }
105
- var discount_range_min_qty = jQuery(container).find('input.discount_range_min_qty');
106
- if(discount_range_min_qty.val() == '' || discount_range_min_qty.val() == null){
107
- discount_range_min_qty.addClass('wdr_invalid');
108
- returnValue = false;
109
- } else {
110
- discount_range_min_qty.removeClass('wdr_invalid');
111
- }
112
- if(price_discount_type.val() != 'set_discount'){
113
- var discount_range_max_qty = jQuery(container).find('input.discount_range_max_qty');
114
- if(discount_range_max_qty.val() == '' || discount_range_max_qty.val() == null){
115
- discount_range_max_qty.addClass('wdr_invalid');
116
- returnValue = false;
117
- } else {
118
- discount_range_max_qty.removeClass('wdr_invalid');
119
- }
120
- }
121
- });
122
- }
123
- if(returnValue == false){
124
- discount_rule_range.find('.wdr_invalid').first().focus();
125
- jQuery('a.discount_tab').trigger('click');
126
- }
127
-
128
- return returnValue;
129
- }
130
-
131
- function trigger_woocommerce_tooltip(){
132
- jQuery( '.tips, .help_tip, .woocommerce-help-tip' ).tipTip( {
133
- 'attribute': 'data-tip',
134
- 'fadeIn': 50,
135
- 'fadeOut': 50,
136
- 'delay': 200
137
- } );
138
- }
139
-
140
- function wooo_discount_range_altered() {
141
- var result = { 'has_set_discount': false, 'has_range_discount': false, 'has_fixed_price': false };
142
- var discount_types = jQuery('#discount_rule_list').find("select.price_discount_type");
143
- jQuery.each(discount_types, function( key, current_val ) {
144
- var adjustment_type = jQuery(current_val).val();
145
- if(adjustment_type == 'set_discount'){
146
- result.has_set_discount = true;
147
- } else if(adjustment_type == 'fixed_price'){
148
- result.has_fixed_price = true;
149
- result.has_range_discount = true;
150
- } else {
151
- result.has_range_discount = true;
152
- }
153
- });
154
- return result;
155
- }
156
- (function ($) {
157
- jQuery(document).ready(function () {
158
- // Tooltips
159
- trigger_woocommerce_tooltip();
160
-
161
- var ajax_url = $('#ajax_path').val();
162
- var admin_url = $('#admin_path').val();
163
- var pro_suffix = $('#pro_suffix').val();
164
- var is_pro = $('#is_pro').val();
165
- // $(".datepicker").datepicker();
166
- $(".wdr_datepicker").datetimepicker({
167
- //format: "dd MM yyyy - hh:ii",
168
- format: "mm/dd/yyyy hh:ii",
169
- autoclose: true,
170
- todayBtn: true,
171
- pickerPosition: "top-right"
172
- });
173
-
174
- //--------------------------------------------------------------------------------------------------------------
175
- //--------------------------------------------PRICING RULES-----------------------------------------------------
176
- //--------------------------------------------------------------------------------------------------------------
177
-
178
- // Manage Customer Selection ON-LOAD
179
- var user_selection = $('#apply_customer').val();
180
- if (user_selection == 'only_given') {
181
- $('#user_list').css('display', 'block');
182
- } else {
183
- $('#user_list').css('display', 'none');
184
- }
185
-
186
- // Saving Rule.
187
- $('#savePriceRule').on('click', function (event) {
188
- $(".form-control").removeClass('wdr_invalid');
189
- var validate = validateFields();
190
- $(".wdr_validation_notice").hide();
191
- if ($('#rule_name').val() == '') {
192
- jQuery('a.general_tab').trigger('click');
193
- alert(woo_discount_localization.please_enter_the_rule_name);
194
- return false;
195
- }
196
-
197
- var validate_bogo = validateWDRBOGOFields();
198
-
199
- if(validate == false || validate_bogo == false){
200
- return false;
201
- }
202
- var form = $('#form_price_rule').serialize();
203
- var current = $(this);
204
- var rule_id = $('#rule_id').val();
205
- var loader = $('.woo_discount_loader_outer > .woo_discount_loader');
206
- event.preventDefault();
207
- if ($('#rule_name').val() == '') {
208
- jQuery('a.general_tab').trigger('click');
209
- alert(woo_discount_localization.please_enter_the_rule_name);
210
- } else {
211
- current.val(woo_discount_localization.saving);
212
- $.ajax({
213
- url: ajax_url,
214
- type: 'POST',
215
- data: {action: 'savePriceRule', data: form},
216
- beforeSend: function() {
217
- loader.show();
218
- },
219
- complete: function() {
220
- loader.hide();
221
- },
222
- success: function (result) {
223
- var result = jQuery.parseJSON( result );
224
- // After Status Changed.
225
- resizeChart = setTimeout(function () {
226
- current.val(woo_discount_localization.save_rule);
227
- }, 300);
228
- if(result.status == 1){
229
- // Reset, if its New Form.
230
- if (rule_id == 0) {
231
- $('#form_price_rule')[0].reset();
232
- window.location.replace(admin_url);
233
- }
234
- adminNotice();
235
- } else {
236
- //woo_discount_rule_error_notice(result.message);
237
- if(result.invalid_field != undefined){
238
- if(result.invalid_field == "dynamic_coupons_to_apply"){
239
- $("input[name='dynamic_coupons_to_apply']").addClass('wdr_invalid');
240
- $("a.restriction_tab").trigger('click');
241
- $("div.dynamic_coupons_to_apply_validation").html("<p>"+result.error_message+"</p>").show();
242
- }
243
- }
244
- }
245
- if(result.dynamic_coupons_to_apply != undefined){
246
- $("input[name='dynamic_coupons_to_apply']").val(result.dynamic_coupons_to_apply);
247
- }
248
- }
249
-
250
- });
251
- }
252
- });
253
-
254
- // License key check
255
- $('#woo-disc-license-check').on('click', function (event) {
256
- var license_key = $('#woo-disc-license-key');
257
- var resp_msg = $('#woo-disc-license-check-msg');
258
- if(license_key.val() == ''){
259
- license_key.addClass('invalid-field');
260
- resp_msg.html('<div class="notice-message error inline notice-error notice-alt">'+woo_discount_localization.please_enter_a_key+'</div>');
261
- return false;
262
- }else{
263
- license_key.removeClass('invalid-field');
264
- resp_msg.html('');
265
- }
266
-
267
- var form = $('#discount_config').serialize();
268
- var current = $(this);
269
-
270
- event.preventDefault();
271
-
272
- current.removeClass('button-primary');
273
- current.addClass('button-secondary');
274
- current.val(woo_discount_localization.saving);
275
- $('.license-success, .license-failed').hide();
276
- var license_chk_req = $.ajax({
277
- url: ajax_url,
278
- type: 'POST',
279
- data: {action: 'forceValidateLicenseKey', data: form},
280
- success: function () {
281
- resizeChart = setTimeout(function () {
282
- current.addClass('button-primary');
283
- current.removeClass('button-secondary');
284
- current.val('Validate');
285
- }, 300);
286
-
287
- //adminNotice();
288
- // display a success message
289
- }
290
- });
291
- license_chk_req.done(function( resp ) {
292
-
293
- response = JSON.parse(resp);
294
- if (response['error']) {
295
- resp_msg.html('<div class="notice-message error inline notice-error notice-alt">'+response['error']+'</div>');
296
- } else if( response['success']){
297
- resp_msg.html('<div class="notice-message success inline notice-success notice-alt">'+response['success']+'</div>');
298
- }
299
-
300
- });
301
- });
302
-
303
- //To add an duplicate range fields
304
- $(document).on('click', '.create_duplicate_discount_range', function () {
305
- //$(".create_duplicate_discount_range").on('click', function () {
306
- var data_id = $(this).attr('data-id');
307
- $('#addNewDiscountRange').trigger('click');
308
- var new_inputs = $("#discount_rule_list .discount_rule_list:last-child").find('input,select');
309
- $.each( new_inputs, function( key, new_input ) {
310
- var field_name = $(new_input).attr('name');
311
- if(field_name != undefined){
312
- var field_name_second_part = field_name.replace("discount_range[", "");
313
- var field_name_second_part_split = field_name_second_part.split(']');
314
- var field_name_id = field_name_second_part_split['0'];
315
- var field_name_to_duplicate = field_name.replace("discount_range["+field_name_id+"]", "discount_range["+data_id+"]");
316
- $("input[name='"+field_name+"']").val($("input[name='"+field_name_to_duplicate+"']").val());
317
- if($("select[name='"+field_name+"']").hasClass('wc-product-search')){
318
- $("select[name='"+field_name+"']").html($("select[name='"+field_name_to_duplicate+"']").html())
319
- }
320
- $("select[name='"+field_name+"']").val($("select[name='"+field_name_to_duplicate+"']").val());
321
- }
322
- });
323
- $("#discount_rule_list .discount_rule_list:last-child select").trigger('change');
324
- $('.product_list,.selectpicker').selectpicker('refresh');
325
- $('.wc-product-search').trigger( 'wc-enhanced-select-init' );
326
- $('select.discount_product_discount_type').trigger('change');
327
- // Tooltips
328
- trigger_woocommerce_tooltip();
329
- });
330
-
331
- // Adding New Discount Range.
332
- $('#addNewDiscountRange').on('click', function () {
333
- var count = $('.discount_rule_list').length + 1;
334
- if (is_pro) {
335
- var discount_types = wooo_discount_range_altered();
336
- var discount_type_set_discount_selected = ''
337
- if(discount_types.has_set_discount == true){
338
- discount_type_set_discount_selected = ' selected="selected" '
339
- }
340
- var form = '<div class="discount_rule_list"> <div class="form-group"><label><span class="discount_for_min_quantity_text">'+woo_discount_localization.min_quantity+'</span> <input type="text" name="discount_range[' + count + '][min_qty]" class="form-control discount_range_min_qty" value="" placeholder="'+woo_discount_localization.place_holder_ex_1+'"></label>' +
341
- '<label class="discount_for_max_quantity_label">'+woo_discount_localization.max_quantity+' <input type="text" name="discount_range[' + count + '][max_qty]" class="form-control discount_range_max_qty" value="" placeholder="'+woo_discount_localization.place_holder_ex_50+'"> </label> <label>'+woo_discount_localization.adjustment_type+'<select class="form-control price_discount_type" name="discount_range[' + count + '][discount_type]"> ' +
342
- '<option value="percentage_discount"> '+woo_discount_localization.percentage_discount_in_adjustment_type+' </option> <option value="price_discount">'+woo_discount_localization.price_discount+' </option> <option value="fixed_price">'+woo_discount_localization.fixed_price+' </option> <option value="set_discount" '+discount_type_set_discount_selected+'>'+woo_discount_localization.set_discount+' </option> ' +
343
- '<option value="buy_x_get_x">'+woo_discount_localization.buy_x_get_x+' </option> ' +
344
- '<option value="buy_x_get_y">'+woo_discount_localization.buy_x_get_y+' </option> ' +
345
- '<option value="more_than_one_cheapest">'+woo_discount_localization.more_than_one_cheapest_from_selected+' </option> ' +
346
- '<option value="more_than_one_cheapest_from_cat">'+woo_discount_localization.more_than_one_cheapest_from_selected_category+' </option> ' +
347
- '<option value="more_than_one_cheapest_from_all">'+woo_discount_localization.more_than_one_cheapest_from_all+' </option> ' +
348
- '</select></label> ' +
349
- '<label><span class="price_discount_amount price_discount_amount_tool_tip_con">\n' +
350
- '</span></label>' +
351
- '<label><span class="hide-for-product-discount">'+woo_discount_localization.value_text+'</span>' +
352
- '<input type="text" name="discount_range[' + count + '][to_discount]" class="form-control price_discount_amount" value="" placeholder="'+woo_discount_localization.place_holder_ex_50+'"> ';
353
- form += '<div class="price_discount_product_list_con hide">' +
354
- '<span class="bogo_receive_discount_for_text"> '+woo_discount_localization.apply_for+' </span><select class="discount_product_option" name="discount_range['+count+'][discount_product_option]"><option value="all">'+woo_discount_localization.all_selected+'</option><option value="same_product">'+woo_discount_localization.same_product+'</option>' +
355
- '<option value="more_than_one_cheapest_from_cat">'+woo_discount_localization.more_than_one_cheapest_from_selected_category+'</option><option value="more_than_one_cheapest">'+woo_discount_localization.more_than_one_cheapest_from_selected+'</option><option value="more_than_one_cheapest_from_all">'+woo_discount_localization.more_than_one_cheapest_from_all+'</option>' +
356
- '</select>';
357
- form += '&nbsp;<span class="woocommerce-help-tip discount_product_option_hint" data-tip="'+woo_discount_localization.discount_product_option_tooltip+'"></span>';
358
- form += '<div class="discount_product_option_bogo_con">';
359
- form += '&nbsp;<label> '+woo_discount_localization.free_quantity+' <span class="woocommerce-help-tip" data-tip="'+woo_discount_localization.number_of_quantities_in_each_products+'"></span> <input type="text" name="discount_range['+count+'][discount_bogo_qty]" class="form-control discount_bogo_qty" value="" placeholder="'+woo_discount_localization.place_holder_ex_1+'" /></label>';
360
- form += '</div>';
361
- form += '<div class="discount_product_option_more_cheapest_con hide">';
362
- var discount_product_item_count_type_class = ' selectpicker';
363
- var discount_product_item_count_type_hint_class = '';
364
- if(woo_discount_localization.enable_fixed_item_count_in_bogo == false){
365
- discount_product_item_count_type_hint_class = discount_product_item_count_type_class = ' hide_discount_product_item_count_type';
366
- }
367
- form += '&nbsp;<select class="discount_product_item_count_type'+discount_product_item_count_type_class+'" name="discount_range['+count+'][discount_product_item_type]">';
368
- form += '<option value="dynamic">'+woo_discount_localization.dynamic_item_count+'</option>';
369
- form += '<option value="static">'+woo_discount_localization.fixed_item_count+'</option>';
370
- form += '</select>';
371
- form += '&nbsp;<span class="woocommerce-help-tip'+discount_product_item_count_type_hint_class+'" data-tip="'+woo_discount_localization.fixed_item_count_tooltip+'"></span>';
372
- form += '&nbsp;<label class="discount_product_items_count_field hide"> '+woo_discount_localization.item_count+'&nbsp;<span class="woocommerce-help-tip" data-tip="'+woo_discount_localization.discount_number_of_item_tooltip+'"></span><input type="text" name="discount_range['+count+'][discount_product_items]" class="form-control discount_product_items_count_field hide" value="" placeholder="'+woo_discount_localization.place_holder_ex_1+'" /></label>';
373
- form += '&nbsp;<label> '+woo_discount_localization.item_quantity+'&nbsp;<span class="woocommerce-help-tip" data-tip="'+woo_discount_localization.discount_number_of_each_item_tooltip+'"></span><input type="text" name="discount_range['+count+'][discount_product_qty]" class="form-control discount_product_qty" value="" placeholder="'+woo_discount_localization.place_holder_ex_1+'" /></label>';
374
- form += '</div>';
375
- form += '<div class="discount_product_option_list_con">';
376
- form += '<label>&nbsp;<span class="wdr_block_span">'+woo_discount_localization.choose_products+'</span>';
377
- if($('#flycart_wdr_woocommerce_version').val() == 2){
378
- form += '&nbsp;<input type="hidden" class="wc-product-search" style="min-width: 250px" data-multiple="true" name="discount_range[' + count + '][discount_product][]" data-placeholder="'+woo_discount_localization.place_holder_search_for_products+'" data-action="woocommerce_json_search_products_and_variations" data-selected=""/>';
379
- } else {
380
- form += '&nbsp;<select class="wc-product-search" multiple="multiple" style="min-width: 250px" name="discount_range[' + count + '][discount_product][]" data-placeholder="'+woo_discount_localization.place_holder_search_for_products+'" data-action="woocommerce_json_search_products_and_variations"></select>'
381
- }
382
- form += '</label>';
383
- form += '</div>';
384
- form += '<div class="discount_category_option_list_con hide">';
385
- form += '<label>&nbsp;<span class="wdr_block_span">'+woo_discount_localization.choose_categories+'</span>';
386
- form += '&nbsp;<select class="category_list selectpicker" multiple title="'+woo_discount_localization.none_selected+'" name="discount_range[' + count + '][discount_category][]">';
387
- $("#category_list select.category_list option").each(function()
388
- {
389
- form += '<option value="'+$(this).val()+'">'+$(this).html()+'</option>';
390
- });
391
- form += '</select>';
392
- form += '</label>';
393
- form += '</div>';
394
- form += '<div class="discount_product_percent_con">';
395
- form += '&nbsp;<label>&nbsp;<span class="wdr_block_span">'+woo_discount_localization.percentage_discount+'</span>&nbsp;<select class="selectpicker discount_product_discount_type" name="discount_range['+ count +'][discount_product_discount_type]"><option value="">'+woo_discount_localization.percent_100+'</option><option value="limited_percent">'+woo_discount_localization.limited_percent+'</option></select></label>';
396
- form += '<span class="discount_product_percent_field">&nbsp;<input type="text" name="discount_range['+count+'][discount_product_percent]" class="discount_product_percent_field" value="" placeholder="'+woo_discount_localization.place_holder_ex_10+'" />&nbsp;<span class="woocommerce-help-tip" data-tip="'+woo_discount_localization.percentage_tooltip+'"></span></span> ';
397
- form += '</div>';
398
- form += '</div>';
399
- form += '</label>&nbsp;';
400
- form += '<label><a href="javascript:void(0)" data-id="'+count+'" class="btn btn-primary form-control create_duplicate_discount_range">'+woo_discount_localization.duplicate_text+'</a></label> ' +
401
- '<label><a href=javascript:void(0) class="btn btn-danger form-control remove_discount_range">'+woo_discount_localization.remove_text+'</a></label> </div> </div>';
402
- } else {
403
- var form = '<div class="discount_rule_list"> <div class="form-group"><label><span class="discount_for_min_quantity_text">'+woo_discount_localization.min_quantity+'</span> <input type="text" name="discount_range[' + count + '][min_qty]" class="form-control discount_range_min_qty" value="" placeholder="'+woo_discount_localization.place_holder_ex_1+'"></label>' +
404
- '<label class="discount_for_max_quantity_label">'+woo_discount_localization.max_quantity+' <input type="text" name="discount_range[' + count + '][max_qty]" class="form-control discount_range_max_qty" value="" placeholder="'+woo_discount_localization.place_holder_ex_50+'"> </label> <label>'+woo_discount_localization.adjustment_type+'<select class="form-control price_discount_type" name="discount_range[' + count + '][discount_type]"> ' +
405
- '<option value="percentage_discount"> '+woo_discount_localization.percentage_discount_in_adjustment_type+' </option> <option disabled>'+woo_discount_localization.price_discount+' <b>' + pro_suffix + '</b> </option> <option disabled>'+woo_discount_localization.fixed_price+' <b>' + pro_suffix + '</b> </option> <option disabled>'+woo_discount_localization.set_discount+' <b>' + pro_suffix + '</b> </option> ' +
406
- '<option disabled>'+woo_discount_localization.buy_x_get_x+' <b>' + pro_suffix + '</b> </option> ' +
407
- '<option disabled>'+woo_discount_localization.buy_x_get_y+' <b>' + pro_suffix + '</b> </option> ' +
408
- '<option disabled>'+woo_discount_localization.more_than_one_cheapest_from_selected+' <b>' + pro_suffix + '</b> </option> ' +
409
- '<option disabled>'+woo_discount_localization.more_than_one_cheapest_from_selected_category+' <b>' + pro_suffix + '</b> </option> ' +
410
- '<option disabled>'+woo_discount_localization.more_than_one_cheapest_from_all+' <b>' + pro_suffix + '</b> </option> ' +
411
- '</select></label>' +
412
- '<label><span class="price_discount_amount price_discount_amount_tool_tip_con">\n' +
413
- '</span></label>' +
414
- '<label>'+woo_discount_localization.value_text+' ' +
415
- '<input type="text" name="discount_range[' + count + '][to_discount]" class="form-control price_discount_amount" value="" placeholder="'+woo_discount_localization.place_holder_ex_50+'"> ';
416
- form += '<div class="price_discount_product_list_con hide"><select class="product_list selectpicker price_discount_product_list" multiple title="'+woo_discount_localization.none_selected+'" name="discount_range[' + count + '][discount_product][]">';
417
- form += '<option>'+woo_discount_localization.none_text+'</option>';
418
- form += '</select></div>';
419
- form += '</label>&nbsp; ';
420
- form += ' <label><a href=javascript:void(0) data-id="'+count+'" class="btn btn-primary form-control create_duplicate_discount_range">'+woo_discount_localization.duplicate_text+'</a> </label> ' +
421
- '<label><a href=javascript:void(0) class="btn btn-danger form-control remove_discount_range">'+woo_discount_localization.remove_text+'</a> </label></div> </div>';
422
- }
423
- $('#discount_rule_list').append(form);
424
- $('.product_list,.selectpicker').selectpicker('refresh');
425
- $('.wc-product-search').trigger( 'wc-enhanced-select-init' );
426
- $('select.discount_product_discount_type').trigger('change');
427
- $('select.price_discount_type').trigger('change');
428
- // Tooltips
429
- trigger_woocommerce_tooltip();
430
- });
431
-
432
- // Removing Discount Rule.
433
- $(document).on('click', '.remove_discount_range', function () {
434
- var confirm_delete = confirm(woo_discount_localization.are_you_sure_to_remove_this);
435
- if (confirm_delete) {
436
- $(this).closest('.discount_rule_list').remove();
437
- }
438
- });
439
-
440
- // Enabling and Disabling the Status of the Rule.
441
- $('.manage_status').on('click', function (event) {
442
- event.preventDefault();
443
- var current = $(this);
444
- var id = $(this).attr('id');
445
- var wdr_nonce = $('input[name="wdr_nonce"]').val();
446
- id = id.replace('state_', '');
447
- $.ajax({
448
- url: ajax_url,
449
- type: 'POST',
450
- dataType: "json",
451
- data: {action: 'UpdateStatus', id: id, from: 'pricing-rules', wdr_nonce: wdr_nonce},
452
- success: function (response) {
453
- // After Status Changed.
454
- if (response.status == 'Disable') {
455
- current.removeClass('btn-success');
456
- current.addClass('btn-warning');
457
- current.html(woo_discount_localization.enable_text);
458
- } else if (response.status == 'Publish') {
459
- current.addClass('btn-success');
460
- current.removeClass('btn-warning');
461
- current.html(woo_discount_localization.disable_text);
462
- }
463
- if (response.status_html != '') {
464
- $("#status_in_text_"+id).html(response.status_html);
465
- }
466
- }
467
-
468
- });
469
- });
470
-
471
- // Remove Rule.
472
- $('.delete_rule').on('click', function (event) {
473
- event.preventDefault();
474
- var current = $(this);
475
- var id = $(this).attr('id');
476
- var wdr_nonce = $('input[name="wdr_nonce"]').val();
477
- id = id.replace('delete_', '');
478
- var confirm_delete = confirm(woo_discount_localization.are_you_sure_to_remove);
479
- if (confirm_delete) {
480
- $.ajax({
481
- url: ajax_url,
482
- type: 'POST',
483
- data: {action: 'RemoveRule', id: id, from: 'pricing-rules', wdr_nonce: wdr_nonce},
484
- success: function () {
485
- // After Removed.
486
- current.closest('tr').remove();
487
- location.reload(true);
488
- }
489
- });
490
- }
491
- });
492
-
493
- $('#restriction_block').hide();
494
- $('#discount_block').hide();
495
-
496
- $('.general_tab').on('click', function () {
497
- $('#general_block').show();
498
- $('#restriction_block').hide();
499
- $('#discount_block').hide();
500
- makeActiveForSelectedTab($("a.general_tab"));
501
- });
502
- $('.restriction_tab').on('click', function () {
503
- if(validateFields() == true){
504
- $('#general_block').hide();
505
- $('#restriction_block').show();
506
- $('#discount_block').hide();
507
- makeActiveForSelectedTab($(".restriction_tab"));
508
- }
509
- });
510
- $('.discount_tab').on('click', function () {
511
- $('#general_block').hide();
512
- $('#restriction_block').hide();
513
- $('#discount_block').show();
514
- makeActiveForSelectedTab($(".discount_tab"));
515
- });
516
-
517
-
518
-
519
- // Manage the Type of Apply.
520
- $('#apply_to').on('change', function () {
521
- var option = $(this).val();
522
- var hint_text = '';
523
- $('#cumulative_for_products_cont').hide();
524
- if (option == 'specific_products') {
525
- hint_text = woo_discount_localization.apply_to_hint_specific_products;
526
- $('#product_list').css('display', 'block');
527
- $('#category_list').css('display', 'none');
528
- $('#product_attributes_list').css('display', 'none');
529
- $('#product_exclude_list').hide();
530
- $('#cumulative_for_products_cont').show();
531
- } else if (option == 'specific_category') {
532
- hint_text = woo_discount_localization.apply_to_hint_specific_category;
533
- $('#product_list').css('display', 'none');
534
- $('#product_attributes_list').css('display', 'none');
535
- $('#category_list').css('display', 'block');
536
- $('#product_exclude_list').show();
537
- } else if (option == 'specific_attribute') {
538
- hint_text = woo_discount_localization.apply_to_hint_specific_attribute;
539
- $('#product_list').css('display', 'none');
540
- $('#category_list').css('display', 'none');
541
- $('#product_attributes_list').css('display', 'block');
542
- $('#product_exclude_list').show();
543
- } else {
544
- hint_text = woo_discount_localization.apply_to_hint_all_products;
545
- $('#product_list').css('display', 'none');
546
- $('#category_list').css('display', 'none');
547
- $('#product_attributes_list').css('display', 'none');
548
- $('#product_exclude_list').show();
549
- $('#cumulative_for_products_cont').show();
550
- }
551
- $('.apply_to_hint').html(hint_text);
552
- });
553
- $('#apply_to').trigger('change');
554
-
555
- // Manage the Customer.
556
- $('#apply_customer').on('change', function () {
557
- var option = $(this).val();
558
- if (option == 'only_given') {
559
- $('#user_list').show();
560
- } else {
561
- $('#user_list').hide();
562
- }
563
- });
564
- $('#coupon_option_price_rule').on('change', function () {
565
- var option = $(this).val();
566
- if (option == 'none') {
567
- $('.coupons_to_apply_price_rule_con').hide();
568
- $('.dynamic_coupons_to_apply_price_rule_con').hide();
569
- } else if (option == 'create_dynamic_coupon') {
570
- $('.coupons_to_apply_price_rule_con').hide();
571
- $('.dynamic_coupons_to_apply_price_rule_con').show();
572
- } else {
573
- $('.dynamic_coupons_to_apply_price_rule_con').hide();
574
- $('.coupons_to_apply_price_rule_con').show();
575
- }
576
- });
577
- $('#coupon_option_price_rule').trigger('change');
578
-
579
- $('#subtotal_option_price_rule').on('change', function () {
580
- var option = $(this).val();
581
- if (option == 'none') {
582
- $('.subtotal_to_apply_price_rule_con').hide();
583
- } else {
584
- $('.subtotal_to_apply_price_rule_con').show();
585
- }
586
- });
587
- $('#subtotal_option_price_rule').trigger('change');
588
-
589
- $('#show_discount_table').on('change', function () {
590
- var option = $(this).val();
591
- if (option == 'show') {
592
- $('.discount_table_options').show();
593
- } else if (option == 'advance') {
594
- $('.discount_table_options').hide();
595
- $('.discount_table_option_advance').show();
596
- } else {
597
- $('.discount_table_options').hide();
598
- }
599
- });
600
- $('#show_discount_table').trigger('change');
601
-
602
- $('#message_on_apply_cart_discount').on('change', function () {
603
- var option = $(this).val();
604
- if (option == 'yes') {
605
- $('.message_on_apply_cart_discount_options').show();
606
- } else {
607
- $('.message_on_apply_cart_discount_options').hide();
608
- }
609
- });
610
- $('#message_on_apply_cart_discount').trigger('change');
611
-
612
- $('#message_on_apply_price_discount').on('change', function () {
613
- var option = $(this).val();
614
- if (option == 'yes') {
615
- $('.message_on_apply_price_discount_options').show();
616
- } else {
617
- $('.message_on_apply_price_discount_options').hide();
618
- }
619
- });
620
- $('#message_on_apply_price_discount').trigger('change');
621
-
622
- $('select[name="show_sale_tag_on_product_page"]').on('change', function () {
623
- var option = $(this).val();
624
- if (option == 'show' || option == 'show_on_any_rules_matches') {
625
- $('#customize_sale_tag').prop('checked', true).trigger('change');
626
- } else {
627
- $('#customize_sale_tag').prop('checked', false).trigger('change');
628
- }
629
- });
630
-
631
- $('#display_you_saved_text').on('change', function () {
632
- var option = $(this).val();
633
- if (option == 'no') {
634
- $('.display_you_saved_text_options').hide();
635
- } else {
636
- $('.display_you_saved_text_options').show();
637
- }
638
- });
639
- $('#display_you_saved_text').trigger('change');
640
-
641
- $('#customize_sale_tag').on('change', function () {
642
- if ($("#customize_sale_tag").is(":checked")) {
643
- $('.customize_sale_tag_option').show();
644
- } else {
645
- $('.customize_sale_tag_option').hide();
646
- }
647
- });
648
- $('#customize_sale_tag').trigger('change');
649
-
650
- $(document).on('keyup', '.rule_descr', function () {
651
- var value = $(this).val();
652
- value = '| ' + value;
653
- var id = $(this).attr('id');
654
- id = id.replace('rule_descr_', '');
655
- $('#rule_label_' + id).html(value);
656
- });
657
-
658
- //--------------------------------------------------------------------------------------------------------------
659
- //-----------------------------------------------CART RULES-----------------------------------------------------
660
- //--------------------------------------------------------------------------------------------------------------
661
-
662
- $(document).on('click', '#add_cart_rule', function () {
663
- var count = $('.cart_rules_list').length;
664
- var product_list = '';
665
- var products_list = '';
666
- var loader = $('.woo_discount_loader_outer > .woo_discount_loader');
667
- var wdr_nonce = $('input[name="wdr_search_nonce"]').val();
668
- $.ajax({
669
- url: ajax_url,
670
- type: 'POST',
671
- data: {action: 'loadProductSelectBox', name: 'discount_rule['+count+'][purchase_history_products]', wdr_nonce: wdr_nonce},
672
- beforeSend: function() {
673
- loader.show();
674
- },
675
- complete: function() {
676
- loader.hide();
677
- },
678
- success: function (response) {
679
- product_list = response;
680
- $('#purchase_history_products_list_'+count).html(product_list);
681
- $('.wc-product-search').trigger( 'wc-enhanced-select-init' );
682
- }
683
- });
684
- $.ajax({
685
- url: ajax_url,
686
- type: 'POST',
687
- data: {action: 'loadProductSelectBox', name: 'discount_rule['+count+'][products]', wdr_nonce: wdr_nonce},
688
- beforeSend: function() {
689
- loader.show();
690
- },
691
- complete: function() {
692
- loader.hide();
693
- },
694
- success: function (response) {
695
- products_list = response;
696
- $('#products_list_'+count).html(products_list);
697
- $('.wc-product-search').trigger( 'wc-enhanced-select-init' );
698
- }
699
- });
700
-
701
- // Cloning the List.
702
- var user_list = $('#cart_user_list_0 > option').clone();
703
- var category_list = $('#cart_category_list_0 > option').clone();
704
- var coupon_list = $('#cart_coupon_list_0 > option').clone();
705
- var roles_list = $('#cart_roles_list_0 > option').clone();
706
- var country_list = $('#cart_countries_list_0 > option').clone();
707
- var order_status_list = $('#order_status_list_0 > option').clone();
708
- if (is_pro) {
709
- var form = '<div class="cart_rules_list row"> <div class="col-md-3 form-group"> <label>'+woo_discount_localization.type_text+' <select class="form-control cart_rule_type" id="cart_condition_type_' + count + '" name="discount_rule[' + count + '][type]"> <optgroup label="'+woo_discount_localization.cart_subtotal+'"><option value="subtotal_least" selected="selected">'+woo_discount_localization.subtotal_at_least+'</option><option value="subtotal_less">'+woo_discount_localization.subtotal_less_than+'</option></optgroup>' +
710
- '<optgroup label="'+woo_discount_localization.cart_item_count+'"><option value="item_count_least">'+woo_discount_localization.number_of_line_items_in_cart_at_least+'</option><option value="item_count_less">'+woo_discount_localization.number_of_line_items_in_cart_less_than+'</option></optgroup>' +
711
- '<optgroup label="'+woo_discount_localization.quantity_sum+'"><option value="quantity_least">'+woo_discount_localization.total_number_of_quantities_in_cart_at_least+'</option><option value="quantity_less">'+woo_discount_localization.total_number_of_quantities_in_cart_less_than+'</option></optgroup>' +
712
- '<optgroup label="'+woo_discount_localization.products_in_cart+'">' +
713
- '<option value="products_in_list">'+woo_discount_localization.products_in_list+'</option>' +
714
- '<option value="products_not_in_list">'+woo_discount_localization.products_not_in_list+'</option>' +
715
- '<option value="exclude_sale_products">'+woo_discount_localization.exclude_sale_products+'</option>' +
716
- '</optgroup>' +
717
- '<optgroup label="'+woo_discount_localization.categories_in_cart+'">' +
718
- '<option value="categories_in">'+woo_discount_localization.categories_in_cart+'</option>' +
719
- '<option value="atleast_one_including_sub_categories">'+woo_discount_localization.atleast_one_including_sub_categories+'</option>' +
720
- '<option value="in_each_category">'+woo_discount_localization.in_each_category_cart+'</option>' +
721
- '<option value="exclude_categories">'+woo_discount_localization.exclude_categories_in_cart+'</option>' +
722
- '</optgroup>' +
723
- '<optgroup label="'+woo_discount_localization.customer_details_must_be_logged_in+'"><option value="users_in">'+woo_discount_localization.user_in_list+'</option><option value="roles_in">'+woo_discount_localization.user_role_in_list+'</option></optgroup>' +
724
- '<optgroup label="'+woo_discount_localization.customer_email+'"><option value="customer_email_tld">'+woo_discount_localization.customer_email_tld+'</option><option value="customer_email_domain">'+woo_discount_localization.customer_email_domain+'</option></optgroup>' +
725
- '<optgroup label="'+woo_discount_localization.customer_billing_details+'"><option value="customer_billing_city">'+woo_discount_localization.customer_billing_city+'</option></optgroup>' +
726
- '<optgroup label="'+woo_discount_localization.customer_shipping_details+'">' +
727
- '<option value="customer_shipping_city">'+woo_discount_localization.customer_shipping_city+'</option>' +
728
- '<option value="customer_shipping_state">'+woo_discount_localization.customer_shipping_state+'</option>' +
729
- '<option value="shipping_countries_in">'+woo_discount_localization.shipping_country_list+'</option>' +
730
- '<option value="customer_shipping_zip_code">'+woo_discount_localization.customer_shipping_zip_code+'</option></optgroup>' +
731
- '<optgroup label="'+woo_discount_localization.purchase_history+'">' +
732
- '<option value="customer_based_on_first_order">'+woo_discount_localization.first_order_discount+'</option>'+
733
- '<option value="customer_based_on_purchase_history">'+woo_discount_localization.purchased_amount+'</option>'+
734
- '<option value="customer_based_on_purchase_history_order_count">'+woo_discount_localization.number_of_order_purchased+'</option>'+
735
- '<option value="customer_based_on_purchase_history_product_order_count">'+woo_discount_localization.number_of_order_purchased_in_product+'</option>'+
736
- '<option value="customer_based_on_purchase_history_product_quantity_count">'+woo_discount_localization.number_of_order_quantity_purchased_in_product+'</option>'+
737
- '</optgroup>' +
738
- '<optgroup label="'+woo_discount_localization.coupon_applied+'"><option value="create_dynamic_coupon">'+woo_discount_localization.create_a_coupon+'</option><option value="coupon_applied_any_one">'+woo_discount_localization.atleast_any_one+'</option><option value="coupon_applied_all_selected">'+woo_discount_localization.all_selected_coupon+'</option></optgroup>' +
739
- '</select></label><div class="wdr_cart_rule_doc_con"></div></div>' +
740
- '<div class="col-md-3 form-group"><label> <span class="value_text_' +count+ '">'+woo_discount_localization.value_text+'</span><div id="general_' + count + '"><input type="text" class="form-control" name="discount_rule[' + count + '][option_value]"></div>' +
741
- '<div id="user_div_' + count + '">';
742
- if($('#flycart_wdr_woocommerce_version').val() == 2){
743
- form += '<input class="wc-customer-search" style="width: 250px" name="discount_rule[' + count + '][users_to_apply][]" data-placeholder="'+woo_discount_localization.place_holder_search_for_a_user+'"/>';
744
- } else {
745
- form += '<select class="wc-customer-search" style="width: 250px" multiple="multiple" name="discount_rule[' + count + '][users_to_apply][]" data-placeholder="'+woo_discount_localization.place_holder_search_for_a_user+'"></select>';
746
- }
747
- form += '</div>' +
748
- '<div id="product_div_' + count + '"><select id="cart_product_list_' + count + '" class="product_list selectpicker" title="'+woo_discount_localization.none_selected+'" data-live-search="true" multiple name="discount_rule[' + count + '][product_to_apply][]"></select></div>' +
749
- '<div id="products_div_' + count + '"><div class="form-group" id="products_list_'+ count +'"></div></div>' +
750
- '<div id="exclude_on_sale_products_div_' + count + '">'+woo_discount_localization.exclude_sale_products_desc+'</div>' +
751
- '<div id="category_div_' + count + '"><select id="cart_category_list_' + count + '" class="category_list selectpicker" title="'+woo_discount_localization.none_selected+'" data-live-search="true" multiple name="discount_rule[' + count + '][category_to_apply][]"></select></div>';
752
- if($('#has_large_number_of_coupon').val() == 1){
753
- form += '<div id="coupon_div_' + count + '"><select id="cart_coupon_list_' + count + '" class="coupons_selectbox_multi_select_wdr" multiple name="discount_rule[' + count + '][coupon_to_apply][]"></select></div>';
754
- } else {
755
- form += '<div id="coupon_div_' + count + '"><select id="cart_coupon_list_' + count + '" class="coupon_list selectpicker" title="'+woo_discount_localization.none_selected+'" data-live-search="true" multiple name="discount_rule[' + count + '][coupon_to_apply][]"></select></div>';
756
- }
757
- form += '<div id="roles_div_' + count + '"><select id="cart_roles_list_' + count + '" class="roles_list selectpicker" title="'+woo_discount_localization.none_selected+'" data-live-search="true" multiple name="discount_rule[' + count + '][user_roles_to_apply][]"></select></div>' +
758
- '<div id="countries_div_' + count + '"><select id="cart_countries_list_' + count + '" class="country_list selectpicker" title="'+woo_discount_localization.none_selected+'" data-live-search="true" multiple name="discount_rule[' + count + '][countries_to_apply][]"></select></div>' +
759
- '<div id="purchase_history_div_' + count + '">' +
760
- '<div class="form-group wdr_hide" id="purchase_history_products_list_'+ count +'">'+
761
- '</div>'+
762
- '<select class="selectpicker purchased_history_type" data-live-search="true" name="discount_rule['+count+'][purchased_history_type]">' +
763
- '<option value="atleast">'+woo_discount_localization.greater_than_or_equal_to+'</option>' +
764
- '<option value="less_than_or_equal">'+woo_discount_localization.less_than_or_equal_to+'</option>' +
765
- '</select>' +
766
- ' <input name="discount_rule[' + count + '][purchased_history_amount]" value="" type="text"/> '+woo_discount_localization.in_order_status+' <select id="order_status_list_' + count + '" class="order_status_list selectpicker" data-live-search="true" multiple name="discount_rule[' + count + '][purchase_history_order_status][]"></select>' +
767
- ' <select class="selectpicker purchased_history_duration" data-index="'+count+'" name="discount_rule['+count+'][purchased_history_duration]">' +
768
- '<option value="all_time">'+woo_discount_localization.from_all_previous_orders+'</option>' +
769
- '<option value="7_days">'+woo_discount_localization.last_7_days+'</option>' +
770
- '<option value="14_days">'+woo_discount_localization.last_14_days+'</option>' +
771
- '<option value="30_days">'+woo_discount_localization.last_30_days+'</option>' +
772
- '<option value="60_days">'+woo_discount_localization.last_60_days+'</option>' +
773
- '<option value="90_days">'+woo_discount_localization.last_90_days+'</option>' +
774
- '<option value="180_days">'+woo_discount_localization.last_180_days+'</option>' +
775
- '<option value="1_year">'+woo_discount_localization.last_1_year+'</option>' +
776
- '<option value="custom_days">'+woo_discount_localization.custom_days+'</option>' +
777
- '</select>' +
778
- '<span class="purchased_history_duration_days_con" id="purchased_history_duration_days_con_'+count+'">' +
779
- '<input name="discount_rule['+count+'][purchased_history_duration_days]" value="" placeholder="30" type="text"/> '+woo_discount_localization.in_days+
780
- '</span>' +
781
- '</div><div class="notice inline notice-alt notice-warning cart_rule_validation_error wdr_validation_notice"></div>' +
782
- '</div><div class="col-md-1"> <label> '+woo_discount_localization.action_text+'</label> <br> <a href=javascript:void(0) class="btn btn-danger remove_cart_rule">'+woo_discount_localization.remove_text+'</a> </div>' +
783
- '</label></div>';
784
- } else {
785
- var form = '<div class="cart_rules_list row"> <div class="col-md-3 form-group"> <label>'+woo_discount_localization.type_text+' <select class="form-control cart_rule_type" id="cart_condition_type_' + count + '" name="discount_rule[' + count + '][type]"> <optgroup label="'+woo_discount_localization.cart_subtotal+'"><option value="subtotal_least" selected="selected">'+woo_discount_localization.subtotal_at_least+'</option><option value="subtotal_less">'+woo_discount_localization.subtotal_less_than+'</option></optgroup>' +
786
- '<optgroup label="'+woo_discount_localization.cart_item_count+'"><option value="item_count_least">'+woo_discount_localization.number_of_line_items_in_cart_at_least+'</option><option value="item_count_less">'+woo_discount_localization.number_of_line_items_in_cart_less_than+'</option></optgroup>' +
787
- '<optgroup label="'+woo_discount_localization.quantity_sum+'"><option disabled>'+woo_discount_localization.total_number_of_quantities_in_cart_at_least+' <b>' + pro_suffix + '</b></option><option disabled>'+woo_discount_localization.total_number_of_quantities_in_cart_less_than+' <b>' + pro_suffix + '</b></option></optgroup>' +
788
- '<optgroup label="'+woo_discount_localization.products_in_cart+'">' +
789
- '<option disabled>'+woo_discount_localization.products_in_list+' <b>' + pro_suffix + '</b></option>' +
790
- '<option disabled>'+woo_discount_localization.products_not_in_list+' <b>' + pro_suffix + '</b></option>' +
791
- '<option disabled>'+woo_discount_localization.exclude_sale_products+' <b>' + pro_suffix + '</b></option>' +
792
- '</optgroup>' +
793
- '<optgroup label="'+woo_discount_localization.categories_in_cart+'">' +
794
- '<option disabled>'+woo_discount_localization.categories_in_cart+' <b>' + pro_suffix + '</b></option>' +
795
- '<option disabled>'+woo_discount_localization.atleast_one_including_sub_categories+' <b>' + pro_suffix + '</b></option>' +
796
- '<option disabled>'+woo_discount_localization.in_each_category_cart+' <b>' + pro_suffix + '</b></option>' +
797
- '<option disabled>'+woo_discount_localization.exclude_categories_in_cart+' <b>' + pro_suffix + '</b></option>' +
798
- '</optgroup>' +
799
- '<optgroup label="'+woo_discount_localization.customer_details_must_be_logged_in+'"><option disabled>'+woo_discount_localization.user_in_list+' <b>' + pro_suffix + '</b></option><option disabled>'+woo_discount_localization.user_role_in_list+' <b>' + pro_suffix + '</b></option></optgroup>' +
800
- '<optgroup label="'+woo_discount_localization.customer_email+'"><option disabled>'+woo_discount_localization.customer_email_tld+' <b>' + pro_suffix + '</b></option><option disabled>'+woo_discount_localization.customer_email_domain+'<b>' + pro_suffix + '</b></option></optgroup>' +
801
- '<optgroup label="'+woo_discount_localization.customer_billing_details+'"><option disabled>'+woo_discount_localization.customer_billing_city+' <b>' + pro_suffix + '</b></option></optgroup>' +
802
- '<optgroup label="'+woo_discount_localization.customer_shipping_details+'">' +
803
- '<option disabled>'+woo_discount_localization.customer_shipping_city+' <b>' + pro_suffix + '</b></option>' +
804
- '<option disabled>'+woo_discount_localization.customer_shipping_state+' <b>' + pro_suffix + '</b></option>' +
805
- '<option disabled>'+woo_discount_localization.shipping_country_list+' <b>' + pro_suffix + '</b></option>' +
806
- '<option disabled>'+woo_discount_localization.customer_shipping_zip_code+' <b>' + pro_suffix + '</b></option></optgroup>' +
807
- '<optgroup label="'+woo_discount_localization.purchase_history+'"><option disabled>'+woo_discount_localization.purchased_amount+' <b>' + pro_suffix + '</b></option>' +
808
- '<option disabled>'+woo_discount_localization.number_of_order_purchased+' <b>' + pro_suffix + '</b></option>' +
809
- '<option disabled>'+woo_discount_localization.number_of_order_purchased_in_product+' <b>' + pro_suffix + '</b></option>' +
810
- '</optgroup>' +
811
- '<optgroup label="'+woo_discount_localization.coupon_applied+'"><option disabled>'+woo_discount_localization.atleast_any_one+' <b>' + pro_suffix + '</b></option><option disabled>'+woo_discount_localization.all_selected+' <b>' + pro_suffix + '</b></option></optgroup>' +
812
- '</select></label><div class="wdr_cart_rule_doc_con"></div></div>' +
813
- '<div class="col-md-3 form-group"><label> <span class="value_text_'+count+'">'+woo_discount_localization.value_text+'</span><div id="general_' + count + '"><input type="text" class="form-control" name="discount_rule[' + count + '][option_value]"></div>' +
814
- '<div id="user_div_' + count + '"><select id="cart_user_list_' + count + '" class="user_list selectpicker" title="'+woo_discount_localization.none_selected+'" data-live-search="true" multiple name="discount_rule[' + count + '][users_to_apply][]"></select></div>' +
815
- '<div id="product_div_' + count + '"><select id="cart_product_list_' + count + '" class="product_list selectpicker" title="'+woo_discount_localization.none_selected+'" data-live-search="true" multiple name="discount_rule[' + count + '][product_to_apply][]"></select></div>' +
816
- '<div id="category_div_' + count + '"><select id="cart_category_list_' + count + '" class="category_list selectpicker" title="'+woo_discount_localization.none_selected+'" data-live-search="true" multiple name="discount_rule[' + count + '][category_to_apply][]"></select></div>' +
817
- '<div id="roles_div_' + count + '"><select id="cart_roles_list_' + count + '" class="roles_list selectpicker" title="'+woo_discount_localization.none_selected+'" data-live-search="true" multiple name="discount_rule[' + count + '][user_roles_to_apply][]"></select></div>' +
818
- '<div id="countries_div_' + count + '"><select id="cart_countries_list_' + count + '" class="country_list selectpicker" title="'+woo_discount_localization.none_selected+'" data-live-search="true" multiple name="discount_rule[' + count + '][countries_to_apply][]"></select></div>' +
819
- '<div id="purchase_history_div_' + count + '"><select id="order_status_list_' + count + '" class="order_status_list selectpicker" title="'+woo_discount_localization.none_selected+'" data-live-search="true" multiple name="discount_rule[' + count + '][purchase_history_order_status][]"></select></div>' +
820
- '</div><div class="col-md-1"> <label> '+woo_discount_localization.action_text+' </label><br><a href=javascript:void(0) class="btn btn-danger remove_cart_rule">'+woo_discount_localization.remove_text+'</a> </div>' +
821
- '</label></div>';
822
- }
823
-
824
- // Append to Cart rules list.
825
- $('#cart_rules_list').append(form);
826
- if(product_list != ''){
827
- $('#purchase_history_products_list_'+count).html(product_list);
828
- $('.wc-product-search').trigger( 'wc-enhanced-select-init' );
829
- }
830
- if(products_list != ''){
831
- $('#products_list_'+count).html(products_list);
832
- $('.wc-product-search').trigger( 'wc-enhanced-select-init' );
833
- }
834
-
835
- $('.wc-customer-search').trigger( 'wc-enhanced-select-init' );
836
- $('.coupons_selectbox_multi_select_wdr').trigger('trigger_ajax_select_wdr');
837
-
838
- // Append the List of Values.
839
- $('#cart_user_list_' + count).append(user_list);
840
- $('#cart_product_list_' + count).append(product_list);
841
- $('#products_list_' + count).append(products_list);
842
- $('#cart_category_list_' + count).append(category_list);
843
- $('#cart_coupon_list_' + count).append(coupon_list);
844
- $('#cart_roles_list_' + count).append(roles_list);
845
- $('#cart_countries_list_' + count).append(country_list);
846
- $('#order_status_list_' + count).append(order_status_list);
847
-
848
- $('select.purchased_history_duration').trigger('change');
849
- // Refresh the SelectPicker.
850
- $('.product_list,.category_list,.coupon_list,.roles_list,.country_list,.order_status_list,.purchased_history_type,.purchased_history_duration').selectpicker('refresh');
851
-
852
- // Default Hide List.
853
- $('#user_div_' + count).css('display', 'none');
854
- $('#product_div_' + count).css('display', 'none');
855
- $('#products_div_' + count).css('display', 'none');
856
- $('#exclude_on_sale_products_div_' + count).css('display', 'none');
857
- $('#category_div_' + count).css('display', 'none');
858
- $('#coupon_div_' + count).css('display', 'none');
859
- $('#roles_div_' + count).css('display', 'none');
860
- $('#countries_div_' + count).css('display', 'none');
861
- $('#purchase_history_div_' + count).css('display', 'none');
862
- $("#cart_rules_list").trigger('cart_rule_condition_updated');
863
- });
864
-
865
- $(document).on('change', '.cart_rule_type', function () {
866
- var id = $(this).attr('id');
867
- id = id.replace('cart_condition_type_', '');
868
- var active = $(this).val();
869
- showOnly(active, id);
870
- $("#cart_rules_list").trigger('cart_rule_condition_updated');
871
- });
872
-
873
- $('#cart_rule_discount_type').on('change', function () {
874
- var option = $(this).val();
875
- switch (option) {
876
- case 'shipping_price':
877
- $('#cart_rule_discount_value_con').addClass('wdr_hide_important');
878
- $('#cart_rule_product_discount_field').addClass('wdr_hide_important');
879
- break;
880
- case 'product_discount':
881
- $('#cart_rule_discount_value_con').addClass('wdr_hide_important');
882
- $('#cart_rule_product_discount_field').removeClass('wdr_hide_important');
883
- break;
884
- default:
885
- $('#cart_rule_product_discount_field').addClass('wdr_hide_important');
886
- $('#cart_rule_discount_value_con').removeClass('wdr_hide_important');
887
- break;
888
- }
889
- });
890
- $('#cart_rule_discount_type').trigger('change');
891
-
892
- //on change discount type in price discount
893
- $(document).on('change', '.price_discount_type', function () {
894
- var discount_amount = $(this).closest('.discount_rule_list').find('.price_discount_amount');
895
- var price_discount_amount = $(this).closest('.discount_rule_list').find('.price_discount_product_list_con');
896
- var discount_product_percent_con = $(this).closest('.discount_rule_list').find('.discount_product_percent_con');
897
- var discount_for_min_quantity_text = $(this).closest('.discount_rule_list').find('.discount_for_min_quantity_text');
898
- var discount_for_max_quantity_label = $(this).closest('.discount_rule_list').find('.discount_for_max_quantity_label');
899
- discount_for_max_quantity_label.show();
900
- discount_for_min_quantity_text.html(woo_discount_localization.min_quantity);
901
- if(jQuery.inArray($(this).val(), ['product_discount', 'buy_x_get_x', 'buy_x_get_y', 'more_than_one_cheapest', 'more_than_one_cheapest_from_cat', 'more_than_one_cheapest_from_all']) !== -1){
902
- if(jQuery.inArray($(this).val(), ['buy_x_get_x', 'buy_x_get_y', 'more_than_one_cheapest', 'more_than_one_cheapest_from_cat', 'more_than_one_cheapest_from_all']) !== -1){
903
- var discount_product_option_field = $(this).closest('.discount_rule_list').find('.discount_product_option');
904
- if($(this).val() == 'buy_x_get_x'){
905
- $(discount_product_option_field).val('same_product');
906
- } else if($(this).val() == 'buy_x_get_y'){
907
- $(discount_product_option_field).val('all');
908
- } else {
909
- $(discount_product_option_field).val($(this).val());
910
- if(woo_discount_localization.enable_fixed_item_count_in_bogo == false){
911
- var discount_product_item_count_type_field = $(this).closest('.discount_rule_list').find('.discount_product_item_count_type');
912
- $(discount_product_item_count_type_field).val('dynamic');
913
- $(discount_product_item_count_type_field).trigger('change');
914
- }
915
- }
916
- $(discount_product_option_field).trigger('change');
917
- discount_amount.hide();
918
- var discount_type_tool_tip_con = $(this).closest('.discount_rule_list').find('.price_discount_amount_tool_tip_con');
919
- var adjustment_tool_tip_text = '';
920
- if($(this).val() == 'buy_x_get_x'){
921
- adjustment_tool_tip_text = woo_discount_localization.buy_x_get_x_tool_tip_text;
922
- } else if($(this).val() == 'buy_x_get_y'){
923
- adjustment_tool_tip_text = woo_discount_localization.buy_x_get_y_tool_tip_text;
924
- } else if($(this).val() == 'more_than_one_cheapest'){
925
- adjustment_tool_tip_text = woo_discount_localization.more_than_one_cheapest_tool_tip_text;
926
- } else if($(this).val() == 'more_than_one_cheapest_from_cat'){
927
- adjustment_tool_tip_text = woo_discount_localization.more_than_one_cheapest_from_cat_tool_tip_text;
928
- } else if($(this).val() == 'more_than_one_cheapest_from_all'){
929
- adjustment_tool_tip_text = woo_discount_localization.more_than_one_cheapest_from_all_tool_tip_text;
930
- }
931
- discount_type_tool_tip_con.html('<span class="woocommerce-help-tip percentage_discount_amount_tool_tip" data-tip="'+adjustment_tool_tip_text+'"></span>').show();
932
- trigger_woocommerce_tooltip();
933
- }
934
- price_discount_amount.removeClass('hide').show();
935
- discount_product_percent_con.removeClass('hide').show();
936
- $(this).closest('.discount_rule_list').find('.hide-for-product-discount').hide();
937
- } else {
938
- discount_amount.show();
939
- price_discount_amount.hide();
940
- discount_product_percent_con.hide();
941
- $(this).closest('.discount_rule_list').find('.hide-for-product-discount').show();
942
- var discount_type_tool_tip_con = $(this).closest('.discount_rule_list').find('.price_discount_amount_tool_tip_con');
943
- if($(this).val() == 'percentage_discount'){
944
- discount_type_tool_tip_con.html('<span class="woocommerce-help-tip percentage_discount_amount_tool_tip" data-tip="'+woo_discount_localization.percentage_discount_amount_tool_tip_text+'"></span>');
945
- } else if($(this).val() == 'fixed_price'){
946
- discount_type_tool_tip_con.html('<span class="woocommerce-help-tip percentage_discount_amount_tool_tip" data-tip="'+woo_discount_localization.fixed_price_discount_amount_tool_tip_text+'"></span>');
947
- } else if($(this).val() == 'set_discount'){
948
- discount_type_tool_tip_con.html('<span class="woocommerce-help-tip percentage_discount_amount_tool_tip" data-tip="'+woo_discount_localization.set_discount_amount_tool_tip_text+'"></span>');
949
- } else {
950
- discount_type_tool_tip_con.html('<span class="woocommerce-help-tip percentage_discount_amount_tool_tip" data-tip="'+woo_discount_localization.price_discount_amount_tool_tip_text+'"></span>');
951
- }
952
- trigger_woocommerce_tooltip();
953
-
954
- }
955
- if($(this).val() == 'set_discount'){
956
- discount_for_max_quantity_label.hide();
957
- discount_for_min_quantity_text.html(woo_discount_localization.set_quantity);
958
- }
959
- var discount_types = wooo_discount_range_altered();
960
- $('.set_discount_info_text, .fixed_price_discount_info_text').hide();
961
- if(discount_types.has_set_discount == true){
962
- $('.set_discount_info_text').show();
963
- }
964
- if(discount_types.has_fixed_price == true){
965
- $('.fixed_price_discount_info_text').show();
966
- }
967
- if(discount_types.has_set_discount == true && discount_types.has_range_discount == true ){
968
- $('.set_discount_with_range_warning').show();
969
- } else {
970
- $('.set_discount_with_range_warning').hide();
971
- }
972
- });
973
- $('.price_discount_type').trigger('change');
974
-
975
- //on change discount_product_option in product discount
976
- $(document).on('change', 'select.discount_product_option', function () {
977
- var discount_product = $(this).closest('.price_discount_product_list_con').find('.discount_product_option_list_con');
978
- var discount_category = $(this).closest('.price_discount_product_list_con').find('.discount_category_option_list_con');
979
- var discount_product_more_cheapest = $(this).closest('.price_discount_product_list_con').find('.discount_product_option_more_cheapest_con');
980
- var discount_product_option_bogo_con = $(this).closest('.price_discount_product_list_con').find('.discount_product_option_bogo_con');
981
- discount_category.addClass('hide');
982
- discount_product_option_bogo_con.addClass('hide');
983
- if($(this).val() == 'all' || $(this).val() == 'same_product'){
984
- discount_product_option_bogo_con.removeClass('hide');
985
- }
986
- if($(this).val() == 'any_cheapest_from_all' || $(this).val() == 'more_than_one_cheapest_from_all'){
987
- discount_product.addClass('hide');
988
- } else {
989
- discount_product.removeClass('hide');
990
- }
991
- if($(this).val() == 'more_than_one_cheapest' || $(this).val() == 'more_than_one_cheapest_from_all' || $(this).val() == 'more_than_one_cheapest_from_cat'){
992
- discount_product_more_cheapest.removeClass('hide');
993
- } else {
994
- discount_product_more_cheapest.addClass('hide');
995
- }
996
- if($(this).val() == 'more_than_one_cheapest_from_cat'){
997
- discount_product.addClass('hide');
998
- discount_category.removeClass('hide');
999
- }
1000
- if($(this).val() == 'same_product'){
1001
- discount_product.addClass('hide');
1002
- }
1003
-
1004
- });
1005
- $('select.discount_product_option').trigger('change');
1006
-
1007
- $(document).on('change', 'select.discount_product_item_count_type', function () {
1008
- var optionVal = $(this).val();
1009
- var target = $(this).closest('.discount_product_option_more_cheapest_con').find('.discount_product_items_count_field');
1010
- if (optionVal == 'static') {
1011
- target.removeClass('hide');
1012
- } else {
1013
- target.addClass('hide');
1014
- }
1015
- });
1016
- $('select.discount_product_item_count_type').trigger('change');
1017
-
1018
- //on change discount_product_discount_type in product discount
1019
- $(document).on('change', 'select.discount_product_discount_type', function () {
1020
- var discount_product_percent_field = $(this).closest('.discount_product_percent_con').find('.discount_product_percent_field');
1021
- if($(this).val() == 'limited_percent'){
1022
- discount_product_percent_field.removeClass('hide');
1023
- } else {
1024
- discount_product_percent_field.addClass('hide');
1025
- }
1026
- });
1027
- $('select.discount_product_discount_type').trigger('change');
1028
-
1029
-
1030
- // Saving Cart Rule.
1031
- $('#saveCartRule').on('click', function (event) {
1032
- $(".form-control").removeClass('wdr_invalid');
1033
- $("div.cart_rule_validation_error").hide();
1034
- var form = $('#form_cart_rule').serialize();
1035
- var current = $(this);
1036
- var rule_id = $('#rule_id').val();
1037
- var loader = $('.woo_discount_loader_outer > .woo_discount_loader');
1038
- event.preventDefault();
1039
- if ($('#rule_name').val() == '') {
1040
- alert(woo_discount_localization.please_enter_the_rule_name);
1041
- } else {
1042
- current.val(woo_discount_localization.saving);
1043
- $.ajax({
1044
- url: ajax_url,
1045
- type: 'POST',
1046
- data: {action: 'saveCartRule', data: form},
1047
- beforeSend: function() {
1048
- loader.show();
1049
- },
1050
- complete: function() {
1051
- loader.hide();
1052
- },
1053
- success: function (result) {
1054
- var result = jQuery.parseJSON( result );
1055
- // After Status Changed.
1056
- resizeChart = setTimeout(function () {
1057
- current.val(woo_discount_localization.save_rule);
1058
- }, 300);
1059
- if(result.create_dynamic_coupon != undefined){
1060
- var error_row_con = $('select.cart_rule_type option[value="create_dynamic_coupon"]:selected');
1061
- error_row_con.closest('.cart_rules_list').find('input.form-control').val(result.create_dynamic_coupon);
1062
- $("input[name='dynamic_coupons_to_apply']").val(result.create_dynamic_coupon);
1063
- }
1064
- if(result.status == 1){
1065
- // Reset, if its New Form.
1066
- if (rule_id == 0) {
1067
- window.location.replace(admin_url + '&tab=cart-rules');
1068
- }
1069
- adminNotice();
1070
- } else {
1071
- //woo_discount_rule_error_notice(result.message);
1072
- if(result.invalid_field != undefined){
1073
- if(result.invalid_field == "create_dynamic_coupon"){
1074
- error_row_con.closest('.cart_rules_list').find('input.form-control').addClass('wdr_invalid');
1075
- $("a.restriction_tab").trigger('click');
1076
- error_row_con.closest('.cart_rules_list').find("div.cart_rule_validation_error").html("<p>"+result.error_message+"</p>").show();
1077
- }
1078
- }
1079
- }
1080
- }
1081
- });
1082
- }
1083
- });
1084
-
1085
- // Change the List to Show, on change of Rule Type.
1086
- $('.cart_rule_type').on('change', function () {
1087
- var id = $(this).attr('id');
1088
- id = id.replace('cart_condition_type_', '');
1089
-
1090
- $('#cart_user_list_' + id).selectpicker('val', []);
1091
- $('#cart_product_list_' + id).selectpicker('val', []);
1092
- $('#cart_category_list_' + id).selectpicker('val', []);
1093
- $('#cart_coupon_list_' + id).selectpicker('val', []);
1094
- $('#cart_roles_list_' + id).selectpicker('val', []);
1095
- $('#cart_countries_list_' + id).selectpicker('val', []);
1096
- $('#order_status_list_' + id).selectpicker('val', []);
1097
-
1098
- });
1099
-
1100
- // Enabling and Disabling the Status of the Rule.
1101
- $('.cart_manage_status').on('click', function (event) {
1102
- event.preventDefault();
1103
- var current = $(this);
1104
- var id = $(this).attr('id');
1105
- var wdr_nonce = $('input[name="wdr_nonce"]').val();
1106
- id = id.replace('state_', '');
1107
- $.ajax({
1108
- url: ajax_url,
1109
- type: 'POST',
1110
- dataType: "json",
1111
- data: {action: 'UpdateStatus', id: id, from: 'cart-rules', wdr_nonce: wdr_nonce},
1112
- success: function (response) {
1113
- // After Status Changed.
1114
- if (response.status == 'Disable') {
1115
- current.addClass('btn-warning');
1116
- current.removeClass('btn-success');
1117
- current.html(woo_discount_localization.enable_text);
1118
- } else if (response.status == 'Publish') {
1119
- current.removeClass('btn-warning');
1120
- current.addClass('btn-success');
1121
- current.html(woo_discount_localization.disable_text);
1122
- }
1123
- if (response.status_html != '') {
1124
- $("#status_in_text_"+id).html(response.status_html);
1125
- }
1126
- }
1127
-
1128
- });
1129
- });
1130
-
1131
- // Removing Cart Rule.
1132
- $('.cart_delete_rule').on('click', function (event) {
1133
- event.preventDefault();
1134
- var current = $(this);
1135
- var id = $(this).attr('id');
1136
- var wdr_nonce = $('input[name="wdr_nonce"]').val();
1137
- id = id.replace('delete_', '');
1138
- var confirm_delete = confirm(woo_discount_localization.are_you_sure_to_remove);
1139
- if (confirm_delete) {
1140
- $.ajax({
1141
- url: ajax_url,
1142
- type: 'POST',
1143
- data: {action: 'RemoveRule', id: id, from: 'cart-rules', wdr_nonce: wdr_nonce},
1144
- success: function () {
1145
- // After Removed.
1146
- current.closest('tr').remove();
1147
- location.reload(true);
1148
- }
1149
- });
1150
- }
1151
- });
1152
-
1153
-
1154
- $('.awdr-switch-version-button').on('click', function (event) {
1155
- event.preventDefault();
1156
- var version = $(this).attr('data-version');
1157
- var page = $(this).attr('data-page');
1158
- var nonce = $(this).attr('data-nonce');
1159
- $.ajax({
1160
- url: ajax_url,
1161
- type: 'POST',
1162
- data: {action: 'awdr_switch_version', version: version, page: page, wdr_nonce: nonce},
1163
- success: function (data) {
1164
- if(data.data.status == true){
1165
- window.location.replace(data.data.url);
1166
- }
1167
- if(data.data.type !== undefined){
1168
- if(data.data.type == 'auto_install'){
1169
- $("#wdr_switch_popup").modal("show");
1170
- $(".wdr_pro_install_message").html(data.data.message);
1171
- } else {
1172
- $(".wdr_switch_message").html(data.data.message);
1173
- }
1174
- } else {
1175
- $(".wdr_switch_message").html(data.data.message);
1176
- }
1177
- }
1178
- });
1179
- });
1180
- $(document).on('click', '#wdr_switch_popup .wdr-close-modal-box, #wdr_switch_popup .modal-sandbox', function (event) {
1181
- $('#wdr_switch_popup').modal('hide');
1182
- });
1183
- $(document).on('click', '.awdr_auto_install_pro_plugin', function (event) {
1184
- event.preventDefault();
1185
- $(".awdr_auto_install_pro_plugin").html("Proccessing please wait..")
1186
- $.ajax({
1187
- url: ajax_url,
1188
- type: 'POST',
1189
- data: {action: 'awdr_auto_install_pro_plugin'},
1190
- success: function (data) {
1191
- $(".wdr_switch_message").html('');
1192
- $(".wdr_pro_install_message").html(data);
1193
- if($("#wdr_pro_install_status").val() == "1"){
1194
- $('.awdr-switch-version-button').trigger('click');
1195
- }
1196
- }
1197
- });
1198
- });
1199
-
1200
- // Removing Cart Condition.
1201
- $(document).on('click', '.remove_cart_rule', function () {
1202
- var confirm_remove = confirm(woo_discount_localization.are_you_sure_to_remove);
1203
- if (confirm_remove) {
1204
- $(this).closest('.cart_rules_list').remove();
1205
- $("#cart_rules_list").trigger('cart_rule_condition_updated');
1206
- }
1207
- });
1208
-
1209
- $('#based_on_purchase_history').on('change', function () {
1210
- var checked = $( this ).val();
1211
- if(checked == "0" || checked == "" || checked == "first_order"){
1212
- $('#based_on_purchase_history_fields').hide();
1213
- } else {
1214
- $('#based_on_purchase_history_fields').show();
1215
- }
1216
- if(checked == "3" || checked == "4"){
1217
- $("#purchase_history_products").show();
1218
- } else {
1219
- $("#purchase_history_products").hide();
1220
- }
1221
- });
1222
- $('#based_on_purchase_history').trigger('change');
1223
-
1224
- $('#purchased_history_duration').on('change', function () {
1225
- var duration_value = $( this ).val();
1226
- if(duration_value == "custom_days"){
1227
- $('#purchased_history_duration_days_con').show();
1228
- } else {
1229
- $('#purchased_history_duration_days_con').hide();
1230
- }
1231
- });
1232
- $('#purchased_history_duration').trigger('change');
1233
-
1234
- $('#price_rule_method').on('change', function () {
1235
- var rule_method = $(this).val();
1236
- $('.price_discounts_con, .price_discount_condition_con').hide();
1237
- $('.'+rule_method+'_discount_cont, .'+rule_method+'_condition_cont').show();
1238
- });
1239
- $('#price_rule_method').trigger('change');
1240
-
1241
- $('#product_based_condition_quantity_rule').on('change', function () {
1242
- var quantity_values = $(this).val();
1243
- if(quantity_values == 'from'){
1244
- $('.product_based_condition_to').css({"display": "inline-block"})
1245
- } else {
1246
- $('.product_based_condition_to').css({"display": "none"})
1247
- }
1248
- });
1249
- $('#product_based_condition_quantity_rule').trigger('change');
1250
-
1251
- $('#product_based_condition_get_discount_type').on('change', function () {
1252
- var discount_type_value = $(this).val();
1253
- $('.get_discount_type_product_tag, .get_discount_type_category_tag').hide();
1254
- if(discount_type_value == 'product'){
1255
- $('.get_discount_type_product_tag').show();
1256
- } else {
1257
- $('.get_discount_type_category_tag').show();
1258
- }
1259
- });
1260
- $('#product_based_condition_get_discount_type').trigger('change');
1261
-
1262
- // product_based_condition_product_to_apply_count_option
1263
- $('#product_based_condition_product_to_apply_count_option').on('change', function () {
1264
- var value = $(this).val();
1265
- if(value == 'all'){
1266
- $('#product_based_condition_product_to_apply_count').css({"display": "none"})
1267
- } else {
1268
- $('#product_based_condition_product_to_apply_count').css({"display": "inline-block"})
1269
- }
1270
- });
1271
- $('#product_based_condition_product_to_apply_count_option').trigger('change');
1272
-
1273
- $('#wdr_do_bulk_action').on('click', function (event) {
1274
- event.preventDefault();
1275
- var formData = $('#woo_discount_list_form').serializeArray();
1276
- var loader = $('.woo_discount_loader_outer > .woo_discount_loader');
1277
- if($('#bulk-action-selector-top').val() != ''){
1278
- if($('#bulk-action-selector-top').val() == 'delete'){
1279
- if(!confirm(woo_discount_localization.are_you_sure_to_delete)){
1280
- return false;
1281
- }
1282
- }
1283
-
1284
- if ($("#woo_discount_list_form input:checkbox:checked").length > 0) {
1285
- formData.push({'name': 'action', 'value': 'doBulkAction'});
1286
- $.ajax({
1287
- url: ajax_url,
1288
- type: 'POST',
1289
- data: formData,
1290
- beforeSend: function() {
1291
- loader.show();
1292
- },
1293
- complete: function() {
1294
- loader.hide();
1295
- },
1296
- success: function (response) {
1297
- jQuery('#woo-admin-message').html(' <div class="notice notice-success is-dismissable"><p>'+response+'</p></div>');
1298
- location.reload();
1299
- }
1300
- });
1301
- } else {
1302
- alert(woo_discount_localization.please_select_at_least_one_checkbox);
1303
- return false;
1304
- }
1305
- } else {
1306
- alert(woo_discount_localization.please_select_bulk_action);
1307
- return false;
1308
- }
1309
- });
1310
-
1311
- function createDuplicateRule(id, type) {
1312
- if(id != undefined && type != undefined){
1313
- var loader = $('.woo_discount_loader_outer > .woo_discount_loader');
1314
- var wdr_nonce = $('input[name="wdr_nonce"]').val();
1315
- $.ajax({
1316
- url: ajax_url,
1317
- type: 'POST',
1318
- data: {'action': 'createDuplicateRule', 'id': id, 'type': type, 'wdr_nonce': wdr_nonce},
1319
- beforeSend: function() {
1320
- loader.show();
1321
- },
1322
- complete: function() {
1323
- loader.hide();
1324
- },
1325
- success: function (response) {
1326
- jQuery('#woo-admin-message').html(' <div class="notice notice-success is-dismissable"><p>'+response+'</p></div>');
1327
- location.reload();
1328
- }
1329
- });
1330
- }
1331
- }
1332
-
1333
- $('.duplicate_price_rule_btn').on('click', function (event) {
1334
- event.preventDefault();
1335
- ; createDuplicateRule($(this).attr('data-id'), 'price_rule');
1336
- });
1337
- $('.duplicate_cart_rule_btn').on('click', function (event) {
1338
- event.preventDefault();
1339
- createDuplicateRule($(this).attr('data-id'), 'cart_rule');
1340
- });
1341
- //--------------------------------------------------------------------------------------------------------------
1342
- //-----------------------------------------------SETTINGS-------------------------------------------------------
1343
- //--------------------------------------------------------------------------------------------------------------
1344
-
1345
- function woo_email_customizer_save_settings(type, current){
1346
- var form = $('#discount_config').serialize();
1347
- var loader = $('.woo_discount_loader_outer > .woo_discount_loader');
1348
- current.val(woo_discount_localization.saving);
1349
- if(type == 'settings'){
1350
- var enable_bootstrap_pre_val = $('#enable_bootstrap_id').attr('data-val');
1351
- var enable_bootstrap_current_val = $('input[name="enable_bootstrap"]:checked').val();
1352
- }
1353
-
1354
- $.ajax({
1355
- url: ajax_url,
1356
- type: 'POST',
1357
- data: {action: 'saveConfig', from: type, data: form},
1358
- beforeSend: function() {
1359
- loader.show();
1360
- },
1361
- complete: function() {
1362
- loader.hide();
1363
- },
1364
- success: function () {
1365
- // After Removed.
1366
- resizeChart = setTimeout(function () {
1367
- current.val(woo_discount_localization.save_text);
1368
- if(type == 'settings'){
1369
- if(enable_bootstrap_pre_val != enable_bootstrap_current_val){
1370
- location.reload();
1371
- }
1372
- }
1373
- }, 300);
1374
- adminNotice();
1375
- }
1376
- });
1377
- }
1378
-
1379
- $('#saveConfig').on('click', function (event) {
1380
- event.preventDefault();
1381
- woo_email_customizer_save_settings('settings', $(this))
1382
- /*var form = $('#discount_config').serialize();
1383
- var current = $(this);
1384
- var loader = $('.woo_discount_loader_outer > .woo_discount_loader');
1385
- current.val(woo_discount_localization.saving);
1386
- $.ajax({
1387
- url: ajax_url,
1388
- type: 'POST',
1389
- data: {action: 'saveConfig', from: 'settings', data: form},
1390
- beforeSend: function() {
1391
- loader.show();
1392
- },
1393
- complete: function() {
1394
- loader.hide();
1395
- },
1396
- success: function () {
1397
- // After Removed.
1398
- resizeChart = setTimeout(function () {
1399
- current.val(woo_discount_localization.save_text);
1400
- }, 300);
1401
- adminNotice();
1402
- }
1403
- });*/
1404
- });
1405
- $('#save_taxonomy_config').on('click', function (event) {
1406
- event.preventDefault();
1407
- woo_email_customizer_save_settings('taxonomy', $(this))
1408
- });
1409
-
1410
- $('#refresh_wdr_cache').on('click', function (event) {
1411
- event.preventDefault();
1412
- var loader = $('.woo_discount_loader_outer > .woo_discount_loader');
1413
- var wdr_nonce = $('input[name="wdr_nonce"]').val();
1414
- $.ajax({
1415
- url: ajax_url,
1416
- type: 'POST',
1417
- data: {action: 'resetWDRCache', wdr_nonce: wdr_nonce},
1418
- beforeSend: function() {
1419
- loader.show();
1420
- },
1421
- complete: function() {
1422
- loader.hide();
1423
- },
1424
- success: function (response) {
1425
- //adminNotice();
1426
- jQuery('#woo-admin-message').html(' <div class="notice notice-success is-dismissable"><p>'+response+'</p></div>');
1427
- }
1428
- });
1429
- });
1430
-
1431
- $('input[type=radio][name=enable_variable_product_cache]').change(function() {
1432
- if (this.value == '1') {
1433
- $('.enable_variable_product_cache_con').show();
1434
- } else {
1435
- $('.enable_variable_product_cache_con').hide();
1436
- }
1437
- });
1438
- $('input[type=radio][name=enable_variable_product_cache]:checked').trigger('change');
1439
-
1440
- $('select#enable_free_shipping').on('change', function () {
1441
- var option = $(this).val();
1442
- if (option == 'woodiscountfree') {
1443
- $('#woodiscount_settings_free_shipping_con').show();
1444
- } else {
1445
- $('#woodiscount_settings_free_shipping_con').hide();
1446
- }
1447
- });
1448
- $('select#enable_free_shipping').trigger('change');
1449
-
1450
- $(document).on('change', 'select.purchased_history_duration', function () {
1451
- //$('select.purchased_history_duration').on('change', function () {
1452
- var option_val = $(this).val();
1453
- var option_index = $(this).attr('data-index');
1454
- if(option_index != undefined && option_index != null && option_index != ''){
1455
- if (option_val == 'custom_days') {
1456
- $('#purchased_history_duration_days_con_'+option_index).show();
1457
- } else {
1458
- $('#purchased_history_duration_days_con_'+option_index).hide();
1459
- }
1460
- }
1461
- });
1462
- $('select.purchased_history_duration').trigger('change');
1463
-
1464
- function woo_discount_disable_cart_condition_options(field, disable_values) {
1465
- var selected_value = $(field).val();
1466
- $(field).find("option[wdr_altered='1']").removeAttr("disabled");
1467
- if(disable_values.length){
1468
- $.each( disable_values, function( key, value ) {
1469
- $(field).find("option[value='"+value+"']").attr("disabled", "disabled").attr("wdr_altered", "1");
1470
- });
1471
- if(jQuery.inArray(selected_value, disable_values) !== -1){
1472
- $(field).find('option:enabled').eq(0).prop('selected',true).trigger("change");
1473
- }
1474
- }
1475
- }
1476
-
1477
- $("#cart_rules_list").on('cart_rule_condition_updated', function () {
1478
- var cart_condition_type = $(this).find('select.cart_rule_type');
1479
- var allow_promotion_message, has_subtotal_least, has_quantity_least;
1480
- allow_promotion_message = has_subtotal_least = has_quantity_least = false;
1481
- $(".promotion_subtotal_from_con").hide();
1482
- var used_conditions = [];
1483
- $.each( cart_condition_type, function( key, container ) {
1484
- woo_discount_disable_cart_condition_options(container, used_conditions);
1485
- var option_value = $(container).val();
1486
- used_conditions.push(option_value);
1487
- if(option_value == 'subtotal_least'){
1488
- allow_promotion_message = true;
1489
- if(option_value == 'subtotal_least'){
1490
- has_subtotal_least = true;
1491
- $(".promotion_subtotal_from_con").show();
1492
- }
1493
- }
1494
- });
1495
- if(allow_promotion_message === true){
1496
- $(".show_promotion_message_cart_block").show();
1497
- } else {
1498
- $(".show_promotion_message_cart_block").hide();
1499
- }
1500
- });
1501
- $("#cart_rules_list").trigger('cart_rule_condition_updated');
1502
-
1503
- //--------------------------------------------------------------------------------------------------------------
1504
- //-----------------------------------------------SIDE PANEL-----------------------------------------------------
1505
- //--------------------------------------------------------------------------------------------------------------
1506
-
1507
- $('.woo-side-button').on('click', function () {
1508
- //$('#woo-side-panel').toggle();
1509
- if ($('#sidebar_text').html() == woo_discount_localization.show_text) {
1510
- $('#sidebar_text').html(woo_discount_localization.hide_text);
1511
- $('.woo-side-panel').show();
1512
- $('#sidebar_icon').addClass('dashicons-arrow-left');
1513
- $('#sidebar_icon').removeClass('dashicons-arrow-down');
1514
- } else {
1515
- $('#sidebar_text').html(woo_discount_localization.show_text);
1516
- $('.woo-side-panel').hide();
1517
- $('#sidebar_icon').removeClass('dashicons-arrow-left');
1518
- $('#sidebar_icon').addClass('dashicons-arrow-down');
1519
- }
1520
- });
1521
-
1522
- $('.coupons_selectbox_multi_select_wdr').on('trigger_ajax_select_wdr', function (event) {
1523
- var wdr_nonce = $('input[name="wdr_search_nonce"]').val();
1524
- $('.coupons_selectbox_multi_select_wdr').selectWoo({
1525
- ajax: {
1526
- url: ajax_url,
1527
- type: 'GET',
1528
- // url: "https://api.github.com/search/repositories",
1529
- dataType: 'json',
1530
- delay: 250,
1531
- data: function (params) {
1532
- return {
1533
- q: params.term, // search term
1534
- page: params.page,
1535
- wdr_nonce: wdr_nonce,
1536
- action: 'loadCoupons'
1537
- };
1538
- },
1539
- processResults: function (data, params) {
1540
- // parse the results into the format expected by Select2
1541
- // since we are using custom formatting functions we do not need to
1542
- // alter the remote JSON data, except to indicate that infinite
1543
- // scrolling can be used
1544
- params.page = params.page || 1;
1545
- if(data.length >= 1){
1546
- $.each(data, function( index, value ) {
1547
- value.id = value.post_name;
1548
- });
1549
- }
1550
- return {
1551
- results: data,
1552
- pagination: {
1553
- more: (params.page * 30) < data.length
1554
- }
1555
- };
1556
- },
1557
- cache: true
1558
- },
1559
- placeholder: woo_discount_localization.coupon_select_box_placeholder,
1560
- escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
1561
- minimumInputLength: 3,
1562
- templateResult: formatCouponSelectBoxWDR,
1563
- templateSelection: formatCouponSelectionWDR
1564
- });
1565
- });
1566
- $('.coupons_selectbox_multi_select_wdr').trigger('trigger_ajax_select_wdr');
1567
-
1568
-
1569
- function formatCouponSelectBoxWDR (repo) {
1570
- if (repo.loading) {
1571
- return repo.text;
1572
- }
1573
- var markup = "<div class='select2-result-repository clearfix'>" +
1574
- "<div class='select2-result-repository__meta'>" +
1575
- "<div class='select2-result-repository__title'>" + repo.post_title + "</div>";
1576
-
1577
- markup += "</div></div>";
1578
-
1579
- return markup;
1580
- }
1581
-
1582
- function formatCouponSelectionWDR (repo) {
1583
- return repo.post_title || repo.post_name || repo.text;
1584
- }
1585
-
1586
- });
1587
-
1588
- //------------------------------------------------------------------------------------------------------------------
1589
- function processShowOnlyTags(id_prefix, id){
1590
- var availableTags = ["user_div_", "product_div_", "category_div_", "coupon_div_", "general_", "roles_div_", "countries_div_", "purchase_history_div_", "products_div_", "exclude_on_sale_products_div_"];
1591
- $.each(availableTags, function( index, value ) {
1592
- if(value == id_prefix)
1593
- $('#'+value+id).css('display', 'block');
1594
- else
1595
- $('#'+value+id).css('display', 'none');
1596
- });
1597
- }
1598
- function showOnly(option, id) {
1599
- $('.value_text_'+id).css('display', 'block');
1600
- if (option == 'products_atleast_one' || option == 'products_not_in') {
1601
- processShowOnlyTags('product_div_', id);
1602
- } else if (option == 'categories_atleast_one' || option == 'categories_in' || option == 'in_each_category' || option == 'exclude_categories' || option == 'atleast_one_including_sub_categories') {
1603
- processShowOnlyTags('category_div_', id);
1604
- } else if (option == 'coupon_applied_any_one' || option == 'coupon_applied_all_selected') {
1605
- processShowOnlyTags('coupon_div_', id);
1606
- } else if (option == 'users_in') {
1607
- processShowOnlyTags('user_div_', id);
1608
- } else if (option == 'roles_in') {
1609
- processShowOnlyTags('roles_div_', id);
1610
- } else if (option == 'shipping_countries_in') {
1611
- processShowOnlyTags('countries_div_', id);
1612
- } else if (option == 'products_in_list' || option == 'products_not_in_list') {
1613
- processShowOnlyTags('products_div_', id);
1614
- } else if (option == 'exclude_sale_products') {
1615
- $('.value_text_'+id).css('display', 'none');
1616
- processShowOnlyTags('exclude_on_sale_products_div_', id);
1617
- } else if (option == 'customer_based_on_first_order') {
1618
- processShowOnlyTags('general_', id);
1619
- $('.value_text_'+id).css('display', 'none');
1620
- $('#general_'+id).css('display', 'none');
1621
- } else if (option == 'customer_based_on_purchase_history' || option == 'customer_based_on_purchase_history_product_order_count' || option == 'customer_based_on_purchase_history_order_count' || option == 'customer_based_on_purchase_history_product_quantity_count') {
1622
- processShowOnlyTags('purchase_history_div_', id);
1623
- if(option == 'customer_based_on_purchase_history_product_order_count' || option == 'customer_based_on_purchase_history_product_quantity_count'){
1624
- $('#purchase_history_div_'+id+' #purchase_history_products_list_'+id).show();
1625
- } else {
1626
- $('#purchase_history_div_'+id+' #purchase_history_products_list_'+id).hide();
1627
- }
1628
- } else {
1629
- processShowOnlyTags('general_', id);
1630
- }
1631
-
1632
- }
1633
-
1634
- function adminNotice() {
1635
- jQuery('#woo-admin-message').html(' <div class="notice notice-success is-dismissable"><p>'+woo_discount_localization.saved_successfully+'</p></div>');
1636
-
1637
- setTimeout(function () {
1638
- jQuery('#woo-admin-message').html('');
1639
- }, 2000);
1640
- }
1641
-
1642
- function woo_discount_rule_error_notice(message) {
1643
- jQuery('#woo-admin-message').html(' <div class="notice notice-error is-dismissable"><p>'+message+'</p></div>');
1644
-
1645
- setTimeout(function () {
1646
- jQuery('#woo-admin-message').html('');
1647
- }, 2000);
1648
- }
1649
-
1650
- function makeActiveForSelectedTab(selected){
1651
- var container = selected.closest('.nav-tab-wrapper');
1652
- container.find('.nav-tab').removeClass('nav-tab-active');
1653
- selected.addClass('nav-tab-active');
1654
- }
1655
-
1656
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
v1/assets/js/bootstrap-datetimepicker.min.js DELETED
@@ -1 +0,0 @@
1
- (function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{if(typeof exports==="object"){a(require("jquery"))}else{a(jQuery)}}}(function(d,f){if(!("indexOf" in Array.prototype)){Array.prototype.indexOf=function(k,j){if(j===f){j=0}if(j<0){j+=this.length}if(j<0){j=0}for(var l=this.length;j<l;j++){if(j in this&&this[j]===k){return j}}return -1}}function a(){var q,k,p,l,j,n,m,o;k=(new Date()).toString();p=((m=k.split("(")[1])!=null?m.slice(0,-1):0)||k.split(" ");if(p instanceof Array){n=[];for(var l=0,j=p.length;l<j;l++){o=p[l];if((q=(m=o.match(/\b[A-Z]+\b/))!==null)?m[0]:0){n.push(q)}}p=n.pop()}return p}function h(){return new Date(Date.UTC.apply(Date,arguments))}var g=function(k,j){var m=this;this.element=d(k);this.container=j.container||"body";this.language=j.language||this.element.data("date-language")||"en";this.language=this.language in e?this.language:this.language.split("-")[0];this.language=this.language in e?this.language:"en";this.isRTL=e[this.language].rtl||false;this.formatType=j.formatType||this.element.data("format-type")||"standard";this.format=c.parseFormat(j.format||this.element.data("date-format")||e[this.language].format||c.getDefaultFormat(this.formatType,"input"),this.formatType);this.isInline=false;this.isVisible=false;this.isInput=this.element.is("input");this.fontAwesome=j.fontAwesome||this.element.data("font-awesome")||false;this.bootcssVer=j.bootcssVer||(this.isInput?(this.element.is(".form-control")?3:2):(this.bootcssVer=this.element.is(".input-group")?3:2));this.component=this.element.is(".date")?(this.bootcssVer===3?this.element.find(".input-group-addon .glyphicon-th, .input-group-addon .glyphicon-time, .input-group-addon .glyphicon-remove, .input-group-addon .glyphicon-calendar, .input-group-addon .fa-calendar, .input-group-addon .fa-clock-o").parent():this.element.find(".add-on .icon-th, .add-on .icon-time, .add-on .icon-calendar, .add-on .fa-calendar, .add-on .fa-clock-o").parent()):false;this.componentReset=this.element.is(".date")?(this.bootcssVer===3?this.element.find(".input-group-addon .glyphicon-remove, .input-group-addon .fa-times").parent():this.element.find(".add-on .icon-remove, .add-on .fa-times").parent()):false;this.hasInput=this.component&&this.element.find("input").length;if(this.component&&this.component.length===0){this.component=false}this.linkField=j.linkField||this.element.data("link-field")||false;this.linkFormat=c.parseFormat(j.linkFormat||this.element.data("link-format")||c.getDefaultFormat(this.formatType,"link"),this.formatType);this.minuteStep=j.minuteStep||this.element.data("minute-step")||5;this.pickerPosition=j.pickerPosition||this.element.data("picker-position")||"bottom-right";this.showMeridian=j.showMeridian||this.element.data("show-meridian")||false;this.initialDate=j.initialDate||new Date();this.zIndex=j.zIndex||this.element.data("z-index")||f;this.title=typeof j.title==="undefined"?false:j.title;this.timezone=j.timezone||a();this.icons={leftArrow:this.fontAwesome?"fa-arrow-left":(this.bootcssVer===3?"glyphicon-arrow-left":"icon-arrow-left"),rightArrow:this.fontAwesome?"fa-arrow-right":(this.bootcssVer===3?"glyphicon-arrow-right":"icon-arrow-right")};this.icontype=this.fontAwesome?"fa":"glyphicon";this._attachEvents();this.clickedOutside=function(n){if(d(n.target).closest(".datetimepicker").length===0){m.hide()}};this.formatViewType="datetime";if("formatViewType" in j){this.formatViewType=j.formatViewType}else{if("formatViewType" in this.element.data()){this.formatViewType=this.element.data("formatViewType")}}this.minView=0;if("minView" in j){this.minView=j.minView}else{if("minView" in this.element.data()){this.minView=this.element.data("min-view")}}this.minView=c.convertViewMode(this.minView);this.maxView=c.modes.length-1;if("maxView" in j){this.maxView=j.maxView}else{if("maxView" in this.element.data()){this.maxView=this.element.data("max-view")}}this.maxView=c.convertViewMode(this.maxView);this.wheelViewModeNavigation=false;if("wheelViewModeNavigation" in j){this.wheelViewModeNavigation=j.wheelViewModeNavigation}else{if("wheelViewModeNavigation" in this.element.data()){this.wheelViewModeNavigation=this.element.data("view-mode-wheel-navigation")}}this.wheelViewModeNavigationInverseDirection=false;if("wheelViewModeNavigationInverseDirection" in j){this.wheelViewModeNavigationInverseDirection=j.wheelViewModeNavigationInverseDirection}else{if("wheelViewModeNavigationInverseDirection" in this.element.data()){this.wheelViewModeNavigationInverseDirection=this.element.data("view-mode-wheel-navigation-inverse-dir")}}this.wheelViewModeNavigationDelay=100;if("wheelViewModeNavigationDelay" in j){this.wheelViewModeNavigationDelay=j.wheelViewModeNavigationDelay}else{if("wheelViewModeNavigationDelay" in this.element.data()){this.wheelViewModeNavigationDelay=this.element.data("view-mode-wheel-navigation-delay")}}this.startViewMode=2;if("startView" in j){this.startViewMode=j.startView}else{if("startView" in this.element.data()){this.startViewMode=this.element.data("start-view")}}this.startViewMode=c.convertViewMode(this.startViewMode);this.viewMode=this.startViewMode;this.viewSelect=this.minView;if("viewSelect" in j){this.viewSelect=j.viewSelect}else{if("viewSelect" in this.element.data()){this.viewSelect=this.element.data("view-select")}}this.viewSelect=c.convertViewMode(this.viewSelect);this.forceParse=true;if("forceParse" in j){this.forceParse=j.forceParse}else{if("dateForceParse" in this.element.data()){this.forceParse=this.element.data("date-force-parse")}}var l=this.bootcssVer===3?c.templateV3:c.template;while(l.indexOf("{iconType}")!==-1){l=l.replace("{iconType}",this.icontype)}while(l.indexOf("{leftArrow}")!==-1){l=l.replace("{leftArrow}",this.icons.leftArrow)}while(l.indexOf("{rightArrow}")!==-1){l=l.replace("{rightArrow}",this.icons.rightArrow)}this.picker=d(l).appendTo(this.isInline?this.element:this.container).on({click:d.proxy(this.click,this),mousedown:d.proxy(this.mousedown,this)});if(this.wheelViewModeNavigation){if(d.fn.mousewheel){this.picker.on({mousewheel:d.proxy(this.mousewheel,this)})}else{console.log("Mouse Wheel event is not supported. Please include the jQuery Mouse Wheel plugin before enabling this option")}}if(this.isInline){this.picker.addClass("datetimepicker-inline")}else{this.picker.addClass("datetimepicker-dropdown-"+this.pickerPosition+" dropdown-menu")}if(this.isRTL){this.picker.addClass("datetimepicker-rtl");var i=this.bootcssVer===3?".prev span, .next span":".prev i, .next i";this.picker.find(i).toggleClass(this.icons.leftArrow+" "+this.icons.rightArrow)}d(document).on("mousedown touchend",this.clickedOutside);this.autoclose=false;if("autoclose" in j){this.autoclose=j.autoclose}else{if("dateAutoclose" in this.element.data()){this.autoclose=this.element.data("date-autoclose")}}this.keyboardNavigation=true;if("keyboardNavigation" in j){this.keyboardNavigation=j.keyboardNavigation}else{if("dateKeyboardNavigation" in this.element.data()){this.keyboardNavigation=this.element.data("date-keyboard-navigation")}}this.todayBtn=(j.todayBtn||this.element.data("date-today-btn")||false);this.clearBtn=(j.clearBtn||this.element.data("date-clear-btn")||false);this.todayHighlight=(j.todayHighlight||this.element.data("date-today-highlight")||false);this.weekStart=0;if(typeof j.weekStart!=="undefined"){this.weekStart=j.weekStart}else{if(typeof this.element.data("date-weekstart")!=="undefined"){this.weekStart=this.element.data("date-weekstart")}else{if(typeof e[this.language].weekStart!=="undefined"){this.weekStart=e[this.language].weekStart}}}this.weekStart=this.weekStart%7;this.weekEnd=((this.weekStart+6)%7);this.onRenderDay=function(n){var p=(j.onRenderDay||function(){return[]})(n);if(typeof p==="string"){p=[p]}var o=["day"];return o.concat((p?p:[]))};this.onRenderHour=function(n){var p=(j.onRenderHour||function(){return[]})(n);var o=["hour"];if(typeof p==="string"){p=[p]}return o.concat((p?p:[]))};this.onRenderMinute=function(n){var p=(j.onRenderMinute||function(){return[]})(n);var o=["minute"];if(typeof p==="string"){p=[p]}if(n<this.startDate||n>this.endDate){o.push("disabled")}else{if(Math.floor(this.date.getUTCMinutes()/this.minuteStep)===Math.floor(n.getUTCMinutes()/this.minuteStep)){o.push("active")}}return o.concat((p?p:[]))};this.onRenderYear=function(o){var q=(j.onRenderYear||function(){return[]})(o);var p=["year"];if(typeof q==="string"){q=[q]}if(this.date.getUTCFullYear()===o.getUTCFullYear()){p.push("active")}var n=o.getUTCFullYear();var r=this.endDate.getUTCFullYear();if(o<this.startDate||n>r){p.push("disabled")}return p.concat((q?q:[]))};this.onRenderMonth=function(n){var p=(j.onRenderMonth||function(){return[]})(n);var o=["month"];if(typeof p==="string"){p=[p]}return o.concat((p?p:[]))};this.startDate=new Date(-8639968443048000);this.endDate=new Date(8639968443048000);this.datesDisabled=[];this.daysOfWeekDisabled=[];this.setStartDate(j.startDate||this.element.data("date-startdate"));this.setEndDate(j.endDate||this.element.data("date-enddate"));this.setDatesDisabled(j.datesDisabled||this.element.data("date-dates-disabled"));this.setDaysOfWeekDisabled(j.daysOfWeekDisabled||this.element.data("date-days-of-week-disabled"));this.setMinutesDisabled(j.minutesDisabled||this.element.data("date-minute-disabled"));this.setHoursDisabled(j.hoursDisabled||this.element.data("date-hour-disabled"));this.fillDow();this.fillMonths();this.update();this.showMode();if(this.isInline){this.show()}};g.prototype={constructor:g,_events:[],_attachEvents:function(){this._detachEvents();if(this.isInput){this._events=[[this.element,{focus:d.proxy(this.show,this),keyup:d.proxy(this.update,this),keydown:d.proxy(this.keydown,this)}]]}else{if(this.component&&this.hasInput){this._events=[[this.element.find("input"),{focus:d.proxy(this.show,this),keyup:d.proxy(this.update,this),keydown:d.proxy(this.keydown,this)}],[this.component,{click:d.proxy(this.show,this)}]];if(this.componentReset){this._events.push([this.componentReset,{click:d.proxy(this.reset,this)}])}}else{if(this.element.is("div")){this.isInline=true}else{this._events=[[this.element,{click:d.proxy(this.show,this)}]]}}}for(var j=0,k,l;j<this._events.length;j++){k=this._events[j][0];l=this._events[j][1];k.on(l)}},_detachEvents:function(){for(var j=0,k,l;j<this._events.length;j++){k=this._events[j][0];l=this._events[j][1];k.off(l)}this._events=[]},show:function(i){this.picker.show();this.height=this.component?this.component.outerHeight():this.element.outerHeight();if(this.forceParse){this.update()}this.place();d(window).on("resize",d.proxy(this.place,this));if(i){i.stopPropagation();i.preventDefault()}this.isVisible=true;this.element.trigger({type:"show",date:this.date})},hide:function(){if(!this.isVisible){return}if(this.isInline){return}this.picker.hide();d(window).off("resize",this.place);this.viewMode=this.startViewMode;this.showMode();if(!this.isInput){d(document).off("mousedown",this.hide)}if(this.forceParse&&(this.isInput&&this.element.val()||this.hasInput&&this.element.find("input").val())){this.setValue()}this.isVisible=false;this.element.trigger({type:"hide",date:this.date})},remove:function(){this._detachEvents();d(document).off("mousedown",this.clickedOutside);this.picker.remove();delete this.picker;delete this.element.data().datetimepicker},getDate:function(){var i=this.getUTCDate();if(i===null){return null}return new Date(i.getTime()+(i.getTimezoneOffset()*60000))},getUTCDate:function(){return this.date},getInitialDate:function(){return this.initialDate},setInitialDate:function(i){this.initialDate=i},setDate:function(i){this.setUTCDate(new Date(i.getTime()-(i.getTimezoneOffset()*60000)))},setUTCDate:function(i){if(i>=this.startDate&&i<=this.endDate){this.date=i;this.setValue();this.viewDate=this.date;this.fill()}else{this.element.trigger({type:"outOfRange",date:i,startDate:this.startDate,endDate:this.endDate})}},setFormat:function(j){this.format=c.parseFormat(j,this.formatType);var i;if(this.isInput){i=this.element}else{if(this.component){i=this.element.find("input")}}if(i&&i.val()){this.setValue()}},setValue:function(){var i=this.getFormattedDate();if(!this.isInput){if(this.component){this.element.find("input").val(i)}this.element.data("date",i)}else{this.element.val(i)}if(this.linkField){d("#"+this.linkField).val(this.getFormattedDate(this.linkFormat))}},getFormattedDate:function(i){i=i||this.format;return c.formatDate(this.date,i,this.language,this.formatType,this.timezone)},setStartDate:function(i){this.startDate=i||this.startDate;if(this.startDate.valueOf()!==8639968443048000){this.startDate=c.parseDate(this.startDate,this.format,this.language,this.formatType,this.timezone)}this.update();this.updateNavArrows()},setEndDate:function(i){this.endDate=i||this.endDate;if(this.endDate.valueOf()!==8639968443048000){this.endDate=c.parseDate(this.endDate,this.format,this.language,this.formatType,this.timezone)}this.update();this.updateNavArrows()},setDatesDisabled:function(j){this.datesDisabled=j||[];if(!d.isArray(this.datesDisabled)){this.datesDisabled=this.datesDisabled.split(/,\s*/)}var i=this;this.datesDisabled=d.map(this.datesDisabled,function(k){return c.parseDate(k,i.format,i.language,i.formatType,i.timezone).toDateString()});this.update();this.updateNavArrows()},setTitle:function(i,j){return this.picker.find(i).find("th:eq(1)").text(this.title===false?j:this.title)},setDaysOfWeekDisabled:function(i){this.daysOfWeekDisabled=i||[];if(!d.isArray(this.daysOfWeekDisabled)){this.daysOfWeekDisabled=this.daysOfWeekDisabled.split(/,\s*/)}this.daysOfWeekDisabled=d.map(this.daysOfWeekDisabled,function(j){return parseInt(j,10)});this.update();this.updateNavArrows()},setMinutesDisabled:function(i){this.minutesDisabled=i||[];if(!d.isArray(this.minutesDisabled)){this.minutesDisabled=this.minutesDisabled.split(/,\s*/)}this.minutesDisabled=d.map(this.minutesDisabled,function(j){return parseInt(j,10)});this.update();this.updateNavArrows()},setHoursDisabled:function(i){this.hoursDisabled=i||[];if(!d.isArray(this.hoursDisabled)){this.hoursDisabled=this.hoursDisabled.split(/,\s*/)}this.hoursDisabled=d.map(this.hoursDisabled,function(j){return parseInt(j,10)});this.update();this.updateNavArrows()},place:function(){if(this.isInline){return}if(!this.zIndex){var j=0;d("div").each(function(){var o=parseInt(d(this).css("zIndex"),10);if(o>j){j=o}});this.zIndex=j+10}var n,m,l,k;if(this.container instanceof d){k=this.container.offset()}else{k=d(this.container).offset()}if(this.component){n=this.component.offset();l=n.left;if(this.pickerPosition==="bottom-left"||this.pickerPosition==="top-left"){l+=this.component.outerWidth()-this.picker.outerWidth()}}else{n=this.element.offset();l=n.left;if(this.pickerPosition==="bottom-left"||this.pickerPosition==="top-left"){l+=this.element.outerWidth()-this.picker.outerWidth()}}var i=document.body.clientWidth||window.innerWidth;if(l+220>i){l=i-220}if(this.pickerPosition==="top-left"||this.pickerPosition==="top-right"){m=n.top-this.picker.outerHeight()}else{m=n.top+this.height}m=m-k.top;l=l-k.left;this.picker.css({top:m,left:l,zIndex:this.zIndex})},hour_minute:"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]",update:function(){var i,j=false;if(arguments&&arguments.length&&(typeof arguments[0]==="string"||arguments[0] instanceof Date)){i=arguments[0];j=true}else{i=(this.isInput?this.element.val():this.element.find("input").val())||this.element.data("date")||this.initialDate;if(typeof i==="string"){i=i.replace(/^\s+|\s+$/g,"")}}if(!i){i=new Date();j=false}if(typeof i==="string"){if(new RegExp(this.hour_minute).test(i)||new RegExp(this.hour_minute+":[0-5][0-9]").test(i)){i=this.getDate()}}this.date=c.parseDate(i,this.format,this.language,this.formatType,this.timezone);if(j){this.setValue()}if(this.date<this.startDate){this.viewDate=new Date(this.startDate)}else{if(this.date>this.endDate){this.viewDate=new Date(this.endDate)}else{this.viewDate=new Date(this.date)}}this.fill()},fillDow:function(){var i=this.weekStart,j="<tr>";while(i<this.weekStart+7){j+='<th class="dow">'+e[this.language].daysMin[(i++)%7]+"</th>"}j+="</tr>";this.picker.find(".datetimepicker-days thead").append(j)},fillMonths:function(){var l="";var m=new Date(this.viewDate);for(var k=0;k<12;k++){m.setUTCMonth(k);var j=this.onRenderMonth(m);l+='<span class="'+j.join(" ")+'">'+e[this.language].monthsShort[k]+"</span>"}this.picker.find(".datetimepicker-months td").html(l)},fill:function(){if(!this.date||!this.viewDate){return}var E=new Date(this.viewDate),t=E.getUTCFullYear(),G=E.getUTCMonth(),n=E.getUTCDate(),A=E.getUTCHours(),w=this.startDate.getUTCFullYear(),B=this.startDate.getUTCMonth(),p=this.endDate.getUTCFullYear(),x=this.endDate.getUTCMonth()+1,q=(new h(this.date.getUTCFullYear(),this.date.getUTCMonth(),this.date.getUTCDate())).valueOf(),D=new Date();this.setTitle(".datetimepicker-days",e[this.language].months[G]+" "+t);if(this.formatViewType==="time"){var k=this.getFormattedDate();this.setTitle(".datetimepicker-hours",k);this.setTitle(".datetimepicker-minutes",k)}else{this.setTitle(".datetimepicker-hours",n+" "+e[this.language].months[G]+" "+t);this.setTitle(".datetimepicker-minutes",n+" "+e[this.language].months[G]+" "+t)}this.picker.find("tfoot th.today").text(e[this.language].today||e.en.today).toggle(this.todayBtn!==false);this.picker.find("tfoot th.clear").text(e[this.language].clear||e.en.clear).toggle(this.clearBtn!==false);this.updateNavArrows();this.fillMonths();var I=h(t,G-1,28,0,0,0,0),z=c.getDaysInMonth(I.getUTCFullYear(),I.getUTCMonth());I.setUTCDate(z);I.setUTCDate(z-(I.getUTCDay()-this.weekStart+7)%7);var j=new Date(I);j.setUTCDate(j.getUTCDate()+42);j=j.valueOf();var r=[];var F;while(I.valueOf()<j){if(I.getUTCDay()===this.weekStart){r.push("<tr>")}F=this.onRenderDay(I);if(I.getUTCFullYear()<t||(I.getUTCFullYear()===t&&I.getUTCMonth()<G)){F.push("old")}else{if(I.getUTCFullYear()>t||(I.getUTCFullYear()===t&&I.getUTCMonth()>G)){F.push("new")}}if(this.todayHighlight&&I.getUTCFullYear()===D.getFullYear()&&I.getUTCMonth()===D.getMonth()&&I.getUTCDate()===D.getDate()){F.push("today")}if(I.valueOf()===q){F.push("active")}if((I.valueOf()+86400000)<=this.startDate||I.valueOf()>this.endDate||d.inArray(I.getUTCDay(),this.daysOfWeekDisabled)!==-1||d.inArray(I.toDateString(),this.datesDisabled)!==-1){F.push("disabled")}r.push('<td class="'+F.join(" ")+'">'+I.getUTCDate()+"</td>");if(I.getUTCDay()===this.weekEnd){r.push("</tr>")}I.setUTCDate(I.getUTCDate()+1)}this.picker.find(".datetimepicker-days tbody").empty().append(r.join(""));r=[];var u="",C="",s="";var l=this.hoursDisabled||[];E=new Date(this.viewDate);for(var y=0;y<24;y++){E.setUTCHours(y);F=this.onRenderHour(E);if(l.indexOf(y)!==-1){F.push("disabled")}var v=h(t,G,n,y);if((v.valueOf()+3600000)<=this.startDate||v.valueOf()>this.endDate){F.push("disabled")}else{if(A===y){F.push("active")}}if(this.showMeridian&&e[this.language].meridiem.length===2){C=(y<12?e[this.language].meridiem[0]:e[this.language].meridiem[1]);if(C!==s){if(s!==""){r.push("</fieldset>")}r.push('<fieldset class="hour"><legend>'+C.toUpperCase()+"</legend>")}s=C;u=(y%12?y%12:12);if(y<12){F.push("hour_am")}else{F.push("hour_pm")}r.push('<span class="'+F.join(" ")+'">'+u+"</span>");if(y===23){r.push("</fieldset>")}}else{u=y+":00";r.push('<span class="'+F.join(" ")+'">'+u+"</span>")}}this.picker.find(".datetimepicker-hours td").html(r.join(""));r=[];u="";C="";s="";var m=this.minutesDisabled||[];E=new Date(this.viewDate);for(var y=0;y<60;y+=this.minuteStep){if(m.indexOf(y)!==-1){continue}E.setUTCMinutes(y);E.setUTCSeconds(0);F=this.onRenderMinute(E);if(this.showMeridian&&e[this.language].meridiem.length===2){C=(A<12?e[this.language].meridiem[0]:e[this.language].meridiem[1]);if(C!==s){if(s!==""){r.push("</fieldset>")}r.push('<fieldset class="minute"><legend>'+C.toUpperCase()+"</legend>")}s=C;u=(A%12?A%12:12);r.push('<span class="'+F.join(" ")+'">'+u+":"+(y<10?"0"+y:y)+"</span>");if(y===59){r.push("</fieldset>")}}else{u=y+":00";r.push('<span class="'+F.join(" ")+'">'+A+":"+(y<10?"0"+y:y)+"</span>")}}this.picker.find(".datetimepicker-minutes td").html(r.join(""));var J=this.date.getUTCFullYear();var o=this.setTitle(".datetimepicker-months",t).end().find(".month").removeClass("active");if(J===t){o.eq(this.date.getUTCMonth()).addClass("active")}if(t<w||t>p){o.addClass("disabled")}if(t===w){o.slice(0,B).addClass("disabled")}if(t===p){o.slice(x).addClass("disabled")}r="";t=parseInt(t/10,10)*10;var H=this.setTitle(".datetimepicker-years",t+"-"+(t+9)).end().find("td");t-=1;E=new Date(this.viewDate);for(var y=-1;y<11;y++){E.setUTCFullYear(t);F=this.onRenderYear(E);if(y===-1||y===10){F.push(b)}r+='<span class="'+F.join(" ")+'">'+t+"</span>";t+=1}H.html(r);this.place()},updateNavArrows:function(){var m=new Date(this.viewDate),k=m.getUTCFullYear(),l=m.getUTCMonth(),j=m.getUTCDate(),i=m.getUTCHours();switch(this.viewMode){case 0:if(k<=this.startDate.getUTCFullYear()&&l<=this.startDate.getUTCMonth()&&j<=this.startDate.getUTCDate()&&i<=this.startDate.getUTCHours()){this.picker.find(".prev").css({visibility:"hidden"})}else{this.picker.find(".prev").css({visibility:"visible"})}if(k>=this.endDate.getUTCFullYear()&&l>=this.endDate.getUTCMonth()&&j>=this.endDate.getUTCDate()&&i>=this.endDate.getUTCHours()){this.picker.find(".next").css({visibility:"hidden"})}else{this.picker.find(".next").css({visibility:"visible"})}break;case 1:if(k<=this.startDate.getUTCFullYear()&&l<=this.startDate.getUTCMonth()&&j<=this.startDate.getUTCDate()){this.picker.find(".prev").css({visibility:"hidden"})}else{this.picker.find(".prev").css({visibility:"visible"})}if(k>=this.endDate.getUTCFullYear()&&l>=this.endDate.getUTCMonth()&&j>=this.endDate.getUTCDate()){this.picker.find(".next").css({visibility:"hidden"})}else{this.picker.find(".next").css({visibility:"visible"})}break;case 2:if(k<=this.startDate.getUTCFullYear()&&l<=this.startDate.getUTCMonth()){this.picker.find(".prev").css({visibility:"hidden"})}else{this.picker.find(".prev").css({visibility:"visible"})}if(k>=this.endDate.getUTCFullYear()&&l>=this.endDate.getUTCMonth()){this.picker.find(".next").css({visibility:"hidden"})}else{this.picker.find(".next").css({visibility:"visible"})}break;case 3:case 4:if(k<=this.startDate.getUTCFullYear()){this.picker.find(".prev").css({visibility:"hidden"})}else{this.picker.find(".prev").css({visibility:"visible"})}if(k>=this.endDate.getUTCFullYear()){this.picker.find(".next").css({visibility:"hidden"})}else{this.picker.find(".next").css({visibility:"visible"})}break}},mousewheel:function(j){j.preventDefault();j.stopPropagation();if(this.wheelPause){return}this.wheelPause=true;var i=j.originalEvent;var l=i.wheelDelta;var k=l>0?1:(l===0)?0:-1;if(this.wheelViewModeNavigationInverseDirection){k=-k}this.showMode(k);setTimeout(d.proxy(function(){this.wheelPause=false},this),this.wheelViewModeNavigationDelay)},click:function(m){m.stopPropagation();m.preventDefault();var n=d(m.target).closest("span, td, th, legend");if(n.is("."+this.icontype)){n=d(n).parent().closest("span, td, th, legend")}if(n.length===1){if(n.is(".disabled")){this.element.trigger({type:"outOfRange",date:this.viewDate,startDate:this.startDate,endDate:this.endDate});return}switch(n[0].nodeName.toLowerCase()){case"th":switch(n[0].className){case"switch":this.showMode(1);break;case"prev":case"next":var i=c.modes[this.viewMode].navStep*(n[0].className==="prev"?-1:1);switch(this.viewMode){case 0:this.viewDate=this.moveHour(this.viewDate,i);break;case 1:this.viewDate=this.moveDate(this.viewDate,i);break;case 2:this.viewDate=this.moveMonth(this.viewDate,i);break;case 3:case 4:this.viewDate=this.moveYear(this.viewDate,i);break}this.fill();this.element.trigger({type:n[0].className+":"+this.convertViewModeText(this.viewMode),date:this.viewDate,startDate:this.startDate,endDate:this.endDate});break;case"clear":this.reset();if(this.autoclose){this.hide()}break;case"today":var j=new Date();j=h(j.getFullYear(),j.getMonth(),j.getDate(),j.getHours(),j.getMinutes(),j.getSeconds(),0);if(j<this.startDate){j=this.startDate}else{if(j>this.endDate){j=this.endDate}}this.viewMode=this.startViewMode;this.showMode(0);this._setDate(j);this.fill();if(this.autoclose){this.hide()}break}break;case"span":if(!n.is(".disabled")){var p=this.viewDate.getUTCFullYear(),o=this.viewDate.getUTCMonth(),q=this.viewDate.getUTCDate(),r=this.viewDate.getUTCHours(),k=this.viewDate.getUTCMinutes(),s=this.viewDate.getUTCSeconds();if(n.is(".month")){this.viewDate.setUTCDate(1);o=n.parent().find("span").index(n);q=this.viewDate.getUTCDate();this.viewDate.setUTCMonth(o);this.element.trigger({type:"changeMonth",date:this.viewDate});if(this.viewSelect>=3){this._setDate(h(p,o,q,r,k,s,0))}}else{if(n.is(".year")){this.viewDate.setUTCDate(1);p=parseInt(n.text(),10)||0;this.viewDate.setUTCFullYear(p);this.element.trigger({type:"changeYear",date:this.viewDate});if(this.viewSelect>=4){this._setDate(h(p,o,q,r,k,s,0))}}else{if(n.is(".hour")){r=parseInt(n.text(),10)||0;if(n.hasClass("hour_am")||n.hasClass("hour_pm")){if(r===12&&n.hasClass("hour_am")){r=0}else{if(r!==12&&n.hasClass("hour_pm")){r+=12}}}this.viewDate.setUTCHours(r);this.element.trigger({type:"changeHour",date:this.viewDate});if(this.viewSelect>=1){this._setDate(h(p,o,q,r,k,s,0))}}else{if(n.is(".minute")){k=parseInt(n.text().substr(n.text().indexOf(":")+1),10)||0;this.viewDate.setUTCMinutes(k);this.element.trigger({type:"changeMinute",date:this.viewDate});if(this.viewSelect>=0){this._setDate(h(p,o,q,r,k,s,0))}}}}}if(this.viewMode!==0){var l=this.viewMode;this.showMode(-1);this.fill();if(l===this.viewMode&&this.autoclose){this.hide()}}else{this.fill();if(this.autoclose){this.hide()}}}break;case"td":if(n.is(".day")&&!n.is(".disabled")){var q=parseInt(n.text(),10)||1;var p=this.viewDate.getUTCFullYear(),o=this.viewDate.getUTCMonth(),r=this.viewDate.getUTCHours(),k=this.viewDate.getUTCMinutes(),s=this.viewDate.getUTCSeconds();if(n.is(".old")){if(o===0){o=11;p-=1}else{o-=1}}else{if(n.is(".new")){if(o===11){o=0;p+=1}else{o+=1}}}this.viewDate.setUTCFullYear(p);this.viewDate.setUTCMonth(o,q);this.element.trigger({type:"changeDay",date:this.viewDate});if(this.viewSelect>=2){this._setDate(h(p,o,q,r,k,s,0))}}var l=this.viewMode;this.showMode(-1);this.fill();if(l===this.viewMode&&this.autoclose){this.hide()}break}}},_setDate:function(i,k){if(!k||k==="date"){this.date=i}if(!k||k==="view"){this.viewDate=i}this.fill();this.setValue();var j;if(this.isInput){j=this.element}else{if(this.component){j=this.element.find("input")}}if(j){j.change()}this.element.trigger({type:"changeDate",date:this.getDate()});if(i===null){this.date=this.viewDate}},moveMinute:function(j,i){if(!i){return j}var k=new Date(j.valueOf());k.setUTCMinutes(k.getUTCMinutes()+(i*this.minuteStep));return k},moveHour:function(j,i){if(!i){return j}var k=new Date(j.valueOf());k.setUTCHours(k.getUTCHours()+i);return k},moveDate:function(j,i){if(!i){return j}var k=new Date(j.valueOf());k.setUTCDate(k.getUTCDate()+i);return k},moveMonth:function(j,k){if(!k){return j}var n=new Date(j.valueOf()),r=n.getUTCDate(),o=n.getUTCMonth(),m=Math.abs(k),q,p;k=k>0?1:-1;if(m===1){p=k===-1?function(){return n.getUTCMonth()===o}:function(){return n.getUTCMonth()!==q};q=o+k;n.setUTCMonth(q);if(q<0||q>11){q=(q+12)%12}}else{for(var l=0;l<m;l++){n=this.moveMonth(n,k)}q=n.getUTCMonth();n.setUTCDate(r);p=function(){return q!==n.getUTCMonth()}}while(p()){n.setUTCDate(--r);n.setUTCMonth(q)}return n},moveYear:function(j,i){return this.moveMonth(j,i*12)},dateWithinRange:function(i){return i>=this.startDate&&i<=this.endDate},keydown:function(o){if(this.picker.is(":not(:visible)")){if(o.keyCode===27){this.show()}return}var k=false,j,i,n;switch(o.keyCode){case 27:this.hide();o.preventDefault();break;case 37:case 39:if(!this.keyboardNavigation){break}j=o.keyCode===37?-1:1;var m=this.viewMode;if(o.ctrlKey){m+=2}else{if(o.shiftKey){m+=1}}if(m===4){i=this.moveYear(this.date,j);n=this.moveYear(this.viewDate,j)}else{if(m===3){i=this.moveMonth(this.date,j);n=this.moveMonth(this.viewDate,j)}else{if(m===2){i=this.moveDate(this.date,j);n=this.moveDate(this.viewDate,j)}else{if(m===1){i=this.moveHour(this.date,j);n=this.moveHour(this.viewDate,j)}else{if(m===0){i=this.moveMinute(this.date,j);n=this.moveMinute(this.viewDate,j)}}}}}if(this.dateWithinRange(i)){this.date=i;this.viewDate=n;this.setValue();this.update();o.preventDefault();k=true}break;case 38:case 40:if(!this.keyboardNavigation){break}j=o.keyCode===38?-1:1;m=this.viewMode;if(o.ctrlKey){m+=2}else{if(o.shiftKey){m+=1}}if(m===4){i=this.moveYear(this.date,j);n=this.moveYear(this.viewDate,j)}else{if(m===3){i=this.moveMonth(this.date,j);n=this.moveMonth(this.viewDate,j)}else{if(m===2){i=this.moveDate(this.date,j*7);n=this.moveDate(this.viewDate,j*7)}else{if(m===1){if(this.showMeridian){i=this.moveHour(this.date,j*6);n=this.moveHour(this.viewDate,j*6)}else{i=this.moveHour(this.date,j*4);n=this.moveHour(this.viewDate,j*4)}}else{if(m===0){i=this.moveMinute(this.date,j*4);n=this.moveMinute(this.viewDate,j*4)}}}}}if(this.dateWithinRange(i)){this.date=i;this.viewDate=n;this.setValue();this.update();o.preventDefault();k=true}break;case 13:if(this.viewMode!==0){var p=this.viewMode;this.showMode(-1);this.fill();if(p===this.viewMode&&this.autoclose){this.hide()}}else{this.fill();if(this.autoclose){this.hide()}}o.preventDefault();break;case 9:this.hide();break}if(k){var l;if(this.isInput){l=this.element}else{if(this.component){l=this.element.find("input")}}if(l){l.change()}this.element.trigger({type:"changeDate",date:this.getDate()})}},showMode:function(i){if(i){var j=Math.max(0,Math.min(c.modes.length-1,this.viewMode+i));if(j>=this.minView&&j<=this.maxView){this.element.trigger({type:"changeMode",date:this.viewDate,oldViewMode:this.viewMode,newViewMode:j});this.viewMode=j}}this.picker.find(">div").hide().filter(".datetimepicker-"+c.modes[this.viewMode].clsName).css("display","block");this.updateNavArrows()},reset:function(){this._setDate(null,"date")},convertViewModeText:function(i){switch(i){case 4:return"decade";case 3:return"year";case 2:return"month";case 1:return"day";case 0:return"hour"}}};var b=d.fn.datetimepicker;d.fn.datetimepicker=function(k){var i=Array.apply(null,arguments);i.shift();var j;this.each(function(){var n=d(this),m=n.data("datetimepicker"),l=typeof k==="object"&&k;if(!m){n.data("datetimepicker",(m=new g(this,d.extend({},d.fn.datetimepicker.defaults,l))))}if(typeof k==="string"&&typeof m[k]==="function"){j=m[k].apply(m,i);if(j!==f){return false}}});if(j!==f){return j}else{return this}};d.fn.datetimepicker.defaults={};d.fn.datetimepicker.Constructor=g;var e=d.fn.datetimepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa","Su"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],meridiem:["am","pm"],suffix:["st","nd","rd","th"],today:"Today",clear:"Clear"}};var c={modes:[{clsName:"minutes",navFnc:"Hours",navStep:1},{clsName:"hours",navFnc:"Date",navStep:1},{clsName:"days",navFnc:"Month",navStep:1},{clsName:"months",navFnc:"FullYear",navStep:1},{clsName:"years",navFnc:"FullYear",navStep:10}],isLeapYear:function(i){return(((i%4===0)&&(i%100!==0))||(i%400===0))},getDaysInMonth:function(i,j){return[31,(c.isLeapYear(i)?29:28),31,30,31,30,31,31,30,31,30,31][j]},getDefaultFormat:function(i,j){if(i==="standard"){if(j==="input"){return"yyyy-mm-dd hh:ii"}else{return"yyyy-mm-dd hh:ii:ss"}}else{if(i==="php"){if(j==="input"){return"Y-m-d H:i"}else{return"Y-m-d H:i:s"}}else{throw new Error("Invalid format type.")}}},validParts:function(i){if(i==="standard"){return/t|hh?|HH?|p|P|z|Z|ii?|ss?|dd?|DD?|mm?|MM?|yy(?:yy)?/g}else{if(i==="php"){return/[dDjlNwzFmMnStyYaABgGhHis]/g}else{throw new Error("Invalid format type.")}}},nonpunctuation:/[^ -\/:-@\[-`{-~\t\n\rTZ]+/g,parseFormat:function(l,j){var i=l.replace(this.validParts(j),"\0").split("\0"),k=l.match(this.validParts(j));if(!i||!i.length||!k||k.length===0){throw new Error("Invalid date format.")}return{separators:i,parts:k}},parseDate:function(A,y,v,j,r){if(A instanceof Date){var u=new Date(A.valueOf()-A.getTimezoneOffset()*60000);u.setMilliseconds(0);return u}if(/^\d{4}\-\d{1,2}\-\d{1,2}$/.test(A)){y=this.parseFormat("yyyy-mm-dd",j)}if(/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}$/.test(A)){y=this.parseFormat("yyyy-mm-dd hh:ii",j)}if(/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}\:\d{1,2}[Z]{0,1}$/.test(A)){y=this.parseFormat("yyyy-mm-dd hh:ii:ss",j)}if(/^[-+]\d+[dmwy]([\s,]+[-+]\d+[dmwy])*$/.test(A)){var l=/([-+]\d+)([dmwy])/,q=A.match(/([-+]\d+)([dmwy])/g),t,p;A=new Date();for(var x=0;x<q.length;x++){t=l.exec(q[x]);p=parseInt(t[1]);switch(t[2]){case"d":A.setUTCDate(A.getUTCDate()+p);break;case"m":A=g.prototype.moveMonth.call(g.prototype,A,p);break;case"w":A.setUTCDate(A.getUTCDate()+p*7);break;case"y":A=g.prototype.moveYear.call(g.prototype,A,p);break}}return h(A.getUTCFullYear(),A.getUTCMonth(),A.getUTCDate(),A.getUTCHours(),A.getUTCMinutes(),A.getUTCSeconds(),0)}var q=A&&A.toString().match(this.nonpunctuation)||[],A=new Date(0,0,0,0,0,0,0),m={},z=["hh","h","ii","i","ss","s","yyyy","yy","M","MM","m","mm","D","DD","d","dd","H","HH","p","P","z","Z"],o={hh:function(s,i){return s.setUTCHours(i)},h:function(s,i){return s.setUTCHours(i)},HH:function(s,i){return s.setUTCHours(i===12?0:i)},H:function(s,i){return s.setUTCHours(i===12?0:i)},ii:function(s,i){return s.setUTCMinutes(i)},i:function(s,i){return s.setUTCMinutes(i)},ss:function(s,i){return s.setUTCSeconds(i)},s:function(s,i){return s.setUTCSeconds(i)},yyyy:function(s,i){return s.setUTCFullYear(i)},yy:function(s,i){return s.setUTCFullYear(2000+i)},m:function(s,i){i-=1;while(i<0){i+=12}i%=12;s.setUTCMonth(i);while(s.getUTCMonth()!==i){if(isNaN(s.getUTCMonth())){return s}else{s.setUTCDate(s.getUTCDate()-1)}}return s},d:function(s,i){return s.setUTCDate(i)},p:function(s,i){return s.setUTCHours(i===1?s.getUTCHours()+12:s.getUTCHours())},z:function(){return r}},B,k,t;o.M=o.MM=o.mm=o.m;o.dd=o.d;o.P=o.p;o.Z=o.z;A=h(A.getFullYear(),A.getMonth(),A.getDate(),A.getHours(),A.getMinutes(),A.getSeconds());if(q.length===y.parts.length){for(var x=0,w=y.parts.length;x<w;x++){B=parseInt(q[x],10);t=y.parts[x];if(isNaN(B)){switch(t){case"MM":k=d(e[v].months).filter(function(){var i=this.slice(0,q[x].length),s=q[x].slice(0,i.length);return i===s});B=d.inArray(k[0],e[v].months)+1;break;case"M":k=d(e[v].monthsShort).filter(function(){var i=this.slice(0,q[x].length),s=q[x].slice(0,i.length);return i.toLowerCase()===s.toLowerCase()});B=d.inArray(k[0],e[v].monthsShort)+1;break;case"p":case"P":B=d.inArray(q[x].toLowerCase(),e[v].meridiem);break;case"z":case"Z":r;break}}m[t]=B}for(var x=0,n;x<z.length;x++){n=z[x];if(n in m&&!isNaN(m[n])){o[n](A,m[n])}}}return A},formatDate:function(l,q,m,p,o){if(l===null){return""}var k;if(p==="standard"){k={t:l.getTime(),yy:l.getUTCFullYear().toString().substring(2),yyyy:l.getUTCFullYear(),m:l.getUTCMonth()+1,M:e[m].monthsShort[l.getUTCMonth()],MM:e[m].months[l.getUTCMonth()],d:l.getUTCDate(),D:e[m].daysShort[l.getUTCDay()],DD:e[m].days[l.getUTCDay()],p:(e[m].meridiem.length===2?e[m].meridiem[l.getUTCHours()<12?0:1]:""),h:l.getUTCHours(),i:l.getUTCMinutes(),s:l.getUTCSeconds(),z:o};if(e[m].meridiem.length===2){k.H=(k.h%12===0?12:k.h%12)}else{k.H=k.h}k.HH=(k.H<10?"0":"")+k.H;k.P=k.p.toUpperCase();k.Z=k.z;k.hh=(k.h<10?"0":"")+k.h;k.ii=(k.i<10?"0":"")+k.i;k.ss=(k.s<10?"0":"")+k.s;k.dd=(k.d<10?"0":"")+k.d;k.mm=(k.m<10?"0":"")+k.m}else{if(p==="php"){k={y:l.getUTCFullYear().toString().substring(2),Y:l.getUTCFullYear(),F:e[m].months[l.getUTCMonth()],M:e[m].monthsShort[l.getUTCMonth()],n:l.getUTCMonth()+1,t:c.getDaysInMonth(l.getUTCFullYear(),l.getUTCMonth()),j:l.getUTCDate(),l:e[m].days[l.getUTCDay()],D:e[m].daysShort[l.getUTCDay()],w:l.getUTCDay(),N:(l.getUTCDay()===0?7:l.getUTCDay()),S:(l.getUTCDate()%10<=e[m].suffix.length?e[m].suffix[l.getUTCDate()%10-1]:""),a:(e[m].meridiem.length===2?e[m].meridiem[l.getUTCHours()<12?0:1]:""),g:(l.getUTCHours()%12===0?12:l.getUTCHours()%12),G:l.getUTCHours(),i:l.getUTCMinutes(),s:l.getUTCSeconds()};k.m=(k.n<10?"0":"")+k.n;k.d=(k.j<10?"0":"")+k.j;k.A=k.a.toString().toUpperCase();k.h=(k.g<10?"0":"")+k.g;k.H=(k.G<10?"0":"")+k.G;k.i=(k.i<10?"0":"")+k.i;k.s=(k.s<10?"0":"")+k.s}else{throw new Error("Invalid format type.")}}var l=[],r=d.extend([],q.separators);for(var n=0,j=q.parts.length;n<j;n++){if(r.length){l.push(r.shift())}l.push(k[q.parts[n]])}if(r.length){l.push(r.shift())}return l.join("")},convertViewMode:function(i){switch(i){case 4:case"decade":i=4;break;case 3:case"year":i=3;break;case 2:case"month":i=2;break;case 1:case"day":i=1;break;case 0:case"hour":i=0;break}return i},headTemplate:'<thead><tr><th class="prev"><i class="{iconType} {leftArrow}"/></th><th colspan="5" class="switch"></th><th class="next"><i class="{iconType} {rightArrow}"/></th></tr></thead>',headTemplateV3:'<thead><tr><th class="prev"><span class="{iconType} {leftArrow}"></span> </th><th colspan="5" class="switch"></th><th class="next"><span class="{iconType} {rightArrow}"></span> </th></tr></thead>',contTemplate:'<tbody><tr><td colspan="7"></td></tr></tbody>',footTemplate:'<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>'};c.template='<div class="datetimepicker"><div class="datetimepicker-minutes"><table class=" table-condensed">'+c.headTemplate+c.contTemplate+c.footTemplate+'</table></div><div class="datetimepicker-hours"><table class=" table-condensed">'+c.headTemplate+c.contTemplate+c.footTemplate+'</table></div><div class="datetimepicker-days"><table class=" table-condensed">'+c.headTemplate+"<tbody></tbody>"+c.footTemplate+'</table></div><div class="datetimepicker-months"><table class="table-condensed">'+c.headTemplate+c.contTemplate+c.footTemplate+'</table></div><div class="datetimepicker-years"><table class="table-condensed">'+c.headTemplate+c.contTemplate+c.footTemplate+"</table></div></div>";c.templateV3='<div class="datetimepicker"><div class="datetimepicker-minutes"><table class=" table-condensed">'+c.headTemplateV3+c.contTemplate+c.footTemplate+'</table></div><div class="datetimepicker-hours"><table class=" table-condensed">'+c.headTemplateV3+c.contTemplate+c.footTemplate+'</table></div><div class="datetimepicker-days"><table class=" table-condensed">'+c.headTemplateV3+"<tbody></tbody>"+c.footTemplate+'</table></div><div class="datetimepicker-months"><table class="table-condensed">'+c.headTemplateV3+c.contTemplate+c.footTemplate+'</table></div><div class="datetimepicker-years"><table class="table-condensed">'+c.headTemplateV3+c.contTemplate+c.footTemplate+"</table></div></div>";d.fn.datetimepicker.DPGlobal=c;d.fn.datetimepicker.noConflict=function(){d.fn.datetimepicker=b;return this};d(document).on("focus.datetimepicker.data-api click.datetimepicker.data-api",'[data-provide="datetimepicker"]',function(j){var i=d(this);if(i.data("datetimepicker")){return}j.preventDefault();i.datetimepicker("show")});d(function(){d('[data-provide="datetimepicker-inline"]').datetimepicker()})}));
 
v1/assets/js/bootstrap.min.js DELETED
@@ -1,6 +0,0 @@
1
- /*!
2
- * Bootstrap v3.4.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2019 Twitter, Inc.
4
- * Licensed under the MIT license
5
- */
6
- if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");!function(t){"use strict";var e=jQuery.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||3<e[0])throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(),function(n){"use strict";n.fn.emulateTransitionEnd=function(t){var e=!1,i=this;n(this).one("bsTransitionEnd",function(){e=!0});return setTimeout(function(){e||n(i).trigger(n.support.transition.end)},t),this},n(function(){n.support.transition=function o(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var i in e)if(t.style[i]!==undefined)return{end:e[i]};return!1}(),n.support.transition&&(n.event.special.bsTransitionEnd={bindType:n.support.transition.end,delegateType:n.support.transition.end,handle:function(t){if(n(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}})})}(jQuery),function(s){"use strict";var e='[data-dismiss="alert"]',a=function(t){s(t).on("click",e,this.close)};a.VERSION="3.4.1",a.TRANSITION_DURATION=150,a.prototype.close=function(t){var e=s(this),i=e.attr("data-target");i||(i=(i=e.attr("href"))&&i.replace(/.*(?=#[^\s]*$)/,"")),i="#"===i?[]:i;var o=s(document).find(i);function n(){o.detach().trigger("closed.bs.alert").remove()}t&&t.preventDefault(),o.length||(o=e.closest(".alert")),o.trigger(t=s.Event("close.bs.alert")),t.isDefaultPrevented()||(o.removeClass("in"),s.support.transition&&o.hasClass("fade")?o.one("bsTransitionEnd",n).emulateTransitionEnd(a.TRANSITION_DURATION):n())};var t=s.fn.alert;s.fn.alert=function o(i){return this.each(function(){var t=s(this),e=t.data("bs.alert");e||t.data("bs.alert",e=new a(this)),"string"==typeof i&&e[i].call(t)})},s.fn.alert.Constructor=a,s.fn.alert.noConflict=function(){return s.fn.alert=t,this},s(document).on("click.bs.alert.data-api",e,a.prototype.close)}(jQuery),function(s){"use strict";var n=function(t,e){this.$element=s(t),this.options=s.extend({},n.DEFAULTS,e),this.isLoading=!1};function i(o){return this.each(function(){var t=s(this),e=t.data("bs.button"),i="object"==typeof o&&o;e||t.data("bs.button",e=new n(this,i)),"toggle"==o?e.toggle():o&&e.setState(o)})}n.VERSION="3.4.1",n.DEFAULTS={loadingText:"loading..."},n.prototype.setState=function(t){var e="disabled",i=this.$element,o=i.is("input")?"val":"html",n=i.data();t+="Text",null==n.resetText&&i.data("resetText",i[o]()),setTimeout(s.proxy(function(){i[o](null==n[t]?this.options[t]:n[t]),"loadingText"==t?(this.isLoading=!0,i.addClass(e).attr(e,e).prop(e,!0)):this.isLoading&&(this.isLoading=!1,i.removeClass(e).removeAttr(e).prop(e,!1))},this),0)},n.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle="buttons"]');if(e.length){var i=this.$element.find("input");"radio"==i.prop("type")?(i.prop("checked")&&(t=!1),e.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==i.prop("type")&&(i.prop("checked")!==this.$element.hasClass("active")&&(t=!1),this.$element.toggleClass("active")),i.prop("checked",this.$element.hasClass("active")),t&&i.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var t=s.fn.button;s.fn.button=i,s.fn.button.Constructor=n,s.fn.button.noConflict=function(){return s.fn.button=t,this},s(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(t){var e=s(t.target).closest(".btn");i.call(e,"toggle"),s(t.target).is('input[type="radio"], input[type="checkbox"]')||(t.preventDefault(),e.is("input,button")?e.trigger("focus"):e.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(t){s(t.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(t.type))})}(jQuery),function(p){"use strict";var c=function(t,e){this.$element=p(t),this.$indicators=this.$element.find(".carousel-indicators"),this.options=e,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",p.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",p.proxy(this.pause,this)).on("mouseleave.bs.carousel",p.proxy(this.cycle,this))};function r(n){return this.each(function(){var t=p(this),e=t.data("bs.carousel"),i=p.extend({},c.DEFAULTS,t.data(),"object"==typeof n&&n),o="string"==typeof n?n:i.slide;e||t.data("bs.carousel",e=new c(this,i)),"number"==typeof n?e.to(n):o?e[o]():i.interval&&e.pause().cycle()})}c.VERSION="3.4.1",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(t){if(!/input|textarea/i.test(t.target.tagName)){switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return}t.preventDefault()}},c.prototype.cycle=function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(p.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(t){return this.$items=t.parent().children(".item"),this.$items.index(t||this.$active)},c.prototype.getItemForDirection=function(t,e){var i=this.getItemIndex(e);if(("prev"==t&&0===i||"next"==t&&i==this.$items.length-1)&&!this.options.wrap)return e;var o=(i+("prev"==t?-1:1))%this.$items.length;return this.$items.eq(o)},c.prototype.to=function(t){var e=this,i=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(t>this.$items.length-1||t<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){e.to(t)}):i==t?this.pause().cycle():this.slide(i<t?"next":"prev",this.$items.eq(t))},c.prototype.pause=function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&p.support.transition&&(this.$element.trigger(p.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(t,e){var i=this.$element.find(".item.active"),o=e||this.getItemForDirection(t,i),n=this.interval,s="next"==t?"left":"right",a=this;if(o.hasClass("active"))return this.sliding=!1;var r=o[0],l=p.Event("slide.bs.carousel",{relatedTarget:r,direction:s});if(this.$element.trigger(l),!l.isDefaultPrevented()){if(this.sliding=!0,n&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var h=p(this.$indicators.children()[this.getItemIndex(o)]);h&&h.addClass("active")}var d=p.Event("slid.bs.carousel",{relatedTarget:r,direction:s});return p.support.transition&&this.$element.hasClass("slide")?(o.addClass(t),"object"==typeof o&&o.length&&o[0].offsetWidth,i.addClass(s),o.addClass(s),i.one("bsTransitionEnd",function(){o.removeClass([t,s].join(" ")).addClass("active"),i.removeClass(["active",s].join(" ")),a.sliding=!1,setTimeout(function(){a.$element.trigger(d)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(i.removeClass("active"),o.addClass("active"),this.sliding=!1,this.$element.trigger(d)),n&&this.cycle(),this}};var t=p.fn.carousel;p.fn.carousel=r,p.fn.carousel.Constructor=c,p.fn.carousel.noConflict=function(){return p.fn.carousel=t,this};var e=function(t){var e=p(this),i=e.attr("href");i&&(i=i.replace(/.*(?=#[^\s]+$)/,""));var o=e.attr("data-target")||i,n=p(document).find(o);if(n.hasClass("carousel")){var s=p.extend({},n.data(),e.data()),a=e.attr("data-slide-to");a&&(s.interval=!1),r.call(n,s),a&&n.data("bs.carousel").to(a),t.preventDefault()}};p(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),p(window).on("load",function(){p('[data-ride="carousel"]').each(function(){var t=p(this);r.call(t,t.data())})})}(jQuery),function(a){"use strict";var r=function(t,e){this.$element=a(t),this.options=a.extend({},r.DEFAULTS,e),this.$trigger=a('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};function n(t){var e,i=t.attr("data-target")||(e=t.attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"");return a(document).find(i)}function l(o){return this.each(function(){var t=a(this),e=t.data("bs.collapse"),i=a.extend({},r.DEFAULTS,t.data(),"object"==typeof o&&o);!e&&i.toggle&&/show|hide/.test(o)&&(i.toggle=!1),e||t.data("bs.collapse",e=new r(this,i)),"string"==typeof o&&e[o]()})}r.VERSION="3.4.1",r.TRANSITION_DURATION=350,r.DEFAULTS={toggle:!0},r.prototype.dimension=function(){return this.$element.hasClass("width")?"width":"height"},r.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var t,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(t=e.data("bs.collapse"))&&t.transitioning)){var i=a.Event("show.bs.collapse");if(this.$element.trigger(i),!i.isDefaultPrevented()){e&&e.length&&(l.call(e,"hide"),t||e.data("bs.collapse",null));var o=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[o](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var n=function(){this.$element.removeClass("collapsing").addClass("collapse in")[o](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return n.call(this);var s=a.camelCase(["scroll",o].join("-"));this.$element.one("bsTransitionEnd",a.proxy(n,this)).emulateTransitionEnd(r.TRANSITION_DURATION)[o](this.$element[0][s])}}}},r.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var t=a.Event("hide.bs.collapse");if(this.$element.trigger(t),!t.isDefaultPrevented()){var e=this.dimension();this.$element[e](this.$element[e]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var i=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};if(!a.support.transition)return i.call(this);this.$element[e](0).one("bsTransitionEnd",a.proxy(i,this)).emulateTransitionEnd(r.TRANSITION_DURATION)}}},r.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},r.prototype.getParent=function(){return a(document).find(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(t,e){var i=a(e);this.addAriaAndCollapsedClass(n(i),i)},this)).end()},r.prototype.addAriaAndCollapsedClass=function(t,e){var i=t.hasClass("in");t.attr("aria-expanded",i),e.toggleClass("collapsed",!i).attr("aria-expanded",i)};var t=a.fn.collapse;a.fn.collapse=l,a.fn.collapse.Constructor=r,a.fn.collapse.noConflict=function(){return a.fn.collapse=t,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(t){var e=a(this);e.attr("data-target")||t.preventDefault();var i=n(e),o=i.data("bs.collapse")?"toggle":e.data();l.call(i,o)})}(jQuery),function(a){"use strict";var r='[data-toggle="dropdown"]',o=function(t){a(t).on("click.bs.dropdown",this.toggle)};function l(t){var e=t.attr("data-target");e||(e=(e=t.attr("href"))&&/#[A-Za-z]/.test(e)&&e.replace(/.*(?=#[^\s]*$)/,""));var i="#"!==e?a(document).find(e):null;return i&&i.length?i:t.parent()}function s(o){o&&3===o.which||(a(".dropdown-backdrop").remove(),a(r).each(function(){var t=a(this),e=l(t),i={relatedTarget:this};e.hasClass("open")&&(o&&"click"==o.type&&/input|textarea/i.test(o.target.tagName)&&a.contains(e[0],o.target)||(e.trigger(o=a.Event("hide.bs.dropdown",i)),o.isDefaultPrevented()||(t.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",i)))))}))}o.VERSION="3.4.1",o.prototype.toggle=function(t){var e=a(this);if(!e.is(".disabled, :disabled")){var i=l(e),o=i.hasClass("open");if(s(),!o){"ontouchstart"in document.documentElement&&!i.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",s);var n={relatedTarget:this};if(i.trigger(t=a.Event("show.bs.dropdown",n)),t.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),i.toggleClass("open").trigger(a.Event("shown.bs.dropdown",n))}return!1}},o.prototype.keydown=function(t){if(/(38|40|27|32)/.test(t.which)&&!/input|textarea/i.test(t.target.tagName)){var e=a(this);if(t.preventDefault(),t.stopPropagation(),!e.is(".disabled, :disabled")){var i=l(e),o=i.hasClass("open");if(!o&&27!=t.which||o&&27==t.which)return 27==t.which&&i.find(r).trigger("focus"),e.trigger("click");var n=i.find(".dropdown-menu li:not(.disabled):visible a");if(n.length){var s=n.index(t.target);38==t.which&&0<s&&s--,40==t.which&&s<n.length-1&&s++,~s||(s=0),n.eq(s).trigger("focus")}}}};var t=a.fn.dropdown;a.fn.dropdown=function e(i){return this.each(function(){var t=a(this),e=t.data("bs.dropdown");e||t.data("bs.dropdown",e=new o(this)),"string"==typeof i&&e[i].call(t)})},a.fn.dropdown.Constructor=o,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=t,this},a(document).on("click.bs.dropdown.data-api",s).on("click.bs.dropdown.data-api",".dropdown form",function(t){t.stopPropagation()}).on("click.bs.dropdown.data-api",r,o.prototype.toggle).on("keydown.bs.dropdown.data-api",r,o.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",o.prototype.keydown)}(jQuery),function(a){"use strict";var s=function(t,e){this.options=e,this.$body=a(document.body),this.$element=a(t),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.fixedContent=".navbar-fixed-top, .navbar-fixed-bottom",this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};function r(o,n){return this.each(function(){var t=a(this),e=t.data("bs.modal"),i=a.extend({},s.DEFAULTS,t.data(),"object"==typeof o&&o);e||t.data("bs.modal",e=new s(this,i)),"string"==typeof o?e[o](n):i.show&&e.show(n)})}s.VERSION="3.4.1",s.TRANSITION_DURATION=300,s.BACKDROP_TRANSITION_DURATION=150,s.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},s.prototype.toggle=function(t){return this.isShown?this.hide():this.show(t)},s.prototype.show=function(i){var o=this,t=a.Event("show.bs.modal",{relatedTarget:i});this.$element.trigger(t),this.isShown||t.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){o.$element.one("mouseup.dismiss.bs.modal",function(t){a(t.target).is(o.$element)&&(o.ignoreBackdropClick=!0)})}),this.backdrop(function(){var t=a.support.transition&&o.$element.hasClass("fade");o.$element.parent().length||o.$element.appendTo(o.$body),o.$element.show().scrollTop(0),o.adjustDialog(),t&&o.$element[0].offsetWidth,o.$element.addClass("in"),o.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:i});t?o.$dialog.one("bsTransitionEnd",function(){o.$element.trigger("focus").trigger(e)}).emulateTransitionEnd(s.TRANSITION_DURATION):o.$element.trigger("focus").trigger(e)}))},s.prototype.hide=function(t){t&&t.preventDefault(),t=a.Event("hide.bs.modal"),this.$element.trigger(t),this.isShown&&!t.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(s.TRANSITION_DURATION):this.hideModal())},s.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(t){document===t.target||this.$element[0]===t.target||this.$element.has(t.target).length||this.$element.trigger("focus")},this))},s.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(t){27==t.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},s.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},s.prototype.hideModal=function(){var t=this;this.$element.hide(),this.backdrop(function(){t.$body.removeClass("modal-open"),t.resetAdjustments(),t.resetScrollbar(),t.$element.trigger("hidden.bs.modal")})},s.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},s.prototype.backdrop=function(t){var e=this,i=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var o=a.support.transition&&i;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+i).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(t){this.ignoreBackdropClick?this.ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide())},this)),o&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!t)return;o?this.$backdrop.one("bsTransitionEnd",t).emulateTransitionEnd(s.BACKDROP_TRANSITION_DURATION):t()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var n=function(){e.removeBackdrop(),t&&t()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",n).emulateTransitionEnd(s.BACKDROP_TRANSITION_DURATION):n()}else t&&t()},s.prototype.handleUpdate=function(){this.adjustDialog()},s.prototype.adjustDialog=function(){var t=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},s.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},s.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth<t,this.scrollbarWidth=this.measureScrollbar()},s.prototype.setScrollbar=function(){var t=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"";var n=this.scrollbarWidth;this.bodyIsOverflowing&&(this.$body.css("padding-right",t+n),a(this.fixedContent).each(function(t,e){var i=e.style.paddingRight,o=a(e).css("padding-right");a(e).data("padding-right",i).css("padding-right",parseFloat(o)+n+"px")}))},s.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad),a(this.fixedContent).each(function(t,e){var i=a(e).data("padding-right");a(e).removeData("padding-right"),e.style.paddingRight=i||""})},s.prototype.measureScrollbar=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",this.$body.append(t);var e=t.offsetWidth-t.clientWidth;return this.$body[0].removeChild(t),e};var t=a.fn.modal;a.fn.modal=r,a.fn.modal.Constructor=s,a.fn.modal.noConflict=function(){return a.fn.modal=t,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(t){var e=a(this),i=e.attr("href"),o=e.attr("data-target")||i&&i.replace(/.*(?=#[^\s]+$)/,""),n=a(document).find(o),s=n.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(i)&&i},n.data(),e.data());e.is("a")&&t.preventDefault(),n.one("show.bs.modal",function(t){t.isDefaultPrevented()||n.one("hidden.bs.modal",function(){e.is(":visible")&&e.trigger("focus")})}),r.call(n,s,this)})}(jQuery),function(g){"use strict";var o=["sanitize","whiteList","sanitizeFn"],a=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],t={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},r=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,l=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function u(t,e){var i=t.nodeName.toLowerCase();if(-1!==g.inArray(i,e))return-1===g.inArray(i,a)||Boolean(t.nodeValue.match(r)||t.nodeValue.match(l));for(var o=g(e).filter(function(t,e){return e instanceof RegExp}),n=0,s=o.length;n<s;n++)if(i.match(o[n]))return!0;return!1}function n(t,e,i){if(0===t.length)return t;if(i&&"function"==typeof i)return i(t);if(!document.implementation||!document.implementation.createHTMLDocument)return t;var o=document.implementation.createHTMLDocument("sanitization");o.body.innerHTML=t;for(var n=g.map(e,function(t,e){return e}),s=g(o.body).find("*"),a=0,r=s.length;a<r;a++){var l=s[a],h=l.nodeName.toLowerCase();if(-1!==g.inArray(h,n))for(var d=g.map(l.attributes,function(t){return t}),p=[].concat(e["*"]||[],e[h]||[]),c=0,f=d.length;c<f;c++)u(d[c],p)||l.removeAttribute(d[c].nodeName);else l.parentNode.removeChild(l)}return o.body.innerHTML}var m=function(t,e){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",t,e)};m.VERSION="3.4.1",m.TRANSITION_DURATION=150,m.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0},sanitize:!0,sanitizeFn:null,whiteList:t},m.prototype.init=function(t,e,i){if(this.enabled=!0,this.type=t,this.$element=g(e),this.options=this.getOptions(i),this.$viewport=this.options.viewport&&g(document).find(g.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var o=this.options.trigger.split(" "),n=o.length;n--;){var s=o[n];if("click"==s)this.$element.on("click."+this.type,this.options.selector,g.proxy(this.toggle,this));else if("manual"!=s){var a="hover"==s?"mouseenter":"focusin",r="hover"==s?"mouseleave":"focusout";this.$element.on(a+"."+this.type,this.options.selector,g.proxy(this.enter,this)),this.$element.on(r+"."+this.type,this.options.selector,g.proxy(this.leave,this))}}this.options.selector?this._options=g.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},m.prototype.getDefaults=function(){return m.DEFAULTS},m.prototype.getOptions=function(t){var e=this.$element.data();for(var i in e)e.hasOwnProperty(i)&&-1!==g.inArray(i,o)&&delete e[i];return(t=g.extend({},this.getDefaults(),e,t)).delay&&"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),t.sanitize&&(t.template=n(t.template,t.whiteList,t.sanitizeFn)),t},m.prototype.getDelegateOptions=function(){var i={},o=this.getDefaults();return this._options&&g.each(this._options,function(t,e){o[t]!=e&&(i[t]=e)}),i},m.prototype.enter=function(t){var e=t instanceof this.constructor?t:g(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e)),t instanceof g.Event&&(e.inState["focusin"==t.type?"focus":"hover"]=!0),e.tip().hasClass("in")||"in"==e.hoverState)e.hoverState="in";else{if(clearTimeout(e.timeout),e.hoverState="in",!e.options.delay||!e.options.delay.show)return e.show();e.timeout=setTimeout(function(){"in"==e.hoverState&&e.show()},e.options.delay.show)}},m.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},m.prototype.leave=function(t){var e=t instanceof this.constructor?t:g(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e)),t instanceof g.Event&&(e.inState["focusout"==t.type?"focus":"hover"]=!1),!e.isInStateTrue()){if(clearTimeout(e.timeout),e.hoverState="out",!e.options.delay||!e.options.delay.hide)return e.hide();e.timeout=setTimeout(function(){"out"==e.hoverState&&e.hide()},e.options.delay.hide)}},m.prototype.show=function(){var t=g.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(t);var e=g.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(t.isDefaultPrevented()||!e)return;var i=this,o=this.tip(),n=this.getUID(this.type);this.setContent(),o.attr("id",n),this.$element.attr("aria-describedby",n),this.options.animation&&o.addClass("fade");var s="function"==typeof this.options.placement?this.options.placement.call(this,o[0],this.$element[0]):this.options.placement,a=/\s?auto?\s?/i,r=a.test(s);r&&(s=s.replace(a,"")||"top"),o.detach().css({top:0,left:0,display:"block"}).addClass(s).data("bs."+this.type,this),this.options.container?o.appendTo(g(document).find(this.options.container)):o.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var l=this.getPosition(),h=o[0].offsetWidth,d=o[0].offsetHeight;if(r){var p=s,c=this.getPosition(this.$viewport);s="bottom"==s&&l.bottom+d>c.bottom?"top":"top"==s&&l.top-d<c.top?"bottom":"right"==s&&l.right+h>c.width?"left":"left"==s&&l.left-h<c.left?"right":s,o.removeClass(p).addClass(s)}var f=this.getCalculatedOffset(s,l,h,d);this.applyPlacement(f,s);var u=function(){var t=i.hoverState;i.$element.trigger("shown.bs."+i.type),i.hoverState=null,"out"==t&&i.leave(i)};g.support.transition&&this.$tip.hasClass("fade")?o.one("bsTransitionEnd",u).emulateTransitionEnd(m.TRANSITION_DURATION):u()}},m.prototype.applyPlacement=function(t,e){var i=this.tip(),o=i[0].offsetWidth,n=i[0].offsetHeight,s=parseInt(i.css("margin-top"),10),a=parseInt(i.css("margin-left"),10);isNaN(s)&&(s=0),isNaN(a)&&(a=0),t.top+=s,t.left+=a,g.offset.setOffset(i[0],g.extend({using:function(t){i.css({top:Math.round(t.top),left:Math.round(t.left)})}},t),0),i.addClass("in");var r=i[0].offsetWidth,l=i[0].offsetHeight;"top"==e&&l!=n&&(t.top=t.top+n-l);var h=this.getViewportAdjustedDelta(e,t,r,l);h.left?t.left+=h.left:t.top+=h.top;var d=/top|bottom/.test(e),p=d?2*h.left-o+r:2*h.top-n+l,c=d?"offsetWidth":"offsetHeight";i.offset(t),this.replaceArrow(p,i[0][c],d)},m.prototype.replaceArrow=function(t,e,i){this.arrow().css(i?"left":"top",50*(1-t/e)+"%").css(i?"top":"left","")},m.prototype.setContent=function(){var t=this.tip(),e=this.getTitle();this.options.html?(this.options.sanitize&&(e=n(e,this.options.whiteList,this.options.sanitizeFn)),t.find(".tooltip-inner").html(e)):t.find(".tooltip-inner").text(e),t.removeClass("fade in top bottom left right")},m.prototype.hide=function(t){var e=this,i=g(this.$tip),o=g.Event("hide.bs."+this.type);function n(){"in"!=e.hoverState&&i.detach(),e.$element&&e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),t&&t()}if(this.$element.trigger(o),!o.isDefaultPrevented())return i.removeClass("in"),g.support.transition&&i.hasClass("fade")?i.one("bsTransitionEnd",n).emulateTransitionEnd(m.TRANSITION_DURATION):n(),this.hoverState=null,this},m.prototype.fixTitle=function(){var t=this.$element;(t.attr("title")||"string"!=typeof t.attr("data-original-title"))&&t.attr("data-original-title",t.attr("title")||"").attr("title","")},m.prototype.hasContent=function(){return this.getTitle()},m.prototype.getPosition=function(t){var e=(t=t||this.$element)[0],i="BODY"==e.tagName,o=e.getBoundingClientRect();null==o.width&&(o=g.extend({},o,{width:o.right-o.left,height:o.bottom-o.top}));var n=window.SVGElement&&e instanceof window.SVGElement,s=i?{top:0,left:0}:n?null:t.offset(),a={scroll:i?document.documentElement.scrollTop||document.body.scrollTop:t.scrollTop()},r=i?{width:g(window).width(),height:g(window).height()}:null;return g.extend({},o,a,r,s)},m.prototype.getCalculatedOffset=function(t,e,i,o){return"bottom"==t?{top:e.top+e.height,left:e.left+e.width/2-i/2}:"top"==t?{top:e.top-o,left:e.left+e.width/2-i/2}:"left"==t?{top:e.top+e.height/2-o/2,left:e.left-i}:{top:e.top+e.height/2-o/2,left:e.left+e.width}},m.prototype.getViewportAdjustedDelta=function(t,e,i,o){var n={top:0,left:0};if(!this.$viewport)return n;var s=this.options.viewport&&this.options.viewport.padding||0,a=this.getPosition(this.$viewport);if(/right|left/.test(t)){var r=e.top-s-a.scroll,l=e.top+s-a.scroll+o;r<a.top?n.top=a.top-r:l>a.top+a.height&&(n.top=a.top+a.height-l)}else{var h=e.left-s,d=e.left+s+i;h<a.left?n.left=a.left-h:d>a.right&&(n.left=a.left+a.width-d)}return n},m.prototype.getTitle=function(){var t=this.$element,e=this.options;return t.attr("data-original-title")||("function"==typeof e.title?e.title.call(t[0]):e.title)},m.prototype.getUID=function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},m.prototype.tip=function(){if(!this.$tip&&(this.$tip=g(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},m.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},m.prototype.enable=function(){this.enabled=!0},m.prototype.disable=function(){this.enabled=!1},m.prototype.toggleEnabled=function(){this.enabled=!this.enabled},m.prototype.toggle=function(t){var e=this;t&&((e=g(t.currentTarget).data("bs."+this.type))||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),g(t.currentTarget).data("bs."+this.type,e))),t?(e.inState.click=!e.inState.click,e.isInStateTrue()?e.enter(e):e.leave(e)):e.tip().hasClass("in")?e.leave(e):e.enter(e)},m.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide(function(){t.$element.off("."+t.type).removeData("bs."+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null,t.$element=null})},m.prototype.sanitizeHtml=function(t){return n(t,this.options.whiteList,this.options.sanitizeFn)};var e=g.fn.tooltip;g.fn.tooltip=function i(o){return this.each(function(){var t=g(this),e=t.data("bs.tooltip"),i="object"==typeof o&&o;!e&&/destroy|hide/.test(o)||(e||t.data("bs.tooltip",e=new m(this,i)),"string"==typeof o&&e[o]())})},g.fn.tooltip.Constructor=m,g.fn.tooltip.noConflict=function(){return g.fn.tooltip=e,this}}(jQuery),function(n){"use strict";var s=function(t,e){this.init("popover",t,e)};if(!n.fn.tooltip)throw new Error("Popover requires tooltip.js");s.VERSION="3.4.1",s.DEFAULTS=n.extend({},n.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),((s.prototype=n.extend({},n.fn.tooltip.Constructor.prototype)).constructor=s).prototype.getDefaults=function(){return s.DEFAULTS},s.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),i=this.getContent();if(this.options.html){var o=typeof i;this.options.sanitize&&(e=this.sanitizeHtml(e),"string"===o&&(i=this.sanitizeHtml(i))),t.find(".popover-title").html(e),t.find(".popover-content").children().detach().end()["string"===o?"html":"append"](i)}else t.find(".popover-title").text(e),t.find(".popover-content").children().detach().end().text(i);t.removeClass("fade top bottom left right in"),t.find(".popover-title").html()||t.find(".popover-title").hide()},s.prototype.hasContent=function(){return this.getTitle()||this.getContent()},s.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},s.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var t=n.fn.popover;n.fn.popover=function e(o){return this.each(function(){var t=n(this),e=t.data("bs.popover"),i="object"==typeof o&&o;!e&&/destroy|hide/.test(o)||(e||t.data("bs.popover",e=new s(this,i)),"string"==typeof o&&e[o]())})},n.fn.popover.Constructor=s,n.fn.popover.noConflict=function(){return n.fn.popover=t,this}}(jQuery),function(s){"use strict";function n(t,e){this.$body=s(document.body),this.$scrollElement=s(t).is(document.body)?s(window):s(t),this.options=s.extend({},n.DEFAULTS,e),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",s.proxy(this.process,this)),this.refresh(),this.process()}function e(o){return this.each(function(){var t=s(this),e=t.data("bs.scrollspy"),i="object"==typeof o&&o;e||t.data("bs.scrollspy",e=new n(this,i)),"string"==typeof o&&e[o]()})}n.VERSION="3.4.1",n.DEFAULTS={offset:10},n.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},n.prototype.refresh=function(){var t=this,o="offset",n=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),s.isWindow(this.$scrollElement[0])||(o="position",n=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var t=s(this),e=t.data("target")||t.attr("href"),i=/^#./.test(e)&&s(e);return i&&i.length&&i.is(":visible")&&[[i[o]().top+n,e]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},n.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,i=this.getScrollHeight(),o=this.options.offset+i-this.$scrollElement.height(),n=this.offsets,s=this.targets,a=this.activeTarget;if(this.scrollHeight!=i&&this.refresh(),o<=e)return a!=(t=s[s.length-1])&&this.activate(t);if(a&&e<n[0])return this.activeTarget=null,this.clear();for(t=n.length;t--;)a!=s[t]&&e>=n[t]&&(n[t+1]===undefined||e<n[t+1])&&this.activate(s[t])},n.prototype.activate=function(t){this.activeTarget=t,this.clear();var e=this.selector+'[data-target="'+t+'"],'+this.selector+'[href="'+t+'"]',i=s(e).parents("li").addClass("active");i.parent(".dropdown-menu").length&&(i=i.closest("li.dropdown").addClass("active")),i.trigger("activate.bs.scrollspy")},n.prototype.clear=function(){s(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var t=s.fn.scrollspy;s.fn.scrollspy=e,s.fn.scrollspy.Constructor=n,s.fn.scrollspy.noConflict=function(){return s.fn.scrollspy=t,this},s(window).on("load.bs.scrollspy.data-api",function(){s('[data-spy="scroll"]').each(function(){var t=s(this);e.call(t,t.data())})})}(jQuery),function(r){"use strict";var a=function(t){this.element=r(t)};function e(i){return this.each(function(){var t=r(this),e=t.data("bs.tab");e||t.data("bs.tab",e=new a(this)),"string"==typeof i&&e[i]()})}a.VERSION="3.4.1",a.TRANSITION_DURATION=150,a.prototype.show=function(){var t=this.element,e=t.closest("ul:not(.dropdown-menu)"),i=t.data("target");if(i||(i=(i=t.attr("href"))&&i.replace(/.*(?=#[^\s]*$)/,"")),!t.parent("li").hasClass("active")){var o=e.find(".active:last a"),n=r.Event("hide.bs.tab",{relatedTarget:t[0]}),s=r.Event("show.bs.tab",{relatedTarget:o[0]});if(o.trigger(n),t.trigger(s),!s.isDefaultPrevented()&&!n.isDefaultPrevented()){var a=r(document).find(i);this.activate(t.closest("li"),e),this.activate(a,a.parent(),function(){o.trigger({type:"hidden.bs.tab",relatedTarget:t[0]}),t.trigger({type:"shown.bs.tab",relatedTarget:o[0]})})}}},a.prototype.activate=function(t,e,i){var o=e.find("> .active"),n=i&&r.support.transition&&(o.length&&o.hasClass("fade")||!!e.find("> .fade").length);function s(){o.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),t.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),n?(t[0].offsetWidth,t.addClass("in")):t.removeClass("fade"),t.parent(".dropdown-menu").length&&t.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),i&&i()}o.length&&n?o.one("bsTransitionEnd",s).emulateTransitionEnd(a.TRANSITION_DURATION):s(),o.removeClass("in")};var t=r.fn.tab;r.fn.tab=e,r.fn.tab.Constructor=a,r.fn.tab.noConflict=function(){return r.fn.tab=t,this};var i=function(t){t.preventDefault(),e.call(r(this),"show")};r(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',i).on("click.bs.tab.data-api",'[data-toggle="pill"]',i)}(jQuery),function(l){"use strict";var h=function(t,e){this.options=l.extend({},h.DEFAULTS,e);var i=this.options.target===h.DEFAULTS.target?l(this.options.target):l(document).find(this.options.target);this.$target=i.on("scroll.bs.affix.data-api",l.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",l.proxy(this.checkPositionWithEventLoop,this)),this.$element=l(t),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};function i(o){return this.each(function(){var t=l(this),e=t.data("bs.affix"),i="object"==typeof o&&o;e||t.data("bs.affix",e=new h(this,i)),"string"==typeof o&&e[o]()})}h.VERSION="3.4.1",h.RESET="affix affix-top affix-bottom",h.DEFAULTS={offset:0,target:window},h.prototype.getState=function(t,e,i,o){var n=this.$target.scrollTop(),s=this.$element.offset(),a=this.$target.height();if(null!=i&&"top"==this.affixed)return n<i&&"top";if("bottom"==this.affixed)return null!=i?!(n+this.unpin<=s.top)&&"bottom":!(n+a<=t-o)&&"bottom";var r=null==this.affixed,l=r?n:s.top;return null!=i&&n<=i?"top":null!=o&&t-o<=l+(r?a:e)&&"bottom"},h.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(h.RESET).addClass("affix");var t=this.$target.scrollTop(),e=this.$element.offset();return this.pinnedOffset=e.top-t},h.prototype.checkPositionWithEventLoop=function(){setTimeout(l.proxy(this.checkPosition,this),1)},h.prototype.checkPosition=function(){if(this.$element.is(":visible")){var t=this.$element.height(),e=this.options.offset,i=e.top,o=e.bottom,n=Math.max(l(document).height(),l(document.body).height());"object"!=typeof e&&(o=i=e),"function"==typeof i&&(i=e.top(this.$element)),"function"==typeof o&&(o=e.bottom(this.$element));var s=this.getState(n,t,i,o);if(this.affixed!=s){null!=this.unpin&&this.$element.css("top","");var a="affix"+(s?"-"+s:""),r=l.Event(a+".bs.affix");if(this.$element.trigger(r),r.isDefaultPrevented())return;this.affixed=s,this.unpin="bottom"==s?this.getPinnedOffset():null,this.$element.removeClass(h.RESET).addClass(a).trigger(a.replace("affix","affixed")+".bs.affix")}"bottom"==s&&this.$element.offset({top:n-t-o})}};var t=l.fn.affix;l.fn.affix=i,l.fn.affix.Constructor=h,l.fn.affix.noConflict=function(){return l.fn.affix=t,this},l(window).on("load",function(){l('[data-spy="affix"]').each(function(){var t=l(this),e=t.data();e.offset=e.offset||{},null!=e.offsetBottom&&(e.offset.bottom=e.offsetBottom),null!=e.offsetTop&&(e.offset.top=e.offsetTop),i.call(t,e)})})}(jQuery);
 
 
 
 
 
 
v1/assets/js/bootstrap.select.min.js DELETED
@@ -1,8 +0,0 @@
1
- /*!
2
- * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select)
3
- *
4
- * Copyright 2013-2016 bootstrap-select
5
- * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
6
- */
7
- !function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){"use strict";function b(b){var c=[{re:/[\xC0-\xC6]/g,ch:"A"},{re:/[\xE0-\xE6]/g,ch:"a"},{re:/[\xC8-\xCB]/g,ch:"E"},{re:/[\xE8-\xEB]/g,ch:"e"},{re:/[\xCC-\xCF]/g,ch:"I"},{re:/[\xEC-\xEF]/g,ch:"i"},{re:/[\xD2-\xD6]/g,ch:"O"},{re:/[\xF2-\xF6]/g,ch:"o"},{re:/[\xD9-\xDC]/g,ch:"U"},{re:/[\xF9-\xFC]/g,ch:"u"},{re:/[\xC7-\xE7]/g,ch:"c"},{re:/[\xD1]/g,ch:"N"},{re:/[\xF1]/g,ch:"n"}];return a.each(c,function(){b=b.replace(this.re,this.ch)}),b}function c(a){var b={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},c="(?:"+Object.keys(b).join("|")+")",d=new RegExp(c),e=new RegExp(c,"g"),f=null==a?"":""+a;return d.test(f)?f.replace(e,function(a){return b[a]}):f}function d(b,c){var d=arguments,f=b,g=c;[].shift.apply(d);var h,i=this.each(function(){var b=a(this);if(b.is("select")){var c=b.data("selectpicker"),i="object"==typeof f&&f;if(c){if(i)for(var j in i)i.hasOwnProperty(j)&&(c.options[j]=i[j])}else{var k=a.extend({},e.DEFAULTS,a.fn.selectpicker.defaults||{},b.data(),i);k.template=a.extend({},e.DEFAULTS.template,a.fn.selectpicker.defaults?a.fn.selectpicker.defaults.template:{},b.data().template,i.template),b.data("selectpicker",c=new e(this,k,g))}"string"==typeof f&&(h=c[f]instanceof Function?c[f].apply(c,d):c.options[f])}});return"undefined"!=typeof h?h:i}String.prototype.includes||!function(){var a={}.toString,b=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(d){}return c}(),c="".indexOf,d=function(b){if(null==this)throw new TypeError;var d=String(this);if(b&&"[object RegExp]"==a.call(b))throw new TypeError;var e=d.length,f=String(b),g=f.length,h=arguments.length>1?arguments[1]:void 0,i=h?Number(h):0;i!=i&&(i=0);var j=Math.min(Math.max(i,0),e);return g+j>e?!1:-1!=c.call(d,f,i)};b?b(String.prototype,"includes",{value:d,configurable:!0,writable:!0}):String.prototype.includes=d}(),String.prototype.startsWith||!function(){var a=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(d){}return c}(),b={}.toString,c=function(a){if(null==this)throw new TypeError;var c=String(this);if(a&&"[object RegExp]"==b.call(a))throw new TypeError;var d=c.length,e=String(a),f=e.length,g=arguments.length>1?arguments[1]:void 0,h=g?Number(g):0;h!=h&&(h=0);var i=Math.min(Math.max(h,0),d);if(f+i>d)return!1;for(var j=-1;++j<f;)if(c.charCodeAt(i+j)!=e.charCodeAt(j))return!1;return!0};a?a(String.prototype,"startsWith",{value:c,configurable:!0,writable:!0}):String.prototype.startsWith=c}(),Object.keys||(Object.keys=function(a,b,c){c=[];for(b in a)c.hasOwnProperty.call(a,b)&&c.push(b);return c}),a.fn.triggerNative=function(a){var b,c=this[0];c.dispatchEvent?("function"==typeof Event?b=new Event(a,{bubbles:!0}):(b=document.createEvent("Event"),b.initEvent(a,!0,!1)),c.dispatchEvent(b)):(c.fireEvent&&(b=document.createEventObject(),b.eventType=a,c.fireEvent("on"+a,b)),this.trigger(a))},a.expr[":"].icontains=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.text()).toUpperCase();return f.includes(d[3].toUpperCase())},a.expr[":"].ibegins=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.text()).toUpperCase();return f.startsWith(d[3].toUpperCase())},a.expr[":"].aicontains=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.data("normalizedText")||e.text()).toUpperCase();return f.includes(d[3].toUpperCase())},a.expr[":"].aibegins=function(b,c,d){var e=a(b),f=(e.data("tokens")||e.data("normalizedText")||e.text()).toUpperCase();return f.startsWith(d[3].toUpperCase())};var e=function(b,c,d){d&&(d.stopPropagation(),d.preventDefault()),this.$element=a(b),this.$newElement=null,this.$button=null,this.$menu=null,this.$lis=null,this.options=c,null===this.options.title&&(this.options.title=this.$element.attr("title")),this.val=e.prototype.val,this.render=e.prototype.render,this.refresh=e.prototype.refresh,this.setStyle=e.prototype.setStyle,this.selectAll=e.prototype.selectAll,this.deselectAll=e.prototype.deselectAll,this.destroy=e.prototype.destroy,this.remove=e.prototype.remove,this.show=e.prototype.show,this.hide=e.prototype.hide,this.init()};e.VERSION="1.10.0",e.DEFAULTS={noneSelectedText:"None selected",noneResultsText:"No results matched {0}",countSelectedText:function(a,b){return 1==a?"{0} item selected":"{0} items selected"},maxOptionsText:function(a,b){return[1==a?"Limit reached ({n} item max)":"Limit reached ({n} items max)",1==b?"Group limit reached ({n} item max)":"Group limit reached ({n} items max)"]},selectAllText:"Select All",deselectAllText:"Deselect All",doneButton:!1,doneButtonText:"Close",multipleSeparator:", ",styleBase:"btn",style:"btn-default",size:"auto",title:null,selectedTextFormat:"values",width:!1,container:!1,hideDisabled:!1,showSubtext:!1,showIcon:!0,showContent:!0,dropupAuto:!0,header:!1,liveSearch:!1,liveSearchPlaceholder:null,liveSearchNormalize:!1,liveSearchStyle:"contains",actionsBox:!1,iconBase:"glyphicon",tickIcon:"glyphicon-ok",showTick:!1,template:{caret:'<span class="caret"></span>'},maxOptions:!1,mobile:!1,selectOnTab:!1,dropdownAlignRight:!1},e.prototype={constructor:e,init:function(){var b=this,c=this.$element.attr("id");this.$element.addClass("bs-select-hidden"),this.liObj={},this.multiple=this.$element.prop("multiple"),this.autofocus=this.$element.prop("autofocus"),this.$newElement=this.createView(),this.$element.after(this.$newElement).appendTo(this.$newElement),this.$button=this.$newElement.children("button"),this.$menu=this.$newElement.children(".dropdown-menu"),this.$menuInner=this.$menu.children(".inner"),this.$searchbox=this.$menu.find("input"),this.$element.removeClass("bs-select-hidden"),this.options.dropdownAlignRight&&this.$menu.addClass("dropdown-menu-right"),"undefined"!=typeof c&&(this.$button.attr("data-id",c),a('label[for="'+c+'"]').click(function(a){a.preventDefault(),b.$button.focus()})),this.checkDisabled(),this.clickListener(),this.options.liveSearch&&this.liveSearchListener(),this.render(),this.setStyle(),this.setWidth(),this.options.container&&this.selectPosition(),this.$menu.data("this",this),this.$newElement.data("this",this),this.options.mobile&&this.mobile(),this.$newElement.on({"hide.bs.dropdown":function(a){b.$element.trigger("hide.bs.select",a)},"hidden.bs.dropdown":function(a){b.$element.trigger("hidden.bs.select",a)},"show.bs.dropdown":function(a){b.$element.trigger("show.bs.select",a)},"shown.bs.dropdown":function(a){b.$element.trigger("shown.bs.select",a)}}),b.$element[0].hasAttribute("required")&&this.$element.on("invalid",function(){b.$button.addClass("bs-invalid").focus(),b.$element.on({"focus.bs.select":function(){b.$button.focus(),b.$element.off("focus.bs.select")},"shown.bs.select":function(){b.$element.val(b.$element.val()).off("shown.bs.select")},"rendered.bs.select":function(){this.validity.valid&&b.$button.removeClass("bs-invalid"),b.$element.off("rendered.bs.select")}})}),setTimeout(function(){b.$element.trigger("loaded.bs.select")})},createDropdown:function(){var b=this.multiple||this.options.showTick?" show-tick":"",d=this.$element.parent().hasClass("input-group")?" input-group-btn":"",e=this.autofocus?" autofocus":"",f=this.options.header?'<div class="popover-title"><button type="button" class="close" aria-hidden="true">&times;</button>'+this.options.header+"</div>":"",g=this.options.liveSearch?'<div class="bs-searchbox"><input type="text" class="form-control" autocomplete="off"'+(null===this.options.liveSearchPlaceholder?"":' placeholder="'+c(this.options.liveSearchPlaceholder)+'"')+"></div>":"",h=this.multiple&&this.options.actionsBox?'<div class="bs-actionsbox"><div class="btn-group btn-group-sm btn-block"><button type="button" class="actions-btn bs-select-all btn btn-default">'+this.options.selectAllText+'</button><button type="button" class="actions-btn bs-deselect-all btn btn-default">'+this.options.deselectAllText+"</button></div></div>":"",i=this.multiple&&this.options.doneButton?'<div class="bs-donebutton"><div class="btn-group btn-block"><button type="button" class="btn btn-sm btn-default">'+this.options.doneButtonText+"</button></div></div>":"",j='<div class="btn-group bootstrap-select'+b+d+'"><button type="button" class="'+this.options.styleBase+' dropdown-toggle" data-toggle="dropdown"'+e+'><span class="filter-option pull-left"></span>&nbsp;<span class="bs-caret">'+this.options.template.caret+'</span></button><div class="dropdown-menu open">'+f+g+h+'<ul class="dropdown-menu inner" role="menu"></ul>'+i+"</div></div>";return a(j)},createView:function(){var a=this.createDropdown(),b=this.createLi();return a.find("ul")[0].innerHTML=b,a},reloadLi:function(){this.destroyLi();var a=this.createLi();this.$menuInner[0].innerHTML=a},destroyLi:function(){this.$menu.find("li").remove()},createLi:function(){var d=this,e=[],f=0,g=document.createElement("option"),h=-1,i=function(a,b,c,d){return"<li"+("undefined"!=typeof c&""!==c?' class="'+c+'"':"")+("undefined"!=typeof b&null!==b?' data-original-index="'+b+'"':"")+("undefined"!=typeof d&null!==d?'data-optgroup="'+d+'"':"")+">"+a+"</li>"},j=function(a,e,f,g){return'<a tabindex="0"'+("undefined"!=typeof e?' class="'+e+'"':"")+("undefined"!=typeof f?' style="'+f+'"':"")+(d.options.liveSearchNormalize?' data-normalized-text="'+b(c(a))+'"':"")+("undefined"!=typeof g||null!==g?' data-tokens="'+g+'"':"")+">"+a+'<span class="'+d.options.iconBase+" "+d.options.tickIcon+' check-mark"></span></a>'};if(this.options.title&&!this.multiple&&(h--,!this.$element.find(".bs-title-option").length)){var k=this.$element[0];g.className="bs-title-option",g.appendChild(document.createTextNode(this.options.title)),g.value="",k.insertBefore(g,k.firstChild),void 0===a(k.options[k.selectedIndex]).attr("selected")&&(g.selected=!0)}return this.$element.find("option").each(function(b){var c=a(this);if(h++,!c.hasClass("bs-title-option")){var g=this.className||"",k=this.style.cssText,l=c.data("content")?c.data("content"):c.html(),m=c.data("tokens")?c.data("tokens"):null,n="undefined"!=typeof c.data("subtext")?'<small class="text-muted">'+c.data("subtext")+"</small>":"",o="undefined"!=typeof c.data("icon")?'<span class="'+d.options.iconBase+" "+c.data("icon")+'"></span> ':"",p="OPTGROUP"===this.parentNode.tagName,q=this.disabled||p&&this.parentNode.disabled;if(""!==o&&q&&(o="<span>"+o+"</span>"),d.options.hideDisabled&&q&&!p)return void h--;if(c.data("content")||(l=o+'<span class="text">'+l+n+"</span>"),p&&c.data("divider")!==!0){var r=" "+this.parentNode.className||"";if(0===c.index()){f+=1;var s=this.parentNode.label,t="undefined"!=typeof c.parent().data("subtext")?'<small class="text-muted">'+c.parent().data("subtext")+"</small>":"",u=c.parent().data("icon")?'<span class="'+d.options.iconBase+" "+c.parent().data("icon")+'"></span> ':"";s=u+'<span class="text">'+s+t+"</span>",0!==b&&e.length>0&&(h++,e.push(i("",null,"divider",f+"div"))),h++,e.push(i(s,null,"dropdown-header"+r,f))}if(d.options.hideDisabled&&q)return void h--;e.push(i(j(l,"opt "+g+r,k,m),b,"",f))}else c.data("divider")===!0?e.push(i("",b,"divider")):c.data("hidden")===!0?e.push(i(j(l,g,k,m),b,"hidden is-hidden")):(this.previousElementSibling&&"OPTGROUP"===this.previousElementSibling.tagName&&(h++,e.push(i("",null,"divider",f+"div"))),e.push(i(j(l,g,k,m),b)));d.liObj[b]=h}}),this.multiple||0!==this.$element.find("option:selected").length||this.options.title||this.$element.find("option").eq(0).prop("selected",!0).attr("selected","selected"),e.join("")},findLis:function(){return null==this.$lis&&(this.$lis=this.$menu.find("li")),this.$lis},render:function(b){var c,d=this;b!==!1&&this.$element.find("option").each(function(a){var b=d.findLis().eq(d.liObj[a]);d.setDisabled(a,this.disabled||"OPTGROUP"===this.parentNode.tagName&&this.parentNode.disabled,b),d.setSelected(a,this.selected,b)}),this.tabIndex();var e=this.$element.find("option").map(function(){if(this.selected){if(d.options.hideDisabled&&(this.disabled||"OPTGROUP"===this.parentNode.tagName&&this.parentNode.disabled))return;var b,c=a(this),e=c.data("icon")&&d.options.showIcon?'<i class="'+d.options.iconBase+" "+c.data("icon")+'"></i> ':"";return b=d.options.showSubtext&&c.data("subtext")&&!d.multiple?' <small class="text-muted">'+c.data("subtext")+"</small>":"","undefined"!=typeof c.attr("title")?c.attr("title"):c.data("content")&&d.options.showContent?c.data("content"):e+c.html()+b}}).toArray(),f=this.multiple?e.join(this.options.multipleSeparator):e[0];if(this.multiple&&this.options.selectedTextFormat.indexOf("count")>-1){var g=this.options.selectedTextFormat.split(">");if(g.length>1&&e.length>g[1]||1==g.length&&e.length>=2){c=this.options.hideDisabled?", [disabled]":"";var h=this.$element.find("option").not('[data-divider="true"], [data-hidden="true"]'+c).length,i="function"==typeof this.options.countSelectedText?this.options.countSelectedText(e.length,h):this.options.countSelectedText;f=i.replace("{0}",e.length.toString()).replace("{1}",h.toString())}}void 0==this.options.title&&(this.options.title=this.$element.attr("title")),"static"==this.options.selectedTextFormat&&(f=this.options.title),f||(f="undefined"!=typeof this.options.title?this.options.title:this.options.noneSelectedText),this.$button.attr("title",a.trim(f.replace(/<[^>]*>?/g,""))),this.$button.children(".filter-option").html(f),this.$element.trigger("rendered.bs.select")},setStyle:function(a,b){this.$element.attr("class")&&this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi,""));var c=a?a:this.options.style;"add"==b?this.$button.addClass(c):"remove"==b?this.$button.removeClass(c):(this.$button.removeClass(this.options.style),this.$button.addClass(c))},liHeight:function(b){if(b||this.options.size!==!1&&!this.sizeInfo){var c=document.createElement("div"),d=document.createElement("div"),e=document.createElement("ul"),f=document.createElement("li"),g=document.createElement("li"),h=document.createElement("a"),i=document.createElement("span"),j=this.options.header&&this.$menu.find(".popover-title").length>0?this.$menu.find(".popover-title")[0].cloneNode(!0):null,k=this.options.liveSearch?document.createElement("div"):null,l=this.options.actionsBox&&this.multiple&&this.$menu.find(".bs-actionsbox").length>0?this.$menu.find(".bs-actionsbox")[0].cloneNode(!0):null,m=this.options.doneButton&&this.multiple&&this.$menu.find(".bs-donebutton").length>0?this.$menu.find(".bs-donebutton")[0].cloneNode(!0):null;if(i.className="text",c.className=this.$menu[0].parentNode.className+" open",d.className="dropdown-menu open",e.className="dropdown-menu inner",f.className="divider",i.appendChild(document.createTextNode("Inner text")),h.appendChild(i),g.appendChild(h),e.appendChild(g),e.appendChild(f),j&&d.appendChild(j),k){var n=document.createElement("span");k.className="bs-searchbox",n.className="form-control",k.appendChild(n),d.appendChild(k)}l&&d.appendChild(l),d.appendChild(e),m&&d.appendChild(m),c.appendChild(d),document.body.appendChild(c);var o=h.offsetHeight,p=j?j.offsetHeight:0,q=k?k.offsetHeight:0,r=l?l.offsetHeight:0,s=m?m.offsetHeight:0,t=a(f).outerHeight(!0),u="function"==typeof getComputedStyle?getComputedStyle(d):!1,v=u?null:a(d),w=parseInt(u?u.paddingTop:v.css("paddingTop"))+parseInt(u?u.paddingBottom:v.css("paddingBottom"))+parseInt(u?u.borderTopWidth:v.css("borderTopWidth"))+parseInt(u?u.borderBottomWidth:v.css("borderBottomWidth")),x=w+parseInt(u?u.marginTop:v.css("marginTop"))+parseInt(u?u.marginBottom:v.css("marginBottom"))+2;document.body.removeChild(c),this.sizeInfo={liHeight:o,headerHeight:p,searchHeight:q,actionsHeight:r,doneButtonHeight:s,dividerHeight:t,menuPadding:w,menuExtras:x}}},setSize:function(){if(this.findLis(),this.liHeight(),this.options.header&&this.$menu.css("padding-top",0),this.options.size!==!1){var b,c,d,e,f=this,g=this.$menu,h=this.$menuInner,i=a(window),j=this.$newElement[0].offsetHeight,k=this.sizeInfo.liHeight,l=this.sizeInfo.headerHeight,m=this.sizeInfo.searchHeight,n=this.sizeInfo.actionsHeight,o=this.sizeInfo.doneButtonHeight,p=this.sizeInfo.dividerHeight,q=this.sizeInfo.menuPadding,r=this.sizeInfo.menuExtras,s=this.options.hideDisabled?".disabled":"",t=function(){d=f.$newElement.offset().top-i.scrollTop(),e=i.height()-d-j};if(t(),"auto"===this.options.size){var u=function(){var i,j=function(b,c){return function(d){return c?d.classList?d.classList.contains(b):a(d).hasClass(b):!(d.classList?d.classList.contains(b):a(d).hasClass(b))}},p=f.$menuInner[0].getElementsByTagName("li"),s=Array.prototype.filter?Array.prototype.filter.call(p,j("hidden",!1)):f.$lis.not(".hidden"),u=Array.prototype.filter?Array.prototype.filter.call(s,j("dropdown-header",!0)):s.filter(".dropdown-header");t(),b=e-r,f.options.container?(g.data("height")||g.data("height",g.height()),c=g.data("height")):c=g.height(),f.options.dropupAuto&&f.$newElement.toggleClass("dropup",d>e&&c>b-r),f.$newElement.hasClass("dropup")&&(b=d-r),i=s.length+u.length>3?3*k+r-2:0,g.css({"max-height":b+"px",overflow:"hidden","min-height":i+l+m+n+o+"px"}),h.css({"max-height":b-l-m-n-o-q+"px","overflow-y":"auto","min-height":Math.max(i-q,0)+"px"})};u(),this.$searchbox.off("input.getSize propertychange.getSize").on("input.getSize propertychange.getSize",u),i.off("resize.getSize scroll.getSize").on("resize.getSize scroll.getSize",u)}else if(this.options.size&&"auto"!=this.options.size&&this.$lis.not(s).length>this.options.size){var v=this.$lis.not(".divider").not(s).children().slice(0,this.options.size).last().parent().index(),w=this.$lis.slice(0,v+1).filter(".divider").length;b=k*this.options.size+w*p+q,f.options.container?(g.data("height")||g.data("height",g.height()),c=g.data("height")):c=g.height(),f.options.dropupAuto&&this.$newElement.toggleClass("dropup",d>e&&c>b-r),g.css({"max-height":b+l+m+n+o+"px",overflow:"hidden","min-height":""}),h.css({"max-height":b-q+"px","overflow-y":"auto","min-height":""})}}},setWidth:function(){if("auto"===this.options.width){this.$menu.css("min-width","0");var a=this.$menu.parent().clone().appendTo("body"),b=this.options.container?this.$newElement.clone().appendTo("body"):a,c=a.children(".dropdown-menu").outerWidth(),d=b.css("width","auto").children("button").outerWidth();a.remove(),b.remove(),this.$newElement.css("width",Math.max(c,d)+"px")}else"fit"===this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width","").addClass("fit-width")):this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width",this.options.width)):(this.$menu.css("min-width",""),this.$newElement.css("width",""));this.$newElement.hasClass("fit-width")&&"fit"!==this.options.width&&this.$newElement.removeClass("fit-width")},selectPosition:function(){this.$bsContainer=a('<div class="bs-container" />');var b,c,d=this,e=function(a){d.$bsContainer.addClass(a.attr("class").replace(/form-control|fit-width/gi,"")).toggleClass("dropup",a.hasClass("dropup")),b=a.offset(),c=a.hasClass("dropup")?0:a[0].offsetHeight,d.$bsContainer.css({top:b.top+c,left:b.left,width:a[0].offsetWidth})};this.$button.on("click",function(){var b=a(this);d.isDisabled()||(e(d.$newElement),d.$bsContainer.appendTo(d.options.container).toggleClass("open",!b.hasClass("open")).append(d.$menu))}),a(window).on("resize scroll",function(){e(d.$newElement)}),this.$element.on("hide.bs.select",function(){d.$menu.data("height",d.$menu.height()),d.$bsContainer.detach()})},setSelected:function(a,b,c){c||(c=this.findLis().eq(this.liObj[a])),c.toggleClass("selected",b)},setDisabled:function(a,b,c){c||(c=this.findLis().eq(this.liObj[a])),b?c.addClass("disabled").children("a").attr("href","#").attr("tabindex",-1):c.removeClass("disabled").children("a").removeAttr("href").attr("tabindex",0)},isDisabled:function(){return this.$element[0].disabled},checkDisabled:function(){var a=this;this.isDisabled()?(this.$newElement.addClass("disabled"),this.$button.addClass("disabled").attr("tabindex",-1)):(this.$button.hasClass("disabled")&&(this.$newElement.removeClass("disabled"),this.$button.removeClass("disabled")),-1!=this.$button.attr("tabindex")||this.$element.data("tabindex")||this.$button.removeAttr("tabindex")),this.$button.click(function(){return!a.isDisabled()})},tabIndex:function(){this.$element.data("tabindex")!==this.$element.attr("tabindex")&&-98!==this.$element.attr("tabindex")&&"-98"!==this.$element.attr("tabindex")&&(this.$element.data("tabindex",this.$element.attr("tabindex")),this.$button.attr("tabindex",this.$element.data("tabindex"))),this.$element.attr("tabindex",-98)},clickListener:function(){var b=this,c=a(document);this.$newElement.on("touchstart.dropdown",".dropdown-menu",function(a){a.stopPropagation()}),c.data("spaceSelect",!1),this.$button.on("keyup",function(a){/(32)/.test(a.keyCode.toString(10))&&c.data("spaceSelect")&&(a.preventDefault(),c.data("spaceSelect",!1))}),this.$button.on("click",function(){b.setSize()}),this.$element.on("shown.bs.select",function(){if(b.options.liveSearch||b.multiple){if(!b.multiple){var a=b.liObj[b.$element[0].selectedIndex];if("number"!=typeof a||b.options.size===!1)return;var c=b.$lis.eq(a)[0].offsetTop-b.$menuInner[0].offsetTop;c=c-b.$menuInner[0].offsetHeight/2+b.sizeInfo.liHeight/2,b.$menuInner[0].scrollTop=c}}else b.$menuInner.find(".selected a").focus()}),this.$menuInner.on("click","li a",function(c){var d=a(this),e=d.parent().data("originalIndex"),f=b.$element.val(),g=b.$element.prop("selectedIndex");if(b.multiple&&c.stopPropagation(),c.preventDefault(),!b.isDisabled()&&!d.parent().hasClass("disabled")){var h=b.$element.find("option"),i=h.eq(e),j=i.prop("selected"),k=i.parent("optgroup"),l=b.options.maxOptions,m=k.data("maxOptions")||!1;if(b.multiple){if(i.prop("selected",!j),b.setSelected(e,!j),d.blur(),l!==!1||m!==!1){var n=l<h.filter(":selected").length,o=m<k.find("option:selected").length;if(l&&n||m&&o)if(l&&1==l)h.prop("selected",!1),i.prop("selected",!0),b.$menuInner.find(".selected").removeClass("selected"),b.setSelected(e,!0);else if(m&&1==m){k.find("option:selected").prop("selected",!1),i.prop("selected",!0);var p=d.parent().data("optgroup");b.$menuInner.find('[data-optgroup="'+p+'"]').removeClass("selected"),b.setSelected(e,!0)}else{var q="function"==typeof b.options.maxOptionsText?b.options.maxOptionsText(l,m):b.options.maxOptionsText,r=q[0].replace("{n}",l),s=q[1].replace("{n}",m),t=a('<div class="notify"></div>');q[2]&&(r=r.replace("{var}",q[2][l>1?0:1]),s=s.replace("{var}",q[2][m>1?0:1])),i.prop("selected",!1),b.$menu.append(t),l&&n&&(t.append(a("<div>"+r+"</div>")),b.$element.trigger("maxReached.bs.select")),m&&o&&(t.append(a("<div>"+s+"</div>")),b.$element.trigger("maxReachedGrp.bs.select")),setTimeout(function(){b.setSelected(e,!1)},10),t.delay(750).fadeOut(300,function(){a(this).remove()})}}}else h.prop("selected",!1),i.prop("selected",!0),b.$menuInner.find(".selected").removeClass("selected"),b.setSelected(e,!0);b.multiple?b.options.liveSearch&&b.$searchbox.focus():b.$button.focus(),(f!=b.$element.val()&&b.multiple||g!=b.$element.prop("selectedIndex")&&!b.multiple)&&b.$element.trigger("changed.bs.select",[e,i.prop("selected"),j]).triggerNative("change")}}),this.$menu.on("click","li.disabled a, .popover-title, .popover-title :not(.close)",function(c){c.currentTarget==this&&(c.preventDefault(),c.stopPropagation(),b.options.liveSearch&&!a(c.target).hasClass("close")?b.$searchbox.focus():b.$button.focus())}),this.$menuInner.on("click",".divider, .dropdown-header",function(a){a.preventDefault(),a.stopPropagation(),b.options.liveSearch?b.$searchbox.focus():b.$button.focus()}),this.$menu.on("click",".popover-title .close",function(){b.$button.click()}),this.$searchbox.on("click",function(a){a.stopPropagation()}),this.$menu.on("click",".actions-btn",function(c){b.options.liveSearch?b.$searchbox.focus():b.$button.focus(),c.preventDefault(),c.stopPropagation(),a(this).hasClass("bs-select-all")?b.selectAll():b.deselectAll()}),this.$element.change(function(){b.render(!1)})},liveSearchListener:function(){var d=this,e=a('<li class="no-results"></li>');this.$button.on("click.dropdown.data-api touchstart.dropdown.data-api",function(){d.$menuInner.find(".active").removeClass("active"),d.$searchbox.val()&&(d.$searchbox.val(""),d.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove()),d.multiple||d.$menuInner.find(".selected").addClass("active"),setTimeout(function(){d.$searchbox.focus()},10)}),this.$searchbox.on("click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api",function(a){a.stopPropagation()}),this.$searchbox.on("input propertychange",function(){if(d.$searchbox.val()){var f=d.$lis.not(".is-hidden").removeClass("hidden").children("a");f=d.options.liveSearchNormalize?f.not(":a"+d._searchStyle()+'("'+b(d.$searchbox.val())+'")'):f.not(":"+d._searchStyle()+'("'+d.$searchbox.val()+'")'),f.parent().addClass("hidden"),d.$lis.filter(".dropdown-header").each(function(){var b=a(this),c=b.data("optgroup");0===d.$lis.filter("[data-optgroup="+c+"]").not(b).not(".hidden").length&&(b.addClass("hidden"),d.$lis.filter("[data-optgroup="+c+"div]").addClass("hidden"))});var g=d.$lis.not(".hidden");g.each(function(b){var c=a(this);c.hasClass("divider")&&(c.index()===g.first().index()||c.index()===g.last().index()||g.eq(b+1).hasClass("divider"))&&c.addClass("hidden")}),d.$lis.not(".hidden, .no-results").length?e.parent().length&&e.remove():(e.parent().length&&e.remove(),e.html(d.options.noneResultsText.replace("{0}",'"'+c(d.$searchbox.val())+'"')).show(),d.$menuInner.append(e))}else d.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove();d.$lis.filter(".active").removeClass("active"),d.$searchbox.val()&&d.$lis.not(".hidden, .divider, .dropdown-header").eq(0).addClass("active").children("a").focus(),a(this).focus()})},_searchStyle:function(){var a={begins:"ibegins",startsWith:"ibegins"};return a[this.options.liveSearchStyle]||"icontains"},val:function(a){return"undefined"!=typeof a?(this.$element.val(a),this.render(),this.$element):this.$element.val()},changeAll:function(b){"undefined"==typeof b&&(b=!0),this.findLis();for(var c=this.$element.find("option"),d=this.$lis.not(".divider, .dropdown-header, .disabled, .hidden").toggleClass("selected",b),e=d.length,f=[],g=0;e>g;g++){var h=d[g].getAttribute("data-original-index");f[f.length]=c.eq(h)[0]}a(f).prop("selected",b),this.render(!1),this.$element.trigger("changed.bs.select").triggerNative("change")},selectAll:function(){return this.changeAll(!0)},deselectAll:function(){return this.changeAll(!1)},toggle:function(a){a=a||window.event,a&&a.stopPropagation(),this.$button.trigger("click")},keydown:function(c){var d,e,f,g,h,i,j,k,l,m=a(this),n=m.is("input")?m.parent().parent():m.parent(),o=n.data("this"),p=":not(.disabled, .hidden, .dropdown-header, .divider)",q={32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9"};if(o.options.liveSearch&&(n=m.parent().parent()),o.options.container&&(n=o.$menu),d=a("[role=menu] li",n),l=o.$newElement.hasClass("open"),!l&&(c.keyCode>=48&&c.keyCode<=57||c.keyCode>=96&&c.keyCode<=105||c.keyCode>=65&&c.keyCode<=90)&&(o.options.container?o.$button.trigger("click"):(o.setSize(),o.$menu.parent().addClass("open"),l=!0),o.$searchbox.focus()),o.options.liveSearch&&(/(^9$|27)/.test(c.keyCode.toString(10))&&l&&0===o.$menu.find(".active").length&&(c.preventDefault(),o.$menu.parent().removeClass("open"),o.options.container&&o.$newElement.removeClass("open"),o.$button.focus()),d=a("[role=menu] li"+p,n),m.val()||/(38|40)/.test(c.keyCode.toString(10))||0===d.filter(".active").length&&(d=o.$menuInner.find("li"),d=o.options.liveSearchNormalize?d.filter(":a"+o._searchStyle()+"("+b(q[c.keyCode])+")"):d.filter(":"+o._searchStyle()+"("+q[c.keyCode]+")"))),d.length){if(/(38|40)/.test(c.keyCode.toString(10)))e=d.index(d.find("a").filter(":focus").parent()),g=d.filter(p).first().index(),h=d.filter(p).last().index(),f=d.eq(e).nextAll(p).eq(0).index(),i=d.eq(e).prevAll(p).eq(0).index(),j=d.eq(f).prevAll(p).eq(0).index(),o.options.liveSearch&&(d.each(function(b){a(this).hasClass("disabled")||a(this).data("index",b)}),e=d.index(d.filter(".active")),g=d.first().data("index"),h=d.last().data("index"),f=d.eq(e).nextAll().eq(0).data("index"),i=d.eq(e).prevAll().eq(0).data("index"),j=d.eq(f).prevAll().eq(0).data("index")),k=m.data("prevIndex"),38==c.keyCode?(o.options.liveSearch&&e--,e!=j&&e>i&&(e=i),g>e&&(e=g),e==k&&(e=h)):40==c.keyCode&&(o.options.liveSearch&&e++,-1==e&&(e=0),e!=j&&f>e&&(e=f),e>h&&(e=h),e==k&&(e=g)),m.data("prevIndex",e),o.options.liveSearch?(c.preventDefault(),m.hasClass("dropdown-toggle")||(d.removeClass("active").eq(e).addClass("active").children("a").focus(),m.focus())):d.eq(e).children("a").focus();else if(!m.is("input")){var r,s,t=[];d.each(function(){a(this).hasClass("disabled")||a.trim(a(this).children("a").text().toLowerCase()).substring(0,1)==q[c.keyCode]&&t.push(a(this).index())}),r=a(document).data("keycount"),r++,a(document).data("keycount",r),s=a.trim(a(":focus").text().toLowerCase()).substring(0,1),s!=q[c.keyCode]?(r=1,a(document).data("keycount",r)):r>=t.length&&(a(document).data("keycount",0),r>t.length&&(r=1)),d.eq(t[r-1]).children("a").focus()}if((/(13|32)/.test(c.keyCode.toString(10))||/(^9$)/.test(c.keyCode.toString(10))&&o.options.selectOnTab)&&l){if(/(32)/.test(c.keyCode.toString(10))||c.preventDefault(),o.options.liveSearch)/(32)/.test(c.keyCode.toString(10))||(o.$menuInner.find(".active a").click(),m.focus());else{var u=a(":focus");u.click(),u.focus(),c.preventDefault(),a(document).data("spaceSelect",!0)}a(document).data("keycount",0)}(/(^9$|27)/.test(c.keyCode.toString(10))&&l&&(o.multiple||o.options.liveSearch)||/(27)/.test(c.keyCode.toString(10))&&!l)&&(o.$menu.parent().removeClass("open"),o.options.container&&o.$newElement.removeClass("open"),o.$button.focus())}},mobile:function(){this.$element.addClass("mobile-device")},refresh:function(){this.$lis=null,this.liObj={},this.reloadLi(),this.render(),this.checkDisabled(),this.liHeight(!0),this.setStyle(),this.setWidth(),this.$lis&&this.$searchbox.trigger("propertychange"),this.$element.trigger("refreshed.bs.select")},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},remove:function(){this.$newElement.remove(),this.$element.remove()},destroy:function(){this.$newElement.before(this.$element).remove(),this.$bsContainer?this.$bsContainer.remove():this.$menu.remove(),this.$element.off(".bs.select").removeData("selectpicker").removeClass("bs-select-hidden selectpicker")}};var f=a.fn.selectpicker;a.fn.selectpicker=d,a.fn.selectpicker.Constructor=e,a.fn.selectpicker.noConflict=function(){return a.fn.selectpicker=f,this},a(document).data("keycount",0).on("keydown.bs.select",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input',e.prototype.keydown).on("focusin.modal",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input',function(a){a.stopPropagation()}),a(window).on("load.bs.select.data-api",function(){a(".selectpicker").each(function(){var b=a(this);d.call(b,b.data({liveSearch: true}))})})}(a)});
8
- //# sourceMappingURL=bootstrap-select.js.map
 
 
 
 
 
 
 
 
v1/assets/js/select2.min.js DELETED
@@ -1,3 +0,0 @@
1
- /*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.slice(0,n.length-1).concat(a),k=0;k<a.length;k+=1)if(m=a[k],"."===m)a.splice(k,1),k-=1;else if(".."===m){if(1===k&&(".."===a[2]||".."===a[0]))break;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=v.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),n.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var c=r[a];delete r[a],t[a]=!0,m.apply(b,c)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||a,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n<c.length;n+=1)if(m=o(c[n],f),k=m.f,"require"===k)u[n]=p.require(a);else if("exports"===k)u[n]=p.exports(a),s=!0;else if("module"===k)h=u[n]=p.module(a);else if(e(q,k)||e(r,k)||e(t,k))u[n]=j(k);else{if(!m.p)throw new Error(a+" missing "+k);m.p.load(m.n,g(f,!0),i(k),{}),u[n]=q[k]}l=d?d.apply(q[a],u):void 0,a&&(h&&h.exports!==b&&h.exports!==q[a]?q[a]=h.exports:l===b&&s||(q[a]=l))}else a&&(q[a]=d)},a=c=n=function(a,c,d,e,f){if("string"==typeof a)return p[a]?p[a](c):j(o(a,c).f);if(!a.splice){if(s=a,s.deps&&n(s.deps,s.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?m(b,a,c,d):setTimeout(function(){m(b,a,c,d)},4),n},n.config=function(a){return n(a)},a._defined=q,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(q,a)||e(r,a)||(r[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){var e=b[d];"function"==typeof e&&"constructor"!==d&&c.push(d)}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){var a=Array.prototype.unshift;return a.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;d>c;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;a>c;c++){var d=Math.floor(36*Math.random());b+=d.toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return e!==f||"hidden"!==f&&"visible"!==f?"scroll"===e||"scroll"===f?!0:d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth:!1},c.escapeMarkup=function(a){var b={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){var c=b.find(".select2-results");c.append(a)},c.prototype.sort=function(a){var b=this.options.get("sorter");return b(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()}),e=b.$results.find(".select2-results__option[aria-selected]");e.each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{"class":"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):0>h-g&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");return"true"===c.attr("aria-selected")?void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{})):void d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){var a=this.$results.find(".select2-results__option--highlighted");return a},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),2>=c?this.$results.scrollTop(0):(g>this.$results.outerHeight()||0>g)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};return a}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('<span class="select2-selection" role="combobox" aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id+"-container",a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2"),e=a(".select2.select2-container--open");e.each(function(){var b=a(this);if(this!=d[0]){var c=b.data("element");c.select2("close")}})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){var c=b.find(".selection");c.append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},d.prototype.selectionContainer=function(){var b=a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("title",e.title||e.text),f.data("data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id,d=b.length>1;if(d||c)return a.call(this,b);this.clear();var e=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(e)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e<d.length;e++){var f={data:d[e]};if(this.trigger("unselect",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||(c.which==b.DELETE||c.which==b.BACKSPACE)&&this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find(".select2-selection__placeholder").length>0||0===c.length)){var d=a('<span class="select2-selection__clear">&times;</span>');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f),a.preventDefault()}}});var f=document.documentMode,g=f&&11>=f;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){return g?void e.$selection.off("input.search input.searchcheck"):void e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){var a={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};return a}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");
2
- if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple"))return a.selected=!1,c(a.element).is("option")?(a.element.selected=!1,void this.$element.trigger("change")):void this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this,f=this.$element.children();f.each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(b=c.data(a[0],"data"),null!=b)return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){var c=this.options.get("matcher");return c(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0),k=i.text===b.term;if(k||j)return f?!1:(a.data=g,void c(a))}if(f)return!0;var l=e.createTag(b);if(null!=l){var m=e.option(l);m.attr("data-select2-tag",!0),e.addOptions([m]),e.insertTag(g,l)}a.results=g,c(a)}var e=this;return this._removeOldTags(),null==b.term||null!=b.page?void a.call(this,b,c):void a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){var c=(this._lastTag,this.$element.find("option[data-select2-tag]"));c.each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b),d=g.$element.find("option").filter(function(){return a(this).val()===c.id});if(!d.length){var e=g.option(c);e.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([e])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",b.term.length<this.minimumInputLength?void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("focus",function(){c.isOpen()&&e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id,h=this.$container.parents().filter(b.hasScroll);h.off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return a(c.data.results)<this.minimumResultsForSearch?!1:b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},a.prototype._handleSelectOnClose=function(a,b){if(b&&null!=b.originalSelect2Event){var c=b.originalSelect2Event;if("select"===c._type||"unselect"===c._type)return}var d=this.getHighlightedResults();if(!(d.length<1)){var e=d.data("data");null!=e.element&&e.element.selected||null==e.element&&e.selected||this.trigger("select",{data:e})}},a}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){var b=a.minimum-a.input.length,c="Please enter "+b+" or more characters";return c},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(O){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(P){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var Q=k.loadPath(this.defaults.amdLanguageBase+"en"),R=new k(l.language);R.extend(Q),l.translations=R}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return 0>=e?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null;
3
- },e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("jquery-mousewheel",["jquery"],function(a){return a}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if(b=b||{},"object"==typeof b)return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c});
 
 
 
v1/assets/js/woo_discount_rules.js DELETED
@@ -1,84 +0,0 @@
1
-
2
- jQuery( document ).ready( function() {
3
- jQuery(document).on('change', 'input[name="quantity"]', function () {
4
- if(woo_discount_rules.show_product_strikeout == undefined){
5
- return false;
6
- }
7
- if(woo_discount_rules.show_product_strikeout !== 'show_on_qty_update'){
8
- return false;
9
- }
10
- var form = jQuery(this).closest('form');
11
- if(form.length){
12
- var btn = form.find("button[name='add-to-cart']");
13
- var product_id = null;
14
- var current_object = jQuery(this);
15
- var quantity = jQuery(this).val();
16
- var target_class = '.summary';
17
- if(woo_discount_rules.product_price_container_class !== undefined && woo_discount_rules.product_price_container_class !== ''){
18
- target_class = woo_discount_rules.product_price_container_class;
19
- }
20
- var target = jQuery(this).closest(target_class).find('.price');
21
- if(btn.length && parseInt(btn.val()) > 0){
22
- product_id = btn.val();
23
- if(!target.length){
24
- target = null;
25
- }
26
- } else {
27
- var input_product_id = input_variation_id = null;
28
- if(jQuery('input[name="product_id"]').length){
29
- var input_product_id = form.find('input[name="product_id"]');
30
- }
31
- if(jQuery('input[name="variation_id"]').length){
32
- var input_variation_id = form.find('input[name="variation_id"]');
33
- }
34
-
35
- if(input_product_id !== null){
36
- product_id = input_product_id.val();
37
- }
38
- if(input_variation_id !== null){
39
- product_id = input_variation_id.val();
40
- target = form.find(".woocommerce-variation-price");
41
- }
42
- }
43
- if(parseInt(product_id) > 0){
44
- jQuery.ajax({
45
- url: woo_discount_rules.ajax_url,
46
- dataType: "json",
47
- type: "POST",
48
- data: {action: "loadWooDiscountStrikeoutPriceOfProduct", id: product_id, qty: quantity, price_html: ''},
49
- beforeSend: function() {
50
- },
51
- complete: function() {
52
- },
53
- success: function (response) {
54
- if(response.status == 1){
55
- if(target !== null){
56
- target.html(response.price_html);
57
- if(response.product_type == 'variation'){
58
- if(response.has_single_price != undefined && response.parent_id != undefined){
59
- if(response.has_single_price == 1){
60
- var variation_price_target = jQuery('#product-'+response.parent_id+' .summary > p.price');
61
- variation_price_target.html(response.price_html);
62
- }
63
- }
64
- }
65
- }
66
- }
67
- current_object.trigger("woo_discount_rules_after_display_strikeout_price_on_quantity_update", [ product_id, response ]);
68
- }
69
- });
70
- }
71
- }
72
- });
73
- jQuery( ".single_variation_wrap" ).on( "show_variation, woo_discount_rules_after_variant_strikeout", function ( event, variation ) {
74
- jQuery(this).closest('form').find('input[name="quantity"]').trigger('change');
75
- });
76
- jQuery(document).on('mouseenter', '.wdr_table_container', function () {
77
- jQuery('.wdr_table_container .wdr_table_off_settings_link_con').show();
78
- jQuery('.wdr_table_container_for_admin').addClass('wdr_table_cbr');
79
- });
80
- jQuery(document).on('mouseleave', '.wdr_table_container', function () {
81
- jQuery('.wdr_table_container .wdr_table_off_settings_link_con').hide();
82
- jQuery('.wdr_table_container_for_admin').removeClass('wdr_table_cbr');
83
- });
84
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
v1/helper/activation-helper.php DELETED
@@ -1,173 +0,0 @@
1
- <?php
2
- if (!defined('ABSPATH')) exit; // Exit if accessed directly
3
-
4
- if ( ! class_exists( 'FlycartWooDiscountRulesActivationHelper' ) ) {
5
- class FlycartWooDiscountRulesActivationHelper
6
- {
7
- public static function isWooCommerceActive()
8
- {
9
- $active_plugins = apply_filters('active_plugins', get_option('active_plugins', array()));
10
- if (is_multisite()) {
11
- $active_plugins = array_merge($active_plugins, get_site_option('active_sitewide_plugins', array()));
12
- }
13
- return in_array('woocommerce/woocommerce.php', $active_plugins, false) || array_key_exists('woocommerce/woocommerce.php', $active_plugins);
14
- }
15
-
16
- public static function flyCartWooDiscountRulesAddSampleRules(){
17
- $price_rule = self::flyCartWooDiscountRulesGetRulesFromPost('woo_discount');
18
- $cart_rule = self::flyCartWooDiscountRulesGetRulesFromPost('woo_discount_cart');
19
- if($price_rule){
20
- // do nothing
21
- } else {
22
- $price_rules = self::flyCartWooDiscountRulesSamplePriceRules();
23
- self::flyCartWooDiscountRulesInsertSampleRules($price_rules);
24
- }
25
- if($cart_rule){
26
- // do nothing
27
- } else {
28
- $cart_rules = self::flyCartWooDiscountRulesSampleCartRules();
29
- self::flyCartWooDiscountRulesInsertSampleRules($cart_rules);
30
- }
31
- }
32
-
33
- public static function flyCartWooDiscountRulesInsertSampleRules($rules){
34
- foreach ($rules as $rule){
35
- $metaData = $rule['meta'];
36
- unset($rule['meta']);
37
- $insert = wp_insert_post($rule);
38
- if($insert){
39
- foreach ($metaData as $index => $value) {
40
- add_post_meta($insert, $index, $value, true);
41
- }
42
- }
43
- }
44
- }
45
-
46
- /**
47
- * Get Email template from post
48
- * */
49
- public static function flyCartWooDiscountRulesGetRulesFromPost($type){
50
- if($type != ''){
51
- global $wpdb;
52
- $postid = $wpdb->get_var( "SELECT ID FROM $wpdb->posts WHERE post_type = '".sanitize_text_field($type)."'" );
53
- return $postid;
54
- } else {
55
- return false;
56
- }
57
- }
58
-
59
- public static function flyCartWooDiscountRulesSampleCartRules(){
60
- $rules = array();
61
-
62
- $rules['cart_subtotal'] = array(
63
- 'post_type' => 'woo_discount_cart',
64
- 'post_title' => 'Sample - Subtotal based discount',
65
- 'post_name' => 'sample-subtotal-based-discount',
66
- 'post_content' => 'Sample - Subtotal based discount',
67
- 'post_status' => 'publish',
68
- 'meta' => array(
69
- 'rule_order' => 1,
70
- 'rule_name' => 'Sample - Subtotal based discount',
71
- 'rule_descr' => 'Get 10% off when subtotal reaches $500',
72
- 'date_from' => '',
73
- 'date_to' => '',
74
- 'discount_rule' => '[{"subtotal_least":"500"}]',
75
- 'promotion_subtotal_from' => '300',
76
- 'promotion_message' => 'Spend {{difference_amount}} and get 10% off',
77
- 'discount_type' => 'percentage_discount',
78
- 'to_discount' => '10',
79
- 'product_discount_quantity' => '1',
80
- 'cart_discounted_products' => '{}',
81
- 'dynamic_coupons_to_apply' => '',
82
- 'status' => 'disable'
83
- )
84
- );
85
-
86
- return $rules;
87
- }
88
-
89
- public static function flyCartWooDiscountRulesSamplePriceRules(){
90
- $rules = array();
91
- $rules['store_wide'] = array(
92
- 'post_type' => 'woo_discount',
93
- 'post_title' => 'Sample - Store wide discount',
94
- 'post_name' => 'sample-store-wide-discount',
95
- 'post_content' => 'Sample - Store wide discount',
96
- 'post_status' => 'publish',
97
- 'meta' => array(
98
- 'rule_order' => 1,
99
- 'rule_name' => 'Sample - Store wide discount',
100
- 'rule_descr' => '20% discount on all products in store',
101
- 'rule_method' => 'qty_based',
102
- 'date_from' => '',
103
- 'date_to' => '',
104
- 'apply_to' => 'all_products',
105
- 'is_cumulative_for_products' => '1',
106
- 'customer' => 'all',
107
- 'coupons_to_apply_option' => 'none',
108
- 'dynamic_coupons_to_apply' => '',
109
- 'subtotal_to_apply_option' => 'none',
110
- 'subtotal_to_apply' => '',
111
- 'based_on_purchase_history' => '0',
112
- 'product_based_condition' => '{}',
113
- 'discount_range' => '{"1":{"min_qty":"1","max_qty":"999","discount_type":"percentage_discount","to_discount":"20","discount_product_option":"all","discount_bogo_qty":"1","discount_product_item_type":"dynamic","discount_product_items":"","discount_product_qty":"","discount_product_discount_type":"","discount_product_percent":"","title":"Sample - Store wide discount"}}',
114
- 'product_based_discount' => '{}',
115
- 'coupons_to_apply' => '',
116
- 'exclude_sale_items' => '0',
117
- 'user_roles_to_apply' => '[]',
118
- 'product_to_exclude' => 'a:0:{}',
119
- 'status' => 'disable',
120
- 'wpml_language' => '',
121
- 'product_to_exclude_variants' => 'a:0:{}',
122
- )
123
- );
124
-
125
- $rules['bulk_discount'] = array(
126
- 'post_type' => 'woo_discount',
127
- 'post_title' => 'Sample - Bulk discounts / Tiered pricing discounts',
128
- 'post_name' => 'sample-bulk-discounts-tiered-pricing-discounts',
129
- 'post_content' => 'Sample - Bulk discounts / Tiered pricing discounts',
130
- 'post_status' => 'publish',
131
- 'meta' => array(
132
- 'rule_order' => 2,
133
- 'rule_name' => 'Sample - Bulk discounts / Tiered pricing discounts',
134
- 'rule_descr' => 'Buy 6 - 11 quantities get 5% off, Buy 12 - 17 quantities get 10% off and so on',
135
- 'rule_method' => 'qty_based',
136
- 'date_from' => '',
137
- 'date_to' => '',
138
- 'apply_to' => 'all_products',
139
- 'is_cumulative_for_products' => '1',
140
- 'customer' => 'all',
141
- 'coupons_to_apply_option' => 'none',
142
- 'dynamic_coupons_to_apply' => '',
143
- 'subtotal_to_apply_option' => 'none',
144
- 'subtotal_to_apply' => '',
145
- 'based_on_purchase_history' => '0',
146
- 'product_based_condition' => '{}',
147
- 'discount_range' => '{"1":{"min_qty":"6","max_qty":"11","discount_type":"percentage_discount","to_discount":"5","discount_product_option":"all","discount_bogo_qty":"1","discount_product_item_type":"dynamic","discount_product_items":"","discount_product_qty":"","discount_product_discount_type":"","discount_product_percent":"","title":"Sample - Bulk discounts / Tiered pricing discounts"},"2":{"min_qty":"12","max_qty":"17","discount_type":"percentage_discount","to_discount":"10","discount_product_option":"all","discount_bogo_qty":"","discount_product_item_type":"dynamic","discount_product_items":"","discount_product_qty":"","discount_product_discount_type":"","discount_product_percent":"","title":"Sample - Bulk discounts / Tiered pricing discounts"},"3":{"min_qty":"18","max_qty":"999","discount_type":"percentage_discount","to_discount":"15","discount_product_option":"all","discount_bogo_qty":"","discount_product_item_type":"dynamic","discount_product_items":"","discount_product_qty":"","discount_product_discount_type":"","discount_product_percent":"","title":"Sample - Bulk discounts / Tiered pricing discounts"}}',
148
- 'product_based_discount' => '{}',
149
- 'coupons_to_apply' => '',
150
- 'exclude_sale_items' => '0',
151
- 'user_roles_to_apply' => '[]',
152
- 'product_to_exclude' => 'a:0:{}',
153
- 'status' => 'disable',
154
- 'wpml_language' => '',
155
- 'product_to_exclude_variants' => 'a:0:{}',
156
- )
157
- );
158
-
159
- return $rules;
160
- }
161
- }
162
- }
163
- if (!function_exists('onWooDiscountActivate')) {
164
- function onWooDiscountActivate() {
165
- // Dependency Check.
166
- if (!FlycartWooDiscountRulesActivationHelper::isWooCommerceActive()) wp_die('Please Install WooCommerce to Continue !');
167
-
168
- FlycartWooDiscountRulesActivationHelper::flyCartWooDiscountRulesAddSampleRules();
169
- }
170
- }
171
- if (!function_exists('onWooDiscountDeactivation')) {
172
- function onWooDiscountDeactivation() {}
173
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
v1/helper/general-helper.php DELETED
@@ -1,1281 +0,0 @@
1
- <?php
2
- if (!defined('ABSPATH')) exit; // Exit if accessed directly
3
- include_once(WOO_DISCOUNT_DIR . '/helper/purchase.php');
4
- include_once(WOO_DISCOUNT_DIR . '/helper/woo-function.php');
5
- /**
6
- * Class FlycartWooDiscountRulesGeneralHelper
7
- */
8
- if ( ! class_exists( 'FlycartWooDiscountRulesGeneralHelper' ) ) {
9
- global $styles_woo_discount;
10
- class FlycartWooDiscountRulesGeneralHelper
11
- {
12
-
13
- public $isPro;
14
-
15
- /**
16
- * @var string
17
- */
18
- public $default_page = 'pricing-rules';
19
-
20
- protected static $sub_categories = array();
21
-
22
- /**
23
- * To Process the View.
24
- *
25
- * @param $path
26
- * @param $data
27
- * @return bool|string
28
- */
29
- public function processBaseView($path, $data, $tab)
30
- {
31
- if (!file_exists($path)) return false;
32
- $this->checkPluginState();
33
- $purchase = new FlycartWooDiscountRulesPurchase();
34
- $suffix = $purchase->getSuffix();
35
- ob_start();
36
- $config = $data;
37
- $pro = $this->isPro;
38
- $category = $this->getCategoryList();
39
- $coupons = array();
40
- if(in_array($tab, array('pricing-rules-new', 'pricing-rules-view', 'cart-rules-new', 'cart-rules-view'))){
41
- $has_large_no_of_coupon = FlycartWooDiscountBase::hasLargeNumberOfCoupon();
42
- if($pro && (!$has_large_no_of_coupon)) $coupons = $this->getCouponsList();
43
- }
44
-
45
- //$users = $this->getUserList();
46
- FlycartWoocommerceVersion::wcVersion('3.0')? $flycart_wdr_woocommerce_version = 3: $flycart_wdr_woocommerce_version = 2;
47
- $userRoles = $this->getUserRoles();
48
- $userRoles['woo_discount_rules_guest'] = esc_html__('Guest', 'woo-discount-rules');
49
- $countries = $this->getAllCountries();
50
-
51
- if (!isset($config)) return false;
52
- if (!isset($path) or is_null($config)) return false;
53
- include($path);
54
- $html = ob_get_contents();
55
- ob_end_clean();
56
- return $html;
57
- }
58
-
59
- public function checkPluginState()
60
- {
61
- $purchase = new FlycartWooDiscountRulesPurchase();
62
- $this->isPro = $purchase->isPro();
63
- return $this->isPro;
64
- }
65
-
66
- /**
67
- * To Retrieve the list of Users.
68
- *
69
- * @return array
70
- */
71
- public function getUserList()
72
- {
73
- $result = array();
74
- foreach (get_users() as $user) {
75
- $result[$user->ID] = '#' . $user->ID . ' ' . $user->user_email;
76
- }
77
- return $result;
78
- }
79
-
80
- /**
81
- * Get all coupons
82
- * */
83
- public function getCouponsList(){
84
- $args = array(
85
- 'posts_per_page' => -1,
86
- 'orderby' => 'title',
87
- 'order' => 'asc',
88
- 'post_type' => 'shop_coupon',
89
- 'post_status' => 'publish',
90
- );
91
- $coupon_list = array();
92
- $coupons = get_posts( $args );
93
- if(!empty($coupons)){
94
- foreach ($coupons as $coupon){
95
- //$coupon_list[$coupon->post_name] = $coupon->post_title;
96
- if(function_exists('wc_strtolower')){
97
- $coupon_name = wc_strtolower($coupon->post_title);
98
- } else {
99
- $coupon_name = strtolower($coupon->post_title);
100
- }
101
-
102
- $coupon_list[$coupon_name] = $coupon->post_title;
103
- }
104
- }
105
-
106
- return $coupon_list;
107
- }
108
-
109
- /**
110
- * To Retrieve the active tab.
111
- *
112
- * @return string
113
- */
114
- public function getCurrentTab()
115
- {
116
- $postData = \FlycartInput\FInput::getInstance();
117
- $tab = $this->default_page;
118
- $empty_tab = $postData->get('tab', null);
119
- if (!empty($empty_tab) && $postData->get('tab', '') != '') {
120
- $tab = sanitize_text_field($postData->get('tab', ''));
121
- }
122
- return $tab;
123
- }
124
-
125
- /**
126
- * To Get All Countries.
127
- *
128
- * @return array
129
- */
130
- public function getAllCountries()
131
- {
132
- $countries = new WC_Countries();
133
-
134
- if ($countries && is_array($countries->countries)) {
135
- return array_merge(array(), $countries->countries);
136
- } else {
137
- return array();
138
- }
139
- }
140
-
141
- /**
142
- * To Get All Capabilities list.
143
- *
144
- * @return array
145
- */
146
- public function getCapabilitiesList()
147
- {
148
- $capabilities = array();
149
-
150
- if (class_exists('Groups_User') && class_exists('Groups_Wordpress') && function_exists('_groups_get_tablename')) {
151
-
152
- global $wpdb;
153
- $capability_table = _groups_get_tablename('capability');
154
- $all_capabilities = $wpdb->get_results('SELECT capability FROM ' . $capability_table);
155
-
156
- if ($all_capabilities) {
157
- foreach ($all_capabilities as $capability) {
158
- $capabilities[$capability->capability] = $capability->capability;
159
- }
160
- }
161
- } else {
162
- global $wp_roles;
163
-
164
- if (!isset($wp_roles)) {
165
- get_role('administrator');
166
- }
167
-
168
- $roles = $wp_roles->roles;
169
-
170
- if (is_array($roles)) {
171
- foreach ($roles as $rolename => $atts) {
172
- if (isset($atts['capabilities']) && is_array($atts['capabilities'])) {
173
- foreach ($atts['capabilities'] as $capability => $value) {
174
- if (!in_array($capability, $capabilities)) {
175
- $capabilities[$capability] = $capability;
176
- }
177
- }
178
- }
179
- }
180
- }
181
- }
182
-
183
- return array_merge(array(), $capabilities);
184
- }
185
-
186
- /**
187
- * @return array
188
- */
189
- public function getUserRoles()
190
- {
191
- global $wp_roles;
192
-
193
- if (!isset($wp_roles)) {
194
- $wp_roles = new WP_Roles();
195
- }
196
- $roles = array();
197
- foreach ($wp_roles->get_names() as $key => $wp_role ){
198
- if(function_exists('translate_user_role')) $roles[$key] = translate_user_role($wp_role);
199
- else $roles[$key] = $wp_role;
200
- }
201
-
202
- return $roles;
203
- }
204
-
205
- /**
206
- * Get list of roles assigned to current user
207
- *
208
- * @access public
209
- * @return array
210
- */
211
- public static function getCurrentUserRoles()
212
- {
213
- $current_user = wp_get_current_user();
214
- $userRoles = $current_user->roles;
215
- if(get_current_user_id() == 0){
216
- $userRoles[] = 'woo_discount_rules_guest';
217
- }
218
- return $userRoles;
219
- }
220
-
221
- /**
222
- * @return array
223
- */
224
- public function getCategoryList()
225
- {
226
- $result = array();
227
- $taxonomies = apply_filters('woo_discount_rules_accepted_taxonomy_for_category', array('product_cat'));
228
- $post_categories_raw = get_terms($taxonomies, array('hide_empty' => 0));
229
- if(is_array($post_categories_raw)){
230
- $post_categories_raw_count = count($post_categories_raw);
231
-
232
- foreach ($post_categories_raw as $post_cat_key => $post_cat) {
233
- if(isset($post_cat->name)){
234
- $category_name = $post_cat->name;
235
-
236
- if ($post_cat->parent) {
237
- $parent_id = $post_cat->parent;
238
- $has_parent = true;
239
-
240
- // Make sure we don't have an infinite loop here (happens with some kind of "ghost" categories)
241
- $found = false;
242
- $i = 0;
243
-
244
- while ($has_parent && ($i < $post_categories_raw_count || $found)) {
245
-
246
- // Reset each time
247
- $found = false;
248
- $i = 0;
249
-
250
- foreach ($post_categories_raw as $parent_post_cat_key => $parent_post_cat) {
251
-
252
- $i++;
253
-
254
- if ($parent_post_cat->term_id == $parent_id) {
255
- $category_name = $parent_post_cat->name . ' &rarr; ' . $category_name;
256
- $found = true;
257
-
258
- if ($parent_post_cat->parent) {
259
- $parent_id = $parent_post_cat->parent;
260
- } else {
261
- $has_parent = false;
262
- }
263
-
264
- break;
265
- }
266
- }
267
- }
268
- }
269
-
270
- $result[$post_cat->term_id] = $category_name;
271
- }
272
- }
273
- }
274
-
275
- return $result;
276
- }
277
-
278
- /**
279
- * get taxonomy list
280
- */
281
- public static function getTaxonomyList()
282
- {
283
- $skip_default_taxonomies = array('category', 'post_tag', 'nav_menu', 'link_category', 'post_format', 'action-group', 'product_type', 'product_visibility', 'product_shipping_class', 'product_cat');
284
- $args = array();
285
- $output = 'objects';
286
- $taxonomies = get_taxonomies($args, $output);
287
- $additional_taxonomies = array();
288
- foreach ($taxonomies as $taxonomy){
289
- if(!in_array($taxonomy->name, $skip_default_taxonomies)){
290
- $load_attributes_in_categories = apply_filters('woo_discount_rules_load_attributes_in_categories', false);
291
- if(!(substr( $taxonomy->name, 0, 3 ) === "pa_") || $load_attributes_in_categories){
292
- $additional_taxonomies[$taxonomy->name] = $taxonomy->label;
293
- }
294
- }
295
- }
296
-
297
- return $additional_taxonomies;
298
- }
299
-
300
- /**
301
- * Get Category by passing product ID or Product.
302
- *
303
- * @param $item
304
- * @param bool $is_id
305
- * @return array
306
- */
307
- public static function getCategoryByPost($item, $is_id = false)
308
- {
309
- if ($is_id) {
310
- $id = $item;
311
- } else {
312
- $id = FlycartWoocommerceProduct::get_id($item['data']);
313
- }
314
- $product = FlycartWoocommerceProduct::wc_get_product($id);
315
- $categories = FlycartWoocommerceProduct::get_category_ids($product);
316
-
317
- return $categories;
318
- }
319
-
320
- /**
321
- * To Parsing the Array from String to Int.
322
- *
323
- * @param array $array
324
- */
325
- public static function toInt(array &$array)
326
- {
327
- foreach ($array as $index => $item) {
328
- $array[$index] = intval($item);
329
- }
330
- }
331
-
332
- /**
333
- * @param $html
334
- * @return bool|mixed
335
- */
336
- static function makeString($html)
337
- {
338
- if (is_null($html) || empty($html) || !isset($html)) return false;
339
- $out = $html;
340
- // This Process only helps, single level array.
341
- if (is_array($html)) {
342
- foreach ($html as $id => $value) {
343
- self::escapeCode($value);
344
- $html[$id] = $value;
345
- }
346
- return $out;
347
- } else {
348
- self::escapeCode($html);
349
- return $html;
350
- }
351
- }
352
-
353
- /**
354
- * Re-Arrange the Index of Array to Make Usable.[2-D Array Only]
355
- * @param $rules
356
- */
357
- public static function reArrangeArray(&$rules)
358
- {
359
- $result = array();
360
- foreach ($rules as $index => $item) {
361
- foreach ($item as $id => $value) {
362
- if(!in_array($id, array('product_variants'))){
363
- $result[$id] = $value;
364
- }
365
- }
366
- }
367
- $rules = $result;
368
- }
369
-
370
- /**
371
- * @param $value
372
- */
373
- static function escapeCode(&$value)
374
- {
375
- if(is_string($value)){
376
- // Four Possible tags for PHP to Init.
377
- $value = preg_replace(array('/^<\?php.*\?\>/', '/^<\%.*\%\>/', '/^<\?.*\?\>/', '/^<\?=.*\?\>/'), '', $value);
378
- $value = self::delete_all_between('<?php', '?>', $value);
379
- $value = self::delete_all_between('<?', '?>', $value);
380
- $value = self::delete_all_between('<?=', '?>', $value);
381
- $value = self::delete_all_between('<%', '%>', $value);
382
- $value = str_replace(array('<?php', '<?', '<?=', '<%', '?>'), '', $value);
383
- }
384
- }
385
-
386
-
387
- /**
388
- * @param $beginning
389
- * @param $end
390
- * @param $string
391
- * @return mixed
392
- */
393
- static function delete_all_between($beginning, $end, $string)
394
- {
395
-
396
- if (!is_string($string)) return false;
397
-
398
- $beginningPos = strpos($string, $beginning);
399
- $endPos = strpos($string, $end);
400
- if ($beginningPos === false || $endPos === false) {
401
- return $string;
402
- }
403
-
404
- $textToDelete = substr($string, $beginningPos, ($endPos + strlen($end)) - $beginningPos);
405
-
406
- return str_replace($textToDelete, '', $string);
407
- }
408
-
409
- /**
410
- * To get slider content through curl
411
- * */
412
- public static function getSideBarContent(){
413
- $html = '';
414
- if(is_callable('curl_init')) {
415
- $ch = curl_init();
416
- curl_setopt($ch, CURLOPT_URL, 'https://www.flycart.org/updates/woo-discount-rules.json');
417
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
418
- $contents = curl_exec($ch);
419
- $contents_decode = json_decode($contents);
420
- if(isset($contents_decode['0']->promo_html)){
421
- $html = $contents_decode['0']->promo_html;
422
- }
423
- }
424
-
425
- return $html;
426
- }
427
-
428
- /**
429
- * Check do the discount rules need to execute
430
- * */
431
- public static function doIHaveToRun(){
432
- $status = true;
433
- if(is_admin()){
434
- $status = false;
435
- }
436
- if(defined('DOING_AJAX') && DOING_AJAX){
437
- $status = true;
438
- $postData = \FlycartInput\FInput::getInstance();
439
- $action = $postData->get('action', '');
440
- $form = $postData->get('from', '');
441
- if($action == 'saveCartRule' || $action == 'savePriceRule'){
442
- $status = false;
443
- } else if(($action == 'UpdateStatus' || $action == 'RemoveRule') && ($form == 'cart-rules' || $form == 'pricing-rules')){
444
- $status = false;
445
- } else if($action == 'saveConfig' && $form == 'settings'){
446
- $status = false;
447
- }
448
- }
449
- if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ){
450
- $status = false;
451
- }
452
-
453
- return apply_filters('woo_discount_rules_apply_rules', $status);
454
- }
455
-
456
- public static function haveToApplyTheRules(){
457
- $status = true;
458
- $config = new FlycartWooDiscountBase();
459
- $do_not_run_while_have_third_party_coupon = $config->getConfigData('do_not_run_while_have_third_party_coupon', 0);
460
- if($do_not_run_while_have_third_party_coupon == '1'){
461
- $hasCoupon = self::hasCouponInCart();
462
- if($hasCoupon){
463
- self::resetTheCartValues();
464
- $status = false;
465
- }
466
- }
467
-
468
- return apply_filters('woo_discount_rules_apply_rules', $status);
469
- }
470
-
471
- /**
472
- * Check has coupon - not related to woo discount rules
473
- * */
474
- public static function hasCouponInCart(){
475
- $result = false;
476
- $cartRules = new FlycartWooDiscountRulesCartRules();
477
- $coupon_code = $cartRules->getCouponCode();
478
- $coupon_code = strtolower($coupon_code);
479
- global $woocommerce;
480
- if (!empty($woocommerce->cart->applied_coupons)) {
481
- $appliedCoupons = $woocommerce->cart->applied_coupons;
482
- if(is_array($appliedCoupons) && count($appliedCoupons) > 0){
483
- $used_coupons = self::getUsedCouponsInRules();
484
- $used_coupons[] = $coupon_code;
485
- $used_coupons = apply_filters('woo_discount_rules_coupons_to_skip_while_apply_third_party_coupon_and_disable_rules', $used_coupons);
486
- if(!empty($used_coupons)){
487
- $used_coupons = array_map('strtolower', $used_coupons);
488
- }
489
- foreach ($appliedCoupons as $appliedCoupon){
490
- if(!in_array($appliedCoupon, $used_coupons)){
491
- $result = true;
492
- break;
493
- }
494
- }
495
- }
496
- }
497
-
498
- return $result;
499
- }
500
-
501
- protected static function resetTheCartValues(){
502
- global $woocommerce;
503
- // Make sure item exists in cart
504
- if (!isset($woocommerce->cart)) return;
505
- if (!isset($woocommerce->cart->cart_contents)) return;
506
- if(!empty($woocommerce->cart->cart_contents) && count($woocommerce->cart->cart_contents) > 0){
507
- foreach ($woocommerce->cart->cart_contents as $key => $cart){
508
- if(isset($woocommerce->cart->cart_contents[$key]['woo_discount'])){
509
- unset($woocommerce->cart->cart_contents[$key]['woo_discount']);
510
- }
511
- }
512
- }
513
- }
514
-
515
- /**
516
- * get Used Coupons
517
- * */
518
- public static function getUsedCouponsInRules(){
519
- $coupons = array();
520
- $post_args = array('post_type' => array('woo_discount', 'woo_discount_cart'), 'numberposts' => '-1', 'post_status' => 'publish');
521
- $post_args['meta_key'] = 'used_coupon';
522
- $post_args['meta_query'] = array(
523
- array(
524
- 'key' => 'status',
525
- 'value' => 'publish',
526
- )
527
- );
528
- $posts = get_posts($post_args);
529
- if(!empty($posts) && count($posts) > 0){
530
- foreach ($posts as $post){
531
- $used_coupons = get_post_meta($post->ID, 'used_coupon');
532
- if(!empty($used_coupons)){
533
- $coupons = array_merge($coupons, $used_coupons);
534
- }
535
- }
536
- }
537
-
538
- return $coupons;
539
- }
540
-
541
- /**
542
- * get Used Coupons
543
- * */
544
- public static function getDynamicUsedCouponsInRules(){
545
- $coupons = array();
546
- $post_args = array('post_type' => array('woo_discount', 'woo_discount_cart'), 'numberposts' => '-1', 'post_status' => 'publish');
547
- $post_args['meta_key'] = 'dynamic_coupons_to_apply';
548
- $post_args['meta_query'] = array(
549
- array(
550
- 'key' => 'status',
551
- 'value' => 'publish',
552
- )
553
- );
554
- $posts = get_posts($post_args);
555
- if(!empty($posts) && count($posts) > 0){
556
- foreach ($posts as $post){
557
- $used_coupons = get_post_meta($post->ID, 'dynamic_coupons_to_apply');
558
- if(!empty($used_coupons)){
559
- $coupons = array_merge($coupons, $used_coupons);
560
- }
561
- }
562
- }
563
-
564
- return $coupons;
565
- }
566
-
567
- /**
568
- * Get Current date and time based on Wordpress time zone
569
- *
570
- * @param string $date
571
- * @return string
572
- * */
573
- public static function getCurrentDateAndTimeBasedOnTimeZone($date = ''){
574
- if(empty($date)){
575
- $current_date = new DateTime('now', new DateTimeZone('UTC'));
576
- $date = $current_date->format('Y-m-d H:i:s');
577
- }
578
- $offset = get_option('gmt_offset');
579
- if(empty($offset)){
580
- $offset = 0;
581
- }
582
- //$time_zone = get_option('timezone_string');
583
- return date("Y-m-d H:i:s", strtotime($date) + (3600 * $offset) );
584
- }
585
-
586
- /**
587
- * Validate the start and end date
588
- *
589
- * @param string $date_from
590
- * @param string $date_to
591
- * @return boolean
592
- * */
593
- public static function validateDateAndTime($date_from, $date_to){
594
- $valid = true;
595
- $current_date = self::getCurrentDateAndTimeBasedOnTimeZone();
596
- if($date_from != ''){
597
- if(!(strtotime($date_from) <= strtotime($current_date))) $valid = false;
598
- }
599
- if($date_to != ''){
600
- if(!(strtotime($date_to) >= strtotime($current_date))) $valid = false;
601
- }
602
-
603
- return $valid;
604
- }
605
-
606
- /**
607
- * Validate the start and end date
608
- *
609
- * @param string $date_from
610
- * @param string $date_to
611
- * @return boolean
612
- * */
613
- public static function validateDateAndTimeWarningText($date_from, $date_to){
614
- $string = '';
615
- $current_date = self::getCurrentDateAndTimeBasedOnTimeZone();
616
- if($date_from != ''){
617
- if(!(strtotime($date_from) <= strtotime($current_date))) $string = esc_html__('Start date and time is set in the future date', 'woo-discount-rules');
618
- }
619
- if($date_to != ''){
620
- if(!(strtotime($date_to) >= strtotime($current_date))) $string = esc_html__('Validity expired', 'woo-discount-rules');;
621
- }
622
-
623
- return $string;
624
- }
625
-
626
- /**
627
- * Validate the start and end date
628
- *
629
- * @param string $date_from
630
- * @param string $date_to
631
- * @return boolean
632
- * */
633
- public static function validateDateAndTimeWarningTextForListing($date_from, $date_to){
634
- $string = '';
635
- $current_date = self::getCurrentDateAndTimeBasedOnTimeZone();
636
- if($date_from != ''){
637
- if(!(strtotime($date_from) <= strtotime($current_date))) $string = esc_html__('Will run in future', 'woo-discount-rules');
638
- }
639
- if($date_to != ''){
640
- if(!(strtotime($date_to) >= strtotime($current_date))) $string = esc_html__('Not running - validity expired', 'woo-discount-rules');;
641
- }
642
-
643
- return $string;
644
- }
645
-
646
- /**
647
- * Validate the start and end date
648
- *
649
- * @param string $date_from
650
- * @param string $date_to
651
- * @return boolean
652
- * */
653
- public static function validateDateAndTimeWarningTextForListingHTML($date_from, $date_to){
654
- $string = '';
655
- $validate_date_string = self::validateDateAndTimeWarningTextForListing($date_from, $date_to);
656
- if(empty($validate_date_string)){
657
- $string .= " - <span class='wdr_status_active_text text-success'>(".esc_html__('Running', 'woo-discount-rules').")</span>";
658
- } else {
659
- $current_date_and_time = self::getCurrentDateAndTimeBasedOnTimeZone();
660
- $current_date_and_time = date('m/d/Y H:i', strtotime($current_date_and_time));
661
- $string .= " - <span class='wdr_status_active_text'>(".$validate_date_string.")</span>";
662
- $string .= "<br><span class='wdr_status_active_text text-warning'><b>".esc_html__('Your server current date and time: ', 'woo-discount-rules')." </b>".$current_date_and_time."</span>";
663
- }
664
-
665
- return $string;
666
- }
667
-
668
- /**
669
- * Reorder the rule if order id already exists
670
- *
671
- * @param int $id
672
- * @param int $order_id
673
- * @param string $post_type
674
- * @return int
675
- * */
676
- public static function reOrderRuleIfExists($id, $order_id, $post_type){
677
- $posts = get_posts(array('post_type' => $post_type, 'numberposts' => '-1', 'exclude' => array($id)));
678
- $greaterId = $alreadyExists = 0;
679
- if (!empty($posts) && count($posts) > 0) {
680
- foreach ($posts as $index => $item) {
681
- $orderId = get_post_meta($item->ID, 'rule_order', true);
682
- if(!empty($orderId)){
683
- if((int)$order_id == (int)$orderId){
684
- $alreadyExists = 1;
685
- }
686
- if($orderId > $greaterId){
687
- $greaterId = $orderId;
688
- }
689
- }
690
- }
691
- }
692
- if($alreadyExists){
693
- $greaterId++;
694
- return $greaterId;
695
- }
696
-
697
- return $order_id;
698
- }
699
-
700
- /**
701
- * Get all sub categories
702
- * */
703
- public static function getAllSubCategories($cat){
704
- $taxonomies = apply_filters('woo_discount_rules_accepted_taxonomy_for_category', array('product_cat'));
705
- $category_with_sub_cat = $cat;
706
- foreach ($taxonomies as $taxonomy){
707
- $category_with_sub = self::getAllSubCategoriesRecursive($cat, $taxonomy);
708
- $category_with_sub_cat = array_merge($category_with_sub_cat, $category_with_sub);
709
- }
710
-
711
- return $category_with_sub_cat;
712
- // $category_with_sub_cat = $cat;
713
- // foreach($cat as $c) {
714
- // $args = array('hierarchical' => 1,
715
- // 'show_option_none' => '',
716
- // 'hide_empty' => 0,
717
- // 'parent' => $c,
718
- // 'taxonomy' => 'product_cat');
719
- // $categories = get_categories( $args );
720
- // foreach($categories as $category) {
721
- // //$category_with_sub_cat[] = $category->term_id;
722
- // $category_with_sub_cat = array_merge($category_with_sub_cat, self::getAllSubCategories(array($category->term_id)));
723
- // }
724
- // }
725
- // $category_with_sub_cat = array_unique($category_with_sub_cat);
726
- //
727
- // return $category_with_sub_cat;
728
- }
729
-
730
- /**
731
- * Get all sub categories
732
- * */
733
- protected static function getAllSubCategoriesRecursive($cat, $taxonomy = 'product_cat'){
734
- $category_with_sub_cat = $cat;
735
- foreach($cat as $c) {
736
- if(isset(self::$sub_categories[$c])){
737
- $category_with_sub_cat = array_merge($category_with_sub_cat, self::$sub_categories[$c]);
738
- } else {
739
- $args = array('hierarchical' => 1,
740
- 'show_option_none' => '',
741
- 'hide_empty' => 0,
742
- 'parent' => $c,
743
- 'taxonomy' => $taxonomy);
744
- $categories = get_categories( $args );
745
- foreach($categories as $category) {
746
- //$category_with_sub_cat[] = $category->term_id;
747
- $category_with_sub_cat = array_merge($category_with_sub_cat, self::getAllSubCategoriesRecursive(array($category->term_id), $taxonomy));
748
- }
749
-
750
- self::$sub_categories[$c] = $category_with_sub_cat;
751
- }
752
- }
753
- $category_with_sub_cat = array_unique($category_with_sub_cat);
754
-
755
- return $category_with_sub_cat;
756
- }
757
-
758
- /**
759
- * Docs HTML
760
- * @param string $url
761
- * @param string $utm_term
762
- * @return string
763
- * */
764
- public static function docsURL($url, $utm_term){
765
- $url_prefix = 'https://docs.flycart.org/woocommerce-discount-rules/';
766
- $utm = '?utm_source=woo-discount-rules&utm_campaign=doc&utm_medium=text-click&utm_content=';
767
- $url = trim($url, '/');
768
-
769
- return $url_prefix.$url.$utm.$utm_term;
770
- }
771
-
772
- /**
773
- * Docs HTML
774
- * @param string $url
775
- * @param string $utm_term
776
- * @return string
777
- * */
778
- public static function docsDirectURL($url, $utm_term){
779
- $utm = '?utm_source=woo-discount-rules&utm_campaign=doc&utm_medium=text-click&utm_content=';
780
- $url = trim($url, '/');
781
-
782
- return $url.$utm.$utm_term;
783
- }
784
-
785
- /**
786
- * Docs HTML
787
- * @param string $url
788
- * @param string $utm_term
789
- * @return string
790
- * */
791
- public static function docsURLHTML($url, $utm_term, $additional_class = '', $text = ''){
792
- if(!empty($additional_class)){
793
- $additional_class = 'wdr_read_doc '.$additional_class;
794
- } else {
795
- $additional_class = 'wdr_read_doc';
796
- }
797
- if(empty($text)) $text = esc_html__('Read Docs', 'woo-discount-rules');
798
- $html = '<a class="'.$additional_class.'" href="'.self::docsURL($url, $utm_term).'" target="_blank">'.$text.'</a>';
799
-
800
- return $html;
801
- }
802
-
803
- /**
804
- * Docs HTML
805
- * @param string $url
806
- * @param string $utm_term
807
- * @return string
808
- * */
809
- public static function docsURLHTMLForDocumentation($url, $utm_term, $text, $description_text = '', $additional_class = ''){
810
- if(!empty($additional_class)){
811
- $additional_class = 'wdr_read_documentation '.$additional_class;
812
- } else {
813
- $additional_class = 'wdr_read_documentation';
814
- }
815
- $html = '<div class="wdr_read_documentation_con">';
816
- $html .= '<a class="'.$additional_class.'" href="'.self::docsURL($url, $utm_term).'" target="_blank">'.$text.'</a>';
817
- if(!empty($description_text))
818
- $html .= '<p class="">'.$description_text.'</p>';
819
- $html .= '</div>';
820
-
821
- return $html;
822
- }
823
-
824
- /**
825
- * Remove Coupon price in cart
826
- * @param array $coupons
827
- * */
828
- public static function removeCouponPriceInCart($coupons = array()){
829
- $config = new FlycartWooDiscountBase();
830
- $remove_zero_coupon_price = $config->getConfigData('remove_zero_coupon_price', 1);
831
- if($remove_zero_coupon_price){
832
- $has_coupon = false;
833
- $styles = '';
834
- foreach ($coupons as $coupon){
835
- $wc = WC();
836
- if(!empty($wc) && !empty($wc->cart)){
837
- if(method_exists($wc->cart, 'has_discount')){
838
- if($wc->cart->has_discount($coupon)){
839
- $coupon_amount = $wc->cart->get_coupon_discount_amount($coupon);
840
- if($coupon_amount == 0){
841
- $has_coupon = true;
842
- $coupon_code_class = esc_attr( sanitize_title( strtolower($coupon) ) );
843
- $style = '.coupon-'.$coupon_code_class.' .amount{display: none}.coupon-'.$coupon_code_class.' td::first-letter{font-size: 0}';
844
- $styles .= apply_filters('woo_discount_rules_apply_style_for_zero_price_coupon', $style, $coupon);
845
- }
846
- }
847
- }
848
- }
849
- }
850
- if($has_coupon){
851
- if(!empty($styles)){
852
- global $styles_woo_discount;
853
- if(!empty($styles_woo_discount)){
854
- $styles_woo_discount .= $styles;
855
- } else {
856
- $styles_woo_discount = $styles;
857
- }
858
- $is_ajax = is_ajax();
859
- $wc_ajax = isset($_REQUEST['wc-ajax'])? $_REQUEST['wc-ajax']: false;
860
- if(!$is_ajax){
861
- global $flycart_woo_discount_rules_hide_zero_coupon;
862
- $flycart_woo_discount_rules_hide_zero_coupon = "<style>".$styles."</style>";
863
- //echo "<style>".$styles."</style>";
864
- add_action('woocommerce_before_checkout_form', 'FlycartWooDiscountRulesGeneralHelper::woo_discount_rules_custom_styles');
865
- add_action('woocommerce_before_cart', 'FlycartWooDiscountRulesGeneralHelper::woo_discount_rules_custom_styles');
866
- add_action('wp_head', 'FlycartWooDiscountRulesGeneralHelper::woo_discount_rules_custom_styles', 100);
867
- } else if(in_array($wc_ajax, array('apply_coupon'))){
868
- echo "<style>".$styles."</style>";
869
- }
870
- add_action('woocommerce_before_cart_totals', 'FlycartWooDiscountRulesGeneralHelper::woo_discount_rules_custom_styles');
871
- add_action('woocommerce_review_order_before_cart_contents', 'FlycartWooDiscountRulesGeneralHelper::woo_discount_rules_custom_styles');
872
- }
873
- }
874
- }
875
- }
876
-
877
- public static function woo_discount_rules_custom_styles(){
878
- global $styles_woo_discount;
879
- echo "<style>".$styles_woo_discount."</style>";
880
- }
881
-
882
- /**
883
- * Get WPML Language
884
- * */
885
- public static function getWPMLLanguage(){
886
- $wpml_language = '';
887
- if(defined('WOO_DISCOUNT_AVAILABLE_WPML')){
888
- if(WOO_DISCOUNT_AVAILABLE_WPML){
889
- if ( defined( 'ICL_LANGUAGE_CODE' ) ) {
890
- $wpml_language = ICL_LANGUAGE_CODE;
891
- }
892
- }
893
- }
894
-
895
- return $wpml_language;
896
- }
897
-
898
- public static function applyDiscountFromRegularPrice(){
899
- $config = FlycartWooDiscountBase::get_instance();
900
- $apply_discount_from = $config->getConfigData('do_discount_from_regular_price', 'sale');
901
- if($apply_discount_from == 'regular'){
902
- return true;
903
- } else {
904
- return false;
905
- }
906
- }
907
-
908
- /**
909
- * Reset used coupon in post meta
910
- * */
911
- public static function resetUsedCoupons($post_id, $coupons_used){
912
- delete_post_meta($post_id, 'used_coupon');
913
- if(is_array($coupons_used) && !empty($coupons_used)){
914
- foreach ($coupons_used as $coupon){
915
- add_post_meta($post_id, 'used_coupon', $coupon);
916
- }
917
- }
918
- }
919
-
920
- /**
921
- * Is countable object or array
922
- * */
923
- public static function is_countable($data){
924
- if((is_array($data) || is_object($data))){
925
- if(is_object($data)) $data = (array)$data;
926
- if(count($data)) return true;
927
- }
928
- return false;
929
- }
930
-
931
- /**
932
- * Is same string
933
- * */
934
- public static function is_same_string($first, $second){
935
- $first = str_replace("&ndash;", '-', $first);
936
- $first = strip_tags($first);
937
- $second = str_replace("&ndash;", '-', $second);
938
- $second = strip_tags($second);
939
- if($first == $second){
940
- return true;
941
- }
942
- return false;
943
- }
944
-
945
- /**
946
- * Get billing email from post data
947
- *
948
- * @return string
949
- * */
950
- public static function get_billing_email_from_post(){
951
- $user_email = '';
952
- $postDataObject = \FlycartInput\FInput::getInstance();
953
- $postData = $postDataObject->get('post_data', '', 'raw');
954
- $postDataArray = array();
955
- if($postData != ''){
956
- parse_str($postData, $postDataArray);
957
- }
958
- $postBillingEmail = $postDataObject->get('billing_email', '', 'raw');
959
- if($postBillingEmail != ''){
960
- $postDataArray['billing_email'] = $postBillingEmail;
961
- }
962
- if(!get_current_user_id()){
963
- $order_id = $postDataObject->get('order-received', 0);
964
- if($order_id){
965
- $order = FlycartWoocommerceOrder::wc_get_order($order_id);
966
- $postDataArray['billing_email'] = FlycartWoocommerceOrder::get_billing_email($order);
967
- }
968
- }
969
- if(isset($postDataArray['billing_email']) && $postDataArray['billing_email'] != ''){
970
- $user_email = $postDataArray['billing_email'];
971
- }
972
- if(empty($user_email)){
973
- if(function_exists('WC')){
974
- $session = WC()->session;
975
- if(!empty($session)){
976
- if(method_exists($session, 'get')){
977
- $customer = $session->get('customer');
978
- if(isset($customer['email']) && !empty($customer['email'])){
979
- $user_email = $customer['email'];
980
- }
981
- }
982
- }
983
- }
984
- }
985
-
986
- return $user_email;
987
- }
988
-
989
- /**
990
- * Add a quantity for product strikeout
991
- *
992
- * @return boolean
993
- * */
994
- public static function addAQuantityForProductStrikeOut(){
995
- $config = FlycartWooDiscountBase::get_instance();
996
- $show_price_discount = $config->getConfigData('show_price_discount_on_product_page', 'show');
997
- $add = true;
998
- if($show_price_discount == 'show_after_rule_matches'){
999
- $add = false;
1000
- }
1001
-
1002
- return $add;
1003
- }
1004
-
1005
- /**
1006
- * Show discount on product page
1007
- *
1008
- * @return boolean
1009
- * */
1010
- public static function showDiscountOnProductPage(){
1011
- $config = FlycartWooDiscountBase::get_instance();
1012
- $show_price_discount = $config->getConfigData('show_price_discount_on_product_page', 'show');
1013
- $show = false;
1014
- if(in_array($show_price_discount, array('show', 'show_after_rule_matches', 'show_on_qty_update'))){
1015
- $show = true;
1016
- }
1017
-
1018
- return $show;
1019
- }
1020
-
1021
- /**
1022
- * Validate coupon
1023
- *
1024
- * @param string $coupon_name
1025
- * @return array
1026
- * */
1027
- public static function validateDynamicCoupon($coupon_name){
1028
- $result['status'] = false;
1029
- $coupon_name = self::filterDynamicCoupon($coupon_name);
1030
- if(!empty($coupon_name)){
1031
- $coupon_exists = self::checkCouponAlreadyExistsInWooCommerce($coupon_name);
1032
- if($coupon_exists){
1033
- $result['status'] = false;
1034
- $result['message'] = esc_html__('Coupon already exists in WooCommerce. Please select another name', 'woo-discount-rules');
1035
- } else {
1036
- $result['status'] = true;
1037
- }
1038
- }
1039
- $result['coupon'] = $coupon_name;
1040
-
1041
- return $result;
1042
- }
1043
-
1044
- /**
1045
- * Validate coupon
1046
- *
1047
- * @param string $coupon_name
1048
- * @return boolean
1049
- * */
1050
- public static function checkCouponAlreadyExistsInWooCommerce($coupon_name){
1051
- $coupon_args = array(
1052
- 'name' => wc_strtolower($coupon_name),
1053
- 'post_type' => 'shop_coupon'
1054
- );
1055
- $posts = get_posts($coupon_args);
1056
- if(!empty($posts) && count($posts) > 0){
1057
- return true;
1058
- }
1059
-
1060
- return false;
1061
- }
1062
-
1063
- /**
1064
- * Filter Coupon name
1065
- *
1066
- * @param string $coupon_name
1067
- * @return string
1068
- * */
1069
- public static function filterDynamicCoupon($coupon_name){
1070
- $coupon_name = trim($coupon_name);
1071
- $coupon_name = str_replace(' ', '', $coupon_name);
1072
- $coupon_name = apply_filters('woocommerce_coupon_code', $coupon_name);
1073
- $coupon_name = FlycartWoocommerceProduct::wc_strtoupper($coupon_name);
1074
-
1075
- return $coupon_name;
1076
- }
1077
-
1078
- /**
1079
- * Virtually add Coupon to apply the Discount.
1080
- *
1081
- * @param array $response
1082
- * @param mixed $coupon_data
1083
- * @return mixed
1084
- */
1085
- public static function addVirtualCoupon($response, $coupon_data)
1086
- {
1087
- if(is_string($coupon_data)){
1088
- $used_coupon_codes = self::getDynamicUsedCouponsInRules();
1089
- if (in_array(FlycartWoocommerceProduct::wc_strtoupper($coupon_data), $used_coupon_codes)) {
1090
- $discount_type = 'percent';
1091
- $amount = 0;
1092
-
1093
- $coupon = array(
1094
- 'id' => time() . rand(2, 9),
1095
- 'amount' => $amount,
1096
- 'individual_use' => false,
1097
- 'product_ids' => array(),
1098
- 'exclude_product_ids' => array(),
1099
- 'usage_limit' => '',
1100
- 'usage_limit_per_user' => '',
1101
- 'limit_usage_to_x_items' => '',
1102
- 'usage_count' => '',
1103
- 'expiry_date' => '',
1104
- 'apply_before_tax' => 'yes',
1105
- 'free_shipping' => false,
1106
- 'product_categories' => array(),
1107
- 'exclude_product_categories' => array(),
1108
- 'exclude_sale_items' => false,
1109
- 'minimum_amount' => '',
1110
- 'maximum_amount' => '',
1111
- 'customer_email' => '',
1112
- );
1113
- if(FlycartWoocommerceVersion::wcVersion('3.2')) {
1114
- $coupon['discount_type'] = $discount_type;
1115
- } else {
1116
- $coupon['type'] = $discount_type;
1117
- }
1118
- return $coupon;
1119
- }
1120
- }
1121
-
1122
- return $response;
1123
- }
1124
-
1125
- /**
1126
- * Get promotion messages
1127
- * */
1128
- public static function getPromotionMessages(){
1129
- return FlycartWoocommerceSession::getSession('woo_discount_promotion_messages_cart', array());
1130
- }
1131
-
1132
- /**
1133
- * Clear promotion messages
1134
- * */
1135
- public static function clearCartPromotionMessages(){
1136
- FlycartWoocommerceSession::setSession('woo_discount_promotion_messages_cart', array());
1137
- }
1138
-
1139
- /**
1140
- * Set messages
1141
- * */
1142
- public static function setPromotionMessage($message, $rule_id = '', $type = 'cart'){
1143
- $messages = FlycartWoocommerceSession::getSession('woo_discount_promotion_messages_'.$type, array());
1144
- if(!is_array($messages)) $messages = array();
1145
- if(!empty($messages) && in_array($message, $messages)){
1146
- } else {
1147
- if(empty($rule_id)){
1148
- $messages[] = $message;
1149
- } else {
1150
- $messages[$rule_id] = $message;
1151
- }
1152
- }
1153
-
1154
- FlycartWoocommerceSession::setSession('woo_discount_promotion_messages_'.$type, $messages);
1155
- }
1156
-
1157
- /**
1158
- * Set messages
1159
- * */
1160
- public static function removePromotionMessage($rule_id, $type = 'cart'){
1161
- $messages = FlycartWoocommerceSession::getSession('woo_discount_promotion_messages_'.$type, array());
1162
- if(is_array($messages) && !empty($messages)){
1163
- if(isset($messages[$rule_id])){
1164
- unset($messages[$rule_id]);
1165
- }
1166
- }
1167
-
1168
- FlycartWoocommerceSession::setSession('woo_discount_promotion_messages_'.$type, $messages);
1169
- }
1170
-
1171
- /**
1172
- * Display promotional messages
1173
- * */
1174
- public static function displayPromotionMessages(){
1175
- $messages = self::getPromotionMessages();
1176
- if(!empty($messages) && is_array($messages)){
1177
- foreach ($messages as $message){
1178
- wc_print_notice($message, "notice");
1179
- }
1180
- }
1181
- }
1182
-
1183
- /**
1184
- * Display promotional message in check out while processing order review
1185
- * */
1186
- public static function displayPromotionMessagesInCheckout(){
1187
- echo "<div id='wdr_checkout_promotion_messages_data'>";
1188
- self::displayPromotionMessages();
1189
- echo "</div>";
1190
- echo "<script>";
1191
- echo "jQuery('#wdr_checkout_promotion_messages').html(jQuery('#wdr_checkout_promotion_messages_data').html());jQuery('#wdr_checkout_promotion_messages_data').remove()";
1192
- echo "</script>";
1193
- }
1194
-
1195
- /**
1196
- * Load outer div for displaying promotional message in check out
1197
- * */
1198
- public static function displayPromotionMessagesInCheckoutContainer(){
1199
- echo "<div id='wdr_checkout_promotion_messages'>";
1200
- echo "</div>";
1201
- }
1202
-
1203
- /**
1204
- * Get calculated item subtotal manually
1205
- *
1206
- * @param $rule array
1207
- * @return int/float
1208
- * */
1209
- public static function get_calculated_item_subtotal_manually($rule = array()){
1210
- global $woocommerce;
1211
- $sub_total = 0;
1212
- if(count($woocommerce->cart->cart_contents)){
1213
- foreach ($woocommerce->cart->cart_contents as $key => $cartItem) {
1214
- $calculate_sub_total = apply_filters('woo_discount_rules_skip_item_to_calculate_subtotal_for_price_rules', true, $cartItem, $rule);
1215
- if($calculate_sub_total === true){
1216
- $sub_total += FlycartWooDiscountRulesCartRules::getSubTotalOfCartItem($cartItem);
1217
- }
1218
- }
1219
- }
1220
-
1221
- return $sub_total;
1222
- }
1223
-
1224
- /**
1225
- * Create nonce for v1
1226
- * @param int $action
1227
- * @return mixed
1228
- */
1229
- public static function createNonce($action = -1){
1230
- return wp_create_nonce($action);
1231
- }
1232
-
1233
- /**
1234
- * Verify nonce
1235
- * @param $nonce
1236
- * @param int $action
1237
- * @return bool
1238
- */
1239
- protected static function verifyNonce($nonce, $action = -1 ){
1240
- if (wp_verify_nonce($nonce, $action)){
1241
- return true;
1242
- } else {
1243
- return false;
1244
- }
1245
- }
1246
-
1247
- /**
1248
- * check valid nonce for v1
1249
- * @param $method
1250
- * @param null $wdr_nonce
1251
- * @return bool
1252
- */
1253
- public static function validateRequest($method, $wdr_nonce = null){
1254
- if($wdr_nonce === null){
1255
- if(isset($_REQUEST['wdr_nonce']) && !empty($_REQUEST['wdr_nonce'])){
1256
- if(self::verifyNonce(wp_unslash($_REQUEST['wdr_nonce']), $method)){
1257
- return true;
1258
- }
1259
- }
1260
- } else {
1261
- if(self::verifyNonce(wp_unslash($wdr_nonce), $method)){
1262
- return true;
1263
- }
1264
- }
1265
-
1266
- die(__('Invalid token', 'woo-discount-rules'));
1267
- }
1268
-
1269
- /**
1270
- * Has admin privilage to change rule data
1271
- * @return bool
1272
- */
1273
- public static function hasAdminPrivilege(){
1274
- if (current_user_can( 'manage_woocommerce' )) {
1275
- return true;
1276
- } else {
1277
- return false;
1278
- }
1279
- }
1280
- }
1281
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
v1/helper/purchase.php DELETED
@@ -1,323 +0,0 @@
1
- <?php
2
- if (!defined('ABSPATH')) exit; // Exit if accessed directly
3
- /**
4
- * Class FlycartWooDiscountRulesPurchase
5
- */
6
- if ( ! class_exists( 'FlycartWooDiscountRulesPurchase' ) ) {
7
- class FlycartWooDiscountRulesPurchase
8
- {
9
-
10
- /**
11
- * @var
12
- */
13
- private $user;
14
- private $slug='woo-discount-rules';
15
- private $force_license_check=false;
16
-
17
- public $pluginName;
18
- public $siteURL = 'https://www.flycart.org/';
19
-
20
- /**
21
- * FlycartWooDiscountRulesPurchase constructor.
22
- */
23
- public function __construct()
24
- {
25
- $this->pluginName = esc_html__('Woo Discount Rules', 'woo-discount-rules').' '.$this->getProText();
26
- }
27
-
28
- public function init()
29
- {
30
-
31
- $force_update = 0;
32
- // If a plugin has both a valid license and is using a CORE version then force update
33
- if ( $this->isPro() === false && $this->validateLicenseKey() ) {
34
- // can upgrade to PRO
35
- $force_update = 1;
36
- }
37
- $existing_force_update_value = get_option($this->slug.'-force-update-pro', null);
38
- $option_exists = ($existing_force_update_value !== null);
39
-
40
- if($option_exists){
41
- if($existing_force_update_value != $force_update){
42
- update_option($this->slug.'-force-update-pro', $force_update);
43
- }
44
- }
45
- else {
46
- add_option($this->slug.'-force-update-pro', $force_update);
47
- }
48
- }
49
-
50
- public function errorNoticeInAdminPages(){
51
- $pro = $this->isPro();
52
- $base = new FlycartWooDiscountBase();
53
- $config = $base->getBaseConfig();
54
- if (is_string($config)) $config = json_decode($config, true);
55
- $htmlPrefix = '<div class="notice notice-warning"><p>';
56
- $htmlSuffix = '</p></div>';
57
- $hasMessage = 0;
58
- if($pro){
59
- if ( isset( $config['license_key'] ) && !empty($config['license_key']) ) {
60
- $verifiedLicense = get_option('woo_discount_rules_verified_key', 0);
61
- if(!$verifiedLicense){
62
- $msg = esc_html__('The license key for ', 'woo-discount-rules').$this->pluginName.' '.esc_html__('seems invalid.', 'woo-discount-rules').' <a href="admin.php?page=woo_discount_rules&tab=settings">'.esc_html__('Please enter a valid license key', 'woo-discount-rules').'</a>. '.esc_html__('You can get it from', 'woo-discount-rules').' <a href="'.$this->siteURL.'">'.esc_html__('our website', 'woo-discount-rules').'</a>.';
63
- $hasMessage = 1;
64
- }
65
- } else {
66
- $msg = esc_html__('License key for the ', 'woo-discount-rules').$this->pluginName.' '.esc_html__('is not entered.', 'woo-discount-rules').' <a href="admin.php?page=woo_discount_rules&tab=settings">'.esc_html__('Please enter a valid license key', 'woo-discount-rules').'</a>. '.esc_html__('You can get it from', 'woo-discount-rules').' <a href="'.$this->siteURL.'">'.esc_html__('our website', 'woo-discount-rules').'</a>.';
67
- $hasMessage = 1;
68
- }
69
- } else {
70
- if ( isset( $config['license_key'] ) && !empty($config['license_key']) ) {
71
- $verifiedLicense = get_option('woo_discount_rules_verified_key', 0);
72
- if($verifiedLicense){
73
- $msg = $this->pluginName.esc_html__(': You are using CORE version. Please Update to PRO version.', 'woo-discount-rules');
74
- $hasMessage = 1;
75
- }
76
- }
77
- }
78
- if($hasMessage){
79
- echo $htmlPrefix.$msg.$htmlSuffix;
80
- }
81
- }
82
-
83
-
84
- /**
85
- * @return bool
86
- */
87
- public function isPro()
88
- {
89
- return false;
90
- }
91
-
92
- /**
93
- * @return string
94
- */
95
- public function getSuffix()
96
- {
97
- return esc_html__('-PRO-', 'woo-discount-rules');
98
- }
99
-
100
- /**
101
- * @return string
102
- */
103
- public function getProText()
104
- {
105
- if($this->isPro()){
106
- return esc_html__('Pro', 'woo-discount-rules');
107
- } else {
108
- return esc_html__('Core', 'woo-discount-rules');
109
- }
110
- }
111
-
112
- /**
113
- * Hook to check and display updates below plugin in Admin Plugins section
114
- * This plugin checks for license key validation and displays error notices
115
- * @param string $plugin_file our plugin file
116
- * @param string $plugin_data Plugin details
117
- * @param string $status
118
- * */
119
- function woodisc_after_plugin_row ( $plugin_file, $plugin_data, $status ){
120
- if( isset($plugin_data['TextDomain']) && $plugin_data['TextDomain'] == 'woo-discount-rules' ){
121
- if ( ! $this->isPro() ) {
122
- return;
123
- }
124
-
125
- // TODO: based on plugin_data display the update info text too. We can also make the subscription expiry chk in same request
126
- // and display just the notice as a warning
127
-
128
- $base = new FlycartWooDiscountBase();
129
- $config = $base->getBaseConfig();
130
- if (is_string($config)) $config = json_decode($config, true);
131
-
132
- if ( isset( $config['license_key'] ) && !empty($config['license_key']) ) {
133
- if (!$this->validateLicenseKey()) {
134
- $message = esc_html__('The license key for ', 'woo-discount-rules').$this->pluginName.' '.esc_html__('seems invalid.', 'woo-discount-rules').' <a href="admin.php?page=woo_discount_rules&tab=settings">'.esc_html__('Please enter a valid license key', 'woo-discount-rules').'</a>. '.esc_html__('You can get it from', 'woo-discount-rules').' <a href="'.$this->siteURL.'">'.esc_html__('our website', 'woo-discount-rules').'</a>.';
135
- }
136
- }else{
137
- $message = esc_html__('License key for the ', 'woo-discount-rules').$this->pluginName.' '.esc_html__('is not entered.', 'woo-discount-rules').' <a href="admin.php?page=woo_discount_rules&tab=settings">'.esc_html__('Please enter a valid license key', 'woo-discount-rules').'</a>. '.esc_html__('You can get it from', 'woo-discount-rules').' <a href="'.$this->siteURL.'">'.esc_html__('our website', 'woo-discount-rules').'</a>.';
138
- }
139
-
140
- if (!empty($message)) {
141
- // If an update is available ?
142
- // prevent update if error occurs
143
- echo '<tr>';
144
- echo '<td> </td>';
145
- echo '<td colspan="2"> <div class="notice-message error inline notice-error notice-alt"><p>'.$message.'</p></div></td>';
146
- echo '</tr>';
147
- }
148
-
149
- if(empty($plugin_data['package']) && !empty($plugin_data['upgrade_notice'])){
150
- echo '<tr class="plugin-update-tr active" data-slug="woo-discount-rules">';
151
- echo '<td class="plugin-update colspanchange" colspan="3"> <div class="notice inline notice-warning notice-alt"><p>'.$plugin_data['upgrade_notice'].'</p></div></td>';
152
- echo '</tr>';
153
- }
154
- }
155
-
156
- }
157
-
158
- /**
159
- * Ajax request for license key validation
160
- * */
161
- public function forceValidateLicenseKey()
162
- {
163
- $postData = \FlycartInput\FInput::getInstance();
164
- $request = $postData->getArray();
165
- $params = array();
166
- if (!isset($request['data'])) return false;
167
- parse_str($request['data'], $params);
168
- $resp = array();
169
- if(isset($params['wdr_nonce']) && !empty($params['wdr_nonce'])) {
170
- if (FlycartWooDiscountRulesGeneralHelper::hasAdminPrivilege()) {
171
- if (FlycartWooDiscountRulesGeneralHelper::validateRequest('wdr_save_rule_config', $params['wdr_nonce'])) {
172
- $this->force_license_check = true;
173
-
174
- if (empty($params['license_key'])) {
175
- $resp['error'] = esc_html__('Please enter a valid license key', 'woo-discount-rules');
176
- echo json_encode( $resp );
177
- die();
178
- }
179
-
180
- $base = new FlycartWooDiscountBase();
181
- $base->saveConfig(1);
182
-
183
- if ( $this->validateLicenseKey() ) {
184
- $resp['success'] = esc_html__('License key check : Passed.', 'woo-discount-rules');
185
- // TODO: passed tick mark with a flag
186
- } else {
187
- // return an error
188
- $resp['error'] = esc_html__('License key seems to be Invalid. Please enter a valid license key', 'woo-discount-rules');
189
- }
190
- }
191
- }
192
- }
193
-
194
- echo json_encode( $resp );
195
- die();
196
- }
197
-
198
- public function validateLicenseKey()
199
- {
200
- $run = $this->doIHaveToRunValidateLicense();
201
-
202
- $already_check = get_option('woo_discount_rules_verified_key', 0);
203
-
204
- $cache_license_check = ( $already_check == 1 ) ? true : false ;
205
-
206
- if($run){
207
- $base = new FlycartWooDiscountBase();
208
- $config = $base->getBaseConfig();
209
- if (is_string($config)) $config = json_decode($config, true);
210
- if ( isset( $config['license_key'] ) && !empty($config['license_key']) ) {
211
-
212
- // check the license
213
- $license_url = $this->getUpdateURL('licensecheck');
214
- $result = wp_remote_get( $license_url , array());
215
-
216
- //Try to parse the json response
217
- $status = $this->validateApiResponse($result);
218
- $metadata = null;
219
-
220
- update_option('woo_discount_rules_num_runs', get_option('woo_discount_rules_num_runs',1)+1);
221
-
222
- if ( !is_wp_error($status) ){
223
- $json = json_decode( $result['body'] );
224
- if ( is_object($json) && isset($json->license_check)) {
225
- update_option('woo_discount_rules_updated_time', time());
226
- $verified = (bool)$json->license_check;
227
- if($verified){
228
- update_option('woo_discount_rules_verified_key', 1);
229
- } else {
230
- update_option('woo_discount_rules_verified_key', 0);
231
- }
232
- return $verified;
233
- }
234
- }
235
- }
236
- }
237
- return $cache_license_check;
238
- }
239
-
240
- /**
241
- * Check to run validate license check
242
- * */
243
- protected function doIHaveToRunValidateLicense()
244
- {
245
- $option_exists = (get_option('woo_discount_rules_updated_time', null) !== null);
246
-
247
- if(!$option_exists){
248
- add_option('woo_discount_rules_updated_time', 0);
249
- add_option('woo_discount_rules_verified_key', 0);
250
- add_option('woo_discount_rules_num_runs',0);
251
- }
252
- $lastRunUnix = get_option('woo_discount_rules_updated_time', 0);
253
- $lastRunCount = get_option('woo_discount_rules_num_runs', 0);
254
- $nextRunUnix = $lastRunUnix;
255
-
256
- $hours = 12;
257
- $countLimit = 8;
258
-
259
- $nextRunUnix += $hours * 3600;
260
- $now = time();
261
-
262
- $time_factor = (bool) ($now >= $nextRunUnix );
263
- $count_factor = (bool) ($lastRunCount < $countLimit);
264
-
265
- if ($time_factor && !$count_factor) {
266
- update_option('woo_discount_rules_num_runs', 0);
267
- }
268
-
269
- $already_valid_check = get_option('woo_discount_rules_verified_key', false);
270
-
271
- return (($time_factor && $count_factor && $already_valid_check) || $this->force_license_check );
272
- }
273
-
274
- public function getUpdateURL($type='updatecheck')
275
- {
276
- $update_url = 'https://www.flycart.org/?wpaction='.$type.'&wpslug='.$this->slug;
277
- $purchase_helper = new FlycartWooDiscountRulesPurchase();
278
- $update_url .= '&pro='.(int)$purchase_helper->isPro();
279
- $dlid = '';
280
- $base = new FlycartWooDiscountBase();
281
- $config = $base->getBaseConfig();
282
- if (is_string($config)) $config = json_decode($config);
283
- $dlid = isset($config->license_key)? $config->license_key: null;
284
- if ( !empty($dlid) ) {
285
- $update_url .= '&dlid='.$dlid;
286
- }
287
- return $update_url;
288
- }
289
-
290
- /**
291
- * Check if $result is a successful update API response.
292
- *
293
- * @param array|WP_Error $result
294
- * @return true|WP_Error
295
- */
296
- protected function validateApiResponse($result) {
297
- if ( is_wp_error($result) ) { /** @var WP_Error $result */
298
- return new WP_Error($result->get_error_code(), 'WP HTTP Error: ' . $result->get_error_message());
299
- }
300
-
301
- if ( !isset($result['response']['code']) ) {
302
- return new WP_Error(
303
- 'puc_no_response_code',
304
- 'wp_remote_get() returned an unexpected result.'
305
- );
306
- }
307
-
308
- if ( $result['response']['code'] !== 200 ) {
309
- return new WP_Error(
310
- 'puc_unexpected_response_code',
311
- 'HTTP response code is ' . $result['response']['code'] . ' (expected: 200)'
312
- );
313
- }
314
-
315
- if ( empty($result['body']) ) {
316
- return new WP_Error('puc_empty_response', 'The metadata file appears to be empty.');
317
- }
318
-
319
- return true;
320
- }
321
-
322
- }
323
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
v1/helper/woo-function.php DELETED
@@ -1,923 +0,0 @@
1
- <?php
2
- if (!defined('ABSPATH')) exit; // Exit if accessed directly
3
-
4
- if(!class_exists('FlycartWoocommerceVersion')){
5
- class FlycartWoocommerceVersion{
6
- /**
7
- * @param $version
8
- * @return bool|mixed
9
- */
10
- public static function wcVersion($version)
11
- {
12
- if (defined('WC_VERSION') && WC_VERSION) {
13
- return version_compare(WC_VERSION, $version, '>=');
14
- } else if (defined('WOOCOMMERCE_VERSION') && WOOCOMMERCE_VERSION) {
15
- return version_compare(WOOCOMMERCE_VERSION, $version, '>=');
16
- } else {
17
- return false;
18
- }
19
- }
20
-
21
- /**
22
- * backwardCompatibilityStringToArray
23
- * @param $data
24
- * @return array
25
- * */
26
- public static function backwardCompatibilityStringToArray($data)
27
- {
28
- if(!empty($data) && !is_array($data)) $data = explode(',', $data);
29
-
30
- return $data;
31
- }
32
-
33
- /**
34
- * Is WooCommerce version 3x
35
- * @return boolean
36
- * */
37
- public static function isWCVersion3x(){
38
- return self::wcVersion('3.0');
39
- }
40
- }
41
- }
42
-
43
- if(!class_exists('FlycartWoocommerceProduct')){
44
- class FlycartWoocommerceProduct{
45
-
46
- protected static $products = array();
47
- protected static $products_categories = array();
48
- protected static $products_variants = array();
49
- protected static $product_children = array();
50
- protected static $taxonomy_term_name = array();
51
-
52
- /**
53
- * Get WooCommerce product
54
- *
55
- * @access public
56
- * @param int $product_id
57
- * @return object
58
- */
59
- public static function wc_get_product($product_id)
60
- {
61
- if(isset(self::$products[$product_id])){} else {
62
- $product = FlycartWoocommerceVersion::wcVersion('2.2') ? wc_get_product($product_id) : get_product($product_id);
63
- if(empty($product)){
64
- if(class_exists('WC_Product_Simple')){
65
- $product = new WC_Product_Simple();
66
- }
67
- }
68
- self::$products[$product_id] = $product;
69
- }
70
-
71
- return self::$products[$product_id];
72
- }
73
-
74
- /**
75
- * String to upper
76
- *
77
- * @param $string string
78
- * @return string
79
- * */
80
- public static function wc_strtoupper($string){
81
- if(function_exists('')){
82
- return wc_strtoupper($string);
83
- } else {
84
- return strtoupper($string);
85
- }
86
- }
87
-
88
- /**
89
- * Get WooCommerce product format name
90
- *
91
- * @access public
92
- * @param array $product
93
- * @return int
94
- */
95
- public static function get_formatted_name($product)
96
- {
97
- if(FlycartWoocommerceVersion::wcVersion('3.0') || method_exists($product , 'get_formatted_name')){
98
- return $product->get_formatted_name();
99
- } else {
100
- $post_id = self::get_id($product);
101
- return '#' . $post_id . ' ' . get_the_title($post_id);
102
- }
103
- }
104
-
105
- /**
106
- * Get WooCommerce product id
107
- *
108
- * @access public
109
- * @param array $product
110
- * @return int
111
- */
112
- public static function get_id($product)
113
- {
114
- if(FlycartWoocommerceVersion::wcVersion('3.0') || method_exists($product , 'get_id')){
115
- return $product->get_id();
116
- } else {
117
- $_product_id = $product->id;
118
- if(isset($product->variation_id)) $_product_id = $product->variation_id;
119
- return $_product_id;
120
- }
121
- }
122
-
123
- /**
124
- * Get WooCommerce price
125
- *
126
- * @access public
127
- * @param float $amount
128
- * @param array $args
129
- * @return int/float
130
- */
131
- public static function wc_price($amount, $args = array()){
132
- return FlycartWoocommerceVersion::wcVersion('2.1') ? wc_price($amount, $args) : woocommerce_price($amount, $args);
133
- }
134
-
135
- /**
136
- * Get WooCommerce price html
137
- *
138
- * @access public
139
- * @param array $product
140
- * @return int/float
141
- */
142
- public static function get_price_html($product){
143
- return FlycartWoocommerceVersion::wcVersion('3.0') ? $product->get_price_html() : $product->get_price_html();
144
- }
145
-
146
- //get_price_html
147
-
148
- /**
149
- * Get WooCommerce product parent id
150
- *
151
- * @access public
152
- * @param array $product
153
- * @return int
154
- */
155
- public static function get_parent_id($product){
156
- if(FlycartWoocommerceVersion::wcVersion('3.0') || method_exists($product, 'get_parent_id')){
157
- return $product->get_parent_id();
158
- } else {
159
- if(isset($product->parent) && !empty($product->parent)){
160
- if(isset($product->parent->id)){
161
- return $product->parent->id;
162
- }
163
- }
164
- return $product->parent_id;
165
- }
166
- }
167
-
168
- /**
169
- * Get WooCommerce product children
170
- *
171
- * @access public
172
- * @param array $product
173
- * @return array
174
- */
175
- public static function get_children($product){
176
- $product_id = self::get_id($product);
177
- if(isset(self::$product_children[$product_id])){} else {
178
- if(FlycartWoocommerceVersion::wcVersion('3.0') || method_exists($product, 'get_children')){
179
- self::$product_children[$product_id] = $product->get_children();
180
- } else {
181
- if(isset($product->children)){
182
- self::$product_children[$product_id] = $product->children;
183
- }
184
- self::$product_children[$product_id] = '';
185
- }
186
- }
187
-
188
- return self::$product_children[$product_id];
189
- }
190
-
191
- /**
192
- * Get WooCommerce product name
193
- *
194
- * @access public
195
- * @param array $product
196
- * @return int/float
197
- */
198
- public static function get_name($product){
199
- return FlycartWoocommerceVersion::wcVersion('3.0') ? $product->get_name() : $product->name;
200
- }
201
-
202
- /**
203
- * Get WooCommerce product price
204
- *
205
- * @access public
206
- * @param array $product
207
- * @return int/float
208
- */
209
- public static function get_price($product, $cart_rule = false){
210
- if($cart_rule === false){
211
- $do_discount_from_regular_price = FlycartWooDiscountRulesGeneralHelper::applyDiscountFromRegularPrice();
212
- if($do_discount_from_regular_price){
213
- if(method_exists($product, 'get_type')){
214
- if($product->get_type() != 'variable'){
215
- return self::get_regular_price($product);
216
- }
217
- } else {
218
- return self::get_regular_price($product);
219
- }
220
-
221
- }
222
- }
223
-
224
- $price = FlycartWoocommerceVersion::wcVersion('3.0') ? $product->get_price() : $product->price;
225
- $price = floatval($price);
226
-
227
- return $price;
228
- }
229
-
230
- /**
231
- * Get WooCommerce product regular price
232
- *
233
- * @access public
234
- * @param array $product
235
- * @return int/float
236
- */
237
- public static function get_regular_price($product){
238
- $price = FlycartWoocommerceVersion::wcVersion('3.0') ? $product->get_regular_price() : $product->regular_price;
239
- $price = floatval($price);
240
- return $price;
241
- }
242
-
243
- /**
244
- * Get WooCommerce product sale price
245
- *
246
- * @access public
247
- * @param array $product
248
- * @return int/float
249
- */
250
- public static function get_sale_price($product){
251
- return FlycartWoocommerceVersion::wcVersion('3.0') ? $product->get_sale_price() : $product->sale_price;
252
- }
253
-
254
- /**
255
- * Set WooCommerce product price
256
- *
257
- * @access public
258
- * @param array $product
259
- */
260
- public static function set_price($product, $amount){
261
- if(FlycartWoocommerceVersion::wcVersion('3.0')){
262
- $product->set_price($amount);
263
- } else {
264
- $product->price = $amount;
265
- }
266
- }
267
-
268
- /**
269
- * Is product is on sale
270
- *
271
- * @access public
272
- * @param array $product
273
- * @return boolean
274
- */
275
- public static function is_product_is_on_sale($product)
276
- {
277
- $sale_price = self::get_sale_price($product);
278
- if($sale_price > 0){
279
- $on_sale = true;
280
- if(method_exists($product, 'get_date_on_sale_from')){
281
- if ( $product->get_date_on_sale_from() && $product->get_date_on_sale_from()->getTimestamp() > current_time( 'timestamp', true ) ) {
282
- $on_sale = false;
283
- }
284
- }
285
- if(method_exists($product, 'get_date_on_sale_to')){
286
- if ( $product->get_date_on_sale_to() && $product->get_date_on_sale_to()->getTimestamp() < current_time( 'timestamp', true ) ) {
287
- $on_sale = false;
288
- }
289
- }
290
-
291
- return $on_sale;
292
- }
293
-
294
- return false;
295
- }
296
-
297
- /**
298
- * Get product price including tax
299
- *
300
- * @access public
301
- * @param object $product
302
- * @param int $quantity
303
- * @param float $price
304
- * @return int
305
- */
306
- public static function get_price_including_tax($product, $quantity = 1, $price = '')
307
- {
308
- return FlycartWoocommerceVersion::wcVersion('3.0') ? wc_get_price_including_tax($product, array('qty' => $quantity, 'price' => $price)) : $product->get_price_including_tax($quantity, $price);
309
- }
310
-
311
- /**
312
- * Get product price excluding tax
313
- *
314
- * @access public
315
- * @param object $product
316
- * @param int $quantity
317
- * @param float $price
318
- * @return float
319
- */
320
- public static function get_price_excluding_tax($product, $quantity = 1, $price = '')
321
- {
322
- return FlycartWoocommerceVersion::wcVersion('3.0') ? wc_get_price_excluding_tax($product, array('qty' => $quantity, 'price' => $price)) : $product->get_price_excluding_tax($quantity, $price);
323
- }
324
-
325
- //wc_get_price_excluding_tax
326
-
327
- /**
328
- * Get WooCommerce product title
329
- *
330
- * @access public
331
- * @param array $product
332
- * @return string
333
- */
334
- public static function get_title($product){
335
- if(FlycartWoocommerceVersion::wcVersion('3.0') || method_exists($product , 'get_title')){
336
- if(method_exists($product, 'get_formatted_name')){
337
- return $product->get_formatted_name();
338
- } else {
339
- return $product->get_title();
340
- }
341
- } else if(isset($product->title)){
342
- return $product->title;
343
- } else {
344
- if(isset($product->post->post_title))
345
- return $product->post->post_title;
346
- }
347
- return '';
348
- }
349
-
350
- /**
351
- * Get WooCommerce product get_permalink
352
- *
353
- * @access public
354
- * @param array $product
355
- * @return string
356
- */
357
- public static function get_permalink($product){
358
- if(FlycartWoocommerceVersion::wcVersion('3.0') || method_exists($product , 'get_permalink')){
359
- return $product->get_permalink();
360
- } else if(isset($product->get_permalink) && $product->get_permalink != ''){
361
- return $product->get_permalink;
362
- } else {
363
- return get_permalink(self::get_id($product));
364
- }
365
- }
366
-
367
- /**
368
- * Get WooCommerce product attributes
369
- *
370
- * @access public
371
- * @param array $product
372
- * @return array
373
- */
374
- public static function get_attributes($product){
375
- return FlycartWoocommerceVersion::wcVersion('3.0') ? $product->get_attributes() : $product->attributes;
376
- }
377
-
378
- /**
379
- * Get WooCommerce get_variant_ids
380
- *
381
- * @access public
382
- * @param int $product_id
383
- * @return array
384
- */
385
- public static function get_variant_ids($product_id)
386
- {
387
- if(isset(self::$products_variants[$product_id])){} else {
388
- $ids = array();
389
- $productV = new WC_Product_Variable( $product_id );
390
- $variations = $productV->get_available_variations();
391
- if(!empty($variations))
392
- foreach ($variations as $variation) {
393
- $ids[] = $variation['variation_id'];
394
- }
395
- self::$products_variants[$product_id] = $ids;
396
- }
397
-
398
- return self::$products_variants[$product_id];
399
- }
400
-
401
- /**
402
- * Check variation is visible in frontend
403
- *
404
- * @access public
405
- * @param object $product
406
- * @return boolean
407
- */
408
- public static function variation_is_visible_in_frontend($product)
409
- {
410
- $visible = true;
411
- if(method_exists($product, 'variation_is_visible')){
412
- $visible = $product->variation_is_visible();
413
- }
414
-
415
- return apply_filters('woo_discount_rules_variation_is_visible', $visible, $product);
416
- }
417
-
418
- /**
419
- * Get WooCommerce get_category_ids
420
- *
421
- * @access public
422
- * @param object $product
423
- * @return array
424
- */
425
- public static function get_category_ids($product)
426
- {
427
- if(!$product->is_type( 'simple' )) {
428
- $parent = self::get_parent_id($product);
429
- if($parent) $product = self::wc_get_product($parent);
430
- }
431
- $product_id = self::get_id($product);
432
- if(isset(self::$products_categories[$product_id])){} else {
433
- $cat_id = array();
434
- if(FlycartWoocommerceVersion::wcVersion('3.0') || method_exists($product, 'get_category_ids')){
435
- $cat_id = $product->get_category_ids();
436
- $cat_id = apply_filters('woo_discount_rules_load_additional_taxonomy', $cat_id, $product_id);
437
- } else {
438
- $terms = get_the_terms ( self::get_id($product), 'product_cat' );
439
- if(!empty($terms))
440
- foreach ( $terms as $term ) {
441
- $cat_id[] = $term->term_id;
442
- }
443
- }
444
- self::$products_categories[$product_id] = $cat_id;
445
- }
446
-
447
- return self::$products_categories[$product_id];
448
- }
449
-
450
- /**
451
- * Get category by id
452
- *
453
- * @access public
454
- * @param int $category_id
455
- * @return string
456
- */
457
- public static function get_product_category_by_id( $category_id ) {
458
- if(isset(self::$taxonomy_term_name[$category_id])){} else {
459
- $term_name = '';
460
- $taxonomies = apply_filters('woo_discount_rules_accepted_taxonomy_for_category', array('product_cat'));
461
- foreach ($taxonomies as $taxonomy){
462
- $term = get_term_by( 'id', $category_id, $taxonomy, 'ARRAY_A' );
463
- if(!empty($term['name'])){
464
- $term_name = $term['name'];
465
- break;
466
- }
467
- }
468
- self::$taxonomy_term_name[$category_id] = $term_name;
469
- }
470
-
471
- return self::$taxonomy_term_name[$category_id];
472
- }
473
-
474
- /*
475
- * Get WooCommerce get product select box
476
- *
477
- * @access public
478
- * @param object $products_list
479
- * @param string $name
480
- * @return string
481
- * */
482
- public static function getProductAjaxSelectBox($products_list, $name){
483
- $html = '';
484
- if(FlycartWoocommerceVersion::wcVersion('3.0')){
485
- $html .= '<select class="wc-product-search" style="min-width: 250px" multiple="multiple" name="'.$name.'[]" data-placeholder="'.esc_attr__( 'Search for a product&hellip;', 'woocommerce' ).'" data-action="woocommerce_json_search_products_and_variations">';
486
- if(!empty($products_list) && count($products_list))
487
- foreach ( $products_list as $product_id ) {
488
- $product = self::wc_get_product($product_id);
489
- if ( is_object( $product ) ) {
490
- $html .= '<option value="' . esc_attr( $product_id ) . '"' . selected( true, true, false ) . '>' . wp_kses_post( self::get_formatted_name($product) ) . '</option>';
491
- }
492
- }
493
- $html .= '</select>';
494
- } else {
495
- $html .= '<input type="hidden" class="wc-product-search" style="width: 250px" data-multiple="true" name="'.$name.'" data-placeholder="'.esc_attr__( 'Search for a product&hellip;', 'woocommerce' ).'" data-action="woocommerce_json_search_products_and_variations" data-selected="';
496
- $json_ids = array();
497
- if(!empty($products_list)){
498
- if(!is_array($products_list)) $products_list = explode(',', $products_list);
499
- if(!empty($products_list) && count($products_list)){
500
- foreach ( $products_list as $product_id ) {
501
- $product = self::wc_get_product( $product_id );
502
- if ( is_object( $product ) ) {
503
- $json_ids[ $product_id ] = wp_kses_post( self::get_formatted_name($product) );
504
- }
505
- }
506
- $html .= esc_attr( json_encode( $json_ids ) );
507
- }
508
- }
509
-
510
-
511
- $html .= '" value="'.implode( ',', array_keys( $json_ids ) ).'" /> ';
512
- }
513
-
514
- return $html;
515
- }
516
-
517
- /*
518
- * Get WooCommerce get product select box
519
- *
520
- * @access public
521
- * @param object $users_list
522
- * @param string $name
523
- * @return string
524
- * */
525
- public static function getUserAjaxSelectBox($users_list, $name){
526
- $html = '';
527
- if(FlycartWoocommerceVersion::wcVersion('3.0')){
528
- $html .= '<select class="wc-customer-search" style="width: 250px" multiple="multiple" name="'.$name.'[]" data-placeholder="'.esc_attr__( 'Search for a user&hellip;', 'woocommerce' ).'" data-allow_clear="true">';
529
-
530
- if(!empty($users_list) && count($users_list))
531
- foreach ( $users_list as $user_id ) {
532
- $user = get_userdata($user_id);
533
- if ( is_object( $user ) ) {
534
- $formattedName = $user->user_firstname.' '.$user->user_lastname.' (#'.$user->ID.' - '. $user->user_email.')';
535
- $html .= '<option value="' . esc_attr( $user_id ) . '"' . selected( true, true, false ) . '>' . wp_kses_post($formattedName) . '</option>';
536
- }
537
- }
538
- $html .= '</select>';
539
- } else {
540
- $html .= '<input type="hidden" class="wc-customer-search" style="width: 250px" data-multiple="true" name="'.$name.'" data-placeholder="'.esc_attr__( 'Search for a user&hellip;', 'woocommerce' ).'" data-allow_clear="true" data-selected="';
541
- $json_ids = array();
542
- if(!empty($users_list)){
543
- if(!is_array($users_list)) $users_list = explode(',', $users_list);
544
- if(!empty($users_list) && count($users_list)){
545
- foreach ( $users_list as $user_id ) {
546
- $user = get_userdata($user_id);
547
- if ( is_object( $user ) ) {
548
- $formattedName = $user->user_firstname.' '.$user->user_lastname.' (#'.$user->ID.' - '. $user->user_email.')';
549
- $json_ids[ $user_id ] = wp_kses_post( $formattedName );
550
- }
551
- }
552
- $html .= esc_attr( json_encode( $json_ids ) );
553
- }
554
- }
555
-
556
-
557
- $html .= '" value="'.implode( ',', array_keys( $json_ids ) ).'" /> ';
558
- }
559
-
560
- return $html;
561
- }
562
- }
563
- }
564
-
565
- if(!class_exists('FlycartWoocommerceCartProduct')){
566
- class FlycartWoocommerceCart{
567
- /**
568
- * Get cart
569
- *
570
- * @access public
571
- * @return array
572
- */
573
- public static function get_cart()
574
- {
575
- $load_cart_from_wc_object = apply_filters('woo_discount_rules_load_cart_from_woocommerce_object', true);
576
- if($load_cart_from_wc_object){
577
- if(!empty(WC()->cart)){
578
- return WC()->cart->get_cart();
579
- }
580
- } else {
581
- global $woocommerce;
582
- if(!empty($woocommerce->cart) && !empty($woocommerce->cart)){
583
- if(!empty($woocommerce->cart->cart_contents)){
584
- return $woocommerce->cart->cart_contents;
585
- }
586
- }
587
- }
588
-
589
- return array();
590
- }
591
-
592
- /**
593
- * Get cart object
594
- *
595
- * @return object
596
- */
597
- public static function get_cart_object()
598
- {
599
- return WC()->cart;
600
- }
601
-
602
- /**
603
- * Remove cart item
604
- *
605
- * @access public
606
- * @return boolean
607
- */
608
- public static function remove_cart_item($_cart_item_key)
609
- {
610
- return WC()->cart->remove_cart_item( $_cart_item_key );
611
- }
612
-
613
- /**
614
- * Add cart item
615
- *
616
- * @access public
617
- * @param int $product_id
618
- * @param int $quantity
619
- * @param int $variation_id
620
- * @param array $variation
621
- * @param array $cart_item_data
622
- * @return boolean
623
- */
624
- public static function add_to_cart($product_id = 0, $quantity = 1, $variation_id = 0, $variation = array(), $cart_item_data = array())
625
- {
626
- if(FlycartWoocommerceVersion::wcVersion('3.0')){
627
- return WC()->cart->add_to_cart( $product_id, $quantity, $variation_id, $variation, $cart_item_data);
628
- } else {
629
- ob_start();
630
- $addToCart = WC()->cart->add_to_cart( $product_id, $quantity, $variation_id, $variation, $cart_item_data);
631
- ob_end_flush();
632
- return $addToCart;
633
- }
634
- }
635
-
636
- /**
637
- * Get cart item
638
- *
639
- * @access public
640
- * @param string $cart_item_key
641
- * @return array
642
- */
643
- public static function get_cart_item($cart_item_key)
644
- {
645
- return WC()->cart->get_cart_item($cart_item_key);
646
- }
647
-
648
- /**
649
- * set quantity
650
- *
651
- * @access public
652
- * @param string $cart_item_key
653
- * @param int $quantity
654
- * @param boolean $refresh_totals
655
- * @return boolean
656
- */
657
- public static function set_quantity( $cart_item_key, $quantity = 1, $refresh_totals = true ){
658
- return WC()->cart->set_quantity($cart_item_key, $quantity, $refresh_totals);
659
- }
660
-
661
- /**
662
- * Remove coupon from cart
663
- *
664
- * @access public
665
- * @param string $code
666
- * @return boolean
667
- */
668
- public static function remove_coupon($code)
669
- {
670
- return WC()->cart->remove_coupon($code);
671
- }
672
- }
673
- }
674
-
675
- if(!class_exists('FlycartWoocommerceOrder')){
676
- class FlycartWoocommerceOrder{
677
- /**
678
- * Get order id
679
- *
680
- * @access public
681
- * @param object $order
682
- * @return int
683
- */
684
- public static function get_id($order)
685
- {
686
- FlycartWoocommerceVersion::wcVersion('3.0') ? $order->get_id() : $order->id;
687
- }
688
-
689
- /**
690
- * Get WooCommerce order
691
- *
692
- * @access public
693
- * @param int $order_id
694
- * @return object
695
- */
696
- public static function wc_get_order($order_id)
697
- {
698
- return FlycartWoocommerceVersion::wcVersion('2.2') ? wc_get_order($order_id) : new WC_Order($order_id);
699
- }
700
-
701
- /**
702
- * Get order total
703
- *
704
- * @access public
705
- * @param object $order
706
- * @return float
707
- */
708
- public static function get_total($order)
709
- {
710
- return FlycartWoocommerceVersion::wcVersion('3.0') ? $order->get_total() : $order->order_total;
711
- }
712
-
713
- /**
714
- * Get order billing_email
715
- *
716
- * @access public
717
- * @param object $order
718
- * @return float
719
- */
720
- public static function get_billing_email($order)
721
- {
722
- return FlycartWoocommerceVersion::wcVersion('3.0') ? $order->get_billing_email() : $order->billing_email;
723
- }
724
-
725
- /**
726
- * Get order billing city
727
- *
728
- * @access public
729
- * @param object $order
730
- * @return float
731
- */
732
- public static function get_billing_city($order)
733
- {
734
- return FlycartWoocommerceVersion::wcVersion('3.0') ? $order->get_billing_city() : $order->billing_city;
735
- }
736
-
737
- /**
738
- * Get order shipping state
739
- *
740
- * @access public
741
- * @param object $order
742
- * @return float
743
- */
744
- public static function get_shipping_state($order)
745
- {
746
- return FlycartWoocommerceVersion::wcVersion('3.0') ? $order->get_shipping_state() : $order->shipping_state;
747
- }
748
-
749
- /**
750
- * Get order shipping city
751
- *
752
- * @access public
753
- * @param object $order
754
- * @return float
755
- */
756
- public static function get_shipping_city($order)
757
- {
758
- return FlycartWoocommerceVersion::wcVersion('3.0') ? $order->get_shipping_city() : $order->shipping_city;
759
- }
760
-
761
- /**
762
- * Get order currency
763
- *
764
- * @access public
765
- * @param object $order
766
- * @return float
767
- */
768
- public static function get_currency($order)
769
- {
770
- return FlycartWoocommerceVersion::wcVersion('3.0') ? $order->get_currency() : $order->currency;
771
- }
772
-
773
- /**
774
- * Get order product ids
775
- *
776
- * @access public
777
- * @param object $order
778
- * @return array
779
- */
780
- public static function get_product_ids($order)
781
- {
782
- $items = $order->get_items();
783
- $productIds = array();
784
- if(!empty($items)){
785
- foreach ($items as $item){
786
- $product_id = FlycartWoocommerceVersion::wcVersion('3.0') ? $item->get_product_id() : $item['product_id'];
787
- $variant_id = FlycartWoocommerceVersion::wcVersion('3.0') ? $item->get_variation_id() : $item['variation_id'];
788
- if($variant_id){
789
- $productIds[] = $variant_id;
790
- } else {
791
- $productIds[] = $product_id;
792
- }
793
- }
794
- }
795
-
796
- return $productIds;
797
- }
798
-
799
- /**
800
- * Get order product quantities
801
- *
802
- * @access public
803
- * @param object $order
804
- * @return array
805
- */
806
- public static function get_product_quantities($order)
807
- {
808
- $items = $order->get_items();
809
- $productIds = array();
810
- if(!empty($items)){
811
- foreach ($items as $item){
812
- $product_id = FlycartWoocommerceVersion::wcVersion('3.0') ? $item->get_product_id() : $item['product_id'];
813
- $variant_id = FlycartWoocommerceVersion::wcVersion('3.0') ? $item->get_variation_id() : $item['variation_id'];
814
- $quantity = FlycartWoocommerceVersion::wcVersion('3.0') ? $item->get_quantity() : $item['quantity'];
815
- if($variant_id){
816
- $productId = $variant_id;
817
- } else {
818
- $productId = $product_id;
819
- }
820
- if(isset($productIds[$productId])){
821
- $productIds[$productId] = $productIds[$productId]+$quantity;
822
- } else {
823
- $productIds[$productId] = $quantity;
824
- }
825
- }
826
- }
827
-
828
- return $productIds;
829
- }
830
- }
831
- }
832
-
833
- if(!class_exists('FlycartWoocommerceCoupon')){
834
- class FlycartWoocommerceCoupon{
835
-
836
- /**
837
- * Get WooCommerce Coupon
838
- *
839
- * @access public
840
- * @param int $coupon_code
841
- * @return object
842
- */
843
- public static function wc_get_coupon($coupon_code)
844
- {
845
- return new WC_Coupon($coupon_code);
846
- }
847
-
848
- /**
849
- * Get Coupon individual_use
850
- *
851
- * @access public
852
- * @param object $coupon
853
- * @return boolean
854
- */
855
- public static function get_individual_use($coupon)
856
- {
857
- return FlycartWoocommerceVersion::wcVersion('3.0') ? $coupon->get_individual_use() : $coupon->individual_use;
858
- }
859
-
860
- /**
861
- * Get Coupon code
862
- *
863
- * @access public
864
- * @param object $coupon
865
- * @return boolean
866
- */
867
- public static function get_code($coupon)
868
- {
869
- return FlycartWoocommerceVersion::wcVersion('3.0') ? $coupon->get_code() : $coupon->code;
870
- }
871
- }
872
- }
873
-
874
- if(!class_exists('FlycartWoocommerceOrderItem')){
875
- class FlycartWoocommerceOrderItem{
876
- /**
877
- * Get order id
878
- *
879
- * @access public
880
- * @param object $order_item
881
- * @return integer
882
- */
883
- public static function get_order_id($order_item)
884
- {
885
- return FlycartWoocommerceVersion::wcVersion('3.0') ? $order_item->get_order_id() : $order_item->order_id;
886
- }
887
- }
888
- }
889
-
890
- if(!class_exists('FlycartWoocommerceSession')){
891
- class FlycartWoocommerceSession{
892
-
893
- /**
894
- * Get session value by key
895
- * @param $key
896
- * @param null $default
897
- * @return mixed
898
- */
899
- public static function getSession($key, $default = NULL)
900
- {
901
- if (function_exists('WC')) {
902
- if (method_exists(WC()->session, 'get')) {
903
- return WC()->session->get($key);
904
- }
905
- }
906
- return $default;
907
- }
908
-
909
- /**
910
- * set session value
911
- * @param $key string
912
- * @param $value mixed
913
- */
914
- public static function setSession($key, $value)
915
- {
916
- if (function_exists('WC')) {
917
- if (method_exists(WC()->session, 'set')) {
918
- WC()->session->set($key, $value);
919
- }
920
- }
921
- }
922
- }
923
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
v1/includes/cart-rules.php DELETED
@@ -1,2945 +0,0 @@
1
- <?php
2
- if (!defined('ABSPATH')) exit; // Exit if accessed directly
3
- include_once(WOO_DISCOUNT_DIR . '/helper/general-helper.php');
4
- include_once(WOO_DISCOUNT_DIR . '/includes/discount-base.php');
5
-
6
- /**
7
- * Class FlycartWooDiscountRulesCartRules
8
- */
9
- if (!class_exists('FlycartWooDiscountRulesCartRules')) {
10
- class FlycartWooDiscountRulesCartRules
11
- {
12
- /**
13
- * @var string
14
- */
15
- private $option_name = 'woo_discount_cart_option';
16
-
17
- /**
18
- * @var string
19
- */
20
- public $post_type = 'woo_discount_cart';
21
-
22
- /**
23
- * @var bool
24
- */
25
- public $discount_applied = false;
26
-
27
- /**
28
- * @var
29
- */
30
- private $rules;
31
-
32
- /**
33
- * @var
34
- */
35
- public $rule_sets;
36
-
37
- /**
38
- * @var array
39
- */
40
- public $cart_items;
41
-
42
- /**
43
- * @var
44
- */
45
- public $sub_total;
46
-
47
- /**
48
- * @var int
49
- */
50
- public $discount_total = 0;
51
- public $product_discount_total = 0;
52
-
53
- public $has_category_in_rule = false;
54
- public $has_product_specific_rule = false;
55
-
56
- /**
57
- * @var array
58
- */
59
- public $coupon_list;
60
-
61
- /**
62
- * @var string
63
- */
64
- public $coupon_code;
65
-
66
- /**
67
- * @var
68
- */
69
- public $matched_sets;
70
-
71
- public $matched_discounts;
72
-
73
- public $postData;
74
-
75
- public static $rules_loaded = 0;
76
- public static $cartRules;
77
-
78
- public $has_free_shipping = 0;
79
- public $has_free_shipping_rule = 0;
80
- public $bogo_coupon_codes = array();
81
- public static $applied_coupon = array();
82
-
83
- protected $checked_for_categories_and_product_match = false;
84
- protected $categories_and_product_match_value = false;
85
-
86
- protected static $added_bogo_product_ids = array();
87
-
88
- /**
89
- * FlycartWooDiscountRulesCartRules constructor.
90
- */
91
- public function __construct()
92
- {
93
- global $woocommerce;
94
-
95
- $this->postData = \FlycartInput\FInput::getInstance();
96
- $this->cart_items = (isset($woocommerce->cart->cart_contents) ? $woocommerce->cart->cart_contents : array());
97
- $this->calculateCartSubtotal();
98
- $this->coupon_list = (isset($woocommerce->cart->applied_coupons) ? $woocommerce->cart->applied_coupons : array());
99
-
100
- // Check for Remove Coupon Request.
101
- if (!is_null($this->postData->get('remove_coupon', null))) $this->removeWoocommerceCoupon($this->postData->get('remove_coupon'));
102
-
103
- // Update Coupon Code
104
- $this->coupon_code = strtolower($this->getCouponCode());
105
- }
106
-
107
- /**
108
- * Save Cart Configs.
109
- *
110
- * @param array $request bulk request data.
111
- * @return bool
112
- */
113
- public function save($request)
114
- {
115
- $result['status'] = 1;
116
- $result['message'] = esc_html__('Saved successfully', 'woo-discount-rules');
117
- foreach ($request as $index => $value) {
118
- if ($index !== 'discount_rule') {
119
- $request[$index] = FlycartWooDiscountRulesGeneralHelper::makeString($value);
120
- }
121
- }
122
-
123
- $id = (isset($request['rule_id']) ? $request['rule_id'] : false);
124
-
125
- $id = intval($id);
126
- if (!$id && $id != 0) return false;
127
- $title = $request['rule_name'] = (isset($request['rule_name']) ? str_replace('\'', '', $request['rule_name']) : 'New');
128
- $slug = str_replace(' ', '-', strtolower($title));
129
-
130
- // To Lowercase.
131
- $slug = strtolower($slug);
132
-
133
- // Encoding String with Space.
134
- $slug = str_replace(' ', '-', $slug);
135
-
136
- $request['rule_descr'] = (isset($request['rule_descr']) ? str_replace('\'', '', $request['rule_descr']) : '');
137
- $request['cart_discounted_products'] = (isset($request['cart_discounted_products'])) ? json_encode($request['cart_discounted_products']) : '{}';
138
- $form = array(
139
- 'rule_name',
140
- 'rule_descr',
141
- 'date_from',
142
- 'date_to',
143
- 'apply_to',
144
- 'discount_type',
145
- 'cart_discounted_products',
146
- 'product_discount_quantity',
147
- 'to_discount',
148
- 'discount_rule',
149
- 'dynamic_coupons_to_apply',
150
- 'rule_order',
151
- 'status',
152
- 'promotion_subtotal_from',
153
- 'promotion_message',
154
- 'wpml_language'
155
- );
156
- $coupons_used = array();
157
- if($request['discount_type'] == 'product_discount'){
158
- if(!empty($request['cart_discounted_products']) && !empty($request['product_discount_quantity'])){
159
- $coupon_code_text = apply_filters('woo_discount_rules_cart_bogo_coupon_code', '{{product_name}} X {{quantity}}');
160
- $cart_discounted_products = $request['cart_discounted_products'];
161
- if(is_string($request['cart_discounted_products'])){
162
- $cart_discounted_products = json_decode($request['cart_discounted_products']);
163
- }
164
- if(!empty($cart_discounted_products) && is_array($cart_discounted_products)){
165
- foreach ($cart_discounted_products as $product_id){
166
- $product = FlycartWoocommerceProduct::wc_get_product($product_id);
167
- if($product){
168
- $product_name = FlycartWoocommerceProduct::get_name($product);
169
- $coupons_used[] = self::formatBOGOCouponCode($product_name, $request['product_discount_quantity'], $product, $coupon_code_text);
170
- }
171
- }
172
- }
173
- }
174
- }
175
- $request['dynamic_coupons_to_apply'] = '';
176
- $coupon_keys = array('coupon_applied_any_one','coupon_applied_all_selected', 'create_dynamic_coupon');
177
- foreach ($request['discount_rule'] as $index => $value) {
178
- foreach ($coupon_keys as $coupon_key){
179
- if($coupon_key === 'create_dynamic_coupon' && !empty($value['create_dynamic_coupon'])){
180
- $validate_dynamic_coupon = FlycartWooDiscountRulesGeneralHelper::validateDynamicCoupon($value[$coupon_key]);
181
- $request['dynamic_coupons_to_apply'] = $result['create_dynamic_coupon'] = $validate_dynamic_coupon['coupon'];
182
- if($validate_dynamic_coupon['status'] === true){
183
- $request['discount_rule'][$index][$coupon_key] = $value[$coupon_key] = $validate_dynamic_coupon['coupon'];
184
- $coupons_used[] = $request['dynamic_coupons_to_apply'];
185
- } else {
186
- $result['status'] = 0;
187
- $result['message'] = esc_html__('Failed to save', 'woo-discount-rules');
188
- $result['error_message'] = $validate_dynamic_coupon['message'];
189
- $result['invalid_field'] = 'create_dynamic_coupon';
190
- if(defined('JSON_UNESCAPED_UNICODE')){
191
- echo json_encode($result, JSON_UNESCAPED_UNICODE);
192
- } else {
193
- echo json_encode($result);
194
- }
195
- die();
196
- }
197
- } else {
198
- if(isset($value[$coupon_key]) && !empty($value[$coupon_key])){
199
- if(is_array($value[$coupon_key])){
200
- $coupons_used = array_merge($coupons_used, $value[$coupon_key]);
201
- }
202
- }
203
- }
204
-
205
- }
206
- $request['discount_rule'][$index] = FlycartWooDiscountRulesGeneralHelper::makeString($value);
207
- }
208
- if ($id) {
209
- $post = array(
210
- 'ID' => $id,
211
- 'post_title' => $title,
212
- 'post_name' => $slug,
213
- 'post_content' => 'New Rule',
214
- 'post_type' => $this->post_type,
215
- 'post_status' => 'publish'
216
- );
217
- wp_update_post($post);
218
- } else {
219
- $post = array(
220
- 'post_title' => $title,
221
- 'post_name' => $slug,
222
- 'post_content' => 'New Rule',
223
- 'post_type' => $this->post_type,
224
- 'post_status' => 'publish'
225
- );
226
- $id = wp_insert_post($post);
227
- $request['status'] = 'publish';
228
- }
229
- $request['rule_order'] = FlycartWooDiscountRulesGeneralHelper::reOrderRuleIfExists($id, $request['rule_order'], $this->post_type);
230
-
231
- $product_keys = array('products_in_list','products_not_in_list');
232
- foreach ($request['discount_rule'] as $index => $value) {
233
- foreach ($product_keys as $product_key){
234
- if(isset($value[$product_key]) && !empty($value[$product_key])){
235
- if(is_array($value[$product_key])){
236
- $request['discount_rule'][$index]['product_variants'] = FlycartWooDiscountRulesPricingRules::getVariantsOfProducts($value[$product_key]);
237
- }
238
- }
239
- }
240
- }
241
-
242
- if (isset($request['discount_rule'])){
243
- if(defined('JSON_UNESCAPED_UNICODE')){
244
- $request['discount_rule'] = json_encode($request['discount_rule'], JSON_UNESCAPED_UNICODE);
245
- } else {
246
- $request['discount_rule'] = json_encode($request['discount_rule']);
247
- }
248
-
249
- }
250
-
251
- if (is_null($id) || !isset($id)) return false;
252
- FlycartWooDiscountRulesGeneralHelper::resetUsedCoupons($id, $coupons_used);
253
- $request['wpml_language'] = FlycartWooDiscountRulesGeneralHelper::getWPMLLanguage();
254
-
255
- foreach ($request as $index => $value) {
256
- //$value = sanitize_text_field($value);
257
- if (in_array($index, $form)) {
258
- if (get_post_meta($id, $index)) {
259
- update_post_meta($id, $index, $value);
260
- } else {
261
- add_post_meta($id, $index, $value);
262
- }
263
- }
264
- }
265
- if(defined('JSON_UNESCAPED_UNICODE')){
266
- echo json_encode($result, JSON_UNESCAPED_UNICODE);
267
- } else {
268
- echo json_encode($result);
269
- }
270
- }
271
-
272
- /**
273
- * Load View Data.
274
- *
275
- * @param $option
276
- * @param integer $id to load post.
277
- * @return string mixed response.
278
- */
279
- public function view($option, $id)
280
- {
281
- $id = intval($id);
282
- if (!$id) return false;
283
-
284
- $post = get_post($id, 'OBJECT');
285
- if (isset($post)) {
286
- if (isset($post->ID)) {
287
- $post->meta = get_post_meta($post->ID);
288
- }
289
- }
290
- return $post;
291
- }
292
-
293
- /**
294
- * List of Checklist.
295
- */
296
- public function checkPoint()
297
- {
298
- // Apply rules with products.
299
- // NOT YET USED.
300
- if ($this->discount_applied) return true;
301
- }
302
-
303
- /**
304
- * Load List of Rules.
305
- *
306
- * @return mixed
307
- */
308
- public function getRules($onlyCount = false)
309
- {
310
- if(self::$rules_loaded) return $this->rules = self::$cartRules;
311
-
312
- $post_args = array('post_type' => $this->post_type, 'numberposts' => '-1');
313
- $postData = \FlycartInput\FInput::getInstance();
314
- $request = $postData->getArray();
315
- if(is_admin() && isset($request['page']) && $request['page'] == 'woo_discount_rules'){
316
- $post_args['meta_key'] = 'rule_order';
317
- $post_args['orderby'] = 'meta_value_num';
318
- $post_args['order'] = 'DESC';
319
- if(isset($request['order']) && in_array($request['order'], array('asc', 'desc'))){
320
- if($request['order'] == 'asc') $post_args['order'] = 'ASC';
321
- }
322
- }
323
- $posts = get_posts($post_args);
324
-
325
- if ($onlyCount) return count($posts);
326
- if (isset($posts) && count($posts) > 0) {
327
- $wpml_language = FlycartWooDiscountRulesGeneralHelper::getWPMLLanguage();
328
- foreach ($posts as $index => $item) {
329
- $posts[$index]->meta = get_post_meta($posts[$index]->ID);
330
- if(!empty($wpml_language) && $wpml_language != 'all'){
331
- if(isset($posts[$index]->meta['wpml_language'])){
332
- if(isset($posts[$index]->meta['wpml_language']['0'])){
333
- if($posts[$index]->meta['wpml_language']['0'] != $wpml_language && $posts[$index]->meta['wpml_language']['0'] != '' && $posts[$index]->meta['wpml_language']['0'] != 'all') unset($posts[$index]);
334
- }
335
- }
336
- }
337
- }
338
-
339
- $this->rules = $posts;
340
- }
341
-
342
- self::$rules_loaded = 1;
343
- self::$cartRules = $posts;
344
-
345
- return $posts;
346
- }
347
-
348
- /**
349
- * To Analyzing the Pricing Rules to Apply the Discount in terms of price.
350
- */
351
- public function analyse($woocommerce, $free_shipping_check = 0)
352
- {
353
- global $woocommerce;
354
- if (!FlycartWooDiscountRulesGeneralHelper::haveToApplyTheRules()) return false;
355
- // Re-arranging the Rules.
356
- $this->organizeRules();
357
- // Apply Group of Rules.
358
- $this->applyRules();
359
- // Get Overall Discounts.
360
- $this->getDiscountAmount();
361
-
362
- //run an event
363
- do_action('woo_discount_rules_after_fetching_discount', $this);
364
- global $flycart_woo_discount_rules;
365
- $flycart_woo_discount_rules->cart_rules = $this;
366
-
367
- // Add a Coupon Virtually (Temporary access).
368
- if(!$free_shipping_check)
369
- if ($this->discount_total != 0) {
370
- add_filter('woocommerce_get_shop_coupon_data', array($this, 'addVirtualCoupon'), 10, 2);
371
- add_action('woocommerce_after_calculate_totals', array($this, 'applyFakeCoupons'), 10);
372
- }
373
- if($this->product_discount_total) {
374
- add_action('woocommerce_after_calculate_totals', array($this, 'applyFakeCouponsForBOGO'));
375
- add_filter('woocommerce_get_shop_coupon_data', array($this, 'addVirtualCouponForBOGO'), 10, 2);
376
- }
377
- }
378
-
379
- /**
380
- * To Make record of discount changes.
381
- *
382
- * @return bool
383
- */
384
- public function makeLog()
385
- {
386
- if (is_null($this->coupon_code) || empty($this->coupon_code)) return false;
387
-
388
- $discount_log = array(
389
- 'coupon_name' => $this->coupon_code,
390
- 'discount' => $this->discount_total,
391
- );
392
- WC()->session->set('woo_cart_discount', json_encode($discount_log));
393
- }
394
-
395
- /**
396
- * Virtually add Coupon to apply the Discount.
397
- *
398
- * @param array $response
399
- * @param string $coupon_data Existing Coupon
400
- * @return mixed
401
- */
402
- public function addVirtualCoupon($response, $coupon_data)
403
- {
404
- $coupon_code = $this->coupon_code;
405
- // Getting Coupon Remove status from Session.
406
- if(isset(WC()->session) && is_object(WC()->session) && method_exists(WC()->session, 'get')) {
407
- $is_removed = WC()->session->get('woo_coupon_removed', '');
408
- // If Both are same, then it won't added.
409
- if(!empty($is_removed)){
410
- if ($coupon_code == $is_removed) return $response;
411
- }
412
- }
413
-
414
- if ($coupon_data == $coupon_code || wc_strtolower($coupon_data) == wc_strtolower($coupon_code)) {
415
-
416
- if ($this->postData->get('remove_coupon', false) == $coupon_code) return false;
417
- $this->makeLog();
418
- $discount_type = 'fixed_cart';
419
- $amount = $this->discount_total;
420
- if(FlycartWoocommerceVersion::wcVersion('3.2')){
421
- // if(!$this->has_category_in_rule){
422
- $discount_type = 'percent';
423
- //To calculate the percent from total
424
- if($this->sub_total > 0) {
425
- $amount = ((100 * $this->discount_total) / $this->sub_total);
426
- }
427
- // }
428
- }
429
-
430
- $coupon = array(
431
- 'id' => 321123 . rand(2, 9),
432
- 'amount' => $amount,
433
- 'individual_use' => false,
434
- 'product_ids' => array(),
435
- 'exclude_product_ids' => array(),
436
- 'usage_limit' => '',
437
- 'usage_limit_per_user' => '',
438
- 'limit_usage_to_x_items' => '',
439
- 'usage_count' => '',
440
- 'expiry_date' => '',
441
- 'apply_before_tax' => 'yes',
442
- 'free_shipping' => false,
443
- 'product_categories' => array(),
444
- 'exclude_product_categories' => array(),
445
- 'exclude_sale_items' => false,
446
- 'minimum_amount' => '',
447
- 'maximum_amount' => '',
448
- 'customer_email' => '',
449
- );
450
- if(FlycartWoocommerceVersion::wcVersion('3.2')) {
451
- $coupon['discount_type'] = $discount_type;
452
- } else {
453
- $coupon['type'] = $discount_type;
454
- }
455
- return $coupon;
456
- }
457
-
458
- return $response;
459
- }
460
-
461
- public function addVirtualCouponForBOGO($response, $old_coupon_code)
462
- {
463
- $bogo_coupon_codes = $this->bogo_coupon_codes;
464
- $coupon_codes = array_keys($bogo_coupon_codes);
465
- // Getting Coupon Remove status from Session.
466
- if(isset(WC()->session) && is_object(WC()->session) && method_exists(WC()->session, 'get')) {
467
- $is_removed = WC()->session->get('woo_coupon_removed', '');
468
- if(!empty($is_removed)){
469
- // If Both are same, then it won't added.
470
- if (in_array($is_removed, $coupon_codes)) return false;
471
- }
472
- }
473
-
474
- if (in_array($old_coupon_code, $coupon_codes) || in_array(wc_strtolower($old_coupon_code), $coupon_codes)) {
475
- if (in_array($this->postData->get('remove_coupon', false), $coupon_codes)) return false;
476
- $this->makeLog();
477
- $discount_type = 'fixed_product';
478
- $amount = $bogo_coupon_codes[wc_strtolower($old_coupon_code)]['amount'];
479
-
480
- $coupon = array(
481
- 'id' => 321123 . rand(2, 9),
482
- 'amount' => $amount,
483
- 'individual_use' => false,
484
- 'product_ids' => array($bogo_coupon_codes[wc_strtolower($old_coupon_code)]['product_id']),
485
- 'exclude_product_ids' => array(),
486
- 'usage_limit' => '',
487
- 'usage_limit_per_user' => '',
488
- 'limit_usage_to_x_items' => '',
489
- 'usage_count' => '',
490
- 'expiry_date' => '',
491
- 'apply_before_tax' => 'yes',
492
- 'free_shipping' => false,
493
- 'product_categories' => array(),
494
- 'exclude_product_categories' => array(),
495
- 'exclude_sale_items' => false,
496
- 'minimum_amount' => '',
497
- 'maximum_amount' => '',
498
- 'customer_email' => '',
499
- );
500
- if(FlycartWoocommerceVersion::wcVersion('3.2')) {
501
- $coupon['discount_type'] = $discount_type;
502
- } else {
503
- $coupon['type'] = $discount_type;
504
- }
505
- return $coupon;
506
- }
507
-
508
- return $response;
509
- }
510
-
511
- /**
512
- * To Get the Coupon code that already specified.
513
- *
514
- * @return string
515
- */
516
- public function getCouponCode()
517
- {
518
- $config = new FlycartWooDiscountBase();
519
- $config = $config->getBaseConfig();
520
-
521
- if (is_string($config)) $config = json_decode($config, true);
522
-
523
- // Pre-Defined alternative Coupon Code.
524
- $coupon = 'Discount';
525
-
526
- // Verify and overwrite the Coupon Code.
527
- if (isset($config['coupon_name']) && $config['coupon_name'] != '') $coupon = $config['coupon_name'];
528
- return $coupon;
529
- }
530
-
531
- /**
532
- * Apply fake coupon to cart
533
- *
534
- * @access public
535
- * @return void
536
- */
537
- public function applyFakeCoupons()
538
- {
539
- global $woocommerce;
540
-
541
- // 'newyear' is a temporary coupon for validation.
542
- $coupon_code = apply_filters('woocommerce_coupon_code', $this->coupon_code);
543
-
544
- // Getting New Instance with the Coupon Code.
545
- $the_coupon = FlycartWoocommerceCoupon::wc_get_coupon($coupon_code);
546
- if($the_coupon->is_valid()){
547
- self::setAppliedCoupon($coupon_code);
548
- }
549
- // Validating the Coupon as Valid and discount status.
550
- if ($the_coupon->is_valid() && !$woocommerce->cart->has_discount($coupon_code)) {
551
-
552
- // Do not apply coupon with individual use coupon already applied
553
- if ($woocommerce->cart->applied_coupons) {
554
- foreach ($woocommerce->cart->applied_coupons as $code) {
555
- $coupon = FlycartWoocommerceCoupon::wc_get_coupon($code);
556
- if (FlycartWoocommerceCoupon::get_individual_use($coupon) == true) {
557
- return false;
558
- }
559
- }
560
- }
561
-
562
- // Add coupon
563
- $woocommerce->cart->applied_coupons[] = $coupon_code;
564
- $trigger_applied_coupon_before_load_cart = apply_filters('woo_discount_rules_trigger_applied_coupon_before_load_cart', false);
565
- if($trigger_applied_coupon_before_load_cart){
566
- add_action('woocommerce_before_cart', array($this, 'trigger_event_woocommerce_applied_coupon'));
567
- add_action('woocommerce_review_order_before_cart_contents', array($this, 'trigger_event_woocommerce_applied_coupon'));
568
- } else {
569
- remove_action('woocommerce_after_calculate_totals', array($this, 'applyFakeCoupons'));
570
- do_action('woocommerce_applied_coupon', $coupon_code);
571
- add_action('woocommerce_after_calculate_totals', array($this, 'applyFakeCoupons'));
572
- }
573
-
574
- return true;
575
- }
576
- }
577
-
578
- public function trigger_event_woocommerce_applied_coupon(){
579
- global $woocommerce;
580
- $coupon_code = apply_filters('woocommerce_coupon_code', $this->coupon_code);
581
- if(in_array($coupon_code, $woocommerce->cart->applied_coupons)){
582
- do_action('woocommerce_applied_coupon', $coupon_code);
583
- }
584
- if(!empty($this->bogo_coupon_codes)) {
585
- foreach ($this->bogo_coupon_codes as $coupon_code => $coupon_data) {
586
- $coupon_code = apply_filters('woocommerce_coupon_code', $coupon_code);
587
- if(in_array($coupon_code, $woocommerce->cart->applied_coupons)){
588
- do_action('woocommerce_applied_coupon', $coupon_code);
589
- }
590
- }
591
- }
592
- }
593
-
594
- public function applyFakeCouponsForBOGO()
595
- {
596
- global $woocommerce;
597
- if(!empty($this->bogo_coupon_codes)){
598
- foreach ($this->bogo_coupon_codes as $coupon_code => $coupon_data){
599
- // 'newyear' is a temporary coupon for validation.
600
- $coupon_code = apply_filters('woocommerce_coupon_code', $coupon_code);
601
- // Getting New Instance with the Coupon Code.
602
- $the_coupon = FlycartWoocommerceCoupon::wc_get_coupon($coupon_code);
603
- if($the_coupon->is_valid()){
604
- self::setAppliedCoupon($coupon_code);
605
- }
606
- // Validating the Coupon as Valid and discount status.
607
- if ($the_coupon->is_valid() && !$woocommerce->cart->has_discount($coupon_code)) {
608
-
609
- // Do not apply coupon with individual use coupon already applied
610
- if ($woocommerce->cart->applied_coupons) {
611
- foreach ($woocommerce->cart->applied_coupons as $code) {
612
- $coupon = FlycartWoocommerceCoupon::wc_get_coupon($code);
613
- if (FlycartWoocommerceCoupon::get_individual_use($coupon) == true) {
614
- return false;
615
- }
616
- }
617
- }
618
-
619
- // Add coupon
620
- $woocommerce->cart->applied_coupons[] = $coupon_code;
621
- $trigger_applied_coupon_before_load_cart = apply_filters('woo_discount_rules_trigger_applied_coupon_before_load_cart', false);
622
- if($trigger_applied_coupon_before_load_cart){
623
- add_action('woocommerce_before_cart', array($this, 'trigger_event_woocommerce_applied_coupon'));
624
- add_action('woocommerce_review_order_before_cart_contents', array($this, 'trigger_event_woocommerce_applied_coupon'));
625
- } else {
626
- remove_action('woocommerce_after_calculate_totals', array($this, 'applyFakeCouponsForBOGO'));
627
- do_action('woocommerce_applied_coupon', $coupon_code);
628
- add_action('woocommerce_after_calculate_totals', array($this, 'applyFakeCouponsForBOGO'));
629
- }
630
- }
631
- }
632
- }
633
- return true;
634
- }
635
-
636
- /**
637
- * Simply remove or reset the virtual coupon by set "empty" as value
638
- * to "Woo's" session "woo_coupon_removed".
639
- *
640
- * @param $coupon
641
- */
642
- public function removeWoocommerceCoupon($coupon)
643
- {
644
- WC()->session->set('woo_coupon_removed', $coupon);
645
- }
646
-
647
- /**
648
- * @return string
649
- */
650
- public function woocommerceEnableCoupons()
651
- {
652
- return 'true';
653
- }
654
-
655
- /**
656
- *
657
- */
658
- public function organizeRules()
659
- {
660
- // Loads the Rules to Global.
661
- $this->getRules();
662
- // Validate and Re-Assign the Rules.
663
- $this->filterRules();
664
- }
665
-
666
- /**
667
- * @return bool
668
- */
669
- public function applyRules()
670
- {
671
- global $woocommerce;
672
- // If there is no rules, then return false.
673
- if (!isset($this->rules)) return false;
674
-
675
- // Check point having list of checklist to apply.
676
- if ($this->checkPoint()) return false;
677
- FlycartWooDiscountRulesGeneralHelper::clearCartPromotionMessages();
678
- // To Generate Valid Rule sets.
679
- $this->generateRuleSets();
680
- }
681
-
682
- /**
683
- *
684
- */
685
- public function filterRules()
686
- {
687
- $rules = $this->rules;
688
-
689
- if (is_null($rules) || !isset($rules)) return false;
690
- // Start with empty set.
691
- $rule_set = array();
692
- foreach ($rules as $index => $rule) {
693
- $status = (isset($rule->status) ? $rule->status : false);
694
-
695
- // To Check as Plugin Active - InActive.
696
- if ($status == 'publish') {
697
- $date_from = (isset($rule->date_from) ? $rule->date_from : '');
698
- $date_to = (isset($rule->date_to) ? $rule->date_to : '');
699
- $validateDate = FlycartWooDiscountRulesGeneralHelper::validateDateAndTime($date_from, $date_to);
700
- // Validating Rule with Date of Expiry.
701
- if ($validateDate) {
702
- // Validating the Rule with its Order ID.
703
- if (isset($rule->rule_order)) {
704
- $load_rule = apply_filters('woo_discount_rules_run_cart_rule', true, $rule);
705
- if($load_rule){
706
- // If Order ID is '-', then this rule not going to implement.
707
- if ($rule->rule_order !== '-') {
708
- $rule_set[] = $rule;
709
- if(!empty($rule->discount_type)){
710
- if ($rule->discount_type == 'shipping_price') {
711
- $this->has_free_shipping_rule = 1;
712
- }
713
- }
714
- }
715
- }
716
- }
717
- }
718
- }
719
- }
720
- $this->rules = $rule_set;
721
-
722
- // To Order the Rules, based on its order ID.
723
- $this->orderRules();
724
- }
725
-
726
- /**
727
- * @return bool
728
- */
729
- public function orderRules()
730
- {
731
- if (empty($this->rules)) return false;
732
-
733
- $ordered_rules = array();
734
-
735
- // Make associative array with Order ID.
736
- foreach ($this->rules as $index => $rule) {
737
- if (isset($rule->rule_order)) {
738
- if ($rule->rule_order != '') {
739
- $ordered_rules[$rule->rule_order] = $rule;
740
- }
741
- }
742
- }
743
- // Order the Rules with it's priority.
744
- ksort($ordered_rules);
745
-
746
- $this->rules = $ordered_rules;
747
- }
748
-
749
- /**
750
- * @return bool
751
- */
752
- public function generateRuleSets()
753
- {
754
- global $woocommerce;
755
- $rule_sets = array();
756
-
757
- if (!isset($this->rules)) return false;
758
-
759
- // Loop the Rules set to collect matched rules.
760
- foreach ($this->rules as $index => $rule) {
761
- // General Rule Info.
762
- $rule_sets[$index]['discount_type'] = 'price_discount';
763
- $rule_sets[$index]['name'] = (isset($rule->rule_name) ? $rule->rule_name : 'Rule_' . $index);
764
- $rule_sets[$index]['descr'] = (isset($rule->rule_descr) ? $rule->rule_descr : '');
765
- $rule_sets[$index]['method'] = (isset($rule->rule_method) ? $rule->rule_method : 'qty_based');
766
- $rule_sets[$index]['qty_based_on'] = (isset($rule->qty_based_on) ? $rule->qty_based_on : 'each_product');
767
- $rule_sets[$index]['date_from'] = (isset($rule->date_from) ? $rule->date_from : false);
768
- $rule_sets[$index]['date_to'] = (isset($rule->date_to) ? $rule->date_to : false);
769
- $rule_sets[$index]['discount_rule'] = (isset($rule->discount_rule) ? $rule->discount_rule : false);
770
- $rule_sets[$index]['discount_type'] = (isset($rule->discount_type) ? $rule->discount_type : false);
771
- $rule_sets[$index]['to_discount'] = (isset($rule->to_discount) ? $rule->to_discount : false);
772
- $rule_sets[$index]['cart_discounted_products'] = isset($rule->cart_discounted_products) ? json_decode($rule->cart_discounted_products) : array();
773
- $rule_sets[$index]['product_discount_quantity'] = isset($rule->product_discount_quantity) ? $rule->product_discount_quantity : 1;
774
- $rule_sets[$index]['promotion_qty_from'] = isset($rule->promotion_qty_from) ? $rule->promotion_qty_from : 0;
775
- $rule_sets[$index]['promotion_subtotal_from'] = isset($rule->promotion_subtotal_from) ? $rule->promotion_subtotal_from : 0;
776
- $rule_sets[$index]['promotion_message'] = isset($rule->promotion_message) ? $rule->promotion_message : '';
777
- $rule_sets[$index]['rule_id'] = isset($rule->ID) ? $rule->ID : '';
778
- $rule_sets[$index]['rule_order_id'] = isset($rule->rule_order) ? $rule->rule_order : '';
779
- if (in_array($rule->discount_type, array('product_discount'))) {
780
- $rule_sets[$index]['enabled'] = $this->validateBOGOCart($rule_sets[$index]['discount_rule'],$rule, $rule_sets[$index]);
781
- }else{
782
- $rule_sets[$index]['enabled'] = $this->validateCart($rule_sets[$index]['discount_rule'], $rule_sets[$index]);
783
- }
784
- }
785
- $rule_sets = apply_filters('woo_discount_rules_cart_rule_sets_to_apply', $rule_sets);
786
- $this->rule_sets = $rule_sets;
787
- }
788
-
789
- /**
790
- * Get Overall discount amount across allover the rules that available.
791
- *
792
- * @return integer Total Discount Amount.
793
- */
794
- public function getDiscountAmount()
795
- {
796
- $discount = 0;
797
- $discounts = array();
798
- if (!isset($this->rule_sets)) return false;
799
-
800
- // Get settings
801
- $config = new FlycartWooDiscountBase();
802
- $config = $config->getBaseConfig();
803
- if (is_string($config)) $config = json_decode($config, true);
804
- if(isset($config['cart_setup'])){
805
- $cart_setup = $config['cart_setup'];
806
- } else {
807
- $cart_setup = 'all';
808
- }
809
-
810
- if(count($this->rule_sets)){
811
- if(in_array($cart_setup, array('first', 'all'))){
812
- if($cart_setup == 'first'){
813
- // Processing the Totals.
814
- foreach ($this->rule_sets as $index => $rule) {
815
- if ($rule['enabled'] == true) {
816
- do_action('woo_discount_rules_before_apply_cart_discount', $rule, $cart_setup);
817
- $discounts['name'][$index] = $rule['name'];
818
- $discounts['type'][$index] = $rule['discount_type'];
819
- //we will have to re-calculate the sub-total if it has category selected
820
- $this->has_category_in_rule = $this->is_category_specific($rule);
821
- $this->has_product_specific_rule = $this->is_product_specific($rule);
822
- if ($rule['discount_type'] == 'shipping_price') {
823
- $this->has_free_shipping = 1;
824
- } else if ($rule['discount_type'] == 'price_discount') {
825
- // Getting the Flat Rate of Discount.
826
- $discounts['to_discount'][$index] = $this->calculateDiscount($this->sub_total, array('type' => 'price', 'value' => $rule['to_discount']));
827
- } else if($rule['discount_type'] == 'product_discount'){
828
- // Calculate product discount
829
- if(FlycartWooDiscountRulesGeneralHelper::is_countable($rule['cart_discounted_products'])){
830
- $this->calculateProductDiscount($rule['cart_discounted_products'],$rule['product_discount_quantity']);
831
- }
832
- } else {
833
- if($this->has_category_in_rule || $this->has_product_specific_rule) {
834
- if(!empty($this->cart_items)){
835
- if(!did_action('woocommerce_before_calculate_totals')){
836
- do_action('woocommerce_before_calculate_totals', FlycartWoocommerceCart::get_cart_object());
837
- }
838
- }
839
- //re-calculate the sub-total
840
- $subtotal = $this->calculate_conditional_subtotal($this->get_discounted_categories_from_json($rule), $rule);
841
- } else {
842
- $subtotal = $this->sub_total;
843
- }
844
- $subtotal = apply_filters('woo_discount_rules_before_calculate_discount_from_subtotal_in_cart', $subtotal, $rule['discount_type'], $rule);
845
- // Getting the Percentage level of Discount.
846
- $discounts['to_discount'][$index] = $this->calculateDiscount($subtotal, array('type' => 'percentage', 'value' => $rule['to_discount']));
847
- }
848
- if(isset($discounts['to_discount']) && isset($discounts['to_discount'][$index])) {
849
- // Sum of Available discount list.
850
- $discount += $discounts['to_discount'][$index];
851
- }
852
- // Update the status of the status of the discount rule.
853
- $discounts['is_enabled'][$index] = $rule['enabled'];
854
- break;
855
- }
856
- }
857
- } else {
858
- // Processing the Totals.
859
- foreach ($this->rule_sets as $index => $rule) {
860
- if ($rule['enabled'] == true) {
861
- do_action('woo_discount_rules_before_apply_cart_discount', $rule, $cart_setup);
862
- $discounts['name'][$index] = $rule['name'];
863
- $discounts['type'][$index] = $rule['discount_type'];
864
- //we will have to re-calculate the sub-total if it has category selected
865
- $this->has_category_in_rule = $this->is_category_specific($rule);
866
- $this->has_product_specific_rule = $this->is_product_specific($rule);
867
- if ($rule['discount_type'] == 'shipping_price') {
868
- $this->has_free_shipping = 1;
869
- } else if ($rule['discount_type'] == 'price_discount') {
870
- // Getting the Flat Rate of Discount.
871
- $discounts['to_discount'][$index] = $this->calculateDiscount($this->sub_total, array('type' => 'price', 'value' => $rule['to_discount']));
872
- } else if($rule['discount_type'] == 'product_discount'){
873
- // Calculate product discount
874
- if(FlycartWooDiscountRulesGeneralHelper::is_countable($rule['cart_discounted_products'])){
875
- $this->calculateProductDiscount($rule['cart_discounted_products'],$rule['product_discount_quantity']);
876
- }
877
- } else {
878
- if($this->has_category_in_rule || $this->has_product_specific_rule) {
879
- //re-calculate the sub-total
880
- $subtotal = $this->calculate_conditional_subtotal($this->get_discounted_categories_from_json($rule), $rule);
881
- }else {
882
- $subtotal = $this->sub_total;
883
- }
884
- $subtotal = apply_filters('woo_discount_rules_before_calculate_discount_from_subtotal_in_cart', $subtotal, $rule['discount_type'], $rule);
885
- // Getting the Percentage level of Discount.
886
- $discounts['to_discount'][$index] = $this->calculateDiscount($subtotal, array('type' => 'percentage', 'value' => $rule['to_discount']));
887
- }
888
- if(isset($discounts['to_discount']) && isset($discounts['to_discount'][$index])){
889
- // Sum of Available discount list.
890
- $discount += $discounts['to_discount'][$index];
891
- }
892
-
893
- // Update the status of the status of the discount rule.
894
- $discounts['is_enabled'][$index] = $rule['enabled'];
895
- }
896
- }
897
- }
898
- } else if($cart_setup == 'biggest'){
899
- $biggestDiscount = $newDiscount = 0;
900
- // Processing the Totals.
901
- foreach ($this->rule_sets as $index => $rule) {
902
- if ($rule['enabled'] == true) {
903
- do_action('woo_discount_rules_before_apply_cart_discount', $rule, $cart_setup);
904
- //we will have to re-calculate the sub-total if it has category selected
905
- $this->has_category_in_rule = $this->is_category_specific($rule);
906
- $this->has_product_specific_rule = $this->is_product_specific($rule);
907
- if ($rule['discount_type'] == 'shipping_price') {
908
- $this->has_free_shipping = 1;
909
- $newDiscount = 0;
910
- } else if ($rule['discount_type'] == 'price_discount') {
911
- // Getting the Flat Rate of Discount.
912
- $newDiscount = $this->calculateDiscount($this->sub_total, array('type' => 'price', 'value' => $rule['to_discount']));
913
- } else if($rule['discount_type'] == 'product_discount'){
914
- // Calculate product discount
915
- if(FlycartWooDiscountRulesGeneralHelper::is_countable($rule['cart_discounted_products'])){
916
- $this->calculateProductDiscount($rule['cart_discounted_products'],$rule['product_discount_quantity']);
917
- }
918
- } else {
919
- if($this->has_category_in_rule || $this->has_product_specific_rule) {
920
- //re-calculate the sub-total
921
- $subtotal = $this->calculate_conditional_subtotal($this->get_discounted_categories_from_json($rule), $rule);
922
- }else {
923
- $subtotal = $this->sub_total;
924
- }
925
- $subtotal = apply_filters('woo_discount_rules_before_calculate_discount_from_subtotal_in_cart', $subtotal, $rule['discount_type'], $rule);
926
- // Getting the Percentage level of Discount.
927
- $newDiscount = $this->calculateDiscount($subtotal, array('type' => 'percentage', 'value' => $rule['to_discount']));
928
- }
929
- if($newDiscount > $biggestDiscount){
930
- $biggestDiscount = $newDiscount;
931
- $discounts['name'][1] = $rule['name'];
932
- $discounts['type'][1] = $rule['discount_type'];
933
- $discounts['to_discount'][1] = $newDiscount;
934
- $discount = $newDiscount;
935
- // Update the status of the status of the discount rule.
936
- $discounts['is_enabled'][1] = $rule['enabled'];
937
- }
938
- }
939
- }
940
- }
941
- }
942
-
943
- $this->discount_total = $discount;
944
- $this->matched_discounts = $discounts;
945
- return $discounts;
946
- }
947
-
948
- /**
949
- * Check is specific to category
950
- * */
951
- public function is_category_specific($rule) {
952
- if(count($this->get_discounted_categories_from_json($rule))) {
953
- return true;
954
- }
955
- return false;
956
- }
957
-
958
- /**
959
- * Check has product specific
960
- * */
961
- public function is_product_specific($rule) {
962
- $result = false;
963
- if ( ! empty( $rule['discount_rule'] ) )
964
- {
965
- if(!is_object($rule['discount_rule'])) {
966
- //assume it is a json string and parse
967
- $rules = json_decode($rule['discount_rule'], true);
968
- }
969
- if(count($rules)) {
970
- foreach($rules as $rule) {
971
- if(array_key_exists('products_in_list', $rule)) {
972
- $result = true;
973
- break;
974
- }
975
- if(array_key_exists('products_not_in_list', $rule)) {
976
- $result = true;
977
- break;
978
- }
979
- if(array_key_exists('exclude_sale_products', $rule)) {
980
- $result = true;
981
- break;
982
- }
983
- }
984
- }
985
- }
986
-
987
- return $result;
988
- }
989
-
990
- /**
991
- * get discount categories from rule
992
- * */
993
- public function get_discounted_categories_from_json($rule)
994
- {
995
- $categories = array();
996
- if ( ! empty( $rule['discount_rule'] ) )
997
- {
998
- if(!is_object($rule['discount_rule'])) {
999
- //assume it is a json string and parse
1000
- $rules = json_decode($rule['discount_rule'], true);
1001
- }
1002
-
1003
- if(count($rules)) {
1004
- foreach($rules as $rule) {
1005
- if(array_key_exists('exclude_categories', $rule)) {
1006
- $categories = $rule['exclude_categories'];
1007
- break;
1008
- }
1009
- if(array_key_exists('categories_in', $rule)) {
1010
- $categories = $rule['categories_in'];
1011
- break;
1012
- }
1013
- if(array_key_exists('in_each_category', $rule)) {
1014
- $categories = $rule['in_each_category'];
1015
- break;
1016
- }
1017
- if(array_key_exists('atleast_one_including_sub_categories', $rule)) {
1018
- $categories = FlycartWooDiscountRulesGeneralHelper::getAllSubCategories($rule['atleast_one_including_sub_categories']);
1019
- break;
1020
- }
1021
- }
1022
- }
1023
- }
1024
- return $categories;
1025
- }
1026
-
1027
- /**
1028
- * Comparing the Rules with the each line item to check
1029
- * and return as, matched or not.
1030
- *
1031
- * @param array $rules
1032
- * @return bool true|false
1033
- */
1034
- public function validateCart($rules, $rule_sets)
1035
- {
1036
- $this->checked_for_categories_and_product_match = false;
1037
- $this->calculateCartSubtotal();
1038
- $rules = (is_string($rules) ? json_decode($rules, true) : array());
1039
- $rules_with_all_data = $rules;
1040
- // Simple array helper to re-arrange the structure.
1041
- FlycartWooDiscountRulesGeneralHelper::reArrangeArray($rules);
1042
- if(is_array($rules) && count($rules)){
1043
- foreach ($rules as $index => $rule) {
1044
- // Validating the Rules one by one.
1045
- if ($this->applyRule($index, $rule, $rules, $rules_with_all_data, $rule_sets) == false) {
1046
- return false;
1047
- }
1048
- }
1049
- }
1050
- return true;
1051
- }
1052
-
1053
- /**
1054
- * Process promotion message
1055
- *
1056
- * @param $rule_sets array
1057
- * @param $rule_value mixed
1058
- * @param $type string
1059
- * */
1060
- public function processPromotionMessage($rule_sets, $rule_value, $type, $additional_data = array()){
1061
- if($type == "subtotal_least"){
1062
- if(isset($rule_sets["promotion_subtotal_from"]) && isset($rule_sets["promotion_message"])){
1063
- $message = trim($rule_sets["promotion_message"]);
1064
- if(!empty($message)){
1065
- $sub_total = $this->sub_total;
1066
- if(isset($additional_data['subtotal'])){
1067
- $sub_total = $additional_data['subtotal'];
1068
- }
1069
- $promotion_subtotal_from = (float)$rule_sets["promotion_subtotal_from"];
1070
- if($sub_total >= $promotion_subtotal_from){
1071
- $difference_amount = $rule_value - $sub_total;
1072
- if($difference_amount > 0){
1073
- $difference_amount = FlycartWoocommerceProduct::wc_price($difference_amount);
1074
- $message = str_replace('{{difference_amount}}', $difference_amount, $message);
1075
- FlycartWooDiscountRulesGeneralHelper::setPromotionMessage($message, $rule_sets['rule_id']);
1076
- }
1077
- }
1078
- }
1079
- }
1080
- }
1081
- }
1082
-
1083
- /**
1084
- * Applying bunch amount of rules with the line item.
1085
- *
1086
- * @param string $index Index of the Rule
1087
- * @param array $rule array of rule info.
1088
- * @return bool true|false as matched or not.
1089
- */
1090
- public function applyRule($index, $rule, $rules, $rules_with_all_data, $rule_sets)
1091
- {
1092
- $skipRuleType = array('categories_in', 'exclude_categories', 'in_each_category', 'atleast_one_including_sub_categories', 'products_in_list', 'products_not_in_list', 'exclude_sale_products');
1093
- $availableRuleToSkip = array_intersect($skipRuleType, array_keys($rules));
1094
- switch ($index) {
1095
-
1096
- // Cart Subtotal.
1097
- case 'subtotal_least':
1098
- if(!empty($availableRuleToSkip)){
1099
- } elseif ($this->sub_total < $rule) {
1100
- $this->processPromotionMessage($rule_sets, $rule, $index);
1101
- return false;
1102
- }
1103
- return true;
1104
- break;
1105
- case 'subtotal_less':
1106
- if(!empty($availableRuleToSkip)){
1107
- } elseif ($this->sub_total >= $rule) {
1108
- return false;
1109
- }
1110
- return true;
1111
- break;
1112
-
1113
- // Cart Item Count.
1114
- case 'item_count_least':
1115
- if(!empty($availableRuleToSkip)){
1116
- } elseif (count($this->cart_items) < $rule) {
1117
- return false;
1118
- }
1119
- return true;
1120
- break;
1121
- case 'item_count_less':
1122
- if(!empty($availableRuleToSkip)){
1123
- } elseif (count($this->cart_items) >= $rule) {
1124
- return false;
1125
- }
1126
- return true;
1127
- break;
1128
-
1129
- // Quantity Count.
1130
- case 'quantity_least':
1131
- if(!empty($availableRuleToSkip)){
1132
- } elseif ($this->cartItemQtyTotal() < $rule) {
1133
- return false;
1134
- }
1135
- return true;
1136
- break;
1137
- case 'quantity_less':
1138
- if(!empty($availableRuleToSkip)){
1139
- } elseif ($this->cartItemQtyTotal() >= $rule) {
1140
- return false;
1141
- }
1142
- return true;
1143
- break;
1144
-
1145
- // Logged In Users.
1146
- case 'users_in':
1147
- $rule = FlycartWoocommerceVersion::backwardCompatibilityStringToArray($rule);
1148
- if (get_current_user_id() == 0 || !in_array(get_current_user_id(), $rule)) {
1149
- return false;
1150
- }
1151
- return true;
1152
- break;
1153
- case 'shipping_countries_in':
1154
- $postCalcShippingCountry = $this->postData->get('calc_shipping_country', '');
1155
- if(!empty($postCalcShippingCountry)){
1156
- $shippingCountry = $postCalcShippingCountry;
1157
- }
1158
- if(empty($shippingCountry)){
1159
- $shippingCountry = WC()->customer->get_shipping_country();
1160
- }
1161
- if (empty($shippingCountry) || !in_array($shippingCountry, $rule)) {
1162
- return false;
1163
- }
1164
- return true;
1165
- break;
1166
- case 'roles_in':
1167
- if (count(array_intersect(FlycartWooDiscountRulesGeneralHelper::getCurrentUserRoles(), $rule)) == 0) {
1168
- return false;
1169
- }
1170
- return true;
1171
- break;
1172
- case ($index == 'customer_email_tld' || $index == 'customer_email_domain'):
1173
- $rule = explode(',', $rule);
1174
- if(is_array($rule) && count($rule)){
1175
- foreach($rule as $key => $r){
1176
- $rule[$key] = trim($r);
1177
- $rule[$key] = trim($rule[$key], '.');
1178
- }
1179
- }
1180
- $postData = $this->postData->get('post_data', '', 'raw');
1181
- $postDataArray = array();
1182
- if($postData != ''){
1183
- parse_str($postData, $postDataArray);
1184
- }
1185
- $postBillingEmail = $this->postData->get('billing_email', '', 'raw');
1186
- if($postBillingEmail != ''){
1187
- $postDataArray['billing_email'] = $postBillingEmail;
1188
- }
1189
- if(!get_current_user_id()){
1190
- $order_id = $this->postData->get('order-received', 0);
1191
- if($order_id){
1192
- $order = FlycartWoocommerceOrder::wc_get_order($order_id);
1193
- $postDataArray['billing_email'] = FlycartWoocommerceOrder::get_billing_email($order);
1194
- }
1195
- }
1196
- if(isset($postDataArray['billing_email']) && $postDataArray['billing_email'] != ''){
1197
- $user_email = $postDataArray['billing_email'];
1198
- if(get_current_user_id()){
1199
- update_user_meta(get_current_user_id(), 'billing_email', $user_email);
1200
- }
1201
- if($index == 'customer_email_tld')
1202
- $tld = $this->getTLDFromEmail($user_email);
1203
- else
1204
- $tld = $this->getDomainFromEmail($user_email);
1205
- if($this->validateTLD($tld, $rule)){
1206
- return true;
1207
- }
1208
- } else if(get_current_user_id()){
1209
- $user_email = get_user_meta( get_current_user_id(), 'billing_email', true );
1210
- if($user_email != '' && !empty($user_email)){
1211
- if($index == 'customer_email_tld')
1212
- $tld = $this->getTLDFromEmail($user_email);
1213
- else
1214
- $tld = $this->getDomainFromEmail($user_email);
1215
- if($this->validateTLD($tld, $rule)){
1216
- return true;
1217
- }
1218
- } else {
1219
- $user_details = get_userdata( get_current_user_id() );
1220
- if(isset($user_details->data->user_email) && $user_details->data->user_email != ''){
1221
- $user_email = $user_details->data->user_email;
1222
- if($index == 'customer_email_tld')
1223
- $tld = $this->getTLDFromEmail($user_email);
1224
- else
1225
- $tld = $this->getDomainFromEmail($user_email);
1226
- if($this->validateTLD($tld, $rule)){
1227
- return true;
1228
- }
1229
- }
1230
- }
1231
- }
1232
- return false;
1233
- break;
1234
-
1235
- case 'customer_billing_city':
1236
- $rule = explode(',', $rule);
1237
- if(is_array($rule) && count($rule)){
1238
- foreach($rule as $key => $r){
1239
- $rule[$key] = strtolower(trim($r));
1240
- }
1241
- }
1242
- $postData = $this->postData->get('post_data', '', 'raw');
1243
- $postDataArray = array();
1244
- if($postData != ''){
1245
- parse_str($postData, $postDataArray);
1246
- }
1247
- $postBillingEmail = $this->postData->get('billing_city', '', 'raw');
1248
- if($postBillingEmail != ''){
1249
- $postDataArray['billing_city'] = $postBillingEmail;
1250
- }
1251
- if(!get_current_user_id()){
1252
- $order_id = $this->postData->get('order-received', 0);
1253
- if($order_id){
1254
- $order = FlycartWoocommerceOrder::wc_get_order($order_id);
1255
- $postDataArray['billing_city'] = FlycartWoocommerceOrder::get_billing_city($order);
1256
- }
1257
- }
1258
- if(isset($postDataArray['billing_city']) && $postDataArray['billing_city'] != ''){
1259
- $billingCity = $postDataArray['billing_city'];
1260
- if(in_array(strtolower($billingCity), $rule)){
1261
- return true;
1262
- }
1263
- } else if(get_current_user_id()){
1264
- $billingCity = get_user_meta( get_current_user_id(), 'billing_city', true );
1265
- if($billingCity != '' && !empty($billingCity)){
1266
- if(in_array(strtolower($billingCity), $rule)){
1267
- return true;
1268
- }
1269
- }
1270
- }
1271
- return false;
1272
- break;
1273
- case 'customer_shipping_state':
1274
- $rule = explode(',', $rule);
1275
- if(is_array($rule) && count($rule)){
1276
- foreach($rule as $key => $r){
1277
- $rule[$key] = strtolower(trim($r));
1278
- }
1279
- }
1280
- $postData = $this->postData->get('post_data', '', 'raw');
1281
- $postDataArray = array();
1282
- if($postData != ''){
1283
- parse_str($postData, $postDataArray);
1284
- }
1285
- if(isset($postDataArray['ship_to_different_address']) && $postDataArray['ship_to_different_address']){
1286
- $shippingFieldName = 'shipping_state';
1287
- } else {
1288
- $shippingFieldName = 'billing_state';
1289
- }
1290
- $postShippingState = $this->postData->get($shippingFieldName, '', 'raw');
1291
- if($postShippingState != ''){
1292
- $postDataArray[$shippingFieldName] = $postShippingState;
1293
- }
1294
-
1295
- $postCalcShippingState = $this->postData->get('calc_shipping_state', '', 'raw');
1296
- if(!empty($postCalcShippingState)){
1297
- $postDataArray[$shippingFieldName] = $postCalcShippingState;
1298
- }
1299
-
1300
- if(!get_current_user_id()){
1301
- $order_id = $this->postData->get('order-received', 0);
1302
- if($order_id){
1303
- $order = FlycartWoocommerceOrder::wc_get_order($order_id);
1304
- $postDataArray['shipping_state'] = FlycartWoocommerceOrder::get_shipping_state($order);
1305
- }
1306
- }
1307
-
1308
- $customer_from_session = FlycartWoocommerceSession::getSession('customer');
1309
- if(!empty($customer_from_session)){
1310
- if(isset($customer_from_session[$shippingFieldName])){
1311
- $postDataArray[$shippingFieldName] = $customer_from_session[$shippingFieldName];
1312
- } else if(isset($customer_from_session['shipping_state'])){
1313
- $postDataArray['shipping_state'] = $customer_from_session['shipping_state'];
1314
- if(empty($postDataArray[$shippingFieldName])){
1315
- $postDataArray[$shippingFieldName] = $postDataArray['shipping_state'];
1316
- }
1317
- }
1318
- }
1319
-
1320
- if(isset($postDataArray[$shippingFieldName]) && $postDataArray[$shippingFieldName] != ''){
1321
- $shippingState = $postDataArray[$shippingFieldName];
1322
- if(in_array(strtolower($shippingState), $rule) || in_array(strtoupper($shippingState), $rule)){
1323
- return true;
1324
- }
1325
- } else if(get_current_user_id()){
1326
- $shippingState = get_user_meta( get_current_user_id(), 'shipping_state', true );
1327
- if($shippingState != '' && !empty($shippingState)){
1328
- if(in_array(strtolower($shippingState), $rule) || in_array(strtoupper($shippingState), $rule)){
1329
- return true;
1330
- }
1331
- }
1332
- }
1333
- return false;
1334
- break;
1335
- case 'customer_shipping_city':
1336
- $rule = explode(',', $rule);
1337
- if(is_array($rule) && count($rule)){
1338
- foreach($rule as $key => $r){
1339
- $rule[$key] = strtolower(trim($r));
1340
- }
1341
- }
1342
- $postData = $this->postData->get('post_data', '', 'raw');
1343
- $postDataArray = array();
1344
- if($postData != ''){
1345
- parse_str($postData, $postDataArray);
1346
- }
1347
- if(isset($postDataArray['ship_to_different_address']) && $postDataArray['ship_to_different_address']){
1348
- $shippingFieldName = 'shipping_city';
1349
- } else {
1350
- $shippingFieldName = 'billing_city';
1351
- }
1352
- $postShippingState = $this->postData->get($shippingFieldName, '', 'raw');
1353
- if($postShippingState != ''){
1354
- $postDataArray[$shippingFieldName] = $postShippingState;
1355
- }
1356
-
1357
- $postCalcShippingCity = $this->postData->get('calc_shipping_city', '', 'raw');
1358
- if(!empty($postCalcShippingCity)){
1359
- $postDataArray[$shippingFieldName] = $postCalcShippingCity;
1360
- }
1361
-
1362
- if(!get_current_user_id()){
1363
- $order_id = $this->postData->get('order-received', 0);
1364
- if($order_id){
1365
- $order = FlycartWoocommerceOrder::wc_get_order($order_id);
1366
- $postDataArray['shipping_city'] = FlycartWoocommerceOrder::get_shipping_city($order);
1367
- }
1368
- }
1369
-
1370
- $customer_from_session = FlycartWoocommerceSession::getSession('customer');
1371
- if(!empty($customer_from_session)){
1372
- if(isset($customer_from_session[$shippingFieldName])){
1373
- $postDataArray[$shippingFieldName] = $customer_from_session[$shippingFieldName];
1374
- } else if(isset($customer_from_session['shipping_city'])){
1375
- $postDataArray['shipping_city'] = $customer_from_session['shipping_city'];
1376
- if(empty($postDataArray[$shippingFieldName])){
1377
- $postDataArray[$shippingFieldName] = $postDataArray['shipping_city'];
1378
- }
1379
- }
1380
- }
1381
-
1382
- if(isset($postDataArray[$shippingFieldName]) && $postDataArray[$shippingFieldName] != ''){
1383
- $shippingState = $postDataArray[$shippingFieldName];
1384
- if(in_array(strtolower($shippingState), $rule) || in_array(strtoupper($shippingState), $rule)){
1385
- return true;
1386
- }
1387
- } else if(get_current_user_id()){
1388
- $shippingState = get_user_meta( get_current_user_id(), 'shipping_city', true );
1389
- if($shippingState != '' && !empty($shippingState)){
1390
- if(in_array(strtolower($shippingState), $rule) || in_array(strtoupper($shippingState), $rule)){
1391
- return true;
1392
- }
1393
- }
1394
- }
1395
- return false;
1396
- break;
1397
- case 'customer_shipping_zip_code':
1398
- $rule = explode(',', $rule);
1399
- if(is_array($rule) && count($rule)){
1400
- foreach($rule as $key => $r){
1401
- $rule[$key] = strtolower(trim($r));
1402
- }
1403
- }
1404
- $postData = $this->postData->get('post_data', '', 'raw');
1405
- $postDataArray = array();
1406
- if($postData != ''){
1407
- parse_str($postData, $postDataArray);
1408
- }
1409
- if(isset($postDataArray['ship_to_different_address']) && $postDataArray['ship_to_different_address']){
1410
- $shippingFieldName = 'shipping_postcode';
1411
- } else {
1412
- $shippingFieldName = 'billing_postcode';
1413
- }
1414
- $postShippingState = $this->postData->get($shippingFieldName, '', 'raw');
1415
- if($postShippingState != ''){
1416
- $postDataArray[$shippingFieldName] = $postShippingState;
1417
- }
1418
- $post_calc_shipping_postcode = $this->postData->get('calc_shipping_postcode', '', 'raw');
1419
- if(!empty($post_calc_shipping_postcode)){
1420
- $postDataArray[$shippingFieldName] = $post_calc_shipping_postcode;
1421
- }
1422
- if(!get_current_user_id()){
1423
- $order_id = $this->postData->get('order-received', 0);
1424
- if($order_id){
1425
- $order = FlycartWoocommerceOrder::wc_get_order($order_id);
1426
- $postDataArray['shipping_postcode'] = FlycartWoocommerceOrder::get_shipping_city($order);
1427
- }
1428
- }
1429
-
1430
- $customer_from_session = FlycartWoocommerceSession::getSession('customer');
1431
- if(!empty($customer_from_session)){
1432
- if(isset($customer_from_session[$shippingFieldName])){
1433
- $postDataArray[$shippingFieldName] = $customer_from_session[$shippingFieldName];
1434
- } else if(isset($customer_from_session['shipping_postcode'])){
1435
- $postDataArray['shipping_postcode'] = $customer_from_session['shipping_postcode'];
1436
- if(empty($postDataArray[$shippingFieldName])){
1437
- $postDataArray[$shippingFieldName] = $postDataArray['shipping_postcode'];
1438
- }
1439
- }
1440
- }
1441
-
1442
- if(isset($postDataArray[$shippingFieldName]) && $postDataArray[$shippingFieldName] != ''){
1443
- $shippingState = $postDataArray[$shippingFieldName];
1444
- if(in_array(strtolower($shippingState), $rule) || in_array(strtoupper($shippingState), $rule)){
1445
- return true;
1446
- }
1447
- } else if(get_current_user_id()){
1448
- $shippingState = get_user_meta( get_current_user_id(), 'shipping_postcode', true );
1449
- if($shippingState != '' && !empty($shippingState)){
1450
- if(in_array(strtolower($shippingState), $rule) || in_array(strtoupper($shippingState), $rule)){
1451
- return true;
1452
- }
1453
- }
1454
- }
1455
- return false;
1456
- break;
1457
- case 'products_in_list':
1458
- case 'products_not_in_list':
1459
- case 'exclude_sale_products':
1460
- case 'categories_in':
1461
- case 'exclude_categories':
1462
- case 'atleast_one_including_sub_categories':
1463
- case 'in_each_category':
1464
- $ruleSuccess = $this->validateCartItemsInSelectedProductsAndCategories($index, $rule, $rules, $rules_with_all_data, $rule_sets);
1465
- if($ruleSuccess){
1466
- return true;
1467
- } else {
1468
- return false;
1469
- }
1470
- break;
1471
- case 'customer_based_on_first_order':
1472
- case 'customer_based_on_purchase_history':
1473
- case 'customer_based_on_purchase_history_order_count':
1474
- case 'customer_based_on_purchase_history_product_order_count':
1475
- case 'customer_based_on_purchase_history_product_quantity_count':
1476
- if($index == 'customer_based_on_first_order'){
1477
- $rule = array();
1478
- }
1479
- if($index == 'customer_based_on_first_order' || count($rule)){
1480
- $ruleSuccess = $this->validateCartItemsBasedOnPurchaseHistory($index, $rule, $rules);
1481
- if($ruleSuccess){
1482
- return true;
1483
- }
1484
- }
1485
- return false;
1486
- break;
1487
- case 'create_dynamic_coupon':
1488
- case 'coupon_applied_any_one':
1489
- if(!empty($rule)){
1490
- $ruleSuccess = $this->validateCartCouponAppliedAnyOne($index, $rule, $rules);
1491
- if($ruleSuccess){
1492
- if(is_string($rule)){
1493
- $coupons = explode(',', $rule);
1494
- } elseif (is_array($rule)){
1495
- $coupons = $rule;
1496
- } else {
1497
- return false;
1498
- }
1499
- if($index == 'coupon_applied_any_one') {
1500
- FlycartWooDiscountRulesGeneralHelper::removeCouponPriceInCart($coupons);
1501
- }
1502
- if($index == 'create_dynamic_coupon'){
1503
- $apply_discount_in_same_coupon = apply_filters('woo_discount_rules_apply_discount_in_same_coupon_code_which_created', true, $rule, $rules);
1504
- if($apply_discount_in_same_coupon){
1505
- $this->coupon_code = $rule;
1506
- }
1507
- }
1508
- return true;
1509
- }
1510
- }
1511
- return false;
1512
- break;
1513
- case 'coupon_applied_all_selected':
1514
- if(!empty($rule)){
1515
- $ruleSuccess = $this->validateCartCouponAppliedAllSelected($index, $rule, $rules);
1516
- if($ruleSuccess){
1517
- if(is_string($rule)){
1518
- $coupons = explode(',', $rule);
1519
- } elseif (is_array($rule)){
1520
- $coupons = $rule;
1521
- } else {
1522
- return false;
1523
- }
1524
- FlycartWooDiscountRulesGeneralHelper::removeCouponPriceInCart($coupons);
1525
- return true;
1526
- }
1527
- }
1528
- return false;
1529
- break;
1530
- }
1531
-
1532
- }
1533
-
1534
- /**
1535
- * check the any one of the selected coupon applied
1536
- * */
1537
- protected function validateCartCouponAppliedAnyOne($index, $rule, $rules){
1538
- global $woocommerce;
1539
- $allowed = 0;
1540
- if(is_string($rule)){
1541
- $coupons = explode(',', $rule);
1542
- } elseif (is_array($rule)){
1543
- $coupons = $rule;
1544
- } else {
1545
- return 0;
1546
- }
1547
- if(is_array($coupons) && count($coupons)){
1548
- foreach ($coupons as $coupon){
1549
- if(!empty($coupon)) {
1550
- if (!empty($woocommerce->cart)) {
1551
- if (method_exists($woocommerce->cart, 'has_discount')) {
1552
- if($woocommerce->cart->has_discount($coupon)){
1553
- $allowed = 1;
1554
- break;
1555
- }
1556
- }
1557
- }
1558
- }
1559
- }
1560
- }
1561
-
1562
- return $allowed;
1563
- }
1564
-
1565
- /**
1566
- * check the all the selected coupon applied
1567
- * */
1568
- protected function validateCartCouponAppliedAllSelected($index, $rule, $rules){
1569
- global $woocommerce;
1570
- $allowed = 0;
1571
- if(is_string($rule)){
1572
- $coupons = explode(',', $rule);
1573
- } elseif (is_array($rule)){
1574
- $coupons = $rule;
1575
- } else {
1576
- return 0;
1577
- }
1578
- if(is_array($coupons) && count($coupons)){
1579
- foreach ($coupons as $coupon){
1580
- if(!empty($coupon)) {
1581
- if (!empty($woocommerce->cart)) {
1582
- if (method_exists($woocommerce->cart, 'has_discount')) {
1583
- if(!$woocommerce->cart->has_discount($coupon)){
1584
- $allowed = 0;
1585
- break;
1586
- } else {
1587
- $allowed = 1;
1588
- }
1589
- }
1590
- }
1591
- }
1592
-
1593
- }
1594
- }
1595
-
1596
- return $allowed;
1597
- }
1598
-
1599
- /**
1600
- * check the cart items satisfies purchase history rule
1601
- * */
1602
- protected function validateCartItemsBasedOnPurchaseHistory($index, $rule, $rules){
1603
- $allowed = 0;
1604
- $user = get_current_user_id();
1605
- $email = FlycartWooDiscountRulesGeneralHelper::get_billing_email_from_post();
1606
- if($user || !empty($email)){
1607
- if($index == 'customer_based_on_first_order'){
1608
- $rule['purchased_history_amount'] = 0;
1609
- $rule['purchased_history_type'] = 'less_than_or_equal';
1610
- $rule['purchased_history_duration'] = 'all_time';
1611
- }
1612
- $purchase_history_status_list = isset($rule['purchase_history_order_status'])? $rule['purchase_history_order_status']: array('wc-completed');
1613
- if(isset($rule['purchased_history_amount'])){
1614
- if($rule['purchased_history_amount'] >= 0){
1615
- $purchased_history_duration = isset($rule['purchased_history_duration'])? $rule['purchased_history_duration']: 'all_time';
1616
- $purchased_history_duration_days = isset($rule['purchased_history_duration_days'])? $rule['purchased_history_duration_days']: '';
1617
- $query = array(
1618
- 'numberposts' => -1,
1619
- 'meta_value' => $email,
1620
- 'post_type' => wc_get_order_types(),
1621
- 'post_status' => $purchase_history_status_list,
1622
- );
1623
- if($index == 'customer_based_on_first_order'){
1624
- $query['post_status'] = 'any';
1625
- $allowed = 1;
1626
- }
1627
- if($user){
1628
- $query['meta_value'] = $user;
1629
- $query['meta_key'] = '_customer_user';
1630
- } else {
1631
- $query['meta_key'] = '_billing_email';
1632
- }
1633
-
1634
- if($purchased_history_duration != 'all_time'){
1635
- $days = false;
1636
- if(in_array($purchased_history_duration, array('7_days', '14_days', '30_days', '60_days', '90_days', '180_days'))){
1637
- $split_days = explode('_', $purchased_history_duration);
1638
- if(isset($split_days['0'])){
1639
- if(((int)$split_days['0']) > 0){
1640
- $days = '- '.(int)$split_days['0'].' days';
1641
- }
1642
- }
1643
-
1644
- } else if($purchased_history_duration == '1_year'){
1645
- $days = '- 1 years';
1646
- } else if($purchased_history_duration == 'custom_days'){
1647
- if($purchased_history_duration_days > 0 ){
1648
- $purchased_history_duration_days = (int)$purchased_history_duration_days;
1649
- $days = '- '.$purchased_history_duration_days.' days';
1650
- }
1651
- }
1652
- if($days !== false){
1653
- $query['date_query'] = array(
1654
- 'column' => 'post_date',
1655
- 'after' => $days
1656
- );
1657
- }
1658
- }
1659
-
1660
- $customerOrders = get_posts( $query );
1661
- $totalPurchasedAmount = $totalOrder = $totalQuantityPurchased = 0;
1662
- if(!empty($customerOrders)){
1663
- foreach ($customerOrders as $customerOrder) {
1664
- if($index == 'customer_based_on_first_order'){
1665
- if(!in_array($customerOrder->post_status, array('wc-failed'))){
1666
- return 0;
1667
- } else{
1668
- continue;
1669
- }
1670
- }
1671
- $order = FlycartWoocommerceOrder::wc_get_order($customerOrder->ID);
1672
- $total = FlycartWoocommerceOrder::get_total($order);
1673
- if(($index == 'customer_based_on_purchase_history_product_order_count' || $index == 'customer_based_on_purchase_history_product_quantity_count') && isset($rule['purchase_history_products'])){
1674
- $products = $this->getProductsFromRule($rule['purchase_history_products']);
1675
- $product_ids = FlycartWoocommerceOrder::get_product_ids($order);
1676
- if(!empty($products)){
1677
- if (!count(array_intersect($products, $product_ids)) > 0) {
1678
- continue;
1679
- }
1680
- }
1681
- $product_quantities = FlycartWoocommerceOrder::get_product_quantities($order);
1682
- if(!empty($product_quantities) && !empty($products)){
1683
- foreach ($products as $product_id){
1684
- if(isset($product_quantities[$product_id])){
1685
- $totalQuantityPurchased += $product_quantities[$product_id];
1686
- }
1687
- }
1688
- }
1689
- }
1690
- $totalPurchasedAmount += $total;
1691
- $totalOrder++;
1692
- }
1693
- }
1694
-
1695
- $totalAmount = $totalPurchasedAmount;
1696
- if($index == 'customer_based_on_purchase_history_order_count' || $index == 'customer_based_on_purchase_history_product_order_count'){
1697
- $totalAmount = $totalOrder;
1698
- }
1699
- if($index == 'customer_based_on_purchase_history_product_quantity_count'){
1700
- $totalAmount = $totalQuantityPurchased;
1701
- }
1702
- $purchased_history_type = isset($rule['purchased_history_type'])? $rule['purchased_history_type']: 'atleast';
1703
- if($purchased_history_type == 'less_than_or_equal'){
1704
- if($totalAmount <= $rule['purchased_history_amount']){
1705
- $allowed = 1;
1706
- }
1707
- } else {
1708
- if($totalAmount >= $rule['purchased_history_amount']){
1709
- $allowed = 1;
1710
- }
1711
- }
1712
- }
1713
- }
1714
- }
1715
-
1716
- return $allowed;
1717
- }
1718
-
1719
- /**
1720
- * get product from rule
1721
- * */
1722
- public function getProductsFromRule($product){
1723
- $productInArray = array();
1724
- if(empty($product)) return $productInArray;
1725
- if(is_array($product)) $productInArray = $product;
1726
- else if(is_string($product)){
1727
- $productInArray = json_decode($product);
1728
- $productInArray = FlycartWoocommerceVersion::backwardCompatibilityStringToArray($productInArray);
1729
- }
1730
- if(!is_array($productInArray)){
1731
- $productInArray = array();
1732
- }
1733
-
1734
- $variants = null;
1735
- $productInArray = apply_filters('woo_discount_rule_products_to_include', $productInArray, array(), $variants);
1736
-
1737
- return $productInArray;
1738
- }
1739
-
1740
- /**
1741
- * Check product category matches
1742
- *
1743
- * @param $product object
1744
- * @param $categories array
1745
- * @return boolean
1746
- * */
1747
- protected function checkCategoryMatches($product, $categories){
1748
- $result = false;
1749
- $product_categories = FlycartWoocommerceProduct::get_category_ids($product);
1750
- if(!empty($product_categories)){
1751
- foreach ($product_categories as $cat_id){
1752
- if(in_array($cat_id, $categories)){
1753
- $result = true;
1754
- break;
1755
- }
1756
- }
1757
- }
1758
-
1759
- return $result;
1760
- }
1761
-
1762
- /**
1763
- * Check category found in cart
1764
- *
1765
- * @param $product object
1766
- * @param $categories array
1767
- * @param $rules array
1768
- * @param $rule_sets array
1769
- * @return boolean
1770
- * */
1771
- protected function checkAllCategoryFoundInCart($product, $categories, $rules, $rule_sets, $rules_with_all_data){
1772
- global $woocommerce;
1773
- $result = false;
1774
- $sub_total = $item_count = $quantity = array();
1775
- foreach ($woocommerce->cart->cart_contents as $key => $cartItem) {
1776
- $product_categories = FlycartWoocommerceProduct::get_category_ids($cartItem['data']);
1777
- $allow_discount = $this->checkForProductConditionsMatchesForAnProduct($cartItem['data'], $rules, $rules_with_all_data);
1778
- if($allow_discount){
1779
- if(!empty($product_categories)){
1780
- if(is_array($product_categories)){
1781
- foreach ($categories as $c_key => $cat_id){
1782
- if(in_array($cat_id, $product_categories)){
1783
- $_quantity = (isset($cartItem['quantity']) && $cartItem['quantity']) ? $cartItem['quantity'] : 1;
1784
- $_sub_total = self::getSubTotalOfCartItem($cartItem);
1785
- $_item_count = 1;
1786
-
1787
- if(isset($sub_total[$cat_id])){
1788
- $sub_total[$cat_id] += $_sub_total;
1789
- } else {
1790
- $sub_total[$cat_id] = $_sub_total;
1791
- }
1792
-
1793
- if(isset($item_count[$cat_id])){
1794
- $item_count[$cat_id] += $_item_count;
1795
- } else {
1796
- $item_count[$cat_id] = $_item_count;
1797
- }
1798
-
1799
- if(isset($quantity[$cat_id])){
1800
- $quantity[$cat_id] += $_quantity;
1801
- } else {
1802
- $quantity[$cat_id] = $_quantity;
1803
- }
1804
- }
1805
- }
1806
- }
1807
- }
1808
- }
1809
- }
1810
- foreach ($categories as $c_key => $cat_id){
1811
- $specific_cat = true;
1812
- foreach ($rules as $rule_type => $rule_values) {
1813
- if(!isset($sub_total[$cat_id])) $sub_total[$cat_id] = 0;
1814
- if(!isset($item_count[$cat_id])) $item_count[$cat_id] = 0;
1815
- if(!isset($quantity[$cat_id])) $quantity[$cat_id] = 0;
1816
- $ruleSuccess = $this->checkQtySubTotalConditionsMatches($rule_type, $rule_values, $rule_sets, $sub_total[$cat_id], $item_count[$cat_id], $quantity[$cat_id]);
1817
- if (!$ruleSuccess) {
1818
- $specific_cat = $result = false;
1819
- break;
1820
- } else {
1821
- $result = true;
1822
- }
1823
- }
1824
- if($specific_cat === false){
1825
- $result = false;
1826
- break;
1827
- }
1828
- }
1829
-
1830
- return $result;
1831
- }
1832
-
1833
- /**
1834
- * Check product matches
1835
- *
1836
- * @param $product object
1837
- * @param $products array
1838
- * @return boolean
1839
- * */
1840
- protected function checkProductMatches($product, $products){
1841
- $result = false;
1842
- $product_id = FlycartWoocommerceProduct::get_id($product);
1843
- if(in_array($product_id, $products)){
1844
- $result = true;
1845
- }
1846
-
1847
- return $result;
1848
- }
1849
-
1850
- /**
1851
- * Get variants of selected products
1852
- *
1853
- * @param $discount_type string
1854
- * @param $rules_with_all_data array
1855
- * @return array
1856
- * */
1857
- protected function getVariantsOfSelectedProduct($discount_type, $rules_with_all_data){
1858
- if(!empty($rules_with_all_data)){
1859
- foreach ($rules_with_all_data as $rule){
1860
- if(isset($rule[$discount_type]) && isset($rule['product_variants'])){
1861
- if(!empty($rule['product_variants'])){
1862
- return $rule['product_variants'];
1863
- }
1864
- }
1865
- }
1866
- }
1867
-
1868
- return array();
1869
- }
1870
-
1871
- /**
1872
- * Check Product matches for a product
1873
- *
1874
- * @param $product object
1875
- * @param $rules array
1876
- * @param $rules_with_all_data array
1877
- * @return boolean
1878
- * */
1879
- protected function checkForProductConditionsMatchesForAnProduct($product, $rules, $rules_with_all_data){
1880
- $allow_discount = true;
1881
- $config = FlycartWooDiscountBase::get_instance();
1882
- $include_variants_on_select_parent_product = $config->getConfigData('include_variants_on_select_parent_product', 0);
1883
- if($allow_discount){
1884
- //check for product in list
1885
- if(isset($rules['products_in_list'])){
1886
- if(!empty($rules['products_in_list']) && is_array($rules['products_in_list'])){
1887
- $product_ids = $rules['products_in_list'];
1888
- if($include_variants_on_select_parent_product){
1889
- $variant_ids = $this->getVariantsOfSelectedProduct('products_in_list', $rules_with_all_data);
1890
- if(!empty($variant_ids)){
1891
- $product_ids = array_merge($product_ids, $variant_ids);
1892
- $product_ids = array_unique($product_ids);
1893
- }
1894
- }
1895
- if(!empty($product_ids)){
1896
- $matched = $this->checkProductMatches($product, $product_ids);
1897
- if(!$matched){
1898
- $allow_discount = false;
1899
- }
1900
- }
1901
- } else {
1902
- $allow_discount = false;
1903
- }
1904
- }
1905
- }
1906
-
1907
- if($allow_discount){
1908
- //check for product not in list
1909
- if(isset($rules['products_not_in_list'])){
1910
- if(!empty($rules['products_not_in_list']) && is_array($rules['products_not_in_list'])){
1911
- $product_ids = $rules['products_not_in_list'];
1912
- if($include_variants_on_select_parent_product){
1913
- $variant_ids = $this->getVariantsOfSelectedProduct('products_not_in_list', $rules_with_all_data);
1914
- if(!empty($variant_ids)){
1915
- $product_ids = array_merge($product_ids, $variant_ids);
1916
- $product_ids = array_unique($product_ids);
1917
- }
1918
- }
1919
- if(!empty($product_ids)){
1920
- $matched = $this->checkProductMatches($product, $product_ids);
1921
- if($matched){
1922
- $allow_discount = false;
1923
- }
1924
- }
1925
- }
1926
- }
1927
- }
1928
- if($allow_discount){
1929
- //check for exclude products which are in sale
1930
- if(isset($rules['exclude_sale_products'])){
1931
- $product_id = FlycartWoocommerceProduct::get_id($product);
1932
- $original_product = FlycartWoocommerceProduct::wc_get_product($product_id);
1933
- $is_on_sale = FlycartWoocommerceProduct::is_product_is_on_sale($original_product);
1934
- if($is_on_sale){
1935
- $allow_discount = false;
1936
- }
1937
- }
1938
- }
1939
-
1940
- return $allow_discount;
1941
- }
1942
-
1943
- /**
1944
- * Check for Category and product conditions matches for the product
1945
- *
1946
- * @param $product object
1947
- * @param $rules array
1948
- * @param $rules_with_all_data array
1949
- * @param $rule_sets array
1950
- * @return boolean
1951
- * */
1952
- protected function checkForCategoryAndProductMatchesForAnProduct($product, $rules, $rules_with_all_data, $rule_sets){
1953
- $allow_discount = true;
1954
- if(isset($rules['categories_in'])){
1955
- if(!empty($rules['categories_in']) && is_array($rules['categories_in'])){
1956
- $matched = $this->checkCategoryMatches($product, $rules['categories_in']);
1957
- if(!$matched){
1958
- $allow_discount = false;
1959
- }
1960
- } else {
1961
- $allow_discount = false;
1962
- }
1963
- }
1964
- if(isset($rules['exclude_categories'])){
1965
- if(!empty($rules['exclude_categories']) && is_array($rules['exclude_categories'])){
1966
- $matched = $this->checkCategoryMatches($product, $rules['exclude_categories']);
1967
- if($matched){
1968
- $allow_discount = false;
1969
- }
1970
- }
1971
- }
1972
- if($allow_discount){
1973
- if(isset($rules['atleast_one_including_sub_categories'])){
1974
- if(!empty($rules['atleast_one_including_sub_categories']) && is_array($rules['atleast_one_including_sub_categories'])){
1975
- $categories = FlycartWooDiscountRulesGeneralHelper::getAllSubCategories($rules['atleast_one_including_sub_categories']);
1976
- $matched = $this->checkCategoryMatches($product, $categories);
1977
- if(!$matched){
1978
- $allow_discount = false;
1979
- }
1980
- } else {
1981
- $allow_discount = false;
1982
- }
1983
- }
1984
- }
1985
-
1986
- if($allow_discount){
1987
- if(isset($rules['in_each_category'])){
1988
- if(!empty($rules['in_each_category']) && is_array($rules['in_each_category'])){
1989
- $has_found_each_category = $this->checkAllCategoryFoundInCart($product, $rules['in_each_category'], $rules, $rule_sets, $rules_with_all_data);
1990
- if($has_found_each_category){
1991
- $found_at_least_one = false;
1992
- foreach ($rules['in_each_category'] as $category){
1993
- $matched = $this->checkCategoryMatches($product, array($category));
1994
- if($matched){
1995
- $found_at_least_one = true;
1996
- break;
1997
- }
1998
- }
1999
- if($found_at_least_one){
2000
- $allow_discount = true;
2001
- } else {
2002
- $allow_discount = false;
2003
- }
2004
- } else {
2005
- $allow_discount = false;
2006
- }
2007
- } else {
2008
- $allow_discount = false;
2009
- }
2010
- }
2011
- }
2012
-
2013
- if($allow_discount){
2014
- $allow_discount = $this->checkForProductConditionsMatchesForAnProduct($product, $rules, $rules_with_all_data);
2015
- }
2016
-
2017
- return $allow_discount;
2018
- }
2019
-
2020
- /**
2021
- * verify the cart items are from selected category
2022
- * */
2023
- protected function validateCartItemsInSelectedProductsAndCategories($index, $rule, $rules, $rules_with_all_data, $rule_sets){
2024
- if($this->checked_for_categories_and_product_match){
2025
- return $this->categories_and_product_match_value;
2026
- }
2027
- $ruleSuccess = 0;
2028
- global $woocommerce;
2029
- $allow_discount = $sub_total = $quantity = $item_count = 0;
2030
- if(count($woocommerce->cart->cart_contents)){
2031
- foreach ($woocommerce->cart->cart_contents as $key => $cartItem) {
2032
- $matches = $this->checkForCategoryAndProductMatchesForAnProduct($cartItem['data'], $rules, $rules_with_all_data, $rule_sets);
2033
- if($matches){
2034
- $allow_discount = 1;
2035
- $cart_item_quantity = (isset($cartItem['quantity']) && $cartItem['quantity']) ? $cartItem['quantity'] : 1;
2036
- $sub_total += self::getSubTotalOfCartItem($cartItem);
2037
- $quantity += $cart_item_quantity;
2038
- $item_count++;
2039
- }
2040
- }
2041
- }
2042
- if($allow_discount){
2043
- $ruleSuccess = 1;
2044
- $process_condition_check = true;
2045
- if(isset($rules['in_each_category']) && !empty($rules['in_each_category'])){
2046
- $process_condition_check = false;
2047
- }
2048
- if($process_condition_check){
2049
- if(is_array($rules) && count($rules)){
2050
- foreach ($rules as $rule_type => $rule_values){
2051
- $ruleSuccessResult = $this->checkQtySubTotalConditionsMatches($rule_type, $rule_values, $rule_sets, $sub_total, $item_count, $quantity);
2052
- if(!$ruleSuccessResult){
2053
- $ruleSuccess = 0;
2054
- break;
2055
- }
2056
- }
2057
- }
2058
- }
2059
- }
2060
- $this->categories_and_product_match_value = $ruleSuccess;
2061
- return $ruleSuccess;
2062
- }
2063
-
2064
- /**
2065
- * Check Quantity, Sub-Total, Item Count matches
2066
- *
2067
- * @param $rule_type string
2068
- * @param $rule_values mixed
2069
- * @param $rule_sets array
2070
- * @param $sub_total float
2071
- * @param $item_count int
2072
- * @param $quantity int
2073
- *
2074
- * @return int
2075
- * */
2076
- protected function checkQtySubTotalConditionsMatches($rule_type, $rule_values, $rule_sets, $sub_total, $item_count, $quantity){
2077
- $ruleSuccess = 1;
2078
- $checkRuleTypes = array('quantity_least', 'quantity_less', 'subtotal_least', 'subtotal_less', 'item_count_least', 'item_count_less');
2079
- if(in_array($rule_type, $checkRuleTypes)){
2080
- if($rule_type == 'subtotal_least'){
2081
- if ($sub_total < $rule_values) {
2082
- $this->processPromotionMessage($rule_sets, $rule_values, $rule_type, array('subtotal' => $sub_total));
2083
- $ruleSuccess = 0;
2084
- }
2085
- } elseif ($rule_type == 'subtotal_less'){
2086
- if ($sub_total >= $rule_values) {
2087
- $ruleSuccess = 0;
2088
- }
2089
- } elseif ($rule_type == 'item_count_least'){
2090
- if ($item_count < $rule_values) {
2091
- $ruleSuccess = 0;
2092
- }
2093
- } elseif ($rule_type == 'item_count_less'){
2094
- if ($item_count >= $rule_values) {
2095
- $ruleSuccess = 0;
2096
- }
2097
- } elseif ($rule_type == 'quantity_least'){
2098
- if ($quantity < $rule_values) {
2099
- $ruleSuccess = 0;
2100
- }
2101
- } elseif ($rule_type == 'quantity_less'){
2102
- if ($quantity >= $rule_values) {
2103
- $ruleSuccess = 0;
2104
- }
2105
- }
2106
- }
2107
-
2108
- return $ruleSuccess;
2109
- }
2110
-
2111
- /**
2112
- * Get tld from email
2113
- * */
2114
- protected function getTLDFromEmail($email){
2115
- $emailArray = explode('@', $email);
2116
- if(isset($emailArray[1])){
2117
- $emailDomainArray = explode('.', $emailArray[1]);
2118
- if(count($emailDomainArray)>1){
2119
- unset($emailDomainArray[0]);
2120
- }
2121
- if(count($emailDomainArray) > 1){
2122
- return array(end($emailDomainArray), implode('.', $emailDomainArray));
2123
- } else {
2124
- return implode('.', $emailDomainArray);
2125
- }
2126
- }
2127
-
2128
- return $emailArray[0];
2129
- }
2130
-
2131
- /**
2132
- * validate tld from email
2133
- * */
2134
- protected function validateTLD($tlds, $rule){
2135
- if(is_array($tlds)){
2136
- foreach($tlds as $tld){
2137
- if(in_array($tld, $rule)){
2138
- return true;
2139
- }
2140
- }
2141
- } else {
2142
- if(in_array($tlds, $rule)){
2143
- return true;
2144
- }
2145
- }
2146
-
2147
- return false;
2148
- }
2149
-
2150
- /**
2151
- * Get tld from email
2152
- * */
2153
- protected function getDomainFromEmail($email){
2154
- $emailArray = explode('@', $email);
2155
- if(isset($emailArray[1])){
2156
- return $emailArray[1];
2157
- }
2158
- return $emailArray[0];
2159
- }
2160
-
2161
- /**
2162
- * Get cart total amount
2163
- *
2164
- * @access public
2165
- * @return float
2166
- */
2167
- public function calculateCartSubtotal()
2168
- {
2169
- if(!empty($this->cart_items)){
2170
- $run_before_calculate_event = apply_filters('woo_discount_rules_run_before_calculate_event_on_before_calculate_subtotal_in_cart_rules', true);
2171
- if(!did_action('woocommerce_before_calculate_totals') && $run_before_calculate_event == true){
2172
- do_action('woocommerce_before_calculate_totals', FlycartWoocommerceCart::get_cart_object());
2173
- }
2174
- }
2175
-
2176
- $cart_subtotal = 0;
2177
- // Iterate over all cart items and
2178
- if(is_array($this->cart_items) && count($this->cart_items)){
2179
- foreach ($this->cart_items as $cart_item_key => $cart_item) {
2180
- $cart_subtotal += self::getSubTotalOfCartItem($cart_item);
2181
- }
2182
- }
2183
-
2184
- $this->sub_total = (float)$cart_subtotal;
2185
-
2186
- }
2187
-
2188
- /**
2189
- * Get subtotal of cart item
2190
- *
2191
- * @param $cart_item array
2192
- * @return integer/float
2193
- * */
2194
- public static function getSubTotalOfCartItem($cart_item){
2195
- $subtotal = 0;
2196
- if(get_option('woocommerce_tax_display_cart', 'incl') == 'incl'){
2197
- if(isset($cart_item['line_subtotal'])){
2198
- $subtotal = $cart_item['line_subtotal'];
2199
- }
2200
- if(isset($cart_item['line_subtotal_tax'])){
2201
- $subtotal += $cart_item['line_subtotal_tax'];
2202
- }
2203
- } else {
2204
- $quantity = (isset($cart_item['quantity']) && $cart_item['quantity']) ? $cart_item['quantity'] : 1;
2205
- $subtotal = ((float)FlycartWoocommerceProduct::get_price($cart_item['data'], true)) * $quantity;
2206
- }
2207
-
2208
- return $subtotal;
2209
- }
2210
-
2211
- /**
2212
- * Get price of cart item
2213
- *
2214
- * @param $cart_item array
2215
- * @return integer/float
2216
- * */
2217
- public function getPriceOfCartItem($cart_item){
2218
- if(get_option('woocommerce_tax_display_cart', 'incl') == 'incl'){
2219
- $price = FlycartWoocommerceProduct::get_price_including_tax($cart_item['data']);
2220
- } else {
2221
- $price = ((float)FlycartWoocommerceProduct::get_price($cart_item['data'], true));
2222
- }
2223
-
2224
- return $price;
2225
- }
2226
-
2227
- public function calculate_conditional_subtotal($conditions, $rule) {
2228
- $cart_subtotal = 0;
2229
- $rules = $rules_with_all_data = array();
2230
- if(isset($rule['discount_rule'])){
2231
- $rules = (is_string($rule['discount_rule']) ? json_decode($rule['discount_rule'], true) : array());
2232
- $rules_with_all_data = $rules;
2233
- // Simple array helper to re-arrange the structure.
2234
- FlycartWooDiscountRulesGeneralHelper::reArrangeArray($rules);
2235
- }
2236
- // Iterate over all cart items and
2237
- if(is_array($this->cart_items) && count($this->cart_items)){
2238
- foreach ($this->cart_items as $cart_item_key => $cart_item) {
2239
- $apply_discount = false;
2240
-
2241
- if($this->has_category_in_rule || $this->has_product_specific_rule){
2242
- $matches = $this->checkForCategoryAndProductMatchesForAnProduct($cart_item['data'], $rules, $rules_with_all_data, $rule);
2243
- if($matches){
2244
- $apply_discount = true;
2245
- }
2246
- }
2247
-
2248
- if($apply_discount) {
2249
- //total should be specific to the products from certan categories
2250
- $cart_subtotal += self::getSubTotalOfCartItem($cart_item);
2251
- }
2252
-
2253
- }
2254
- }
2255
-
2256
- return (float)$cart_subtotal;
2257
-
2258
- }
2259
-
2260
- public function does_item_belong_to_category($categories, $product) {
2261
- $cat_id = FlycartWoocommerceProduct::get_category_ids($product);
2262
- $result = array_intersect($categories, $cat_id);
2263
- if(is_array($result) && count($result) > 0) {
2264
- return true;
2265
- }
2266
- return false;
2267
- }
2268
-
2269
- /**
2270
- * To Sum the Cart Item's Qty.
2271
- *
2272
- * @return int Total Qty of Cart.
2273
- */
2274
- public function cartItemQtyTotal()
2275
- {
2276
- global $woocommerce;
2277
- $cart_items = $woocommerce->cart->cart_contents;
2278
- $total_quantity = 0;
2279
- if(is_array($cart_items) && count($cart_items)){
2280
- foreach ($cart_items as $cart_item) {
2281
- $current_quantity = (isset($cart_item['quantity']) && $cart_item['quantity']) ? $cart_item['quantity'] : 1;
2282
- $total_quantity += $current_quantity;
2283
- }
2284
- }
2285
- return $total_quantity;
2286
- }
2287
-
2288
- /**
2289
- * Overall Discount Calculation based on Percentage or Flat.
2290
- *
2291
- * @param integer $sub_total Subtotal of the Cart.
2292
- * @param integer $adjustment percentage or discount of adjustment.
2293
- * @return integer Final Discount Amount.
2294
- */
2295
- public function calculateDiscount($sub_total, $adjustment)
2296
- {
2297
- $sub_total = ($sub_total < 0) ? 0 : $sub_total;
2298
-
2299
- $discount = 0;
2300
-
2301
- if ($adjustment['type'] == 'percentage') {
2302
- if(((float)$adjustment['value']) > 0){
2303
- $discount = $sub_total * ($adjustment['value'] / 100);
2304
- }
2305
- } else if ($adjustment['type'] == 'price') {
2306
- if(((float)$adjustment['value']) > 0){
2307
- $discount = $adjustment['value'];
2308
- }
2309
- }
2310
-
2311
- return ($discount <= 0) ? 0 : $discount;
2312
- }
2313
-
2314
- /**
2315
- * @param array $product_ids - list of discount products from admin settings
2316
- * @param int $discount_quantity - quantity of products to be discount
2317
- * @param string $rule_text - Text to be shown for coupon code
2318
- * @return int
2319
- */
2320
- public function calculateProductDiscount(array $product_ids = array(), $discount_quantity = 1,$rule_text ="")
2321
- {
2322
- $have_to_do = apply_filters('woo_discount_rules_process_cart_bogo_auto_add', true);
2323
-
2324
- if(!$have_to_do){
2325
- return true;
2326
- }
2327
-
2328
- if (empty($product_ids))
2329
- return true;
2330
- if(empty($rule_text))
2331
- $rule_text = apply_filters('woo_discount_rules_cart_bogo_coupon_code', '{{product_name}} X {{quantity}}');
2332
- $carts = FlycartWoocommerceCart::get_cart();
2333
- if(empty($carts))
2334
- return true;
2335
- $added_products = array();
2336
- foreach ($carts as $cart_item_key => $cart_item) {
2337
- if (empty($cart_item['data'])) {
2338
- continue;
2339
- }
2340
- $product_id = FlycartWoocommerceProduct::get_id($cart_item['data']);
2341
- if (isset($added_products[$product_id]) && !empty($added_products[$product_id])) {
2342
- $added_products[$product_id]['item_quantity'] = $added_products[$product_id]['item_quantity'] + $cart_item['quantity'];
2343
- } else {
2344
- $added_products[$product_id] = array('product' => $cart_item['data'], 'item_name' => FlycartWoocommerceProduct::get_name($cart_item['data']), 'item_quantity' => $cart_item['quantity'], 'item' => $cart_item_key, 'item_price' => FlycartWoocommerceProduct::get_price($cart_item['data'], true));
2345
- }
2346
- }
2347
- if(is_array($product_ids) && count($product_ids)){
2348
- foreach ($product_ids as $discounted_product_id) {
2349
- $discounted_price=0;
2350
- //Check the discounted product already found in cart
2351
- if (array_key_exists($discounted_product_id, $added_products)) {
2352
- $old_quantity = isset($added_products[$discounted_product_id]['item_quantity']) ? $added_products[$discounted_product_id]['item_quantity'] : 0;
2353
- if ($old_quantity < $discount_quantity) {
2354
- if (isset($added_products[$discounted_product_id]['item']) && !empty($added_products[$discounted_product_id]['item'])) {
2355
- FlycartWoocommerceCart::set_quantity($added_products[$discounted_product_id]['item'], $discount_quantity);
2356
- }
2357
- }
2358
- $discounted_price = ($discount_quantity * $added_products[$discounted_product_id]['item_price']);
2359
- $coupon_msg = self::formatBOGOCouponCode($added_products[$discounted_product_id]['item_name'], $discount_quantity, $added_products[$discounted_product_id]['product'], $rule_text);
2360
- if(isset($added_products[$discounted_product_id]) && isset($added_products[$discounted_product_id]['item_quantity'])){
2361
- if(!empty($added_products[$discounted_product_id]['item_quantity']) && ((int)$added_products[$discounted_product_id]['item_quantity']) > 0){
2362
- $discounted_price = $discounted_price/$added_products[$discounted_product_id]['item_quantity'];
2363
- }
2364
- }
2365
- $this->bogo_coupon_codes[$coupon_msg] = array('product_id' => $discounted_product_id, 'amount' => $discounted_price);
2366
- } else {
2367
- //If product not in cart,then add to cart
2368
- $product = FlycartWoocommerceProduct::wc_get_product($discounted_product_id);
2369
- if($product) {
2370
- if(!(!empty(self::$added_bogo_product_ids) && in_array($discounted_product_id, self::$added_bogo_product_ids))){
2371
- $cart_item_key = FlycartWoocommerceCart::add_to_cart($discounted_product_id, $discount_quantity);
2372
- self::$added_bogo_product_ids[] = $discounted_product_id;
2373
- global $flycart_woo_discount_rules;
2374
- add_filter('woo_discount_rules_apply_rules_repeatedly', '__return_true');//Fix: In few cases the strikeout doesn't applies
2375
- $flycart_woo_discount_rules->discountBase->handlePriceDiscount();
2376
- if(!empty($cart_item_key)){
2377
- $cart_item = FlycartWoocommerceCart::get_cart_item($cart_item_key);
2378
- if(!empty($cart_item['data'])){
2379
- $product = $cart_item['data'];
2380
- }
2381
- }
2382
- do_action('woo_discount_rules_cart_rules_after_adding_free_product_to_cart');
2383
- $discounted_price = ($discount_quantity * FlycartWoocommerceProduct::get_price($product, true));
2384
- $coupon_msg = self::formatBOGOCouponCode(FlycartWoocommerceProduct::get_name($product), $discount_quantity, $product, $rule_text);
2385
- if(isset($added_products[$discounted_product_id]) && isset($added_products[$discounted_product_id]['item_quantity'])){
2386
- if(!empty($added_products[$discounted_product_id]['item_quantity']) && ((int)$added_products[$discounted_product_id]['item_quantity']) > 0){
2387
- $discounted_price = $discounted_price/$added_products[$discounted_product_id]['item_quantity'];
2388
- }
2389
- }
2390
- $this->bogo_coupon_codes[$coupon_msg] = array('product_id' => $discounted_product_id, 'amount' => $discounted_price);
2391
- }
2392
- }
2393
- }
2394
- $this->product_discount_total += $discounted_price;
2395
- }
2396
- }
2397
-
2398
- return true;
2399
- }
2400
-
2401
- /**
2402
- * Validate for product discount rules
2403
- * @param $conditions
2404
- * @param $rule_set
2405
- * @return bool
2406
- */
2407
- function validateBOGOCart($conditions, $rule_set, $rule_sets){
2408
- $this->checked_for_categories_and_product_match = false;
2409
- $this->calculateCartSubtotal();
2410
- $rules = (is_string($conditions) ? json_decode($conditions, true) : array());
2411
- // Simple array helper to re-arrange the structure.
2412
- $rules_with_all_data = $rules;
2413
- FlycartWooDiscountRulesGeneralHelper::reArrangeArray($rules);
2414
- if(is_array($rules) && count($rules)){
2415
- foreach ($rules as $index => $rule) {
2416
- // Validating the Rules one by one.
2417
- if ($this->applyCartBOGORule($index, $rule, $rules, $rule_set, $rules_with_all_data, $rule_sets) == false) {
2418
- return false;
2419
- }
2420
- }
2421
- }
2422
- return true;
2423
- }
2424
-
2425
- /**
2426
- * Rules for only BOGO products
2427
- * @param $index
2428
- * @param $rule
2429
- * @param $rules
2430
- * @param $rule_set
2431
- * @return bool
2432
- */
2433
- function applyCartBOGORule($index, $rule, $rules, $rule_set, $rules_with_all_data, $rule_sets){
2434
- //Calculating subtotal, quantity for BOGO Products
2435
- $cart = array();
2436
- $free_line_item = 0;
2437
- $free_quantity = 0;
2438
- $free_item_price = 0;
2439
- if(is_array($this->cart_items) && count($this->cart_items)){
2440
- foreach ($this->cart_items as $cart_items){
2441
- $product_id = FlycartWoocommerceProduct::get_id($cart_items['data']);
2442
- $cart[$product_id]['quantity'] = $cart_items['quantity'];
2443
- $cart[$product_id]['price'] = $this->getPriceOfCartItem($cart_items);
2444
- $cart[$product_id]['subtotal'] = self::getSubTotalOfCartItem($cart_items);
2445
- }
2446
- }
2447
- $discounted_products = (isset($rule_set->cart_discounted_products)) ? $rule_set->cart_discounted_products : '[]';
2448
- $products = json_decode($discounted_products);
2449
- $rule_discount_quantity = (isset($rule_set->product_discount_quantity)) ? $rule_set->product_discount_quantity : 0;
2450
- if(FlycartWooDiscountRulesGeneralHelper::is_countable($products)){
2451
- foreach ($products as $discounted_product_id) {
2452
- if(array_key_exists($discounted_product_id,$cart))
2453
- {
2454
- if(isset($cart[$discounted_product_id]['price'])){
2455
- $free_line_item += 1;
2456
- $free_quantity += $rule_discount_quantity;
2457
- $free_item_price += $cart[$discounted_product_id]['price'];
2458
- }
2459
- }
2460
- }
2461
- }
2462
- $cart_quantity_except_free = array_sum(array_column($cart,'quantity')) - $free_quantity;
2463
- $cart_subtotal_except_free = array_sum(array_column($cart,'subtotal')) - $free_item_price;
2464
- $cart_line_item_except_free = (count($cart)-$free_line_item);
2465
-
2466
- $skipRuleType = array('categories_in', 'exclude_categories', 'in_each_category', 'atleast_one_including_sub_categories', 'products_in_list', 'products_not_in_list', 'exclude_sale_products');
2467
- $availableRuleToSkip = array_intersect($skipRuleType, array_keys($rules));
2468
- switch ($index) {
2469
- // Cart Subtotal.
2470
- case 'subtotal_least':
2471
- if(!empty($availableRuleToSkip)){
2472
- } elseif ($cart_subtotal_except_free < $rule) {
2473
- $this->processPromotionMessage($rule_sets, $rule, $index);
2474
- return false;
2475
- }
2476
- return true;
2477
- break;
2478
- case 'subtotal_less':
2479
- if(!empty($availableRuleToSkip)){
2480
- } elseif ($cart_subtotal_except_free >= $rule) {
2481
- return false;
2482
- }
2483
- return true;
2484
- break;
2485
-
2486
- // Cart Item Count.
2487
- case 'item_count_least':
2488
- if(!empty($availableRuleToSkip)){
2489
- } elseif ($cart_line_item_except_free < $rule) {
2490
- return false;
2491
- }
2492
- return true;
2493
- break;
2494
- case 'item_count_less':
2495
- if(!empty($availableRuleToSkip)){
2496
- } elseif ($cart_line_item_except_free >= $rule) {
2497
- return false;
2498
- }
2499
- return true;
2500
- break;
2501
-
2502
- // Quantity Count.
2503
- case 'quantity_least':
2504
- if(!empty($availableRuleToSkip)){
2505
- } elseif ($cart_quantity_except_free < $rule) {
2506
- return false;
2507
- }
2508
- return true;
2509
- break;
2510
- case 'quantity_less':
2511
- if(!empty($availableRuleToSkip)){
2512
- } elseif ($cart_quantity_except_free >= $rule) {
2513
- return false;
2514
- }
2515
- return true;
2516
- break;
2517
-
2518
- // Logged In Users.
2519
- case 'users_in':
2520
- $rule = FlycartWoocommerceVersion::backwardCompatibilityStringToArray($rule);
2521
- if (get_current_user_id() == 0 || !in_array(get_current_user_id(), $rule)) {
2522
- return false;
2523
- }
2524
- return true;
2525
- break;
2526
- case 'shipping_countries_in':
2527
- $postCalcShippingCountry = $this->postData->get('calc_shipping_country', '');
2528
- if(!empty($postCalcShippingCountry)){
2529
- $shippingCountry = $postCalcShippingCountry;
2530
- }
2531
- if(empty($shippingCountry)){
2532
- $shippingCountry = WC()->customer->get_shipping_country();
2533
- }
2534
- if (empty($shippingCountry) || !in_array($shippingCountry, $rule)) {
2535
- return false;
2536
- }
2537
- return true;
2538
- break;
2539
- case 'roles_in':
2540
- if (count(array_intersect(FlycartWooDiscountRulesGeneralHelper::getCurrentUserRoles(), $rule)) == 0) {
2541
- return false;
2542
- }
2543
- return true;
2544
- break;
2545
- case ($index == 'customer_email_tld' || $index == 'customer_email_domain'):
2546
- $rule = explode(',', $rule);
2547
- if(is_array($rule) && count($rule)){
2548
- foreach($rule as $key => $r){
2549
- $rule[$key] = trim($r);
2550
- $rule[$key] = trim($rule[$key], '.');
2551
- }
2552
- }
2553
- $postData = $this->postData->get('post_data', '', 'raw');
2554
- $postDataArray = array();
2555
- if($postData != ''){
2556
- parse_str($postData, $postDataArray);
2557
- }
2558
- $postBillingEmail = $this->postData->get('billing_email', '', 'raw');
2559
- if($postBillingEmail != ''){
2560
- $postDataArray['billing_email'] = $postBillingEmail;
2561
- }
2562
- if(!get_current_user_id()){
2563
- $order_id = $this->postData->get('order-received', 0);
2564
- if($order_id){
2565
- $order = FlycartWoocommerceOrder::wc_get_order($order_id);
2566
- $postDataArray['billing_email'] = FlycartWoocommerceOrder::get_billing_email($order);
2567
- }
2568
- }
2569
- if(isset($postDataArray['billing_email']) && $postDataArray['billing_email'] != ''){
2570
- $user_email = $postDataArray['billing_email'];
2571
- if(get_current_user_id()){
2572
- update_user_meta(get_current_user_id(), 'billing_email', $user_email);
2573
- }
2574
- if($index == 'customer_email_tld')
2575
- $tld = $this->getTLDFromEmail($user_email);
2576
- else
2577
- $tld = $this->getDomainFromEmail($user_email);
2578
- if($this->validateTLD($tld, $rule)){
2579
- return true;
2580
- }
2581
- } else if(get_current_user_id()){
2582
- $user_email = get_user_meta( get_current_user_id(), 'billing_email', true );
2583
- if($user_email != '' && !empty($user_email)){
2584
- if($index == 'customer_email_tld')
2585
- $tld = $this->getTLDFromEmail($user_email);
2586
- else
2587
- $tld = $this->getDomainFromEmail($user_email);
2588
- if($this->validateTLD($tld, $rule)){
2589
- return true;
2590
- }
2591
- } else {
2592
- $user_details = get_userdata( get_current_user_id() );
2593
- if(isset($user_details->data->user_email) && $user_details->data->user_email != ''){
2594
- $user_email = $user_details->data->user_email;
2595
- if($index == 'customer_email_tld')
2596
- $tld = $this->getTLDFromEmail($user_email);
2597
- else
2598
- $tld = $this->getDomainFromEmail($user_email);
2599
- if($this->validateTLD($tld, $rule)){
2600
- return true;
2601
- }
2602
- }
2603
- }
2604
- }
2605
- return false;
2606
- break;
2607
-
2608
- case 'customer_billing_city':
2609
- $rule = explode(',', $rule);
2610
- if(is_array($rule) && count($rule)){
2611
- foreach($rule as $key => $r){
2612
- $rule[$key] = strtolower(trim($r));
2613
- }
2614
- }
2615
- $postData = $this->postData->get('post_data', '', 'raw');
2616
- $postDataArray = array();
2617
- if($postData != ''){
2618
- parse_str($postData, $postDataArray);
2619
- }
2620
- $postBillingEmail = $this->postData->get('billing_city', '', 'raw');
2621
- if($postBillingEmail != ''){
2622
- $postDataArray['billing_city'] = $postBillingEmail;
2623
- }
2624
- if(!get_current_user_id()){
2625
- $order_id = $this->postData->get('order-received', 0);
2626
- if($order_id){
2627
- $order = FlycartWoocommerceOrder::wc_get_order($order_id);
2628
- $postDataArray['billing_city'] = FlycartWoocommerceOrder::get_billing_city($order);
2629
- }
2630
- }
2631
- if(isset($postDataArray['billing_city']) && $postDataArray['billing_city'] != ''){
2632
- $billingCity = $postDataArray['billing_city'];
2633
- if(in_array(strtolower($billingCity), $rule)){
2634
- return true;
2635
- }
2636
- } else if(get_current_user_id()){
2637
- $billingCity = get_user_meta( get_current_user_id(), 'billing_city', true );
2638
- if($billingCity != '' && !empty($billingCity)){
2639
- if(in_array(strtolower($billingCity), $rule)){
2640
- return true;
2641
- }
2642
- }
2643
- }
2644
- return false;
2645
- break;
2646
- case 'customer_shipping_state':
2647
- $rule = explode(',', $rule);
2648
- if(is_array($rule) && count($rule)){
2649
- foreach($rule as $key => $r){
2650
- $rule[$key] = strtolower(trim($r));
2651
- }
2652
- }
2653
- $postData = $this->postData->get('post_data', '', 'raw');
2654
- $postDataArray = array();
2655
- if($postData != ''){
2656
- parse_str($postData, $postDataArray);
2657
- }
2658
- if(isset($postDataArray['ship_to_different_address']) && $postDataArray['ship_to_different_address']){
2659
- $shippingFieldName = 'shipping_state';
2660
- } else {
2661
- $shippingFieldName = 'billing_state';
2662
- }
2663
- $postShippingState = $this->postData->get($shippingFieldName, '', 'raw');
2664
- if($postShippingState != ''){
2665
- $postDataArray[$shippingFieldName] = $postShippingState;
2666
- }
2667
-
2668
- $postCalcShippingState = $this->postData->get('calc_shipping_state', '', 'raw');
2669
- if(!empty($postCalcShippingState)){
2670
- $postDataArray[$shippingFieldName] = $postCalcShippingState;
2671
- }
2672
-
2673
- if(!get_current_user_id()){
2674
- $order_id = $this->postData->get('order-received', 0);
2675
- if($order_id){
2676
- $order = FlycartWoocommerceOrder::wc_get_order($order_id);
2677
- $postDataArray['shipping_state'] = FlycartWoocommerceOrder::get_shipping_state($order);
2678
- }
2679
- }
2680
-
2681
- $customer_from_session = FlycartWoocommerceSession::getSession('customer');
2682
- if(!empty($customer_from_session)){
2683
- if(isset($customer_from_session[$shippingFieldName])){
2684
- $postDataArray[$shippingFieldName] = $customer_from_session[$shippingFieldName];
2685
- } else if(isset($customer_from_session['shipping_state'])){
2686
- $postDataArray['shipping_state'] = $customer_from_session['shipping_state'];
2687
- if(empty($postDataArray[$shippingFieldName])){
2688
- $postDataArray[$shippingFieldName] = $postDataArray['shipping_state'];
2689
- }
2690
- }
2691
- }
2692
-
2693
- if(isset($postDataArray[$shippingFieldName]) && $postDataArray[$shippingFieldName] != ''){
2694
- $shippingState = $postDataArray[$shippingFieldName];
2695
- if(in_array(strtolower($shippingState), $rule) || in_array(strtoupper($shippingState), $rule)){
2696
- return true;
2697
- }
2698
- } else if(get_current_user_id()){
2699
- $shippingState = get_user_meta( get_current_user_id(), 'shipping_state', true );
2700
- if($shippingState != '' && !empty($shippingState)){
2701
- if(in_array(strtolower($shippingState), $rule) || in_array(strtoupper($shippingState), $rule)){
2702
- return true;
2703
- }
2704
- }
2705
- }
2706
- return false;
2707
- break;
2708
- case 'customer_shipping_city':
2709
- $rule = explode(',', $rule);
2710
- if(is_array($rule) && count($rule)){
2711
- foreach($rule as $key => $r){
2712
- $rule[$key] = strtolower(trim($r));
2713
- }
2714
- }
2715
- $postData = $this->postData->get('post_data', '', 'raw');
2716
- $postDataArray = array();
2717
- if($postData != ''){
2718
- parse_str($postData, $postDataArray);
2719
- }
2720
- if(isset($postDataArray['ship_to_different_address']) && $postDataArray['ship_to_different_address']){
2721
- $shippingFieldName = 'shipping_city';
2722
- } else {
2723
- $shippingFieldName = 'billing_city';
2724
- }
2725
- $postShippingState = $this->postData->get($shippingFieldName, '', 'raw');
2726
- if($postShippingState != ''){
2727
- $postDataArray[$shippingFieldName] = $postShippingState;
2728
- }
2729
-
2730
- $postCalcShippingCity = $this->postData->get('calc_shipping_city', '', 'raw');
2731
- if(!empty($postCalcShippingCity)){
2732
- $postDataArray[$shippingFieldName] = $postCalcShippingCity;
2733
- }
2734
-
2735
- if(!get_current_user_id()){
2736
- $order_id = $this->postData->get('order-received', 0);
2737
- if($order_id){
2738
- $order = FlycartWoocommerceOrder::wc_get_order($order_id);
2739
- $postDataArray['shipping_city'] = FlycartWoocommerceOrder::get_shipping_city($order);
2740
- }
2741
- }
2742
-
2743
- $customer_from_session = FlycartWoocommerceSession::getSession('customer');
2744
- if(!empty($customer_from_session)){
2745
- if(isset($customer_from_session[$shippingFieldName])){
2746
- $postDataArray[$shippingFieldName] = $customer_from_session[$shippingFieldName];
2747
- } else if(isset($customer_from_session['shipping_city'])){
2748
- $postDataArray['shipping_city'] = $customer_from_session['shipping_city'];
2749
- if(empty($postDataArray[$shippingFieldName])){
2750
- $postDataArray[$shippingFieldName] = $postDataArray['shipping_city'];
2751
- }
2752
- }
2753
- }
2754
-
2755
- if(isset($postDataArray[$shippingFieldName]) && $postDataArray[$shippingFieldName] != ''){
2756
- $shippingState = $postDataArray[$shippingFieldName];
2757
- if(in_array(strtolower($shippingState), $rule) || in_array(strtoupper($shippingState), $rule)){
2758
- return true;
2759
- }
2760
- } else if(get_current_user_id()){
2761
- $shippingState = get_user_meta( get_current_user_id(), 'shipping_city', true );
2762
- if($shippingState != '' && !empty($shippingState)){
2763
- if(in_array(strtolower($shippingState), $rule) || in_array(strtoupper($shippingState), $rule)){
2764
- return true;
2765
- }
2766
- }
2767
- }
2768
- return false;
2769
- break;
2770
- case 'customer_shipping_zip_code':
2771
- $rule = explode(',', $rule);
2772
- if(is_array($rule) && count($rule)){
2773
- foreach($rule as $key => $r){
2774
- $rule[$key] = strtolower(trim($r));
2775
- }
2776
- }
2777
- $postData = $this->postData->get('post_data', '', 'raw');
2778
- $postDataArray = array();
2779
- if($postData != ''){
2780
- parse_str($postData, $postDataArray);
2781
- }
2782
- if(isset($postDataArray['ship_to_different_address']) && $postDataArray['ship_to_different_address']){
2783
- $shippingFieldName = 'shipping_postcode';
2784
- } else {
2785
- $shippingFieldName = 'billing_postcode';
2786
- }
2787
- $postShippingState = $this->postData->get($shippingFieldName, '', 'raw');
2788
- if($postShippingState != ''){
2789
- $postDataArray[$shippingFieldName] = $postShippingState;
2790
- }
2791
- $post_calc_shipping_postcode = $this->postData->get('calc_shipping_postcode', '', 'raw');
2792
- if(!empty($post_calc_shipping_postcode)){
2793
- $postDataArray[$shippingFieldName] = $post_calc_shipping_postcode;
2794
- }
2795
- if(!get_current_user_id()){
2796
- $order_id = $this->postData->get('order-received', 0);
2797
- if($order_id){
2798
- $order = FlycartWoocommerceOrder::wc_get_order($order_id);
2799
- $postDataArray['shipping_postcode'] = FlycartWoocommerceOrder::get_shipping_city($order);
2800
- }
2801
- }
2802
-
2803
- $customer_from_session = FlycartWoocommerceSession::getSession('customer');
2804
- if(!empty($customer_from_session)){
2805
- if(isset($customer_from_session[$shippingFieldName])){
2806
- $postDataArray[$shippingFieldName] = $customer_from_session[$shippingFieldName];
2807
- } else if(isset($customer_from_session['shipping_postcode'])){
2808
- $postDataArray['shipping_postcode'] = $customer_from_session['shipping_postcode'];
2809
- if(empty($postDataArray[$shippingFieldName])){
2810
- $postDataArray[$shippingFieldName] = $postDataArray['shipping_postcode'];
2811
- }
2812
- }
2813
- }
2814
-
2815
- if(isset($postDataArray[$shippingFieldName]) && $postDataArray[$shippingFieldName] != ''){
2816
- $shippingState = $postDataArray[$shippingFieldName];
2817
- if(in_array(strtolower($shippingState), $rule) || in_array(strtoupper($shippingState), $rule)){
2818
- return true;
2819
- }
2820
- } else if(get_current_user_id()){
2821
- $shippingState = get_user_meta( get_current_user_id(), 'shipping_postcode', true );
2822
- if($shippingState != '' && !empty($shippingState)){
2823
- if(in_array(strtolower($shippingState), $rule) || in_array(strtoupper($shippingState), $rule)){
2824
- return true;
2825
- }
2826
- }
2827
- }
2828
- return false;
2829
- break;
2830
- case 'products_in_list':
2831
- case 'products_not_in_list':
2832
- case 'exclude_sale_products':
2833
- case 'categories_in':
2834
- case 'exclude_categories':
2835
- case 'atleast_one_including_sub_categories':
2836
- case 'in_each_category':
2837
- $ruleSuccess = $this->validateCartItemsInSelectedProductsAndCategories($index, $rule, $rules, $rules_with_all_data, $rule_sets);
2838
- if($ruleSuccess){
2839
- return true;
2840
- } else {
2841
- return false;
2842
- }
2843
- break;
2844
- case 'customer_based_on_first_order':
2845
- case 'customer_based_on_purchase_history':
2846
- case 'customer_based_on_purchase_history_order_count':
2847
- case 'customer_based_on_purchase_history_product_order_count':
2848
- case 'customer_based_on_purchase_history_product_quantity_count':
2849
- if($index == 'customer_based_on_first_order'){
2850
- $rule = array();
2851
- }
2852
- if($index == 'customer_based_on_first_order' || count($rule)){
2853
- $ruleSuccess = $this->validateCartItemsBasedOnPurchaseHistory($index, $rule, $rules);
2854
- if($ruleSuccess){
2855
- return true;
2856
- }
2857
- }
2858
- return false;
2859
- break;
2860
- case 'create_dynamic_coupon':
2861
- case 'coupon_applied_any_one':
2862
- if(!empty($rule)){
2863
- $ruleSuccess = $this->validateCartCouponAppliedAnyOne($index, $rule, $rules);
2864
- if($ruleSuccess){
2865
- if(is_string($rule)){
2866
- $coupons = explode(',', $rule);
2867
- } elseif (is_array($rule)){
2868
- $coupons = $rule;
2869
- } else {
2870
- return false;
2871
- }
2872
-
2873
- FlycartWooDiscountRulesGeneralHelper::removeCouponPriceInCart($coupons);
2874
- return true;
2875
- }
2876
- }
2877
- return false;
2878
- break;
2879
- case 'coupon_applied_all_selected':
2880
- if(!empty($rule)){
2881
- $ruleSuccess = $this->validateCartCouponAppliedAllSelected($index, $rule, $rules);
2882
- if($ruleSuccess){
2883
- if(is_string($rule)){
2884
- $coupons = explode(',', $rule);
2885
- } elseif (is_array($rule)){
2886
- $coupons = $rule;
2887
- } else {
2888
- return false;
2889
- }
2890
- FlycartWooDiscountRulesGeneralHelper::removeCouponPriceInCart($coupons);
2891
- return true;
2892
- }
2893
- }
2894
- return false;
2895
- break;
2896
- }
2897
- }
2898
-
2899
- /**
2900
- * Set coupon applied
2901
- * */
2902
- protected static function setAppliedCoupon($coupon){
2903
- if(!in_array($coupon, self::$applied_coupon)){
2904
- self::$applied_coupon[] = $coupon;
2905
- }
2906
- }
2907
-
2908
- /**
2909
- * get applied coupon
2910
- * */
2911
- public static function getAppliedCoupons(){
2912
- return self::$applied_coupon;
2913
- }
2914
-
2915
- /**
2916
- * Format BOGO discount code
2917
- *
2918
- * @param $product_name string
2919
- * @param $quantity integer
2920
- * @param $product mixed
2921
- * @param $coupon_code string
2922
- * @return string
2923
- * */
2924
- public static function formatBOGOCouponCode($product_name, $quantity, $product, $coupon_code){
2925
- $code = str_replace(array('{{product_name}}', '{{quantity}}'), array($product_name, $quantity), $coupon_code);
2926
- $code = self::filterCouponCode($code);
2927
- $code = wc_strtolower($code);
2928
- $code = apply_filters('woo_discount_rules_cart_bogo_coupon_code_based_on_product', $code, $product, $quantity);
2929
-
2930
- return $code;
2931
- }
2932
-
2933
- /**
2934
- * Filter discount code
2935
- *
2936
- * @param $code string
2937
- * @return string
2938
- * */
2939
- public static function filterCouponCode($code){
2940
- $code = str_replace(array("'", '"'), array('', ''), $code);
2941
- $code = wc_format_coupon_code($code);
2942
- return $code;
2943
- }
2944
- }
2945
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
v1/includes/compatibility.php DELETED
@@ -1,125 +0,0 @@
1
- <?php
2
- if (!defined('ABSPATH')) exit; // Exit if accessed directly
3
-
4
- /**
5
- * Class FlycartWooDiscountRulesPricingRules
6
- */
7
- if (!class_exists('FlycartWooDiscountRulesCompatibility')) {
8
- class FlycartWooDiscountRulesCompatibility
9
- {
10
- protected static $is_pro_version = false;
11
-
12
- protected static $discount_base;
13
-
14
- /**
15
- * Initialize the scripts
16
- * */
17
- public static function init()
18
- {
19
- self::set_is_pro_version();
20
- self::set_discount_base_object();
21
- if (self::$is_pro_version) {
22
- add_filter('woocommerce_cart_totals_coupon_label', 'FlycartWooDiscountRulesCompatibility::change_woocommerce_cart_totals_coupon_label', 10, 2);
23
- $additional_taxonomies = self::$discount_base->getConfigData('additional_taxonomies', array(), 'taxonomy');
24
- if (FlycartWooDiscountRulesGeneralHelper::is_countable($additional_taxonomies)) {
25
- add_filter('woo_discount_rules_accepted_taxonomy_for_category', 'FlycartWooDiscountRulesCompatibility::woo_discount_rules_accepted_taxonomy_for_category', 10);
26
- add_filter('woo_discount_rules_load_additional_taxonomy', 'FlycartWooDiscountRulesCompatibility::woo_discount_rules_load_additional_taxonomy', 10, 2);
27
- }
28
- }
29
- }
30
-
31
- /**
32
- * Set is pro version or not
33
- * */
34
- protected static function set_is_pro_version()
35
- {
36
- $purchase_helper = new FlycartWooDiscountRulesPurchase();
37
- self::$is_pro_version = $purchase_helper->isPro();
38
- }
39
-
40
- /**
41
- * Set is pro version or not
42
- * */
43
- protected static function set_discount_base_object()
44
- {
45
- self::$discount_base = FlycartWooDiscountBase::get_instance();
46
- }
47
-
48
- /**
49
- * To support additional taxonomy in categories
50
- * */
51
- public static function woo_discount_rules_accepted_taxonomy_for_category($taxonomy)
52
- {
53
- $additional_taxonomies = self::$discount_base->getConfigData('additional_taxonomies', array(), 'taxonomy');
54
- if (FlycartWooDiscountRulesGeneralHelper::is_countable($additional_taxonomies)) {
55
- foreach ($additional_taxonomies as $additional_taxonomy) {
56
- $taxonomy[] = $additional_taxonomy;
57
- }
58
- }
59
-
60
- return $taxonomy;
61
- }
62
-
63
- /**
64
- * To support additional taxonomy in categories
65
- * */
66
- public static function woo_discount_rules_load_additional_taxonomy($categories, $product_id)
67
- {
68
- $additional_taxonomies = self::$discount_base->getConfigData('additional_taxonomies', array(), 'taxonomy');
69
- if (FlycartWooDiscountRulesGeneralHelper::is_countable($additional_taxonomies)) {
70
- foreach ($additional_taxonomies as $taxonomy) {
71
- $terms = get_the_terms($product_id, $taxonomy);
72
- if (!empty($terms)) {
73
- if ((is_object($terms) || is_array($terms))) {
74
- if (FlycartWooDiscountRulesGeneralHelper::is_countable($terms)) {
75
- foreach ($terms as $term) {
76
- if (!empty($term->term_id)) {
77
- $categories[] = $term->term_id;
78
- }
79
- }
80
- }
81
- }
82
- }
83
- }
84
- }
85
-
86
- return $categories;
87
- }
88
-
89
- /**
90
- * To change the discount name/code in front end
91
- * */
92
- public static function change_woocommerce_cart_totals_coupon_label($text, $coupon)
93
- {
94
- $customize_coupon_name_html = self::$discount_base->getConfigData('customize_coupon_name_html', '');
95
- if (!empty($customize_coupon_name_html)) {
96
- global $flycart_woo_discount_rules;
97
- //process only for woo discount rules
98
- if (!empty($flycart_woo_discount_rules->cart_rules) && !empty($flycart_woo_discount_rules->cart_rules->coupon_code)) {
99
- $coupon_code = FlycartWoocommerceCoupon::get_code($coupon);
100
- //process only for woo discount rules
101
- if (!empty($coupon_code) && $coupon_code == $flycart_woo_discount_rules->cart_rules->coupon_code) {
102
- $applied_rules = $flycart_woo_discount_rules->cart_rules->matched_discounts;
103
- $rule_names = '';
104
-
105
- if (isset($applied_rules) && count($applied_rules) && isset($applied_rules['name'])) {
106
- $rule_names = implode(', ', $applied_rules['name']);
107
- }
108
- $new_text = __($customize_coupon_name_html, 'woo-discount-rules');
109
- if (!empty($new_text)) {
110
- if (!empty($rule_names)) {
111
- $new_text = str_replace('{rule_name}', $rule_names, $new_text);
112
- }
113
- //change the value here to have your own customized display
114
- $text = $new_text;
115
- }
116
- }
117
- }
118
- }
119
-
120
- return $text;
121
- }
122
- }
123
-
124
- FlycartWooDiscountRulesCompatibility::init();
125
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
v1/includes/discount-base.php DELETED
@@ -1,1469 +0,0 @@
1
- <?php
2
- if (!defined('ABSPATH')) exit; // Exit if accessed directly
3
-
4
- global $woocommerce;
5
-
6
- /**
7
- * Class FlycartWooDiscountBase
8
- */
9
- if (!class_exists('FlycartWooDiscountBase')) {
10
- class FlycartWooDiscountBase
11
- {
12
- /**
13
- * @var string
14
- */
15
- public $default_page = 'pricing-rules';
16
-
17
- /**
18
- * @var string
19
- */
20
- public $default_option = 'woo-discount-config';
21
- public $taxonomy_option = 'woo-discount-taxonomy';
22
-
23
- /**
24
- * @var array
25
- */
26
- private $instance = array();
27
-
28
- public $has_free_shipping = 0;
29
- public $has_free_shipping_rule = 0;
30
-
31
- protected static $self_instance;
32
-
33
- /**
34
- * FlycartWooDiscountBase constructor.
35
- */
36
- public function __construct() {}
37
-
38
- /**
39
- * Singleton Instance maker.
40
- *
41
- * @param $name
42
- * @return bool
43
- */
44
- public function getInstance($name)
45
- {
46
- if (!isset($this->instance[$name])) {
47
- if (class_exists($name)) {
48
- $this->instance[$name] = new $name;
49
- $instance = $this->instance[$name];
50
- } else {
51
- $instance = false;
52
- }
53
- } else {
54
- $instance = $this->instance[$name];
55
- }
56
- return $instance;
57
- }
58
-
59
- public static function get_instance(){
60
- if (empty(self::$self_instance))
61
- {
62
- self::$self_instance = new self();
63
- }
64
- return self::$self_instance;
65
- }
66
-
67
- /**
68
- * Managing discount of Price and Cart.
69
- */
70
- public function handleDiscount()
71
- {
72
- global $woocommerce;
73
-
74
- $price_discount = $this->getInstance('FlycartWooDiscountRulesPricingRules');
75
- $cart_discount = $this->getInstance('FlycartWooDiscountRulesCartRules');
76
-
77
- $price_discount->analyse($woocommerce);
78
- $cart_discount->analyse($woocommerce);
79
- }
80
-
81
- /**
82
- * Managing discount of Cart.
83
- */
84
- public function handleCartDiscount($free_shipping_check = 0)
85
- {
86
- global $woocommerce;
87
- $cart_discount = $this->getInstance('FlycartWooDiscountRulesCartRules');
88
- $cart_discount->analyse($woocommerce, $free_shipping_check);
89
- $this->has_free_shipping_rule = $cart_discount->has_free_shipping_rule;
90
- if($free_shipping_check){
91
- $this->has_free_shipping = $cart_discount->has_free_shipping;
92
- }
93
- }
94
-
95
- /**
96
- * Managing discount of Price.
97
- */
98
- public function handlePriceDiscount()
99
- {
100
- global $woocommerce;
101
- $price_discount = $this->getInstance('FlycartWooDiscountRulesPricingRules');
102
- $price_discount->analyse($woocommerce);
103
- }
104
-
105
- /**
106
- * For adding script in checkout page
107
- * */
108
- public function addScriptInCheckoutPage(){
109
- $additional_class_to_add = '';
110
- $additional_class = apply_filters('woo_discount_rules_add_additional_class_to_refresh_the_checkout_review_on_blur', $additional_class_to_add);
111
- if(!empty($additional_class) && is_string($additional_class)){
112
- $additional_class_to_add = $additional_class;
113
- }
114
- $on_blur_event_for_items = apply_filters('woo_discount_rules_class_to_refresh_the_checkout_review_on_blur', 'input#billing_email, select#billing_state');
115
- $script = '<script type="text/javascript">
116
- jQuery( function( $ ) {
117
- $(document).ready(function() {
118
- $( document.body ).on( "blur", "'.$on_blur_event_for_items.$additional_class_to_add.'", function() {
119
- $(document.body).trigger("update_checkout");
120
- });
121
- });
122
- });
123
- </script>';
124
- echo $script;
125
- }
126
-
127
- /**
128
- * WooCommerce hook to change the name of a product.
129
- *
130
- * @param $title
131
- * @return mixed
132
- */
133
- public function modifyName($title)
134
- {
135
- //
136
- return $title;
137
- }
138
-
139
- /**
140
- * Finally, on triggering the "Thank You" hook by WooCommerce,
141
- * Overall session data's are stored to the order's meta as "woo_discount_log".
142
- *
143
- * @param integer $order_id Order ID.
144
- */
145
- public function storeLog($order_id)
146
- {
147
- if (function_exists('WC')) {
148
- if (!empty(WC()->session)) {
149
- if (method_exists(WC()->session, 'get')) {
150
- $log['price_discount'] = WC()->session->get('woo_price_discount', array());
151
- $log['cart_discount'] = WC()->session->get('woo_cart_discount', array());
152
-
153
- add_post_meta($order_id, 'woo_discount_log', json_encode($log), 1);
154
-
155
- // Reset the Coupon Status.
156
- WC()->session->set('woo_coupon_removed', '');
157
- }
158
- }
159
- }
160
- }
161
-
162
- /**
163
- * Create New Menu On WooCommerce.
164
- */
165
- public function adminMenu()
166
- {
167
- if (!is_admin()) return;
168
-
169
- global $submenu;
170
- if (isset($submenu['woocommerce'])) {
171
- add_submenu_page(
172
- 'woocommerce',
173
- 'Woo Discount Rules',
174
- 'Woo Discount Rules',
175
- 'edit_posts',
176
- 'woo_discount_rules',
177
- array($this, 'viewManager')
178
- );
179
- }
180
- }
181
-
182
- /**
183
- * Update the Status of the Rule Set.
184
- */
185
- public function updateStatus()
186
- {
187
- $postData = \FlycartInput\FInput::getInstance();
188
- $id = $postData->get('id', false);
189
- $wdr_nonce = $postData->get('wdr_nonce', false);
190
- if(!empty($wdr_nonce)){
191
- if(FlycartWooDiscountRulesGeneralHelper::hasAdminPrivilege()) {
192
- if(FlycartWooDiscountRulesGeneralHelper::validateRequest('wdr_rule_listing', $wdr_nonce)){
193
- if ($id) {
194
- $status = get_post_meta($id, 'status', false);
195
- if (isset($status[0])) {
196
- $state = ($status[0] == 'publish') ? 'disable' : 'publish';
197
- update_post_meta($id, 'status', $state);
198
- } else {
199
- add_post_meta($id, 'status', 'disable');
200
- $state = 'disable';
201
- }
202
- $meta = get_post_meta($id, '', true);
203
- $status_string = '';
204
- if(!empty($meta)){
205
- if(!isset($meta['status'][0])) $meta['status'][0] = 'disable';
206
- if($meta['status'][0] == 'publish'){
207
- $status_string .= "<span class='wdr_status_active_text alert alert-success'>".esc_html__('Active', 'woo-discount-rules')."</span>";
208
- } else {
209
- $status_string .= "<span class='wdr_status_disabled_text alert alert-danger'>".esc_html__('Disabled', 'woo-discount-rules')."</span>";
210
- }
211
- if($meta['status'][0] == 'publish'){
212
- $date_from = (isset($meta['date_from'][0]) ? $meta['date_from'][0] : false);
213
- $date_to = (isset($meta['date_to'][0]) ? $meta['date_to'][0] : false);
214
- $validate_date_string = FlycartWooDiscountRulesGeneralHelper::validateDateAndTimeWarningTextForListingHTML($date_from, $date_to);
215
- $status_string .= $validate_date_string;
216
- }
217
- }
218
- $return_value = array('status' => ucfirst($state), 'status_html' => $status_string);
219
-
220
- echo json_encode($return_value);
221
- }
222
- }
223
- }
224
- }
225
- die();
226
- }
227
-
228
- /**
229
- * Remove the Rule Set.
230
- */
231
- public function removeRule()
232
- {
233
- $postData = \FlycartInput\FInput::getInstance();
234
- $id = $postData->get('id', false);
235
- $wdr_nonce = $postData->get('wdr_nonce', false);
236
- if(!empty($wdr_nonce)) {
237
- if (FlycartWooDiscountRulesGeneralHelper::hasAdminPrivilege()) {
238
- if (FlycartWooDiscountRulesGeneralHelper::validateRequest('wdr_rule_listing', $wdr_nonce)) {
239
- if ($id) {
240
- try {
241
- $id = intval($id);
242
- if (!$id) return false;
243
- wp_delete_post($id);
244
- } catch (Exception $e) {
245
- //
246
- }
247
- }
248
- }
249
- }
250
- }
251
- die();
252
- }
253
- // -------------------------------------- PRICE RULES ---------------------------------------------------------------
254
- /**
255
- * Saving the Price Rule.
256
- *
257
- * @return bool
258
- */
259
- public function savePriceRule()
260
- {
261
- $postData = \FlycartInput\FInput::getInstance();
262
- $request = $postData->getArray();
263
- $params = array();
264
- if (!isset($request['data'])) return false;
265
- parse_str($request['data'], $params);
266
- if(isset($params['wdr_nonce']) && !empty($params['wdr_nonce'])){
267
- if(FlycartWooDiscountRulesGeneralHelper::hasAdminPrivilege()) {
268
- if(FlycartWooDiscountRulesGeneralHelper::validateRequest('wdr_save_price_rule', $params['wdr_nonce'])){
269
- $pricing_rule = $this->getInstance('FlycartWooDiscountRulesPricingRules');
270
- $pricing_rule->save($params);
271
- }
272
- }
273
- }
274
- die();
275
- }
276
-
277
- // -------------------------------------- CART RULES ----------------------------------------------------------------
278
- /**
279
- * Saving the Cart Rule.
280
- *
281
- * @return bool
282
- */
283
- public function saveCartRule()
284
- {
285
-
286
- $postData = \FlycartInput\FInput::getInstance();
287
- $request = $postData->getArray();
288
- $params = array();
289
- if (!isset($request['data'])) return false;
290
- parse_str($request['data'], $params);
291
- if(isset($params['wdr_nonce']) && !empty($params['wdr_nonce'])){
292
- if(FlycartWooDiscountRulesGeneralHelper::hasAdminPrivilege()) {
293
- if(FlycartWooDiscountRulesGeneralHelper::validateRequest('wdr_save_cart_rule', $params['wdr_nonce'])){
294
- $this->parseFormWithRules($params, true);
295
- $pricing_rule = $this->getInstance('FlycartWooDiscountRulesCartRules');
296
- $pricing_rule->save($params);
297
- }
298
- }
299
- }
300
- die();
301
- }
302
-
303
- /**
304
- * load product select box
305
- *
306
- * @return bool
307
- */
308
- public function loadProductSelectBox() {
309
- $postData = \FlycartInput\FInput::getInstance();
310
- $request = $postData->getArray();
311
- if(isset($request['wdr_nonce']) && !empty($request['wdr_nonce'])) {
312
- if (FlycartWooDiscountRulesGeneralHelper::hasAdminPrivilege()) {
313
- if (FlycartWooDiscountRulesGeneralHelper::validateRequest('wdr_ajax_search_field', $request['wdr_nonce'])) {
314
- if (!isset($request['name'])) return false;
315
- echo FlycartWoocommerceProduct::getProductAjaxSelectBox(array(), $request['name']);
316
- }
317
- }
318
- }
319
- die();
320
- }
321
-
322
- /**
323
- * load coupons
324
- *
325
- * @return bool
326
- */
327
- public function loadCoupons() {
328
- $postData = \FlycartInput\FInput::getInstance();
329
- $request = $postData->getArray();
330
- $posts = array();
331
- if(isset($request['wdr_nonce']) && !empty($request['wdr_nonce'])){
332
- if(FlycartWooDiscountRulesGeneralHelper::hasAdminPrivilege()) {
333
- if(FlycartWooDiscountRulesGeneralHelper::validateRequest('wdr_ajax_search_field', $request['wdr_nonce'])){
334
- $page = isset($request['page'])? $request['page']: 1;
335
- $query = isset($request['q'])? $request['q']: '';
336
- $args = array( 'posts_per_page' => 30, 's' => $query,
337
- 'paged' => $page, 'post_type' => 'shop_coupon' );
338
- $posts = get_posts($args);
339
- if(!empty($posts) && count($posts) > 0){
340
- foreach ($posts as $post){
341
- if(function_exists('wc_strtolower')){
342
- $coupon_name = wc_strtolower($post->post_title);
343
- } else {
344
- $coupon_name = strtolower($post->post_title);
345
- }
346
- $post->post_name = $coupon_name;
347
- }
348
- }
349
- }
350
- }
351
- }
352
-
353
- echo json_encode($posts);
354
- die();
355
- }
356
-
357
- /**
358
- * Get coupon options
359
- *
360
- * @param array $selected
361
- * @return string
362
- * */
363
- public static function loadSelectedCouponOptions($selected){
364
- $html_options = '';
365
- if(!empty($selected) && is_array($selected)){
366
- // $args = array( 'numberposts' => '-1', 'post_type' => 'shop_coupon', 'post_name__in' => $selected);
367
- // $posts = get_posts($args);
368
- $in_data = "'".implode("','", $selected)."'";
369
- global $wpdb;
370
- $query = "SELECT `post_title`, `post_name` FROM $wpdb->posts WHERE `post_type` = 'shop_coupon' AND `post_status` <> 'trash' AND `post_title` IN (".$in_data.")";
371
- $posts = $wpdb->get_results($query);
372
- if(!empty($posts)){
373
- if(count($posts)){
374
- foreach ($posts as $post){
375
- if(function_exists('wc_strtolower')){
376
- $coupon_name = wc_strtolower($post->post_title);
377
- } else {
378
- $coupon_name = strtolower($post->post_title);
379
- }
380
- $html_options .= '<option value="'.$coupon_name.'" selected="selected">'.$post->post_title.'</option>';
381
- }
382
- }
383
- }
384
- }
385
-
386
- return $html_options;
387
- }
388
-
389
- /**
390
- * Get coupon count
391
- *
392
- * @return int
393
- * */
394
- public static function getWooCommerceCouponCount(){
395
- $count = wp_count_posts( 'shop_coupon' );
396
- $coupon_count = 0;
397
- if(!empty($count) && isset($count->publish)){
398
- if(!empty($count->publish)){
399
- $coupon_count = $count->publish;
400
- }
401
- }
402
-
403
- return $coupon_count;
404
- }
405
-
406
- /**
407
- * Has large number of coupons
408
- * */
409
- public static function hasLargeNumberOfCoupon(){
410
- $load_coupon_by_search = apply_filters('woo_discount_rules_load_coupon_value_by_search', false);
411
- if($load_coupon_by_search){
412
- return true;
413
- } else {
414
- $count = self::getWooCommerceCouponCount();
415
- if($count > 50) return true;
416
- return false;
417
- }
418
- }
419
-
420
- /**
421
- * Making the reliable end data to store.
422
- *
423
- * @param $cart_rules
424
- * @param bool $isCartRules
425
- */
426
- public function parseFormWithRules(&$cart_rules, $isCartRules = false)
427
- {
428
- $cart_rules['discount_rule'] = $this->generateFormData($cart_rules, $isCartRules);
429
- }
430
-
431
- /**
432
- * @param $cart_rules
433
- * @param bool $isCartRules
434
- * @return array
435
- */
436
- public function generateFormData($cart_rules, $isCartRules = false)
437
- {
438
- $link = $this->fieldLink();
439
-
440
- $discount_list = array();
441
- // Here, Eliminating the Cart's rule with duplicates.
442
- $discount_rule = (isset($cart_rules['discount_rule']) ? $cart_rules['discount_rule'] : array());
443
- if ($isCartRules) {
444
- if(is_array($discount_rule) && count($discount_rule)){
445
- foreach ($discount_rule as $index => $value) {
446
-
447
- // The Type of Option should get value from it's native index.
448
- // $link[$value['type']] will gives the native index of the "type"
449
-
450
- if (isset($link[$value['type']])) {
451
- if(is_array($link[$value['type']])){
452
- foreach ($link[$value['type']] as $fields){
453
- $discount_list[$index][$value['type']][$fields] = $value[$fields];
454
- }
455
- } else if (isset($value[$link[$value['type']]])) {
456
- $discount_list[$index][$value['type']] = $value[$link[$value['type']]];
457
- }
458
- } else {
459
- $discount_list[$index][$value['type']] = $value['option_value'];
460
- }
461
- }
462
- }
463
- }
464
-
465
- return $discount_list;
466
-
467
- }
468
-
469
- /**
470
- * @return array
471
- */
472
- public function fieldLink()
473
- {
474
- // TODO: Check Subtotal Link
475
- return array(
476
- 'products_atleast_one' => 'product_to_apply',
477
- 'products_not_in' => 'product_to_apply',
478
-
479
- 'categories_atleast_one' => 'category_to_apply',
480
- 'exclude_categories' => 'category_to_apply',
481
- 'categories_in' => 'category_to_apply',
482
- 'in_each_category' => 'category_to_apply',
483
- 'atleast_one_including_sub_categories' => 'category_to_apply',
484
-
485
- 'coupon_applied_any_one' => 'coupon_to_apply',
486
- 'coupon_applied_all_selected' => 'coupon_to_apply',
487
-
488
- 'products_in_list' => 'products',
489
- 'products_not_in_list' => 'products',
490
-
491
- 'users_in' => 'users_to_apply',
492
- 'roles_in' => 'user_roles_to_apply',
493
- 'shipping_countries_in' => 'countries_to_apply',
494
- 'customer_based_on_purchase_history' => array('purchase_history_order_status', 'purchased_history_amount', 'purchased_history_type', 'purchased_history_duration', 'purchased_history_duration_days'),
495
- 'customer_based_on_purchase_history_order_count' => array('purchase_history_order_status', 'purchased_history_amount', 'purchased_history_type', 'purchased_history_duration', 'purchased_history_duration_days'),
496
- 'customer_based_on_purchase_history_product_order_count' => array('purchase_history_order_status', 'purchased_history_amount', 'purchased_history_type', 'purchase_history_products', 'purchased_history_duration', 'purchased_history_duration_days'),
497
- 'customer_based_on_purchase_history_product_quantity_count' => array('purchase_history_order_status', 'purchased_history_amount', 'purchased_history_type', 'purchase_history_products', 'purchased_history_duration', 'purchased_history_duration_days'),
498
- );
499
- }
500
-
501
- // ----------------------------------------- CART RULES END --------------------------------------------------------
502
-
503
-
504
- // -------------------------------------------SETTINGS--------------------------------------------------------------
505
-
506
- /**
507
- *
508
- */
509
- public function saveConfig($licenceValidate = 0)
510
- {
511
- $postData = \FlycartInput\FInput::getInstance();
512
- $request = $postData->getArray();
513
- $params = array();
514
- $type = 'default';
515
- if (isset($request['from'])) {
516
- if(in_array($request['from'], array('taxonomy'))){
517
- $type = $request['from'];
518
- }
519
- }
520
- if($type == 'taxonomy'){
521
- $option_type = $this->taxonomy_option;
522
- } else {
523
- $option_type = $this->default_option;
524
- }
525
-
526
- if (isset($request['data'])) {
527
- parse_str($request['data'], $params);
528
- }
529
-
530
- if(isset($params['wdr_nonce']) && !empty($params['wdr_nonce'])){
531
- if(FlycartWooDiscountRulesGeneralHelper::hasAdminPrivilege()) {
532
- if(FlycartWooDiscountRulesGeneralHelper::validateRequest('wdr_save_rule_config', $params['wdr_nonce'])){
533
- if(isset($params['coupon_name'])){
534
- $params['coupon_name'] = trim($params['coupon_name']);
535
- }
536
-
537
- if (is_array($request)) {
538
- if(isset($params['show_draft']) && $params['show_draft']){
539
- $params['show_draft'] = 1;
540
- } else {
541
- $params['show_draft'] = 0;
542
- }
543
- foreach ($params as $index => $item) {
544
- // $params[$index] = FlycartWooDiscountRulesGeneralHelper::makeString($item);
545
- $params[$index] = $item;
546
- }
547
- $params = json_encode($params);
548
- }
549
-
550
- if (get_option($option_type)) {
551
- update_option($option_type, $params);
552
- } else {
553
- add_option($option_type, $params);
554
- }
555
- }
556
- }
557
- }
558
-
559
- if(!$licenceValidate)
560
- die();
561
- }
562
-
563
- public function resetWDRCache(){
564
- $postData = \FlycartInput\FInput::getInstance();
565
- $wdr_nonce = $postData->get('wdr_nonce', false);
566
- if(!empty($wdr_nonce)) {
567
- if (FlycartWooDiscountRulesGeneralHelper::hasAdminPrivilege()) {
568
- if (FlycartWooDiscountRulesGeneralHelper::validateRequest('wdr_save_rule_config', $wdr_nonce)) {
569
- $price_discount = $this->getInstance('FlycartWooDiscountRulesPricingRules');
570
- $result = $price_discount->updateLastUpdateTimeOfRule();
571
- if($result){
572
- esc_html_e('Cache cleared successfully', 'woo-discount-rules');
573
- } else {
574
- esc_html_e('Failed to clear cache', 'woo-discount-rules');
575
- }
576
- }
577
- }
578
- }
579
- die();
580
- }
581
-
582
- /**
583
- * @return array
584
- */
585
- public function getBaseConfig($type = 'default')
586
- {
587
- if($type == 'taxonomy'){
588
- $option_type = $this->taxonomy_option;
589
- } else {
590
- $option_type = $this->default_option;
591
- }
592
- $option = get_option($option_type);
593
- if (!$option || is_null($option)) {
594
- return array();
595
- } else {
596
- return $option;
597
- }
598
- }
599
-
600
- /**
601
- * Get Config data
602
- *
603
- * @param String $key
604
- * @param mixed $default
605
- * @return mixed
606
- * */
607
- public function getConfigData($key, $default = '', $type = "default"){
608
- $config = $this->getBaseConfig($type);
609
- if (is_string($config)) $config = json_decode($config, true);
610
- return isset($config[$key])? $config[$key] : $default;
611
- }
612
-
613
- // -------------------------------------------SETTINGS END----------------------------------------------------------
614
-
615
- /**
616
- * @param $request
617
- * @return bool
618
- */
619
- public function checkSubmission($request)
620
- {
621
- if (isset($request['form']) && !empty($request['form'])) {
622
- $form = sanitize_text_field($request['form']);
623
- if (strpos($form, '_save') === false) return false;
624
- // For Saving Form
625
- $form = str_replace('_save', '', $form);
626
- // To Verify, the submitted form is in the Registered List or Not
627
- if (in_array($form, $this->formList())) {
628
- if (isset($request['page'])) {
629
- switch ($form) {
630
- case 'pricing_rules':
631
- die(123);
632
- $pricing_rule = $this->getInstance('FlycartWooDiscountRulesPricingRules');
633
- $pricing_rule->save($request);
634
- break;
635
- case 'cart_rules':
636
- $cart_rules = $this->getInstance('FlycartWooDiscountRulesCartRules');
637
- $cart_rules->save($request);
638
- break;
639
- case 'settings':
640
- $this->save($request);
641
- break;
642
- default:
643
- // Invalid Submission.
644
- break;
645
- }
646
- }
647
- }
648
- }
649
- }
650
-
651
- /**
652
- * @param $option
653
- */
654
- public function checkAccess(&$option)
655
- {
656
- $postData = \FlycartInput\FInput::getInstance();
657
- // Handling View
658
- if ($postData->get('view', false)) {
659
- $option = $option . '-view';
660
- // Type : Price or Cart Discounts.
661
- } elseif ($postData->get('type', false)) {
662
- if ($postData->get('tab', false)) {
663
- if ($postData->get('tab', '') == 'cart-rules') {
664
- $option = 'cart-rules-new';
665
- if ($postData->get('type', '') == 'view') $option = 'cart-rules-view';
666
- }
667
- } else {
668
- $option = $option . '-' . $postData->get('type', '');
669
- }
670
- }
671
- }
672
-
673
- /**
674
- * @param $request
675
- */
676
- public function save($request)
677
- {
678
- // Save General Settings of the Plugin.
679
- }
680
-
681
- /**
682
- * Do bulk action
683
- * */
684
- public function doBulkAction(){
685
- $postData = \FlycartInput\FInput::getInstance();
686
- $request = $postData->getArray();
687
- if(isset($request['wdr_nonce']) && !empty($request['wdr_nonce'])){
688
- if(FlycartWooDiscountRulesGeneralHelper::hasAdminPrivilege()) {
689
- if(FlycartWooDiscountRulesGeneralHelper::validateRequest('wdr_rule_listing', $request['wdr_nonce'])){
690
- if(empty($request['bulk_action'])){
691
- echo esc_html__('Failed to do action', 'woo-discount-rules');exit;
692
- }
693
- $result = array();
694
- $had_action = 0;
695
- if(!empty($request['post'])){
696
- foreach ($request['post'] as $key => $id){
697
- $had_action = 1;
698
- $result[$key] = 0;
699
- if($id){
700
- switch ($request['bulk_action']){
701
- case 'unpublish':
702
- $status = get_post_meta($id, 'status', true);
703
- if (!empty($status)) {
704
- $result[$key] = update_post_meta($id, 'status', 'disable');
705
- }
706
- break;
707
- case 'delete':
708
- try {
709
- $id = intval($id);
710
- if ($id) $result[$key] = wp_delete_post($id);
711
- } catch (Exception $e) {
712
- }
713
- break;
714
- default:
715
- $status = get_post_meta($id, 'status', true);
716
-
717
- if (!empty($status)) {
718
- $result[$key] = update_post_meta($id, 'status', 'publish');
719
- }
720
- break;
721
- }
722
- }
723
- }
724
- }
725
- if(!$had_action){
726
- echo esc_html__('Failed to do action', 'woo-discount-rules');
727
- } else{
728
- switch ($request['bulk_action']){
729
- case 'unpublish':
730
- echo esc_html__('Disabled successfully', 'woo-discount-rules');
731
- break;
732
- case 'delete':
733
- echo esc_html__('Deleted successfully', 'woo-discount-rules');
734
- break;
735
- default:
736
- echo esc_html__('Enabled successfully', 'woo-discount-rules');
737
- break;
738
- }
739
- }
740
- }
741
- }
742
- }
743
- die();
744
- }
745
-
746
- /**
747
- * Create a duplicate rule
748
- * */
749
- public function createDuplicateRule(){
750
- $purchase = new FlycartWooDiscountRulesPurchase();
751
- $isPro = $purchase->isPro();
752
- if(!$isPro) return false;
753
- $postData = \FlycartInput\FInput::getInstance();
754
- $request = $postData->getArray();
755
- if(isset($request['wdr_nonce']) && !empty($request['wdr_nonce'])) {
756
- if (FlycartWooDiscountRulesGeneralHelper::hasAdminPrivilege()) {
757
- if (FlycartWooDiscountRulesGeneralHelper::validateRequest('wdr_rule_listing', $request['wdr_nonce'])) {
758
- if(!empty($request['id']) && (int)$request['id'] && !empty($request['type'])){
759
- $post = get_post( (int)$request['id'] );
760
- if(!empty($post)){
761
- $post_new = array(
762
- 'post_title' => $post->post_title.' - '.esc_html__('copy', 'woo-discount-rules'),
763
- 'post_name' => $post->post_title.' - '.esc_html__('copy', 'woo-discount-rules'),
764
- 'post_content' => 'New Rule',
765
- 'post_type' => $post->post_type,
766
- 'post_status' => 'publish'
767
- );
768
- $id = wp_insert_post($post_new);
769
- if($id){
770
- /*
771
- * duplicate all post meta just in two SQL queries
772
- */
773
- global $wpdb;
774
- $post_meta_infos = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post->ID");
775
- if (count($post_meta_infos)!=0) {
776
- $sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) ";
777
- foreach ($post_meta_infos as $meta_info) {
778
- $meta_key = $meta_info->meta_key;
779
- if( $meta_key == 'rule_order' ) $meta_info->meta_value = FlycartWooDiscountRulesGeneralHelper::reOrderRuleIfExists($id, 1, $post->post_type);
780
- if( $meta_key == 'rule_name' ) $meta_info->meta_value = $meta_info->meta_value.' - '.esc_html__('copy', 'woo-discount-rules');
781
- if( $meta_key == 'status' ) $meta_info->meta_value = 'disable';
782
- $meta_value = addslashes($meta_info->meta_value);
783
- $sql_query_sel[]= "SELECT $id, '$meta_key', '$meta_value'";
784
- }
785
- $sql_query.= implode(" UNION ALL ", $sql_query_sel);
786
- $wpdb->query($sql_query);
787
- }
788
- echo esc_html__('Duplicate rule created successfully', 'woo-discount-rules'); die();
789
- }
790
- }
791
- }
792
- }
793
- }
794
- }
795
- echo esc_html__('Failed to create duplicate rule', 'woo-discount-rules'); die();
796
- }
797
-
798
- /**
799
- * @return array
800
- */
801
- public function formList()
802
- {
803
- return array(
804
- 'pricing_rules',
805
- 'cart_rules',
806
- 'settings'
807
- );
808
- }
809
-
810
- /**
811
- *
812
- */
813
- public function viewManager()
814
- {
815
- $postData = \FlycartInput\FInput::getInstance();
816
- $request = $postData->getArray();
817
- $this->checkSubmission($request);
818
-
819
- // Adding Plugin Page Script
820
- //$this->woo_discount_adminPageScript();
821
-
822
- // Loading Instance.
823
- $generalHelper = $this->getInstance('FlycartWooDiscountRulesGeneralHelper');
824
- // Sanity Check.
825
- if (!$generalHelper) return;
826
- // Getting Active Tab.
827
- $tab = $generalHelper->getCurrentTab();
828
-
829
- $path = $this->getPath($tab);
830
-
831
- // Manage Tab.
832
- $tab = (isset($tab) ? $tab : $this->default_page);
833
- $html = '';
834
- // File Check.
835
- if (file_exists($path)) {
836
- $data = array();
837
- $this->fetchData($tab, $data);
838
- // Processing View.
839
- $html = $generalHelper->processBaseView($path, $data, $tab);
840
- }
841
- echo $html;
842
- }
843
-
844
- /**
845
- * @param $tab
846
- * @return mixed
847
- */
848
- public function getPath(&$tab)
849
- {
850
- $this->checkAccess($tab);
851
- $pages = $this->adminPages();
852
- // Default tab.
853
- $path = $pages[$this->default_page];
854
-
855
- // Comparing Available Tab with Active Tab.
856
- if (isset($pages[$tab])) {
857
- $path = $pages[$tab];
858
- }
859
- return $path;
860
- }
861
-
862
- /**
863
- * @param $type
864
- * @param $data
865
- */
866
- public function fetchData($type, &$data)
867
- {
868
- $postData = \FlycartInput\FInput::getInstance();
869
- $request = $postData->getArray();
870
-
871
- $helper = new FlycartWooDiscountRulesGeneralHelper();
872
- $isPro = $helper->checkPluginState();
873
- $this->checkForWPMLAndSetCookie($type);
874
- switch ($type) {
875
- // Managing Price Rules View.
876
- case 'pricing-rules':
877
- $pricing_rule = $this->getInstance('FlycartWooDiscountRulesPricingRules');
878
- $data = $pricing_rule->getRules();
879
- break;
880
- // Managing Cart Rules View.
881
- case 'cart-rules':
882
- $cart_rule = $this->getInstance('FlycartWooDiscountRulesCartRules');
883
- $data = $cart_rule->getRules();
884
- break;
885
- // Managing View of Settings.
886
- case 'settings':
887
- $data = $this->getBaseConfig();
888
- break;
889
- case 'taxonomy':
890
- $data = $this->getBaseConfig('taxonomy');
891
- break;
892
- case 'documentation':
893
- break;
894
-
895
- // Managing View of Pricing Rules.
896
- case 'pricing-rules-new':
897
- $data = new stdClass();
898
- $data->form = 'pricing_rules_save';
899
- if (!$isPro) {
900
- $pricing_rule = $this->getInstance('FlycartWooDiscountRulesPricingRules');
901
- $data = $pricing_rule->getRules();
902
- if (count($data) >= 6) die('You are restricted to process this action.');
903
- }
904
- break;
905
-
906
- // Managing View of Pricing Rules.
907
- case 'pricing-rules-view':
908
-
909
- $view = false;
910
- // Handling View
911
- if (isset($request['view'])) {
912
- $view = $request['view'];
913
- }
914
- $html = $this->getInstance('FlycartWooDiscountRulesPricingRules');
915
- $out = $html->view($type, $view);
916
- if (isset($out) && !empty($out)) {
917
- $data = $out;
918
- }
919
- $data->form = 'pricing_rules_save';
920
- break;
921
-
922
- // Managing View of Cart Rules.
923
- case 'cart-rules-view':
924
- $view = false;
925
- // Handling View
926
- if (isset($request['view'])) {
927
- $view = $request['view'];
928
- } else {
929
-
930
- if (!$isPro) {
931
- $cart_rule = $this->getInstance('FlycartWooDiscountRulesCartRules');
932
- $total_record = $cart_rule->getRules(true);
933
- if ($total_record >= 6) wp_die('You are restricted to process this action.');
934
- }
935
- }
936
-
937
- $html = $this->getInstance('FlycartWooDiscountRulesCartRules');
938
- $out = $html->view($type, $view);
939
- if (isset($out) && !empty($out)) {
940
- $data[] = $out;
941
- }
942
- break;
943
- // Managing View of Cart Rules.
944
- case 'cart-rules-new':
945
- if (!$isPro) {
946
- $cart_rule = $this->getInstance('FlycartWooDiscountRulesCartRules');
947
- $total_record = $cart_rule->getRules(true);
948
- if ($total_record >= 6) wp_die('You are restricted to process this action.');
949
- }
950
- break;
951
-
952
- default:
953
- $data = array();
954
-
955
- break;
956
- }
957
-
958
- }
959
-
960
- /**
961
- * Check for WPML available and set cookie if available
962
- * */
963
- protected function checkForWPMLAndSetCookie($layout){
964
- $set_wpml_lang = apply_filters('woo_discount_rules_set_wpml_language_for_loading_in_product_select_box', true);
965
- if($set_wpml_lang){
966
- $wpml_language = FlycartWooDiscountRulesGeneralHelper::getWPMLLanguage();
967
- if(!empty($wpml_language)){
968
- if(in_array($layout, array('pricing-rules-new', 'pricing-rules-view', 'cart-rules-view', 'cart-rules-new'))){
969
- setcookie('_wcml_dashboard_order_language', $wpml_language, time() + 86400, COOKIEPATH, COOKIE_DOMAIN);
970
- } else {
971
- if(!isset($_COOKIE['_wcml_dashboard_order_language']) && !empty($_COOKIE['_wcml_dashboard_order_language'])) {
972
- setcookie('_wcml_dashboard_order_language', '', time() + 86400, COOKIEPATH, COOKIE_DOMAIN);
973
- }
974
- }
975
- }
976
- }
977
- }
978
-
979
- /**
980
- * @return array
981
- */
982
- public function adminPages()
983
- {
984
- return array(
985
- $this->default_page => WOO_DISCOUNT_DIR . '/view/pricing-rules.php',
986
- 'cart-rules' => WOO_DISCOUNT_DIR . '/view/cart-rules.php',
987
- 'settings' => WOO_DISCOUNT_DIR . '/view/settings.php',
988
- 'documentation' => WOO_DISCOUNT_DIR . '/view/documentation.php',
989
- 'taxonomy' => WOO_DISCOUNT_DIR . '/view/settings_taxonomy.php',
990
-
991
- // New Rule also access the same "View" to process
992
- 'pricing-rules-new' => WOO_DISCOUNT_DIR . '/view/view-pricing-rules.php',
993
- 'cart-rules-new' => WOO_DISCOUNT_DIR . '/view/view-cart-rules.php',
994
-
995
- // Edit Rules
996
- 'pricing-rules-view' => WOO_DISCOUNT_DIR . '/view/view-pricing-rules.php',
997
- 'cart-rules-view' => WOO_DISCOUNT_DIR . '/view/view-cart-rules.php'
998
- );
999
- }
1000
-
1001
- /**
1002
- *
1003
- */
1004
- public function getOption()
1005
- {
1006
-
1007
- }
1008
-
1009
- /**
1010
- * Adding Admin Page Script.
1011
- */
1012
- function woo_discount_adminPageScript()
1013
- {
1014
- $status = false;
1015
- $postData = \FlycartInput\FInput::getInstance();
1016
- // Plugin scripts should run only in plugin page.
1017
- if (is_admin()) {
1018
- if ($postData->get('page', false) == 'woo_discount_rules') {
1019
- $status = true;
1020
- }
1021
- // By Default, the landing page also can use this script.
1022
- } elseif (!is_admin()) {
1023
- // $status = true;
1024
- }
1025
-
1026
- if ($status) {
1027
-
1028
- $config = $this->getBaseConfig();
1029
- if (is_string($config)) $config = json_decode($config, true);
1030
- $enable_bootstrap = isset($config['enable_bootstrap'])? $config['enable_bootstrap']: 1;
1031
-
1032
- wp_register_style('woo_discount_style', WOO_DISCOUNT_URI . '/assets/css/style.css', array(), WOO_DISCOUNT_VERSION);
1033
- wp_enqueue_style('woo_discount_style');
1034
-
1035
- wp_register_style('woo_discount_style_custom', WOO_DISCOUNT_URI . '/assets/css/custom.css', array(), WOO_DISCOUNT_VERSION);
1036
- wp_enqueue_style('woo_discount_style_custom');
1037
-
1038
- wp_register_style('woo_discount_style_tab', WOO_DISCOUNT_URI . '/assets/css/tabbablePanel.css', array(), WOO_DISCOUNT_VERSION);
1039
- wp_enqueue_style('woo_discount_style_tab');
1040
-
1041
- // For Implementing Select Picker Library.
1042
- wp_register_style('woo_discount_style_select', WOO_DISCOUNT_URI . '/assets/css/bootstrap.select.min.css', array(), WOO_DISCOUNT_VERSION);
1043
- wp_enqueue_style('woo_discount_style_select');
1044
-
1045
- wp_enqueue_script('woo_discount_script_select', WOO_DISCOUNT_URI . '/assets/js/bootstrap.select.min.js', array(), WOO_DISCOUNT_VERSION);
1046
- wp_enqueue_script('woo_discount_script_select2', WOO_DISCOUNT_URI . '/assets/js/select2.min.js', array(), WOO_DISCOUNT_VERSION);
1047
-
1048
- wp_register_style('woo_discount_bootstrap', WOO_DISCOUNT_URI . '/assets/css/bootstrap.min.css', array(), WOO_DISCOUNT_VERSION);
1049
- wp_enqueue_style('woo_discount_bootstrap');
1050
-
1051
- if($enable_bootstrap){
1052
- wp_register_script('woo_discount_jquery_ui_js_2', WOO_DISCOUNT_URI . '/assets/js/bootstrap.min.js', array(), WOO_DISCOUNT_VERSION);
1053
- wp_enqueue_script('woo_discount_jquery_ui_js_2');
1054
- }
1055
-
1056
- wp_register_style('woo_discount_jquery_ui_css', WOO_DISCOUNT_URI . '/assets/css/jquery-ui.css', array(), WOO_DISCOUNT_VERSION);
1057
- wp_enqueue_style('woo_discount_jquery_ui_css');
1058
- wp_register_style('woo_discount_datetimepicker_css', WOO_DISCOUNT_URI . '/assets/css/bootstrap-datetimepicker.min.css', array(), WOO_DISCOUNT_VERSION);
1059
- wp_enqueue_style('woo_discount_datetimepicker_css');
1060
-
1061
- wp_enqueue_script('jquery');
1062
- wp_enqueue_script('jquery-ui-core');
1063
- wp_enqueue_script('jquery-ui-datepicker');
1064
- wp_enqueue_script( 'woocommerce_admin' );
1065
- wp_enqueue_script( 'wc-enhanced-select' );
1066
-
1067
- wp_enqueue_script('woo_discount_datetimepicker_js', WOO_DISCOUNT_URI . '/assets/js/bootstrap-datetimepicker.min.js', array('woocommerce_admin', 'wc-enhanced-select'), WOO_DISCOUNT_VERSION, true);
1068
- wp_enqueue_script('woo_discount_script', WOO_DISCOUNT_URI . '/assets/js/app.js', array(), WOO_DISCOUNT_VERSION);
1069
- $localization_data = $this->getLocalizationData();
1070
- wp_localize_script( 'woo_discount_script', 'woo_discount_localization', $localization_data);
1071
-
1072
- //To load woocommerce product select
1073
- wp_enqueue_style( 'woocommerce_admin_styles' );
1074
- }
1075
- }
1076
-
1077
- /**
1078
- * Get localisation script
1079
- * */
1080
- protected function getLocalizationData(){
1081
- return array(
1082
- 'please_fill_this_field' => esc_html__('Please fill this field', 'woo-discount-rules'),
1083
- 'please_enter_the_rule_name' => esc_html__('Please Enter the Rule Name to Create / Save.', 'woo-discount-rules'),
1084
- 'saving' => esc_html__('Saving...', 'woo-discount-rules'),
1085
- 'save_rule' => esc_html__('Save Rule', 'woo-discount-rules'),
1086
- 'please_enter_a_key' => esc_html__('Please enter a Key', 'woo-discount-rules'),
1087
- 'min_quantity' => esc_html__('Min Quantity', 'woo-discount-rules'),
1088
- 'max_quantity' => esc_html__('Max Quantity', 'woo-discount-rules'),
1089
- 'set_quantity' => esc_html__('Quantity', 'woo-discount-rules'),
1090
- 'place_holder_ex_1' => esc_html__('ex. 1', 'woo-discount-rules'),
1091
- 'place_holder_ex_10' => esc_html__('ex. 10', 'woo-discount-rules'),
1092
- 'place_holder_ex_50' => esc_html__('ex. 50', 'woo-discount-rules'),
1093
- 'place_holder_search_for_a_user' => esc_html__('Search for a user', 'woo-discount-rules'),
1094
- 'adjustment_type' => esc_html__('Adjustment Type', 'woo-discount-rules'),
1095
- 'percentage_discount' => esc_html__('Discount percentage', 'woo-discount-rules'),
1096
- 'percentage_discount_in_adjustment_type' => esc_html__('Percentage Discount', 'woo-discount-rules'),
1097
- 'price_discount' => esc_html__('Price Discount', 'woo-discount-rules'),
1098
- 'product_discount' => esc_html__('BOGO Product Discount', 'woo-discount-rules'),
1099
- 'product_discount_not_work_on_subtotal_based' => esc_html__('Product Discount - Not support for subtotal based rule', 'woo-discount-rules'),
1100
- 'value_text' => esc_html__('Value', 'woo-discount-rules'),
1101
- 'apply_for' => esc_html__('receive discount for', 'woo-discount-rules'),
1102
- 'all_selected' => esc_html__('Auto add all selected products', 'woo-discount-rules'),
1103
- 'same_product' => esc_html__('Same product', 'woo-discount-rules'),
1104
- 'any_one_cheapest_from_selected' => esc_html__('Any one cheapest from selected', 'woo-discount-rules'),
1105
- 'any_one_cheapest_from_all_products' => esc_html__('Any one cheapest from all products', 'woo-discount-rules'),
1106
- 'more_than_one_cheapest_from_selected_category' => esc_html__('Buy X Get Y - Selected Categories (Cheapest in cart)', 'woo-discount-rules'),
1107
- 'more_than_one_cheapest_from_selected' => esc_html__('Buy X Get Y - Selected item(s) (Cheapest in cart)', 'woo-discount-rules'),
1108
- 'more_than_one_cheapest_from_all' => esc_html__('Buy X get Y - Cheapest among all items in cart', 'woo-discount-rules'),
1109
- 'free_quantity' => esc_html__('Free quantity', 'woo-discount-rules'),
1110
- 'number_of_quantities_in_each_products' => esc_html__('Number of quantity(ies) in each selected product(s)', 'woo-discount-rules'),
1111
- 'fixed_item_count' => esc_html__('Fixed item count (not recommended)', 'woo-discount-rules'),
1112
- 'dynamic_item_count' => esc_html__('Dynamic item count', 'woo-discount-rules'),
1113
- 'fixed_item_count_tooltip' => esc_html__('Fixed item count - You need to provide item count manually. Dynamic item count - System will choose dynamically based on cart', 'woo-discount-rules'),
1114
- 'item_count' => esc_html__('Item count', 'woo-discount-rules'),
1115
- 'discount_number_of_item_tooltip' => esc_html__('Discount for number of item(s) in cart', 'woo-discount-rules'),
1116
- 'discount_number_of_each_item_tooltip' => esc_html__('Discount for number of quantity(ies)', 'woo-discount-rules'),
1117
- 'item_quantity' => esc_html__('Item quantity', 'woo-discount-rules'),
1118
- 'place_holder_search_for_products' => esc_html__('Search for a products', 'woo-discount-rules'),
1119
- 'and_text' => esc_html__('and', 'woo-discount-rules'),
1120
- 'percent_100' => esc_html__('100% percent', 'woo-discount-rules'),
1121
- 'limited_percent' => esc_html__('Limited percent', 'woo-discount-rules'),
1122
- 'percentage_tooltip' => esc_html__('Percentage', 'woo-discount-rules'),
1123
- 'as_discount' => esc_html__('as discount', 'woo-discount-rules'),
1124
- 'remove_text' => esc_html__('Remove', 'woo-discount-rules'),
1125
- 'duplicate_text' => esc_html__('Duplicate', 'woo-discount-rules'),
1126
- 'none_text' => esc_html__('none', 'woo-discount-rules'),
1127
- 'are_you_sure_to_remove_this' => esc_html__('Are you sure to remove this ?', 'woo-discount-rules'),
1128
- 'enable_text' => esc_html__('Enable', 'woo-discount-rules'),
1129
- 'disable_text' => esc_html__('Disable', 'woo-discount-rules'),
1130
- 'are_you_sure_to_remove' => esc_html__('Are you sure to remove ?', 'woo-discount-rules'),
1131
- 'type_text' => esc_html__('Type', 'woo-discount-rules'),
1132
- 'cart_subtotal' => esc_html__('Cart Subtotal', 'woo-discount-rules'),
1133
- 'subtotal_at_least' => esc_html__('Subtotal at least', 'woo-discount-rules'),
1134
- 'subtotal_less_than' => esc_html__('Subtotal less than', 'woo-discount-rules'),
1135
- 'cart_item_count' => esc_html__('Cart Item Count', 'woo-discount-rules'),
1136
- 'number_of_line_items_in_cart_at_least' => esc_html__('Number of line items in the cart (not quantity) at least', 'woo-discount-rules'),
1137
- 'number_of_line_items_in_cart_less_than' => esc_html__('Number of line items in the cart (not quantity) less than', 'woo-discount-rules'),
1138
- 'quantity_sum' => esc_html__('Quantity Sum', 'woo-discount-rules'),
1139
- 'total_number_of_quantities_in_cart_at_least' => esc_html__('Total number of quantities in the cart at least', 'woo-discount-rules'),
1140
- 'total_number_of_quantities_in_cart_less_than' => esc_html__('Total number of quantities in the cart less than', 'woo-discount-rules'),
1141
- 'categories_in_cart' => esc_html__('Categories in cart', 'woo-discount-rules'),
1142
- 'atleast_one_including_sub_categories' => esc_html__('Including sub-categories in cart', 'woo-discount-rules'),
1143
- 'customer_details_must_be_logged_in' => esc_html__('Customer Details (must be logged in)', 'woo-discount-rules'),
1144
- 'user_in_list' => esc_html__('User in list', 'woo-discount-rules'),
1145
- 'user_role_in_list' => esc_html__('User role in list', 'woo-discount-rules'),
1146
- 'shipping_country_list' => esc_html__('Shipping country in list', 'woo-discount-rules'),
1147
- 'customer_email' => esc_html__('Customer Email', 'woo-discount-rules'),
1148
- 'customer_email_tld' => esc_html__('Email with TLD (Ege: edu)', 'woo-discount-rules'),
1149
- 'customer_email_domain' => esc_html__('Email with Domain (Eg: gmail.com)', 'woo-discount-rules'),
1150
- 'customer_billing_details' => esc_html__('Customer Billing Details', 'woo-discount-rules'),
1151
- 'customer_billing_city' => esc_html__('Billing city', 'woo-discount-rules'),
1152
- 'customer_shipping_details' => esc_html__('Customer Shipping Details', 'woo-discount-rules'),
1153
- 'customer_shipping_state' => esc_html__('Shipping state', 'woo-discount-rules'),
1154
- 'customer_shipping_city' => esc_html__('Shipping city', 'woo-discount-rules'),
1155
- 'customer_shipping_zip_code' => esc_html__('Shipping zip code', 'woo-discount-rules'),
1156
- 'purchase_history' => esc_html__('Purchase History', 'woo-discount-rules'),
1157
- 'purchased_amount' => esc_html__('Purchased amount', 'woo-discount-rules'),
1158
- 'number_of_order_purchased' => esc_html__('Number of previous orders made', 'woo-discount-rules'),
1159
- 'number_of_order_purchased_in_product' => esc_html__('Number of previous orders made with following products', 'woo-discount-rules'),
1160
- 'number_of_order_quantity_purchased_in_product' => esc_html__('Number of quantity(s) in previous orders made with following products', 'woo-discount-rules'),
1161
- 'coupon_applied' => esc_html__('Coupon applied', 'woo-discount-rules'),
1162
- 'create_a_coupon' => esc_html__('Create your own coupon', 'woo-discount-rules'),
1163
- 'atleast_any_one' => esc_html__('Atleast any one (Select from WooCommerce)', 'woo-discount-rules'),
1164
- 'all_selected_coupon' => esc_html__('All selected (Select from WooCommerce)', 'woo-discount-rules'),
1165
- 'greater_than_or_equal_to' => esc_html__('Greater than or equal to', 'woo-discount-rules'),
1166
- 'less_than_or_equal_to' => esc_html__('Less than or equal to', 'woo-discount-rules'),
1167
- 'in_order_status' => esc_html__('and the order status should be', 'woo-discount-rules'),
1168
- 'action_text' => esc_html__('Action', 'woo-discount-rules'),
1169
- 'save_text' => esc_html__('Save', 'woo-discount-rules'),
1170
- 'saved_successfully' => esc_html__('Saved Successfully!', 'woo-discount-rules'),
1171
- 'none_selected' => esc_html__('None selected', 'woo-discount-rules'),
1172
- 'in_each_category_cart' => esc_html__('In each category', 'woo-discount-rules'),
1173
- 'show_text' => esc_html__('Show', 'woo-discount-rules'),
1174
- 'hide_text' => esc_html__('Hide', 'woo-discount-rules'),
1175
- 'please_select_at_least_one_checkbox' => esc_html__('Please select at least one rule', 'woo-discount-rules'),
1176
- 'please_select_bulk_action' => esc_html__('Please select an action to apply', 'woo-discount-rules'),
1177
- 'are_you_sure_to_delete' => esc_html__('Are you sure to remove the selected rules', 'woo-discount-rules'),
1178
- 'choose_products' => esc_html__('Choose product(s)', 'woo-discount-rules'),
1179
- 'choose_categories' => esc_html__('Choose category(ies)', 'woo-discount-rules'),
1180
- 'coupon_select_box_placeholder' => esc_html__('Search for a coupon', 'woo-discount-rules'),
1181
- 'percentage_discount_amount_tool_tip_text' => esc_attr__('Enter only numeric values. Eg: <b>50</b> for 50% discount', 'woo-discount-rules'),
1182
- 'price_discount_amount_tool_tip_text' => sprintf(esc_attr__('Enter the discount price. Eg: <b>10</b> for %s discount', 'woo-discount-rules'), strip_tags(FlycartWoocommerceProduct::wc_price(10))),
1183
- 'fixed_price_discount_amount_tool_tip_text' => sprintf(esc_attr__('Enter the discounted price per unit. Eg: <b>10</b> for %s as unit price', 'woo-discount-rules'), strip_tags(FlycartWoocommerceProduct::wc_price(10))),
1184
- 'set_discount_amount_tool_tip_text' => sprintf(esc_attr__('Enter the price for selected quantity. Eg: <b>10</b> then %s as total price for selected quantity', 'woo-discount-rules'), strip_tags(FlycartWoocommerceProduct::wc_price(10))),
1185
- 'discount_product_option_tooltip' => esc_html__("Auto add all selected products - Automatically added to the cart <br> Same product - get discount in same product <br> Any one cheapest from selected - Get discount in one selected product <br> Any one cheapest from all products - Get discount in one cheapest product in cart <br> Cheapest in cart - selected category(ies) - cheapest product from the selected category will be discounted <br> Cheapest in cart - selected item(s) - get discount in chosen no.of quantities", 'woo-discount-rules'),
1186
- 'products_in_cart' => esc_html__('Products', 'woo-discount-rules'),
1187
- 'products_in_list' => esc_html__('Products in cart', 'woo-discount-rules'),
1188
- 'products_not_in_list' => esc_html__('Exclude products', 'woo-discount-rules'),
1189
- 'exclude_sale_products' => esc_html__('Exclude on sale products', 'woo-discount-rules'),
1190
- 'exclude_sale_products_desc' => esc_html__('This will exclude the on sale products from discount', 'woo-discount-rules'),
1191
- 'from_all_previous_orders' => esc_html__('From all previous orders', 'woo-discount-rules'),
1192
- 'last_7_days' => esc_html__('Last 7 days', 'woo-discount-rules'),
1193
- 'last_14_days' => esc_html__('Last 14 days', 'woo-discount-rules'),
1194
- 'last_30_days' => esc_html__('Last 30 days', 'woo-discount-rules'),
1195
- 'last_60_days' => esc_html__('Last 60 days', 'woo-discount-rules'),
1196
- 'last_90_days' => esc_html__('Last 90 days', 'woo-discount-rules'),
1197
- 'last_180_days' => esc_html__('Last 180 days', 'woo-discount-rules'),
1198
- 'last_1_year' => esc_html__('Last 1 year', 'woo-discount-rules'),
1199
- 'custom_days' => esc_html__('Custom', 'woo-discount-rules'),
1200
- 'in_days' => esc_html__('in days', 'woo-discount-rules'),
1201
- 'fixed_price' => esc_html__('Fixed Price Per Unit', 'woo-discount-rules'),
1202
- 'set_discount' => esc_html__('Bundle (Set) Discount', 'woo-discount-rules'),
1203
- 'first_order_discount' => esc_html__('First Order discount', 'woo-discount-rules'),
1204
- 'exclude_categories_in_cart' => esc_html__('Exclude categories in cart', 'woo-discount-rules'),
1205
- 'enable_fixed_item_count_in_bogo' => apply_filters('woo_discount_rules_enable_fixed_item_count_in_bogo', false),
1206
- 'buy_x_get_x' => esc_html__('Buy X get X (Same product)', 'woo-discount-rules'),
1207
- 'buy_x_get_y' => esc_html__('Buy X get Y (Auto add all selected products)', 'woo-discount-rules'),
1208
- 'buy_x_get_x_tool_tip_text' => esc_html__('The customer gets the same product free (Buy 2 get 1 free) or a limited percentage (Buy 2 and get 1 at 50% discount)', 'woo-discount-rules'),
1209
- 'buy_x_get_y_tool_tip_text' => __('Provide a specific product free when purchasing another product.<br><br>Example: Buy Product A and get Product B free. Product B will be automatically added to cart.', 'woo-discount-rules'),
1210
- 'more_than_one_cheapest_tool_tip_text' => __('Provide a specific product free when purchasing another product.<br><br>Instead of automatically adding, if you wish to choose the free product, you can select this option.<br><br>Note : Product will be discounted only when the user manually adds the product to cart.', 'woo-discount-rules'),
1211
- 'more_than_one_cheapest_from_cat_tool_tip_text' => __('Used to provide BOGO discount within categories.<br><br>Example 1: Buy 2 from Category A and get 1 free from the same Category A.<br>Example 2: Buy any items from Category A and get 20% (limited percent) discount on Category B.', 'woo-discount-rules'),
1212
- 'more_than_one_cheapest_from_all_tool_tip_text' => __('This allows you to offer the cheapest product in cart for free (or at a limited percentage like 50%)', 'woo-discount-rules'),
1213
- 'apply_to_hint_all_products' => sprintf(__('<span class="wdr_desc_text">Useful for providing a discount on store wide or on all products.</span> <span class="wdr_desc_text"> <a href="%s">Read docs</a>.</span>', 'woo-discount-rules'), FlycartWooDiscountRulesGeneralHelper::docsDirectURL('https://docs.flycart.org/en/articles/1459869-storewide-global-discount-for-all-products', 'discount_for_all_products')),
1214
- 'apply_to_hint_specific_products' => sprintf(__('<span class="wdr_desc_text">Useful for providing a discount on selected products. Check the box to count quantities together across products.</span><br><span class="wdr_desc_text"><b>Note:</b> For variable products, you can auto include variants by enabling it in the settings. <a href="%s">Read docs</a>.</span>', 'woo-discount-rules'), FlycartWooDiscountRulesGeneralHelper::docsDirectURL('https://docs.flycart.org/en/articles/1459887-product-specific-discount-get-discount-in-t-shirts', 'discount_for_specific_products')),
1215
- 'apply_to_hint_specific_category' => sprintf(__('<span class="wdr_desc_text">Useful for providing a discount on a specific category or multiple categories.</span><br><span class="wdr_desc_text"><b>Example:</b> 10%% discount for products from category A or category B. <a href="%s">Read docs</a>.</span>', 'woo-discount-rules'), FlycartWooDiscountRulesGeneralHelper::docsDirectURL('https://docs.flycart.org/en/articles/1459878-category-specific-discount', 'discount_for_specific_products')),
1216
- 'apply_to_hint_specific_attribute' => sprintf(__('<span class="wdr_desc_text">Useful to offer discount based on attributes. <b>Example:</b> 10%% discount on Small Size T-shirts.</span><br><span class="wdr_desc_text"><b>Note:</b> Please make sure that the attributes are pre-defined in WooCommerce -> Attributes. <a href="%s">Read docs</a>.</span>', 'woo-discount-rules'), FlycartWooDiscountRulesGeneralHelper::docsDirectURL('https://docs.flycart.org/en/articles/1993883-specific-attribute-based-discount', 'discount_for_specific_attributes')),
1217
- );
1218
- }
1219
-
1220
- /**
1221
- * Remove applied message for the coupon we are going to remove
1222
- * */
1223
- function removeAppliedMessageOfThirdPartyCoupon($msg, $msg_code, $coupon){
1224
- if(!empty($coupon)){
1225
- if(method_exists($coupon, 'get_code')){
1226
- $coupon_code = $coupon->get_code(); //Applied COUPON
1227
- $do_not_run_while_have_third_party_coupon = $this->getConfigData('do_not_run_while_have_third_party_coupon', 0);
1228
- if($do_not_run_while_have_third_party_coupon == 'remove_coupon'){
1229
- $remove_coupon_message = apply_filters('woo_discount_rules_remove_coupon_message_on_apply_discount', true, $coupon_code);
1230
- if($remove_coupon_message){
1231
- $has_price_rules = $this->hasPriceRules();
1232
- $has_cart_rules = $this->hasCartRules();
1233
- $used_coupons = FlycartWooDiscountRulesGeneralHelper::getUsedCouponsInRules();
1234
- $cartRules = new FlycartWooDiscountRulesCartRules();
1235
- $coupon_code_by_cart_rule = $cartRules->getCouponCode();
1236
- $coupon_code_by_cart_rule = strtolower($coupon_code_by_cart_rule);
1237
- $used_coupons[] = $coupon_code_by_cart_rule;
1238
- $applied_coupon = FlycartWooDiscountRulesCartRules::getAppliedCoupons();
1239
- if(!empty($used_coupons) && is_array($used_coupons)){
1240
- $applied_coupon = array_merge($applied_coupon, $used_coupons);
1241
- }
1242
- if(!empty($applied_coupon)){
1243
- $applied_coupon = array_map('strtolower', $applied_coupon);
1244
- }
1245
- $skip_coupons = apply_filters('woo_discount_rules_coupons_to_skip_while_apply_rules_and_remove_third_party_coupon', $applied_coupon);
1246
- $cart_discount = $this->getInstance('FlycartWooDiscountRulesCartRules');
1247
- $skip_coupons[] = $cart_discount->coupon_code;
1248
- if($has_price_rules || $has_cart_rules){
1249
- if(!in_array($coupon_code, $skip_coupons)){
1250
- $msg = '';
1251
- }
1252
- } else {
1253
- global $woocommerce;
1254
- if(!empty($woocommerce->cart)){
1255
- if(!empty($woocommerce->cart->applied_coupons)){
1256
- $coupons_applied = $woocommerce->cart->applied_coupons;
1257
- if(!empty($coupons_applied)){
1258
- $used_coupon_in_woo_discount = array_intersect($coupons_applied, $skip_coupons);
1259
- }
1260
- if(!empty($used_coupon_in_woo_discount)){
1261
- if(!in_array($coupon_code, $used_coupon_in_woo_discount)){
1262
- $msg = '';
1263
- }
1264
- }
1265
- }
1266
- }
1267
- }
1268
- }
1269
- }
1270
- }
1271
- }
1272
- return $msg;
1273
- }
1274
-
1275
- /**
1276
- * Remove third party coupon
1277
- * */
1278
- public function removeThirdPartyCoupon(){
1279
- $removed_coupon = false;
1280
- $do_not_run_while_have_third_party_coupon = $this->getConfigData('do_not_run_while_have_third_party_coupon', 0);
1281
- if($do_not_run_while_have_third_party_coupon == 'remove_coupon'){
1282
- $has_price_rules = $this->hasPriceRules();
1283
- $has_cart_rules = $this->hasCartRules();
1284
- if($has_price_rules || $has_cart_rules){
1285
- $used_coupons = FlycartWooDiscountRulesGeneralHelper::getUsedCouponsInRules();
1286
- $applied_coupon = FlycartWooDiscountRulesCartRules::getAppliedCoupons();
1287
- if(!empty($used_coupons) && is_array($used_coupons)){
1288
- $applied_coupon = array_merge($applied_coupon, $used_coupons);
1289
- }
1290
- if(!empty($applied_coupon)){
1291
- $applied_coupon = array_map('strtolower', $applied_coupon);
1292
- }
1293
- $skip_coupons = apply_filters('woo_discount_rules_coupons_to_skip_while_apply_rules_and_remove_third_party_coupon', $applied_coupon);
1294
- global $woocommerce;
1295
- if(!empty($woocommerce->cart)){
1296
- if(!empty($woocommerce->cart->applied_coupons)){
1297
- foreach ($woocommerce->cart->applied_coupons as $code) {
1298
- if(!in_array($code, $skip_coupons)){
1299
- $removed_coupon = true;
1300
- FlycartWoocommerceCart::remove_coupon($code);
1301
- if(function_exists('wc_add_notice')){
1302
- $msg = sprintf(__('Sorry, it is not possible to apply coupon <b>"%s"</b> as you already have a discount applied in cart.'), $code);
1303
- $msg = apply_filters('woo_discount_rules_notice_on_remove_coupon_while_having_a_discount', $msg, $code);
1304
- wc_add_notice( $msg, 'notice' );
1305
- }
1306
- }
1307
- }
1308
- if($removed_coupon){
1309
- WC()->cart->calculate_totals();
1310
- }
1311
- }
1312
- }
1313
- }
1314
- }
1315
- }
1316
-
1317
- /**
1318
- * Check has price rules
1319
- * */
1320
- protected function hasPriceRules(){
1321
- $has_price_rules = false;
1322
- $cart = FlycartWoocommerceCart::get_cart();
1323
- if(FlycartWooDiscountRulesGeneralHelper::is_countable($cart)){
1324
- foreach ($cart as $key => $cart_item){
1325
- if(isset($cart_item['woo_discount'])){
1326
- if(!empty($cart_item['woo_discount'])){
1327
- $has_price_rules = true;
1328
- break;
1329
- }
1330
- }
1331
- }
1332
- }
1333
-
1334
- return $has_price_rules;
1335
- }
1336
-
1337
- /**
1338
- * Check has cart rules
1339
- * */
1340
- protected function hasCartRules(){
1341
- $applied_coupon = FlycartWooDiscountRulesCartRules::getAppliedCoupons();
1342
- if(empty($applied_coupon)){
1343
- return false;
1344
- }
1345
-
1346
- return true;
1347
- }
1348
-
1349
- /**
1350
- * To display settings link in plugin page
1351
- *
1352
- * @param array $links
1353
- * @return array
1354
- * */
1355
- public static function addActionLinksInPluginPage($links){
1356
- $new_links = array(
1357
- '<a href="' . admin_url("admin.php?page=woo_discount_rules&tab=settings"). '">'.esc_html__('Settings', 'woo-discount-rules').'</a>',
1358
- );
1359
- return array_merge($new_links, $links);
1360
- }
1361
-
1362
- /**
1363
- * Remove hooks set by other plugins
1364
- * */
1365
- public static function removeHooksSetByOtherPlugins() {
1366
- global $wp_filter;
1367
-
1368
- $allowed_hooks = array(
1369
- //Filters
1370
- "woocommerce_sale_flash" => array( "FlycartWooDiscountRulesPricingRules|replaceSaleTagText" ),
1371
- );
1372
-
1373
- foreach ( $wp_filter as $hook_name => $hook_obj ) {
1374
- if ( preg_match( '#^woocommerce_#', $hook_name ) ) {
1375
- if ( isset( $allowed_hooks[ $hook_name ] ) ) {
1376
- $wp_filter[ $hook_name ] = self::remove_wrong_callbacks( $hook_obj, $allowed_hooks[ $hook_name ] );
1377
- } else {
1378
- }
1379
- }
1380
- }
1381
- }
1382
-
1383
- /**
1384
- * Remove other plugin hooks
1385
- *
1386
- * @param $hook_obj object
1387
- * @param $allowed_hooks string
1388
- * @return string
1389
- * */
1390
- public static function remove_wrong_callbacks( $hook_obj, $allowed_hooks ) {
1391
- $new_callbacks = array();
1392
- foreach ( $hook_obj->callbacks as $priority => $callbacks ) {
1393
- $priority_callbacks = array();
1394
- foreach ( $callbacks as $idx => $callback_details ) {
1395
- if ( self::is_callback_match( $callback_details, $allowed_hooks ) ) {
1396
- $priority_callbacks[ $idx ] = $callback_details;
1397
- }
1398
- }
1399
- if ( $priority_callbacks ) {
1400
- $new_callbacks[ $priority ] = $priority_callbacks;
1401
- }
1402
- }
1403
- $hook_obj->callbacks = $new_callbacks;
1404
-
1405
- return $hook_obj;
1406
- }
1407
-
1408
- /**
1409
- * Is hook matches
1410
- *
1411
- * @param $callback_details array
1412
- * @param $allowed_hooks array
1413
- * @return boolean
1414
- * */
1415
- public static function is_callback_match( $callback_details, $allowed_hooks ) {
1416
- $result = false;
1417
- foreach ( $allowed_hooks as $callback_name ) {
1418
- list( $class_name, $func_name ) = explode( "|", $callback_name );
1419
- if(isset($callback_details['function']) && is_array($callback_details['function'])){
1420
- if ( count( $callback_details['function'] ) != 2 ) {
1421
- continue;
1422
- }
1423
- if ( $class_name == get_class( $callback_details['function'][0] ) AND $func_name == $callback_details['function'][1] ) {
1424
- $result = true;
1425
- break;// done!
1426
- }
1427
- }
1428
- }
1429
-
1430
- return $result;
1431
- }
1432
-
1433
- /**
1434
- * Change the default template for sale badge
1435
- *
1436
- * @param $located string
1437
- * @param $template_name string
1438
- * @param $args array
1439
- * @param $template_path string
1440
- * @param $default_path string
1441
- * @return string
1442
- * */
1443
- public static function changeTemplateForSaleTag($located, $template_name, $args, $template_path, $default_path){
1444
- if($template_name == 'single-product/sale-flash.php'){
1445
- $located = self::getTemplatePath('sale-flash.php', WOO_DISCOUNT_DIR . '/view/template/single-product/sale-flash.php', 'single-product');
1446
- } else if($template_name == 'loop/sale-flash.php'){
1447
- $located = self::getTemplatePath('sale-flash.php', WOO_DISCOUNT_DIR . '/view/template/loop/sale-flash.php', 'loop');
1448
- }
1449
-
1450
- return $located;
1451
- }
1452
-
1453
- /**
1454
- * Get template path
1455
- *
1456
- * @param $template_name string
1457
- * @param $default_path string
1458
- * @param $folder string
1459
- * @return string
1460
- * */
1461
- protected static function getTemplatePath($template_name, $default_path, $folder = ''){
1462
- $pricing_rules = self::get_instance()->getInstance('FlycartWooDiscountRulesPricingRules');
1463
- $path_from_template = $pricing_rules->getTemplateOverride($template_name, $folder);
1464
- if($path_from_template) $default_path = $path_from_template;
1465
-
1466
- return $default_path;
1467
- }
1468
- }
1469
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
v1/includes/pricing-productbased.php DELETED
@@ -1,85 +0,0 @@
1
- <?php
2
- if (!defined('ABSPATH')) exit; // Exit if accessed directly
3
- /**
4
- * Class FlycartWooDiscountRulesPriceProductBased
5
- */
6
- if (!class_exists('FlycartWooDiscountRulesPriceProductBased')) {
7
- class FlycartWooDiscountRulesPriceProductBased
8
- {
9
- /**
10
- * Verify Quantity
11
- * */
12
- public static function verifyQuantity($quantity_rule, $quantity, $quantity_from, $quantity_to, $buy_type){
13
- $quantityMatched = array();
14
- switch ($quantity_rule) {
15
- case 'less':
16
- foreach($quantity as $quantityValue){
17
- $quantityMatched[] = ($quantityValue <= $quantity_from) ? 1: 0;
18
- }
19
- break;
20
- case 'equal':
21
- foreach($quantity as $quantityValue){
22
- $quantityMatched[] = ($quantityValue == $quantity_from) ? 1: 0;
23
- }
24
- break;
25
- case 'from':
26
- foreach($quantity as $quantityValue){
27
- $quantityMatched[] = (($quantityValue >= $quantity_from) && ($quantityValue <= $quantity_to)) ? 1: 0;
28
- }
29
- break;
30
- case 'more':
31
- default:
32
- foreach($quantity as $quantityValue){
33
- $quantityMatched[] = ($quantityValue >= $quantity_from) ? 1: 0;
34
- }
35
- break;
36
- }
37
-
38
- return FlycartWooDiscountRulesPriceProductBased::verifyBuyTypeWithQuantityMatched($buy_type, $quanti