Cookie Notice by dFactory - Version 1.3.0

Version Description

  • New: Introducing Corona Banner that displays data about Coronavirus pandemia and five steps recommended by the WHO (World Health Organization)
  • New: Option to set bar opacity
  • New: Accept the notice with close icon
  • Fix: Policy link added to message without policy option enabled
Download this release

Release Info

Developer dfactory
Plugin Icon 128x128 Cookie Notice by dFactory
Version 1.3.0
Comparing to
See all releases

Code changes from version 1.2.51 to 1.3.0

cookie-notice.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  Plugin Name: Cookie Notice
4
  Description: Cookie Notice allows you to elegantly inform users that your site uses cookies and helps you comply with the EU GDPR cookie law and CCPA regulations.
5
- Version: 1.2.51
6
  Author: dFactory
7
  Author URI: http://www.dfactory.eu/
8
  Plugin URI: http://www.dfactory.eu/plugins/cookie-notice/
@@ -29,7 +29,7 @@ if ( ! defined( 'ABSPATH' ) )
29
  * Cookie Notice class.
30
  *
31
  * @class Cookie_Notice
32
- * @version 1.2.51
33
  */
34
  class Cookie_Notice {
35
 
@@ -41,10 +41,10 @@ class Cookie_Notice {
41
  'position' => 'bottom',
42
  'message_text' => '',
43
  'css_style' => 'bootstrap',
44
- 'css_class' => 'button',
45
  'accept_text' => '',
46
  'refuse_text' => '',
47
- 'refuse_opt' => 'no',
48
  'refuse_code' => '',
49
  'refuse_code_head' => '',
50
  'revoke_cookies' => false,
@@ -52,7 +52,7 @@ class Cookie_Notice {
52
  'revoke_message_text' => '',
53
  'revoke_text' => '',
54
  'redirection' => false,
55
- 'see_more' => 'no',
56
  'link_target' => '_blank',
57
  'link_position' => 'banner',
58
  'time' => 'month',
@@ -62,8 +62,9 @@ class Cookie_Notice {
62
  'on_scroll_offset' => 100,
63
  'on_click' => false,
64
  'colors' => array(
65
- 'text' => '#fff',
66
- 'bar' => '#000'
 
67
  ),
68
  'see_more_opt' => array(
69
  'text' => '',
@@ -72,14 +73,32 @@ class Cookie_Notice {
72
  'link' => '',
73
  'sync' => false
74
  ),
75
- 'script_placement' => 'header',
76
- 'translate' => true,
77
- 'deactivation_delete' => 'no',
78
- 'update_version' => 1,
79
- 'update_notice' => true,
80
- 'update_delay_date' => 0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  ),
82
- 'version' => '1.2.51'
83
  );
84
  private $positions = array();
85
  private $styles = array();
@@ -122,10 +141,16 @@ class Cookie_Notice {
122
  public function __construct() {
123
  register_activation_hook( __FILE__, array( $this, 'activation' ) );
124
  register_deactivation_hook( __FILE__, array( $this, 'deactivation' ) );
 
 
 
125
 
126
- // settings
 
 
 
127
  $this->options = array(
128
- 'general' => array_merge( $this->defaults['general'], get_option( 'cookie_notice_options', $this->defaults['general'] ) )
129
  );
130
 
131
  if ( ! isset( $this->options['general']['see_more_opt']['sync'] ) )
@@ -141,10 +166,13 @@ class Cookie_Notice {
141
  add_action( 'after_setup_theme', array( $this, 'load_defaults' ) );
142
  add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
143
  add_action( 'wp_enqueue_scripts', array( $this, 'wp_enqueue_scripts' ) );
 
144
  add_action( 'wp_head', array( $this, 'wp_print_header_scripts' ) );
145
  add_action( 'wp_print_footer_scripts', array( $this, 'wp_print_footer_scripts' ) );
146
  add_action( 'wp_footer', array( $this, 'add_cookie_notice' ), 1000 );
147
- add_action( 'wp_ajax_cn_dismiss_notice', array( $this, 'dismiss_notice' ) );
 
 
148
 
149
  // filters
150
  add_filter( 'plugin_row_meta', array( $this, 'plugin_row_meta' ), 10, 2 );
@@ -233,8 +261,23 @@ class Cookie_Notice {
233
  $this->defaults['general']['revoke_message_text'] = __( 'You can revoke your consent any time using the Revoke consent button.', 'cookie-notice' );
234
  $this->defaults['general']['revoke_text'] = __( 'Revoke consent', 'cookie-notice' );
235
  $this->defaults['general']['see_more_opt']['text'] = __( 'Privacy policy', 'cookie-notice' );
236
-
237
- // set translation strings
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
238
  if ( $this->options['general']['translate'] === true ) {
239
  $this->options['general']['translate'] = false;
240
 
@@ -245,6 +288,11 @@ class Cookie_Notice {
245
  $this->options['general']['revoke_text'] = $this->defaults['general']['revoke_text'];
246
  $this->options['general']['see_more_opt']['text'] = $this->defaults['general']['see_more_opt']['text'];
247
 
 
 
 
 
 
248
  update_option( 'cookie_notice_options', $this->options['general'] );
249
  }
250
 
@@ -260,6 +308,11 @@ class Cookie_Notice {
260
  icl_register_string( 'Cookie Notice', 'Revoke button text', $this->options['general']['revoke_text'] );
261
  icl_register_string( 'Cookie Notice', 'Privacy policy text', $this->options['general']['see_more_opt']['text'] );
262
  icl_register_string( 'Cookie Notice', 'Custom link', $this->options['general']['see_more_opt']['link'] );
 
 
 
 
 
263
  }
264
  }
265
 
@@ -290,44 +343,70 @@ class Cookie_Notice {
290
  public function update_notice() {
291
  if ( ! current_user_can( 'install_plugins' ) )
292
  return;
293
-
294
- $current_update = 2;
295
-
296
- // get current time
297
- $current_time = time();
298
-
 
299
  if ( $this->options['general']['update_version'] < $current_update ) {
300
  // check version, if update version is lower than plugin version, set update notice to true
301
- $this->options['general'] = array_merge( $this->options['general'], array( 'update_version' => $current_update, 'update_notice' => true ) );
302
 
303
  update_option( 'cookie_notice_options', $this->options['general'] );
304
-
305
- // set activation date
306
- $activation_date = get_option( 'cookie_notice_activation_date' );
307
-
308
- if ( $activation_date === false )
309
- update_option( 'cookie_notice_activation_date', $current_time );
310
  }
311
-
312
  // display current version notice
313
  if ( $this->options['general']['update_notice'] === true ) {
314
- // include notice js, only if needed
315
- add_action( 'admin_print_scripts', array( $this, 'admin_inline_js' ), 999 );
316
-
317
- // get activation date
318
- $activation_date = get_option( 'cookie_notice_activation_date' );
319
-
320
- if ( (int) $this->options['general']['update_delay_date'] === 0 ) {
321
- if ( $activation_date + 1209600 > $current_time )
322
- $this->options['general']['update_delay_date'] = $activation_date + 1209600;
323
- else
324
- $this->options['general']['update_delay_date'] = $current_time;
325
-
326
- update_option( 'cookie_notice_options', $this->options['general'] );
327
- }
328
-
329
- if ( ( ! empty( $this->options['general']['update_delay_date'] ) ? (int) $this->options['general']['update_delay_date'] : $current_time ) <= $current_time )
330
- $this->add_notice( sprintf( __( "Hey, you've been using <strong>Cookie Notice</strong> for more than %s.", 'cookie-notice' ), human_time_diff( $activation_date, $current_time ) ) . '<br />' . __( 'Could you please do me a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation.', 'cookie-notice' ) . '<br /><br />' . __( 'Your help is much appreciated. Thank you very much', 'cookie-notice' ) . ' ~ <strong>Bartosz Arendt</strong>, ' . sprintf( __( 'founder of <a href="%s" target="_blank">dFactory</a> plugins.', 'cookie-notice' ), 'https://dfactory.eu/' ) . '<br /><br />' . sprintf( __( '<a href="%s" class="cn-dismissible-notice" target="_blank" rel="noopener">Ok, you deserve it</a><br /><a href="javascript:void(0);" class="cn-dismissible-notice cn-delay-notice" rel="noopener">Nope, maybe later</a><br /><a href="javascript:void(0);" class="cn-dismissible-notice" rel="noopener">I already did</a>', 'cookie-notice' ), 'https://wordpress.org/support/plugin/cookie-notice/reviews/?filter=5#new-post' ), 'notice notice-info is-dismissible cn-notice' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
331
  }
332
  }
333
 
@@ -338,14 +417,14 @@ class Cookie_Notice {
338
  * @param string $status
339
  * @param bool $paragraph
340
  */
341
- public function add_notice( $html = '', $status = 'error', $paragraph = true ) {
342
  $this->notices[] = array(
343
  'html' => $html,
344
  'status' => $status,
345
- 'paragraph' => $paragraph
346
  );
347
 
348
- add_action( 'admin_notices', array( $this, 'display_notice') );
349
  }
350
 
351
  /**
@@ -356,71 +435,47 @@ class Cookie_Notice {
356
  public function display_notice() {
357
  foreach( $this->notices as $notice ) {
358
  echo '
359
- <div class="' . $notice['status'] . '">
360
- ' . ( $notice['paragraph'] ? '<p>' : '' ) . '
361
  ' . $notice['html'] . '
362
- ' . ( $notice['paragraph'] ? '</p>' : '' ) . '
363
  </div>';
364
  }
365
  }
366
 
367
  /**
368
- * Print admin scripts.
369
- *
370
- * @return mixed
371
- */
372
- public function admin_inline_js() {
373
- if ( ! current_user_can( 'install_plugins' ) )
374
- return;
375
- ?>
376
- <script type="text/javascript">
377
- ( function ( $ ) {
378
- $( document ).ready( function () {
379
- // save dismiss state
380
- $( '.cn-notice.is-dismissible' ).on( 'click', '.notice-dismiss, .cn-dismissible-notice', function ( e ) {
381
- var notice_action = 'hide';
382
-
383
- if ( $( e.currentTarget ).hasClass( 'cn-delay-notice' ) ) {
384
- notice_action = 'delay'
385
- }
386
-
387
- $.post( ajaxurl, {
388
- action: 'cn_dismiss_notice',
389
- notice_action: notice_action,
390
- url: '<?php echo admin_url( 'admin-ajax.php' ); ?>',
391
- nonce: '<?php echo wp_create_nonce( 'cn_dismiss_notice' ); ?>'
392
- } );
393
-
394
- $( e.delegateTarget ).slideUp( 'fast' );
395
- } );
396
- } );
397
- } )( jQuery );
398
- </script>
399
- <?php
400
- }
401
-
402
- /**
403
- * Dismiss notice.
404
  */
405
- public function dismiss_notice() {
406
  if ( ! current_user_can( 'install_plugins' ) )
407
  return;
408
 
409
  if ( wp_verify_nonce( esc_attr( $_REQUEST['nonce'] ), 'cn_dismiss_notice' ) ) {
410
- $notice_action = empty( $_REQUEST['notice_action'] ) || $_REQUEST['notice_action'] === 'hide' ? 'hide' : esc_attr( $_REQUEST['notice_action'] );
411
 
412
  switch ( $notice_action ) {
413
  // delay notice
414
  case 'delay':
415
  // set delay period to 1 week from now
416
- $this->options['general'] = array_merge( $this->options['general'], array( 'update_delay_date' => time() + 1209600 ) );
 
 
 
 
 
 
 
 
 
 
 
417
  update_option( 'cookie_notice_options', $this->options['general'] );
418
  break;
419
 
420
  // hide notice
421
  default:
422
- $this->options['general'] = array_merge( $this->options['general'], array( 'update_notice' => false ) );
423
- $this->options['general'] = array_merge( $this->options['general'], array( 'update_delay_date' => 0 ) );
424
 
425
  update_option( 'cookie_notice_options', $this->options['general'] );
426
  }
@@ -428,6 +483,28 @@ class Cookie_Notice {
428
 
429
  exit;
430
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
431
 
432
  /**
433
  * Add new body classes.
@@ -557,6 +634,11 @@ class Cookie_Notice {
557
  'Privacy policy text' => $this->options['general']['see_more_opt']['text'],
558
  'Custom link' => $this->options['general']['see_more_opt']['link']
559
  );
 
 
 
 
 
560
 
561
  // get query results
562
  $results = $wpdb->get_col( $wpdb->prepare( "SELECT name FROM " . $wpdb->prefix . "icl_strings WHERE context = %s", 'Cookie Notice' ) );
@@ -595,7 +677,7 @@ class Cookie_Notice {
595
  <div class="wrap">
596
  <h2>' . __( 'Cookie Notice', 'cookie-notice' ) . '</h2>
597
  <div class="cookie-notice-settings">
598
- <div class="df-credits">
599
  <h3 class="hndle">' . __( 'Cookie Notice', 'cookie-notice' ) . ' ' . $this->defaults['version'] . '</h3>
600
  <div class="inside">
601
  <h4 class="inner">' . __( 'Need support?', 'cookie-notice' ) . '</h4>
@@ -605,9 +687,7 @@ class Cookie_Notice {
605
  <p class="inner">' . sprintf( __( '<a href="%s" target="_blank">Rate it 5</a> on WordPress.org', 'cookie-notice' ), 'https://wordpress.org/support/plugin/cookie-notice/reviews/?filter=5' ) . '<br />' .
606
  sprintf( __( 'Blog about it & link to the <a href="%s" target="_blank">plugin page</a>.', 'cookie-notice' ), 'https://dfactory.eu/plugins/cookie-notice?utm_source=cookie-notice-settings&utm_medium=link&utm_campaign=blog-about' ) . '<br />' .
607
  sprintf( __( 'Check out our other <a href="%s" target="_blank">WordPress plugins</a>.', 'cookie-notice' ), 'https://dfactory.eu/plugins/?utm_source=cookie-notice-settings&utm_medium=link&utm_campaign=other-plugins' ) . '
608
- </p>
609
- <hr />
610
- <p class="df-link inner">Created by <a href="https://dfactory.eu/?utm_source=cookie-notice-settings&utm_medium=link&utm_campaign=created-by" target="_blank" title="dFactory - Quality plugins for WordPress"><img src="' . plugins_url( '/images/logo-dfactory.png', __FILE__ ) . '" title="dFactory - Quality plugins for WordPress" alt="dFactory - Quality plugins for WordPress" /></a></p>
611
  </div>
612
  </div>
613
  <form action="options.php" method="post">';
@@ -650,6 +730,12 @@ class Cookie_Notice {
650
  add_settings_field( 'cn_script_placement', __( 'Script placement', 'cookie-notice' ), array( $this, 'cn_script_placement' ), 'cookie_notice_options', 'cookie_notice_configuration' );
651
  add_settings_field( 'cn_deactivation_delete', __( 'Deactivation', 'cookie-notice' ), array( $this, 'cn_deactivation_delete' ), 'cookie_notice_options', 'cookie_notice_configuration' );
652
 
 
 
 
 
 
 
653
  // design
654
  add_settings_section( 'cookie_notice_design', __( 'Design', 'cookie-notice' ), array( $this, 'cn_section_design' ), 'cookie_notice_options' );
655
  add_settings_field( 'cn_position', __( 'Position', 'cookie-notice' ), array( $this, 'cn_position' ), 'cookie_notice_options', 'cookie_notice_design' );
@@ -664,14 +750,62 @@ class Cookie_Notice {
664
  */
665
  public function cn_section_configuration() {}
666
  public function cn_section_design() {}
667
-
 
668
  /**
669
- * Delete plugin data on deactivation.
670
  */
671
- public function cn_deactivation_delete() {
672
  echo '
673
  <fieldset>
674
- <label><input id="cn_deactivation_delete" type="checkbox" name="cookie_notice_options[deactivation_delete]" value="1" ' . checked( 'yes', $this->options['general']['deactivation_delete'], false ) . '/>' . __( 'Enable if you want all plugin data to be deleted on deactivation.', 'cookie-notice' ) . '</label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
675
  </fieldset>';
676
  }
677
 
@@ -707,8 +841,8 @@ class Cookie_Notice {
707
  public function cn_refuse_opt() {
708
  echo '
709
  <fieldset>
710
- <label><input id="cn_refuse_opt" type="checkbox" name="cookie_notice_options[refuse_opt]" value="1" ' . checked( 'yes', $this->options['general']['refuse_opt'], false ) . ' />' . __( 'Enable to give to the user the possibility to refuse third party non functional cookies.', 'cookie-notice' ) . '</label>
711
- <div id="cn_refuse_opt_container"' . ( $this->options['general']['refuse_opt'] === 'no' ? ' style="display: none;"' : '' ) . '>
712
  <div id="cn_refuse_text">
713
  <input type="text" class="regular-text" name="cookie_notice_options[refuse_text]" value="' . esc_attr( $this->options['general']['refuse_text'] ) . '" />
714
  <p class="description">' . __( 'The text of the button to refuse the consent.', 'cookie-notice' ) . '</p>
@@ -799,8 +933,8 @@ class Cookie_Notice {
799
 
800
  echo '
801
  <fieldset>
802
- <label><input id="cn_see_more" type="checkbox" name="cookie_notice_options[see_more]" value="1" ' . checked( 'yes', $this->options['general']['see_more'], false ) . ' />' . __( 'Enable privacy policy link.', 'cookie-notice' ) . '</label>
803
- <div id="cn_see_more_opt"' . ($this->options['general']['see_more'] === 'no' ? ' style="display: none;"' : '') . '>
804
  <input type="text" class="regular-text" name="cookie_notice_options[see_more_opt][text]" value="' . esc_attr( $this->options['general']['see_more_opt']['text'] ) . '" />
805
  <p class="description">' . __( 'The text of the privacy policy button.', 'cookie-notice' ) . '</p>
806
  <div id="cn_see_more_opt_custom_link">';
@@ -977,8 +1111,8 @@ class Cookie_Notice {
977
  public function cn_on_scroll() {
978
  echo '
979
  <fieldset>
980
- <label><input id="cn_on_scroll" type="checkbox" name="cookie_notice_options[on_scroll]" value="1" ' . checked( 'yes', $this->options['general']['on_scroll'], false ) . ' />' . __( 'Enable to accept the notice when user scrolls.', 'cookie-notice' ) . '</label>
981
- <div id="cn_on_scroll_offset"' . ( $this->options['general']['on_scroll'] === 'no' || $this->options['general']['on_scroll'] == false ? ' style="display: none;"' : '' ) . '>
982
  <input type="text" class="text" name="cookie_notice_options[on_scroll_offset]" value="' . esc_attr( $this->options['general']['on_scroll_offset'] ) . '" /> <span>px</span>
983
  <p class="description">' . __( 'Number of pixels user has to scroll to accept the notice and make it disappear.', 'cookie-notice' ) . '</p>
984
  </div>
@@ -991,7 +1125,17 @@ class Cookie_Notice {
991
  public function cn_on_click() {
992
  echo '
993
  <fieldset>
994
- <label><input id="cn_on_click" type="checkbox" name="cookie_notice_options[on_click]" value="1" ' . checked( 'yes', $this->options['general']['on_click'], false ) . ' />' . __( 'Enable to accept the notice on any click on the page.', 'cookie-notice' ) . '</label>
 
 
 
 
 
 
 
 
 
 
995
  </fieldset>';
996
  }
997
 
@@ -1045,6 +1189,13 @@ class Cookie_Notice {
1045
  '</div>';
1046
  }
1047
 
 
 
 
 
 
 
 
1048
  echo '
1049
  </fieldset>';
1050
  }
@@ -1066,6 +1217,7 @@ class Cookie_Notice {
1066
  // colors
1067
  $input['colors']['text'] = sanitize_text_field( isset( $input['colors']['text'] ) && $input['colors']['text'] !== '' && preg_match( '/^#[a-f0-9]{6}$/', $input['colors']['text'] ) === 1 ? $input['colors']['text'] : $this->defaults['general']['colors']['text'] );
1068
  $input['colors']['bar'] = sanitize_text_field( isset( $input['colors']['bar'] ) && $input['colors']['bar'] !== '' && preg_match( '/^#[a-f0-9]{6}$/', $input['colors']['bar'] ) === 1 ? $input['colors']['bar'] : $this->defaults['general']['colors']['bar'] );
 
1069
 
1070
  // texts
1071
  $input['message_text'] = wp_kses_post( isset( $input['message_text'] ) && $input['message_text'] !== '' ? $input['message_text'] : $this->defaults['general']['message_text'] );
@@ -1073,7 +1225,7 @@ class Cookie_Notice {
1073
  $input['refuse_text'] = sanitize_text_field( isset( $input['refuse_text'] ) && $input['refuse_text'] !== '' ? $input['refuse_text'] : $this->defaults['general']['refuse_text'] );
1074
  $input['revoke_message_text'] = wp_kses_post( isset( $input['revoke_message_text'] ) && $input['revoke_message_text'] !== '' ? $input['revoke_message_text'] : $this->defaults['general']['revoke_message_text'] );
1075
  $input['revoke_text'] = sanitize_text_field( isset( $input['revoke_text'] ) && $input['revoke_text'] !== '' ? $input['revoke_text'] : $this->defaults['general']['revoke_text'] );
1076
- $input['refuse_opt'] = (bool) isset( $input['refuse_opt'] ) ? 'yes' : 'no';
1077
  $input['revoke_cookies'] = isset( $input['revoke_cookies'] );
1078
  $input['revoke_cookies_opt'] = isset( $input['revoke_cookies_opt'] ) && array_key_exists( $input['revoke_cookies_opt'], $this->revoke_opts ) ? $input['revoke_cookies_opt'] : $this->defaults['general']['revoke_cookies_opt'];
1079
 
@@ -1095,13 +1247,6 @@ class Cookie_Notice {
1095
  // link target
1096
  $input['link_target'] = sanitize_text_field( isset( $input['link_target'] ) && in_array( $input['link_target'], array_keys( $this->link_targets ) ) ? $input['link_target'] : $this->defaults['general']['link_target'] );
1097
 
1098
- // link target
1099
- $input['link_position'] = sanitize_text_field( isset( $input['link_position'] ) && in_array( $input['link_position'], array_keys( $this->link_positions ) ) ? $input['link_position'] : $this->defaults['general']['link_position'] );
1100
-
1101
- // message link position?
1102
- if ( $input['link_position'] === 'message' && strpos( $input['message_text'], '[cookies_policy_link' ) === false )
1103
- $input['message_text'] .= ' [cookies_policy_link]';
1104
-
1105
  // time
1106
  $input['time'] = sanitize_text_field( isset( $input['time'] ) && in_array( $input['time'], array_keys( $this->times ) ) ? $input['time'] : $this->defaults['general']['time'] );
1107
  $input['time_rejected'] = sanitize_text_field( isset( $input['time_rejected'] ) && in_array( $input['time_rejected'], array_keys( $this->times ) ) ? $input['time_rejected'] : $this->defaults['general']['time_rejected'] );
@@ -1116,32 +1261,55 @@ class Cookie_Notice {
1116
  $input['redirection'] = isset( $input['redirection'] );
1117
 
1118
  // on scroll
1119
- $input['on_scroll'] = (bool) isset( $input['on_scroll'] ) ? 'yes' : 'no';
1120
 
1121
  // on scroll offset
1122
  $input['on_scroll_offset'] = absint( isset( $input['on_scroll_offset'] ) && $input['on_scroll_offset'] !== '' ? $input['on_scroll_offset'] : $this->defaults['general']['on_scroll_offset'] );
1123
 
1124
  // on click
1125
- $input['on_click'] = (bool) isset( $input['on_click'] ) ? 'yes' : 'no';
1126
 
1127
  // deactivation
1128
- $input['deactivation_delete'] = (bool) isset( $input['deactivation_delete'] ) ? 'yes' : 'no';
1129
 
1130
  // privacy policy
1131
- $input['see_more'] = (bool) isset( $input['see_more'] ) ? 'yes' : 'no';
1132
  $input['see_more_opt']['text'] = sanitize_text_field( isset( $input['see_more_opt']['text'] ) && $input['see_more_opt']['text'] !== '' ? $input['see_more_opt']['text'] : $this->defaults['general']['see_more_opt']['text'] );
1133
  $input['see_more_opt']['link_type'] = sanitize_text_field( isset( $input['see_more_opt']['link_type'] ) && in_array( $input['see_more_opt']['link_type'], array_keys( $this->links ) ) ? $input['see_more_opt']['link_type'] : $this->defaults['general']['see_more_opt']['link_type'] );
1134
 
1135
  if ( $input['see_more_opt']['link_type'] === 'custom' )
1136
- $input['see_more_opt']['link'] = esc_url( $input['see_more'] === 'yes' ? $input['see_more_opt']['link'] : 'empty' );
1137
  elseif ( $input['see_more_opt']['link_type'] === 'page' ) {
1138
- $input['see_more_opt']['id'] = ( $input['see_more'] === 'yes' ? (int) $input['see_more_opt']['id'] : 'empty' );
1139
  $input['see_more_opt']['sync'] = isset( $input['see_more_opt']['sync'] );
1140
 
1141
  if ( $input['see_more_opt']['sync'] )
1142
  update_option( 'wp_page_for_privacy_policy', $input['see_more_opt']['id'] );
1143
  }
 
 
 
1144
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1145
  $input['update_version'] = $this->options['general']['update_version'];
1146
  $input['update_notice'] = $this->options['general']['update_notice'];
1147
 
@@ -1220,7 +1388,10 @@ class Cookie_Notice {
1220
  'aria_label' => __( 'Cookie Notice', 'cookie-notice' )
1221
  ) );
1222
 
1223
- if ( $options['see_more'] === 'yes' && $options['link_position'] === 'message' )
 
 
 
1224
  $options['message_text'] = do_shortcode( wp_kses_post( $options['message_text'] ) );
1225
  else
1226
  $options['message_text'] = wp_kses_post( $options['message_text'] );
@@ -1230,15 +1401,15 @@ class Cookie_Notice {
1230
  // message output
1231
  $output = '
1232
  <!-- Cookie Notice plugin v' . $this->defaults['version'] . ' by Digital Factory https://dfactory.eu/ -->
1233
- <div id="cookie-notice" role="banner" class="cookie-notice-hidden cookie-revoke-hidden cn-position-' . $options['position'] . '" aria-label="' . $options['aria_label'] . '" style="background-color: ' . $options['colors']['bar'] . ';">'
1234
  . '<div class="cookie-notice-container" style="color: ' . $options['colors']['text'] . ';">'
1235
  . '<span id="cn-notice-text" class="cn-text-container">'. $options['message_text'] . '</span>'
1236
  . '<span id="cn-notice-buttons" class="cn-buttons-container"><a href="#" id="cn-accept-cookie" data-cookie-set="accept" class="cn-set-cookie ' . $options['button_class'] . ( $options['css_style'] !== 'none' ? ' ' . $options['css_style'] : '' ) . ( $options['css_class'] !== '' ? ' ' . $options['css_class'] : '' ) . '">' . $options['accept_text'] . '</a>'
1237
- . ( $options['refuse_opt'] === 'yes' ? '<a href="#" id="cn-refuse-cookie" data-cookie-set="refuse" class="cn-set-cookie ' . $options['button_class'] . ( $options['css_style'] !== 'none' ? ' ' . $options['css_style'] : '' ) . ( $options['css_class'] !== '' ? ' ' . $options['css_class'] : '' ) . '">' . $options['refuse_text'] . '</a>' : '' )
1238
- . ( $options['see_more'] === 'yes' && $options['link_position'] === 'banner' ? '<a href="' . ( $options['see_more_opt']['link_type'] === 'custom' ? $options['see_more_opt']['link'] : get_permalink( $options['see_more_opt']['id'] ) ) . '" target="' . $options['link_target'] . '" id="cn-more-info" class="cn-more-info ' . $options['button_class'] . ( $options['css_style'] !== 'none' ? ' ' . $options['css_style'] : '' ) . ( $options['css_class'] !== '' ? ' ' . $options['css_class'] : '' ) . '">' . $options['see_more_opt']['text'] . '</a>' : '' )
1239
- . '</span>' // '<a href="#" id="cn-close-notice" data-cookie-set="accept" class="cn-close-icon"></a>
1240
  . '</div>
1241
- ' . ( $options['refuse_opt'] === 'yes' && $options['revoke_cookies'] == true ?
1242
  '<div class="cookie-revoke-container" style="color: ' . $options['colors']['text'] . ';">'
1243
  . ( ! empty( $options['revoke_message_text'] ) ? '<span id="cn-revoke-text" class="cn-text-container">'. $options['revoke_message_text'] . '</span>' : '' )
1244
  . '<span id="cn-revoke-buttons" class="cn-buttons-container"><a href="#" class="cn-revoke-cookie ' . $options['button_class'] . ( $options['css_style'] !== 'none' ? ' ' . $options['css_style'] : '' ) . ( $options['css_class'] !== '' ? ' ' . $options['css_class'] : '' ) . '">' . esc_html( $options['revoke_text'] ) . '</a></span>
@@ -1334,9 +1505,10 @@ class Cookie_Notice {
1334
  * Deactivate the plugin.
1335
  */
1336
  public function deactivation() {
1337
- if ( $this->options['general']['deactivation_delete'] === 'yes' ) {
1338
  delete_option( 'cookie_notice_options' );
1339
  delete_option( 'cookie_notice_version' );
 
1340
  }
1341
 
1342
  // remove WP Super Cache cookie
@@ -1407,27 +1579,68 @@ class Cookie_Notice {
1407
  'cookie-notice-front',
1408
  'cnArgs',
1409
  array(
1410
- 'ajaxurl' => admin_url( 'admin-ajax.php' ),
 
1411
  'hideEffect' => $this->options['general']['hide_effect'],
1412
- 'onScroll' => $this->options['general']['on_scroll'],
1413
- 'onScrollOffset' => $this->options['general']['on_scroll_offset'],
1414
- 'onClick' => $this->options['general']['on_click'],
 
1415
  'cookieName' => 'cookie_notice_accepted',
1416
  'cookieTime' => $this->times[$this->options['general']['time']][1],
1417
- 'cookieTimeRejected' => $this->times[$this->options['general']['time_rejected']][1],
1418
  'cookiePath' => ( defined( 'COOKIEPATH' ) ? (string) COOKIEPATH : '' ),
1419
  'cookieDomain' => ( defined( 'COOKIE_DOMAIN' ) ? (string) COOKIE_DOMAIN : '' ),
1420
- 'redirection' => $this->options['general']['redirection'],
1421
- 'cache' => defined( 'WP_CACHE' ) && WP_CACHE,
1422
- 'refuse' => $this->options['general']['refuse_opt'],
1423
- 'revoke_cookies' => (int) $this->options['general']['revoke_cookies'],
1424
- 'revoke_cookies_opt' => $this->options['general']['revoke_cookies_opt'],
1425
- 'secure' => (int) is_ssl()
 
1426
  )
1427
  );
1428
 
1429
  wp_enqueue_style( 'cookie-notice-front', plugins_url( 'css/front' . ( ! ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '.min' : '' ) . '.css', __FILE__ ) );
1430
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1431
 
1432
  /**
1433
  * Print non functional JavaScript in body.
@@ -1454,9 +1667,142 @@ class Cookie_Notice {
1454
 
1455
  if ( ! empty( $scripts ) )
1456
  echo $scripts;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1457
  }
 
 
1458
  }
1459
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1460
  /**
1461
  * Indicate if current page is the Cookie Policy page
1462
  *
2
  /*
3
  Plugin Name: Cookie Notice
4
  Description: Cookie Notice allows you to elegantly inform users that your site uses cookies and helps you comply with the EU GDPR cookie law and CCPA regulations.
5
+ Version: 1.3.0
6
  Author: dFactory
7
  Author URI: http://www.dfactory.eu/
8
  Plugin URI: http://www.dfactory.eu/plugins/cookie-notice/
29
  * Cookie Notice class.
30
  *
31
  * @class Cookie_Notice
32
+ * @version 1.3.0
33
  */
34
  class Cookie_Notice {
35
 
41
  'position' => 'bottom',
42
  'message_text' => '',
43
  'css_style' => 'bootstrap',
44
+ 'css_class' => '',
45
  'accept_text' => '',
46
  'refuse_text' => '',
47
+ 'refuse_opt' => false,
48
  'refuse_code' => '',
49
  'refuse_code_head' => '',
50
  'revoke_cookies' => false,
52
  'revoke_message_text' => '',
53
  'revoke_text' => '',
54
  'redirection' => false,
55
+ 'see_more' => false,
56
  'link_target' => '_blank',
57
  'link_position' => 'banner',
58
  'time' => 'month',
62
  'on_scroll_offset' => 100,
63
  'on_click' => false,
64
  'colors' => array(
65
+ 'text' => '#fff',
66
+ 'bar' => '#000',
67
+ 'bar_opacity' => 80
68
  ),
69
  'see_more_opt' => array(
70
  'text' => '',
73
  'link' => '',
74
  'sync' => false
75
  ),
76
+ 'script_placement' => 'header',
77
+ 'coronabar' => false, // disabled by default
78
+ 'coronabar_cases' => true,
79
+ 'coronabar_texts' => false,
80
+ 'coronabar_text_strings' => array(
81
+ 'headline' => 'Spread the message. Stop the virus.',
82
+ 'step_one_title' => 'Hands', // string
83
+ 'step_one_desc' => 'Wash often', // string
84
+ 'step_two_title' => 'Elbow', // string
85
+ 'step_two_desc' => 'Cough into', // string
86
+ 'step_three_title' => 'Face', // string
87
+ 'step_three_desc' => 'Don\'t touch', // string
88
+ 'step_four_title' => 'Space', // string
89
+ 'step_four_desc' => 'Avoid crowds', // string
90
+ 'step_five_title' => 'Home', // string
91
+ 'step_five_desc' => 'Stay inside', // string
92
+ 'confirmed' => 'Confirmed', // string
93
+ 'recovered' => 'Recovered', // string
94
+ ),
95
+ 'translate' => true,
96
+ 'deactivation_delete' => false,
97
+ 'update_version' => 2,
98
+ 'update_notice' => true,
99
+ 'update_delay_date' => 0
100
  ),
101
+ 'version' => '1.3.0'
102
  );
103
  private $positions = array();
104
  private $styles = array();
141
  public function __construct() {
142
  register_activation_hook( __FILE__, array( $this, 'activation' ) );
143
  register_deactivation_hook( __FILE__, array( $this, 'deactivation' ) );
144
+
145
+ // get options
146
+ $options = get_option( 'cookie_notice_options', $this->defaults['general'] );
147
 
148
+ // check legacy parameters
149
+ $options = $this->check_legacy_params( $options, array( 'refuse_opt', 'on_scroll', 'on_click', 'deactivation_delete', 'see_more' ) );
150
+
151
+ // merge old options with new ones
152
  $this->options = array(
153
+ 'general' => $this->multi_array_merge( $this->defaults['general'], $options )
154
  );
155
 
156
  if ( ! isset( $this->options['general']['see_more_opt']['sync'] ) )
166
  add_action( 'after_setup_theme', array( $this, 'load_defaults' ) );
167
  add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
168
  add_action( 'wp_enqueue_scripts', array( $this, 'wp_enqueue_scripts' ) );
169
+ add_action( 'wp_head', array( $this, 'wp_head_corona' ) );
170
  add_action( 'wp_head', array( $this, 'wp_print_header_scripts' ) );
171
  add_action( 'wp_print_footer_scripts', array( $this, 'wp_print_footer_scripts' ) );
172
  add_action( 'wp_footer', array( $this, 'add_cookie_notice' ), 1000 );
173
+ add_action( 'wp_ajax_cn_dismiss_notice', array( $this, 'ajax_dismiss_admin_notice' ) );
174
+ add_action( 'wp_ajax_cn_save_cases', array( $this, 'ajax_save_cases' ) );
175
+ add_action( 'wp_ajax_nopriv_cn_save_cases', array( $this, 'ajax_save_cases' ) );
176
 
177
  // filters
178
  add_filter( 'plugin_row_meta', array( $this, 'plugin_row_meta' ), 10, 2 );
261
  $this->defaults['general']['revoke_message_text'] = __( 'You can revoke your consent any time using the Revoke consent button.', 'cookie-notice' );
262
  $this->defaults['general']['revoke_text'] = __( 'Revoke consent', 'cookie-notice' );
263
  $this->defaults['general']['see_more_opt']['text'] = __( 'Privacy policy', 'cookie-notice' );
264
+
265
+ // set default coronabar text strings
266
+ $this->defaults['general']['coronabar_text_strings']['headline'] = __( 'Spread the message. Stop the virus.', 'cookie-notice' );
267
+ $this->defaults['general']['coronabar_text_strings']['step_one_title'] = __( 'Hands', 'cookie-notice' );
268
+ $this->defaults['general']['coronabar_text_strings']['step_one_desc'] = __( 'Wash often', 'cookie-notice' );
269
+ $this->defaults['general']['coronabar_text_strings']['step_two_title'] = __( 'Elbow', 'cookie-notice' );
270
+ $this->defaults['general']['coronabar_text_strings']['step_two_desc'] = __( 'Cough into', 'cookie-notice' );
271
+ $this->defaults['general']['coronabar_text_strings']['step_three_title'] = __( 'Face', 'cookie-notice' );
272
+ $this->defaults['general']['coronabar_text_strings']['step_three_desc'] = __( 'Don\'t touch', 'cookie-notice' );
273
+ $this->defaults['general']['coronabar_text_strings']['step_four_title'] = __( 'Space', 'cookie-notice' );
274
+ $this->defaults['general']['coronabar_text_strings']['step_four_desc'] = __( 'Avoid crowds', 'cookie-notice' );
275
+ $this->defaults['general']['coronabar_text_strings']['step_five_title'] = __( 'Home', 'cookie-notice' );
276
+ $this->defaults['general']['coronabar_text_strings']['step_five_desc'] = __( 'Stay inside', 'cookie-notice' );
277
+ $this->defaults['general']['coronabar_text_strings']['confirmed'] = __( 'Confirmed', 'cookie-notice' );
278
+ $this->defaults['general']['coronabar_text_strings']['recovered'] = __( 'Recovered', 'cookie-notice' );
279
+
280
+ // set translation strings on plugin activation
281
  if ( $this->options['general']['translate'] === true ) {
282
  $this->options['general']['translate'] = false;
283
 
288
  $this->options['general']['revoke_text'] = $this->defaults['general']['revoke_text'];
289
  $this->options['general']['see_more_opt']['text'] = $this->defaults['general']['see_more_opt']['text'];
290
 
291
+ // coronabar strings
292
+ foreach ( $this->defaults['general']['coronabar_text_strings'] as $key => $label ) {
293
+ $this->options['general']['coronabar_text_strings'][$key] = $this->defaults['general']['coronabar_text_strings'][$key];
294
+ }
295
+
296
  update_option( 'cookie_notice_options', $this->options['general'] );
297
  }
298
 
308
  icl_register_string( 'Cookie Notice', 'Revoke button text', $this->options['general']['revoke_text'] );
309
  icl_register_string( 'Cookie Notice', 'Privacy policy text', $this->options['general']['see_more_opt']['text'] );
310
  icl_register_string( 'Cookie Notice', 'Custom link', $this->options['general']['see_more_opt']['link'] );
311
+
312
+ // coronabar strings
313
+ foreach ( $this->defaults['general']['coronabar_text_strings'] as $key => $label ) {
314
+ icl_register_string( 'Cookie Notice', $key, $this->options['general']['coronabar_text_strings'][$key] );
315
+ }
316
  }
317
  }
318
 
343
  public function update_notice() {
344
  if ( ! current_user_can( 'install_plugins' ) )
345
  return;
346
+
347
+ // test only
348
+ // $this->options['general'] = wp_parse_args( array( 'update_version' => 2, 'update_notice' => true ), $this->options['general'] );
349
+ // update_option( 'cookie_notice_options', $this->options['general'] );
350
+
351
+ $current_update = 3;
352
+
353
  if ( $this->options['general']['update_version'] < $current_update ) {
354
  // check version, if update version is lower than plugin version, set update notice to true
355
+ $this->options['general'] = wp_parse_args( array( 'update_version' => $current_update, 'update_notice' => true ), $this->options['general'] );
356
 
357
  update_option( 'cookie_notice_options', $this->options['general'] );
 
 
 
 
 
 
358
  }
359
+
360
  // display current version notice
361
  if ( $this->options['general']['update_notice'] === true ) {
362
+ // include notice js and css, only if needed
363
+ wp_enqueue_script(
364
+ 'cookie-notice-admin-notice', plugins_url( 'js/admin-notice' . ( ! ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '.min' : '' ) . '.js', __FILE__ ), array( 'jquery' ), $this->defaults['version']
365
+ );
366
+ wp_localize_script(
367
+ 'cookie-notice-admin-notice', 'cnArgsNotice', array(
368
+ 'ajaxUrl' => admin_url( 'admin-ajax.php' ),
369
+ 'nonce' => wp_create_nonce( 'cn_dismiss_notice' )
370
+ )
371
+ );
372
+ wp_enqueue_style( 'cookie-notice-admin-notice', plugins_url( 'css/admin-notice' . ( ! ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '.min' : '' ) . '.css', __FILE__ ) );
373
+
374
+ $notice_html =
375
+ '<div class="cn-notice-icon"><span></span></div>' .
376
+ '<div class="cn-notice-steps">' .
377
+ '<div class="cn-notice-step step-choice">' .
378
+ '<div class="cn-notice-actions">' .
379
+ '<a href="javascript:void(0);" class="cn-notice-dismiss cn-approve button button-primary" rel="noopener">' . __( 'Yes, I want to help', 'cookie-notice' ) . '</a><br /><a href="javascript:void(0);" class="cn-notice-dismiss button button-secondary" rel="noopener">' . __( 'No, thanks', 'cookie-notice' ) . '</a>' .
380
+ '</div>' .
381
+ '<div class="cn-notice-text">' .
382
+ '<h3>' . __( 'Help to slow the spread of the Coronavirus.', 'cookie-notice' ) . '</h3>' .
383
+ '<p>' . __( 'Join 1+ million WordPress admins who are adding the Corona Banner to their websites using the Cookie Notice plugin.', 'cookie-notice' ) . ' ' . __( 'The Corona Banner displays data about Coronavirus pandemia and <strong>five steps recommended by the WHO (World Health Organization)</strong> to help flatten the Coronavirus curve.', 'cookie-notice' ) . '</p>' .
384
+ '<p>' . __( 'Thank you and <em>#stayhome</em>', 'cookie-notice' ) . '</p>' .
385
+ '</div>' .
386
+ '</div>' .
387
+ /*
388
+ '<div class="cn-notice-step step-yes">' .
389
+ '<div class="cn-notice-actions">' .
390
+ '<a href="javascript:void(0);" class="cn-notice-dismiss button button-secondary" rel="noopener">' . __( 'Close', 'cookie-notice' ) . '</a>' .
391
+ '</div>' .
392
+ '<div class="cn-notice-text">' .
393
+ '<h3>' . __( 'Step Yes', 'cookie-notice' ) . '</h3>' .
394
+ '<p>' . __( 'Join 1+ million WordPress admins who are adding the Corona Banner to their websites using the Cookie Notice plugin.', 'cookie-notice' ) . '</p>' .
395
+ '</div>' .
396
+ '</div>' .
397
+ '<div class="cn-notice-step step-no">' .
398
+ '<div class="cn-notice-actions">' .
399
+ '<a href="javascript:void(0);" class="cn-notice-dismiss button button-secondary" rel="noopener">' . __( 'Close', 'cookie-notice' ) . '</a>' .
400
+ '</div>' .
401
+ '<div class="cn-notice-text">' .
402
+ '<h3>' . __( 'Step No', 'cookie-notice' ) . '</h3>' .
403
+ '<p>' . __( 'Join 1+ million WordPress admins who are adding the Corona Banner to their websites using the Cookie Notice plugin.', 'cookie-notice' ) . '</p>' .
404
+ '</div>' .
405
+ '</div>' .
406
+ */
407
+ '</div>';
408
+
409
+ $this->add_notice( $notice_html, 'notice is-dismissible coronabar-notice', 'div' );
410
  }
411
  }
412
 
417
  * @param string $status
418
  * @param bool $paragraph
419
  */
420
+ private function add_notice( $html = '', $status = 'error', $container = '' ) {
421
  $this->notices[] = array(
422
  'html' => $html,
423
  'status' => $status,
424
+ 'container' => ( ! empty( $container ) && in_array( $container, array( 'p', 'div' ) ) ? $container : '' )
425
  );
426
 
427
+ add_action( 'admin_notices', array( $this, 'display_notice'), 0 );
428
  }
429
 
430
  /**
435
  public function display_notice() {
436
  foreach( $this->notices as $notice ) {
437
  echo '
438
+ <div class="cn-notice ' . $notice['status'] . '">
439
+ ' . ( ! empty( $notice['container'] ) ? '<' . $notice['container'] . ' class="cn-notice-container">' : '' ) . '
440
  ' . $notice['html'] . '
441
+ ' . ( ! empty( $notice['container'] ) ? '</' . $notice['container'] . ' class="cn-notice-container">' : '' ) . '
442
  </div>';
443
  }
444
  }
445
 
446
  /**
447
+ * Dismiss admin notice.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
448
  */
449
+ public function ajax_dismiss_admin_notice() {
450
  if ( ! current_user_can( 'install_plugins' ) )
451
  return;
452
 
453
  if ( wp_verify_nonce( esc_attr( $_REQUEST['nonce'] ), 'cn_dismiss_notice' ) ) {
454
+ $notice_action = empty( $_REQUEST['notice_action'] ) || $_REQUEST['notice_action'] === 'dismiss' ? 'dismiss' : esc_attr( $_REQUEST['notice_action'] );
455
 
456
  switch ( $notice_action ) {
457
  // delay notice
458
  case 'delay':
459
  // set delay period to 1 week from now
460
+ $this->options['general'] = wp_parse_args( array( 'update_delay_date' => time() + 1209600 ), $this->options['general'] );
461
+ update_option( 'cookie_notice_options', $this->options['general'] );
462
+ break;
463
+
464
+ // delay notice
465
+ case 'approve':
466
+ // enable coronabar
467
+ $this->options['general'] = wp_parse_args( array( 'coronabar' => true), $this->options['general'] );
468
+ // hide notice
469
+ $this->options['general'] = wp_parse_args( array( 'update_notice' => false ), $this->options['general'] );
470
+ $this->options['general'] = wp_parse_args( array( 'update_delay_date' => 0 ), $this->options['general'] );
471
+ // update options
472
  update_option( 'cookie_notice_options', $this->options['general'] );
473
  break;
474
 
475
  // hide notice
476
  default:
477
+ $this->options['general'] = wp_parse_args( array( 'update_notice' => false ), $this->options['general'] );
478
+ $this->options['general'] = wp_parse_args( array( 'update_delay_date' => 0 ), $this->options['general'] );
479
 
480
  update_option( 'cookie_notice_options', $this->options['general'] );
481
  }
483
 
484
  exit;
485
  }
486
+
487
+ /**
488
+ * Save corona cases locally for caching.
489
+ */
490
+ public function ajax_save_cases() {
491
+ // check if the bar is enabled
492
+ if ( ! $this->options['general']['coronabar'] )
493
+ return;
494
+
495
+ if ( ! wp_verify_nonce( esc_attr( $_REQUEST['nonce'] ), 'cn_save_cases' ) )
496
+ return;
497
+
498
+ $json_data = ! empty( $_REQUEST['data'] ) ? esc_attr( $_REQUEST['data'] ) : false;
499
+ $cases_data = array();
500
+
501
+ if ( ! empty( $json_data ) )
502
+ $cases_data = json_decode( stripslashes( html_entity_decode( $json_data ) ), true );
503
+
504
+ // save data
505
+ if ( $cases_data && is_array( $cases_data ) )
506
+ update_option( 'cookie_notice_coronadata', $cases_data, true );
507
+ }
508
 
509
  /**
510
  * Add new body classes.
634
  'Privacy policy text' => $this->options['general']['see_more_opt']['text'],
635
  'Custom link' => $this->options['general']['see_more_opt']['link']
636
  );
637
+
638
+ // coronabar strings
639
+ foreach ( $this->defaults['general']['coronabar_text_strings'] as $key => $label ) {
640
+ $strings[$key] = $this->options['general']['coronabar_text_strings'];
641
+ }
642
 
643
  // get query results
644
  $results = $wpdb->get_col( $wpdb->prepare( "SELECT name FROM " . $wpdb->prefix . "icl_strings WHERE context = %s", 'Cookie Notice' ) );
677
  <div class="wrap">
678
  <h2>' . __( 'Cookie Notice', 'cookie-notice' ) . '</h2>
679
  <div class="cookie-notice-settings">
680
+ <div class="cookie-notice-credits">
681
  <h3 class="hndle">' . __( 'Cookie Notice', 'cookie-notice' ) . ' ' . $this->defaults['version'] . '</h3>
682
  <div class="inside">
683
  <h4 class="inner">' . __( 'Need support?', 'cookie-notice' ) . '</h4>
687
  <p class="inner">' . sprintf( __( '<a href="%s" target="_blank">Rate it 5</a> on WordPress.org', 'cookie-notice' ), 'https://wordpress.org/support/plugin/cookie-notice/reviews/?filter=5' ) . '<br />' .
688
  sprintf( __( 'Blog about it & link to the <a href="%s" target="_blank">plugin page</a>.', 'cookie-notice' ), 'https://dfactory.eu/plugins/cookie-notice?utm_source=cookie-notice-settings&utm_medium=link&utm_campaign=blog-about' ) . '<br />' .
689
  sprintf( __( 'Check out our other <a href="%s" target="_blank">WordPress plugins</a>.', 'cookie-notice' ), 'https://dfactory.eu/plugins/?utm_source=cookie-notice-settings&utm_medium=link&utm_campaign=other-plugins' ) . '
690
+ </p>
 
 
691
  </div>
692
  </div>
693
  <form action="options.php" method="post">';
730
  add_settings_field( 'cn_script_placement', __( 'Script placement', 'cookie-notice' ), array( $this, 'cn_script_placement' ), 'cookie_notice_options', 'cookie_notice_configuration' );
731
  add_settings_field( 'cn_deactivation_delete', __( 'Deactivation', 'cookie-notice' ), array( $this, 'cn_deactivation_delete' ), 'cookie_notice_options', 'cookie_notice_configuration' );
732
 
733
+ // coronabar
734
+ add_settings_section( 'cookie_notice_coronabar', __( 'Corona Banner', 'cookie-notice' ), array( $this, 'cn_section_coronabar' ), 'cookie_notice_options' );
735
+ add_settings_field( 'cn_coronabar', __( 'Display', 'cookie-notice' ), array( $this, 'cn_coronabar' ), 'cookie_notice_options', 'cookie_notice_coronabar' );
736
+ add_settings_field( 'cn_coronabar_cases', __( 'Current cases', 'cookie-notice' ), array( $this, 'cn_coronabar_cases' ), 'cookie_notice_options', 'cookie_notice_coronabar' );
737
+ add_settings_field( 'cn_coronabar_texts', __( 'Text strings', 'cookie-notice' ), array( $this, 'cn_coronabar_texts' ), 'cookie_notice_options', 'cookie_notice_coronabar' );
738
+
739
  // design
740
  add_settings_section( 'cookie_notice_design', __( 'Design', 'cookie-notice' ), array( $this, 'cn_section_design' ), 'cookie_notice_options' );
741
  add_settings_field( 'cn_position', __( 'Position', 'cookie-notice' ), array( $this, 'cn_position' ), 'cookie_notice_options', 'cookie_notice_design' );
750
  */
751
  public function cn_section_configuration() {}
752
  public function cn_section_design() {}
753
+ public function cn_section_coronabar() {}
754
+
755
  /**
756
+ * Display Corona Banner option.
757
  */
758
+ public function cn_coronabar() {
759
  echo '
760
  <fieldset>
761
+ <label><input id="cn_coronabar" type="checkbox" name="cookie_notice_options[coronabar]" value="1" ' . checked( true, $this->options['general']['coronabar'], false ) . '/>' . __( 'Enable to display the Corona Banner.', 'cookie-notice' ) . '</label>
762
+ <p class="description">' . __( 'The Corona Banner displays data about Coronavirus pandemia and <strong>five steps recommended by the WHO (World Health Organization)</strong> to help flatten the Coronavirus curve.', 'cookie-notice' ) . '</p>
763
+ </fieldset>';
764
+ }
765
+
766
+ /**
767
+ * Display current cases option.
768
+ */
769
+ public function cn_coronabar_cases() {
770
+ echo '
771
+ <fieldset>
772
+ <label><input id="cn_coronabar_cases" type="checkbox" name="cookie_notice_options[coronabar_cases]" value="1" ' . checked( true, $this->options['general']['coronabar_cases'], false ) . '/>' . __( 'Display information about current cases.', 'cookie-notice' ) . '</label>
773
+ <p class="description">' . __( 'Provides up-to-date data about Coronavirus confirmed and recovered cases.', 'cookie-notice' ) . '</p>
774
+ </fieldset>';
775
+ }
776
+
777
+ /**
778
+ * Coronabar text strings.
779
+ */
780
+ public function cn_coronabar_texts() {
781
+ $descriptions = array(
782
+ 'headline' => __( 'Headline message', 'cookie-notice' ),
783
+ 'recovered' => __( 'Current cases text strings', 'cookie-notice' ),
784
+ 'step_one_desc' => __( 'Recommendation One', 'cookie-notice' ),
785
+ 'step_two_desc' => __( 'Recommendation Two', 'cookie-notice' ),
786
+ 'step_three_desc' => __( 'Recommendation Three', 'cookie-notice' ),
787
+ 'step_four_desc' => __( 'Recommendation Four', 'cookie-notice' ),
788
+ 'step_five_desc' => __( 'Recommendation Five', 'cookie-notice' )
789
+ );
790
+
791
+ echo '
792
+ <fieldset>
793
+ <label><input id="cn_coronabar_texts" type="checkbox" name="cookie_notice_options[coronabar_texts]" value="1" ' . checked( true, $this->options['general']['coronabar_texts'], false ) . ' />' . __( 'Enable if you\'d like to adjust the Corona Banner text strings.', 'cookie-notice' ) . '</label>
794
+ <div id="cn_coronabar_text_strings"' . ( $this->options['general']['coronabar_texts'] === false ? ' style="display: none;"' : '' ) . '>';
795
+ foreach ( $this->defaults['general']['coronabar_text_strings'] as $key => $label ) {
796
+ echo '
797
+ <span class="cn_coronabar_text_string">
798
+ <input type="text" class="regular-text" name="cookie_notice_options[coronabar_text_strings][' . $key .']" value="' . esc_html( $this->options['general']['coronabar_text_strings'][$key] ) . '" />
799
+ </span>';
800
+
801
+ // display description
802
+ if ( array_key_exists( $key, $descriptions ) ) {
803
+ echo '
804
+ <p class="description">' . $descriptions[$key] . '</p>';
805
+ }
806
+ }
807
+ echo '
808
+ </div>
809
  </fieldset>';
810
  }
811
 
841
  public function cn_refuse_opt() {
842
  echo '
843
  <fieldset>
844
+ <label><input id="cn_refuse_opt" type="checkbox" name="cookie_notice_options[refuse_opt]" value="1" ' . checked( true, $this->options['general']['refuse_opt'], false ) . ' />' . __( 'Enable to give to the user the possibility to refuse third party non functional cookies.', 'cookie-notice' ) . '</label>
845
+ <div id="cn_refuse_opt_container"' . ( $this->options['general']['refuse_opt'] === false ? ' style="display: none;"' : '' ) . '>
846
  <div id="cn_refuse_text">
847
  <input type="text" class="regular-text" name="cookie_notice_options[refuse_text]" value="' . esc_attr( $this->options['general']['refuse_text'] ) . '" />
848
  <p class="description">' . __( 'The text of the button to refuse the consent.', 'cookie-notice' ) . '</p>
933
 
934
  echo '
935
  <fieldset>
936
+ <label><input id="cn_see_more" type="checkbox" name="cookie_notice_options[see_more]" value="1" ' . checked( true, $this->options['general']['see_more'], false ) . ' />' . __( 'Enable privacy policy link.', 'cookie-notice' ) . '</label>
937
+ <div id="cn_see_more_opt"' . ($this->options['general']['see_more'] === false ? ' style="display: none;"' : '') . '>
938
  <input type="text" class="regular-text" name="cookie_notice_options[see_more_opt][text]" value="' . esc_attr( $this->options['general']['see_more_opt']['text'] ) . '" />
939
  <p class="description">' . __( 'The text of the privacy policy button.', 'cookie-notice' ) . '</p>
940
  <div id="cn_see_more_opt_custom_link">';
1111
  public function cn_on_scroll() {
1112
  echo '
1113
  <fieldset>
1114
+ <label><input id="cn_on_scroll" type="checkbox" name="cookie_notice_options[on_scroll]" value="1" ' . checked( true, $this->options['general']['on_scroll'], false ) . ' />' . __( 'Enable to accept the notice when user scrolls.', 'cookie-notice' ) . '</label>
1115
+ <div id="cn_on_scroll_offset"' . ( $this->options['general']['on_scroll'] === false || $this->options['general']['on_scroll'] == false ? ' style="display: none;"' : '' ) . '>
1116
  <input type="text" class="text" name="cookie_notice_options[on_scroll_offset]" value="' . esc_attr( $this->options['general']['on_scroll_offset'] ) . '" /> <span>px</span>
1117
  <p class="description">' . __( 'Number of pixels user has to scroll to accept the notice and make it disappear.', 'cookie-notice' ) . '</p>
1118
  </div>
1125
  public function cn_on_click() {
1126
  echo '
1127
  <fieldset>
1128
+ <label><input id="cn_on_click" type="checkbox" name="cookie_notice_options[on_click]" value="1" ' . checked( true, $this->options['general']['on_click'], false ) . ' />' . __( 'Enable to accept the notice on any click on the page.', 'cookie-notice' ) . '</label>
1129
+ </fieldset>';
1130
+ }
1131
+
1132
+ /**
1133
+ * Delete plugin data on deactivation.
1134
+ */
1135
+ public function cn_deactivation_delete() {
1136
+ echo '
1137
+ <fieldset>
1138
+ <label><input id="cn_deactivation_delete" type="checkbox" name="cookie_notice_options[deactivation_delete]" value="1" ' . checked( true, $this->options['general']['deactivation_delete'], false ) . '/>' . __( 'Enable if you want all plugin data to be deleted on deactivation.', 'cookie-notice' ) . '</label>
1139
  </fieldset>';
1140
  }
1141
 
1189
  '</div>';
1190
  }
1191
 
1192
+ // print_r( $this->options['general']['colors'] );
1193
+
1194
+ echo '
1195
+ <div id="cn_colors-bar_opacity"><label>' . __( 'Bar opacity', 'cookie-notice' ) . '</label><br />
1196
+ <div><input id="cn_colors_bar_opacity_range" class="cn_range" type="range" min="50" max="100" step="1" name="cookie_notice_options[colors][bar_opacity]" value="' . absint( $this->options['general']['colors']['bar_opacity'] ) . '" onchange="cn_colors_bar_opacity_text.value = cn_colors_bar_opacity_range.value" /><input id="cn_colors_bar_opacity_text" class="small-text" type="text" value="' . absint( $this->options['general']['colors']['bar_opacity'] ) . '" /></div>' .
1197
+ '</div>';
1198
+
1199
  echo '
1200
  </fieldset>';
1201
  }
1217
  // colors
1218
  $input['colors']['text'] = sanitize_text_field( isset( $input['colors']['text'] ) && $input['colors']['text'] !== '' && preg_match( '/^#[a-f0-9]{6}$/', $input['colors']['text'] ) === 1 ? $input['colors']['text'] : $this->defaults['general']['colors']['text'] );
1219
  $input['colors']['bar'] = sanitize_text_field( isset( $input['colors']['bar'] ) && $input['colors']['bar'] !== '' && preg_match( '/^#[a-f0-9]{6}$/', $input['colors']['bar'] ) === 1 ? $input['colors']['bar'] : $this->defaults['general']['colors']['bar'] );
1220
+ $input['colors']['bar_opacity'] = absint( isset( $input['colors']['bar_opacity'] ) && $input['colors']['bar_opacity'] >= 50 ? $input['colors']['bar_opacity'] : $this->defaults['general']['colors']['bar_opacity'] );
1221
 
1222
  // texts
1223
  $input['message_text'] = wp_kses_post( isset( $input['message_text'] ) && $input['message_text'] !== '' ? $input['message_text'] : $this->defaults['general']['message_text'] );
1225
  $input['refuse_text'] = sanitize_text_field( isset( $input['refuse_text'] ) && $input['refuse_text'] !== '' ? $input['refuse_text'] : $this->defaults['general']['refuse_text'] );
1226
  $input['revoke_message_text'] = wp_kses_post( isset( $input['revoke_message_text'] ) && $input['revoke_message_text'] !== '' ? $input['revoke_message_text'] : $this->defaults['general']['revoke_message_text'] );
1227
  $input['revoke_text'] = sanitize_text_field( isset( $input['revoke_text'] ) && $input['revoke_text'] !== '' ? $input['revoke_text'] : $this->defaults['general']['revoke_text'] );
1228
+ $input['refuse_opt'] = (bool) isset( $input['refuse_opt'] );
1229
  $input['revoke_cookies'] = isset( $input['revoke_cookies'] );
1230
  $input['revoke_cookies_opt'] = isset( $input['revoke_cookies_opt'] ) && array_key_exists( $input['revoke_cookies_opt'], $this->revoke_opts ) ? $input['revoke_cookies_opt'] : $this->defaults['general']['revoke_cookies_opt'];
1231
 
1247
  // link target
1248
  $input['link_target'] = sanitize_text_field( isset( $input['link_target'] ) && in_array( $input['link_target'], array_keys( $this->link_targets ) ) ? $input['link_target'] : $this->defaults['general']['link_target'] );
1249
 
 
 
 
 
 
 
 
1250
  // time
1251
  $input['time'] = sanitize_text_field( isset( $input['time'] ) && in_array( $input['time'], array_keys( $this->times ) ) ? $input['time'] : $this->defaults['general']['time'] );
1252
  $input['time_rejected'] = sanitize_text_field( isset( $input['time_rejected'] ) && in_array( $input['time_rejected'], array_keys( $this->times ) ) ? $input['time_rejected'] : $this->defaults['general']['time_rejected'] );
1261
  $input['redirection'] = isset( $input['redirection'] );
1262
 
1263
  // on scroll
1264
+ $input['on_scroll'] = isset( $input['on_scroll'] );
1265
 
1266
  // on scroll offset
1267
  $input['on_scroll_offset'] = absint( isset( $input['on_scroll_offset'] ) && $input['on_scroll_offset'] !== '' ? $input['on_scroll_offset'] : $this->defaults['general']['on_scroll_offset'] );
1268
 
1269
  // on click
1270
+ $input['on_click'] = isset( $input['on_click'] );
1271
 
1272
  // deactivation
1273
+ $input['deactivation_delete'] = isset( $input['deactivation_delete'] );
1274
 
1275
  // privacy policy
1276
+ $input['see_more'] = isset( $input['see_more'] );
1277
  $input['see_more_opt']['text'] = sanitize_text_field( isset( $input['see_more_opt']['text'] ) && $input['see_more_opt']['text'] !== '' ? $input['see_more_opt']['text'] : $this->defaults['general']['see_more_opt']['text'] );
1278
  $input['see_more_opt']['link_type'] = sanitize_text_field( isset( $input['see_more_opt']['link_type'] ) && in_array( $input['see_more_opt']['link_type'], array_keys( $this->links ) ) ? $input['see_more_opt']['link_type'] : $this->defaults['general']['see_more_opt']['link_type'] );
1279
 
1280
  if ( $input['see_more_opt']['link_type'] === 'custom' )
1281
+ $input['see_more_opt']['link'] = esc_url( $input['see_more'] === true ? $input['see_more_opt']['link'] : 'empty' );
1282
  elseif ( $input['see_more_opt']['link_type'] === 'page' ) {
1283
+ $input['see_more_opt']['id'] = ( $input['see_more'] === true ? (int) $input['see_more_opt']['id'] : 'empty' );
1284
  $input['see_more_opt']['sync'] = isset( $input['see_more_opt']['sync'] );
1285
 
1286
  if ( $input['see_more_opt']['sync'] )
1287
  update_option( 'wp_page_for_privacy_policy', $input['see_more_opt']['id'] );
1288
  }
1289
+
1290
+ // policy link position
1291
+ $input['link_position'] = sanitize_text_field( isset( $input['link_position'] ) && in_array( $input['link_position'], array_keys( $this->link_positions ) ) ? $input['link_position'] : $this->defaults['general']['link_position'] );
1292
 
1293
+ // message link position?
1294
+ if ( $input['see_more'] === true && $input['link_position'] === 'message' && strpos( $input['message_text'], '[cookies_policy_link' ) === false )
1295
+ $input['message_text'] .= ' [cookies_policy_link]';
1296
+
1297
+ // coronabar
1298
+ $input['coronabar'] = isset( $input['coronabar'] );
1299
+
1300
+ // delete stored data
1301
+ if ( $input['coronabar'] )
1302
+ delete_option( 'cookie_notice_coronadata' );
1303
+
1304
+ // cases
1305
+ $input['coronabar_cases'] = isset( $input['coronabar_cases'] );
1306
+ // text adjustments
1307
+ $input['coronabar_texts'] = isset( $input['coronabar_texts'] );
1308
+ // text strings
1309
+ foreach ( $this->defaults['general']['coronabar_text_strings'] as $key => $label ) {
1310
+ $input['coronabar_text_strings'][$key] = sanitize_text_field( isset( $input['coronabar_text_strings'][$key] ) && $input['coronabar_text_strings'][$key] !== '' ? $input['coronabar_text_strings'][$key] : $this->defaults['general']['coronabar_text_strings'][$key] );
1311
+ }
1312
+
1313
  $input['update_version'] = $this->options['general']['update_version'];
1314
  $input['update_notice'] = $this->options['general']['update_notice'];
1315
 
1388
  'aria_label' => __( 'Cookie Notice', 'cookie-notice' )
1389
  ) );
1390
 
1391
+ // check legacy parameters
1392
+ $options = $this->check_legacy_params( $options, array( 'refuse_opt', 'see_more' ) );
1393
+
1394
+ if ( $options['see_more'] === true && $options['link_position'] === 'message' )
1395
  $options['message_text'] = do_shortcode( wp_kses_post( $options['message_text'] ) );
1396
  else
1397
  $options['message_text'] = wp_kses_post( $options['message_text'] );
1401
  // message output
1402
  $output = '
1403
  <!-- Cookie Notice plugin v' . $this->defaults['version'] . ' by Digital Factory https://dfactory.eu/ -->
1404
+ <div id="cookie-notice" role="banner" class="cookie-notice-hidden cookie-revoke-hidden cn-position-' . $options['position'] . '" aria-label="' . $options['aria_label'] . '" style="background-color: rgba(' . implode( ',', $this->hex2rgb( $options['colors']['bar'] ) ) . ',' . $options['colors']['bar_opacity'] * 0.01 . ');">'
1405
  . '<div class="cookie-notice-container" style="color: ' . $options['colors']['text'] . ';">'
1406
  . '<span id="cn-notice-text" class="cn-text-container">'. $options['message_text'] . '</span>'
1407
  . '<span id="cn-notice-buttons" class="cn-buttons-container"><a href="#" id="cn-accept-cookie" data-cookie-set="accept" class="cn-set-cookie ' . $options['button_class'] . ( $options['css_style'] !== 'none' ? ' ' . $options['css_style'] : '' ) . ( $options['css_class'] !== '' ? ' ' . $options['css_class'] : '' ) . '">' . $options['accept_text'] . '</a>'
1408
+ . ( $options['refuse_opt'] === true ? '<a href="#" id="cn-refuse-cookie" data-cookie-set="refuse" class="cn-set-cookie ' . $options['button_class'] . ( $options['css_style'] !== 'none' ? ' ' . $options['css_style'] : '' ) . ( $options['css_class'] !== '' ? ' ' . $options['css_class'] : '' ) . '">' . $options['refuse_text'] . '</a>' : '' )
1409
+ . ( $options['see_more'] === true && $options['link_position'] === 'banner' ? '<a href="' . ( $options['see_more_opt']['link_type'] === 'custom' ? $options['see_more_opt']['link'] : get_permalink( $options['see_more_opt']['id'] ) ) . '" target="' . $options['link_target'] . '" id="cn-more-info" class="cn-more-info ' . $options['button_class'] . ( $options['css_style'] !== 'none' ? ' ' . $options['css_style'] : '' ) . ( $options['css_class'] !== '' ? ' ' . $options['css_class'] : '' ) . '">' . $options['see_more_opt']['text'] . '</a>' : '' )
1410
+ . '</span><a href="javascript:void(0);" id="cn-close-notice" data-cookie-set="accept" class="cn-close-icon"></a>'
1411
  . '</div>
1412
+ ' . ( $options['refuse_opt'] === true && $options['revoke_cookies'] == true ?
1413
  '<div class="cookie-revoke-container" style="color: ' . $options['colors']['text'] . ';">'
1414
  . ( ! empty( $options['revoke_message_text'] ) ? '<span id="cn-revoke-text" class="cn-text-container">'. $options['revoke_message_text'] . '</span>' : '' )
1415
  . '<span id="cn-revoke-buttons" class="cn-buttons-container"><a href="#" class="cn-revoke-cookie ' . $options['button_class'] . ( $options['css_style'] !== 'none' ? ' ' . $options['css_style'] : '' ) . ( $options['css_class'] !== '' ? ' ' . $options['css_class'] : '' ) . '">' . esc_html( $options['revoke_text'] ) . '</a></span>
1505
  * Deactivate the plugin.
1506
  */
1507
  public function deactivation() {
1508
+ if ( $this->options['general']['deactivation_delete'] === true ) {
1509
  delete_option( 'cookie_notice_options' );
1510
  delete_option( 'cookie_notice_version' );
1511
+ delete_option( 'cookie_notice_coronadata' );
1512
  }
1513
 
1514
  // remove WP Super Cache cookie
1579
  'cookie-notice-front',
1580
  'cnArgs',
1581
  array(
1582
+ 'ajaxUrl' => admin_url( 'admin-ajax.php' ),
1583
+ 'nonce' => wp_create_nonce( 'cn_save_cases' ),
1584
  'hideEffect' => $this->options['general']['hide_effect'],
1585
+ 'position' => $this->options['general']['position'],
1586
+ 'onScroll' => (int) $this->options['general']['on_scroll'],
1587
+ 'onScrollOffset' => (int) $this->options['general']['on_scroll_offset'],
1588
+ 'onClick' => (int) $this->options['general']['on_click'],
1589
  'cookieName' => 'cookie_notice_accepted',
1590
  'cookieTime' => $this->times[$this->options['general']['time']][1],
1591
+ 'cookieTimeRejected' => $this->times[$this->options['general']['time_rejected']][1],
1592
  'cookiePath' => ( defined( 'COOKIEPATH' ) ? (string) COOKIEPATH : '' ),
1593
  'cookieDomain' => ( defined( 'COOKIE_DOMAIN' ) ? (string) COOKIE_DOMAIN : '' ),
1594
+ 'redirection' => (int) $this->options['general']['redirection'],
1595
+ 'cache' => (int) ( defined( 'WP_CACHE' ) && WP_CACHE ),
1596
+ 'refuse' => (int) $this->options['general']['refuse_opt'],
1597
+ 'revokeCookies' => (int) $this->options['general']['revoke_cookies'],
1598
+ 'revokeCookiesOpt' => $this->options['general']['revoke_cookies_opt'],
1599
+ 'secure' => (int) is_ssl(),
1600
+ 'coronabarActive' => (int) $this->options['general']['coronabar'],
1601
  )
1602
  );
1603
 
1604
  wp_enqueue_style( 'cookie-notice-front', plugins_url( 'css/front' . ( ! ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '.min' : '' ) . '.css', __FILE__ ) );
1605
  }
1606
+
1607
+ /**
1608
+ * Print Coronabar scripts.
1609
+ *
1610
+ * @return mixed
1611
+ */
1612
+ public function wp_head_corona() {
1613
+ // coronabar
1614
+ if ( $this->options['general']['coronabar'] ) {
1615
+
1616
+ $options = array(
1617
+ 'position' => $this->options['general']['position'],
1618
+ 'displayCases' => $this->options['general']['coronabar_cases'],
1619
+ );
1620
+
1621
+ // text strings
1622
+ foreach ( $this->defaults['general']['coronabar_text_strings'] as $key => $label ) {
1623
+ $key_updated = $this->underscores_to_camelcase( 'text_' . $key );
1624
+
1625
+ $options[$key_updated] = $this->options['general']['coronabar_text_strings'][$key];
1626
+ }
1627
+
1628
+ // get cached data
1629
+ $cached_data = get_option( 'cookie_notice_coronadata', array() );
1630
+
1631
+ // if exists, send to js
1632
+ if ( ! empty( $cached_data ) ) {
1633
+ $options['cachedData'] = $cached_data;
1634
+ }
1635
+
1636
+ echo '
1637
+ <!-- Corona Banner -->
1638
+ <script type="text/javascript">
1639
+ var CoronaBarOptions = ' . json_encode( $options ) . ';
1640
+ </script>
1641
+ <script type="text/javascript" src="//coronabar-53eb.kxcdn.com/coronabar.min.js"></script>';
1642
+ }
1643
+ }
1644
 
1645
  /**
1646
  * Print non functional JavaScript in body.
1667
 
1668
  if ( ! empty( $scripts ) )
1669
  echo $scripts;
1670
+ }
1671
+ }
1672
+
1673
+ /**
1674
+ * Helper: convert hex color to rgb color.
1675
+ *
1676
+ * @param type $color
1677
+ * @return array
1678
+ */
1679
+ public function hex2rgb( $color ) {
1680
+ if ( $color[0] == '#' )
1681
+ $color = substr( $color, 1 );
1682
+
1683
+ if ( strlen( $color ) == 6 )
1684
+ list( $r, $g, $b ) = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] );
1685
+ elseif ( strlen( $color ) == 3 )
1686
+ list( $r, $g, $b ) = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] );
1687
+ else
1688
+ return false;
1689
+
1690
+ $r = hexdec( $r );
1691
+ $g = hexdec( $g );
1692
+ $b = hexdec( $b );
1693
+
1694
+ return array( $r, $g, $b );
1695
+ }
1696
+
1697
+ /**
1698
+ * Helper: Convert undersocores to CamelCase/
1699
+ *
1700
+ * @param type $string
1701
+ * @param bool $capitalize_first_char
1702
+ * @return string
1703
+ */
1704
+ public function underscores_to_camelcase( $string, $capitalize_first_char = false ) {
1705
+ $str = str_replace( ' ', '', ucwords( str_replace( '_', ' ', $string ) ) );
1706
+
1707
+ if ( ! $capitalize_first_char ) {
1708
+ $str[0] = strtolower( $str[0] );
1709
  }
1710
+
1711
+ return $str;
1712
  }
1713
 
1714
+ /**
1715
+ * Check legacy parameters that were yes/no strings.
1716
+ *
1717
+ * @param array $options
1718
+ * @param array $params
1719
+ * @return array
1720
+ */
1721
+ public function check_legacy_params( $options, $params ) {
1722
+ foreach ( $params as $param ) {
1723
+ if ( ! is_bool( $options[$param] ) )
1724
+ $options[$param] = $options[$param] === 'yes';
1725
+ }
1726
+
1727
+ return $options;
1728
+ }
1729
+
1730
+ /**
1731
+ * Merge multidimensional associative arrays.
1732
+ * Works only with strings, integers and arrays as keys. Values can be any type but they have to have same type to be kept in the final array.
1733
+ * Every array should have the same type of elements. Only keys from $defaults array will be kept in the final array unless $siblings are not empty.
1734
+ * $siblings examples: array( '=>', 'only_first_level', 'first_level=>second_level', 'first_key=>next_key=>sibling' ) and so on.
1735
+ * Single '=>' means that all siblings of the highest level will be kept in the final array.
1736
+ *
1737
+ * @param array $default Array with defaults values
1738
+ * @param array $array Array to merge
1739
+ * @param boolean|array $siblings Whether to allow "string" siblings to copy from $array if they do not exist in $defaults, false otherwise
1740
+ * @return array Merged arrays
1741
+ */
1742
+ public function multi_array_merge( $defaults, $array, $siblings = false ) {
1743
+ // make a copy for better performance and to prevent $default override in foreach
1744
+ $copy = $defaults;
1745
+
1746
+ // prepare siblings for recursive deeper level
1747
+ $new_siblings = array();
1748
+
1749
+ // allow siblings?
1750
+ if ( ! empty( $siblings ) && is_array( $siblings ) ) {
1751
+ foreach ( $siblings as $sibling ) {
1752
+ // highest level siblings
1753
+ if ( $sibling === '=>' ) {
1754
+ // copy all non-existent string siblings
1755
+ foreach( $array as $key => $value ) {
1756
+ if ( is_string( $key ) && ! array_key_exists( $key, $defaults ) ) {
1757
+ $defaults[$key] = null;
1758
+ }
1759
+ }
1760
+ // sublevel siblings
1761
+ } else {
1762
+ // explode siblings
1763
+ $ex = explode( '=>', $sibling );
1764
+
1765
+ // copy all non-existent siblings
1766
+ foreach ( array_keys( $array[$ex[0]] ) as $key ) {
1767
+ if ( ! array_key_exists( $key, $defaults[$ex[0]] ) )
1768
+ $defaults[$ex[0]][$key] = null;
1769
+ }
1770
+
1771
+ // more than one sibling child?
1772
+ if ( count( $ex ) > 1 )
1773
+ $new_siblings[$ex[0]] = array( substr_replace( $sibling, '', 0, strlen( $ex[0] . '=>' ) ) );
1774
+ // no more sibling children
1775
+ else
1776
+ $new_siblings[$ex[0]] = false;
1777
+ }
1778
+ }
1779
+ }
1780
+
1781
+ // loop through first array
1782
+ foreach ( $defaults as $key => $value ) {
1783
+ // integer key?
1784
+ if ( is_int( $key ) ) {
1785
+ $copy = array_unique( array_merge( $defaults, $array ), SORT_REGULAR );
1786
+
1787
+ break;
1788
+ // string key?
1789
+ } elseif ( is_string( $key ) && isset( $array[$key] ) ) {
1790
+ // string, boolean, integer or null values?
1791
+ if ( ( is_string( $value ) && is_string( $array[$key] ) ) || ( is_bool( $value ) && is_bool( $array[$key] ) ) || ( is_int( $value ) && is_int( $array[$key] ) ) || is_null( $value ) )
1792
+ $copy[$key] = $array[$key];
1793
+ // arrays
1794
+ elseif ( is_array( $value ) && isset( $array[$key] ) && is_array( $array[$key] ) ) {
1795
+ if ( empty( $value ) )
1796
+ $copy[$key] = $array[$key];
1797
+ else
1798
+ $copy[$key] = $this->multi_array_merge( $defaults[$key], $array[$key], ( isset( $new_siblings[$key] ) ? $new_siblings[$key] : false ) );
1799
+ }
1800
+ }
1801
+ }
1802
+
1803
+ return $copy;
1804
+ }
1805
+
1806
  /**
1807
  * Indicate if current page is the Cookie Policy page
1808
  *
css/admin-notice.css ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .coronabar-notice {
2
+ border-left-color: #00a99d;
3
+ padding-left: 0;
4
+ }
5
+
6
+ .coronabar-notice .cn-notice-container {
7
+ display: flex;
8
+ align-items: center;
9
+ padding-top: 1em;
10
+ padding-bottom: 1em;
11
+ }
12
+
13
+ .coronabar-notice .cn-notice-step {
14
+ display: flex;
15
+ align-items: center;
16
+ }
17
+
18
+ .coronabar-notice .step-yes,
19
+ .coronabar-notice .step-no {
20
+ display: none;
21
+ }
22
+
23
+ .coronabar-notice .cn-notice-icon span {
24
+ margin-left: 2em;
25
+ margin-right: 2em;
26
+ width: 55px;
27
+ height: 55px;
28
+ display: block;
29
+ background-position: center center;
30
+ background-repeat: no-repeat;
31
+ background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxOTEgMTgzIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MjsiPjxwYXRoIGQ9Ik0xNzQuNDY4LDQ3LjcyNmMtMS44NTUsMCAtMy42MTUsMC40MTQgLTUuMTk0LDEuMTU4bDAsLTI2LjUxNmMwLC02LjgyIC01LjUyMiwtMTIuMzY3IC0xMi4zMDksLTEyLjM2N2MtMS45NTQsMCAtMy44MDQsMC40NTggLTUuNDQ1LDEuMjc3Yy0wLjUwMywtMi40NTkgLTEuNzI3LC00Ljc1NiAtMy41MzQsLTYuNTMzYy0yLjM3NywtMi4zNDUgLTUuNDk4LC0zLjYwMyAtOC43NjEsLTMuNTM2Yy02LjY1NSwwLjEyNCAtMTIuMDcyLDUuNjcxIC0xMi4wNzIsMTIuMzYybDAsMS45ODJjLTEuNTc5LC0wLjc0MyAtMy4zMzksLTEuMTU4IC01LjE5NCwtMS4xNThjLTYuNzg3LDAgLTEyLjMxMyw1LjU0NyAtMTIuMzEzLDEyLjM2N2wwLDUuNTljLTEuNTEzLC0wLjcxNSAtMy4xODgsLTEuMTMgLTQuOTU3LC0xLjE2OGMtMy4yNzgsLTAuMDYyIC02LjM4NCwxLjE5NyAtOC43NjEsMy41NDFjLTAuMDc2LDAuMDcyIC0wLjE0NywwLjE1MyAtMC4yMjMsMC4yMjljLTAuMDcxLC0wLjA3NiAtMC4xNDIsLTAuMTUzIC0wLjIxMywtMC4yMjRjLTIuMzc3LC0yLjM0OSAtNS40OTMsLTMuNjA4IC04Ljc3MSwtMy41NDFjLTEuNzY0LDAuMDMzIC0zLjQ0MywwLjQ0OCAtNC45NTYsMS4xNjNsMCwtNS41OWMwLC02LjgyIC01LjUyMSwtMTIuMzY3IC0xMi4zMDksLTEyLjM2N2MtMS44NTUsMCAtMy42MTQsMC40MTUgLTUuMTk0LDEuMTU4bDAsLTEuOTgyYzAsLTYuNjkxIC01LjQxNywtMTIuMjM5IC0xMi4wNzIsLTEyLjM2MmMtMy4yNzUsLTAuMDY3IC02LjM4NywxLjE5MSAtOC43NjQsMy41MzZjLTEuODA0LDEuNzc3IC0zLjAzMSw0LjA3NCAtMy41MzEsNi41MzNjLTEuNjQzLC0wLjgxOSAtMy40OTIsLTEuMjc3IC01LjQ0NywtMS4yNzdjLTYuNzg3LDAgLTEyLjMwOSw1LjU0NyAtMTIuMzA5LDEyLjM2N2wwLDI2LjUxNmMtMS41NzksLTAuNzQ0IC0zLjMzOSwtMS4xNTggLTUuMTk0LC0xLjE1OGMtNi43ODcsMCAtMTIuMzA5LDUuNTUyIC0xMi4zMDksMTIuMzY3bDAsNDUuMzNjMCwxMC40OTkgNC45OTIsMjAuNTMxIDEzLjM1MiwyNi44MzFjMS45OTQsMS41MDEgNi43OTQsOC44MzggMTAuMTM1LDE0LjU0OWMtMS4xMTYsMC42MDMgLTEuODc0LDEuNzg3IC0xLjg3NCwzLjE0OGwwLDI4LjI2OWMwLDEuOTc1IDEuNTkzLDMuNTc1IDMuNTU4LDMuNTc1bDUwLjE0NiwwYzEuOTY0LDAgMy41NTgsLTEuNiAzLjU1OCwtMy41NzRsLTAuMDAxLC0yNS45MjVjMy45NjYsMC44NzYgOC4wNSwxLjMyNiAxMi4xOTUsMS4zMjZjNC4xNDYsMCA4LjIzNSwtMC40NTUgMTIuMiwtMS4zMzVsMCwyNS45MzRjMCwxLjk3NCAxLjU4OSwzLjU3NCAzLjU1OCwzLjU3NGw1MC4xNDYsMGMxLjk2NCwwIDMuNTU3LC0xLjYgMy41NTcsLTMuNTc0bDAsLTI4LjI3YzAsLTEuMzYxIC0wLjc1OSwtMi41NDUgLTEuODczLC0zLjE0OGMzLjMzOSwtNS43MSA4LjEzOSwtMTMuMDQ4IDEwLjEzMSwtMTQuNTQ5YzguMzYzLC02LjMgMTMuMzUzLC0xNi4zMzIgMTMuMzUzLC0yNi44MzFsLTAuMDAxLC00NS4zM2MwLC02LjgxNSAtNS41MjEsLTEyLjM2NyAtMTIuMzA4LC0xMi4zNjdabS01Mi41MDksLTI2LjE4MmMyLjg2NSwwIDUuMTk0LDIuMzQ0IDUuMTk0LDUuMjE4bDAsMjMuMTc1Yy0wLjQ0MSwtMC4zIC0wLjg4MiwtMC41OTEgLTEuMzI4LC0wLjg3MmMtMC4wOSwtMC4wNTcgLTAuMTc1LC0wLjExNCAtMC4yNjUsLTAuMTY3Yy0wLjUwMywtMC4zMTkgLTEuMDExLC0wLjYyOSAtMS41MjMsLTAuOTI5Yy0wLjA3NiwtMC4wNDMgLTAuMTQ3LC0wLjA4NiAtMC4yMjMsLTAuMTI5Yy0wLjUzMSwtMC4zMDUgLTEuMDY3LC0wLjYxIC0xLjYwOCwtMC45Yy0wLjAzMywtMC4wMTUgLTAuMDYyLC0wLjAyOSAtMC4wOSwtMC4wNDhjLTAuNTQxLC0wLjI5MSAtMS4wOTEsLTAuNTY3IC0xLjYzNiwtMC44MzljLTAuMDUzLC0wLjAyNCAtMC4xLC0wLjA0OCAtMC4xNDgsLTAuMDcxYy0wLjU0LC0wLjI2NyAtMS4wOSwtMC41MjUgLTEuNjQxLC0wLjc2OGMtMC4wODUsLTAuMDM4IC0wLjE3LC0wLjA4MSAtMC4yNTEsLTAuMTE0Yy0wLjUzNiwtMC4yMzggLTEuMDc3LC0wLjQ2NyAtMS42MjIsLTAuNjg2Yy0wLjAxNSwtMC4wMSAtMC4wMzQsLTAuMDE5IC0wLjA1MiwtMC4wMjRsLTAuMDAxLC0xNy42MjhjMCwtMi44NzQgMi4zMjksLTUuMjE4IDUuMTk0LC01LjIxOFptLTIxLjA0NiwxOC4yOGMxLjAwMSwtMC45ODYgMi4yODcsLTEuNTE1IDMuNjQzLC0xLjQ5MWMyLjI2OCwwLjA0MyA0LjE5OCwxLjU4MiA0Ljg1MywzLjY2Yy0wLjExNCwtMC4wMjkgLTAuMjMzLC0wLjA1NyAtMC4zNTEsLTAuMDg2Yy0wLjE4NSwtMC4wNDMgLTAuMzc1LC0wLjA5MSAtMC41NiwtMC4xMzNjLTAuMTgsLTAuMDQzIC0wLjM2MSwtMC4wODEgLTAuNTM2LC0wLjEyYy0wLjE5LC0wLjA0MiAtMC4zNzksLTAuMDg1IC0wLjU3NCwtMC4xMjNjLTAuMTc1LC0wLjAzOSAtMC4zNTYsLTAuMDc3IC0wLjUzNiwtMC4xMWMtMC4xOTQsLTAuMDM4IC0wLjM4NCwtMC4wNzYgLTAuNTc5LC0wLjExNGMtMC4xNzUsLTAuMDM0IC0wLjM1NSwtMC4wNjcgLTAuNTM2LC0wLjEwMWMtMC4xOTQsLTAuMDMzIC0wLjM4OSwtMC4wNjYgLTAuNTgzLC0wLjFjLTAuMTgsLTAuMDI4IC0wLjM2MSwtMC4wNTcgLTAuNTQxLC0wLjA4NWMtMC4xOTQsLTAuMDM0IC0wLjM4OSwtMC4wNjIgLTAuNTgzLC0wLjA5MWMtMC4xOCwtMC4wMjkgLTAuMzYxLC0wLjA1MiAtMC41NDEsLTAuMDc2Yy0wLjE5OSwtMC4wMjkgLTAuMzk0LC0wLjA1NyAtMC41OTMsLTAuMDgxYy0wLjE4LC0wLjAyNCAtMC4zNiwtMC4wNDMgLTAuNTQxLC0wLjA2N2MtMC4xOTksLTAuMDI0IC0wLjM5MywtMC4wNDMgLTAuNTkzLC0wLjA2N2MtMC4xOCwtMC4wMTkgLTAuMzY1LC0wLjAzOCAtMC41NDUsLTAuMDUyYy0wLjE5OSwtMC4wMTkgLTAuMzk4LC0wLjAzOCAtMC41OTgsLTAuMDU3Yy0wLjA5NSwtMC4wMDUgLTAuMTk0LC0wLjAxOSAtMC4yOTQsLTAuMDI0YzAuMTc2LC0wLjI0MyAwLjM3NSwtMC40NjcgMC41ODgsLTAuNjgyWm0yLjU5NSwxNC45MTJjMS45MDIsLTAuMTU3IDMuMzQ0LC0xLjc5MiAzLjI2MywtMy43MDhjLTAuMDQyLC0xLjA0MyAtMC41MjYsLTEuOTYzIC0xLjI2MSwtMi41ODdjMS4xOTUsMC4yNDMgMi4zNzYsMC41MTkgMy41NDMsMC44NDNjMTQuODIzLDQuMTQyIDI2Ljk0NywxNS4wNiAzMi41OTEsMjkuNzUybC0zLjAwMiwwYy0xLjU3NSwwIC0yLjkzNiwwLjkxIC0zLjU0OCwyLjM2OWMtMC4wMSwwLjAxNCAtMC4wMTUsMC4wMjggLTAuMDE5LDAuMDQyYy0wLjU5OCwxLjQ2OCAtMC4yNzUsMy4wNzkgMC44NDksNC4yMDhsMC44MTEsMC44MTVjMC44MiwwLjgyNSAxLjI3MSwxLjkyMSAxLjI3MSwzLjA4OGMwLDEuMTY4IC0wLjQ1MSwyLjI2NCAtMS4yNjYsMy4wODRjLTAuODAyLDAuODA1IC0xLjg2OSwxLjI0OCAtMy4wMDgsMS4yNDhjLTEuMTM4LDAgLTIuMjAxLC0wLjQ0MyAtMy4wMDIsLTEuMjQzbC0xLjk3MywtMS45ODhjLTIuNDM0LC0yLjQ0NCAtNS41MTIsLTMuOTk4IC04Ljg5NCwtNC40ODljLTEuNTEzLC0wLjIyNCAtMy4wMDMsMC41NTggLTMuNjksMS45MzVjLTAuNjg4LDEuMzcyIC0wLjQxOCwzLjAzNiAwLjY2NCw0LjEyN2wwLjU1LDAuNTUzYzEuNzUsMS43NTggMi43MTgsNC4wOTggMi43MTgsNi41ODZsMCwyLjg1YzAsMi4xNDkgMS43MzYsMy44OTMgMy44NywzLjg5M2MwLjExOSwwIDAuMjE0LDAuMDY3IDAuMjYxLDAuMTcyYzAuMDQ4LDAuMTE0IDAuMDI0LDAuMjI5IC0wLjA2MSwwLjMxNGwtMi43NjEsMi43ODhjLTIuMDk2LDIuMTE2IC0zLjkzNyw0LjQ4OSAtNS40NjksNy4wNTNsLTIuNDM4LDQuMDdjLTAuMDA1LDAuMDE0IC0wLjAxNCwwLjAyOSAtMC4wMjQsMC4wNDNsLTMuMDY5LDUuMDk5Yy0xLjAxLDEuNjczIC0xLjU0NiwzLjU5NCAtMS41NDYsNS41NDdsMCwwLjE1OGMwLDAuODg2IC0wLjcxNiwxLjYxMSAtMS42MDgsMS42MTFjLTAuOTcyLDAgLTEuODUsLTAuMzYzIC0yLjUzMywtMS4wNDljLTAuNjg4LC0wLjY5NiAtMS4wNTMsLTEuNTc3IC0xLjA1MywtMi41NWMwLC0yLjc1OSAtMS4wNjcsLTUuMzUxIC0zLjAwNywtNy4yOTZsLTEuMTQzLC0xLjE0OGMtMS45ODMsLTEuOTkyIC0zLjA3NCwtNC42NDIgLTMuMDc0LC03LjQ2M2wwLC03LjMzNGMwLC0yLjkxMiAtMi4zNTcsLTUuMjgxIC01LjI1NSwtNS4yODFsLTAuODY0LDBjLTIuODQxLDAgLTUuMTUxLC0yLjMyMSAtNS4xNTEsLTUuMTc1bDAsLTMuODE4YzAsLTMuMDIxIDIuNDQ4LC01LjQ4IDUuNDYsLTUuNDhsMjAuMzgxLDBjMS45NjksMCAzLjU1OCwtMS42MDEgMy41NTgsLTMuNTc0bDAsLTAuMjA1YzAsLTQuNDE4IC0xLjcxMiwtOC41NzMgLTQuODI0LC0xMS43Yy0wLjUwOCwtMC41MSAtMS4xNTcsLTAuODU4IC0xLjg2NCwtMC45ODZsLTE2LjIxNywtMy4wMjZjLTEuMTQ4LC0wLjIxNSAtMi4zMjksMC4xNTIgLTMuMTU1LDAuOTc3Yy0xLjA5NSwxLjA5MSAtMS42OTgsMi41NDkgLTEuNjk4LDQuMTAzYzAsMS40MjUgLTEuMTUyLDIuNTc4IC0yLjU2NiwyLjU3OGwtMi41LDBjLTAuNTc0LDAgLTEuMDQzLC0wLjQ2NyAtMS4wNDMsLTEuMDQ4bDAsLTMuMzc1YzAsLTIuNTMgMC45NzcsLTQuOTA4IDIuNzU2LC02LjY5bDEuNDYxLC0xLjQ2OGMxLjAyOSwtMS4wNDQgMS41OTMsLTIuNDIxIDEuNTkzLC0zLjg4NGwwLC0wLjUwNWMwLC0wLjg3MyAwLjcwNywtMS41ODMgMS41NzUsLTEuNTgzYzAuMDk1LDAgMC4xOTUsLTAuMDA0IDAuMjg5LC0wLjAwOWwxNS4xMjIsLTEuMjQ0Wm0tMTIuODE2LDI0LjQ5MWMxLjM4LC0xLjIzOSAyLjQwOSwtMi44NjkgMi45MDcsLTQuNzE0bDExLjgxMSwyLjIwMmMwLjYxMiwwLjc2MyAxLjA5MSwxLjYxMSAxLjQzNywyLjUxMmwtMTYuMTU1LDBabS0zLjgzMywtNDAuODk0bDAuMDk1LDBjMS4zMTQsMCAyLjU3MSwwLjUyOSAzLjU0OCwxLjQ5NmMwLjIxMywwLjIxIDAuNDEzLDAuNDM5IDAuNTg4LDAuNjgyYy0wLjAyOCwwIC0wLjA1NywwLjAwNCAtMC4wODEsMC4wMDRjLTAuMTk5LDAuMDIgLTAuMzkzLDAuMDM5IC0wLjU5MiwwLjA1OGMtMC4xOTUsMC4wMTkgLTAuMzg1LDAuMDMzIC0wLjU3OSwwLjA1N2MtMC4xOTksMC4wMTkgLTAuMzk0LDAuMDQzIC0wLjU4OCwwLjA2N2MtMC4xOTUsMC4wMjMgLTAuMzg5LDAuMDQyIC0wLjU3OSwwLjA2NmMtMC4xOTksMC4wMjQgLTAuMzk0LDAuMDUzIC0wLjU4OCwwLjA4MWMtMC4xOTUsMC4wMjQgLTAuMzg0LDAuMDUzIC0wLjU3OSwwLjA4MWMtMC4xOTQsMC4wMjkgLTAuMzg5LDAuMDYyIC0wLjU4MywwLjA5MWMtMC4xOSwwLjAyOCAtMC4zODQsMC4wNjIgLTAuNTc5LDAuMDk1Yy0wLjE5LDAuMDM0IC0wLjM4NCwwLjA2NyAtMC41NzksMC4xYy0wLjE4OSwwLjAzOCAtMC4zODQsMC4wNzIgLTAuNTc0LDAuMTA1Yy0wLjE5NCwwLjAzOCAtMC4zODQsMC4wNzYgLTAuNTc4LDAuMTE5Yy0wLjE5LDAuMDM4IC0wLjM4LDAuMDc2IC0wLjU3NCwwLjExNWMtMC4xOSwwLjA0MiAtMC4zOCwwLjA4NSAtMC41NjksMC4xMjhjLTAuMTk1LDAuMDQzIC0wLjM4NSwwLjA4NiAtMC41NzQsMC4xMjljLTAuMTksMC4wNDggLTAuMzgsMC4wOSAtMC41NywwLjEzOGMtMC4xMDksMC4wMjkgLTAuMjE4LDAuMDUzIC0wLjMyNywwLjA4MWMwLjY0NSwtMi4wOTcgMi41ODEsLTMuNjUgNC44NjIsLTMuNjkzWm0tMjIuNTk3LC0xMS41NjZjMCwtMi44NzkgMi4zMjksLTUuMjI0IDUuMTk0LC01LjIyNGMyLjg2NSwwIDUuMTk0LDIuMzQ1IDUuMTk0LDUuMjE5bDAsMTYuNzg5YzAsMC4yODYgMC4wMzMsMC41NjcgMC4wOTksMC44MzRjLTAuMDA0LDAgLTAuMDA5LDAgLTAuMDA5LDAuMDA1Yy0wLjU4OCwwLjIzMyAtMS4xNzIsMC40ODEgLTEuNzUsMC43MzljLTAuMDksMC4wMzggLTAuMTc2LDAuMDc2IC0wLjI2NiwwLjExNGMtMC41NSwwLjI0OCAtMS4xLDAuNTA1IC0xLjY0NiwwLjc3MmMtMC4wOTksMC4wNDggLTAuMjA0LDAuMSAtMC4zMDMsMC4xNDhjLTAuNTQ2LDAuMjcxIC0xLjA4NywwLjU0OCAtMS42MjMsMC44MzRjLTAuMDgsMC4wNDMgLTAuMTYxLDAuMDg1IC0wLjIzNywwLjEyOGMtMC41NTksMC4zMDUgLTEuMTEsMC42MSAtMS42NiwwLjkzNGMtMC4wMDUsMC4wMDUgLTAuMDE0LDAuMDA1IC0wLjAxOSwwLjAxYy0wLjU1LDAuMzI0IC0xLjA5MSwwLjY1OCAtMS42MzIsMS4wMDFjLTAuMDgsMC4wNDcgLTAuMTU2LDAuMDk1IC0wLjIzNywwLjE0N2MtMC4zNywwLjIzOSAtMC43NCwwLjQ4MiAtMS4xMDUsMC43MjVsMCwtMjMuMTc1Wm0tNDIuMDA1LDk5Ljc2OGMtNi41NzgsLTQuOTU2IC0xMC41MDYsLTEyLjg0OCAtMTAuNTA2LC0yMS4xMTJsMCwtNDUuMzNjMCwtMi44NzQgMi4zMywtNS4yMTkgNS4xOTQsLTUuMjE5YzIuODY1LDAgNS4xOTUsMi4zNDUgNS4xOTUsNS4yMjNjMCwwLjA0MyAwLjAwNSwwLjA4NiAwLjAwNiwwLjEyOWwwLDI5LjQ4NWMwLDEuOTc4IDEuNTkzLDMuNTc0IDMuNTU4LDMuNTc0YzEuOTY1LDAgMy41NTcsLTEuNTk2IDMuNTU3LC0zLjU3NGwtMC4wMDYsLTY3LjM0M2MwLC0yLjg3OSAyLjMzLC01LjIxOCA1LjE5NCwtNS4yMThjMi44NjQsMCA1LjE5NCwyLjMzOSA1LjE5NCw1LjIxOGwwLDI0LjIxOWMwLDEuOTczIDEuNTkzLDMuNTc0IDMuNTU4LDMuNTc0YzEuOTY1LDAgMy41NTcsLTEuNjAxIDMuNTU3LC0zLjU3NGwwLC0zMi44MTZjMCwtMS40NTkgMC42MDMsLTIuODg4IDEuNjUyLC0zLjkyMmMxLjAwMiwtMC45OTIgMi4yOTEsLTEuNTE2IDMuNjQzLC0xLjQ5MmMyLjgwOCwwLjA1MiA1LjA5NCwyLjM5MiA1LjA5NCw1LjIxOGwwLDQyLjA2N2MtMC42OTIsMC42NTIgLTEuMzY2LDEuMzIgLTIuMDI1LDIuMDA2Yy0wLjc3OCwwLjgxIC0xLjUzMiwxLjY0OSAtMi4yNjMsMi41MDdjLTAuMDc2LDAuMDkgLTAuMTUyLDAuMTgxIC0wLjIyNywwLjI3MWMtNS43NjQsNi44NjMgLTkuODgxLDE1LjA1IC0xMS44ODQsMjMuODE5Yy0wLjk0OCw0LjE1MSAtMS40MjgsOC40MyAtMS40MjgsMTIuNzI0YzAsMS43ODcgMC4wODgsMy41NjkgMC4yNTQsNS4zNDdjLTIuMDUzLC0wLjUzNCAtNC4yMDQsLTAuODIgLTYuNDIsLTAuODJsLTAuNjkxLDBjLTEuOTY1LDAgLTMuNTU3LDEuNTk3IC0zLjU1NywzLjU3NWMwLDEuOTczIDEuNTkyLDMuNTc0IDMuNTU3LDMuNTc0bDAuNjkxLDBjMy44MTgsMCA3LjM2OCwxLjE2NyAxMC4zMTcsMy4xNjljMC4wMDksMC4wMDUgMC4wMTcsMC4wMDkgMC4wMjUsMC4wMTRjMC43MjcsMC40OTYgMS40MTYsMS4wMzkgMi4wNjMsMS42M2MwLjAwOSwwLjAxIDAuMDE4LDAuMDE0IDAuMDI2LDAuMDI0YzAuNDEsMC4zNzYgMC44MDIsMC43NjcgMS4xNzYsMS4xNzdjMC4wNDIsMC4wNDggMC4wODQsMC4wOTUgMC4xMjUsMC4xMzhjMC4xNjgsMC4xOTEgMC4zMzIsMC4zNzcgMC40OTMsMC41NzJjMC4wNSwwLjA2MiAwLjA5OCwwLjEyNCAwLjE0NywwLjE4NmMwLjEwOCwwLjEzMyAwLjIxMywwLjI2NyAwLjMxNywwLjQwNWMwLjA3OSwwLjEwNSAwLjE1OCwwLjIxIDAuMjM1LDAuMzE1YzAuMDU5LDAuMDgxIDAuMTE3LDAuMTYyIDAuMTc1LDAuMjQ3YzAuMTgyLDAuMjU4IDAuMzYsMC41MjUgMC41MjksMC43OTFjMC4wMDgsMC4wMTUgMC4wMTgsMC4wMjkgMC4wMjcsMC4wNDNjMS4wNjUsMS43MDYgMS44NTMsMy41ODQgMi4zMjQsNS41NTdjMC4wMDQsMC4wMTkgMC4wMDcsMC4wMzggMC4wMTIsMC4wNTJjMC4wNzYsMC4zMjUgMC4xNDIsMC42NDkgMC4yLDAuOTc3YzAuMDE0LDAuMDgxIDAuMDMsMC4xNjIgMC4wNDMsMC4yMzljMC4wMjQsMC4xNDMgMC4wNDUsMC4yODYgMC4wNjUsMC40MjljMC4wMjIsMC4xNTcgMC4wNDIsMC4zMTkgMC4wNiwwLjQ3NmMwLjAxNCwwLjExNSAwLjAyNywwLjIzNCAwLjAzOSwwLjM0OGMwLjAyMiwwLjIzNCAwLjA0LDAuNDY3IDAuMDUzLDAuNzA1YzAuMDA1LDAuMDgxIDAuMDA5LDAuMTYyIDAuMDEyLDAuMjQzYzAuMDEyLDAuMjc3IDAuMDIxLDAuNTUzIDAuMDIxLDAuODNsMCwxOS4xNjZsLTE1LjU5MiwwYy0yLjcyOSwtNC45MjEgLTkuNjYxLC0xNi43MzEgLTEzLjc4OSwtMTkuODQzWm0zOC40OTUsLTEuMTI1Yy0wLjczLDAuNzM0IC0xLjM5NCwxLjUyNSAtMi4wMDIsMi4zNTRsMCwtMC41NDhjMCwtMC4zOSAtMC4wMDksLTAuNzc2IC0wLjAyOCwtMS4xNjJjLTAuMDA1LC0wLjA5NiAtMC4wMDksLTAuMTkxIC0wLjAxNCwtMC4yODZjLTAuMDE5LC0wLjM1MyAtMC4wNDMsLTAuNzAxIC0wLjA4MSwtMS4wNDljLTAuMDA5LC0wLjEzMyAtMC4wMjgsLTAuMjY3IC0wLjA0MywtMC40MDVjLTAuMDIzLC0wLjIxOSAtMC4wNTIsLTAuNDQzIC0wLjA4NSwtMC42NjJjLTAuMDM4LC0wLjI4NiAtMC4wODUsLTAuNTY3IC0wLjEzMywtMC44NDRjLTAuMDIzLC0wLjE1MiAtMC4wNTIsLTAuMyAtMC4wOCwtMC40NTNjLTAuMDQzLC0wLjIyOCAtMC4wOTEsLTAuNDU3IC0wLjE0MywtMC42ODZjLTAuMDA5LC0wLjA0MyAtMC4wMTksLTAuMDg2IC0wLjAyOCwtMC4xMjhjLTAuNTY5LC0yLjUzNiAtMS41MTMsLTQuOTI4IC0yLjc3LC03LjEyYy0wLjAzMywtMC4wNjIgLTAuMDcxLC0wLjEyNCAtMC4xMDUsLTAuMTgxYy0wLjExMywtMC4xOTYgLTAuMjI3LC0wLjM5MSAtMC4zNDYsLTAuNTgyYy0wLjExNCwtMC4xODEgLTAuMjMyLC0wLjM2MiAtMC4zNDYsLTAuNTQzYy0wLjExOSwtMC4xNzYgLTAuMjMzLC0wLjM0OCAtMC4zNTYsLTAuNTI0Yy0wLjEyOCwtMC4xOTEgLTAuMjYxLC0wLjM3NyAtMC4zOTgsLTAuNTYzYy0wLjA2NywtMC4wOSAtMC4xMzMsLTAuMTg1IC0wLjIsLTAuMjc2Yy0wLjIxMywtMC4yODEgLTAuNDMxLC0wLjU1OCAtMC42NTQsLTAuODM0Yy0wLjAzMywtMC4wNDMgLTAuMDcxLC0wLjA4NiAtMC4xMDQsLTAuMTI5Yy0xLjYwMywtMS45MzkgLTMuNDkzLC0zLjY1NSAtNS42MzUsLTUuMDdjLTAuNTA5LC0yLjg3NCAtMC43NjcsLTUuODEgLTAuNzY3LC04Ljc1YzAsLTIuNzc4IDAuMjMxLC01LjU1MiAwLjY4NiwtOC4yNzNjMi40MTEsMC4yODEgNC42NDUsMS4zNTggNi4zODksMy4xMDdsMi4xNzcsMi4xOTJjMS42MDMsMS42MDIgMy43MjgsMi40ODggNS45OTEsMi40ODhjMS43NzQsMCAzLjQzOSwwLjY5MSA0LjY5NiwxLjk1NGwwLjA0MywwLjA0N2MyLjA1OCwyLjA2OSAzLjE5Miw0LjgxNCAzLjE5Miw3LjczNWwwLDQuNDUxYzAsMy43NjUgLTEuNDYxLDcuMzExIC00LjExMyw5Ljk3NWwtNC43NDMsNC43NjVabTEuNjAzLDE3LjI0NmMwLjMwOSwwLjIyNiAwLjYxNywwLjQ1IDAuOTMsMC42N2MwLjEzOCwwLjA5NyAwLjI3LDAuMTk1IDAuNDEzLDAuMjkxYzAuOTIsMC42MzkgMS44NTQsMS4yNSAyLjgwOCwxLjgzYzAuMDMzLDAuMDIgMC4wNjYsMC4wMzkgMC4wOTUsMC4wNTljMC40OTMsMC4yOTkgMC45OTEsMC41ODkgMS40ODksMC44NzJsLTkuMzQsMGwwLC02LjYxOWMwLjA4NiwwLjA3MiAwLjE2NywwLjE0MiAwLjI1MiwwLjIxNGMwLjEzNywwLjEyIDAuMjgsMC4yNDIgMC40MTcsMC4zNmMwLjM0NywwLjI5MyAwLjY5OCwwLjU4MSAxLjA0OSwwLjg2NGMwLjA3NSwwLjA2NCAwLjE1NiwwLjEyOSAwLjIzMiwwLjE5MmMwLjQwMywwLjMyMSAwLjgxMSwwLjYzNSAxLjIxOSwwLjk0NGMwLjE0NywwLjEwOSAwLjI5NCwwLjIxNiAwLjQzNiwwLjMyM1ptLTI4Ljk5MSwzMS45OTFsMCwtMjEuMTIxbDQzLjAzMiwwbDAsMjEuMTIxbC00My4wMzIsMFptODAuNjEzLC0zMS42OTZjLTAuMjIzLDAuMDkgLTAuNDQ2LDAuMTc4IC0wLjY3NCwwLjI2NWMtNS41NSwyLjEzIC0xMS40OTgsMy4yNTggLTE3LjU5OCwzLjI1OGMtMC4zODgsMCAtMC43NzMsLTAuMDA0IC0xLjE2MiwtMC4wMTRjLTAuMTMyLC0wLjAwMyAtMC4yNjEsLTAuMDA5IC0wLjM5MywtMC4wMTNjLTAuMjU2LC0wLjAwNyAtMC41MTMsLTAuMDE2IC0wLjc2OSwtMC4wMjdjLTAuMTU2LC0wLjAwOCAtMC4zMDgsLTAuMDE4IC0wLjQ2NSwtMC4wMjZjLTAuMjMyLC0wLjAxMyAtMC40NiwtMC4wMjYgLTAuNjkyLC0wLjA0MmMtMC4xNjYsLTAuMDEyIC0wLjMyNywtMC4wMjYgLTAuNDg5LC0wLjAzOWMtMC4yMjMsLTAuMDE4IC0wLjQ0NiwtMC4wMzUgLTAuNjY4LC0wLjA1NmMtMC4xNjYsLTAuMDE2IC0wLjMzMiwtMC4wMzMgLTAuNDk5LC0wLjA1MWMtMC4yMTgsLTAuMDIyIC0wLjQzMSwtMC4wNDUgLTAuNjQ1LC0wLjA3Yy0wLjE3LC0wLjAyIC0wLjM0MSwtMC4wNDIgLTAuNTEyLC0wLjA2NGMtMC4yMDksLTAuMDI3IC0wLjQyMiwtMC4wNTQgLTAuNjMxLC0wLjA4NGMtMC4xNywtMC4wMjQgLTAuMzQxLC0wLjA1IC0wLjUxMiwtMC4wNzZjLTAuMjA5LC0wLjAzMSAtMC40MTcsLTAuMDY0IC0wLjYyNiwtMC4wOTljLTAuMTcxLC0wLjAyOCAtMC4zNDIsLTAuMDU3IC0wLjUxMiwtMC4wODdjLTAuMjA5LC0wLjAzNyAtMC40MTMsLTAuMDc0IC0wLjYyMiwtMC4xMTNjLTAuMTY2LC0wLjAzMiAtMC4zMzcsLTAuMDY2IC0wLjUwNywtMC4wOTljLTAuMjA0LC0wLjA0MiAtMC40MTMsLTAuMDg0IC0wLjYxNywtMC4xMjhjLTAuMTcxLC0wLjAzNiAtMC4zMzcsLTAuMDczIC0wLjUwMywtMC4xMWMtMC4yMDgsLTAuMDQ2IC0wLjQxMiwtMC4wOTUgLTAuNjE2LC0wLjE0NGMtMC4xNjYsLTAuMDM5IC0wLjMzMiwtMC4wNzkgLTAuNDk4LC0wLjEyYy0wLjIwOSwtMC4wNTIgLTAuNDEzLC0wLjEwNiAtMC42MTcsLTAuMTZjLTAuMTY2LC0wLjA0MyAtMC4zMjcsLTAuMDg1IC0wLjQ4OSwtMC4xM2MtMC4yMDgsLTAuMDU3IC0wLjQxNywtMC4xMTcgLTAuNjIxLC0wLjE3N2MtMC4xNjEsLTAuMDQ2IC0wLjMxOCwtMC4wOSAtMC40NzQsLTAuMTM3Yy0wLjIxNCwtMC4wNjQgLTAuNDI3LC0wLjEzMiAtMC42NDEsLTAuMTk4Yy0wLjE1MSwtMC4wNDggLTAuMjk4LC0wLjA5NCAtMC40NSwtMC4xNDJjLTAuMjIzLC0wLjA3NCAtMC40NTEsLTAuMTUgLTAuNjc0LC0wLjIyN2MtMC4xMzMsLTAuMDQ2IC0wLjI3LC0wLjA5MSAtMC40MDMsLTAuMTM4Yy0wLjI2MSwtMC4wOTIgLTAuNTIyLC0wLjE4NyAtMC43NzgsLTAuMjgzYy0wLjAxOSwtMC4wMDcgLTAuMDM4LC0wLjAxNCAtMC4wNTcsLTAuMDJjLTAuMDI4LC0wLjAxMyAtMC4wNjEsLTAuMDMgLTAuMDksLTAuMDQxYy0yLjM4MSwtMC44OTQgLTQuNjcyLC0xLjk1OSAtNi44NTksLTMuMTkzYy0wLjAxNCwtMC4wMDYgLTAuMDIzLC0wLjAxMyAtMC4wMzgsLTAuMDJjLTAuMzI3LC0wLjE4NCAtMC42NDksLTAuMzczIC0wLjk3MiwtMC41NjVjLTAuMDc2LC0wLjA0NSAtMC4xNTIsLTAuMDkyIC0wLjIyOCwtMC4xMzhjLTAuMjU2LC0wLjE1NSAtMC41MTIsLTAuMzEyIC0wLjc2MywtMC40NzFjLTAuMTI0LC0wLjA3NiAtMC4yNDIsLTAuMTUzIC0wLjM2NiwtMC4yM2MtMC4yMDQsLTAuMTMyIC0wLjQxMiwtMC4yNjcgLTAuNjE2LC0wLjQwM2MtMC4xNDMsLTAuMDk0IC0wLjI4NSwtMC4xODggLTAuNDIyLC0wLjI4M2MtMC4wMzQsLTAuMDI0IC0wLjA3MiwtMC4wNDcgLTAuMTA1LC0wLjA3MWMtMC4xNDcsLTAuMTAyIC0wLjI5OSwtMC4yMDUgLTAuNDQ2LC0wLjMwOGMtMC4xMzIsLTAuMDkzIC0wLjI2NSwtMC4xODYgLTAuMzk4LC0wLjI4Yy0wLjA4MSwtMC4wNTcgLTAuMTU3LC0wLjExNSAtMC4yMzcsLTAuMTcyYy0wLjEwOSwtMC4wNzkgLTAuMjIzLC0wLjE2IC0wLjMzMiwtMC4yNGMtMC4xMjQsLTAuMDkxIC0wLjI0NywtMC4xODIgLTAuMzY1LC0wLjI3M2MtMC4wOTUsLTAuMDcgLTAuMTksLTAuMTQgLTAuMjgsLTAuMjExYy0wLjEwOSwtMC4wOCAtMC4yMTQsLTAuMTYxIC0wLjMxOCwtMC4yNDJjLTAuMTA5LC0wLjA4NiAtMC4yMjMsLTAuMTcyIC0wLjMzMiwtMC4yNThjLTAuMDk1LC0wLjA3NyAtMC4xOTUsLTAuMTU1IC0wLjI5NCwtMC4yMzNjLTAuMTE0LC0wLjA5IC0wLjIyOCwtMC4xODMgLTAuMzQyLC0wLjI3NGMtMC4wOTUsLTAuMDgxIC0wLjE5LC0wLjE1NyAtMC4yODQsLTAuMjMzYy0wLjEsLTAuMDgxIC0wLjE5NSwtMC4xNjIgLTAuMjk0LC0wLjI0M2MtMC4xMzMsLTAuMTE1IC0wLjI2NiwtMC4yMjkgLTAuMzk5LC0wLjMzOWMtMC4wNzYsLTAuMDY2IC0wLjE1NiwtMC4xMzMgLTAuMjMyLC0wLjIwNWMtMC4wOSwtMC4wNzYgLTAuMTgxLC0wLjE1MiAtMC4yNzEsLTAuMjI4Yy0wLjAyOCwtMC4wMjkgLTAuMDU3LC0wLjA1NyAtMC4wOSwtMC4wODFjMC42NDEsLTEuMzYzIDEuNTE4LC0yLjYyMSAyLjU5NSwtMy43MDNsNC43NDMsLTQuNzY2YzMuOTk0LC00LjAxNyA2LjE5NSwtOS4zNTUgNi4xOTUsLTE1LjAyNmwwLC00LjQ1NmMwLC00LjgyNyAtMS44NzQsLTkuMzY5IC01LjI3NSwtMTIuNzg2bC0wLjA0MiwtMC4wNDhjLTIuNiwtMi42MTEgLTYuMDUzLC00LjA0NiAtOS43MjksLTQuMDQ2Yy0wLjM3LDAgLTAuNzAyLC0wLjEzOCAtMC45NTgsLTAuMzk1bC0yLjE3NywtMi4xOTJjLTIuNjg1LC0yLjY5MyAtNi4wNjIsLTQuNDI4IC05LjczLC01LjAzM2MwLjAwMSwtMC4wMDUgMC4wMDEsLTAuMDA1IDAuMDAyLC0wLjAwOWMwLjE4MywtMC41NzIgMC4zNzcsLTEuMTM1IDAuNTc4LC0xLjY5N2MwLjAyNSwtMC4wNjcgMC4wNDgsLTAuMTM4IDAuMDcyLC0wLjIwNWMwLjE5NCwtMC41MjkgMC4zOTcsLTEuMDU4IDAuNjA4LC0xLjU3N2MwLjAzNiwtMC4wOTEgMC4wNzMsLTAuMTgxIDAuMTEsLTAuMjcyYzAuMjA4LC0wLjUxIDAuNDI0LC0xLjAxNSAwLjY0OCwtMS41MTFjMC4wNDQsLTAuMSAwLjA4NywtMC4xOTUgMC4xMzEsLTAuMjljMC4yMjcsLTAuNDk2IDAuNDYxLC0wLjk4NyAwLjcwMiwtMS40NzNjMC4wNDMsLTAuMDkgMC4wODgsLTAuMTc2IDAuMTMyLC0wLjI2MmMwLjI0OCwtMC40OTYgMC41MDUsLTAuOTg2IDAuNzcsLTEuNDczYzAuMDMzLC0wLjA1NyAwLjA2NywtMC4xMTkgMC4xLC0wLjE3NmMwLjI2MSwtMC40NzYgMC41MzEsLTAuOTQzIDAuODExLC0xLjQxYzAuMDI4LC0wLjA0OCAwLjA1NywtMC4wOTYgMC4wODUsLTAuMTQzYzAuMjg1LC0wLjQ3MiAwLjU3NCwtMC45MzkgMC44NzMsLTEuMzk3YzAuMDU3LC0wLjA4NiAwLjEwOSwtMC4xNzEgMC4xNjYsLTAuMjUyYzAuMjg5LC0wLjQ0NCAwLjU4MywtMC44NzcgMC44ODcsLTEuMzA2YzAuMDY2LC0wLjA5NSAwLjEzOCwtMC4xOTYgMC4yMDQsLTAuMjkxYzAuMzA0LC0wLjQxOSAwLjYwNywtMC44MzQgMC45MiwtMS4yNDRjMC4wNzYsLTAuMDk1IDAuMTQ3LC0wLjE5IDAuMjIzLC0wLjI5YzAuMzE4LC0wLjQxIDAuNjQsLTAuODE1IDAuOTcyLC0xLjIxMWMwLjA2NywtMC4wODYgMC4xMzgsLTAuMTY3IDAuMjA5LC0wLjI1MmMwLjM0MiwtMC40MDUgMC42ODgsLTAuODExIDEuMDQ0LC0xLjIxMWMwLjA0NywtMC4wNTIgMC4wOTksLTAuMTA1IDAuMTQ3LC0wLjE2MmMwLjM0MSwtMC4zNzYgMC42ODMsLTAuNzQzIDEuMDM0LC0xLjEwNmMwLjA2MSwtMC4wNjEgMC4xMTgsLTAuMTIzIDAuMTgsLTAuMTg1YzAuMzYsLTAuMzc3IDAuNzM1LC0wLjc0NCAxLjExLC0xLjEwNmMwLjA4NSwtMC4wODEgMC4xNzEsLTAuMTY3IDAuMjU2LC0wLjI0OGMwLjM2NSwtMC4zNDggMC43NCwtMC42OTEgMS4xMTUsLTEuMDI5YzAuMDk5LC0wLjA4NiAwLjE5NCwtMC4xNzIgMC4yODksLTAuMjU4YzAuMzgsLTAuMzMzIDAuNzY0LC0wLjY1NyAxLjE1MywtMC45ODFjMC4wOTUsLTAuMDc2IDAuMTk0LC0wLjE1OCAwLjI4OSwtMC4yMzljMC4zOTgsLTAuMzE5IDAuNzk3LC0wLjYzOCAxLjIwNSwtMC45NDhjMC4wODUsLTAuMDY3IDAuMTcxLC0wLjEyOSAwLjI1NiwtMC4xOTFjMC40MTMsLTAuMzE0IDAuODMsLTAuNjE5IDEuMjUyLC0wLjkxNWMwLjA2NywtMC4wNDIgMC4xMjgsLTAuMDkgMC4xOTUsLTAuMTMzYzAuNDEyLC0wLjI5MSAwLjgzNCwtMC41NzIgMS4yNTcsLTAuODQ4YzAuMDgsLTAuMDUzIDAuMTYxLC0wLjEwNSAwLjI0MiwtMC4xNTdjMC40MzYsLTAuMjgyIDAuODc3LC0wLjU1MyAxLjMyMywtMC44MmMwLjEwNCwtMC4wNjIgMC4yMDQsLTAuMTI0IDAuMzA4LC0wLjE4NmMwLjQzNywtMC4yNTcgMC44ODIsLTAuNTEgMS4zMjgsLTAuNzUzYzAuMTA5LC0wLjA2MiAwLjIxOSwtMC4xMTkgMC4zMjgsLTAuMTc2YzAuNDU1LC0wLjI0MyAwLjkwNiwtMC40ODIgMS4zNjYsLTAuNzFjMC4xMDQsLTAuMDUzIDAuMjA4LC0wLjEgMC4zMTMsLTAuMTUzYzAuNDc0LC0wLjIyOSAwLjk0OCwtMC40NTcgMS40MjcsLTAuNjcyYzAuMDgxLC0wLjAzOCAwLjE2NywtMC4wNzEgMC4yNDcsLTAuMTA5YzAuNDg0LC0wLjIxIDAuOTY4LC0wLjQyIDEuNDYxLC0wLjYyYzAuMDQ4LC0wLjAxOSAwLjEsLTAuMDM4IDAuMTUyLC0wLjA2MmMwLjUwMywtMC4yIDEuMDE1LC0wLjM5NiAxLjUyNywtMC41NzdjMC4wODYsLTAuMDMzIDAuMTcxLC0wLjA2NiAwLjI1NiwtMC4wOTVjMC41MDMsLTAuMTgxIDEuMDExLC0wLjM0OCAxLjUyMywtMC41MTVjMC4xMDQsLTAuMDMzIDAuMjA5LC0wLjA2NiAwLjMxMywtMC4xYzAuNTAzLC0wLjE1NyAxLjAxNSwtMC4zMDUgMS41MjcsLTAuNDQ4YzAuMTA1LC0wLjAyOCAwLjIxNCwtMC4wNTcgMC4zMTgsLTAuMDg1YzAuNTIyLC0wLjE0MyAxLjA0NCwtMC4yNzIgMS41NjUsLTAuMzk2YzAuMDk1LC0wLjAyNCAwLjE5LC0wLjA0MyAwLjI4NSwtMC4wNjdjMC41NDUsLTAuMTI0IDEuMDkxLC0wLjI0MyAxLjY0MSwtMC4zNDhjMC4wNjIsLTAuMDA5IDAuMTE5LC0wLjAxOSAwLjE4LC0wLjAzM2MwLjU1NSwtMC4xMDUgMS4xMSwtMC4yIDEuNjcsLTAuMjg2YzAuMDQzLC0wLjAwNSAwLjA4NSwtMC4wMTQgMC4xMjgsLTAuMDE5YzAuNTY5LC0wLjA4NiAxLjEzOSwtMC4xNjIgMS43MTcsLTAuMjI5YzAuMDg2LC0wLjAwOSAwLjE2NiwtMC4wMTkgMC4yNTIsLTAuMDI4YzAuNTU5LC0wLjA2MiAxLjExOSwtMC4xMTUgMS42NzksLTAuMTU4YzAuMDk5LC0wLjAwNCAwLjIwNCwtMC4wMTQgMC4zMDMsLTAuMDE5YzAuNTYsLTAuMDQyIDEuMTIsLTAuMDcxIDEuNjc5LC0wLjA5YzAuMDQ4LC0wLjAwNSAwLjA5NSwtMC4wMDUgMC4xMzgsLTAuMDA1YzAuMDcxLDAuMjgxIDAuMTUyLDAuNTU4IDAuMjQ3LDAuODI5bC02LjMwOSwwLjUxNWMtNC42NTMsMC4wOTEgLTguNDI5LDMuODc0IC04LjUxOSw4LjU1bC0wLjk3NywwLjk4MWMtMy4xMjEsMy4xMzYgLTQuODM4LDcuMzExIC00LjgzOCwxMS43NDNsMCwzLjM3OWMwLDQuNTIyIDMuNjYyLDguMTk2IDguMTU4LDguMTk2bDEuNDIzLDBjLTMuMDk3LDIuMzA3IC01LjExMyw2LjAwNSAtNS4xMTMsMTAuMTY1bDAsMy44MThjMCw2LjQ1NyA0Ljk3MSwxMS43NzEgMTEuMjcsMTIuMjgxbDAsNS41MDljMCw0LjczMiAxLjgzMSw5LjE3OCA1LjE2MSwxMi41MTlsMS4xMzgsMS4xNDRjMC42MDMsMC42MSAwLjkyNSwxLjM4MiAwLjkyNSwyLjI0NGMwLDIuODY5IDEuMTE1LDUuNTcyIDMuMTM2LDcuNjA1YzIuMDI1LDIuMDI3IDQuNzEsMy4xNDQgNy41NywzLjE0NGM0LjgwNSwwIDguNzE4LC0zLjkzMiA4LjcxOCwtOC43NjFsMCwtMC4xNThjMCwtMC42NDggMC4xOCwtMS4yODYgMC41MTcsLTEuODQ0bDMuMDUsLTUuMDY2YzAuMDA5LC0wLjAxOSAwLjAxOSwtMC4wMzMgMC4wMzMsLTAuMDUybDIuNDYyLC00LjExM2MxLjIzOCwtMi4wNzMgMi43MjMsLTMuOTg0IDQuNDE2LC01LjY5NWwyLjc2LC0yLjc5MmMyLjExMSwtMi4xMzUgMi43MzMsLTUuMzA5IDEuNTg1LC04LjA5N2MtMC43MTIsLTEuNzExIC0yLjAwMiwtMy4wNSAtMy41ODYsLTMuODI3bDAsLTAuMzQzYzAsLTAuMTI5IC0wLjAwNSwtMC4yNjIgLTAuMDA1LC0wLjM5MWMxLjg5MywxLjMzNCA0LjE1LDIuMDU0IDYuNTE3LDIuMDU0YzMuMDM2LDAgNS44ODcsLTEuMTgyIDguMDM1LC0zLjMzNmMxLjQ3NiwtMS40ODIgMi41LC0zLjI5OCAyLjk5OCwtNS4yOGMwLjAzOCwwLjM3NiAwLjA3MSwwLjc1OCAwLjEsMS4xMzRjMCwwLjAyOSAwLDAuMDUzIDAuMDA1LDAuMDgxYzAuMDI4LDAuNDc3IDAuMDUyLDAuOTUzIDAuMDcxLDEuNDM1YzAuMDA0LDAuMTI4IDAuMDA5LDAuMjU3IDAuMDE0LDAuMzljMC4wMTQsMC41MDEgMC4wMjQsMS4wMDYgMC4wMjQsMS41MTFjMCwxLjQ2OCAtMC4wNjIsMi45MzYgLTAuMTk1LDQuMzk0Yy0wLjEyOCwxLjQ2MyAtMC4zMTgsMi45MTYgLTAuNTc0LDQuMzU2Yy0yLjEzNCwxLjQxIC00LjAyMiwzLjEyNiAtNS42MjEsNS4wNTZjLTAuMDQyLDAuMDUyIC0wLjA4LDAuMSAtMC4xMjMsMC4xNTNjLTAuMjE4LDAuMjY2IC0wLjQzMSwwLjU0MyAtMC42NCwwLjgxOWMtMC4wNzYsMC4wOTYgLTAuMTQ3LDAuMTk2IC0wLjIxOCwwLjI5NmMtMC4xMjgsMC4xNzYgLTAuMjUyLDAuMzUyIC0wLjM3NSwwLjUzM2MtMC4xNTcsMC4yMjQgLTAuMzA4LDAuNDUzIC0wLjQ1NSwwLjY4MmMtMC4wODYsMC4xMjkgLTAuMTcxLDAuMjYyIC0wLjI1MiwwLjM5MWMtMC4xMjMsMC4yIC0wLjI0MiwwLjQgLTAuMzYsMC42Yy0wLjAyOSwwLjA1MyAtMC4wNTcsMC4xIC0wLjA4NiwwLjE0OGMtMS4yNjEsMi4yMDIgLTIuMjE1LDQuNjA4IC0yLjc4NCw3LjE1M2MtMC4wMDksMC4wMzggLTAuMDE5LDAuMDc2IC0wLjAyOCwwLjExNGMtMC4wNDgsMC4yMjkgLTAuMDk1LDAuNDYzIC0wLjE0MywwLjY5NmMtMC4wMjgsMC4xNDMgLTAuMDUyLDAuMjg2IC0wLjA3NiwwLjQzNGMtMC4wNTIsMC4yODEgLTAuMDk1LDAuNTcyIC0wLjEzNywwLjg1OGMtMC4wMjksMC4yMTkgLTAuMDU3LDAuNDQzIC0wLjA4MSwwLjY2MmMtMC4wMTksMC4xMzQgLTAuMDMzLDAuMjY3IC0wLjA0NywwLjQwNWMtMC4wMzMsMC4zNDggLTAuMDU3LDAuNjk2IC0wLjA4MSwxLjA0OWMtMC4wMDUsMC4wOTUgLTAuMDA1LDAuMTkgLTAuMDA5LDAuMjg2Yy0wLjAxOSwwLjM4NiAtMC4wMzQsMC43NzIgLTAuMDM0LDEuMTU4bDAsMi40OTdjLTAuMzE3LDAuMzY3IC0wLjY0NSwwLjcyNCAtMC45ODEsMS4wODJjLTAuMDYyLDAuMDcxIC0wLjEyOSwwLjEzOCAtMC4xOTUsMC4yMDljLTAuMjc1LDAuMjg2IC0wLjU1LDAuNTc3IC0wLjgzLDAuODU4Yy0wLjA2NiwwLjA3MiAtMC4xMzgsMC4xMzggLTAuMjA0LDAuMjA1Yy0wLjI4OSwwLjI5MSAtMC41NzksMC41NzIgLTAuODczLDAuODUzYy0wLjA1NywwLjA1MyAtMC4xMDksMC4xMDUgLTAuMTY2LDAuMTU3Yy0wLjMyMiwwLjMwNSAtMC42NTQsMC42MSAtMC45ODYsMC45MDZjLTAuMDI0LDAuMDE5IC0wLjA0OCwwLjA0MyAtMC4wNzEsMC4wNjJjLTIuNjMzLDIuMzQxIC01LjUwMyw0LjM5NCAtOC41NjIsNi4xMmMwLDAuMDAxIC0wLjAwNSwwLjAwMiAtMC4wMDUsMC4wMDNjLTEuMjg1LDAuNzI0IC0yLjU5OSwxLjM4OSAtMy45NDYsMS45OTZjLTAuMTQzLDAuMDY1IC0wLjI5LDAuMTI2IC0wLjQzMiwwLjE4OWMtMC4yNzUsMC4xMjIgLTAuNTU1LDAuMjQxIC0wLjgzLDAuMzU3Yy0wLjE5OSwwLjA4NCAtMC40MDMsMC4xNjUgLTAuNjAyLDAuMjQ1Wm0xOC42ODMsLTMuMTk2bDAsNi42MjNsLTkuMzUzLDBjMy4zMTUsLTEuODczIDYuNDU1LC00LjA4OSA5LjM1MywtNi42MjNabTI1LjM5MSwzNC44OTJsLTQzLjAzMSwwbDAsLTIxLjEyMWw0My4wMzEsMGwwLDIxLjEyMVptMjEuNjExLC02OS4yMjRjMCw4LjI2NCAtMy45MjgsMTYuMTU2IC0xMC41MDcsMjEuMTEyYy00LjEyNiwzLjExMiAtMTEuMDU2LDE0LjkyMiAtMTMuNzg4LDE5Ljg0M2wtMTUuNTkyLDBsMCwtMTkuMTY2YzAsLTAuMjc3IDAuMDEsLTAuNTUzIDAuMDI0LC0wLjgzYzAuMDA1LC0wLjA4MSAwLjAwNSwtMC4xNjIgMC4wMSwtMC4yNDNjMC4wMTQsLTAuMjMzIDAuMDMzLC0wLjQ3MSAwLjA1NiwtMC43MDVjMC4wMSwtMC4xMTQgMC4wMjQsLTAuMjMzIDAuMDM4LC0wLjM1M2MwLjAxOSwtMC4xNTcgMC4wMzgsLTAuMzA5IDAuMDU3LC0wLjQ2N2MwLjAyNCwtMC4xNDMgMC4wNDMsLTAuMjkgMC4wNjcsLTAuNDMzYzAuMDE0LC0wLjA3NyAwLjAyOCwtMC4xNTMgMC4wNDIsLTAuMjI5YzAuMDU3LC0wLjMzNCAwLjEyOCwtMC42NjcgMC4yMDQsLTAuOTkxYzAsLTAuMDE1IDAuMDA1LC0wLjAyOSAwLjAxLC0wLjA0M2MwLjQ2OSwtMS45NzggMS4yNjIsLTMuODU2IDIuMzI5LC01LjU2NmMwLjE4LC0wLjI5MSAwLjM3LC0wLjU3MiAwLjU2NCwtMC44NTNjMC4wNTIsLTAuMDcyIDAuMTA1LC0wLjE0MyAwLjE1MiwtMC4yMTVjMC4wODUsLTAuMTEgMC4xNjYsLTAuMjI0IDAuMjUxLC0wLjMzM2MwLjA5NSwtMC4xMjQgMC4xOSwtMC4yNDggMC4yOSwtMC4zNzJjMC4wNjYsLTAuMDgxIDAuMTI4LC0wLjE1NyAwLjE5NCwtMC4yMzhjMC4xNDcsLTAuMTgyIDAuMzA0LC0wLjM1OCAwLjQ2LC0wLjUzNGMwLjA0MywtMC4wNTMgMC4wOSwtMC4xIDAuMTM4LC0wLjE1M2MwLjE3MSwtMC4xODYgMC4zNDYsLTAuMzcxIDAuNTIyLC0wLjU1M2MwLjAwNCwtMC4wMDQgMC4wMTQsLTAuMDA5IDAuMDE5LC0wLjAxNGMwLjIwNCwtMC4yMDUgMC40MDgsLTAuNDA1IDAuNjIxLC0wLjZjMC4wMTQsLTAuMDEgMC4wMjgsLTAuMDI0IDAuMDQzLC0wLjAzNGMwLjY0LC0wLjU4NiAxLjMyMywtMS4xMjQgMi4wNDQsLTEuNjE1YzAuMDE0LC0wLjAxIDAuMDI5LC0wLjAxOSAwLjAzOCwtMC4wMjljMi45NSwtMS45OTcgNi40OTgsLTMuMTY0IDEwLjMxMiwtMy4xNjRsMC42OTIsMGMxLjk2NCwwIDMuNTU4LC0xLjYwMSAzLjU1OCwtMy41NzRjMCwtMS45NzMgLTEuNTk0LC0zLjU3NSAtMy41NTgsLTMuNTc1bC0wLjY5MiwwYy0yLjIxNSwwIC00LjM2OSwwLjI4NiAtNi40MTgsMC44MmMwLjE2NiwtMS43NzggMC4yNTIsLTMuNTYgMC4yNTIsLTUuMzQ3YzAsLTUuMjA0IC0wLjcwMiwtMTAuMzU2IC0yLjA4NywtMTUuMzIxYy0yLjYxNCwtOS4zNzQgLTcuNTA5LC0xNy43NzEgLTE0LjI4NywtMjQuNjA1Yy0wLjQ3NSwtMC40NzcgLTAuOTU4LC0wLjk0OSAtMS40NTIsLTEuNDExbDAsLTQyLjA2MWMwLC0yLjgyMiAyLjI4NiwtNS4xNjIgNS4wOSwtNS4yMTRjMS4zNTIsLTAuMDI0IDIuNjQ3LDAuNSAzLjY0NywxLjQ5MmMxLjA0OSwxLjAzNCAxLjY1MSwyLjQ2NCAxLjY1MSwzLjkyMmwwLDMyLjgxMWMwLDEuOTc4IDEuNTk0LDMuNTc0IDMuNTU4LDMuNTc0YzEuOTYzLDAgMy41NTcsLTEuNTk2IDMuNTU3LC0zLjU3NGwwLC0yNC4yMTRjMCwtMi44NzggMi4zMjksLTUuMjE4IDUuMTk0LC01LjIxOGMyLjg2NSwwIDUuMTk0LDIuMzQgNS4xOTQsNS4yMThsLTAuMDA1LDY3LjM0M2MwLDEuOTc4IDEuNTk0LDMuNTc0IDMuNTU4LDMuNTc0YzEuOTYzLDAgMy41NTcsLTEuNTk2IDMuNTU3LC0zLjU3NGwwLC0yOS40OGMwLC0wLjA0MyAwLjAwNSwtMC4wOTEgMC4wMDUsLTAuMTM4YzAsLTIuODc0IDIuMzI5LC01LjIxOSA1LjE5NCwtNS4yMTljMi44NjUsMCA1LjE5NCwyLjM0NSA1LjE5NCw1LjIxOWwwLDQ1LjMzWiIgc3R5bGU9ImZpbGw6IzQ0NDtmaWxsLXJ1bGU6bm9uemVybzsiLz48cGF0aCBkPSJNNDYuNjg5LDU3LjkyOWMtMC4wNDYsLTAuMjI5IC0wLjExNCwtMC40NTcgLTAuMjAzLC0wLjY3MmMtMC4wODksLTAuMjE0IC0wLjE5OSwtMC40MTkgLTAuMzI3LC0wLjYxNWMtMC4xMjgsLTAuMTk1IC0wLjI3OCwtMC4zODEgLTAuNDQxLC0wLjU0M2MtMC4xNjQsLTAuMTY3IC0wLjM0OSwtMC4zMTUgLTAuNTQxLC0wLjQ0M2MtMC4xOTUsLTAuMTI5IC0wLjQwMiwtMC4yNDMgLTAuNjE2LC0wLjMyOWMtMC4yMTMsLTAuMDkxIC0wLjQzNywtMC4xNTcgLTAuNjY1LC0wLjIwNWMtMC40NTksLTAuMDk1IC0wLjkzMiwtMC4wOTUgLTEuMzksMGMtMC4yMjksMC4wNDggLTAuNDUyLDAuMTE0IC0wLjY2NiwwLjIwNWMtMC4yMTMsMC4wODYgLTAuNDIsMC4yIC0wLjYxNiwwLjMyOWMtMC4xOTEsMC4xMjggLTAuMzczLDAuMjc2IC0wLjU0LDAuNDQzYy0wLjE2NCwwLjE2MiAtMC4zMSwwLjM0OCAtMC40NDEsMC41NDNjLTAuMTI5LDAuMTk2IC0wLjIzOSwwLjQwMSAtMC4zMjcsMC42MTVjLTAuMDg5LDAuMjE1IC0wLjE1NywwLjQ0MyAtMC4yMDMsMC42NzJjLTAuMDQ3LDAuMjI5IC0wLjA3MSwwLjQ2MiAtMC4wNzEsMC42OTZjMCwwLjIzMyAwLjAyNCwwLjQ2NyAwLjA3MSwwLjdjMC4wNDYsMC4yMjkgMC4xMTQsMC40NTMgMC4yMDMsMC42NjhjMC4wODgsMC4yMTQgMC4xOTgsMC40MjQgMC4zMjcsMC42MTljMC4xMzEsMC4xOTEgMC4yNzcsMC4zNzcgMC40NDEsMC41NDNjMC4xNjcsMC4xNjIgMC4zNDgsMC4zMSAwLjU0LDAuNDQ0YzAuMTk2LDAuMTI4IDAuNDAzLDAuMjM4IDAuNjE2LDAuMzI4YzAuMjE0LDAuMDkxIDAuNDM3LDAuMTU4IDAuNjY2LDAuMjA1YzAuMjMxLDAuMDQzIDAuNDYyLDAuMDY3IDAuNjk3LDAuMDY3YzAuMjMxLDAgMC40NjIsLTAuMDI0IDAuNjkzLC0wLjA2N2MwLjIyOCwtMC4wNDcgMC40NTIsLTAuMTE0IDAuNjY1LC0wLjIwNWMwLjIxNCwtMC4wOSAwLjQyMSwtMC4yIDAuNjE2LC0wLjMyOGMwLjE5MiwtMC4xMzQgMC4zNzcsLTAuMjgyIDAuNTQxLC0wLjQ0NGMwLjE2MywtMC4xNjYgMC4zMTMsLTAuMzUyIDAuNDQxLC0wLjU0M2MwLjEyOCwtMC4xOTUgMC4yMzgsLTAuNDA1IDAuMzI3LC0wLjYxOWMwLjA4OSwtMC4yMTUgMC4xNTcsLTAuNDM5IDAuMjAzLC0wLjY2OGMwLjA0NiwtMC4yMzMgMC4wNjcsLTAuNDY3IDAuMDY3LC0wLjdjMCwtMC4yMzQgLTAuMDIxLC0wLjQ2NyAtMC4wNjcsLTAuNjk2WiIgc3R5bGU9ImZpbGw6IzQ0NDtmaWxsLXJ1bGU6bm9uemVybzsiLz48cGF0aCBkPSJNMTUxLjcsNTcuOTI5Yy0wLjA0MywtMC4yMjkgLTAuMTE0LC0wLjQ1NyAtMC4xOTksLTAuNjcyYy0wLjA5LC0wLjIxNCAtMC4yLC0wLjQxOSAtMC4zMjgsLTAuNjE1Yy0wLjEyOCwtMC4xOTUgLTAuMjc5LC0wLjM4MSAtMC40NDEsLTAuNTQzYy0wLjE3MSwtMC4xNjcgLTAuMzUxLC0wLjMxNCAtMC41NDEsLTAuNDQzYy0wLjE5OSwtMC4xMjkgLTAuNDAzLC0wLjI0MyAtMC42MTYsLTAuMzI5Yy0wLjIxNCwtMC4wOTEgLTAuNDM3LC0wLjE1NyAtMC42NjQsLTAuMjA1Yy0wLjQ2LC0wLjA5NSAtMC45MzUsLTAuMDk1IC0xLjM5NSwwYy0wLjIyNywwLjA0OCAtMC40NSwwLjExNCAtMC42NjQsMC4yMDVjLTAuMjEzLDAuMDg2IC0wLjQyMiwwLjIgLTAuNjE2LDAuMzI5Yy0wLjE5NSwwLjEyOSAtMC4zNzUsMC4yNzYgLTAuNTQxLDAuNDQzYy0wLjE2MSwwLjE2MiAtMC4zMTMsMC4zNDggLTAuNDQxLDAuNTQzYy0wLjEyOCwwLjE5NiAtMC4yMzcsMC40MDEgLTAuMzI4LDAuNjE1Yy0wLjA4NSwwLjIxNSAtMC4xNTYsMC40NDMgLTAuMTk5LDAuNjcyYy0wLjA0NywwLjIyOSAtMC4wNzEsMC40NjIgLTAuMDcxLDAuNjk2YzAsMC4yMzMgMC4wMjQsMC40NjcgMC4wNzEsMC43YzAuMDQzLDAuMjI5IDAuMTE0LDAuNDUzIDAuMTk5LDAuNjY4YzAuMDkxLDAuMjE0IDAuMiwwLjQyNCAwLjMyOCwwLjYxOWMwLjEyOCwwLjE5MSAwLjI4LDAuMzc3IDAuNDQxLDAuNTQzYzAuMTY2LDAuMTYyIDAuMzQ2LDAuMzE1IDAuNTQxLDAuNDQ0YzAuMTk0LDAuMTI4IDAuNDAzLDAuMjM4IDAuNjE2LDAuMzI4YzAuMjE0LDAuMDkxIDAuNDM3LDAuMTU4IDAuNjY0LDAuMjA1YzAuMjI4LDAuMDQzIDAuNDY1LDAuMDcyIDAuNjk4LDAuMDcyYzAuMjMyLDAgMC40NjQsLTAuMDI5IDAuNjk3LC0wLjA3MmMwLjIyNywtMC4wNDcgMC40NSwtMC4xMTQgMC42NjQsLTAuMjA1YzAuMjEzLC0wLjA5IDAuNDE3LC0wLjIgMC42MTcsLTAuMzI4YzAuMTg5LC0wLjEyOSAwLjM2OSwtMC4yODIgMC41NCwtMC40NDRjMC4xNjIsLTAuMTY2IDAuMzEzLC0wLjM1MiAwLjQ0MSwtMC41NDNjMC4xMjgsLTAuMTk1IDAuMjM4LC0wLjQwNSAwLjMyOCwtMC42MTljMC4wODUsLTAuMjE1IDAuMTU2LC0wLjQzOSAwLjE5OSwtMC42NjhjMC4wNDcsLTAuMjMzIDAuMDcxLC0wLjQ2NyAwLjA3MSwtMC43YzAsLTAuMjM0IC0wLjAyNCwtMC40NjcgLTAuMDcxLC0wLjY5NloiIHN0eWxlPSJmaWxsOiM0NDQ7ZmlsbC1ydWxlOm5vbnplcm87Ii8+PC9zdmc+);
32
+ }
33
+
34
+ .coronabar-notice .cn-notice-text {
35
+ margin-right: 2em;
36
+ margin-left: 2em;
37
+ }
38
+
39
+ .coronabar-notice .cn-notice-text p:last-child {
40
+ margin-bottom: 0;
41
+ }
42
+
43
+ .coronabar-notice .cn-notice-actions {
44
+ border-left: 1px solid #999;
45
+ border-right: 1px solid #999;
46
+ margin-left: 0;
47
+ margin-right: 0;
48
+ padding: 0.25em 2em;
49
+ text-align: center;
50
+ min-width: 140px;
51
+ }
52
+
53
+ .coronabar-notice .cn-notice-actions .button {
54
+ display: inline-block;
55
+ margin: 2px 0;
56
+ }
57
+
58
+ .coronabar-notice .cn-notice-text h3 {
59
+ margin-top: 0;
60
+ }
61
+
62
+ .coronabar-notice .cn-notice-text strong {
63
+ color: #000;
64
+ }
65
+
66
+ .coronabar-notice .cn-notice-icon svg path {
67
+ fill: #666 !important;
68
+ }
69
+
70
+ @media only screen and (max-width: 600px) {
71
+ .coronabar-notice .cn-notice-container {
72
+ flex-direction: column;
73
+ }
74
+
75
+ .coronabar-notice .cn-notice-step {
76
+ flex-direction: column;
77
+ }
78
+
79
+ .coronabar-notice .cn-notice-icon {
80
+ display: none;
81
+ }
82
+
83
+ .coronabar-notice .cn-notice-actions {
84
+ border: none;
85
+ margin: 1em 0 0;
86
+ }
87
+
88
+ .coronabar-notice .cn-notice-text {
89
+ order: -1;
90
+ }
91
+ }
css/admin-notice.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .coronabar-notice{border-left-color:#00a99d;padding-left:0}.coronabar-notice .cn-notice-container{display:flex;align-items:center;padding-top:1em;padding-bottom:1em}.coronabar-notice .cn-notice-step{display:flex;align-items:center}.coronabar-notice .step-no,.coronabar-notice .step-yes{display:none}.coronabar-notice .cn-notice-icon span{margin-left:2em;margin-right:2em;width:55px;height:55px;display:block;background-position:center center;background-repeat:no-repeat;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxOTEgMTgzIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MjsiPjxwYXRoIGQ9Ik0xNzQuNDY4LDQ3LjcyNmMtMS44NTUsMCAtMy42MTUsMC40MTQgLTUuMTk0LDEuMTU4bDAsLTI2LjUxNmMwLC02LjgyIC01LjUyMiwtMTIuMzY3IC0xMi4zMDksLTEyLjM2N2MtMS45NTQsMCAtMy44MDQsMC40NTggLTUuNDQ1LDEuMjc3Yy0wLjUwMywtMi40NTkgLTEuNzI3LC00Ljc1NiAtMy41MzQsLTYuNTMzYy0yLjM3NywtMi4zNDUgLTUuNDk4LC0zLjYwMyAtOC43NjEsLTMuNTM2Yy02LjY1NSwwLjEyNCAtMTIuMDcyLDUuNjcxIC0xMi4wNzIsMTIuMzYybDAsMS45ODJjLTEuNTc5LC0wLjc0MyAtMy4zMzksLTEuMTU4IC01LjE5NCwtMS4xNThjLTYuNzg3LDAgLTEyLjMxMyw1LjU0NyAtMTIuMzEzLDEyLjM2N2wwLDUuNTljLTEuNTEzLC0wLjcxNSAtMy4xODgsLTEuMTMgLTQuOTU3LC0xLjE2OGMtMy4yNzgsLTAuMDYyIC02LjM4NCwxLjE5NyAtOC43NjEsMy41NDFjLTAuMDc2LDAuMDcyIC0wLjE0NywwLjE1MyAtMC4yMjMsMC4yMjljLTAuMDcxLC0wLjA3NiAtMC4xNDIsLTAuMTUzIC0wLjIxMywtMC4yMjRjLTIuMzc3LC0yLjM0OSAtNS40OTMsLTMuNjA4IC04Ljc3MSwtMy41NDFjLTEuNzY0LDAuMDMzIC0zLjQ0MywwLjQ0OCAtNC45NTYsMS4xNjNsMCwtNS41OWMwLC02LjgyIC01LjUyMSwtMTIuMzY3IC0xMi4zMDksLTEyLjM2N2MtMS44NTUsMCAtMy42MTQsMC40MTUgLTUuMTk0LDEuMTU4bDAsLTEuOTgyYzAsLTYuNjkxIC01LjQxNywtMTIuMjM5IC0xMi4wNzIsLTEyLjM2MmMtMy4yNzUsLTAuMDY3IC02LjM4NywxLjE5MSAtOC43NjQsMy41MzZjLTEuODA0LDEuNzc3IC0zLjAzMSw0LjA3NCAtMy41MzEsNi41MzNjLTEuNjQzLC0wLjgxOSAtMy40OTIsLTEuMjc3IC01LjQ0NywtMS4yNzdjLTYuNzg3LDAgLTEyLjMwOSw1LjU0NyAtMTIuMzA5LDEyLjM2N2wwLDI2LjUxNmMtMS41NzksLTAuNzQ0IC0zLjMzOSwtMS4xNTggLTUuMTk0LC0xLjE1OGMtNi43ODcsMCAtMTIuMzA5LDUuNTUyIC0xMi4zMDksMTIuMzY3bDAsNDUuMzNjMCwxMC40OTkgNC45OTIsMjAuNTMxIDEzLjM1MiwyNi44MzFjMS45OTQsMS41MDEgNi43OTQsOC44MzggMTAuMTM1LDE0LjU0OWMtMS4xMTYsMC42MDMgLTEuODc0LDEuNzg3IC0xLjg3NCwzLjE0OGwwLDI4LjI2OWMwLDEuOTc1IDEuNTkzLDMuNTc1IDMuNTU4LDMuNTc1bDUwLjE0NiwwYzEuOTY0LDAgMy41NTgsLTEuNiAzLjU1OCwtMy41NzRsLTAuMDAxLC0yNS45MjVjMy45NjYsMC44NzYgOC4wNSwxLjMyNiAxMi4xOTUsMS4zMjZjNC4xNDYsMCA4LjIzNSwtMC40NTUgMTIuMiwtMS4zMzVsMCwyNS45MzRjMCwxLjk3NCAxLjU4OSwzLjU3NCAzLjU1OCwzLjU3NGw1MC4xNDYsMGMxLjk2NCwwIDMuNTU3LC0xLjYgMy41NTcsLTMuNTc0bDAsLTI4LjI3YzAsLTEuMzYxIC0wLjc1OSwtMi41NDUgLTEuODczLC0zLjE0OGMzLjMzOSwtNS43MSA4LjEzOSwtMTMuMDQ4IDEwLjEzMSwtMTQuNTQ5YzguMzYzLC02LjMgMTMuMzUzLC0xNi4zMzIgMTMuMzUzLC0yNi44MzFsLTAuMDAxLC00NS4zM2MwLC02LjgxNSAtNS41MjEsLTEyLjM2NyAtMTIuMzA4LC0xMi4zNjdabS01Mi41MDksLTI2LjE4MmMyLjg2NSwwIDUuMTk0LDIuMzQ0IDUuMTk0LDUuMjE4bDAsMjMuMTc1Yy0wLjQ0MSwtMC4zIC0wLjg4MiwtMC41OTEgLTEuMzI4LC0wLjg3MmMtMC4wOSwtMC4wNTcgLTAuMTc1LC0wLjExNCAtMC4yNjUsLTAuMTY3Yy0wLjUwMywtMC4zMTkgLTEuMDExLC0wLjYyOSAtMS41MjMsLTAuOTI5Yy0wLjA3NiwtMC4wNDMgLTAuMTQ3LC0wLjA4NiAtMC4yMjMsLTAuMTI5Yy0wLjUzMSwtMC4zMDUgLTEuMDY3LC0wLjYxIC0xLjYwOCwtMC45Yy0wLjAzMywtMC4wMTUgLTAuMDYyLC0wLjAyOSAtMC4wOSwtMC4wNDhjLTAuNTQxLC0wLjI5MSAtMS4wOTEsLTAuNTY3IC0xLjYzNiwtMC44MzljLTAuMDUzLC0wLjAyNCAtMC4xLC0wLjA0OCAtMC4xNDgsLTAuMDcxYy0wLjU0LC0wLjI2NyAtMS4wOSwtMC41MjUgLTEuNjQxLC0wLjc2OGMtMC4wODUsLTAuMDM4IC0wLjE3LC0wLjA4MSAtMC4yNTEsLTAuMTE0Yy0wLjUzNiwtMC4yMzggLTEuMDc3LC0wLjQ2NyAtMS42MjIsLTAuNjg2Yy0wLjAxNSwtMC4wMSAtMC4wMzQsLTAuMDE5IC0wLjA1MiwtMC4wMjRsLTAuMDAxLC0xNy42MjhjMCwtMi44NzQgMi4zMjksLTUuMjE4IDUuMTk0LC01LjIxOFptLTIxLjA0NiwxOC4yOGMxLjAwMSwtMC45ODYgMi4yODcsLTEuNTE1IDMuNjQzLC0xLjQ5MWMyLjI2OCwwLjA0MyA0LjE5OCwxLjU4MiA0Ljg1MywzLjY2Yy0wLjExNCwtMC4wMjkgLTAuMjMzLC0wLjA1NyAtMC4zNTEsLTAuMDg2Yy0wLjE4NSwtMC4wNDMgLTAuMzc1LC0wLjA5MSAtMC41NiwtMC4xMzNjLTAuMTgsLTAuMDQzIC0wLjM2MSwtMC4wODEgLTAuNTM2LC0wLjEyYy0wLjE5LC0wLjA0MiAtMC4zNzksLTAuMDg1IC0wLjU3NCwtMC4xMjNjLTAuMTc1LC0wLjAzOSAtMC4zNTYsLTAuMDc3IC0wLjUzNiwtMC4xMWMtMC4xOTQsLTAuMDM4IC0wLjM4NCwtMC4wNzYgLTAuNTc5LC0wLjExNGMtMC4xNzUsLTAuMDM0IC0wLjM1NSwtMC4wNjcgLTAuNTM2LC0wLjEwMWMtMC4xOTQsLTAuMDMzIC0wLjM4OSwtMC4wNjYgLTAuNTgzLC0wLjFjLTAuMTgsLTAuMDI4IC0wLjM2MSwtMC4wNTcgLTAuNTQxLC0wLjA4NWMtMC4xOTQsLTAuMDM0IC0wLjM4OSwtMC4wNjIgLTAuNTgzLC0wLjA5MWMtMC4xOCwtMC4wMjkgLTAuMzYxLC0wLjA1MiAtMC41NDEsLTAuMDc2Yy0wLjE5OSwtMC4wMjkgLTAuMzk0LC0wLjA1NyAtMC41OTMsLTAuMDgxYy0wLjE4LC0wLjAyNCAtMC4zNiwtMC4wNDMgLTAuNTQxLC0wLjA2N2MtMC4xOTksLTAuMDI0IC0wLjM5MywtMC4wNDMgLTAuNTkzLC0wLjA2N2MtMC4xOCwtMC4wMTkgLTAuMzY1LC0wLjAzOCAtMC41NDUsLTAuMDUyYy0wLjE5OSwtMC4wMTkgLTAuMzk4LC0wLjAzOCAtMC41OTgsLTAuMDU3Yy0wLjA5NSwtMC4wMDUgLTAuMTk0LC0wLjAxOSAtMC4yOTQsLTAuMDI0YzAuMTc2LC0wLjI0MyAwLjM3NSwtMC40NjcgMC41ODgsLTAuNjgyWm0yLjU5NSwxNC45MTJjMS45MDIsLTAuMTU3IDMuMzQ0LC0xLjc5MiAzLjI2MywtMy43MDhjLTAuMDQyLC0xLjA0MyAtMC41MjYsLTEuOTYzIC0xLjI2MSwtMi41ODdjMS4xOTUsMC4yNDMgMi4zNzYsMC41MTkgMy41NDMsMC44NDNjMTQuODIzLDQuMTQyIDI2Ljk0NywxNS4wNiAzMi41OTEsMjkuNzUybC0zLjAwMiwwYy0xLjU3NSwwIC0yLjkzNiwwLjkxIC0zLjU0OCwyLjM2OWMtMC4wMSwwLjAxNCAtMC4wMTUsMC4wMjggLTAuMDE5LDAuMDQyYy0wLjU5OCwxLjQ2OCAtMC4yNzUsMy4wNzkgMC44NDksNC4yMDhsMC44MTEsMC44MTVjMC44MiwwLjgyNSAxLjI3MSwxLjkyMSAxLjI3MSwzLjA4OGMwLDEuMTY4IC0wLjQ1MSwyLjI2NCAtMS4yNjYsMy4wODRjLTAuODAyLDAuODA1IC0xLjg2OSwxLjI0OCAtMy4wMDgsMS4yNDhjLTEuMTM4LDAgLTIuMjAxLC0wLjQ0MyAtMy4wMDIsLTEuMjQzbC0xLjk3MywtMS45ODhjLTIuNDM0LC0yLjQ0NCAtNS41MTIsLTMuOTk4IC04Ljg5NCwtNC40ODljLTEuNTEzLC0wLjIyNCAtMy4wMDMsMC41NTggLTMuNjksMS45MzVjLTAuNjg4LDEuMzcyIC0wLjQxOCwzLjAzNiAwLjY2NCw0LjEyN2wwLjU1LDAuNTUzYzEuNzUsMS43NTggMi43MTgsNC4wOTggMi43MTgsNi41ODZsMCwyLjg1YzAsMi4xNDkgMS43MzYsMy44OTMgMy44NywzLjg5M2MwLjExOSwwIDAuMjE0LDAuMDY3IDAuMjYxLDAuMTcyYzAuMDQ4LDAuMTE0IDAuMDI0LDAuMjI5IC0wLjA2MSwwLjMxNGwtMi43NjEsMi43ODhjLTIuMDk2LDIuMTE2IC0zLjkzNyw0LjQ4OSAtNS40NjksNy4wNTNsLTIuNDM4LDQuMDdjLTAuMDA1LDAuMDE0IC0wLjAxNCwwLjAyOSAtMC4wMjQsMC4wNDNsLTMuMDY5LDUuMDk5Yy0xLjAxLDEuNjczIC0xLjU0NiwzLjU5NCAtMS41NDYsNS41NDdsMCwwLjE1OGMwLDAuODg2IC0wLjcxNiwxLjYxMSAtMS42MDgsMS42MTFjLTAuOTcyLDAgLTEuODUsLTAuMzYzIC0yLjUzMywtMS4wNDljLTAuNjg4LC0wLjY5NiAtMS4wNTMsLTEuNTc3IC0xLjA1MywtMi41NWMwLC0yLjc1OSAtMS4wNjcsLTUuMzUxIC0zLjAwNywtNy4yOTZsLTEuMTQzLC0xLjE0OGMtMS45ODMsLTEuOTkyIC0zLjA3NCwtNC42NDIgLTMuMDc0LC03LjQ2M2wwLC03LjMzNGMwLC0yLjkxMiAtMi4zNTcsLTUuMjgxIC01LjI1NSwtNS4yODFsLTAuODY0LDBjLTIuODQxLDAgLTUuMTUxLC0yLjMyMSAtNS4xNTEsLTUuMTc1bDAsLTMuODE4YzAsLTMuMDIxIDIuNDQ4LC01LjQ4IDUuNDYsLTUuNDhsMjAuMzgxLDBjMS45NjksMCAzLjU1OCwtMS42MDEgMy41NTgsLTMuNTc0bDAsLTAuMjA1YzAsLTQuNDE4IC0xLjcxMiwtOC41NzMgLTQuODI0LC0xMS43Yy0wLjUwOCwtMC41MSAtMS4xNTcsLTAuODU4IC0xLjg2NCwtMC45ODZsLTE2LjIxNywtMy4wMjZjLTEuMTQ4LC0wLjIxNSAtMi4zMjksMC4xNTIgLTMuMTU1LDAuOTc3Yy0xLjA5NSwxLjA5MSAtMS42OTgsMi41NDkgLTEuNjk4LDQuMTAzYzAsMS40MjUgLTEuMTUyLDIuNTc4IC0yLjU2NiwyLjU3OGwtMi41LDBjLTAuNTc0LDAgLTEuMDQzLC0wLjQ2NyAtMS4wNDMsLTEuMDQ4bDAsLTMuMzc1YzAsLTIuNTMgMC45NzcsLTQuOTA4IDIuNzU2LC02LjY5bDEuNDYxLC0xLjQ2OGMxLjAyOSwtMS4wNDQgMS41OTMsLTIuNDIxIDEuNTkzLC0zLjg4NGwwLC0wLjUwNWMwLC0wLjg3MyAwLjcwNywtMS41ODMgMS41NzUsLTEuNTgzYzAuMDk1LDAgMC4xOTUsLTAuMDA0IDAuMjg5LC0wLjAwOWwxNS4xMjIsLTEuMjQ0Wm0tMTIuODE2LDI0LjQ5MWMxLjM4LC0xLjIzOSAyLjQwOSwtMi44NjkgMi45MDcsLTQuNzE0bDExLjgxMSwyLjIwMmMwLjYxMiwwLjc2MyAxLjA5MSwxLjYxMSAxLjQzNywyLjUxMmwtMTYuMTU1LDBabS0zLjgzMywtNDAuODk0bDAuMDk1LDBjMS4zMTQsMCAyLjU3MSwwLjUyOSAzLjU0OCwxLjQ5NmMwLjIxMywwLjIxIDAuNDEzLDAuNDM5IDAuNTg4LDAuNjgyYy0wLjAyOCwwIC0wLjA1NywwLjAwNCAtMC4wODEsMC4wMDRjLTAuMTk5LDAuMDIgLTAuMzkzLDAuMDM5IC0wLjU5MiwwLjA1OGMtMC4xOTUsMC4wMTkgLTAuMzg1LDAuMDMzIC0wLjU3OSwwLjA1N2MtMC4xOTksMC4wMTkgLTAuMzk0LDAuMDQzIC0wLjU4OCwwLjA2N2MtMC4xOTUsMC4wMjMgLTAuMzg5LDAuMDQyIC0wLjU3OSwwLjA2NmMtMC4xOTksMC4wMjQgLTAuMzk0LDAuMDUzIC0wLjU4OCwwLjA4MWMtMC4xOTUsMC4wMjQgLTAuMzg0LDAuMDUzIC0wLjU3OSwwLjA4MWMtMC4xOTQsMC4wMjkgLTAuMzg5LDAuMDYyIC0wLjU4MywwLjA5MWMtMC4xOSwwLjAyOCAtMC4zODQsMC4wNjIgLTAuNTc5LDAuMDk1Yy0wLjE5LDAuMDM0IC0wLjM4NCwwLjA2NyAtMC41NzksMC4xYy0wLjE4OSwwLjAzOCAtMC4zODQsMC4wNzIgLTAuNTc0LDAuMTA1Yy0wLjE5NCwwLjAzOCAtMC4zODQsMC4wNzYgLTAuNTc4LDAuMTE5Yy0wLjE5LDAuMDM4IC0wLjM4LDAuMDc2IC0wLjU3NCwwLjExNWMtMC4xOSwwLjA0MiAtMC4zOCwwLjA4NSAtMC41NjksMC4xMjhjLTAuMTk1LDAuMDQzIC0wLjM4NSwwLjA4NiAtMC41NzQsMC4xMjljLTAuMTksMC4wNDggLTAuMzgsMC4wOSAtMC41NywwLjEzOGMtMC4xMDksMC4wMjkgLTAuMjE4LDAuMDUzIC0wLjMyNywwLjA4MWMwLjY0NSwtMi4wOTcgMi41ODEsLTMuNjUgNC44NjIsLTMuNjkzWm0tMjIuNTk3LC0xMS41NjZjMCwtMi44NzkgMi4zMjksLTUuMjI0IDUuMTk0LC01LjIyNGMyLjg2NSwwIDUuMTk0LDIuMzQ1IDUuMTk0LDUuMjE5bDAsMTYuNzg5YzAsMC4yODYgMC4wMzMsMC41NjcgMC4wOTksMC44MzRjLTAuMDA0LDAgLTAuMDA5LDAgLTAuMDA5LDAuMDA1Yy0wLjU4OCwwLjIzMyAtMS4xNzIsMC40ODEgLTEuNzUsMC43MzljLTAuMDksMC4wMzggLTAuMTc2LDAuMDc2IC0wLjI2NiwwLjExNGMtMC41NSwwLjI0OCAtMS4xLDAuNTA1IC0xLjY0NiwwLjc3MmMtMC4wOTksMC4wNDggLTAuMjA0LDAuMSAtMC4zMDMsMC4xNDhjLTAuNTQ2LDAuMjcxIC0xLjA4NywwLjU0OCAtMS42MjMsMC44MzRjLTAuMDgsMC4wNDMgLTAuMTYxLDAuMDg1IC0wLjIzNywwLjEyOGMtMC41NTksMC4zMDUgLTEuMTEsMC42MSAtMS42NiwwLjkzNGMtMC4wMDUsMC4wMDUgLTAuMDE0LDAuMDA1IC0wLjAxOSwwLjAxYy0wLjU1LDAuMzI0IC0xLjA5MSwwLjY1OCAtMS42MzIsMS4wMDFjLTAuMDgsMC4wNDcgLTAuMTU2LDAuMDk1IC0wLjIzNywwLjE0N2MtMC4zNywwLjIzOSAtMC43NCwwLjQ4MiAtMS4xMDUsMC43MjVsMCwtMjMuMTc1Wm0tNDIuMDA1LDk5Ljc2OGMtNi41NzgsLTQuOTU2IC0xMC41MDYsLTEyLjg0OCAtMTAuNTA2LC0yMS4xMTJsMCwtNDUuMzNjMCwtMi44NzQgMi4zMywtNS4yMTkgNS4xOTQsLTUuMjE5YzIuODY1LDAgNS4xOTUsMi4zNDUgNS4xOTUsNS4yMjNjMCwwLjA0MyAwLjAwNSwwLjA4NiAwLjAwNiwwLjEyOWwwLDI5LjQ4NWMwLDEuOTc4IDEuNTkzLDMuNTc0IDMuNTU4LDMuNTc0YzEuOTY1LDAgMy41NTcsLTEuNTk2IDMuNTU3LC0zLjU3NGwtMC4wMDYsLTY3LjM0M2MwLC0yLjg3OSAyLjMzLC01LjIxOCA1LjE5NCwtNS4yMThjMi44NjQsMCA1LjE5NCwyLjMzOSA1LjE5NCw1LjIxOGwwLDI0LjIxOWMwLDEuOTczIDEuNTkzLDMuNTc0IDMuNTU4LDMuNTc0YzEuOTY1LDAgMy41NTcsLTEuNjAxIDMuNTU3LC0zLjU3NGwwLC0zMi44MTZjMCwtMS40NTkgMC42MDMsLTIuODg4IDEuNjUyLC0zLjkyMmMxLjAwMiwtMC45OTIgMi4yOTEsLTEuNTE2IDMuNjQzLC0xLjQ5MmMyLjgwOCwwLjA1MiA1LjA5NCwyLjM5MiA1LjA5NCw1LjIxOGwwLDQyLjA2N2MtMC42OTIsMC42NTIgLTEuMzY2LDEuMzIgLTIuMDI1LDIuMDA2Yy0wLjc3OCwwLjgxIC0xLjUzMiwxLjY0OSAtMi4yNjMsMi41MDdjLTAuMDc2LDAuMDkgLTAuMTUyLDAuMTgxIC0wLjIyNywwLjI3MWMtNS43NjQsNi44NjMgLTkuODgxLDE1LjA1IC0xMS44ODQsMjMuODE5Yy0wLjk0OCw0LjE1MSAtMS40MjgsOC40MyAtMS40MjgsMTIuNzI0YzAsMS43ODcgMC4wODgsMy41NjkgMC4yNTQsNS4zNDdjLTIuMDUzLC0wLjUzNCAtNC4yMDQsLTAuODIgLTYuNDIsLTAuODJsLTAuNjkxLDBjLTEuOTY1LDAgLTMuNTU3LDEuNTk3IC0zLjU1NywzLjU3NWMwLDEuOTczIDEuNTkyLDMuNTc0IDMuNTU3LDMuNTc0bDAuNjkxLDBjMy44MTgsMCA3LjM2OCwxLjE2NyAxMC4zMTcsMy4xNjljMC4wMDksMC4wMDUgMC4wMTcsMC4wMDkgMC4wMjUsMC4wMTRjMC43MjcsMC40OTYgMS40MTYsMS4wMzkgMi4wNjMsMS42M2MwLjAwOSwwLjAxIDAuMDE4LDAuMDE0IDAuMDI2LDAuMDI0YzAuNDEsMC4zNzYgMC44MDIsMC43NjcgMS4xNzYsMS4xNzdjMC4wNDIsMC4wNDggMC4wODQsMC4wOTUgMC4xMjUsMC4xMzhjMC4xNjgsMC4xOTEgMC4zMzIsMC4zNzcgMC40OTMsMC41NzJjMC4wNSwwLjA2MiAwLjA5OCwwLjEyNCAwLjE0NywwLjE4NmMwLjEwOCwwLjEzMyAwLjIxMywwLjI2NyAwLjMxNywwLjQwNWMwLjA3OSwwLjEwNSAwLjE1OCwwLjIxIDAuMjM1LDAuMzE1YzAuMDU5LDAuMDgxIDAuMTE3LDAuMTYyIDAuMTc1LDAuMjQ3YzAuMTgyLDAuMjU4IDAuMzYsMC41MjUgMC41MjksMC43OTFjMC4wMDgsMC4wMTUgMC4wMTgsMC4wMjkgMC4wMjcsMC4wNDNjMS4wNjUsMS43MDYgMS44NTMsMy41ODQgMi4zMjQsNS41NTdjMC4wMDQsMC4wMTkgMC4wMDcsMC4wMzggMC4wMTIsMC4wNTJjMC4wNzYsMC4zMjUgMC4xNDIsMC42NDkgMC4yLDAuOTc3YzAuMDE0LDAuMDgxIDAuMDMsMC4xNjIgMC4wNDMsMC4yMzljMC4wMjQsMC4xNDMgMC4wNDUsMC4yODYgMC4wNjUsMC40MjljMC4wMjIsMC4xNTcgMC4wNDIsMC4zMTkgMC4wNiwwLjQ3NmMwLjAxNCwwLjExNSAwLjAyNywwLjIzNCAwLjAzOSwwLjM0OGMwLjAyMiwwLjIzNCAwLjA0LDAuNDY3IDAuMDUzLDAuNzA1YzAuMDA1LDAuMDgxIDAuMDA5LDAuMTYyIDAuMDEyLDAuMjQzYzAuMDEyLDAuMjc3IDAuMDIxLDAuNTUzIDAuMDIxLDAuODNsMCwxOS4xNjZsLTE1LjU5MiwwYy0yLjcyOSwtNC45MjEgLTkuNjYxLC0xNi43MzEgLTEzLjc4OSwtMTkuODQzWm0zOC40OTUsLTEuMTI1Yy0wLjczLDAuNzM0IC0xLjM5NCwxLjUyNSAtMi4wMDIsMi4zNTRsMCwtMC41NDhjMCwtMC4zOSAtMC4wMDksLTAuNzc2IC0wLjAyOCwtMS4xNjJjLTAuMDA1LC0wLjA5NiAtMC4wMDksLTAuMTkxIC0wLjAxNCwtMC4yODZjLTAuMDE5LC0wLjM1MyAtMC4wNDMsLTAuNzAxIC0wLjA4MSwtMS4wNDljLTAuMDA5LC0wLjEzMyAtMC4wMjgsLTAuMjY3IC0wLjA0MywtMC40MDVjLTAuMDIzLC0wLjIxOSAtMC4wNTIsLTAuNDQzIC0wLjA4NSwtMC42NjJjLTAuMDM4LC0wLjI4NiAtMC4wODUsLTAuNTY3IC0wLjEzMywtMC44NDRjLTAuMDIzLC0wLjE1MiAtMC4wNTIsLTAuMyAtMC4wOCwtMC40NTNjLTAuMDQzLC0wLjIyOCAtMC4wOTEsLTAuNDU3IC0wLjE0MywtMC42ODZjLTAuMDA5LC0wLjA0MyAtMC4wMTksLTAuMDg2IC0wLjAyOCwtMC4xMjhjLTAuNTY5LC0yLjUzNiAtMS41MTMsLTQuOTI4IC0yLjc3LC03LjEyYy0wLjAzMywtMC4wNjIgLTAuMDcxLC0wLjEyNCAtMC4xMDUsLTAuMTgxYy0wLjExMywtMC4xOTYgLTAuMjI3LC0wLjM5MSAtMC4zNDYsLTAuNTgyYy0wLjExNCwtMC4xODEgLTAuMjMyLC0wLjM2MiAtMC4zNDYsLTAuNTQzYy0wLjExOSwtMC4xNzYgLTAuMjMzLC0wLjM0OCAtMC4zNTYsLTAuNTI0Yy0wLjEyOCwtMC4xOTEgLTAuMjYxLC0wLjM3NyAtMC4zOTgsLTAuNTYzYy0wLjA2NywtMC4wOSAtMC4xMzMsLTAuMTg1IC0wLjIsLTAuMjc2Yy0wLjIxMywtMC4yODEgLTAuNDMxLC0wLjU1OCAtMC42NTQsLTAuODM0Yy0wLjAzMywtMC4wNDMgLTAuMDcxLC0wLjA4NiAtMC4xMDQsLTAuMTI5Yy0xLjYwMywtMS45MzkgLTMuNDkzLC0zLjY1NSAtNS42MzUsLTUuMDdjLTAuNTA5LC0yLjg3NCAtMC43NjcsLTUuODEgLTAuNzY3LC04Ljc1YzAsLTIuNzc4IDAuMjMxLC01LjU1MiAwLjY4NiwtOC4yNzNjMi40MTEsMC4yODEgNC42NDUsMS4zNTggNi4zODksMy4xMDdsMi4xNzcsMi4xOTJjMS42MDMsMS42MDIgMy43MjgsMi40ODggNS45OTEsMi40ODhjMS43NzQsMCAzLjQzOSwwLjY5MSA0LjY5NiwxLjk1NGwwLjA0MywwLjA0N2MyLjA1OCwyLjA2OSAzLjE5Miw0LjgxNCAzLjE5Miw3LjczNWwwLDQuNDUxYzAsMy43NjUgLTEuNDYxLDcuMzExIC00LjExMyw5Ljk3NWwtNC43NDMsNC43NjVabTEuNjAzLDE3LjI0NmMwLjMwOSwwLjIyNiAwLjYxNywwLjQ1IDAuOTMsMC42N2MwLjEzOCwwLjA5NyAwLjI3LDAuMTk1IDAuNDEzLDAuMjkxYzAuOTIsMC42MzkgMS44NTQsMS4yNSAyLjgwOCwxLjgzYzAuMDMzLDAuMDIgMC4wNjYsMC4wMzkgMC4wOTUsMC4wNTljMC40OTMsMC4yOTkgMC45OTEsMC41ODkgMS40ODksMC44NzJsLTkuMzQsMGwwLC02LjYxOWMwLjA4NiwwLjA3MiAwLjE2NywwLjE0MiAwLjI1MiwwLjIxNGMwLjEzNywwLjEyIDAuMjgsMC4yNDIgMC40MTcsMC4zNmMwLjM0NywwLjI5MyAwLjY5OCwwLjU4MSAxLjA0OSwwLjg2NGMwLjA3NSwwLjA2NCAwLjE1NiwwLjEyOSAwLjIzMiwwLjE5MmMwLjQwMywwLjMyMSAwLjgxMSwwLjYzNSAxLjIxOSwwLjk0NGMwLjE0NywwLjEwOSAwLjI5NCwwLjIxNiAwLjQzNiwwLjMyM1ptLTI4Ljk5MSwzMS45OTFsMCwtMjEuMTIxbDQzLjAzMiwwbDAsMjEuMTIxbC00My4wMzIsMFptODAuNjEzLC0zMS42OTZjLTAuMjIzLDAuMDkgLTAuNDQ2LDAuMTc4IC0wLjY3NCwwLjI2NWMtNS41NSwyLjEzIC0xMS40OTgsMy4yNTggLTE3LjU5OCwzLjI1OGMtMC4zODgsMCAtMC43NzMsLTAuMDA0IC0xLjE2MiwtMC4wMTRjLTAuMTMyLC0wLjAwMyAtMC4yNjEsLTAuMDA5IC0wLjM5MywtMC4wMTNjLTAuMjU2LC0wLjAwNyAtMC41MTMsLTAuMDE2IC0wLjc2OSwtMC4wMjdjLTAuMTU2LC0wLjAwOCAtMC4zMDgsLTAuMDE4IC0wLjQ2NSwtMC4wMjZjLTAuMjMyLC0wLjAxMyAtMC40NiwtMC4wMjYgLTAuNjkyLC0wLjA0MmMtMC4xNjYsLTAuMDEyIC0wLjMyNywtMC4wMjYgLTAuNDg5LC0wLjAzOWMtMC4yMjMsLTAuMDE4IC0wLjQ0NiwtMC4wMzUgLTAuNjY4LC0wLjA1NmMtMC4xNjYsLTAuMDE2IC0wLjMzMiwtMC4wMzMgLTAuNDk5LC0wLjA1MWMtMC4yMTgsLTAuMDIyIC0wLjQzMSwtMC4wNDUgLTAuNjQ1LC0wLjA3Yy0wLjE3LC0wLjAyIC0wLjM0MSwtMC4wNDIgLTAuNTEyLC0wLjA2NGMtMC4yMDksLTAuMDI3IC0wLjQyMiwtMC4wNTQgLTAuNjMxLC0wLjA4NGMtMC4xNywtMC4wMjQgLTAuMzQxLC0wLjA1IC0wLjUxMiwtMC4wNzZjLTAuMjA5LC0wLjAzMSAtMC40MTcsLTAuMDY0IC0wLjYyNiwtMC4wOTljLTAuMTcxLC0wLjAyOCAtMC4zNDIsLTAuMDU3IC0wLjUxMiwtMC4wODdjLTAuMjA5LC0wLjAzNyAtMC40MTMsLTAuMDc0IC0wLjYyMiwtMC4xMTNjLTAuMTY2LC0wLjAzMiAtMC4zMzcsLTAuMDY2IC0wLjUwNywtMC4wOTljLTAuMjA0LC0wLjA0MiAtMC40MTMsLTAuMDg0IC0wLjYxNywtMC4xMjhjLTAuMTcxLC0wLjAzNiAtMC4zMzcsLTAuMDczIC0wLjUwMywtMC4xMWMtMC4yMDgsLTAuMDQ2IC0wLjQxMiwtMC4wOTUgLTAuNjE2LC0wLjE0NGMtMC4xNjYsLTAuMDM5IC0wLjMzMiwtMC4wNzkgLTAuNDk4LC0wLjEyYy0wLjIwOSwtMC4wNTIgLTAuNDEzLC0wLjEwNiAtMC42MTcsLTAuMTZjLTAuMTY2LC0wLjA0MyAtMC4zMjcsLTAuMDg1IC0wLjQ4OSwtMC4xM2MtMC4yMDgsLTAuMDU3IC0wLjQxNywtMC4xMTcgLTAuNjIxLC0wLjE3N2MtMC4xNjEsLTAuMDQ2IC0wLjMxOCwtMC4wOSAtMC40NzQsLTAuMTM3Yy0wLjIxNCwtMC4wNjQgLTAuNDI3LC0wLjEzMiAtMC42NDEsLTAuMTk4Yy0wLjE1MSwtMC4wNDggLTAuMjk4LC0wLjA5NCAtMC40NSwtMC4xNDJjLTAuMjIzLC0wLjA3NCAtMC40NTEsLTAuMTUgLTAuNjc0LC0wLjIyN2MtMC4xMzMsLTAuMDQ2IC0wLjI3LC0wLjA5MSAtMC40MDMsLTAuMTM4Yy0wLjI2MSwtMC4wOTIgLTAuNTIyLC0wLjE4NyAtMC43NzgsLTAuMjgzYy0wLjAxOSwtMC4wMDcgLTAuMDM4LC0wLjAxNCAtMC4wNTcsLTAuMDJjLTAuMDI4LC0wLjAxMyAtMC4wNjEsLTAuMDMgLTAuMDksLTAuMDQxYy0yLjM4MSwtMC44OTQgLTQuNjcyLC0xLjk1OSAtNi44NTksLTMuMTkzYy0wLjAxNCwtMC4wMDYgLTAuMDIzLC0wLjAxMyAtMC4wMzgsLTAuMDJjLTAuMzI3LC0wLjE4NCAtMC42NDksLTAuMzczIC0wLjk3MiwtMC41NjVjLTAuMDc2LC0wLjA0NSAtMC4xNTIsLTAuMDkyIC0wLjIyOCwtMC4xMzhjLTAuMjU2LC0wLjE1NSAtMC41MTIsLTAuMzEyIC0wLjc2MywtMC40NzFjLTAuMTI0LC0wLjA3NiAtMC4yNDIsLTAuMTUzIC0wLjM2NiwtMC4yM2MtMC4yMDQsLTAuMTMyIC0wLjQxMiwtMC4yNjcgLTAuNjE2LC0wLjQwM2MtMC4xNDMsLTAuMDk0IC0wLjI4NSwtMC4xODggLTAuNDIyLC0wLjI4M2MtMC4wMzQsLTAuMDI0IC0wLjA3MiwtMC4wNDcgLTAuMTA1LC0wLjA3MWMtMC4xNDcsLTAuMTAyIC0wLjI5OSwtMC4yMDUgLTAuNDQ2LC0wLjMwOGMtMC4xMzIsLTAuMDkzIC0wLjI2NSwtMC4xODYgLTAuMzk4LC0wLjI4Yy0wLjA4MSwtMC4wNTcgLTAuMTU3LC0wLjExNSAtMC4yMzcsLTAuMTcyYy0wLjEwOSwtMC4wNzkgLTAuMjIzLC0wLjE2IC0wLjMzMiwtMC4yNGMtMC4xMjQsLTAuMDkxIC0wLjI0NywtMC4xODIgLTAuMzY1LC0wLjI3M2MtMC4wOTUsLTAuMDcgLTAuMTksLTAuMTQgLTAuMjgsLTAuMjExYy0wLjEwOSwtMC4wOCAtMC4yMTQsLTAuMTYxIC0wLjMxOCwtMC4yNDJjLTAuMTA5LC0wLjA4NiAtMC4yMjMsLTAuMTcyIC0wLjMzMiwtMC4yNThjLTAuMDk1LC0wLjA3NyAtMC4xOTUsLTAuMTU1IC0wLjI5NCwtMC4yMzNjLTAuMTE0LC0wLjA5IC0wLjIyOCwtMC4xODMgLTAuMzQyLC0wLjI3NGMtMC4wOTUsLTAuMDgxIC0wLjE5LC0wLjE1NyAtMC4yODQsLTAuMjMzYy0wLjEsLTAuMDgxIC0wLjE5NSwtMC4xNjIgLTAuMjk0LC0wLjI0M2MtMC4xMzMsLTAuMTE1IC0wLjI2NiwtMC4yMjkgLTAuMzk5LC0wLjMzOWMtMC4wNzYsLTAuMDY2IC0wLjE1NiwtMC4xMzMgLTAuMjMyLC0wLjIwNWMtMC4wOSwtMC4wNzYgLTAuMTgxLC0wLjE1MiAtMC4yNzEsLTAuMjI4Yy0wLjAyOCwtMC4wMjkgLTAuMDU3LC0wLjA1NyAtMC4wOSwtMC4wODFjMC42NDEsLTEuMzYzIDEuNTE4LC0yLjYyMSAyLjU5NSwtMy43MDNsNC43NDMsLTQuNzY2YzMuOTk0LC00LjAxNyA2LjE5NSwtOS4zNTUgNi4xOTUsLTE1LjAyNmwwLC00LjQ1NmMwLC00LjgyNyAtMS44NzQsLTkuMzY5IC01LjI3NSwtMTIuNzg2bC0wLjA0MiwtMC4wNDhjLTIuNiwtMi42MTEgLTYuMDUzLC00LjA0NiAtOS43MjksLTQuMDQ2Yy0wLjM3LDAgLTAuNzAyLC0wLjEzOCAtMC45NTgsLTAuMzk1bC0yLjE3NywtMi4xOTJjLTIuNjg1LC0yLjY5MyAtNi4wNjIsLTQuNDI4IC05LjczLC01LjAzM2MwLjAwMSwtMC4wMDUgMC4wMDEsLTAuMDA1IDAuMDAyLC0wLjAwOWMwLjE4MywtMC41NzIgMC4zNzcsLTEuMTM1IDAuNTc4LC0xLjY5N2MwLjAyNSwtMC4wNjcgMC4wNDgsLTAuMTM4IDAuMDcyLC0wLjIwNWMwLjE5NCwtMC41MjkgMC4zOTcsLTEuMDU4IDAuNjA4LC0xLjU3N2MwLjAzNiwtMC4wOTEgMC4wNzMsLTAuMTgxIDAuMTEsLTAuMjcyYzAuMjA4LC0wLjUxIDAuNDI0LC0xLjAxNSAwLjY0OCwtMS41MTFjMC4wNDQsLTAuMSAwLjA4NywtMC4xOTUgMC4xMzEsLTAuMjljMC4yMjcsLTAuNDk2IDAuNDYxLC0wLjk4NyAwLjcwMiwtMS40NzNjMC4wNDMsLTAuMDkgMC4wODgsLTAuMTc2IDAuMTMyLC0wLjI2MmMwLjI0OCwtMC40OTYgMC41MDUsLTAuOTg2IDAuNzcsLTEuNDczYzAuMDMzLC0wLjA1NyAwLjA2NywtMC4xMTkgMC4xLC0wLjE3NmMwLjI2MSwtMC40NzYgMC41MzEsLTAuOTQzIDAuODExLC0xLjQxYzAuMDI4LC0wLjA0OCAwLjA1NywtMC4wOTYgMC4wODUsLTAuMTQzYzAuMjg1LC0wLjQ3MiAwLjU3NCwtMC45MzkgMC44NzMsLTEuMzk3YzAuMDU3LC0wLjA4NiAwLjEwOSwtMC4xNzEgMC4xNjYsLTAuMjUyYzAuMjg5LC0wLjQ0NCAwLjU4MywtMC44NzcgMC44ODcsLTEuMzA2YzAuMDY2LC0wLjA5NSAwLjEzOCwtMC4xOTYgMC4yMDQsLTAuMjkxYzAuMzA0LC0wLjQxOSAwLjYwNywtMC44MzQgMC45MiwtMS4yNDRjMC4wNzYsLTAuMDk1IDAuMTQ3LC0wLjE5IDAuMjIzLC0wLjI5YzAuMzE4LC0wLjQxIDAuNjQsLTAuODE1IDAuOTcyLC0xLjIxMWMwLjA2NywtMC4wODYgMC4xMzgsLTAuMTY3IDAuMjA5LC0wLjI1MmMwLjM0MiwtMC40MDUgMC42ODgsLTAuODExIDEuMDQ0LC0xLjIxMWMwLjA0NywtMC4wNTIgMC4wOTksLTAuMTA1IDAuMTQ3LC0wLjE2MmMwLjM0MSwtMC4zNzYgMC42ODMsLTAuNzQzIDEuMDM0LC0xLjEwNmMwLjA2MSwtMC4wNjEgMC4xMTgsLTAuMTIzIDAuMTgsLTAuMTg1YzAuMzYsLTAuMzc3IDAuNzM1LC0wLjc0NCAxLjExLC0xLjEwNmMwLjA4NSwtMC4wODEgMC4xNzEsLTAuMTY3IDAuMjU2LC0wLjI0OGMwLjM2NSwtMC4zNDggMC43NCwtMC42OTEgMS4xMTUsLTEuMDI5YzAuMDk5LC0wLjA4NiAwLjE5NCwtMC4xNzIgMC4yODksLTAuMjU4YzAuMzgsLTAuMzMzIDAuNzY0LC0wLjY1NyAxLjE1MywtMC45ODFjMC4wOTUsLTAuMDc2IDAuMTk0LC0wLjE1OCAwLjI4OSwtMC4yMzljMC4zOTgsLTAuMzE5IDAuNzk3LC0wLjYzOCAxLjIwNSwtMC45NDhjMC4wODUsLTAuMDY3IDAuMTcxLC0wLjEyOSAwLjI1NiwtMC4xOTFjMC40MTMsLTAuMzE0IDAuODMsLTAuNjE5IDEuMjUyLC0wLjkxNWMwLjA2NywtMC4wNDIgMC4xMjgsLTAuMDkgMC4xOTUsLTAuMTMzYzAuNDEyLC0wLjI5MSAwLjgzNCwtMC41NzIgMS4yNTcsLTAuODQ4YzAuMDgsLTAuMDUzIDAuMTYxLC0wLjEwNSAwLjI0MiwtMC4xNTdjMC40MzYsLTAuMjgyIDAuODc3LC0wLjU1MyAxLjMyMywtMC44MmMwLjEwNCwtMC4wNjIgMC4yMDQsLTAuMTI0IDAuMzA4LC0wLjE4NmMwLjQzNywtMC4yNTcgMC44ODIsLTAuNTEgMS4zMjgsLTAuNzUzYzAuMTA5LC0wLjA2MiAwLjIxOSwtMC4xMTkgMC4zMjgsLTAuMTc2YzAuNDU1LC0wLjI0MyAwLjkwNiwtMC40ODIgMS4zNjYsLTAuNzFjMC4xMDQsLTAuMDUzIDAuMjA4LC0wLjEgMC4zMTMsLTAuMTUzYzAuNDc0LC0wLjIyOSAwLjk0OCwtMC40NTcgMS40MjcsLTAuNjcyYzAuMDgxLC0wLjAzOCAwLjE2NywtMC4wNzEgMC4yNDcsLTAuMTA5YzAuNDg0LC0wLjIxIDAuOTY4LC0wLjQyIDEuNDYxLC0wLjYyYzAuMDQ4LC0wLjAxOSAwLjEsLTAuMDM4IDAuMTUyLC0wLjA2MmMwLjUwMywtMC4yIDEuMDE1LC0wLjM5NiAxLjUyNywtMC41NzdjMC4wODYsLTAuMDMzIDAuMTcxLC0wLjA2NiAwLjI1NiwtMC4wOTVjMC41MDMsLTAuMTgxIDEuMDExLC0wLjM0OCAxLjUyMywtMC41MTVjMC4xMDQsLTAuMDMzIDAuMjA5LC0wLjA2NiAwLjMxMywtMC4xYzAuNTAzLC0wLjE1NyAxLjAxNSwtMC4zMDUgMS41MjcsLTAuNDQ4YzAuMTA1LC0wLjAyOCAwLjIxNCwtMC4wNTcgMC4zMTgsLTAuMDg1YzAuNTIyLC0wLjE0MyAxLjA0NCwtMC4yNzIgMS41NjUsLTAuMzk2YzAuMDk1LC0wLjAyNCAwLjE5LC0wLjA0MyAwLjI4NSwtMC4wNjdjMC41NDUsLTAuMTI0IDEuMDkxLC0wLjI0MyAxLjY0MSwtMC4zNDhjMC4wNjIsLTAuMDA5IDAuMTE5LC0wLjAxOSAwLjE4LC0wLjAzM2MwLjU1NSwtMC4xMDUgMS4xMSwtMC4yIDEuNjcsLTAuMjg2YzAuMDQzLC0wLjAwNSAwLjA4NSwtMC4wMTQgMC4xMjgsLTAuMDE5YzAuNTY5LC0wLjA4NiAxLjEzOSwtMC4xNjIgMS43MTcsLTAuMjI5YzAuMDg2LC0wLjAwOSAwLjE2NiwtMC4wMTkgMC4yNTIsLTAuMDI4YzAuNTU5LC0wLjA2MiAxLjExOSwtMC4xMTUgMS42NzksLTAuMTU4YzAuMDk5LC0wLjAwNCAwLjIwNCwtMC4wMTQgMC4zMDMsLTAuMDE5YzAuNTYsLTAuMDQyIDEuMTIsLTAuMDcxIDEuNjc5LC0wLjA5YzAuMDQ4LC0wLjAwNSAwLjA5NSwtMC4wMDUgMC4xMzgsLTAuMDA1YzAuMDcxLDAuMjgxIDAuMTUyLDAuNTU4IDAuMjQ3LDAuODI5bC02LjMwOSwwLjUxNWMtNC42NTMsMC4wOTEgLTguNDI5LDMuODc0IC04LjUxOSw4LjU1bC0wLjk3NywwLjk4MWMtMy4xMjEsMy4xMzYgLTQuODM4LDcuMzExIC00LjgzOCwxMS43NDNsMCwzLjM3OWMwLDQuNTIyIDMuNjYyLDguMTk2IDguMTU4LDguMTk2bDEuNDIzLDBjLTMuMDk3LDIuMzA3IC01LjExMyw2LjAwNSAtNS4xMTMsMTAuMTY1bDAsMy44MThjMCw2LjQ1NyA0Ljk3MSwxMS43NzEgMTEuMjcsMTIuMjgxbDAsNS41MDljMCw0LjczMiAxLjgzMSw5LjE3OCA1LjE2MSwxMi41MTlsMS4xMzgsMS4xNDRjMC42MDMsMC42MSAwLjkyNSwxLjM4MiAwLjkyNSwyLjI0NGMwLDIuODY5IDEuMTE1LDUuNTcyIDMuMTM2LDcuNjA1YzIuMDI1LDIuMDI3IDQuNzEsMy4xNDQgNy41NywzLjE0NGM0LjgwNSwwIDguNzE4LC0zLjkzMiA4LjcxOCwtOC43NjFsMCwtMC4xNThjMCwtMC42NDggMC4xOCwtMS4yODYgMC41MTcsLTEuODQ0bDMuMDUsLTUuMDY2YzAuMDA5LC0wLjAxOSAwLjAxOSwtMC4wMzMgMC4wMzMsLTAuMDUybDIuNDYyLC00LjExM2MxLjIzOCwtMi4wNzMgMi43MjMsLTMuOTg0IDQuNDE2LC01LjY5NWwyLjc2LC0yLjc5MmMyLjExMSwtMi4xMzUgMi43MzMsLTUuMzA5IDEuNTg1LC04LjA5N2MtMC43MTIsLTEuNzExIC0yLjAwMiwtMy4wNSAtMy41ODYsLTMuODI3bDAsLTAuMzQzYzAsLTAuMTI5IC0wLjAwNSwtMC4yNjIgLTAuMDA1LC0wLjM5MWMxLjg5MywxLjMzNCA0LjE1LDIuMDU0IDYuNTE3LDIuMDU0YzMuMDM2LDAgNS44ODcsLTEuMTgyIDguMDM1LC0zLjMzNmMxLjQ3NiwtMS40ODIgMi41LC0zLjI5OCAyLjk5OCwtNS4yOGMwLjAzOCwwLjM3NiAwLjA3MSwwLjc1OCAwLjEsMS4xMzRjMCwwLjAyOSAwLDAuMDUzIDAuMDA1LDAuMDgxYzAuMDI4LDAuNDc3IDAuMDUyLDAuOTUzIDAuMDcxLDEuNDM1YzAuMDA0LDAuMTI4IDAuMDA5LDAuMjU3IDAuMDE0LDAuMzljMC4wMTQsMC41MDEgMC4wMjQsMS4wMDYgMC4wMjQsMS41MTFjMCwxLjQ2OCAtMC4wNjIsMi45MzYgLTAuMTk1LDQuMzk0Yy0wLjEyOCwxLjQ2MyAtMC4zMTgsMi45MTYgLTAuNTc0LDQuMzU2Yy0yLjEzNCwxLjQxIC00LjAyMiwzLjEyNiAtNS42MjEsNS4wNTZjLTAuMDQyLDAuMDUyIC0wLjA4LDAuMSAtMC4xMjMsMC4xNTNjLTAuMjE4LDAuMjY2IC0wLjQzMSwwLjU0MyAtMC42NCwwLjgxOWMtMC4wNzYsMC4wOTYgLTAuMTQ3LDAuMTk2IC0wLjIxOCwwLjI5NmMtMC4xMjgsMC4xNzYgLTAuMjUyLDAuMzUyIC0wLjM3NSwwLjUzM2MtMC4xNTcsMC4yMjQgLTAuMzA4LDAuNDUzIC0wLjQ1NSwwLjY4MmMtMC4wODYsMC4xMjkgLTAuMTcxLDAuMjYyIC0wLjI1MiwwLjM5MWMtMC4xMjMsMC4yIC0wLjI0MiwwLjQgLTAuMzYsMC42Yy0wLjAyOSwwLjA1MyAtMC4wNTcsMC4xIC0wLjA4NiwwLjE0OGMtMS4yNjEsMi4yMDIgLTIuMjE1LDQuNjA4IC0yLjc4NCw3LjE1M2MtMC4wMDksMC4wMzggLTAuMDE5LDAuMDc2IC0wLjAyOCwwLjExNGMtMC4wNDgsMC4yMjkgLTAuMDk1LDAuNDYzIC0wLjE0MywwLjY5NmMtMC4wMjgsMC4xNDMgLTAuMDUyLDAuMjg2IC0wLjA3NiwwLjQzNGMtMC4wNTIsMC4yODEgLTAuMDk1LDAuNTcyIC0wLjEzNywwLjg1OGMtMC4wMjksMC4yMTkgLTAuMDU3LDAuNDQzIC0wLjA4MSwwLjY2MmMtMC4wMTksMC4xMzQgLTAuMDMzLDAuMjY3IC0wLjA0NywwLjQwNWMtMC4wMzMsMC4zNDggLTAuMDU3LDAuNjk2IC0wLjA4MSwxLjA0OWMtMC4wMDUsMC4wOTUgLTAuMDA1LDAuMTkgLTAuMDA5LDAuMjg2Yy0wLjAxOSwwLjM4NiAtMC4wMzQsMC43NzIgLTAuMDM0LDEuMTU4bDAsMi40OTdjLTAuMzE3LDAuMzY3IC0wLjY0NSwwLjcyNCAtMC45ODEsMS4wODJjLTAuMDYyLDAuMDcxIC0wLjEyOSwwLjEzOCAtMC4xOTUsMC4yMDljLTAuMjc1LDAuMjg2IC0wLjU1LDAuNTc3IC0wLjgzLDAuODU4Yy0wLjA2NiwwLjA3MiAtMC4xMzgsMC4xMzggLTAuMjA0LDAuMjA1Yy0wLjI4OSwwLjI5MSAtMC41NzksMC41NzIgLTAuODczLDAuODUzYy0wLjA1NywwLjA1MyAtMC4xMDksMC4xMDUgLTAuMTY2LDAuMTU3Yy0wLjMyMiwwLjMwNSAtMC42NTQsMC42MSAtMC45ODYsMC45MDZjLTAuMDI0LDAuMDE5IC0wLjA0OCwwLjA0MyAtMC4wNzEsMC4wNjJjLTIuNjMzLDIuMzQxIC01LjUwMyw0LjM5NCAtOC41NjIsNi4xMmMwLDAuMDAxIC0wLjAwNSwwLjAwMiAtMC4wMDUsMC4wMDNjLTEuMjg1LDAuNzI0IC0yLjU5OSwxLjM4OSAtMy45NDYsMS45OTZjLTAuMTQzLDAuMDY1IC0wLjI5LDAuMTI2IC0wLjQzMiwwLjE4OWMtMC4yNzUsMC4xMjIgLTAuNTU1LDAuMjQxIC0wLjgzLDAuMzU3Yy0wLjE5OSwwLjA4NCAtMC40MDMsMC4xNjUgLTAuNjAyLDAuMjQ1Wm0xOC42ODMsLTMuMTk2bDAsNi42MjNsLTkuMzUzLDBjMy4zMTUsLTEuODczIDYuNDU1LC00LjA4OSA5LjM1MywtNi42MjNabTI1LjM5MSwzNC44OTJsLTQzLjAzMSwwbDAsLTIxLjEyMWw0My4wMzEsMGwwLDIxLjEyMVptMjEuNjExLC02OS4yMjRjMCw4LjI2NCAtMy45MjgsMTYuMTU2IC0xMC41MDcsMjEuMTEyYy00LjEyNiwzLjExMiAtMTEuMDU2LDE0LjkyMiAtMTMuNzg4LDE5Ljg0M2wtMTUuNTkyLDBsMCwtMTkuMTY2YzAsLTAuMjc3IDAuMDEsLTAuNTUzIDAuMDI0LC0wLjgzYzAuMDA1LC0wLjA4MSAwLjAwNSwtMC4xNjIgMC4wMSwtMC4yNDNjMC4wMTQsLTAuMjMzIDAuMDMzLC0wLjQ3MSAwLjA1NiwtMC43MDVjMC4wMSwtMC4xMTQgMC4wMjQsLTAuMjMzIDAuMDM4LC0wLjM1M2MwLjAxOSwtMC4xNTcgMC4wMzgsLTAuMzA5IDAuMDU3LC0wLjQ2N2MwLjAyNCwtMC4xNDMgMC4wNDMsLTAuMjkgMC4wNjcsLTAuNDMzYzAuMDE0LC0wLjA3NyAwLjAyOCwtMC4xNTMgMC4wNDIsLTAuMjI5YzAuMDU3LC0wLjMzNCAwLjEyOCwtMC42NjcgMC4yMDQsLTAuOTkxYzAsLTAuMDE1IDAuMDA1LC0wLjAyOSAwLjAxLC0wLjA0M2MwLjQ2OSwtMS45NzggMS4yNjIsLTMuODU2IDIuMzI5LC01LjU2NmMwLjE4LC0wLjI5MSAwLjM3LC0wLjU3MiAwLjU2NCwtMC44NTNjMC4wNTIsLTAuMDcyIDAuMTA1LC0wLjE0MyAwLjE1MiwtMC4yMTVjMC4wODUsLTAuMTEgMC4xNjYsLTAuMjI0IDAuMjUxLC0wLjMzM2MwLjA5NSwtMC4xMjQgMC4xOSwtMC4yNDggMC4yOSwtMC4zNzJjMC4wNjYsLTAuMDgxIDAuMTI4LC0wLjE1NyAwLjE5NCwtMC4yMzhjMC4xNDcsLTAuMTgyIDAuMzA0LC0wLjM1OCAwLjQ2LC0wLjUzNGMwLjA0MywtMC4wNTMgMC4wOSwtMC4xIDAuMTM4LC0wLjE1M2MwLjE3MSwtMC4xODYgMC4zNDYsLTAuMzcxIDAuNTIyLC0wLjU1M2MwLjAwNCwtMC4wMDQgMC4wMTQsLTAuMDA5IDAuMDE5LC0wLjAxNGMwLjIwNCwtMC4yMDUgMC40MDgsLTAuNDA1IDAuNjIxLC0wLjZjMC4wMTQsLTAuMDEgMC4wMjgsLTAuMDI0IDAuMDQzLC0wLjAzNGMwLjY0LC0wLjU4NiAxLjMyMywtMS4xMjQgMi4wNDQsLTEuNjE1YzAuMDE0LC0wLjAxIDAuMDI5LC0wLjAxOSAwLjAzOCwtMC4wMjljMi45NSwtMS45OTcgNi40OTgsLTMuMTY0IDEwLjMxMiwtMy4xNjRsMC42OTIsMGMxLjk2NCwwIDMuNTU4LC0xLjYwMSAzLjU1OCwtMy41NzRjMCwtMS45NzMgLTEuNTk0LC0zLjU3NSAtMy41NTgsLTMuNTc1bC0wLjY5MiwwYy0yLjIxNSwwIC00LjM2OSwwLjI4NiAtNi40MTgsMC44MmMwLjE2NiwtMS43NzggMC4yNTIsLTMuNTYgMC4yNTIsLTUuMzQ3YzAsLTUuMjA0IC0wLjcwMiwtMTAuMzU2IC0yLjA4NywtMTUuMzIxYy0yLjYxNCwtOS4zNzQgLTcuNTA5LC0xNy43NzEgLTE0LjI4NywtMjQuNjA1Yy0wLjQ3NSwtMC40NzcgLTAuOTU4LC0wLjk0OSAtMS40NTIsLTEuNDExbDAsLTQyLjA2MWMwLC0yLjgyMiAyLjI4NiwtNS4xNjIgNS4wOSwtNS4yMTRjMS4zNTIsLTAuMDI0IDIuNjQ3LDAuNSAzLjY0NywxLjQ5MmMxLjA0OSwxLjAzNCAxLjY1MSwyLjQ2NCAxLjY1MSwzLjkyMmwwLDMyLjgxMWMwLDEuOTc4IDEuNTk0LDMuNTc0IDMuNTU4LDMuNTc0YzEuOTYzLDAgMy41NTcsLTEuNTk2IDMuNTU3LC0zLjU3NGwwLC0yNC4yMTRjMCwtMi44NzggMi4zMjksLTUuMjE4IDUuMTk0LC01LjIxOGMyLjg2NSwwIDUuMTk0LDIuMzQgNS4xOTQsNS4yMThsLTAuMDA1LDY3LjM0M2MwLDEuOTc4IDEuNTk0LDMuNTc0IDMuNTU4LDMuNTc0YzEuOTYzLDAgMy41NTcsLTEuNTk2IDMuNTU3LC0zLjU3NGwwLC0yOS40OGMwLC0wLjA0MyAwLjAwNSwtMC4wOTEgMC4wMDUsLTAuMTM4YzAsLTIuODc0IDIuMzI5LC01LjIxOSA1LjE5NCwtNS4yMTljMi44NjUsMCA1LjE5NCwyLjM0NSA1LjE5NCw1LjIxOWwwLDQ1LjMzWiIgc3R5bGU9ImZpbGw6IzQ0NDtmaWxsLXJ1bGU6bm9uemVybzsiLz48cGF0aCBkPSJNNDYuNjg5LDU3LjkyOWMtMC4wNDYsLTAuMjI5IC0wLjExNCwtMC40NTcgLTAuMjAzLC0wLjY3MmMtMC4wODksLTAuMjE0IC0wLjE5OSwtMC40MTkgLTAuMzI3LC0wLjYxNWMtMC4xMjgsLTAuMTk1IC0wLjI3OCwtMC4zODEgLTAuNDQxLC0wLjU0M2MtMC4xNjQsLTAuMTY3IC0wLjM0OSwtMC4zMTUgLTAuNTQxLC0wLjQ0M2MtMC4xOTUsLTAuMTI5IC0wLjQwMiwtMC4yNDMgLTAuNjE2LC0wLjMyOWMtMC4yMTMsLTAuMDkxIC0wLjQzNywtMC4xNTcgLTAuNjY1LC0wLjIwNWMtMC40NTksLTAuMDk1IC0wLjkzMiwtMC4wOTUgLTEuMzksMGMtMC4yMjksMC4wNDggLTAuNDUyLDAuMTE0IC0wLjY2NiwwLjIwNWMtMC4yMTMsMC4wODYgLTAuNDIsMC4yIC0wLjYxNiwwLjMyOWMtMC4xOTEsMC4xMjggLTAuMzczLDAuMjc2IC0wLjU0LDAuNDQzYy0wLjE2NCwwLjE2MiAtMC4zMSwwLjM0OCAtMC40NDEsMC41NDNjLTAuMTI5LDAuMTk2IC0wLjIzOSwwLjQwMSAtMC4zMjcsMC42MTVjLTAuMDg5LDAuMjE1IC0wLjE1NywwLjQ0MyAtMC4yMDMsMC42NzJjLTAuMDQ3LDAuMjI5IC0wLjA3MSwwLjQ2MiAtMC4wNzEsMC42OTZjMCwwLjIzMyAwLjAyNCwwLjQ2NyAwLjA3MSwwLjdjMC4wNDYsMC4yMjkgMC4xMTQsMC40NTMgMC4yMDMsMC42NjhjMC4wODgsMC4yMTQgMC4xOTgsMC40MjQgMC4zMjcsMC42MTljMC4xMzEsMC4xOTEgMC4yNzcsMC4zNzcgMC40NDEsMC41NDNjMC4xNjcsMC4xNjIgMC4zNDgsMC4zMSAwLjU0LDAuNDQ0YzAuMTk2LDAuMTI4IDAuNDAzLDAuMjM4IDAuNjE2LDAuMzI4YzAuMjE0LDAuMDkxIDAuNDM3LDAuMTU4IDAuNjY2LDAuMjA1YzAuMjMxLDAuMDQzIDAuNDYyLDAuMDY3IDAuNjk3LDAuMDY3YzAuMjMxLDAgMC40NjIsLTAuMDI0IDAuNjkzLC0wLjA2N2MwLjIyOCwtMC4wNDcgMC40NTIsLTAuMTE0IDAuNjY1LC0wLjIwNWMwLjIxNCwtMC4wOSAwLjQyMSwtMC4yIDAuNjE2LC0wLjMyOGMwLjE5MiwtMC4xMzQgMC4zNzcsLTAuMjgyIDAuNTQxLC0wLjQ0NGMwLjE2MywtMC4xNjYgMC4zMTMsLTAuMzUyIDAuNDQxLC0wLjU0M2MwLjEyOCwtMC4xOTUgMC4yMzgsLTAuNDA1IDAuMzI3LC0wLjYxOWMwLjA4OSwtMC4yMTUgMC4xNTcsLTAuNDM5IDAuMjAzLC0wLjY2OGMwLjA0NiwtMC4yMzMgMC4wNjcsLTAuNDY3IDAuMDY3LC0wLjdjMCwtMC4yMzQgLTAuMDIxLC0wLjQ2NyAtMC4wNjcsLTAuNjk2WiIgc3R5bGU9ImZpbGw6IzQ0NDtmaWxsLXJ1bGU6bm9uemVybzsiLz48cGF0aCBkPSJNMTUxLjcsNTcuOTI5Yy0wLjA0MywtMC4yMjkgLTAuMTE0LC0wLjQ1NyAtMC4xOTksLTAuNjcyYy0wLjA5LC0wLjIxNCAtMC4yLC0wLjQxOSAtMC4zMjgsLTAuNjE1Yy0wLjEyOCwtMC4xOTUgLTAuMjc5LC0wLjM4MSAtMC40NDEsLTAuNTQzYy0wLjE3MSwtMC4xNjcgLTAuMzUxLC0wLjMxNCAtMC41NDEsLTAuNDQzYy0wLjE5OSwtMC4xMjkgLTAuNDAzLC0wLjI0MyAtMC42MTYsLTAuMzI5Yy0wLjIxNCwtMC4wOTEgLTAuNDM3LC0wLjE1NyAtMC42NjQsLTAuMjA1Yy0wLjQ2LC0wLjA5NSAtMC45MzUsLTAuMDk1IC0xLjM5NSwwYy0wLjIyNywwLjA0OCAtMC40NSwwLjExNCAtMC42NjQsMC4yMDVjLTAuMjEzLDAuMDg2IC0wLjQyMiwwLjIgLTAuNjE2LDAuMzI5Yy0wLjE5NSwwLjEyOSAtMC4zNzUsMC4yNzYgLTAuNTQxLDAuNDQzYy0wLjE2MSwwLjE2MiAtMC4zMTMsMC4zNDggLTAuNDQxLDAuNTQzYy0wLjEyOCwwLjE5NiAtMC4yMzcsMC40MDEgLTAuMzI4LDAuNjE1Yy0wLjA4NSwwLjIxNSAtMC4xNTYsMC40NDMgLTAuMTk5LDAuNjcyYy0wLjA0NywwLjIyOSAtMC4wNzEsMC40NjIgLTAuMDcxLDAuNjk2YzAsMC4yMzMgMC4wMjQsMC40NjcgMC4wNzEsMC43YzAuMDQzLDAuMjI5IDAuMTE0LDAuNDUzIDAuMTk5LDAuNjY4YzAuMDkxLDAuMjE0IDAuMiwwLjQyNCAwLjMyOCwwLjYxOWMwLjEyOCwwLjE5MSAwLjI4LDAuMzc3IDAuNDQxLDAuNTQzYzAuMTY2LDAuMTYyIDAuMzQ2LDAuMzE1IDAuNTQxLDAuNDQ0YzAuMTk0LDAuMTI4IDAuNDAzLDAuMjM4IDAuNjE2LDAuMzI4YzAuMjE0LDAuMDkxIDAuNDM3LDAuMTU4IDAuNjY0LDAuMjA1YzAuMjI4LDAuMDQzIDAuNDY1LDAuMDcyIDAuNjk4LDAuMDcyYzAuMjMyLDAgMC40NjQsLTAuMDI5IDAuNjk3LC0wLjA3MmMwLjIyNywtMC4wNDcgMC40NSwtMC4xMTQgMC42NjQsLTAuMjA1YzAuMjEzLC0wLjA5IDAuNDE3LC0wLjIgMC42MTcsLTAuMzI4YzAuMTg5LC0wLjEyOSAwLjM2OSwtMC4yODIgMC41NCwtMC40NDRjMC4xNjIsLTAuMTY2IDAuMzEzLC0wLjM1MiAwLjQ0MSwtMC41NDNjMC4xMjgsLTAuMTk1IDAuMjM4LC0wLjQwNSAwLjMyOCwtMC42MTljMC4wODUsLTAuMjE1IDAuMTU2LC0wLjQzOSAwLjE5OSwtMC42NjhjMC4wNDcsLTAuMjMzIDAuMDcxLC0wLjQ2NyAwLjA3MSwtMC43YzAsLTAuMjM0IC0wLjAyNCwtMC40NjcgLTAuMDcxLC0wLjY5NloiIHN0eWxlPSJmaWxsOiM0NDQ7ZmlsbC1ydWxlOm5vbnplcm87Ii8+PC9zdmc+)}.coronabar-notice .cn-notice-text{margin-right:2em;margin-left:2em}.coronabar-notice .cn-notice-text p:last-child{margin-bottom:0}.coronabar-notice .cn-notice-actions{border-left:1px solid #999;border-right:1px solid #999;margin-left:0;margin-right:0;padding:.25em 2em;text-align:center;min-width:140px}.coronabar-notice .cn-notice-actions .button{display:inline-block;margin:2px 0}.coronabar-notice .cn-notice-text h3{margin-top:0}.coronabar-notice .cn-notice-text strong{color:#000}.coronabar-notice .cn-notice-icon svg path{fill:#666!important}@media only screen and (max-width:600px){.coronabar-notice .cn-notice-container{flex-direction:column}.coronabar-notice .cn-notice-step{flex-direction:column}.coronabar-notice .cn-notice-icon{display:none}.coronabar-notice .cn-notice-actions{border:none;margin:1em 0 0}.coronabar-notice .cn-notice-text{order:-1}}
css/admin.css CHANGED
@@ -1,5 +1,5 @@
1
  /* Cookie Notice settings */
2
- .df-credits {
3
  float: right;
4
  width: 280px;
5
  background: #fff;
@@ -8,35 +8,23 @@
8
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05);
9
  }
10
 
11
- .df-credits .inner {
12
- padding-left: 10px;
13
- padding-right: 10px;
14
  }
15
 
16
- .df-credits h3 {
 
 
 
 
17
  font-size: 14px;
18
  line-height: 1.4;
19
  margin: 0;
20
- padding: 8px 12px;
21
  border-bottom: 1px solid #eee;
22
  }
23
 
24
- .df-credits .df-link {
25
- font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
26
- font-style: italic;
27
- padding-bottom: 10px;
28
- margin: 0;
29
- }
30
-
31
- .df-credits .df-link a {
32
- vertical-align: middle;
33
- padding: 5px 0 0 4px;
34
- }
35
-
36
- .df-promo h4 {
37
- margin-bottom: 0;
38
- }
39
-
40
  .cookie-notice-settings .df-credits form {
41
  min-width: 260px;
42
  margin-bottom: 1em;
@@ -58,6 +46,12 @@
58
  height: 0;
59
  }
60
 
 
 
 
 
 
 
61
  .cookie-notice-settings form {
62
  float: left;
63
  min-width: 463px;
@@ -73,6 +67,10 @@
73
  margin-bottom: 8px;
74
  }
75
 
 
 
 
 
76
  #cn_colors label {
77
  min-width: 10em;
78
  display: inline-block;
@@ -98,9 +96,18 @@
98
  margin-top: 10px;
99
  }
100
 
 
 
 
 
 
 
 
 
 
101
  /* All Mobile Sizes (devices and browser) */
102
  @media only screen and (max-width: 959px) {
103
- .df-credits {
104
  width: 100%;
105
  float: none;
106
  margin: 20px 0;
1
  /* Cookie Notice settings */
2
+ .cookie-notice-credits {
3
  float: right;
4
  width: 280px;
5
  background: #fff;
8
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05);
9
  }
10
 
11
+ .cookie-notice-credits .inner {
12
+ padding-left: 1.33em;
13
+ padding-right: 1.33em;
14
  }
15
 
16
+ .cookie-notice-credits .inner:last-child {
17
+ padding-bottom: 0.66em;
18
+ }
19
+
20
+ .cookie-notice-credits h3 {
21
  font-size: 14px;
22
  line-height: 1.4;
23
  margin: 0;
24
+ padding: 0.66em 1.33em;;
25
  border-bottom: 1px solid #eee;
26
  }
27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  .cookie-notice-settings .df-credits form {
29
  min-width: 260px;
30
  margin-bottom: 1em;
46
  height: 0;
47
  }
48
 
49
+ .cookie-notice-settings h2 {
50
+ margin: 1.5em 0;
51
+ padding-bottom: 1em;
52
+ border-bottom: 1px solid #ccc;
53
+ }
54
+
55
  .cookie-notice-settings form {
56
  float: left;
57
  min-width: 463px;
67
  margin-bottom: 8px;
68
  }
69
 
70
+ .cookie-notice-settings .description strong {
71
+ color: #444;
72
+ }
73
+
74
  #cn_colors label {
75
  min-width: 10em;
76
  display: inline-block;
96
  margin-top: 10px;
97
  }
98
 
99
+ #cn_coronabar_text_strings {
100
+ margin-top: 10px;
101
+ }
102
+
103
+ #cn_colors_bar_opacity_range {
104
+ vertical-align: middle;
105
+ margin-right: 10px;
106
+ }
107
+
108
  /* All Mobile Sizes (devices and browser) */
109
  @media only screen and (max-width: 959px) {
110
+ .cookie-notice-credits {
111
  width: 100%;
112
  float: none;
113
  margin: 20px 0;
css/admin.min.css CHANGED
@@ -1 +1 @@
1
- .df-credits{float:right;width:280px;background:#fff;margin:20px -300px 20px 20px;position:relative;box-shadow:0 0 0 1px rgba(0,0,0,0.05)}.df-credits .inner{padding-left:10px;padding-right:10px}.df-credits h3{font-size:14px;line-height:1.4;margin:0;padding:8px 12px;border-bottom:1px solid #eee}.df-credits .df-link{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-style:italic;padding-bottom:10px;margin:0}.df-credits .df-link a{vertical-align:middle;padding:5px 0 0 4px}.df-promo h4{margin-bottom:0}.cookie-notice-settings .df-credits form{min-width:260px;margin-bottom:1em}.cookie-notice-settings .df-credits form input{margin:0;padding:0}.cookie-notice-settings{margin-right:300px}.cookie-notice-settings hr,.df-credits hr{border:solid #eee;border-width:1px 0 0;clear:both;height:0}.cookie-notice-settings form{float:left;min-width:463px;width:100%}.cookie-notice-settings .ui-button{margin-bottom:5px}.cookie-notice-settings .description{font-size:13px;margin-bottom:8px}#cn_colors label{min-width:10em;display:inline-block}#cn_colors div{vertical-align:middle}#cn_refuse_code .nav-tab-wrapper{padding-top:0}#cn_refuse_code .refuse-code-tab{display:none}#cn_refuse_code .refuse-code-tab.active{display:block}#cn_refuse_code .refuse-code-tab .description{margin-top:10px}@media only screen and (max-width: 959px){.df-credits{width:100%;float:none;margin:20px 0}.cookie-notice-settings{margin-right:0}}
1
+ .cookie-notice-credits{float:right;width:280px;background:#fff;margin:20px -300px 20px 20px;position:relative;box-shadow:0 0 0 1px rgba(0,0,0,.05)}.cookie-notice-credits .inner{padding-left:1.33em;padding-right:1.33em}.cookie-notice-credits .inner:last-child{padding-bottom:.66em}.cookie-notice-credits h3{font-size:14px;line-height:1.4;margin:0;padding:.66em 1.33em;border-bottom:1px solid #eee}.cookie-notice-settings .df-credits form{min-width:260px;margin-bottom:1em}.cookie-notice-settings .df-credits form input{margin:0;padding:0}.cookie-notice-settings{margin-right:300px}.cookie-notice-settings hr,.df-credits hr{border:solid #eee;border-width:1px 0 0;clear:both;height:0}.cookie-notice-settings h2{margin:1.5em 0;padding-bottom:1em;border-bottom:1px solid #ccc}.cookie-notice-settings form{float:left;min-width:463px;width:100%}.cookie-notice-settings .ui-button{margin-bottom:5px}.cookie-notice-settings .description{font-size:13px;margin-bottom:8px}.cookie-notice-settings .description strong{color:#444}#cn_colors label{min-width:10em;display:inline-block}#cn_colors div{vertical-align:middle}#cn_refuse_code .nav-tab-wrapper{padding-top:0}#cn_refuse_code .refuse-code-tab{display:none}#cn_refuse_code .refuse-code-tab.active{display:block}#cn_refuse_code .refuse-code-tab .description{margin-top:10px}#cn_coronabar_text_strings{margin-top:10px}#cn_colors_bar_opacity_range{vertical-align:middle;margin-right:10px}@media only screen and (max-width:959px){.cookie-notice-credits{width:100%;float:none;margin:20px 0}.cookie-notice-settings{margin-right:0}}
css/front.css CHANGED
@@ -4,9 +4,17 @@
4
  height: auto;
5
  z-index: 100000;
6
  font-size: 13px;
 
7
  line-height: 20px;
8
  left: 0;
9
  text-align: center;
 
 
 
 
 
 
 
10
  -webkit-box-sizing: border-box;
11
  -moz-box-sizing: border-box;
12
  box-sizing: border-box;
@@ -49,14 +57,14 @@
49
  }
50
 
51
  .cookie-notice-container {
52
- padding: 15px;
53
  text-align: center;
54
  width: 100%;
55
  z-index: 2;
56
  }
57
 
58
  .cookie-revoke-container {
59
- padding: 15px;
60
  width: 100%;
61
  z-index: 1;
62
  }
@@ -65,10 +73,12 @@
65
  position: absolute;
66
  right: 15px;
67
  top: 50%;
68
- margin-top: -7.5px;
69
  width: 15px;
70
  height: 15px;
71
  opacity: 0.5;
 
 
72
  }
73
 
74
  .cn-close-icon:hover {
@@ -80,6 +90,7 @@
80
  content: ' ';
81
  height: 15px;
82
  width: 2px;
 
83
  background-color: #fff;
84
  }
85
  .cn-close-icon:before {
@@ -93,94 +104,69 @@
93
  margin: 0;
94
  }
95
 
96
- .cn-button.wp-default,
97
- .cn-button.wp-default:hover,
98
- .cn-button.bootstrap,
99
- .cn-button.bootstrap:hover {
100
- box-shadow: none;
101
- text-decoration: none;
102
- }
103
-
104
  #cookie-notice .cn-button {
105
  margin-left: 10px;
106
  }
107
 
108
- .cn-button.wp-default {
109
- font-family: sans-serif;
110
- line-height: 18px;
111
- padding: 2px 12px;
112
- background: linear-gradient(to bottom, #FEFEFE, #F4F4F4) repeat scroll 0 0 #F3F3F3;
113
- border-color: #BBB;
114
- color: #333;
115
- text-shadow: 0 1px 0 #FFF;
116
- border-radius: 3px 3px 3px 3px;
117
- border-style: solid;
118
- border-width: 1px;
119
- cursor: pointer;
120
  display: inline-block;
121
- font-size: 12px;
122
- font-style: normal;
123
- text-decoration: none;
124
  white-space: nowrap;
125
  outline: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
126
  }
127
 
128
  .cn-button.wp-default:hover {
129
- background: linear-gradient(to bottom, #FFFFFF, #F3F3F3) repeat scroll 0 0 #F3F3F3;
130
- border-color: #999;
131
- color: #222;
132
  }
133
 
134
  .cn-button.bootstrap {
135
- font-family: sans-serif;
136
- display: inline-block;
137
- *display: inline;
138
- padding: 4px 12px;
139
- margin-right: .3em;
140
- margin-bottom: 0;
141
- *margin-left: .3em;
142
- line-height: 20px;
143
- color: #333;
144
- text-align: center;
145
- text-shadow: 0 1px 1px rgba(255, 255, 255, .75);
146
- font-style: normal;
147
- vertical-align: middle;
148
- cursor: pointer;
149
  color: #fff;
150
- text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
151
- background-color: #006dcc;
152
- *background-color: #04c;
153
- background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
154
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
155
- background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
156
- background-image: -o-linear-gradient(top, #0088cc, #0044cc);
157
- background-image: linear-gradient(to bottom, #0088cc, #0044cc);
158
- background-repeat: repeat-x;
159
- border-style: solid;
160
- border-width: 1px;
161
- border-color: #04c #04c #002a80;
162
- border-color: rgba(0, 0, 0, .1) rgba(0, 0, 0, .1) rgba(0, 0, 0, .25);
163
- box-shadow: 0 1px 0 rgba(255, 255, 255, .2) inset, 0 1px 2px rgba(0, 0, 0, .05);
164
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
165
- filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
166
- padding: 2px 10px;
167
- font-size: 12px;
168
- text-decoration: none;
169
- -webkit-border-radius: 3px;
170
- -moz-border-radius: 3px;
171
- border-radius: 3px;
172
- outline: none;
173
  }
174
 
175
  .cn-button.bootstrap:hover {
176
- color: #fff;
177
- background-color: #04c;
178
- *background-color: #003bb3;
179
- background-position: 0 -15px;
180
- -webkit-transition: background-position 0.1s linear;
181
- -moz-transition: background-position 0.1s linear;
182
- -o-transition: background-position 0.1s linear;
183
- transition: background-position 0.1s linear;
 
184
  }
185
 
186
  #cookie-notice.cookie-notice-visible.cn-effect-none,
@@ -227,17 +213,6 @@
227
  animation-name: slideOutUp;
228
  }
229
 
230
- @media all and (max-width: 900px) {
231
- .cookie-notice-container #cn-notice-text {
232
- display: block;
233
- margin-bottom: 5px;
234
- }
235
- #cookie-notice .cn-button {
236
- margin-left: 5px;
237
- margin-right: 5px;
238
- }
239
- }
240
-
241
  @-webkit-keyframes fadeIn {
242
  from {
243
  opacity: 0;
@@ -380,4 +355,23 @@
380
  -webkit-transform: translate3d(0, -100%, 0);
381
  transform: translate3d(0, -100%, 0);
382
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
383
  }
4
  height: auto;
5
  z-index: 100000;
6
  font-size: 13px;
7
+ letter-spacing: 0;
8
  line-height: 20px;
9
  left: 0;
10
  text-align: center;
11
+ /* border-top: 2px solid #fbb03b; */
12
+ font-weight: normal;
13
+ font-family: -apple-system,BlinkMacSystemFont,Arial,Roboto,"Helvetica Neue",sans-serif;
14
+ }
15
+
16
+ #cookie-notice,
17
+ #cookie-notice * {
18
  -webkit-box-sizing: border-box;
19
  -moz-box-sizing: border-box;
20
  box-sizing: border-box;
57
  }
58
 
59
  .cookie-notice-container {
60
+ padding: 15px 30px;
61
  text-align: center;
62
  width: 100%;
63
  z-index: 2;
64
  }
65
 
66
  .cookie-revoke-container {
67
+ padding: 15px 30px;
68
  width: 100%;
69
  z-index: 1;
70
  }
73
  position: absolute;
74
  right: 15px;
75
  top: 50%;
76
+ margin-top: -10px;
77
  width: 15px;
78
  height: 15px;
79
  opacity: 0.5;
80
+ padding: 10px;
81
+ outline: none;
82
  }
83
 
84
  .cn-close-icon:hover {
90
  content: ' ';
91
  height: 15px;
92
  width: 2px;
93
+ top: 3px;
94
  background-color: #fff;
95
  }
96
  .cn-close-icon:before {
104
  margin: 0;
105
  }
106
 
 
 
 
 
 
 
 
 
107
  #cookie-notice .cn-button {
108
  margin-left: 10px;
109
  }
110
 
111
+ .cn-button {
112
+ font-family: -apple-system,BlinkMacSystemFont,Arial,Roboto,"Helvetica Neue",sans-serif;
113
+ font-weight: normal;
114
+ font-size: 13px;
115
+ letter-spacing: 0.25px;
116
+ line-height: 20px;
117
+ margin: 0;
118
+ padding: 0;
119
+ text-align: center;
120
+ text-transform: none;
 
 
121
  display: inline-block;
122
+ cursor: pointer;
123
+ touch-action: manipulation;
 
124
  white-space: nowrap;
125
  outline: none;
126
+ box-shadow: none;
127
+ text-shadow: none;
128
+ border: none;
129
+ -webkit-border-radius: 3px;
130
+ -moz-border-radius: 3px;
131
+ border-radius: 3px;
132
+ }
133
+
134
+ .cn-button:hover {
135
+ box-shadow: inset 0 0 0 99999px rgba(0,0,0,0.05);
136
+ text-decoration: none;
137
+ }
138
+
139
+ .cn-button.wp-default,
140
+ .cn-button.bootstrap {
141
+ min-height: 30px;
142
+ text-decoration: none;
143
+ padding: 0 10px;
144
+ line-height: 2.15384615;
145
+ }
146
+
147
+ .cn-button.wp-default {
148
+ color: #fff;
149
+ background: #fbb03b;
150
  }
151
 
152
  .cn-button.wp-default:hover {
 
 
 
153
  }
154
 
155
  .cn-button.bootstrap {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
156
  color: #fff;
157
+ background: #00a99d;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  }
159
 
160
  .cn-button.bootstrap:hover {
161
+ }
162
+
163
+ .cn-text-container {
164
+ margin: 0 0 6px 0;
165
+ }
166
+
167
+ .cn-text-container,
168
+ .cn-buttons-container {
169
+ display: inline-block;
170
  }
171
 
172
  #cookie-notice.cookie-notice-visible.cn-effect-none,
213
  animation-name: slideOutUp;
214
  }
215
 
 
 
 
 
 
 
 
 
 
 
 
216
  @-webkit-keyframes fadeIn {
217
  from {
218
  opacity: 0;
355
  -webkit-transform: translate3d(0, -100%, 0);
356
  transform: translate3d(0, -100%, 0);
357
  }
358
+ }
359
+
360
+ @media all and (max-width: 900px) {
361
+ .cookie-notice-container #cn-notice-text {
362
+ display: block;
363
+ }
364
+ .cookie-notice-container #cn-notice-buttons {
365
+ display: block;
366
+ }
367
+ #cookie-notice .cn-button {
368
+ margin: 0 5px 5px 5px;
369
+ }
370
+ }
371
+
372
+ @media all and (max-width: 480px) {
373
+ .cookie-notice-container,
374
+ .cookie-revoke-container {
375
+ padding: 15px 25px;
376
+ }
377
  }
css/front.min.css CHANGED
@@ -1 +1 @@
1
- #cookie-notice{position:fixed;min-width:100%;height:auto;z-index:100000;font-size:13px;line-height:20px;left:0;text-align:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#cookie-notice.cn-animated{-webkit-animation-duration:.5s!important;animation-duration:.5s!important;-webkit-animation-fill-mode:both;animation-fill-mode:both}#cookie-notice.cn-animated.cn-effect-none{-webkit-animation-duration:.001s!important;animation-duration:.001s!important}#cookie-notice .cookie-notice-container{display:block}#cookie-notice.cookie-notice-hidden .cookie-notice-container{display:none}#cookie-notice .cookie-revoke-container{display:block}#cookie-notice.cookie-revoke-hidden .cookie-revoke-container{display:none}.cn-position-top{top:0}.cn-position-bottom{bottom:0}.cookie-notice-container{padding:15px;text-align:center;width:100%;z-index:2}.cookie-revoke-container{padding:15px;width:100%;z-index:1}.cn-close-icon{position:absolute;right:15px;top:50%;margin-top:-7.5px;width:15px;height:15px;opacity:.5}.cn-close-icon:hover{opacity:1}.cn-close-icon:before,.cn-close-icon:after{position:absolute;content:' ';height:15px;width:2px;background-color:#fff}.cn-close-icon:before{transform:rotate(45deg)}.cn-close-icon:after{transform:rotate(-45deg)}#cookie-notice .cn-revoke-cookie{margin:0}.cn-button.wp-default,.cn-button.wp-default:hover,.cn-button.bootstrap,.cn-button.bootstrap:hover{box-shadow:none;text-decoration:none}#cookie-notice .cn-button{margin-left:10px}.cn-button.wp-default{font-family:sans-serif;line-height:18px;padding:2px 12px;background:linear-gradient(to bottom,#FEFEFE,#F4F4F4) repeat scroll 0 0 #F3F3F3;border-color:#BBB;color:#333;text-shadow:0 1px 0 #FFF;border-radius:3px 3px 3px 3px;border-style:solid;border-width:1px;cursor:pointer;display:inline-block;font-size:12px;font-style:normal;text-decoration:none;white-space:nowrap;outline:none}.cn-button.wp-default:hover{background:linear-gradient(to bottom,#FFF,#F3F3F3) repeat scroll 0 0 #F3F3F3;border-color:#999;color:#222}.cn-button.bootstrap{font-family:sans-serif;display:inline-block;*display:inline;padding:4px 12px;margin-right:.3em;margin-bottom:0;*margin-left:.3em;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,.75);font-style:normal;vertical-align:middle;cursor:pointer;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-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;border-style:solid;border-width:1px;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);box-shadow:0 1px 0 rgba(255,255,255,.2) inset,0 1px 2px rgba(0,0,0,.05);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);padding:2px 10px;font-size:12px;text-decoration:none;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;outline:none}.cn-button.bootstrap:hover{color:#fff;background-color:#04c;*background-color:#003bb3;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}#cookie-notice.cookie-notice-visible.cn-effect-none,#cookie-notice.cookie-revoke-visible.cn-effect-none{-webkit-animation-name:fadeIn;animation-name:fadeIn}#cookie-notice.cn-effect-none{-webkit-animation-name:fadeOut;animation-name:fadeOut}#cookie-notice.cookie-notice-visible.cn-effect-fade,#cookie-notice.cookie-revoke-visible.cn-effect-fade{-webkit-animation-name:fadeIn;animation-name:fadeIn}#cookie-notice.cn-effect-fade{-webkit-animation-name:fadeOut;animation-name:fadeOut}#cookie-notice.cookie-notice-visible.cn-effect-slide,#cookie-notice.cookie-revoke-visible.cn-effect-slide{-webkit-animation-name:slideInUp;animation-name:slideInUp}#cookie-notice.cn-effect-slide{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}#cookie-notice.cookie-notice-visible.cn-position-top.cn-effect-slide,#cookie-notice.cookie-revoke-visible.cn-position-top.cn-effect-slide{-webkit-animation-name:slideInDown;animation-name:slideInDown}#cookie-notice.cn-position-top.cn-effect-slide{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}@media all and (max-width: 900px){.cookie-notice-container #cn-notice-text{display:block;margin-bottom:5px}#cookie-notice .cn-button{margin-left:5px;margin-right:5px}}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}@-webkit-keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@-webkit-keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@-webkit-keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@-webkit-keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}
1
+ #cookie-notice{position:fixed;min-width:100%;height:auto;z-index:100000;font-size:13px;letter-spacing:0;line-height:20px;left:0;text-align:center;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,Arial,Roboto,"Helvetica Neue",sans-serif}#cookie-notice,#cookie-notice *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#cookie-notice.cn-animated{-webkit-animation-duration:.5s!important;animation-duration:.5s!important;-webkit-animation-fill-mode:both;animation-fill-mode:both}#cookie-notice.cn-animated.cn-effect-none{-webkit-animation-duration:1ms!important;animation-duration:1ms!important}#cookie-notice .cookie-notice-container{display:block}#cookie-notice.cookie-notice-hidden .cookie-notice-container{display:none}#cookie-notice .cookie-revoke-container{display:block}#cookie-notice.cookie-revoke-hidden .cookie-revoke-container{display:none}.cn-position-top{top:0}.cn-position-bottom{bottom:0}.cookie-notice-container{padding:15px 30px;text-align:center;width:100%;z-index:2}.cookie-revoke-container{padding:15px 30px;width:100%;z-index:1}.cn-close-icon{position:absolute;right:15px;top:50%;margin-top:-10px;width:15px;height:15px;opacity:.5;padding:10px;outline:0}.cn-close-icon:hover{opacity:1}.cn-close-icon:after,.cn-close-icon:before{position:absolute;content:' ';height:15px;width:2px;top:3px;background-color:#fff}.cn-close-icon:before{transform:rotate(45deg)}.cn-close-icon:after{transform:rotate(-45deg)}#cookie-notice .cn-revoke-cookie{margin:0}#cookie-notice .cn-button{margin-left:10px}.cn-button{font-family:-apple-system,BlinkMacSystemFont,Arial,Roboto,"Helvetica Neue",sans-serif;font-weight:400;font-size:13px;letter-spacing:.25px;line-height:20px;margin:0;padding:0;text-align:center;text-transform:none;display:inline-block;cursor:pointer;touch-action:manipulation;white-space:nowrap;outline:0;box-shadow:none;text-shadow:none;border:none;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.cn-button:hover{box-shadow:inset 0 0 0 99999px rgba(0,0,0,.05);text-decoration:none}.cn-button.bootstrap,.cn-button.wp-default{min-height:30px;text-decoration:none;padding:0 10px;line-height:2.15384615}.cn-button.wp-default{color:#fff;background:#fbb03b}.cn-button.bootstrap{color:#fff;background:#00a99d}.cn-text-container{margin:0 0 6px 0}.cn-buttons-container,.cn-text-container{display:inline-block}#cookie-notice.cookie-notice-visible.cn-effect-none,#cookie-notice.cookie-revoke-visible.cn-effect-none{-webkit-animation-name:fadeIn;animation-name:fadeIn}#cookie-notice.cn-effect-none{-webkit-animation-name:fadeOut;animation-name:fadeOut}#cookie-notice.cookie-notice-visible.cn-effect-fade,#cookie-notice.cookie-revoke-visible.cn-effect-fade{-webkit-animation-name:fadeIn;animation-name:fadeIn}#cookie-notice.cn-effect-fade{-webkit-animation-name:fadeOut;animation-name:fadeOut}#cookie-notice.cookie-notice-visible.cn-effect-slide,#cookie-notice.cookie-revoke-visible.cn-effect-slide{-webkit-animation-name:slideInUp;animation-name:slideInUp}#cookie-notice.cn-effect-slide{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}#cookie-notice.cookie-notice-visible.cn-position-top.cn-effect-slide,#cookie-notice.cookie-revoke-visible.cn-position-top.cn-effect-slide{-webkit-animation-name:slideInDown;animation-name:slideInDown}#cookie-notice.cn-position-top.cn-effect-slide{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}@-webkit-keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@-webkit-keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@-webkit-keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@-webkit-keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@media all and (max-width:900px){.cookie-notice-container #cn-notice-text{display:block}.cookie-notice-container #cn-notice-buttons{display:block}#cookie-notice .cn-button{margin:0 5px 5px 5px}}@media all and (max-width:480px){.cookie-notice-container,.cookie-revoke-container{padding:15px 25px}}
js/admin-notice.js ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ( function ( $ ) {
2
+ $( document ).ready( function () {
3
+ // Save dismiss state
4
+ $( '.cn-notice.is-dismissible' ).on( 'click', '.notice-dismiss, .cn-notice-dismiss', function ( e ) {
5
+ if ( $( e.currentTarget ).hasClass( 'cn-approve' ) ) {
6
+ var notice_action = 'approve';
7
+ } else if ( $( e.currentTarget ).hasClass( 'cn-delay' ) ) {
8
+ var notice_action = 'delay';
9
+ } else {
10
+ var notice_action = 'dismiss';
11
+ }
12
+
13
+ $.ajax( {
14
+ url: cnArgsNotice.ajaxUrl,
15
+ type: 'POST',
16
+ dataType: 'json',
17
+ data: {
18
+ action: 'cn_dismiss_notice',
19
+ notice_action: notice_action,
20
+ nonce: cnArgsNotice.nonce
21
+ }
22
+ } );
23
+
24
+ $( e.delegateTarget ).slideUp( 'fast' );
25
+ } );
26
+
27
+ /* Steps
28
+ $( '.cn-notice .step-choice .cn-approve' ).on( 'click', function ( e ) {
29
+ e.preventDefault();
30
+
31
+ $( '.cn-notice .step-choice' ).slideUp( 'fast', 'linear', {
32
+ start: function () {
33
+ $( this ).css( {
34
+ display: "flex"
35
+ } )
36
+ }
37
+ } );
38
+
39
+ if ( $( e.target ).hasClass( 'cn-reply-yes' ) ) {
40
+ $( '.cn-notice .step-yes' ).slideDown( {
41
+ start: function () {
42
+ $( this ).css( {
43
+ display: "flex"
44
+ } )
45
+ }
46
+ } );
47
+ } else {
48
+ $( '.cn-notice .step-no' ).slideDown( {
49
+ start: function () {
50
+ $( this ).css( {
51
+ display: "flex"
52
+ } )
53
+ }
54
+ } );
55
+ };
56
+ } );
57
+ */
58
+ } );
59
+ } )( jQuery );
js/admin-notice.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(s){s(document).ready(function(){s(".cn-notice.is-dismissible").on("click",".notice-dismiss, .cn-notice-dismiss",function(e){if(s(e.currentTarget).hasClass("cn-approve"))var n="approve";else if(s(e.currentTarget).hasClass("cn-delay"))n="delay";else n="dismiss";s.ajax({url:cnArgsNotice.ajaxUrl,type:"POST",dataType:"json",data:{action:"cn_dismiss_notice",notice_action:n,nonce:cnArgsNotice.nonce}}),s(e.delegateTarget).slideUp("fast")})})}(jQuery);
js/admin.js CHANGED
@@ -28,13 +28,21 @@
28
  $( '#cn_see_more_opt' ).slideUp( 'fast' );
29
  } );
30
 
31
- // privacy policy option
32
  $( '#cn_on_scroll' ).change( function () {
33
  if ( $( this ).is( ':checked' ) )
34
  $( '#cn_on_scroll_offset' ).slideDown( 'fast' );
35
  else
36
  $( '#cn_on_scroll_offset' ).slideUp( 'fast' );
37
  } );
 
 
 
 
 
 
 
 
38
 
39
  // privacy policy link
40
  $( '#cn_see_more_link-custom, #cn_see_more_link-page' ).change( function () {
28
  $( '#cn_see_more_opt' ).slideUp( 'fast' );
29
  } );
30
 
31
+ // on scroll option
32
  $( '#cn_on_scroll' ).change( function () {
33
  if ( $( this ).is( ':checked' ) )
34
  $( '#cn_on_scroll_offset' ).slideDown( 'fast' );
35
  else
36
  $( '#cn_on_scroll_offset' ).slideUp( 'fast' );
37
  } );
38
+
39
+ // coronabar text string option
40
+ $( '#cn_coronabar_texts' ).change( function () {
41
+ if ( $( this ).is( ':checked' ) )
42
+ $( '#cn_coronabar_text_strings' ).slideDown( 'fast' );
43
+ else
44
+ $( '#cn_coronabar_text_strings' ).slideUp( 'fast' );
45
+ } );
46
 
47
  // privacy policy link
48
  $( '#cn_see_more_link-custom, #cn_see_more_link-page' ).change( function () {
js/admin.min.js CHANGED
@@ -1 +1 @@
1
- !function(c){c(document).ready(function(){c(".cn_color").wpColorPicker(),c("#cn_refuse_opt").change(function(){c(this).is(":checked")?c("#cn_refuse_opt_container").slideDown("fast"):c("#cn_refuse_opt_container").slideUp("fast")}),c("#cn_revoke_cookies").change(function(){c(this).is(":checked")?c("#cn_revoke_opt_container").slideDown("fast"):c("#cn_revoke_opt_container").slideUp("fast")}),c("#cn_see_more").change(function(){c(this).is(":checked")?c("#cn_see_more_opt").slideDown("fast"):c("#cn_see_more_opt").slideUp("fast")}),c("#cn_on_scroll").change(function(){c(this).is(":checked")?c("#cn_on_scroll_offset").slideDown("fast"):c("#cn_on_scroll_offset").slideUp("fast")}),c("#cn_see_more_link-custom, #cn_see_more_link-page").change(function(){"custom"===c("#cn_see_more_link-custom:checked").val()?c("#cn_see_more_opt_page").slideUp("fast",function(){c("#cn_see_more_opt_link").slideDown("fast")}):"page"===c("#cn_see_more_link-page:checked").val()&&c("#cn_see_more_opt_link").slideUp("fast",function(){c("#cn_see_more_opt_page").slideDown("fast")})}),c("#cn_refuse_code_fields").find("a").click(function(e){e.preventDefault(),c("#cn_refuse_code_fields").find("a").removeClass("nav-tab-active"),c(".refuse-code-tab").removeClass("active");var n=c(this).attr("id").replace("-tab","");c("#"+n).addClass("active"),c(this).addClass("nav-tab-active")})}),c(document).on("click","input#reset_cookie_notice_options",function(){return confirm(cnArgs.resetToDefaults)})}(jQuery);
1
+ !function(c){c(document).ready(function(){c(".cn_color").wpColorPicker(),c("#cn_refuse_opt").change(function(){c(this).is(":checked")?c("#cn_refuse_opt_container").slideDown("fast"):c("#cn_refuse_opt_container").slideUp("fast")}),c("#cn_revoke_cookies").change(function(){c(this).is(":checked")?c("#cn_revoke_opt_container").slideDown("fast"):c("#cn_revoke_opt_container").slideUp("fast")}),c("#cn_see_more").change(function(){c(this).is(":checked")?c("#cn_see_more_opt").slideDown("fast"):c("#cn_see_more_opt").slideUp("fast")}),c("#cn_on_scroll").change(function(){c(this).is(":checked")?c("#cn_on_scroll_offset").slideDown("fast"):c("#cn_on_scroll_offset").slideUp("fast")}),c("#cn_coronabar_texts").change(function(){c(this).is(":checked")?c("#cn_coronabar_text_strings").slideDown("fast"):c("#cn_coronabar_text_strings").slideUp("fast")}),c("#cn_see_more_link-custom, #cn_see_more_link-page").change(function(){"custom"===c("#cn_see_more_link-custom:checked").val()?c("#cn_see_more_opt_page").slideUp("fast",function(){c("#cn_see_more_opt_link").slideDown("fast")}):"page"===c("#cn_see_more_link-page:checked").val()&&c("#cn_see_more_opt_link").slideUp("fast",function(){c("#cn_see_more_opt_page").slideDown("fast")})}),c("#cn_refuse_code_fields").find("a").click(function(e){e.preventDefault(),c("#cn_refuse_code_fields").find("a").removeClass("nav-tab-active"),c(".refuse-code-tab").removeClass("active");var n=c(this).attr("id").replace("-tab","");c("#"+n).addClass("active"),c(this).addClass("nav-tab-active")})}),c(document).on("click","input#reset_cookie_notice_options",function(){return confirm(cnArgs.resetToDefaults)})}(jQuery);
js/front.js CHANGED
@@ -90,7 +90,7 @@
90
  var _this = this;
91
 
92
  // remove listening to scroll event
93
- if ( cnArgs.onScroll === 'yes' )
94
  window.removeEventListener( 'scroll', this.handleScroll );
95
 
96
  var date = new Date(),
@@ -131,7 +131,7 @@
131
  this.hideCookieNotice();
132
 
133
  // show revoke notice if enabled
134
- if ( cnArgs.revoke_cookies_opt === 'automatic' ) {
135
  // show cookie notice after the revoke is hidden
136
  this.noticeContainer.addEventListener( 'animationend', function handler() {
137
  _this.noticeContainer.removeEventListener( 'animationend', handler );
@@ -328,6 +328,34 @@
328
  if ( scrollTop > parseInt( cnArgs.onScrollOffset ) )
329
  this.setStatus( 'accept' );
330
  };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
331
 
332
  // cross browser compatible closest function
333
  this.getClosest = function ( elem, selector ) {
@@ -365,21 +393,65 @@
365
  this.noticeContainer = document.getElementById( 'cookie-notice' );
366
 
367
  var cookieButtons = document.getElementsByClassName( 'cn-set-cookie' ),
368
- revokeButtons = document.getElementsByClassName( 'cn-revoke-cookie' );
 
369
 
370
  // add effect class
371
  this.noticeContainer.classList.add( 'cn-effect-' + cnArgs.hideEffect );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
372
 
373
  /*
374
  // add refuse class
375
- this.noticeContainer.classList.add( cnArgs.refuse === 'yes' ? 'cn-refuse-active' : 'cn-refuse-inactive' );
376
 
377
  // add revoke class
378
- if ( cnArgs.revoke_cookies === '1' ) {
379
  this.noticeContainer.classList.add( 'cn-revoke-active' );
380
 
381
  // add revoke type class (manual or automatic)
382
- this.noticeContainer.classList.add( 'cn-revoke-' + cnArgs.revoke_cookies_opt );
383
  } else {
384
  this.noticeContainer.classList.add( 'cn-revoke-inactive' );
385
  }
@@ -388,13 +460,13 @@
388
  // check cookies status
389
  if ( this.cookiesAccepted === null ) {
390
  // handle on scroll
391
- if ( cnArgs.onScroll === 'yes' )
392
  window.addEventListener( 'scroll', function ( e ) {
393
  _this.handleScroll();
394
  } );
395
 
396
  // handle on click
397
- if ( cnArgs.onClick === 'yes' )
398
  window.addEventListener( 'click', function ( e ) {
399
  var outerContainer = _this.getClosest( e.target, '#cookie-notice' );
400
 
@@ -411,7 +483,7 @@
411
  this.setBodyClass( [ 'cookies-set', this.cookiesAccepted === true ? 'cookies-accepted' : 'cookies-refused' ] );
412
 
413
  // show revoke notice if enabled
414
- if ( cnArgs.revoke_cookies == 1 && cnArgs.revoke_cookies_opt === 'automatic' )
415
  this.showRevokeNotice();
416
  }
417
 
@@ -425,6 +497,17 @@
425
  _this.setStatus( this.dataset.cookieSet );
426
  } );
427
  }
 
 
 
 
 
 
 
 
 
 
 
428
 
429
  // handle revoke buttons click
430
  for ( var i = 0; i < revokeButtons.length; i++ ) {
90
  var _this = this;
91
 
92
  // remove listening to scroll event
93
+ if ( cnArgs.onScroll === '1' )
94
  window.removeEventListener( 'scroll', this.handleScroll );
95
 
96
  var date = new Date(),
131
  this.hideCookieNotice();
132
 
133
  // show revoke notice if enabled
134
+ if ( cnArgs.revokeCookiesOpt === 'automatic' ) {
135
  // show cookie notice after the revoke is hidden
136
  this.noticeContainer.addEventListener( 'animationend', function handler() {
137
  _this.noticeContainer.removeEventListener( 'animationend', handler );
328
  if ( scrollTop > parseInt( cnArgs.onScrollOffset ) )
329
  this.setStatus( 'accept' );
330
  };
331
+
332
+ // adjust the notice offset
333
+ this.adjustOffset = function() {
334
+ var coronabarContainer = document.getElementById( 'coronabar' ),
335
+ adminbarContainer = document.getElementById( 'wpadminbar' ),
336
+ coronabarOffset = 0,
337
+ adminbarOffset = 0;
338
+
339
+ // adjust when admin bar is visible
340
+ if ( cnArgs.position === 'top' && adminbarContainer !== null ) {
341
+ adminbarOffset = adminbarContainer.offsetHeight;
342
+
343
+ this.noticeContainer.style.top = adminbarOffset + 'px';
344
+ }
345
+
346
+ // adjust when coronabar is visible
347
+ if ( coronabarContainer !== null ) {
348
+ coronabarOffset = coronabarContainer.offsetHeight - 1;
349
+
350
+ if ( cnArgs.position === 'top' ) {
351
+ coronabarContainer.style.top = adminbarOffset + 'px';
352
+
353
+ this.noticeContainer.style.top = coronabarOffset + adminbarOffset + 'px';
354
+ } else {
355
+ this.noticeContainer.style.bottom = coronabarOffset + 'px';
356
+ }
357
+ }
358
+ }
359
 
360
  // cross browser compatible closest function
361
  this.getClosest = function ( elem, selector ) {
393
  this.noticeContainer = document.getElementById( 'cookie-notice' );
394
 
395
  var cookieButtons = document.getElementsByClassName( 'cn-set-cookie' ),
396
+ revokeButtons = document.getElementsByClassName( 'cn-revoke-cookie' ),
397
+ closeIcon = document.getElementById( 'cn-close-notice' );
398
 
399
  // add effect class
400
  this.noticeContainer.classList.add( 'cn-effect-' + cnArgs.hideEffect );
401
+
402
+ // adjust on init
403
+ _this.adjustOffset();
404
+
405
+ // adjust on resize
406
+ window.addEventListener( 'resize', function( event ) {
407
+ _this.adjustOffset();
408
+ } );
409
+
410
+ // adjust when coronabar is active
411
+ if ( cnArgs.coronabarActive === '1' ) {
412
+ // on display
413
+ document.addEventListener( 'display.coronabar', function( event ) {
414
+ _this.adjustOffset();
415
+ } );
416
+ // on hide
417
+ document.addEventListener( 'hide.coronabar', function( event ) {
418
+ _this.adjustOffset();
419
+ } );
420
+ // on save data
421
+ document.addEventListener( 'saveData.coronabar', function( event ) {
422
+ var casesData = event.detail;
423
+
424
+ if ( casesData !== null ) {
425
+ // alpha JS request // no jQuery
426
+ var request = new XMLHttpRequest();
427
+
428
+ request.open( 'POST', cnArgs.ajaxUrl, true );
429
+ request.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded;' );
430
+ request.onload = function () {
431
+ if ( this.status >= 200 && this.status < 400 ) {
432
+ // ff successful
433
+ } else {
434
+ // if fail
435
+ }
436
+ };
437
+ request.onerror = function () {
438
+ // connection error
439
+ };
440
+ request.send( 'action=cn_save_cases&nonce=' + cnArgs.nonce + '&data=' + JSON.stringify( casesData ) );
441
+ }
442
+ } );
443
+ }
444
 
445
  /*
446
  // add refuse class
447
+ this.noticeContainer.classList.add( cnArgs.refuse === '1' ? 'cn-refuse-active' : 'cn-refuse-inactive' );
448
 
449
  // add revoke class
450
+ if ( cnArgs.revokeCookies === '1' ) {
451
  this.noticeContainer.classList.add( 'cn-revoke-active' );
452
 
453
  // add revoke type class (manual or automatic)
454
+ this.noticeContainer.classList.add( 'cn-revoke-' + cnArgs.revokeCookiesOpt );
455
  } else {
456
  this.noticeContainer.classList.add( 'cn-revoke-inactive' );
457
  }
460
  // check cookies status
461
  if ( this.cookiesAccepted === null ) {
462
  // handle on scroll
463
+ if ( cnArgs.onScroll === '1' )
464
  window.addEventListener( 'scroll', function ( e ) {
465
  _this.handleScroll();
466
  } );
467
 
468
  // handle on click
469
+ if ( cnArgs.onClick === '1' )
470
  window.addEventListener( 'click', function ( e ) {
471
  var outerContainer = _this.getClosest( e.target, '#cookie-notice' );
472
 
483
  this.setBodyClass( [ 'cookies-set', this.cookiesAccepted === true ? 'cookies-accepted' : 'cookies-refused' ] );
484
 
485
  // show revoke notice if enabled
486
+ if ( cnArgs.revokeCookies === '1' && cnArgs.revokeCookiesOpt === 'automatic' )
487
  this.showRevokeNotice();
488
  }
489
 
497
  _this.setStatus( this.dataset.cookieSet );
498
  } );
499
  }
500
+
501
+ // handle close icon
502
+ if ( closeIcon !== 'null' ) {
503
+ closeIcon.addEventListener( 'click', function ( e ) {
504
+ e.preventDefault();
505
+ // Chrome double click event fix
506
+ e.stopPropagation();
507
+
508
+ _this.setStatus( this.dataset.cookieSet );
509
+ } );
510
+ }
511
 
512
  // handle revoke buttons click
513
  for ( var i = 0; i < revokeButtons.length; i++ ) {
js/front.min.js CHANGED
@@ -1 +1 @@
1
- !function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}"function"!=typeof window.CustomEvent&&(e.prototype=window.Event.prototype,window.CustomEvent=e)}(),function(){function t(e){return new RegExp("(^| )"+e+"( |$)")}function e(e,t,n){for(var i=0;i<e.length;i++)t.call(n,e[i])}function n(e){this.element=e}n.prototype={add:function(){e(arguments,function(e){this.contains(e)||(this.element.className+=0<this.element.className.length?" "+e:e)},this)},remove:function(){e(arguments,function(e){this.element.className=this.element.className.replace(t(e),"")},this)},toggle:function(e){return this.contains(e)?(this.remove(e),!1):(this.add(e),!0)},contains:function(e){return t(e).test(this.element.className)},replace:function(e,t){this.remove(e),this.add(t)}},"classList"in Element.prototype||Object.defineProperty(Element.prototype,"classList",{get:function(){return new n(this)}}),window.DOMTokenList&&null==DOMTokenList.prototype.replace&&(DOMTokenList.prototype.replace=n.prototype.replace)}(),function(a,r){var e=new function(){this.cookiesAccepted=null,this.noticeContainer=null,this.setStatus=function(e){var t=this;"yes"===cnArgs.onScroll&&a.removeEventListener("scroll",this.handleScroll);var n=new Date,i=new Date;"accept"===e?(e="true",i.setTime(parseInt(n.getTime())+1e3*parseInt(cnArgs.cookieTime))):(e="false",i.setTime(parseInt(n.getTime())+1e3*parseInt(cnArgs.cookieTimeRejected))),r.cookie=cnArgs.cookieName+"="+e+";expires="+i.toUTCString()+";"+(cnArgs.cookieDomain?"domain="+cnArgs.cookieDomain+";":"")+(cnArgs.cookiePath?"path="+cnArgs.cookiePath+";":"")+("1"===cnArgs.secure?"secure;":""),this.cookiesAccepted="true"===e;var o=new CustomEvent("setCookieNotice",{detail:{value:e,time:n,expires:i,data:cnArgs}});if(r.dispatchEvent(o),this.setBodyClass(["cookies-set","true"===e?"cookies-accepted":"cookies-refused"]),this.hideCookieNotice(),"automatic"===cnArgs.revoke_cookies_opt&&(this.noticeContainer.addEventListener("animationend",function e(){t.noticeContainer.removeEventListener("animationend",e),t.showRevokeNotice()}),this.noticeContainer.addEventListener("webkitAnimationEnd",function e(){t.noticeContainer.removeEventListener("webkitAnimationEnd",e),t.showRevokeNotice()})),"1"===cnArgs.redirection&&("true"===e&&null===this.cookiesAccepted||e!==this.cookiesAccepted&&null!==this.cookiesAccepted)){var s=a.location.protocol+"//",c=a.location.host+"/"+a.location.pathname;"1"===cnArgs.cache?(s=s+c.replace("//","/")+(""===a.location.search?"?":a.location.search+"&")+"cn-reloaded=1"+a.location.hash,a.location.href=s):(s=s+c.replace("//","/")+a.location.search+a.location.hash,a.location.reload(!0))}else;},this.getStatus=function(e){var t=("; "+r.cookie).split("; cookie_notice_accepted=");if(2!==t.length)return null;var n=t.pop().split(";").shift();return e?"true"===n:n},this.showCookieNotice=function(){var t=this,e=new CustomEvent("showCookieNotice",{detail:{data:cnArgs}});r.dispatchEvent(e),this.noticeContainer.classList.remove("cookie-notice-hidden"),this.noticeContainer.classList.add("cn-animated"),this.noticeContainer.classList.add("cookie-notice-visible"),this.noticeContainer.addEventListener("animationend",function e(){t.noticeContainer.removeEventListener("animationend",e),t.noticeContainer.classList.remove("cn-animated")}),this.noticeContainer.addEventListener("webkitAnimationEnd",function e(){t.noticeContainer.removeEventListener("webkitAnimationEnd",e),t.noticeContainer.classList.remove("cn-animated")})},this.hideCookieNotice=function(){var t=this,e=new CustomEvent("hideCookieNotice",{detail:{data:cnArgs}});r.dispatchEvent(e),this.noticeContainer.classList.add("cn-animated"),this.noticeContainer.classList.remove("cookie-notice-visible"),this.noticeContainer.addEventListener("animationend",function e(){t.noticeContainer.removeEventListener("animationend",e),t.noticeContainer.classList.remove("cn-animated"),t.noticeContainer.classList.add("cookie-notice-hidden")}),this.noticeContainer.addEventListener("webkitAnimationEnd",function e(){t.noticeContainer.removeEventListener("webkitAnimationEnd",e),t.noticeContainer.classList.remove("cn-animated"),t.noticeContainer.classList.add("cookie-notice-hidden")})},this.showRevokeNotice=function(){var t=this,e=new CustomEvent("showRevokeNotice",{detail:{data:cnArgs}});r.dispatchEvent(e),this.noticeContainer.classList.remove("cookie-revoke-hidden"),this.noticeContainer.classList.add("cn-animated"),this.noticeContainer.classList.add("cookie-revoke-visible"),this.noticeContainer.addEventListener("animationend",function e(){t.noticeContainer.removeEventListener("animationend",e),t.noticeContainer.classList.remove("cn-animated")}),this.noticeContainer.addEventListener("webkitAnimationEnd",function e(){t.noticeContainer.removeEventListener("webkitAnimationEnd",e),t.noticeContainer.classList.remove("cn-animated")})},this.hideRevokeNotice=function(){var t=this,e=new CustomEvent("hideRevokeNotice",{detail:{data:cnArgs}});r.dispatchEvent(e),this.noticeContainer.classList.add("cn-animated"),this.noticeContainer.classList.remove("cookie-revoke-visible"),this.noticeContainer.addEventListener("animationend",function e(){t.noticeContainer.removeEventListener("animationend",e),t.noticeContainer.classList.remove("cn-animated"),t.noticeContainer.classList.add("cookie-revoke-hidden")}),this.noticeContainer.addEventListener("webkitAnimationEnd",function e(){t.noticeContainer.removeEventListener("webkitAnimationEnd",e),t.noticeContainer.classList.remove("cn-animated"),t.noticeContainer.classList.add("cookie-revoke-hidden")})},this.setBodyClass=function(e){r.body.classList.remove("cookies-revoke"),r.body.classList.remove("cookies-accepted"),r.body.classList.remove("cookies-refused"),r.body.classList.remove("cookies-set"),r.body.classList.remove("cookies-not-set");for(var t=0;t<e.length;t++)r.body.classList.add(e[t])},this.handleScroll=function(){(a.pageYOffset||(r.documentElement||r.body.parentNode||r.body).scrollTop)>parseInt(cnArgs.onScrollOffset)&&this.setStatus("accept")},this.getClosest=function(e,t){for(Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),n=t.length;0<=--n&&t.item(n)!==this;);return-1<n});e&&e!==r;e=e.parentNode)if(e.matches(t))return e;return null},this.init=function(){var t=this;this.cookiesAccepted=this.getStatus(!0),this.noticeContainer=r.getElementById("cookie-notice");var e=r.getElementsByClassName("cn-set-cookie"),n=r.getElementsByClassName("cn-revoke-cookie");this.noticeContainer.classList.add("cn-effect-"+cnArgs.hideEffect),null===this.cookiesAccepted?("yes"===cnArgs.onScroll&&a.addEventListener("scroll",function(e){t.handleScroll()}),"yes"===cnArgs.onClick&&a.addEventListener("click",function(e){null===t.getClosest(e.target,"#cookie-notice")&&t.setStatus("accept")},!0),this.setBodyClass(["cookies-not-set"]),this.showCookieNotice()):(this.setBodyClass(["cookies-set",!0===this.cookiesAccepted?"cookies-accepted":"cookies-refused"]),1==cnArgs.revoke_cookies&&"automatic"===cnArgs.revoke_cookies_opt&&this.showRevokeNotice());for(var i=0;i<e.length;i++)e[i].addEventListener("click",function(e){e.preventDefault(),e.stopPropagation(),t.setStatus(this.dataset.cookieSet)});for(i=0;i<n.length;i++)n[i].addEventListener("click",function(e){e.preventDefault(),t.noticeContainer.classList.contains("cookie-revoke-visible")?(t.hideRevokeNotice(),t.noticeContainer.addEventListener("animationend",function e(){t.noticeContainer.removeEventListener("animationend",e),t.showCookieNotice()}),t.noticeContainer.addEventListener("webkitAnimationEnd",function e(){t.noticeContainer.removeEventListener("webkitAnimationEnd",e),t.showCookieNotice()})):t.noticeContainer.classList.contains("cookie-notice-hidden")&&t.noticeContainer.classList.contains("cookie-revoke-hidden")&&t.showCookieNotice()})}};a.addEventListener("load",function(){e.init()},!1)}(window,document);
1
+ !function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}"function"!=typeof window.CustomEvent&&(e.prototype=window.Event.prototype,window.CustomEvent=e)}(),function(){function t(e){return new RegExp("(^| )"+e+"( |$)")}function e(e,t,n){for(var i=0;i<e.length;i++)t.call(n,e[i])}function n(e){this.element=e}n.prototype={add:function(){e(arguments,function(e){this.contains(e)||(this.element.className+=0<this.element.className.length?" "+e:e)},this)},remove:function(){e(arguments,function(e){this.element.className=this.element.className.replace(t(e),"")},this)},toggle:function(e){return this.contains(e)?(this.remove(e),!1):(this.add(e),!0)},contains:function(e){return t(e).test(this.element.className)},replace:function(e,t){this.remove(e),this.add(t)}},"classList"in Element.prototype||Object.defineProperty(Element.prototype,"classList",{get:function(){return new n(this)}}),window.DOMTokenList&&null==DOMTokenList.prototype.replace&&(DOMTokenList.prototype.replace=n.prototype.replace)}(),function(a,r){var e=new function(){this.cookiesAccepted=null,this.noticeContainer=null,this.setStatus=function(e){var t=this;"1"===cnArgs.onScroll&&a.removeEventListener("scroll",this.handleScroll);var n=new Date,i=new Date;"accept"===e?(e="true",i.setTime(parseInt(n.getTime())+1e3*parseInt(cnArgs.cookieTime))):(e="false",i.setTime(parseInt(n.getTime())+1e3*parseInt(cnArgs.cookieTimeRejected))),r.cookie=cnArgs.cookieName+"="+e+";expires="+i.toUTCString()+";"+(cnArgs.cookieDomain?"domain="+cnArgs.cookieDomain+";":"")+(cnArgs.cookiePath?"path="+cnArgs.cookiePath+";":"")+("1"===cnArgs.secure?"secure;":""),this.cookiesAccepted="true"===e;var o=new CustomEvent("setCookieNotice",{detail:{value:e,time:n,expires:i,data:cnArgs}});if(r.dispatchEvent(o),this.setBodyClass(["cookies-set","true"===e?"cookies-accepted":"cookies-refused"]),this.hideCookieNotice(),"automatic"===cnArgs.revokeCookiesOpt&&(this.noticeContainer.addEventListener("animationend",function e(){t.noticeContainer.removeEventListener("animationend",e),t.showRevokeNotice()}),this.noticeContainer.addEventListener("webkitAnimationEnd",function e(){t.noticeContainer.removeEventListener("webkitAnimationEnd",e),t.showRevokeNotice()})),"1"===cnArgs.redirection&&("true"===e&&null===this.cookiesAccepted||e!==this.cookiesAccepted&&null!==this.cookiesAccepted)){var s=a.location.protocol+"//",c=a.location.host+"/"+a.location.pathname;"1"===cnArgs.cache?(s=s+c.replace("//","/")+(""===a.location.search?"?":a.location.search+"&")+"cn-reloaded=1"+a.location.hash,a.location.href=s):(s=s+c.replace("//","/")+a.location.search+a.location.hash,a.location.reload(!0))}else;},this.getStatus=function(e){var t=("; "+r.cookie).split("; cookie_notice_accepted=");if(2!==t.length)return null;var n=t.pop().split(";").shift();return e?"true"===n:n},this.showCookieNotice=function(){var t=this,e=new CustomEvent("showCookieNotice",{detail:{data:cnArgs}});r.dispatchEvent(e),this.noticeContainer.classList.remove("cookie-notice-hidden"),this.noticeContainer.classList.add("cn-animated"),this.noticeContainer.classList.add("cookie-notice-visible"),this.noticeContainer.addEventListener("animationend",function e(){t.noticeContainer.removeEventListener("animationend",e),t.noticeContainer.classList.remove("cn-animated")}),this.noticeContainer.addEventListener("webkitAnimationEnd",function e(){t.noticeContainer.removeEventListener("webkitAnimationEnd",e),t.noticeContainer.classList.remove("cn-animated")})},this.hideCookieNotice=function(){var t=this,e=new CustomEvent("hideCookieNotice",{detail:{data:cnArgs}});r.dispatchEvent(e),this.noticeContainer.classList.add("cn-animated"),this.noticeContainer.classList.remove("cookie-notice-visible"),this.noticeContainer.addEventListener("animationend",function e(){t.noticeContainer.removeEventListener("animationend",e),t.noticeContainer.classList.remove("cn-animated"),t.noticeContainer.classList.add("cookie-notice-hidden")}),this.noticeContainer.addEventListener("webkitAnimationEnd",function e(){t.noticeContainer.removeEventListener("webkitAnimationEnd",e),t.noticeContainer.classList.remove("cn-animated"),t.noticeContainer.classList.add("cookie-notice-hidden")})},this.showRevokeNotice=function(){var t=this,e=new CustomEvent("showRevokeNotice",{detail:{data:cnArgs}});r.dispatchEvent(e),this.noticeContainer.classList.remove("cookie-revoke-hidden"),this.noticeContainer.classList.add("cn-animated"),this.noticeContainer.classList.add("cookie-revoke-visible"),this.noticeContainer.addEventListener("animationend",function e(){t.noticeContainer.removeEventListener("animationend",e),t.noticeContainer.classList.remove("cn-animated")}),this.noticeContainer.addEventListener("webkitAnimationEnd",function e(){t.noticeContainer.removeEventListener("webkitAnimationEnd",e),t.noticeContainer.classList.remove("cn-animated")})},this.hideRevokeNotice=function(){var t=this,e=new CustomEvent("hideRevokeNotice",{detail:{data:cnArgs}});r.dispatchEvent(e),this.noticeContainer.classList.add("cn-animated"),this.noticeContainer.classList.remove("cookie-revoke-visible"),this.noticeContainer.addEventListener("animationend",function e(){t.noticeContainer.removeEventListener("animationend",e),t.noticeContainer.classList.remove("cn-animated"),t.noticeContainer.classList.add("cookie-revoke-hidden")}),this.noticeContainer.addEventListener("webkitAnimationEnd",function e(){t.noticeContainer.removeEventListener("webkitAnimationEnd",e),t.noticeContainer.classList.remove("cn-animated"),t.noticeContainer.classList.add("cookie-revoke-hidden")})},this.setBodyClass=function(e){r.body.classList.remove("cookies-revoke"),r.body.classList.remove("cookies-accepted"),r.body.classList.remove("cookies-refused"),r.body.classList.remove("cookies-set"),r.body.classList.remove("cookies-not-set");for(var t=0;t<e.length;t++)r.body.classList.add(e[t])},this.handleScroll=function(){(a.pageYOffset||(r.documentElement||r.body.parentNode||r.body).scrollTop)>parseInt(cnArgs.onScrollOffset)&&this.setStatus("accept")},this.adjustOffset=function(){var e=r.getElementById("coronabar"),t=r.getElementById("wpadminbar"),n=0,i=0;"top"===cnArgs.position&&null!==t&&(i=t.offsetHeight,this.noticeContainer.style.top=i+"px"),null!==e&&(n=e.offsetHeight-1,"top"===cnArgs.position?(e.style.top=i+"px",this.noticeContainer.style.top=n+i+"px"):this.noticeContainer.style.bottom=n+"px")},this.getClosest=function(e,t){for(Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),n=t.length;0<=--n&&t.item(n)!==this;);return-1<n});e&&e!==r;e=e.parentNode)if(e.matches(t))return e;return null},this.init=function(){var t=this;this.cookiesAccepted=this.getStatus(!0),this.noticeContainer=r.getElementById("cookie-notice");var e=r.getElementsByClassName("cn-set-cookie"),n=r.getElementsByClassName("cn-revoke-cookie"),i=r.getElementById("cn-close-notice");this.noticeContainer.classList.add("cn-effect-"+cnArgs.hideEffect),t.adjustOffset(),a.addEventListener("resize",function(e){t.adjustOffset()}),"1"===cnArgs.coronabarActive&&(r.addEventListener("display.coronabar",function(e){t.adjustOffset()}),r.addEventListener("hide.coronabar",function(e){t.adjustOffset()}),r.addEventListener("saveData.coronabar",function(e){var t=e.detail;if(null!==t){var n=new XMLHttpRequest;n.open("POST",cnArgs.ajaxUrl,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded;"),n.onload=function(){200<=this.status&&this.status},n.onerror=function(){},n.send("action=cn_save_cases&nonce="+cnArgs.nonce+"&data="+JSON.stringify(t))}})),null===this.cookiesAccepted?("1"===cnArgs.onScroll&&a.addEventListener("scroll",function(e){t.handleScroll()}),"1"===cnArgs.onClick&&a.addEventListener("click",function(e){null===t.getClosest(e.target,"#cookie-notice")&&t.setStatus("accept")},!0),this.setBodyClass(["cookies-not-set"]),this.showCookieNotice()):(this.setBodyClass(["cookies-set",!0===this.cookiesAccepted?"cookies-accepted":"cookies-refused"]),"1"===cnArgs.revokeCookies&&"automatic"===cnArgs.revokeCookiesOpt&&this.showRevokeNotice());for(var o=0;o<e.length;o++)e[o].addEventListener("click",function(e){e.preventDefault(),e.stopPropagation(),t.setStatus(this.dataset.cookieSet)});"null"!==i&&i.addEventListener("click",function(e){e.preventDefault(),e.stopPropagation(),t.setStatus(this.dataset.cookieSet)});for(o=0;o<n.length;o++)n[o].addEventListener("click",function(e){e.preventDefault(),t.noticeContainer.classList.contains("cookie-revoke-visible")?(t.hideRevokeNotice(),t.noticeContainer.addEventListener("animationend",function e(){t.noticeContainer.removeEventListener("animationend",e),t.showCookieNotice()}),t.noticeContainer.addEventListener("webkitAnimationEnd",function e(){t.noticeContainer.removeEventListener("webkitAnimationEnd",e),t.showCookieNotice()})):t.noticeContainer.classList.contains("cookie-notice-hidden")&&t.noticeContainer.classList.contains("cookie-revoke-hidden")&&t.showCookieNotice()})}};a.addEventListener("load",function(){e.init()},!1)}(window,document);
languages/cookie-notice.pot CHANGED
@@ -2,7 +2,7 @@
2
  msgid ""
3
  msgstr ""
4
  "Project-Id-Version: Cookie Notice\n"
5
- "POT-Creation-Date: 2020-02-17 22:55+0100\n"
6
  "PO-Revision-Date: 2015-03-24 11:30+0100\n"
7
  "Last-Translator: Bartosz Arendt <info@dfactory.eu>\n"
8
  "Language-Team: dFactory <info@dfactory.eu>\n"
@@ -16,402 +16,519 @@ msgstr ""
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
  "X-Poedit-SearchPath-0: ..\n"
18
 
19
- #: ../cookie-notice.php:169
20
  msgid "Top"
21
  msgstr ""
22
 
23
- #: ../cookie-notice.php:170
24
  msgid "Bottom"
25
  msgstr ""
26
 
27
- #: ../cookie-notice.php:174 ../cookie-notice.php:219
28
  msgid "None"
29
  msgstr ""
30
 
31
- #: ../cookie-notice.php:175
32
  msgid "Light"
33
  msgstr ""
34
 
35
- #: ../cookie-notice.php:176
36
  msgid "Dark"
37
  msgstr ""
38
 
39
- #: ../cookie-notice.php:180
40
  msgid "Automatic"
41
  msgstr ""
42
 
43
- #: ../cookie-notice.php:181
44
  msgid "Manual"
45
  msgstr ""
46
 
47
- #: ../cookie-notice.php:185
48
  msgid "Page link"
49
  msgstr ""
50
 
51
- #: ../cookie-notice.php:186
52
  msgid "Custom link"
53
  msgstr ""
54
 
55
- #: ../cookie-notice.php:195
56
  msgid "Banner"
57
  msgstr ""
58
 
59
- #: ../cookie-notice.php:196 ../cookie-notice.php:639
60
  msgid "Message"
61
  msgstr ""
62
 
63
- #: ../cookie-notice.php:200
64
  msgid "Text color"
65
  msgstr ""
66
 
67
- #: ../cookie-notice.php:201
68
  msgid "Bar color"
69
  msgstr ""
70
 
71
- #: ../cookie-notice.php:207
72
  msgid "An hour"
73
  msgstr ""
74
 
75
- #: ../cookie-notice.php:208
76
  msgid "1 day"
77
  msgstr ""
78
 
79
- #: ../cookie-notice.php:209
80
  msgid "1 week"
81
  msgstr ""
82
 
83
- #: ../cookie-notice.php:210
84
  msgid "1 month"
85
  msgstr ""
86
 
87
- #: ../cookie-notice.php:211
88
  msgid "3 months"
89
  msgstr ""
90
 
91
- #: ../cookie-notice.php:212
92
  msgid "6 months"
93
  msgstr ""
94
 
95
- #: ../cookie-notice.php:213
96
  msgid "1 year"
97
  msgstr ""
98
 
99
- #: ../cookie-notice.php:214
100
  msgid "infinity"
101
  msgstr ""
102
 
103
- #: ../cookie-notice.php:220
104
  msgid "Fade"
105
  msgstr ""
106
 
107
- #: ../cookie-notice.php:221
108
  msgid "Slide"
109
  msgstr ""
110
 
111
- #: ../cookie-notice.php:225
112
  msgid "Header"
113
  msgstr ""
114
 
115
- #: ../cookie-notice.php:226
116
  msgid "Footer"
117
  msgstr ""
118
 
119
- #: ../cookie-notice.php:230
120
  msgid "We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it."
121
  msgstr ""
122
 
123
- #: ../cookie-notice.php:231
124
  msgid "Ok"
125
  msgstr ""
126
 
127
- #: ../cookie-notice.php:232
128
  msgid "No"
129
  msgstr ""
130
 
131
- #: ../cookie-notice.php:233
132
  msgid "You can revoke your consent any time using the Revoke consent button."
133
  msgstr ""
134
 
135
- #: ../cookie-notice.php:234 ../cookie-notice.php:643
136
  msgid "Revoke consent"
137
  msgstr ""
138
 
139
- #: ../cookie-notice.php:235 ../cookie-notice.php:641
140
  msgid "Privacy policy"
141
  msgstr ""
142
 
143
- #: ../cookie-notice.php:330
144
- #, php-format
145
- msgid "Hey, you've been using <strong>Cookie Notice</strong> for more than %s."
146
  msgstr ""
147
 
148
- #: ../cookie-notice.php:330
149
- msgid "Could you please do me a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation."
150
  msgstr ""
151
 
152
- #: ../cookie-notice.php:330
153
- msgid "Your help is much appreciated. Thank you very much"
154
  msgstr ""
155
 
156
- #: ../cookie-notice.php:330
157
- #, php-format
158
- msgid "founder of <a href=\"%s\" target=\"_blank\">dFactory</a> plugins."
159
  msgstr ""
160
 
161
- #: ../cookie-notice.php:330
162
- #, php-format
163
- msgid "<a href=\"%s\" class=\"cn-dismissible-notice\" target=\"_blank\" rel=\"noopener\">Ok, you deserve it</a><br /><a href=\"javascript:void(0);\" class=\"cn-dismissible-notice cn-delay-notice\" rel=\"noopener\">Nope, maybe later</a><br /><a href=\"javascript:void(0);\" class=\"cn-dismissible-notice\" rel=\"noopener\">I already did</a>"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
164
  msgstr ""
165
 
166
- #: ../cookie-notice.php:585 ../cookie-notice.php:596 ../cookie-notice.php:599
167
- #: ../cookie-notice.php:1220
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
168
  msgid "Cookie Notice"
169
  msgstr ""
170
 
171
- #: ../cookie-notice.php:601
172
  msgid "Need support?"
173
  msgstr ""
174
 
175
- #: ../cookie-notice.php:602
176
  #, php-format
177
  msgid "If you are having problems with this plugin, please browse it's <a href=\"%s\" target=\"_blank\">Documentation</a> or talk about them in the <a href=\"%s\" target=\"_blank\">Support forum</a>"
178
  msgstr ""
179
 
180
- #: ../cookie-notice.php:604
181
  msgid "Do you like this plugin?"
182
  msgstr ""
183
 
184
- #: ../cookie-notice.php:605
185
  #, php-format
186
  msgid "<a href=\"%s\" target=\"_blank\">Rate it 5</a> on WordPress.org"
187
  msgstr ""
188
 
189
- #: ../cookie-notice.php:606
190
  #, php-format
191
  msgid "Blog about it & link to the <a href=\"%s\" target=\"_blank\">plugin page</a>."
192
  msgstr ""
193
 
194
- #: ../cookie-notice.php:607
195
  #, php-format
196
  msgid "Check out our other <a href=\"%s\" target=\"_blank\">WordPress plugins</a>."
197
  msgstr ""
198
 
199
- #: ../cookie-notice.php:622
200
  msgid "Reset to defaults"
201
  msgstr ""
202
 
203
- #: ../cookie-notice.php:638
204
  msgid "Configuration"
205
  msgstr ""
206
 
207
- #: ../cookie-notice.php:640
208
  msgid "Button text"
209
  msgstr ""
210
 
211
- #: ../cookie-notice.php:642
212
  msgid "Refuse consent"
213
  msgstr ""
214
 
215
- #: ../cookie-notice.php:644
216
  msgid "Script blocking"
217
  msgstr ""
218
 
219
- #: ../cookie-notice.php:645
220
  msgid "Reloading"
221
  msgstr ""
222
 
223
- #: ../cookie-notice.php:646
224
  msgid "On scroll"
225
  msgstr ""
226
 
227
- #: ../cookie-notice.php:647
228
  msgid "On click"
229
  msgstr ""
230
 
231
- #: ../cookie-notice.php:648
232
  msgid "Accepted expiry"
233
  msgstr ""
234
 
235
- #: ../cookie-notice.php:649
236
  msgid "Rejected expiry"
237
  msgstr ""
238
 
239
- #: ../cookie-notice.php:650
240
  msgid "Script placement"
241
  msgstr ""
242
 
243
- #: ../cookie-notice.php:651
244
  msgid "Deactivation"
245
  msgstr ""
246
 
247
- #: ../cookie-notice.php:654
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
248
  msgid "Design"
249
  msgstr ""
250
 
251
- #: ../cookie-notice.php:655
252
  msgid "Position"
253
  msgstr ""
254
 
255
- #: ../cookie-notice.php:656
256
  msgid "Animation"
257
  msgstr ""
258
 
259
- #: ../cookie-notice.php:657
260
  msgid "Button style"
261
  msgstr ""
262
 
263
- #: ../cookie-notice.php:658
264
  msgid "Button class"
265
  msgstr ""
266
 
267
- #: ../cookie-notice.php:659
268
  msgid "Colors"
269
  msgstr ""
270
 
271
- #: ../cookie-notice.php:674
272
- msgid "Enable if you want all plugin data to be deleted on deactivation."
 
 
 
 
 
 
 
 
273
  msgstr ""
274
 
275
- #: ../cookie-notice.php:686
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
276
  msgid "Enter the cookie notice message."
277
  msgstr ""
278
 
279
- #: ../cookie-notice.php:699
280
  msgid "The text of the option to accept the notice and make it disappear."
281
  msgstr ""
282
 
283
- #: ../cookie-notice.php:710
284
  msgid "Enable to give to the user the possibility to refuse third party non functional cookies."
285
  msgstr ""
286
 
287
- #: ../cookie-notice.php:714
288
  msgid "The text of the button to refuse the consent."
289
  msgstr ""
290
 
291
- #: ../cookie-notice.php:732
292
  msgid "Head"
293
  msgstr ""
294
 
295
- #: ../cookie-notice.php:733
296
  msgid "Body"
297
  msgstr ""
298
 
299
- #: ../cookie-notice.php:736
300
  msgid "The code to be used in your site header, before the closing head tag."
301
  msgstr ""
302
 
303
- #: ../cookie-notice.php:740
304
  msgid "The code to be used in your site footer, before the closing body tag."
305
  msgstr ""
306
 
307
- #: ../cookie-notice.php:744
308
  msgid "Enter non functional cookies Javascript code here (for e.g. Google Analitycs) to be used after the notice is accepted."
309
  msgstr ""
310
 
311
- #: ../cookie-notice.php:744
312
  msgid "To get the user consent status use the <code>cn_cookies_accepted()</code> function."
313
  msgstr ""
314
 
315
- #: ../cookie-notice.php:755
316
  msgid "Enable to give to the user the possibility to revoke their consent <i>(requires \"Refuse consent\" option enabled)</i>."
317
  msgstr ""
318
 
319
- #: ../cookie-notice.php:758
320
  msgid "Enter the revoke message."
321
  msgstr ""
322
 
323
- #: ../cookie-notice.php:760
324
  msgid "The text of the button to revoke the consent."
325
  msgstr ""
326
 
327
- #: ../cookie-notice.php:768
328
  msgid "Select the method for displaying the revoke button - automatic (in the banner) or manual using <code>[cookies_revoke]</code> shortcode."
329
  msgstr ""
330
 
331
- #: ../cookie-notice.php:779
332
  msgid "Enable to reload the page after the notice is accepted."
333
  msgstr ""
334
 
335
- #: ../cookie-notice.php:802
336
  msgid "Enable privacy policy link."
337
  msgstr ""
338
 
339
- #: ../cookie-notice.php:805
340
  msgid "The text of the privacy policy button."
341
  msgstr ""
342
 
343
- #: ../cookie-notice.php:817
344
  msgid "Select where to redirect user for more information."
345
  msgstr ""
346
 
347
- #: ../cookie-notice.php:820
348
  msgid "-- select page --"
349
  msgstr ""
350
 
351
- #: ../cookie-notice.php:831
352
  msgid "Select from one of your site's pages."
353
  msgstr ""
354
 
355
- #: ../cookie-notice.php:837
356
  msgid "Synchronize with WordPress Privacy Policy page."
357
  msgstr ""
358
 
359
- #: ../cookie-notice.php:844
360
  msgid "Enter the full URL starting with http(s)://"
361
  msgstr ""
362
 
363
- #: ../cookie-notice.php:887
364
  msgid "The amount of time that the cookie should be stored for when user accepts the notice."
365
  msgstr ""
366
 
367
- #: ../cookie-notice.php:910
368
  msgid "The amount of time that the cookie should be stored for when the user doesn't accept the notice."
369
  msgstr ""
370
 
371
- #: ../cookie-notice.php:928
372
  msgid "Select where all the plugin scripts should be placed."
373
  msgstr ""
374
 
375
- #: ../cookie-notice.php:948
376
  msgid "Select location for the notice."
377
  msgstr ""
378
 
379
- #: ../cookie-notice.php:969
380
  msgid "Select the animation style."
381
  msgstr ""
382
 
383
- #: ../cookie-notice.php:980
384
  msgid "Enable to accept the notice when user scrolls."
385
  msgstr ""
386
 
387
- #: ../cookie-notice.php:983
388
  msgid "Number of pixels user has to scroll to accept the notice and make it disappear."
389
  msgstr ""
390
 
391
- #: ../cookie-notice.php:994
392
  msgid "Enable to accept the notice on any click on the page."
393
  msgstr ""
394
 
395
- #: ../cookie-notice.php:1014
 
 
 
 
396
  msgid "Select the buttons style."
397
  msgstr ""
398
 
399
- #: ../cookie-notice.php:1027
400
  msgid "Enter additional button CSS classes separated by spaces."
401
  msgstr ""
402
 
403
- #: ../cookie-notice.php:1166
 
 
 
 
404
  msgid "Settings restored to defaults."
405
  msgstr ""
406
 
407
- #: ../cookie-notice.php:1303
408
  msgid "Support"
409
  msgstr ""
410
 
411
- #: ../cookie-notice.php:1320
412
  msgid "Settings"
413
  msgstr ""
414
 
415
- #: ../cookie-notice.php:1392
416
  msgid "Are you sure you want to reset these settings to defaults?"
417
  msgstr ""
2
  msgid ""
3
  msgstr ""
4
  "Project-Id-Version: Cookie Notice\n"
5
+ "POT-Creation-Date: 2020-04-07 00:08+0200\n"
6
  "PO-Revision-Date: 2015-03-24 11:30+0100\n"
7
  "Last-Translator: Bartosz Arendt <info@dfactory.eu>\n"
8
  "Language-Team: dFactory <info@dfactory.eu>\n"
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
  "X-Poedit-SearchPath-0: ..\n"
18
 
19
+ #: ../cookie-notice.php:197
20
  msgid "Top"
21
  msgstr ""
22
 
23
+ #: ../cookie-notice.php:198
24
  msgid "Bottom"
25
  msgstr ""
26
 
27
+ #: ../cookie-notice.php:202 ../cookie-notice.php:247
28
  msgid "None"
29
  msgstr ""
30
 
31
+ #: ../cookie-notice.php:203
32
  msgid "Light"
33
  msgstr ""
34
 
35
+ #: ../cookie-notice.php:204
36
  msgid "Dark"
37
  msgstr ""
38
 
39
+ #: ../cookie-notice.php:208
40
  msgid "Automatic"
41
  msgstr ""
42
 
43
+ #: ../cookie-notice.php:209
44
  msgid "Manual"
45
  msgstr ""
46
 
47
+ #: ../cookie-notice.php:213
48
  msgid "Page link"
49
  msgstr ""
50
 
51
+ #: ../cookie-notice.php:214
52
  msgid "Custom link"
53
  msgstr ""
54
 
55
+ #: ../cookie-notice.php:223
56
  msgid "Banner"
57
  msgstr ""
58
 
59
+ #: ../cookie-notice.php:224 ../cookie-notice.php:709
60
  msgid "Message"
61
  msgstr ""
62
 
63
+ #: ../cookie-notice.php:228
64
  msgid "Text color"
65
  msgstr ""
66
 
67
+ #: ../cookie-notice.php:229
68
  msgid "Bar color"
69
  msgstr ""
70
 
71
+ #: ../cookie-notice.php:235
72
  msgid "An hour"
73
  msgstr ""
74
 
75
+ #: ../cookie-notice.php:236
76
  msgid "1 day"
77
  msgstr ""
78
 
79
+ #: ../cookie-notice.php:237
80
  msgid "1 week"
81
  msgstr ""
82
 
83
+ #: ../cookie-notice.php:238
84
  msgid "1 month"
85
  msgstr ""
86
 
87
+ #: ../cookie-notice.php:239
88
  msgid "3 months"
89
  msgstr ""
90
 
91
+ #: ../cookie-notice.php:240
92
  msgid "6 months"
93
  msgstr ""
94
 
95
+ #: ../cookie-notice.php:241
96
  msgid "1 year"
97
  msgstr ""
98
 
99
+ #: ../cookie-notice.php:242
100
  msgid "infinity"
101
  msgstr ""
102
 
103
+ #: ../cookie-notice.php:248
104
  msgid "Fade"
105
  msgstr ""
106
 
107
+ #: ../cookie-notice.php:249
108
  msgid "Slide"
109
  msgstr ""
110
 
111
+ #: ../cookie-notice.php:253
112
  msgid "Header"
113
  msgstr ""
114
 
115
+ #: ../cookie-notice.php:254
116
  msgid "Footer"
117
  msgstr ""
118
 
119
+ #: ../cookie-notice.php:258
120
  msgid "We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it."
121
  msgstr ""
122
 
123
+ #: ../cookie-notice.php:259
124
  msgid "Ok"
125
  msgstr ""
126
 
127
+ #: ../cookie-notice.php:260
128
  msgid "No"
129
  msgstr ""
130
 
131
+ #: ../cookie-notice.php:261
132
  msgid "You can revoke your consent any time using the Revoke consent button."
133
  msgstr ""
134
 
135
+ #: ../cookie-notice.php:262 ../cookie-notice.php:713
136
  msgid "Revoke consent"
137
  msgstr ""
138
 
139
+ #: ../cookie-notice.php:263 ../cookie-notice.php:711
140
  msgid "Privacy policy"
141
  msgstr ""
142
 
143
+ #: ../cookie-notice.php:266
144
+ msgid "Spread the message. Stop the virus."
 
145
  msgstr ""
146
 
147
+ #: ../cookie-notice.php:267
148
+ msgid "Hands"
149
  msgstr ""
150
 
151
+ #: ../cookie-notice.php:268
152
+ msgid "Wash often"
153
  msgstr ""
154
 
155
+ #: ../cookie-notice.php:269
156
+ msgid "Elbow"
 
157
  msgstr ""
158
 
159
+ #: ../cookie-notice.php:270
160
+ msgid "Cough into"
161
+ msgstr ""
162
+
163
+ #: ../cookie-notice.php:271
164
+ msgid "Face"
165
+ msgstr ""
166
+
167
+ #: ../cookie-notice.php:272
168
+ msgid "Don't touch"
169
+ msgstr ""
170
+
171
+ #: ../cookie-notice.php:273
172
+ msgid "Space"
173
+ msgstr ""
174
+
175
+ #: ../cookie-notice.php:274
176
+ msgid "Avoid crowds"
177
+ msgstr ""
178
+
179
+ #: ../cookie-notice.php:275
180
+ msgid "Home"
181
  msgstr ""
182
 
183
+ #: ../cookie-notice.php:276
184
+ msgid "Stay inside"
185
+ msgstr ""
186
+
187
+ #: ../cookie-notice.php:277
188
+ msgid "Confirmed"
189
+ msgstr ""
190
+
191
+ #: ../cookie-notice.php:278
192
+ msgid "Recovered"
193
+ msgstr ""
194
+
195
+ #: ../cookie-notice.php:374
196
+ msgid "Yes, I want to help"
197
+ msgstr ""
198
+
199
+ #: ../cookie-notice.php:374
200
+ msgid "No, thanks"
201
+ msgstr ""
202
+
203
+ #: ../cookie-notice.php:377
204
+ msgid "Help to slow the spread of the Coronavirus."
205
+ msgstr ""
206
+
207
+ #: ../cookie-notice.php:378
208
+ msgid "Join 1+ million WordPress admins who are adding the Corona Banner to their websites using the Cookie Notice plugin."
209
+ msgstr ""
210
+
211
+ #: ../cookie-notice.php:378 ../cookie-notice.php:752
212
+ msgid "The Corona Banner displays data about Coronavirus pandemia and <strong>five steps recommended by the WHO (World Health Organization)</strong> to help flatten the Coronavirus curve."
213
+ msgstr ""
214
+
215
+ #: ../cookie-notice.php:379
216
+ msgid "Thank you and <em>#stayhome</em>"
217
+ msgstr ""
218
+
219
+ #: ../cookie-notice.php:657 ../cookie-notice.php:668 ../cookie-notice.php:671
220
+ #: ../cookie-notice.php:1378
221
  msgid "Cookie Notice"
222
  msgstr ""
223
 
224
+ #: ../cookie-notice.php:673
225
  msgid "Need support?"
226
  msgstr ""
227
 
228
+ #: ../cookie-notice.php:674
229
  #, php-format
230
  msgid "If you are having problems with this plugin, please browse it's <a href=\"%s\" target=\"_blank\">Documentation</a> or talk about them in the <a href=\"%s\" target=\"_blank\">Support forum</a>"
231
  msgstr ""
232
 
233
+ #: ../cookie-notice.php:676
234
  msgid "Do you like this plugin?"
235
  msgstr ""
236
 
237
+ #: ../cookie-notice.php:677
238
  #, php-format
239
  msgid "<a href=\"%s\" target=\"_blank\">Rate it 5</a> on WordPress.org"
240
  msgstr ""
241
 
242
+ #: ../cookie-notice.php:678
243
  #, php-format
244
  msgid "Blog about it & link to the <a href=\"%s\" target=\"_blank\">plugin page</a>."
245
  msgstr ""
246
 
247
+ #: ../cookie-notice.php:679
248
  #, php-format
249
  msgid "Check out our other <a href=\"%s\" target=\"_blank\">WordPress plugins</a>."
250
  msgstr ""
251
 
252
+ #: ../cookie-notice.php:692
253
  msgid "Reset to defaults"
254
  msgstr ""
255
 
256
+ #: ../cookie-notice.php:708
257
  msgid "Configuration"
258
  msgstr ""
259
 
260
+ #: ../cookie-notice.php:710
261
  msgid "Button text"
262
  msgstr ""
263
 
264
+ #: ../cookie-notice.php:712
265
  msgid "Refuse consent"
266
  msgstr ""
267
 
268
+ #: ../cookie-notice.php:714
269
  msgid "Script blocking"
270
  msgstr ""
271
 
272
+ #: ../cookie-notice.php:715
273
  msgid "Reloading"
274
  msgstr ""
275
 
276
+ #: ../cookie-notice.php:716
277
  msgid "On scroll"
278
  msgstr ""
279
 
280
+ #: ../cookie-notice.php:717
281
  msgid "On click"
282
  msgstr ""
283
 
284
+ #: ../cookie-notice.php:718
285
  msgid "Accepted expiry"
286
  msgstr ""
287
 
288
+ #: ../cookie-notice.php:719
289
  msgid "Rejected expiry"
290
  msgstr ""
291
 
292
+ #: ../cookie-notice.php:720
293
  msgid "Script placement"
294
  msgstr ""
295
 
296
+ #: ../cookie-notice.php:721
297
  msgid "Deactivation"
298
  msgstr ""
299
 
300
+ #: ../cookie-notice.php:724
301
+ msgid "Corona Banner"
302
+ msgstr ""
303
+
304
+ #: ../cookie-notice.php:725
305
+ msgid "Display"
306
+ msgstr ""
307
+
308
+ #: ../cookie-notice.php:726
309
+ msgid "Current cases"
310
+ msgstr ""
311
+
312
+ #: ../cookie-notice.php:727
313
+ msgid "Text strings"
314
+ msgstr ""
315
+
316
+ #: ../cookie-notice.php:730
317
  msgid "Design"
318
  msgstr ""
319
 
320
+ #: ../cookie-notice.php:731
321
  msgid "Position"
322
  msgstr ""
323
 
324
+ #: ../cookie-notice.php:732
325
  msgid "Animation"
326
  msgstr ""
327
 
328
+ #: ../cookie-notice.php:733
329
  msgid "Button style"
330
  msgstr ""
331
 
332
+ #: ../cookie-notice.php:734
333
  msgid "Button class"
334
  msgstr ""
335
 
336
+ #: ../cookie-notice.php:735
337
  msgid "Colors"
338
  msgstr ""
339
 
340
+ #: ../cookie-notice.php:751
341
+ msgid "Enable to display the Corona Banner."
342
+ msgstr ""
343
+
344
+ #: ../cookie-notice.php:762
345
+ msgid "Display information about current cases."
346
+ msgstr ""
347
+
348
+ #: ../cookie-notice.php:763
349
+ msgid "Provides up-to-date data about Coronavirus confirmed and recovered cases."
350
  msgstr ""
351
 
352
+ #: ../cookie-notice.php:772
353
+ msgid "Headline message"
354
+ msgstr ""
355
+
356
+ #: ../cookie-notice.php:773
357
+ msgid "Current cases text strings"
358
+ msgstr ""
359
+
360
+ #: ../cookie-notice.php:774
361
+ msgid "Recommendation One"
362
+ msgstr ""
363
+
364
+ #: ../cookie-notice.php:775
365
+ msgid "Recommendation Two"
366
+ msgstr ""
367
+
368
+ #: ../cookie-notice.php:776
369
+ msgid "Recommendation Three"
370
+ msgstr ""
371
+
372
+ #: ../cookie-notice.php:777
373
+ msgid "Recommendation Four"
374
+ msgstr ""
375
+
376
+ #: ../cookie-notice.php:778
377
+ msgid "Recommendation Five"
378
+ msgstr ""
379
+
380
+ #: ../cookie-notice.php:783
381
+ msgid "Enable if you'd like to adjust the Corona Banner text strings."
382
+ msgstr ""
383
+
384
+ #: ../cookie-notice.php:810
385
  msgid "Enter the cookie notice message."
386
  msgstr ""
387
 
388
+ #: ../cookie-notice.php:823
389
  msgid "The text of the option to accept the notice and make it disappear."
390
  msgstr ""
391
 
392
+ #: ../cookie-notice.php:834
393
  msgid "Enable to give to the user the possibility to refuse third party non functional cookies."
394
  msgstr ""
395
 
396
+ #: ../cookie-notice.php:838
397
  msgid "The text of the button to refuse the consent."
398
  msgstr ""
399
 
400
+ #: ../cookie-notice.php:856
401
  msgid "Head"
402
  msgstr ""
403
 
404
+ #: ../cookie-notice.php:857
405
  msgid "Body"
406
  msgstr ""
407
 
408
+ #: ../cookie-notice.php:860
409
  msgid "The code to be used in your site header, before the closing head tag."
410
  msgstr ""
411
 
412
+ #: ../cookie-notice.php:864
413
  msgid "The code to be used in your site footer, before the closing body tag."
414
  msgstr ""
415
 
416
+ #: ../cookie-notice.php:868
417
  msgid "Enter non functional cookies Javascript code here (for e.g. Google Analitycs) to be used after the notice is accepted."
418
  msgstr ""
419
 
420
+ #: ../cookie-notice.php:868
421
  msgid "To get the user consent status use the <code>cn_cookies_accepted()</code> function."
422
  msgstr ""
423
 
424
+ #: ../cookie-notice.php:879
425
  msgid "Enable to give to the user the possibility to revoke their consent <i>(requires \"Refuse consent\" option enabled)</i>."
426
  msgstr ""
427
 
428
+ #: ../cookie-notice.php:882
429
  msgid "Enter the revoke message."
430
  msgstr ""
431
 
432
+ #: ../cookie-notice.php:884
433
  msgid "The text of the button to revoke the consent."
434
  msgstr ""
435
 
436
+ #: ../cookie-notice.php:892
437
  msgid "Select the method for displaying the revoke button - automatic (in the banner) or manual using <code>[cookies_revoke]</code> shortcode."
438
  msgstr ""
439
 
440
+ #: ../cookie-notice.php:903
441
  msgid "Enable to reload the page after the notice is accepted."
442
  msgstr ""
443
 
444
+ #: ../cookie-notice.php:926
445
  msgid "Enable privacy policy link."
446
  msgstr ""
447
 
448
+ #: ../cookie-notice.php:929
449
  msgid "The text of the privacy policy button."
450
  msgstr ""
451
 
452
+ #: ../cookie-notice.php:941
453
  msgid "Select where to redirect user for more information."
454
  msgstr ""
455
 
456
+ #: ../cookie-notice.php:944
457
  msgid "-- select page --"
458
  msgstr ""
459
 
460
+ #: ../cookie-notice.php:955
461
  msgid "Select from one of your site's pages."
462
  msgstr ""
463
 
464
+ #: ../cookie-notice.php:961
465
  msgid "Synchronize with WordPress Privacy Policy page."
466
  msgstr ""
467
 
468
+ #: ../cookie-notice.php:968
469
  msgid "Enter the full URL starting with http(s)://"
470
  msgstr ""
471
 
472
+ #: ../cookie-notice.php:1011
473
  msgid "The amount of time that the cookie should be stored for when user accepts the notice."
474
  msgstr ""
475
 
476
+ #: ../cookie-notice.php:1034
477
  msgid "The amount of time that the cookie should be stored for when the user doesn't accept the notice."
478
  msgstr ""
479
 
480
+ #: ../cookie-notice.php:1052
481
  msgid "Select where all the plugin scripts should be placed."
482
  msgstr ""
483
 
484
+ #: ../cookie-notice.php:1072
485
  msgid "Select location for the notice."
486
  msgstr ""
487
 
488
+ #: ../cookie-notice.php:1093
489
  msgid "Select the animation style."
490
  msgstr ""
491
 
492
+ #: ../cookie-notice.php:1104
493
  msgid "Enable to accept the notice when user scrolls."
494
  msgstr ""
495
 
496
+ #: ../cookie-notice.php:1107
497
  msgid "Number of pixels user has to scroll to accept the notice and make it disappear."
498
  msgstr ""
499
 
500
+ #: ../cookie-notice.php:1118
501
  msgid "Enable to accept the notice on any click on the page."
502
  msgstr ""
503
 
504
+ #: ../cookie-notice.php:1128
505
+ msgid "Enable if you want all plugin data to be deleted on deactivation."
506
+ msgstr ""
507
+
508
+ #: ../cookie-notice.php:1148
509
  msgid "Select the buttons style."
510
  msgstr ""
511
 
512
+ #: ../cookie-notice.php:1161
513
  msgid "Enter additional button CSS classes separated by spaces."
514
  msgstr ""
515
 
516
+ #: ../cookie-notice.php:1185
517
+ msgid "Bar opacity"
518
+ msgstr ""
519
+
520
+ #: ../cookie-notice.php:1324
521
  msgid "Settings restored to defaults."
522
  msgstr ""
523
 
524
+ #: ../cookie-notice.php:1464
525
  msgid "Support"
526
  msgstr ""
527
 
528
+ #: ../cookie-notice.php:1481
529
  msgid "Settings"
530
  msgstr ""
531
 
532
+ #: ../cookie-notice.php:1554
533
  msgid "Are you sure you want to reset these settings to defaults?"
534
  msgstr ""
readme.txt CHANGED
@@ -4,8 +4,8 @@ Donate link: http://www.dfactory.eu/
4
  Tags: gdpr, ccpa, cookie, cookies, notice, notification, notify, cookie, cookie law, privacy, policy, consent, law
5
  Requires at least: 3.3
6
  Requires PHP: 5.2.4
7
- Tested up to: 5.3.2
8
- Stable tag: 1.2.51
9
  License: MIT License
10
  License URI: http://opensource.org/licenses/MIT
11
 
@@ -68,6 +68,12 @@ No questions yet.
68
 
69
  == Changelog ==
70
 
 
 
 
 
 
 
71
  = 1.2.51 =
72
  * Fix: Problems with iOS and OK/Reject button
73
  * Tweak: Added Separate cookie expiry for Reject, props Carlos Buchart
@@ -288,6 +294,7 @@ Initial release
288
 
289
  == Upgrade Notice ==
290
 
291
- = 1.2.51 =
292
- * Fix: Problems with iOS and OK/Reject button
293
- * Tweak: Added Separate cookie expiry for Reject, props Carlos Buchart
 
4
  Tags: gdpr, ccpa, cookie, cookies, notice, notification, notify, cookie, cookie law, privacy, policy, consent, law
5
  Requires at least: 3.3
6
  Requires PHP: 5.2.4
7
+ Tested up to: 5.4
8
+ Stable tag: 1.3.0
9
  License: MIT License
10
  License URI: http://opensource.org/licenses/MIT
11
 
68
 
69
  == Changelog ==
70
 
71
+ = 1.3.0 =
72
+ * New: Introducing Corona Banner that displays data about Coronavirus pandemia and five steps recommended by the WHO (World Health Organization)
73
+ * New: Option to set bar opacity
74
+ * New: Accept the notice with close icon
75
+ * Fix: Policy link added to message without policy option enabled
76
+
77
  = 1.2.51 =
78
  * Fix: Problems with iOS and OK/Reject button
79
  * Tweak: Added Separate cookie expiry for Reject, props Carlos Buchart
294
 
295
  == Upgrade Notice ==
296
 
297
+ = 1.3.0 =
298
+ * New: Introducing Corona Banner that displays data about Coronavirus pandemia and five steps recommended by the WHO (World Health Organization)
299
+ * New: Option to set bar opacity
300
+ * New: Accept the notice with close icon