UpdraftPlus WordPress Backup Plugin - Version 1.13.5

Version Description

  • 08/Aug/2017 =

  • TWEAK: Manage phpseclib through composer

  • TWEAK: Do less logging to database when resuming and noticing already-processed tables (saves resources)

  • TWEAK: Returns comment status when updating comments from UpdraftCentral

  • TWEAK: Update plugin-updates-checker library to current (4.2), and manage via composer, replacing bundled copy in the build source

  • TWEAK: Replace uses of create_function(), which is deprecated on PHP 7.2

  • TWEAK: Replace deprecated constructors (PHP 7+) in webdav module

  • TWEAK: Documentation showing plugin developers how easy it is to add in-page backups to their plugin: https://updraftplus.com/add-take-backup-functionality-plugin/

  • TWEAK: Make the UpdraftCentral updates checking able to cope with a wider range of third-party schemes

  • TWEAK: General code tidy-up, making older code conform to our current standards

  • TWEAK: Minor version updates of some bundled libraries

  • TWEAK: Produce and use minified resources (CSS/JS) where available

  • TWEAK: Update class-udrpc to latest (1.4.14) which removes a conflict with other code that may interact with CORS OPTIONS requests

  • TWEAK: Escape log lines when sending for display (theoretically an XSS security issue, but to achieve a successful attack, someone would have to first get something malicious into the log file, which is difficult as there are not many places where foreign input can end up in the log file - e.g. hack into Dropbox and cause Dropbox to send you back malicious HTML in an error message - and then be able to persuade you to both take a backup triggering the problem and then view the log file in your WP dashboard)

  • TWEAK: Update Google Cloud bucket locations

Download this release

Release Info

Developer DavidAnderson
Plugin Icon 128x128 UpdraftPlus WordPress Backup Plugin
Version 1.13.5
Comparing to
See all releases

Code changes from version 1.13.4 to 1.13.5

Files changed (41) hide show
  1. admin.php +38 -21
  2. backup.php +39 -4
  3. central/bootstrap.php +58 -61
  4. central/classes/class-automatic-upgrader-skin.php +3 -1
  5. central/commands.php +9 -10
  6. central/listener.php +24 -14
  7. central/modules/comments.php +285 -231
  8. central/modules/core.php +75 -65
  9. central/modules/updates.php +234 -65
  10. central/modules/updraftvault.php +0 -14
  11. central/modules/users.php +141 -134
  12. class-updraftplus.php +43 -9
  13. clean-composer.sh +0 -32
  14. composer.json +0 -10
  15. composer.lock +0 -373
  16. css/admin.css +720 -671
  17. css/admin.min.css +2 -0
  18. css/admin.min.css.map +1 -0
  19. css/updraftplus-notices.css +14 -12
  20. css/updraftplus-notices.min.css +2 -0
  21. css/updraftplus-notices.min.css.map +1 -0
  22. example-decrypt.php +1 -1
  23. includes/Dropbox/OAuth/Storage/Encrypter.php +1 -1
  24. includes/Dropbox2/OAuth/Storage/Encrypter.php +1 -1
  25. includes/class-udrpc.php +192 -77
  26. includes/jquery-ui.custom.min.css +2 -0
  27. includes/jquery-ui.custom.min.css.map +1 -0
  28. includes/jquery.blockUI.min.js +1 -0
  29. includes/jquery.serializeJSON/LICENSE.txt +0 -21
  30. includes/jstree/jstree.js +188 -70
  31. includes/jstree/jstree.min.js +6 -6
  32. includes/jstree/themes/default-dark/style.css +6 -0
  33. includes/jstree/themes/default-dark/style.min.css +1 -1
  34. includes/jstree/themes/default/style.css +6 -0
  35. includes/jstree/themes/default/style.min.css +1 -1
  36. includes/labelauty/jquery-labelauty.min.css +2 -0
  37. includes/labelauty/jquery-labelauty.min.css.map +1 -0
  38. includes/labelauty/jquery-labelauty.min.js +1 -0
  39. includes/updraft-admin.min.js +3 -0
  40. includes/updraftplus-notices.php +20 -29
  41. languages/updraftplus-af.po +1370 -1422
admin.php CHANGED
@@ -570,17 +570,19 @@ class UpdraftPlus_Admin {
570
  private function ensure_sufficient_jquery_and_enqueue() {
571
  global $updraftplus, $wp_version;
572
 
573
- $enqueue_version = @constant('WP_DEBUG') ? $updraftplus->version.'-'.time() : $updraftplus->version;
 
574
 
575
  if (version_compare($wp_version, '3.3', '<')) {
576
  // Require a newer jQuery (3.2.1 has 1.6.1, so we go for something not too much newer). We use .on() in a way that is incompatible with < 1.7
577
  wp_deregister_script('jquery');
578
- wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js', false, '1.7.2', false);
 
579
  wp_enqueue_script('jquery');
580
  // No plupload until 3.3
581
- wp_enqueue_script('updraftplus-admin', UPDRAFTPLUS_URL.'/includes/updraft-admin.js', array('jquery', 'jquery-ui-dialog'), $enqueue_version, true);
582
  } else {
583
- wp_enqueue_script('updraftplus-admin', UPDRAFTPLUS_URL.'/includes/updraft-admin.js', array('jquery', 'jquery-ui-dialog', 'plupload-all'), $enqueue_version);
584
  }
585
 
586
  }
@@ -589,24 +591,26 @@ class UpdraftPlus_Admin {
589
  public function admin_enqueue_scripts() {
590
 
591
  global $updraftplus, $wp_locale;
 
 
 
592
 
593
  // Defeat other plugins/themes which dump their jQuery UI CSS onto our settings page
594
  wp_deregister_style('jquery-ui');
595
- wp_enqueue_style('jquery-ui', UPDRAFTPLUS_URL.'/includes/jquery-ui.custom.css', array(), '1.11.4');
596
-
597
- $our_version = @constant('SCRIPT_DEBUG') ? $updraftplus->version.'.'.time() : $updraftplus->version;
598
 
599
- wp_enqueue_style('updraft-admin-css', UPDRAFTPLUS_URL.'/css/admin.css', array(), $our_version);
600
  // add_filter('style_loader_tag', array($this, 'style_loader_tag'), 10, 2);
601
 
602
  $this->ensure_sufficient_jquery_and_enqueue();
603
-
604
- wp_enqueue_script('jquery-blockui', UPDRAFTPLUS_URL.'/includes/jquery.blockUI.js', array('jquery'), '2.70.0');
605
 
606
- wp_enqueue_script('jquery-labelauty', UPDRAFTPLUS_URL.'/includes/labelauty/jquery-labelauty.js', array('jquery'), '20160622-ud');
607
- wp_enqueue_style('jquery-labelauty', UPDRAFTPLUS_URL.'/includes/labelauty/jquery-labelauty.css', array(), '20150925');
608
-
609
- wp_enqueue_script('jquery.serializeJSON', UPDRAFTPLUS_URL.'/includes/jquery.serializeJSON/jquery.serializejson.min.js', array('jquery'), '2.8.1');
610
 
611
  $this->enqueue_jstree();
612
 
@@ -748,7 +752,7 @@ class UpdraftPlus_Admin {
748
  'updraftplus_version' => $updraftplus->version
749
  ) );
750
  }
751
-
752
  // Despite the name, this fires irrespective of what capabilities the user has (even none - so be careful)
753
  public function core_upgrade_preamble() {
754
  // They need to be able to perform backups, and to perform updates
@@ -1692,7 +1696,16 @@ class UpdraftPlus_Admin {
1692
  do_action($event, apply_filters('updraft_backupnow_options', $options, $request));
1693
  }
1694
 
1695
- public function fetch_log($backup_nonce, $log_pointer = 0) {
 
 
 
 
 
 
 
 
 
1696
  global $updraftplus;
1697
 
1698
  if (empty($backup_nonce)) {
@@ -1736,6 +1749,8 @@ class UpdraftPlus_Admin {
1736
  $log_content .= __('The log file could not be read.', 'updraftplus');
1737
  }
1738
 
 
 
1739
  $ret_array = array(
1740
  'log' => $log_content,
1741
  'nonce' => $nonce,
@@ -4089,7 +4104,7 @@ ENDHERE;
4089
  }
4090
  }
4091
  } else {
4092
- $return_array = array('saved' => false, 'error_message' => sprintf(__('UpdraftPlus seems to have been updated to version (%s) different to the version running when this settings page was loaded. Please reload the settings page before trying to save settings.', 'updraftplus'), $updraftplus->version));
4093
  }
4094
 
4095
  // Checking for various possible messages
@@ -4120,11 +4135,11 @@ ENDHERE;
4120
 
4121
  do_action('all_admin_notices');
4122
 
4123
- if (!$really_is_writable){ //Check if writable
4124
  $this->show_admin_warning_unwritable();
4125
  }
4126
 
4127
- if ($return_array['saved']){ //
4128
  $this->show_admin_warning(__('Your settings have been saved.', 'updraftplus'), 'updated fade');
4129
  } else {
4130
  if (isset($return_array['error_message'])) {
@@ -4366,8 +4381,10 @@ ENDHERE;
4366
  if ($already_enqueued) return;
4367
 
4368
  $already_enqueued = true;
 
 
4369
  // Include jstree components
4370
- wp_enqueue_script('jstree', UPDRAFTPLUS_URL.'/includes/jstree/jstree.min.js', array('jquery'), '3.3');
4371
- wp_enqueue_style('jstree', UPDRAFTPLUS_URL.'/includes/jstree/themes/default/style.min.css', array(), '3.3');
4372
  }
4373
  }
570
  private function ensure_sufficient_jquery_and_enqueue() {
571
  global $updraftplus, $wp_version;
572
 
573
+ $enqueue_version = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? $updraftplus->version.'.'.time() : $updraftplus->version;
574
+ $min_or_not = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? '' : '.min';
575
 
576
  if (version_compare($wp_version, '3.3', '<')) {
577
  // Require a newer jQuery (3.2.1 has 1.6.1, so we go for something not too much newer). We use .on() in a way that is incompatible with < 1.7
578
  wp_deregister_script('jquery');
579
+ $jquery_enqueue_version = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? '1.7.2'.'.'.time() : '1.7.2';
580
+ wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery'.$min_or_not.'.js', false, $jquery_enqueue_version, false);
581
  wp_enqueue_script('jquery');
582
  // No plupload until 3.3
583
+ wp_enqueue_script('updraftplus-admin', UPDRAFTPLUS_URL.'/includes/updraft-admin'.$min_or_not.'.js', array('jquery', 'jquery-ui-dialog'), $enqueue_version, true);
584
  } else {
585
+ wp_enqueue_script('updraftplus-admin', UPDRAFTPLUS_URL.'/includes/updraft-admin'.$min_or_not.'.js', array('jquery', 'jquery-ui-dialog', 'plupload-all'), $enqueue_version);
586
  }
587
 
588
  }
591
  public function admin_enqueue_scripts() {
592
 
593
  global $updraftplus, $wp_locale;
594
+
595
+ $enqueue_version = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? $updraftplus->version.'.'.time() : $updraftplus->version;
596
+ $min_or_not = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? '' : '.min';
597
 
598
  // Defeat other plugins/themes which dump their jQuery UI CSS onto our settings page
599
  wp_deregister_style('jquery-ui');
600
+ $jquery_ui_css_enqueue_version = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? '1.11.4'.'.'.time() : '1.11.4';
601
+ wp_enqueue_style('jquery-ui', UPDRAFTPLUS_URL.'/includes/jquery-ui.custom'.$min_or_not.'.css', array(), $jquery_ui_css_enqueue_version);
 
602
 
603
+ wp_enqueue_style('updraft-admin-css', UPDRAFTPLUS_URL.'/css/admin'.$min_or_not.'.css', array(), $enqueue_version);
604
  // add_filter('style_loader_tag', array($this, 'style_loader_tag'), 10, 2);
605
 
606
  $this->ensure_sufficient_jquery_and_enqueue();
607
+ $jquery_blockui_enqueue_version = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? '2.70.0'.'.'.time() : '2.70.0';
608
+ wp_enqueue_script('jquery-blockui', UPDRAFTPLUS_URL.'/includes/jquery.blockUI'.$min_or_not.'.js', array('jquery'), $jquery_blockui_enqueue_version);
609
 
610
+ wp_enqueue_script('jquery-labelauty', UPDRAFTPLUS_URL.'/includes/labelauty/jquery-labelauty'.$min_or_not.'.js', array('jquery'), $enqueue_version);
611
+ wp_enqueue_style('jquery-labelauty', UPDRAFTPLUS_URL.'/includes/labelauty/jquery-labelauty'.$min_or_not.'.css', array(), $enqueue_version);
612
+ $serialize_js_enqueue_version = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? '2.8.1'.'.'.time() : '2.8.1';
613
+ wp_enqueue_script('jquery.serializeJSON', UPDRAFTPLUS_URL.'/includes/jquery.serializeJSON/jquery.serializejson'.$min_or_not.'.js', array('jquery'), $serialize_js_enqueue_version);
614
 
615
  $this->enqueue_jstree();
616
 
752
  'updraftplus_version' => $updraftplus->version
753
  ) );
754
  }
755
+
756
  // Despite the name, this fires irrespective of what capabilities the user has (even none - so be careful)
757
  public function core_upgrade_preamble() {
758
  // They need to be able to perform backups, and to perform updates
1696
  do_action($event, apply_filters('updraft_backupnow_options', $options, $request));
1697
  }
1698
 
1699
+ /**
1700
+ * Get the contents of a log file
1701
+ *
1702
+ * @param String $backup_nonce - the backup id; or empty, for the most recently modified
1703
+ * @param Integer $log_pointer - the byte count to fetch from
1704
+ * @param String $output_format - the format to return in; allowed as 'html' (which will escape HTML entities in what is returned) and 'raw'
1705
+ *
1706
+ * @return String
1707
+ */
1708
+ public function fetch_log($backup_nonce = '', $log_pointer = 0, $output_format = 'html') {
1709
  global $updraftplus;
1710
 
1711
  if (empty($backup_nonce)) {
1749
  $log_content .= __('The log file could not be read.', 'updraftplus');
1750
  }
1751
 
1752
+ if ('html' == $output_format) $log_content = htmlspecialchars($log_content);
1753
+
1754
  $ret_array = array(
1755
  'log' => $log_content,
1756
  'nonce' => $nonce,
4104
  }
4105
  }
4106
  } else {
4107
+ $return_array = array('saved' => false, 'error_message' => sprintf(__('UpdraftPlus seems to have been updated to version (%s), which is different to the version running when this settings page was loaded. Please reload the settings page before trying to save settings.', 'updraftplus'), $updraftplus->version));
4108
  }
4109
 
4110
  // Checking for various possible messages
4135
 
4136
  do_action('all_admin_notices');
4137
 
4138
+ if (!$really_is_writable) { //Check if writable
4139
  $this->show_admin_warning_unwritable();
4140
  }
4141
 
4142
+ if ($return_array['saved']) { //
4143
  $this->show_admin_warning(__('Your settings have been saved.', 'updraftplus'), 'updated fade');
4144
  } else {
4145
  if (isset($return_array['error_message'])) {
4381
  if ($already_enqueued) return;
4382
 
4383
  $already_enqueued = true;
4384
+ $jstree_enqueue_version = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? '3.3'.'.'.time() : '3.3';
4385
+ $min_or_not = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? '' : '.min';
4386
  // Include jstree components
4387
+ wp_enqueue_script('jstree', UPDRAFTPLUS_URL.'/includes/jstree/jstree'.$min_or_not.'.js', array('jquery'), $jstree_enqueue_version);
4388
+ wp_enqueue_style('jstree', UPDRAFTPLUS_URL.'/includes/jstree/themes/default/style'.$min_or_not.'.css', array(), $jstree_enqueue_version);
4389
  }
4390
  }
backup.php CHANGED
@@ -1408,9 +1408,9 @@ class UpdraftPlus_Backup {
1408
 
1409
  if (empty($all_tables) && !empty($this->wpdb_obj->last_error)) {
1410
  $all_tables = $this->wpdb_obj->get_results("SHOW TABLES", ARRAY_N);
1411
- $all_tables = array_map(create_function('$a', 'return array("name" => $a[0], "type" => "BASE TABLE");'), $all_tables);
1412
  } else {
1413
- $all_tables = array_map(create_function('$a', 'return array("name" => $a[0], "type" => $a[1]);'), $all_tables);
1414
  }
1415
 
1416
  # If this is not the WP database, then we do not consider it a fatal error if there are no tables
@@ -1424,7 +1424,7 @@ class UpdraftPlus_Backup {
1424
  // Put the options table first
1425
  usort($all_tables, array($this, 'backup_db_sorttables'));
1426
 
1427
- $all_table_names = array_map(create_function('$a', 'return $a["name"];'), $all_tables);
1428
 
1429
  if (!$updraftplus->really_is_writable($this->updraft_dir)) {
1430
  $updraftplus->log("The backup directory (".$this->updraft_dir.") could not be written to (could be account/disk space full, or wrong permissions).");
@@ -1462,7 +1462,9 @@ class UpdraftPlus_Backup {
1462
  if ('wp' == $whichdb && (strtolower($this->table_prefix_raw.'options') == strtolower($table) || ($is_multisite && (strtolower($this->table_prefix_raw.'sitemeta') == strtolower($table) || strtolower($this->table_prefix_raw.'1_options') == strtolower($table))))) $found_options_table = true;
1463
 
1464
  if (file_exists($this->updraft_dir.'/'.$table_file_prefix.'.gz')) {
1465
- $updraftplus->log("Table $table: corresponding file already exists; moving on");
 
 
1466
  $stitch_files[] = $table_file_prefix;
1467
  } else {
1468
  # === is needed, otherwise 'false' matches (i.e. prefix does not match)
@@ -3081,6 +3083,39 @@ class UpdraftPlus_Backup {
3081
  $updraftplus->jobdata_set('job_file_entities', $this->job_file_entities);
3082
  }
3083
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3084
  }
3085
 
3086
  class UpdraftPlus_WPDB_OtherDB extends wpdb {
1408
 
1409
  if (empty($all_tables) && !empty($this->wpdb_obj->last_error)) {
1410
  $all_tables = $this->wpdb_obj->get_results("SHOW TABLES", ARRAY_N);
1411
+ $all_tables = array_map(array($this, 'cb_get_name_base_type'), $all_tables);
1412
  } else {
1413
+ $all_tables = array_map(array($this, 'cb_get_name_type'), $all_tables);
1414
  }
1415
 
1416
  # If this is not the WP database, then we do not consider it a fatal error if there are no tables
1424
  // Put the options table first
1425
  usort($all_tables, array($this, 'backup_db_sorttables'));
1426
 
1427
+ $all_table_names = array_map(array($this, 'cb_get_name'), $all_tables);
1428
 
1429
  if (!$updraftplus->really_is_writable($this->updraft_dir)) {
1430
  $updraftplus->log("The backup directory (".$this->updraft_dir.") could not be written to (could be account/disk space full, or wrong permissions).");
1462
  if ('wp' == $whichdb && (strtolower($this->table_prefix_raw.'options') == strtolower($table) || ($is_multisite && (strtolower($this->table_prefix_raw.'sitemeta') == strtolower($table) || strtolower($this->table_prefix_raw.'1_options') == strtolower($table))))) $found_options_table = true;
1463
 
1464
  if (file_exists($this->updraft_dir.'/'.$table_file_prefix.'.gz')) {
1465
+ $stitched = count($stitch_files);
1466
+ $skip_dblog = (($stitched > 10 && 0 != $stitched % 20) || ($stitched > 100 && 0 != $stitched % 100));
1467
+ $updraftplus->log("Table $table: corresponding file already exists; moving on", 'notice', false, $skip_dblog);
1468
  $stitch_files[] = $table_file_prefix;
1469
  } else {
1470
  # === is needed, otherwise 'false' matches (i.e. prefix does not match)
3083
  $updraftplus->jobdata_set('job_file_entities', $this->job_file_entities);
3084
  }
3085
 
3086
+ /**
3087
+ * Returns the member of the array with key (int)0, as a new array. This function is used as a callback for array_map().
3088
+ *
3089
+ * @param Array $a - the array
3090
+ *
3091
+ * @return Array - with keys 'name' and 'type'
3092
+ */
3093
+ private function cb_get_name_base_type($a) {
3094
+ return array('name' => $a[0], 'type' => 'BASE TABLE');
3095
+ }
3096
+
3097
+ /**
3098
+ * Returns the members of the array with keys (int)0 and (int)1, as part of a new array.
3099
+ *
3100
+ * @param Array $a - the array
3101
+ *
3102
+ * @return Array - keys are 'name' and 'type'
3103
+ */
3104
+ private function cb_get_name_type($a) {
3105
+ return array('name' => $a[0], 'type' => $a[1]);
3106
+ }
3107
+
3108
+ /**
3109
+ * Returns the member of the array with key (string)'name'. This function is used as a callback for array_map().
3110
+ *
3111
+ * @param Array $a - the array
3112
+ *
3113
+ * @return Mixed - the value with key (string)'name'
3114
+ */
3115
+ private function cb_get_name($a) {
3116
+ return $a['name'];
3117
+ }
3118
+
3119
  }
3120
 
3121
  class UpdraftPlus_WPDB_OtherDB extends wpdb {
central/bootstrap.php CHANGED
@@ -15,8 +15,8 @@ class UpdraftPlus_UpdraftCentral_Main {
15
  add_action('updraftplus_debugtools_dashboard', array($this, 'debugtools_dashboard'), 20);
16
  add_action('udrpc_log', array($this, 'udrpc_log'), 10, 3);
17
 
18
- add_action('wp_ajax_updraftcentral_receivepublickey', array($this, 'wp_ajax_updraftcentral_receivepublickey'));
19
- add_action('wp_ajax_nopriv_updraftcentral_receivepublickey', array($this, 'wp_ajax_updraftcentral_receivepublickey'));
20
 
21
  // The 'updraftplus' commands are registered in UpdraftPlus::plugins_loaded()
22
  $command_classes = apply_filters('updraftplus_remotecontrol_command_classes', array(
@@ -30,7 +30,7 @@ class UpdraftPlus_UpdraftCentral_Main {
30
  // Remote control keys
31
  // These are different from the remote send keys, which are set up in the Migrator add-on
32
  $our_keys = UpdraftPlus_Options::get_updraft_option('updraft_central_localkeys');
33
- if (is_array($our_keys) && !empty($our_keys)) {
34
  $remote_control = new UpdraftPlus_UpdraftCentral_Listener($our_keys, $command_classes);
35
  }
36
 
@@ -50,30 +50,23 @@ class UpdraftPlus_UpdraftCentral_Main {
50
  echo __('An UpdraftCentral connection has been made successfully.', 'updraftplus');
51
  } else {
52
  echo '<strong>'.__('A new UpdraftCentral connection has not been made.', 'updraftplus').'</strong><br>';
53
- switch($result['code']) {
54
  case 'unknown_key':
55
- echo __('The key referred to was unknown.', 'updraftplus');
56
- break;
57
- case 'not_logged_in';
58
-
59
- // $the_url = admin_url('admin-ajax.php').'?action=updraftcentral_receivepublickey&_wpnonce='.urlencode($_GET['_wpnonce']).'&updraft_key_index='.urlencode($_GET['updraft_key_index']).'&public_key='.urlencode($_GET['public_key']);
60
-
61
- echo __('You are not logged into this WordPress site in your web browser.', 'updraftplus').' '.__('You must visit this URL in the same browser and login session as you created the key in.', 'updraftplus');
62
-
63
- break;
64
- case 'nonce_failure';
65
-
66
- echo 'Security check. ';
67
-
68
- _e('You must visit this link in the same browser and login session as you created the key in.', 'updraftplus');
69
-
70
- break;
71
- case 'already_have';
72
- echo __('This connection appears to already have been made.', 'updraftplus');
73
- break;
74
  default:
75
- echo htmlspecialchars(print_r($result, true));
76
- break;
77
  }
78
  }
79
 
@@ -108,7 +101,13 @@ class UpdraftPlus_UpdraftCentral_Main {
108
  return array('responsetype' => 'ok', 'code' => 'ok');
109
  }
110
 
111
- // Action parameters, from udrpc: $message, $level, $this->key_name_indicator, $this->debug, $this
 
 
 
 
 
 
112
  public function udrpc_log($message, $level, $key_name_indicator) {
113
  $udrpc_log = get_site_option('updraftcentral_client_log');
114
  if (!is_array($udrpc_log)) $udrpc_log = array();
@@ -186,9 +185,9 @@ class UpdraftPlus_UpdraftCentral_Main {
186
  // Use the site URL - this means that if the site URL changes, communication ends; which is the case anyway
187
  $user = wp_get_current_user();
188
 
189
- $where_send = empty($params['where_send']) ? '' : (string)$params['where_send'];
190
 
191
- if ($where_send != '__updraftpluscom') {
192
  $purl = parse_url($where_send);
193
  if (empty($purl) || !array($purl) || empty($purl['scheme']) || empty($purl['host'])) return array('error' => __('An invalid URL was entered', 'updraftplus'));
194
  }
@@ -210,10 +209,10 @@ class UpdraftPlus_UpdraftCentral_Main {
210
  }
211
 
212
  if (!empty($params['key_description'])) {
213
- $extra_info['name'] = (string)$params['key_description'];
214
  }
215
 
216
- $key_size = (empty($params['key_size']) || !is_numeric($params['key_size']) || $params['key_size'] < 512) ? 2048 : (int)$params['key_size'];
217
 
218
  $extra_info['key_size'] = $key_size;
219
 
@@ -224,7 +223,6 @@ class UpdraftPlus_UpdraftCentral_Main {
224
  }
225
 
226
  return $created;
227
- die;
228
  }
229
 
230
  private function indicator_name_from_index($index) {
@@ -269,8 +267,7 @@ class UpdraftPlus_UpdraftCentral_Main {
269
 
270
  @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT);
271
 
272
- $key_size = (empty($extra_info['key_size']) || !is_numeric($extra_info['key_size']) || $extra_info['key_size'] < 512) ? 2048 : (int)$extra_info['key_size'];
273
- // unset($extra_info['key_size']);
274
 
275
  if (is_object($ud_rpc) && $ud_rpc->generate_new_keypair($key_size)) {
276
 
@@ -307,7 +304,7 @@ class UpdraftPlus_UpdraftCentral_Main {
307
  );
308
 
309
  if (is_wp_error($sent_key) || empty($sent_key)) {
310
- $err_msg = sprintf(__('A key was created, but the attempt to register it with %s was unsuccessful - please try again later.', 'updraftplus'), (string)$post_it_description);
311
  if (is_wp_error($sent_key)) $err_msg .= ' '.$sent_key->get_error_message().' ('.$sent_key->get_error_code().')';
312
  return array(
313
  'r' => $err_msg
@@ -318,7 +315,7 @@ class UpdraftPlus_UpdraftCentral_Main {
318
 
319
  if (!is_array($response) || !isset($response['key_id']) || !isset($response['key_public'])) {
320
  return array(
321
- 'r' => sprintf(__('A key was created, but the attempt to register it with %s was unsuccessful - please try again later.', 'updraftplus'), (string)$post_it_description),
322
  'raw' => wp_remote_retrieve_body($sent_key)
323
  );
324
  }
@@ -341,7 +338,7 @@ class UpdraftPlus_UpdraftCentral_Main {
341
 
342
 
343
  if (isset($extra_info['name'])) {
344
- $name = (string)$extra_info['name'];
345
  unset($extra_info['name']);
346
  } else {
347
  $name = 'UpdraftCentral Remote Control';
@@ -362,8 +359,8 @@ class UpdraftPlus_UpdraftCentral_Main {
362
  return array(
363
  'bundle' => $local_bundle,
364
  'r' => __('Key created successfully.', 'updraftplus').' '.__('You must copy and paste this key now - it cannot be shown again.', 'updraftplus'),
365
- // 'selector' => $this->get_remotesites_selector(array()),
366
- // 'ourkeys' => $this->list_our_keys($our_keys),
367
  );
368
  }
369
 
@@ -432,8 +429,8 @@ class UpdraftPlus_UpdraftCentral_Main {
432
  <table>
433
  <thead>
434
  <tr>
435
- <th style="text-align:left;"><?php _e('Key description', 'updraftplus') ?></th>
436
- <th style="text-align:left;"><?php _e('Details', 'updraftplus') ?></th>
437
  </tr>
438
  </thead>
439
  <tbody>
@@ -450,16 +447,17 @@ class UpdraftPlus_UpdraftCentral_Main {
450
  return ob_get_clean();
451
  }
452
 
453
- private function create_key_markup(){
454
- ob_start(); ?>
 
455
  <div class="create_key_container">
456
- <h4> <?php _e('Create new key', 'updraftplus') ?></h4>
457
  <table style="width: auto; table-layout:fixed;">
458
  <thead></thead>
459
  <tbody>
460
  <tr class="updraft_debugrow">
461
  <th style="width: 20%;">
462
- <?php _e('Description', 'updraftplus') ?>:
463
  </th>
464
  <td style="width:80%;">
465
  <input id="updraftcentral_keycreate_description" type="text" size="20" placeholder="<?php _e('Enter any description', 'updraftplus'); ?>" value="" >
@@ -467,26 +465,26 @@ class UpdraftPlus_UpdraftCentral_Main {
467
  </tr>
468
 
469
  <tr class="updraft_debugrow">
470
- <th style=""> <?php _e('Dashboard at', 'updraftplus') ?>:</th>
471
  <td style="width:80%;">
472
  <label>
473
  <input checked="checked" type="radio" name="updraftcentral_mothership" id="updraftcentral_mothership_updraftpluscom">
474
- UpdraftPlus.Com (<?php _e('i.e. you have an account there', 'updraftplus') ?>)
475
  </label>
476
  <br>
477
  <label>
478
  <input type="radio" name="updraftcentral_mothership" id="updraftcentral_mothership_other">
479
- <?php _e('Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)', 'updraftplus') ?>:
480
  </label>
481
  <br>
482
- <input disabled="disabled" id="updraftcentral_keycreate_mothership" type="text" size="40" placeholder="<?php _e('URL of mothership', 'updraftplus') ?>" value="">
483
  <br>
484
  <div id="updraftcentral_keycreate_mothership_firewalled_container">
485
  <label>
486
  <input id="updraftcentral_keycreate_mothership_firewalled" type="checkbox">
487
- <?php _e('Use the alternative method for making a connection with the dashboard.', 'updraftplus') ?>
488
  <a href="#" id="updraftcentral_keycreate_altmethod_moreinfo_get">
489
- <?php _e('More information...', 'updraftplus') ?>
490
  </a>
491
  <p id="updraftcentral_keycreate_altmethod_moreinfo" style="display:none;">
492
  <?php _e('This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate.');?>
@@ -500,32 +498,32 @@ class UpdraftPlus_UpdraftCentral_Main {
500
  <td style="width:80%;">
501
  <?php _e('Encryption key size:', 'updraftplus'); ?>
502
  <select style="" id="updraftcentral_keycreate_keysize">
503
- <option value="512"><?php echo sprintf(__('%s bits', 'updraftplus').' - '.__('easy to break, fastest', 'updraftplus'), '512') ?></option>
504
- <option value="1024"><?php echo sprintf(__('%s bits', 'updraftplus').' - '.__('faster (possibility for slow PHP installs)', 'updraftplus'), '1024') ?></option>
505
- <option value="2048" selected="selected"><?php echo sprintf(__('%s bytes', 'updraftplus').' - '.__('recommended', 'updraftplus'), '2048') ?></option>
506
- <option value="4096"><?php echo sprintf(__('%s bits', 'updraftplus').' - '.__('slower, strongest', 'updraftplus'), '4096') ?></option>
507
  </select>
508
  </td>
509
  </tr>
510
  <tr class="updraft_debugrow">
511
  <th style=""></th>
512
  <td style="width:80%;">
513
- <button type="button" class="button button-primary" id="updraftcentral_keycreate_go"><?php _e('Create', 'updraftplus') ?></button>
514
  </td>
515
  </tr>
516
  </tbody>
517
  </table>
518
  </div>
519
- <?php
520
- return ob_get_clean();
521
- }
522
 
523
  private function create_log_markup(){
524
  ob_start();
525
  ?>
526
  <div id="updraftcentral_view_log_container">
527
- <h4><?php _e('View recent UpdraftCentral log events', 'updraftplus') ?> -
528
- <a href="#" id="updraftcentral_view_log"><?php _e('fetch...', 'updraftplus') ?></a>
529
  </h4>
530
  <pre id="updraftcentral_view_log_contents" style="padding: 0 4px;">
531
  </pre>
@@ -549,7 +547,6 @@ class UpdraftPlus_UpdraftCentral_Main {
549
  </div>
550
  <?php
551
  }
552
-
553
  }
554
 
555
  global $updraftplus_updraftcentral_main;
15
  add_action('updraftplus_debugtools_dashboard', array($this, 'debugtools_dashboard'), 20);
16
  add_action('udrpc_log', array($this, 'udrpc_log'), 10, 3);
17
 
18
+ add_action('wp_ajax_updraftcentral_receivepublickey', array($this, 'wp_ajax_updraftcentral_receivepublickey'));
19
+ add_action('wp_ajax_nopriv_updraftcentral_receivepublickey', array($this, 'wp_ajax_updraftcentral_receivepublickey'));
20
 
21
  // The 'updraftplus' commands are registered in UpdraftPlus::plugins_loaded()
22
  $command_classes = apply_filters('updraftplus_remotecontrol_command_classes', array(
30
  // Remote control keys
31
  // These are different from the remote send keys, which are set up in the Migrator add-on
32
  $our_keys = UpdraftPlus_Options::get_updraft_option('updraft_central_localkeys');
33
+ if (is_array($our_keys) && !empty($our_keys)) {
34
  $remote_control = new UpdraftPlus_UpdraftCentral_Listener($our_keys, $command_classes);
35
  }
36
 
50
  echo __('An UpdraftCentral connection has been made successfully.', 'updraftplus');
51
  } else {
52
  echo '<strong>'.__('A new UpdraftCentral connection has not been made.', 'updraftplus').'</strong><br>';
53
+ switch ($result['code']) {
54
  case 'unknown_key':
55
+ echo __('The key referred to was unknown.', 'updraftplus');
56
+ break;
57
+ case 'not_logged_in':
58
+ echo __('You are not logged into this WordPress site in your web browser.', 'updraftplus').' '.__('You must visit this URL in the same browser and login session as you created the key in.', 'updraftplus');
59
+ break;
60
+ case 'nonce_failure':
61
+ echo 'Security check. ';
62
+ _e('You must visit this link in the same browser and login session as you created the key in.', 'updraftplus');
63
+ break;
64
+ case 'already_have':
65
+ echo __('This connection appears to already have been made.', 'updraftplus');
66
+ break;
 
 
 
 
 
 
 
67
  default:
68
+ echo htmlspecialchars(print_r($result, true));
69
+ break;
70
  }
71
  }
72
 
101
  return array('responsetype' => 'ok', 'code' => 'ok');
102
  }
103
 
104
+ /**
105
+ * Action parameters, from udrpc: $message, $level, $this->key_name_indicator, $this->debug, $this
106
+ *
107
+ * @param string $message The log message
108
+ * @param string $level Log level
109
+ * @param string $key_name_indicator This indicates the key name
110
+ */
111
  public function udrpc_log($message, $level, $key_name_indicator) {
112
  $udrpc_log = get_site_option('updraftcentral_client_log');
113
  if (!is_array($udrpc_log)) $udrpc_log = array();
185
  // Use the site URL - this means that if the site URL changes, communication ends; which is the case anyway
186
  $user = wp_get_current_user();
187
 
188
+ $where_send = empty($params['where_send']) ? '' : (string) $params['where_send'];
189
 
190
+ if ('__updraftpluscom' != $where_send) {
191
  $purl = parse_url($where_send);
192
  if (empty($purl) || !array($purl) || empty($purl['scheme']) || empty($purl['host'])) return array('error' => __('An invalid URL was entered', 'updraftplus'));
193
  }
209
  }
210
 
211
  if (!empty($params['key_description'])) {
212
+ $extra_info['name'] = (string) $params['key_description'];
213
  }
214
 
215
+ $key_size = (empty($params['key_size']) || !is_numeric($params['key_size']) || $params['key_size'] < 512) ? 2048 : (int) $params['key_size'];
216
 
217
  $extra_info['key_size'] = $key_size;
218
 
223
  }
224
 
225
  return $created;
 
226
  }
227
 
228
  private function indicator_name_from_index($index) {
267
 
268
  @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT);
269
 
270
+ $key_size = (empty($extra_info['key_size']) || !is_numeric($extra_info['key_size']) || $extra_info['key_size'] < 512) ? 2048 : (int) $extra_info['key_size'];
 
271
 
272
  if (is_object($ud_rpc) && $ud_rpc->generate_new_keypair($key_size)) {
273
 
304
  );
305
 
306
  if (is_wp_error($sent_key) || empty($sent_key)) {
307
+ $err_msg = sprintf(__('A key was created, but the attempt to register it with %s was unsuccessful - please try again later.', 'updraftplus'), (string) $post_it_description);
308
  if (is_wp_error($sent_key)) $err_msg .= ' '.$sent_key->get_error_message().' ('.$sent_key->get_error_code().')';
309
  return array(
310
  'r' => $err_msg
315
 
316
  if (!is_array($response) || !isset($response['key_id']) || !isset($response['key_public'])) {
317
  return array(
318
+ 'r' => sprintf(__('A key was created, but the attempt to register it with %s was unsuccessful - please try again later.', 'updraftplus'), (string) $post_it_description),
319
  'raw' => wp_remote_retrieve_body($sent_key)
320
  );
321
  }
338
 
339
 
340
  if (isset($extra_info['name'])) {
341
+ $name = (string) $extra_info['name'];
342
  unset($extra_info['name']);
343
  } else {
344
  $name = 'UpdraftCentral Remote Control';
359
  return array(
360
  'bundle' => $local_bundle,
361
  'r' => __('Key created successfully.', 'updraftplus').' '.__('You must copy and paste this key now - it cannot be shown again.', 'updraftplus'),
362
+ // 'selector' => $this->get_remotesites_selector(array()),
363
+ // 'ourkeys' => $this->list_our_keys($our_keys),
364
  );
365
  }
366
 
429
  <table>
430
  <thead>
431
  <tr>
432
+ <th style="text-align:left;"><?php _e('Key description', 'updraftplus'); ?></th>
433
+ <th style="text-align:left;"><?php _e('Details', 'updraftplus'); ?></th>
434
  </tr>
435
  </thead>
436
  <tbody>
447
  return ob_get_clean();
448
  }
449
 
450
+ private function create_key_markup(){
451
+ ob_start();
452
+ ?>
453
  <div class="create_key_container">
454
+ <h4> <?php _e('Create new key', 'updraftplus'); ?></h4>
455
  <table style="width: auto; table-layout:fixed;">
456
  <thead></thead>
457
  <tbody>
458
  <tr class="updraft_debugrow">
459
  <th style="width: 20%;">
460
+ <?php _e('Description', 'updraftplus'); ?>:
461
  </th>
462
  <td style="width:80%;">
463
  <input id="updraftcentral_keycreate_description" type="text" size="20" placeholder="<?php _e('Enter any description', 'updraftplus'); ?>" value="" >
465
  </tr>
466
 
467
  <tr class="updraft_debugrow">
468
+ <th style=""> <?php _e('Dashboard at', 'updraftplus'); ?>:</th>
469
  <td style="width:80%;">
470
  <label>
471
  <input checked="checked" type="radio" name="updraftcentral_mothership" id="updraftcentral_mothership_updraftpluscom">
472
+ UpdraftPlus.Com (<?php _e('i.e. you have an account there', 'updraftplus'); ?>)
473
  </label>
474
  <br>
475
  <label>
476
  <input type="radio" name="updraftcentral_mothership" id="updraftcentral_mothership_other">
477
+ <?php _e('Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)', 'updraftplus'); ?>:
478
  </label>
479
  <br>
480
+ <input disabled="disabled" id="updraftcentral_keycreate_mothership" type="text" size="40" placeholder="<?php _e('URL of mothership', 'updraftplus'); ?>" value="">
481
  <br>
482
  <div id="updraftcentral_keycreate_mothership_firewalled_container">
483
  <label>
484
  <input id="updraftcentral_keycreate_mothership_firewalled" type="checkbox">
485
+ <?php _e('Use the alternative method for making a connection with the dashboard.', 'updraftplus'); ?>
486
  <a href="#" id="updraftcentral_keycreate_altmethod_moreinfo_get">
487
+ <?php _e('More information...', 'updraftplus'); ?>
488
  </a>
489
  <p id="updraftcentral_keycreate_altmethod_moreinfo" style="display:none;">
490
  <?php _e('This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate.');?>
498
  <td style="width:80%;">
499
  <?php _e('Encryption key size:', 'updraftplus'); ?>
500
  <select style="" id="updraftcentral_keycreate_keysize">
501
+ <option value="512"><?php echo sprintf(__('%s bits', 'updraftplus').' - '.__('easy to break, fastest', 'updraftplus'), '512'); ?></option>
502
+ <option value="1024"><?php echo sprintf(__('%s bits', 'updraftplus').' - '.__('faster (possibility for slow PHP installs)', 'updraftplus'), '1024'); ?></option>
503
+ <option value="2048" selected="selected"><?php echo sprintf(__('%s bytes', 'updraftplus').' - '.__('recommended', 'updraftplus'), '2048'); ?></option>
504
+ <option value="4096"><?php echo sprintf(__('%s bits', 'updraftplus').' - '.__('slower, strongest', 'updraftplus'), '4096'); ?></option>
505
  </select>
506
  </td>
507
  </tr>
508
  <tr class="updraft_debugrow">
509
  <th style=""></th>
510
  <td style="width:80%;">
511
+ <button type="button" class="button button-primary" id="updraftcentral_keycreate_go"><?php _e('Create', 'updraftplus'); ?></button>
512
  </td>
513
  </tr>
514
  </tbody>
515
  </table>
516
  </div>
517
+ <?php
518
+ return ob_get_clean();
519
+ }
520
 
521
  private function create_log_markup(){
522
  ob_start();
523
  ?>
524
  <div id="updraftcentral_view_log_container">
525
+ <h4><?php _e('View recent UpdraftCentral log events', 'updraftplus'); ?> -
526
+ <a href="#" id="updraftcentral_view_log"><?php _e('fetch...', 'updraftplus'); ?></a>
527
  </h4>
528
  <pre id="updraftcentral_view_log_contents" style="padding: 0 4px;">
529
  </pre>
547
  </div>
548
  <?php
549
  }
 
550
  }
551
 
552
  global $updraftplus_updraftcentral_main;
central/classes/class-automatic-upgrader-skin.php CHANGED
@@ -1,4 +1,6 @@
1
  <?php
 
 
2
 
3
  // Extracted from 4.5.2/wordpress/wp-admin/includes/class-wp-upgrader-skins.php; with the bulk_*() methods added since they are not in the base class on all WP versions.
4
  // Needed only on WP < 3.7
@@ -99,7 +101,7 @@ class Automatic_Upgrader_Skin extends WP_Upgrader_Skin {
99
  $this->feedback( $output );
100
  }
101
 
102
- /**
103
  * @access public
104
  */
105
  public function bulk_header() {}
1
  <?php
2
+ // @codingStandardsIgnoreFile
3
+ if (!defined('ABSPATH')) die('No direct access.');
4
 
5
  // Extracted from 4.5.2/wordpress/wp-admin/includes/class-wp-upgrader-skins.php; with the bulk_*() methods added since they are not in the base class on all WP versions.
6
  // Needed only on WP < 3.7
101
  $this->feedback( $output );
102
  }
103
 
104
+ /**
105
  * @access public
106
  */
107
  public function bulk_header() {}
central/commands.php CHANGED
@@ -2,17 +2,16 @@
2
 
3
  if (!defined('UPDRAFTPLUS_DIR')) die('No access.');
4
 
5
- /*
6
- - A container for all the RPC commands implemented. Commands map exactly onto method names (and hence this class should not implement anything else, beyond the constructor, and private methods)
7
- - Return format is array('response' => (string - a code), 'data' => (mixed));
8
-
9
- RPC commands are not allowed to begin with an underscore. So, any private methods can be prefixed with an underscore.
10
-
11
- */
12
-
13
  abstract class UpdraftCentral_Commands {
14
 
15
  protected $rc;
 
16
  protected $ud;
17
 
18
  public function __construct($rc) {
@@ -24,14 +23,14 @@ abstract class UpdraftCentral_Commands {
24
  final protected function _admin_include() {
25
  $files = func_get_args();
26
  foreach ($files as $file) {
27
- require_once(ABSPATH.'/wp-admin/includes/'.$file);
28
  }
29
  }
30
 
31
  final protected function _frontend_include() {
32
  $files = func_get_args();
33
  foreach ($files as $file) {
34
- require_once(ABSPATH.WPINC.'/'.$file);
35
  }
36
  }
37
 
2
 
3
  if (!defined('UPDRAFTPLUS_DIR')) die('No access.');
4
 
5
+ /**
6
+ * - A container for all the RPC commands implemented. Commands map exactly onto method names (and hence this class should not implement anything else, beyond the constructor, and private methods)
7
+ * - Return format is array('response' => (string - a code), 'data' => (mixed));
8
+ *
9
+ * RPC commands are not allowed to begin with an underscore. So, any private methods can be prefixed with an underscore.
10
+ */
 
 
11
  abstract class UpdraftCentral_Commands {
12
 
13
  protected $rc;
14
+
15
  protected $ud;
16
 
17
  public function __construct($rc) {
23
  final protected function _admin_include() {
24
  $files = func_get_args();
25
  foreach ($files as $file) {
26
+ include_once(ABSPATH.'/wp-admin/includes/'.$file);
27
  }
28
  }
29
 
30
  final protected function _frontend_include() {
31
  $files = func_get_args();
32
  foreach ($files as $file) {
33
+ include_once(ABSPATH.WPINC.'/'.$file);
34
  }
35
  }
36
 
central/listener.php CHANGED
@@ -2,17 +2,25 @@
2
 
3
  if (!defined('UPDRAFTPLUS_DIR')) die('No access.');
4
 
5
- // This class is the basic glue between the lower-level UpdraftPlus_Remote_Communications (UDRPC) class, and UpdraftPlus. It does not contain actual commands themselves; the class names to use for actual commands are passed in as a parameter to the constructor.
6
-
 
7
  class UpdraftPlus_UpdraftCentral_Listener {
8
 
9
  public $udrpc_version;
 
10
  private $ud = null;
 
11
  private $receivers = array();
 
12
  private $extra_info = array();
 
13
  private $php_events = array();
 
14
  private $commands = array();
 
15
  private $current_udrpc = null;
 
16
  private $command_classes;
17
 
18
  public function __construct($keys = array(), $command_classes = array()) {
@@ -53,13 +61,13 @@ class UpdraftPlus_UpdraftCentral_Listener {
53
 
54
  // If we ever need to expand beyond a single GET action, this can/should be generalised and put into the commands class
55
  if (!empty($_GET['udcentral_action']) && 'login' == $_GET['udcentral_action']) {
56
- # auth_redirect() does not return, according to the documentation; but the code shows that it can
57
- # auth_redirect();
58
 
59
  if (!empty($_GET['login_id']) && is_numeric($_GET['login_id']) && !empty($_GET['login_key'])) {
60
  $login_user = get_user_by('id', $_GET['login_id']);
61
 
62
- require_once(ABSPATH.WPINC.'/version.php');
63
  if (is_a($login_user, 'WP_User') || (version_compare($wp_version, '3.5', '<') && !empty($login_user->ID))) {
64
  // Allow site implementers to disable this functionality
65
  $allow_autologin = apply_filters('updraftcentral_allow_autologin', true, $login_user);
@@ -82,10 +90,15 @@ class UpdraftPlus_UpdraftCentral_Listener {
82
 
83
  }
84
 
85
- // Do verification before calling this method
 
 
 
 
 
86
  private function autologin_user($user, $redirect_url = false) {
87
  if (!is_user_logged_in()) {
88
- // $user = get_user_by('id', $user_id);
89
  // Don't check that it's a WP_User - that's WP 3.5+ only
90
  if (!is_object($user) || empty($user->ID)) return;
91
  wp_set_current_user($user->ID, $user->user_login);
@@ -114,14 +127,14 @@ class UpdraftPlus_UpdraftCentral_Listener {
114
 
115
  $command_base_class_at = apply_filters('updraftcentral_command_base_class_at', UPDRAFTPLUS_DIR.'/central/commands.php');
116
 
117
- if (!class_exists('UpdraftCentral_Commands')) require_once($command_base_class_at);
118
 
119
- // Second parameter has been passed since
120
  do_action('updraftcentral_command_class_wanted', $command_php_class);
121
 
122
  if (!class_exists($command_php_class)) {
123
  if (file_exists(UPDRAFTPLUS_DIR.'/central/modules/'.$class_prefix.'.php')) {
124
- require_once(UPDRAFTPLUS_DIR.'/central/modules/'.$class_prefix.'.php');
125
  }
126
  }
127
 
@@ -164,8 +177,6 @@ class UpdraftPlus_UpdraftCentral_Listener {
164
  @ob_start();
165
  add_filter('updraftplus_logline', array($this, 'updraftplus_logline'), 10, 4);
166
  if (!UpdraftPlus_Options::get_updraft_option('updraft_debug_mode')) return;
167
- // $this->ud->nonce = $hash;
168
- // $this->ud->logfile_open($hash);
169
  }
170
 
171
  public function updraftplus_logline($line, $nonce, $level, $uniq_id) {
@@ -183,7 +194,7 @@ class UpdraftPlus_UpdraftCentral_Listener {
183
  $caught_output = @ob_get_contents();
184
  @ob_end_clean();
185
  // If turning output-catching off, turn this on instead:
186
- // $caught_output = ''; @ob_end_flush();
187
 
188
  // If there's higher-level output buffering going on, then get rid of that
189
  if (ob_get_level()) ob_end_clean();
@@ -209,5 +220,4 @@ class UpdraftPlus_UpdraftCentral_Listener {
209
 
210
  return $msg;
211
  }
212
-
213
  }
2
 
3
  if (!defined('UPDRAFTPLUS_DIR')) die('No access.');
4
 
5
+ /**
6
+ * This class is the basic glue between the lower-level UpdraftPlus_Remote_Communications (UDRPC) class, and UpdraftPlus. It does not contain actual commands themselves; the class names to use for actual commands are passed in as a parameter to the constructor.
7
+ */
8
  class UpdraftPlus_UpdraftCentral_Listener {
9
 
10
  public $udrpc_version;
11
+
12
  private $ud = null;
13
+
14
  private $receivers = array();
15
+
16
  private $extra_info = array();
17
+
18
  private $php_events = array();
19
+
20
  private $commands = array();
21
+
22
  private $current_udrpc = null;
23
+
24
  private $command_classes;
25
 
26
  public function __construct($keys = array(), $command_classes = array()) {
61
 
62
  // If we ever need to expand beyond a single GET action, this can/should be generalised and put into the commands class
63
  if (!empty($_GET['udcentral_action']) && 'login' == $_GET['udcentral_action']) {
64
+ // auth_redirect() does not return, according to the documentation; but the code shows that it can
65
+ // auth_redirect();
66
 
67
  if (!empty($_GET['login_id']) && is_numeric($_GET['login_id']) && !empty($_GET['login_key'])) {
68
  $login_user = get_user_by('id', $_GET['login_id']);
69
 
70
+ include_once(ABSPATH.WPINC.'/version.php');
71
  if (is_a($login_user, 'WP_User') || (version_compare($wp_version, '3.5', '<') && !empty($login_user->ID))) {
72
  // Allow site implementers to disable this functionality
73
  $allow_autologin = apply_filters('updraftcentral_allow_autologin', true, $login_user);
90
 
91
  }
92
 
93
+ /**
94
+ * Do verification before calling this method
95
+ *
96
+ * @param WP_User|Object $user user object
97
+ * @param boolean $redirect_url Redirect URL
98
+ */
99
  private function autologin_user($user, $redirect_url = false) {
100
  if (!is_user_logged_in()) {
101
+ // $user = get_user_by('id', $user_id);
102
  // Don't check that it's a WP_User - that's WP 3.5+ only
103
  if (!is_object($user) || empty($user->ID)) return;
104
  wp_set_current_user($user->ID, $user->user_login);
127
 
128
  $command_base_class_at = apply_filters('updraftcentral_command_base_class_at', UPDRAFTPLUS_DIR.'/central/commands.php');
129
 
130
+ if (!class_exists('UpdraftCentral_Commands')) include_once($command_base_class_at);
131
 
132
+ // Second parameter has been passed since
133
  do_action('updraftcentral_command_class_wanted', $command_php_class);
134
 
135
  if (!class_exists($command_php_class)) {
136
  if (file_exists(UPDRAFTPLUS_DIR.'/central/modules/'.$class_prefix.'.php')) {
137
+ include_once(UPDRAFTPLUS_DIR.'/central/modules/'.$class_prefix.'.php');
138
  }
139
  }
140
 
177
  @ob_start();
178
  add_filter('updraftplus_logline', array($this, 'updraftplus_logline'), 10, 4);
179
  if (!UpdraftPlus_Options::get_updraft_option('updraft_debug_mode')) return;
 
 
180
  }
181
 
182
  public function updraftplus_logline($line, $nonce, $level, $uniq_id) {
194
  $caught_output = @ob_get_contents();
195
  @ob_end_clean();
196
  // If turning output-catching off, turn this on instead:
197
+ // $caught_output = ''; @ob_end_flush();
198
 
199
  // If there's higher-level output buffering going on, then get rid of that
200
  if (ob_get_level()) ob_end_clean();
220
 
221
  return $msg;
222
  }
 
223
  }
central/modules/comments.php CHANGED
@@ -5,19 +5,22 @@ if (!defined('UPDRAFTPLUS_DIR')) die('No access.');
5
  class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
6
 
7
  /**
8
- * The _search_comments function searches all available comments based
9
- * on the following query parameters (type, status, search)
10
- *
11
- * Search Parameters/Filters:
12
- * type - comment types can be 'comment', 'trackback' and 'pingback', defaults to 'comment'
13
- * status - comment status can be 'hold' or unapprove, 'approve', 'spam', 'trash'
14
- * search - user generated content or keyword
15
- */
 
 
 
16
  private function _search_comments($query) {
17
 
18
- //Basic parameters to the query and should display
19
- //the results in descending order (latest comments) first
20
- //based on their generated IDs
21
 
22
  $args = array(
23
  'orderby' => 'ID',
@@ -33,10 +36,10 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
33
  $comments = array();
34
  foreach ($found_comments as $comment) {
35
 
36
- //We're returning a collection of comment in an array,
37
- //in sync with the originator of the request on the ui side
38
- //so, we're pulling it one by one into the array before
39
- //returning it.
40
 
41
  if (!in_array($comment, $comments)) {
42
  array_push($comments, $comment);
@@ -47,38 +50,41 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
47
  }
48
 
49
  /**
50
- * The _calculate_pages function generates and builds the pagination links
51
- * based on the current search parameters/filters. Please see _search_comments
52
- * for the breakdown of these parameters.
53
- */
 
 
 
54
  private function _calculate_pages($query) {
55
  $per_page_options = array(10, 20, 30, 40, 50);
56
 
57
  if (!empty($query)) {
58
  if (!empty($query['search'])) {
59
- return array(
60
- 'page_count' => 1,
61
- 'page_no' => 1
62
- );
63
  }
64
 
65
  $pages = array();
66
  $page_query = new WP_Comment_Query;
67
 
68
- //Here, we're pulling the comments based on the
69
- //two parameters namely type and status.
70
- //
71
- //The number of results/comments found will then
72
- //be use to compute for the number of pages to be
73
- //displayed as navigation links when browsing all
74
- //comments from the frontend.
75
 
76
  $comments = $page_query->query(array(
77
  'type' => $query['type'],
78
  'status' => $query['status']
79
  ));
80
 
81
- $total_comments = count($comments);
82
  $page_count = ceil($total_comments / $query['per_page']);
83
 
84
  if ($page_count > 1) {
@@ -107,7 +113,7 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
107
  );
108
  }
109
 
110
- if ($query['page_no'] === 1) {
111
  $page_prev = array(
112
  'value' => 1,
113
  'setting' => 'disabled'
@@ -146,22 +152,21 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
146
  }
147
 
148
  /**
149
- * The get_blog_sites function pulls blog sites available
150
- * for the current WP instance.
151
- *
152
- * If Multisite is enabled on the server, then sites under the network
153
- * will be pulled, otherwise, it will return an empty array.
154
- */
155
  private function get_blog_sites() {
156
 
157
  if (!is_multisite()) return array();
158
 
159
- //Initialize array container
160
  $sites = $network_sites = array();
161
 
162
- //Check to see if latest get_sites (available on WP version >= 4.6) function is
163
- //available to pull any available sites from the current WP instance. If not, then
164
- //we're going to use the fallback function wp_get_sites (for older version).
165
 
166
  if (function_exists('get_sites') && class_exists('WP_Site_Query')) {
167
  $network_sites = get_sites();
@@ -171,25 +176,24 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
171
  }
172
  }
173
 
174
- //We only process if sites array is not empty, otherwise, bypass
175
- //the next block.
176
 
177
  if (!empty($network_sites)) {
178
  foreach ($network_sites as $site) {
179
 
180
- //Here we're checking if the site type is an array, because
181
- //we're pulling the blog_id property based on the type of
182
- //site returned.
183
- //
184
- //get_sites returns an array of object, whereas the wp_get_sites
185
- //function returns an array of array.
186
 
187
  $blog_id = (is_array($site)) ? $site['blog_id'] : $site->blog_id;
188
 
189
 
190
- //We're saving the blog_id and blog name as an associative item
191
- //into the sites array, that will be used as "Sites" option in
192
- //the frontend.
193
 
194
  $sites[$blog_id] = get_blog_details($blog_id)->blogname;
195
  }
@@ -199,32 +203,39 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
199
  }
200
 
201
  /**
202
- * The get_wp_option function pulls current blog options
203
- * from the database using either following functions:
204
- * - get_blog_option (for multisite)
205
- * - get_option (for ordinary blog)
206
- */
 
 
 
 
207
  private function _get_wp_option($blog_id, $setting) {
208
  return is_multisite() ? get_blog_option($blog_id, $setting) : get_option($setting);
209
  }
210
 
211
  /**
212
- * The get_comments function pull all the comments from the database
213
- * based on the current search parameters/filters. Please see _search_comments
214
- * for the breakdown of these parameters.
215
- */
 
 
 
216
  public function get_comments($query) {
217
 
218
- //Here, we're getting the current blog id. If blog id
219
- //is passed along with the parameters then we override
220
- //that current (default) value with the parameter blog id value.
221
 
222
  $blog_id = get_current_blog_id();
223
  if (isset($query['blog_id'])) $blog_id = $query['blog_id'];
224
 
225
 
226
- //Here, we're switching to the actual blog that we need
227
- //to pull comments from.
228
 
229
  $switched = false;
230
  if (function_exists('switch_to_blog')) {
@@ -232,24 +243,32 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
232
  }
233
 
234
  if (!empty($query['search'])) {
235
- //If a search keyword is present, then we'll call the _search_comments
236
- //function to process the query.
237
 
238
  $comments = $this->_search_comments($query);
239
  } else {
240
- //Set default parameter values if the designated
241
- //parameters are empty.
242
 
243
- if (empty($query['per_page'])) { $query['per_page'] = 10; }
244
- if (empty($query['page_no'])) { $query['page_no'] = 1; }
245
- if (empty($query['type'])) { $query['type'] = ''; }
246
- if (empty($query['status'])) { $query['status'] = ''; }
 
 
 
 
 
 
 
 
247
 
248
- //Since WP_Comment_Query parameters doesn't have a "page" attribute, we
249
- //need to compute for the offset to get the exact content based on the
250
- //current page and the number of items per page.
251
 
252
- $offset = ((int)$query['page_no'] - 1) * (int)$query['per_page'];
253
  $args = array(
254
  'orderby' => 'ID',
255
  'order' => 'DESC',
@@ -260,24 +279,24 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
260
  );
261
 
262
  $comments_query = new WP_Comment_Query;
263
- $comments = $comments_query->query( $args );
264
  }
265
 
266
- //If no comments are found based on the current query then
267
- //we return with error.
268
 
269
  if (empty($comments)) {
270
  $result = array('message' => 'comments_not_found');
271
  return $this->_response($result);
272
  }
273
 
274
- //Otherwise, we're going to process each comment
275
- //before we return it to the one issuing the request.
276
  //
277
- //Process in the sense that we add additional related info
278
- //such as the post tile where the comment belongs to, the
279
- //comment status, a formatted date field, and to which parent comment
280
- //does the comment was intended to be as a reply.
281
 
282
  foreach ($comments as &$comment) {
283
  $comment = get_comment($comment->comment_ID, ARRAY_A);
@@ -290,8 +309,8 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
290
  if ($parent_comment) $comment['in_reply_to'] = $parent_comment['comment_author'];
291
  }
292
 
293
- //We're formatting the comment_date to be exactly the same
294
- //with that of WP Comments table (e.g. 2016/12/21 at 10:30 PM)
295
 
296
  $comment['comment_date'] = date('Y/m/d \a\t g:i a', strtotime($comment['comment_date']));
297
 
@@ -302,8 +321,8 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
302
  }
303
  }
304
 
305
- //We return the following to the one issuing
306
- //the request.
307
 
308
  $result = array(
309
  'comments' => $comments,
@@ -311,8 +330,8 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
311
  );
312
 
313
 
314
- //Here, we're restoring to the current (default) blog before we
315
- //do the switched.
316
 
317
  if (function_exists('restore_current_blog') && $switched) {
318
  restore_current_blog();
@@ -322,17 +341,17 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
322
  }
323
 
324
  /**
325
- * The get_comment_filters function builds a array of options
326
- * to be use as filters for the search function on the frontend.
327
- */
328
  public function get_comment_filters() {
329
- //Options for comment_types field
330
  $comment_types = apply_filters('admin_comment_types_dropdown', array(
331
  'comment' => __('Comments'),
332
  'pings' => __('Pings'),
333
  ));
334
 
335
- //Options for comment_status field
336
  $comment_statuses = array(
337
  'approve' => __('Approve'),
338
  'hold' => __('Hold or Unapprove'),
@@ -340,7 +359,7 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
340
  'spam' => __('Spam'),
341
  );
342
 
343
- //Pull sites options if available.
344
  $sites = $this->get_blog_sites();
345
 
346
  $result = array(
@@ -354,32 +373,35 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
354
  }
355
 
356
  /**
357
- * The get_settings function pulls the current discussion settings
358
- * option values.
359
- */
 
 
 
360
  public function get_settings($params) {
361
 
362
- //Here, we're getting the current blog id. If blog id
363
- //is passed along with the parameters then we override
364
- //that current (default) value with the parameter blog id value.
365
 
366
  $blog_id = get_current_blog_id();
367
  if (isset($params['blog_id'])) $blog_id = $params['blog_id'];
368
 
369
 
370
- //If user does not have sufficient privileges to manage and edit
371
- //WP options then we return with error.
372
 
373
  if (!current_user_can_for_blog($blog_id, 'manage_options')) {
374
  $result = array('error' => true, 'message' => 'insufficient_permission');
375
  return $this->_response($result);
376
  }
377
 
378
- //Pull sites options if available.
379
  $sites = $this->get_blog_sites();
380
 
381
- //Wrap current discussion settings values into an array item
382
- //named settings.
383
 
384
  $result = array(
385
  'settings' => array(
@@ -411,39 +433,42 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
411
  }
412
 
413
  /**
414
- * The update_settings function updates the discussion settings
415
- * basing on the user generated content/option from the frontend
416
- * form.
417
- */
 
 
 
418
  public function update_settings($params) {
419
 
420
- //Extract settings values from passed parameters.
421
  $settings = $params['settings'];
422
 
423
- //Here, we're getting the current blog id. If blog id
424
- //is passed along with the parameters then we override
425
- //that current (default) value with the parameter blog id value.
426
 
427
  $blog_id = get_current_blog_id();
428
  if (isset($params['blog_id'])) $blog_id = $params['blog_id'];
429
 
430
 
431
- //If user does not have sufficient privileges to manage and edit
432
- //WP options then we return with error.
433
 
434
  if (!current_user_can_for_blog($blog_id, 'manage_options')) {
435
  $result = array('error' => true, 'message' => 'insufficient_permission');
436
  return $this->_response($result);
437
  }
438
 
439
- //Here, we're sanitizing the input fields before we save them to the database
440
- //for safety and security reason. The "explode" and "implode" functions are meant
441
- //to maintain the line breaks associated with a textarea input/value.
442
 
443
  foreach ($settings as $key => $value) {
444
 
445
- //We're using update_blog_option and update_option altogether to update the current
446
- //discussion settings.
447
 
448
  if (is_multisite()) {
449
  update_blog_option($blog_id, $key, implode("\n", array_map('sanitize_text_field', explode("\n", $value))));
@@ -452,53 +477,56 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
452
  }
453
  }
454
 
455
- //We're not checking for errors here, but instead we're directly returning a success (error = false)
456
- //status always, because WP's update_option will return fail if values were not changed, meaning
457
- //previous values were not changed by the user's current request, not an actual exception thrown.
458
- //Thus, giving a false positive message or report to the frontend.
459
 
460
  $result = array('error' => false, 'message' => 'settings_updated', 'values' => array());
461
  return $this->_response($result);
462
  }
463
 
464
  /**
465
- * The get_comment function pulls a single comment based
466
- * on a comment ID.
467
- */
 
 
 
468
  public function get_comment($params) {
469
 
470
- //Here, we're getting the current blog id. If blog id
471
- //is passed along with the parameters then we override
472
- //that current (default) value with the parameter blog id value.
473
 
474
  $blog_id = get_current_blog_id();
475
  if (isset($params['blog_id'])) $blog_id = $params['blog_id'];
476
 
477
 
478
- //If user does not have sufficient privileges to moderate or edit
479
- //a comment then we return with error.
480
 
481
  if (!current_user_can_for_blog($blog_id, 'moderate_comments')) {
482
  $result = array('error' => true, 'message' => 'insufficient_permission');
483
  return $this->_response($result);
484
  }
485
 
486
- //Here, we're switching to the actual blog that we need
487
- //to pull comments from.
488
 
489
  $switched = false;
490
  if (function_exists('switch_to_blog')) {
491
  $switched = switch_to_blog($blog_id);
492
  }
493
 
494
- //Get comment by comment_ID parameter and return result as an array.
495
  $result = array(
496
  'comment' => get_comment($params['comment_id'], ARRAY_A)
497
  );
498
 
499
 
500
- //Here, we're restoring to the current (default) blog before we
501
- //do the switched.
502
 
503
  if (function_exists('restore_current_blog') && $switched) {
504
  restore_current_blog();
@@ -508,32 +536,35 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
508
  }
509
 
510
  /**
511
- * The reply_comment function creates a new comment as a reply
512
- * to a certain/selected comment.
513
- */
 
 
 
514
  public function reply_comment($params) {
515
 
516
- //Extract reply info from the passed parameters
517
  $reply = $params['comment'];
518
 
519
- //Here, we're getting the current blog id. If blog id
520
- //is passed along with the parameters then we override
521
- //that current (default) value with the parameter blog id value.
522
 
523
  $blog_id = get_current_blog_id();
524
  if (isset($params['blog_id'])) $blog_id = $params['blog_id'];
525
 
526
 
527
- //If user does not have sufficient privileges to moderate or edit
528
- //a comment then we return with error.
529
 
530
  if (!current_user_can_for_blog($blog_id, 'moderate_comments')) {
531
  $result = array('error' => true, 'message' => 'comment_reply_no_permission');
532
  return $this->_response($result);
533
  }
534
 
535
- //Here, we're switching to the actual blog that we need
536
- //to apply our changes.
537
 
538
  $switched = false;
539
  if (function_exists('switch_to_blog')) {
@@ -541,17 +572,17 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
541
  }
542
 
543
 
544
- //Get comment by comment_ID parameter.
545
  $comment = get_comment($reply['comment_id']);
546
  if ($comment) {
547
 
548
- //Get the currently logged in user
549
  $user = wp_get_current_user();
550
 
551
- //If the current comment was not approved yet then
552
- //we need to approve it before we create a reply to
553
- //to the comment, mimicking exactly the WP behaviour
554
- //in terms of creating a reply to a comment.
555
 
556
  if (empty($comment->comment_approved)) {
557
  $update_data = array(
@@ -561,8 +592,8 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
561
  wp_update_comment($update_data);
562
  }
563
 
564
- //Build new comment parameters based on current user info and
565
- //the target comment for the reply.
566
  $data = array(
567
  'comment_post_ID' => $comment->comment_post_ID,
568
  'comment_author' => $user->display_name,
@@ -575,8 +606,8 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
575
  'comment_approved' => 1
576
  );
577
 
578
- //Create new comment based on the parameters above, and return
579
- //the status accordingly.
580
 
581
  if (wp_insert_comment($data)) {
582
  $result = array('error' => false, 'message' => 'comment_replied_with_comment_author', 'values' => array($comment->comment_author));
@@ -588,8 +619,8 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
588
  }
589
 
590
 
591
- //Here, we're restoring to the current (default) blog before we
592
- //do the switched.
593
 
594
  if (function_exists('restore_current_blog') && $switched) {
595
  restore_current_blog();
@@ -599,32 +630,35 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
599
  }
600
 
601
  /**
602
- * The edit_comment function saves new information for the
603
- * currently selected comment.
604
- */
 
 
 
605
  public function edit_comment($params) {
606
 
607
- //Extract new comment info from the passed parameters
608
  $comment = $params['comment'];
609
 
610
- //Here, we're getting the current blog id. If blog id
611
- //is passed along with the parameters then we override
612
- //that current (default) value with the parameter blog id value.
613
 
614
  $blog_id = get_current_blog_id();
615
  if (isset($params['blog_id'])) $blog_id = $params['blog_id'];
616
 
617
 
618
- //If user does not have sufficient privileges to moderate or edit
619
- //a comment then we return with error.
620
 
621
  if (!current_user_can_for_blog($blog_id, 'moderate_comments')) {
622
  $result = array('error' => true, 'message' => 'comment_edit_no_permission');
623
  return $this->_response($result);
624
  }
625
 
626
- //Here, we're switching to the actual blog that we need
627
- //to apply our changes.
628
 
629
  $switched = false;
630
  if (function_exists('switch_to_blog')) {
@@ -632,26 +666,26 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
632
  }
633
 
634
 
635
- //Get current comment details
636
  $original_comment = get_comment($comment['comment_id']);
637
  if ($original_comment) {
638
  $data = array();
639
 
640
- //Replace "comment_id" with "comment_ID" since WP does not recognize
641
- //the small case "id".
642
  $comment['comment_ID'] = $original_comment->comment_ID;
643
  unset($comment['comment_id']);
644
 
645
- //Here, we're sanitizing the input fields before we save them to the database
646
- //for safety and security reason. The "explode" and "implode" functions are meant
647
- //to maintain the line breaks associated with a textarea input/value.
648
 
649
  foreach ($comment as $key => $value) {
650
  $data[$key] = implode("\n", array_map('sanitize_text_field', explode("\n", $value)));
651
  }
652
 
653
- //Update existing comment based on the passed parameter fields and
654
- //return the status accordingly.
655
 
656
  if (wp_update_comment($data)) {
657
  $result = array('error' => false, 'message' => 'comment_edited_with_comment_author', 'values' => array($original_comment->comment_author));
@@ -662,8 +696,8 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
662
  $result = array('error' => true, 'message' => 'comment_does_not_exists_error', 'values' => array($comment['comment_id']));
663
  }
664
 
665
- //Here, we're restoring to the current (default) blog before we
666
- //do the switched.
667
 
668
  if (function_exists('restore_current_blog') && $switched) {
669
  restore_current_blog();
@@ -673,37 +707,40 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
673
  }
674
 
675
  /**
676
- * The update_comment_status function is a generic handler for the following
677
- * comment actions:
678
- *
679
- * - approve comment
680
- * - unapprove comment
681
- * - set comment as spam
682
- * - move commment to trash
683
- * - delete comment permanently
684
- * - unset comment as spam
685
- * - restore comment
686
- */
 
 
 
687
  public function update_comment_status($params) {
688
 
689
- //Here, we're getting the current blog id. If blog id
690
- //is passed along with the parameters then we override
691
- //that current (default) value with the parameter blog id value.
692
 
693
  $blog_id = get_current_blog_id();
694
  if (isset($params['blog_id'])) $blog_id = $params['blog_id'];
695
 
696
 
697
- //If user does not have sufficient privileges to moderate or edit
698
- //a comment then we return with error.
699
 
700
  if (!current_user_can_for_blog($blog_id, 'moderate_comments')) {
701
  $result = array('error' => true, 'message' => 'comment_change_status_no_permission');
702
  return $this->_response($result);
703
  }
704
 
705
- //Here, we're switching to the actual blog that we need
706
- //to apply our changes.
707
 
708
  $switched = false;
709
  if (function_exists('switch_to_blog')) {
@@ -711,55 +748,73 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
711
  }
712
 
713
 
714
- //We make sure that we still have a valid comment from the server
715
- //before we apply the currently selected action.
716
 
717
  $comment = get_comment($params['comment_id']);
718
  if ($comment) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
719
  $succeeded = false;
720
  $message = '';
721
 
722
- //Here, we're using WP's wp_set_comment_status function to change the state
723
- //of the selected comment based on the current action, except for the "delete" action
724
- //where we use the wp_delete_comment to delete the comment permanently by passing
725
- //"true" to the second argument.
726
 
727
  switch ($params['action']) {
728
  case 'approve':
729
- $succeeded = wp_set_comment_status($params['comment_id'], 'approve');
730
- $message = 'comment_approve_with_comment_author';
731
  break;
732
  case 'unapprove':
733
- $succeeded = wp_set_comment_status($params['comment_id'], 'hold');
734
- $message = 'comment_unapprove_with_comment_author';
735
  break;
736
  case 'spam':
737
- $succeeded = wp_set_comment_status($params['comment_id'], 'spam');
738
- $message = 'comment_spam_with_comment_author';
739
  break;
740
  case 'trash':
741
- $succeeded = wp_set_comment_status($params['comment_id'], 'trash');
742
- $message = 'comment_trash_with_comment_author';
743
  break;
744
  case 'delete':
745
- $succeeded = wp_delete_comment($params['comment_id'], true);
746
- $message = 'comment_delete_with_comment_author';
747
  break;
748
  case 'notspam':
749
- $succeeded = wp_set_comment_status($params['comment_id'], 'hold');
750
- $message = 'comment_not_spam_with_comment_author';
751
  break;
752
  case 'restore':
753
- $succeeded = wp_set_comment_status($params['comment_id'], 'hold');
754
- $message = 'comment_restore_with_comment_author';
755
  break;
756
  }
757
 
758
- //If the current action succeeded, then we return a success message, otherwise,
759
- //we return an error message to the user issuing the request.
760
 
761
  if ($succeeded) {
762
- $result = array('error' => false, 'message' => $message, 'values' => array($comment->comment_author));
763
  } else {
764
  $result = array('error' => true, 'message' => 'comment_change_status_failed_with_error', 'values' => array($comment->comment_ID));
765
  }
@@ -767,8 +822,8 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
767
  $result = array('error' => true, 'message' => 'comment_does_not_exists_error', 'values' => array($params['comment_id']));
768
  }
769
 
770
- //Here, we're restoring to the current (default) blog before we
771
- //do the switched.
772
 
773
  if (function_exists('restore_current_blog') && $switched) {
774
  restore_current_blog();
@@ -776,5 +831,4 @@ class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
776
 
777
  return $this->_response($result);
778
  }
779
-
780
  }
5
  class UpdraftCentral_Comments_Commands extends UpdraftCentral_Commands {
6
 
7
  /**
8
+ * The _search_comments function searches all available comments based
9
+ * on the following query parameters (type, status, search)
10
+ *
11
+ * Search Parameters/Filters:
12
+ * type - comment types can be 'comment', 'trackback' and 'pingback', defaults to 'comment'
13
+ * status - comment status can be 'hold' or unapprove, 'approve', 'spam', 'trash'
14
+ * search - user generated content or keyword
15
+ *
16
+ * @param array $query The query to search comments
17
+ * @return array
18
+ */
19
  private function _search_comments($query) {
20
 
21
+ // Basic parameters to the query and should display
22
+ // the results in descending order (latest comments) first
23
+ // based on their generated IDs
24
 
25
  $args = array(
26
  'orderby' => 'ID',
36
  $comments = array();
37
  foreach ($found_comments as $comment) {
38
 
39
+ // We're returning a collection of comment in an array,
40
+ // in sync with the originator of the request on the ui side
41
+ // so, we're pulling it one by one into the array before
42
+ // returning it.
43
 
44
  if (!in_array($comment, $comments)) {
45
  array_push($comments, $comment);
50
  }
51
 
52
  /**
53
+ * The _calculate_pages function generates and builds the pagination links
54
+ * based on the current search parameters/filters. Please see _search_comments
55
+ * for the breakdown of these parameters.
56
+ *
57
+ * @param array $query Query to generate pagination links
58
+ * @return array
59
+ */
60
  private function _calculate_pages($query) {
61
  $per_page_options = array(10, 20, 30, 40, 50);
62
 
63
  if (!empty($query)) {
64
  if (!empty($query['search'])) {
65
+ return array(
66
+ 'page_count' => 1,
67
+ 'page_no' => 1
68
+ );
69
  }
70
 
71
  $pages = array();
72
  $page_query = new WP_Comment_Query;
73
 
74
+ // Here, we're pulling the comments based on the
75
+ // two parameters namely type and status.
76
+ //
77
+ // The number of results/comments found will then
78
+ // be use to compute for the number of pages to be
79
+ // displayed as navigation links when browsing all
80
+ // comments from the frontend.
81
 
82
  $comments = $page_query->query(array(
83
  'type' => $query['type'],
84
  'status' => $query['status']
85
  ));
86
 
87
+ $total_comments = count($comments);
88
  $page_count = ceil($total_comments / $query['per_page']);
89
 
90
  if ($page_count > 1) {
113
  );
114
  }
115
 
116
+ if (1 === $query['page_no']) {
117
  $page_prev = array(
118
  'value' => 1,
119
  'setting' => 'disabled'
152
  }
153
 
154
  /**
155
+ * The get_blog_sites function pulls blog sites available for the current WP instance.
156
+ * If Multisite is enabled on the server, then sites under the network will be pulled, otherwise, it will return an empty array.
157
+ *
158
+ * @return array
159
+ */
 
160
  private function get_blog_sites() {
161
 
162
  if (!is_multisite()) return array();
163
 
164
+ // Initialize array container
165
  $sites = $network_sites = array();
166
 
167
+ // Check to see if latest get_sites (available on WP version >= 4.6) function is
168
+ // available to pull any available sites from the current WP instance. If not, then
169
+ // we're going to use the fallback function wp_get_sites (for older version).
170
 
171
  if (function_exists('get_sites') && class_exists('WP_Site_Query')) {
172
  $network_sites = get_sites();
176
  }
177
  }
178
 
179
+ // We only process if sites array is not empty, otherwise, bypass
180
+ // the next block.
181
 
182
  if (!empty($network_sites)) {
183
  foreach ($network_sites as $site) {
184
 
185
+ // Here we're checking if the site type is an array, because
186
+ // we're pulling the blog_id property based on the type of
187
+ // site returned.
188
+ // get_sites returns an array of object, whereas the wp_get_sites
189
+ // function returns an array of array.
 
190
 
191
  $blog_id = (is_array($site)) ? $site['blog_id'] : $site->blog_id;
192
 
193
 
194
+ // We're saving the blog_id and blog name as an associative item
195
+ // into the sites array, that will be used as "Sites" option in
196
+ // the frontend.
197
 
198
  $sites[$blog_id] = get_blog_details($blog_id)->blogname;
199
  }
203
  }
204
 
205
  /**
206
+ * The get_wp_option function pulls current blog options
207
+ * from the database using either following functions:
208
+ * - get_blog_option (for multisite)
209
+ * - get_option (for ordinary blog)
210
+ *
211
+ * @param array $blog_id This is the specific blog ID
212
+ * @param array $setting specifies settings
213
+ * @return array
214
+ */
215
  private function _get_wp_option($blog_id, $setting) {
216
  return is_multisite() ? get_blog_option($blog_id, $setting) : get_option($setting);
217
  }
218
 
219
  /**
220
+ * The get_comments function pull all the comments from the database
221
+ * based on the current search parameters/filters. Please see _search_comments
222
+ * for the breakdown of these parameters.
223
+ *
224
+ * @param array $query Specific query to pull comments
225
+ * @return array
226
+ */
227
  public function get_comments($query) {
228
 
229
+ // Here, we're getting the current blog id. If blog id
230
+ // is passed along with the parameters then we override
231
+ // that current (default) value with the parameter blog id value.
232
 
233
  $blog_id = get_current_blog_id();
234
  if (isset($query['blog_id'])) $blog_id = $query['blog_id'];
235
 
236
 
237
+ // Here, we're switching to the actual blog that we need
238
+ // to pull comments from.
239
 
240
  $switched = false;
241
  if (function_exists('switch_to_blog')) {
243
  }
244
 
245
  if (!empty($query['search'])) {
246
+ // If a search keyword is present, then we'll call the _search_comments
247
+ // function to process the query.
248
 
249
  $comments = $this->_search_comments($query);
250
  } else {
251
+ // Set default parameter values if the designated
252
+ // parameters are empty.
253
 
254
+ if (empty($query['per_page'])) {
255
+ $query['per_page'] = 10;
256
+ }
257
+ if (empty($query['page_no'])) {
258
+ $query['page_no'] = 1;
259
+ }
260
+ if (empty($query['type'])) {
261
+ $query['type'] = '';
262
+ }
263
+ if (empty($query['status'])) {
264
+ $query['status'] = '';
265
+ }
266
 
267
+ // Since WP_Comment_Query parameters doesn't have a "page" attribute, we
268
+ // need to compute for the offset to get the exact content based on the
269
+ // current page and the number of items per page.
270
 
271
+ $offset = ((int) $query['page_no'] - 1) * (int) $query['per_page'];
272
  $args = array(
273
  'orderby' => 'ID',
274
  'order' => 'DESC',
279
  );
280
 
281
  $comments_query = new WP_Comment_Query;
282
+ $comments = $comments_query->query($args);
283
  }
284
 
285
+ // If no comments are found based on the current query then
286
+ // we return with error.
287
 
288
  if (empty($comments)) {
289
  $result = array('message' => 'comments_not_found');
290
  return $this->_response($result);
291
  }
292
 
293
+ // Otherwise, we're going to process each comment
294
+ // before we return it to the one issuing the request.
295
  //
296
+ // Process in the sense that we add additional related info
297
+ // such as the post tile where the comment belongs to, the
298
+ // comment status, a formatted date field, and to which parent comment
299
+ // does the comment was intended to be as a reply.
300
 
301
  foreach ($comments as &$comment) {
302
  $comment = get_comment($comment->comment_ID, ARRAY_A);
309
  if ($parent_comment) $comment['in_reply_to'] = $parent_comment['comment_author'];
310
  }
311
 
312
+ // We're formatting the comment_date to be exactly the same
313
+ // with that of WP Comments table (e.g. 2016/12/21 at 10:30 PM)
314
 
315
  $comment['comment_date'] = date('Y/m/d \a\t g:i a', strtotime($comment['comment_date']));
316
 
321
  }
322
  }
323
 
324
+ // We return the following to the one issuing
325
+ // the request.
326
 
327
  $result = array(
328
  'comments' => $comments,
330
  );
331
 
332
 
333
+ // Here, we're restoring to the current (default) blog before we
334
+ // do the switched.
335
 
336
  if (function_exists('restore_current_blog') && $switched) {
337
  restore_current_blog();
341
  }
342
 
343
  /**
344
+ * The get_comment_filters function builds a array of options
345
+ * to be use as filters for the search function on the frontend.
346
+ */
347
  public function get_comment_filters() {
348
+ // Options for comment_types field
349
  $comment_types = apply_filters('admin_comment_types_dropdown', array(
350
  'comment' => __('Comments'),
351
  'pings' => __('Pings'),
352
  ));
353
 
354
+ // Options for comment_status field
355
  $comment_statuses = array(
356
  'approve' => __('Approve'),
357
  'hold' => __('Hold or Unapprove'),
359
  'spam' => __('Spam'),
360
  );
361
 
362
+ // Pull sites options if available.
363
  $sites = $this->get_blog_sites();
364
 
365
  $result = array(
373
  }
374
 
375
  /**
376
+ * The get_settings function pulls the current discussion settings
377
+ * option values.
378
+ *
379
+ * @param array $params Passing specific params for getting current discussion settings
380
+ * @return array
381
+ */
382
  public function get_settings($params) {
383
 
384
+ // Here, we're getting the current blog id. If blog id
385
+ // is passed along with the parameters then we override
386
+ // that current (default) value with the parameter blog id value.
387
 
388
  $blog_id = get_current_blog_id();
389
  if (isset($params['blog_id'])) $blog_id = $params['blog_id'];
390
 
391
 
392
+ // If user does not have sufficient privileges to manage and edit
393
+ // WP options then we return with error.
394
 
395
  if (!current_user_can_for_blog($blog_id, 'manage_options')) {
396
  $result = array('error' => true, 'message' => 'insufficient_permission');
397
  return $this->_response($result);
398
  }
399
 
400
+ // Pull sites options if available.
401
  $sites = $this->get_blog_sites();
402
 
403
+ // Wrap current discussion settings values into an array item
404
+ // named settings.
405
 
406
  $result = array(
407
  'settings' => array(
433
  }
434
 
435
  /**
436
+ * The update_settings function updates the discussion settings
437
+ * basing on the user generated content/option from the frontend
438
+ * form.
439
+ *
440
+ * @param array $params Specific params to update settings based on discussion
441
+ * @return array
442
+ */
443
  public function update_settings($params) {
444
 
445
+ // Extract settings values from passed parameters.
446
  $settings = $params['settings'];
447
 
448
+ // Here, we're getting the current blog id. If blog id
449
+ // is passed along with the parameters then we override
450
+ // that current (default) value with the parameter blog id value.
451
 
452
  $blog_id = get_current_blog_id();
453
  if (isset($params['blog_id'])) $blog_id = $params['blog_id'];
454
 
455
 
456
+ // If user does not have sufficient privileges to manage and edit
457
+ // WP options then we return with error.
458
 
459
  if (!current_user_can_for_blog($blog_id, 'manage_options')) {
460
  $result = array('error' => true, 'message' => 'insufficient_permission');
461
  return $this->_response($result);
462
  }
463
 
464
+ // Here, we're sanitizing the input fields before we save them to the database
465
+ // for safety and security reason. The "explode" and "implode" functions are meant
466
+ // to maintain the line breaks associated with a textarea input/value.
467
 
468
  foreach ($settings as $key => $value) {
469
 
470
+ // We're using update_blog_option and update_option altogether to update the current
471
+ // discussion settings.
472
 
473
  if (is_multisite()) {
474
  update_blog_option($blog_id, $key, implode("\n", array_map('sanitize_text_field', explode("\n", $value))));
477
  }
478
  }
479
 
480
+ // We're not checking for errors here, but instead we're directly returning a success (error = false)
481
+ // status always, because WP's update_option will return fail if values were not changed, meaning
482
+ // previous values were not changed by the user's current request, not an actual exception thrown.
483
+ // Thus, giving a false positive message or report to the frontend.
484
 
485
  $result = array('error' => false, 'message' => 'settings_updated', 'values' => array());
486
  return $this->_response($result);
487
  }
488
 
489
  /**
490
+ * The get_comment function pulls a single comment based
491
+ * on a comment ID.
492
+ *
493
+ * @param array $params Specific params for getting a single comment
494
+ * @return array
495
+ */
496
  public function get_comment($params) {
497
 
498
+ // Here, we're getting the current blog id. If blog id
499
+ // is passed along with the parameters then we override
500
+ // that current (default) value with the parameter blog id value.
501
 
502
  $blog_id = get_current_blog_id();
503
  if (isset($params['blog_id'])) $blog_id = $params['blog_id'];
504
 
505
 
506
+ // If user does not have sufficient privileges to moderate or edit
507
+ // a comment then we return with error.
508
 
509
  if (!current_user_can_for_blog($blog_id, 'moderate_comments')) {
510
  $result = array('error' => true, 'message' => 'insufficient_permission');
511
  return $this->_response($result);
512
  }
513
 
514
+ // Here, we're switching to the actual blog that we need
515
+ // to pull comments from.
516
 
517
  $switched = false;
518
  if (function_exists('switch_to_blog')) {
519
  $switched = switch_to_blog($blog_id);
520
  }
521
 
522
+ // Get comment by comment_ID parameter and return result as an array.
523
  $result = array(
524
  'comment' => get_comment($params['comment_id'], ARRAY_A)
525
  );
526
 
527
 
528
+ // Here, we're restoring to the current (default) blog before we
529
+ // do the switched.
530
 
531
  if (function_exists('restore_current_blog') && $switched) {
532
  restore_current_blog();
536
  }
537
 
538
  /**
539
+ * The reply_comment function creates a new comment as a reply
540
+ * to a certain/selected comment.
541
+ *
542
+ * @param array $params Specific params to create a new comment reply
543
+ * @return array
544
+ */
545
  public function reply_comment($params) {
546
 
547
+ // Extract reply info from the passed parameters
548
  $reply = $params['comment'];
549
 
550
+ // Here, we're getting the current blog id. If blog id
551
+ // is passed along with the parameters then we override
552
+ // that current (default) value with the parameter blog id value.
553
 
554
  $blog_id = get_current_blog_id();
555
  if (isset($params['blog_id'])) $blog_id = $params['blog_id'];
556
 
557
 
558
+ // If user does not have sufficient privileges to moderate or edit
559
+ // a comment then we return with error.
560
 
561
  if (!current_user_can_for_blog($blog_id, 'moderate_comments')) {
562
  $result = array('error' => true, 'message' => 'comment_reply_no_permission');
563
  return $this->_response($result);
564
  }
565
 
566
+ // Here, we're switching to the actual blog that we need
567
+ // to apply our changes.
568
 
569
  $switched = false;
570
  if (function_exists('switch_to_blog')) {
572
  }
573
 
574
 
575
+ // Get comment by comment_ID parameter.
576
  $comment = get_comment($reply['comment_id']);
577
  if ($comment) {
578
 
579
+ // Get the currently logged in user
580
  $user = wp_get_current_user();
581
 
582
+ // If the current comment was not approved yet then
583
+ // we need to approve it before we create a reply to
584
+ // to the comment, mimicking exactly the WP behaviour
585
+ // in terms of creating a reply to a comment.
586
 
587
  if (empty($comment->comment_approved)) {
588
  $update_data = array(
592
  wp_update_comment($update_data);
593
  }
594
 
595
+ // Build new comment parameters based on current user info and
596
+ // the target comment for the reply.
597
  $data = array(
598
  'comment_post_ID' => $comment->comment_post_ID,
599
  'comment_author' => $user->display_name,
606
  'comment_approved' => 1
607
  );
608
 
609
+ // Create new comment based on the parameters above, and return
610
+ // the status accordingly.
611
 
612
  if (wp_insert_comment($data)) {
613
  $result = array('error' => false, 'message' => 'comment_replied_with_comment_author', 'values' => array($comment->comment_author));
619
  }
620
 
621
 
622
+ // Here, we're restoring to the current (default) blog before we
623
+ // do the switched.
624
 
625
  if (function_exists('restore_current_blog') && $switched) {
626
  restore_current_blog();
630
  }
631
 
632
  /**
633
+ * The edit_comment function saves new information for the
634
+ * currently selected comment.
635
+ *
636
+ * @param array $params Specific params for editing a coment
637
+ * @return array
638
+ */
639
  public function edit_comment($params) {
640
 
641
+ // Extract new comment info from the passed parameters
642
  $comment = $params['comment'];
643
 
644
+ // Here, we're getting the current blog id. If blog id
645
+ // is passed along with the parameters then we override
646
+ // that current (default) value with the parameter blog id value.
647
 
648
  $blog_id = get_current_blog_id();
649
  if (isset($params['blog_id'])) $blog_id = $params['blog_id'];
650
 
651
 
652
+ // If user does not have sufficient privileges to moderate or edit
653
+ // a comment then we return with error.
654
 
655
  if (!current_user_can_for_blog($blog_id, 'moderate_comments')) {
656
  $result = array('error' => true, 'message' => 'comment_edit_no_permission');
657
  return $this->_response($result);
658
  }
659
 
660
+ // Here, we're switching to the actual blog that we need
661
+ // to apply our changes.
662
 
663
  $switched = false;
664
  if (function_exists('switch_to_blog')) {
666
  }
667
 
668
 
669
+ // Get current comment details
670
  $original_comment = get_comment($comment['comment_id']);
671
  if ($original_comment) {
672
  $data = array();
673
 
674
+ // Replace "comment_id" with "comment_ID" since WP does not recognize
675
+ // the small case "id".
676
  $comment['comment_ID'] = $original_comment->comment_ID;
677
  unset($comment['comment_id']);
678
 
679
+ // Here, we're sanitizing the input fields before we save them to the database
680
+ // for safety and security reason. The "explode" and "implode" functions are meant
681
+ // to maintain the line breaks associated with a textarea input/value.
682
 
683
  foreach ($comment as $key => $value) {
684
  $data[$key] = implode("\n", array_map('sanitize_text_field', explode("\n", $value)));
685
  }
686
 
687
+ // Update existing comment based on the passed parameter fields and
688
+ // return the status accordingly.
689
 
690
  if (wp_update_comment($data)) {
691
  $result = array('error' => false, 'message' => 'comment_edited_with_comment_author', 'values' => array($original_comment->comment_author));
696
  $result = array('error' => true, 'message' => 'comment_does_not_exists_error', 'values' => array($comment['comment_id']));
697
  }
698
 
699
+ // Here, we're restoring to the current (default) blog before we
700
+ // do the switched.
701
 
702
  if (function_exists('restore_current_blog') && $switched) {
703
  restore_current_blog();
707
  }
708
 
709
  /**
710
+ * The update_comment_status function is a generic handler for the following
711
+ * comment actions:
712
+ *
713
+ * - approve comment
714
+ * - unapprove comment
715
+ * - set comment as spam
716
+ * - move commment to trash
717
+ * - delete comment permanently
718
+ * - unset comment as spam
719
+ * - restore comment
720
+ *
721
+ * @param array $params Specific params to update comment status
722
+ * @return array
723
+ */
724
  public function update_comment_status($params) {
725
 
726
+ // Here, we're getting the current blog id. If blog id
727
+ // is passed along with the parameters then we override
728
+ // that current (default) value with the parameter blog id value.
729
 
730
  $blog_id = get_current_blog_id();
731
  if (isset($params['blog_id'])) $blog_id = $params['blog_id'];
732
 
733
 
734
+ // If user does not have sufficient privileges to moderate or edit
735
+ // a comment then we return with error.
736
 
737
  if (!current_user_can_for_blog($blog_id, 'moderate_comments')) {
738
  $result = array('error' => true, 'message' => 'comment_change_status_no_permission');
739
  return $this->_response($result);
740
  }
741
 
742
+ // Here, we're switching to the actual blog that we need
743
+ // to apply our changes.
744
 
745
  $switched = false;
746
  if (function_exists('switch_to_blog')) {
748
  }
749
 
750
 
751
+ // We make sure that we still have a valid comment from the server
752
+ // before we apply the currently selected action.
753
 
754
  $comment = get_comment($params['comment_id']);
755
  if ($comment) {
756
+ $post = get_post($comment->comment_post_ID);
757
+
758
+ if ($post) $comment->in_response_to = $post->post_title;
759
+ if (!empty($comment->comment_parent)) {
760
+ $parent_comment = get_comment($comment->comment_parent);
761
+ if ($parent_comment) $comment->in_reply_to = $parent_comment->comment_author;
762
+ }
763
+
764
+ //We're formatting the comment_date to be exactly the same
765
+ //with that of WP Comments table (e.g. 2016/12/21 at 10:30 PM)
766
+
767
+ $comment->comment_date = date('Y/m/d \a\t g:i a', strtotime($comment->comment_date));
768
+
769
+ $status = wp_get_comment_status($comment->comment_ID);
770
+ if ($status) {
771
+ $comment->comment_status = $status;
772
+ }
773
+
774
  $succeeded = false;
775
  $message = '';
776
 
777
+ // Here, we're using WP's wp_set_comment_status function to change the state
778
+ // of the selected comment based on the current action, except for the "delete" action
779
+ // where we use the wp_delete_comment to delete the comment permanently by passing
780
+ // "true" to the second argument.
781
 
782
  switch ($params['action']) {
783
  case 'approve':
784
+ $succeeded = wp_set_comment_status($params['comment_id'], 'approve');
785
+ $message = 'comment_approve_with_comment_author';
786
  break;
787
  case 'unapprove':
788
+ $succeeded = wp_set_comment_status($params['comment_id'], 'hold');
789
+ $message = 'comment_unapprove_with_comment_author';
790
  break;
791
  case 'spam':
792
+ $succeeded = wp_set_comment_status($params['comment_id'], 'spam');
793
+ $message = 'comment_spam_with_comment_author';
794
  break;
795
  case 'trash':
796
+ $succeeded = wp_set_comment_status($params['comment_id'], 'trash');
797
+ $message = 'comment_trash_with_comment_author';
798
  break;
799
  case 'delete':
800
+ $succeeded = wp_delete_comment($params['comment_id'], true);
801
+ $message = 'comment_delete_with_comment_author';
802
  break;
803
  case 'notspam':
804
+ $succeeded = wp_set_comment_status($params['comment_id'], 'hold');
805
+ $message = 'comment_not_spam_with_comment_author';
806
  break;
807
  case 'restore':
808
+ $succeeded = wp_set_comment_status($params['comment_id'], 'hold');
809
+ $message = 'comment_restore_with_comment_author';
810
  break;
811
  }
812
 
813
+ // If the current action succeeded, then we return a success message, otherwise,
814
+ // we return an error message to the user issuing the request.
815
 
816
  if ($succeeded) {
817
+ $result = array('error' => false, 'message' => $message, 'values' => array($comment->comment_author), 'status' => $comment->comment_status, 'approved' => $comment->comment_approved);
818
  } else {
819
  $result = array('error' => true, 'message' => 'comment_change_status_failed_with_error', 'values' => array($comment->comment_ID));
820
  }
822
  $result = array('error' => true, 'message' => 'comment_does_not_exists_error', 'values' => array($params['comment_id']));
823
  }
824
 
825
+ // Here, we're restoring to the current (default) blog before we
826
+ // do the switched.
827
 
828
  if (function_exists('restore_current_blog') && $switched) {
829
  restore_current_blog();
831
 
832
  return $this->_response($result);
833
  }
 
834
  }
central/modules/core.php CHANGED
@@ -2,23 +2,19 @@
2
 
3
  if (!defined('UPDRAFTPLUS_DIR')) die('No access.');
4
 
5
- /*
6
- - A container for RPC commands (core UpdraftCentral commands). Commands map exactly onto method names (and hence this class should not implement anything else, beyond the constructor, and private methods)
7
- - Return format is array('response' => (string - a code), 'data' => (mixed));
8
-
9
- RPC commands are not allowed to begin with an underscore. So, any private methods can be prefixed with an underscore.
10
-
11
- */
12
-
13
  class UpdraftCentral_Core_Commands extends UpdraftCentral_Commands {
14
 
15
  /**
16
  * Validates the credentials entered by the user
17
  *
18
- * @param $creds - an array of filesystem credentials
19
- *
20
- * @return array $result - An array containing the result of
21
- * the validation process.
22
  */
23
  public function validate_credentials($creds) {
24
 
@@ -39,8 +35,8 @@ class UpdraftCentral_Core_Commands extends UpdraftCentral_Commands {
39
  // template.php needed for submit_button() which is called by request_filesystem_credentials()
40
  $this->_admin_include('file.php', 'template.php');
41
 
42
- //Directory entities that we currently need permissions
43
- //to update.
44
  $entity_directories = array(
45
  'plugins' => WP_PLUGIN_DIR,
46
  'themes' => WP_CONTENT_DIR.'/themes',
@@ -50,8 +46,8 @@ class UpdraftCentral_Core_Commands extends UpdraftCentral_Commands {
50
  $url = wp_nonce_url(site_url());
51
  $directory = $entity_directories[$entity];
52
 
53
- //Check if credentials are valid and have sufficient
54
- //privileges to create and delete (e.g. write)
55
  $credentials = request_filesystem_credentials($url, '', false, $directory);
56
  if (WP_Filesystem($credentials, $directory)) {
57
 
@@ -69,7 +65,7 @@ class UpdraftCentral_Core_Commands extends UpdraftCentral_Commands {
69
  $result = array('error' => true, 'message' => 'failed_credentials', 'values' => array());
70
  }
71
 
72
- } catch(Exception $e) {
73
  $result = array('error' => true, 'message' => $e->getMessage(), 'values' => array());
74
  }
75
 
@@ -79,51 +75,51 @@ class UpdraftCentral_Core_Commands extends UpdraftCentral_Commands {
79
  /**
80
  * Gets the FileSystem Credentials
81
  *
82
- * Extract the needed filesystem credentials (permissions) to be used
83
  * to update/upgrade the plugins, themes and the WP core.
84
  *
85
  * @return array $result - An array containing the creds form and some flags
86
- * to determine whether we need to extract the creds
87
  * manually from the user.
88
  */
89
  public function get_credentials() {
90
 
91
  try {
92
 
93
- //Check whether user has enough permission to update entities
94
  if (!current_user_can('update_plugins') && !current_user_can('update_themes') && !current_user_can('update_core')) return $this->_generic_error_response('updates_permission_denied');
95
 
96
- //Include the needed WP Core file(s)
97
  $this->_admin_include('file.php', 'template.php');
98
 
99
- //A container that will hold the state (in this case, either true or false) of
100
- //each directory entities (plugins, themes, core) that will be used to determine
101
- //whether or not there's a need to show a form that will ask the user for their credentials
102
- //manually.
103
  $request_filesystem_credentials = array();
104
 
105
- //A container for the filesystem credentials form if applicable.
106
  $filesystem_form = '';
107
 
108
- //Directory entities that we currently need permissions
109
- //to update.
110
  $check_fs = array(
111
  'plugins' => WP_PLUGIN_DIR,
112
  'themes' => WP_CONTENT_DIR.'/themes',
113
  'core' => untrailingslashit(ABSPATH)
114
  );
115
 
116
- //Here, we're looping through each entities and find output whether
117
- //we have sufficient permissions to update objects belonging to them.
118
  foreach ($check_fs as $entity => $dir) {
119
 
120
- //We're determining which method to use when updating
121
- //the files in the filesystem.
122
  $filesystem_method = get_filesystem_method(array(), $dir);
123
 
124
- //Buffering the output to pull the actual credentials form
125
- //currently being used by this WP instance if no sufficient permissions
126
- //is found.
127
  $url = wp_nonce_url(site_url());
128
 
129
  ob_start();
@@ -135,19 +131,19 @@ class UpdraftCentral_Core_Commands extends UpdraftCentral_Commands {
135
  }
136
  ob_end_clean();
137
 
138
- //Save the state whether or not there's a need to show the
139
- //credentials form to the user.
140
- $request_filesystem_credentials[$entity] = ($filesystem_method !== 'direct' && !$filesystem_credentials_are_stored);
141
  }
142
 
143
- //Wrapping the credentials info before passing it back
144
- //to the client issuing the request.
145
  $result = array(
146
  'request_filesystem_credentials' => $request_filesystem_credentials,
147
  'filesystem_form' => $filesystem_form
148
  );
149
 
150
- } catch(Exception $e) {
151
  $result = array('error' => true, 'message' => $e->getMessage(), 'values' => array());
152
  }
153
 
@@ -158,8 +154,8 @@ class UpdraftCentral_Core_Commands extends UpdraftCentral_Commands {
158
  * Fetches a browser-usable URL which will automatically log the user in to the site
159
  *
160
  * @param String $redirect_to - the URL to got to after logging in
161
- * @param Array $extra_info - valid keys are user_id, which should be a numeric user ID to log in as.
162
- */
163
  public function get_login_url($redirect_to, $extra_info) {
164
  if (is_array($extra_info) && !empty($extra_info['user_id']) && is_numeric($extra_info['user_id'])) {
165
 
@@ -171,18 +167,18 @@ class UpdraftCentral_Core_Commands extends UpdraftCentral_Commands {
171
  $redirect_url = network_admin_url();
172
  if (is_array($redirect_to) && !empty($redirect_to['module'])) {
173
  switch ($redirect_to['module']) {
174
- case 'updraftplus';
175
- if ('initiate_restore' == $redirect_to['action'] && class_exists('UpdraftPlus_Options')) {
176
- $redirect_url = UpdraftPlus_Options::admin_page_url().'?page=updraftplus&udaction=initiate_restore&entities='.urlencode($redirect_to['data']['entities']).'&showdata='.urlencode($redirect_to['data']['showdata']).'&backup_timestamp='.(int)$redirect_to['data']['backup_timestamp'];
177
- } elseif ('download_file' == $redirect_to['action']) {
178
- $findex = empty($redirect_to['data']['findex']) ? 0 : (int)$redirect_to['data']['findex'];
179
- // e.g. ?udcentral_action=dl&action=updraftplus_spool_file&backup_timestamp=1455101696&findex=0&what=plugins
180
- $redirect_url = site_url().'?udcentral_action=spool_file&action=updraftplus_spool_file&findex='.$findex.'&what='.urlencode($redirect_to['data']['what']).'&backup_timestamp='.(int)$redirect_to['data']['backup_timestamp'];
181
- }
182
- break;
183
  case 'direct_url':
184
- $redirect_url = $redirect_to['url'];
185
- break;
186
  }
187
  }
188
 
@@ -207,7 +203,7 @@ class UpdraftCentral_Core_Commands extends UpdraftCentral_Commands {
207
  public function phpinfo() {
208
  $phpinfo = $this->_get_phpinfo_array();
209
 
210
- if (!empty($phpinfo)){
211
  return $this->_response($phpinfo);
212
  }
213
 
@@ -216,7 +212,12 @@ class UpdraftCentral_Core_Commands extends UpdraftCentral_Commands {
216
 
217
 
218
 
219
- // This is intended to be short-lived. Hence, there's no intention other than that it is random and only used once - only the most recent one is valid.
 
 
 
 
 
220
  public function _get_autologin_key($user_id) {
221
  $secure_auth_key = defined('SECURE_AUTH_KEY') ? SECURE_AUTH_KEY : hash('sha256', DB_PASSWORD).'_'.rand(0, 999999999);
222
  if (!defined('SECURE_AUTH_KEY')) return false;
@@ -247,13 +248,18 @@ class UpdraftCentral_Core_Commands extends UpdraftCentral_Commands {
247
  ));
248
  }
249
 
250
- //This calls the WP_Action within WP
 
 
 
 
 
251
  public function call_wordpress_action($data){
252
  if (false === ($updraftplus_admin = $this->_load_ud_admin())) return $this->_generic_error_response('no_updraftplus');
253
 
254
  $response = $updraftplus_admin->call_wp_action($data);
255
 
256
- if(empty($data["wpaction"])){
257
  return $this->_generic_error_response("error", "no command sent");
258
  }
259
 
@@ -275,22 +281,26 @@ class UpdraftCentral_Core_Commands extends UpdraftCentral_Commands {
275
 
276
  /*Private Functions*/
277
 
278
- // https://secure.php.net/phpinfo
 
 
 
 
279
  private function _get_phpinfo_array() {
280
  ob_start();
281
  phpinfo(INFO_GENERAL|INFO_CREDITS|INFO_MODULES);
282
  $phpinfo = array('phpinfo' => array());
283
 
284
- if (preg_match_all('#(?:<h2>(?:<a name=".*?">)?(.*?)(?:</a>)?</h2>)|(?:<tr(?: class=".*?")?><t[hd](?: class=".*?")?>(.*?)\s*</t[hd]>(?:<t[hd](?: class=".*?")?>(.*?)\s*</t[hd]>(?:<t[hd](?: class=".*?")?>(.*?)\s*</t[hd]>)?)?</tr>)#s', ob_get_clean(), $matches, PREG_SET_ORDER)){
285
- foreach($matches as $match){
286
- if(strlen($match[1])){
287
  $phpinfo[$match[1]] = array();
288
- }elseif(isset($match[3])){
289
  $keys1 = array_keys($phpinfo);
290
  $phpinfo[end($keys1)][$match[2]] = isset($match[4]) ? array($match[3], $match[4]) : $match[3];
291
  } else {
292
  $keys1 = array_keys($phpinfo);
293
- $phpinfo[end($keys1)][] = $match[2];
294
 
295
  }
296
 
@@ -302,7 +312,7 @@ class UpdraftCentral_Core_Commands extends UpdraftCentral_Commands {
302
 
303
  private function _load_ud_admin() {
304
  if (!defined('UPDRAFTPLUS_DIR') || !is_file(UPDRAFTPLUS_DIR.'/admin.php')) return false;
305
- require_once(UPDRAFTPLUS_DIR.'/admin.php');
306
  global $updraftplus_admin;
307
  return $updraftplus_admin;
308
  }
2
 
3
  if (!defined('UPDRAFTPLUS_DIR')) die('No access.');
4
 
5
+ /**
6
+ * - A container for RPC commands (core UpdraftCentral commands). Commands map exactly onto method names (and hence this class should not implement anything else, beyond the constructor, and private methods)
7
+ * - Return format is array('response' => (string - a code), 'data' => (mixed));
8
+ *
9
+ * RPC commands are not allowed to begin with an underscore. So, any private methods can be prefixed with an underscore.
10
+ */
 
 
11
  class UpdraftCentral_Core_Commands extends UpdraftCentral_Commands {
12
 
13
  /**
14
  * Validates the credentials entered by the user
15
  *
16
+ * @param array $creds an array of filesystem credentials
17
+ * @return array An array containing the result of the validation process.
 
 
18
  */
19
  public function validate_credentials($creds) {
20
 
35
  // template.php needed for submit_button() which is called by request_filesystem_credentials()
36
  $this->_admin_include('file.php', 'template.php');
37
 
38
+ // Directory entities that we currently need permissions
39
+ // to update.
40
  $entity_directories = array(
41
  'plugins' => WP_PLUGIN_DIR,
42
  'themes' => WP_CONTENT_DIR.'/themes',
46
  $url = wp_nonce_url(site_url());
47
  $directory = $entity_directories[$entity];
48
 
49
+ // Check if credentials are valid and have sufficient
50
+ // privileges to create and delete (e.g. write)
51
  $credentials = request_filesystem_credentials($url, '', false, $directory);
52
  if (WP_Filesystem($credentials, $directory)) {
53
 
65
  $result = array('error' => true, 'message' => 'failed_credentials', 'values' => array());
66
  }
67
 
68
+ } catch (Exception $e) {
69
  $result = array('error' => true, 'message' => $e->getMessage(), 'values' => array());
70
  }
71
 
75
  /**
76
  * Gets the FileSystem Credentials
77
  *
78
+ * Extract the needed filesystem credentials (permissions) to be used
79
  * to update/upgrade the plugins, themes and the WP core.
80
  *
81
  * @return array $result - An array containing the creds form and some flags
82
+ * to determine whether we need to extract the creds
83
  * manually from the user.
84
  */
85
  public function get_credentials() {
86
 
87
  try {
88
 
89
+ // Check whether user has enough permission to update entities
90
  if (!current_user_can('update_plugins') && !current_user_can('update_themes') && !current_user_can('update_core')) return $this->_generic_error_response('updates_permission_denied');
91
 
92
+ // Include the needed WP Core file(s)
93
  $this->_admin_include('file.php', 'template.php');
94
 
95
+ // A container that will hold the state (in this case, either true or false) of
96
+ // each directory entities (plugins, themes, core) that will be used to determine
97
+ // whether or not there's a need to show a form that will ask the user for their credentials
98
+ // manually.
99
  $request_filesystem_credentials = array();
100
 
101
+ // A container for the filesystem credentials form if applicable.
102
  $filesystem_form = '';
103
 
104
+ // Directory entities that we currently need permissions
105
+ // to update.
106
  $check_fs = array(
107
  'plugins' => WP_PLUGIN_DIR,
108
  'themes' => WP_CONTENT_DIR.'/themes',
109
  'core' => untrailingslashit(ABSPATH)
110
  );
111
 
112
+ // Here, we're looping through each entities and find output whether
113
+ // we have sufficient permissions to update objects belonging to them.
114
  foreach ($check_fs as $entity => $dir) {
115
 
116
+ // We're determining which method to use when updating
117
+ // the files in the filesystem.
118
  $filesystem_method = get_filesystem_method(array(), $dir);
119
 
120
+ // Buffering the output to pull the actual credentials form
121
+ // currently being used by this WP instance if no sufficient permissions
122
+ // is found.
123
  $url = wp_nonce_url(site_url());
124
 
125
  ob_start();
131
  }
132
  ob_end_clean();
133
 
134
+ // Save the state whether or not there's a need to show the
135
+ // credentials form to the user.
136
+ $request_filesystem_credentials[$entity] = ('direct' !== $filesystem_method && !$filesystem_credentials_are_stored);
137
  }
138
 
139
+ // Wrapping the credentials info before passing it back
140
+ // to the client issuing the request.
141
  $result = array(
142
  'request_filesystem_credentials' => $request_filesystem_credentials,
143
  'filesystem_form' => $filesystem_form
144
  );
145
 
146
+ } catch (Exception $e) {
147
  $result = array('error' => true, 'message' => $e->getMessage(), 'values' => array());
148
  }
149
 
154
  * Fetches a browser-usable URL which will automatically log the user in to the site
155
  *
156
  * @param String $redirect_to - the URL to got to after logging in
157
+ * @param Array $extra_info - valid keys are user_id, which should be a numeric user ID to log in as.
158
+ */
159
  public function get_login_url($redirect_to, $extra_info) {
160
  if (is_array($extra_info) && !empty($extra_info['user_id']) && is_numeric($extra_info['user_id'])) {
161
 
167
  $redirect_url = network_admin_url();
168
  if (is_array($redirect_to) && !empty($redirect_to['module'])) {
169
  switch ($redirect_to['module']) {
170
+ case 'updraftplus':
171
+ if ('initiate_restore' == $redirect_to['action'] && class_exists('UpdraftPlus_Options')) {
172
+ $redirect_url = UpdraftPlus_Options::admin_page_url().'?page=updraftplus&udaction=initiate_restore&entities='.urlencode($redirect_to['data']['entities']).'&showdata='.urlencode($redirect_to['data']['showdata']).'&backup_timestamp='.(int) $redirect_to['data']['backup_timestamp'];
173
+ } elseif ('download_file' == $redirect_to['action']) {
174
+ $findex = empty($redirect_to['data']['findex']) ? 0 : (int) $redirect_to['data']['findex'];
175
+ // e.g. ?udcentral_action=dl&action=updraftplus_spool_file&backup_timestamp=1455101696&findex=0&what=plugins
176
+ $redirect_url = site_url().'?udcentral_action=spool_file&action=updraftplus_spool_file&findex='.$findex.'&what='.urlencode($redirect_to['data']['what']).'&backup_timestamp='.(int) $redirect_to['data']['backup_timestamp'];
177
+ }
178
+ break;
179
  case 'direct_url':
180
+ $redirect_url = $redirect_to['url'];
181
+ break;
182
  }
183
  }
184
 
203
  public function phpinfo() {
204
  $phpinfo = $this->_get_phpinfo_array();
205
 
206
+ if (!empty($phpinfo)) {
207
  return $this->_response($phpinfo);
208
  }
209
 
212
 
213
 
214
 
215
+ /**
216
+ * This is intended to be short-lived. Hence, there's no intention other than that it is random and only used once - only the most recent one is valid.
217
+ *
218
+ * @param string $user_id Specific user ID to get the autologin key
219
+ * @return array
220
+ */
221
  public function _get_autologin_key($user_id) {
222
  $secure_auth_key = defined('SECURE_AUTH_KEY') ? SECURE_AUTH_KEY : hash('sha256', DB_PASSWORD).'_'.rand(0, 999999999);
223
  if (!defined('SECURE_AUTH_KEY')) return false;
248
  ));
249
  }
250
 
251
+ /**
252
+ * This calls the WP_Action within WP
253
+ *
254
+ * @param array $data Array of Data to be used within call_wp_action
255
+ * @return array
256
+ */
257
  public function call_wordpress_action($data){
258
  if (false === ($updraftplus_admin = $this->_load_ud_admin())) return $this->_generic_error_response('no_updraftplus');
259
 
260
  $response = $updraftplus_admin->call_wp_action($data);
261
 
262
+ if (empty($data["wpaction"])) {
263
  return $this->_generic_error_response("error", "no command sent");
264
  }
265
 
281
 
282
  /*Private Functions*/
283
 
284
+ /**
285
+ * https://secure.php.net/phpinfo
286
+ *
287
+ * @return null|array
288
+ */
289
  private function _get_phpinfo_array() {
290
  ob_start();
291
  phpinfo(INFO_GENERAL|INFO_CREDITS|INFO_MODULES);
292
  $phpinfo = array('phpinfo' => array());
293
 
294
+ if (preg_match_all('#(?:<h2>(?:<a name=".*?">)?(.*?)(?:</a>)?</h2>)|(?:<tr(?: class=".*?")?><t[hd](?: class=".*?")?>(.*?)\s*</t[hd]>(?:<t[hd](?: class=".*?")?>(.*?)\s*</t[hd]>(?:<t[hd](?: class=".*?")?>(.*?)\s*</t[hd]>)?)?</tr>)#s', ob_get_clean(), $matches, PREG_SET_ORDER)) {
295
+ foreach ($matches as $match) {
296
+ if (strlen($match[1])) {
297
  $phpinfo[$match[1]] = array();
298
+ } elseif (isset($match[3])) {
299
  $keys1 = array_keys($phpinfo);
300
  $phpinfo[end($keys1)][$match[2]] = isset($match[4]) ? array($match[3], $match[4]) : $match[3];
301
  } else {
302
  $keys1 = array_keys($phpinfo);
303
+ $phpinfo[end($keys1)][] = $match[2];
304
 
305
  }
306
 
312
 
313
  private function _load_ud_admin() {
314
  if (!defined('UPDRAFTPLUS_DIR') || !is_file(UPDRAFTPLUS_DIR.'/admin.php')) return false;
315
+ include_once(UPDRAFTPLUS_DIR.'/admin.php');
316
  global $updraftplus_admin;
317
  return $updraftplus_admin;
318
  }
central/modules/updates.php CHANGED
@@ -57,14 +57,20 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
57
 
58
  }
59
 
60
- // Mostly from wp_ajax_update_plugin() in wp-admin/includes/ajax-actions.php (WP 4.5.2)
61
- // Code-formatting style has been retained from the original, for ease of comparison/updating
 
 
 
 
 
 
62
  private function _update_plugin($plugin, $slug) {
63
 
64
  $status = array(
65
  'update' => 'plugin',
66
  'plugin' => $plugin,
67
- 'slug' => sanitize_key( $slug ),
68
  'oldVersion' => '',
69
  'newVersion' => '',
70
  );
@@ -74,40 +80,40 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
74
  return $status;
75
  }
76
 
77
- $plugin_data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin );
78
  if (!isset($plugin_data['Name']) || !isset($plugin_data['Author']) || ('' == $plugin_data['Name'] && '' == $plugin_data['Author'])) {
79
  $status['error'] = 'not_found';
80
  return $status;
81
  }
82
 
83
- if ( $plugin_data['Version'] ) {
84
  $status['oldVersion'] = $plugin_data['Version'];
85
  }
86
 
87
- if ( ! current_user_can( 'update_plugins' ) ) {
88
  $status['error'] = 'updates_permission_denied';
89
  return $status;
90
  }
91
 
92
- include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
93
 
94
  wp_update_plugins();
95
 
96
  // WP < 3.7
97
- if (!class_exists('Automatic_Upgrader_Skin')) require_once(UPDRAFTPLUS_DIR.'/central/classes/class-automatic-upgrader-skin.php');
98
 
99
  $skin = new Automatic_Upgrader_Skin();
100
- $upgrader = new Plugin_Upgrader( $skin );
101
- $result = $upgrader->bulk_upgrade( array( $plugin ) );
102
 
103
- if ( is_array( $result ) && empty( $result[$plugin] ) && is_wp_error( $skin->result ) ) {
104
  $result = $skin->result;
105
  }
106
 
107
  $status['messages'] = $upgrader->skin->get_upgrade_messages();
108
 
109
- if ( is_array( $result ) && !empty( $result[ $plugin ] ) ) {
110
- $plugin_update_data = current( $result );
111
 
112
  /*
113
  * If the `update_plugins` site transient is empty (e.g. when you update
@@ -117,31 +123,31 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
117
  * Preferably something can be done to ensure `update_plugins` isn't empty.
118
  * For now, surface some sort of error here.
119
  */
120
- if ( $plugin_update_data === true ) {
121
  $status['error'] = 'update_failed';
122
  return $status;
123
  }
124
 
125
- $plugin_data = get_plugins( '/' . $result[ $plugin ]['destination_name'] );
126
- $plugin_data = reset( $plugin_data );
127
 
128
- if ( $plugin_data['Version'] ) {
129
  $status['newVersion'] = $plugin_data['Version'];
130
  }
131
  return $status;
132
 
133
- } else if ( is_wp_error( $result ) ) {
134
  $status['error'] = $result->get_error_code();
135
  $status['error_message'] = $result->get_error_message();
136
  return $status;
137
 
138
- } else if ( is_bool( $result ) && ! $result ) {
139
  $status['error'] = 'unable_to_connect_to_filesystem';
140
 
141
  global $wp_filesystem;
142
 
143
  // Pass through the error from WP_Filesystem if one was raised
144
- if ( isset($wp_filesystem->errors) && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {
145
  $status['error'] = $wp_filesystem->errors->get_error_code();
146
  $status['error_message'] = $wp_filesystem->errors->get_error_message();
147
  }
@@ -155,7 +161,12 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
155
  }
156
  }
157
 
158
- // Adapted from _update_theme (above)
 
 
 
 
 
159
  private function _update_core($core) {
160
 
161
  global $wp_filesystem;
@@ -171,19 +182,19 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
171
 
172
  $status['oldVersion'] = $wp_version;
173
 
174
- if ( ! current_user_can( 'update_core' ) ) {
175
  $status['error'] = 'updates_permission_denied';
176
  return $status;
177
  }
178
 
179
- include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
180
 
181
  wp_version_check();
182
 
183
  $locale = get_locale();
184
 
185
  $core_update_key = false;
186
- $core_update_latest_version = false;
187
 
188
  $get_core_updates = get_core_updates();
189
 
@@ -196,7 +207,7 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
196
  }
197
  }
198
 
199
- if ( $core_update_key === false ) {
200
  $status['error'] = 'no_update_found';
201
  return $status;
202
  }
@@ -204,25 +215,25 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
204
  $update = $get_core_updates[$core_update_key];
205
 
206
  // WP < 3.7
207
- if (!class_exists('Automatic_Upgrader_Skin')) require_once(UPDRAFTPLUS_DIR.'/central/classes/class-automatic-upgrader-skin.php');
208
 
209
  $skin = new Automatic_Upgrader_Skin();
210
- $upgrader = new Core_Upgrader( $skin );
211
 
212
  $result = $upgrader->upgrade($update);
213
 
214
  $status['messages'] = $upgrader->skin->get_upgrade_messages();
215
 
216
- if ( is_wp_error( $result ) ) {
217
  $status['error'] = $result->get_error_code();
218
  $status['error_message'] = $result->get_error_message();
219
  return $status;
220
 
221
- } else if ( is_bool( $result ) && ! $result ) {
222
  $status['error'] = 'unable_to_connect_to_filesystem';
223
 
224
  // Pass through the error from WP_Filesystem if one was raised
225
- if ( is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {
226
  $status['error'] = $wp_filesystem->errors->get_error_code();
227
  $status['error_message'] = $wp_filesystem->errors->get_error_message();
228
  }
@@ -230,7 +241,7 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
230
  return $status;
231
 
232
 
233
- } elseif ( preg_match('/^[0-9]/', $result) ) {
234
 
235
  $status['newVersion'] = $result;
236
 
@@ -267,31 +278,31 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
267
  }
268
  $status['oldVersion'] = $theme_version;
269
 
270
- if ( ! current_user_can( 'update_themes' ) ) {
271
  $status['error'] = 'updates_permission_denied';
272
  return $status;
273
  }
274
 
275
- include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
276
 
277
  wp_update_themes();
278
 
279
  // WP < 3.7
280
- if (!class_exists('Automatic_Upgrader_Skin')) require_once(UPDRAFTPLUS_DIR.'/central/classes/class-automatic-upgrader-skin.php');
281
 
282
  $skin = new Automatic_Upgrader_Skin();
283
- $upgrader = new Theme_Upgrader( $skin );
284
  $upgrader->init();
285
- $result = $upgrader->bulk_upgrade( array($theme) );
286
 
287
- if ( is_array( $result ) && empty( $result[$theme] ) && is_wp_error( $skin->result ) ) {
288
  $result = $skin->result;
289
  }
290
 
291
  $status['messages'] = $upgrader->skin->get_upgrade_messages();
292
 
293
- if ( is_array( $result ) && !empty( $result[ $theme ] ) ) {
294
- $theme_update_data = current( $result );
295
 
296
  /*
297
  * If the `update_themes` site transient is empty (e.g. when you update
@@ -301,7 +312,7 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
301
  * Preferably something can be done to ensure `update_themes` isn't empty.
302
  * For now, surface some sort of error here.
303
  */
304
- if ( $theme_update_data === true ) {
305
  $status['error'] = 'update_failed';
306
  return $status;
307
  }
@@ -316,16 +327,16 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
316
 
317
  return $status;
318
 
319
- } else if ( is_wp_error( $result ) ) {
320
  $status['error'] = $result->get_error_code();
321
  $status['error_message'] = $result->get_error_message();
322
  return $status;
323
 
324
- } else if ( is_bool( $result ) && ! $result ) {
325
  $status['error'] = 'unable_to_connect_to_filesystem';
326
 
327
  // Pass through the error from WP_Filesystem if one was raised
328
- if ( is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {
329
  $status['error'] = $wp_filesystem->errors->get_error_code();
330
  $status['error_message'] = $wp_filesystem->errors->get_error_message();
331
  }
@@ -363,8 +374,166 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
363
  }
364
  }
365
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
366
  public function get_updates($options) {
367
-
 
 
 
 
 
 
368
  if (!current_user_can('update_plugins') && !current_user_can('update_themes') && !current_user_can('update_core')) return $this->_generic_error_response('updates_permission_denied');
369
 
370
  $this->_admin_include('plugin.php', 'update.php', 'file.php', 'template.php');
@@ -383,7 +552,7 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
383
  wp_update_plugins();
384
  }
385
 
386
- $get_plugin_updates = get_plugin_updates();
387
  if (is_array($get_plugin_updates)) {
388
  foreach ($get_plugin_updates as $update) {
389
  $plugin_updates[] = array(
@@ -396,13 +565,14 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
396
  'title' => $update->Title,
397
  'author_name' => $update->AuthorName,
398
  'update' => array(
399
- 'plugin' => $update->update->plugin,
 
400
  'slug' => $update->update->slug,
401
  'new_version' => $update->update->new_version,
402
  'package' => $update->update->package,
403
  'tested' => isset($update->update->tested) ? $update->update->tested : null,
404
- 'compatibility' => isset($update->update->compatibility) ? (array)$update->update->compatibility : null,
405
- 'sections' => isset($update->update->sections) ? (array)$update->update->sections : null,
406
  ),
407
  );
408
  }
@@ -418,21 +588,21 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
418
  delete_site_transient('update_themes');
419
  wp_update_themes();
420
  }
421
- $get_theme_updates = get_theme_updates();
422
  if (is_array($get_theme_updates)) {
423
  foreach ($get_theme_updates as $update) {
424
  $theme_updates[] = array(
425
- 'name' => @$update->Name,
426
- 'theme_uri' => @$update->ThemeURI,
427
- 'version' => @$update->Version,
428
- 'description' => @$update->Description,
429
- 'author' => @$update->Author,
430
- 'author_uri' => @$update->AuthorURI,
431
- 'update' => array(
432
- 'theme' => @$update->update['theme'],
433
- 'new_version' => @$update->update['new_version'],
434
- 'package' => @$update->update['package'],
435
- 'url' => @$update->update['url'],
436
  ),
437
  );
438
  }
@@ -455,7 +625,7 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
455
  if (is_array($get_core_updates)) {
456
 
457
  $core_update_key = false;
458
- $core_update_latest_version = false;
459
 
460
  @include(ABSPATH.WPINC.'/version.php');
461
 
@@ -466,7 +636,7 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
466
  }
467
  }
468
 
469
- if ($core_update_key !== false) {
470
 
471
  $update = $get_core_updates[$core_update_key];
472
 
@@ -474,7 +644,7 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
474
 
475
  $mysql_version = $wpdb->db_version();
476
 
477
- $is_mysql = (file_exists( WP_CONTENT_DIR . '/db.php' ) && empty( $wpdb->is_mysql )) ? false : true;
478
 
479
  $core_updates[] = array(
480
  'download' => $update->download,
@@ -513,7 +683,7 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
513
  $filesystem_credentials_are_stored = request_filesystem_credentials(site_url());
514
  $filesystem_form = strip_tags(ob_get_contents(), '<div><h2><p><input><label><fieldset><legend><span><em>');
515
  ob_end_clean();
516
- $request_filesystem_credentials[$entity] = ($filesystem_method != 'direct' && ! $filesystem_credentials_are_stored);
517
  }
518
 
519
  $automatic_backups = (class_exists('UpdraftPlus_Options') && class_exists('UpdraftPlus_Addon_Autobackup') && UpdraftPlus_Options::get_updraft_option('updraft_autobackup_default', true)) ? true : false;
@@ -529,5 +699,4 @@ class UpdraftCentral_Updates_Commands extends UpdraftCentral_Commands {
529
  ),
530
  ));
531
  }
532
-
533
  }
57
 
58
  }
59
 
60
+ /**
61
+ * Mostly from wp_ajax_update_plugin() in wp-admin/includes/ajax-actions.php (WP 4.5.2)
62
+ * Code-formatting style has been retained from the original, for ease of comparison/updating
63
+ *
64
+ * @param string $plugin Specific plugin to be updated
65
+ * @param string $slug Unique key passed for updates
66
+ * @return array
67
+ */
68
  private function _update_plugin($plugin, $slug) {
69
 
70
  $status = array(
71
  'update' => 'plugin',
72
  'plugin' => $plugin,
73
+ 'slug' => sanitize_key($slug),
74
  'oldVersion' => '',
75
  'newVersion' => '',
76
  );
80
  return $status;
81
  }
82
 
83
+ $plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin);
84
  if (!isset($plugin_data['Name']) || !isset($plugin_data['Author']) || ('' == $plugin_data['Name'] && '' == $plugin_data['Author'])) {
85
  $status['error'] = 'not_found';
86
  return $status;
87
  }
88
 
89
+ if ($plugin_data['Version']) {
90
  $status['oldVersion'] = $plugin_data['Version'];
91
  }
92
 
93
+ if (!current_user_can('update_plugins')) {
94
  $status['error'] = 'updates_permission_denied';
95
  return $status;
96
  }
97
 
98
+ include_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
99
 
100
  wp_update_plugins();
101
 
102
  // WP < 3.7
103
+ if (!class_exists('Automatic_Upgrader_Skin')) include_once(UPDRAFTPLUS_DIR.'/central/classes/class-automatic-upgrader-skin.php');
104
 
105
  $skin = new Automatic_Upgrader_Skin();
106
+ $upgrader = new Plugin_Upgrader($skin);
107
+ $result = $upgrader->bulk_upgrade(array($plugin));
108
 
109
+ if (is_array($result) && empty($result[$plugin]) && is_wp_error($skin->result)) {
110
  $result = $skin->result;
111
  }
112
 
113
  $status['messages'] = $upgrader->skin->get_upgrade_messages();
114
 
115
+ if (is_array($result) && !empty($result[$plugin])) {
116
+ $plugin_update_data = current($result);
117
 
118
  /*
119
  * If the `update_plugins` site transient is empty (e.g. when you update
123
  * Preferably something can be done to ensure `update_plugins` isn't empty.
124
  * For now, surface some sort of error here.
125
  */
126
+ if (true === $plugin_update_data) {
127
  $status['error'] = 'update_failed';
128
  return $status;
129
  }
130
 
131
+ $plugin_data = get_plugins('/' . $result[$plugin]['destination_name']);
132
+ $plugin_data = reset($plugin_data);
133
 
134
+ if ($plugin_data['Version']) {
135
  $status['newVersion'] = $plugin_data['Version'];
136
  }
137
  return $status;
138
 
139
+ } elseif (is_wp_error($result)) {
140
  $status['error'] = $result->get_error_code();
141
  $status['error_message'] = $result->get_error_message();
142
  return $status;
143
 
144
+ } elseif (is_bool($result) && !$result) {
145
  $status['error'] = 'unable_to_connect_to_filesystem';
146
 
147
  global $wp_filesystem;
148
 
149
  // Pass through the error from WP_Filesystem if one was raised
150
+ if (isset($wp_filesystem->errors) && is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code()) {
151
  $status['error'] = $wp_filesystem->errors->get_error_code();
152
  $status['error_message'] = $wp_filesystem->errors->get_error_message();
153
  }
161
  }
162
  }
163
 
164
+ /**
165
+ * Adapted from _update_theme (above)
166
+ *
167
+ * @param string $core
168
+ * @return array
169
+ */
170
  private function _update_core($core) {
171
 
172
  global $wp_filesystem;
182
 
183
  $status['oldVersion'] = $wp_version;
184
 
185
+ if (!current_user_can('update_core')) {
186
  $status['error'] = 'updates_permission_denied';
187
  return $status;
188
  }
189
 
190
+ include_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
191
 
192
  wp_version_check();
193
 
194
  $locale = get_locale();
195
 
196
  $core_update_key = false;
197
+ $core_update_latest_version = false;
198
 
199
  $get_core_updates = get_core_updates();
200
 
207
  }
208
  }
209
 
210
+ if (false === $core_update_key) {
211
  $status['error'] = 'no_update_found';
212
  return $status;
213
  }
215
  $update = $get_core_updates[$core_update_key];
216
 
217
  // WP < 3.7
218
+ if (!class_exists('Automatic_Upgrader_Skin')) include_once(UPDRAFTPLUS_DIR.'/central/classes/class-automatic-upgrader-skin.php');
219
 
220
  $skin = new Automatic_Upgrader_Skin();
221
+ $upgrader = new Core_Upgrader($skin);
222
 
223
  $result = $upgrader->upgrade($update);
224
 
225
  $status['messages'] = $upgrader->skin->get_upgrade_messages();
226
 
227
+ if (is_wp_error($result)) {
228
  $status['error'] = $result->get_error_code();
229
  $status['error_message'] = $result->get_error_message();
230
  return $status;
231
 
232
+ } elseif (is_bool($result) && !$result) {
233
  $status['error'] = 'unable_to_connect_to_filesystem';
234
 
235
  // Pass through the error from WP_Filesystem if one was raised
236
+ if (is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code()) {
237
  $status['error'] = $wp_filesystem->errors->get_error_code();
238
  $status['error_message'] = $wp_filesystem->errors->get_error_message();
239
  }
241
  return $status;
242
 
243
 
244
+ } elseif (preg_match('/^[0-9]/', $result)) {
245
 
246
  $status['newVersion'] = $result;
247
 
278
  }
279
  $status['oldVersion'] = $theme_version;
280
 
281
+ if (!current_user_can('update_themes')) {
282
  $status['error'] = 'updates_permission_denied';
283
  return $status;
284
  }
285
 
286
+ include_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
287
 
288
  wp_update_themes();
289
 
290
  // WP < 3.7
291
+ if (!class_exists('Automatic_Upgrader_Skin')) include_once(UPDRAFTPLUS_DIR.'/central/classes/class-automatic-upgrader-skin.php');
292
 
293
  $skin = new Automatic_Upgrader_Skin();
294
+ $upgrader = new Theme_Upgrader($skin);
295
  $upgrader->init();
296
+ $result = $upgrader->bulk_upgrade(array($theme));
297
 
298
+ if (is_array($result) && empty($result[$theme]) && is_wp_error($skin->result)) {
299
  $result = $skin->result;
300
  }
301
 
302
  $status['messages'] = $upgrader->skin->get_upgrade_messages();
303
 
304
+ if (is_array($result) && !empty($result[$theme])) {
305
+ $theme_update_data = current($result);
306
 
307
  /*
308
  * If the `update_themes` site transient is empty (e.g. when you update
312
  * Preferably something can be done to ensure `update_themes` isn't empty.
313
  * For now, surface some sort of error here.
314
  */
315
+ if (true === $theme_update_data) {
316
  $status['error'] = 'update_failed';
317
  return $status;
318
  }
327
 
328
  return $status;
329
 
330
+ } elseif (is_wp_error($result)) {
331
  $status['error'] = $result->get_error_code();
332
  $status['error_message'] = $result->get_error_message();
333
  return $status;
334
 
335
+ } elseif (is_bool($result) && !$result) {
336
  $status['error'] = 'unable_to_connect_to_filesystem';
337
 
338
  // Pass through the error from WP_Filesystem if one was raised
339
+ if (is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code()) {
340
  $status['error'] = $wp_filesystem->errors->get_error_code();
341
  $status['error_message'] = $wp_filesystem->errors->get_error_message();
342
  }
374
  }
375
  }
376
 
377
+ /**
378
+ * Adding third-party plugins/theme for UDC automatic updates, for some updaters which store their information when the transient is set, instead of (like most) when it is fetched
379
+ *
380
+ * @param Array $items A collection of plugins or themes for updates
381
+ * @param String $type A string indicating which type of collection to process (e.g. 'plugin' or 'theme')
382
+ * @return Array An updated collection of plugins or themes for updates
383
+ */
384
+ private function maybe_add_third_party_items($items, $type) {
385
+
386
+ // Here we're preparing a dummy transient object that will be pass to the filter
387
+ // and gets populated by those plugins or themes that hooked into the "pre_set_site_transient_*" filter.
388
+ //
389
+ // We're setting some default properties so that plugins and themes won't be able to bypass populating them,
390
+ // because most of the plugins and themes updater scripts checks whether or not these properties are set and
391
+ // non-empty or passed the 12 hour period (where WordPress re-starts the process of checking updates for
392
+ // these plugins and themes), otherwise, they bypass populating the update/upgrade info for these items.
393
+ $transient = (object) array(
394
+ 'last_checked' => time() - (13 * 3600), /* Making sure that we passed the 12 hour period check */
395
+ 'checked' => array('default' => 'none'),
396
+ 'response' => array('default' => 'none')
397
+ );
398
+
399
+ // Most of the premium plugin developers are hooking into the "pre_set_site_transient_update_plugins" and
400
+ // "pre_set_site_transient_update_themes" filters if they want their plugins or themes to support automatic
401
+ // updates. Thus, we're making sure here that if for some reason, those plugins or themes didn't get through
402
+ // and added to the "update_plugins" or "update_themes" transients when calling the get_site_transient('update_plugins')
403
+ // or get_site_transient('update_themes') we add them here manually.
404
+ $filters = apply_filters("pre_set_site_transient_update_{$type}s", $transient, "update_{$type}s");
405
+
406
+
407
+ $all_items = array();
408
+ switch ($type) {
409
+ case 'plugin':
410
+ $all_items = get_plugins();
411
+ break;
412
+ case 'theme':
413
+ $all_items = get_themes();
414
+ break;
415
+ default:
416
+ break;
417
+ }
418
+
419
+
420
+ if (!empty($all_items)) {
421
+ $all_items = (array) $all_items;
422
+ foreach ($all_items as $key => $data) {
423
+ if (!isset($items[$key]) && isset($filters->response[$key])) {
424
+
425
+ $update_info = ('plugin' === $type) ? $filters->response[$key] : $data;
426
+
427
+ // If "package" is empty, it means that this plugin or theme does not support automatic updates
428
+ // currently, since the "package" field is the one holding the download link of these plugins/themes
429
+ // and WordPress is using this field to download the latest version of these items.
430
+ //
431
+ // Most of the time, this "package" field is not empty, but for premium plugins/themes this can be
432
+ // conditional, only then if the user provides a legit access or api key can this field be populated or available.
433
+ //
434
+ // We set this variable to "false" by default, as plugins/themes hosted in wordpress.org always sets this
435
+ // to the downloadable zip file of the plugin/theme.
436
+ //
437
+ // N.B. We only add premium plugins/themes that has this "package" field set and non-empty, otherwise, it
438
+ // does not support automatic updates as explained above.
439
+ $is_package_empty = false;
440
+
441
+ if (is_object($update_info)) {
442
+ if (!isset($update_info->package) || empty($update_info->package)) {
443
+ $is_package_empty = true;
444
+ }
445
+
446
+ } elseif (is_array($update_info)) {
447
+ if (!isset($update_info['package']) || empty($update_info['package'])) {
448
+ $is_package_empty = true;
449
+ }
450
+ }
451
+
452
+ // Add this plugin/theme to the current updates collection
453
+ if (!$is_package_empty) {
454
+ $items[$key] = ('plugin' === $type) ? (object) $data : $this->get_theme_info($key);
455
+ $items[$key]->update = $update_info;
456
+ }
457
+
458
+ }
459
+ }
460
+ }
461
+
462
+ return $this->prep_items_for_updates($items, $type);
463
+ }
464
+
465
+ /**
466
+ * Extracts theme's data or information
467
+ *
468
+ * @param string $theme A string representing a theme's name or slug.
469
+ * @return object|boolean If successful, an object containing the theme data or information, "false" otherwise.
470
+ */
471
+ private function get_theme_info($theme) {
472
+
473
+ if (function_exists('wp_get_theme')) {
474
+ $theme = wp_get_theme($theme);
475
+ if (is_a($theme, 'WP_Theme')) {
476
+ return $theme;
477
+ }
478
+ } else {
479
+ $theme_data = get_theme_data(WP_CONTENT_DIR.'/themes/'.$theme.'/style.css');
480
+ if (isset($theme_data['Version'])) {
481
+ if (!isset($theme_data['ThemeURI'])) $theme_data['ThemeURI'] = $theme_data['URI'];
482
+ return (object) $theme_data;
483
+ }
484
+ }
485
+
486
+ return false;
487
+ }
488
+
489
+ /**
490
+ * Fix items for update with missing "plugin" or "theme" field if applicable
491
+ *
492
+ * @param Array $items A collection of plugins or themes for updates
493
+ * @param String $type A string indicating which type of collection to process (e.g. 'plugin' or 'theme')
494
+ * @return Array An updated collection of plugins or themes for updates
495
+ */
496
+ private function prep_items_for_updates($items, $type) {
497
+
498
+ foreach ($items as $key => $data) {
499
+ $update_info = $data->update;
500
+
501
+ // Some plugins and/or themes does not adhere to the standard WordPress updates meta
502
+ // properties/fields. Thus, missing some fields such as "plugin" or "theme"
503
+ // in their update information results in "Automatic updates is unavailable for this item"
504
+ // in UDC since we're using these fields to process the updates.
505
+ //
506
+ // As a workaround, we're filling these missing fields in order to solve the above issue
507
+ // in case the developer of these plugins/themes forgot to include them.
508
+ if (is_object($update_info)) {
509
+ $update_info = (array) $update_info;
510
+ if (!isset($update_info[$type])) {
511
+ $update_info[$type] = $key;
512
+ }
513
+
514
+ $update_info = (object) $update_info;
515
+
516
+ } elseif (is_array($update_info)) {
517
+ if (!isset($update_info[$type])) {
518
+ $update_info[$type] = $key;
519
+ }
520
+ }
521
+
522
+ // Re-assign the updated info to the original "update" property
523
+ $items[$key]->update = $update_info;
524
+ }
525
+
526
+ return $items;
527
+ }
528
+
529
  public function get_updates($options) {
530
+
531
+ // Forcing Elegant Themes (Divi) updates component to load if it exist.
532
+ if (function_exists('et_register_updates_component')) {
533
+ et_register_updates_component();
534
+ }
535
+
536
+
537
  if (!current_user_can('update_plugins') && !current_user_can('update_themes') && !current_user_can('update_core')) return $this->_generic_error_response('updates_permission_denied');
538
 
539
  $this->_admin_include('plugin.php', 'update.php', 'file.php', 'template.php');
552
  wp_update_plugins();
553
  }
554
 
555
+ $get_plugin_updates = $this->maybe_add_third_party_items(get_plugin_updates(), 'plugin');
556
  if (is_array($get_plugin_updates)) {
557
  foreach ($get_plugin_updates as $update) {
558
  $plugin_updates[] = array(
565
  'title' => $update->Title,
566
  'author_name' => $update->AuthorName,
567
  'update' => array(
568
+ // With Affiliates-WP, if you have not connected, this is null.
569
+ 'plugin' => isset($update->update->plugin) ? $update->update->plugin : null,
570
  'slug' => $update->update->slug,
571
  'new_version' => $update->update->new_version,
572
  'package' => $update->update->package,
573
  'tested' => isset($update->update->tested) ? $update->update->tested : null,
574
+ 'compatibility' => isset($update->update->compatibility) ? (array) $update->update->compatibility : null,
575
+ 'sections' => isset($update->update->sections) ? (array) $update->update->sections : null,
576
  ),
577
  );
578
  }
588
  delete_site_transient('update_themes');
589
  wp_update_themes();
590
  }
591
+ $get_theme_updates = $this->maybe_add_third_party_items(get_theme_updates(), 'theme');
592
  if (is_array($get_theme_updates)) {
593
  foreach ($get_theme_updates as $update) {
594
  $theme_updates[] = array(
595
+ 'name' => $update->Name,
596
+ 'theme_uri' => $update->ThemeURI,
597
+ 'version' => $update->Version,
598
+ 'description' => $update->Description,
599
+ 'author' => $update->Author,
600
+ 'author_uri' => $update->AuthorURI,
601
+ 'update' => array(
602
+ 'theme' => $update->update['theme'],
603
+ 'new_version' => $update->update['new_version'],
604
+ 'package' => $update->update['package'],
605
+ 'url' => $update->update['url'],
606
  ),
607
  );
608
  }
625
  if (is_array($get_core_updates)) {
626
 
627
  $core_update_key = false;
628
+ $core_update_latest_version = false;
629
 
630
  @include(ABSPATH.WPINC.'/version.php');
631
 
636
  }
637
  }
638
 
639
+ if (false !== $core_update_key) {
640
 
641
  $update = $get_core_updates[$core_update_key];
642
 
644
 
645
  $mysql_version = $wpdb->db_version();
646
 
647
+ $is_mysql = (file_exists(WP_CONTENT_DIR . '/db.php') && empty($wpdb->is_mysql)) ? false : true;
648
 
649
  $core_updates[] = array(
650
  'download' => $update->download,
683
  $filesystem_credentials_are_stored = request_filesystem_credentials(site_url());
684
  $filesystem_form = strip_tags(ob_get_contents(), '<div><h2><p><input><label><fieldset><legend><span><em>');
685
  ob_end_clean();
686
+ $request_filesystem_credentials[$entity] = ('direct' != $filesystem_method && !$filesystem_credentials_are_stored);
687
  }
688
 
689
  $automatic_backups = (class_exists('UpdraftPlus_Options') && class_exists('UpdraftPlus_Addon_Autobackup') && UpdraftPlus_Options::get_updraft_option('updraft_autobackup_default', true)) ? true : false;
699
  ),
700
  ));
701
  }
 
702
  }
central/modules/updraftvault.php CHANGED
@@ -39,18 +39,4 @@ class UpdraftCentral_UpdraftVault_Commands extends UpdraftCentral_Commands {
39
  *
40
  * @return array
41
  */
42
- /*
43
- public function get_filters() {
44
- $per_page_options = array(10, 20, 50, 100, 500, 1000);
45
-
46
- $result = array(
47
- 'paging' => array(
48
- 'per_page_options' => $per_page_options,
49
- ),
50
- );
51
-
52
- return $this->_response($result);
53
- }
54
- */
55
-
56
  }
39
  *
40
  * @return array
41
  */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  }
central/modules/users.php CHANGED
@@ -6,11 +6,11 @@ class UpdraftCentral_Users_Commands extends UpdraftCentral_Commands {
6
 
7
  private function _search_users($query) {
8
  $this->_admin_include('user.php');
9
- $query1 = new WP_User_Query( array(
10
  'orderby' => 'ID',
11
  'order' => 'ASC',
12
  'role'=> $query["role"],
13
- 'search' => '*' . esc_attr( $query["search"] ) . '*',
14
  ));
15
  $query2 = new WP_User_Query(array(
16
  'orderby' => 'ID',
@@ -20,7 +20,7 @@ class UpdraftCentral_Users_Commands extends UpdraftCentral_Commands {
20
  'relation' => 'OR',
21
  array(
22
  'key' => 'first_name',
23
- 'value' => $query["search"],
24
  'compare' => 'LIKE'
25
  ),
26
  array(
@@ -46,11 +46,11 @@ class UpdraftCentral_Users_Commands extends UpdraftCentral_Commands {
46
  foreach ($found_users as $new_user) {
47
  $new = true;
48
  foreach ($users as $user) {
49
- if($new_user == $user){
50
  $new = false;
51
  }
52
  };
53
- if($new) {
54
  array_push($users, $new_user);
55
  }
56
  };
@@ -65,19 +65,19 @@ class UpdraftCentral_Users_Commands extends UpdraftCentral_Commands {
65
  if (!empty($query)) {
66
 
67
  if (!empty($query['search'])) {
68
- return array(
69
- page_count => 1,
70
- page_no => 1
71
- );
72
  }
73
 
74
  $pages = array();
75
- $page_query = new WP_User_Query(array('role'=> $query["role"]));
76
  $page_count = ceil($page_query->total_users / $query["per_page"]);
77
  if ($page_count > 1) {
78
 
79
  for ($i = 0; $i < $page_count; $i++) {
80
- if ( $i + 1 == $query['page_no']) {
81
  $paginator_item = array(
82
  "value"=>$i+1,
83
  "setting"=>"disabled"
@@ -100,7 +100,7 @@ class UpdraftCentral_Users_Commands extends UpdraftCentral_Commands {
100
  "value"=>$query['page_no'] + 1
101
  );
102
  };
103
- if ($query['page_no'] === 1) {
104
  $page_prev = array(
105
  "value"=>1,
106
  "setting"=>"disabled"
@@ -143,83 +143,79 @@ class UpdraftCentral_Users_Commands extends UpdraftCentral_Commands {
143
  $username = $params['user_name'];
144
 
145
  $blog_id = get_current_blog_id();
146
- if (!empty($params['site_id'])) { $blog_id = $params['site_id']; }
 
 
147
 
148
 
149
- //Here, we're switching to the actual blog that we need
150
- //to pull users from.
151
 
152
  $switched = function_exists('switch_to_blog') ? switch_to_blog($blog_id) : false;
153
 
154
  if (username_exists($username) && is_user_member_of_blog(username_exists($username), $blog_id)) {
155
- $result = array("valid"=>false, "message"=>'username_exists');
156
  return $this->_response($result);
157
  }
158
  if (!validate_username($username)) {
159
- $result = array("valid"=>false, "message"=>'username_invalid');
160
  return $this->_response($result);
161
  }
162
 
163
 
164
- //Here, we're restoring to the current (default) blog before we
165
- //do the switched.
166
 
167
  if (function_exists('restore_current_blog') && $switched) {
168
  restore_current_blog();
169
  }
170
 
171
- $result = array("valid"=>true, "message"=>'username_valid');
172
  return $this->_response($result);
173
  }
174
 
175
  /**
176
  * Pulls blog sites available
177
  * for the current WP instance.
178
- *
179
- * If the site is a multisite, then sites under the network
180
  * will be pulled, otherwise, it will return an empty array.
181
- *
182
  * @returns Array - an array of sites
183
  */
184
  private function _get_blog_sites() {
185
 
186
  if (!is_multisite()) return array();
187
 
188
- //Initialize array container
189
  $sites = $network_sites = array();
190
 
191
- //Check to see if latest get_sites (available on WP version >= 4.6) function is
192
- //available to pull any available sites from the current WP instance. If not, then
193
- //we're going to use the fallback function wp_get_sites (for older version).
194
-
195
  if (function_exists('get_sites') && class_exists('WP_Site_Query')) {
196
  $network_sites = get_sites();
197
  } else {
198
- if(function_exists('wp_get_sites')) {
199
  $network_sites = wp_get_sites();
200
  }
201
  }
202
 
203
- //We only process if sites array is not empty, otherwise, bypass
204
- //the next block.
205
-
206
  if (!empty($network_sites)) {
207
  foreach ($network_sites as $site) {
208
 
209
- //Here we're checking if the site type is an array, because
210
- //we're pulling the blog_id property based on the type of
211
- //site returned.
212
- //
213
- //get_sites returns an array of object, whereas the wp_get_sites
214
- //function returns an array of array.
215
-
216
  $blog_id = is_array($site) ? $site['blog_id'] : $site->blog_id;
217
 
218
 
219
- //We're saving the blog_id and blog name as an associative item
220
- //into the sites array, that will be used as "Sites" option in
221
- //the frontend.
222
-
223
  $sites[$blog_id] = get_blog_details($blog_id)->blogname;
224
  }
225
  }
@@ -232,11 +228,13 @@ class UpdraftCentral_Users_Commands extends UpdraftCentral_Commands {
232
  $email = $params['email'];
233
 
234
  $blog_id = get_current_blog_id();
235
- if (isset($params['site_id']) && $params['site_id'] !== 0 ) { $blog_id = $params['site_id']; }
 
 
236
 
237
 
238
- //Here, we're switching to the actual blog that we need
239
- //to pull users from.
240
 
241
  $switched = false;
242
  if (function_exists('switch_to_blog')) {
@@ -244,44 +242,47 @@ class UpdraftCentral_Users_Commands extends UpdraftCentral_Commands {
244
  }
245
 
246
  if (is_email($email) === false) {
247
- $result = array("valid"=> false, "message"=>'email_invalid');
248
  return $this->_response($result);
249
  }
250
 
251
- if(email_exists($email) && is_user_member_of_blog(email_exists($email),$blog_id)) {
252
- $result = array("valid"=> false, "message"=>'email_exists');
253
  return $this->_response($result);
254
  }
255
 
256
- //Here, we're restoring to the current (default) blog before we
257
- //do the switched.
258
 
259
  if (function_exists('restore_current_blog') && $switched) {
260
  restore_current_blog();
261
  }
262
 
263
- $result = array("valid"=> true, "message"=>'email_valid');
264
  return $this->_response($result);
265
  }
266
 
267
  /**
268
- * The get_users function pull all the users from the database
269
- * based on the current search parameters/filters. Please see _search_users
270
- * for the breakdown of these parameters.
271
- */
 
 
 
272
  public function get_users($query) {
273
  $this->_admin_include('user.php');
274
 
275
  $users;
276
- //Here, we're getting the current blog id. If blog id
277
- //is passed along with the parameters then we override
278
- //that current (default) value with the parameter blog id value.
279
  $blog_id = get_current_blog_id();
280
- if (isset($query['site_id']) && $query['site_id'] !== 0 ) $blog_id = $query['site_id'];
281
 
282
 
283
- //Here, we're switching to the actual blog that we need
284
- //to pull users from.
285
 
286
  $switched = false;
287
  if (function_exists('switch_to_blog')) {
@@ -291,9 +292,15 @@ class UpdraftCentral_Users_Commands extends UpdraftCentral_Commands {
291
  if (!empty($query["search"])) {
292
  $users = $this->_search_users($query);
293
  } else {
294
- if (empty($query["per_page"])) { $query["per_page"] = 10; }
295
- if (empty($query['page_no'])) { $query['page_no'] = 1; }
296
- if (empty($query["role"])) { $query["role"] = ""; }
 
 
 
 
 
 
297
 
298
  $user_query = new WP_User_Query(array(
299
  'orderby' => 'ID',
@@ -303,8 +310,8 @@ class UpdraftCentral_Users_Commands extends UpdraftCentral_Commands {
303
  'role'=> $query["role"]
304
  ));
305
 
306
- if (empty( $user_query->results)) {
307
- $result = array("message"=>'users_not_found');
308
  return $this->_response($result);
309
  }
310
 
@@ -313,7 +320,7 @@ class UpdraftCentral_Users_Commands extends UpdraftCentral_Commands {
313
 
314
  foreach ($users as &$user) {
315
  $user_object = get_userdata($user->ID);
316
- if(method_exists($user_object, 'to_array')) {
317
  $user = $user_object->to_array();
318
  $user["roles"] = $user_object->roles;
319
  $user["first_name"] = $user_object->first_name;
@@ -329,8 +336,8 @@ class UpdraftCentral_Users_Commands extends UpdraftCentral_Commands {
329
  "paging" => $this->_calculate_pages($query)
330
  );
331
 
332
- //Here, we're restoring to the current (default) blog before we
333
- //do the switched.
334
 
335
  if (function_exists('restore_current_blog') && $switched) {
336
  restore_current_blog();
@@ -340,17 +347,17 @@ class UpdraftCentral_Users_Commands extends UpdraftCentral_Commands {
340
 
341
  public function add_user($user) {
342
  $this->_admin_include('user.php');
343
- //Here, we're getting the current blog id. If blog id
344
- //is passed along with the parameters then we override
345
- //that current (default) value with the parameter blog id value.
346
 
347
 
348
  $blog_id = get_current_blog_id();
349
- if (isset($user['site_id']) && $user['site_id'] !== 0 ) $blog_id = $user['site_id'];
350
 
351
 
352
- //Here, we're switching to the actual blog that we need
353
- //to pull users from.
354
 
355
  $switched = false;
356
  if (function_exists('switch_to_blog')) {
@@ -360,50 +367,50 @@ class UpdraftCentral_Users_Commands extends UpdraftCentral_Commands {
360
  if (!current_user_can('create_users') && !is_super_admin()) {
361
  $result = array("error" => true, "message" => "user_create_no_permission");
362
  return $this->_response($result);
363
- }
364
- if ( is_email($user["user_email"]) === false) {
365
  $result = array("error" => true, "message" => "email_invalid");
366
- return $this->_response($result);
367
- }
368
- if (email_exists( $user["user_email"] ) && is_user_member_of_blog( email_exists($user["user_email"]),$blog_id )) {
369
  $result = array("error" => true, "message" => "email_exists");
370
- return $this->_response($result);
371
- }
372
- if (username_exists($user["user_login"]) && is_user_member_of_blog(username_exists($user["user_login"]),$blog_id)) {
373
  $result = array("error" => true, "message" => "username_exists");
374
- return $this->_response($result);
375
  }
376
  if (!validate_username($user["user_login"])) {
377
- $result = array("error"=>true, "message"=>'username_invalid');
378
  return $this->_response($result);
379
  }
380
- if (isset($user['site_id']) && !current_user_can( 'manage_network_users' )) {
381
- $result = array("error"=>true, "message"=>'user_create_no_permission');
382
- return $this->_response($result);
383
  }
384
 
385
- if (email_exists( $user["user_email"] ) && !is_user_member_of_blog( email_exists($user["user_email"]),$blog_id )) {
386
- $user_id = email_exists( $user["user_email"] );
387
  } else {
388
- $user_id = wp_insert_user( $user ) ;
389
  }
390
- $role = $user['role'];
391
  if (is_multisite()) {
392
- add_existing_user_to_blog( array( 'user_id' => $user_id, 'role' => $role ));
393
  }
394
 
395
- //Here, we're restoring to the current (default) blog before we
396
- //do the switched.
397
 
398
  if (function_exists('restore_current_blog') && $switched) {
399
  restore_current_blog();
400
  }
401
 
402
- if ($user_id > 0 ) {
403
- $result = array("error" => false, "message"=>"user_created_with_user_name", "values" => array($user['user_login']));
404
  return $this->_response($result);
405
  } else {
406
- $result = array("error" => true, "message"=>"user_create_failed", "values" => array($user));
407
  }
408
 
409
 
@@ -419,20 +426,20 @@ class UpdraftCentral_Users_Commands extends UpdraftCentral_Commands {
419
  * current_user_can: This check the user permissons from UCP
420
  * get_userdata: This get the user data on the data from user_id in the $user_id array
421
  * wp_delete_user: Deleting users on the User ID (user_id) and, IF Specified, the Assigner ID (assign_user_id).
422
- *
423
  * @param [type] $params [description] THis is an Array of params sent over from UpdraftCentral
424
  * @return [type] Array [description] This will send back an error array along with message if there are any issues with the user_id
425
  */
426
  public function delete_user($params) {
427
  $this->_admin_include('user.php');
428
- $user_id = $params['user_id'];
429
  $assign_user_id = $params["assign_user_id"];
430
- //Here, we're getting the current blog id. If blog id
431
- //is passed along with the parameters then we override
432
- //that current (default) value with the parameter blog id value.
433
 
434
  $blog_id = get_current_blog_id();
435
- if (isset($params['site_id']) && $params['site_id'] !== 0 ) $blog_id = $params['site_id'];
436
 
437
  $switched = false;
438
  if (function_exists('switch_to_blog')) {
@@ -443,19 +450,19 @@ class UpdraftCentral_Users_Commands extends UpdraftCentral_Commands {
443
  $result = array("error" => true, "message" => "user_delete_no_permission");
444
  return $this->_response($result);
445
  }
446
- if ( get_userdata( $user_id ) === false ) {
447
- $result = array("error" => true, "message"=>"user_not_found");
448
  return $this->_response($result);
449
- }
450
 
451
- if (wp_delete_user($user_id, $assign_user_id)){
452
- $result = array("error" => false, "message"=>"user_deleted");
453
  } else {
454
- $result = array("error" => true, "message"=>"user_delete_failed");
455
  }
456
 
457
- //Here, we're restoring to the current (default) blog before we
458
- //do the switched.
459
 
460
  if (function_exists('restore_current_blog') && $switched) {
461
  restore_current_blog();
@@ -467,37 +474,37 @@ class UpdraftCentral_Users_Commands extends UpdraftCentral_Commands {
467
  public function edit_user($user) {
468
  $this->_admin_include('user.php');
469
 
470
- //Here, we're getting the current blog id. If blog id
471
- //is passed along with the parameters then we override
472
- //that current (default) value with the parameter blog id value.
473
 
474
  $blog_id = get_current_blog_id();
475
- if (isset($user['site_id']) && $user['site_id'] !== 0 ) $blog_id = $user['site_id'];
476
 
477
- //Here, we're switching to the actual blog that we need
478
- //to apply our changes.
479
 
480
  $switched = false;
481
  if (function_exists('switch_to_blog')) {
482
  $switched = switch_to_blog($blog_id);
483
  }
484
 
485
- if (!current_user_can('edit_users') && !is_super_admin() && $user["ID"] !== get_current_user_id()) {
486
  $result = array("error" => true, "message" => "user_edit_no_permission");
487
  return $this->_response($result);
488
  }
489
 
490
- if (get_userdata( $user["ID"] ) === false) {
491
- $result = array("error" => true, "message"=>"user_not_found");
492
  return $this->_response($result);
493
  }
494
- if ($user["ID"] == get_current_user_id()) {
495
- unset($user["role"]);
496
  }
497
 
498
  /* Validate Username*/
499
  if (!validate_username($user["user_login"])) {
500
- $result = array("error"=>true, "message"=>'username_invalid');
501
  return $this->_response($result);
502
  }
503
  /* Validate Email if not the same*/
@@ -506,27 +513,27 @@ class UpdraftCentral_Users_Commands extends UpdraftCentral_Commands {
506
  $old_email = $remote_user->user_email;
507
 
508
  if ($user['user_email'] !== $old_email) {
509
- if(is_email($user['user_email']) === false){
510
- $result = array("error"=> true, "message"=>'email_invalid');
511
  return $this->_response($result);
512
  }
513
 
514
- if(email_exists($user['user_email'])) {
515
- $result = array("error"=> true, "message"=>'email_exists');
516
  return $this->_response($result);
517
  }
518
  }
519
 
520
 
521
- $user_id = wp_update_user($user);
522
  if (is_wp_error($user_id)) {
523
  $result = array("error" => true, "message" => "user_edit_failed_with_error", "values" => array($user_id));
524
  } else {
525
  $result = array("error" => false, "message" => "user_edited_with_user_name", "values" => array($user["user_login"]));
526
  }
527
 
528
- //Here, we're restoring to the current (default) blog before we
529
- //do the switched.
530
 
531
  if (function_exists('restore_current_blog') && $switched) {
532
  restore_current_blog();
@@ -537,14 +544,14 @@ class UpdraftCentral_Users_Commands extends UpdraftCentral_Commands {
537
 
538
  public function get_roles() {
539
  $this->_admin_include('user.php');
540
- $roles = array_reverse( get_editable_roles() );
541
  return $this->_response($roles);
542
  }
543
 
544
  public function get_user_filters() {
545
  $this->_admin_include('user.php');
546
 
547
- //Pull sites options if available.
548
  $sites = $this->_get_blog_sites();
549
 
550
  $result = array(
6
 
7
  private function _search_users($query) {
8
  $this->_admin_include('user.php');
9
+ $query1 = new WP_User_Query(array(
10
  'orderby' => 'ID',
11
  'order' => 'ASC',
12
  'role'=> $query["role"],
13
+ 'search' => '*' . esc_attr($query["search"]) . '*',
14
  ));
15
  $query2 = new WP_User_Query(array(
16
  'orderby' => 'ID',
20
  'relation' => 'OR',
21
  array(
22
  'key' => 'first_name',
23
+ 'value' => $query["search"],
24
  'compare' => 'LIKE'
25
  ),
26
  array(
46
  foreach ($found_users as $new_user) {
47
  $new = true;
48
  foreach ($users as $user) {
49
+ if ($new_user == $user) {
50
  $new = false;
51
  }
52
  };
53
+ if ($new) {
54
  array_push($users, $new_user);
55
  }
56
  };
65
  if (!empty($query)) {
66
 
67
  if (!empty($query['search'])) {
68
+ return array(
69
+ page_count => 1,
70
+ page_no => 1
71
+ );
72
  }
73
 
74
  $pages = array();
75
+ $page_query = new WP_User_Query(array('role' => $query["role"]));
76
  $page_count = ceil($page_query->total_users / $query["per_page"]);
77
  if ($page_count > 1) {
78
 
79
  for ($i = 0; $i < $page_count; $i++) {
80
+ if ($i + 1 == $query['page_no']) {
81
  $paginator_item = array(
82
  "value"=>$i+1,
83
  "setting"=>"disabled"
100
  "value"=>$query['page_no'] + 1
101
  );
102
  };
103
+ if (1 === $query['page_no']) {
104
  $page_prev = array(
105
  "value"=>1,
106
  "setting"=>"disabled"
143
  $username = $params['user_name'];
144
 
145
  $blog_id = get_current_blog_id();
146
+ if (!empty($params['site_id'])) {
147
+ $blog_id = $params['site_id'];
148
+ }
149
 
150
 
151
+ // Here, we're switching to the actual blog that we need
152
+ // to pull users from.
153
 
154
  $switched = function_exists('switch_to_blog') ? switch_to_blog($blog_id) : false;
155
 
156
  if (username_exists($username) && is_user_member_of_blog(username_exists($username), $blog_id)) {
157
+ $result = array("valid" => false, "message" => 'username_exists');
158
  return $this->_response($result);
159
  }
160
  if (!validate_username($username)) {
161
+ $result = array("valid" => false, "message" => 'username_invalid');
162
  return $this->_response($result);
163
  }
164
 
165
 
166
+ // Here, we're restoring to the current (default) blog before we
167
+ // do the switched.
168
 
169
  if (function_exists('restore_current_blog') && $switched) {
170
  restore_current_blog();
171
  }
172
 
173
+ $result = array("valid" => true, "message" => 'username_valid');
174
  return $this->_response($result);
175
  }
176
 
177
  /**
178
  * Pulls blog sites available
179
  * for the current WP instance.
180
+ * If the site is a multisite, then sites under the network
 
181
  * will be pulled, otherwise, it will return an empty array.
182
+ *
183
  * @returns Array - an array of sites
184
  */
185
  private function _get_blog_sites() {
186
 
187
  if (!is_multisite()) return array();
188
 
189
+ // Initialize array container
190
  $sites = $network_sites = array();
191
 
192
+ // Check to see if latest get_sites (available on WP version >= 4.6) function is
193
+ // available to pull any available sites from the current WP instance. If not, then
194
+ // we're going to use the fallback function wp_get_sites (for older version).
 
195
  if (function_exists('get_sites') && class_exists('WP_Site_Query')) {
196
  $network_sites = get_sites();
197
  } else {
198
+ if (function_exists('wp_get_sites')) {
199
  $network_sites = wp_get_sites();
200
  }
201
  }
202
 
203
+ // We only process if sites array is not empty, otherwise, bypass
204
+ // the next block.
 
205
  if (!empty($network_sites)) {
206
  foreach ($network_sites as $site) {
207
 
208
+ // Here we're checking if the site type is an array, because
209
+ // we're pulling the blog_id property based on the type of
210
+ // site returned.
211
+ // get_sites returns an array of object, whereas the wp_get_sites
212
+ // function returns an array of array.
 
 
213
  $blog_id = is_array($site) ? $site['blog_id'] : $site->blog_id;
214
 
215
 
216
+ // We're saving the blog_id and blog name as an associative item
217
+ // into the sites array, that will be used as "Sites" option in
218
+ // the frontend.
 
219
  $sites[$blog_id] = get_blog_details($blog_id)->blogname;
220
  }
221
  }
228
  $email = $params['email'];
229
 
230
  $blog_id = get_current_blog_id();
231
+ if (isset($params['site_id']) && 0 !== $params['site_id']) {
232
+ $blog_id = $params['site_id'];
233
+ }
234
 
235
 
236
+ // Here, we're switching to the actual blog that we need
237
+ // to pull users from.
238
 
239
  $switched = false;
240
  if (function_exists('switch_to_blog')) {
242
  }
243
 
244
  if (is_email($email) === false) {
245
+ $result = array("valid" => false, "message" => 'email_invalid');
246
  return $this->_response($result);
247
  }
248
 
249
+ if (email_exists($email) && is_user_member_of_blog(email_exists($email), $blog_id)) {
250
+ $result = array("valid" => false, "message" => 'email_exists');
251
  return $this->_response($result);
252
  }
253
 
254
+ // Here, we're restoring to the current (default) blog before we
255
+ // do the switched.
256
 
257
  if (function_exists('restore_current_blog') && $switched) {
258
  restore_current_blog();
259
  }
260
 
261
+ $result = array("valid" => true, "message" => 'email_valid');
262
  return $this->_response($result);
263
  }
264
 
265
  /**
266
+ * The get_users function pull all the users from the database
267
+ * based on the current search parameters/filters. Please see _search_users
268
+ * for the breakdown of these parameters.
269
+ *
270
+ * @param array $query
271
+ * @return array
272
+ */
273
  public function get_users($query) {
274
  $this->_admin_include('user.php');
275
 
276
  $users;
277
+ // Here, we're getting the current blog id. If blog id
278
+ // is passed along with the parameters then we override
279
+ // that current (default) value with the parameter blog id value.
280
  $blog_id = get_current_blog_id();
281
+ if (isset($query['site_id']) && 0 !== $query['site_id']) $blog_id = $query['site_id'];
282
 
283
 
284
+ // Here, we're switching to the actual blog that we need
285
+ // to pull users from.
286
 
287
  $switched = false;
288
  if (function_exists('switch_to_blog')) {
292
  if (!empty($query["search"])) {
293
  $users = $this->_search_users($query);
294
  } else {
295
+ if (empty($query["per_page"])) {
296
+ $query["per_page"] = 10;
297
+ }
298
+ if (empty($query['page_no'])) {
299
+ $query['page_no'] = 1;
300
+ }
301
+ if (empty($query["role"])) {
302
+ $query["role"] = "";
303
+ }
304
 
305
  $user_query = new WP_User_Query(array(
306
  'orderby' => 'ID',
310
  'role'=> $query["role"]
311
  ));
312
 
313
+ if (empty($user_query->results)) {
314
+ $result = array("message" => 'users_not_found');
315
  return $this->_response($result);
316
  }
317
 
320
 
321
  foreach ($users as &$user) {
322
  $user_object = get_userdata($user->ID);
323
+ if (method_exists($user_object, 'to_array')) {
324
  $user = $user_object->to_array();
325
  $user["roles"] = $user_object->roles;
326
  $user["first_name"] = $user_object->first_name;
336
  "paging" => $this->_calculate_pages($query)
337
  );
338
 
339
+ // Here, we're restoring to the current (default) blog before we
340
+ // do the switched.
341
 
342
  if (function_exists('restore_current_blog') && $switched) {
343
  restore_current_blog();
347
 
348
  public function add_user($user) {
349
  $this->_admin_include('user.php');
350
+ // Here, we're getting the current blog id. If blog id
351
+ // is passed along with the parameters then we override
352
+ // that current (default) value with the parameter blog id value.
353
 
354
 
355
  $blog_id = get_current_blog_id();
356
+ if (isset($user['site_id']) && 0 !== $user['site_id']) $blog_id = $user['site_id'];
357
 
358
 
359
+ // Here, we're switching to the actual blog that we need
360
+ // to pull users from.
361
 
362
  $switched = false;
363
  if (function_exists('switch_to_blog')) {
367
  if (!current_user_can('create_users') && !is_super_admin()) {
368
  $result = array("error" => true, "message" => "user_create_no_permission");
369
  return $this->_response($result);
370
+ }
371
+ if (is_email($user["user_email"]) === false) {
372
  $result = array("error" => true, "message" => "email_invalid");
373
+ return $this->_response($result);
374
+ }
375
+ if (email_exists($user["user_email"]) && is_user_member_of_blog(email_exists($user["user_email"]), $blog_id)) {
376
  $result = array("error" => true, "message" => "email_exists");
377
+ return $this->_response($result);
378
+ }
379
+ if (username_exists($user["user_login"]) && is_user_member_of_blog(username_exists($user["user_login"]), $blog_id)) {
380
  $result = array("error" => true, "message" => "username_exists");
381
+ return $this->_response($result);
382
  }
383
  if (!validate_username($user["user_login"])) {
384
+ $result = array("error" => true, "message" => 'username_invalid');
385
  return $this->_response($result);
386
  }
387
+ if (isset($user['site_id']) && !current_user_can('manage_network_users')) {
388
+ $result = array("error" => true, "message" => 'user_create_no_permission');
389
+ return $this->_response($result);
390
  }
391
 
392
+ if (email_exists($user["user_email"]) && !is_user_member_of_blog(email_exists($user["user_email"]), $blog_id)) {
393
+ $user_id = email_exists($user["user_email"]);
394
  } else {
395
+ $user_id = wp_insert_user($user);
396
  }
397
+ $role = $user['role'];
398
  if (is_multisite()) {
399
+ add_existing_user_to_blog(array('user_id' => $user_id, 'role' => $role));
400
  }
401
 
402
+ // Here, we're restoring to the current (default) blog before we
403
+ // do the switched.
404
 
405
  if (function_exists('restore_current_blog') && $switched) {
406
  restore_current_blog();
407
  }
408
 
409
+ if ($user_id > 0) {
410
+ $result = array("error" => false, "message" => "user_created_with_user_name", "values" => array($user['user_login']));
411
  return $this->_response($result);
412
  } else {
413
+ $result = array("error" => true, "message" => "user_create_failed", "values" => array($user));
414
  }
415
 
416
 
426
  * current_user_can: This check the user permissons from UCP
427
  * get_userdata: This get the user data on the data from user_id in the $user_id array
428
  * wp_delete_user: Deleting users on the User ID (user_id) and, IF Specified, the Assigner ID (assign_user_id).
429
+ *
430
  * @param [type] $params [description] THis is an Array of params sent over from UpdraftCentral
431
  * @return [type] Array [description] This will send back an error array along with message if there are any issues with the user_id
432
  */
433
  public function delete_user($params) {
434
  $this->_admin_include('user.php');
435
+ $user_id = $params['user_id'];
436
  $assign_user_id = $params["assign_user_id"];
437
+ // Here, we're getting the current blog id. If blog id
438
+ // is passed along with the parameters then we override
439
+ // that current (default) value with the parameter blog id value.
440
 
441
  $blog_id = get_current_blog_id();
442
+ if (isset($params['site_id']) && 0 !== $params['site_id']) $blog_id = $params['site_id'];
443
 
444
  $switched = false;
445
  if (function_exists('switch_to_blog')) {
450
  $result = array("error" => true, "message" => "user_delete_no_permission");
451
  return $this->_response($result);
452
  }
453
+ if (get_userdata($user_id) === false) {
454
+ $result = array("error" => true, "message" => "user_not_found");
455
  return $this->_response($result);
456
+ }
457
 
458
+ if (wp_delete_user($user_id, $assign_user_id)) {
459
+ $result = array("error" => false, "message" => "user_deleted");
460
  } else {
461
+ $result = array("error" => true, "message" => "user_delete_failed");
462
  }
463
 
464
+ // Here, we're restoring to the current (default) blog before we
465
+ // do the switched.
466
 
467
  if (function_exists('restore_current_blog') && $switched) {
468
  restore_current_blog();
474
  public function edit_user($user) {
475
  $this->_admin_include('user.php');
476
 
477
+ // Here, we're getting the current blog id. If blog id
478
+ // is passed along with the parameters then we override
479
+ // that current (default) value with the parameter blog id value.
480
 
481
  $blog_id = get_current_blog_id();
482
+ if (isset($user['site_id']) && 0 !== $user['site_id']) $blog_id = $user['site_id'];
483
 
484
+ // Here, we're switching to the actual blog that we need
485
+ // to apply our changes.
486
 
487
  $switched = false;
488
  if (function_exists('switch_to_blog')) {
489
  $switched = switch_to_blog($blog_id);
490
  }
491
 
492
+ if (!current_user_can('edit_users') && !is_super_admin() && get_current_user_id() !== $user["ID"]) {
493
  $result = array("error" => true, "message" => "user_edit_no_permission");
494
  return $this->_response($result);
495
  }
496
 
497
+ if (false === get_userdata($user["ID"])) {
498
+ $result = array("error" => true, "message" => "user_not_found");
499
  return $this->_response($result);
500
  }
501
+ if (get_current_user_id() == $user["ID"]) {
502
+ unset($user["role"]);
503
  }
504
 
505
  /* Validate Username*/
506
  if (!validate_username($user["user_login"])) {
507
+ $result = array("error" => true, "message" => 'username_invalid');
508
  return $this->_response($result);
509
  }
510
  /* Validate Email if not the same*/
513
  $old_email = $remote_user->user_email;
514
 
515
  if ($user['user_email'] !== $old_email) {
516
+ if (is_email($user['user_email']) === false) {
517
+ $result = array("error" => true, "message" => 'email_invalid');
518
  return $this->_response($result);
519
  }
520
 
521
+ if (email_exists($user['user_email'])) {
522
+ $result = array("error" => true, "message" => 'email_exists');
523
  return $this->_response($result);
524
  }
525
  }
526
 
527
 
528
+ $user_id = wp_update_user($user);
529
  if (is_wp_error($user_id)) {
530
  $result = array("error" => true, "message" => "user_edit_failed_with_error", "values" => array($user_id));
531
  } else {
532
  $result = array("error" => false, "message" => "user_edited_with_user_name", "values" => array($user["user_login"]));
533
  }
534
 
535
+ // Here, we're restoring to the current (default) blog before we
536
+ // do the switched.
537
 
538
  if (function_exists('restore_current_blog') && $switched) {
539
  restore_current_blog();
544
 
545
  public function get_roles() {
546
  $this->_admin_include('user.php');
547
+ $roles = array_reverse(get_editable_roles());
548
  return $this->_response($roles);
549
  }
550
 
551
  public function get_user_filters() {
552
  $this->_admin_include('user.php');
553
 
554
+ // Pull sites options if available.
555
  $sites = $this->_get_blog_sites();
556
 
557
  $result = array(
class-updraftplus.php CHANGED
@@ -155,8 +155,6 @@ class UpdraftPlus {
155
 
156
  public function ensure_phpseclib($classes = false, $class_paths = false) {
157
 
158
- if (false === strpos(get_include_path(), UPDRAFTPLUS_DIR.'/includes/phpseclib')) set_include_path(UPDRAFTPLUS_DIR.'/includes/phpseclib'.PATH_SEPARATOR.get_include_path());
159
-
160
  $this->no_deprecation_warnings_on_php7();
161
 
162
  if ($classes) {
@@ -169,9 +167,11 @@ class UpdraftPlus {
169
  }
170
 
171
  if ($class_paths) {
 
 
172
  if (is_string($class_paths)) $class_paths = array($class_paths);
173
  foreach ($class_paths as $cp) {
174
- require_once(UPDRAFTPLUS_DIR.'/includes/phpseclib/'.$cp.'.php');
175
  }
176
  }
177
  }
@@ -4011,9 +4011,10 @@ class UpdraftPlus {
4011
  // De-register to defeat any plugins that may have registered incompatible versions (e.g. WooCommerce 2.5 beta1 still has the Select 2 3.5 series)
4012
  wp_deregister_script('select2');
4013
  wp_deregister_style('select2');
4014
- $select2_version = '4.0.3';
4015
- wp_enqueue_script('select2', UPDRAFTPLUS_URL."/includes/select2/select2.min.js", array('jquery'), $select2_version);
4016
- wp_enqueue_style('select2', UPDRAFTPLUS_URL."/includes/select2/select2.min.css", array(), $select2_version);
 
4017
  }
4018
 
4019
  public function memory_check_current($memory_limit = false) {
@@ -4457,9 +4458,9 @@ CREATE TABLE $wpdb->signups (
4457
 
4458
  if (empty($all_tables) && !empty($dbhandle->last_error)) {
4459
  $all_tables = $dbhandle->get_results("SHOW TABLES", ARRAY_N);
4460
- $all_tables = array_map(create_function('$a', 'return array("name" => $a[0], "type" => "BASE TABLE");'), $all_tables);
4461
  } else {
4462
- $all_tables = array_map(create_function('$a', 'return array("name" => $a[0], "type" => $a[1]);'), $all_tables);
4463
  }
4464
 
4465
  # If this is not the WP database, then we do not consider it a fatal error if there are no tables
@@ -4472,11 +4473,44 @@ CREATE TABLE $wpdb->signups (
4472
  $updraftplus_database_utility = new UpdraftPlus_Database_Utility($key, $table_prefix_raw, $dbhandle);
4473
  usort($all_tables, array($updraftplus_database_utility, 'backup_db_sorttables'));
4474
 
4475
- $all_table_names = array_map(create_function('$a', 'return $a["name"];'), $all_tables);
4476
  $db_tables_array[$key] = $all_table_names;
4477
  }
4478
 
4479
  return $db_tables_array;
4480
  }
4481
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4482
  }
155
 
156
  public function ensure_phpseclib($classes = false, $class_paths = false) {
157
 
 
 
158
  $this->no_deprecation_warnings_on_php7();
159
 
160
  if ($classes) {
167
  }
168
 
169
  if ($class_paths) {
170
+ $phpseclib_dir = UPDRAFTPLUS_DIR.'/vendor/phpseclib/phpseclib/phpseclib';
171
+ if (false === strpos(get_include_path(), $phpseclib_dir)) set_include_path(get_include_path().PATH_SEPARATOR.$phpseclib_dir);
172
  if (is_string($class_paths)) $class_paths = array($class_paths);
173
  foreach ($class_paths as $cp) {
174
+ require_once($phpseclib_dir.'/'.$cp.'.php');
175
  }
176
  }
177
  }
4011
  // De-register to defeat any plugins that may have registered incompatible versions (e.g. WooCommerce 2.5 beta1 still has the Select 2 3.5 series)
4012
  wp_deregister_script('select2');
4013
  wp_deregister_style('select2');
4014
+ $select2_version = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? '4.0.3'.'.'.time() : '4.0.3';
4015
+ $min_or_not = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? '' : '.min';
4016
+ wp_enqueue_script('select2', UPDRAFTPLUS_URL."/includes/select2/select2".$min_or_not.".js", array('jquery'), $select2_version);
4017
+ wp_enqueue_style('select2', UPDRAFTPLUS_URL."/includes/select2/select2".$min_or_not.".css", array(), $select2_version);
4018
  }
4019
 
4020
  public function memory_check_current($memory_limit = false) {
4458
 
4459
  if (empty($all_tables) && !empty($dbhandle->last_error)) {
4460
  $all_tables = $dbhandle->get_results("SHOW TABLES", ARRAY_N);
4461
+ $all_tables = array_map(array($this, 'cb_get_name_base_type'), $all_tables);
4462
  } else {
4463
+ $all_tables = array_map(array($this, 'cb_get_name_type'), $all_tables);
4464
  }
4465
 
4466
  # If this is not the WP database, then we do not consider it a fatal error if there are no tables
4473
  $updraftplus_database_utility = new UpdraftPlus_Database_Utility($key, $table_prefix_raw, $dbhandle);
4474
  usort($all_tables, array($updraftplus_database_utility, 'backup_db_sorttables'));
4475
 
4476
+ $all_table_names = array_map(array($this, 'cb_get_name'), $all_tables);
4477
  $db_tables_array[$key] = $all_table_names;
4478
  }
4479
 
4480
  return $db_tables_array;
4481
  }
4482
 
4483
+ /**
4484
+ * Returns the member of the array with key (int)0, as a new array. This function is used as a callback for array_map().
4485
+ *
4486
+ * @param Array $a - the array
4487
+ *
4488
+ * @return Array - with keys 'name' and 'type'
4489
+ */
4490
+ private function cb_get_name_base_type($a) {
4491
+ return array('name' => $a[0], 'type' => 'BASE TABLE');
4492
+ }
4493
+
4494
+ /**
4495
+ * Returns the members of the array with keys (int)0 and (int)1, as part of a new array.
4496
+ *
4497
+ * @param Array $a - the array
4498
+ *
4499
+ * @return Array - keys are 'name' and 'type'
4500
+ */
4501
+ private function cb_get_name_type($a) {
4502
+ return array('name' => $a[0], 'type' => $a[1]);
4503
+ }
4504
+
4505
+ /**
4506
+ * Returns the member of the array with key (string)'name'. This function is used as a callback for array_map().
4507
+ *
4508
+ * @param Array $a - the array
4509
+ *
4510
+ * @return Mixed - the value with key (string)'name'
4511
+ */
4512
+ private function cb_get_name($a) {
4513
+ return $a['name'];
4514
+ }
4515
+
4516
  }
clean-composer.sh DELETED
@@ -1,32 +0,0 @@
1
- #!/bin/bash
2
-
3
- # This script is for removing unwanted stuff that Composer pulls in upon an update (documentation, tests, etc.) - stuff that's just bloat as far as the plugin packaging is concerned.
4
-
5
- # Abort if not running in shell environment
6
- [[ -z $SHELL ]] && exit
7
-
8
- rm -rf vendor/eher/oauth/test
9
-
10
- # Un-needed Rackspace/PHP-Opencloud components
11
- for i in doc tests samples; do
12
- rm -rf vendor/rackspace/php-opencloud/$i
13
- done
14
- # Referenced in the auto-loader
15
- mkdir vendor/rackspace/php-opencloud/tests
16
-
17
- for i in Autoscale CloudMonitoring Compute Database DNS Image LoadBalancer Networking Orchestration Queues Volume; do
18
- rm -rf vendor/rackspace/php-opencloud/lib/OpenCloud/$i
19
- done
20
-
21
- for i in docs phing tests; do
22
- rm -rf vendor/guzzle/guzzle/$i
23
- done
24
- # Referenced in the auto-loader
25
- mkdir vendor/guzzle/guzzle/tests
26
-
27
- # Un-wanted AWS stuff
28
- for i in AutoScaling CloudSearchDomain CognitoIdentity DirectConnect ElasticBeanstalk OpsWorks StorageGateway CloudFormation CloudTrail CognitoSync DynamoDb ElasticLoadBalancing ImportExport Rds Ses Sts CloudFront CloudWatch Ec2 ElasticTranscoder Kinesis Redshift SimpleDb Support CloudHsm CloudWatchLogs ConfigService Ecs Emr Kms Route53 Sns Swf CloudSearch CodeDeploy DataPipeline ElastiCache Glacier Lambda Route53Domains Sqs; do
29
- rm -rf vendor/aws/aws-sdk-php/src/Aws/$i
30
- done
31
-
32
- echo "Important: remember to disable the PSR-4 autoloading, to prevent fatals caused by plugins with older versions of Composer"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
composer.json DELETED
@@ -1,10 +0,0 @@
1
- {
2
- "autoload": {
3
- "classmap": [ "vendor/symfony/event-dispatcher/" ]
4
- },
5
- "require": {
6
- "eher/oauth": "^1.0",
7
- "rackspace/php-opencloud": "1.12.2",
8
- "aws/aws-sdk-php": "2.8.*"
9
- }
10
- }
 
 
 
 
 
 
 
 
 
 
composer.lock DELETED
@@ -1,373 +0,0 @@
1
- {
2
- "_readme": [
3
- "This file locks the dependencies of your project to a known state",
4
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5
- "This file is @generated automatically"
6
- ],
7
- "hash": "02bee7ad83137f80e5b61b7963d82d17",
8
- "content-hash": "4737de1914ed64f5d71431d94c2f91cf",
9
- "packages": [
10
- {
11
- "name": "aws/aws-sdk-php",
12
- "version": "2.8.30",
13
- "source": {
14
- "type": "git",
15
- "url": "https://github.com/aws/aws-sdk-php.git",
16
- "reference": "2d7183cd22381237bce25f11d741a77bdeb2d0b8"
17
- },
18
- "dist": {
19
- "type": "zip",
20
- "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/2d7183cd22381237bce25f11d741a77bdeb2d0b8",
21
- "reference": "2d7183cd22381237bce25f11d741a77bdeb2d0b8",
22
- "shasum": ""
23
- },
24
- "require": {
25
- "guzzle/guzzle": "~3.7",
26
- "php": ">=5.3.3"
27
- },
28
- "require-dev": {
29
- "doctrine/cache": "~1.0",
30
- "ext-openssl": "*",
31
- "monolog/monolog": "~1.4",
32
- "phpunit/phpunit": "~4.0",
33
- "phpunit/phpunit-mock-objects": "2.3.1",
34
- "symfony/yaml": "~2.1"
35
- },
36
- "suggest": {
37
- "doctrine/cache": "Adds support for caching of credentials and responses",
38
- "ext-apc": "Allows service description opcode caching, request and response caching, and credentials caching",
39
- "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages",
40
- "monolog/monolog": "Adds support for logging HTTP requests and responses",
41
- "symfony/yaml": "Eases the ability to write manifests for creating jobs in AWS Import/Export"
42
- },
43
- "type": "library",
44
- "autoload": {
45
- "psr-0": {
46
- "Aws": "src/"
47
- }
48
- },
49
- "notification-url": "https://packagist.org/downloads/",
50
- "license": [
51
- "Apache-2.0"
52
- ],
53
- "authors": [
54
- {
55
- "name": "Amazon Web Services",
56
- "homepage": "http://aws.amazon.com"
57
- }
58
- ],
59
- "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project",
60
- "homepage": "http://aws.amazon.com/sdkforphp",
61
- "keywords": [
62
- "amazon",
63
- "aws",
64
- "cloud",
65
- "dynamodb",
66
- "ec2",
67
- "glacier",
68
- "s3",
69
- "sdk"
70
- ],
71
- "time": "2016-05-03 17:42:24"
72
- },
73
- {
74
- "name": "eher/oauth",
75
- "version": "1.0.7",
76
- "source": {
77
- "type": "git",
78
- "url": "https://github.com/EHER/OAuth.git",
79
- "reference": "935c1f7709d1c1457de9e250d0e5f29cac06e507"
80
- },
81
- "dist": {
82
- "type": "zip",
83
- "url": "https://api.github.com/repos/EHER/OAuth/zipball/935c1f7709d1c1457de9e250d0e5f29cac06e507",
84
- "reference": "935c1f7709d1c1457de9e250d0e5f29cac06e507",
85
- "shasum": ""
86
- },
87
- "require": {
88
- "php": ">=5.3.0"
89
- },
90
- "require-dev": {
91
- "eher/phpunit": "1.6"
92
- },
93
- "type": "library",
94
- "autoload": {
95
- "psr-0": {
96
- "Eher\\OAuth": "src"
97
- }
98
- },
99
- "notification-url": "https://packagist.org/downloads/",
100
- "license": [
101
- "BSD-3-Clause"
102
- ],
103
- "description": "OAuth 1 PHP Library",
104
- "time": "2012-12-13 23:48:10"
105
- },
106
- {
107
- "name": "guzzle/guzzle",
108
- "version": "v3.9.3",
109
- "source": {
110
- "type": "git",
111
- "url": "https://github.com/guzzle/guzzle3.git",
112
- "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9"
113
- },
114
- "dist": {
115
- "type": "zip",
116
- "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/0645b70d953bc1c067bbc8d5bc53194706b628d9",
117
- "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9",
118
- "shasum": ""
119
- },
120
- "require": {
121
- "ext-curl": "*",
122
- "php": ">=5.3.3",
123
- "symfony/event-dispatcher": "~2.1"
124
- },
125
- "replace": {
126
- "guzzle/batch": "self.version",
127
- "guzzle/cache": "self.version",
128
- "guzzle/common": "self.version",
129
- "guzzle/http": "self.version",
130
- "guzzle/inflection": "self.version",
131
- "guzzle/iterator": "self.version",
132
- "guzzle/log": "self.version",
133
- "guzzle/parser": "self.version",
134
- "guzzle/plugin": "self.version",
135
- "guzzle/plugin-async": "self.version",
136
- "guzzle/plugin-backoff": "self.version",
137
- "guzzle/plugin-cache": "self.version",
138
- "guzzle/plugin-cookie": "self.version",
139
- "guzzle/plugin-curlauth": "self.version",
140
- "guzzle/plugin-error-response": "self.version",
141
- "guzzle/plugin-history": "self.version",
142
- "guzzle/plugin-log": "self.version",
143
- "guzzle/plugin-md5": "self.version",
144
- "guzzle/plugin-mock": "self.version",
145
- "guzzle/plugin-oauth": "self.version",
146
- "guzzle/service": "self.version",
147
- "guzzle/stream": "self.version"
148
- },
149
- "require-dev": {
150
- "doctrine/cache": "~1.3",
151
- "monolog/monolog": "~1.0",
152
- "phpunit/phpunit": "3.7.*",
153
- "psr/log": "~1.0",
154
- "symfony/class-loader": "~2.1",
155
- "zendframework/zend-cache": "2.*,<2.3",
156
- "zendframework/zend-log": "2.*,<2.3"
157
- },
158
- "suggest": {
159
- "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated."
160
- },
161
- "type": "library",
162
- "extra": {
163
- "branch-alias": {
164
- "dev-master": "3.9-dev"
165
- }
166
- },
167
- "autoload": {
168
- "psr-0": {
169
- "Guzzle": "src/",
170
- "Guzzle\\Tests": "tests/"
171
- }
172
- },
173
- "notification-url": "https://packagist.org/downloads/",
174
- "license": [
175
- "MIT"
176
- ],
177
- "authors": [
178
- {
179
- "name": "Michael Dowling",
180
- "email": "mtdowling@gmail.com",
181
- "homepage": "https://github.com/mtdowling"
182
- },
183
- {
184
- "name": "Guzzle Community",
185
- "homepage": "https://github.com/guzzle/guzzle/contributors"
186
- }
187
- ],
188
- "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle",
189
- "homepage": "http://guzzlephp.org/",
190
- "keywords": [
191
- "client",
192
- "curl",
193
- "framework",
194
- "http",
195
- "http client",
196
- "rest",
197
- "web service"
198
- ],
199
- "time": "2015-03-18 18:23:50"
200
- },
201
- {
202
- "name": "psr/log",
203
- "version": "1.0.0",
204
- "source": {
205
- "type": "git",
206
- "url": "https://github.com/php-fig/log.git",
207
- "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
208
- },
209
- "dist": {
210
- "type": "zip",
211
- "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
212
- "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
213
- "shasum": ""
214
- },
215
- "type": "library",
216
- "autoload": {
217
- "psr-0": {
218
- "Psr\\Log\\": ""
219
- }
220
- },
221
- "notification-url": "https://packagist.org/downloads/",
222
- "license": [
223
- "MIT"
224
- ],
225
- "authors": [
226
- {
227
- "name": "PHP-FIG",
228
- "homepage": "http://www.php-fig.org/"
229
- }
230
- ],
231
- "description": "Common interface for logging libraries",
232
- "keywords": [
233
- "log",
234
- "psr",
235
- "psr-3"
236
- ],
237
- "time": "2012-12-21 11:40:51"
238
- },
239
- {
240
- "name": "rackspace/php-opencloud",
241
- "version": "v1.12.2",
242
- "source": {
243
- "type": "git",
244
- "url": "https://github.com/rackspace/php-opencloud.git",
245
- "reference": "9c0ade232ddd1ae23994349406171ffea1127b5d"
246
- },
247
- "dist": {
248
- "type": "zip",
249
- "url": "https://api.github.com/repos/rackspace/php-opencloud/zipball/9c0ade232ddd1ae23994349406171ffea1127b5d",
250
- "reference": "9c0ade232ddd1ae23994349406171ffea1127b5d",
251
- "shasum": ""
252
- },
253
- "require": {
254
- "guzzle/guzzle": "~3.8",
255
- "php": ">=5.3.3",
256
- "psr/log": "~1.0"
257
- },
258
- "require-dev": {
259
- "apigen/apigen": "~2.8",
260
- "fabpot/php-cs-fixer": "1.0.*@dev",
261
- "jakub-onderka/php-parallel-lint": "0.*",
262
- "phpunit/phpunit": "4.3.*",
263
- "satooshi/php-coveralls": "0.6.*@dev"
264
- },
265
- "type": "library",
266
- "autoload": {
267
- "psr-0": {
268
- "OpenCloud": [
269
- "lib/",
270
- "tests/"
271
- ]
272
- }
273
- },
274
- "notification-url": "https://packagist.org/downloads/",
275
- "license": [
276
- "Apache-2.0"
277
- ],
278
- "authors": [
279
- {
280
- "name": "Glen Campbell",
281
- "email": "glen.campbell@rackspace.com"
282
- },
283
- {
284
- "name": "Jamie Hannaford",
285
- "email": "jamie.hannaford@rackspace.com",
286
- "homepage": "https://github.com/jamiehannaford"
287
- },
288
- {
289
- "name": "Shaunak Kashyap",
290
- "email": "shaunak.kashyap@rackspace.com",
291
- "homepage": "https://github.com/ycombinator"
292
- }
293
- ],
294
- "description": "PHP SDK for Rackspace/OpenStack APIs",
295
- "keywords": [
296
- "Openstack",
297
- "nova",
298
- "opencloud",
299
- "rackspace",
300
- "swift"
301
- ],
302
- "time": "2015-03-16 23:57:58"
303
- },
304
- {
305
- "name": "symfony/event-dispatcher",
306
- "version": "v2.8.5",
307
- "source": {
308
- "type": "git",
309
- "url": "https://github.com/symfony/event-dispatcher.git",
310
- "reference": "81c4c51f7fd6d0d40961bd53dd60cade32db6ed6"
311
- },
312
- "dist": {
313
- "type": "zip",
314
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/81c4c51f7fd6d0d40961bd53dd60cade32db6ed6",
315
- "reference": "81c4c51f7fd6d0d40961bd53dd60cade32db6ed6",
316
- "shasum": ""
317
- },
318
- "require": {
319
- "php": ">=5.3.9"
320
- },
321
- "require-dev": {
322
- "psr/log": "~1.0",
323
- "symfony/config": "~2.0,>=2.0.5|~3.0.0",
324
- "symfony/dependency-injection": "~2.6|~3.0.0",
325
- "symfony/expression-language": "~2.6|~3.0.0",
326
- "symfony/stopwatch": "~2.3|~3.0.0"
327
- },
328
- "suggest": {
329
- "symfony/dependency-injection": "",
330
- "symfony/http-kernel": ""
331
- },
332
- "type": "library",
333
- "extra": {
334
- "branch-alias": {
335
- "dev-master": "2.8-dev"
336
- }
337
- },
338
- "autoload": {
339
- "psr-4": {
340
- "Symfony\\Component\\EventDispatcher\\": ""
341
- },
342
- "exclude-from-classmap": [
343
- "/Tests/"
344
- ]
345
- },
346
- "notification-url": "https://packagist.org/downloads/",
347
- "license": [
348
- "MIT"
349
- ],
350
- "authors": [
351
- {
352
- "name": "Fabien Potencier",
353
- "email": "fabien@symfony.com"
354
- },
355
- {
356
- "name": "Symfony Community",
357
- "homepage": "https://symfony.com/contributors"
358
- }
359
- ],
360
- "description": "Symfony EventDispatcher Component",
361
- "homepage": "https://symfony.com",
362
- "time": "2016-04-05 16:36:54"
363
- }
364
- ],
365
- "packages-dev": [],
366
- "aliases": [],
367
- "minimum-stability": "stable",
368
- "stability-flags": [],
369
- "prefer-stable": false,
370
- "prefer-lowest": false,
371
- "platform": [],
372
- "platform-dev": []
373
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
css/admin.css CHANGED
@@ -1,239 +1,240 @@
1
  /* General things used by many things */
2
 
3
- /* Widths and sizing */
4
- .max-width-600 {
5
- max-width: 600px;
6
- }
7
-
8
- .width-900 {
9
- width: 900px;
10
- }
11
-
12
- .width-80 {
13
- width: 80%;
14
- }
15
-
16
- /* End widths and sizing */
17
-
18
- /* Font styling */
19
- .no-decoration {
20
- text-decoration: none;
21
- }
22
-
23
- .bold {
24
- font-weight: bold;
25
- }
26
- /* End font styling */
27
-
28
- /* Alignment */
29
- .center-align-td {
30
- text-align: center;
31
- }
32
- /* End of Alignment */
33
-
34
- /* Padding */
35
- .remove-padding {
36
- padding: 0 !important;
37
- }
38
- /* End of padding */
39
-
40
- .updraft-text-center {
41
- text-align: center;
42
- }
43
-
44
- .autobackup {
45
- padding: 6px;
46
- margin: 8px 0px;
47
- }
48
 
49
- ul .disc {
50
- list-style: disc inside;
51
- }
52
 
53
- .dashicons-log-fix {
54
- display: inherit;
55
- }
56
-
57
- /* Input boxes */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
 
59
- input {
60
- border-radius: 4px;
61
- line-height: 1.42;
62
- border: 1px solid #ccc;
63
- height: 27px;
64
- padding: 2px 6px;
65
- color: #555;
66
- }
67
 
68
- input[type="text"] {
69
- font-size: 14px;
70
- }
71
 
72
- input[type="number"] {
73
- height: 31px;
74
- }
 
75
 
76
- select {
77
- border-radius: 4px;
78
- }
 
 
 
 
79
 
80
- /* End input boxes */
81
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
 
83
  /* Main Buttons */
84
- .main-dashboard-buttons {
85
- border-width: 4px;
86
- border-radius: 12px;
87
- letter-spacing: 0px;
88
- font-size: 17px;
89
- font-weight: bold;
90
- padding-left: 0.7em;
91
- padding-right: 2em;
92
- padding: 0.3em 1em;
93
- line-height: 1.7em;
94
- background: transparent;
95
- position: relative;
96
- border: 2px solid;
97
- transition: all 0.2s;
98
- vertical-align: baseline;
99
- box-sizing: border-box;
100
- text-align: center;
101
- line-height: 1.3em;
102
- margin-left: .3em;
103
- text-transform: none;
104
- line-height: 1;
105
- text-decoration: none;
106
- }
107
 
108
- .button-restore {
109
- border-color: RGB(98, 158, 192);
110
- color: RGB(98, 158, 192);
111
- }
112
-
113
- .dashboard-main-sizing {
114
- border-width: 4px;
115
- width: 190px;
116
- line-height: 1.7em;
117
- }
118
 
119
- .button-restore:hover, .button-migrate:hover, .button-backup:hover,
120
- .button-view-log:hover, .button-mass-selectors:hover,
121
- .button-delete:hover, .button-entity-backup:hover, .udp-button-primary:hover {
122
- border-color: #df6926;
123
- color: #df6926;
124
- }
125
 
126
- .button-migrate {
127
- color: rgb(238, 169, 32);
128
- border-color: rgb(238, 169, 32);
129
- }
 
 
130
 
131
- .button-backup {
132
- border-color: #84CA1B;
133
- color: #84CA1B;
134
- }
135
-
136
- .existing-backups-buttons {
137
- font-size: 11px;
138
- line-height: 1.4em;
139
- border-width: 3px;
140
- }
141
-
142
- .existing-backups-restore-buttons {
143
- font-size: 11px;
144
- line-height: 1.4em;
145
- border-width: 3px;
146
- }
147
-
148
- .button-delete {
149
- color: #E23900;
150
- border-color: #E23900;
151
- font-size: 14px;
152
- line-height: 1.4em;
153
- border-width: 2px;
154
- margin-right: 10px;
155
- }
156
-
157
- .button-view-log, .button-mass-selectors {
158
- color: darkgrey;
159
- border-color: darkgrey;
160
- font-size: 14px;
161
- line-height: 1.4em;
162
- border-width: 2px;
163
- margin-top: -1px;
164
- }
165
-
166
- .button-view-log {
167
- width: 120px;
168
- }
169
-
170
- .button-existing-restore {
171
- font-size: 14px;
172
- line-height: 1.4em;
173
- border-width: 2px;
174
- width: 110px;
175
- }
176
-
177
- .main-restore {
178
- margin-right: 3%;
179
- margin-left: 3%;
180
- }
181
-
182
- .button-entity-backup {
183
- color: #555555;
184
- border-color: #555555;
185
- font-size: 11px;
186
- line-height: 1.4em;
187
- border-width: 2px;
188
- margin-right: 5px;
189
- }
190
-
191
- .button-select-all {
192
- width: 122px;
193
- }
194
-
195
- .button-deselect {
196
- width: 92px;
197
- }
198
-
199
- #ud_massactions > .display-flex > .mass-selectors-margins {
200
- margin-right: -4px;
201
- }
202
-
203
- .udp-button-primary {
204
- border-width: 4px;
205
- color: #0073AA;
206
- border-color: #0073AA;
207
- font-size: 14px;
208
- height: 40px;
209
- }
210
-
211
- #ud_massactions .button-delete {
212
- margin-right: 0px;
213
- }
214
-
215
- .stored_local {
216
- border-radius: 5px;
217
- background-color: #007FE7;
218
- padding: 3px 5px 5px 5px;
219
- color: #ffffff;
220
- font-size: 75%;
221
- }
222
-
223
- .form-table td.updraft_existingbackup_date {
224
- padding-bottom: 5px;
225
- }
226
-
227
- .stored_icon {
228
- height: 1.3em;
229
- position: relative;
230
- top: 0.2em;
231
- }
232
-
233
- .backup_date_label .clear-right {
234
- clear: right;
235
- }
236
- /* End Main Buttons */
 
 
 
 
 
 
237
 
238
  /* End of common elements */
239
 
@@ -250,10 +251,10 @@ h3 .thank-you {
250
 
251
  .ws_advert {
252
  max-width: 800px;
253
- font-size:140%;
254
  line-height: 140%;
255
- padding:14px;
256
- clear:left;
257
  }
258
 
259
  .dismiss-dash-notice {
@@ -263,24 +264,24 @@ h3 .thank-you {
263
  }
264
 
265
  #updraft_report_cell .updraft_reportbox {
266
- padding:8px;
267
  margin: 8px 0;
268
  border: 1px dotted;
269
- clear:left;
270
- float:left;
271
  }
272
 
273
  #updraft_report_cell button.updraft_reportbox_delete {
274
  font-size: 50%;
275
- float:right;
276
- padding:0 3px;
277
  position: relative;
278
  top: -4px;
279
  left: 4px;
280
  }
281
 
282
  #updraft-navtab-settings-content .updraft-test-button {
283
- font-size:18px !important;
284
  }
285
 
286
  #updraft_report_cell .updraft_report_checkbox {
@@ -292,356 +293,387 @@ h3 .thank-you {
292
  }
293
 
294
  #updraft_report_cell .updraft_report_another_p {
295
- clear:left;
296
  }
297
 
298
  /* Taken straight from admin.php */
299
 
300
- #updraft-navtab-settings-content table.form-table p {
301
- max-width: 700px;
302
- }
303
 
304
- #updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected {
305
- background-color: #ccc;
306
- }
307
 
308
- .updraft_settings_sectionheading {
309
- display: none;
310
- }
311
 
312
- .updraft-backupentitybutton-disabled {
313
- background-color: transparent;
314
- border: none;
315
- color: #0074a2;
316
- text-decoration: underline;
317
- cursor: pointer;
318
- clear: none;
319
- float: left;
320
- }
321
- .updraft-backupentitybutton {
322
- margin-left: 8px;
323
- }
324
- .updraft-bigbutton {
325
- padding: 2px 0px !important;
326
- margin-right: 14px !important;
327
- font-size:22px !important;
328
- min-height: 32px;
329
- min-width: 180px;
330
- }
331
 
332
- .updraft_debugrow th {
333
- float: right;
334
- text-align: right;
335
- font-weight: bold;
336
- padding-right: 8px;
337
- min-width: 140px;
338
- }
339
 
340
- .updraft_debugrow td {
341
- min-width: 300px;
342
- vertical-align: bottom;
343
- }
344
-
345
- #updraft_webdav_host_error {
346
- color: red;
347
- }
348
 
349
- /* jstree styles */
 
 
 
 
 
 
350
 
351
- /* these styles hide the dots from the parent but keep the arrows */
352
- #updraft_zip_files_jstree .jstree-container-ul > .jstree-node,
353
- #updraft_more_files_jstree .jstree-container-ul > .jstree-node {
354
- background:transparent;
355
- }
356
 
357
- #updraft_zip_files_jstree .jstree-container-ul > .jstree-open > .jstree-ocl,
358
- #updraft_more_files_jstree .jstree-container-ul > .jstree-open > .jstree-ocl {
359
- background-position:-36px -4px;
360
- }
361
 
362
- #updraft_zip_files_jstree .jstree-container-ul > .jstree-closed> .jstree-ocl,
363
- #updraft_more_files_jstree .jstree-container-ul > .jstree-closed> .jstree-ocl {
364
- background-position:-4px -4px;
365
- }
366
 
367
- #updraft_zip_files_jstree .jstree-container-ul > .jstree-leaf> .jstree-ocl,
368
- #updraft_more_files_jstree .jstree-container-ul > .jstree-leaf> .jstree-ocl {
369
- background:transparent;
370
- }
371
-
372
- /* zip browser jstree styles */
373
- #updraft_zip_files_container {
374
- position: relative;
375
- height: 450px;
376
- overflow: none;
377
- }
378
 
379
- #updraft_zip_info_container {
380
- position: relative;
381
- height: auto;
382
- width: 100%;
383
- border: 1px dotted;
384
- margin-bottom: 5px;
385
- }
386
 
387
- #updraft_zip_info_container p {
388
- margin: 1px;
389
- padding-left: 10px;
390
- font-size: 14px;
391
- }
392
 
393
- #updraft_zip_download_item {
394
- display: none;
395
- color: #0073aa;
396
- padding-left: 10px;
397
- }
398
-
399
- #updraft_zip_download_notice {
400
- padding-left: 10px;
401
- }
402
 
403
- #updraft_zip_files_jstree_container {
404
- position: relative;
405
- border: 1px dotted;
406
- height: 80%;
407
- width: 100%;
408
- overflow: auto;
409
- }
410
 
411
- /* More files jstree styles */
412
- #updraft_more_files_container {
413
- position: relative;
414
- display: none;
415
- height:300px;
416
- width:100%;
417
- border: 1px dotted;
418
- margin-bottom: 5px;
419
- }
420
 
421
- #updraft_jstree_buttons {
422
- position: absolute;
423
- top: 0;
424
- right: 0;
425
- }
426
 
427
- #updraft_jstree_container {
428
- height:100%;
429
- width:100%;
430
- overflow: auto;
431
- }
432
 
433
- #updraft_more_files_container button {
434
- height:22px;
435
- line-height: 20px;
436
- }
437
 
438
- #updraft_jstree_confirm, #updraft_jstree_cancel {
439
- display: none;
440
- }
441
-
442
- .updraftplus-morefiles-row-delete {
443
- cursor: pointer;
444
- color: red;
445
- font-size: 23px !important;
446
- }
447
 
448
- .updraftplus-morefiles-row-edit {
449
- cursor: pointer;
450
- font-size: 24px !important;
451
- }
 
 
 
 
 
452
 
453
- #updraft-wrap .form-table th {
454
- width: 230px;
455
- }
456
- .updraftplus-remove {
457
- background-color: #c00000;
458
- border: 1px solid #c00000;
459
- height: 22px;
460
- padding: 4px 3px 0;
461
- margin-right: 6px;
462
- }
463
- .updraft-viewlogdiv form {
464
- margin: 0;
465
- padding: 0;
466
- }
467
- .updraft-viewlogdiv {
468
- background-color: #ffffff;
469
- color: #000000;
470
- border: 1px solid #000000;
471
- height: 26px;
472
- padding: 0px;
473
- margin: 0 4px 0 0;
474
- border-radius: 3px;
475
- float: left;
476
- }
477
- .updraft-viewlogdiv input, .updraft-viewlogdiv a {
478
- border: none;
479
- background-color: transparent;
480
- color: #000;
481
- margin:0px;
482
- padding: 3px 4px;
483
- font-size: 16px;
484
- line-height: 26px;
485
- }
486
- .updraft-viewlogdiv:hover {
487
- background-color: #000000;
488
- color: #ffffff;
489
- border: 1px solid #ffffff;
490
- cursor: pointer;
491
- }
492
- .updraft-viewlogdiv input:hover, .updraft-viewlogdiv a:hover {
493
- color: #ffffff;
494
- cursor: pointer;
495
- }
496
- .updraftplus-remove a {
497
- color: white;
498
- padding: 4px 4px 0px;
499
- }
500
- .updraftplus-remove:hover {
501
- background-color: white;
502
- border: 1px solid #c00000;
503
- }
504
- .updraftplus-remove a:hover {
505
- color: #c00000;
506
- }
507
- .drag-drop #drag-drop-area2 {
508
- border: 4px dashed #ddd;
509
- height: 200px;
510
- }
511
- #drag-drop-area2 .drag-drop-inside {
512
- margin: 36px auto 0;
513
- width: 350px;
514
- }
515
- #filelist, #filelist2 {
516
- width: 100%;
517
- }
518
- #filelist .file, #filelist2 .file, .ud_downloadstatus .file, #ud_downloadstatus2 .file {
519
- padding: 5px;
520
- background: #ececec;
521
- border: solid 1px #ccc;
522
- margin: 4px 0;
523
- }
524
 
525
- ul.updraft_premium_description_list {
526
- list-style: disc inside;
527
- }
528
- ul.updraft_premium_description_list li {
529
- display: inline;
530
- }
531
- ul.updraft_premium_description_list li::after {
532
- content: " | ";
533
- }
534
- ul.updraft_premium_description_list li.last::after {
535
- content: "";
536
- }
537
- .updraft_feature_cell{
538
- background-color: #F7D9C9 !important;
539
- padding: 5px 10px 5px 10px;
540
- }
541
- .updraft_feat_table, .updraft_feat_th, .updraft_feat_table td{
542
- border: 1px solid black;
543
- border-collapse: collapse;
544
- font-size: 120%;
545
- background-color: white;
546
- text-align: center;
547
- }
548
- .updraft_feat_table p {
549
- padding: 0px 10px;
550
- margin: 5px 0px;
551
- font-size: 16px;
552
- }
553
- .updraft_feat_table h4 {
554
- margin: 5px 0px;
555
- }
556
- .updraft_feat_table .dashicons {
557
- width: 25px;
558
- height: 25px;
559
- font-size: 25px;
560
- line-height: 1;
561
- }
562
- .updraft_feat_table .dashicons-yes, .updraft_feat_table .updraft-yes {
563
- color:green;
564
- }
565
 
566
- .updraft_feat_table .dashicons-no-alt, .updraft_feat_table .updraft-no {
567
- color:red;
568
- }
569
- .updraft_tick_cell{
570
- text-align: center;
571
- }
572
- .updraft_tick_cell img{
573
- margin: 4px 0;
574
- height: 24px;
575
- }
576
 
577
- #filelist .fileprogress, #filelist2 .fileprogress, .ud_downloadstatus .dlfileprogress, #ud_downloadstatus2 .dlfileprogress {
578
- width: 0%;
579
- background: #f6a828;
580
- height: 5px;
581
- }
582
- .ud_downloadstatus .raw, #ud_downloadstatus2 .raw {
583
- margin-top: 8px;
584
- clear:left;
585
- }
586
- .ud_downloadstatus .file, #ud_downloadstatus2 .file {
587
- margin-top: 8px;
588
- }
589
- tr.updraftplusmethod h3 {
590
- margin: 0px;
591
- }
592
- #updraft_retain_db_rules .updraft_retain_rules_delete, #updraft_retain_files_rules .updraft_retain_rules_delete {
593
- cursor: pointer;
594
- color: red;
595
- font-size: 120%;
596
- font-weight: bold;
597
- border: 0px;
598
- border-radius: 3px;
599
- padding: 2px;
600
- margin: 0 6px;
601
- }
602
- #updraft_retain_db_rules .updraft_retain_rules_delete:hover, #updraft_retain_files_rules .updraft_retain_rules_delete:hover {
603
- cursor: pointer;
604
- color: white;
605
- background: red;
606
- }
607
 
608
- #updraft_backup_started {
609
- max-width: 800px;
610
- font-size: 140%;
611
- line-height: 140%;
612
- padding: 14px;
613
- clear:left;
614
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
615
 
616
  .udp-premium-image {
617
- display: none;
618
-
 
619
  }
620
 
621
- @media screen and (min-width: 720px) {
622
- .udp-premium-image {
623
- display: block;
624
- float: left;
625
- padding-right: 5px;
626
- }
627
- }
628
 
629
  /* End stuff already in admin.php */
630
-
631
- #plupload-upload-ui2 {
632
  width: 80%;
633
  }
634
 
635
  .backup-restored {
636
- padding: 8px;
637
  }
638
 
639
- .backup-restored span {
640
- font-size: 120%
641
  }
642
 
643
- .memory-limit {
644
- padding:8px;
645
  }
646
 
647
  .updraft_list_errors {
@@ -686,13 +718,13 @@ h3 .thank-you {
686
 
687
  .not-scheduled {
688
  vertical-align: top !important;
689
- margin: 0px !important;
690
  padding: 0px !important;
691
  }
692
 
693
- .next-backup .updraft_scheduled {
694
  /* width: 124px;*/
695
- margin: 0px;
696
  padding: 2px 4px 2px 0px;
697
  }
698
 
@@ -701,10 +733,10 @@ h3 .thank-you {
701
  }
702
 
703
  .next-backup .updraft_all-files {
704
- color: blue;
705
- margin: 0px;
706
- padding: 2px 0px 0px;
707
- }
708
 
709
  .multisite-advert-width {
710
  width: 800px;
@@ -731,8 +763,8 @@ h3 .thank-you {
731
  }
732
 
733
  #backupnow_includefiles_moreoptions, #backupnow_database_moreoptions {
734
- margin: 4px 16px 6px;
735
- border: 1px dotted;
736
  padding: 6px 10px;
737
  }
738
 
@@ -741,7 +773,7 @@ h3 .thank-you {
741
  overflow: auto;
742
  }
743
 
744
- .form-table #updraft_activejobsrow .minimum-height{
745
  min-height: 100px;
746
  }
747
 
@@ -782,7 +814,7 @@ h3 .thank-you {
782
  }
783
 
784
  #updraft-plupload-modal {
785
- width: 75%;
786
  margin: 16px;
787
  margin-left: 100px;
788
  }
@@ -797,25 +829,25 @@ h3 .thank-you {
797
 
798
  .ud_downloadstatus {
799
  padding: 10px;
800
- background: #f1f1f1;
801
  }
802
 
803
  #ud_massactions {
804
- padding: 14px;
805
- position: fixed;
806
- right: 25%;
807
- top: 25%;
808
- border: 2px solid;
809
- border-radius: 4px;
810
  background: rgb(241, 241, 241);
811
  float: right;
812
  }
813
 
814
  #ud_massactions .updraftplus-remove {
815
- clear: left;
816
- font-size: 16px;
817
- text-align: center;
818
- border-radius: 4px;
819
  margin-top: 4px;
820
  }
821
 
@@ -824,21 +856,21 @@ h3 .thank-you {
824
  }
825
 
826
  #ud_massactions .updraft-viewlogdiv {
827
- font-size: 16px;
828
- text-align:center;
829
- border-radius: 4px;
830
  margin-top: 4px;
831
  }
832
 
833
  #ud_massactions .updraft-viewlogdiv a {
834
- text-decoration: none;
835
- position: relative;
836
  top: 3px;
837
  }
838
 
839
  #ud_massactions .updraft-viewlogdiv a {
840
- text-decoration: none;
841
- position: relative;
842
  top: 3px;
843
  }
844
 
@@ -860,7 +892,7 @@ h3 .thank-you {
860
  }
861
 
862
  #updraft_delete_form p {
863
- margin-top: 3px;
864
  padding-top: 0;
865
  }
866
 
@@ -869,18 +901,18 @@ h3 .thank-you {
869
  }
870
 
871
  #updraft_restorer_dboptions {
872
- padding: 12px;
873
- margin: 8px 0 4px;
874
  border: dashed 1px;
875
  }
876
 
877
  #updraft_restorer_dboptions h4 {
878
- margin: 0px 0px 6px;
879
- padding:0px;
880
  }
881
 
882
  .updraft_debugrow th {
883
- vertical-align: top;
884
  padding-top: 6px;
885
  }
886
 
@@ -889,7 +921,7 @@ h3 .thank-you {
889
  }
890
 
891
  .expertmode .call-wp-action {
892
- width: 300px;
893
  height: 22px;
894
  }
895
 
@@ -920,9 +952,9 @@ h3 .thank-you {
920
  }
921
 
922
  .job-id {
923
- min-width: 480px;
924
- margin-top: 4px;
925
- padding: 8px;
926
  border: 1px solid;
927
  clear: left;
928
  float: left;
@@ -933,23 +965,23 @@ h3 .thank-you {
933
  }
934
 
935
  .updraft_percentage {
936
- z-index:-1;
937
- position: absolute;
938
- left: 0px;
939
- top: 0px;
940
- text-align: center;
941
- background-color: #f6a828;
942
  }
943
 
944
  .curstage {
945
- border-radius: 4px;
946
- margin-top: 8px;
947
  padding-top: 4px;
948
- border: 1px solid #aaa;
949
- width: 100%;
950
- height: 22px;
951
- position: relative;
952
- text-align: center;
953
  font-style: italic;
954
  }
955
 
@@ -962,7 +994,7 @@ h3 .thank-you {
962
  }
963
 
964
  #updraft-manualdecrypt-modal {
965
- width: 85%;
966
  margin: 6px;
967
  margin-left: 100px;
968
  }
@@ -973,7 +1005,7 @@ h3 .thank-you {
973
  }
974
 
975
  .double-warning {
976
- border:1px solid;
977
  padding: 6px;
978
  }
979
 
@@ -989,7 +1021,7 @@ h3 .thank-you {
989
  }
990
 
991
  .existing-backups-table {
992
- margin-top: 20px;
993
  margin-left: 20px;
994
  width: 80%;
995
  }
@@ -1015,28 +1047,28 @@ h3 .thank-you {
1015
  padding: 0 0 10px 15px;
1016
  }
1017
 
1018
- .existing-date {
1019
- -webkit-box-sizing: border-box;
1020
- -moz-box-sizing: border-box;
1021
- box-sizing: border-box;
1022
  max-width: 140px;
1023
  width: 25%;
1024
  }
1025
 
1026
  .line-break-tr {
1027
- height: 2px;
1028
- padding: 1px;
1029
  margin: 0px;
1030
  }
1031
 
1032
  .line-break-td {
1033
- margin: 0;
1034
  padding: 0;
1035
  }
1036
 
1037
  .td-line-color {
1038
- height: 2px;
1039
- background-color: #888888;
1040
  }
1041
 
1042
  .raw-backup {
@@ -1044,24 +1076,24 @@ h3 .thank-you {
1044
  }
1045
 
1046
  .existing-backups-actions {
1047
- padding: 1px;
1048
- margin:0px;
1049
  }
1050
 
1051
  .existing-backups-border {
1052
- height: 2px;
1053
- padding: 1px;
1054
  margin: 0px;
1055
  }
1056
 
1057
  .existing-backups-border > td {
1058
- margin: 0;
1059
  padding: 0;
1060
  }
1061
 
1062
  .existing-backups-border > div {
1063
- height: 2px;
1064
- background-color: #aaaaaa;
1065
  }
1066
 
1067
  .updraft_existing_backup_date {
@@ -1075,8 +1107,8 @@ h3 .thank-you {
1075
  }
1076
 
1077
  .updraftplus-remove {
1078
- font-size: 16px;
1079
- text-align: center;
1080
  border-radius: 4px;
1081
  }
1082
 
@@ -1098,11 +1130,11 @@ h3 .thank-you {
1098
 
1099
  .end-of-table-div {
1100
  height: 2px;
1101
- background-color: #aaaaaa;
1102
  }
1103
 
1104
  .last-backup-job {
1105
- padding-top: 3% !important;
1106
  }
1107
 
1108
  .line-height-03 {
@@ -1118,7 +1150,7 @@ h3 .thank-you {
1118
  }
1119
 
1120
  #updraft_diskspaceused {
1121
- color: #df6926;
1122
  }
1123
 
1124
  .updraft_premium_description_list {
@@ -1139,7 +1171,7 @@ h3 .thank-you {
1139
  }
1140
 
1141
  .updraft_all-files {
1142
- color: #df6926;
1143
  }
1144
 
1145
  /* Time + scheduling add-on*/
@@ -1187,7 +1219,7 @@ h3 .thank-you {
1187
  /* Main Header */
1188
 
1189
  .main-header {
1190
- background-color: #df6926;
1191
  height: 200px;
1192
  width: 100%;
1193
  }
@@ -1252,7 +1284,7 @@ h3 .thank-you {
1252
  .updraftvault-buy {
1253
  width: 225px;
1254
  height: 225px;
1255
- border: 2px solid #777777;
1256
  display: inline-table;
1257
  margin: 0 auto;
1258
  margin-right: 50px;
@@ -1270,7 +1302,6 @@ h3 .thank-you {
1270
  border-width: 4px !important;
1271
  }
1272
 
1273
-
1274
  .updraftplus-vault-cta > .vault-options > .center-vault > p {
1275
  font-size: 16px;
1276
  }
@@ -1283,7 +1314,7 @@ h3 .thank-you {
1283
 
1284
  .updraftvault-buy hr {
1285
  height: 2px;
1286
- background-color: #777777;
1287
  margin-top: 18px;
1288
  }
1289
 
@@ -1303,9 +1334,9 @@ h3 .thank-you {
1303
 
1304
  .updraftvault-buy .button-buy-vault {
1305
  font-size: 12px;
1306
- color: #df6926;
1307
- border-color: #df6926;
1308
- border-width: 2px !important;
1309
  position: absolute;
1310
  right: 29%;
1311
  bottom: 2%;
@@ -1349,7 +1380,7 @@ h3 .thank-you {
1349
  .premium-addons .premium-addon-div {
1350
  width: 200px;
1351
  height: 250px;
1352
- border: 2px solid #777777;
1353
  display: inline-table;
1354
  margin: 0 auto;
1355
  margin-right: 25px;
@@ -1382,11 +1413,12 @@ h3 .thank-you {
1382
  width: 75%;
1383
  height: 24px;
1384
  }
 
1385
  .button-purchase {
1386
  font-size: 12px;
1387
- color: #df6926;
1388
- border-color: #df6926;
1389
- border-width: 2px !important;
1390
  position: absolute;
1391
  right: 25%;
1392
  bottom: 2%;
@@ -1399,7 +1431,7 @@ h3 .thank-you {
1399
 
1400
  .premium-addons .premium-addon-div hr {
1401
  height: 2px;
1402
- background-color: #777777;
1403
  margin-top: 18px;
1404
  }
1405
 
@@ -1407,7 +1439,7 @@ h3 .thank-you {
1407
  font-style: italic;
1408
  }
1409
 
1410
- .addon-list > .premium-addon-div > .onedrive-fix,
1411
  .addon-list > .premium-addon-div > .azure-logo {
1412
  margin-top: 33px;
1413
  }
@@ -1436,30 +1468,32 @@ h3 .thank-you {
1436
  }
1437
 
1438
  .premium-forgotton-something .button-faq {
1439
- color: #df6926;
1440
- border-color: #df6926;
1441
  margin: 0 auto;
1442
  display: table;
1443
  }
1444
 
1445
  .premium-forgotton-something .button-faq:hover {
1446
- color: #777777;
1447
- border-color: #777777;
1448
  }
1449
 
1450
  /* End of forgotton something */
1451
 
1452
- .updraftplusmethod.updraftvault #vaultlogo { padding-left: 40px; }
 
 
1453
 
1454
  .updraftplusmethod.updraftvault .vault_primary_option {
1455
  float: left;
1456
- width:50%;
1457
- text-align:center;
1458
- padding-bottom:20px;
1459
  }
1460
 
1461
  .updraftplusmethod.updraftvault .vault_primary_option div {
1462
- clear:right;
1463
  padding-top: 20px;
1464
  }
1465
 
@@ -1467,9 +1501,13 @@ h3 .thank-you {
1467
  clear: left;
1468
  }
1469
 
1470
- .updraftplusmethod.updraftvault .padding-top-20px { padding-top: 20px; }
 
 
1471
 
1472
- .updraftplusmethod.updraftvault .padding-top-14px { padding-top: 14px; }
 
 
1473
 
1474
  .updraftplusmethod.updraftvault #updraftvault_settings_default .button-primary, .updraftplusmethod.updraftvault #updraftvault_settings_showoptions .button-primary {
1475
  font-size: 18px !important;
@@ -1477,37 +1515,45 @@ h3 .thank-you {
1477
  }
1478
 
1479
  .updraftplusmethod.updraftvault #updraftvault_showoptions, .updraftplusmethod.updraftvault #updraftvault_connect {
1480
- margin-top:8px;
1481
  }
1482
 
1483
  .updraftplusmethod.updraftvault #updraftvault_settings_connect input {
1484
- margin-right:10px;
1485
  }
1486
 
1487
- .updraftplusmethod.updraftvault #updraftvault_email { width: 280px; }
1488
- .updraftplusmethod.updraftvault #updraftvault_pass { width: 200px; }
 
1489
 
1490
- .updraftplusmethod.updraftvault #vault-is-connected { margin: 0; padding: 0; }
 
 
 
 
 
 
 
1491
 
1492
  .updraftplusmethod.updraftvault #updraftvault_settings_default p {
1493
- clear:left;
1494
  }
1495
 
1496
  .updraftplusmethod.updraftvault .vault-purchase-option {
1497
  float: left;
1498
- width:33%;
1499
- text-align:center;
1500
  padding-top: 20px;
1501
  }
1502
 
1503
  .updraftplusmethod.updraftvault .vault-purchase-option-size {
1504
  font-size: 200%;
1505
- font-weight:bold;
1506
  }
1507
 
1508
  .updraftplusmethod.updraftvault .vault-purchase-option-link {
1509
- clear:both;
1510
- font-size: 150%
1511
  }
1512
 
1513
  .updraftplusmethod.updraftvault .vault-purchase-option-or {
@@ -1535,15 +1581,15 @@ h3 .thank-you {
1535
  .advert-description {
1536
  float: left;
1537
  clear: right;
1538
- padding: 4px 10px 8px;
1539
  width: 70%;
1540
- clear:right;
1541
  vertical-align: top;
1542
  }
1543
 
1544
  .advert-btn {
1545
  display: inline-block;
1546
- min-width:10%;
1547
  vertical-align: top;
1548
  margin-bottom: 8px;
1549
  }
@@ -1558,35 +1604,34 @@ h3 .thank-you {
1558
  }
1559
 
1560
  a.btn-get-started {
1561
- background: #fff;
1562
- border: 2px solid #df6926;
1563
  border-radius: 4px;
1564
- color: #df6926;
1565
  display: inline-block;
1566
  margin-left: 10px !important;
1567
  margin-bottom: 7px !important;
1568
  font-size: 18px !important;
1569
  line-height: 20px;
1570
  min-height: 28px;
1571
- padding: 11px 10px 5px;
1572
  text-transform: uppercase;
1573
  text-decoration: none;
1574
  }
1575
 
1576
  .circle-dblarrow {
1577
- border: 1px solid #df6926;
1578
- border-radius: 100%;
1579
- display: inline-block;
1580
  font-size: 17px;
1581
  line-height: 17px;
1582
- margin-left: 5px;
1583
  width: 20px;
1584
- height: 20px;
1585
  text-align: center;
1586
  }
1587
 
1588
- @media screen and (max-width: 782px) {
1589
-
1590
  /* .advert-description {
1591
  min-width: 75%;
1592
  margin-bottom: 5px;
@@ -1598,6 +1643,7 @@ a.btn-get-started {
1598
  min-width: 100%;
1599
  }*/
1600
  }
 
1601
  /* End Automation Backup Advert by B */
1602
  /* New Responsive Pretty Advanced Settings */
1603
  .expertmode .advanced_settings_container {
@@ -1613,7 +1659,7 @@ a.btn-get-started {
1613
  .expertmode .advanced_settings_container .advanced_settings_content {
1614
  padding-top: 5px;
1615
  float: none;
1616
- width:auto;
1617
  overflow: auto;
1618
  }
1619
 
@@ -1624,6 +1670,7 @@ a.btn-get-started {
1624
  .expertmode .advanced_settings_container .advanced_settings_content .advanced_tools {
1625
  display: none;
1626
  }
 
1627
  .expertmode .advanced_settings_container .advanced_settings_content .site_info {
1628
  display: block;
1629
  }
@@ -1632,7 +1679,7 @@ a.btn-get-started {
1632
  display: inline-block;
1633
  cursor: pointer;
1634
  padding: 5px;
1635
- color: #000000;
1636
  }
1637
 
1638
  .expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_text {
@@ -1640,21 +1687,21 @@ a.btn-get-started {
1640
  }
1641
 
1642
  .expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button:hover {
1643
- background-color: #eaeaea;
1644
  }
1645
 
1646
  .expertmode .advanced_settings_container .advanced_settings_menu .active {
1647
- background-color: #3498db;
1648
- color:#ffffff;
1649
  }
1650
 
1651
  .expertmode .advanced_settings_container .advanced_settings_menu .active:hover {
1652
- background-color: #72c5fd;
1653
- color: #ffffff;
1654
  }
1655
 
1656
  .expertmode .advanced_settings_container .advanced_settings_content input#import_settings {
1657
- height:auto !important;
1658
  }
1659
 
1660
  div#updraft-wrap a {
@@ -1662,6 +1709,7 @@ div#updraft-wrap a {
1662
  }
1663
 
1664
  @media screen and (min-width: 670px) {
 
1665
  .expertmode .advanced_settings_container .advanced_settings_menu {
1666
  float: left;
1667
  width: 215px;
@@ -1677,4 +1725,5 @@ div#updraft-wrap a {
1677
  .expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button {
1678
  display: block;
1679
  }
 
1680
  }
1
  /* General things used by many things */
2
 
3
+ /* Widths and sizing */
4
+ .max-width-600 {
5
+ max-width: 600px;
6
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
 
8
+ .width-900 {
9
+ width: 900px;
10
+ }
11
 
12
+ .width-80 {
13
+ width: 80%;
14
+ }
15
+
16
+ /* End widths and sizing */
17
+
18
+ /* Font styling */
19
+ .no-decoration {
20
+ text-decoration: none;
21
+ }
22
+
23
+ .bold {
24
+ font-weight: bold;
25
+ }
26
+
27
+ /* End font styling */
28
+ /* Alignment */
29
+ .center-align-td {
30
+ text-align: center;
31
+ }
32
+
33
+ /* End of Alignment */
34
+ /* Padding */
35
+ .remove-padding {
36
+ padding: 0 !important;
37
+ }
38
 
39
+ /* End of padding */
 
 
 
 
 
 
 
40
 
41
+ .updraft-text-center {
42
+ text-align: center;
43
+ }
44
 
45
+ .autobackup {
46
+ padding: 6px;
47
+ margin: 8px 0px;
48
+ }
49
 
50
+ ul .disc {
51
+ list-style: disc inside;
52
+ }
53
+
54
+ .dashicons-log-fix {
55
+ display: inherit;
56
+ }
57
 
58
+ /* Input boxes */
59
+
60
+ input {
61
+ border-radius: 4px;
62
+ line-height: 1.42;
63
+ border: 1px solid #CCC;
64
+ height: 27px;
65
+ padding: 2px 6px;
66
+ color: #555;
67
+ }
68
+
69
+ input[type="text"] {
70
+ font-size: 14px;
71
+ }
72
+
73
+ input[type="number"] {
74
+ height: 31px;
75
+ }
76
+
77
+ select {
78
+ border-radius: 4px;
79
+ }
80
+
81
+ /* End input boxes */
82
 
83
  /* Main Buttons */
84
+ .main-dashboard-buttons {
85
+ border-width: 4px;
86
+ border-radius: 12px;
87
+ letter-spacing: 0px;
88
+ font-size: 17px;
89
+ font-weight: bold;
90
+ padding-left: 0.7em;
91
+ padding-right: 2em;
92
+ padding: 0.3em 1em;
93
+ line-height: 1.7em;
94
+ background: transparent;
95
+ position: relative;
96
+ border: 2px solid;
97
+ transition: all 0.2s;
98
+ vertical-align: baseline;
99
+ box-sizing: border-box;
100
+ text-align: center;
101
+ line-height: 1.3em;
102
+ margin-left: .3em;
103
+ text-transform: none;
104
+ line-height: 1;
105
+ text-decoration: none;
106
+ }
107
 
108
+ .button-restore {
109
+ border-color: rgb(98, 158, 192);
110
+ color: rgb(98, 158, 192);
111
+ }
 
 
 
 
 
 
112
 
113
+ .dashboard-main-sizing {
114
+ border-width: 4px;
115
+ width: 190px;
116
+ line-height: 1.7em;
117
+ }
 
118
 
119
+ .button-restore:hover, .button-migrate:hover, .button-backup:hover,
120
+ .button-view-log:hover, .button-mass-selectors:hover,
121
+ .button-delete:hover, .button-entity-backup:hover, .udp-button-primary:hover {
122
+ border-color: #DF6926;
123
+ color: #DF6926;
124
+ }
125
 
126
+ .button-migrate {
127
+ color: rgb(238, 169, 32);
128
+ border-color: rgb(238, 169, 32);
129
+ }
130
+
131
+ .button-backup {
132
+ border-color: #84CA1B;
133
+ color: #84CA1B;
134
+ }
135
+
136
+ .existing-backups-buttons {
137
+ font-size: 11px;
138
+ line-height: 1.4em;
139
+ border-width: 3px;
140
+ }
141
+
142
+ .existing-backups-restore-buttons {
143
+ font-size: 11px;
144
+ line-height: 1.4em;
145
+ border-width: 3px;
146
+ }
147
+
148
+ .button-delete {
149
+ color: #E23900;
150
+ border-color: #E23900;
151
+ font-size: 14px;
152
+ line-height: 1.4em;
153
+ border-width: 2px;
154
+ margin-right: 10px;
155
+ }
156
+
157
+ .button-view-log, .button-mass-selectors {
158
+ color: darkgrey;
159
+ border-color: darkgrey;
160
+ font-size: 14px;
161
+ line-height: 1.4em;
162
+ border-width: 2px;
163
+ margin-top: -1px;
164
+ }
165
+
166
+ .button-view-log {
167
+ width: 120px;
168
+ }
169
+
170
+ .button-existing-restore {
171
+ font-size: 14px;
172
+ line-height: 1.4em;
173
+ border-width: 2px;
174
+ width: 110px;
175
+ }
176
+
177
+ .main-restore {
178
+ margin-right: 3%;
179
+ margin-left: 3%;
180
+ }
181
+
182
+ .button-entity-backup {
183
+ color: #555;
184
+ border-color: #555;
185
+ font-size: 11px;
186
+ line-height: 1.4em;
187
+ border-width: 2px;
188
+ margin-right: 5px;
189
+ }
190
+
191
+ .button-select-all {
192
+ width: 122px;
193
+ }
194
+
195
+ .button-deselect {
196
+ width: 92px;
197
+ }
198
+
199
+ #ud_massactions > .display-flex > .mass-selectors-margins {
200
+ margin-right: -4px;
201
+ }
202
+
203
+ .udp-button-primary {
204
+ border-width: 4px;
205
+ color: #0073AA;
206
+ border-color: #0073AA;
207
+ font-size: 14px;
208
+ height: 40px;
209
+ }
210
+
211
+ #ud_massactions .button-delete {
212
+ margin-right: 0px;
213
+ }
214
+
215
+ .stored_local {
216
+ border-radius: 5px;
217
+ background-color: #007FE7;
218
+ padding: 3px 5px 5px 5px;
219
+ color: #FFF;
220
+ font-size: 75%;
221
+ }
222
+
223
+ .form-table td.updraft_existingbackup_date {
224
+ padding-bottom: 5px;
225
+ }
226
+
227
+ .stored_icon {
228
+ height: 1.3em;
229
+ position: relative;
230
+ top: 0.2em;
231
+ }
232
+
233
+ .backup_date_label .clear-right {
234
+ clear: right;
235
+ }
236
+
237
+ /* End Main Buttons */
238
 
239
  /* End of common elements */
240
 
251
 
252
  .ws_advert {
253
  max-width: 800px;
254
+ font-size: 140%;
255
  line-height: 140%;
256
+ padding: 14px;
257
+ clear: left;
258
  }
259
 
260
  .dismiss-dash-notice {
264
  }
265
 
266
  #updraft_report_cell .updraft_reportbox {
267
+ padding: 8px;
268
  margin: 8px 0;
269
  border: 1px dotted;
270
+ clear: left;
271
+ float: left;
272
  }
273
 
274
  #updraft_report_cell button.updraft_reportbox_delete {
275
  font-size: 50%;
276
+ float: right;
277
+ padding: 0 3px;
278
  position: relative;
279
  top: -4px;
280
  left: 4px;
281
  }
282
 
283
  #updraft-navtab-settings-content .updraft-test-button {
284
+ font-size: 18px !important;
285
  }
286
 
287
  #updraft_report_cell .updraft_report_checkbox {
293
  }
294
 
295
  #updraft_report_cell .updraft_report_another_p {
296
+ clear: left;
297
  }
298
 
299
  /* Taken straight from admin.php */
300
 
301
+ #updraft-navtab-settings-content table.form-table p {
302
+ max-width: 700px;
303
+ }
304
 
305
+ #updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected {
306
+ background-color: #CCC;
307
+ }
308
 
309
+ .updraft_settings_sectionheading {
310
+ display: none;
311
+ }
312
 
313
+ .updraft-backupentitybutton-disabled {
314
+ background-color: transparent;
315
+ border: none;
316
+ color: #0074A2;
317
+ text-decoration: underline;
318
+ cursor: pointer;
319
+ clear: none;
320
+ float: left;
321
+ }
 
 
 
 
 
 
 
 
 
 
322
 
323
+ .updraft-backupentitybutton {
324
+ margin-left: 8px;
325
+ }
 
 
 
 
326
 
327
+ .updraft-bigbutton {
328
+ padding: 2px 0px !important;
329
+ margin-right: 14px !important;
330
+ font-size: 22px !important;
331
+ min-height: 32px;
332
+ min-width: 180px;
333
+ }
 
334
 
335
+ .updraft_debugrow th {
336
+ float: right;
337
+ text-align: right;
338
+ font-weight: bold;
339
+ padding-right: 8px;
340
+ min-width: 140px;
341
+ }
342
 
343
+ .updraft_debugrow td {
344
+ min-width: 300px;
345
+ vertical-align: bottom;
346
+ }
 
347
 
348
+ #updraft_webdav_host_error {
349
+ color: red;
350
+ }
 
351
 
352
+ /* jstree styles */
 
 
 
353
 
354
+ /* these styles hide the dots from the parent but keep the arrows */
355
+ #updraft_zip_files_jstree .jstree-container-ul > .jstree-node,
356
+ #updraft_more_files_jstree .jstree-container-ul > .jstree-node {
357
+ background: transparent;
358
+ }
 
 
 
 
 
 
359
 
360
+ #updraft_zip_files_jstree .jstree-container-ul > .jstree-open > .jstree-ocl,
361
+ #updraft_more_files_jstree .jstree-container-ul > .jstree-open > .jstree-ocl {
362
+ background-position: -36px -4px;
363
+ }
 
 
 
364
 
365
+ #updraft_zip_files_jstree .jstree-container-ul > .jstree-closed> .jstree-ocl,
366
+ #updraft_more_files_jstree .jstree-container-ul > .jstree-closed> .jstree-ocl {
367
+ background-position: -4px -4px;
368
+ }
 
369
 
370
+ #updraft_zip_files_jstree .jstree-container-ul > .jstree-leaf> .jstree-ocl,
371
+ #updraft_more_files_jstree .jstree-container-ul > .jstree-leaf> .jstree-ocl {
372
+ background: transparent;
373
+ }
 
 
 
 
 
374
 
375
+ /* zip browser jstree styles */
376
+ #updraft_zip_files_container {
377
+ position: relative;
378
+ height: 450px;
379
+ overflow: none;
380
+ }
 
381
 
382
+ #updraft_zip_info_container {
383
+ position: relative;
384
+ height: auto;
385
+ width: 100%;
386
+ border: 1px dotted;
387
+ margin-bottom: 5px;
388
+ }
 
 
389
 
390
+ #updraft_zip_info_container p {
391
+ margin: 1px;
392
+ padding-left: 10px;
393
+ font-size: 14px;
394
+ }
395
 
396
+ #updraft_zip_download_item {
397
+ display: none;
398
+ color: #0073AA;
399
+ padding-left: 10px;
400
+ }
401
 
402
+ #updraft_zip_download_notice {
403
+ padding-left: 10px;
404
+ }
 
405
 
406
+ #updraft_zip_files_jstree_container {
407
+ position: relative;
408
+ border: 1px dotted;
409
+ height: 80%;
410
+ width: 100%;
411
+ overflow: auto;
412
+ }
 
 
413
 
414
+ /* More files jstree styles */
415
+ #updraft_more_files_container {
416
+ position: relative;
417
+ display: none;
418
+ height: 300px;
419
+ width: 100%;
420
+ border: 1px dotted;
421
+ margin-bottom: 5px;
422
+ }
423
 
424
+ #updraft_jstree_buttons {
425
+ position: absolute;
426
+ top: 0;
427
+ right: 0;
428
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
429
 
430
+ #updraft_jstree_container {
431
+ height: 100%;
432
+ width: 100%;
433
+ overflow: auto;
434
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
435
 
436
+ #updraft_more_files_container button {
437
+ height: 22px;
438
+ line-height: 20px;
439
+ }
 
 
 
 
 
 
440
 
441
+ #updraft_jstree_confirm, #updraft_jstree_cancel {
442
+ display: none;
443
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
444
 
445
+ .updraftplus-morefiles-row-delete {
446
+ cursor: pointer;
447
+ color: red;
448
+ font-size: 23px !important;
449
+ }
450
+
451
+ .updraftplus-morefiles-row-edit {
452
+ cursor: pointer;
453
+ font-size: 24px !important;
454
+ }
455
+
456
+ #updraft-wrap .form-table th {
457
+ width: 230px;
458
+ }
459
+
460
+ .updraftplus-remove {
461
+ background-color: #C00000;
462
+ border: 1px solid #C00000;
463
+ height: 22px;
464
+ padding: 4px 3px 0 3px;
465
+ margin-right: 6px;
466
+ }
467
+
468
+ .updraft-viewlogdiv form {
469
+ margin: 0;
470
+ padding: 0;
471
+ }
472
+
473
+ .updraft-viewlogdiv {
474
+ background-color: #FFF;
475
+ color: #000;
476
+ border: 1px solid #000;
477
+ height: 26px;
478
+ padding: 0px;
479
+ margin: 0 4px 0 0;
480
+ border-radius: 3px;
481
+ float: left;
482
+ }
483
+
484
+ .updraft-viewlogdiv input, .updraft-viewlogdiv a {
485
+ border: none;
486
+ background-color: transparent;
487
+ color: #000;
488
+ margin: 0px;
489
+ padding: 3px 4px;
490
+ font-size: 16px;
491
+ line-height: 26px;
492
+ }
493
+
494
+ .updraft-viewlogdiv:hover {
495
+ background-color: #000;
496
+ color: #FFF;
497
+ border: 1px solid #FFF;
498
+ cursor: pointer;
499
+ }
500
+
501
+ .updraft-viewlogdiv input:hover, .updraft-viewlogdiv a:hover {
502
+ color: #FFF;
503
+ cursor: pointer;
504
+ }
505
+
506
+ .updraftplus-remove a {
507
+ color: white;
508
+ padding: 4px 4px 0px 4px;
509
+ }
510
+
511
+ .updraftplus-remove:hover {
512
+ background-color: white;
513
+ border: 1px solid #C00000;
514
+ }
515
+
516
+ .updraftplus-remove a:hover {
517
+ color: #C00000;
518
+ }
519
+
520
+ .drag-drop #drag-drop-area2 {
521
+ border: 4px dashed #DDD;
522
+ height: 200px;
523
+ }
524
+
525
+ #drag-drop-area2 .drag-drop-inside {
526
+ margin: 36px auto 0;
527
+ width: 350px;
528
+ }
529
+
530
+ #filelist, #filelist2 {
531
+ width: 100%;
532
+ }
533
+
534
+ #filelist .file, #filelist2 .file, .ud_downloadstatus .file, #ud_downloadstatus2 .file {
535
+ padding: 5px;
536
+ background: #ECECEC;
537
+ border: solid 1px #CCC;
538
+ margin: 4px 0;
539
+ }
540
+
541
+ ul.updraft_premium_description_list {
542
+ list-style: disc inside;
543
+ }
544
+
545
+ ul.updraft_premium_description_list li {
546
+ display: inline;
547
+ }
548
+
549
+ ul.updraft_premium_description_list li::after {
550
+ content: " | ";
551
+ }
552
+
553
+ ul.updraft_premium_description_list li.last::after {
554
+ content: "";
555
+ }
556
+
557
+ .updraft_feature_cell {
558
+ background-color: #F7D9C9 !important;
559
+ padding: 5px 10px;
560
+ }
561
+
562
+ .updraft_feat_table, .updraft_feat_th, .updraft_feat_table td {
563
+ border: 1px solid black;
564
+ border-collapse: collapse;
565
+ font-size: 120%;
566
+ background-color: white;
567
+ text-align: center;
568
+ }
569
+
570
+ .updraft_feat_table p {
571
+ padding: 0px 10px;
572
+ margin: 5px 0px;
573
+ font-size: 16px;
574
+ }
575
+
576
+ .updraft_feat_table h4 {
577
+ margin: 5px 0px;
578
+ }
579
+
580
+ .updraft_feat_table .dashicons {
581
+ width: 25px;
582
+ height: 25px;
583
+ font-size: 25px;
584
+ line-height: 1;
585
+ }
586
+
587
+ .updraft_feat_table .dashicons-yes, .updraft_feat_table .updraft-yes {
588
+ color: green;
589
+ }
590
+
591
+ .updraft_feat_table .dashicons-no-alt, .updraft_feat_table .updraft-no {
592
+ color: red;
593
+ }
594
+
595
+ .updraft_tick_cell {
596
+ text-align: center;
597
+ }
598
+
599
+ .updraft_tick_cell img {
600
+ margin: 4px 0;
601
+ height: 24px;
602
+ }
603
+
604
+ #filelist .fileprogress, #filelist2 .fileprogress, .ud_downloadstatus .dlfileprogress, #ud_downloadstatus2 .dlfileprogress {
605
+ width: 0%;
606
+ background: #F6A828;
607
+ height: 5px;
608
+ }
609
+
610
+ .ud_downloadstatus .raw, #ud_downloadstatus2 .raw {
611
+ margin-top: 8px;
612
+ clear: left;
613
+ }
614
+
615
+ .ud_downloadstatus .file, #ud_downloadstatus2 .file {
616
+ margin-top: 8px;
617
+ }
618
+
619
+ tr.updraftplusmethod h3 {
620
+ margin: 0px;
621
+ }
622
+
623
+ #updraft_retain_db_rules .updraft_retain_rules_delete, #updraft_retain_files_rules .updraft_retain_rules_delete {
624
+ cursor: pointer;
625
+ color: red;
626
+ font-size: 120%;
627
+ font-weight: bold;
628
+ border: 0px;
629
+ border-radius: 3px;
630
+ padding: 2px;
631
+ margin: 0 6px;
632
+ }
633
+
634
+ #updraft_retain_db_rules .updraft_retain_rules_delete:hover, #updraft_retain_files_rules .updraft_retain_rules_delete:hover {
635
+ cursor: pointer;
636
+ color: white;
637
+ background: red;
638
+ }
639
+
640
+ #updraft_backup_started {
641
+ max-width: 800px;
642
+ font-size: 140%;
643
+ line-height: 140%;
644
+ padding: 14px;
645
+ clear: left;
646
+ }
647
+
648
+ .udp-premium-image {
649
+ display: none;
650
+ }
651
+
652
+ @media screen and (min-width: 720px) {
653
 
654
  .udp-premium-image {
655
+ display: block;
656
+ float: left;
657
+ padding-right: 5px;
658
  }
659
 
660
+ }
 
 
 
 
 
 
661
 
662
  /* End stuff already in admin.php */
663
+ #plupload-upload-ui2 {
 
664
  width: 80%;
665
  }
666
 
667
  .backup-restored {
668
+ padding: 8px;
669
  }
670
 
671
+ .backup-restored span {
672
+ font-size: 120%;
673
  }
674
 
675
+ .memory-limit {
676
+ padding: 8px;
677
  }
678
 
679
  .updraft_list_errors {
718
 
719
  .not-scheduled {
720
  vertical-align: top !important;
721
+ margin: 0px !important;
722
  padding: 0px !important;
723
  }
724
 
725
+ .next-backup .updraft_scheduled {
726
  /* width: 124px;*/
727
+ margin: 0px;
728
  padding: 2px 4px 2px 0px;
729
  }
730
 
733
  }
734
 
735
  .next-backup .updraft_all-files {
736
+ color: blue;
737
+ margin: 0px;
738
+ padding: 2px 0px 0px 0px;
739
+ }
740
 
741
  .multisite-advert-width {
742
  width: 800px;
763
  }
764
 
765
  #backupnow_includefiles_moreoptions, #backupnow_database_moreoptions {
766
+ margin: 4px 16px 6px 16px;
767
+ border: 1px dotted;
768
  padding: 6px 10px;
769
  }
770
 
773
  overflow: auto;
774
  }
775
 
776
+ .form-table #updraft_activejobsrow .minimum-height {
777
  min-height: 100px;
778
  }
779
 
814
  }
815
 
816
  #updraft-plupload-modal {
817
+ width: 75%;
818
  margin: 16px;
819
  margin-left: 100px;
820
  }
829
 
830
  .ud_downloadstatus {
831
  padding: 10px;
832
+ background: #F1F1F1;
833
  }
834
 
835
  #ud_massactions {
836
+ padding: 14px;
837
+ position: fixed;
838
+ right: 25%;
839
+ top: 25%;
840
+ border: 2px solid;
841
+ border-radius: 4px;
842
  background: rgb(241, 241, 241);
843
  float: right;
844
  }
845
 
846
  #ud_massactions .updraftplus-remove {
847
+ clear: left;
848
+ font-size: 16px;
849
+ text-align: center;
850
+ border-radius: 4px;
851
  margin-top: 4px;
852
  }
853
 
856
  }
857
 
858
  #ud_massactions .updraft-viewlogdiv {
859
+ font-size: 16px;
860
+ text-align: center;
861
+ border-radius: 4px;
862
  margin-top: 4px;
863
  }
864
 
865
  #ud_massactions .updraft-viewlogdiv a {
866
+ text-decoration: none;
867
+ position: relative;
868
  top: 3px;
869
  }
870
 
871
  #ud_massactions .updraft-viewlogdiv a {
872
+ text-decoration: none;
873
+ position: relative;
874
  top: 3px;
875
  }
876
 
892
  }
893
 
894
  #updraft_delete_form p {
895
+ margin-top: 3px;
896
  padding-top: 0;
897
  }
898
 
901
  }
902
 
903
  #updraft_restorer_dboptions {
904
+ padding: 12px;
905
+ margin: 8px 0 4px 0;
906
  border: dashed 1px;
907
  }
908
 
909
  #updraft_restorer_dboptions h4 {
910
+ margin: 0px 0px 6px 0px;
911
+ padding: 0px;
912
  }
913
 
914
  .updraft_debugrow th {
915
+ vertical-align: top;
916
  padding-top: 6px;
917
  }
918
 
921
  }
922
 
923
  .expertmode .call-wp-action {
924
+ width: 300px;
925
  height: 22px;
926
  }
927
 
952
  }
953
 
954
  .job-id {
955
+ min-width: 480px;
956
+ margin-top: 4px;
957
+ padding: 8px;
958
  border: 1px solid;
959
  clear: left;
960
  float: left;
965
  }
966
 
967
  .updraft_percentage {
968
+ z-index: -1;
969
+ position: absolute;
970
+ left: 0px;
971
+ top: 0px;
972
+ text-align: center;
973
+ background-color: #F6A828;
974
  }
975
 
976
  .curstage {
977
+ border-radius: 4px;
978
+ margin-top: 8px;
979
  padding-top: 4px;
980
+ border: 1px solid #AAA;
981
+ width: 100%;
982
+ height: 22px;
983
+ position: relative;
984
+ text-align: center;
985
  font-style: italic;
986
  }
987
 
994
  }
995
 
996
  #updraft-manualdecrypt-modal {
997
+ width: 85%;
998
  margin: 6px;
999
  margin-left: 100px;
1000
  }
1005
  }
1006
 
1007
  .double-warning {
1008
+ border: 1px solid;
1009
  padding: 6px;
1010
  }
1011
 
1021
  }
1022
 
1023
  .existing-backups-table {
1024
+ margin-top: 20px;
1025
  margin-left: 20px;
1026
  width: 80%;
1027
  }
1047
  padding: 0 0 10px 15px;
1048
  }
1049
 
1050
+ .existing-date {
1051
+ -webkit-box-sizing: border-box;
1052
+ -moz-box-sizing: border-box;
1053
+ box-sizing: border-box;
1054
  max-width: 140px;
1055
  width: 25%;
1056
  }
1057
 
1058
  .line-break-tr {
1059
+ height: 2px;
1060
+ padding: 1px;
1061
  margin: 0px;
1062
  }
1063
 
1064
  .line-break-td {
1065
+ margin: 0;
1066
  padding: 0;
1067
  }
1068
 
1069
  .td-line-color {
1070
+ height: 2px;
1071
+ background-color: #888;
1072
  }
1073
 
1074
  .raw-backup {
1076
  }
1077
 
1078
  .existing-backups-actions {
1079
+ padding: 1px;
1080
+ margin: 0px;
1081
  }
1082
 
1083
  .existing-backups-border {
1084
+ height: 2px;
1085
+ padding: 1px;
1086
  margin: 0px;
1087
  }
1088
 
1089
  .existing-backups-border > td {
1090
+ margin: 0;
1091
  padding: 0;
1092
  }
1093
 
1094
  .existing-backups-border > div {
1095
+ height: 2px;
1096
+ background-color: #AAA;
1097
  }
1098
 
1099
  .updraft_existing_backup_date {
1107
  }
1108
 
1109
  .updraftplus-remove {
1110
+ font-size: 16px;
1111
+ text-align: center;
1112
  border-radius: 4px;
1113
  }
1114
 
1130
 
1131
  .end-of-table-div {
1132
  height: 2px;
1133
+ background-color: #AAA;
1134
  }
1135
 
1136
  .last-backup-job {
1137
+ padding-top: 3% !important;
1138
  }
1139
 
1140
  .line-height-03 {
1150
  }
1151
 
1152
  #updraft_diskspaceused {
1153
+ color: #DF6926;
1154
  }
1155
 
1156
  .updraft_premium_description_list {
1171
  }
1172
 
1173
  .updraft_all-files {
1174
+ color: #DF6926;
1175
  }
1176
 
1177
  /* Time + scheduling add-on*/
1219
  /* Main Header */
1220
 
1221
  .main-header {
1222
+ background-color: #DF6926;
1223
  height: 200px;
1224
  width: 100%;
1225
  }
1284
  .updraftvault-buy {
1285
  width: 225px;
1286
  height: 225px;
1287
+ border: 2px solid #777;
1288
  display: inline-table;
1289
  margin: 0 auto;
1290
  margin-right: 50px;
1302
  border-width: 4px !important;
1303
  }
1304
 
 
1305
  .updraftplus-vault-cta > .vault-options > .center-vault > p {
1306
  font-size: 16px;
1307
  }
1314
 
1315
  .updraftvault-buy hr {
1316
  height: 2px;
1317
+ background-color: #777;
1318
  margin-top: 18px;
1319
  }
1320
 
1334
 
1335
  .updraftvault-buy .button-buy-vault {
1336
  font-size: 12px;
1337
+ color: #DF6926;
1338
+ border-color: #DF6926;
1339
+ border-width: 2px !important;
1340
  position: absolute;
1341
  right: 29%;
1342
  bottom: 2%;
1380
  .premium-addons .premium-addon-div {
1381
  width: 200px;
1382
  height: 250px;
1383
+ border: 2px solid #777;
1384
  display: inline-table;
1385
  margin: 0 auto;
1386
  margin-right: 25px;
1413
  width: 75%;
1414
  height: 24px;
1415
  }
1416
+
1417
  .button-purchase {
1418
  font-size: 12px;
1419
+ color: #DF6926;
1420
+ border-color: #DF6926;
1421
+ border-width: 2px !important;
1422
  position: absolute;
1423
  right: 25%;
1424
  bottom: 2%;
1431
 
1432
  .premium-addons .premium-addon-div hr {
1433
  height: 2px;
1434
+ background-color: #777;
1435
  margin-top: 18px;
1436
  }
1437
 
1439
  font-style: italic;
1440
  }
1441
 
1442
+ .addon-list > .premium-addon-div > .onedrive-fix,
1443
  .addon-list > .premium-addon-div > .azure-logo {
1444
  margin-top: 33px;
1445
  }
1468
  }
1469
 
1470
  .premium-forgotton-something .button-faq {
1471
+ color: #DF6926;
1472
+ border-color: #DF6926;
1473
  margin: 0 auto;
1474
  display: table;
1475
  }
1476
 
1477
  .premium-forgotton-something .button-faq:hover {
1478
+ color: #777;
1479
+ border-color: #777;
1480
  }
1481
 
1482
  /* End of forgotton something */
1483
 
1484
+ .updraftplusmethod.updraftvault #vaultlogo {
1485
+ padding-left: 40px;
1486
+ }
1487
 
1488
  .updraftplusmethod.updraftvault .vault_primary_option {
1489
  float: left;
1490
+ width: 50%;
1491
+ text-align: center;
1492
+ padding-bottom: 20px;
1493
  }
1494
 
1495
  .updraftplusmethod.updraftvault .vault_primary_option div {
1496
+ clear: right;
1497
  padding-top: 20px;
1498
  }
1499
 
1501
  clear: left;
1502
  }
1503
 
1504
+ .updraftplusmethod.updraftvault .padding-top-20px {
1505
+ padding-top: 20px;
1506
+ }
1507
 
1508
+ .updraftplusmethod.updraftvault .padding-top-14px {
1509
+ padding-top: 14px;
1510
+ }
1511
 
1512
  .updraftplusmethod.updraftvault #updraftvault_settings_default .button-primary, .updraftplusmethod.updraftvault #updraftvault_settings_showoptions .button-primary {
1513
  font-size: 18px !important;
1515
  }
1516
 
1517
  .updraftplusmethod.updraftvault #updraftvault_showoptions, .updraftplusmethod.updraftvault #updraftvault_connect {
1518
+ margin-top: 8px;
1519
  }
1520
 
1521
  .updraftplusmethod.updraftvault #updraftvault_settings_connect input {
1522
+ margin-right: 10px;
1523
  }
1524
 
1525
+ .updraftplusmethod.updraftvault #updraftvault_email {
1526
+ width: 280px;
1527
+ }
1528
 
1529
+ .updraftplusmethod.updraftvault #updraftvault_pass {
1530
+ width: 200px;
1531
+ }
1532
+
1533
+ .updraftplusmethod.updraftvault #vault-is-connected {
1534
+ margin: 0;
1535
+ padding: 0;
1536
+ }
1537
 
1538
  .updraftplusmethod.updraftvault #updraftvault_settings_default p {
1539
+ clear: left;
1540
  }
1541
 
1542
  .updraftplusmethod.updraftvault .vault-purchase-option {
1543
  float: left;
1544
+ width: 33%;
1545
+ text-align: center;
1546
  padding-top: 20px;
1547
  }
1548
 
1549
  .updraftplusmethod.updraftvault .vault-purchase-option-size {
1550
  font-size: 200%;
1551
+ font-weight: bold;
1552
  }
1553
 
1554
  .updraftplusmethod.updraftvault .vault-purchase-option-link {
1555
+ clear: both;
1556
+ font-size: 150%;
1557
  }
1558
 
1559
  .updraftplusmethod.updraftvault .vault-purchase-option-or {
1581
  .advert-description {
1582
  float: left;
1583
  clear: right;
1584
+ padding: 4px 10px 8px 10px;
1585
  width: 70%;
1586
+ clear: right;
1587
  vertical-align: top;
1588
  }
1589
 
1590
  .advert-btn {
1591
  display: inline-block;
1592
+ min-width: 10%;
1593
  vertical-align: top;
1594
  margin-bottom: 8px;
1595
  }
1604
  }
1605
 
1606
  a.btn-get-started {
1607
+ background: #FFF;
1608
+ border: 2px solid #DF6926;
1609
  border-radius: 4px;
1610
+ color: #DF6926;
1611
  display: inline-block;
1612
  margin-left: 10px !important;
1613
  margin-bottom: 7px !important;
1614
  font-size: 18px !important;
1615
  line-height: 20px;
1616
  min-height: 28px;
1617
+ padding: 11px 10px 5px 10px;
1618
  text-transform: uppercase;
1619
  text-decoration: none;
1620
  }
1621
 
1622
  .circle-dblarrow {
1623
+ border: 1px solid #DF6926;
1624
+ border-radius: 100%;
1625
+ display: inline-block;
1626
  font-size: 17px;
1627
  line-height: 17px;
1628
+ margin-left: 5px;
1629
  width: 20px;
1630
+ height: 20px;
1631
  text-align: center;
1632
  }
1633
 
1634
+ @media screen and (max-width: 782px) {
 
1635
  /* .advert-description {
1636
  min-width: 75%;
1637
  margin-bottom: 5px;
1643
  min-width: 100%;
1644
  }*/
1645
  }
1646
+
1647
  /* End Automation Backup Advert by B */
1648
  /* New Responsive Pretty Advanced Settings */
1649
  .expertmode .advanced_settings_container {
1659
  .expertmode .advanced_settings_container .advanced_settings_content {
1660
  padding-top: 5px;
1661
  float: none;
1662
+ width: auto;
1663
  overflow: auto;
1664
  }
1665
 
1670
  .expertmode .advanced_settings_container .advanced_settings_content .advanced_tools {
1671
  display: none;
1672
  }
1673
+
1674
  .expertmode .advanced_settings_container .advanced_settings_content .site_info {
1675
  display: block;
1676
  }
1679
  display: inline-block;
1680
  cursor: pointer;
1681
  padding: 5px;
1682
+ color: #000;
1683
  }
1684
 
1685
  .expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_text {
1687
  }
1688
 
1689
  .expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button:hover {
1690
+ background-color: #EAEAEA;
1691
  }
1692
 
1693
  .expertmode .advanced_settings_container .advanced_settings_menu .active {
1694
+ background-color: #3498DB;
1695
+ color: #FFF;
1696
  }
1697
 
1698
  .expertmode .advanced_settings_container .advanced_settings_menu .active:hover {
1699
+ background-color: #72C5FD;
1700
+ color: #FFF;
1701
  }
1702
 
1703
  .expertmode .advanced_settings_container .advanced_settings_content input#import_settings {
1704
+ height: auto !important;
1705
  }
1706
 
1707
  div#updraft-wrap a {
1709
  }
1710
 
1711
  @media screen and (min-width: 670px) {
1712
+
1713
  .expertmode .advanced_settings_container .advanced_settings_menu {
1714
  float: left;
1715
  width: 215px;
1725
  .expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button {
1726
  display: block;
1727
  }
1728
+
1729
  }
css/admin.min.css ADDED
@@ -0,0 +1,2 @@
 
 
1
+ .max-width-600{max-width:600px}.width-900{width:900px}.width-80{width:80%}.no-decoration{text-decoration:none}.bold{font-weight:bold}.center-align-td{text-align:center}.remove-padding{padding:0 !important}.updraft-text-center{text-align:center}.autobackup{padding:6px;margin:8px 0}ul .disc{list-style:disc inside}.dashicons-log-fix{display:inherit}input{border-radius:4px;line-height:1.42;border:1px solid #CCC;height:27px;padding:2px 6px;color:#555}input[type="text"]{font-size:14px}input[type="number"]{height:31px}select{border-radius:4px}.main-dashboard-buttons{border-width:4px;border-radius:12px;letter-spacing:0;font-size:17px;font-weight:bold;padding-left:.7em;padding-right:2em;padding:.3em 1em;line-height:1.7em;background:transparent;position:relative;border:2px solid;transition:all .2s;vertical-align:baseline;box-sizing:border-box;text-align:center;line-height:1.3em;margin-left:.3em;text-transform:none;line-height:1;text-decoration:none}.button-restore{border-color:#629ec0;color:#629ec0}.dashboard-main-sizing{border-width:4px;width:190px;line-height:1.7em}.button-restore:hover,.button-migrate:hover,.button-backup:hover,.button-view-log:hover,.button-mass-selectors:hover,.button-delete:hover,.button-entity-backup:hover,.udp-button-primary:hover{border-color:#df6926;color:#df6926}.button-migrate{color:#eea920;border-color:#eea920}.button-backup{border-color:#84ca1b;color:#84ca1b}.existing-backups-buttons{font-size:11px;line-height:1.4em;border-width:3px}.existing-backups-restore-buttons{font-size:11px;line-height:1.4em;border-width:3px}.button-delete{color:#e23900;border-color:#e23900;font-size:14px;line-height:1.4em;border-width:2px;margin-right:10px}.button-view-log,.button-mass-selectors{color:darkgrey;border-color:darkgrey;font-size:14px;line-height:1.4em;border-width:2px;margin-top:-1px}.button-view-log{width:120px}.button-existing-restore{font-size:14px;line-height:1.4em;border-width:2px;width:110px}.main-restore{margin-right:3%;margin-left:3%}.button-entity-backup{color:#555;border-color:#555;font-size:11px;line-height:1.4em;border-width:2px;margin-right:5px}.button-select-all{width:122px}.button-deselect{width:92px}#ud_massactions>.display-flex>.mass-selectors-margins{margin-right:-4px}.udp-button-primary{border-width:4px;color:#0073aa;border-color:#0073aa;font-size:14px;height:40px}#ud_massactions .button-delete{margin-right:0}.stored_local{border-radius:5px;background-color:#007fe7;padding:3px 5px 5px 5px;color:#FFF;font-size:75%}.form-table td.updraft_existingbackup_date{padding-bottom:5px}.stored_icon{height:1.3em;position:relative;top:.2em}.backup_date_label .clear-right{clear:right}.udp-logo-70{width:70px;height:70px;float:left;padding-right:25px}h3 .thank-you{margin-top:0}.ws_advert{max-width:800px;font-size:140%;line-height:140%;padding:14px;clear:left}.dismiss-dash-notice{float:right;position:relative;top:-20px}#updraft_report_cell .updraft_reportbox{padding:8px;margin:8px 0;border:1px dotted;clear:left;float:left}#updraft_report_cell button.updraft_reportbox_delete{font-size:50%;float:right;padding:0 3px;position:relative;top:-4px;left:4px}#updraft-navtab-settings-content .updraft-test-button{font-size:18px !important}#updraft_report_cell .updraft_report_checkbox{margin-top:4px}#updraft_report_cell .updraft_report_email{width:300px}#updraft_report_cell .updraft_report_another_p{clear:left}#updraft-navtab-settings-content table.form-table p{max-width:700px}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected{background-color:#CCC}.updraft_settings_sectionheading{display:none}.updraft-backupentitybutton-disabled{background-color:transparent;border:0;color:#0074a2;text-decoration:underline;cursor:pointer;clear:none;float:left}.updraft-backupentitybutton{margin-left:8px}.updraft-bigbutton{padding:2px 0 !important;margin-right:14px !important;font-size:22px !important;min-height:32px;min-width:180px}.updraft_debugrow th{float:right;text-align:right;font-weight:bold;padding-right:8px;min-width:140px}.updraft_debugrow td{min-width:300px;vertical-align:bottom}#updraft_webdav_host_error{color:red}#updraft_zip_files_jstree .jstree-container-ul>.jstree-node,#updraft_more_files_jstree .jstree-container-ul>.jstree-node{background:transparent}#updraft_zip_files_jstree .jstree-container-ul>.jstree-open>.jstree-ocl,#updraft_more_files_jstree .jstree-container-ul>.jstree-open>.jstree-ocl{background-position:-36px -4px}#updraft_zip_files_jstree .jstree-container-ul>.jstree-closed>.jstree-ocl,#updraft_more_files_jstree .jstree-container-ul>.jstree-closed>.jstree-ocl{background-position:-4px -4px}#updraft_zip_files_jstree .jstree-container-ul>.jstree-leaf>.jstree-ocl,#updraft_more_files_jstree .jstree-container-ul>.jstree-leaf>.jstree-ocl{background:transparent}#updraft_zip_files_container{position:relative;height:450px;overflow:none}#updraft_zip_info_container{position:relative;height:auto;width:100%;border:1px dotted;margin-bottom:5px}#updraft_zip_info_container p{margin:1px;padding-left:10px;font-size:14px}#updraft_zip_download_item{display:none;color:#0073aa;padding-left:10px}#updraft_zip_download_notice{padding-left:10px}#updraft_zip_files_jstree_container{position:relative;border:1px dotted;height:80%;width:100%;overflow:auto}#updraft_more_files_container{position:relative;display:none;height:300px;width:100%;border:1px dotted;margin-bottom:5px}#updraft_jstree_buttons{position:absolute;top:0;right:0}#updraft_jstree_container{height:100%;width:100%;overflow:auto}#updraft_more_files_container button{height:22px;line-height:20px}#updraft_jstree_confirm,#updraft_jstree_cancel{display:none}.updraftplus-morefiles-row-delete{cursor:pointer;color:red;font-size:23px !important}.updraftplus-morefiles-row-edit{cursor:pointer;font-size:24px !important}#updraft-wrap .form-table th{width:230px}.updraftplus-remove{background-color:#c00000;border:1px solid #c00000;height:22px;padding:4px 3px 0 3px;margin-right:6px}.updraft-viewlogdiv form{margin:0;padding:0}.updraft-viewlogdiv{background-color:#FFF;color:#000;border:1px solid #000;height:26px;padding:0;margin:0 4px 0 0;border-radius:3px;float:left}.updraft-viewlogdiv input,.updraft-viewlogdiv a{border:0;background-color:transparent;color:#000;margin:0;padding:3px 4px;font-size:16px;line-height:26px}.updraft-viewlogdiv:hover{background-color:#000;color:#FFF;border:1px solid #FFF;cursor:pointer}.updraft-viewlogdiv input:hover,.updraft-viewlogdiv a:hover{color:#FFF;cursor:pointer}.updraftplus-remove a{color:white;padding:4px 4px 0 4px}.updraftplus-remove:hover{background-color:white;border:1px solid #c00000}.updraftplus-remove a:hover{color:#c00000}.drag-drop #drag-drop-area2{border:4px dashed #DDD;height:200px}#drag-drop-area2 .drag-drop-inside{margin:36px auto 0;width:350px}#filelist,#filelist2{width:100%}#filelist .file,#filelist2 .file,.ud_downloadstatus .file,#ud_downloadstatus2 .file{padding:5px;background:#ececec;border:solid 1px #CCC;margin:4px 0}ul.updraft_premium_description_list{list-style:disc inside}ul.updraft_premium_description_list li{display:inline}ul.updraft_premium_description_list li::after{content:" | "}ul.updraft_premium_description_list li.last::after{content:""}.updraft_feature_cell{background-color:#f7d9c9 !important;padding:5px 10px}.updraft_feat_table,.updraft_feat_th,.updraft_feat_table td{border:1px solid black;border-collapse:collapse;font-size:120%;background-color:white;text-align:center}.updraft_feat_table p{padding:0 10px;margin:5px 0;font-size:16px}.updraft_feat_table h4{margin:5px 0}.updraft_feat_table .dashicons{width:25px;height:25px;font-size:25px;line-height:1}.updraft_feat_table .dashicons-yes,.updraft_feat_table .updraft-yes{color:green}.updraft_feat_table .dashicons-no-alt,.updraft_feat_table .updraft-no{color:red}.updraft_tick_cell{text-align:center}.updraft_tick_cell img{margin:4px 0;height:24px}#filelist .fileprogress,#filelist2 .fileprogress,.ud_downloadstatus .dlfileprogress,#ud_downloadstatus2 .dlfileprogress{width:0;background:#f6a828;height:5px}.ud_downloadstatus .raw,#ud_downloadstatus2 .raw{margin-top:8px;clear:left}.ud_downloadstatus .file,#ud_downloadstatus2 .file{margin-top:8px}tr.updraftplusmethod h3{margin:0}#updraft_retain_db_rules .updraft_retain_rules_delete,#updraft_retain_files_rules .updraft_retain_rules_delete{cursor:pointer;color:red;font-size:120%;font-weight:bold;border:0;border-radius:3px;padding:2px;margin:0 6px}#updraft_retain_db_rules .updraft_retain_rules_delete:hover,#updraft_retain_files_rules .updraft_retain_rules_delete:hover{cursor:pointer;color:white;background:red}#updraft_backup_started{max-width:800px;font-size:140%;line-height:140%;padding:14px;clear:left}.udp-premium-image{display:none}@media screen and (min-width:720px){.udp-premium-image{display:block;float:left;padding-right:5px}}#plupload-upload-ui2{width:80%}.backup-restored{padding:8px}.backup-restored span{font-size:120%}.memory-limit{padding:8px}.updraft_list_errors{padding:8px}.nav-tab-wrapper{margin:14px 0}#updraft-poplog-content{white-space:pre-wrap}.next-backup{border:0;padding:0;margin:0 10px 0 0}.not-scheduled{vertical-align:top !important;margin:0 !important;padding:0 !important}.next-backup .updraft_scheduled{margin:0;padding:2px 4px 2px 0}#next-backup-table-inner td{vertical-align:top}.next-backup .updraft_all-files{color:blue;margin:0;padding:2px 0 0 0}.multisite-advert-width{width:800px}.updraft_settings_sectionheading{margin-top:6px}.premium-upgrade-prompt{font-size:115%}.updraft_feat_table{margin-top:30px}.show_admin_restore_in_progress_notice{padding:8px}.show_admin_restore_in_progress_notice .unfinished-restoration{font-size:120%}#backupnow_includefiles_moreoptions,#backupnow_database_moreoptions{margin:4px 16px 6px 16px;border:1px dotted;padding:6px 10px}#backupnow_database_moreoptions{max-height:250px;overflow:auto}.form-table #updraft_activejobsrow .minimum-height{min-height:100px}#updraft_lastlogmessagerow .last-message{padding-top:20px;display:block}.updraft_simplepie{vertical-align:top}.download-backups{margin-top:8px}.download-backups .updraft_download_button{margin-right:6px;margin-top:4px}.download-backups .choose-components-button{font-size:16px}.download-backups .ud-whitespace-warning{background-color:pink;padding:8px;margin:4px;border:1px dotted}.download-backups .ul{list-style:none inside;max-width:800px;margin-top:6px;margin-bottom:12px}#updraft-plupload-modal{width:75%;margin:16px;margin-left:100px}.download-backups .upload{max-width:610px}.download-backups #plupload-upload-ui{width:70%}.ud_downloadstatus{padding:10px;background:#f1f1f1}#ud_massactions{padding:14px;position:fixed;right:25%;top:25%;border:2px solid;border-radius:4px;background:#f1f1f1;float:right}#ud_massactions .updraftplus-remove{clear:left;font-size:16px;text-align:center;border-radius:4px;margin-top:4px}#ud_massactions .updraftplus-remove a{text-decoration:none}#ud_massactions .updraft-viewlogdiv{font-size:16px;text-align:center;border-radius:4px;margin-top:4px}#ud_massactions .updraft-viewlogdiv a{text-decoration:none;position:relative;top:3px}#ud_massactions .updraft-viewlogdiv a{text-decoration:none;position:relative;top:3px}#updraft-navtab-backups-content .updraft_existing_backups{margin-bottom:12px}#updraft-message-modal-innards{padding:4px}#updraft-authenticate-modal{text-align:center;font-size:16px !important}#updraft-authenticate-modal p{font-size:16px}#updraft_delete_form p{margin-top:3px;padding-top:0}#updraft_restore_form .cannot-restore{margin:8px 0}#updraft_restorer_dboptions{padding:12px;margin:8px 0 4px 0;border:dashed 1px}#updraft_restorer_dboptions h4{margin:0 0 6px 0;padding:0}.updraft_debugrow th{vertical-align:top;padding-top:6px}.expertmode p{font-size:125%}.expertmode .call-wp-action{width:300px;height:22px}.updraftplus-lock-advert{clear:left;max-width:600px}.uncompressed-data{clear:left;max-width:600px}.delete-old-directories{padding:8px;padding-bottom:12px}.active-jobs{min-width:480px;min-height:48px;text-align:center;margin-top:4px;padding:8px;border:1px solid;float:left;clear:left}.job-id{min-width:480px;margin-top:4px;padding:8px;border:1px solid;clear:left;float:left}.next-resumption{font-weight:bold}.updraft_percentage{z-index:-1;position:absolute;left:0;top:0;text-align:center;background-color:#f6a828}.curstage{border-radius:4px;margin-top:8px;padding-top:4px;border:1px solid #AAA;width:100%;height:22px;position:relative;text-align:center;font-style:italic}.retain-files{width:48px}.backup-interval-description tr td div{max-width:670px}#updraft-manualdecrypt-modal{width:85%;margin:6px;margin-left:100px}.directory-permissions{font-size:110%;font-weight:bold}.double-warning{border:1px solid;padding:6px}.raw-backup-info{font-style:italic;font-weight:bold;font-size:120%}.updraft_existingbackup_date{width:22%;max-width:140px}.existing-backups-table{margin-top:20px;margin-left:20px;width:80%}.tr-bottom-4{margin-bottom:4px}.form-table .backup-date{width:172px;padding:0;padding-left:15px}.form-table .backup-data{width:426px;padding:0;padding-left:15px}.form-table .updraft_backup_actions{width:272px;padding:0 0 10px 15px}.existing-date{box-sizing:border-box;max-width:140px;width:25%}.line-break-tr{height:2px;padding:1px;margin:0}.line-break-td{margin:0;padding:0}.td-line-color{height:2px;background-color:#888}.raw-backup{max-width:140px}.existing-backups-actions{padding:1px;margin:0}.existing-backups-border{height:2px;padding:1px;margin:0}.existing-backups-border>td{margin:0;padding:0}.existing-backups-border>div{height:2px;background-color:#AAA}.updraft_existing_backup_date{max-width:140px}.restore-button{margin-right:6px;float:left;clear:none}.updraftplus-remove{font-size:16px;text-align:center;border-radius:4px}.before-restore-button{padding:1px;margin:0}.table-separator-tr{height:2px;padding:1px;margin:0}.table-separator-td{margin:0;padding:0}.end-of-table-div{height:2px;background-color:#AAA}.last-backup-job{padding-top:3% !important}.line-height-03{line-height:.3 !important}.line-height-13{line-height:1.3 !important}.line-height-23{line-height:2.3 !important}#updraft_diskspaceused{color:#df6926}.updraft_premium_description_list{text-align:left}#updraft_delete_old_dirs_pagediv{padding-bottom:10px}.job-id{margin:0 auto;width:20%}.updraft_all-files{color:#df6926}.fix-time{width:70px}.retain-files{width:70px}.number-input{min-width:50px;max-width:70px}.additional-rule-width{min-width:60px;max-width:70px}.dashicons{line-height:inherit;font-size:inherit}.addon-logo-150{margin-left:30px;margin-top:33px;height:125px;width:150px}.margin-bottom-50{margin-bottom:50px}.premium-container{width:80%}.main-header{background-color:#df6926;height:200px;width:100%}.button-add-to-cart{color:white;border-color:white;float:none;margin-right:17px}.button-add-to-cart:hover,.button-add-to-cart:focus,.button-add-to-cart:active{border-color:#a0a5aa;color:#a0a5aa}.addon-title{margin-top:25px}.addon-text{margin-top:75px}.image-main-div{width:25%;float:left}.text-main-div{width:60%;float:left;text-align:center;color:white;margin-top:16px}.text-main-div-title{font-weight:bold !important;color:white;text-align:center}.text-main-div-paragraph{color:white}.updraftplus-vault-cta{width:100%;text-align:center;margin-bottom:50px}.updraftplus-vault-cta h1{font-weight:bold}.updraftvault-buy{width:225px;height:225px;border:2px solid #777;display:inline-table;margin:0 auto;margin-right:50px;position:relative}.updraftplus-vault-cta>.vault-options>.center-vault{width:275px;height:275px}.updraftplus-vault-cta>.vault-options>.center-vault>a{right:21%;font-size:16px;border-width:4px !important}.updraftplus-vault-cta>.vault-options>.center-vault>p{font-size:16px}.updraftvault-buy .button-purchase{right:24%;margin-left:0;line-height:1.7em}.updraftvault-buy hr{height:2px;background-color:#777;margin-top:18px}.right{margin-right:0}.updraftvault-buy .addon-logo-100{height:100px;width:125px;margin-top:7px}.updraftvault-buy .addon-logo-large{margin-top:7px}.updraftvault-buy .button-buy-vault{font-size:12px;color:#df6926;border-color:#df6926;border-width:2px !important;position:absolute;right:29%;bottom:2%}.premium-addon-div .button-purchase{line-height:1.7em}.updraftvault-buy .button-buy-vault:hover{border-color:darkgrey;color:darkgrey}.premium-addons{margin-top:80px;width:100%;margin:0 auto;display:table}.addon-list{display:table;text-align:center}.premium-addons h1{text-align:center;font-weight:bold}.premium-addons p{text-align:center}.premium-addons .premium-addon-div{width:200px;height:250px;border:2px solid #777;display:inline-table;margin:0 auto;margin-right:25px;margin-top:25px;text-align:center;position:relative}.premium-addons .premium-addon-div p{margin-left:2px;margin-right:2px}.premium-addons .premium-addon-div img{width:auto;height:50px;margin-top:7px}.premium-addons .premium-addon-div .hr-alignment{margin-top:44px}.premium-addons .premium-addon-div .dropbox-logo{height:39px;width:150px}.premium-addons .premium-addon-div .azure-logo,.premium-addons .premium-addon-div .onedrive-logo{width:75%;height:24px}.button-purchase{font-size:12px;color:#df6926;border-color:#df6926;border-width:2px !important;position:absolute;right:25%;bottom:2%}.button-purchase:hover{color:darkgrey;border-color:darkgrey}.premium-addons .premium-addon-div hr{height:2px;background-color:#777;margin-top:18px}.premium-addon-div p{font-style:italic}.addon-list>.premium-addon-div>.onedrive-fix,.addon-list>.premium-addon-div>.azure-logo{margin-top:33px}.addon-list>.premium-addon-div>.dropbox-fix{margin-top:18px}.premium-forgotton-something{margin-top:5%}.premium-forgotton-something h1{text-align:center;font-weight:bold}.premium-forgotton-something p{text-align:center;font-weight:normal}.premium-forgotton-something .button-faq{color:#df6926;border-color:#df6926;margin:0 auto;display:table}.premium-forgotton-something .button-faq:hover{color:#777;border-color:#777}.updraftplusmethod.updraftvault #vaultlogo{padding-left:40px}.updraftplusmethod.updraftvault .vault_primary_option{float:left;width:50%;text-align:center;padding-bottom:20px}.updraftplusmethod.updraftvault .vault_primary_option div{clear:right;padding-top:20px}.updraftplusmethod.updraftvault .clear-left{clear:left}.updraftplusmethod.updraftvault .padding-top-20px{padding-top:20px}.updraftplusmethod.updraftvault .padding-top-14px{padding-top:14px}.updraftplusmethod.updraftvault #updraftvault_settings_default .button-primary,.updraftplusmethod.updraftvault #updraftvault_settings_showoptions .button-primary{font-size:18px !important;padding-bottom:20px}.updraftplusmethod.updraftvault #updraftvault_showoptions,.updraftplusmethod.updraftvault #updraftvault_connect{margin-top:8px}.updraftplusmethod.updraftvault #updraftvault_settings_connect input{margin-right:10px}.updraftplusmethod.updraftvault #updraftvault_email{width:280px}.updraftplusmethod.updraftvault #updraftvault_pass{width:200px}.updraftplusmethod.updraftvault #vault-is-connected{margin:0;padding:0}.updraftplusmethod.updraftvault #updraftvault_settings_default p{clear:left}.updraftplusmethod.updraftvault .vault-purchase-option{float:left;width:33%;text-align:center;padding-top:20px}.updraftplusmethod.updraftvault .vault-purchase-option-size{font-size:200%;font-weight:bold}.updraftplusmethod.updraftvault .vault-purchase-option-link{clear:both;font-size:150%}.updraftplusmethod.updraftvault .vault-purchase-option-or{clear:both;font-size:115%;font-style:italic}.autobackup-image{clear:left;float:left;width:110px;height:110px}.autobackup-description{width:100%}.advert-description{float:left;clear:right;padding:4px 10px 8px 10px;width:70%;clear:right;vertical-align:top}.advert-btn{display:inline-block;min-width:10%;vertical-align:top;margin-bottom:8px}.advert-btn:first-of-type{margin-top:25px}.advert-btn a{display:block;cursor:pointer}a.btn-get-started{background:#FFF;border:2px solid #df6926;border-radius:4px;color:#df6926;display:inline-block;margin-left:10px !important;margin-bottom:7px !important;font-size:18px !important;line-height:20px;min-height:28px;padding:11px 10px 5px 10px;text-transform:uppercase;text-decoration:none}.circle-dblarrow{border:1px solid #df6926;border-radius:100%;display:inline-block;font-size:17px;line-height:17px;margin-left:5px;width:20px;height:20px;text-align:center}.expertmode .advanced_settings_container{height:auto;overflow:hidden}.expertmode .advanced_settings_container .advanced_settings_menu{float:none;border-bottom:1px solid #ccc}.expertmode .advanced_settings_container .advanced_settings_content{padding-top:5px;float:none;width:auto;overflow:auto}.expertmode .advanced_settings_container .advanced_settings_content h3{margin-top:5px !important}.expertmode .advanced_settings_container .advanced_settings_content .advanced_tools{display:none}.expertmode .advanced_settings_container .advanced_settings_content .site_info{display:block}.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button{display:inline-block;cursor:pointer;padding:5px;color:#000}.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_text{font-size:16px}.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button:hover{background-color:#eaeaea}.expertmode .advanced_settings_container .advanced_settings_menu .active{background-color:#3498db;color:#FFF}.expertmode .advanced_settings_container .advanced_settings_menu .active:hover{background-color:#72c5fd;color:#FFF}.expertmode .advanced_settings_container .advanced_settings_content input#import_settings{height:auto !important}div#updraft-wrap a{cursor:pointer !important}@media screen and (min-width:670px){.expertmode .advanced_settings_container .advanced_settings_menu{float:left;width:215px;border-right:1px solid #ccc;border-bottom:0}.expertmode .advanced_settings_container .advanced_settings_content{padding-left:10px;padding-top:0}.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button{display:block}}
2
+ /*# sourceMappingURL=admin.min.css.map */
css/admin.min.css.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["css/admin.css"],"names":[],"mappings":"AAAA,wCAAwC;;AAExC,uBAAuB;AACvB;CACC,iBAAiB;CACjB;;AAED;CACC,aAAa;CACb;;AAED;CACC,WAAW;CACX;;AAED,2BAA2B;;AAE3B,kBAAkB;AAClB;CACC,sBAAsB;CACtB;;AAED;CACC,kBAAkB;CAClB;;AAED,sBAAsB;AACtB,eAAe;AACf;CACC,mBAAmB;CACnB;;AAED,sBAAsB;AACtB,aAAa;AACb;CACC,sBAAsB;CACtB;;AAED,oBAAoB;;AAEpB;CACC,mBAAmB;CACnB;;AAED;CACC,aAAa;CACb,gBAAgB;CAChB;;AAED;CACC,wBAAwB;CACxB;;AAED;CACC,iBAAiB;CACjB;;AAED,iBAAiB;;AAEjB;CACC,mBAAmB;CACnB,kBAAkB;CAClB,uBAAuB;CACvB,aAAa;CACb,iBAAiB;CACjB,YAAY;CACZ;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,aAAa;CACb;;AAED;CACC,mBAAmB;CACnB;;AAED,qBAAqB;;AAErB,kBAAkB;AAClB;CACC,kBAAkB;CAClB,oBAAoB;CACpB,oBAAoB;CACpB,gBAAgB;CAChB,kBAAkB;CAClB,oBAAoB;CACpB,mBAAmB;CACnB,mBAAmB;CACnB,mBAAmB;CACnB,wBAAwB;CACxB,mBAAmB;CACnB,kBAAkB;CAClB,qBAAqB;CACrB,yBAAyB;CACzB,uBAAuB;CACvB,mBAAmB;CACnB,mBAAmB;CACnB,kBAAkB;CAClB,qBAAqB;CACrB,eAAe;CACf,sBAAsB;CACtB;;AAED;CACC,gCAAgC;CAChC,yBAAyB;CACzB;;AAED;CACC,kBAAkB;CAClB,aAAa;CACb,mBAAmB;CACnB;;AAED;;;CAGC,sBAAsB;CACtB,eAAe;CACf;;AAED;CACC,yBAAyB;CACzB,gCAAgC;CAChC;;AAED;CACC,sBAAsB;CACtB,eAAe;CACf;;AAED;CACC,gBAAgB;CAChB,mBAAmB;CACnB,kBAAkB;CAClB;;AAED;CACC,gBAAgB;CAChB,mBAAmB;CACnB,kBAAkB;CAClB;;AAED;CACC,eAAe;CACf,sBAAsB;CACtB,gBAAgB;CAChB,mBAAmB;CACnB,kBAAkB;CAClB,mBAAmB;CACnB;;AAED;CACC,gBAAgB;CAChB,uBAAuB;CACvB,gBAAgB;CAChB,mBAAmB;CACnB,kBAAkB;CAClB,iBAAiB;CACjB;;AAED;CACC,aAAa;CACb;;AAED;CACC,gBAAgB;CAChB,mBAAmB;CACnB,kBAAkB;CAClB,aAAa;CACb;;AAED;CACC,iBAAiB;CACjB,gBAAgB;CAChB;;AAED;CACC,YAAY;CACZ,mBAAmB;CACnB,gBAAgB;CAChB,mBAAmB;CACnB,kBAAkB;CAClB,kBAAkB;CAClB;;AAED;CACC,aAAa;CACb;;AAED;CACC,YAAY;CACZ;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB,eAAe;CACf,sBAAsB;CACtB,gBAAgB;CAChB,aAAa;CACb;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,mBAAmB;CACnB,0BAA0B;CAC1B,yBAAyB;CACzB,YAAY;CACZ,eAAe;CACf;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,cAAc;CACd,mBAAmB;CACnB,WAAW;CACX;;AAED;CACC,aAAa;CACb;;AAED,sBAAsB;;AAEtB,4BAA4B;;AAE5B;CACC,YAAY;CACZ,aAAa;CACb,YAAY;CACZ,oBAAoB;CACpB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,iBAAiB;CACjB,gBAAgB;CAChB,kBAAkB;CAClB,cAAc;CACd,YAAY;CACZ;;AAED;CACC,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX;;AAED;CACC,aAAa;CACb,cAAc;CACd,mBAAmB;CACnB,YAAY;CACZ,YAAY;CACZ;;AAED;CACC,eAAe;CACf,aAAa;CACb,eAAe;CACf,mBAAmB;CACnB,UAAU;CACV,UAAU;CACV;;AAED;CACC,2BAA2B;CAC3B;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,aAAa;CACb;;AAED;CACC,YAAY;CACZ;;AAED,mCAAmC;;AAEnC;CACC,iBAAiB;CACjB;;AAED;CACC,uBAAuB;CACvB;;AAED;CACC,cAAc;CACd;;AAED;CACC,8BAA8B;CAC9B,aAAa;CACb,eAAe;CACf,2BAA2B;CAC3B,gBAAgB;CAChB,YAAY;CACZ,YAAY;CACZ;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,4BAA4B;CAC5B,8BAA8B;CAC9B,2BAA2B;CAC3B,iBAAiB;CACjB,iBAAiB;CACjB;;AAED;CACC,aAAa;CACb,kBAAkB;CAClB,kBAAkB;CAClB,mBAAmB;CACnB,iBAAiB;CACjB;;AAED;CACC,iBAAiB;CACjB,uBAAuB;CACvB;;AAED;CACC,WAAW;CACX;;AAED,mBAAmB;;AAEnB,oEAAoE;AACpE;;CAEC,wBAAwB;CACxB;;AAED;;CAEC,gCAAgC;CAChC;;AAED;;CAEC,+BAA+B;CAC/B;;AAED;;CAEC,wBAAwB;CACxB;;AAED,+BAA+B;AAC/B;CACC,mBAAmB;CACnB,cAAc;CACd,eAAe;CACf;;AAED;CACC,mBAAmB;CACnB,aAAa;CACb,YAAY;CACZ,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,YAAY;CACZ,mBAAmB;CACnB,gBAAgB;CAChB;;AAED;CACC,cAAc;CACd,eAAe;CACf,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB,mBAAmB;CACnB,YAAY;CACZ,YAAY;CACZ,eAAe;CACf;;AAED,8BAA8B;AAC9B;CACC,mBAAmB;CACnB,cAAc;CACd,cAAc;CACd,YAAY;CACZ,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB,OAAO;CACP,SAAS;CACT;;AAED;CACC,aAAa;CACb,YAAY;CACZ,eAAe;CACf;;AAED;CACC,aAAa;CACb,kBAAkB;CAClB;;AAED;CACC,cAAc;CACd;;AAED;CACC,gBAAgB;CAChB,WAAW;CACX,2BAA2B;CAC3B;;AAED;CACC,gBAAgB;CAChB,2BAA2B;CAC3B;;AAED;CACC,aAAa;CACb;;AAED;CACC,0BAA0B;CAC1B,0BAA0B;CAC1B,aAAa;CACb,uBAAuB;CACvB,kBAAkB;CAClB;;AAED;CACC,UAAU;CACV,WAAW;CACX;;AAED;CACC,uBAAuB;CACvB,YAAY;CACZ,uBAAuB;CACvB,aAAa;CACb,aAAa;CACb,kBAAkB;CAClB,mBAAmB;CACnB,YAAY;CACZ;;AAED;CACC,aAAa;CACb,8BAA8B;CAC9B,YAAY;CACZ,YAAY;CACZ,iBAAiB;CACjB,gBAAgB;CAChB,kBAAkB;CAClB;;AAED;CACC,uBAAuB;CACvB,YAAY;CACZ,uBAAuB;CACvB,gBAAgB;CAChB;;AAED;CACC,YAAY;CACZ,gBAAgB;CAChB;;AAED;CACC,aAAa;CACb,yBAAyB;CACzB;;AAED;CACC,wBAAwB;CACxB,0BAA0B;CAC1B;;AAED;CACC,eAAe;CACf;;AAED;CACC,wBAAwB;CACxB,cAAc;CACd;;AAED;CACC,oBAAoB;CACpB,aAAa;CACb;;AAED;CACC,YAAY;CACZ;;AAED;CACC,aAAa;CACb,oBAAoB;CACpB,uBAAuB;CACvB,cAAc;CACd;;AAED;CACC,wBAAwB;CACxB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,eAAe;CACf;;AAED;CACC,YAAY;CACZ;;AAED;CACC,qCAAqC;CACrC,kBAAkB;CAClB;;AAED;CACC,wBAAwB;CACxB,0BAA0B;CAC1B,gBAAgB;CAChB,wBAAwB;CACxB,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB,gBAAgB;CAChB,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,YAAY;CACZ,aAAa;CACb,gBAAgB;CAChB,eAAe;CACf;;AAED;CACC,aAAa;CACb;;AAED;CACC,WAAW;CACX;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,cAAc;CACd,aAAa;CACb;;AAED;CACC,UAAU;CACV,oBAAoB;CACpB,YAAY;CACZ;;AAED;CACC,gBAAgB;CAChB,YAAY;CACZ;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,YAAY;CACZ;;AAED;CACC,gBAAgB;CAChB,WAAW;CACX,gBAAgB;CAChB,kBAAkB;CAClB,YAAY;CACZ,mBAAmB;CACnB,aAAa;CACb,cAAc;CACd;;AAED;CACC,gBAAgB;CAChB,aAAa;CACb,gBAAgB;CAChB;;AAED;CACC,iBAAiB;CACjB,gBAAgB;CAChB,kBAAkB;CAClB,cAAc;CACd,YAAY;CACZ;;AAED;CACC,cAAc;CACd;;AAED;;CAEC;EACC,eAAe;EACf,YAAY;EACZ,mBAAmB;EACnB;;CAED;;AAED,oCAAoC;AACpC;CACC,WAAW;CACX;;AAED;CACC,aAAa;CACb;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,aAAa;CACb;;AAED;CACC,aAAa;CACb;;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;;AAEH;CACC,iBAAiB;CACjB;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,YAAY;CACZ,aAAa;CACb,mBAAmB;CACnB;;AAED;CACC,+BAA+B;CAC/B,uBAAuB;CACvB,wBAAwB;CACxB;;AAED;CACC,kBAAkB;CAClB,YAAY;CACZ,yBAAyB;CACzB;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,YAAY;CACZ,YAAY;CACZ,yBAAyB;CACzB;;AAED;CACC,aAAa;CACb;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,aAAa;CACb;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,0BAA0B;CAC1B,mBAAmB;CACnB,kBAAkB;CAClB;;AAED;CACC,kBAAkB;CAClB,eAAe;CACf;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,kBAAkB;CAClB,eAAe;CACf;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,kBAAkB;CAClB,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,uBAAuB;CACvB,aAAa;CACb,YAAY;CACZ,mBAAmB;CACnB;;AAED;CACC,wBAAwB;CACxB,iBAAiB;CACjB,gBAAgB;CAChB,oBAAoB;CACpB;;AAED;CACC,WAAW;CACX,aAAa;CACb,mBAAmB;CACnB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,WAAW;CACX;;AAED;CACC,cAAc;CACd,oBAAoB;CACpB;;AAED;CACC,cAAc;CACd,gBAAgB;CAChB,WAAW;CACX,SAAS;CACT,kBAAkB;CAClB,mBAAmB;CACnB,+BAA+B;CAC/B,aAAa;CACb;;AAED;CACC,YAAY;CACZ,gBAAgB;CAChB,mBAAmB;CACnB,mBAAmB;CACnB,gBAAgB;CAChB;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,gBAAgB;CAChB,mBAAmB;CACnB,mBAAmB;CACnB,gBAAgB;CAChB;;AAED;CACC,sBAAsB;CACtB,mBAAmB;CACnB,SAAS;CACT;;AAED;CACC,sBAAsB;CACtB,mBAAmB;CACnB,SAAS;CACT;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,aAAa;CACb;;AAED;CACC,mBAAmB;CACnB,2BAA2B;CAC3B;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB,eAAe;CACf;;AAED;CACC,cAAc;CACd;;AAED;CACC,cAAc;CACd,oBAAoB;CACpB,mBAAmB;CACnB;;AAED;CACC,wBAAwB;CACxB,aAAa;CACb;;AAED;CACC,oBAAoB;CACpB,iBAAiB;CACjB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,aAAa;CACb,aAAa;CACb;;AAED;CACC,YAAY;CACZ,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ,iBAAiB;CACjB;;AAED;CACC,aAAa;CACb,qBAAqB;CACrB;;AAED;CACC,iBAAiB;CACjB,iBAAiB;CACjB,mBAAmB;CACnB,gBAAgB;CAChB,aAAa;CACb,kBAAkB;CAClB,YAAY;CACZ,YAAY;CACZ;;AAED;CACC,iBAAiB;CACjB,gBAAgB;CAChB,aAAa;CACb,kBAAkB;CAClB,YAAY;CACZ,YAAY;CACZ;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,YAAY;CACZ,mBAAmB;CACnB,UAAU;CACV,SAAS;CACT,mBAAmB;CACnB,0BAA0B;CAC1B;;AAED;CACC,mBAAmB;CACnB,gBAAgB;CAChB,iBAAiB;CACjB,uBAAuB;CACvB,YAAY;CACZ,aAAa;CACb,mBAAmB;CACnB,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,YAAY;CACZ;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,WAAW;CACX,YAAY;CACZ,mBAAmB;CACnB;;AAED;CACC,gBAAgB;CAChB,kBAAkB;CAClB;;AAED;CACC,kBAAkB;CAClB,aAAa;CACb;;AAED;CACC,mBAAmB;CACnB,kBAAkB;CAClB,gBAAgB;CAChB;;AAED;CACC,WAAW;CACX,iBAAiB;CACjB;;AAED;CACC,iBAAiB;CACjB,kBAAkB;CAClB,WAAW;CACX;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,aAAa;CACb,WAAW;CACX,mBAAmB;CACnB;;AAED;CACC,aAAa;CACb,WAAW;CACX,mBAAmB;CACnB;;AAED;CACC,aAAa;CACb,uBAAuB;CACvB;;AAED;CAGC,uBAAuB;CACvB,iBAAiB;CACjB,WAAW;CACX;;AAED;CACC,YAAY;CACZ,aAAa;CACb,YAAY;CACZ;;AAED;CACC,UAAU;CACV,WAAW;CACX;;AAED;CACC,YAAY;CACZ,uBAAuB;CACvB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,aAAa;CACb,YAAY;CACZ;;AAED;CACC,YAAY;CACZ,aAAa;CACb,YAAY;CACZ;;AAED;CACC,UAAU;CACV,WAAW;CACX;;AAED;CACC,YAAY;CACZ,uBAAuB;CACvB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,kBAAkB;CAClB,YAAY;CACZ,YAAY;CACZ;;AAED;CACC,gBAAgB;CAChB,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,aAAa;CACb,YAAY;CACZ;;AAED;CACC,YAAY;CACZ,aAAa;CACb,YAAY;CACZ;;AAED;CACC,YAAY;CACZ,aAAa;CACb;;AAED;CACC,YAAY;CACZ,uBAAuB;CACvB;;AAED;CACC,2BAA2B;CAC3B;;AAED;CACC,4BAA4B;CAC5B;;AAED;CACC,4BAA4B;CAC5B;;AAED;CACC,4BAA4B;CAC5B;;AAED;CACC,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,qBAAqB;CACrB;;AAED;;GAEG;;AAEH;CACC,eAAe;CACf,WAAW;CACX;;AAED;CACC,eAAe;CACf;;AAED,6BAA6B;AAC7B;CACC,YAAY;CACZ;;AAED;CACC,YAAY;CACZ;;AAED;CACC,gBAAgB;CAChB,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB,gBAAgB;CAChB;;AAED,aAAa;AACb,oHAAoH;;AAEpH;CACC,qBAAqB;CACrB,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB,iBAAiB;CACjB,cAAc;CACd,aAAa;CACb;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,WAAW;CACX;;AAED,iBAAiB;;AAEjB;CACC,0BAA0B;CAC1B,cAAc;CACd,YAAY;CACZ;;AAED;CACC,aAAa;CACb,oBAAoB;CACpB,YAAY;CACZ,mBAAmB;CACnB;;AAED;CACC,sBAAsB;CACtB,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,WAAW;CACX,YAAY;CACZ;;AAED;CACC,WAAW;CACX,YAAY;CACZ,mBAAmB;CACnB,aAAa;CACb,iBAAiB;CACjB;;AAED;CACC,6BAA6B;CAC7B,aAAa;CACb,mBAAmB;CACnB;;AAED;CACC,aAAa;CACb;;AAED,qBAAqB;;AAErB,iBAAiB;;AAEjB;CACC,YAAY;CACZ,mBAAmB;CACnB,oBAAoB;CACpB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,aAAa;CACb,cAAc;CACd,uBAAuB;CACvB,sBAAsB;CACtB,eAAe;CACf,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,aAAa;CACb,cAAc;CACd;;AAED;CACC,WAAW;CACX,gBAAgB;CAChB,6BAA6B;CAC7B;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,WAAW;CACX,eAAe;CACf,mBAAmB;CACnB;;AAED;CACC,YAAY;CACZ,uBAAuB;CACvB,iBAAiB;CACjB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,cAAc;CACd,aAAa;CACb,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB,eAAe;CACf,sBAAsB;CACtB,6BAA6B;CAC7B,mBAAmB;CACnB,WAAW;CACX,WAAW;CACX;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,uBAAuB;CACvB,gBAAgB;CAChB;;AAED,qBAAqB;;AAErB,oBAAoB;;AAEpB;CACC,iBAAiB;CACjB,YAAY;CACZ,eAAe;CACf,eAAe;CACf;;AAED;CACC,wBAAwB;CACxB,eAAe;CACf,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB,kBAAkB;CAClB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,aAAa;CACb,cAAc;CACd,uBAAuB;CACvB,sBAAsB;CACtB,eAAe;CACf,mBAAmB;CACnB,iBAAiB;CACjB,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,iBAAiB;CACjB,kBAAkB;CAClB;;AAED;CACC,YAAY;CACZ,aAAa;CACb,gBAAgB;CAChB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,aAAa;CACb,aAAa;CACb;;AAED;CACC,WAAW;CACX,aAAa;CACb;;AAED;CACC,gBAAgB;CAChB,eAAe;CACf,sBAAsB;CACtB,6BAA6B;CAC7B,mBAAmB;CACnB,WAAW;CACX,WAAW;CACX;;AAED;CACC,gBAAgB;CAChB,uBAAuB;CACvB;;AAED;CACC,YAAY;CACZ,uBAAuB;CACvB,iBAAiB;CACjB;;AAED;CACC,mBAAmB;CACnB;;AAED;;CAEC,iBAAiB;CACjB;;AAED;CACC,iBAAiB;CACjB;;AAED,wBAAwB;;;AAGxB,mFAAmF;;AAEnF;CACC,eAAe;CACf;;AAED;CACC,mBAAmB;CACnB,kBAAkB;CAClB;;AAED;CACC,mBAAmB;CACnB,oBAAoB;CACpB;;AAED;CACC,eAAe;CACf,sBAAsB;CACtB,eAAe;CACf,eAAe;CACf;;AAED;CACC,YAAY;CACZ,mBAAmB;CACnB;;AAED,gCAAgC;;AAEhC;CACC,mBAAmB;CACnB;;AAED;CACC,YAAY;CACZ,WAAW;CACX,mBAAmB;CACnB,qBAAqB;CACrB;;AAED;CACC,aAAa;CACb,kBAAkB;CAClB;;AAED;CACC,YAAY;CACZ;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,2BAA2B;CAC3B,qBAAqB;CACrB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,aAAa;CACb;;AAED;CACC,aAAa;CACb;;AAED;CACC,UAAU;CACV,WAAW;CACX;;AAED;CACC,YAAY;CACZ;;AAED;CACC,YAAY;CACZ,WAAW;CACX,mBAAmB;CACnB,kBAAkB;CAClB;;AAED;CACC,gBAAgB;CAChB,kBAAkB;CAClB;;AAED;CACC,YAAY;CACZ,gBAAgB;CAChB;;AAED;CACC,YAAY;CACZ,gBAAgB;CAChB,mBAAmB;CACnB;;AAED,mCAAmC;AACnC;AACA,6BAA6B;AAC7B;iBACiB;AACjB,iBAAiB;CAChB,YAAY;CACZ,YAAY;CACZ,aAAa;CACb,cAAc;CACd;;AAED;CACC,YAAY;CACZ;;AAED;CACC,YAAY;CACZ,aAAa;CACb,2BAA2B;CAC3B,WAAW;CACX,aAAa;CACb,oBAAoB;CACpB;;AAED;CACC,sBAAsB;CACtB,eAAe;CACf,oBAAoB;CACpB,mBAAmB;CACnB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,eAAe;CACf,gBAAgB;CAChB;;AAED;CACC,iBAAiB;CACjB,0BAA0B;CAC1B,mBAAmB;CACnB,eAAe;CACf,sBAAsB;CACtB,6BAA6B;CAC7B,8BAA8B;CAC9B,2BAA2B;CAC3B,kBAAkB;CAClB,iBAAiB;CACjB,4BAA4B;CAC5B,0BAA0B;CAC1B,sBAAsB;CACtB;;AAED;CACC,0BAA0B;CAC1B,oBAAoB;CACpB,sBAAsB;CACtB,gBAAgB;CAChB,kBAAkB;CAClB,iBAAiB;CACjB,YAAY;CACZ,aAAa;CACb,mBAAmB;CACnB;;AAED;AACA;;;;;;;;;IASI;CACH;;AAED,uCAAuC;AACvC,6CAA6C;AAC7C;CACC,aAAa;CACb,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ,4CAA4C;CAC5C;;AAED;CACC,iBAAiB;CACjB,YAAY;CACZ,YAAY;CACZ,eAAe;CACf;;AAED;CACC,2BAA2B;CAC3B;;AAED;CACC,cAAc;CACd;;AAED;CACC,eAAe;CACf;;AAED;CACC,sBAAsB;CACtB,gBAAgB;CAChB,aAAa;CACb,YAAY;CACZ;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,0BAA0B;CAC1B;;AAED;CACC,0BAA0B;CAC1B,YAAY;CACZ;;AAED;CACC,0BAA0B;CAC1B,YAAY;CACZ;;AAED;CACC,wBAAwB;CACxB;;AAED;CACC,2BAA2B;CAC3B;;AAED;;CAEC;EACC,YAAY;EACZ,aAAa;EACb,2CAA2C;EAC3C,oBAAoB;EACpB;;CAED;EACC,mBAAmB;EACnB,iBAAiB;EACjB;;CAED;EACC,eAAe;EACf;;CAED","file":"admin.min.css","sourcesContent":["/* General things used by many things */\n\n/* Widths and sizing */\n.max-width-600 {\n\tmax-width: 600px;\n}\n\n.width-900 {\n\twidth: 900px;\n}\n\n.width-80 {\n\twidth: 80%;\n}\n\n/* End widths and sizing */\n\n/* Font styling */\n.no-decoration {\n\ttext-decoration: none;\n}\n\n.bold {\n\tfont-weight: bold;\n}\n\n/* End font styling */\n/* Alignment */\n.center-align-td {\n\ttext-align: center;\n}\n\n/* End of Alignment */\n/* Padding */\n.remove-padding {\n\tpadding: 0 !important;\n}\n\n/* End of padding */\n\n.updraft-text-center {\n\ttext-align: center;\n}\n\n.autobackup {\n\tpadding: 6px;\n\tmargin: 8px 0px;\n}\n\nul .disc {\n\tlist-style: disc inside;\n}\n\n.dashicons-log-fix {\n\tdisplay: inherit;\n}\n\n/* Input boxes */\n\ninput {\n\tborder-radius: 4px;\n\tline-height: 1.42;\n\tborder: 1px solid #CCC;\n\theight: 27px;\n\tpadding: 2px 6px;\n\tcolor: #555;\n}\n\ninput[type=\"text\"] {\n\tfont-size: 14px;\n}\n\ninput[type=\"number\"] {\n\theight: 31px;\n}\n\nselect {\n\tborder-radius: 4px;\n}\n\n/* End input boxes */\n\n/* Main Buttons */\n.main-dashboard-buttons {\n\tborder-width: 4px;\n\tborder-radius: 12px;\n\tletter-spacing: 0px;\n\tfont-size: 17px;\n\tfont-weight: bold;\n\tpadding-left: 0.7em;\n\tpadding-right: 2em;\n\tpadding: 0.3em 1em;\n\tline-height: 1.7em;\n\tbackground: transparent;\n\tposition: relative;\n\tborder: 2px solid;\n\ttransition: all 0.2s;\n\tvertical-align: baseline;\n\tbox-sizing: border-box;\n\ttext-align: center;\n\tline-height: 1.3em;\n\tmargin-left: .3em;\n\ttext-transform: none;\n\tline-height: 1;\n\ttext-decoration: none;\n}\n\n.button-restore {\n\tborder-color: rgb(98, 158, 192);\n\tcolor: rgb(98, 158, 192);\n}\n\n.dashboard-main-sizing {\n\tborder-width: 4px;\n\twidth: 190px;\n\tline-height: 1.7em;\n}\n\n.button-restore:hover, .button-migrate:hover, .button-backup:hover,\n.button-view-log:hover, .button-mass-selectors:hover,\n.button-delete:hover, .button-entity-backup:hover, .udp-button-primary:hover {\n\tborder-color: #DF6926;\n\tcolor: #DF6926;\n}\n\n.button-migrate {\n\tcolor: rgb(238, 169, 32);\n\tborder-color: rgb(238, 169, 32);\n}\n\n.button-backup {\n\tborder-color: #84CA1B;\n\tcolor: #84CA1B;\n}\n\n.existing-backups-buttons {\n\tfont-size: 11px;\n\tline-height: 1.4em;\n\tborder-width: 3px;\n}\n\n.existing-backups-restore-buttons {\n\tfont-size: 11px;\n\tline-height: 1.4em;\n\tborder-width: 3px;\n}\n\n.button-delete {\n\tcolor: #E23900;\n\tborder-color: #E23900;\n\tfont-size: 14px;\n\tline-height: 1.4em;\n\tborder-width: 2px;\n\tmargin-right: 10px;\n}\n\n.button-view-log, .button-mass-selectors {\n\tcolor: darkgrey;\n\tborder-color: darkgrey;\n\tfont-size: 14px;\n\tline-height: 1.4em;\n\tborder-width: 2px;\n\tmargin-top: -1px;\n}\n\n.button-view-log {\n\twidth: 120px;\n}\n\n.button-existing-restore {\n\tfont-size: 14px;\n\tline-height: 1.4em;\n\tborder-width: 2px;\n\twidth: 110px;\n}\n\n.main-restore {\n\tmargin-right: 3%;\n\tmargin-left: 3%;\n}\n\n.button-entity-backup {\n\tcolor: #555;\n\tborder-color: #555;\n\tfont-size: 11px;\n\tline-height: 1.4em;\n\tborder-width: 2px;\n\tmargin-right: 5px;\n}\n\n.button-select-all {\n\twidth: 122px;\n}\n\n.button-deselect {\n\twidth: 92px;\n}\n\n#ud_massactions > .display-flex > .mass-selectors-margins {\n\tmargin-right: -4px;\n}\n\n.udp-button-primary {\n\tborder-width: 4px;\n\tcolor: #0073AA;\n\tborder-color: #0073AA;\n\tfont-size: 14px;\n\theight: 40px;\n}\n\n#ud_massactions .button-delete {\n\tmargin-right: 0px;\n}\n\n.stored_local {\n\tborder-radius: 5px;\n\tbackground-color: #007FE7;\n\tpadding: 3px 5px 5px 5px;\n\tcolor: #FFF;\n\tfont-size: 75%;\n}\n\n.form-table td.updraft_existingbackup_date {\n\tpadding-bottom: 5px;\n}\n\n.stored_icon {\n\theight: 1.3em;\n\tposition: relative;\n\ttop: 0.2em;\n}\n\n.backup_date_label .clear-right {\n\tclear: right;\n}\n\n/* End Main Buttons */\n\n/* End of common elements */\n\n.udp-logo-70 {\n\twidth: 70px;\n\theight: 70px;\n\tfloat: left;\n\tpadding-right: 25px;\n}\n\nh3 .thank-you {\n\tmargin-top: 0px;\n}\n\n.ws_advert {\n\tmax-width: 800px;\n\tfont-size: 140%;\n\tline-height: 140%;\n\tpadding: 14px;\n\tclear: left;\n}\n\n.dismiss-dash-notice {\n\tfloat: right;\n\tposition: relative;\n\ttop: -20px;\n}\n\n#updraft_report_cell .updraft_reportbox {\n\tpadding: 8px;\n\tmargin: 8px 0;\n\tborder: 1px dotted;\n\tclear: left;\n\tfloat: left;\n}\n\n#updraft_report_cell button.updraft_reportbox_delete {\n\tfont-size: 50%;\n\tfloat: right;\n\tpadding: 0 3px;\n\tposition: relative;\n\ttop: -4px;\n\tleft: 4px;\n}\n\n#updraft-navtab-settings-content .updraft-test-button {\n\tfont-size: 18px !important;\n}\n\n#updraft_report_cell .updraft_report_checkbox {\n\tmargin-top: 4px;\n}\n\n#updraft_report_cell .updraft_report_email {\n\twidth: 300px;\n}\n\n#updraft_report_cell .updraft_report_another_p {\n\tclear: left;\n}\n\n/* Taken straight from admin.php */\n\n#updraft-navtab-settings-content table.form-table p {\n\tmax-width: 700px;\n}\n\n#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected {\n\tbackground-color: #CCC;\n}\n\n.updraft_settings_sectionheading {\n\tdisplay: none;\n}\n\n.updraft-backupentitybutton-disabled {\n\tbackground-color: transparent;\n\tborder: none;\n\tcolor: #0074A2;\n\ttext-decoration: underline;\n\tcursor: pointer;\n\tclear: none;\n\tfloat: left;\n}\n\n.updraft-backupentitybutton {\n\tmargin-left: 8px;\n}\n\n.updraft-bigbutton {\n\tpadding: 2px 0px !important;\n\tmargin-right: 14px !important;\n\tfont-size: 22px !important;\n\tmin-height: 32px;\n\tmin-width: 180px;\n}\n\n.updraft_debugrow th {\n\tfloat: right;\n\ttext-align: right;\n\tfont-weight: bold;\n\tpadding-right: 8px;\n\tmin-width: 140px;\n}\n\n.updraft_debugrow td {\n\tmin-width: 300px;\n\tvertical-align: bottom;\n}\n\n#updraft_webdav_host_error {\n\tcolor: red;\n}\n\n/* jstree styles */\n\n/* these styles hide the dots from the parent but keep the arrows */\n#updraft_zip_files_jstree .jstree-container-ul > .jstree-node,\n#updraft_more_files_jstree .jstree-container-ul > .jstree-node {\n\tbackground: transparent;\n}\n\n#updraft_zip_files_jstree .jstree-container-ul > .jstree-open > .jstree-ocl,\n#updraft_more_files_jstree .jstree-container-ul > .jstree-open > .jstree-ocl {\n\tbackground-position: -36px -4px;\n}\n\n#updraft_zip_files_jstree .jstree-container-ul > .jstree-closed> .jstree-ocl,\n#updraft_more_files_jstree .jstree-container-ul > .jstree-closed> .jstree-ocl {\n\tbackground-position: -4px -4px;\n}\n\n#updraft_zip_files_jstree .jstree-container-ul > .jstree-leaf> .jstree-ocl,\n#updraft_more_files_jstree .jstree-container-ul > .jstree-leaf> .jstree-ocl {\n\tbackground: transparent;\n}\n\n/* zip browser jstree styles */\n#updraft_zip_files_container {\n\tposition: relative;\n\theight: 450px;\n\toverflow: none;\n}\n\n#updraft_zip_info_container {\n\tposition: relative;\n\theight: auto;\n\twidth: 100%;\n\tborder: 1px dotted;\n\tmargin-bottom: 5px;\n}\n\n#updraft_zip_info_container p {\n\tmargin: 1px;\n\tpadding-left: 10px;\n\tfont-size: 14px;\n}\n\n#updraft_zip_download_item {\n\tdisplay: none;\n\tcolor: #0073AA;\n\tpadding-left: 10px;\n}\n\n#updraft_zip_download_notice {\n\tpadding-left: 10px;\n}\n\n#updraft_zip_files_jstree_container {\n\tposition: relative;\n\tborder: 1px dotted;\n\theight: 80%;\n\twidth: 100%;\n\toverflow: auto;\n}\n\n/* More files jstree styles */\n#updraft_more_files_container {\n\tposition: relative;\n\tdisplay: none;\n\theight: 300px;\n\twidth: 100%;\n\tborder: 1px dotted;\n\tmargin-bottom: 5px;\n}\n\n#updraft_jstree_buttons {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n}\n\n#updraft_jstree_container {\n\theight: 100%;\n\twidth: 100%;\n\toverflow: auto;\n}\n\n#updraft_more_files_container button {\n\theight: 22px;\n\tline-height: 20px;\n}\n\n#updraft_jstree_confirm, #updraft_jstree_cancel {\n\tdisplay: none;\n}\n\n.updraftplus-morefiles-row-delete {\n\tcursor: pointer;\n\tcolor: red;\n\tfont-size: 23px !important;\n}\n\n.updraftplus-morefiles-row-edit {\n\tcursor: pointer;\n\tfont-size: 24px !important;\n}\n\n#updraft-wrap .form-table th {\n\twidth: 230px;\n}\n\n.updraftplus-remove {\n\tbackground-color: #C00000;\n\tborder: 1px solid #C00000;\n\theight: 22px;\n\tpadding: 4px 3px 0 3px;\n\tmargin-right: 6px;\n}\n\n.updraft-viewlogdiv form {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.updraft-viewlogdiv {\n\tbackground-color: #FFF;\n\tcolor: #000;\n\tborder: 1px solid #000;\n\theight: 26px;\n\tpadding: 0px;\n\tmargin: 0 4px 0 0;\n\tborder-radius: 3px;\n\tfloat: left;\n}\n\n.updraft-viewlogdiv input, .updraft-viewlogdiv a {\n\tborder: none;\n\tbackground-color: transparent;\n\tcolor: #000;\n\tmargin: 0px;\n\tpadding: 3px 4px;\n\tfont-size: 16px;\n\tline-height: 26px;\n}\n\n.updraft-viewlogdiv:hover {\n\tbackground-color: #000;\n\tcolor: #FFF;\n\tborder: 1px solid #FFF;\n\tcursor: pointer;\n}\n\n.updraft-viewlogdiv input:hover, .updraft-viewlogdiv a:hover {\n\tcolor: #FFF;\n\tcursor: pointer;\n}\n\n.updraftplus-remove a {\n\tcolor: white;\n\tpadding: 4px 4px 0px 4px;\n}\n\n.updraftplus-remove:hover {\n\tbackground-color: white;\n\tborder: 1px solid #C00000;\n}\n\n.updraftplus-remove a:hover {\n\tcolor: #C00000;\n}\n\n.drag-drop #drag-drop-area2 {\n\tborder: 4px dashed #DDD;\n\theight: 200px;\n}\n\n#drag-drop-area2 .drag-drop-inside {\n\tmargin: 36px auto 0;\n\twidth: 350px;\n}\n\n#filelist, #filelist2 {\n\twidth: 100%;\n}\n\n#filelist .file, #filelist2 .file, .ud_downloadstatus .file, #ud_downloadstatus2 .file {\n\tpadding: 5px;\n\tbackground: #ECECEC;\n\tborder: solid 1px #CCC;\n\tmargin: 4px 0;\n}\n\nul.updraft_premium_description_list {\n\tlist-style: disc inside;\n}\n\nul.updraft_premium_description_list li {\n\tdisplay: inline;\n}\n\nul.updraft_premium_description_list li::after {\n\tcontent: \" | \";\n}\n\nul.updraft_premium_description_list li.last::after {\n\tcontent: \"\";\n}\n\n.updraft_feature_cell {\n\tbackground-color: #F7D9C9 !important;\n\tpadding: 5px 10px;\n}\n\n.updraft_feat_table, .updraft_feat_th, .updraft_feat_table td {\n\tborder: 1px solid black;\n\tborder-collapse: collapse;\n\tfont-size: 120%;\n\tbackground-color: white;\n\ttext-align: center;\n}\n\n.updraft_feat_table p {\n\tpadding: 0px 10px;\n\tmargin: 5px 0px;\n\tfont-size: 16px;\n}\n\n.updraft_feat_table h4 {\n\tmargin: 5px 0px;\n}\n\n.updraft_feat_table .dashicons {\n\twidth: 25px;\n\theight: 25px;\n\tfont-size: 25px;\n\tline-height: 1;\n}\n\n.updraft_feat_table .dashicons-yes, .updraft_feat_table .updraft-yes {\n\tcolor: green;\n}\n\n.updraft_feat_table .dashicons-no-alt, .updraft_feat_table .updraft-no {\n\tcolor: red;\n}\n\n.updraft_tick_cell {\n\ttext-align: center;\n}\n\n.updraft_tick_cell img {\n\tmargin: 4px 0;\n\theight: 24px;\n}\n\n#filelist .fileprogress, #filelist2 .fileprogress, .ud_downloadstatus .dlfileprogress, #ud_downloadstatus2 .dlfileprogress {\n\twidth: 0%;\n\tbackground: #F6A828;\n\theight: 5px;\n}\n\n.ud_downloadstatus .raw, #ud_downloadstatus2 .raw {\n\tmargin-top: 8px;\n\tclear: left;\n}\n\n.ud_downloadstatus .file, #ud_downloadstatus2 .file {\n\tmargin-top: 8px;\n}\n\ntr.updraftplusmethod h3 {\n\tmargin: 0px;\n}\n\n#updraft_retain_db_rules .updraft_retain_rules_delete, #updraft_retain_files_rules .updraft_retain_rules_delete {\n\tcursor: pointer;\n\tcolor: red;\n\tfont-size: 120%;\n\tfont-weight: bold;\n\tborder: 0px;\n\tborder-radius: 3px;\n\tpadding: 2px;\n\tmargin: 0 6px;\n}\n\n#updraft_retain_db_rules .updraft_retain_rules_delete:hover, #updraft_retain_files_rules .updraft_retain_rules_delete:hover {\n\tcursor: pointer;\n\tcolor: white;\n\tbackground: red;\n}\n\n#updraft_backup_started {\n\tmax-width: 800px;\n\tfont-size: 140%;\n\tline-height: 140%;\n\tpadding: 14px;\n\tclear: left;\n}\n\n.udp-premium-image {\n\tdisplay: none;\n}\n\n@media screen and (min-width: 720px) {\n\n\t.udp-premium-image {\n\t\tdisplay: block;\n\t\tfloat: left;\n\t\tpadding-right: 5px;\n\t}\n\n}\n\n/* End stuff already in admin.php */\n#plupload-upload-ui2 {\n\twidth: 80%;\n}\n\n.backup-restored {\n\tpadding: 8px;\n}\n\n.backup-restored span {\n\tfont-size: 120%;\n}\n\n.memory-limit {\n\tpadding: 8px;\n}\n\n.updraft_list_errors {\n\tpadding: 8px;\n}\n\n/*.nav-tab {\n\tborder-radius: 20px 20px 0 0;\n\tborder-color: grey;\n\tborder-width: 2px;\n\tmargin-top: 34px;\n}\n\n.nav-tab:hover {\n\tborder-bottom: 0;\n}\n\n.nav-tab-active, .nav-tab-active:active {\n\tcolor: #df6926;\n\tborder-color: #D3D3D3;\n\tborder-width: 1px;\n\tborder-bottom: 0;\n}\n\n.nav-tab-active:focus {\n\tcolor: #df6926;\n}*/\n\n.nav-tab-wrapper {\n\tmargin: 14px 0px;\n}\n\n#updraft-poplog-content {\n\twhite-space: pre-wrap;\n}\n\n.next-backup {\n\tborder: 0px;\n\tpadding: 0px;\n\tmargin: 0 10px 0 0;\n}\n\n.not-scheduled {\n\tvertical-align: top !important;\n\tmargin: 0px !important;\n\tpadding: 0px !important;\n}\n\n.next-backup .updraft_scheduled {\n\t/* width: 124px;*/\n\tmargin: 0px;\n\tpadding: 2px 4px 2px 0px;\n}\n\n#next-backup-table-inner td {\n\tvertical-align: top;\n}\n\n.next-backup .updraft_all-files {\n\tcolor: blue;\n\tmargin: 0px;\n\tpadding: 2px 0px 0px 0px;\n}\n\n.multisite-advert-width {\n\twidth: 800px;\n}\n\n.updraft_settings_sectionheading {\n\tmargin-top: 6px;\n}\n\n.premium-upgrade-prompt {\n\tfont-size: 115%;\n}\n\n.updraft_feat_table {\n\tmargin-top: 30px;\n}\n\n.show_admin_restore_in_progress_notice {\n\tpadding: 8px;\n}\n\n.show_admin_restore_in_progress_notice .unfinished-restoration {\n\tfont-size: 120%;\n}\n\n#backupnow_includefiles_moreoptions, #backupnow_database_moreoptions {\n\tmargin: 4px 16px 6px 16px;\n\tborder: 1px dotted;\n\tpadding: 6px 10px;\n}\n\n#backupnow_database_moreoptions {\n\tmax-height: 250px;\n\toverflow: auto;\n}\n\n.form-table #updraft_activejobsrow .minimum-height {\n\tmin-height: 100px;\n}\n\n#updraft_lastlogmessagerow .last-message {\n\tpadding-top: 20px;\n\tdisplay: block;\n}\n\n.updraft_simplepie {\n\tvertical-align: top;\n}\n\n.download-backups {\n\tmargin-top: 8px;\n}\n\n.download-backups .updraft_download_button {\n\tmargin-right: 6px;\n\tmargin-top: 4px;\n}\n\n.download-backups .choose-components-button {\n\tfont-size: 16px;\n}\n\n.download-backups .ud-whitespace-warning {\n\tbackground-color: pink;\n\tpadding: 8px;\n\tmargin: 4px;\n\tborder: 1px dotted;\n}\n\n.download-backups .ul {\n\tlist-style: none inside;\n\tmax-width: 800px;\n\tmargin-top: 6px;\n\tmargin-bottom: 12px;\n}\n\n#updraft-plupload-modal {\n\twidth: 75%;\n\tmargin: 16px;\n\tmargin-left: 100px;\n}\n\n.download-backups .upload {\n\tmax-width: 610px;\n}\n\n.download-backups #plupload-upload-ui {\n\twidth: 70%;\n}\n\n.ud_downloadstatus {\n\tpadding: 10px;\n\tbackground: #F1F1F1;\n}\n\n#ud_massactions {\n\tpadding: 14px;\n\tposition: fixed;\n\tright: 25%;\n\ttop: 25%;\n\tborder: 2px solid;\n\tborder-radius: 4px;\n\tbackground: rgb(241, 241, 241);\n\tfloat: right;\n}\n\n#ud_massactions .updraftplus-remove {\n\tclear: left;\n\tfont-size: 16px;\n\ttext-align: center;\n\tborder-radius: 4px;\n\tmargin-top: 4px;\n}\n\n#ud_massactions .updraftplus-remove a {\n\ttext-decoration: none;\n}\n\n#ud_massactions .updraft-viewlogdiv {\n\tfont-size: 16px;\n\ttext-align: center;\n\tborder-radius: 4px;\n\tmargin-top: 4px;\n}\n\n#ud_massactions .updraft-viewlogdiv a {\n\ttext-decoration: none;\n\tposition: relative;\n\ttop: 3px;\n}\n\n#ud_massactions .updraft-viewlogdiv a {\n\ttext-decoration: none;\n\tposition: relative;\n\ttop: 3px;\n}\n\n#updraft-navtab-backups-content .updraft_existing_backups {\n\tmargin-bottom: 12px;\n}\n\n#updraft-message-modal-innards {\n\tpadding: 4px;\n}\n\n#updraft-authenticate-modal {\n\ttext-align: center;\n\tfont-size: 16px !important;\n}\n\n#updraft-authenticate-modal p {\n\tfont-size: 16px;\n}\n\n#updraft_delete_form p {\n\tmargin-top: 3px;\n\tpadding-top: 0;\n}\n\n#updraft_restore_form .cannot-restore {\n\tmargin: 8px 0;\n}\n\n#updraft_restorer_dboptions {\n\tpadding: 12px;\n\tmargin: 8px 0 4px 0;\n\tborder: dashed 1px;\n}\n\n#updraft_restorer_dboptions h4 {\n\tmargin: 0px 0px 6px 0px;\n\tpadding: 0px;\n}\n\n.updraft_debugrow th {\n\tvertical-align: top;\n\tpadding-top: 6px;\n}\n\n.expertmode p {\n\tfont-size: 125%;\n}\n\n.expertmode .call-wp-action {\n\twidth: 300px;\n\theight: 22px;\n}\n\n.updraftplus-lock-advert {\n\tclear: left;\n\tmax-width: 600px;\n}\n\n.uncompressed-data {\n\tclear: left;\n\tmax-width: 600px;\n}\n\n.delete-old-directories {\n\tpadding: 8px;\n\tpadding-bottom: 12px;\n}\n\n.active-jobs {\n\tmin-width: 480px;\n\tmin-height: 48px;\n\ttext-align: center;\n\tmargin-top: 4px;\n\tpadding: 8px;\n\tborder: 1px solid;\n\tfloat: left;\n\tclear: left;\n}\n\n.job-id {\n\tmin-width: 480px;\n\tmargin-top: 4px;\n\tpadding: 8px;\n\tborder: 1px solid;\n\tclear: left;\n\tfloat: left;\n}\n\n.next-resumption {\n\tfont-weight: bold;\n}\n\n.updraft_percentage {\n\tz-index: -1;\n\tposition: absolute;\n\tleft: 0px;\n\ttop: 0px;\n\ttext-align: center;\n\tbackground-color: #F6A828;\n}\n\n.curstage {\n\tborder-radius: 4px;\n\tmargin-top: 8px;\n\tpadding-top: 4px;\n\tborder: 1px solid #AAA;\n\twidth: 100%;\n\theight: 22px;\n\tposition: relative;\n\ttext-align: center;\n\tfont-style: italic;\n}\n\n.retain-files {\n\twidth: 48px;\n}\n\n.backup-interval-description tr td div {\n\tmax-width: 670px;\n}\n\n#updraft-manualdecrypt-modal {\n\twidth: 85%;\n\tmargin: 6px;\n\tmargin-left: 100px;\n}\n\n.directory-permissions {\n\tfont-size: 110%;\n\tfont-weight: bold;\n}\n\n.double-warning {\n\tborder: 1px solid;\n\tpadding: 6px;\n}\n\n.raw-backup-info {\n\tfont-style: italic;\n\tfont-weight: bold;\n\tfont-size: 120%;\n}\n\n.updraft_existingbackup_date {\n\twidth: 22%;\n\tmax-width: 140px;\n}\n\n.existing-backups-table {\n\tmargin-top: 20px;\n\tmargin-left: 20px;\n\twidth: 80%;\n}\n\n.tr-bottom-4 {\n\tmargin-bottom: 4px;\n}\n\n.form-table .backup-date {\n\twidth: 172px;\n\tpadding: 0;\n\tpadding-left: 15px;\n}\n\n.form-table .backup-data {\n\twidth: 426px;\n\tpadding: 0;\n\tpadding-left: 15px;\n}\n\n.form-table .updraft_backup_actions {\n\twidth: 272px;\n\tpadding: 0 0 10px 15px;\n}\n\n.existing-date {\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\tbox-sizing: border-box;\n\tmax-width: 140px;\n\twidth: 25%;\n}\n\n.line-break-tr {\n\theight: 2px;\n\tpadding: 1px;\n\tmargin: 0px;\n}\n\n.line-break-td {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.td-line-color {\n\theight: 2px;\n\tbackground-color: #888;\n}\n\n.raw-backup {\n\tmax-width: 140px;\n}\n\n.existing-backups-actions {\n\tpadding: 1px;\n\tmargin: 0px;\n}\n\n.existing-backups-border {\n\theight: 2px;\n\tpadding: 1px;\n\tmargin: 0px;\n}\n\n.existing-backups-border > td {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.existing-backups-border > div {\n\theight: 2px;\n\tbackground-color: #AAA;\n}\n\n.updraft_existing_backup_date {\n\tmax-width: 140px;\n}\n\n.restore-button {\n\tmargin-right: 6px;\n\tfloat: left;\n\tclear: none;\n}\n\n.updraftplus-remove {\n\tfont-size: 16px;\n\ttext-align: center;\n\tborder-radius: 4px;\n}\n\n.before-restore-button {\n\tpadding: 1px;\n\tmargin: 0px;\n}\n\n.table-separator-tr {\n\theight: 2px;\n\tpadding: 1px;\n\tmargin: 0px;\n}\n\n.table-separator-td {\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n.end-of-table-div {\n\theight: 2px;\n\tbackground-color: #AAA;\n}\n\n.last-backup-job {\n\tpadding-top: 3% !important;\n}\n\n.line-height-03 {\n\tline-height: 0.3 !important;\n}\n\n.line-height-13 {\n\tline-height: 1.3 !important;\n}\n\n.line-height-23 {\n\tline-height: 2.3 !important;\n}\n\n#updraft_diskspaceused {\n\tcolor: #DF6926;\n}\n\n.updraft_premium_description_list {\n\ttext-align: left;\n}\n\n#updraft_delete_old_dirs_pagediv {\n\tpadding-bottom: 10px;\n}\n\n/*#updraft_lastlogmessagerow > td, #updraft_last_backup > td {\n\tpadding: 0;\n}*/\n\n.job-id {\n\tmargin: 0 auto;\n\twidth: 20%;\n}\n\n.updraft_all-files {\n\tcolor: #DF6926;\n}\n\n/* Time + scheduling add-on*/\n.fix-time {\n\twidth: 70px;\n}\n\n.retain-files {\n\twidth: 70px;\n}\n\n.number-input {\n\tmin-width: 50px;\n\tmax-width: 70px;\n}\n\n.additional-rule-width {\n\tmin-width: 60px;\n\tmax-width: 70px;\n}\n\n/* Add-ons */\n/* Want to fix the WordPress icons so that they fit inline with the text, and don't push everything out of place. */\n\n.dashicons {\n\tline-height: inherit;\n\tfont-size: inherit;\n}\n\n.addon-logo-150 {\n\tmargin-left: 30px;\n\tmargin-top: 33px;\n\theight: 125px;\n\twidth: 150px;\n}\n\n.margin-bottom-50 {\n\tmargin-bottom: 50px;\n}\n\n.premium-container {\n\twidth: 80%;\n}\n\n/* Main Header */\n\n.main-header {\n\tbackground-color: #DF6926;\n\theight: 200px;\n\twidth: 100%;\n}\n\n.button-add-to-cart {\n\tcolor: white;\n\tborder-color: white;\n\tfloat: none;\n\tmargin-right: 17px;\n}\n\n.button-add-to-cart:hover, .button-add-to-cart:focus, .button-add-to-cart:active {\n\tborder-color: #A0A5AA;\n\tcolor: #A0A5AA;\n}\n\n.addon-title {\n\tmargin-top: 25px;\n}\n\n.addon-text {\n\tmargin-top: 75px;\n}\n\n.image-main-div {\n\twidth: 25%;\n\tfloat: left;\n}\n\n.text-main-div {\n\twidth: 60%;\n\tfloat: left;\n\ttext-align: center;\n\tcolor: white;\n\tmargin-top: 16px;\n}\n\n.text-main-div-title {\n\tfont-weight: bold !important;\n\tcolor: white;\n\ttext-align: center;\n}\n\n.text-main-div-paragraph {\n\tcolor: white;\n}\n\n/* End main header */\n\n/* Vault icons */\n\n.updraftplus-vault-cta {\n\twidth: 100%;\n\ttext-align: center;\n\tmargin-bottom: 50px;\n}\n\n.updraftplus-vault-cta h1 {\n\tfont-weight: bold;\n}\n\n.updraftvault-buy {\n\twidth: 225px;\n\theight: 225px;\n\tborder: 2px solid #777;\n\tdisplay: inline-table;\n\tmargin: 0 auto;\n\tmargin-right: 50px;\n\tposition: relative;\n}\n\n.updraftplus-vault-cta > .vault-options > .center-vault {\n\twidth: 275px;\n\theight: 275px;\n}\n\n.updraftplus-vault-cta > .vault-options > .center-vault > a {\n\tright: 21%;\n\tfont-size: 16px;\n\tborder-width: 4px !important;\n}\n\n.updraftplus-vault-cta > .vault-options > .center-vault > p {\n\tfont-size: 16px;\n}\n\n.updraftvault-buy .button-purchase {\n\tright: 24%;\n\tmargin-left: 0;\n\tline-height: 1.7em;\n}\n\n.updraftvault-buy hr {\n\theight: 2px;\n\tbackground-color: #777;\n\tmargin-top: 18px;\n}\n\n.right {\n\tmargin-right: 0px;\n}\n\n.updraftvault-buy .addon-logo-100 {\n\theight: 100px;\n\twidth: 125px;\n\tmargin-top: 7px;\n}\n\n.updraftvault-buy .addon-logo-large {\n\tmargin-top: 7px;\n}\n\n.updraftvault-buy .button-buy-vault {\n\tfont-size: 12px;\n\tcolor: #DF6926;\n\tborder-color: #DF6926;\n\tborder-width: 2px !important;\n\tposition: absolute;\n\tright: 29%;\n\tbottom: 2%;\n}\n\n.premium-addon-div .button-purchase {\n\tline-height: 1.7em;\n}\n\n.updraftvault-buy .button-buy-vault:hover {\n\tborder-color: darkgrey;\n\tcolor: darkgrey;\n}\n\n/* End Vault icons */\n\n/* Premium addons */\n\n.premium-addons {\n\tmargin-top: 80px;\n\twidth: 100%;\n\tmargin: 0 auto;\n\tdisplay: table;\n}\n\n.addon-list {\n\t/* margin-left: 32px; */\n\tdisplay: table;\n\ttext-align: center;\n}\n\n.premium-addons h1 {\n\ttext-align: center;\n\tfont-weight: bold;\n}\n\n.premium-addons p {\n\ttext-align: center;\n}\n\n.premium-addons .premium-addon-div {\n\twidth: 200px;\n\theight: 250px;\n\tborder: 2px solid #777;\n\tdisplay: inline-table;\n\tmargin: 0 auto;\n\tmargin-right: 25px;\n\tmargin-top: 25px;\n\ttext-align: center;\n\tposition: relative;\n}\n\n.premium-addons .premium-addon-div p {\n\tmargin-left: 2px;\n\tmargin-right: 2px;\n}\n\n.premium-addons .premium-addon-div img {\n\twidth: auto;\n\theight: 50px;\n\tmargin-top: 7px;\n}\n\n.premium-addons .premium-addon-div .hr-alignment {\n\tmargin-top: 44px;\n}\n\n.premium-addons .premium-addon-div .dropbox-logo {\n\theight: 39px;\n\twidth: 150px;\n}\n\n.premium-addons .premium-addon-div .azure-logo, .premium-addons .premium-addon-div .onedrive-logo {\n\twidth: 75%;\n\theight: 24px;\n}\n\n.button-purchase {\n\tfont-size: 12px;\n\tcolor: #DF6926;\n\tborder-color: #DF6926;\n\tborder-width: 2px !important;\n\tposition: absolute;\n\tright: 25%;\n\tbottom: 2%;\n}\n\n.button-purchase:hover {\n\tcolor: darkgrey;\n\tborder-color: darkgrey;\n}\n\n.premium-addons .premium-addon-div hr {\n\theight: 2px;\n\tbackground-color: #777;\n\tmargin-top: 18px;\n}\n\n.premium-addon-div p {\n\tfont-style: italic;\n}\n\n.addon-list > .premium-addon-div > .onedrive-fix,\n.addon-list > .premium-addon-div > .azure-logo {\n\tmargin-top: 33px;\n}\n\n.addon-list > .premium-addon-div > .dropbox-fix {\n\tmargin-top: 18px;\n}\n\n/* End premium addons */\n\n\n/* Forgotton something (that is the name of the div rather than a mental note!) */\n\n.premium-forgotton-something {\n\tmargin-top: 5%;\n}\n\n.premium-forgotton-something h1 {\n\ttext-align: center;\n\tfont-weight: bold;\n}\n\n.premium-forgotton-something p {\n\ttext-align: center;\n\tfont-weight: normal;\n}\n\n.premium-forgotton-something .button-faq {\n\tcolor: #DF6926;\n\tborder-color: #DF6926;\n\tmargin: 0 auto;\n\tdisplay: table;\n}\n\n.premium-forgotton-something .button-faq:hover {\n\tcolor: #777;\n\tborder-color: #777;\n}\n\n/* End of forgotton something */\n\n.updraftplusmethod.updraftvault #vaultlogo {\n\tpadding-left: 40px;\n}\n\n.updraftplusmethod.updraftvault .vault_primary_option {\n\tfloat: left;\n\twidth: 50%;\n\ttext-align: center;\n\tpadding-bottom: 20px;\n}\n\n.updraftplusmethod.updraftvault .vault_primary_option div {\n\tclear: right;\n\tpadding-top: 20px;\n}\n\n.updraftplusmethod.updraftvault .clear-left {\n\tclear: left;\n}\n\n.updraftplusmethod.updraftvault .padding-top-20px {\n\tpadding-top: 20px;\n}\n\n.updraftplusmethod.updraftvault .padding-top-14px {\n\tpadding-top: 14px;\n}\n\n.updraftplusmethod.updraftvault #updraftvault_settings_default .button-primary, .updraftplusmethod.updraftvault #updraftvault_settings_showoptions .button-primary {\n\tfont-size: 18px !important;\n\tpadding-bottom: 20px;\n}\n\n.updraftplusmethod.updraftvault #updraftvault_showoptions, .updraftplusmethod.updraftvault #updraftvault_connect {\n\tmargin-top: 8px;\n}\n\n.updraftplusmethod.updraftvault #updraftvault_settings_connect input {\n\tmargin-right: 10px;\n}\n\n.updraftplusmethod.updraftvault #updraftvault_email {\n\twidth: 280px;\n}\n\n.updraftplusmethod.updraftvault #updraftvault_pass {\n\twidth: 200px;\n}\n\n.updraftplusmethod.updraftvault #vault-is-connected {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.updraftplusmethod.updraftvault #updraftvault_settings_default p {\n\tclear: left;\n}\n\n.updraftplusmethod.updraftvault .vault-purchase-option {\n\tfloat: left;\n\twidth: 33%;\n\ttext-align: center;\n\tpadding-top: 20px;\n}\n\n.updraftplusmethod.updraftvault .vault-purchase-option-size {\n\tfont-size: 200%;\n\tfont-weight: bold;\n}\n\n.updraftplusmethod.updraftvault .vault-purchase-option-link {\n\tclear: both;\n\tfont-size: 150%;\n}\n\n.updraftplusmethod.updraftvault .vault-purchase-option-or {\n\tclear: both;\n\tfont-size: 115%;\n\tfont-style: italic;\n}\n\n/* Automation Backup Advert by B */\n.autobackup-image {\n/* \tdisplay: inline-block; */\n/*\tmin-width: 10%;\n\tmax-width:25%;*/\n/*\tfloat: left;*/\n\tclear: left;\n\tfloat: left;\n\twidth: 110px;\n\theight: 110px;\n}\n\n.autobackup-description {\n\twidth: 100%;\n}\n\n.advert-description {\n\tfloat: left;\n\tclear: right;\n\tpadding: 4px 10px 8px 10px;\n\twidth: 70%;\n\tclear: right;\n\tvertical-align: top;\n}\n\n.advert-btn {\n\tdisplay: inline-block;\n\tmin-width: 10%;\n\tvertical-align: top;\n\tmargin-bottom: 8px;\n}\n\n.advert-btn:first-of-type {\n\tmargin-top: 25px;\n}\n\n.advert-btn a {\n\tdisplay: block;\n\tcursor: pointer;\n}\n\na.btn-get-started {\n\tbackground: #FFF;\n\tborder: 2px solid #DF6926;\n\tborder-radius: 4px;\n\tcolor: #DF6926;\n\tdisplay: inline-block;\n\tmargin-left: 10px !important;\n\tmargin-bottom: 7px !important;\n\tfont-size: 18px !important;\n\tline-height: 20px;\n\tmin-height: 28px;\n\tpadding: 11px 10px 5px 10px;\n\ttext-transform: uppercase;\n\ttext-decoration: none;\n}\n\n.circle-dblarrow {\n\tborder: 1px solid #DF6926;\n\tborder-radius: 100%;\n\tdisplay: inline-block;\n\tfont-size: 17px;\n\tline-height: 17px;\n\tmargin-left: 5px;\n\twidth: 20px;\n\theight: 20px;\n\ttext-align: center;\n}\n\n@media screen and (max-width: 782px) {\n/*\t.advert-description {\n\t\tmin-width: 75%;\n\t\tmargin-bottom: 5px;\n\t}\n\n\t.advert-btn {\n\t\tmargin-top: 15px;\n\t\tmargin-left:86px;\n\t\tmin-width: 100%;\n\t}*/\n}\n\n/* End Automation Backup Advert by B */\n/* New Responsive Pretty Advanced Settings */\n.expertmode .advanced_settings_container {\n\theight: auto;\n\toverflow: hidden;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_menu {\n\tfloat: none;\n\tborder-bottom: 1px solid rgb(204, 204, 204);\n}\n\n.expertmode .advanced_settings_container .advanced_settings_content {\n\tpadding-top: 5px;\n\tfloat: none;\n\twidth: auto;\n\toverflow: auto;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_content h3 {\n\tmargin-top: 5px !important;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_content .advanced_tools {\n\tdisplay: none;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_content .site_info {\n\tdisplay: block;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button {\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tpadding: 5px;\n\tcolor: #000;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_text {\n\tfont-size: 16px;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button:hover {\n\tbackground-color: #EAEAEA;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_menu .active {\n\tbackground-color: #3498DB;\n\tcolor: #FFF;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_menu .active:hover {\n\tbackground-color: #72C5FD;\n\tcolor: #FFF;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_content input#import_settings {\n\theight: auto !important;\n}\n\ndiv#updraft-wrap a {\n\tcursor: pointer !important;\n}\n\n@media screen and (min-width: 670px) {\n\n\t.expertmode .advanced_settings_container .advanced_settings_menu {\n\t\tfloat: left;\n\t\twidth: 215px;\n\t\tborder-right: 1px solid rgb(204, 204, 204);\n\t\tborder-bottom: none;\n\t}\n\n\t.expertmode .advanced_settings_container .advanced_settings_content {\n\t\tpadding-left: 10px;\n\t\tpadding-top: 0px;\n\t}\n\n\t.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button {\n\t\tdisplay: block;\n\t}\n\n}\n"]}
css/updraftplus-notices.css CHANGED
@@ -6,23 +6,23 @@
6
  }
7
 
8
  .updraft_advert_content_left {
9
- float:none;
10
- width:65px;
11
  }
12
 
13
  .updraft_advert_content_right {
14
- float:none;
15
- width:auto;
16
  overflow: hidden;
17
  }
18
 
19
  .updraft_advert_bottom {
20
- margin: 10px 0;
21
- padding: 10px;
22
- font-size: 140%;
23
- background-color: white;
24
- border-color: #E6DB55;
25
- border: 1px solid;
26
  border-radius: 4px;
27
  }
28
 
@@ -44,11 +44,11 @@ h4.updraft_advert_heading {
44
 
45
  .updraft_center_content {
46
  text-align: center;
47
- margin-bottom:5px;
48
  }
49
 
50
  .updraft_notice_link {
51
- padding-left:5px;
52
  }
53
 
54
  .updraft_text_center {
@@ -56,7 +56,9 @@ h4.updraft_advert_heading {
56
  }
57
 
58
  @media screen and (min-width: 560px) {
 
59
  .updraft_advert_content_left {
60
  float: left;
61
  }
 
62
  }
6
  }
7
 
8
  .updraft_advert_content_left {
9
+ float: none;
10
+ width: 65px;
11
  }
12
 
13
  .updraft_advert_content_right {
14
+ float: none;
15
+ width: auto;
16
  overflow: hidden;
17
  }
18
 
19
  .updraft_advert_bottom {
20
+ margin: 10px 0;
21
+ padding: 10px;
22
+ font-size: 140%;
23
+ background-color: white;
24
+ border-color: #E6DB55;
25
+ border: 1px solid;
26
  border-radius: 4px;
27
  }
28
 
44
 
45
  .updraft_center_content {
46
  text-align: center;
47
+ margin-bottom: 5px;
48
  }
49
 
50
  .updraft_notice_link {
51
+ padding-left: 5px;
52
  }
53
 
54
  .updraft_text_center {
56
  }
57
 
58
  @media screen and (min-width: 560px) {
59
+
60
  .updraft_advert_content_left {
61
  float: left;
62
  }
63
+
64
  }
css/updraftplus-notices.min.css ADDED
@@ -0,0 +1,2 @@
 
 
1
+ .updraft_notice_container{height:auto;overflow:hidden}.updraft_advert_content_left{float:none;width:65px}.updraft_advert_content_right{float:none;width:auto;overflow:hidden}.updraft_advert_bottom{margin:10px 0;padding:10px;font-size:140%;background-color:white;border-color:#e6db55;border:1px solid;border-radius:4px}.updraft-advert-dismiss{float:right;font-size:13px;font-weight:normal}h3.updraft_advert_heading{margin-top:5px !important;margin-bottom:5px !important}h4.updraft_advert_heading{margin-top:2px !important;margin-bottom:3px !important}.updraft_center_content{text-align:center;margin-bottom:5px}.updraft_notice_link{padding-left:5px}.updraft_text_center{text-align:center}@media screen and (min-width:560px){.updraft_advert_content_left{float:left}}
2
+ /*# sourceMappingURL=updraftplus-notices.min.css.map */
css/updraftplus-notices.min.css.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["css/updraftplus-notices.css"],"names":[],"mappings":"AAAA,qBAAqB;;AAErB;CACC,aAAa;CACb,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ,YAAY;CACZ;;AAED;CACC,YAAY;CACZ,YAAY;CACZ,iBAAiB;CACjB;;AAED;CACC,eAAe;CACf,cAAc;CACd,gBAAgB;CAChB,wBAAwB;CACxB,sBAAsB;CACtB,kBAAkB;CAClB,mBAAmB;CACnB;;AAED;CACC,aAAa;CACb,gBAAgB;CAChB,oBAAoB;CACpB;;AAED;CACC,2BAA2B;CAC3B,8BAA8B;CAC9B;;AAED;CACC,2BAA2B;CAC3B,8BAA8B;CAC9B;;AAED;CACC,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,mBAAmB;CACnB;;AAED;;CAEC;EACC,YAAY;EACZ;;CAED","file":"updraftplus-notices.min.css","sourcesContent":["/* CSS for adverts */\n\n.updraft_notice_container {\n\theight: auto;\n\toverflow: hidden;\n}\n\n.updraft_advert_content_left {\n\tfloat: none;\n\twidth: 65px;\n}\n\n.updraft_advert_content_right {\n\tfloat: none;\n\twidth: auto;\n\toverflow: hidden;\n}\n\n.updraft_advert_bottom {\n\tmargin: 10px 0;\n\tpadding: 10px;\n\tfont-size: 140%;\n\tbackground-color: white;\n\tborder-color: #E6DB55;\n\tborder: 1px solid;\n\tborder-radius: 4px;\n}\n\n.updraft-advert-dismiss {\n\tfloat: right;\n\tfont-size: 13px;\n\tfont-weight: normal;\n}\n\nh3.updraft_advert_heading {\n\tmargin-top: 5px !important;\n\tmargin-bottom: 5px !important;\n}\n\nh4.updraft_advert_heading {\n\tmargin-top: 2px !important;\n\tmargin-bottom: 3px !important;\n}\n\n.updraft_center_content {\n\ttext-align: center;\n\tmargin-bottom: 5px;\n}\n\n.updraft_notice_link {\n\tpadding-left: 5px;\n}\n\n.updraft_text_center {\n\ttext-align: center;\n}\n\n@media screen and (min-width: 560px) {\n\n\t.updraft_advert_content_left {\n\t\tfloat: left;\n\t}\n\n}\n"]}
example-decrypt.php CHANGED
@@ -24,7 +24,7 @@ gunzip output.sql.gz
24
 
25
  function rijndael_decrypt_file($file, $key) {
26
 
27
- require_once(dirname(__FILE__).'/includes/phpseclib/Crypt/Rijndael.php');
28
 
29
  $rijndael = new Crypt_Rijndael();
30
 
24
 
25
  function rijndael_decrypt_file($file, $key) {
26
 
27
+ require_once(dirname(__FILE__).'/vendor/phpseclib/phpseclib/phpseclib/Crypt/Rijndael.php');
28
 
29
  $rijndael = new Crypt_Rijndael();
30
 
includes/Dropbox/OAuth/Storage/Encrypter.php CHANGED
@@ -62,7 +62,7 @@ class Dropbox_Encrypter
62
  $updraftplus->ensure_phpseclib('Crypt_AES', 'Crypt/AES');
63
  $updraftplus->ensure_phpseclib('Crypt_Rijndael', 'Crypt/Rijndael');
64
 
65
- if (!function_exists('crypt_random_string')) require_once(UPDRAFTPLUS_DIR.'/includes/phpseclib/Crypt/Random.php');
66
 
67
  $iv = crypt_random_string(self::IV_SIZE);
68
 
62
  $updraftplus->ensure_phpseclib('Crypt_AES', 'Crypt/AES');
63
  $updraftplus->ensure_phpseclib('Crypt_Rijndael', 'Crypt/Rijndael');
64
 
65
+ if (!function_exists('crypt_random_string')) require_once(UPDRAFTPLUS_DIR.'/vendor/phpseclib/phpseclib/phpseclib/Crypt/Random.php');
66
 
67
  $iv = crypt_random_string(self::IV_SIZE);
68
 
includes/Dropbox2/OAuth/Storage/Encrypter.php CHANGED
@@ -62,7 +62,7 @@ class Dropbox_Encrypter
62
  $updraftplus->ensure_phpseclib('Crypt_AES', 'Crypt/AES');
63
  $updraftplus->ensure_phpseclib('Crypt_Rijndael', 'Crypt/Rijndael');
64
 
65
- if (!function_exists('crypt_random_string')) require_once(UPDRAFTPLUS_DIR.'/includes/phpseclib/Crypt/Random.php');
66
 
67
  $iv = crypt_random_string(self::IV_SIZE);
68
 
62
  $updraftplus->ensure_phpseclib('Crypt_AES', 'Crypt/AES');
63
  $updraftplus->ensure_phpseclib('Crypt_Rijndael', 'Crypt/Rijndael');
64
 
65
+ if (!function_exists('crypt_random_string')) require_once(UPDRAFTPLUS_DIR.'/vendor/phpseclib/phpseclib/phpseclib/Crypt/Random.php');
66
 
67
  $iv = crypt_random_string(self::IV_SIZE);
68
 
includes/class-udrpc.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php
2
-
3
  /*
4
  This class provides methods for encrypting, sending, receiving and decrypting messages of arbitrary length, using standard encryption methods and including protection against replay attacks.
5
 
@@ -54,16 +54,19 @@ if ($ud_rpc->get_key_local()) {
54
  // Instead of using activate_replay_protection(), you can use activate_sequence_protection() (receiving side) and set_next_send_sequence_id(). They are very similar; but, the sequence number code isn't tested, and is problematic if you may have multiple clients that don't share storage (you can use the current time as a sequence number, but if two clients send at the same millisecond (or whatever granularity you use), you may have problems); whereas the replay protection code relies on database storage on the sending side (not just the receiving).
55
 
56
  */
57
-
58
- if (!class_exists('UpdraftPlus_Remote_Communications')):
59
  class UpdraftPlus_Remote_Communications {
 
60
  // Version numbers relate to versions of this PHP library only (i.e. it's not a protocol support number, and version numbers of other compatible libraries (e.g. JavaScript) are not comparable)
61
- public $version = '1.4.12';
62
 
63
  private $key_name_indicator;
64
 
65
  private $key_option_name = false;
 
66
  private $key_remote = false;
 
67
  private $key_local = false;
68
 
69
  private $can_generate = false;
@@ -71,11 +74,15 @@ class UpdraftPlus_Remote_Communications {
71
  private $destination_url = false;
72
 
73
  private $maximum_replay_time_difference = 300;
 
74
  private $extra_replay_protection = false;
75
 
76
  private $sequence_protection_tolerance;
 
77
  private $sequence_protection_table;
 
78
  private $sequence_protection_column;
 
79
  private $sequence_protection_where_sql;
80
 
81
  // Debug may log confidential data using $this->log() - so only use when you are in a secure environment
@@ -96,6 +103,8 @@ class UpdraftPlus_Remote_Communications {
96
  private $incoming_message = null;
97
 
98
  private $message_random_number = null;
 
 
99
 
100
  public function __construct($key_name_indicator = 'default', $can_generate = false) {
101
  $this->set_key_name_indicator($key_name_indicator);
@@ -109,7 +118,11 @@ class UpdraftPlus_Remote_Communications {
109
  $this->can_generate = $can_generate;
110
  }
111
 
112
- // Which sites to allow CORS requests from
 
 
 
 
113
  public function set_allow_cors_from($allow_cors_from) {
114
  $this->allow_cors_from = $allow_cors_from;
115
  }
@@ -118,19 +131,34 @@ class UpdraftPlus_Remote_Communications {
118
  $this->maximum_replay_time_difference = (int) $replay_time_difference;
119
  }
120
 
121
- // This will cause more things to be sent to $this->log()
 
 
 
 
122
  public function set_debug($debug = true) {
123
  $this->debug = (bool) $debug;
124
  }
125
 
126
- // Supported values: a Guzzle object, or, if not, then WP's HTTP API function siwll be used
 
 
 
 
127
  public function set_http_transport($transport) {
128
  $this->http_transport = $transport;
129
  }
130
 
131
- // Sequence protection and replay protection perform similar functions, and using both is often over-kill; the distinction is that sequence protection can be used without needing to do database writes on the sending side (e.g. use the value of time() as the sequence number).
132
- // The only rule of sequences is that the receiving side will reject any sequence number that is less than the last previously seen one, within the bounds of the tolerance (but it may also reject those if they are repeats).
133
- // The given table/column will record a comma-separated list of recently seen sequences numbers within the tolerance threshold.
 
 
 
 
 
 
 
134
  public function activate_sequence_protection($table, $column, $where_sql, $tolerance = 5) {
135
  $this->sequence_protection_tolerance = (int) $tolerance;
136
  $this->sequence_protection_table = (string) $table;
@@ -145,27 +173,31 @@ class UpdraftPlus_Remote_Communications {
145
  $this->no_deprecation_warnings_on_php7();
146
  if (is_a($updraftplus, 'UpdraftPlus')) {
147
  $updraftplus->ensure_phpseclib(array('Crypt_Rijndael', 'Crypt_RSA', 'Crypt_Hash'), array('Crypt/Rijndael', 'Crypt/RSA', 'Crypt/Hash'));
148
- } elseif (defined('UPDRAFTPLUS_DIR') && file_exists(UPDRAFTPLUS_DIR.'/includes/phpseclib')) {
149
- if (false === strpos(get_include_path(), UPDRAFTPLUS_DIR.'/includes/phpseclib')) set_include_path(UPDRAFTPLUS_DIR.'/includes/phpseclib'.PATH_SEPARATOR.get_include_path());
150
- if (!class_exists('Crypt_Rijndael')) require_once 'Crypt/Rijndael.php';
151
- if (!class_exists('Crypt_RSA')) require_once 'Crypt/RSA.php';
152
- if (!class_exists('Crypt_Hash')) require_once 'Crypt/Hash.php';
 
153
  } elseif (file_exists(dirname(dirname(__FILE__)).'/vendor/phpseclib/phpseclib/phpseclib')) {
154
  $pdir = dirname(dirname(__FILE__)).'/vendor/phpseclib/phpseclib/phpseclib';
155
  if (false === strpos(get_include_path(), $pdir)) set_include_path($pdir.PATH_SEPARATOR.get_include_path());
156
- if (!class_exists('Crypt_Rijndael')) require_once 'Crypt/Rijndael.php';
157
- if (!class_exists('Crypt_RSA')) require_once 'Crypt/RSA.php';
158
- if (!class_exists('Crypt_Hash')) require_once 'Crypt/Hash.php';
159
  }
160
  }
161
  }
162
 
163
- // Ugly, but necessary to prevent debug output breaking the conversation when the user has debug turned on
 
 
164
  private function no_deprecation_warnings_on_php7() {
165
  // PHP_MAJOR_VERSION is defined in PHP 5.2.7+
166
  // We don't test for PHP > 7 because the specific deprecated element will be removed in PHP 8 - and so no warning should come anyway (and we shouldn't suppress other stuff until we know we need to).
167
  if (defined('PHP_MAJOR_VERSION') && PHP_MAJOR_VERSION == 7) {
168
  $old_level = error_reporting();
 
169
  $new_level = $old_level & ~E_DEPRECATED;
170
  if ($old_level != $new_level) error_reporting($new_level);
171
  }
@@ -183,7 +215,11 @@ class UpdraftPlus_Remote_Communications {
183
  $this->key_option_name = $key_option_name;
184
  }
185
 
186
- // Method to get the remote key
 
 
 
 
187
  public function get_key_remote() {
188
  if (empty($this->key_remote) && $this->can_generate) {
189
  $this->generate_new_keypair();
@@ -192,17 +228,29 @@ class UpdraftPlus_Remote_Communications {
192
  return empty($this->key_remote) ? false : $this->key_remote;
193
  }
194
 
195
- // Set the remote key
 
 
 
 
196
  public function set_key_remote($key_remote) {
197
  $this->key_remote = $key_remote;
198
  }
199
 
200
- // Used for sending - when receiving, the format is part of the message
 
 
 
 
201
  public function set_message_format($format = 2) {
202
  $this->format = $format;
203
  }
204
 
205
- // Method to get the local key
 
 
 
 
206
  public function get_key_local() {
207
  if (empty($this->key_local)) {
208
  if ($this->key_option_name) {
@@ -219,11 +267,13 @@ class UpdraftPlus_Remote_Communications {
219
  return empty($this->key_local) ? false : $this->key_local;
220
  }
221
 
222
- // Tests whether a supplied string (after trimming) is a valid portable bundle
223
- // Valid formats: same as get_portable_bundle()
224
- // Returns: (array)an array (which the consumer is free to use - e.g. convert into internationalised string), with keys 'code' and (perhaps) 'data'
225
- // Error codes: 'invalid_wrong_length'|'invalid_corrupt'
226
- // Success codes: 'success' - then has further keys 'key', 'name_indicator' and 'url' (and anything else that was in the bundle)
 
 
227
  public function decode_portable_bundle($bundle, $format = 'raw') {
228
  $bundle = trim($bundle);
229
  if ('base64_with_count' == $format) {
@@ -242,9 +292,14 @@ class UpdraftPlus_Remote_Communications {
242
  return $bundle;
243
  }
244
 
245
- // Method to get a portable bundle sufficient to contact this site (i.e. remote site - so you need to have generated a key-pair, or stored the remote key somewhere and restored it)
246
- // Supported formats: base64_with_count | (default)raw
247
- // $extra_info needs to be JSON-serialisable, so be careful about what you put into it.
 
 
 
 
 
248
  public function get_portable_bundle($format = 'raw', $extra_info = array(), $options = array()) {
249
 
250
  $bundle = array_merge($extra_info, array(
@@ -297,7 +352,13 @@ class UpdraftPlus_Remote_Communications {
297
  return empty($keys['publickey']) ? false : true;
298
  }
299
 
300
- // A base-64 encoded RSA hash (PKCS_1) of the message digest
 
 
 
 
 
 
301
  public function signature_for_message($message, $use_key = false) {
302
 
303
  $hash_algorithm = 'sha256';
@@ -316,10 +377,10 @@ class UpdraftPlus_Remote_Communications {
316
  $rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);
317
 
318
  // Don't do this: Crypt_RSA::sign() already calculates the digest of the hash
319
- // $hash = new Crypt_Hash($hash_algorithm);
320
- // $hashed = $hash->hash($message);
321
 
322
- // if ($this->debug) $this->log("Message hash (hash=$hash_algorithm) (hex): ".bin2hex($hashed));
323
 
324
  // phpseclib defaults to SHA1
325
  $rsa->setHash($hash_algorithm);
@@ -334,18 +395,30 @@ class UpdraftPlus_Remote_Communications {
334
  return $signature;
335
  }
336
 
337
- // $level is not yet used much
 
 
 
 
 
338
  private function log($message, $level = 'notice') {
339
  // Allow other plugins to do something with the message
340
  do_action('udrpc_log', $message, $level, $this->key_name_indicator, $this->debug, $this);
341
- if ($level != 'info') error_log('UDRPC ('.$this->key_name_indicator.", $level): $message");
342
  }
343
 
344
- // Encrypt the message, using the local key (which needs to exist)
 
 
 
 
 
 
 
345
  public function encrypt_message($plaintext, $use_key = false, $key_length = 32) {
346
 
347
  if (!$use_key) {
348
- if ($this->format == 1) {
349
  if (!$this->key_local) throw new Exception('No encryption key has been set');
350
  $use_key = $this->key_local;
351
  } else {
@@ -360,22 +433,22 @@ class UpdraftPlus_Remote_Communications {
360
 
361
  if (defined('UDRPC_PHPSECLIB_ENCRYPTION_MODE')) $rsa->setEncryptionMode(UDRPC_PHPSECLIB_ENCRYPTION_MODE);
362
 
363
- $rij = new Crypt_Rijndael();
364
 
365
  // Generate Random Symmetric Key
366
  $sym_key = crypt_random_string($key_length);
367
 
368
  if ($this->debug) $this->log('Unencrypted symmetric key (hex): '.bin2hex($sym_key));
369
 
370
- // Encrypt Message with new Symmetric Key
371
  $rij->setKey($sym_key);
372
  $ciphertext = $rij->encrypt($plaintext);
373
 
374
  if ($this->debug) $this->log('Encrypted ciphertext (hex): '.bin2hex($ciphertext));
375
 
376
- $ciphertext = base64_encode($ciphertext);
377
 
378
- // Encrypt the Symmetric Key with the Asymmetric Key
379
  $rsa->loadKey($use_key);
380
  $sym_key = $rsa->encrypt($sym_key);
381
 
@@ -396,7 +469,12 @@ class UpdraftPlus_Remote_Communications {
396
 
397
  }
398
 
399
- // Decrypt the message, using the local key (which needs to exist)
 
 
 
 
 
400
  public function decrypt_message($message) {
401
 
402
  if (!$this->key_local) throw new Exception('No decryption key has been set');
@@ -414,13 +492,13 @@ class UpdraftPlus_Remote_Communications {
414
  $sym_key = substr($message, 3, $len);
415
 
416
  // Extract the encrypted message
417
- $cipherlen = substr($message, $len + 3, 16);
418
  $cipherlen = hexdec($cipherlen);
419
 
420
- $ciphertext = substr($message, $len + 19, $cipherlen);
421
  $ciphertext = base64_decode($ciphertext);
422
 
423
- // Decrypt the encrypted symmetric key
424
  $rsa->loadKey($this->key_local);
425
  $sym_key = base64_decode($sym_key);
426
  $sym_key = $rsa->decrypt($sym_key);
@@ -432,7 +510,16 @@ class UpdraftPlus_Remote_Communications {
432
 
433
  }
434
 
435
- // Returns an array - which the caller will then format as required (e.g. use as body in post, or JSON-encode, etc.)
 
 
 
 
 
 
 
 
 
436
  public function create_message($command, $data = null, $is_response = false, $use_key_remote = false, $use_key_local = false) {
437
 
438
  if ($is_response) {
@@ -477,8 +564,12 @@ class UpdraftPlus_Remote_Communications {
477
 
478
  }
479
 
480
- // N.B. There's already some time-based replay protection. This can be turned on to beef it up.
481
- // This is only for listeners. Replays can only be detection if transients are working on the WP site (which by default only means that the option table is working).
 
 
 
 
482
  public function activate_replay_protection($activate = true) {
483
  $this->extra_replay_protection = (bool) $activate;
484
  }
@@ -487,16 +578,25 @@ class UpdraftPlus_Remote_Communications {
487
  $this->next_send_sequence_id = $id;
488
  }
489
 
490
- // $credentials should be an array with entries for 'username' and 'password'
 
 
 
 
491
  public function set_http_credentials($credentials) {
492
  $this->http_credentials = $credentials;
493
  }
494
 
495
- // This needs only to return an array with keys body and response - where response is also an array, with key 'code' (the HTTP status code)
496
- // The $post_options array support these keys: timeout, body,
497
- // Public, to allow short-circuiting of the library's own encoding/decoding (e.g. for acting as a proxy for a message already encrypted elsewhere)
 
 
 
 
 
498
  public function http_post($post_options) {
499
-
500
  @include ABSPATH.WPINC.'/version.php';
501
  $http_credentials = $this->http_credentials;
502
 
@@ -515,7 +615,7 @@ class UpdraftPlus_Remote_Communications {
515
  'timeout' => $post_options['timeout'],
516
  );
517
 
518
- if (!class_exists('WP_HTTP_Proxy')) require_once ABSPATH.WPINC.'/class-http.php';
519
  $proxy = new WP_HTTP_Proxy();
520
  if ($proxy->is_enabled()) {
521
  $user = $proxy->username();
@@ -677,10 +777,11 @@ class UpdraftPlus_Remote_Communications {
677
  }
678
  }
679
 
680
- $time_difference = absint(time() - $json_decoded['time']);
681
  if ($time_difference > $this->maximum_replay_time_difference) return new WP_Error('window_error', 'Message refused: maxium replay time difference exceeded', $time_difference);
682
 
683
  if (isset($json_decoded['incoming_rand']) && !empty($this->message_random_number) && $json_decoded['incoming_rand'] != $this->message_random_number) {
 
684
  $this->log('UDRPC: Message mismatch (possibly MITM) (sent_rand=' + $this->message_random_number + ', returned_rand='.$json_decoded['incoming_rand'].'): dropping', 'error');
685
 
686
  return new WP_Error('message_mismatch_error', 'Message refused: message mismatch (possible MITM)');
@@ -692,7 +793,11 @@ class UpdraftPlus_Remote_Communications {
692
 
693
  }
694
 
695
- // Returns a boolean indicating whether a listener was created - which depends on whether one was needed (so, false does not necessarily indicate an error condition)
 
 
 
 
696
  public function create_listener() {
697
 
698
  $http_origin = function_exists('get_http_origin') ? get_http_origin() : (empty($_SERVER['HTTP_ORIGIN']) ? '' : $_SERVER['HTTP_ORIGIN']);
@@ -701,14 +806,14 @@ class UpdraftPlus_Remote_Communications {
701
  if ((!empty($_POST) && !empty($_POST['udrpc_message']) && !empty($_POST['format'])) || (!empty($_SERVER['REQUEST_METHOD']) && 'OPTIONS' == $_SERVER['REQUEST_METHOD'] && $http_origin)) {
702
  add_action('wp_loaded', array($this, 'wp_loaded'));
703
  add_action('wp_loaded', array($this, 'wp_loaded_final'), 10000);
704
-
705
  return true;
706
  }
707
 
708
  return false;
709
  }
710
 
711
- public function wp_loaded_final() {
 
712
  $message_for = empty($_POST['key_name']) ? '' : (string) $_POST['key_name'];
713
  $this->log("Message was received, but not understood by local site (for: $message_for)");
714
  die;
@@ -729,6 +834,7 @@ class UpdraftPlus_Remote_Communications {
729
  $http_origin = function_exists('get_http_origin') ? get_http_origin() : (empty($_SERVER['HTTP_ORIGIN']) ? '' : $_SERVER['HTTP_ORIGIN']);
730
  if (!empty($_SERVER['REQUEST_METHOD']) && 'OPTIONS' == $_SERVER['REQUEST_METHOD'] && $http_origin) {
731
  if (in_array($http_origin, $this->allow_cors_from)) {
 
732
  if (!@constant('UDRPC_DO_NOT_SEND_CORS_HEADERS')) {
733
  header("Access-Control-Allow-Origin: $http_origin");
734
  header('Access-Control-Allow-Credentials: true');
@@ -746,10 +852,11 @@ class UpdraftPlus_Remote_Communications {
746
  // Silently return, rather than dying, in case another instance is able to handle this
747
  if (empty($_POST['format']) || (1 != $_POST['format'] && 2 != $_POST['format'])) return;
748
 
 
 
749
  $format = $_POST['format'];
750
 
751
  /*
752
-
753
  In format 1 (legacy/obsolete), the one encrypts (the shared AES key) using one half of the key-pair, and decrypts with the other; whereas the other side of the conversation does the reverse when replying (and uses a different shared AES key). Though this is possible in RSA, this is the wrong thing to do - see https://crypto.stackexchange.com/questions/2123/rsa-encryption-with-private-key-and-decryption-with-a-public-key
754
 
755
  In format 2, both sides have their own private and public key. The sender encrypts using the other side's public key, and decrypts using its own private key. Messages are signed (the message digest is SHA-256).
@@ -762,7 +869,7 @@ class UpdraftPlus_Remote_Communications {
762
  }
763
 
764
  // wp_unslash() does not exist until after WP 3.5
765
- // $udrpc_message = function_exists('wp_unslash') ? wp_unslash($_POST['udrpc_message']) : stripslashes_deep($_POST['udrpc_message']);
766
 
767
  // Data should not have any slashes - it is base64-encoded
768
  $udrpc_message = (string) $_POST['udrpc_message'];
@@ -823,7 +930,7 @@ class UpdraftPlus_Remote_Communications {
823
  }
824
 
825
  // Do this after the extra replay protection, as that checks hashes within the maximum time window - so don't check the maximum time window until afterwards, to avoid a tiny window (race) in between.
826
- $time_difference = absint($udrpc_message['time'] - time());
827
  if ($time_difference > $this->maximum_replay_time_difference) {
828
  $this->log("Time in incoming message is outside of allowed window ($time_difference > ".$this->maximum_replay_time_difference.')', 'error');
829
  die;
@@ -860,7 +967,7 @@ class UpdraftPlus_Remote_Communications {
860
  if ($this->debug) $this->log("Sequence id ($message_sequence_id) is greater than any previous (".max($recently_seen_sequences_ids).') - message is thus OK');
861
  // All is well
862
  $recently_seen_sequences_ids_as_array[] = $message_sequence_id;
863
- } elseif (max($recently_seen_sequences_ids) - $message_sequence_id <= $this->sequence_protection_tolerance) {
864
  // All is well - was one of those 'missing' in the sequence
865
  if ($this->debug) $this->log("Sequence id ($message_sequence_id) is within tolerance range of previous maximum (".max($recently_seen_sequences_ids).') - message is thus OK');
866
  $recently_seen_sequences_ids_as_array[] = $message_sequence_id;
@@ -895,6 +1002,7 @@ class UpdraftPlus_Remote_Communications {
895
  $command = (string) $udrpc_message['command'];
896
  $data = empty($udrpc_message['data']) ? null : $udrpc_message['data'];
897
 
 
898
  if ($http_origin && !empty($udrpc_message['cors_headers_wanted']) && !@constant('UDRPC_DO_NOT_SEND_CORS_HEADERS')) {
899
  header("Access-Control-Allow-Origin: $http_origin");
900
  header('Access-Control-Allow-Credentials: true');
@@ -930,20 +1038,27 @@ class UpdraftPlus_Remote_Communications {
930
 
931
  }
932
 
933
- // The hash needs to be in a format that phpseclib likes. phpseclib uses lower case.
934
- // Pass in a base64-encoded signature (i.e. just as signature_for_message creates)
935
- // Returns a boolean
 
 
 
 
 
 
 
936
  public function verify_signature($message, $signature, $key, $hash_algorithm = 'sha256') {
937
  $this->ensure_crypto_loaded();
938
- $rsa = new Crypt_RSA();
939
- $rsa->setHash(strtolower($hash_algorithm));
940
  // This is not the default, but is what we use
941
- $rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);
942
- $rsa->loadKey($key);
943
 
944
  // Don't hash it - Crypt_RSA::verify() already does that
945
- // $hash = new Crypt_Hash($hash_algorithm);
946
- // $hashed = $hash->hash($message);
947
 
948
  $verified = $rsa->verify($message, base64_decode($signature));
949
 
@@ -962,11 +1077,11 @@ class UpdraftPlus_Remote_Communications {
962
  $seen_hashes = get_transient($transient_name);
963
  if (!is_array($seen_hashes)) $seen_hashes = array();
964
  $time_now = time();
965
- // $any_changes = false;
966
  // Prune the old hashes
967
  foreach ($seen_hashes as $hash => $last_seen) {
968
- if ($last_seen < $time_now - $this->maximum_replay_time_difference) {
969
- // $any_changes = true;
970
  unset($seen_hashes[$hash]);
971
  }
972
  }
@@ -978,6 +1093,6 @@ class UpdraftPlus_Remote_Communications {
978
 
979
  return false;
980
  }
981
-
982
  }
 
983
  endif;
1
  <?php
2
+ // @codingStandardsIgnoreStart
3
  /*
4
  This class provides methods for encrypting, sending, receiving and decrypting messages of arbitrary length, using standard encryption methods and including protection against replay attacks.
5
 
54
  // Instead of using activate_replay_protection(), you can use activate_sequence_protection() (receiving side) and set_next_send_sequence_id(). They are very similar; but, the sequence number code isn't tested, and is problematic if you may have multiple clients that don't share storage (you can use the current time as a sequence number, but if two clients send at the same millisecond (or whatever granularity you use), you may have problems); whereas the replay protection code relies on database storage on the sending side (not just the receiving).
55
 
56
  */
57
+ // @codingStandardsIgnoreEnd
58
+ if (!class_exists('UpdraftPlus_Remote_Communications')) :
59
  class UpdraftPlus_Remote_Communications {
60
+
61
  // Version numbers relate to versions of this PHP library only (i.e. it's not a protocol support number, and version numbers of other compatible libraries (e.g. JavaScript) are not comparable)
62
+ public $version = '1.4.14';
63
 
64
  private $key_name_indicator;
65
 
66
  private $key_option_name = false;
67
+
68
  private $key_remote = false;
69
+
70
  private $key_local = false;
71
 
72
  private $can_generate = false;
74
  private $destination_url = false;
75
 
76
  private $maximum_replay_time_difference = 300;
77
+
78
  private $extra_replay_protection = false;
79
 
80
  private $sequence_protection_tolerance;
81
+
82
  private $sequence_protection_table;
83
+
84
  private $sequence_protection_column;
85
+
86
  private $sequence_protection_where_sql;
87
 
88
  // Debug may log confidential data using $this->log() - so only use when you are in a secure environment
103
  private $incoming_message = null;
104
 
105
  private $message_random_number = null;
106
+
107
+ private $require_message_to_be_understood = false;
108
 
109
  public function __construct($key_name_indicator = 'default', $can_generate = false) {
110
  $this->set_key_name_indicator($key_name_indicator);
118
  $this->can_generate = $can_generate;
119
  }
120
 
121
+ /**
122
+ * Which sites to allow CORS requests from
123
+ *
124
+ * @param string $allow_cors_from
125
+ */
126
  public function set_allow_cors_from($allow_cors_from) {
127
  $this->allow_cors_from = $allow_cors_from;
128
  }
131
  $this->maximum_replay_time_difference = (int) $replay_time_difference;
132
  }
133
 
134
+ /**
135
+ * This will cause more things to be sent to $this->log()
136
+ *
137
+ * @param boolean $debug
138
+ */
139
  public function set_debug($debug = true) {
140
  $this->debug = (bool) $debug;
141
  }
142
 
143
+ /**
144
+ * Supported values: a Guzzle object, or, if not, then WP's HTTP API function siwll be used
145
+ *
146
+ * @param string $transport
147
+ */
148
  public function set_http_transport($transport) {
149
  $this->http_transport = $transport;
150
  }
151
 
152
+ /**
153
+ * Sequence protection and replay protection perform similar functions, and using both is often over-kill; the distinction is that sequence protection can be used without needing to do database writes on the sending side (e.g. use the value of time() as the sequence number).
154
+ * The only rule of sequences is that the receiving side will reject any sequence number that is less than the last previously seen one, within the bounds of the tolerance (but it may also reject those if they are repeats).
155
+ * The given table/column will record a comma-separated list of recently seen sequences numbers within the tolerance threshold.
156
+ *
157
+ * @param string $table
158
+ * @param string $column
159
+ * @param string $where_sql
160
+ * @param integer $tolerance
161
+ */
162
  public function activate_sequence_protection($table, $column, $where_sql, $tolerance = 5) {
163
  $this->sequence_protection_tolerance = (int) $tolerance;
164
  $this->sequence_protection_table = (string) $table;
173
  $this->no_deprecation_warnings_on_php7();
174
  if (is_a($updraftplus, 'UpdraftPlus')) {
175
  $updraftplus->ensure_phpseclib(array('Crypt_Rijndael', 'Crypt_RSA', 'Crypt_Hash'), array('Crypt/Rijndael', 'Crypt/RSA', 'Crypt/Hash'));
176
+ } elseif (defined('UPDRAFTPLUS_DIR') && file_exists(UPDRAFTPLUS_DIR.'/vendor/phpseclib/phpseclib/phpseclib')) {
177
+ $pdir = UPDRAFTPLUS_DIR.'/vendor/phpseclib/phpseclib/phpseclib';
178
+ if (false === strpos(get_include_path(), $pdir)) set_include_path($pdir.PATH_SEPARATOR.get_include_path());
179
+ if (!class_exists('Crypt_Rijndael')) include_once 'Crypt/Rijndael.php';
180
+ if (!class_exists('Crypt_RSA')) include_once 'Crypt/RSA.php';
181
+ if (!class_exists('Crypt_Hash')) include_once 'Crypt/Hash.php';
182
  } elseif (file_exists(dirname(dirname(__FILE__)).'/vendor/phpseclib/phpseclib/phpseclib')) {
183
  $pdir = dirname(dirname(__FILE__)).'/vendor/phpseclib/phpseclib/phpseclib';
184
  if (false === strpos(get_include_path(), $pdir)) set_include_path($pdir.PATH_SEPARATOR.get_include_path());
185
+ if (!class_exists('Crypt_Rijndael')) include_once 'Crypt/Rijndael.php';
186
+ if (!class_exists('Crypt_RSA')) include_once 'Crypt/RSA.php';
187
+ if (!class_exists('Crypt_Hash')) include_once 'Crypt/Hash.php';
188
  }
189
  }
190
  }
191
 
192
+ /**
193
+ * Ugly, but necessary to prevent debug output breaking the conversation when the user has debug turned on
194
+ */
195
  private function no_deprecation_warnings_on_php7() {
196
  // PHP_MAJOR_VERSION is defined in PHP 5.2.7+
197
  // We don't test for PHP > 7 because the specific deprecated element will be removed in PHP 8 - and so no warning should come anyway (and we shouldn't suppress other stuff until we know we need to).
198
  if (defined('PHP_MAJOR_VERSION') && PHP_MAJOR_VERSION == 7) {
199
  $old_level = error_reporting();
200
+ // @codingStandardsIgnoreLine
201
  $new_level = $old_level & ~E_DEPRECATED;
202
  if ($old_level != $new_level) error_reporting($new_level);
203
  }
215
  $this->key_option_name = $key_option_name;
216
  }
217
 
218
+ /**
219
+ * Method to get the remote key
220
+ *
221
+ * @return array
222
+ */
223
  public function get_key_remote() {
224
  if (empty($this->key_remote) && $this->can_generate) {
225
  $this->generate_new_keypair();
228
  return empty($this->key_remote) ? false : $this->key_remote;
229
  }
230
 
231
+ /**
232
+ * Set the remote key
233
+ *
234
+ * @param string $key_remote
235
+ */
236
  public function set_key_remote($key_remote) {
237
  $this->key_remote = $key_remote;
238
  }
239
 
240
+ /**
241
+ * Used for sending - when receiving, the format is part of the message
242
+ *
243
+ * @param integer $format
244
+ */
245
  public function set_message_format($format = 2) {
246
  $this->format = $format;
247
  }
248
 
249
+ /**
250
+ * Method to get the local key
251
+ *
252
+ * @return array
253
+ */
254
  public function get_key_local() {
255
  if (empty($this->key_local)) {
256
  if ($this->key_option_name) {
267
  return empty($this->key_local) ? false : $this->key_local;
268
  }
269
 
270
+ /**
271
+ * Tests whether a supplied string (after trimming) is a valid portable bundle
272
+ *
273
+ * @param string $bundle [description]
274
+ * @param string $format same as get_portable_bundle()
275
+ * @return array (which the consumer is free to use - e.g. convert into internationalised string), with keys 'code' and (perhaps) 'data'
276
+ */
277
  public function decode_portable_bundle($bundle, $format = 'raw') {
278
  $bundle = trim($bundle);
279
  if ('base64_with_count' == $format) {
292
  return $bundle;
293
  }
294
 
295
+ /**
296
+ * Method to get a portable bundle sufficient to contact this site (i.e. remote site - so you need to have generated a key-pair, or stored the remote key somewhere and restored it)
297
+ *
298
+ * @param string $format Supported formats: base64_with_count and default)raw
299
+ * @param array $extra_info needs to be JSON-serialisable, so be careful about what you put into it.
300
+ * @param array $options [description]
301
+ * @return array
302
+ */
303
  public function get_portable_bundle($format = 'raw', $extra_info = array(), $options = array()) {
304
 
305
  $bundle = array_merge($extra_info, array(
352
  return empty($keys['publickey']) ? false : true;
353
  }
354
 
355
+ /**
356
+ * A base-64 encoded RSA hash (PKCS_1) of the message digest
357
+ *
358
+ * @param string $message
359
+ * @param boolean $use_key
360
+ * @return array
361
+ */
362
  public function signature_for_message($message, $use_key = false) {
363
 
364
  $hash_algorithm = 'sha256';
377
  $rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);
378
 
379
  // Don't do this: Crypt_RSA::sign() already calculates the digest of the hash
380
+ // $hash = new Crypt_Hash($hash_algorithm);
381
+ // $hashed = $hash->hash($message);
382
 
383
+ // if ($this->debug) $this->log("Message hash (hash=$hash_algorithm) (hex): ".bin2hex($hashed));
384
 
385
  // phpseclib defaults to SHA1
386
  $rsa->setHash($hash_algorithm);
395
  return $signature;
396
  }
397
 
398
+ /**
399
+ * Log description
400
+ *
401
+ * @param string $message
402
+ * @param string $level $level is not yet used much
403
+ */
404
  private function log($message, $level = 'notice') {
405
  // Allow other plugins to do something with the message
406
  do_action('udrpc_log', $message, $level, $this->key_name_indicator, $this->debug, $this);
407
+ if ('info' != $level) error_log('UDRPC ('.$this->key_name_indicator.", $level): $message");
408
  }
409
 
410
+ /**
411
+ * Encrypt the message, using the local key (which needs to exist)
412
+ *
413
+ * @param string $plaintext
414
+ * @param boolean $use_key
415
+ * @param integer $key_length
416
+ * @return array
417
+ */
418
  public function encrypt_message($plaintext, $use_key = false, $key_length = 32) {
419
 
420
  if (!$use_key) {
421
+ if (1 == $this->format) {
422
  if (!$this->key_local) throw new Exception('No encryption key has been set');
423
  $use_key = $this->key_local;
424
  } else {
433
 
434
  if (defined('UDRPC_PHPSECLIB_ENCRYPTION_MODE')) $rsa->setEncryptionMode(UDRPC_PHPSECLIB_ENCRYPTION_MODE);
435
 
436
+ $rij = new Crypt_Rijndael();
437
 
438
  // Generate Random Symmetric Key
439
  $sym_key = crypt_random_string($key_length);
440
 
441
  if ($this->debug) $this->log('Unencrypted symmetric key (hex): '.bin2hex($sym_key));
442
 
443
+ // Encrypt Message with new Symmetric Key
444
  $rij->setKey($sym_key);
445
  $ciphertext = $rij->encrypt($plaintext);
446
 
447
  if ($this->debug) $this->log('Encrypted ciphertext (hex): '.bin2hex($ciphertext));
448
 
449
+ $ciphertext = base64_encode($ciphertext);
450
 
451
+ // Encrypt the Symmetric Key with the Asymmetric Key
452
  $rsa->loadKey($use_key);
453
  $sym_key = $rsa->encrypt($sym_key);
454
 
469
 
470
  }
471
 
472
+ /**
473
+ * Decrypt the message, using the local key (which needs to exist)
474
+ *
475
+ * @param string $message
476
+ * @return array
477
+ */
478
  public function decrypt_message($message) {
479
 
480
  if (!$this->key_local) throw new Exception('No decryption key has been set');
492
  $sym_key = substr($message, 3, $len);
493
 
494
  // Extract the encrypted message
495
+ $cipherlen = substr($message, ($len + 3), 16);
496
  $cipherlen = hexdec($cipherlen);
497
 
498
+ $ciphertext = substr($message, ($len + 19), $cipherlen);
499
  $ciphertext = base64_decode($ciphertext);
500
 
501
+ // Decrypt the encrypted symmetric key
502
  $rsa->loadKey($this->key_local);
503
  $sym_key = base64_decode($sym_key);
504
  $sym_key = $rsa->decrypt($sym_key);
510
 
511
  }
512
 
513
+ /**
514
+ * Creates a message
515
+ *
516
+ * @param string $command
517
+ * @param string $data
518
+ * @param boolean $is_response
519
+ * @param boolean $use_key_remote
520
+ * @param boolean $use_key_local
521
+ * @return array which the caller will then format as required (e.g. use as body in post, or JSON-encode, etc.) [description]
522
+ */
523
  public function create_message($command, $data = null, $is_response = false, $use_key_remote = false, $use_key_local = false) {
524
 
525
  if ($is_response) {
564
 
565
  }
566
 
567
+ /**
568
+ * N.B. There's already some time-based replay protection. This can be turned on to beef it up.
569
+ * This is only for listeners. Replays can only be detection if transients are working on the WP site (which by default only means that the option table is working).
570
+ *
571
+ * @param boolean $activate
572
+ */
573
  public function activate_replay_protection($activate = true) {
574
  $this->extra_replay_protection = (bool) $activate;
575
  }
578
  $this->next_send_sequence_id = $id;
579
  }
580
 
581
+ /**
582
+ * Set_http_credentials
583
+ *
584
+ * @param string $credentials should be an array with entries for 'username' and 'password'
585
+ */
586
  public function set_http_credentials($credentials) {
587
  $this->http_credentials = $credentials;
588
  }
589
 
590
+ /**
591
+ * This needs only to return an array with keys body and response - where response is also an array, with key 'code' (the HTTP status code)
592
+ * The $post_options array support these keys: timeout, body,
593
+ * Public, to allow short-circuiting of the library's own encoding/decoding (e.g. for acting as a proxy for a message already encrypted elsewhere)
594
+ *
595
+ * @param array $post_options
596
+ * @return array
597
+ */
598
  public function http_post($post_options) {
599
+ // @codingStandardsIgnoreLine
600
  @include ABSPATH.WPINC.'/version.php';
601
  $http_credentials = $this->http_credentials;
602
 
615
  'timeout' => $post_options['timeout'],
616
  );
617
 
618
+ if (!class_exists('WP_HTTP_Proxy')) include_once ABSPATH.WPINC.'/class-http.php';
619
  $proxy = new WP_HTTP_Proxy();
620
  if ($proxy->is_enabled()) {
621
  $user = $proxy->username();
777
  }
778
  }
779
 
780
+ $time_difference = absint((time() - $json_decoded['time']));
781
  if ($time_difference > $this->maximum_replay_time_difference) return new WP_Error('window_error', 'Message refused: maxium replay time difference exceeded', $time_difference);
782
 
783
  if (isset($json_decoded['incoming_rand']) && !empty($this->message_random_number) && $json_decoded['incoming_rand'] != $this->message_random_number) {
784
+ // @codingStandardsIgnoreLine
785
  $this->log('UDRPC: Message mismatch (possibly MITM) (sent_rand=' + $this->message_random_number + ', returned_rand='.$json_decoded['incoming_rand'].'): dropping', 'error');
786
 
787
  return new WP_Error('message_mismatch_error', 'Message refused: message mismatch (possible MITM)');
793
 
794
  }
795
 
796
+ /**
797
+ * Returns a boolean indicating whether a listener was created - which depends on whether one was needed (so, false does not necessarily indicate an error condition)
798
+ *
799
+ * @return boolean
800
+ */
801
  public function create_listener() {
802
 
803
  $http_origin = function_exists('get_http_origin') ? get_http_origin() : (empty($_SERVER['HTTP_ORIGIN']) ? '' : $_SERVER['HTTP_ORIGIN']);
806
  if ((!empty($_POST) && !empty($_POST['udrpc_message']) && !empty($_POST['format'])) || (!empty($_SERVER['REQUEST_METHOD']) && 'OPTIONS' == $_SERVER['REQUEST_METHOD'] && $http_origin)) {
807
  add_action('wp_loaded', array($this, 'wp_loaded'));
808
  add_action('wp_loaded', array($this, 'wp_loaded_final'), 10000);
 
809
  return true;
810
  }
811
 
812
  return false;
813
  }
814
 
815
+ public function wp_loaded_final() {
816
+ if (empty($this->require_message_to_be_understood)) return;
817
  $message_for = empty($_POST['key_name']) ? '' : (string) $_POST['key_name'];
818
  $this->log("Message was received, but not understood by local site (for: $message_for)");
819
  die;
834
  $http_origin = function_exists('get_http_origin') ? get_http_origin() : (empty($_SERVER['HTTP_ORIGIN']) ? '' : $_SERVER['HTTP_ORIGIN']);
835
  if (!empty($_SERVER['REQUEST_METHOD']) && 'OPTIONS' == $_SERVER['REQUEST_METHOD'] && $http_origin) {
836
  if (in_array($http_origin, $this->allow_cors_from)) {
837
+ // @codingStandardsIgnoreLine
838
  if (!@constant('UDRPC_DO_NOT_SEND_CORS_HEADERS')) {
839
  header("Access-Control-Allow-Origin: $http_origin");
840
  header('Access-Control-Allow-Credentials: true');
852
  // Silently return, rather than dying, in case another instance is able to handle this
853
  if (empty($_POST['format']) || (1 != $_POST['format'] && 2 != $_POST['format'])) return;
854
 
855
+ $this->require_message_to_be_understood = true;
856
+
857
  $format = $_POST['format'];
858
 
859
  /*
 
860
  In format 1 (legacy/obsolete), the one encrypts (the shared AES key) using one half of the key-pair, and decrypts with the other; whereas the other side of the conversation does the reverse when replying (and uses a different shared AES key). Though this is possible in RSA, this is the wrong thing to do - see https://crypto.stackexchange.com/questions/2123/rsa-encryption-with-private-key-and-decryption-with-a-public-key
861
 
862
  In format 2, both sides have their own private and public key. The sender encrypts using the other side's public key, and decrypts using its own private key. Messages are signed (the message digest is SHA-256).
869
  }
870
 
871
  // wp_unslash() does not exist until after WP 3.5
872
+ // $udrpc_message = function_exists('wp_unslash') ? wp_unslash($_POST['udrpc_message']) : stripslashes_deep($_POST['udrpc_message']);
873
 
874
  // Data should not have any slashes - it is base64-encoded
875
  $udrpc_message = (string) $_POST['udrpc_message'];
930
  }
931
 
932
  // Do this after the extra replay protection, as that checks hashes within the maximum time window - so don't check the maximum time window until afterwards, to avoid a tiny window (race) in between.
933
+ $time_difference = absint(($udrpc_message['time'] - time()));
934
  if ($time_difference > $this->maximum_replay_time_difference) {
935
  $this->log("Time in incoming message is outside of allowed window ($time_difference > ".$this->maximum_replay_time_difference.')', 'error');
936
  die;
967
  if ($this->debug) $this->log("Sequence id ($message_sequence_id) is greater than any previous (".max($recently_seen_sequences_ids).') - message is thus OK');
968
  // All is well
969
  $recently_seen_sequences_ids_as_array[] = $message_sequence_id;
970
+ } elseif ((max($recently_seen_sequences_ids) - $message_sequence_id) <= $this->sequence_protection_tolerance) {
971
  // All is well - was one of those 'missing' in the sequence
972
  if ($this->debug) $this->log("Sequence id ($message_sequence_id) is within tolerance range of previous maximum (".max($recently_seen_sequences_ids).') - message is thus OK');
973
  $recently_seen_sequences_ids_as_array[] = $message_sequence_id;
1002
  $command = (string) $udrpc_message['command'];
1003
  $data = empty($udrpc_message['data']) ? null : $udrpc_message['data'];
1004
 
1005
+ // @codingStandardsIgnoreLine
1006
  if ($http_origin && !empty($udrpc_message['cors_headers_wanted']) && !@constant('UDRPC_DO_NOT_SEND_CORS_HEADERS')) {
1007
  header("Access-Control-Allow-Origin: $http_origin");
1008
  header('Access-Control-Allow-Credentials: true');
1038
 
1039
  }
1040
 
1041
+ /**
1042
+ * The hash needs to be in a format that phpseclib likes. phpseclib uses lower case.
1043
+ * Pass in a base64-encoded signature (i.e. just as signature_for_message creates)
1044
+ *
1045
+ * @param string $message
1046
+ * @param string $signature
1047
+ * @param string $key
1048
+ * @param string $hash_algorithm
1049
+ * @return boolean
1050
+ */
1051
  public function verify_signature($message, $signature, $key, $hash_algorithm = 'sha256') {
1052
  $this->ensure_crypto_loaded();
1053
+ $rsa = new Crypt_RSA();
1054
+ $rsa->setHash(strtolower($hash_algorithm));
1055
  // This is not the default, but is what we use
1056
+ $rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);
1057
+ $rsa->loadKey($key);
1058
 
1059
  // Don't hash it - Crypt_RSA::verify() already does that
1060
+ // $hash = new Crypt_Hash($hash_algorithm);
1061
+ // $hashed = $hash->hash($message);
1062
 
1063
  $verified = $rsa->verify($message, base64_decode($signature));
1064
 
1077
  $seen_hashes = get_transient($transient_name);
1078
  if (!is_array($seen_hashes)) $seen_hashes = array();
1079
  $time_now = time();
1080
+ // $any_changes = false;
1081
  // Prune the old hashes
1082
  foreach ($seen_hashes as $hash => $last_seen) {
1083
+ if ($last_seen < ($time_now - $this->maximum_replay_time_difference)) {
1084
+ // $any_changes = true;
1085
  unset($seen_hashes[$hash]);
1086
  }
1087
  }
1093
 
1094
  return false;
1095
  }
 
1096
  }
1097
+
1098
  endif;
includes/jquery-ui.custom.min.css ADDED
@@ -0,0 +1,2 @@
 
 
1
+ /* jQuery UI - v1.11.4 - 2015-12-05* http://jqueryui.com* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px* Copyright jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default !important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px .4em;margin:.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:.4em 2.1em .4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:0;background:0;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:0;border-bottom:0;border-right:0}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#eee url("images/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url("images/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:#f6f6f6 url("images/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #fbcb09;background:#fdf5ce url("images/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url("images/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_228ef1_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffd27a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000;opacity:.2;filter:Alpha(Opacity=20);border-radius:5px}
2
+ /*# sourceMappingURL=jquery-ui.custom.min.css.map */
includes/jquery-ui.custom.min.css.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["includes/jquery-ui.custom.css"],"names":[],"mappings":"AAAA;;;;qEAIqE;;AAErE;oCACoC;AACpC;CACC,cAAc;CACd;AACD;CACC,UAAU;CACV,oBAAoB;CACpB,YAAY;CACZ,aAAa;CACb,iBAAiB;CACjB,WAAW;CACX,mBAAmB;CACnB,WAAW;CACX;AACD;CACC,UAAU;CACV,WAAW;CACX,UAAU;CACV,WAAW;CACX,iBAAiB;CACjB,sBAAsB;CACtB,gBAAgB;CAChB,iBAAiB;CACjB;AACD;;CAEC,YAAY;CACZ,eAAe;CACf,0BAA0B;CAC1B;AACD;CACC,YAAY;CACZ;AACD;CACC,cAAc,CAAC,kBAAkB;CACjC;AACD;CACC,YAAY;CACZ,aAAa;CACb,OAAO;CACP,QAAQ;CACR,mBAAmB;CACnB,WAAW;CACX,wBAAwB,CAAC,kBAAkB;CAC3C;;AAED;CACC,aAAa;CACb;;;AAGD;oCACoC;AACpC;CACC,2BAA2B;CAC3B;;;AAGD;oCACoC;;AAEpC,uBAAuB;AACvB;CACC,eAAe;CACf,sBAAsB;CACtB,iBAAiB;CACjB,6BAA6B;CAC7B;;;AAGD;oCACoC;;AAEpC,cAAc;AACd;CACC,gBAAgB;CAChB,OAAO;CACP,QAAQ;CACR,YAAY;CACZ,aAAa;CACb;AACD;CACC,uBAAuB;CACvB,mBAAmB;CACnB;AACD;CACC,mBAAmB;CACnB;AACD;CACC,mBAAmB;CACnB,iBAAiB;CACjB,eAAe;CACf,uBAAuB;CACvB,mBAAmB;CACnB;AACD;;CAEC,cAAc;CACd;AACD;CACC,iBAAiB;CACjB,YAAY;CACZ,YAAY;CACZ,UAAU;CACV,QAAQ;CACR;AACD;CACC,iBAAiB;CACjB,YAAY;CACZ,YAAY;CACZ,aAAa;CACb,QAAQ;CACR;AACD;CACC,iBAAiB;CACjB,WAAW;CACX,YAAY;CACZ,OAAO;CACP,aAAa;CACb;AACD;CACC,iBAAiB;CACjB,WAAW;CACX,WAAW;CACX,OAAO;CACP,aAAa;CACb;AACD;CACC,kBAAkB;CAClB,YAAY;CACZ,aAAa;CACb,WAAW;CACX,YAAY;CACZ;AACD;CACC,kBAAkB;CAClB,WAAW;CACX,YAAY;CACZ,WAAW;CACX,aAAa;CACb;AACD;CACC,kBAAkB;CAClB,WAAW;CACX,YAAY;CACZ,WAAW;CACX,UAAU;CACV;AACD;CACC,kBAAkB;CAClB,WAAW;CACX,YAAY;CACZ,YAAY;CACZ,UAAU;CACV;AACD;CACC,uBAAuB;CACvB,mBAAmB;CACnB;AACD;CACC,mBAAmB;CACnB,aAAa;CACb,yBAAyB;CACzB;AACD;CACC,uBAAuB;CACvB,mBAAmB;CACnB;AACD;CACC,eAAe;CACf,gBAAgB;CAChB,mBAAmB;CACnB,kBAAkB;CAClB,6BAA6B;CAC7B,cAAc,CAAC,kBAAkB;CACjC,gBAAgB;CAChB;AACD;CACC,oBAAoB;CACpB;AACD;CACC,oBAAoB;CACpB;AACD;CACC,mBAAmB;CACnB,WAAW;CACX,SAAS;CACT,iBAAiB;CACjB;AACD;CACC,mBAAmB;CACnB,cAAc;CACd,eAAe;CACf;AACD;CACC,mBAAmB;CACnB,OAAO;CACP,QAAQ;CACR,gBAAgB;CAChB;AACD;CACC,sBAAsB;CACtB,mBAAmB;CACnB,WAAW;CACX,oBAAoB;CACpB,mBAAmB;CACnB,gBAAgB;CAChB,uBAAuB;CACvB,mBAAmB;CACnB,kBAAkB,CAAC,+BAA+B;CAClD;AACD;;;;;CAKC,sBAAsB;CACtB;AACD,6DAA6D;AAC7D;CACC,aAAa;CACb;AACD,sDAAsD;AACtD;CACC,aAAa;CACb;AACD;CACC,aAAa;CACb;AACD;CACC,aAAa;CACb;;AAED,yBAAyB;AACzB;CACC,eAAe;CACf,oBAAoB;CACpB;AACD;CACC,kBAAkB;CAClB;AACD;;CAEC,cAAc;CACd,wBAAwB;CACxB;AACD;;CAEC,6BAA6B;CAC7B;AACD;;CAEC,6BAA6B;CAC7B;AACD;CACC,oBAAoB;CACpB,qBAAqB;CACrB;AACD,oEAAoE;AACpE;CACC,kBAAkB;CAClB;;AAED,4BAA4B;AAC5B;;;;;CAKC,mBAAmB;CACnB,SAAS;CACT,iBAAiB;CACjB;AACD;CACC,UAAU;CACV,kBAAkB;CAClB;AACD;;;CAGC,WAAW;CACX;AACD;;;CAGC,YAAY;CACZ;;AAED,iBAAiB;AACjB;CACC,kBAAkB;CAClB;AACD;CACC,eAAe;CACf,oBAAoB;CACpB;;AAED,iBAAiB;AACjB,oDAAoD;AACpD;;CAEC,UAAU;CACV,WAAW;CACX;AACD;CACC,YAAY;CACZ,qBAAqB;CACrB,cAAc;CACd;AACD;CACC,mBAAmB;CACnB,gBAAgB;CAChB;AACD;;CAEC,mBAAmB;CACnB,SAAS;CACT,aAAa;CACb,cAAc;CACd;AACD;;CAEC,SAAS;CACT;AACD;CACC,UAAU;CACV;AACD;CACC,WAAW;CACX;AACD;CACC,UAAU;CACV;AACD;CACC,WAAW;CACX;AACD;;CAEC,eAAe;CACf,mBAAmB;CACnB,UAAU;CACV,kBAAkB;CAClB,SAAS;CACT,iBAAiB;CACjB;AACD;CACC,gBAAgB;CAChB,mBAAmB;CACnB,mBAAmB;CACnB;AACD;CACC,eAAe;CACf,cAAc;CACd;AACD;;CAEC,WAAW;CACX;AACD;CACC,YAAY;CACZ,gBAAgB;CAChB,0BAA0B;CAC1B,iBAAiB;CACjB;AACD;CACC,mBAAmB;CACnB,mBAAmB;CACnB,kBAAkB;CAClB,UAAU;CACV;AACD;CACC,UAAU;CACV,aAAa;CACb;AACD;;CAEC,eAAe;CACf,cAAc;CACd,kBAAkB;CAClB,sBAAsB;CACtB;AACD;CACC,uBAAuB;CACvB,mBAAmB;CACnB,gBAAgB;CAChB,eAAe;CACf,gBAAgB;CAChB,iBAAiB;CACjB;AACD;CACC,aAAa;CACb,uBAAuB;CACvB,gBAAgB;CAChB,6BAA6B;CAC7B,YAAY;CACZ,kBAAkB;CAClB;AACD;CACC,YAAY;CACZ;;AAED,6BAA6B;AAC7B;CACC,YAAY;CACZ;AACD;CACC,YAAY;CACZ;AACD;CACC,WAAW;CACX,oBAAoB;CACpB;AACD;CACC,WAAW;CACX;AACD;CACC,aAAa;CACb;AACD;CACC,WAAW;CACX;AACD;;CAEC,qBAAqB;CACrB;AACD;CACC,YAAY;CACZ;AACD;CACC,YAAY;CACZ,YAAY;CACZ,aAAa;CACb;;AAED,iBAAiB;AACjB;CACC,eAAe;CACf;AACD;CACC,WAAW;CACX,WAAW;CACX;AACD;CACC,UAAU;CACV,YAAY;CACZ;AACD;CACC,WAAW;CACX,WAAW;CACX;AACD;CACC,UAAU;CACV,YAAY;CACZ;AACD;CACC,aAAa;CACb;AACD;CACC,YAAY;CACZ;AACD;;CAEC,aAAa;CACb;AACD;;CAEC,sBAAsB;CACtB,uBAAuB;CACvB;AACD;CACC,iBAAiB;CACjB,mBAAmB;CACnB,OAAO;CACP,QAAQ;CACR,cAAc;CACd,WAAW;CACX;AACD;CACC,kBAAkB;CAClB,mBAAmB;CACnB;AACD;CACC,YAAY;CACZ,eAAe;CACf,oBAAoB;CACpB,WAAW;CACX,iBAAiB;CACjB,wBAAwB;CACxB;AACD;CACC,mBAAmB;CACnB,YAAY;CACZ,SAAS;CACT,YAAY;CACZ,oBAAoB;CACpB,aAAa;CACb,aAAa;CACb;AACD;CACC,mBAAmB;CACnB,UAAU;CACV,kBAAkB;CAClB,iBAAiB;CACjB,eAAe;CACf;AACD;CACC,iBAAiB;CACjB,wBAAwB;CACxB,uBAAuB;CACvB,iBAAiB;CACjB,4BAA4B;CAC5B;AACD;CACC,aAAa;CACb;AACD;CACC,yBAAyB;CACzB,gBAAgB;CAChB;AACD;CACC,YAAY;CACZ,aAAa;CACb,YAAY;CACZ,aAAa;CACb,+BAA+B;CAC/B;AACD;CACC,aAAa;CACb;AACD;CACC,iBAAiB;CACjB,WAAW;CACX,UAAU;CACV,eAAe;CACf,cAAc;CACd;AACD;CACC,mBAAmB;CACnB;AACD;CACC,mBAAmB;CACnB,UAAU;CACV,0BAA0B;CAC1B,gBAAgB;CAChB,cAAc,CAAC,kBAAkB;CACjC,8BAA8B;CAC9B,wGAAwG;CACxG;AACD;CACC,cAAc;CACd,UAAU;CACV,aAAa;CACb,eAAe;CACf,wBAAwB;CACxB;AACD;;CAEC,aAAa;CACb;;AAED,kBAAkB;AAClB;CACC,mBAAmB;CACnB;AACD;CACC,kBAAkB;CAClB;;AAED,kBAAkB;AAClB;CACC,mBAAmB;CACnB,OAAO;CACP,UAAU;CACV,WAAW;CACX,eAAe;CACf;;AAED,mBAAmB;AACnB;CACC,WAAW;CACX,SAAS;CACT;AACD;CACC,YAAY;CACZ,iBAAiB;CACjB,iBAAiB;CACjB;AACD;CACC,aAAa;CACb,aAAa;CACb;AACD;CACC,0zEAA0zE;CAC1zE,aAAa;CACb,0BAA0B,CAAC,kBAAkB;CAC7C,cAAc;CACd;AACD;CACC,uBAAuB;CACvB;AACD;CACC,WAAW;CACX,UAAU;CACV,mBAAmB;CACnB,OAAO;CACP,QAAQ;CACR,cAAc;CACd;AACD;CACC,eAAe;CACf,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB;AACD;CACC,eAAe;CACf,kBAAkB;CAClB,iBAAiB;CACjB,mBAAmB;CACnB,oBAAoB;CACpB,aAAa;CACb,UAAU;CACV;AACD;CACC,eAAe;CACf;AACD;CACC,sBAAsB;CACtB,iBAAiB;CACjB,mBAAmB;CACnB,sBAAsB;CACtB,gBAAgB;CAChB;AACD;CACC,aAAa;CACb,WAAW;CACX,iBAAiB;CACjB,mBAAmB;CACnB,SAAS;CACT;AACD;CACC,iBAAiB;CACjB,+BAA+B;CAC/B,eAAe;CACf,iBAAiB;CACjB,iBAAiB;CACjB,wBAAwB;CACxB,oBAAoB;CACpB;AACD;CACC,mBAAmB;CACnB,iBAAiB;CACjB;AACD;CACC,mBAAmB;CACnB,WAAW;CACX,aAAa;CACb,cAAc;CACd,gBAAgB;CAChB,uBAAuB;CACvB,mBAAmB;CACnB;AACD;CACC,mBAAmB;CACnB,WAAW;CACX,gBAAgB;CAChB,eAAe;CACf,UAAU;CACV,yBAAyB;CACzB;;AAED,8BAA8B;AAC9B;;CAEC,gBAAgB;CAChB;;AAED;CACC,aAAa;CACb;AACD;CACC,WAAW;CACX,mBAAmB;CACnB;AACD;CACC,OAAO;CACP,aAAa;CACb;AACD;CACC,QAAQ;CACR;AACD;CACC,SAAS;CACT;;AAED;CACC,YAAY;CACZ,cAAc;CACd;AACD;CACC,YAAY;CACZ,eAAe;CACf,qBAAqB;CACrB;AACD;CACC,QAAQ;CACR,YAAY;CACZ;AACD;CACC,UAAU;CACV;AACD;CACC,OAAO;CACP;AACD;CACC,mBAAmB;CACnB,sBAAsB;CACtB,iBAAiB;CACjB,WAAW;CACX,uBAAuB;CACvB;AACD;CACC,aAAa;CACb,iBAAiB;CACjB,eAAe;CACf,WAAW;CACX,eAAe;CACf,uBAAuB;CACvB,kBAAkB;CAClB,mBAAmB;CACnB;AACD;CACC,YAAY;CACZ,YAAY;CACZ,gBAAgB;CAChB,WAAW;CACX,UAAU;CACV,mBAAmB;CACnB,mBAAmB;CACnB,gBAAgB;CAChB,eAAe;CACf,iBAAiB;CACjB,SAAS;CACT;AACD,gEAAgE;AAChE;CACC,iBAAiB;CACjB,oBAAoB;CACpB,mBAAmB;CACnB;AACD,4BAA4B;AAC5B;CACC,mBAAmB;CACnB,iBAAiB;CACjB,SAAS;CACT,QAAQ;CACR;AACD;CACC,OAAO;CACP;AACD;CACC,UAAU;CACV;;AAED,kBAAkB;AAClB;CACC,8BAA8B;CAC9B,iCAAiC;CACjC;AACD;CACC,mBAAmB,wIAAwI;CAC3J,cAAc;CACd;AACD;CACC,UAAU;CACV,qBAAqB;CACrB;AACD;CACC,iBAAiB;CACjB,YAAY;CACZ,mBAAmB;CACnB,OAAO;CACP,qBAAqB;CACrB,uBAAuB;CACvB,WAAW;CACX,oBAAoB;CACpB;AACD;CACC,YAAY;CACZ,kBAAkB;CAClB,sBAAsB;CACtB;AACD;CACC,oBAAoB;CACpB,oBAAoB;CACpB;AACD;;;CAGC,aAAa;CACb;AACD;CACC,gBAAgB;CAChB;AACD;CACC,eAAe;CACf,gBAAgB;CAChB,mBAAmB;CACnB,iBAAiB;CACjB;AACD;CACC,aAAa;CACb,mBAAmB;CACnB,cAAc;CACd,iBAAiB;CAEjB,yBAAyB;CACzB;AACD;CACC,kBAAkB;CAClB;;AAED;oCACoC;AACpC;CACC,0DAA0D;CAC1D,iBAAiB;CACjB;AACD;CACC,eAAe;CACf;AACD;;;;CAIC,0DAA0D;CAC1D,eAAe;CACf;AACD;CACC,0BAA0B;CAC1B,6FAA6F;CAC7F,eAAe;CACf;AACD;CACC,eAAe;CACf;AACD;CACC,0BAA0B;CAC1B,0FAA0F;CAC1F,eAAe;CACf,kBAAkB;CAClB;AACD;CACC,eAAe;CACf;;AAED;oCACoC;AACpC;;;CAGC,0BAA0B;CAC1B,oFAAoF;CACpF,kBAAkB;CAClB,eAAe;CACf;AACD;;;CAGC,eAAe;CACf,sBAAsB;CACtB;AACD;;;;;;CAMC,0BAA0B;CAC1B,oFAAoF;CACpF,kBAAkB;CAClB,eAAe;CACf;AACD;;;;;;;;CAQC,eAAe;CACf,sBAAsB;CACtB;AACD;;;CAGC,0BAA0B;CAC1B,mFAAmF;CACnF,kBAAkB;CAClB,eAAe;CACf;AACD;;;CAGC,eAAe;CACf,sBAAsB;CACtB;;AAED;oCACoC;AACpC;;;CAGC,0BAA0B;CAC1B,4FAA4F;CAC5F,eAAe;CACf;AACD;;;CAGC,eAAe;CACf;AACD;;;CAGC,0BAA0B;CAC1B,2FAA2F;CAC3F,eAAe;CACf;AACD;;;CAGC,eAAe;CACf;AACD;;;CAGC,eAAe;CACf;AACD;;;CAGC,kBAAkB;CAClB;AACD;;;CAGC,YAAY;CACZ,yBAAyB,CAAC,kBAAkB;CAC5C,oBAAoB;CACpB;AACD;;;CAGC,aAAa;CACb,yBAAyB,CAAC,kBAAkB;CAC5C,uBAAuB;CACvB;AACD;CACC,yBAAyB,CAAC,8BAA8B;CACxD;;AAED;oCACoC;;AAEpC,uBAAuB;AACvB;CACC,YAAY;CACZ,aAAa;CACb;AACD;;CAEC,4DAA4D;CAC5D;AACD;CACC,4DAA4D;CAC5D;AACD;CACC,4DAA4D;CAC5D;AACD;;CAEC,4DAA4D;CAC5D;AACD;CACC,4DAA4D;CAC5D;AACD;CACC,4DAA4D;CAC5D;AACD;;CAEC,4DAA4D;CAC5D;;AAED,iBAAiB;AACjB,iBAAiB,+BAA+B,EAAE;AAClD,qBAAqB,yBAAyB,EAAE;AAChD,sBAAsB,6BAA6B,EAAE;AACrD,qBAAqB,6BAA6B,EAAE;AACpD,sBAAsB,6BAA6B,EAAE;AACrD,qBAAqB,6BAA6B,EAAE;AACpD,sBAAsB,6BAA6B,EAAE;AACrD,qBAAqB,6BAA6B,EAAE;AACpD,sBAAsB,8BAA8B,EAAE;AACtD,uBAAuB,8BAA8B,EAAE;AACvD,uBAAuB,8BAA8B,EAAE;AACvD,wBAAwB,6BAA6B,EAAE;AACvD,yBAAyB,iCAAiC,EAAE;AAC5D,wBAAwB,iCAAiC,EAAE;AAC3D,yBAAyB,iCAAiC,EAAE;AAC5D,wBAAwB,iCAAiC,EAAE;AAC3D,yBAAyB,iCAAiC,EAAE;AAC5D,wBAAwB,iCAAiC,EAAE;AAC3D,yBAAyB,kCAAkC,EAAE;AAC7D,0BAA0B,kCAAkC,EAAE;AAC9D,0BAA0B,kCAAkC,EAAE;AAC9D,qBAAqB,6BAA6B,EAAE;AACpD,sBAAsB,iCAAiC,EAAE;AACzD,qBAAqB,iCAAiC,EAAE;AACxD,sBAAsB,iCAAiC,EAAE;AACzD,qBAAqB,iCAAiC,EAAE;AACxD,sBAAsB,iCAAiC,EAAE;AACzD,qBAAqB,iCAAiC,EAAE;AACxD,sBAAsB,kCAAkC,EAAE;AAC1D,uBAAuB,kCAAkC,EAAE;AAC3D,yBAAyB,kCAAkC,EAAE;AAC7D,uBAAuB,kCAAkC,EAAE;AAC3D,yBAAyB,kCAAkC,EAAE;AAC7D,yBAAyB,kCAAkC,EAAE;AAC7D,yBAAyB,kCAAkC,EAAE;AAC7D,yBAAyB,kCAAkC,EAAE;AAC7D,yBAAyB,kCAAkC,EAAE;AAC7D,0BAA0B,6BAA6B,EAAE;AACzD,2BAA2B,iCAAiC,EAAE;AAC9D,0BAA0B,iCAAiC,EAAE;AAC7D,2BAA2B,iCAAiC,EAAE;AAC9D,0BAA0B,iCAAiC,EAAE;AAC7D,2BAA2B,iCAAiC,EAAE;AAC9D,0BAA0B,iCAAiC,EAAE;AAC7D,2BAA2B,kCAAkC,EAAE;AAC/D,4BAA4B,kCAAkC,EAAE;AAChE,8BAA8B,kCAAkC,EAAE;AAClE,4BAA4B,kCAAkC,EAAE;AAChE,8BAA8B,kCAAkC,EAAE;AAClE,8BAA8B,kCAAkC,EAAE;AAClE,8BAA8B,kCAAkC,EAAE;AAClE,8BAA8B,kCAAkC,EAAE;AAClE,8BAA8B,kCAAkC,EAAE;AAClE,gCAAgC,6BAA6B,EAAE;AAC/D,gCAAgC,iCAAiC,EAAE;AACnE,gCAAgC,iCAAiC,EAAE;AACnE,gCAAgC,iCAAiC,EAAE;AACnE,2BAA2B,iCAAiC,EAAE;AAC9D,2BAA2B,iCAAiC,EAAE;AAC9D,2BAA2B,iCAAiC,EAAE;AAC9D,2BAA2B,kCAAkC,EAAE;AAC/D,4BAA4B,kCAAkC,EAAE;AAChE,4BAA4B,kCAAkC,EAAE;AAChE,4BAA4B,kCAAkC,EAAE;AAChE,4BAA4B,kCAAkC,EAAE;AAChE,mBAAmB,6BAA6B,EAAE;AAClD,wBAAwB,iCAAiC,EAAE;AAC3D,mBAAmB,iCAAiC,EAAE;AACtD,kBAAkB,iCAAiC,EAAE;AACrD,mBAAmB,iCAAiC,EAAE;AACtD,mBAAmB,iCAAiC,EAAE;AACtD,wBAAwB,iCAAiC,EAAE;AAC3D,6BAA6B,kCAAkC,EAAE;AACjE,4BAA4B,6BAA6B,EAAE;AAC3D,uBAAuB,iCAAiC,EAAE;AAC1D,oBAAoB,iCAAiC,EAAE;AACvD,sBAAsB,iCAAiC,EAAE;AACzD,gBAAgB,iCAAiC,EAAE;AACnD,uBAAuB,iCAAiC,EAAE;AAC1D,qBAAqB,iCAAiC,EAAE;AACxD,oBAAoB,kCAAkC,EAAE;AACxD,mBAAmB,kCAAkC,EAAE;AACvD,kBAAkB,kCAAkC,EAAE;AACtD,iBAAiB,kCAAkC,EAAE;AACrD,iBAAiB,kCAAkC,EAAE;AACrD,kBAAkB,kCAAkC,EAAE;AACtD,oBAAoB,kCAAkC,EAAE;AACxD,oBAAoB,kCAAkC,EAAE;AACxD,eAAe,kCAAkC,EAAE;AACnD,gBAAgB,8BAA8B,EAAE;AAChD,gBAAgB,kCAAkC,EAAE;AACpD,oBAAoB,kCAAkC,EAAE;AACxD,gBAAgB,kCAAkC,EAAE;AACpD,kBAAkB,kCAAkC,EAAE;AACtD,iBAAiB,kCAAkC,EAAE;AACrD,gBAAgB,kCAAkC,EAAE;AACpD,sBAAsB,mCAAmC,EAAE;AAC3D,kBAAkB,mCAAmC,EAAE;AACvD,mBAAmB,mCAAmC,EAAE;AACxD,kBAAkB,mCAAmC,EAAE;AACvD,kBAAkB,mCAAmC,EAAE;AACvD,gBAAgB,mCAAmC,EAAE;AACrD,iBAAiB,mCAAmC,EAAE;AACtD,gBAAgB,mCAAmC,EAAE;AACrD,gBAAgB,mCAAmC,EAAE;AACrD,kBAAkB,8BAA8B,EAAE;AAClD,gBAAgB,kCAAkC,EAAE;AACpD,qBAAqB,kCAAkC,EAAE;AACzD,iBAAiB,kCAAkC,EAAE;AACrD,sBAAsB,kCAAkC,EAAE;AAC1D,iBAAiB,kCAAkC,EAAE;AACrD,sBAAsB,kCAAkC,EAAE;AAC1D,eAAe,mCAAmC,EAAE;AACpD,qBAAqB,mCAAmC,EAAE;AAC1D,oBAAoB,mCAAmC,EAAE;AACzD,qBAAqB,mCAAmC,EAAE;AAC1D,gBAAgB,mCAAmC,EAAE;AACrD,mBAAmB,mCAAmC,EAAE;AACxD,iBAAiB,mCAAmC,EAAE;AACtD,iBAAiB,mCAAmC,EAAE;AACtD,kBAAkB,mCAAmC,EAAE;AACvD,iBAAiB,8BAA8B,EAAE;AACjD,gBAAgB,kCAAkC,EAAE;AACpD,kBAAkB,kCAAkC,EAAE;AACtD,gBAAgB,kCAAkC,EAAE;AACpD,iBAAiB,kCAAkC,EAAE;AACrD,kBAAkB,kCAAkC,EAAE;AACtD,oBAAoB,kCAAkC,EAAE;AACxD,qBAAqB,mCAAmC,EAAE;AAC1D,iBAAiB,mCAAmC,EAAE;AACtD,iBAAiB,mCAAmC,EAAE;AACtD,gBAAgB,8BAA8B,EAAE;AAChD,iBAAiB,kCAAkC,EAAE;AACrD,qBAAqB,kCAAkC,EAAE;AACzD,qBAAqB,kCAAkC,EAAE;AACzD,oBAAoB,kCAAkC,EAAE;AACxD,sBAAsB,kCAAkC,EAAE;AAC1D,sEAAsE;AACtE,sBAAsB,kCAAkC,EAAE;AAC1D,gBAAgB,kCAAkC,EAAE;AACpD,iBAAiB,mCAAmC,EAAE;AACtD,sBAAsB,mCAAmC,EAAE;AAC3D,qBAAqB,mCAAmC,EAAE;AAC1D,iBAAiB,8BAA8B,EAAE;AACjD,uBAAuB,kCAAkC,EAAE;AAC3D,kBAAkB,kCAAkC,EAAE;AACtD,qBAAqB,kCAAkC,EAAE;AACzD,qBAAqB,kCAAkC,EAAE;AACzD,qBAAqB,kCAAkC,EAAE;AACzD,qBAAqB,kCAAkC,EAAE;AACzD,uBAAuB,8BAA8B,EAAE;AACvD,wBAAwB,kCAAkC,EAAE;AAC5D,wBAAwB,kCAAkC,EAAE;AAC5D,6BAA6B,kCAAkC,EAAE;AACjE,6BAA6B,kCAAkC,EAAE;AACjE,6BAA6B,kCAAkC,EAAE;AACjE,6BAA6B,kCAAkC,EAAE;AACjE,0BAA0B,mCAAmC,EAAE;AAC/D,0BAA0B,mCAAmC,EAAE;AAC/D,0BAA0B,mCAAmC,EAAE;AAC/D,0BAA0B,mCAAmC,EAAE;AAC/D,yBAAyB,mCAAmC,EAAE;AAC9D,0BAA0B,mCAAmC,EAAE;AAC/D,wBAAwB,mCAAmC,EAAE;AAC7D,4BAA4B,8BAA8B,EAAE;AAC5D,6BAA6B,kCAAkC,EAAE;AACjE,6BAA6B,kCAAkC,EAAE;AACjE,4BAA4B,kCAAkC,EAAE;AAChE,6BAA6B,kCAAkC,EAAE;AACjE,6BAA6B,kCAAkC,EAAE;AACjE,gCAAgC,8BAA8B,EAAE;AAChE,kCAAkC,kCAAkC,EAAE;AACtE,+BAA+B,kCAAkC,EAAE;AACnE,iCAAiC,kCAAkC,EAAE;AACrE,iCAAiC,kCAAkC,EAAE;AACrE,4BAA4B,kCAAkC,EAAE;;;AAGhE;oCACoC;;AAEpC,mBAAmB;AACnB;;;;CAIC,4BAA4B;CAC5B;AACD;;;;CAIC,6BAA6B;CAC7B;AACD;;;;CAIC,+BAA+B;CAC/B;AACD;;;;CAIC,gCAAgC;CAChC;;AAED,cAAc;AACd;CACC,2FAA2F;CAC3F,YAAY;CACZ,0BAA0B,CAAC,kBAAkB;CAC7C;AACD;CACC,sBAAsB;CACtB,aAAa;CACb,oBAAoB;CACpB,YAAY;CACZ,0BAA0B,CAAC,kBAAkB;CAC7C,mBAAmB;CACnB","file":"jquery-ui.custom.min.css","sourcesContent":["/*! jQuery UI - v1.11.4 - 2015-12-05\n* http://jqueryui.com\n* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css\n* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px\n* Copyright jQuery Foundation and other contributors; Licensed MIT */\n\n/* Layout helpers\n----------------------------------*/\n.ui-helper-hidden {\n\tdisplay: none;\n}\n.ui-helper-hidden-accessible {\n\tborder: 0;\n\tclip: rect(0 0 0 0);\n\theight: 1px;\n\tmargin: -1px;\n\toverflow: hidden;\n\tpadding: 0;\n\tposition: absolute;\n\twidth: 1px;\n}\n.ui-helper-reset {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\toutline: 0;\n\tline-height: 1.3;\n\ttext-decoration: none;\n\tfont-size: 100%;\n\tlist-style: none;\n}\n.ui-helper-clearfix:before,\n.ui-helper-clearfix:after {\n\tcontent: \"\";\n\tdisplay: table;\n\tborder-collapse: collapse;\n}\n.ui-helper-clearfix:after {\n\tclear: both;\n}\n.ui-helper-clearfix {\n\tmin-height: 0; /* support: IE7 */\n}\n.ui-helper-zfix {\n\twidth: 100%;\n\theight: 100%;\n\ttop: 0;\n\tleft: 0;\n\tposition: absolute;\n\topacity: 0;\n\tfilter:Alpha(Opacity=0); /* support: IE8 */\n}\n\n.ui-front {\n\tz-index: 100;\n}\n\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-disabled {\n\tcursor: default !important;\n}\n\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon {\n\tdisplay: block;\n\ttext-indent: -99999px;\n\toverflow: hidden;\n\tbackground-repeat: no-repeat;\n}\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Overlays */\n.ui-widget-overlay {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n.ui-draggable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-resizable {\n\tposition: relative;\n}\n.ui-resizable-handle {\n\tposition: absolute;\n\tfont-size: 0.1px;\n\tdisplay: block;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-resizable-disabled .ui-resizable-handle,\n.ui-resizable-autohide .ui-resizable-handle {\n\tdisplay: none;\n}\n.ui-resizable-n {\n\tcursor: n-resize;\n\theight: 7px;\n\twidth: 100%;\n\ttop: -5px;\n\tleft: 0;\n}\n.ui-resizable-s {\n\tcursor: s-resize;\n\theight: 7px;\n\twidth: 100%;\n\tbottom: -5px;\n\tleft: 0;\n}\n.ui-resizable-e {\n\tcursor: e-resize;\n\twidth: 7px;\n\tright: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-w {\n\tcursor: w-resize;\n\twidth: 7px;\n\tleft: -5px;\n\ttop: 0;\n\theight: 100%;\n}\n.ui-resizable-se {\n\tcursor: se-resize;\n\twidth: 12px;\n\theight: 12px;\n\tright: 1px;\n\tbottom: 1px;\n}\n.ui-resizable-sw {\n\tcursor: sw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\tbottom: -5px;\n}\n.ui-resizable-nw {\n\tcursor: nw-resize;\n\twidth: 9px;\n\theight: 9px;\n\tleft: -5px;\n\ttop: -5px;\n}\n.ui-resizable-ne {\n\tcursor: ne-resize;\n\twidth: 9px;\n\theight: 9px;\n\tright: -5px;\n\ttop: -5px;\n}\n.ui-selectable {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-selectable-helper {\n\tposition: absolute;\n\tz-index: 100;\n\tborder: 1px dotted black;\n}\n.ui-sortable-handle {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-accordion .ui-accordion-header {\n\tdisplay: block;\n\tcursor: pointer;\n\tposition: relative;\n\tmargin: 2px 0 0 0;\n\tpadding: .5em .5em .5em .7em;\n\tmin-height: 0; /* support: IE7 */\n\tfont-size: 100%;\n}\n.ui-accordion .ui-accordion-icons {\n\tpadding-left: 2.2em;\n}\n.ui-accordion .ui-accordion-icons .ui-accordion-icons {\n\tpadding-left: 2.2em;\n}\n.ui-accordion .ui-accordion-header .ui-accordion-header-icon {\n\tposition: absolute;\n\tleft: .5em;\n\ttop: 50%;\n\tmargin-top: -8px;\n}\n.ui-accordion .ui-accordion-content {\n\tpadding: 1em 2.2em;\n\tborder-top: 0;\n\toverflow: auto;\n}\n.ui-autocomplete {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tcursor: default;\n}\n.ui-button {\n\tdisplay: inline-block;\n\tposition: relative;\n\tpadding: 0;\n\tline-height: normal;\n\tmargin-right: .1em;\n\tcursor: pointer;\n\tvertical-align: middle;\n\ttext-align: center;\n\toverflow: visible; /* removes extra width in IE */\n}\n.ui-button,\n.ui-button:link,\n.ui-button:visited,\n.ui-button:hover,\n.ui-button:active {\n\ttext-decoration: none;\n}\n/* to make room for the icon, a width needs to be set here */\n.ui-button-icon-only {\n\twidth: 2.2em;\n}\n/* button elements seem to need a little more width */\nbutton.ui-button-icon-only {\n\twidth: 2.4em;\n}\n.ui-button-icons-only {\n\twidth: 3.4em;\n}\nbutton.ui-button-icons-only {\n\twidth: 3.7em;\n}\n\n/* button text element */\n.ui-button .ui-button-text {\n\tdisplay: block;\n\tline-height: normal;\n}\n.ui-button-text-only .ui-button-text {\n\tpadding: .4em 1em;\n}\n.ui-button-icon-only .ui-button-text,\n.ui-button-icons-only .ui-button-text {\n\tpadding: .4em;\n\ttext-indent: -9999999px;\n}\n.ui-button-text-icon-primary .ui-button-text,\n.ui-button-text-icons .ui-button-text {\n\tpadding: .4em 1em .4em 2.1em;\n}\n.ui-button-text-icon-secondary .ui-button-text,\n.ui-button-text-icons .ui-button-text {\n\tpadding: .4em 2.1em .4em 1em;\n}\n.ui-button-text-icons .ui-button-text {\n\tpadding-left: 2.1em;\n\tpadding-right: 2.1em;\n}\n/* no icon support for input elements, provide padding by default */\ninput.ui-button {\n\tpadding: .4em 1em;\n}\n\n/* button icon element(s) */\n.ui-button-icon-only .ui-icon,\n.ui-button-text-icon-primary .ui-icon,\n.ui-button-text-icon-secondary .ui-icon,\n.ui-button-text-icons .ui-icon,\n.ui-button-icons-only .ui-icon {\n\tposition: absolute;\n\ttop: 50%;\n\tmargin-top: -8px;\n}\n.ui-button-icon-only .ui-icon {\n\tleft: 50%;\n\tmargin-left: -8px;\n}\n.ui-button-text-icon-primary .ui-button-icon-primary,\n.ui-button-text-icons .ui-button-icon-primary,\n.ui-button-icons-only .ui-button-icon-primary {\n\tleft: .5em;\n}\n.ui-button-text-icon-secondary .ui-button-icon-secondary,\n.ui-button-text-icons .ui-button-icon-secondary,\n.ui-button-icons-only .ui-button-icon-secondary {\n\tright: .5em;\n}\n\n/* button sets */\n.ui-buttonset {\n\tmargin-right: 7px;\n}\n.ui-buttonset .ui-button {\n\tmargin-left: 0;\n\tmargin-right: -.3em;\n}\n\n/* workarounds */\n/* reset extra padding in Firefox, see h5bp.com/l */\ninput.ui-button::-moz-focus-inner,\nbutton.ui-button::-moz-focus-inner {\n\tborder: 0;\n\tpadding: 0;\n}\n.ui-datepicker {\n\twidth: 17em;\n\tpadding: .2em .2em 0;\n\tdisplay: none;\n}\n.ui-datepicker .ui-datepicker-header {\n\tposition: relative;\n\tpadding: .2em 0;\n}\n.ui-datepicker .ui-datepicker-prev,\n.ui-datepicker .ui-datepicker-next {\n\tposition: absolute;\n\ttop: 2px;\n\twidth: 1.8em;\n\theight: 1.8em;\n}\n.ui-datepicker .ui-datepicker-prev-hover,\n.ui-datepicker .ui-datepicker-next-hover {\n\ttop: 1px;\n}\n.ui-datepicker .ui-datepicker-prev {\n\tleft: 2px;\n}\n.ui-datepicker .ui-datepicker-next {\n\tright: 2px;\n}\n.ui-datepicker .ui-datepicker-prev-hover {\n\tleft: 1px;\n}\n.ui-datepicker .ui-datepicker-next-hover {\n\tright: 1px;\n}\n.ui-datepicker .ui-datepicker-prev span,\n.ui-datepicker .ui-datepicker-next span {\n\tdisplay: block;\n\tposition: absolute;\n\tleft: 50%;\n\tmargin-left: -8px;\n\ttop: 50%;\n\tmargin-top: -8px;\n}\n.ui-datepicker .ui-datepicker-title {\n\tmargin: 0 2.3em;\n\tline-height: 1.8em;\n\ttext-align: center;\n}\n.ui-datepicker .ui-datepicker-title select {\n\tfont-size: 1em;\n\tmargin: 1px 0;\n}\n.ui-datepicker select.ui-datepicker-month,\n.ui-datepicker select.ui-datepicker-year {\n\twidth: 45%;\n}\n.ui-datepicker table {\n\twidth: 100%;\n\tfont-size: .9em;\n\tborder-collapse: collapse;\n\tmargin: 0 0 .4em;\n}\n.ui-datepicker th {\n\tpadding: .7em .3em;\n\ttext-align: center;\n\tfont-weight: bold;\n\tborder: 0;\n}\n.ui-datepicker td {\n\tborder: 0;\n\tpadding: 1px;\n}\n.ui-datepicker td span,\n.ui-datepicker td a {\n\tdisplay: block;\n\tpadding: .2em;\n\ttext-align: right;\n\ttext-decoration: none;\n}\n.ui-datepicker .ui-datepicker-buttonpane {\n\tbackground-image: none;\n\tmargin: .7em 0 0 0;\n\tpadding: 0 .2em;\n\tborder-left: 0;\n\tborder-right: 0;\n\tborder-bottom: 0;\n}\n.ui-datepicker .ui-datepicker-buttonpane button {\n\tfloat: right;\n\tmargin: .5em .2em .4em;\n\tcursor: pointer;\n\tpadding: .2em .6em .3em .6em;\n\twidth: auto;\n\toverflow: visible;\n}\n.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {\n\tfloat: left;\n}\n\n/* with multiple calendars */\n.ui-datepicker.ui-datepicker-multi {\n\twidth: auto;\n}\n.ui-datepicker-multi .ui-datepicker-group {\n\tfloat: left;\n}\n.ui-datepicker-multi .ui-datepicker-group table {\n\twidth: 95%;\n\tmargin: 0 auto .4em;\n}\n.ui-datepicker-multi-2 .ui-datepicker-group {\n\twidth: 50%;\n}\n.ui-datepicker-multi-3 .ui-datepicker-group {\n\twidth: 33.3%;\n}\n.ui-datepicker-multi-4 .ui-datepicker-group {\n\twidth: 25%;\n}\n.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-left-width: 0;\n}\n.ui-datepicker-multi .ui-datepicker-buttonpane {\n\tclear: left;\n}\n.ui-datepicker-row-break {\n\tclear: both;\n\twidth: 100%;\n\tfont-size: 0;\n}\n\n/* RTL support */\n.ui-datepicker-rtl {\n\tdirection: rtl;\n}\n.ui-datepicker-rtl .ui-datepicker-prev {\n\tright: 2px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next {\n\tleft: 2px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-prev:hover {\n\tright: 1px;\n\tleft: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-next:hover {\n\tleft: 1px;\n\tright: auto;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane {\n\tclear: right;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button {\n\tfloat: left;\n}\n.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,\n.ui-datepicker-rtl .ui-datepicker-group {\n\tfloat: right;\n}\n.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,\n.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {\n\tborder-right-width: 0;\n\tborder-left-width: 1px;\n}\n.ui-dialog {\n\toverflow: hidden;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tpadding: .2em;\n\toutline: 0;\n}\n.ui-dialog .ui-dialog-titlebar {\n\tpadding: .4em 1em;\n\tposition: relative;\n}\n.ui-dialog .ui-dialog-title {\n\tfloat: left;\n\tmargin: .1em 0;\n\twhite-space: nowrap;\n\twidth: 90%;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.ui-dialog .ui-dialog-titlebar-close {\n\tposition: absolute;\n\tright: .3em;\n\ttop: 50%;\n\twidth: 20px;\n\tmargin: -10px 0 0 0;\n\tpadding: 1px;\n\theight: 20px;\n}\n.ui-dialog .ui-dialog-content {\n\tposition: relative;\n\tborder: 0;\n\tpadding: .5em 1em;\n\tbackground: none;\n\toverflow: auto;\n}\n.ui-dialog .ui-dialog-buttonpane {\n\ttext-align: left;\n\tborder-width: 1px 0 0 0;\n\tbackground-image: none;\n\tmargin-top: .5em;\n\tpadding: .3em 1em .5em .4em;\n}\n.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {\n\tfloat: right;\n}\n.ui-dialog .ui-dialog-buttonpane button {\n\tmargin: .5em .4em .5em 0;\n\tcursor: pointer;\n}\n.ui-dialog .ui-resizable-se {\n\twidth: 12px;\n\theight: 12px;\n\tright: -5px;\n\tbottom: -5px;\n\tbackground-position: 16px 16px;\n}\n.ui-draggable .ui-dialog-titlebar {\n\tcursor: move;\n}\n.ui-menu {\n\tlist-style: none;\n\tpadding: 0;\n\tmargin: 0;\n\tdisplay: block;\n\toutline: none;\n}\n.ui-menu .ui-menu {\n\tposition: absolute;\n}\n.ui-menu .ui-menu-item {\n\tposition: relative;\n\tmargin: 0;\n\tpadding: 3px 1em 3px .4em;\n\tcursor: pointer;\n\tmin-height: 0; /* support: IE7 */\n\t/* support: IE10, see #8844 */\n\tlist-style-image: url(\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\");\n}\n.ui-menu .ui-menu-divider {\n\tmargin: 5px 0;\n\theight: 0;\n\tfont-size: 0;\n\tline-height: 0;\n\tborder-width: 1px 0 0 0;\n}\n.ui-menu .ui-state-focus,\n.ui-menu .ui-state-active {\n\tmargin: -1px;\n}\n\n/* icon support */\n.ui-menu-icons {\n\tposition: relative;\n}\n.ui-menu-icons .ui-menu-item {\n\tpadding-left: 2em;\n}\n\n/* left-aligned */\n.ui-menu .ui-icon {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: .2em;\n\tmargin: auto 0;\n}\n\n/* right-aligned */\n.ui-menu .ui-menu-icon {\n\tleft: auto;\n\tright: 0;\n}\n.ui-progressbar {\n\theight: 2em;\n\ttext-align: left;\n\toverflow: hidden;\n}\n.ui-progressbar .ui-progressbar-value {\n\tmargin: -1px;\n\theight: 100%;\n}\n.ui-progressbar .ui-progressbar-overlay {\n\tbackground: url(\"data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==\");\n\theight: 100%;\n\tfilter: alpha(opacity=25); /* support: IE8 */\n\topacity: 0.25;\n}\n.ui-progressbar-indeterminate .ui-progressbar-value {\n\tbackground-image: none;\n}\n.ui-selectmenu-menu {\n\tpadding: 0;\n\tmargin: 0;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tdisplay: none;\n}\n.ui-selectmenu-menu .ui-menu {\n\toverflow: auto;\n\t/* Support: IE7 */\n\toverflow-x: hidden;\n\tpadding-bottom: 1px;\n}\n.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {\n\tfont-size: 1em;\n\tfont-weight: bold;\n\tline-height: 1.5;\n\tpadding: 2px 0.4em;\n\tmargin: 0.5em 0 0 0;\n\theight: auto;\n\tborder: 0;\n}\n.ui-selectmenu-open {\n\tdisplay: block;\n}\n.ui-selectmenu-button {\n\tdisplay: inline-block;\n\toverflow: hidden;\n\tposition: relative;\n\ttext-decoration: none;\n\tcursor: pointer;\n}\n.ui-selectmenu-button span.ui-icon {\n\tright: 0.5em;\n\tleft: auto;\n\tmargin-top: -8px;\n\tposition: absolute;\n\ttop: 50%;\n}\n.ui-selectmenu-button span.ui-selectmenu-text {\n\ttext-align: left;\n\tpadding: 0.4em 2.1em 0.4em 1em;\n\tdisplay: block;\n\tline-height: 1.4;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n.ui-slider {\n\tposition: relative;\n\ttext-align: left;\n}\n.ui-slider .ui-slider-handle {\n\tposition: absolute;\n\tz-index: 2;\n\twidth: 1.2em;\n\theight: 1.2em;\n\tcursor: default;\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.ui-slider .ui-slider-range {\n\tposition: absolute;\n\tz-index: 1;\n\tfont-size: .7em;\n\tdisplay: block;\n\tborder: 0;\n\tbackground-position: 0 0;\n}\n\n/* support: IE8 - See #6727 */\n.ui-slider.ui-state-disabled .ui-slider-handle,\n.ui-slider.ui-state-disabled .ui-slider-range {\n\tfilter: inherit;\n}\n\n.ui-slider-horizontal {\n\theight: .8em;\n}\n.ui-slider-horizontal .ui-slider-handle {\n\ttop: -.3em;\n\tmargin-left: -.6em;\n}\n.ui-slider-horizontal .ui-slider-range {\n\ttop: 0;\n\theight: 100%;\n}\n.ui-slider-horizontal .ui-slider-range-min {\n\tleft: 0;\n}\n.ui-slider-horizontal .ui-slider-range-max {\n\tright: 0;\n}\n\n.ui-slider-vertical {\n\twidth: .8em;\n\theight: 100px;\n}\n.ui-slider-vertical .ui-slider-handle {\n\tleft: -.3em;\n\tmargin-left: 0;\n\tmargin-bottom: -.6em;\n}\n.ui-slider-vertical .ui-slider-range {\n\tleft: 0;\n\twidth: 100%;\n}\n.ui-slider-vertical .ui-slider-range-min {\n\tbottom: 0;\n}\n.ui-slider-vertical .ui-slider-range-max {\n\ttop: 0;\n}\n.ui-spinner {\n\tposition: relative;\n\tdisplay: inline-block;\n\toverflow: hidden;\n\tpadding: 0;\n\tvertical-align: middle;\n}\n.ui-spinner-input {\n\tborder: none;\n\tbackground: none;\n\tcolor: inherit;\n\tpadding: 0;\n\tmargin: .2em 0;\n\tvertical-align: middle;\n\tmargin-left: .4em;\n\tmargin-right: 22px;\n}\n.ui-spinner-button {\n\twidth: 16px;\n\theight: 50%;\n\tfont-size: .5em;\n\tpadding: 0;\n\tmargin: 0;\n\ttext-align: center;\n\tposition: absolute;\n\tcursor: default;\n\tdisplay: block;\n\toverflow: hidden;\n\tright: 0;\n}\n/* more specificity required here to override default borders */\n.ui-spinner a.ui-spinner-button {\n\tborder-top: none;\n\tborder-bottom: none;\n\tborder-right: none;\n}\n/* vertically center icon */\n.ui-spinner .ui-icon {\n\tposition: absolute;\n\tmargin-top: -8px;\n\ttop: 50%;\n\tleft: 0;\n}\n.ui-spinner-up {\n\ttop: 0;\n}\n.ui-spinner-down {\n\tbottom: 0;\n}\n\n/* TR overrides */\n.ui-spinner .ui-icon-triangle-1-s {\n\t/* need to fix icons sprite */\n\tbackground-position: -65px -16px;\n}\n.ui-tabs {\n\tposition: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as \"fixed\") */\n\tpadding: .2em;\n}\n.ui-tabs .ui-tabs-nav {\n\tmargin: 0;\n\tpadding: .2em .2em 0;\n}\n.ui-tabs .ui-tabs-nav li {\n\tlist-style: none;\n\tfloat: left;\n\tposition: relative;\n\ttop: 0;\n\tmargin: 1px .2em 0 0;\n\tborder-bottom-width: 0;\n\tpadding: 0;\n\twhite-space: nowrap;\n}\n.ui-tabs .ui-tabs-nav .ui-tabs-anchor {\n\tfloat: left;\n\tpadding: .5em 1em;\n\ttext-decoration: none;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active {\n\tmargin-bottom: -1px;\n\tpadding-bottom: 1px;\n}\n.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,\n.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {\n\tcursor: text;\n}\n.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {\n\tcursor: pointer;\n}\n.ui-tabs .ui-tabs-panel {\n\tdisplay: block;\n\tborder-width: 0;\n\tpadding: 1em 1.4em;\n\tbackground: none;\n}\n.ui-tooltip {\n\tpadding: 8px;\n\tposition: absolute;\n\tz-index: 9999;\n\tmax-width: 300px;\n\t-webkit-box-shadow: 0 0 5px #aaa;\n\tbox-shadow: 0 0 5px #aaa;\n}\nbody .ui-tooltip {\n\tborder-width: 2px;\n}\n\n/* Component containers\n----------------------------------*/\n.ui-widget {\n\tfont-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;\n\tfont-size: 1.1em;\n}\n.ui-widget .ui-widget {\n\tfont-size: 1em;\n}\n.ui-widget input,\n.ui-widget select,\n.ui-widget textarea,\n.ui-widget button {\n\tfont-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;\n\tfont-size: 1em;\n}\n.ui-widget-content {\n\tborder: 1px solid #dddddd;\n\tbackground: #eeeeee url(\"images/ui-bg_highlight-soft_100_eeeeee_1x100.png\") 50% top repeat-x;\n\tcolor: #333333;\n}\n.ui-widget-content a {\n\tcolor: #333333;\n}\n.ui-widget-header {\n\tborder: 1px solid #e78f08;\n\tbackground: #f6a828 url(\"images/ui-bg_gloss-wave_35_f6a828_500x100.png\") 50% 50% repeat-x;\n\tcolor: #ffffff;\n\tfont-weight: bold;\n}\n.ui-widget-header a {\n\tcolor: #ffffff;\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default {\n\tborder: 1px solid #cccccc;\n\tbackground: #f6f6f6 url(\"images/ui-bg_glass_100_f6f6f6_1x400.png\") 50% 50% repeat-x;\n\tfont-weight: bold;\n\tcolor: #1c94c4;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited {\n\tcolor: #1c94c4;\n\ttext-decoration: none;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus {\n\tborder: 1px solid #fbcb09;\n\tbackground: #fdf5ce url(\"images/ui-bg_glass_100_fdf5ce_1x400.png\") 50% 50% repeat-x;\n\tfont-weight: bold;\n\tcolor: #c77405;\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited,\n.ui-state-focus a,\n.ui-state-focus a:hover,\n.ui-state-focus a:link,\n.ui-state-focus a:visited {\n\tcolor: #c77405;\n\ttext-decoration: none;\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active {\n\tborder: 1px solid #fbd850;\n\tbackground: #ffffff url(\"images/ui-bg_glass_65_ffffff_1x400.png\") 50% 50% repeat-x;\n\tfont-weight: bold;\n\tcolor: #eb8f00;\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: #eb8f00;\n\ttext-decoration: none;\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid #fed22f;\n\tbackground: #ffe45c url(\"images/ui-bg_highlight-soft_75_ffe45c_1x100.png\") 50% top repeat-x;\n\tcolor: #363636;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: #363636;\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: 1px solid #cd0a0a;\n\tbackground: #b81900 url(\"images/ui-bg_diagonals-thick_18_b81900_40x40.png\") 50% 50% repeat;\n\tcolor: #ffffff;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #ffffff;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #ffffff;\n}\n.ui-priority-primary,\n.ui-widget-content .ui-priority-primary,\n.ui-widget-header .ui-priority-primary {\n\tfont-weight: bold;\n}\n.ui-priority-secondary,\n.ui-widget-content .ui-priority-secondary,\n.ui-widget-header .ui-priority-secondary {\n\topacity: .7;\n\tfilter:Alpha(Opacity=70); /* support: IE8 */\n\tfont-weight: normal;\n}\n.ui-state-disabled,\n.ui-widget-content .ui-state-disabled,\n.ui-widget-header .ui-state-disabled {\n\topacity: .35;\n\tfilter:Alpha(Opacity=35); /* support: IE8 */\n\tbackground-image: none;\n}\n.ui-state-disabled .ui-icon {\n\tfilter:Alpha(Opacity=35); /* support: IE8 - See #6059 */\n}\n\n/* Icons\n----------------------------------*/\n\n/* states and images */\n.ui-icon {\n\twidth: 16px;\n\theight: 16px;\n}\n.ui-icon,\n.ui-widget-content .ui-icon {\n\tbackground-image: url(\"images/ui-icons_222222_256x240.png\");\n}\n.ui-widget-header .ui-icon {\n\tbackground-image: url(\"images/ui-icons_ffffff_256x240.png\");\n}\n.ui-state-default .ui-icon {\n\tbackground-image: url(\"images/ui-icons_ef8c08_256x240.png\");\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon {\n\tbackground-image: url(\"images/ui-icons_ef8c08_256x240.png\");\n}\n.ui-state-active .ui-icon {\n\tbackground-image: url(\"images/ui-icons_ef8c08_256x240.png\");\n}\n.ui-state-highlight .ui-icon {\n\tbackground-image: url(\"images/ui-icons_228ef1_256x240.png\");\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url(\"images/ui-icons_ffd27a_256x240.png\");\n}\n\n/* positioning */\n.ui-icon-blank { background-position: 16px 16px; }\n.ui-icon-carat-1-n { background-position: 0 0; }\n.ui-icon-carat-1-ne { background-position: -16px 0; }\n.ui-icon-carat-1-e { background-position: -32px 0; }\n.ui-icon-carat-1-se { background-position: -48px 0; }\n.ui-icon-carat-1-s { background-position: -64px 0; }\n.ui-icon-carat-1-sw { background-position: -80px 0; }\n.ui-icon-carat-1-w { background-position: -96px 0; }\n.ui-icon-carat-1-nw { background-position: -112px 0; }\n.ui-icon-carat-2-n-s { background-position: -128px 0; }\n.ui-icon-carat-2-e-w { background-position: -144px 0; }\n.ui-icon-triangle-1-n { background-position: 0 -16px; }\n.ui-icon-triangle-1-ne { background-position: -16px -16px; }\n.ui-icon-triangle-1-e { background-position: -32px -16px; }\n.ui-icon-triangle-1-se { background-position: -48px -16px; }\n.ui-icon-triangle-1-s { background-position: -64px -16px; }\n.ui-icon-triangle-1-sw { background-position: -80px -16px; }\n.ui-icon-triangle-1-w { background-position: -96px -16px; }\n.ui-icon-triangle-1-nw { background-position: -112px -16px; }\n.ui-icon-triangle-2-n-s { background-position: -128px -16px; }\n.ui-icon-triangle-2-e-w { background-position: -144px -16px; }\n.ui-icon-arrow-1-n { background-position: 0 -32px; }\n.ui-icon-arrow-1-ne { background-position: -16px -32px; }\n.ui-icon-arrow-1-e { background-position: -32px -32px; }\n.ui-icon-arrow-1-se { background-position: -48px -32px; }\n.ui-icon-arrow-1-s { background-position: -64px -32px; }\n.ui-icon-arrow-1-sw { background-position: -80px -32px; }\n.ui-icon-arrow-1-w { background-position: -96px -32px; }\n.ui-icon-arrow-1-nw { background-position: -112px -32px; }\n.ui-icon-arrow-2-n-s { background-position: -128px -32px; }\n.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }\n.ui-icon-arrow-2-e-w { background-position: -160px -32px; }\n.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }\n.ui-icon-arrowstop-1-n { background-position: -192px -32px; }\n.ui-icon-arrowstop-1-e { background-position: -208px -32px; }\n.ui-icon-arrowstop-1-s { background-position: -224px -32px; }\n.ui-icon-arrowstop-1-w { background-position: -240px -32px; }\n.ui-icon-arrowthick-1-n { background-position: 0 -48px; }\n.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }\n.ui-icon-arrowthick-1-e { background-position: -32px -48px; }\n.ui-icon-arrowthick-1-se { background-position: -48px -48px; }\n.ui-icon-arrowthick-1-s { background-position: -64px -48px; }\n.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }\n.ui-icon-arrowthick-1-w { background-position: -96px -48px; }\n.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }\n.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }\n.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }\n.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }\n.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }\n.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }\n.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }\n.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }\n.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }\n.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }\n.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }\n.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }\n.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }\n.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }\n.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }\n.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }\n.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }\n.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }\n.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }\n.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }\n.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }\n.ui-icon-arrow-4 { background-position: 0 -80px; }\n.ui-icon-arrow-4-diag { background-position: -16px -80px; }\n.ui-icon-extlink { background-position: -32px -80px; }\n.ui-icon-newwin { background-position: -48px -80px; }\n.ui-icon-refresh { background-position: -64px -80px; }\n.ui-icon-shuffle { background-position: -80px -80px; }\n.ui-icon-transfer-e-w { background-position: -96px -80px; }\n.ui-icon-transferthick-e-w { background-position: -112px -80px; }\n.ui-icon-folder-collapsed { background-position: 0 -96px; }\n.ui-icon-folder-open { background-position: -16px -96px; }\n.ui-icon-document { background-position: -32px -96px; }\n.ui-icon-document-b { background-position: -48px -96px; }\n.ui-icon-note { background-position: -64px -96px; }\n.ui-icon-mail-closed { background-position: -80px -96px; }\n.ui-icon-mail-open { background-position: -96px -96px; }\n.ui-icon-suitcase { background-position: -112px -96px; }\n.ui-icon-comment { background-position: -128px -96px; }\n.ui-icon-person { background-position: -144px -96px; }\n.ui-icon-print { background-position: -160px -96px; }\n.ui-icon-trash { background-position: -176px -96px; }\n.ui-icon-locked { background-position: -192px -96px; }\n.ui-icon-unlocked { background-position: -208px -96px; }\n.ui-icon-bookmark { background-position: -224px -96px; }\n.ui-icon-tag { background-position: -240px -96px; }\n.ui-icon-home { background-position: 0 -112px; }\n.ui-icon-flag { background-position: -16px -112px; }\n.ui-icon-calendar { background-position: -32px -112px; }\n.ui-icon-cart { background-position: -48px -112px; }\n.ui-icon-pencil { background-position: -64px -112px; }\n.ui-icon-clock { background-position: -80px -112px; }\n.ui-icon-disk { background-position: -96px -112px; }\n.ui-icon-calculator { background-position: -112px -112px; }\n.ui-icon-zoomin { background-position: -128px -112px; }\n.ui-icon-zoomout { background-position: -144px -112px; }\n.ui-icon-search { background-position: -160px -112px; }\n.ui-icon-wrench { background-position: -176px -112px; }\n.ui-icon-gear { background-position: -192px -112px; }\n.ui-icon-heart { background-position: -208px -112px; }\n.ui-icon-star { background-position: -224px -112px; }\n.ui-icon-link { background-position: -240px -112px; }\n.ui-icon-cancel { background-position: 0 -128px; }\n.ui-icon-plus { background-position: -16px -128px; }\n.ui-icon-plusthick { background-position: -32px -128px; }\n.ui-icon-minus { background-position: -48px -128px; }\n.ui-icon-minusthick { background-position: -64px -128px; }\n.ui-icon-close { background-position: -80px -128px; }\n.ui-icon-closethick { background-position: -96px -128px; }\n.ui-icon-key { background-position: -112px -128px; }\n.ui-icon-lightbulb { background-position: -128px -128px; }\n.ui-icon-scissors { background-position: -144px -128px; }\n.ui-icon-clipboard { background-position: -160px -128px; }\n.ui-icon-copy { background-position: -176px -128px; }\n.ui-icon-contact { background-position: -192px -128px; }\n.ui-icon-image { background-position: -208px -128px; }\n.ui-icon-video { background-position: -224px -128px; }\n.ui-icon-script { background-position: -240px -128px; }\n.ui-icon-alert { background-position: 0 -144px; }\n.ui-icon-info { background-position: -16px -144px; }\n.ui-icon-notice { background-position: -32px -144px; }\n.ui-icon-help { background-position: -48px -144px; }\n.ui-icon-check { background-position: -64px -144px; }\n.ui-icon-bullet { background-position: -80px -144px; }\n.ui-icon-radio-on { background-position: -96px -144px; }\n.ui-icon-radio-off { background-position: -112px -144px; }\n.ui-icon-pin-w { background-position: -128px -144px; }\n.ui-icon-pin-s { background-position: -144px -144px; }\n.ui-icon-play { background-position: 0 -160px; }\n.ui-icon-pause { background-position: -16px -160px; }\n.ui-icon-seek-next { background-position: -32px -160px; }\n.ui-icon-seek-prev { background-position: -48px -160px; }\n.ui-icon-seek-end { background-position: -64px -160px; }\n.ui-icon-seek-start { background-position: -80px -160px; }\n/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */\n.ui-icon-seek-first { background-position: -80px -160px; }\n.ui-icon-stop { background-position: -96px -160px; }\n.ui-icon-eject { background-position: -112px -160px; }\n.ui-icon-volume-off { background-position: -128px -160px; }\n.ui-icon-volume-on { background-position: -144px -160px; }\n.ui-icon-power { background-position: 0 -176px; }\n.ui-icon-signal-diag { background-position: -16px -176px; }\n.ui-icon-signal { background-position: -32px -176px; }\n.ui-icon-battery-0 { background-position: -48px -176px; }\n.ui-icon-battery-1 { background-position: -64px -176px; }\n.ui-icon-battery-2 { background-position: -80px -176px; }\n.ui-icon-battery-3 { background-position: -96px -176px; }\n.ui-icon-circle-plus { background-position: 0 -192px; }\n.ui-icon-circle-minus { background-position: -16px -192px; }\n.ui-icon-circle-close { background-position: -32px -192px; }\n.ui-icon-circle-triangle-e { background-position: -48px -192px; }\n.ui-icon-circle-triangle-s { background-position: -64px -192px; }\n.ui-icon-circle-triangle-w { background-position: -80px -192px; }\n.ui-icon-circle-triangle-n { background-position: -96px -192px; }\n.ui-icon-circle-arrow-e { background-position: -112px -192px; }\n.ui-icon-circle-arrow-s { background-position: -128px -192px; }\n.ui-icon-circle-arrow-w { background-position: -144px -192px; }\n.ui-icon-circle-arrow-n { background-position: -160px -192px; }\n.ui-icon-circle-zoomin { background-position: -176px -192px; }\n.ui-icon-circle-zoomout { background-position: -192px -192px; }\n.ui-icon-circle-check { background-position: -208px -192px; }\n.ui-icon-circlesmall-plus { background-position: 0 -208px; }\n.ui-icon-circlesmall-minus { background-position: -16px -208px; }\n.ui-icon-circlesmall-close { background-position: -32px -208px; }\n.ui-icon-squaresmall-plus { background-position: -48px -208px; }\n.ui-icon-squaresmall-minus { background-position: -64px -208px; }\n.ui-icon-squaresmall-close { background-position: -80px -208px; }\n.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }\n.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }\n.ui-icon-grip-solid-vertical { background-position: -32px -224px; }\n.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }\n.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }\n.ui-icon-grip-diagonal-se { background-position: -80px -224px; }\n\n\n/* Misc visuals\n----------------------------------*/\n\n/* Corner radius */\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-left,\n.ui-corner-tl {\n\tborder-top-left-radius: 4px;\n}\n.ui-corner-all,\n.ui-corner-top,\n.ui-corner-right,\n.ui-corner-tr {\n\tborder-top-right-radius: 4px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-left,\n.ui-corner-bl {\n\tborder-bottom-left-radius: 4px;\n}\n.ui-corner-all,\n.ui-corner-bottom,\n.ui-corner-right,\n.ui-corner-br {\n\tborder-bottom-right-radius: 4px;\n}\n\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #666666 url(\"images/ui-bg_diagonals-thick_20_666666_40x40.png\") 50% 50% repeat;\n\topacity: .5;\n\tfilter: Alpha(Opacity=50); /* support: IE8 */\n}\n.ui-widget-shadow {\n\tmargin: -5px 0 0 -5px;\n\tpadding: 5px;\n\tbackground: #000000;\n\topacity: .2;\n\tfilter: Alpha(Opacity=20); /* support: IE8 */\n\tborder-radius: 5px;\n}\n"]}
includes/jquery.blockUI.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(){"use strict";function e(e){function t(t,n){var s,h,k=t==window,y=n&&void 0!==n.message?n.message:void 0;if(n=e.extend({},e.blockUI.defaults,n||{}),!n.ignoreIfBlocked||!e(t).data("blockUI.isBlocked")){if(n.overlayCSS=e.extend({},e.blockUI.defaults.overlayCSS,n.overlayCSS||{}),s=e.extend({},e.blockUI.defaults.css,n.css||{}),n.onOverlayClick&&(n.overlayCSS.cursor="pointer"),h=e.extend({},e.blockUI.defaults.themedCSS,n.themedCSS||{}),y=void 0===y?n.message:y,k&&p&&o(window,{fadeOut:0}),y&&"string"!=typeof y&&(y.parentNode||y.jquery)){var m=y.jquery?y[0]:y,v={};e(t).data("blockUI.history",v),v.el=m,v.parent=m.parentNode,v.display=m.style.display,v.position=m.style.position,v.parent&&v.parent.removeChild(m)}e(t).data("blockUI.onUnblock",n.onUnblock);var g,I,w,U,x=n.baseZ;g=e(r||n.forceIframe?'<iframe class="blockUI" style="z-index:'+x++ +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+n.iframeSrc+'"></iframe>':'<div class="blockUI" style="display:none"></div>'),I=e(n.theme?'<div class="blockUI blockOverlay ui-widget-overlay" style="z-index:'+x++ +';display:none"></div>':'<div class="blockUI blockOverlay" style="z-index:'+x++ +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>'),n.theme&&k?(U='<div class="blockUI '+n.blockMsgClass+' blockPage ui-dialog ui-widget ui-corner-all" style="z-index:'+(x+10)+';display:none;position:fixed">',n.title&&(U+='<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(n.title||"&nbsp;")+"</div>"),U+='<div class="ui-widget-content ui-dialog-content"></div>',U+="</div>"):n.theme?(U='<div class="blockUI '+n.blockMsgClass+' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:'+(x+10)+';display:none;position:absolute">',n.title&&(U+='<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(n.title||"&nbsp;")+"</div>"),U+='<div class="ui-widget-content ui-dialog-content"></div>',U+="</div>"):U=k?'<div class="blockUI '+n.blockMsgClass+' blockPage" style="z-index:'+(x+10)+';display:none;position:fixed"></div>':'<div class="blockUI '+n.blockMsgClass+' blockElement" style="z-index:'+(x+10)+';display:none;position:absolute"></div>',w=e(U),y&&(n.theme?(w.css(h),w.addClass("ui-widget-content")):w.css(s)),n.theme||I.css(n.overlayCSS),I.css("position",k?"fixed":"absolute"),(r||n.forceIframe)&&g.css("opacity",0);var C=[g,I,w],S=e(k?"body":t);e.each(C,function(){this.appendTo(S)}),n.theme&&n.draggable&&e.fn.draggable&&w.draggable({handle:".ui-dialog-titlebar",cancel:"li"});var O=f&&(!e.support.boxModel||e("object,embed",k?null:t).length>0);if(u||O){if(k&&n.allowBodyStretch&&e.support.boxModel&&e("html,body").css("height","100%"),(u||!e.support.boxModel)&&!k)var E=d(t,"borderTopWidth"),T=d(t,"borderLeftWidth"),M=E?"(0 - "+E+")":0,B=T?"(0 - "+T+")":0;e.each(C,function(e,t){var o=t[0].style;if(o.position="absolute",e<2)k?o.setExpression("height","Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:"+n.quirksmodeOffsetHack+') + "px"'):o.setExpression("height",'this.parentNode.offsetHeight + "px"'),k?o.setExpression("width",'jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"'):o.setExpression("width",'this.parentNode.offsetWidth + "px"'),B&&o.setExpression("left",B),M&&o.setExpression("top",M);else if(n.centerY)k&&o.setExpression("top",'(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"'),o.marginTop=0;else if(!n.centerY&&k){var i=n.css&&n.css.top?parseInt(n.css.top,10):0,s="((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "+i+') + "px"';o.setExpression("top",s)}})}if(y&&(n.theme?w.find(".ui-widget-content").append(y):w.append(y),(y.jquery||y.nodeType)&&e(y).show()),(r||n.forceIframe)&&n.showOverlay&&g.show(),n.fadeIn){var j=n.onBlock?n.onBlock:c,H=n.showOverlay&&!y?j:c,z=y?j:c;n.showOverlay&&I._fadeIn(n.fadeIn,H),y&&w._fadeIn(n.fadeIn,z)}else n.showOverlay&&I.show(),y&&w.show(),n.onBlock&&n.onBlock.bind(w)();if(i(1,t,n),k?(p=w[0],b=e(n.focusableElements,p),n.focusInput&&setTimeout(l,20)):a(w[0],n.centerX,n.centerY),n.timeout){var W=setTimeout(function(){k?e.unblockUI(n):e(t).unblock(n)},n.timeout);e(t).data("blockUI.timeout",W)}}}function o(t,o){var s,l=t==window,a=e(t),d=a.data("blockUI.history"),c=a.data("blockUI.timeout");c&&(clearTimeout(c),a.removeData("blockUI.timeout")),o=e.extend({},e.blockUI.defaults,o||{}),i(0,t,o),null===o.onUnblock&&(o.onUnblock=a.data("blockUI.onUnblock"),a.removeData("blockUI.onUnblock"));var r;r=l?e("body").children().filter(".blockUI").add("body > .blockUI"):a.find(">.blockUI"),o.cursorReset&&(r.length>1&&(r[1].style.cursor=o.cursorReset),r.length>2&&(r[2].style.cursor=o.cursorReset)),l&&(p=b=null),o.fadeOut?(s=r.length,r.stop().fadeOut(o.fadeOut,function(){0===--s&&n(r,d,o,t)})):n(r,d,o,t)}function n(t,o,n,i){var s=e(i);if(!s.data("blockUI.isBlocked")){t.each(function(e,t){this.parentNode&&this.parentNode.removeChild(this)}),o&&o.el&&(o.el.style.display=o.display,o.el.style.position=o.position,o.el.style.cursor="default",o.parent&&o.parent.appendChild(o.el),s.removeData("blockUI.history")),s.data("blockUI.static")&&s.css("position","static"),"function"==typeof n.onUnblock&&n.onUnblock(i,n);var l=e(document.body),a=l.width(),d=l[0].style.width;l.width(a-1).width(a),l[0].style.width=d}}function i(t,o,n){var i=o==window,l=e(o);if((t||(!i||p)&&(i||l.data("blockUI.isBlocked")))&&(l.data("blockUI.isBlocked",t),i&&n.bindEvents&&(!t||n.showOverlay))){var a="mousedown mouseup keydown keypress keyup touchstart touchend touchmove";t?e(document).bind(a,n,s):e(document).unbind(a,s)}}function s(t){if("keydown"===t.type&&t.keyCode&&9==t.keyCode&&p&&t.data.constrainTabKey){var o=b,n=!t.shiftKey&&t.target===o[o.length-1],i=t.shiftKey&&t.target===o[0];if(n||i)return setTimeout(function(){l(i)},10),!1}var s=t.data,a=e(t.target);return a.hasClass("blockOverlay")&&s.onOverlayClick&&s.onOverlayClick(t),a.parents("div."+s.blockMsgClass).length>0||0===a.parents().children().filter("div.blockUI").length}function l(e){if(b){var t=b[e===!0?b.length-1:0];t&&t.focus()}}function a(e,t,o){var n=e.parentNode,i=e.style,s=(n.offsetWidth-e.offsetWidth)/2-d(n,"borderLeftWidth"),l=(n.offsetHeight-e.offsetHeight)/2-d(n,"borderTopWidth");t&&(i.left=s>0?s+"px":"0"),o&&(i.top=l>0?l+"px":"0")}function d(t,o){return parseInt(e.css(t,o),10)||0}e.fn._fadeIn=e.fn.fadeIn;var c=e.noop||function(){},r=/MSIE/.test(navigator.userAgent),u=/MSIE 6.0/.test(navigator.userAgent)&&!/MSIE 8.0/.test(navigator.userAgent),f=(document.documentMode||0,e.isFunction(document.createElement("div").style.setExpression));e.blockUI=function(e){t(window,e)},e.unblockUI=function(e){o(window,e)},e.growlUI=function(t,o,n,i){var s=e('<div class="growlUI"></div>');t&&s.append("<h1>"+t+"</h1>"),o&&s.append("<h2>"+o+"</h2>"),void 0===n&&(n=3e3);var l=function(t){t=t||{},e.blockUI({message:s,fadeIn:"undefined"!=typeof t.fadeIn?t.fadeIn:700,fadeOut:"undefined"!=typeof t.fadeOut?t.fadeOut:1e3,timeout:"undefined"!=typeof t.timeout?t.timeout:n,centerY:!1,showOverlay:!1,onUnblock:i,css:e.blockUI.defaults.growlCSS})};l();s.css("opacity");s.mouseover(function(){l({fadeIn:0,timeout:3e4});var t=e(".blockMsg");t.stop(),t.fadeTo(300,1)}).mouseout(function(){e(".blockMsg").fadeOut(1e3)})},e.fn.block=function(o){if(this[0]===window)return e.blockUI(o),this;var n=e.extend({},e.blockUI.defaults,o||{});return this.each(function(){var t=e(this);n.ignoreIfBlocked&&t.data("blockUI.isBlocked")||t.unblock({fadeOut:0})}),this.each(function(){"static"==e.css(this,"position")&&(this.style.position="relative",e(this).data("blockUI.static",!0)),this.style.zoom=1,t(this,o)})},e.fn.unblock=function(t){return this[0]===window?(e.unblockUI(t),this):this.each(function(){o(this,t)})},e.blockUI.version=2.7,e.blockUI.defaults={message:"<h1>Please wait...</h1>",title:null,draggable:!0,theme:!1,css:{padding:0,margin:0,width:"30%",top:"40%",left:"35%",textAlign:"center",color:"#000",border:"3px solid #aaa",backgroundColor:"#fff",cursor:"wait"},themedCSS:{width:"30%",top:"40%",left:"35%"},overlayCSS:{backgroundColor:"#000",opacity:.6,cursor:"wait"},cursorReset:"default",growlCSS:{width:"350px",top:"10px",left:"",right:"10px",border:"none",padding:"5px",opacity:.6,cursor:"default",color:"#fff",backgroundColor:"#000","-webkit-border-radius":"10px","-moz-border-radius":"10px","border-radius":"10px"},iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank",forceIframe:!1,baseZ:1e3,centerX:!0,centerY:!0,allowBodyStretch:!0,bindEvents:!0,constrainTabKey:!0,fadeIn:200,fadeOut:400,timeout:0,showOverlay:!0,focusInput:!0,focusableElements:":input:enabled:visible",onBlock:null,onUnblock:null,onOverlayClick:null,quirksmodeOffsetHack:4,blockMsgClass:"blockMsg",ignoreIfBlocked:!1};var p=null,b=[]}"function"==typeof define&&define.amd&&define.amd.jQuery?define(["jquery"],e):e(jQuery)}();
includes/jquery.serializeJSON/LICENSE.txt DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2017 Mario Izquierdo
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/jstree/jstree.js CHANGED
@@ -13,7 +13,7 @@
13
  }(function ($, undefined) {
14
  "use strict";
15
  /*!
16
- * jsTree 3.3.3
17
  * http://jstree.com/
18
  *
19
  * Copyright (c) 2014 Ivan Bozhanov (http://vakata.com)
@@ -54,7 +54,7 @@
54
  * specifies the jstree version in use
55
  * @name $.jstree.version
56
  */
57
- version : '3.3.3',
58
  /**
59
  * holds all the default options used when creating new instances
60
  * @name $.jstree.defaults
@@ -338,7 +338,7 @@
338
  * $('#tree').jstree({
339
  * 'core' : {
340
  * 'check_callback' : function (operation, node, node_parent, node_position, more) {
341
- * // operation can be 'create_node', 'rename_node', 'delete_node', 'move_node' or 'copy_node'
342
  * // in case of 'rename_node' node_position is filled with the new node name
343
  * return operation === 'rename_node' ? true : false;
344
  * }
@@ -515,7 +515,7 @@
515
  .remove();
516
  this.element.html("<"+"ul class='jstree-container-ul jstree-children' role='group'><"+"li id='j"+this._id+"_loading' class='jstree-initial-node jstree-loading jstree-leaf jstree-last' role='tree-item'><i class='jstree-icon jstree-ocl'></i><"+"a class='jstree-anchor' href='#'><i class='jstree-icon jstree-themeicon-hidden'></i>" + this.get_string("Loading ...") + "</a></li></ul>");
517
  this.element.attr('aria-activedescendant','j' + this._id + '_loading');
518
- this._data.core.li_height = this.get_container_ul().children("li").first().height() || 24;
519
  this._data.core.node = this._create_prototype_node();
520
  /**
521
  * triggered after the loading text is shown and before loading starts
@@ -531,6 +531,12 @@
531
  * @param {Boolean} keep_html if not set to `true` the container will be emptied, otherwise the current DOM elements will be kept intact
532
  */
533
  destroy : function (keep_html) {
 
 
 
 
 
 
534
  if(this._wrk) {
535
  try {
536
  window.URL.revokeObjectURL(this._wrk);
@@ -1400,12 +1406,18 @@
1400
  return callback.call(this, false);
1401
  }, this))
1402
  .fail($.proxy(function (f) {
1403
- callback.call(this, false);
1404
  this._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'core', 'id' : 'core_04', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id, 'xhr' : f }) };
 
1405
  this.settings.core.error.call(this, this._data.core.last_error);
1406
  }, this));
1407
  }
1408
- t = ($.isArray(s) || $.isPlainObject(s)) ? JSON.parse(JSON.stringify(s)) : s;
 
 
 
 
 
 
1409
  if(obj.id === $.jstree.root) {
1410
  return this._append_json_data(obj, t, function (status) {
1411
  callback.call(this, status);
@@ -3386,6 +3398,9 @@
3386
  */
3387
  set_state : function (state, callback) {
3388
  if(state) {
 
 
 
3389
  if(state.core) {
3390
  var res, n, t, _this, i;
3391
  if(state.core.open) {
@@ -3415,10 +3430,15 @@
3415
  }
3416
  if(state.core.selected) {
3417
  _this = this;
3418
- this.deselect_all();
3419
- $.each(state.core.selected, function (i, v) {
3420
- _this.select_node(v, false, true);
3421
- });
 
 
 
 
 
3422
  delete state.core.selected;
3423
  this.set_state(state, callback);
3424
  return false;
@@ -3640,7 +3660,7 @@
3640
  'li_attr' : $.extend(true, {}, obj.li_attr),
3641
  'a_attr' : $.extend(true, {}, obj.a_attr),
3642
  'state' : {},
3643
- 'data' : options && options.no_data ? false : $.extend(true, {}, obj.data)
3644
  //( this.get_node(obj, true).length ? this.get_node(obj, true).data() : obj.data ),
3645
  }, i, j;
3646
  if(options && options.flat) {
@@ -3708,7 +3728,11 @@
3708
  return this.load_node(par, function () { this.create_node(par, node, pos, callback, true); });
3709
  }
3710
  if(!node) { node = { "text" : this.get_string('New node') }; }
3711
- if(typeof node === "string") { node = { "text" : node }; }
 
 
 
 
3712
  if(node.text === undefined) { node.text = this.get_string('New node'); }
3713
  var tmp, dpc, i, j;
3714
 
@@ -3766,7 +3790,6 @@
3766
  par.children = tmp;
3767
 
3768
  this.redraw_node(par, true);
3769
- if(callback) { callback.call(this, this.get_node(node)); }
3770
  /**
3771
  * triggered when a node is created
3772
  * @event
@@ -3776,6 +3799,7 @@
3776
  * @param {Number} position the position of the new node among the parent's children
3777
  */
3778
  this.trigger('create_node', { "node" : this.get_node(node), "parent" : par.id, "position" : pos });
 
3779
  return node.id;
3780
  },
3781
  /**
@@ -4359,8 +4383,7 @@
4359
  var rtl, w, a, s, t, h1, h2, fn, tmp, cancel = false;
4360
  obj = this.get_node(obj);
4361
  if(!obj) { return false; }
4362
- if(this.settings.core.check_callback === false) {
4363
- this._data.core.last_error = { 'error' : 'check', 'plugin' : 'core', 'id' : 'core_07', 'reason' : 'Could not edit node because of check_callback' };
4364
  this.settings.core.error.call(this, this._data.core.last_error);
4365
  return false;
4366
  }
@@ -4915,7 +4938,21 @@
4915
  * @name $.jstree.defaults.checkbox.tie_selection
4916
  * @plugin checkbox
4917
  */
4918
- tie_selection : true
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4919
  };
4920
  $.jstree.plugins.checkbox = function (options, parent) {
4921
  this.bind = function () {
@@ -4976,6 +5013,7 @@
4976
  for(i = 0, j = dpc.length; i < j; i++) {
4977
  m[dpc[i]].state[ t ? 'selected' : 'checked' ] = true;
4978
  }
 
4979
  this._data[ t ? 'core' : 'checkbox' ].selected = this._data[ t ? 'core' : 'checkbox' ].selected.concat(dpc);
4980
  }
4981
  else {
@@ -5024,27 +5062,29 @@
5024
  this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected);
5025
  }, this))
5026
  .on(this.settings.checkbox.tie_selection ? 'select_node.jstree' : 'check_node.jstree', $.proxy(function (e, data) {
5027
- var obj = data.node,
 
5028
  m = this._model.data,
5029
  par = this.get_node(obj.parent),
5030
- dom = this.get_node(obj, true),
5031
  i, j, c, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection,
5032
  sel = {}, cur = this._data[ t ? 'core' : 'checkbox' ].selected;
5033
 
5034
  for (i = 0, j = cur.length; i < j; i++) {
5035
  sel[cur[i]] = true;
5036
  }
 
5037
  // apply down
5038
  if(s.indexOf('down') !== -1) {
5039
  //this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected.concat(obj.children_d));
5040
- for(i = 0, j = obj.children_d.length; i < j; i++) {
5041
- sel[obj.children_d[i]] = true;
5042
- tmp = m[obj.children_d[i]];
5043
- tmp.state[ t ? 'selected' : 'checked' ] = true;
5044
- if(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) {
5045
- tmp.original.state.undetermined = false;
5046
- }
5047
- }
 
5048
  }
5049
 
5050
  // apply up
@@ -5077,11 +5117,6 @@
5077
  }
5078
  }
5079
  this._data[ t ? 'core' : 'checkbox' ].selected = cur;
5080
-
5081
- // apply down (process .children separately?)
5082
- if(s.indexOf('down') !== -1 && dom.length) {
5083
- dom.find('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked').parent().attr('aria-selected', true);
5084
- }
5085
  }, this))
5086
  .on(this.settings.checkbox.tie_selection ? 'deselect_all.jstree' : 'uncheck_all.jstree', $.proxy(function (e, data) {
5087
  var obj = this.get_node($.jstree.root),
@@ -5095,27 +5130,26 @@
5095
  }
5096
  }, this))
5097
  .on(this.settings.checkbox.tie_selection ? 'deselect_node.jstree' : 'uncheck_node.jstree', $.proxy(function (e, data) {
5098
- var obj = data.node,
 
5099
  dom = this.get_node(obj, true),
5100
  i, j, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection,
5101
- cur = this._data[ t ? 'core' : 'checkbox' ].selected, sel = {};
5102
- if(obj && obj.original && obj.original.state && obj.original.state.undetermined) {
5103
- obj.original.state.undetermined = false;
5104
- }
5105
 
5106
  // apply down
5107
  if(s.indexOf('down') !== -1) {
5108
- for(i = 0, j = obj.children_d.length; i < j; i++) {
5109
- tmp = this._model.data[obj.children_d[i]];
5110
- tmp.state[ t ? 'selected' : 'checked' ] = false;
5111
- if(tmp && tmp.original && tmp.original.state && tmp.original.state.undetermined) {
5112
- tmp.original.state.undetermined = false;
5113
- }
5114
- }
5115
  }
5116
 
5117
- // apply up
5118
- if(s.indexOf('up') !== -1) {
 
5119
  for(i = 0, j = obj.parents.length; i < j; i++) {
5120
  tmp = this._model.data[obj.parents[i]];
5121
  tmp.state[ t ? 'selected' : 'checked' ] = false;
@@ -5127,29 +5161,13 @@
5127
  tmp.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked');
5128
  }
5129
  }
 
 
 
 
5130
  }
5131
- sel = {};
5132
- for(i = 0, j = cur.length; i < j; i++) {
5133
- // apply down + apply up
5134
- if(
5135
- (s.indexOf('down') === -1 || $.inArray(cur[i], obj.children_d) === -1) &&
5136
- (s.indexOf('up') === -1 || $.inArray(cur[i], obj.parents) === -1)
5137
- ) {
5138
- sel[cur[i]] = true;
5139
- }
5140
- }
5141
- cur = [];
5142
- for (i in sel) {
5143
- if (sel.hasOwnProperty(i)) {
5144
- cur.push(i);
5145
- }
5146
- }
5147
  this._data[ t ? 'core' : 'checkbox' ].selected = cur;
5148
-
5149
- // apply down (process .children separately?)
5150
- if(s.indexOf('down') !== -1 && dom.length) {
5151
- dom.find('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked').parent().attr('aria-selected', false);
5152
- }
5153
  }, this));
5154
  }
5155
  if(this.settings.checkbox.cascade.indexOf('up') !== -1) {
@@ -5240,6 +5258,7 @@
5240
  }, this));
5241
  }
5242
  };
 
5243
  /**
5244
  * set the undetermined state where and if necessary. Used internally.
5245
  * @private
@@ -5266,6 +5285,9 @@
5266
  this.element.find('.jstree-closed').not(':has(.jstree-children)')
5267
  .each(function () {
5268
  var tmp = tt.get_node(this), tmp2;
 
 
 
5269
  if(!tmp.state.loaded) {
5270
  if(tmp.original && tmp.original.state && tmp.original.state.undetermined && tmp.original.state.undetermined === true) {
5271
  if(o[tmp.id] === undefined && tmp.id !== $.jstree.root) {
@@ -5467,6 +5489,89 @@
5467
  this.trigger('activate_node', { 'node' : this.get_node(obj) });
5468
  };
5469
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5470
  /**
5471
  * check a node (only if tie_selection in checkbox settings is false, otherwise select_node will be called internally)
5472
  * @name check_node(obj)
@@ -5547,6 +5652,7 @@
5547
  this.trigger('uncheck_node', { 'node' : obj, 'selected' : this._data.checkbox.selected, 'event' : e });
5548
  }
5549
  };
 
5550
  /**
5551
  * checks all nodes in the tree (only if tie_selection in checkbox settings is false, otherwise select_all will be called internally)
5552
  * @name check_all()
@@ -5717,6 +5823,7 @@
5717
  // include the checkbox plugin by default
5718
  // $.jstree.defaults.plugins.push("checkbox");
5719
 
 
5720
  /**
5721
  * ### Conditionalselect plugin
5722
  *
@@ -5793,7 +5900,11 @@
5793
  var inst = $.jstree.reference(data.reference),
5794
  obj = inst.get_node(data.reference);
5795
  inst.create_node(obj, {}, "last", function (new_node) {
5796
- setTimeout(function () { inst.edit(new_node); },0);
 
 
 
 
5797
  });
5798
  }
5799
  },
@@ -5894,6 +6005,9 @@
5894
 
5895
  var last_ts = 0, cto = null, ex, ey;
5896
  this.element
 
 
 
5897
  .on("contextmenu.jstree", ".jstree-anchor", $.proxy(function (e, data) {
5898
  if (e.target.tagName.toLowerCase() === 'input') {
5899
  return;
@@ -6360,7 +6474,7 @@
6360
 
6361
  $(document)
6362
  .on("mousedown.vakata.jstree", function (e) {
6363
- if(vakata_context.is_visible && !$.contains(vakata_context.element[0], e.target)) {
6364
  $.vakata.context.hide();
6365
  }
6366
  })
@@ -6551,8 +6665,9 @@
6551
  marker.appendTo('body'); //.show();
6552
  })
6553
  .on('dnd_move.vakata.jstree', function (e, data) {
 
6554
  if(opento) {
6555
- if (!data.event || data.event.type !== 'dragover' || data.event.target !== lastev.target) {
6556
  clearTimeout(opento);
6557
  }
6558
  }
@@ -6651,7 +6766,10 @@
6651
  }
6652
  }
6653
  if(v === 'i' && ref.parent().is('.jstree-closed') && ins.settings.dnd.open_timeout) {
6654
- opento = setTimeout((function (x, z) { return function () { x.open_node(z); }; }(ins, ref)), ins.settings.dnd.open_timeout);
 
 
 
6655
  }
6656
  if(ok) {
6657
  pn = ins.get_node(p, true);
13
  }(function ($, undefined) {
14
  "use strict";
15
  /*!
16
+ * jsTree 3.3.4
17
  * http://jstree.com/
18
  *
19
  * Copyright (c) 2014 Ivan Bozhanov (http://vakata.com)
54
  * specifies the jstree version in use
55
  * @name $.jstree.version
56
  */
57
+ version : '3.3.4',
58
  /**
59
  * holds all the default options used when creating new instances
60
  * @name $.jstree.defaults
338
  * $('#tree').jstree({
339
  * 'core' : {
340
  * 'check_callback' : function (operation, node, node_parent, node_position, more) {
341
+ * // operation can be 'create_node', 'rename_node', 'delete_node', 'move_node', 'copy_node' or 'edit'
342
  * // in case of 'rename_node' node_position is filled with the new node name
343
  * return operation === 'rename_node' ? true : false;
344
  * }
515
  .remove();
516
  this.element.html("<"+"ul class='jstree-container-ul jstree-children' role='group'><"+"li id='j"+this._id+"_loading' class='jstree-initial-node jstree-loading jstree-leaf jstree-last' role='tree-item'><i class='jstree-icon jstree-ocl'></i><"+"a class='jstree-anchor' href='#'><i class='jstree-icon jstree-themeicon-hidden'></i>" + this.get_string("Loading ...") + "</a></li></ul>");
517
  this.element.attr('aria-activedescendant','j' + this._id + '_loading');
518
+ this._data.core.li_height = this.get_container_ul().children("li").first().outerHeight() || 24;
519
  this._data.core.node = this._create_prototype_node();
520
  /**
521
  * triggered after the loading text is shown and before loading starts
531
  * @param {Boolean} keep_html if not set to `true` the container will be emptied, otherwise the current DOM elements will be kept intact
532
  */
533
  destroy : function (keep_html) {
534
+ /**
535
+ * triggered before the tree is destroyed
536
+ * @event
537
+ * @name destroy.jstree
538
+ */
539
+ this.trigger("destroy");
540
  if(this._wrk) {
541
  try {
542
  window.URL.revokeObjectURL(this._wrk);
1406
  return callback.call(this, false);
1407
  }, this))
1408
  .fail($.proxy(function (f) {
 
1409
  this._data.core.last_error = { 'error' : 'ajax', 'plugin' : 'core', 'id' : 'core_04', 'reason' : 'Could not load node', 'data' : JSON.stringify({ 'id' : obj.id, 'xhr' : f }) };
1410
+ callback.call(this, false);
1411
  this.settings.core.error.call(this, this._data.core.last_error);
1412
  }, this));
1413
  }
1414
+ if ($.isArray(s)) {
1415
+ t = $.extend(true, [], s);
1416
+ } else if ($.isPlainObject(s)) {
1417
+ t = $.extend(true, {}, s);
1418
+ } else {
1419
+ t = s;
1420
+ }
1421
  if(obj.id === $.jstree.root) {
1422
  return this._append_json_data(obj, t, function (status) {
1423
  callback.call(this, status);
3398
  */
3399
  set_state : function (state, callback) {
3400
  if(state) {
3401
+ if(state.core && state.core.selected && state.core.initial_selection === undefined) {
3402
+ state.core.initial_selection = this._data.core.selected.concat([]).sort().join(',');
3403
+ }
3404
  if(state.core) {
3405
  var res, n, t, _this, i;
3406
  if(state.core.open) {
3430
  }
3431
  if(state.core.selected) {
3432
  _this = this;
3433
+ if (state.core.initial_selection === undefined ||
3434
+ state.core.initial_selection === this._data.core.selected.concat([]).sort().join(',')
3435
+ ) {
3436
+ this.deselect_all();
3437
+ $.each(state.core.selected, function (i, v) {
3438
+ _this.select_node(v, false, true);
3439
+ });
3440
+ }
3441
+ delete state.core.initial_selection;
3442
  delete state.core.selected;
3443
  this.set_state(state, callback);
3444
  return false;
3660
  'li_attr' : $.extend(true, {}, obj.li_attr),
3661
  'a_attr' : $.extend(true, {}, obj.a_attr),
3662
  'state' : {},
3663
+ 'data' : options && options.no_data ? false : $.extend(true, $.isArray(obj.data)?[]:{}, obj.data)
3664
  //( this.get_node(obj, true).length ? this.get_node(obj, true).data() : obj.data ),
3665
  }, i, j;
3666
  if(options && options.flat) {
3728
  return this.load_node(par, function () { this.create_node(par, node, pos, callback, true); });
3729
  }
3730
  if(!node) { node = { "text" : this.get_string('New node') }; }
3731
+ if(typeof node === "string") {
3732
+ node = { "text" : node };
3733
+ } else {
3734
+ node = $.extend(true, {}, node);
3735
+ }
3736
  if(node.text === undefined) { node.text = this.get_string('New node'); }
3737
  var tmp, dpc, i, j;
3738
 
3790
  par.children = tmp;
3791
 
3792
  this.redraw_node(par, true);
 
3793
  /**
3794
  * triggered when a node is created
3795
  * @event
3799
  * @param {Number} position the position of the new node among the parent's children
3800
  */
3801
  this.trigger('create_node', { "node" : this.get_node(node), "parent" : par.id, "position" : pos });
3802
+ if(callback) { callback.call(this, this.get_node(node)); }
3803
  return node.id;
3804
  },
3805
  /**
4383
  var rtl, w, a, s, t, h1, h2, fn, tmp, cancel = false;
4384
  obj = this.get_node(obj);
4385
  if(!obj) { return false; }
4386
+ if(!this.check("edit", obj, this.get_parent(obj))) {
 
4387
  this.settings.core.error.call(this, this._data.core.last_error);
4388
  return false;
4389
  }
4938
  * @name $.jstree.defaults.checkbox.tie_selection
4939
  * @plugin checkbox
4940
  */
4941
+ tie_selection : true,
4942
+
4943
+ /**
4944
+ * This setting controls if cascading down affects disabled checkboxes
4945
+ * @name $.jstree.defaults.checkbox.cascade_to_disabled
4946
+ * @plugin checkbox
4947
+ */
4948
+ cascade_to_disabled : true,
4949
+
4950
+ /**
4951
+ * This setting controls if cascading down affects hidden checkboxes
4952
+ * @name $.jstree.defaults.checkbox.cascade_to_hidden
4953
+ * @plugin checkbox
4954
+ */
4955
+ cascade_to_hidden : true
4956
  };
4957
  $.jstree.plugins.checkbox = function (options, parent) {
4958
  this.bind = function () {
5013
  for(i = 0, j = dpc.length; i < j; i++) {
5014
  m[dpc[i]].state[ t ? 'selected' : 'checked' ] = true;
5015
  }
5016
+
5017
  this._data[ t ? 'core' : 'checkbox' ].selected = this._data[ t ? 'core' : 'checkbox' ].selected.concat(dpc);
5018
  }
5019
  else {
5062
  this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected);
5063
  }, this))
5064
  .on(this.settings.checkbox.tie_selection ? 'select_node.jstree' : 'check_node.jstree', $.proxy(function (e, data) {
5065
+ var self = this,
5066
+ obj = data.node,
5067
  m = this._model.data,
5068
  par = this.get_node(obj.parent),
 
5069
  i, j, c, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection,
5070
  sel = {}, cur = this._data[ t ? 'core' : 'checkbox' ].selected;
5071
 
5072
  for (i = 0, j = cur.length; i < j; i++) {
5073
  sel[cur[i]] = true;
5074
  }
5075
+
5076
  // apply down
5077
  if(s.indexOf('down') !== -1) {
5078
  //this._data[ t ? 'core' : 'checkbox' ].selected = $.vakata.array_unique(this._data[ t ? 'core' : 'checkbox' ].selected.concat(obj.children_d));
5079
+ var selectedIds = this._cascade_new_checked_state(obj.id, true);
5080
+ obj.children_d.concat(obj.id).forEach(function(id) {
5081
+ if (selectedIds.indexOf(id) > -1) {
5082
+ sel[id] = true;
5083
+ }
5084
+ else {
5085
+ delete sel[id];
5086
+ }
5087
+ });
5088
  }
5089
 
5090
  // apply up
5117
  }
5118
  }
5119
  this._data[ t ? 'core' : 'checkbox' ].selected = cur;
 
 
 
 
 
5120
  }, this))
5121
  .on(this.settings.checkbox.tie_selection ? 'deselect_all.jstree' : 'uncheck_all.jstree', $.proxy(function (e, data) {
5122
  var obj = this.get_node($.jstree.root),
5130
  }
5131
  }, this))
5132
  .on(this.settings.checkbox.tie_selection ? 'deselect_node.jstree' : 'uncheck_node.jstree', $.proxy(function (e, data) {
5133
+ var self = this,
5134
+ obj = data.node,
5135
  dom = this.get_node(obj, true),
5136
  i, j, tmp, s = this.settings.checkbox.cascade, t = this.settings.checkbox.tie_selection,
5137
+ cur = this._data[ t ? 'core' : 'checkbox' ].selected, sel = {},
5138
+ stillSelectedIds = [],
5139
+ allIds = obj.children_d.concat(obj.id);
 
5140
 
5141
  // apply down
5142
  if(s.indexOf('down') !== -1) {
5143
+ var selectedIds = this._cascade_new_checked_state(obj.id, false);
5144
+
5145
+ cur = cur.filter(function(id) {
5146
+ return allIds.indexOf(id) === -1 || selectedIds.indexOf(id) > -1;
5147
+ });
 
 
5148
  }
5149
 
5150
+ // only apply up if cascade up is enabled and if this node is not selected
5151
+ // (if all child nodes are disabled and cascade_to_disabled === false then this node will till be selected).
5152
+ if(s.indexOf('up') !== -1 && cur.indexOf(obj.id) === -1) {
5153
  for(i = 0, j = obj.parents.length; i < j; i++) {
5154
  tmp = this._model.data[obj.parents[i]];
5155
  tmp.state[ t ? 'selected' : 'checked' ] = false;
5161
  tmp.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked');
5162
  }
5163
  }
5164
+
5165
+ cur = cur.filter(function(id) {
5166
+ return obj.parents.indexOf(id) === -1;
5167
+ });
5168
  }
5169
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5170
  this._data[ t ? 'core' : 'checkbox' ].selected = cur;
 
 
 
 
 
5171
  }, this));
5172
  }
5173
  if(this.settings.checkbox.cascade.indexOf('up') !== -1) {
5258
  }, this));
5259
  }
5260
  };
5261
+
5262
  /**
5263
  * set the undetermined state where and if necessary. Used internally.
5264
  * @private
5285
  this.element.find('.jstree-closed').not(':has(.jstree-children)')
5286
  .each(function () {
5287
  var tmp = tt.get_node(this), tmp2;
5288
+
5289
+ if(!tmp) { return; }
5290
+
5291
  if(!tmp.state.loaded) {
5292
  if(tmp.original && tmp.original.state && tmp.original.state.undetermined && tmp.original.state.undetermined === true) {
5293
  if(o[tmp.id] === undefined && tmp.id !== $.jstree.root) {
5489
  this.trigger('activate_node', { 'node' : this.get_node(obj) });
5490
  };
5491
 
5492
+ /**
5493
+ * Unchecks a node and all its descendants. This function does NOT affect hidden and disabled nodes (or their descendants).
5494
+ * However if these unaffected nodes are already selected their ids will be included in the returned array.
5495
+ * @param id
5496
+ * @param checkedState
5497
+ * @returns {Array} Array of all node id's (in this tree branch) that are checked.
5498
+ */
5499
+ this._cascade_new_checked_state = function(id, checkedState) {
5500
+ var self = this;
5501
+ var t = this.settings.checkbox.tie_selection;
5502
+ var node = this._model.data[id];
5503
+ var selectedNodeIds = [];
5504
+ var selectedChildrenIds = [];
5505
+
5506
+ if (
5507
+ (this.settings.checkbox.cascade_to_disabled || !node.state.disabled) &&
5508
+ (this.settings.checkbox.cascade_to_hidden || !node.state.hidden)
5509
+ ) {
5510
+ //First try and check/uncheck the children
5511
+ if (node.children) {
5512
+ node.children.forEach(function(childId) {
5513
+ var selectedChildIds = self._cascade_new_checked_state(childId, checkedState);
5514
+ selectedNodeIds = selectedNodeIds.concat(selectedChildIds);
5515
+ if (selectedChildIds.indexOf(childId) > -1) {
5516
+ selectedChildrenIds.push(childId);
5517
+ }
5518
+ });
5519
+ }
5520
+
5521
+ var dom = self.get_node(node, true);
5522
+
5523
+ //A node's state is undetermined if some but not all of it's children are checked/selected .
5524
+ var undetermined = selectedChildrenIds.length > 0 && selectedChildrenIds.length < node.children.length;
5525
+
5526
+ if(node.original && node.original.state && node.original.state.undetermined) {
5527
+ node.original.state.undetermined = undetermined;
5528
+ }
5529
+
5530
+ //If a node is undetermined then remove selected class
5531
+ if (undetermined) {
5532
+ node.state[ t ? 'selected' : 'checked' ] = false;
5533
+ dom.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked');
5534
+ }
5535
+ //Otherwise, if the checkedState === true (i.e. the node is being checked now) and all of the node's children are checked (if it has any children),
5536
+ //check the node and style it correctly.
5537
+ else if (checkedState && selectedChildrenIds.length === node.children.length) {
5538
+ node.state[ t ? 'selected' : 'checked' ] = checkedState;
5539
+ selectedNodeIds.push(node.id);
5540
+
5541
+ dom.attr('aria-selected', true).children('.jstree-anchor').addClass(t ? 'jstree-clicked' : 'jstree-checked');
5542
+ }
5543
+ else {
5544
+ node.state[ t ? 'selected' : 'checked' ] = false;
5545
+ dom.attr('aria-selected', false).children('.jstree-anchor').removeClass(t ? 'jstree-clicked' : 'jstree-checked');
5546
+ }
5547
+ }
5548
+ else {
5549
+ var selectedChildIds = this.get_checked_descendants(id);
5550
+
5551
+ if (node.state[ t ? 'selected' : 'checked' ]) {
5552
+ selectedChildIds.push(node.id);
5553
+ }
5554
+
5555
+ selectedNodeIds = selectedNodeIds.concat(selectedChildIds);
5556
+ }
5557
+
5558
+ return selectedNodeIds;
5559
+ };
5560
+
5561
+ /**
5562
+ * Gets ids of nodes selected in branch (of tree) specified by id (does not include the node specified by id)
5563
+ * @param id
5564
+ */
5565
+ this.get_checked_descendants = function(id) {
5566
+ var self = this;
5567
+ var t = self.settings.checkbox.tie_selection;
5568
+ var node = self._model.data[id];
5569
+
5570
+ return node.children_d.filter(function(_id) {
5571
+ return self._model.data[_id].state[ t ? 'selected' : 'checked' ];
5572
+ });
5573
+ };
5574
+
5575
  /**
5576
  * check a node (only if tie_selection in checkbox settings is false, otherwise select_node will be called internally)
5577
  * @name check_node(obj)
5652
  this.trigger('uncheck_node', { 'node' : obj, 'selected' : this._data.checkbox.selected, 'event' : e });
5653
  }
5654
  };
5655
+
5656
  /**
5657
  * checks all nodes in the tree (only if tie_selection in checkbox settings is false, otherwise select_all will be called internally)
5658
  * @name check_all()
5823
  // include the checkbox plugin by default
5824
  // $.jstree.defaults.plugins.push("checkbox");
5825
 
5826
+
5827
  /**
5828
  * ### Conditionalselect plugin
5829
  *
5900
  var inst = $.jstree.reference(data.reference),
5901
  obj = inst.get_node(data.reference);
5902
  inst.create_node(obj, {}, "last", function (new_node) {
5903
+ try {
5904
+ inst.edit(new_node);
5905
+ } catch (ex) {
5906
+ setTimeout(function () { inst.edit(new_node); },0);
5907
+ }
5908
  });
5909
  }
5910
  },
6005
 
6006
  var last_ts = 0, cto = null, ex, ey;
6007
  this.element
6008
+ .on("init.jstree loading.jstree ready.jstree", $.proxy(function () {
6009
+ this.get_container_ul().addClass('jstree-contextmenu');
6010
+ }, this))
6011
  .on("contextmenu.jstree", ".jstree-anchor", $.proxy(function (e, data) {
6012
  if (e.target.tagName.toLowerCase() === 'input') {
6013
  return;
6474
 
6475
  $(document)
6476
  .on("mousedown.vakata.jstree", function (e) {
6477
+ if(vakata_context.is_visible && vakata_context.element[0] !== e.target && !$.contains(vakata_context.element[0], e.target)) {
6478
  $.vakata.context.hide();
6479
  }
6480
  })
6665
  marker.appendTo('body'); //.show();
6666
  })
6667
  .on('dnd_move.vakata.jstree', function (e, data) {
6668
+ var isDifferentNode = data.event.target !== lastev.target;
6669
  if(opento) {
6670
+ if (!data.event || data.event.type !== 'dragover' || isDifferentNode) {
6671
  clearTimeout(opento);
6672
  }
6673
  }
6766
  }
6767
  }
6768
  if(v === 'i' && ref.parent().is('.jstree-closed') && ins.settings.dnd.open_timeout) {
6769
+ if (!data.event || data.event.type !== 'dragover' || isDifferentNode) {
6770
+ if (opento) { clearTimeout(opento); }
6771
+ opento = setTimeout((function (x, z) { return function () { x.open_node(z); }; }(ins, ref)), ins.settings.dnd.open_timeout);
6772
+ }
6773
  }
6774
  if(ok) {
6775
  pn = ins.get_node(p, true);
includes/jstree/jstree.min.js CHANGED
@@ -1,6 +1,6 @@
1
- /*! jsTree - v3.3.3 - 2016-10-31 - (MIT) */
2
- !function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a,b){"use strict";if(!a.jstree){var c=0,d=!1,e=!1,f=!1,g=[],h=a("script:last").attr("src"),i=window.document;a.jstree={version:"3.3.3",defaults:{plugins:[]},plugins:{},path:h&&-1!==h.indexOf("/")?h.replace(/\/[^\/]+$/,""):"",idregex:/[\\:&!^|()\[\]<>@*'+~#";.,=\- \/${}%?`]/g,root:"#"},a.jstree.create=function(b,d){var e=new a.jstree.core(++c),f=d;return d=a.extend(!0,{},a.jstree.defaults,d),f&&f.plugins&&(d.plugins=f.plugins),a.each(d.plugins,function(a,b){"core"!==a&&(e=e.plugin(b,d[b]))}),a(b).data("jstree",e),e.init(b,d),e},a.jstree.destroy=function(){a(".jstree:jstree").jstree("destroy"),a(i).off(".jstree")},a.jstree.core=function(a){this._id=a,this._cnt=0,this._wrk=null,this._data={core:{themes:{name:!1,dots:!1,icons:!1,ellipsis:!1},selected:[],last_error:{},working:!1,worker_queue:[],focused:null}}},a.jstree.reference=function(b){var c=null,d=null;if(!b||!b.id||b.tagName&&b.nodeType||(b=b.id),!d||!d.length)try{d=a(b)}catch(e){}if(!d||!d.length)try{d=a("#"+b.replace(a.jstree.idregex,"\\$&"))}catch(e){}return d&&d.length&&(d=d.closest(".jstree")).length&&(d=d.data("jstree"))?c=d:a(".jstree").each(function(){var d=a(this).data("jstree");return d&&d._model.data[b]?(c=d,!1):void 0}),c},a.fn.jstree=function(c){var d="string"==typeof c,e=Array.prototype.slice.call(arguments,1),f=null;return c!==!0||this.length?(this.each(function(){var g=a.jstree.reference(this),h=d&&g?g[c]:null;return f=d&&h?h.apply(g,e):null,g||d||c!==b&&!a.isPlainObject(c)||a.jstree.create(this,c),(g&&!d||c===!0)&&(f=g||!1),null!==f&&f!==b?!1:void 0}),null!==f&&f!==b?f:this):!1},a.expr.pseudos.jstree=a.expr.createPseudo(function(c){return function(c){return a(c).hasClass("jstree")&&a(c).data("jstree")!==b}}),a.jstree.defaults.core={data:!1,strings:!1,check_callback:!1,error:a.noop,animation:200,multiple:!0,themes:{name:!1,url:!1,dir:!1,dots:!0,icons:!0,ellipsis:!1,stripes:!1,variant:!1,responsive:!1},expand_selected_onload:!0,worker:!0,force_text:!1,dblclick_toggle:!0},a.jstree.core.prototype={plugin:function(b,c){var d=a.jstree.plugins[b];return d?(this._data[b]={},d.prototype=this,new d(c,this)):this},init:function(b,c){this._model={data:{},changed:[],force_full_redraw:!1,redraw_timeout:!1,default_state:{loaded:!0,opened:!1,selected:!1,disabled:!1}},this._model.data[a.jstree.root]={id:a.jstree.root,parent:null,parents:[],children:[],children_d:[],state:{loaded:!1}},this.element=a(b).addClass("jstree jstree-"+this._id),this.settings=c,this._data.core.ready=!1,this._data.core.loaded=!1,this._data.core.rtl="rtl"===this.element.css("direction"),this.element[this._data.core.rtl?"addClass":"removeClass"]("jstree-rtl"),this.element.attr("role","tree"),this.settings.core.multiple&&this.element.attr("aria-multiselectable",!0),this.element.attr("tabindex")||this.element.attr("tabindex","0"),this.bind(),this.trigger("init"),this._data.core.original_container_html=this.element.find(" > ul > li").clone(!0),this._data.core.original_container_html.find("li").addBack().contents().filter(function(){return 3===this.nodeType&&(!this.nodeValue||/^\s+$/.test(this.nodeValue))}).remove(),this.element.html("<ul class='jstree-container-ul jstree-children' role='group'><li id='j"+this._id+"_loading' class='jstree-initial-node jstree-loading jstree-leaf jstree-last' role='tree-item'><i class='jstree-icon jstree-ocl'></i><a class='jstree-anchor' href='#'><i class='jstree-icon jstree-themeicon-hidden'></i>"+this.get_string("Loading ...")+"</a></li></ul>"),this.element.attr("aria-activedescendant","j"+this._id+"_loading"),this._data.core.li_height=this.get_container_ul().children("li").first().height()||24,this._data.core.node=this._create_prototype_node(),this.trigger("loading"),this.load_node(a.jstree.root)},destroy:function(a){if(this._wrk)try{window.URL.revokeObjectURL(this._wrk),this._wrk=null}catch(b){}a||this.element.empty(),this.teardown()},_create_prototype_node:function(){var a=i.createElement("LI"),b,c;return a.setAttribute("role","treeitem"),b=i.createElement("I"),b.className="jstree-icon jstree-ocl",b.setAttribute("role","presentation"),a.appendChild(b),b=i.createElement("A"),b.className="jstree-anchor",b.setAttribute("href","#"),b.setAttribute("tabindex","-1"),c=i.createElement("I"),c.className="jstree-icon jstree-themeicon",c.setAttribute("role","presentation"),b.appendChild(c),a.appendChild(b),b=c=null,a},teardown:function(){this.unbind(),this.element.removeClass("jstree").removeData("jstree").find("[class^='jstree']").addBack().attr("class",function(){return this.className.replace(/jstree[^ ]*|$/gi,"")}),this.element=null},bind:function(){var b="",c=null,d=0;this.element.on("dblclick.jstree",function(a){if(a.target.tagName&&"input"===a.target.tagName.toLowerCase())return!0;if(i.selection&&i.selection.empty)i.selection.empty();else if(window.getSelection){var b=window.getSelection();try{b.removeAllRanges(),b.collapse()}catch(c){}}}).on("mousedown.jstree",a.proxy(function(a){a.target===this.element[0]&&(a.preventDefault(),d=+new Date)},this)).on("mousedown.jstree",".jstree-ocl",function(a){a.preventDefault()}).on("click.jstree",".jstree-ocl",a.proxy(function(a){this.toggle_node(a.target)},this)).on("dblclick.jstree",".jstree-anchor",a.proxy(function(a){return a.target.tagName&&"input"===a.target.tagName.toLowerCase()?!0:void(this.settings.core.dblclick_toggle&&this.toggle_node(a.target))},this)).on("click.jstree",".jstree-anchor",a.proxy(function(b){b.preventDefault(),b.currentTarget!==i.activeElement&&a(b.currentTarget).focus(),this.activate_node(b.currentTarget,b)},this)).on("keydown.jstree",".jstree-anchor",a.proxy(function(b){if(b.target.tagName&&"input"===b.target.tagName.toLowerCase())return!0;if(32!==b.which&&13!==b.which&&(b.shiftKey||b.ctrlKey||b.altKey||b.metaKey))return!0;var c=null;switch(this._data.core.rtl&&(37===b.which?b.which=39:39===b.which&&(b.which=37)),b.which){case 32:b.ctrlKey&&(b.type="click",a(b.currentTarget).trigger(b));break;case 13:b.type="click",a(b.currentTarget).trigger(b);break;case 37:b.preventDefault(),this.is_open(b.currentTarget)?this.close_node(b.currentTarget):(c=this.get_parent(b.currentTarget),c&&c.id!==a.jstree.root&&this.get_node(c,!0).children(".jstree-anchor").focus());break;case 38:b.preventDefault(),c=this.get_prev_dom(b.currentTarget),c&&c.length&&c.children(".jstree-anchor").focus();break;case 39:b.preventDefault(),this.is_closed(b.currentTarget)?this.open_node(b.currentTarget,function(a){this.get_node(a,!0).children(".jstree-anchor").focus()}):this.is_open(b.currentTarget)&&(c=this.get_node(b.currentTarget,!0).children(".jstree-children")[0],c&&a(this._firstChild(c)).children(".jstree-anchor").focus());break;case 40:b.preventDefault(),c=this.get_next_dom(b.currentTarget),c&&c.length&&c.children(".jstree-anchor").focus();break;case 106:this.open_all();break;case 36:b.preventDefault(),c=this._firstChild(this.get_container_ul()[0]),c&&a(c).children(".jstree-anchor").filter(":visible").focus();break;case 35:b.preventDefault(),this.element.find(".jstree-anchor").filter(":visible").last().focus();break;case 113:b.preventDefault(),this.edit(b.currentTarget)}},this)).on("load_node.jstree",a.proxy(function(b,c){c.status&&(c.node.id!==a.jstree.root||this._data.core.loaded||(this._data.core.loaded=!0,this._firstChild(this.get_container_ul()[0])&&this.element.attr("aria-activedescendant",this._firstChild(this.get_container_ul()[0]).id),this.trigger("loaded")),this._data.core.ready||setTimeout(a.proxy(function(){if(this.element&&!this.get_container_ul().find(".jstree-loading").length){if(this._data.core.ready=!0,this._data.core.selected.length){if(this.settings.core.expand_selected_onload){var b=[],c,d;for(c=0,d=this._data.core.selected.length;d>c;c++)b=b.concat(this._model.data[this._data.core.selected[c]].parents);for(b=a.vakata.array_unique(b),c=0,d=b.length;d>c;c++)this.open_node(b[c],!1,0)}this.trigger("changed",{action:"ready",selected:this._data.core.selected})}this.trigger("ready")}},this),0))},this)).on("keypress.jstree",a.proxy(function(d){if(d.target.tagName&&"input"===d.target.tagName.toLowerCase())return!0;c&&clearTimeout(c),c=setTimeout(function(){b=""},500);var e=String.fromCharCode(d.which).toLowerCase(),f=this.element.find(".jstree-anchor").filter(":visible"),g=f.index(i.activeElement)||0,h=!1;if(b+=e,b.length>1){if(f.slice(g).each(a.proxy(function(c,d){return 0===a(d).text().toLowerCase().indexOf(b)?(a(d).focus(),h=!0,!1):void 0},this)),h)return;if(f.slice(0,g).each(a.proxy(function(c,d){return 0===a(d).text().toLowerCase().indexOf(b)?(a(d).focus(),h=!0,!1):void 0},this)),h)return}if(new RegExp("^"+e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")+"+$").test(b)){if(f.slice(g+1).each(a.proxy(function(b,c){return a(c).text().toLowerCase().charAt(0)===e?(a(c).focus(),h=!0,!1):void 0},this)),h)return;if(f.slice(0,g+1).each(a.proxy(function(b,c){return a(c).text().toLowerCase().charAt(0)===e?(a(c).focus(),h=!0,!1):void 0},this)),h)return}},this)).on("init.jstree",a.proxy(function(){var a=this.settings.core.themes;this._data.core.themes.dots=a.dots,this._data.core.themes.stripes=a.stripes,this._data.core.themes.icons=a.icons,this._data.core.themes.ellipsis=a.ellipsis,this.set_theme(a.name||"default",a.url),this.set_theme_variant(a.variant)},this)).on("loading.jstree",a.proxy(function(){this[this._data.core.themes.dots?"show_dots":"hide_dots"](),this[this._data.core.themes.icons?"show_icons":"hide_icons"](),this[this._data.core.themes.stripes?"show_stripes":"hide_stripes"](),this[this._data.core.themes.ellipsis?"show_ellipsis":"hide_ellipsis"]()},this)).on("blur.jstree",".jstree-anchor",a.proxy(function(b){this._data.core.focused=null,a(b.currentTarget).filter(".jstree-hovered").mouseleave(),this.element.attr("tabindex","0")},this)).on("focus.jstree",".jstree-anchor",a.proxy(function(b){var c=this.get_node(b.currentTarget);c&&c.id&&(this._data.core.focused=c.id),this.element.find(".jstree-hovered").not(b.currentTarget).mouseleave(),a(b.currentTarget).mouseenter(),this.element.attr("tabindex","-1")},this)).on("focus.jstree",a.proxy(function(){if(+new Date-d>500&&!this._data.core.focused){d=0;var a=this.get_node(this.element.attr("aria-activedescendant"),!0);a&&a.find("> .jstree-anchor").focus()}},this)).on("mouseenter.jstree",".jstree-anchor",a.proxy(function(a){this.hover_node(a.currentTarget)},this)).on("mouseleave.jstree",".jstree-anchor",a.proxy(function(a){this.dehover_node(a.currentTarget)},this))},unbind:function(){this.element.off(".jstree"),a(i).off(".jstree-"+this._id)},trigger:function(a,b){b||(b={}),b.instance=this,this.element.triggerHandler(a.replace(".jstree","")+".jstree",b)},get_container:function(){return this.element},get_container_ul:function(){return this.element.children(".jstree-children").first()},get_string:function(b){var c=this.settings.core.strings;return a.isFunction(c)?c.call(this,b):c&&c[b]?c[b]:b},_firstChild:function(a){a=a?a.firstChild:null;while(null!==a&&1!==a.nodeType)a=a.nextSibling;return a},_nextSibling:function(a){a=a?a.nextSibling:null;while(null!==a&&1!==a.nodeType)a=a.nextSibling;return a},_previousSibling:function(a){a=a?a.previousSibling:null;while(null!==a&&1!==a.nodeType)a=a.previousSibling;return a},get_node:function(b,c){b&&b.id&&(b=b.id);var d;try{if(this._model.data[b])b=this._model.data[b];else if("string"==typeof b&&this._model.data[b.replace(/^#/,"")])b=this._model.data[b.replace(/^#/,"")];else if("string"==typeof b&&(d=a("#"+b.replace(a.jstree.idregex,"\\$&"),this.element)).length&&this._model.data[d.closest(".jstree-node").attr("id")])b=this._model.data[d.closest(".jstree-node").attr("id")];else if((d=a(b,this.element)).length&&this._model.data[d.closest(".jstree-node").attr("id")])b=this._model.data[d.closest(".jstree-node").attr("id")];else{if(!(d=a(b,this.element)).length||!d.hasClass("jstree"))return!1;b=this._model.data[a.jstree.root]}return c&&(b=b.id===a.jstree.root?this.element:a("#"+b.id.replace(a.jstree.idregex,"\\$&"),this.element)),b}catch(e){return!1}},get_path:function(b,c,d){if(b=b.parents?b:this.get_node(b),!b||b.id===a.jstree.root||!b.parents)return!1;var e,f,g=[];for(g.push(d?b.id:b.text),e=0,f=b.parents.length;f>e;e++)g.push(d?b.parents[e]:this.get_text(b.parents[e]));return g=g.reverse().slice(1),c?g.join(c):g},get_next_dom:function(b,c){var d;if(b=this.get_node(b,!0),b[0]===this.element[0]){d=this._firstChild(this.get_container_ul()[0]);while(d&&0===d.offsetHeight)d=this._nextSibling(d);return d?a(d):!1}if(!b||!b.length)return!1;if(c){d=b[0];do d=this._nextSibling(d);while(d&&0===d.offsetHeight);return d?a(d):!1}if(b.hasClass("jstree-open")){d=this._firstChild(b.children(".jstree-children")[0]);while(d&&0===d.offsetHeight)d=this._nextSibling(d);if(null!==d)return a(d)}d=b[0];do d=this._nextSibling(d);while(d&&0===d.offsetHeight);return null!==d?a(d):b.parentsUntil(".jstree",".jstree-node").nextAll(".jstree-node:visible").first()},get_prev_dom:function(b,c){var d;if(b=this.get_node(b,!0),b[0]===this.element[0]){d=this.get_container_ul()[0].lastChild;while(d&&0===d.offsetHeight)d=this._previousSibling(d);return d?a(d):!1}if(!b||!b.length)return!1;if(c){d=b[0];do d=this._previousSibling(d);while(d&&0===d.offsetHeight);return d?a(d):!1}d=b[0];do d=this._previousSibling(d);while(d&&0===d.offsetHeight);if(null!==d){b=a(d);while(b.hasClass("jstree-open"))b=b.children(".jstree-children").first().children(".jstree-node:visible:last");return b}return d=b[0].parentNode.parentNode,d&&d.className&&-1!==d.className.indexOf("jstree-node")?a(d):!1},get_parent:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.parent:!1},get_children_dom:function(a){return a=this.get_node(a,!0),a[0]===this.element[0]?this.get_container_ul().children(".jstree-node"):a&&a.length?a.children(".jstree-children").children(".jstree-node"):!1},is_parent:function(a){return a=this.get_node(a),a&&(a.state.loaded===!1||a.children.length>0)},is_loaded:function(a){return a=this.get_node(a),a&&a.state.loaded},is_loading:function(a){return a=this.get_node(a),a&&a.state&&a.state.loading},is_open:function(a){return a=this.get_node(a),a&&a.state.opened},is_closed:function(a){return a=this.get_node(a),a&&this.is_parent(a)&&!a.state.opened},is_leaf:function(a){return!this.is_parent(a)},load_node:function(b,c){var d,e,f,g,h;if(a.isArray(b))return this._load_nodes(b.slice(),c),!0;if(b=this.get_node(b),!b)return c&&c.call(this,b,!1),!1;if(b.state.loaded){for(b.state.loaded=!1,f=0,g=b.parents.length;g>f;f++)this._model.data[b.parents[f]].children_d=a.vakata.array_filter(this._model.data[b.parents[f]].children_d,function(c){return-1===a.inArray(c,b.children_d)});for(d=0,e=b.children_d.length;e>d;d++)this._model.data[b.children_d[d]].state.selected&&(h=!0),delete this._model.data[b.children_d[d]];h&&(this._data.core.selected=a.vakata.array_filter(this._data.core.selected,function(c){return-1===a.inArray(c,b.children_d)})),b.children=[],b.children_d=[],h&&this.trigger("changed",{action:"load_node",node:b,selected:this._data.core.selected})}return b.state.failed=!1,b.state.loading=!0,this.get_node(b,!0).addClass("jstree-loading").attr("aria-busy",!0),this._load_node(b,a.proxy(function(a){b=this._model.data[b.id],b.state.loading=!1,b.state.loaded=a,b.state.failed=!b.state.loaded;var d=this.get_node(b,!0),e=0,f=0,g=this._model.data,h=!1;for(e=0,f=b.children.length;f>e;e++)if(g[b.children[e]]&&!g[b.children[e]].state.hidden){h=!0;break}b.state.loaded&&d&&d.length&&(d.removeClass("jstree-closed jstree-open jstree-leaf"),h?"#"!==b.id&&d.addClass(b.state.opened?"jstree-open":"jstree-closed"):d.addClass("jstree-leaf")),d.removeClass("jstree-loading").attr("aria-busy",!1),this.trigger("load_node",{node:b,status:a}),c&&c.call(this,b,a)},this)),!0},_load_nodes:function(a,b,c,d){var e=!0,f=function(){this._load_nodes(a,b,!0)},g=this._model.data,h,i,j=[];for(h=0,i=a.length;i>h;h++)g[a[h]]&&(!g[a[h]].state.loaded&&!g[a[h]].state.failed||!c&&d)&&(this.is_loading(a[h])||this.load_node(a[h],f),e=!1);if(e){for(h=0,i=a.length;i>h;h++)g[a[h]]&&g[a[h]].state.loaded&&j.push(a[h]);b&&!b.done&&(b.call(this,j),b.done=!0)}},load_all:function(b,c){if(b||(b=a.jstree.root),b=this.get_node(b),!b)return!1;var d=[],e=this._model.data,f=e[b.id].children_d,g,h;for(b.state&&!b.state.loaded&&d.push(b.id),g=0,h=f.length;h>g;g++)e[f[g]]&&e[f[g]].state&&!e[f[g]].state.loaded&&d.push(f[g]);d.length?this._load_nodes(d,function(){this.load_all(b,c)}):(c&&c.call(this,b),this.trigger("load_all",{node:b}))},_load_node:function(b,c){var d=this.settings.core.data,e,f=function g(){return 3!==this.nodeType&&8!==this.nodeType};return d?a.isFunction(d)?d.call(this,b,a.proxy(function(d){d===!1?c.call(this,!1):this["string"==typeof d?"_append_html_data":"_append_json_data"](b,"string"==typeof d?a(a.parseHTML(d)).filter(f):d,function(a){c.call(this,a)})},this)):"object"==typeof d?d.url?(d=a.extend(!0,{},d),a.isFunction(d.url)&&(d.url=d.url.call(this,b)),a.isFunction(d.data)&&(d.data=d.data.call(this,b)),a.ajax(d).done(a.proxy(function(d,e,g){var h=g.getResponseHeader("Content-Type");return h&&-1!==h.indexOf("json")||"object"==typeof d?this._append_json_data(b,d,function(a){c.call(this,a)}):h&&-1!==h.indexOf("html")||"string"==typeof d?this._append_html_data(b,a(a.parseHTML(d)).filter(f),function(a){c.call(this,a)}):(this._data.core.last_error={error:"ajax",plugin:"core",id:"core_04",reason:"Could not load node",data:JSON.stringify({id:b.id,xhr:g})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1))},this)).fail(a.proxy(function(a){c.call(this,!1),this._data.core.last_error={error:"ajax",plugin:"core",id:"core_04",reason:"Could not load node",data:JSON.stringify({id:b.id,xhr:a})},this.settings.core.error.call(this,this._data.core.last_error)},this))):(e=a.isArray(d)||a.isPlainObject(d)?JSON.parse(JSON.stringify(d)):d,b.id===a.jstree.root?this._append_json_data(b,e,function(a){c.call(this,a)}):(this._data.core.last_error={error:"nodata",plugin:"core",id:"core_05",reason:"Could not load node",data:JSON.stringify({id:b.id})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1))):"string"==typeof d?b.id===a.jstree.root?this._append_html_data(b,a(a.parseHTML(d)).filter(f),function(a){c.call(this,a)}):(this._data.core.last_error={error:"nodata",plugin:"core",id:"core_06",reason:"Could not load node",data:JSON.stringify({id:b.id})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1)):c.call(this,!1):b.id===a.jstree.root?this._append_html_data(b,this._data.core.original_container_html.clone(!0),function(a){c.call(this,a)}):c.call(this,!1)},_node_changed:function(a){a=this.get_node(a),a&&this._model.changed.push(a.id)},_append_html_data:function(b,c,d){b=this.get_node(b),b.children=[],b.children_d=[];var e=c.is("ul")?c.children():c,f=b.id,g=[],h=[],i=this._model.data,j=i[f],k=this._data.core.selected.length,l,m,n;for(e.each(a.proxy(function(b,c){l=this._parse_model_from_html(a(c),f,j.parents.concat()),l&&(g.push(l),h.push(l),i[l].children_d.length&&(h=h.concat(i[l].children_d)))},this)),j.children=g,j.children_d=h,m=0,n=j.parents.length;n>m;m++)i[j.parents[m]].children_d=i[j.parents[m]].children_d.concat(h);this.trigger("model",{nodes:h,parent:f}),f!==a.jstree.root?(this._node_changed(f),this.redraw()):(this.get_container_ul().children(".jstree-initial-node").remove(),this.redraw(!0)),this._data.core.selected.length!==k&&this.trigger("changed",{action:"model",selected:this._data.core.selected}),d.call(this,!0)},_append_json_data:function(b,c,d,e){if(null!==this.element){b=this.get_node(b),b.children=[],b.children_d=[],c.d&&(c=c.d,"string"==typeof c&&(c=JSON.parse(c))),a.isArray(c)||(c=[c]);var f=null,g={df:this._model.default_state,dat:c,par:b.id,m:this._model.data,t_id:this._id,t_cnt:this._cnt,sel:this._data.core.selected},h=function(a,b){a.data&&(a=a.data);var c=a.dat,d=a.par,e=[],f=[],g=[],h=a.df,i=a.t_id,j=a.t_cnt,k=a.m,l=k[d],m=a.sel,n,o,p,q,r=function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=a.id.toString(),f,i,j,l,m={id:e,text:a.text||"",icon:a.icon!==b?a.icon:!0,parent:c,parents:d,children:a.children||[],children_d:a.children_d||[],data:a.data,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(f in h)h.hasOwnProperty(f)&&(m.state[f]=h[f]);if(a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(m.icon=a.data.jstree.icon),(m.icon===b||null===m.icon||""===m.icon)&&(m.icon=!0),a&&a.data&&(m.data=a.data,a.data.jstree))for(f in a.data.jstree)a.data.jstree.hasOwnProperty(f)&&(m.state[f]=a.data.jstree[f]);if(a&&"object"==typeof a.state)for(f in a.state)a.state.hasOwnProperty(f)&&(m.state[f]=a.state[f]);if(a&&"object"==typeof a.li_attr)for(f in a.li_attr)a.li_attr.hasOwnProperty(f)&&(m.li_attr[f]=a.li_attr[f]);if(m.li_attr.id||(m.li_attr.id=e),a&&"object"==typeof a.a_attr)for(f in a.a_attr)a.a_attr.hasOwnProperty(f)&&(m.a_attr[f]=a.a_attr[f]);for(a&&a.children&&a.children===!0&&(m.state.loaded=!1,m.children=[],m.children_d=[]),k[m.id]=m,f=0,i=m.children.length;i>f;f++)j=r(k[m.children[f]],m.id,d),l=k[j],m.children_d.push(j),l.children_d.length&&(m.children_d=m.children_d.concat(l.children_d));return delete a.data,delete a.children,k[m.id].original=a,m.state.selected&&g.push(m.id),m.id},s=function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=!1,f,l,m,n,o;do e="j"+i+"_"+ ++j;while(k[e]);o={id:!1,text:"string"==typeof a?a:"",icon:"object"==typeof a&&a.icon!==b?a.icon:!0,parent:c,parents:d,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(f in h)h.hasOwnProperty(f)&&(o.state[f]=h[f]);if(a&&a.id&&(o.id=a.id.toString()),a&&a.text&&(o.text=a.text),a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(o.icon=a.data.jstree.icon),(o.icon===b||null===o.icon||""===o.icon)&&(o.icon=!0),a&&a.data&&(o.data=a.data,a.data.jstree))for(f in a.data.jstree)a.data.jstree.hasOwnProperty(f)&&(o.state[f]=a.data.jstree[f]);if(a&&"object"==typeof a.state)for(f in a.state)a.state.hasOwnProperty(f)&&(o.state[f]=a.state[f]);if(a&&"object"==typeof a.li_attr)for(f in a.li_attr)a.li_attr.hasOwnProperty(f)&&(o.li_attr[f]=a.li_attr[f]);if(o.li_attr.id&&!o.id&&(o.id=o.li_attr.id.toString()),o.id||(o.id=e),o.li_attr.id||(o.li_attr.id=o.id),a&&"object"==typeof a.a_attr)for(f in a.a_attr)a.a_attr.hasOwnProperty(f)&&(o.a_attr[f]=a.a_attr[f]);if(a&&a.children&&a.children.length){for(f=0,l=a.children.length;l>f;f++)m=s(a.children[f],o.id,d),n=k[m],o.children.push(m),n.children_d.length&&(o.children_d=o.children_d.concat(n.children_d));o.children_d=o.children_d.concat(o.children)}return a&&a.children&&a.children===!0&&(o.state.loaded=!1,o.children=[],o.children_d=[]),delete a.data,delete a.children,o.original=a,k[o.id]=o,o.state.selected&&g.push(o.id),o.id};if(c.length&&c[0].id!==b&&c[0].parent!==b){for(o=0,p=c.length;p>o;o++)c[o].children||(c[o].children=[]),k[c[o].id.toString()]=c[o];for(o=0,p=c.length;p>o;o++)k[c[o].parent.toString()].children.push(c[o].id.toString()),l.children_d.push(c[o].id.toString());for(o=0,p=l.children.length;p>o;o++)n=r(k[l.children[o]],d,l.parents.concat()),f.push(n),k[n].children_d.length&&(f=f.concat(k[n].children_d));for(o=0,p=l.parents.length;p>o;o++)k[l.parents[o]].children_d=k[l.parents[o]].children_d.concat(f);q={cnt:j,mod:k,sel:m,par:d,dpc:f,add:g}}else{for(o=0,p=c.length;p>o;o++)n=s(c[o],d,l.parents.concat()),n&&(e.push(n),f.push(n),k[n].children_d.length&&(f=f.concat(k[n].children_d)));for(l.children=e,l.children_d=f,o=0,p=l.parents.length;p>o;o++)k[l.parents[o]].children_d=k[l.parents[o]].children_d.concat(f);q={cnt:j,mod:k,sel:m,par:d,dpc:f,add:g}}return"undefined"!=typeof window&&"undefined"!=typeof window.document?q:void postMessage(q)},i=function(b,c){if(null!==this.element){this._cnt=b.cnt;var e,f=this._model.data;for(e in f)f.hasOwnProperty(e)&&f[e].state&&f[e].state.loading&&b.mod[e]&&(b.mod[e].state.loading=!0);if(this._model.data=b.mod,c){var g,h=b.add,i=b.sel,j=this._data.core.selected.slice();if(f=this._model.data,i.length!==j.length||a.vakata.array_unique(i.concat(j)).length!==i.length){for(e=0,g=i.length;g>e;e++)-1===a.inArray(i[e],h)&&-1===a.inArray(i[e],j)&&(f[i[e]].state.selected=!1);for(e=0,g=j.length;g>e;e++)-1===a.inArray(j[e],i)&&(f[j[e]].state.selected=!0)}}b.add.length&&(this._data.core.selected=this._data.core.selected.concat(b.add)),this.trigger("model",{nodes:b.dpc,parent:b.par}),b.par!==a.jstree.root?(this._node_changed(b.par),this.redraw()):this.redraw(!0),b.add.length&&this.trigger("changed",{action:"model",selected:this._data.core.selected}),d.call(this,!0)}};if(this.settings.core.worker&&window.Blob&&window.URL&&window.Worker)try{null===this._wrk&&(this._wrk=window.URL.createObjectURL(new window.Blob(["self.onmessage = "+h.toString()],{type:"text/javascript"}))),!this._data.core.working||e?(this._data.core.working=!0,f=new window.Worker(this._wrk),f.onmessage=a.proxy(function(a){i.call(this,a.data,!0);try{f.terminate(),f=null}catch(b){}this._data.core.worker_queue.length?this._append_json_data.apply(this,this._data.core.worker_queue.shift()):this._data.core.working=!1},this),g.par?f.postMessage(g):this._data.core.worker_queue.length?this._append_json_data.apply(this,this._data.core.worker_queue.shift()):this._data.core.working=!1):this._data.core.worker_queue.push([b,c,d,!0])}catch(j){i.call(this,h(g),!1),this._data.core.worker_queue.length?this._append_json_data.apply(this,this._data.core.worker_queue.shift()):this._data.core.working=!1}else i.call(this,h(g),!1)}},_parse_model_from_html:function(c,d,e){e=e?[].concat(e):[],d&&e.unshift(d);var f,g,h=this._model.data,i={id:!1,text:!1,icon:!0,parent:d,parents:e,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1},j,k,l;for(j in this._model.default_state)this._model.default_state.hasOwnProperty(j)&&(i.state[j]=this._model.default_state[j]);if(k=a.vakata.attributes(c,!0),a.each(k,function(b,c){return c=a.trim(c),c.length?(i.li_attr[b]=c,void("id"===b&&(i.id=c.toString()))):!0}),k=c.children("a").first(),k.length&&(k=a.vakata.attributes(k,!0),a.each(k,function(b,c){c=a.trim(c),c.length&&(i.a_attr[b]=c)})),k=c.children("a").first().length?c.children("a").first().clone():c.clone(),k.children("ins, i, ul").remove(),k=k.html(),k=a("<div />").html(k),i.text=this.settings.core.force_text?k.text():k.html(),k=c.data(),i.data=k?a.extend(!0,{},k):null,i.state.opened=c.hasClass("jstree-open"),i.state.selected=c.children("a").hasClass("jstree-clicked"),i.state.disabled=c.children("a").hasClass("jstree-disabled"),i.data&&i.data.jstree)for(j in i.data.jstree)i.data.jstree.hasOwnProperty(j)&&(i.state[j]=i.data.jstree[j]);k=c.children("a").children(".jstree-themeicon"),k.length&&(i.icon=k.hasClass("jstree-themeicon-hidden")?!1:k.attr("rel")),i.state.icon!==b&&(i.icon=i.state.icon),(i.icon===b||null===i.icon||""===i.icon)&&(i.icon=!0),k=c.children("ul").children("li");do l="j"+this._id+"_"+ ++this._cnt;while(h[l]);return i.id=i.li_attr.id?i.li_attr.id.toString():l,k.length?(k.each(a.proxy(function(b,c){f=this._parse_model_from_html(a(c),i.id,e),g=this._model.data[f],i.children.push(f),g.children_d.length&&(i.children_d=i.children_d.concat(g.children_d))},this)),i.children_d=i.children_d.concat(i.children)):c.hasClass("jstree-closed")&&(i.state.loaded=!1),i.li_attr["class"]&&(i.li_attr["class"]=i.li_attr["class"].replace("jstree-closed","").replace("jstree-open","")),i.a_attr["class"]&&(i.a_attr["class"]=i.a_attr["class"].replace("jstree-clicked","").replace("jstree-disabled","")),h[i.id]=i,i.state.selected&&this._data.core.selected.push(i.id),i.id},_parse_model_from_flat_json:function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=a.id.toString(),f=this._model.data,g=this._model.default_state,h,i,j,k,l={id:e,text:a.text||"",icon:a.icon!==b?a.icon:!0,parent:c,parents:d,children:a.children||[],children_d:a.children_d||[],data:a.data,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(h in g)g.hasOwnProperty(h)&&(l.state[h]=g[h]);if(a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(l.icon=a.data.jstree.icon),(l.icon===b||null===l.icon||""===l.icon)&&(l.icon=!0),a&&a.data&&(l.data=a.data,a.data.jstree))for(h in a.data.jstree)a.data.jstree.hasOwnProperty(h)&&(l.state[h]=a.data.jstree[h]);if(a&&"object"==typeof a.state)for(h in a.state)a.state.hasOwnProperty(h)&&(l.state[h]=a.state[h]);if(a&&"object"==typeof a.li_attr)for(h in a.li_attr)a.li_attr.hasOwnProperty(h)&&(l.li_attr[h]=a.li_attr[h]);if(l.li_attr.id||(l.li_attr.id=e),a&&"object"==typeof a.a_attr)for(h in a.a_attr)a.a_attr.hasOwnProperty(h)&&(l.a_attr[h]=a.a_attr[h]);for(a&&a.children&&a.children===!0&&(l.state.loaded=!1,l.children=[],l.children_d=[]),f[l.id]=l,h=0,i=l.children.length;i>h;h++)j=this._parse_model_from_flat_json(f[l.children[h]],l.id,d),k=f[j],l.children_d.push(j),k.children_d.length&&(l.children_d=l.children_d.concat(k.children_d));return delete a.data,delete a.children,f[l.id].original=a,l.state.selected&&this._data.core.selected.push(l.id),l.id},_parse_model_from_json:function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=!1,f,g,h,i,j=this._model.data,k=this._model.default_state,l;do e="j"+this._id+"_"+ ++this._cnt;while(j[e]);l={id:!1,text:"string"==typeof a?a:"",icon:"object"==typeof a&&a.icon!==b?a.icon:!0,parent:c,parents:d,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(f in k)k.hasOwnProperty(f)&&(l.state[f]=k[f]);if(a&&a.id&&(l.id=a.id.toString()),a&&a.text&&(l.text=a.text),a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(l.icon=a.data.jstree.icon),(l.icon===b||null===l.icon||""===l.icon)&&(l.icon=!0),a&&a.data&&(l.data=a.data,a.data.jstree))for(f in a.data.jstree)a.data.jstree.hasOwnProperty(f)&&(l.state[f]=a.data.jstree[f]);if(a&&"object"==typeof a.state)for(f in a.state)a.state.hasOwnProperty(f)&&(l.state[f]=a.state[f]);if(a&&"object"==typeof a.li_attr)for(f in a.li_attr)a.li_attr.hasOwnProperty(f)&&(l.li_attr[f]=a.li_attr[f]);if(l.li_attr.id&&!l.id&&(l.id=l.li_attr.id.toString()),l.id||(l.id=e),l.li_attr.id||(l.li_attr.id=l.id),a&&"object"==typeof a.a_attr)for(f in a.a_attr)a.a_attr.hasOwnProperty(f)&&(l.a_attr[f]=a.a_attr[f]);if(a&&a.children&&a.children.length){for(f=0,g=a.children.length;g>f;f++)h=this._parse_model_from_json(a.children[f],l.id,d),i=j[h],l.children.push(h),i.children_d.length&&(l.children_d=l.children_d.concat(i.children_d));l.children_d=l.children_d.concat(l.children)}return a&&a.children&&a.children===!0&&(l.state.loaded=!1,l.children=[],l.children_d=[]),delete a.data,delete a.children,l.original=a,j[l.id]=l,l.state.selected&&this._data.core.selected.push(l.id),l.id},_redraw:function(){var b=this._model.force_full_redraw?this._model.data[a.jstree.root].children.concat([]):this._model.changed.concat([]),c=i.createElement("UL"),d,e,f,g=this._data.core.focused;for(e=0,f=b.length;f>e;e++)d=this.redraw_node(b[e],!0,this._model.force_full_redraw),d&&this._model.force_full_redraw&&c.appendChild(d);this._model.force_full_redraw&&(c.className=this.get_container_ul()[0].className,c.setAttribute("role","group"),this.element.empty().append(c)),null!==g&&(d=this.get_node(g,!0),d&&d.length&&d.children(".jstree-anchor")[0]!==i.activeElement?d.children(".jstree-anchor").focus():this._data.core.focused=null),this._model.force_full_redraw=!1,this._model.changed=[],this.trigger("redraw",{nodes:b})},redraw:function(a){a&&(this._model.force_full_redraw=!0),this._redraw()},draw_children:function(b){var c=this.get_node(b),d=!1,e=!1,f=!1,g=i;if(!c)return!1;if(c.id===a.jstree.root)return this.redraw(!0);if(b=this.get_node(b,!0),!b||!b.length)return!1;if(b.children(".jstree-children").remove(),b=b[0],c.children.length&&c.state.loaded){for(f=g.createElement("UL"),f.setAttribute("role","group"),f.className="jstree-children",d=0,e=c.children.length;e>d;d++)f.appendChild(this.redraw_node(c.children[d],!0,!0));b.appendChild(f)}},redraw_node:function(b,c,d,e){var f=this.get_node(b),g=!1,h=!1,j=!1,k=!1,l=!1,m=!1,n="",o=i,p=this._model.data,q=!1,r=!1,s=null,t=0,u=0,v=!1,w=!1;
3
- if(!f)return!1;if(f.id===a.jstree.root)return this.redraw(!0);if(c=c||0===f.children.length,b=i.querySelector?this.element[0].querySelector("#"+(-1!=="0123456789".indexOf(f.id[0])?"\\3"+f.id[0]+" "+f.id.substr(1).replace(a.jstree.idregex,"\\$&"):f.id.replace(a.jstree.idregex,"\\$&"))):i.getElementById(f.id))b=a(b),d||(g=b.parent().parent()[0],g===this.element[0]&&(g=null),h=b.index()),c||!f.children.length||b.children(".jstree-children").length||(c=!0),c||(j=b.children(".jstree-children")[0]),q=b.children(".jstree-anchor")[0]===i.activeElement,b.remove();else if(c=!0,!d){if(g=f.parent!==a.jstree.root?a("#"+f.parent.replace(a.jstree.idregex,"\\$&"),this.element)[0]:null,!(null===g||g&&p[f.parent].state.opened))return!1;h=a.inArray(f.id,null===g?p[a.jstree.root].children:p[f.parent].children)}b=this._data.core.node.cloneNode(!0),n="jstree-node ";for(k in f.li_attr)if(f.li_attr.hasOwnProperty(k)){if("id"===k)continue;"class"!==k?b.setAttribute(k,f.li_attr[k]):n+=f.li_attr[k]}for(f.a_attr.id||(f.a_attr.id=f.id+"_anchor"),b.setAttribute("aria-selected",!!f.state.selected),b.setAttribute("aria-level",f.parents.length),b.setAttribute("aria-labelledby",f.a_attr.id),f.state.disabled&&b.setAttribute("aria-disabled",!0),k=0,l=f.children.length;l>k;k++)if(!p[f.children[k]].state.hidden){v=!0;break}if(null!==f.parent&&p[f.parent]&&!f.state.hidden&&(k=a.inArray(f.id,p[f.parent].children),w=f.id,-1!==k))for(k++,l=p[f.parent].children.length;l>k;k++)if(p[p[f.parent].children[k]].state.hidden||(w=p[f.parent].children[k]),w!==f.id)break;f.state.hidden&&(n+=" jstree-hidden"),f.state.loaded&&!v?n+=" jstree-leaf":(n+=f.state.opened&&f.state.loaded?" jstree-open":" jstree-closed",b.setAttribute("aria-expanded",f.state.opened&&f.state.loaded)),w===f.id&&(n+=" jstree-last"),b.id=f.id,b.className=n,n=(f.state.selected?" jstree-clicked":"")+(f.state.disabled?" jstree-disabled":"");for(l in f.a_attr)if(f.a_attr.hasOwnProperty(l)){if("href"===l&&"#"===f.a_attr[l])continue;"class"!==l?b.childNodes[1].setAttribute(l,f.a_attr[l]):n+=" "+f.a_attr[l]}if(n.length&&(b.childNodes[1].className="jstree-anchor "+n),(f.icon&&f.icon!==!0||f.icon===!1)&&(f.icon===!1?b.childNodes[1].childNodes[0].className+=" jstree-themeicon-hidden":-1===f.icon.indexOf("/")&&-1===f.icon.indexOf(".")?b.childNodes[1].childNodes[0].className+=" "+f.icon+" jstree-themeicon-custom":(b.childNodes[1].childNodes[0].style.backgroundImage='url("'+f.icon+'")',b.childNodes[1].childNodes[0].style.backgroundPosition="center center",b.childNodes[1].childNodes[0].style.backgroundSize="auto",b.childNodes[1].childNodes[0].className+=" jstree-themeicon-custom")),this.settings.core.force_text?b.childNodes[1].appendChild(o.createTextNode(f.text)):b.childNodes[1].innerHTML+=f.text,c&&f.children.length&&(f.state.opened||e)&&f.state.loaded){for(m=o.createElement("UL"),m.setAttribute("role","group"),m.className="jstree-children",k=0,l=f.children.length;l>k;k++)m.appendChild(this.redraw_node(f.children[k],c,!0));b.appendChild(m)}if(j&&b.appendChild(j),!d){for(g||(g=this.element[0]),k=0,l=g.childNodes.length;l>k;k++)if(g.childNodes[k]&&g.childNodes[k].className&&-1!==g.childNodes[k].className.indexOf("jstree-children")){s=g.childNodes[k];break}s||(s=o.createElement("UL"),s.setAttribute("role","group"),s.className="jstree-children",g.appendChild(s)),g=s,h<g.childNodes.length?g.insertBefore(b,g.childNodes[h]):g.appendChild(b),q&&(t=this.element[0].scrollTop,u=this.element[0].scrollLeft,b.childNodes[1].focus(),this.element[0].scrollTop=t,this.element[0].scrollLeft=u)}return f.state.opened&&!f.state.loaded&&(f.state.opened=!1,setTimeout(a.proxy(function(){this.open_node(f.id,!1,0)},this),0)),b},open_node:function(c,d,e){var f,g,h,i;if(a.isArray(c)){for(c=c.slice(),f=0,g=c.length;g>f;f++)this.open_node(c[f],d,e);return!0}return c=this.get_node(c),c&&c.id!==a.jstree.root?(e=e===b?this.settings.core.animation:e,this.is_closed(c)?this.is_loaded(c)?(h=this.get_node(c,!0),i=this,h.length&&(e&&h.children(".jstree-children").length&&h.children(".jstree-children").stop(!0,!0),c.children.length&&!this._firstChild(h.children(".jstree-children")[0])&&this.draw_children(c),e?(this.trigger("before_open",{node:c}),h.children(".jstree-children").css("display","none").end().removeClass("jstree-closed").addClass("jstree-open").attr("aria-expanded",!0).children(".jstree-children").stop(!0,!0).slideDown(e,function(){this.style.display="",i.element&&i.trigger("after_open",{node:c})})):(this.trigger("before_open",{node:c}),h[0].className=h[0].className.replace("jstree-closed","jstree-open"),h[0].setAttribute("aria-expanded",!0))),c.state.opened=!0,d&&d.call(this,c,!0),h.length||this.trigger("before_open",{node:c}),this.trigger("open_node",{node:c}),e&&h.length||this.trigger("after_open",{node:c}),!0):this.is_loading(c)?setTimeout(a.proxy(function(){this.open_node(c,d,e)},this),500):void this.load_node(c,function(a,b){return b?this.open_node(a,d,e):d?d.call(this,a,!1):!1}):(d&&d.call(this,c,!1),!1)):!1},_open_to:function(b){if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;var c,d,e=b.parents;for(c=0,d=e.length;d>c;c+=1)c!==a.jstree.root&&this.open_node(e[c],!1,0);return a("#"+b.id.replace(a.jstree.idregex,"\\$&"),this.element)},close_node:function(c,d){var e,f,g,h;if(a.isArray(c)){for(c=c.slice(),e=0,f=c.length;f>e;e++)this.close_node(c[e],d);return!0}return c=this.get_node(c),c&&c.id!==a.jstree.root?this.is_closed(c)?!1:(d=d===b?this.settings.core.animation:d,g=this,h=this.get_node(c,!0),c.state.opened=!1,this.trigger("close_node",{node:c}),void(h.length?d?h.children(".jstree-children").attr("style","display:block !important").end().removeClass("jstree-open").addClass("jstree-closed").attr("aria-expanded",!1).children(".jstree-children").stop(!0,!0).slideUp(d,function(){this.style.display="",h.children(".jstree-children").remove(),g.element&&g.trigger("after_close",{node:c})}):(h[0].className=h[0].className.replace("jstree-open","jstree-closed"),h.attr("aria-expanded",!1).children(".jstree-children").remove(),this.trigger("after_close",{node:c})):this.trigger("after_close",{node:c}))):!1},toggle_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.toggle_node(b[c]);return!0}return this.is_closed(b)?this.open_node(b):this.is_open(b)?this.close_node(b):void 0},open_all:function(b,c,d){if(b||(b=a.jstree.root),b=this.get_node(b),!b)return!1;var e=b.id===a.jstree.root?this.get_container_ul():this.get_node(b,!0),f,g,h;if(!e.length){for(f=0,g=b.children_d.length;g>f;f++)this.is_closed(this._model.data[b.children_d[f]])&&(this._model.data[b.children_d[f]].state.opened=!0);return this.trigger("open_all",{node:b})}d=d||e,h=this,e=this.is_closed(b)?e.find(".jstree-closed").addBack():e.find(".jstree-closed"),e.each(function(){h.open_node(this,function(a,b){b&&this.is_parent(a)&&this.open_all(a,c,d)},c||0)}),0===d.find(".jstree-closed").length&&this.trigger("open_all",{node:this.get_node(d)})},close_all:function(b,c){if(b||(b=a.jstree.root),b=this.get_node(b),!b)return!1;var d=b.id===a.jstree.root?this.get_container_ul():this.get_node(b,!0),e=this,f,g;for(d.length&&(d=this.is_open(b)?d.find(".jstree-open").addBack():d.find(".jstree-open"),a(d.get().reverse()).each(function(){e.close_node(this,c||0)})),f=0,g=b.children_d.length;g>f;f++)this._model.data[b.children_d[f]].state.opened=!1;this.trigger("close_all",{node:b})},is_disabled:function(a){return a=this.get_node(a),a&&a.state&&a.state.disabled},enable_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.enable_node(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(b.state.disabled=!1,this.get_node(b,!0).children(".jstree-anchor").removeClass("jstree-disabled").attr("aria-disabled",!1),void this.trigger("enable_node",{node:b})):!1},disable_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.disable_node(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(b.state.disabled=!0,this.get_node(b,!0).children(".jstree-anchor").addClass("jstree-disabled").attr("aria-disabled",!0),void this.trigger("disable_node",{node:b})):!1},is_hidden:function(a){return a=this.get_node(a),a.state.hidden===!0},hide_node:function(b,c){var d,e;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.hide_node(b[d],!0);return c||this.redraw(),!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?void(b.state.hidden||(b.state.hidden=!0,this._node_changed(b.parent),c||this.redraw(),this.trigger("hide_node",{node:b}))):!1},show_node:function(b,c){var d,e;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.show_node(b[d],!0);return c||this.redraw(),!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?void(b.state.hidden&&(b.state.hidden=!1,this._node_changed(b.parent),c||this.redraw(),this.trigger("show_node",{node:b}))):!1},hide_all:function(b){var c,d=this._model.data,e=[];for(c in d)d.hasOwnProperty(c)&&c!==a.jstree.root&&!d[c].state.hidden&&(d[c].state.hidden=!0,e.push(c));return this._model.force_full_redraw=!0,b||this.redraw(),this.trigger("hide_all",{nodes:e}),e},show_all:function(b){var c,d=this._model.data,e=[];for(c in d)d.hasOwnProperty(c)&&c!==a.jstree.root&&d[c].state.hidden&&(d[c].state.hidden=!1,e.push(c));return this._model.force_full_redraw=!0,b||this.redraw(),this.trigger("show_all",{nodes:e}),e},activate_node:function(a,c){if(this.is_disabled(a))return!1;if(c&&"object"==typeof c||(c={}),this._data.core.last_clicked=this._data.core.last_clicked&&this._data.core.last_clicked.id!==b?this.get_node(this._data.core.last_clicked.id):null,this._data.core.last_clicked&&!this._data.core.last_clicked.state.selected&&(this._data.core.last_clicked=null),!this._data.core.last_clicked&&this._data.core.selected.length&&(this._data.core.last_clicked=this.get_node(this._data.core.selected[this._data.core.selected.length-1])),this.settings.core.multiple&&(c.metaKey||c.ctrlKey||c.shiftKey)&&(!c.shiftKey||this._data.core.last_clicked&&this.get_parent(a)&&this.get_parent(a)===this._data.core.last_clicked.parent))if(c.shiftKey){var d=this.get_node(a).id,e=this._data.core.last_clicked.id,f=this.get_node(this._data.core.last_clicked.parent).children,g=!1,h,i;for(h=0,i=f.length;i>h;h+=1)f[h]===d&&(g=!g),f[h]===e&&(g=!g),this.is_disabled(f[h])||!g&&f[h]!==d&&f[h]!==e?this.deselect_node(f[h],!0,c):this.is_hidden(f[h])||this.select_node(f[h],!0,!1,c);this.trigger("changed",{action:"select_node",node:this.get_node(a),selected:this._data.core.selected,event:c})}else this.is_selected(a)?this.deselect_node(a,!1,c):this.select_node(a,!1,!1,c);else!this.settings.core.multiple&&(c.metaKey||c.ctrlKey||c.shiftKey)&&this.is_selected(a)?this.deselect_node(a,!1,c):(this.deselect_all(!0),this.select_node(a,!1,!1,c),this._data.core.last_clicked=this.get_node(a));this.trigger("activate_node",{node:this.get_node(a),event:c})},hover_node:function(a){if(a=this.get_node(a,!0),!a||!a.length||a.children(".jstree-hovered").length)return!1;var b=this.element.find(".jstree-hovered"),c=this.element;b&&b.length&&this.dehover_node(b),a.children(".jstree-anchor").addClass("jstree-hovered"),this.trigger("hover_node",{node:this.get_node(a)}),setTimeout(function(){c.attr("aria-activedescendant",a[0].id)},0)},dehover_node:function(a){return a=this.get_node(a,!0),a&&a.length&&a.children(".jstree-hovered").length?(a.children(".jstree-anchor").removeClass("jstree-hovered"),void this.trigger("dehover_node",{node:this.get_node(a)})):!1},select_node:function(b,c,d,e){var f,g,h,i;if(a.isArray(b)){for(b=b.slice(),g=0,h=b.length;h>g;g++)this.select_node(b[g],c,d,e);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(f=this.get_node(b,!0),void(b.state.selected||(b.state.selected=!0,this._data.core.selected.push(b.id),d||(f=this._open_to(b)),f&&f.length&&f.attr("aria-selected",!0).children(".jstree-anchor").addClass("jstree-clicked"),this.trigger("select_node",{node:b,selected:this._data.core.selected,event:e}),c||this.trigger("changed",{action:"select_node",node:b,selected:this._data.core.selected,event:e})))):!1},deselect_node:function(b,c,d){var e,f,g;if(a.isArray(b)){for(b=b.slice(),e=0,f=b.length;f>e;e++)this.deselect_node(b[e],c,d);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(g=this.get_node(b,!0),void(b.state.selected&&(b.state.selected=!1,this._data.core.selected=a.vakata.array_remove_item(this._data.core.selected,b.id),g.length&&g.attr("aria-selected",!1).children(".jstree-anchor").removeClass("jstree-clicked"),this.trigger("deselect_node",{node:b,selected:this._data.core.selected,event:d}),c||this.trigger("changed",{action:"deselect_node",node:b,selected:this._data.core.selected,event:d})))):!1},select_all:function(b){var c=this._data.core.selected.concat([]),d,e;for(this._data.core.selected=this._model.data[a.jstree.root].children_d.concat(),d=0,e=this._data.core.selected.length;e>d;d++)this._model.data[this._data.core.selected[d]]&&(this._model.data[this._data.core.selected[d]].state.selected=!0);this.redraw(!0),this.trigger("select_all",{selected:this._data.core.selected}),b||this.trigger("changed",{action:"select_all",selected:this._data.core.selected,old_selection:c})},deselect_all:function(a){var b=this._data.core.selected.concat([]),c,d;for(c=0,d=this._data.core.selected.length;d>c;c++)this._model.data[this._data.core.selected[c]]&&(this._model.data[this._data.core.selected[c]].state.selected=!1);this._data.core.selected=[],this.element.find(".jstree-clicked").removeClass("jstree-clicked").parent().attr("aria-selected",!1),this.trigger("deselect_all",{selected:this._data.core.selected,node:b}),a||this.trigger("changed",{action:"deselect_all",selected:this._data.core.selected,old_selection:b})},is_selected:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.state.selected:!1},get_selected:function(b){return b?a.map(this._data.core.selected,a.proxy(function(a){return this.get_node(a)},this)):this._data.core.selected.slice()},get_top_selected:function(b){var c=this.get_selected(!0),d={},e,f,g,h;for(e=0,f=c.length;f>e;e++)d[c[e].id]=c[e];for(e=0,f=c.length;f>e;e++)for(g=0,h=c[e].children_d.length;h>g;g++)d[c[e].children_d[g]]&&delete d[c[e].children_d[g]];c=[];for(e in d)d.hasOwnProperty(e)&&c.push(e);return b?a.map(c,a.proxy(function(a){return this.get_node(a)},this)):c},get_bottom_selected:function(b){var c=this.get_selected(!0),d=[],e,f;for(e=0,f=c.length;f>e;e++)c[e].children.length||d.push(c[e].id);return b?a.map(d,a.proxy(function(a){return this.get_node(a)},this)):d},get_state:function(){var b={core:{open:[],scroll:{left:this.element.scrollLeft(),top:this.element.scrollTop()},selected:[]}},c;for(c in this._model.data)this._model.data.hasOwnProperty(c)&&c!==a.jstree.root&&(this._model.data[c].state.opened&&b.core.open.push(c),this._model.data[c].state.selected&&b.core.selected.push(c));return b},set_state:function(c,d){if(c){if(c.core){var e,f,g,h,i;if(c.core.open)return a.isArray(c.core.open)&&c.core.open.length?this._load_nodes(c.core.open,function(a){this.open_node(a,!1,0),delete c.core.open,this.set_state(c,d)}):(delete c.core.open,this.set_state(c,d)),!1;if(c.core.scroll)return c.core.scroll&&c.core.scroll.left!==b&&this.element.scrollLeft(c.core.scroll.left),c.core.scroll&&c.core.scroll.top!==b&&this.element.scrollTop(c.core.scroll.top),delete c.core.scroll,this.set_state(c,d),!1;if(c.core.selected)return h=this,this.deselect_all(),a.each(c.core.selected,function(a,b){h.select_node(b,!1,!0)}),delete c.core.selected,this.set_state(c,d),!1;for(i in c)c.hasOwnProperty(i)&&"core"!==i&&-1===a.inArray(i,this.settings.plugins)&&delete c[i];if(a.isEmptyObject(c.core))return delete c.core,this.set_state(c,d),!1}return a.isEmptyObject(c)?(c=null,d&&d.call(this),this.trigger("set_state"),!1):!0}return!1},refresh:function(b,c){this._data.core.state=c===!0?{}:this.get_state(),c&&a.isFunction(c)&&(this._data.core.state=c.call(this,this._data.core.state)),this._cnt=0,this._model.data={},this._model.data[a.jstree.root]={id:a.jstree.root,parent:null,parents:[],children:[],children_d:[],state:{loaded:!1}},this._data.core.selected=[],this._data.core.last_clicked=null,this._data.core.focused=null;var d=this.get_container_ul()[0].className;b||(this.element.html("<ul class='"+d+"' role='group'><li class='jstree-initial-node jstree-loading jstree-leaf jstree-last' role='treeitem' id='j"+this._id+"_loading'><i class='jstree-icon jstree-ocl'></i><a class='jstree-anchor' href='#'><i class='jstree-icon jstree-themeicon-hidden'></i>"+this.get_string("Loading ...")+"</a></li></ul>"),this.element.attr("aria-activedescendant","j"+this._id+"_loading")),this.load_node(a.jstree.root,function(b,c){c&&(this.get_container_ul()[0].className=d,this._firstChild(this.get_container_ul()[0])&&this.element.attr("aria-activedescendant",this._firstChild(this.get_container_ul()[0]).id),this.set_state(a.extend(!0,{},this._data.core.state),function(){this.trigger("refresh")})),this._data.core.state=null})},refresh_node:function(b){if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;var c=[],d=[],e=this._data.core.selected.concat([]);d.push(b.id),b.state.opened===!0&&c.push(b.id),this.get_node(b,!0).find(".jstree-open").each(function(){d.push(this.id),c.push(this.id)}),this._load_nodes(d,a.proxy(function(a){this.open_node(c,!1,0),this.select_node(e),this.trigger("refresh_node",{node:b,nodes:a})},this),!1,!0)},set_id:function(b,c){if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;var d,e,f=this._model.data,g=b.id;for(c=c.toString(),f[b.parent].children[a.inArray(b.id,f[b.parent].children)]=c,d=0,e=b.parents.length;e>d;d++)f[b.parents[d]].children_d[a.inArray(b.id,f[b.parents[d]].children_d)]=c;for(d=0,e=b.children.length;e>d;d++)f[b.children[d]].parent=c;for(d=0,e=b.children_d.length;e>d;d++)f[b.children_d[d]].parents[a.inArray(b.id,f[b.children_d[d]].parents)]=c;return d=a.inArray(b.id,this._data.core.selected),-1!==d&&(this._data.core.selected[d]=c),d=this.get_node(b.id,!0),d&&(d.attr("id",c),this.element.attr("aria-activedescendant")===b.id&&this.element.attr("aria-activedescendant",c)),delete f[b.id],b.id=c,b.li_attr.id=c,f[c]=b,this.trigger("set_id",{node:b,"new":b.id,old:g}),!0},get_text:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.text:!1},set_text:function(b,c){var d,e;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.set_text(b[d],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(b.text=c,this.get_node(b,!0).length&&this.redraw_node(b.id),this.trigger("set_text",{obj:b,text:c}),!0):!1},get_json:function(b,c,d){if(b=this.get_node(b||a.jstree.root),!b)return!1;c&&c.flat&&!d&&(d=[]);var e={id:b.id,text:b.text,icon:this.get_icon(b),li_attr:a.extend(!0,{},b.li_attr),a_attr:a.extend(!0,{},b.a_attr),state:{},data:c&&c.no_data?!1:a.extend(!0,{},b.data)},f,g;if(c&&c.flat?e.parent=b.parent:e.children=[],c&&c.no_state)delete e.state;else for(f in b.state)b.state.hasOwnProperty(f)&&(e.state[f]=b.state[f]);if(c&&c.no_li_attr&&delete e.li_attr,c&&c.no_a_attr&&delete e.a_attr,c&&c.no_id&&(delete e.id,e.li_attr&&e.li_attr.id&&delete e.li_attr.id,e.a_attr&&e.a_attr.id&&delete e.a_attr.id),c&&c.flat&&b.id!==a.jstree.root&&d.push(e),!c||!c.no_children)for(f=0,g=b.children.length;g>f;f++)c&&c.flat?this.get_json(b.children[f],c,d):e.children.push(this.get_json(b.children[f],c));return c&&c.flat?d:b.id===a.jstree.root?e.children:e},create_node:function(c,d,e,f,g){if(null===c&&(c=a.jstree.root),c=this.get_node(c),!c)return!1;if(e=e===b?"last":e,!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(c))return this.load_node(c,function(){this.create_node(c,d,e,f,!0)});d||(d={text:this.get_string("New node")}),"string"==typeof d&&(d={text:d}),d.text===b&&(d.text=this.get_string("New node"));var h,i,j,k;switch(c.id===a.jstree.root&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":h=this.get_node(c.parent),e=a.inArray(c.id,h.children),c=h;break;case"after":h=this.get_node(c.parent),e=a.inArray(c.id,h.children)+1,c=h;break;case"inside":case"first":e=0;break;case"last":e=c.children.length;break;default:e||(e=0)}if(e>c.children.length&&(e=c.children.length),d.id||(d.id=!0),!this.check("create_node",d,c,e))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(d.id===!0&&delete d.id,d=this._parse_model_from_json(d,c.id,c.parents.concat()),!d)return!1;for(h=this.get_node(d),i=[],i.push(d),i=i.concat(h.children_d),this.trigger("model",{nodes:i,parent:c.id}),c.children_d=c.children_d.concat(i),j=0,k=c.parents.length;k>j;j++)this._model.data[c.parents[j]].children_d=this._model.data[c.parents[j]].children_d.concat(i);for(d=h,h=[],j=0,k=c.children.length;k>j;j++)h[j>=e?j+1:j]=c.children[j];return h[e]=d.id,c.children=h,this.redraw_node(c,!0),f&&f.call(this,this.get_node(d)),this.trigger("create_node",{node:this.get_node(d),parent:c.id,position:e}),d.id},rename_node:function(b,c){var d,e,f;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.rename_node(b[d],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(f=b.text,this.check("rename_node",b,this.get_parent(b),c)?(this.set_text(b,c),this.trigger("rename_node",{node:b,text:c,old:f}),!0):(this.settings.core.error.call(this,this._data.core.last_error),!1)):!1},delete_node:function(b){var c,d,e,f,g,h,i,j,k,l,m,n;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.delete_node(b[c]);return!0}if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;if(e=this.get_node(b.parent),f=a.inArray(b.id,e.children),l=!1,!this.check("delete_node",b,e,f))return this.settings.core.error.call(this,this._data.core.last_error),!1;for(-1!==f&&(e.children=a.vakata.array_remove(e.children,f)),g=b.children_d.concat([]),g.push(b.id),h=0,i=b.parents.length;i>h;h++)this._model.data[b.parents[h]].children_d=a.vakata.array_filter(this._model.data[b.parents[h]].children_d,function(b){return-1===a.inArray(b,g)});for(j=0,k=g.length;k>j;j++)if(this._model.data[g[j]].state.selected){l=!0;break}for(l&&(this._data.core.selected=a.vakata.array_filter(this._data.core.selected,function(b){return-1===a.inArray(b,g)})),this.trigger("delete_node",{node:b,parent:e.id}),l&&this.trigger("changed",{action:"delete_node",node:b,selected:this._data.core.selected,parent:e.id}),j=0,k=g.length;k>j;j++)delete this._model.data[g[j]];return-1!==a.inArray(this._data.core.focused,g)&&(this._data.core.focused=null,m=this.element[0].scrollTop,n=this.element[0].scrollLeft,e.id===a.jstree.root?this._model.data[a.jstree.root].children[0]&&this.get_node(this._model.data[a.jstree.root].children[0],!0).children(".jstree-anchor").focus():this.get_node(e,!0).children(".jstree-anchor").focus(),this.element[0].scrollTop=m,this.element[0].scrollLeft=n),this.redraw_node(e,!0),!0},check:function(b,c,d,e,f){c=c&&c.id?c:this.get_node(c),d=d&&d.id?d:this.get_node(d);var g=b.match(/^move_node|copy_node|create_node$/i)?d:c,h=this.settings.core.check_callback;return"move_node"!==b&&"copy_node"!==b||f&&f.is_multi||c.id!==d.id&&("move_node"!==b||a.inArray(c.id,d.children)!==e)&&-1===a.inArray(d.id,c.children_d)?(g&&g.data&&(g=g.data),g&&g.functions&&(g.functions[b]===!1||g.functions[b]===!0)?(g.functions[b]===!1&&(this._data.core.last_error={error:"check",plugin:"core",id:"core_02",reason:"Node data prevents function: "+b,data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})}),g.functions[b]):h===!1||a.isFunction(h)&&h.call(this,b,c,d,e,f)===!1||h&&h[b]===!1?(this._data.core.last_error={error:"check",plugin:"core",id:"core_03",reason:"User config for core.check_callback prevents function: "+b,data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})},!1):!0):(this._data.core.last_error={error:"check",plugin:"core",id:"core_01",reason:"Moving parent inside child",data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})},!1)},last_error:function(){return this._data.core.last_error},move_node:function(c,d,e,f,g,h,i){var j,k,l,m,n,o,p,q,r,s,t,u,v,w;if(d=this.get_node(d),e=e===b?0:e,!d)return!1;if(!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(d))return this.load_node(d,function(){this.move_node(c,d,e,f,!0,!1,i)});if(a.isArray(c)){if(1!==c.length){for(j=0,k=c.length;k>j;j++)(r=this.move_node(c[j],d,e,f,g,!1,i))&&(d=r,e="after");return this.redraw(),!0}c=c[0]}if(c=c&&c.id?c:this.get_node(c),!c||c.id===a.jstree.root)return!1;if(l=(c.parent||a.jstree.root).toString(),n=e.toString().match(/^(before|after)$/)&&d.id!==a.jstree.root?this.get_node(d.parent):d,o=i?i:this._model.data[c.id]?this:a.jstree.reference(c.id),p=!o||!o._id||this._id!==o._id,m=o&&o._id&&l&&o._model.data[l]&&o._model.data[l].children?a.inArray(c.id,o._model.data[l].children):-1,o&&o._id&&(c=o._model.data[c.id]),p)return(r=this.copy_node(c,d,e,f,g,!1,i))?(o&&o.delete_node(c),r):!1;switch(d.id===a.jstree.root&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":e=a.inArray(d.id,n.children);break;case"after":e=a.inArray(d.id,n.children)+1;break;case"inside":case"first":e=0;break;case"last":e=n.children.length;break;default:e||(e=0)}if(e>n.children.length&&(e=n.children.length),!this.check("move_node",c,n,e,{core:!0,origin:i,is_multi:o&&o._id&&o._id!==this._id,is_foreign:!o||!o._id}))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(c.parent===n.id){for(q=n.children.concat(),r=a.inArray(c.id,q),-1!==r&&(q=a.vakata.array_remove(q,r),e>r&&e--),r=[],s=0,t=q.length;t>s;s++)r[s>=e?s+1:s]=q[s];r[e]=c.id,n.children=r,this._node_changed(n.id),this.redraw(n.id===a.jstree.root)}else{for(r=c.children_d.concat(),r.push(c.id),s=0,t=c.parents.length;t>s;s++){for(q=[],w=o._model.data[c.parents[s]].children_d,u=0,v=w.length;v>u;u++)-1===a.inArray(w[u],r)&&q.push(w[u]);o._model.data[c.parents[s]].children_d=q}for(o._model.data[l].children=a.vakata.array_remove_item(o._model.data[l].children,c.id),s=0,t=n.parents.length;t>s;s++)this._model.data[n.parents[s]].children_d=this._model.data[n.parents[s]].children_d.concat(r);for(q=[],s=0,t=n.children.length;t>s;s++)q[s>=e?s+1:s]=n.children[s];for(q[e]=c.id,n.children=q,n.children_d.push(c.id),n.children_d=n.children_d.concat(c.children_d),c.parent=n.id,r=n.parents.concat(),r.unshift(n.id),w=c.parents.length,c.parents=r,r=r.concat(),s=0,t=c.children_d.length;t>s;s++)this._model.data[c.children_d[s]].parents=this._model.data[c.children_d[s]].parents.slice(0,-1*w),Array.prototype.push.apply(this._model.data[c.children_d[s]].parents,r);(l===a.jstree.root||n.id===a.jstree.root)&&(this._model.force_full_redraw=!0),this._model.force_full_redraw||(this._node_changed(l),this._node_changed(n.id)),h||this.redraw()}return f&&f.call(this,c,n,e),this.trigger("move_node",{node:c,parent:n.id,position:e,old_parent:l,old_position:m,is_multi:o&&o._id&&o._id!==this._id,is_foreign:!o||!o._id,old_instance:o,new_instance:this}),c.id},copy_node:function(c,d,e,f,g,h,i){var j,k,l,m,n,o,p,q,r,s,t;if(d=this.get_node(d),e=e===b?0:e,!d)return!1;if(!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(d))return this.load_node(d,function(){this.copy_node(c,d,e,f,!0,!1,i)});if(a.isArray(c)){if(1!==c.length){for(j=0,k=c.length;k>j;j++)(m=this.copy_node(c[j],d,e,f,g,!0,i))&&(d=m,e="after");return this.redraw(),!0}c=c[0]}if(c=c&&c.id?c:this.get_node(c),!c||c.id===a.jstree.root)return!1;switch(q=(c.parent||a.jstree.root).toString(),r=e.toString().match(/^(before|after)$/)&&d.id!==a.jstree.root?this.get_node(d.parent):d,s=i?i:this._model.data[c.id]?this:a.jstree.reference(c.id),t=!s||!s._id||this._id!==s._id,s&&s._id&&(c=s._model.data[c.id]),d.id===a.jstree.root&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":e=a.inArray(d.id,r.children);break;case"after":e=a.inArray(d.id,r.children)+1;break;case"inside":case"first":e=0;break;case"last":e=r.children.length;break;default:e||(e=0)}if(e>r.children.length&&(e=r.children.length),!this.check("copy_node",c,r,e,{core:!0,origin:i,is_multi:s&&s._id&&s._id!==this._id,is_foreign:!s||!s._id}))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(p=s?s.get_json(c,{no_id:!0,no_data:!0,no_state:!0}):c,!p)return!1;if(p.id===!0&&delete p.id,p=this._parse_model_from_json(p,r.id,r.parents.concat()),!p)return!1;for(m=this.get_node(p),c&&c.state&&c.state.loaded===!1&&(m.state.loaded=!1),l=[],l.push(p),l=l.concat(m.children_d),this.trigger("model",{nodes:l,parent:r.id}),n=0,o=r.parents.length;o>n;n++)this._model.data[r.parents[n]].children_d=this._model.data[r.parents[n]].children_d.concat(l);for(l=[],n=0,o=r.children.length;o>n;n++)l[n>=e?n+1:n]=r.children[n];return l[e]=m.id,r.children=l,r.children_d.push(m.id),r.children_d=r.children_d.concat(m.children_d),r.id===a.jstree.root&&(this._model.force_full_redraw=!0),this._model.force_full_redraw||this._node_changed(r.id),h||this.redraw(r.id===a.jstree.root),f&&f.call(this,m,r,e),this.trigger("copy_node",{node:m,original:c,parent:r.id,position:e,old_parent:q,old_position:s&&s._id&&q&&s._model.data[q]&&s._model.data[q].children?a.inArray(c.id,s._model.data[q].children):-1,is_multi:s&&s._id&&s._id!==this._id,is_foreign:!s||!s._id,old_instance:s,new_instance:this}),m.id},cut:function(b){if(b||(b=this._data.core.selected.concat()),a.isArray(b)||(b=[b]),!b.length)return!1;var c=[],g,h,i;for(h=0,i=b.length;i>h;h++)g=this.get_node(b[h]),g&&g.id&&g.id!==a.jstree.root&&c.push(g);return c.length?(d=c,f=this,e="move_node",void this.trigger("cut",{node:b})):!1},copy:function(b){if(b||(b=this._data.core.selected.concat()),a.isArray(b)||(b=[b]),!b.length)return!1;var c=[],g,h,i;for(h=0,i=b.length;i>h;h++)g=this.get_node(b[h]),g&&g.id&&g.id!==a.jstree.root&&c.push(g);return c.length?(d=c,f=this,e="copy_node",void this.trigger("copy",{node:b})):!1},get_buffer:function(){return{mode:e,node:d,inst:f}},can_paste:function(){return e!==!1&&d!==!1},paste:function(a,b){return a=this.get_node(a),a&&e&&e.match(/^(copy_node|move_node)$/)&&d?(this[e](d,a,b,!1,!1,!1,f)&&this.trigger("paste",{parent:a.id,node:d,mode:e}),d=!1,e=!1,void(f=!1)):!1},clear_buffer:function(){d=!1,e=!1,f=!1,this.trigger("clear_buffer")},edit:function(b,c,d){var e,f,g,h,j,k,l,m,n,o=!1;return(b=this.get_node(b))?this.settings.core.check_callback===!1?(this._data.core.last_error={error:"check",plugin:"core",id:"core_07",reason:"Could not edit node because of check_callback"},this.settings.core.error.call(this,this._data.core.last_error),!1):(n=b,c="string"==typeof c?c:b.text,this.set_text(b,""),b=this._open_to(b),n.text=c,e=this._data.core.rtl,f=this.element.width(),this._data.core.focused=n.id,g=b.children(".jstree-anchor").focus(),h=a("<span>"),j=c,k=a("<div />",{css:{position:"absolute",top:"-200px",left:e?"0px":"-1000px",visibility:"hidden"}}).appendTo("body"),l=a("<input />",{value:j,"class":"jstree-rename-input",css:{padding:"0",border:"1px solid silver","box-sizing":"border-box",display:"inline-block",height:this._data.core.li_height+"px",lineHeight:this._data.core.li_height+"px",width:"150px"},blur:a.proxy(function(c){c.stopImmediatePropagation(),c.preventDefault();var e=h.children(".jstree-rename-input"),f=e.val(),i=this.settings.core.force_text,m;""===f&&(f=j),k.remove(),h.replaceWith(g),h.remove(),j=i?j:a("<div></div>").append(a.parseHTML(j)).html(),this.set_text(b,j),m=!!this.rename_node(b,i?a("<div></div>").text(f).text():a("<div></div>").append(a.parseHTML(f)).html()),m||this.set_text(b,j),this._data.core.focused=n.id,setTimeout(a.proxy(function(){var a=this.get_node(n.id,!0);a.length&&(this._data.core.focused=n.id,a.children(".jstree-anchor").focus())},this),0),d&&d.call(this,n,m,o),l=null},this),keydown:function(a){var b=a.which;27===b&&(o=!0,this.value=j),(27===b||13===b||37===b||38===b||39===b||40===b||32===b)&&a.stopImmediatePropagation(),(27===b||13===b)&&(a.preventDefault(),this.blur())},click:function(a){a.stopImmediatePropagation()},mousedown:function(a){a.stopImmediatePropagation()},keyup:function(a){l.width(Math.min(k.text("pW"+this.value).width(),f))},keypress:function(a){return 13===a.which?!1:void 0}}),m={fontFamily:g.css("fontFamily")||"",fontSize:g.css("fontSize")||"",
4
- fontWeight:g.css("fontWeight")||"",fontStyle:g.css("fontStyle")||"",fontStretch:g.css("fontStretch")||"",fontVariant:g.css("fontVariant")||"",letterSpacing:g.css("letterSpacing")||"",wordSpacing:g.css("wordSpacing")||""},h.attr("class",g.attr("class")).append(g.contents().clone()).append(l),g.replaceWith(h),k.css(m),l.css(m).width(Math.min(k.text("pW"+l[0].value).width(),f))[0].select(),void a(i).one("mousedown.jstree touchstart.jstree dnd_start.vakata",function(b){l&&b.target!==l&&a(l).blur()})):!1},set_theme:function(b,c){if(!b)return!1;if(c===!0){var d=this.settings.core.themes.dir;d||(d=a.jstree.path+"/themes"),c=d+"/"+b+"/style.css"}c&&-1===a.inArray(c,g)&&(a("head").append('<link rel="stylesheet" href="'+c+'" type="text/css" />'),g.push(c)),this._data.core.themes.name&&this.element.removeClass("jstree-"+this._data.core.themes.name),this._data.core.themes.name=b,this.element.addClass("jstree-"+b),this.element[this.settings.core.themes.responsive?"addClass":"removeClass"]("jstree-"+b+"-responsive"),this.trigger("set_theme",{theme:b})},get_theme:function(){return this._data.core.themes.name},set_theme_variant:function(a){this._data.core.themes.variant&&this.element.removeClass("jstree-"+this._data.core.themes.name+"-"+this._data.core.themes.variant),this._data.core.themes.variant=a,a&&this.element.addClass("jstree-"+this._data.core.themes.name+"-"+this._data.core.themes.variant)},get_theme_variant:function(){return this._data.core.themes.variant},show_stripes:function(){this._data.core.themes.stripes=!0,this.get_container_ul().addClass("jstree-striped"),this.trigger("show_stripes")},hide_stripes:function(){this._data.core.themes.stripes=!1,this.get_container_ul().removeClass("jstree-striped"),this.trigger("hide_stripes")},toggle_stripes:function(){this._data.core.themes.stripes?this.hide_stripes():this.show_stripes()},show_dots:function(){this._data.core.themes.dots=!0,this.get_container_ul().removeClass("jstree-no-dots"),this.trigger("show_dots")},hide_dots:function(){this._data.core.themes.dots=!1,this.get_container_ul().addClass("jstree-no-dots"),this.trigger("hide_dots")},toggle_dots:function(){this._data.core.themes.dots?this.hide_dots():this.show_dots()},show_icons:function(){this._data.core.themes.icons=!0,this.get_container_ul().removeClass("jstree-no-icons"),this.trigger("show_icons")},hide_icons:function(){this._data.core.themes.icons=!1,this.get_container_ul().addClass("jstree-no-icons"),this.trigger("hide_icons")},toggle_icons:function(){this._data.core.themes.icons?this.hide_icons():this.show_icons()},show_ellipsis:function(){this._data.core.themes.ellipsis=!0,this.get_container_ul().addClass("jstree-ellipsis"),this.trigger("show_ellipsis")},hide_ellipsis:function(){this._data.core.themes.ellipsis=!1,this.get_container_ul().removeClass("jstree-ellipsis"),this.trigger("hide_ellipsis")},toggle_ellipsis:function(){this._data.core.themes.ellipsis?this.hide_ellipsis():this.show_ellipsis()},set_icon:function(c,d){var e,f,g,h;if(a.isArray(c)){for(c=c.slice(),e=0,f=c.length;f>e;e++)this.set_icon(c[e],d);return!0}return c=this.get_node(c),c&&c.id!==a.jstree.root?(h=c.icon,c.icon=d===!0||null===d||d===b||""===d?!0:d,g=this.get_node(c,!0).children(".jstree-anchor").children(".jstree-themeicon"),d===!1?this.hide_icon(c):d===!0||null===d||d===b||""===d?(g.removeClass("jstree-themeicon-custom "+h).css("background","").removeAttr("rel"),h===!1&&this.show_icon(c)):-1===d.indexOf("/")&&-1===d.indexOf(".")?(g.removeClass(h).css("background",""),g.addClass(d+" jstree-themeicon-custom").attr("rel",d),h===!1&&this.show_icon(c)):(g.removeClass(h).css("background",""),g.addClass("jstree-themeicon-custom").css("background","url('"+d+"') center center no-repeat").attr("rel",d),h===!1&&this.show_icon(c)),!0):!1},get_icon:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.icon:!1},hide_icon:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.hide_icon(b[c]);return!0}return b=this.get_node(b),b&&b!==a.jstree.root?(b.icon=!1,this.get_node(b,!0).children(".jstree-anchor").children(".jstree-themeicon").addClass("jstree-themeicon-hidden"),!0):!1},show_icon:function(b){var c,d,e;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.show_icon(b[c]);return!0}return b=this.get_node(b),b&&b!==a.jstree.root?(e=this.get_node(b,!0),b.icon=e.length?e.children(".jstree-anchor").children(".jstree-themeicon").attr("rel"):!0,b.icon||(b.icon=!0),e.children(".jstree-anchor").children(".jstree-themeicon").removeClass("jstree-themeicon-hidden"),!0):!1}},a.vakata={},a.vakata.attributes=function(b,c){b=a(b)[0];var d=c?{}:[];return b&&b.attributes&&a.each(b.attributes,function(b,e){-1===a.inArray(e.name.toLowerCase(),["style","contenteditable","hasfocus","tabindex"])&&null!==e.value&&""!==a.trim(e.value)&&(c?d[e.name]=e.value:d.push(e.name))}),d},a.vakata.array_unique=function(a){var c=[],d,e,f,g={};for(d=0,f=a.length;f>d;d++)g[a[d]]===b&&(c.push(a[d]),g[a[d]]=!0);return c},a.vakata.array_remove=function(a,b){return a.splice(b,1),a},a.vakata.array_remove_item=function(b,c){var d=a.inArray(c,b);return-1!==d?a.vakata.array_remove(b,d):b},a.vakata.array_filter=function(a,b,c,d,e){if(a.filter)return a.filter(b,c);d=[];for(e in a)~~e+""==e+""&&e>=0&&b.call(c,a[e],+e,a)&&d.push(a[e]);return d},a.jstree.plugins.changed=function(a,b){var c=[];this.trigger=function(a,d){var e,f;if(d||(d={}),"changed"===a.replace(".jstree","")){d.changed={selected:[],deselected:[]};var g={};for(e=0,f=c.length;f>e;e++)g[c[e]]=1;for(e=0,f=d.selected.length;f>e;e++)g[d.selected[e]]?g[d.selected[e]]=2:d.changed.selected.push(d.selected[e]);for(e=0,f=c.length;f>e;e++)1===g[c[e]]&&d.changed.deselected.push(c[e]);c=d.selected.slice()}b.trigger.call(this,a,d)},this.refresh=function(a,d){return c=[],b.refresh.apply(this,arguments)}};var j=i.createElement("I");j.className="jstree-icon jstree-checkbox",j.setAttribute("role","presentation"),a.jstree.defaults.checkbox={visible:!0,three_state:!0,whole_node:!0,keep_selected_style:!0,cascade:"",tie_selection:!0},a.jstree.plugins.checkbox=function(c,d){this.bind=function(){d.bind.call(this),this._data.checkbox.uto=!1,this._data.checkbox.selected=[],this.settings.checkbox.three_state&&(this.settings.checkbox.cascade="up+down+undetermined"),this.element.on("init.jstree",a.proxy(function(){this._data.checkbox.visible=this.settings.checkbox.visible,this.settings.checkbox.keep_selected_style||this.element.addClass("jstree-checkbox-no-clicked"),this.settings.checkbox.tie_selection&&this.element.addClass("jstree-checkbox-selection")},this)).on("loading.jstree",a.proxy(function(){this[this._data.checkbox.visible?"show_checkboxes":"hide_checkboxes"]()},this)),-1!==this.settings.checkbox.cascade.indexOf("undetermined")&&this.element.on("changed.jstree uncheck_node.jstree check_node.jstree uncheck_all.jstree check_all.jstree move_node.jstree copy_node.jstree redraw.jstree open_node.jstree",a.proxy(function(){this._data.checkbox.uto&&clearTimeout(this._data.checkbox.uto),this._data.checkbox.uto=setTimeout(a.proxy(this._undetermined,this),50)},this)),this.settings.checkbox.tie_selection||this.element.on("model.jstree",a.proxy(function(a,b){var c=this._model.data,d=c[b.parent],e=b.nodes,f,g;for(f=0,g=e.length;g>f;f++)c[e[f]].state.checked=c[e[f]].state.checked||c[e[f]].original&&c[e[f]].original.state&&c[e[f]].original.state.checked,c[e[f]].state.checked&&this._data.checkbox.selected.push(e[f])},this)),(-1!==this.settings.checkbox.cascade.indexOf("up")||-1!==this.settings.checkbox.cascade.indexOf("down"))&&this.element.on("model.jstree",a.proxy(function(b,c){var d=this._model.data,e=d[c.parent],f=c.nodes,g=[],h,i,j,k,l,m,n=this.settings.checkbox.cascade,o=this.settings.checkbox.tie_selection;if(-1!==n.indexOf("down"))if(e.state[o?"selected":"checked"]){for(i=0,j=f.length;j>i;i++)d[f[i]].state[o?"selected":"checked"]=!0;this._data[o?"core":"checkbox"].selected=this._data[o?"core":"checkbox"].selected.concat(f)}else for(i=0,j=f.length;j>i;i++)if(d[f[i]].state[o?"selected":"checked"]){for(k=0,l=d[f[i]].children_d.length;l>k;k++)d[d[f[i]].children_d[k]].state[o?"selected":"checked"]=!0;this._data[o?"core":"checkbox"].selected=this._data[o?"core":"checkbox"].selected.concat(d[f[i]].children_d)}if(-1!==n.indexOf("up")){for(i=0,j=e.children_d.length;j>i;i++)d[e.children_d[i]].children.length||g.push(d[e.children_d[i]].parent);for(g=a.vakata.array_unique(g),k=0,l=g.length;l>k;k++){e=d[g[k]];while(e&&e.id!==a.jstree.root){for(h=0,i=0,j=e.children.length;j>i;i++)h+=d[e.children[i]].state[o?"selected":"checked"];if(h!==j)break;e.state[o?"selected":"checked"]=!0,this._data[o?"core":"checkbox"].selected.push(e.id),m=this.get_node(e,!0),m&&m.length&&m.attr("aria-selected",!0).children(".jstree-anchor").addClass(o?"jstree-clicked":"jstree-checked"),e=this.get_node(e.parent)}}}this._data[o?"core":"checkbox"].selected=a.vakata.array_unique(this._data[o?"core":"checkbox"].selected)},this)).on(this.settings.checkbox.tie_selection?"select_node.jstree":"check_node.jstree",a.proxy(function(b,c){var d=c.node,e=this._model.data,f=this.get_node(d.parent),g=this.get_node(d,!0),h,i,j,k,l=this.settings.checkbox.cascade,m=this.settings.checkbox.tie_selection,n={},o=this._data[m?"core":"checkbox"].selected;for(h=0,i=o.length;i>h;h++)n[o[h]]=!0;if(-1!==l.indexOf("down"))for(h=0,i=d.children_d.length;i>h;h++)n[d.children_d[h]]=!0,k=e[d.children_d[h]],k.state[m?"selected":"checked"]=!0,k&&k.original&&k.original.state&&k.original.state.undetermined&&(k.original.state.undetermined=!1);if(-1!==l.indexOf("up"))while(f&&f.id!==a.jstree.root){for(j=0,h=0,i=f.children.length;i>h;h++)j+=e[f.children[h]].state[m?"selected":"checked"];if(j!==i)break;f.state[m?"selected":"checked"]=!0,n[f.id]=!0,k=this.get_node(f,!0),k&&k.length&&k.attr("aria-selected",!0).children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"),f=this.get_node(f.parent)}o=[];for(h in n)n.hasOwnProperty(h)&&o.push(h);this._data[m?"core":"checkbox"].selected=o,-1!==l.indexOf("down")&&g.length&&g.find(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked").parent().attr("aria-selected",!0)},this)).on(this.settings.checkbox.tie_selection?"deselect_all.jstree":"uncheck_all.jstree",a.proxy(function(b,c){var d=this.get_node(a.jstree.root),e=this._model.data,f,g,h;for(f=0,g=d.children_d.length;g>f;f++)h=e[d.children_d[f]],h&&h.original&&h.original.state&&h.original.state.undetermined&&(h.original.state.undetermined=!1)},this)).on(this.settings.checkbox.tie_selection?"deselect_node.jstree":"uncheck_node.jstree",a.proxy(function(b,c){var d=c.node,e=this.get_node(d,!0),f,g,h,i=this.settings.checkbox.cascade,j=this.settings.checkbox.tie_selection,k=this._data[j?"core":"checkbox"].selected,l={};if(d&&d.original&&d.original.state&&d.original.state.undetermined&&(d.original.state.undetermined=!1),-1!==i.indexOf("down"))for(f=0,g=d.children_d.length;g>f;f++)h=this._model.data[d.children_d[f]],h.state[j?"selected":"checked"]=!1,h&&h.original&&h.original.state&&h.original.state.undetermined&&(h.original.state.undetermined=!1);if(-1!==i.indexOf("up"))for(f=0,g=d.parents.length;g>f;f++)h=this._model.data[d.parents[f]],h.state[j?"selected":"checked"]=!1,h&&h.original&&h.original.state&&h.original.state.undetermined&&(h.original.state.undetermined=!1),h=this.get_node(d.parents[f],!0),h&&h.length&&h.attr("aria-selected",!1).children(".jstree-anchor").removeClass(j?"jstree-clicked":"jstree-checked");for(l={},f=0,g=k.length;g>f;f++)-1!==i.indexOf("down")&&-1!==a.inArray(k[f],d.children_d)||-1!==i.indexOf("up")&&-1!==a.inArray(k[f],d.parents)||(l[k[f]]=!0);k=[];for(f in l)l.hasOwnProperty(f)&&k.push(f);this._data[j?"core":"checkbox"].selected=k,-1!==i.indexOf("down")&&e.length&&e.find(".jstree-anchor").removeClass(j?"jstree-clicked":"jstree-checked").parent().attr("aria-selected",!1)},this)),-1!==this.settings.checkbox.cascade.indexOf("up")&&this.element.on("delete_node.jstree",a.proxy(function(b,c){var d=this.get_node(c.parent),e=this._model.data,f,g,h,i,j=this.settings.checkbox.tie_selection;while(d&&d.id!==a.jstree.root&&!d.state[j?"selected":"checked"]){for(h=0,f=0,g=d.children.length;g>f;f++)h+=e[d.children[f]].state[j?"selected":"checked"];if(!(g>0&&h===g))break;d.state[j?"selected":"checked"]=!0,this._data[j?"core":"checkbox"].selected.push(d.id),i=this.get_node(d,!0),i&&i.length&&i.attr("aria-selected",!0).children(".jstree-anchor").addClass(j?"jstree-clicked":"jstree-checked"),d=this.get_node(d.parent)}},this)).on("move_node.jstree",a.proxy(function(b,c){var d=c.is_multi,e=c.old_parent,f=this.get_node(c.parent),g=this._model.data,h,i,j,k,l,m=this.settings.checkbox.tie_selection;if(!d){h=this.get_node(e);while(h&&h.id!==a.jstree.root&&!h.state[m?"selected":"checked"]){for(i=0,j=0,k=h.children.length;k>j;j++)i+=g[h.children[j]].state[m?"selected":"checked"];if(!(k>0&&i===k))break;h.state[m?"selected":"checked"]=!0,this._data[m?"core":"checkbox"].selected.push(h.id),l=this.get_node(h,!0),l&&l.length&&l.attr("aria-selected",!0).children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"),h=this.get_node(h.parent)}}h=f;while(h&&h.id!==a.jstree.root){for(i=0,j=0,k=h.children.length;k>j;j++)i+=g[h.children[j]].state[m?"selected":"checked"];if(i===k)h.state[m?"selected":"checked"]||(h.state[m?"selected":"checked"]=!0,this._data[m?"core":"checkbox"].selected.push(h.id),l=this.get_node(h,!0),l&&l.length&&l.attr("aria-selected",!0).children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"));else{if(!h.state[m?"selected":"checked"])break;h.state[m?"selected":"checked"]=!1,this._data[m?"core":"checkbox"].selected=a.vakata.array_remove_item(this._data[m?"core":"checkbox"].selected,h.id),l=this.get_node(h,!0),l&&l.length&&l.attr("aria-selected",!1).children(".jstree-anchor").removeClass(m?"jstree-clicked":"jstree-checked")}h=this.get_node(h.parent)}},this))},this._undetermined=function(){if(null!==this.element){var c,d,e,f,g={},h=this._model.data,i=this.settings.checkbox.tie_selection,j=this._data[i?"core":"checkbox"].selected,k=[],l=this;for(c=0,d=j.length;d>c;c++)if(h[j[c]]&&h[j[c]].parents)for(e=0,f=h[j[c]].parents.length;f>e;e++){if(g[h[j[c]].parents[e]]!==b)break;h[j[c]].parents[e]!==a.jstree.root&&(g[h[j[c]].parents[e]]=!0,k.push(h[j[c]].parents[e]))}for(this.element.find(".jstree-closed").not(":has(.jstree-children)").each(function(){var i=l.get_node(this),j;if(i.state.loaded){for(c=0,d=i.children_d.length;d>c;c++)if(j=h[i.children_d[c]],!j.state.loaded&&j.original&&j.original.state&&j.original.state.undetermined&&j.original.state.undetermined===!0)for(g[j.id]===b&&j.id!==a.jstree.root&&(g[j.id]=!0,k.push(j.id)),e=0,f=j.parents.length;f>e;e++)g[j.parents[e]]===b&&j.parents[e]!==a.jstree.root&&(g[j.parents[e]]=!0,k.push(j.parents[e]))}else if(i.original&&i.original.state&&i.original.state.undetermined&&i.original.state.undetermined===!0)for(g[i.id]===b&&i.id!==a.jstree.root&&(g[i.id]=!0,k.push(i.id)),e=0,f=i.parents.length;f>e;e++)g[i.parents[e]]===b&&i.parents[e]!==a.jstree.root&&(g[i.parents[e]]=!0,k.push(i.parents[e]))}),this.element.find(".jstree-undetermined").removeClass("jstree-undetermined"),c=0,d=k.length;d>c;c++)h[k[c]].state[i?"selected":"checked"]||(j=this.get_node(k[c],!0),j&&j.length&&j.children(".jstree-anchor").children(".jstree-checkbox").addClass("jstree-undetermined"))}},this.redraw_node=function(b,c,e,f){if(b=d.redraw_node.apply(this,arguments)){var g,h,i=null,k=null;for(g=0,h=b.childNodes.length;h>g;g++)if(b.childNodes[g]&&b.childNodes[g].className&&-1!==b.childNodes[g].className.indexOf("jstree-anchor")){i=b.childNodes[g];break}i&&(!this.settings.checkbox.tie_selection&&this._model.data[b.id].state.checked&&(i.className+=" jstree-checked"),k=j.cloneNode(!1),this._model.data[b.id].state.checkbox_disabled&&(k.className+=" jstree-checkbox-disabled"),i.insertBefore(k,i.childNodes[0]))}return e||-1===this.settings.checkbox.cascade.indexOf("undetermined")||(this._data.checkbox.uto&&clearTimeout(this._data.checkbox.uto),this._data.checkbox.uto=setTimeout(a.proxy(this._undetermined,this),50)),b},this.show_checkboxes=function(){this._data.core.themes.checkboxes=!0,this.get_container_ul().removeClass("jstree-no-checkboxes")},this.hide_checkboxes=function(){this._data.core.themes.checkboxes=!1,this.get_container_ul().addClass("jstree-no-checkboxes")},this.toggle_checkboxes=function(){this._data.core.themes.checkboxes?this.hide_checkboxes():this.show_checkboxes()},this.is_undetermined=function(b){b=this.get_node(b);var c=this.settings.checkbox.cascade,d,e,f=this.settings.checkbox.tie_selection,g=this._data[f?"core":"checkbox"].selected,h=this._model.data;if(!b||b.state[f?"selected":"checked"]===!0||-1===c.indexOf("undetermined")||-1===c.indexOf("down")&&-1===c.indexOf("up"))return!1;if(!b.state.loaded&&b.original.state.undetermined===!0)return!0;for(d=0,e=b.children_d.length;e>d;d++)if(-1!==a.inArray(b.children_d[d],g)||!h[b.children_d[d]].state.loaded&&h[b.children_d[d]].original.state.undetermined)return!0;return!1},this.disable_checkbox=function(b){var c,d,e;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.disable_checkbox(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(e=this.get_node(b,!0),void(b.state.checkbox_disabled||(b.state.checkbox_disabled=!0,e&&e.length&&e.children(".jstree-anchor").children(".jstree-checkbox").addClass("jstree-checkbox-disabled"),this.trigger("disable_checkbox",{node:b})))):!1},this.enable_checkbox=function(b){var c,d,e;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.enable_checkbox(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(e=this.get_node(b,!0),void(b.state.checkbox_disabled&&(b.state.checkbox_disabled=!1,e&&e.length&&e.children(".jstree-anchor").children(".jstree-checkbox").removeClass("jstree-checkbox-disabled"),this.trigger("enable_checkbox",{node:b})))):!1},this.activate_node=function(b,c){return a(c.target).hasClass("jstree-checkbox-disabled")?!1:(this.settings.checkbox.tie_selection&&(this.settings.checkbox.whole_node||a(c.target).hasClass("jstree-checkbox"))&&(c.ctrlKey=!0),this.settings.checkbox.tie_selection||!this.settings.checkbox.whole_node&&!a(c.target).hasClass("jstree-checkbox")?d.activate_node.call(this,b,c):this.is_disabled(b)?!1:(this.is_checked(b)?this.uncheck_node(b,c):this.check_node(b,c),void this.trigger("activate_node",{node:this.get_node(b)})))},this.check_node=function(b,c){if(this.settings.checkbox.tie_selection)return this.select_node(b,!1,!0,c);var d,e,f,g;if(a.isArray(b)){for(b=b.slice(),e=0,f=b.length;f>e;e++)this.check_node(b[e],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(d=this.get_node(b,!0),void(b.state.checked||(b.state.checked=!0,this._data.checkbox.selected.push(b.id),d&&d.length&&d.children(".jstree-anchor").addClass("jstree-checked"),this.trigger("check_node",{node:b,selected:this._data.checkbox.selected,event:c})))):!1},this.uncheck_node=function(b,c){if(this.settings.checkbox.tie_selection)return this.deselect_node(b,!1,c);var d,e,f;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.uncheck_node(b[d],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(f=this.get_node(b,!0),void(b.state.checked&&(b.state.checked=!1,this._data.checkbox.selected=a.vakata.array_remove_item(this._data.checkbox.selected,b.id),f.length&&f.children(".jstree-anchor").removeClass("jstree-checked"),this.trigger("uncheck_node",{node:b,selected:this._data.checkbox.selected,event:c})))):!1},this.check_all=function(){if(this.settings.checkbox.tie_selection)return this.select_all();var b=this._data.checkbox.selected.concat([]),c,d;for(this._data.checkbox.selected=this._model.data[a.jstree.root].children_d.concat(),c=0,d=this._data.checkbox.selected.length;d>c;c++)this._model.data[this._data.checkbox.selected[c]]&&(this._model.data[this._data.checkbox.selected[c]].state.checked=!0);this.redraw(!0),this.trigger("check_all",{selected:this._data.checkbox.selected})},this.uncheck_all=function(){if(this.settings.checkbox.tie_selection)return this.deselect_all();var a=this._data.checkbox.selected.concat([]),b,c;for(b=0,c=this._data.checkbox.selected.length;c>b;b++)this._model.data[this._data.checkbox.selected[b]]&&(this._model.data[this._data.checkbox.selected[b]].state.checked=!1);this._data.checkbox.selected=[],this.element.find(".jstree-checked").removeClass("jstree-checked"),this.trigger("uncheck_all",{selected:this._data.checkbox.selected,node:a})},this.is_checked=function(b){return this.settings.checkbox.tie_selection?this.is_selected(b):(b=this.get_node(b),b&&b.id!==a.jstree.root?b.state.checked:!1)},this.get_checked=function(b){return this.settings.checkbox.tie_selection?this.get_selected(b):b?a.map(this._data.checkbox.selected,a.proxy(function(a){return this.get_node(a)},this)):this._data.checkbox.selected},this.get_top_checked=function(b){if(this.settings.checkbox.tie_selection)return this.get_top_selected(b);var c=this.get_checked(!0),d={},e,f,g,h;for(e=0,f=c.length;f>e;e++)d[c[e].id]=c[e];for(e=0,f=c.length;f>e;e++)for(g=0,h=c[e].children_d.length;h>g;g++)d[c[e].children_d[g]]&&delete d[c[e].children_d[g]];c=[];for(e in d)d.hasOwnProperty(e)&&c.push(e);return b?a.map(c,a.proxy(function(a){return this.get_node(a)},this)):c},this.get_bottom_checked=function(b){if(this.settings.checkbox.tie_selection)return this.get_bottom_selected(b);var c=this.get_checked(!0),d=[],e,f;for(e=0,f=c.length;f>e;e++)c[e].children.length||d.push(c[e].id);return b?a.map(d,a.proxy(function(a){return this.get_node(a)},this)):d},this.load_node=function(b,c){var e,f,g,h,i,j;if(!a.isArray(b)&&!this.settings.checkbox.tie_selection&&(j=this.get_node(b),j&&j.state.loaded))for(e=0,f=j.children_d.length;f>e;e++)this._model.data[j.children_d[e]].state.checked&&(i=!0,this._data.checkbox.selected=a.vakata.array_remove_item(this._data.checkbox.selected,j.children_d[e]));return d.load_node.apply(this,arguments)},this.get_state=function(){var a=d.get_state.apply(this,arguments);return this.settings.checkbox.tie_selection?a:(a.checkbox=this._data.checkbox.selected.slice(),a)},this.set_state=function(b,c){var e=d.set_state.apply(this,arguments);if(e&&b.checkbox){if(!this.settings.checkbox.tie_selection){this.uncheck_all();var f=this;a.each(b.checkbox,function(a,b){f.check_node(b)})}return delete b.checkbox,this.set_state(b,c),!1}return e},this.refresh=function(a,b){return this.settings.checkbox.tie_selection||(this._data.checkbox.selected=[]),d.refresh.apply(this,arguments)}},a.jstree.defaults.conditionalselect=function(){return!0},a.jstree.plugins.conditionalselect=function(a,b){this.activate_node=function(a,c){this.settings.conditionalselect.call(this,this.get_node(a),c)&&b.activate_node.call(this,a,c)}},a.jstree.defaults.contextmenu={select_node:!0,show_at_node:!0,items:function(b,c){return{create:{separator_before:!1,separator_after:!0,_disabled:!1,label:"Create",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.create_node(d,{},"last",function(a){setTimeout(function(){c.edit(a)},0)})}},rename:{separator_before:!1,separator_after:!1,_disabled:!1,label:"Rename",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.edit(d)}},remove:{separator_before:!1,icon:!1,separator_after:!1,_disabled:!1,label:"Delete",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.is_selected(d)?c.delete_node(c.get_selected()):c.delete_node(d)}},ccp:{separator_before:!0,icon:!1,separator_after:!1,label:"Edit",action:!1,submenu:{cut:{separator_before:!1,separator_after:!1,label:"Cut",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.is_selected(d)?c.cut(c.get_top_selected()):c.cut(d)}},copy:{separator_before:!1,icon:!1,separator_after:!1,label:"Copy",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.is_selected(d)?c.copy(c.get_top_selected()):c.copy(d)}},paste:{separator_before:!1,icon:!1,_disabled:function(b){return!a.jstree.reference(b.reference).can_paste()},separator_after:!1,label:"Paste",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.paste(d)}}}}}}},a.jstree.plugins.contextmenu=function(c,d){this.bind=function(){d.bind.call(this);var b=0,c=null,e,f;this.element.on("contextmenu.jstree",".jstree-anchor",a.proxy(function(a,d){"input"!==a.target.tagName.toLowerCase()&&(a.preventDefault(),b=a.ctrlKey?+new Date:0,(d||c)&&(b=+new Date+1e4),c&&clearTimeout(c),this.is_loading(a.currentTarget)||this.show_contextmenu(a.currentTarget,a.pageX,a.pageY,a))},this)).on("click.jstree",".jstree-anchor",a.proxy(function(c){this._data.contextmenu.visible&&(!b||+new Date-b>250)&&a.vakata.context.hide(),b=0},this)).on("touchstart.jstree",".jstree-anchor",function(b){b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(e=b.originalEvent.changedTouches[0].clientX,f=b.originalEvent.changedTouches[0].clientY,c=setTimeout(function(){a(b.currentTarget).trigger("contextmenu",!0)},750))}).on("touchmove.vakata.jstree",function(a){c&&a.originalEvent&&a.originalEvent.changedTouches&&a.originalEvent.changedTouches[0]&&(Math.abs(e-a.originalEvent.changedTouches[0].clientX)>50||Math.abs(f-a.originalEvent.changedTouches[0].clientY)>50)&&clearTimeout(c)}).on("touchend.vakata.jstree",function(a){c&&clearTimeout(c)}),a(i).on("context_hide.vakata.jstree",a.proxy(function(b,c){this._data.contextmenu.visible=!1,a(c.reference).removeClass("jstree-context")},this))},this.teardown=function(){this._data.contextmenu.visible&&a.vakata.context.hide(),d.teardown.call(this)},this.show_contextmenu=function(c,d,e,f){if(c=this.get_node(c),!c||c.id===a.jstree.root)return!1;var g=this.settings.contextmenu,h=this.get_node(c,!0),i=h.children(".jstree-anchor"),j=!1,k=!1;(g.show_at_node||d===b||e===b)&&(j=i.offset(),d=j.left,e=j.top+this._data.core.li_height),this.settings.contextmenu.select_node&&!this.is_selected(c)&&this.activate_node(c,f),k=g.items,a.isFunction(k)&&(k=k.call(this,c,a.proxy(function(a){this._show_contextmenu(c,d,e,a)},this))),a.isPlainObject(k)&&this._show_contextmenu(c,d,e,k)},this._show_contextmenu=function(b,c,d,e){var f=this.get_node(b,!0),g=f.children(".jstree-anchor");a(i).one("context_show.vakata.jstree",a.proxy(function(b,c){var d="jstree-contextmenu jstree-"+this.get_theme()+"-contextmenu";a(c.element).addClass(d),g.addClass("jstree-context")},this)),this._data.contextmenu.visible=!0,a.vakata.context.show(g,{x:c,y:d},e),this.trigger("show_contextmenu",{node:b,x:c,y:d})}},function(a){var b=!1,c={element:!1,reference:!1,position_x:0,position_y:0,items:[],html:"",is_visible:!1};a.vakata.context={settings:{hide_onmouseleave:0,icons:!0},_trigger:function(b){a(i).triggerHandler("context_"+b+".vakata",{reference:c.reference,element:c.element,position:{x:c.position_x,y:c.position_y}})},_execute:function(b){return b=c.items[b],b&&(!b._disabled||a.isFunction(b._disabled)&&!b._disabled({item:b,reference:c.reference,element:c.element}))&&b.action?b.action.call(null,{item:b,reference:c.reference,element:c.element,position:{x:c.position_x,y:c.position_y}}):!1},_parse:function(b,d){if(!b)return!1;d||(c.html="",c.items=[]);var e="",f=!1,g;return d&&(e+="<ul>"),a.each(b,function(b,d){return d?(c.items.push(d),!f&&d.separator_before&&(e+="<li class='vakata-context-separator'><a href='#' "+(a.vakata.context.settings.icons?"":'style="margin-left:0px;"')+">&#160;</a></li>"),f=!1,e+="<li class='"+(d._class||"")+(d._disabled===!0||a.isFunction(d._disabled)&&d._disabled({item:d,reference:c.reference,element:c.element})?" vakata-contextmenu-disabled ":"")+"' "+(d.shortcut?" data-shortcut='"+d.shortcut+"' ":"")+">",e+="<a href='#' rel='"+(c.items.length-1)+"' "+(d.title?"title='"+d.title+"'":"")+">",a.vakata.context.settings.icons&&(e+="<i ",d.icon&&(e+=-1!==d.icon.indexOf("/")||-1!==d.icon.indexOf(".")?" style='background:url(\""+d.icon+"\") center center no-repeat' ":" class='"+d.icon+"' "),e+="></i><span class='vakata-contextmenu-sep'>&#160;</span>"),e+=(a.isFunction(d.label)?d.label({item:b,reference:c.reference,element:c.element}):d.label)+(d.shortcut?' <span class="vakata-contextmenu-shortcut vakata-contextmenu-shortcut-'+d.shortcut+'">'+(d.shortcut_label||"")+"</span>":"")+"</a>",d.submenu&&(g=a.vakata.context._parse(d.submenu,!0),g&&(e+=g)),e+="</li>",void(d.separator_after&&(e+="<li class='vakata-context-separator'><a href='#' "+(a.vakata.context.settings.icons?"":'style="margin-left:0px;"')+">&#160;</a></li>",f=!0))):!0}),e=e.replace(/<li class\='vakata-context-separator'\><\/li\>$/,""),d&&(e+="</ul>"),d||(c.html=e,a.vakata.context._trigger("parse")),e.length>10?e:!1},_show_submenu:function(c){if(c=a(c),c.length&&c.children("ul").length){var d=c.children("ul"),e=c.offset().left,f=e+c.outerWidth(),g=c.offset().top,h=d.width(),i=d.height(),j=a(window).width()+a(window).scrollLeft(),k=a(window).height()+a(window).scrollTop();b?c[f-(h+10+c.outerWidth())<0?"addClass":"removeClass"]("vakata-context-left"):c[f+h>j&&e>j-f?"addClass":"removeClass"]("vakata-context-right"),g+i+10>k&&d.css("bottom","-1px"),c.hasClass("vakata-context-right")?h>e&&d.css("margin-right",e-h):h>j-f&&d.css("margin-left",j-f-h),d.show()}},show:function(d,e,f){var g,h,i,j,k,l,m,n,o=!0;switch(c.element&&c.element.length&&c.element.width(""),o){case!e&&!d:return!1;case!!e&&!!d:c.reference=d,c.position_x=e.x,c.position_y=e.y;break;case!e&&!!d:c.reference=d,g=d.offset(),c.position_x=g.left+d.outerHeight(),c.position_y=g.top;break;case!!e&&!d:c.position_x=e.x,c.position_y=e.y}d&&!f&&a(d).data("vakata_contextmenu")&&(f=a(d).data("vakata_contextmenu")),a.vakata.context._parse(f)&&c.element.html(c.html),c.items.length&&(c.element.appendTo("body"),h=c.element,i=c.position_x,j=c.position_y,k=h.width(),l=h.height(),m=a(window).width()+a(window).scrollLeft(),n=a(window).height()+a(window).scrollTop(),b&&(i-=h.outerWidth()-a(d).outerWidth(),i<a(window).scrollLeft()+20&&(i=a(window).scrollLeft()+20)),i+k+20>m&&(i=m-(k+20)),j+l+20>n&&(j=n-(l+20)),c.element.css({left:i,top:j}).show().find("a").first().focus().parent().addClass("vakata-context-hover"),c.is_visible=!0,a.vakata.context._trigger("show"))},hide:function(){c.is_visible&&(c.element.hide().find("ul").hide().end().find(":focus").blur().end().detach(),c.is_visible=!1,a.vakata.context._trigger("hide"))}},a(function(){b="rtl"===a("body").css("direction");var d=!1;c.element=a("<ul class='vakata-context'></ul>"),c.element.on("mouseenter","li",function(b){b.stopImmediatePropagation(),a.contains(this,b.relatedTarget)||(d&&clearTimeout(d),c.element.find(".vakata-context-hover").removeClass("vakata-context-hover").end(),a(this).siblings().find("ul").hide().end().end().parentsUntil(".vakata-context","li").addBack().addClass("vakata-context-hover"),a.vakata.context._show_submenu(this))}).on("mouseleave","li",function(b){a.contains(this,b.relatedTarget)||a(this).find(".vakata-context-hover").addBack().removeClass("vakata-context-hover")}).on("mouseleave",function(b){a(this).find(".vakata-context-hover").removeClass("vakata-context-hover"),a.vakata.context.settings.hide_onmouseleave&&(d=setTimeout(function(b){return function(){a.vakata.context.hide()}}(this),a.vakata.context.settings.hide_onmouseleave))}).on("click","a",function(b){b.preventDefault(),a(this).blur().parent().hasClass("vakata-context-disabled")||a.vakata.context._execute(a(this).attr("rel"))===!1||a.vakata.context.hide()}).on("keydown","a",function(b){var d=null;switch(b.which){case 13:case 32:b.type="click",b.preventDefault(),a(b.currentTarget).trigger(b);break;case 37:c.is_visible&&(c.element.find(".vakata-context-hover").last().closest("li").first().find("ul").hide().find(".vakata-context-hover").removeClass("vakata-context-hover").end().end().children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 38:c.is_visible&&(d=c.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").prevAll("li:not(.vakata-context-separator)").first(),
5
- d.length||(d=c.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").last()),d.addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 39:c.is_visible&&(c.element.find(".vakata-context-hover").last().children("ul").show().children("li:not(.vakata-context-separator)").removeClass("vakata-context-hover").first().addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 40:c.is_visible&&(d=c.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").nextAll("li:not(.vakata-context-separator)").first(),d.length||(d=c.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").first()),d.addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 27:a.vakata.context.hide(),b.preventDefault()}}).on("keydown",function(a){a.preventDefault();var b=c.element.find(".vakata-contextmenu-shortcut-"+a.which).parent();b.parent().not(".vakata-context-disabled")&&b.click()}),a(i).on("mousedown.vakata.jstree",function(b){c.is_visible&&!a.contains(c.element[0],b.target)&&a.vakata.context.hide()}).on("context_show.vakata.jstree",function(a,d){c.element.find("li:has(ul)").children("a").addClass("vakata-context-parent"),b&&c.element.addClass("vakata-context-rtl").css("direction","rtl"),c.element.find("ul").hide().end()})})}(a),a.jstree.defaults.dnd={copy:!0,open_timeout:500,is_draggable:!0,check_while_dragging:!0,always_copy:!1,inside_pos:0,drag_selection:!0,touch:!0,large_drop_target:!1,large_drag_target:!1,use_html5:!1};var k,l;a.jstree.plugins.dnd=function(b,c){this.init=function(a,b){c.init.call(this,a,b),this.settings.dnd.use_html5=this.settings.dnd.use_html5&&"draggable"in i.createElement("span")},this.bind=function(){c.bind.call(this),this.element.on(this.settings.dnd.use_html5?"dragstart.jstree":"mousedown.jstree touchstart.jstree",this.settings.dnd.large_drag_target?".jstree-node":".jstree-anchor",a.proxy(function(b){if(this.settings.dnd.large_drag_target&&a(b.target).closest(".jstree-node")[0]!==b.currentTarget)return!0;if("touchstart"===b.type&&(!this.settings.dnd.touch||"selected"===this.settings.dnd.touch&&!a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").hasClass("jstree-clicked")))return!0;var c=this.get_node(b.target),d=this.is_selected(c)&&this.settings.dnd.drag_selection?this.get_top_selected().length:1,e=d>1?d+" "+this.get_string("nodes"):this.get_text(b.currentTarget);if(this.settings.core.force_text&&(e=a.vakata.html.escape(e)),c&&c.id&&c.id!==a.jstree.root&&(1===b.which||"touchstart"===b.type||"dragstart"===b.type)&&(this.settings.dnd.is_draggable===!0||a.isFunction(this.settings.dnd.is_draggable)&&this.settings.dnd.is_draggable.call(this,d>1?this.get_top_selected(!0):[c],b))){if(k={jstree:!0,origin:this,obj:this.get_node(c,!0),nodes:d>1?this.get_top_selected():[c.id]},l=b.currentTarget,!this.settings.dnd.use_html5)return this.element.trigger("mousedown.jstree"),a.vakata.dnd.start(b,k,'<div id="jstree-dnd" class="jstree-'+this.get_theme()+" jstree-"+this.get_theme()+"-"+this.get_theme_variant()+" "+(this.settings.core.themes.responsive?" jstree-dnd-responsive":"")+'"><i class="jstree-icon jstree-er"></i>'+e+'<ins class="jstree-copy" style="display:none;">+</ins></div>');a.vakata.dnd._trigger("start",b,{helper:a(),element:l,data:k})}},this)),this.settings.dnd.use_html5&&this.element.on("dragover.jstree",function(b){return b.preventDefault(),a.vakata.dnd._trigger("move",b,{helper:a(),element:l,data:k}),!1}).on("drop.jstree",a.proxy(function(b){return b.preventDefault(),a.vakata.dnd._trigger("stop",b,{helper:a(),element:l,data:k}),!1},this))},this.redraw_node=function(a,b,d,e){if(a=c.redraw_node.apply(this,arguments),a&&this.settings.dnd.use_html5)if(this.settings.dnd.large_drag_target)a.setAttribute("draggable",!0);else{var f,g,h=null;for(f=0,g=a.childNodes.length;g>f;f++)if(a.childNodes[f]&&a.childNodes[f].className&&-1!==a.childNodes[f].className.indexOf("jstree-anchor")){h=a.childNodes[f];break}h&&h.setAttribute("draggable",!0)}return a}},a(function(){var c=!1,d=!1,e=!1,f=!1,g=a('<div id="jstree-marker">&#160;</div>').hide();a(i).on("dnd_start.vakata.jstree",function(a,b){c=!1,e=!1,b&&b.data&&b.data.jstree&&g.appendTo("body")}).on("dnd_move.vakata.jstree",function(h,i){if(f&&(i.event&&"dragover"===i.event.type&&i.event.target===e.target||clearTimeout(f)),i&&i.data&&i.data.jstree&&(!i.event.target.id||"jstree-marker"!==i.event.target.id)){e=i.event;var j=a.jstree.reference(i.event.target),k=!1,l=!1,m=!1,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D;if(j&&j._data&&j._data.dnd)if(g.attr("class","jstree-"+j.get_theme()+(j.settings.core.themes.responsive?" jstree-dnd-responsive":"")),C=i.data.origin&&(i.data.origin.settings.dnd.always_copy||i.data.origin.settings.dnd.copy&&(i.event.metaKey||i.event.ctrlKey)),i.helper.children().attr("class","jstree-"+j.get_theme()+" jstree-"+j.get_theme()+"-"+j.get_theme_variant()+" "+(j.settings.core.themes.responsive?" jstree-dnd-responsive":"")).find(".jstree-copy").first()[C?"show":"hide"](),i.event.target!==j.element[0]&&i.event.target!==j.get_container_ul()[0]||0!==j.get_container_ul().children().length){if(k=j.settings.dnd.large_drop_target?a(i.event.target).closest(".jstree-node").children(".jstree-anchor"):a(i.event.target).closest(".jstree-anchor"),k&&k.length&&k.parent().is(".jstree-closed, .jstree-open, .jstree-leaf")&&(l=k.offset(),m=(i.event.pageY!==b?i.event.pageY:i.event.originalEvent.pageY)-l.top,q=k.outerHeight(),t=q/3>m?["b","i","a"]:m>q-q/3?["a","i","b"]:m>q/2?["i","a","b"]:["i","b","a"],a.each(t,function(b,e){switch(e){case"b":o=l.left-6,p=l.top,r=j.get_parent(k),s=k.parent().index();break;case"i":A=j.settings.dnd.inside_pos,B=j.get_node(k.parent()),o=l.left-2,p=l.top+q/2+1,r=B.id,s="first"===A?0:"last"===A?B.children.length:Math.min(A,B.children.length);break;case"a":o=l.left-6,p=l.top+q,r=j.get_parent(k),s=k.parent().index()+1}for(u=!0,v=0,w=i.data.nodes.length;w>v;v++)if(x=i.data.origin&&(i.data.origin.settings.dnd.always_copy||i.data.origin.settings.dnd.copy&&(i.event.metaKey||i.event.ctrlKey))?"copy_node":"move_node",y=s,"move_node"===x&&"a"===e&&i.data.origin&&i.data.origin===j&&r===j.get_parent(i.data.nodes[v])&&(z=j.get_node(r),y>a.inArray(i.data.nodes[v],z.children)&&(y-=1)),u=u&&(j&&j.settings&&j.settings.dnd&&j.settings.dnd.check_while_dragging===!1||j.check(x,i.data.origin&&i.data.origin!==j?i.data.origin.get_node(i.data.nodes[v]):i.data.nodes[v],r,y,{dnd:!0,ref:j.get_node(k.parent()),pos:e,origin:i.data.origin,is_multi:i.data.origin&&i.data.origin!==j,is_foreign:!i.data.origin})),!u){j&&j.last_error&&(d=j.last_error());break}return"i"===e&&k.parent().is(".jstree-closed")&&j.settings.dnd.open_timeout&&(f=setTimeout(function(a,b){return function(){a.open_node(b)}}(j,k),j.settings.dnd.open_timeout)),u?(D=j.get_node(r,!0),D.hasClass(".jstree-dnd-parent")||(a(".jstree-dnd-parent").removeClass("jstree-dnd-parent"),D.addClass("jstree-dnd-parent")),c={ins:j,par:r,pos:"i"!==e||"last"!==A||0!==s||j.is_loaded(B)?s:"last"},g.css({left:o+"px",top:p+"px"}).show(),i.helper.find(".jstree-icon").first().removeClass("jstree-er").addClass("jstree-ok"),i.event.originalEvent&&i.event.originalEvent.dataTransfer&&(i.event.originalEvent.dataTransfer.dropEffect=C?"copy":"move"),d={},t=!0,!1):void 0}),t===!0))return}else{for(u=!0,v=0,w=i.data.nodes.length;w>v;v++)if(u=u&&j.check(i.data.origin&&(i.data.origin.settings.dnd.always_copy||i.data.origin.settings.dnd.copy&&(i.event.metaKey||i.event.ctrlKey))?"copy_node":"move_node",i.data.origin&&i.data.origin!==j?i.data.origin.get_node(i.data.nodes[v]):i.data.nodes[v],a.jstree.root,"last",{dnd:!0,ref:j.get_node(a.jstree.root),pos:"i",origin:i.data.origin,is_multi:i.data.origin&&i.data.origin!==j,is_foreign:!i.data.origin}),!u)break;if(u)return c={ins:j,par:a.jstree.root,pos:"last"},g.hide(),i.helper.find(".jstree-icon").first().removeClass("jstree-er").addClass("jstree-ok"),void(i.event.originalEvent&&i.event.originalEvent.dataTransfer&&(i.event.originalEvent.dataTransfer.dropEffect=C?"copy":"move"))}a(".jstree-dnd-parent").removeClass("jstree-dnd-parent"),c=!1,i.helper.find(".jstree-icon").removeClass("jstree-ok").addClass("jstree-er"),i.event.originalEvent&&i.event.originalEvent.dataTransfer&&(i.event.originalEvent.dataTransfer.dropEffect="none"),g.hide()}}).on("dnd_scroll.vakata.jstree",function(a,b){b&&b.data&&b.data.jstree&&(g.hide(),c=!1,e=!1,b.helper.find(".jstree-icon").first().removeClass("jstree-ok").addClass("jstree-er"))}).on("dnd_stop.vakata.jstree",function(b,h){if(a(".jstree-dnd-parent").removeClass("jstree-dnd-parent"),f&&clearTimeout(f),h&&h.data&&h.data.jstree){g.hide().detach();var i,j,k=[];if(c){for(i=0,j=h.data.nodes.length;j>i;i++)k[i]=h.data.origin?h.data.origin.get_node(h.data.nodes[i]):h.data.nodes[i];c.ins[h.data.origin&&(h.data.origin.settings.dnd.always_copy||h.data.origin.settings.dnd.copy&&(h.event.metaKey||h.event.ctrlKey))?"copy_node":"move_node"](k,c.par,c.pos,!1,!1,!1,h.data.origin)}else i=a(h.event.target).closest(".jstree"),i.length&&d&&d.error&&"check"===d.error&&(i=i.jstree(!0),i&&i.settings.core.error.call(this,d));e=!1,c=!1}}).on("keyup.jstree keydown.jstree",function(b,h){h=a.vakata.dnd._get(),h&&h.data&&h.data.jstree&&("keyup"===b.type&&27===b.which?(f&&clearTimeout(f),c=!1,d=!1,e=!1,f=!1,g.hide().detach(),a.vakata.dnd._clean()):(h.helper.find(".jstree-copy").first()[h.data.origin&&(h.data.origin.settings.dnd.always_copy||h.data.origin.settings.dnd.copy&&(b.metaKey||b.ctrlKey))?"show":"hide"](),e&&(e.metaKey=b.metaKey,e.ctrlKey=b.ctrlKey,a.vakata.dnd._trigger("move",e))))})}),function(a){a.vakata.html={div:a("<div />"),escape:function(b){return a.vakata.html.div.text(b).html()},strip:function(b){return a.vakata.html.div.empty().append(a.parseHTML(b)).text()}};var c={element:!1,target:!1,is_down:!1,is_drag:!1,helper:!1,helper_w:0,data:!1,init_x:0,init_y:0,scroll_l:0,scroll_t:0,scroll_e:!1,scroll_i:!1,is_touch:!1};a.vakata.dnd={settings:{scroll_speed:10,scroll_proximity:20,helper_left:5,helper_top:10,threshold:5,threshold_touch:50},_trigger:function(c,d,e){e===b&&(e=a.vakata.dnd._get()),e.event=d,a(i).triggerHandler("dnd_"+c+".vakata",e)},_get:function(){return{data:c.data,element:c.element,helper:c.helper}},_clean:function(){c.helper&&c.helper.remove(),c.scroll_i&&(clearInterval(c.scroll_i),c.scroll_i=!1),c={element:!1,target:!1,is_down:!1,is_drag:!1,helper:!1,helper_w:0,data:!1,init_x:0,init_y:0,scroll_l:0,scroll_t:0,scroll_e:!1,scroll_i:!1,is_touch:!1},a(i).off("mousemove.vakata.jstree touchmove.vakata.jstree",a.vakata.dnd.drag),a(i).off("mouseup.vakata.jstree touchend.vakata.jstree",a.vakata.dnd.stop)},_scroll:function(b){if(!c.scroll_e||!c.scroll_l&&!c.scroll_t)return c.scroll_i&&(clearInterval(c.scroll_i),c.scroll_i=!1),!1;if(!c.scroll_i)return c.scroll_i=setInterval(a.vakata.dnd._scroll,100),!1;if(b===!0)return!1;var d=c.scroll_e.scrollTop(),e=c.scroll_e.scrollLeft();c.scroll_e.scrollTop(d+c.scroll_t*a.vakata.dnd.settings.scroll_speed),c.scroll_e.scrollLeft(e+c.scroll_l*a.vakata.dnd.settings.scroll_speed),(d!==c.scroll_e.scrollTop()||e!==c.scroll_e.scrollLeft())&&a.vakata.dnd._trigger("scroll",c.scroll_e)},start:function(b,d,e){"touchstart"===b.type&&b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(b.pageX=b.originalEvent.changedTouches[0].pageX,b.pageY=b.originalEvent.changedTouches[0].pageY,b.target=i.elementFromPoint(b.originalEvent.changedTouches[0].pageX-window.pageXOffset,b.originalEvent.changedTouches[0].pageY-window.pageYOffset)),c.is_drag&&a.vakata.dnd.stop({});try{b.currentTarget.unselectable="on",b.currentTarget.onselectstart=function(){return!1},b.currentTarget.style&&(b.currentTarget.style.touchAction="none",b.currentTarget.style.msTouchAction="none",b.currentTarget.style.MozUserSelect="none")}catch(f){}return c.init_x=b.pageX,c.init_y=b.pageY,c.data=d,c.is_down=!0,c.element=b.currentTarget,c.target=b.target,c.is_touch="touchstart"===b.type,e!==!1&&(c.helper=a("<div id='vakata-dnd'></div>").html(e).css({display:"block",margin:"0",padding:"0",position:"absolute",top:"-2000px",lineHeight:"16px",zIndex:"10000"})),a(i).on("mousemove.vakata.jstree touchmove.vakata.jstree",a.vakata.dnd.drag),a(i).on("mouseup.vakata.jstree touchend.vakata.jstree",a.vakata.dnd.stop),!1},drag:function(b){if("touchmove"===b.type&&b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(b.pageX=b.originalEvent.changedTouches[0].pageX,b.pageY=b.originalEvent.changedTouches[0].pageY,b.target=i.elementFromPoint(b.originalEvent.changedTouches[0].pageX-window.pageXOffset,b.originalEvent.changedTouches[0].pageY-window.pageYOffset)),c.is_down){if(!c.is_drag){if(!(Math.abs(b.pageX-c.init_x)>(c.is_touch?a.vakata.dnd.settings.threshold_touch:a.vakata.dnd.settings.threshold)||Math.abs(b.pageY-c.init_y)>(c.is_touch?a.vakata.dnd.settings.threshold_touch:a.vakata.dnd.settings.threshold)))return;c.helper&&(c.helper.appendTo("body"),c.helper_w=c.helper.outerWidth()),c.is_drag=!0,a(c.target).one("click.vakata",!1),a.vakata.dnd._trigger("start",b)}var d=!1,e=!1,f=!1,g=!1,h=!1,j=!1,k=!1,l=!1,m=!1,n=!1;return c.scroll_t=0,c.scroll_l=0,c.scroll_e=!1,a(a(b.target).parentsUntil("body").addBack().get().reverse()).filter(function(){return/^auto|scroll$/.test(a(this).css("overflow"))&&(this.scrollHeight>this.offsetHeight||this.scrollWidth>this.offsetWidth)}).each(function(){var d=a(this),e=d.offset();return this.scrollHeight>this.offsetHeight&&(e.top+d.height()-b.pageY<a.vakata.dnd.settings.scroll_proximity&&(c.scroll_t=1),b.pageY-e.top<a.vakata.dnd.settings.scroll_proximity&&(c.scroll_t=-1)),this.scrollWidth>this.offsetWidth&&(e.left+d.width()-b.pageX<a.vakata.dnd.settings.scroll_proximity&&(c.scroll_l=1),b.pageX-e.left<a.vakata.dnd.settings.scroll_proximity&&(c.scroll_l=-1)),c.scroll_t||c.scroll_l?(c.scroll_e=a(this),!1):void 0}),c.scroll_e||(d=a(i),e=a(window),f=d.height(),g=e.height(),h=d.width(),j=e.width(),k=d.scrollTop(),l=d.scrollLeft(),f>g&&b.pageY-k<a.vakata.dnd.settings.scroll_proximity&&(c.scroll_t=-1),f>g&&g-(b.pageY-k)<a.vakata.dnd.settings.scroll_proximity&&(c.scroll_t=1),h>j&&b.pageX-l<a.vakata.dnd.settings.scroll_proximity&&(c.scroll_l=-1),h>j&&j-(b.pageX-l)<a.vakata.dnd.settings.scroll_proximity&&(c.scroll_l=1),(c.scroll_t||c.scroll_l)&&(c.scroll_e=d)),c.scroll_e&&a.vakata.dnd._scroll(!0),c.helper&&(m=parseInt(b.pageY+a.vakata.dnd.settings.helper_top,10),n=parseInt(b.pageX+a.vakata.dnd.settings.helper_left,10),f&&m+25>f&&(m=f-50),h&&n+c.helper_w>h&&(n=h-(c.helper_w+2)),c.helper.css({left:n+"px",top:m+"px"})),a.vakata.dnd._trigger("move",b),!1}},stop:function(b){if("touchend"===b.type&&b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(b.pageX=b.originalEvent.changedTouches[0].pageX,b.pageY=b.originalEvent.changedTouches[0].pageY,b.target=i.elementFromPoint(b.originalEvent.changedTouches[0].pageX-window.pageXOffset,b.originalEvent.changedTouches[0].pageY-window.pageYOffset)),c.is_drag)b.target!==c.target&&a(c.target).off("click.vakata"),a.vakata.dnd._trigger("stop",b);else if("touchend"===b.type&&b.target===c.target){var d=setTimeout(function(){a(b.target).click()},100);a(b.target).one("click",function(){d&&clearTimeout(d)})}return a.vakata.dnd._clean(),!1}}}(a),a.jstree.defaults.massload=null,a.jstree.plugins.massload=function(b,c){this.init=function(a,b){this._data.massload={},c.init.call(this,a,b)},this._load_nodes=function(b,d,e,f){var g=this.settings.massload,h=JSON.stringify(b),i=[],j=this._model.data,k,l,m;if(!e){for(k=0,l=b.length;l>k;k++)(!j[b[k]]||!j[b[k]].state.loaded&&!j[b[k]].state.failed||f)&&(i.push(b[k]),m=this.get_node(b[k],!0),m&&m.length&&m.addClass("jstree-loading").attr("aria-busy",!0));if(this._data.massload={},i.length){if(a.isFunction(g))return g.call(this,i,a.proxy(function(a){var g,h;if(a)for(g in a)a.hasOwnProperty(g)&&(this._data.massload[g]=a[g]);for(g=0,h=b.length;h>g;g++)m=this.get_node(b[g],!0),m&&m.length&&m.removeClass("jstree-loading").attr("aria-busy",!1);c._load_nodes.call(this,b,d,e,f)},this));if("object"==typeof g&&g&&g.url)return g=a.extend(!0,{},g),a.isFunction(g.url)&&(g.url=g.url.call(this,i)),a.isFunction(g.data)&&(g.data=g.data.call(this,i)),a.ajax(g).done(a.proxy(function(a,g,h){var i,j;if(a)for(i in a)a.hasOwnProperty(i)&&(this._data.massload[i]=a[i]);for(i=0,j=b.length;j>i;i++)m=this.get_node(b[i],!0),m&&m.length&&m.removeClass("jstree-loading").attr("aria-busy",!1);c._load_nodes.call(this,b,d,e,f)},this)).fail(a.proxy(function(a){c._load_nodes.call(this,b,d,e,f)},this))}}return c._load_nodes.call(this,b,d,e,f)},this._load_node=function(b,d){var e=this._data.massload[b.id],f=null,g;return e?(f=this["string"==typeof e?"_append_html_data":"_append_json_data"](b,"string"==typeof e?a(a.parseHTML(e)).filter(function(){return 3!==this.nodeType}):e,function(a){d.call(this,a)}),g=this.get_node(b.id,!0),g&&g.length&&g.removeClass("jstree-loading").attr("aria-busy",!1),delete this._data.massload[b.id],f):c._load_node.call(this,b,d)}},a.jstree.defaults.search={ajax:!1,fuzzy:!1,case_sensitive:!1,show_only_matches:!1,show_only_matches_children:!1,close_opened_onclear:!0,search_leaves_only:!1,search_callback:!1},a.jstree.plugins.search=function(c,d){this.bind=function(){d.bind.call(this),this._data.search.str="",this._data.search.dom=a(),this._data.search.res=[],this._data.search.opn=[],this._data.search.som=!1,this._data.search.smc=!1,this._data.search.hdn=[],this.element.on("search.jstree",a.proxy(function(b,c){if(this._data.search.som&&c.res.length){var d=this._model.data,e,f,g=[],h,i;for(e=0,f=c.res.length;f>e;e++)if(d[c.res[e]]&&!d[c.res[e]].state.hidden&&(g.push(c.res[e]),g=g.concat(d[c.res[e]].parents),this._data.search.smc))for(h=0,i=d[c.res[e]].children_d.length;i>h;h++)d[d[c.res[e]].children_d[h]]&&!d[d[c.res[e]].children_d[h]].state.hidden&&g.push(d[c.res[e]].children_d[h]);g=a.vakata.array_remove_item(a.vakata.array_unique(g),a.jstree.root),this._data.search.hdn=this.hide_all(!0),this.show_node(g,!0),this.redraw(!0)}},this)).on("clear_search.jstree",a.proxy(function(a,b){this._data.search.som&&b.res.length&&(this.show_node(this._data.search.hdn,!0),this.redraw(!0))},this))},this.search=function(c,d,e,f,g,h){if(c===!1||""===a.trim(c.toString()))return this.clear_search();f=this.get_node(f),f=f&&f.id?f.id:null,c=c.toString();var i=this.settings.search,j=i.ajax?i.ajax:!1,k=this._model.data,l=null,m=[],n=[],o,p;if(this._data.search.res.length&&!g&&this.clear_search(),e===b&&(e=i.show_only_matches),h===b&&(h=i.show_only_matches_children),!d&&j!==!1)return a.isFunction(j)?j.call(this,c,a.proxy(function(b){b&&b.d&&(b=b.d),this._load_nodes(a.isArray(b)?a.vakata.array_unique(b):[],function(){this.search(c,!0,e,f,g,h)})},this),f):(j=a.extend({},j),j.data||(j.data={}),j.data.str=c,f&&(j.data.inside=f),this._data.search.lastRequest&&this._data.search.lastRequest.abort(),this._data.search.lastRequest=a.ajax(j).fail(a.proxy(function(){this._data.core.last_error={error:"ajax",plugin:"search",id:"search_01",reason:"Could not load search parents",data:JSON.stringify(j)},this.settings.core.error.call(this,this._data.core.last_error)},this)).done(a.proxy(function(b){b&&b.d&&(b=b.d),this._load_nodes(a.isArray(b)?a.vakata.array_unique(b):[],function(){this.search(c,!0,e,f,g,h)})},this)),this._data.search.lastRequest);if(g||(this._data.search.str=c,this._data.search.dom=a(),this._data.search.res=[],this._data.search.opn=[],this._data.search.som=e,this._data.search.smc=h),l=new a.vakata.search(c,!0,{caseSensitive:i.case_sensitive,fuzzy:i.fuzzy}),a.each(k[f?f:a.jstree.root].children_d,function(a,b){var d=k[b];d.text&&!d.state.hidden&&(!i.search_leaves_only||d.state.loaded&&0===d.children.length)&&(i.search_callback&&i.search_callback.call(this,c,d)||!i.search_callback&&l.search(d.text).isMatch)&&(m.push(b),n=n.concat(d.parents))}),m.length){for(n=a.vakata.array_unique(n),o=0,p=n.length;p>o;o++)n[o]!==a.jstree.root&&k[n[o]]&&this.open_node(n[o],null,0)===!0&&this._data.search.opn.push(n[o]);g?(this._data.search.dom=this._data.search.dom.add(a(this.element[0].querySelectorAll("#"+a.map(m,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #")))),this._data.search.res=a.vakata.array_unique(this._data.search.res.concat(m))):(this._data.search.dom=a(this.element[0].querySelectorAll("#"+a.map(m,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #"))),this._data.search.res=m),this._data.search.dom.children(".jstree-anchor").addClass("jstree-search")}this.trigger("search",{nodes:this._data.search.dom,str:c,res:this._data.search.res,show_only_matches:e})},this.clear_search=function(){this.settings.search.close_opened_onclear&&this.close_node(this._data.search.opn,0),this.trigger("clear_search",{nodes:this._data.search.dom,str:this._data.search.str,res:this._data.search.res}),this._data.search.res.length&&(this._data.search.dom=a(this.element[0].querySelectorAll("#"+a.map(this._data.search.res,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #"))),this._data.search.dom.children(".jstree-anchor").removeClass("jstree-search")),this._data.search.str="",this._data.search.res=[],this._data.search.opn=[],this._data.search.dom=a()},this.redraw_node=function(b,c,e,f){if(b=d.redraw_node.apply(this,arguments),b&&-1!==a.inArray(b.id,this._data.search.res)){var g,h,i=null;for(g=0,h=b.childNodes.length;h>g;g++)if(b.childNodes[g]&&b.childNodes[g].className&&-1!==b.childNodes[g].className.indexOf("jstree-anchor")){i=b.childNodes[g];break}i&&(i.className+=" jstree-search")}return b}},function(a){a.vakata.search=function(b,c,d){d=d||{},d=a.extend({},a.vakata.search.defaults,d),d.fuzzy!==!1&&(d.fuzzy=!0),b=d.caseSensitive?b:b.toLowerCase();var e=d.location,f=d.distance,g=d.threshold,h=b.length,i,j,k,l;return h>32&&(d.fuzzy=!1),d.fuzzy&&(i=1<<h-1,j=function(){var a={},c=0;for(c=0;h>c;c++)a[b.charAt(c)]=0;for(c=0;h>c;c++)a[b.charAt(c)]|=1<<h-c-1;return a}(),k=function(a,b){var c=a/h,d=Math.abs(e-b);return f?c+d/f:d?1:c}),l=function(a){if(a=d.caseSensitive?a:a.toLowerCase(),b===a||-1!==a.indexOf(b))return{isMatch:!0,score:0};if(!d.fuzzy)return{isMatch:!1,score:1};var c,f,l=a.length,m=g,n=a.indexOf(b,e),o,p,q=h+l,r,s,t,u,v,w=1,x=[];for(-1!==n&&(m=Math.min(k(0,n),m),n=a.lastIndexOf(b,e+h),-1!==n&&(m=Math.min(k(0,n),m))),n=-1,c=0;h>c;c++){o=0,p=q;while(p>o)k(c,e+p)<=m?o=p:q=p,p=Math.floor((q-o)/2+o);for(q=p,s=Math.max(1,e-p+1),t=Math.min(e+p,l)+h,u=new Array(t+2),u[t+1]=(1<<c)-1,f=t;f>=s;f--)if(v=j[a.charAt(f-1)],0===c?u[f]=(u[f+1]<<1|1)&v:u[f]=(u[f+1]<<1|1)&v|((r[f+1]|r[f])<<1|1)|r[f+1],u[f]&i&&(w=k(c,f-1),m>=w)){if(m=w,n=f-1,x.push(n),!(n>e))break;s=Math.max(1,2*e-n)}if(k(c+1,e)>m)break;r=u}return{isMatch:n>=0,score:w}},c===!0?{search:l}:l(c)},a.vakata.search.defaults={location:0,distance:100,threshold:.6,fuzzy:!1,caseSensitive:!1}}(a),a.jstree.defaults.sort=function(a,b){return this.get_text(a)>this.get_text(b)?1:-1},a.jstree.plugins.sort=function(b,c){this.bind=function(){c.bind.call(this),this.element.on("model.jstree",a.proxy(function(a,b){this.sort(b.parent,!0)},this)).on("rename_node.jstree create_node.jstree",a.proxy(function(a,b){this.sort(b.parent||b.node.parent,!1),this.redraw_node(b.parent||b.node.parent,!0)},this)).on("move_node.jstree copy_node.jstree",a.proxy(function(a,b){this.sort(b.parent,!1),this.redraw_node(b.parent,!0)},this))},this.sort=function(b,c){var d,e;if(b=this.get_node(b),b&&b.children&&b.children.length&&(b.children.sort(a.proxy(this.settings.sort,this)),c))for(d=0,e=b.children_d.length;e>d;d++)this.sort(b.children_d[d],!1)}};var m=!1;a.jstree.defaults.state={key:"jstree",events:"changed.jstree open_node.jstree close_node.jstree check_node.jstree uncheck_node.jstree",ttl:!1,filter:!1},a.jstree.plugins.state=function(b,c){this.bind=function(){c.bind.call(this);var b=a.proxy(function(){this.element.on(this.settings.state.events,a.proxy(function(){m&&clearTimeout(m),m=setTimeout(a.proxy(function(){this.save_state()},this),100)},this)),this.trigger("state_ready")},this);this.element.on("ready.jstree",a.proxy(function(a,c){this.element.one("restore_state.jstree",b),this.restore_state()||b()},this))},this.save_state=function(){var b={state:this.get_state(),ttl:this.settings.state.ttl,sec:+new Date};a.vakata.storage.set(this.settings.state.key,JSON.stringify(b))},this.restore_state=function(){var b=a.vakata.storage.get(this.settings.state.key);if(b)try{b=JSON.parse(b)}catch(c){return!1}return b&&b.ttl&&b.sec&&+new Date-b.sec>b.ttl?!1:(b&&b.state&&(b=b.state),b&&a.isFunction(this.settings.state.filter)&&(b=this.settings.state.filter.call(this,b)),b?(this.element.one("set_state.jstree",function(c,d){d.instance.trigger("restore_state",{state:a.extend(!0,{},b)})}),this.set_state(b),!0):!1)},this.clear_state=function(){return a.vakata.storage.del(this.settings.state.key)}},function(a,b){a.vakata.storage={set:function(a,b){return window.localStorage.setItem(a,b)},get:function(a){return window.localStorage.getItem(a)},del:function(a){return window.localStorage.removeItem(a)}}}(a),a.jstree.defaults.types={"default":{}},a.jstree.defaults.types[a.jstree.root]={},a.jstree.plugins.types=function(c,d){this.init=function(c,e){var f,g;if(e&&e.types&&e.types["default"])for(f in e.types)if("default"!==f&&f!==a.jstree.root&&e.types.hasOwnProperty(f))for(g in e.types["default"])e.types["default"].hasOwnProperty(g)&&e.types[f][g]===b&&(e.types[f][g]=e.types["default"][g]);d.init.call(this,c,e),this._model.data[a.jstree.root].type=a.jstree.root},this.refresh=function(b,c){d.refresh.call(this,b,c),this._model.data[a.jstree.root].type=a.jstree.root},this.bind=function(){this.element.on("model.jstree",a.proxy(function(c,d){var e=this._model.data,f=d.nodes,g=this.settings.types,h,i,j="default",k;for(h=0,i=f.length;i>h;h++){if(j="default",e[f[h]].original&&e[f[h]].original.type&&g[e[f[h]].original.type]&&(j=e[f[h]].original.type),e[f[h]].data&&e[f[h]].data.jstree&&e[f[h]].data.jstree.type&&g[e[f[h]].data.jstree.type]&&(j=e[f[h]].data.jstree.type),e[f[h]].type=j,e[f[h]].icon===!0&&g[j].icon!==b&&(e[f[h]].icon=g[j].icon),g[j].li_attr!==b&&"object"==typeof g[j].li_attr)for(k in g[j].li_attr)if(g[j].li_attr.hasOwnProperty(k)){if("id"===k)continue;e[f[h]].li_attr[k]===b?e[f[h]].li_attr[k]=g[j].li_attr[k]:"class"===k&&(e[f[h]].li_attr["class"]=g[j].li_attr["class"]+" "+e[f[h]].li_attr["class"])}if(g[j].a_attr!==b&&"object"==typeof g[j].a_attr)for(k in g[j].a_attr)if(g[j].a_attr.hasOwnProperty(k)){if("id"===k)continue;e[f[h]].a_attr[k]===b?e[f[h]].a_attr[k]=g[j].a_attr[k]:"href"===k&&"#"===e[f[h]].a_attr[k]?e[f[h]].a_attr.href=g[j].a_attr.href:"class"===k&&(e[f[h]].a_attr["class"]=g[j].a_attr["class"]+" "+e[f[h]].a_attr["class"])}}e[a.jstree.root].type=a.jstree.root},this)),d.bind.call(this)},this.get_json=function(b,c,e){var f,g,h=this._model.data,i=c?a.extend(!0,{},c,{no_id:!1}):{},j=d.get_json.call(this,b,i,e);if(j===!1)return!1;if(a.isArray(j))for(f=0,g=j.length;g>f;f++)j[f].type=j[f].id&&h[j[f].id]&&h[j[f].id].type?h[j[f].id].type:"default",c&&c.no_id&&(delete j[f].id,j[f].li_attr&&j[f].li_attr.id&&delete j[f].li_attr.id,j[f].a_attr&&j[f].a_attr.id&&delete j[f].a_attr.id);else j.type=j.id&&h[j.id]&&h[j.id].type?h[j.id].type:"default",c&&c.no_id&&(j=this._delete_ids(j));return j},this._delete_ids=function(b){if(a.isArray(b)){for(var c=0,d=b.length;d>c;c++)b[c]=this._delete_ids(b[c]);return b}return delete b.id,b.li_attr&&b.li_attr.id&&delete b.li_attr.id,b.a_attr&&b.a_attr.id&&delete b.a_attr.id,b.children&&a.isArray(b.children)&&(b.children=this._delete_ids(b.children)),b},this.check=function(c,e,f,g,h){if(d.check.call(this,c,e,f,g,h)===!1)return!1;e=e&&e.id?e:this.get_node(e),f=f&&f.id?f:this.get_node(f);var i=e&&e.id?h&&h.origin?h.origin:a.jstree.reference(e.id):null,j,k,l,m;switch(i=i&&i._model&&i._model.data?i._model.data:null,c){case"create_node":case"move_node":case"copy_node":if("move_node"!==c||-1===a.inArray(e.id,f.children)){if(j=this.get_rules(f),j.max_children!==b&&-1!==j.max_children&&j.max_children===f.children.length)return this._data.core.last_error={error:"check",plugin:"types",id:"types_01",reason:"max_children prevents function: "+c,data:JSON.stringify({chk:c,pos:g,obj:e&&e.id?e.id:!1,par:f&&f.id?f.id:!1})},!1;if(j.valid_children!==b&&-1!==j.valid_children&&-1===a.inArray(e.type||"default",j.valid_children))return this._data.core.last_error={error:"check",plugin:"types",id:"types_02",reason:"valid_children prevents function: "+c,data:JSON.stringify({chk:c,pos:g,obj:e&&e.id?e.id:!1,par:f&&f.id?f.id:!1})},!1;if(i&&e.children_d&&e.parents){for(k=0,l=0,m=e.children_d.length;m>l;l++)k=Math.max(k,i[e.children_d[l]].parents.length);k=k-e.parents.length+1}(0>=k||k===b)&&(k=1);do{if(j.max_depth!==b&&-1!==j.max_depth&&j.max_depth<k)return this._data.core.last_error={error:"check",plugin:"types",id:"types_03",reason:"max_depth prevents function: "+c,data:JSON.stringify({chk:c,pos:g,obj:e&&e.id?e.id:!1,par:f&&f.id?f.id:!1})},!1;f=this.get_node(f.parent),j=this.get_rules(f),k++}while(f)}}return!0},this.get_rules=function(a){if(a=this.get_node(a),!a)return!1;var c=this.get_type(a,!0);return c.max_depth===b&&(c.max_depth=-1),c.max_children===b&&(c.max_children=-1),c.valid_children===b&&(c.valid_children=-1),c},this.get_type=function(b,c){return b=this.get_node(b),b?c?a.extend({type:b.type},this.settings.types[b.type]):b.type:!1},this.set_type=function(c,d){var e=this._model.data,f,g,h,i,j,k,l,m;if(a.isArray(c)){for(c=c.slice(),g=0,h=c.length;h>g;g++)this.set_type(c[g],d);return!0}if(f=this.settings.types,c=this.get_node(c),!f[d]||!c)return!1;if(l=this.get_node(c,!0),l&&l.length&&(m=l.children(".jstree-anchor")),i=c.type,j=this.get_icon(c),c.type=d,(j===!0||!f[i]||f[i].icon!==b&&j===f[i].icon)&&this.set_icon(c,f[d].icon!==b?f[d].icon:!0),f[i]&&f[i].li_attr!==b&&"object"==typeof f[i].li_attr)for(k in f[i].li_attr)if(f[i].li_attr.hasOwnProperty(k)){if("id"===k)continue;"class"===k?(e[c.id].li_attr["class"]=(e[c.id].li_attr["class"]||"").replace(f[i].li_attr[k],""),l&&l.removeClass(f[i].li_attr[k])):e[c.id].li_attr[k]===f[i].li_attr[k]&&(e[c.id].li_attr[k]=null,l&&l.removeAttr(k))}if(f[i]&&f[i].a_attr!==b&&"object"==typeof f[i].a_attr)for(k in f[i].a_attr)if(f[i].a_attr.hasOwnProperty(k)){if("id"===k)continue;"class"===k?(e[c.id].a_attr["class"]=(e[c.id].a_attr["class"]||"").replace(f[i].a_attr[k],""),m&&m.removeClass(f[i].a_attr[k])):e[c.id].a_attr[k]===f[i].a_attr[k]&&("href"===k?(e[c.id].a_attr[k]="#",m&&m.attr("href","#")):(delete e[c.id].a_attr[k],m&&m.removeAttr(k)))}if(f[d].li_attr!==b&&"object"==typeof f[d].li_attr)for(k in f[d].li_attr)if(f[d].li_attr.hasOwnProperty(k)){if("id"===k)continue;e[c.id].li_attr[k]===b?(e[c.id].li_attr[k]=f[d].li_attr[k],l&&("class"===k?l.addClass(f[d].li_attr[k]):l.attr(k,f[d].li_attr[k]))):"class"===k&&(e[c.id].li_attr["class"]=f[d].li_attr[k]+" "+e[c.id].li_attr["class"],l&&l.addClass(f[d].li_attr[k]))}if(f[d].a_attr!==b&&"object"==typeof f[d].a_attr)for(k in f[d].a_attr)if(f[d].a_attr.hasOwnProperty(k)){if("id"===k)continue;e[c.id].a_attr[k]===b?(e[c.id].a_attr[k]=f[d].a_attr[k],m&&("class"===k?m.addClass(f[d].a_attr[k]):m.attr(k,f[d].a_attr[k]))):"href"===k&&"#"===e[c.id].a_attr[k]?(e[c.id].a_attr.href=f[d].a_attr.href,m&&m.attr("href",f[d].a_attr.href)):"class"===k&&(e[c.id].a_attr["class"]=f[d].a_attr["class"]+" "+e[c.id].a_attr["class"],m&&m.addClass(f[d].a_attr[k]))}return!0}},a.jstree.defaults.unique={case_sensitive:!1,duplicate:function(a,b){return a+" ("+b+")"}},a.jstree.plugins.unique=function(c,d){this.check=function(b,c,e,f,g){if(d.check.call(this,b,c,e,f,g)===!1)return!1;
6
- if(c=c&&c.id?c:this.get_node(c),e=e&&e.id?e:this.get_node(e),!e||!e.children)return!0;var h="rename_node"===b?f:c.text,i=[],j=this.settings.unique.case_sensitive,k=this._model.data,l,m;for(l=0,m=e.children.length;m>l;l++)i.push(j?k[e.children[l]].text:k[e.children[l]].text.toLowerCase());switch(j||(h=h.toLowerCase()),b){case"delete_node":return!0;case"rename_node":return l=-1===a.inArray(h,i)||c.text&&c.text[j?"toString":"toLowerCase"]()===h,l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_01",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l;case"create_node":return l=-1===a.inArray(h,i),l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_04",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l;case"copy_node":return l=-1===a.inArray(h,i),l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_02",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l;case"move_node":return l=c.parent===e.id&&(!g||!g.is_multi)||-1===a.inArray(h,i),l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_03",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l}return!0},this.create_node=function(c,e,f,g,h){if(!e||e.text===b){if(null===c&&(c=a.jstree.root),c=this.get_node(c),!c)return d.create_node.call(this,c,e,f,g,h);if(f=f===b?"last":f,!f.toString().match(/^(before|after)$/)&&!h&&!this.is_loaded(c))return d.create_node.call(this,c,e,f,g,h);e||(e={});var i,j,k,l,m,n=this._model.data,o=this.settings.unique.case_sensitive,p=this.settings.unique.duplicate;for(j=i=this.get_string("New node"),k=[],l=0,m=c.children.length;m>l;l++)k.push(o?n[c.children[l]].text:n[c.children[l]].text.toLowerCase());l=1;while(-1!==a.inArray(o?j:j.toLowerCase(),k))j=p.call(this,i,++l).toString();e.text=j}return d.create_node.call(this,c,e,f,g,h)}};var n=i.createElement("DIV");if(n.setAttribute("unselectable","on"),n.setAttribute("role","presentation"),n.className="jstree-wholerow",n.innerHTML="&#160;",a.jstree.plugins.wholerow=function(b,c){this.bind=function(){c.bind.call(this),this.element.on("ready.jstree set_state.jstree",a.proxy(function(){this.hide_dots()},this)).on("init.jstree loading.jstree ready.jstree",a.proxy(function(){this.get_container_ul().addClass("jstree-wholerow-ul")},this)).on("deselect_all.jstree",a.proxy(function(a,b){this.element.find(".jstree-wholerow-clicked").removeClass("jstree-wholerow-clicked")},this)).on("changed.jstree",a.proxy(function(a,b){this.element.find(".jstree-wholerow-clicked").removeClass("jstree-wholerow-clicked");var c=!1,d,e;for(d=0,e=b.selected.length;e>d;d++)c=this.get_node(b.selected[d],!0),c&&c.length&&c.children(".jstree-wholerow").addClass("jstree-wholerow-clicked")},this)).on("open_node.jstree",a.proxy(function(a,b){this.get_node(b.node,!0).find(".jstree-clicked").parent().children(".jstree-wholerow").addClass("jstree-wholerow-clicked")},this)).on("hover_node.jstree dehover_node.jstree",a.proxy(function(a,b){"hover_node"===a.type&&this.is_disabled(b.node)||this.get_node(b.node,!0).children(".jstree-wholerow")["hover_node"===a.type?"addClass":"removeClass"]("jstree-wholerow-hovered")},this)).on("contextmenu.jstree",".jstree-wholerow",a.proxy(function(b){if(this._data.contextmenu){b.preventDefault();var c=a.Event("contextmenu",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey,pageX:b.pageX,pageY:b.pageY});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c)}},this)).on("click.jstree",".jstree-wholerow",function(b){b.stopImmediatePropagation();var c=a.Event("click",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()}).on("dblclick.jstree",".jstree-wholerow",function(b){b.stopImmediatePropagation();var c=a.Event("dblclick",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()}).on("click.jstree",".jstree-leaf > .jstree-ocl",a.proxy(function(b){b.stopImmediatePropagation();var c=a.Event("click",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()},this)).on("mouseover.jstree",".jstree-wholerow, .jstree-icon",a.proxy(function(a){return a.stopImmediatePropagation(),this.is_disabled(a.currentTarget)||this.hover_node(a.currentTarget),!1},this)).on("mouseleave.jstree",".jstree-node",a.proxy(function(a){this.dehover_node(a.currentTarget)},this))},this.teardown=function(){this.settings.wholerow&&this.element.find(".jstree-wholerow").remove(),c.teardown.call(this)},this.redraw_node=function(b,d,e,f){if(b=c.redraw_node.apply(this,arguments)){var g=n.cloneNode(!0);-1!==a.inArray(b.id,this._data.core.selected)&&(g.className+=" jstree-wholerow-clicked"),this._data.core.focused&&this._data.core.focused===b.id&&(g.className+=" jstree-wholerow-hovered"),b.insertBefore(g,b.childNodes[0])}return b}},i.registerElement&&Object&&Object.create){var o=Object.create(HTMLElement.prototype);o.createdCallback=function(){var b={core:{},plugins:[]},c;for(c in a.jstree.plugins)a.jstree.plugins.hasOwnProperty(c)&&this.attributes[c]&&(b.plugins.push(c),this.getAttribute(c)&&JSON.parse(this.getAttribute(c))&&(b[c]=JSON.parse(this.getAttribute(c))));for(c in a.jstree.defaults.core)a.jstree.defaults.core.hasOwnProperty(c)&&this.attributes[c]&&(b.core[c]=JSON.parse(this.getAttribute(c))||this.getAttribute(c));a(this).jstree(b)};try{i.registerElement("vakata-jstree",{prototype:o})}catch(p){}}}});
1
+ /*! jsTree - v3.3.4 - 2017-04-06 - (MIT) */
2
+ !function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a,b){"use strict";if(!a.jstree){var c=0,d=!1,e=!1,f=!1,g=[],h=a("script:last").attr("src"),i=window.document;a.jstree={version:"3.3.4",defaults:{plugins:[]},plugins:{},path:h&&-1!==h.indexOf("/")?h.replace(/\/[^\/]+$/,""):"",idregex:/[\\:&!^|()\[\]<>@*'+~#";.,=\- \/${}%?`]/g,root:"#"},a.jstree.create=function(b,d){var e=new a.jstree.core(++c),f=d;return d=a.extend(!0,{},a.jstree.defaults,d),f&&f.plugins&&(d.plugins=f.plugins),a.each(d.plugins,function(a,b){"core"!==a&&(e=e.plugin(b,d[b]))}),a(b).data("jstree",e),e.init(b,d),e},a.jstree.destroy=function(){a(".jstree:jstree").jstree("destroy"),a(i).off(".jstree")},a.jstree.core=function(a){this._id=a,this._cnt=0,this._wrk=null,this._data={core:{themes:{name:!1,dots:!1,icons:!1,ellipsis:!1},selected:[],last_error:{},working:!1,worker_queue:[],focused:null}}},a.jstree.reference=function(b){var c=null,d=null;if(!b||!b.id||b.tagName&&b.nodeType||(b=b.id),!d||!d.length)try{d=a(b)}catch(e){}if(!d||!d.length)try{d=a("#"+b.replace(a.jstree.idregex,"\\$&"))}catch(e){}return d&&d.length&&(d=d.closest(".jstree")).length&&(d=d.data("jstree"))?c=d:a(".jstree").each(function(){var d=a(this).data("jstree");return d&&d._model.data[b]?(c=d,!1):void 0}),c},a.fn.jstree=function(c){var d="string"==typeof c,e=Array.prototype.slice.call(arguments,1),f=null;return c!==!0||this.length?(this.each(function(){var g=a.jstree.reference(this),h=d&&g?g[c]:null;return f=d&&h?h.apply(g,e):null,g||d||c!==b&&!a.isPlainObject(c)||a.jstree.create(this,c),(g&&!d||c===!0)&&(f=g||!1),null!==f&&f!==b?!1:void 0}),null!==f&&f!==b?f:this):!1},a.expr.pseudos.jstree=a.expr.createPseudo(function(c){return function(c){return a(c).hasClass("jstree")&&a(c).data("jstree")!==b}}),a.jstree.defaults.core={data:!1,strings:!1,check_callback:!1,error:a.noop,animation:200,multiple:!0,themes:{name:!1,url:!1,dir:!1,dots:!0,icons:!0,ellipsis:!1,stripes:!1,variant:!1,responsive:!1},expand_selected_onload:!0,worker:!0,force_text:!1,dblclick_toggle:!0},a.jstree.core.prototype={plugin:function(b,c){var d=a.jstree.plugins[b];return d?(this._data[b]={},d.prototype=this,new d(c,this)):this},init:function(b,c){this._model={data:{},changed:[],force_full_redraw:!1,redraw_timeout:!1,default_state:{loaded:!0,opened:!1,selected:!1,disabled:!1}},this._model.data[a.jstree.root]={id:a.jstree.root,parent:null,parents:[],children:[],children_d:[],state:{loaded:!1}},this.element=a(b).addClass("jstree jstree-"+this._id),this.settings=c,this._data.core.ready=!1,this._data.core.loaded=!1,this._data.core.rtl="rtl"===this.element.css("direction"),this.element[this._data.core.rtl?"addClass":"removeClass"]("jstree-rtl"),this.element.attr("role","tree"),this.settings.core.multiple&&this.element.attr("aria-multiselectable",!0),this.element.attr("tabindex")||this.element.attr("tabindex","0"),this.bind(),this.trigger("init"),this._data.core.original_container_html=this.element.find(" > ul > li").clone(!0),this._data.core.original_container_html.find("li").addBack().contents().filter(function(){return 3===this.nodeType&&(!this.nodeValue||/^\s+$/.test(this.nodeValue))}).remove(),this.element.html("<ul class='jstree-container-ul jstree-children' role='group'><li id='j"+this._id+"_loading' class='jstree-initial-node jstree-loading jstree-leaf jstree-last' role='tree-item'><i class='jstree-icon jstree-ocl'></i><a class='jstree-anchor' href='#'><i class='jstree-icon jstree-themeicon-hidden'></i>"+this.get_string("Loading ...")+"</a></li></ul>"),this.element.attr("aria-activedescendant","j"+this._id+"_loading"),this._data.core.li_height=this.get_container_ul().children("li").first().outerHeight()||24,this._data.core.node=this._create_prototype_node(),this.trigger("loading"),this.load_node(a.jstree.root)},destroy:function(a){if(this.trigger("destroy"),this._wrk)try{window.URL.revokeObjectURL(this._wrk),this._wrk=null}catch(b){}a||this.element.empty(),this.teardown()},_create_prototype_node:function(){var a=i.createElement("LI"),b,c;return a.setAttribute("role","treeitem"),b=i.createElement("I"),b.className="jstree-icon jstree-ocl",b.setAttribute("role","presentation"),a.appendChild(b),b=i.createElement("A"),b.className="jstree-anchor",b.setAttribute("href","#"),b.setAttribute("tabindex","-1"),c=i.createElement("I"),c.className="jstree-icon jstree-themeicon",c.setAttribute("role","presentation"),b.appendChild(c),a.appendChild(b),b=c=null,a},teardown:function(){this.unbind(),this.element.removeClass("jstree").removeData("jstree").find("[class^='jstree']").addBack().attr("class",function(){return this.className.replace(/jstree[^ ]*|$/gi,"")}),this.element=null},bind:function(){var b="",c=null,d=0;this.element.on("dblclick.jstree",function(a){if(a.target.tagName&&"input"===a.target.tagName.toLowerCase())return!0;if(i.selection&&i.selection.empty)i.selection.empty();else if(window.getSelection){var b=window.getSelection();try{b.removeAllRanges(),b.collapse()}catch(c){}}}).on("mousedown.jstree",a.proxy(function(a){a.target===this.element[0]&&(a.preventDefault(),d=+new Date)},this)).on("mousedown.jstree",".jstree-ocl",function(a){a.preventDefault()}).on("click.jstree",".jstree-ocl",a.proxy(function(a){this.toggle_node(a.target)},this)).on("dblclick.jstree",".jstree-anchor",a.proxy(function(a){return a.target.tagName&&"input"===a.target.tagName.toLowerCase()?!0:void(this.settings.core.dblclick_toggle&&this.toggle_node(a.target))},this)).on("click.jstree",".jstree-anchor",a.proxy(function(b){b.preventDefault(),b.currentTarget!==i.activeElement&&a(b.currentTarget).focus(),this.activate_node(b.currentTarget,b)},this)).on("keydown.jstree",".jstree-anchor",a.proxy(function(b){if(b.target.tagName&&"input"===b.target.tagName.toLowerCase())return!0;if(32!==b.which&&13!==b.which&&(b.shiftKey||b.ctrlKey||b.altKey||b.metaKey))return!0;var c=null;switch(this._data.core.rtl&&(37===b.which?b.which=39:39===b.which&&(b.which=37)),b.which){case 32:b.ctrlKey&&(b.type="click",a(b.currentTarget).trigger(b));break;case 13:b.type="click",a(b.currentTarget).trigger(b);break;case 37:b.preventDefault(),this.is_open(b.currentTarget)?this.close_node(b.currentTarget):(c=this.get_parent(b.currentTarget),c&&c.id!==a.jstree.root&&this.get_node(c,!0).children(".jstree-anchor").focus());break;case 38:b.preventDefault(),c=this.get_prev_dom(b.currentTarget),c&&c.length&&c.children(".jstree-anchor").focus();break;case 39:b.preventDefault(),this.is_closed(b.currentTarget)?this.open_node(b.currentTarget,function(a){this.get_node(a,!0).children(".jstree-anchor").focus()}):this.is_open(b.currentTarget)&&(c=this.get_node(b.currentTarget,!0).children(".jstree-children")[0],c&&a(this._firstChild(c)).children(".jstree-anchor").focus());break;case 40:b.preventDefault(),c=this.get_next_dom(b.currentTarget),c&&c.length&&c.children(".jstree-anchor").focus();break;case 106:this.open_all();break;case 36:b.preventDefault(),c=this._firstChild(this.get_container_ul()[0]),c&&a(c).children(".jstree-anchor").filter(":visible").focus();break;case 35:b.preventDefault(),this.element.find(".jstree-anchor").filter(":visible").last().focus();break;case 113:b.preventDefault(),this.edit(b.currentTarget)}},this)).on("load_node.jstree",a.proxy(function(b,c){c.status&&(c.node.id!==a.jstree.root||this._data.core.loaded||(this._data.core.loaded=!0,this._firstChild(this.get_container_ul()[0])&&this.element.attr("aria-activedescendant",this._firstChild(this.get_container_ul()[0]).id),this.trigger("loaded")),this._data.core.ready||setTimeout(a.proxy(function(){if(this.element&&!this.get_container_ul().find(".jstree-loading").length){if(this._data.core.ready=!0,this._data.core.selected.length){if(this.settings.core.expand_selected_onload){var b=[],c,d;for(c=0,d=this._data.core.selected.length;d>c;c++)b=b.concat(this._model.data[this._data.core.selected[c]].parents);for(b=a.vakata.array_unique(b),c=0,d=b.length;d>c;c++)this.open_node(b[c],!1,0)}this.trigger("changed",{action:"ready",selected:this._data.core.selected})}this.trigger("ready")}},this),0))},this)).on("keypress.jstree",a.proxy(function(d){if(d.target.tagName&&"input"===d.target.tagName.toLowerCase())return!0;c&&clearTimeout(c),c=setTimeout(function(){b=""},500);var e=String.fromCharCode(d.which).toLowerCase(),f=this.element.find(".jstree-anchor").filter(":visible"),g=f.index(i.activeElement)||0,h=!1;if(b+=e,b.length>1){if(f.slice(g).each(a.proxy(function(c,d){return 0===a(d).text().toLowerCase().indexOf(b)?(a(d).focus(),h=!0,!1):void 0},this)),h)return;if(f.slice(0,g).each(a.proxy(function(c,d){return 0===a(d).text().toLowerCase().indexOf(b)?(a(d).focus(),h=!0,!1):void 0},this)),h)return}if(new RegExp("^"+e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")+"+$").test(b)){if(f.slice(g+1).each(a.proxy(function(b,c){return a(c).text().toLowerCase().charAt(0)===e?(a(c).focus(),h=!0,!1):void 0},this)),h)return;if(f.slice(0,g+1).each(a.proxy(function(b,c){return a(c).text().toLowerCase().charAt(0)===e?(a(c).focus(),h=!0,!1):void 0},this)),h)return}},this)).on("init.jstree",a.proxy(function(){var a=this.settings.core.themes;this._data.core.themes.dots=a.dots,this._data.core.themes.stripes=a.stripes,this._data.core.themes.icons=a.icons,this._data.core.themes.ellipsis=a.ellipsis,this.set_theme(a.name||"default",a.url),this.set_theme_variant(a.variant)},this)).on("loading.jstree",a.proxy(function(){this[this._data.core.themes.dots?"show_dots":"hide_dots"](),this[this._data.core.themes.icons?"show_icons":"hide_icons"](),this[this._data.core.themes.stripes?"show_stripes":"hide_stripes"](),this[this._data.core.themes.ellipsis?"show_ellipsis":"hide_ellipsis"]()},this)).on("blur.jstree",".jstree-anchor",a.proxy(function(b){this._data.core.focused=null,a(b.currentTarget).filter(".jstree-hovered").mouseleave(),this.element.attr("tabindex","0")},this)).on("focus.jstree",".jstree-anchor",a.proxy(function(b){var c=this.get_node(b.currentTarget);c&&c.id&&(this._data.core.focused=c.id),this.element.find(".jstree-hovered").not(b.currentTarget).mouseleave(),a(b.currentTarget).mouseenter(),this.element.attr("tabindex","-1")},this)).on("focus.jstree",a.proxy(function(){if(+new Date-d>500&&!this._data.core.focused){d=0;var a=this.get_node(this.element.attr("aria-activedescendant"),!0);a&&a.find("> .jstree-anchor").focus()}},this)).on("mouseenter.jstree",".jstree-anchor",a.proxy(function(a){this.hover_node(a.currentTarget)},this)).on("mouseleave.jstree",".jstree-anchor",a.proxy(function(a){this.dehover_node(a.currentTarget)},this))},unbind:function(){this.element.off(".jstree"),a(i).off(".jstree-"+this._id)},trigger:function(a,b){b||(b={}),b.instance=this,this.element.triggerHandler(a.replace(".jstree","")+".jstree",b)},get_container:function(){return this.element},get_container_ul:function(){return this.element.children(".jstree-children").first()},get_string:function(b){var c=this.settings.core.strings;return a.isFunction(c)?c.call(this,b):c&&c[b]?c[b]:b},_firstChild:function(a){a=a?a.firstChild:null;while(null!==a&&1!==a.nodeType)a=a.nextSibling;return a},_nextSibling:function(a){a=a?a.nextSibling:null;while(null!==a&&1!==a.nodeType)a=a.nextSibling;return a},_previousSibling:function(a){a=a?a.previousSibling:null;while(null!==a&&1!==a.nodeType)a=a.previousSibling;return a},get_node:function(b,c){b&&b.id&&(b=b.id);var d;try{if(this._model.data[b])b=this._model.data[b];else if("string"==typeof b&&this._model.data[b.replace(/^#/,"")])b=this._model.data[b.replace(/^#/,"")];else if("string"==typeof b&&(d=a("#"+b.replace(a.jstree.idregex,"\\$&"),this.element)).length&&this._model.data[d.closest(".jstree-node").attr("id")])b=this._model.data[d.closest(".jstree-node").attr("id")];else if((d=a(b,this.element)).length&&this._model.data[d.closest(".jstree-node").attr("id")])b=this._model.data[d.closest(".jstree-node").attr("id")];else{if(!(d=a(b,this.element)).length||!d.hasClass("jstree"))return!1;b=this._model.data[a.jstree.root]}return c&&(b=b.id===a.jstree.root?this.element:a("#"+b.id.replace(a.jstree.idregex,"\\$&"),this.element)),b}catch(e){return!1}},get_path:function(b,c,d){if(b=b.parents?b:this.get_node(b),!b||b.id===a.jstree.root||!b.parents)return!1;var e,f,g=[];for(g.push(d?b.id:b.text),e=0,f=b.parents.length;f>e;e++)g.push(d?b.parents[e]:this.get_text(b.parents[e]));return g=g.reverse().slice(1),c?g.join(c):g},get_next_dom:function(b,c){var d;if(b=this.get_node(b,!0),b[0]===this.element[0]){d=this._firstChild(this.get_container_ul()[0]);while(d&&0===d.offsetHeight)d=this._nextSibling(d);return d?a(d):!1}if(!b||!b.length)return!1;if(c){d=b[0];do d=this._nextSibling(d);while(d&&0===d.offsetHeight);return d?a(d):!1}if(b.hasClass("jstree-open")){d=this._firstChild(b.children(".jstree-children")[0]);while(d&&0===d.offsetHeight)d=this._nextSibling(d);if(null!==d)return a(d)}d=b[0];do d=this._nextSibling(d);while(d&&0===d.offsetHeight);return null!==d?a(d):b.parentsUntil(".jstree",".jstree-node").nextAll(".jstree-node:visible").first()},get_prev_dom:function(b,c){var d;if(b=this.get_node(b,!0),b[0]===this.element[0]){d=this.get_container_ul()[0].lastChild;while(d&&0===d.offsetHeight)d=this._previousSibling(d);return d?a(d):!1}if(!b||!b.length)return!1;if(c){d=b[0];do d=this._previousSibling(d);while(d&&0===d.offsetHeight);return d?a(d):!1}d=b[0];do d=this._previousSibling(d);while(d&&0===d.offsetHeight);if(null!==d){b=a(d);while(b.hasClass("jstree-open"))b=b.children(".jstree-children").first().children(".jstree-node:visible:last");return b}return d=b[0].parentNode.parentNode,d&&d.className&&-1!==d.className.indexOf("jstree-node")?a(d):!1},get_parent:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.parent:!1},get_children_dom:function(a){return a=this.get_node(a,!0),a[0]===this.element[0]?this.get_container_ul().children(".jstree-node"):a&&a.length?a.children(".jstree-children").children(".jstree-node"):!1},is_parent:function(a){return a=this.get_node(a),a&&(a.state.loaded===!1||a.children.length>0)},is_loaded:function(a){return a=this.get_node(a),a&&a.state.loaded},is_loading:function(a){return a=this.get_node(a),a&&a.state&&a.state.loading},is_open:function(a){return a=this.get_node(a),a&&a.state.opened},is_closed:function(a){return a=this.get_node(a),a&&this.is_parent(a)&&!a.state.opened},is_leaf:function(a){return!this.is_parent(a)},load_node:function(b,c){var d,e,f,g,h;if(a.isArray(b))return this._load_nodes(b.slice(),c),!0;if(b=this.get_node(b),!b)return c&&c.call(this,b,!1),!1;if(b.state.loaded){for(b.state.loaded=!1,f=0,g=b.parents.length;g>f;f++)this._model.data[b.parents[f]].children_d=a.vakata.array_filter(this._model.data[b.parents[f]].children_d,function(c){return-1===a.inArray(c,b.children_d)});for(d=0,e=b.children_d.length;e>d;d++)this._model.data[b.children_d[d]].state.selected&&(h=!0),delete this._model.data[b.children_d[d]];h&&(this._data.core.selected=a.vakata.array_filter(this._data.core.selected,function(c){return-1===a.inArray(c,b.children_d)})),b.children=[],b.children_d=[],h&&this.trigger("changed",{action:"load_node",node:b,selected:this._data.core.selected})}return b.state.failed=!1,b.state.loading=!0,this.get_node(b,!0).addClass("jstree-loading").attr("aria-busy",!0),this._load_node(b,a.proxy(function(a){b=this._model.data[b.id],b.state.loading=!1,b.state.loaded=a,b.state.failed=!b.state.loaded;var d=this.get_node(b,!0),e=0,f=0,g=this._model.data,h=!1;for(e=0,f=b.children.length;f>e;e++)if(g[b.children[e]]&&!g[b.children[e]].state.hidden){h=!0;break}b.state.loaded&&d&&d.length&&(d.removeClass("jstree-closed jstree-open jstree-leaf"),h?"#"!==b.id&&d.addClass(b.state.opened?"jstree-open":"jstree-closed"):d.addClass("jstree-leaf")),d.removeClass("jstree-loading").attr("aria-busy",!1),this.trigger("load_node",{node:b,status:a}),c&&c.call(this,b,a)},this)),!0},_load_nodes:function(a,b,c,d){var e=!0,f=function(){this._load_nodes(a,b,!0)},g=this._model.data,h,i,j=[];for(h=0,i=a.length;i>h;h++)g[a[h]]&&(!g[a[h]].state.loaded&&!g[a[h]].state.failed||!c&&d)&&(this.is_loading(a[h])||this.load_node(a[h],f),e=!1);if(e){for(h=0,i=a.length;i>h;h++)g[a[h]]&&g[a[h]].state.loaded&&j.push(a[h]);b&&!b.done&&(b.call(this,j),b.done=!0)}},load_all:function(b,c){if(b||(b=a.jstree.root),b=this.get_node(b),!b)return!1;var d=[],e=this._model.data,f=e[b.id].children_d,g,h;for(b.state&&!b.state.loaded&&d.push(b.id),g=0,h=f.length;h>g;g++)e[f[g]]&&e[f[g]].state&&!e[f[g]].state.loaded&&d.push(f[g]);d.length?this._load_nodes(d,function(){this.load_all(b,c)}):(c&&c.call(this,b),this.trigger("load_all",{node:b}))},_load_node:function(b,c){var d=this.settings.core.data,e,f=function g(){return 3!==this.nodeType&&8!==this.nodeType};return d?a.isFunction(d)?d.call(this,b,a.proxy(function(d){d===!1?c.call(this,!1):this["string"==typeof d?"_append_html_data":"_append_json_data"](b,"string"==typeof d?a(a.parseHTML(d)).filter(f):d,function(a){c.call(this,a)})},this)):"object"==typeof d?d.url?(d=a.extend(!0,{},d),a.isFunction(d.url)&&(d.url=d.url.call(this,b)),a.isFunction(d.data)&&(d.data=d.data.call(this,b)),a.ajax(d).done(a.proxy(function(d,e,g){var h=g.getResponseHeader("Content-Type");return h&&-1!==h.indexOf("json")||"object"==typeof d?this._append_json_data(b,d,function(a){c.call(this,a)}):h&&-1!==h.indexOf("html")||"string"==typeof d?this._append_html_data(b,a(a.parseHTML(d)).filter(f),function(a){c.call(this,a)}):(this._data.core.last_error={error:"ajax",plugin:"core",id:"core_04",reason:"Could not load node",data:JSON.stringify({id:b.id,xhr:g})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1))},this)).fail(a.proxy(function(a){this._data.core.last_error={error:"ajax",plugin:"core",id:"core_04",reason:"Could not load node",data:JSON.stringify({id:b.id,xhr:a})},c.call(this,!1),this.settings.core.error.call(this,this._data.core.last_error)},this))):(e=a.isArray(d)?a.extend(!0,[],d):a.isPlainObject(d)?a.extend(!0,{},d):d,b.id===a.jstree.root?this._append_json_data(b,e,function(a){c.call(this,a)}):(this._data.core.last_error={error:"nodata",plugin:"core",id:"core_05",reason:"Could not load node",data:JSON.stringify({id:b.id})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1))):"string"==typeof d?b.id===a.jstree.root?this._append_html_data(b,a(a.parseHTML(d)).filter(f),function(a){c.call(this,a)}):(this._data.core.last_error={error:"nodata",plugin:"core",id:"core_06",reason:"Could not load node",data:JSON.stringify({id:b.id})},this.settings.core.error.call(this,this._data.core.last_error),c.call(this,!1)):c.call(this,!1):b.id===a.jstree.root?this._append_html_data(b,this._data.core.original_container_html.clone(!0),function(a){c.call(this,a)}):c.call(this,!1)},_node_changed:function(a){a=this.get_node(a),a&&this._model.changed.push(a.id)},_append_html_data:function(b,c,d){b=this.get_node(b),b.children=[],b.children_d=[];var e=c.is("ul")?c.children():c,f=b.id,g=[],h=[],i=this._model.data,j=i[f],k=this._data.core.selected.length,l,m,n;for(e.each(a.proxy(function(b,c){l=this._parse_model_from_html(a(c),f,j.parents.concat()),l&&(g.push(l),h.push(l),i[l].children_d.length&&(h=h.concat(i[l].children_d)))},this)),j.children=g,j.children_d=h,m=0,n=j.parents.length;n>m;m++)i[j.parents[m]].children_d=i[j.parents[m]].children_d.concat(h);this.trigger("model",{nodes:h,parent:f}),f!==a.jstree.root?(this._node_changed(f),this.redraw()):(this.get_container_ul().children(".jstree-initial-node").remove(),this.redraw(!0)),this._data.core.selected.length!==k&&this.trigger("changed",{action:"model",selected:this._data.core.selected}),d.call(this,!0)},_append_json_data:function(b,c,d,e){if(null!==this.element){b=this.get_node(b),b.children=[],b.children_d=[],c.d&&(c=c.d,"string"==typeof c&&(c=JSON.parse(c))),a.isArray(c)||(c=[c]);var f=null,g={df:this._model.default_state,dat:c,par:b.id,m:this._model.data,t_id:this._id,t_cnt:this._cnt,sel:this._data.core.selected},h=function(a,b){a.data&&(a=a.data);var c=a.dat,d=a.par,e=[],f=[],g=[],h=a.df,i=a.t_id,j=a.t_cnt,k=a.m,l=k[d],m=a.sel,n,o,p,q,r=function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=a.id.toString(),f,i,j,l,m={id:e,text:a.text||"",icon:a.icon!==b?a.icon:!0,parent:c,parents:d,children:a.children||[],children_d:a.children_d||[],data:a.data,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(f in h)h.hasOwnProperty(f)&&(m.state[f]=h[f]);if(a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(m.icon=a.data.jstree.icon),(m.icon===b||null===m.icon||""===m.icon)&&(m.icon=!0),a&&a.data&&(m.data=a.data,a.data.jstree))for(f in a.data.jstree)a.data.jstree.hasOwnProperty(f)&&(m.state[f]=a.data.jstree[f]);if(a&&"object"==typeof a.state)for(f in a.state)a.state.hasOwnProperty(f)&&(m.state[f]=a.state[f]);if(a&&"object"==typeof a.li_attr)for(f in a.li_attr)a.li_attr.hasOwnProperty(f)&&(m.li_attr[f]=a.li_attr[f]);if(m.li_attr.id||(m.li_attr.id=e),a&&"object"==typeof a.a_attr)for(f in a.a_attr)a.a_attr.hasOwnProperty(f)&&(m.a_attr[f]=a.a_attr[f]);for(a&&a.children&&a.children===!0&&(m.state.loaded=!1,m.children=[],m.children_d=[]),k[m.id]=m,f=0,i=m.children.length;i>f;f++)j=r(k[m.children[f]],m.id,d),l=k[j],m.children_d.push(j),l.children_d.length&&(m.children_d=m.children_d.concat(l.children_d));return delete a.data,delete a.children,k[m.id].original=a,m.state.selected&&g.push(m.id),m.id},s=function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=!1,f,l,m,n,o;do e="j"+i+"_"+ ++j;while(k[e]);o={id:!1,text:"string"==typeof a?a:"",icon:"object"==typeof a&&a.icon!==b?a.icon:!0,parent:c,parents:d,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(f in h)h.hasOwnProperty(f)&&(o.state[f]=h[f]);if(a&&a.id&&(o.id=a.id.toString()),a&&a.text&&(o.text=a.text),a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(o.icon=a.data.jstree.icon),(o.icon===b||null===o.icon||""===o.icon)&&(o.icon=!0),a&&a.data&&(o.data=a.data,a.data.jstree))for(f in a.data.jstree)a.data.jstree.hasOwnProperty(f)&&(o.state[f]=a.data.jstree[f]);if(a&&"object"==typeof a.state)for(f in a.state)a.state.hasOwnProperty(f)&&(o.state[f]=a.state[f]);if(a&&"object"==typeof a.li_attr)for(f in a.li_attr)a.li_attr.hasOwnProperty(f)&&(o.li_attr[f]=a.li_attr[f]);if(o.li_attr.id&&!o.id&&(o.id=o.li_attr.id.toString()),o.id||(o.id=e),o.li_attr.id||(o.li_attr.id=o.id),a&&"object"==typeof a.a_attr)for(f in a.a_attr)a.a_attr.hasOwnProperty(f)&&(o.a_attr[f]=a.a_attr[f]);if(a&&a.children&&a.children.length){for(f=0,l=a.children.length;l>f;f++)m=s(a.children[f],o.id,d),n=k[m],o.children.push(m),n.children_d.length&&(o.children_d=o.children_d.concat(n.children_d));o.children_d=o.children_d.concat(o.children)}return a&&a.children&&a.children===!0&&(o.state.loaded=!1,o.children=[],o.children_d=[]),delete a.data,delete a.children,o.original=a,k[o.id]=o,o.state.selected&&g.push(o.id),o.id};if(c.length&&c[0].id!==b&&c[0].parent!==b){for(o=0,p=c.length;p>o;o++)c[o].children||(c[o].children=[]),k[c[o].id.toString()]=c[o];for(o=0,p=c.length;p>o;o++)k[c[o].parent.toString()].children.push(c[o].id.toString()),l.children_d.push(c[o].id.toString());for(o=0,p=l.children.length;p>o;o++)n=r(k[l.children[o]],d,l.parents.concat()),f.push(n),k[n].children_d.length&&(f=f.concat(k[n].children_d));for(o=0,p=l.parents.length;p>o;o++)k[l.parents[o]].children_d=k[l.parents[o]].children_d.concat(f);q={cnt:j,mod:k,sel:m,par:d,dpc:f,add:g}}else{for(o=0,p=c.length;p>o;o++)n=s(c[o],d,l.parents.concat()),n&&(e.push(n),f.push(n),k[n].children_d.length&&(f=f.concat(k[n].children_d)));for(l.children=e,l.children_d=f,o=0,p=l.parents.length;p>o;o++)k[l.parents[o]].children_d=k[l.parents[o]].children_d.concat(f);q={cnt:j,mod:k,sel:m,par:d,dpc:f,add:g}}return"undefined"!=typeof window&&"undefined"!=typeof window.document?q:void postMessage(q)},i=function(b,c){if(null!==this.element){this._cnt=b.cnt;var e,f=this._model.data;for(e in f)f.hasOwnProperty(e)&&f[e].state&&f[e].state.loading&&b.mod[e]&&(b.mod[e].state.loading=!0);if(this._model.data=b.mod,c){var g,h=b.add,i=b.sel,j=this._data.core.selected.slice();if(f=this._model.data,i.length!==j.length||a.vakata.array_unique(i.concat(j)).length!==i.length){for(e=0,g=i.length;g>e;e++)-1===a.inArray(i[e],h)&&-1===a.inArray(i[e],j)&&(f[i[e]].state.selected=!1);for(e=0,g=j.length;g>e;e++)-1===a.inArray(j[e],i)&&(f[j[e]].state.selected=!0)}}b.add.length&&(this._data.core.selected=this._data.core.selected.concat(b.add)),this.trigger("model",{nodes:b.dpc,parent:b.par}),b.par!==a.jstree.root?(this._node_changed(b.par),this.redraw()):this.redraw(!0),b.add.length&&this.trigger("changed",{action:"model",selected:this._data.core.selected}),d.call(this,!0)}};if(this.settings.core.worker&&window.Blob&&window.URL&&window.Worker)try{null===this._wrk&&(this._wrk=window.URL.createObjectURL(new window.Blob(["self.onmessage = "+h.toString()],{type:"text/javascript"}))),!this._data.core.working||e?(this._data.core.working=!0,f=new window.Worker(this._wrk),f.onmessage=a.proxy(function(a){i.call(this,a.data,!0);try{f.terminate(),f=null}catch(b){}this._data.core.worker_queue.length?this._append_json_data.apply(this,this._data.core.worker_queue.shift()):this._data.core.working=!1},this),g.par?f.postMessage(g):this._data.core.worker_queue.length?this._append_json_data.apply(this,this._data.core.worker_queue.shift()):this._data.core.working=!1):this._data.core.worker_queue.push([b,c,d,!0])}catch(j){i.call(this,h(g),!1),this._data.core.worker_queue.length?this._append_json_data.apply(this,this._data.core.worker_queue.shift()):this._data.core.working=!1}else i.call(this,h(g),!1)}},_parse_model_from_html:function(c,d,e){e=e?[].concat(e):[],d&&e.unshift(d);var f,g,h=this._model.data,i={id:!1,text:!1,icon:!0,parent:d,parents:e,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1},j,k,l;for(j in this._model.default_state)this._model.default_state.hasOwnProperty(j)&&(i.state[j]=this._model.default_state[j]);if(k=a.vakata.attributes(c,!0),a.each(k,function(b,c){return c=a.trim(c),c.length?(i.li_attr[b]=c,void("id"===b&&(i.id=c.toString()))):!0}),k=c.children("a").first(),k.length&&(k=a.vakata.attributes(k,!0),a.each(k,function(b,c){c=a.trim(c),c.length&&(i.a_attr[b]=c)})),k=c.children("a").first().length?c.children("a").first().clone():c.clone(),k.children("ins, i, ul").remove(),k=k.html(),k=a("<div />").html(k),i.text=this.settings.core.force_text?k.text():k.html(),k=c.data(),i.data=k?a.extend(!0,{},k):null,i.state.opened=c.hasClass("jstree-open"),i.state.selected=c.children("a").hasClass("jstree-clicked"),i.state.disabled=c.children("a").hasClass("jstree-disabled"),i.data&&i.data.jstree)for(j in i.data.jstree)i.data.jstree.hasOwnProperty(j)&&(i.state[j]=i.data.jstree[j]);k=c.children("a").children(".jstree-themeicon"),k.length&&(i.icon=k.hasClass("jstree-themeicon-hidden")?!1:k.attr("rel")),i.state.icon!==b&&(i.icon=i.state.icon),(i.icon===b||null===i.icon||""===i.icon)&&(i.icon=!0),k=c.children("ul").children("li");do l="j"+this._id+"_"+ ++this._cnt;while(h[l]);return i.id=i.li_attr.id?i.li_attr.id.toString():l,k.length?(k.each(a.proxy(function(b,c){f=this._parse_model_from_html(a(c),i.id,e),g=this._model.data[f],i.children.push(f),g.children_d.length&&(i.children_d=i.children_d.concat(g.children_d))},this)),i.children_d=i.children_d.concat(i.children)):c.hasClass("jstree-closed")&&(i.state.loaded=!1),i.li_attr["class"]&&(i.li_attr["class"]=i.li_attr["class"].replace("jstree-closed","").replace("jstree-open","")),i.a_attr["class"]&&(i.a_attr["class"]=i.a_attr["class"].replace("jstree-clicked","").replace("jstree-disabled","")),h[i.id]=i,i.state.selected&&this._data.core.selected.push(i.id),i.id},_parse_model_from_flat_json:function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=a.id.toString(),f=this._model.data,g=this._model.default_state,h,i,j,k,l={id:e,text:a.text||"",icon:a.icon!==b?a.icon:!0,parent:c,parents:d,children:a.children||[],children_d:a.children_d||[],data:a.data,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(h in g)g.hasOwnProperty(h)&&(l.state[h]=g[h]);if(a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(l.icon=a.data.jstree.icon),(l.icon===b||null===l.icon||""===l.icon)&&(l.icon=!0),a&&a.data&&(l.data=a.data,a.data.jstree))for(h in a.data.jstree)a.data.jstree.hasOwnProperty(h)&&(l.state[h]=a.data.jstree[h]);if(a&&"object"==typeof a.state)for(h in a.state)a.state.hasOwnProperty(h)&&(l.state[h]=a.state[h]);if(a&&"object"==typeof a.li_attr)for(h in a.li_attr)a.li_attr.hasOwnProperty(h)&&(l.li_attr[h]=a.li_attr[h]);if(l.li_attr.id||(l.li_attr.id=e),a&&"object"==typeof a.a_attr)for(h in a.a_attr)a.a_attr.hasOwnProperty(h)&&(l.a_attr[h]=a.a_attr[h]);for(a&&a.children&&a.children===!0&&(l.state.loaded=!1,l.children=[],l.children_d=[]),f[l.id]=l,h=0,i=l.children.length;i>h;h++)j=this._parse_model_from_flat_json(f[l.children[h]],l.id,d),k=f[j],l.children_d.push(j),k.children_d.length&&(l.children_d=l.children_d.concat(k.children_d));return delete a.data,delete a.children,f[l.id].original=a,l.state.selected&&this._data.core.selected.push(l.id),l.id},_parse_model_from_json:function(a,c,d){d=d?d.concat():[],c&&d.unshift(c);var e=!1,f,g,h,i,j=this._model.data,k=this._model.default_state,l;do e="j"+this._id+"_"+ ++this._cnt;while(j[e]);l={id:!1,text:"string"==typeof a?a:"",icon:"object"==typeof a&&a.icon!==b?a.icon:!0,parent:c,parents:d,children:[],children_d:[],data:null,state:{},li_attr:{id:!1},a_attr:{href:"#"},original:!1};for(f in k)k.hasOwnProperty(f)&&(l.state[f]=k[f]);if(a&&a.id&&(l.id=a.id.toString()),a&&a.text&&(l.text=a.text),a&&a.data&&a.data.jstree&&a.data.jstree.icon&&(l.icon=a.data.jstree.icon),(l.icon===b||null===l.icon||""===l.icon)&&(l.icon=!0),a&&a.data&&(l.data=a.data,a.data.jstree))for(f in a.data.jstree)a.data.jstree.hasOwnProperty(f)&&(l.state[f]=a.data.jstree[f]);if(a&&"object"==typeof a.state)for(f in a.state)a.state.hasOwnProperty(f)&&(l.state[f]=a.state[f]);if(a&&"object"==typeof a.li_attr)for(f in a.li_attr)a.li_attr.hasOwnProperty(f)&&(l.li_attr[f]=a.li_attr[f]);if(l.li_attr.id&&!l.id&&(l.id=l.li_attr.id.toString()),l.id||(l.id=e),l.li_attr.id||(l.li_attr.id=l.id),a&&"object"==typeof a.a_attr)for(f in a.a_attr)a.a_attr.hasOwnProperty(f)&&(l.a_attr[f]=a.a_attr[f]);if(a&&a.children&&a.children.length){for(f=0,g=a.children.length;g>f;f++)h=this._parse_model_from_json(a.children[f],l.id,d),i=j[h],l.children.push(h),i.children_d.length&&(l.children_d=l.children_d.concat(i.children_d));l.children_d=l.children_d.concat(l.children)}return a&&a.children&&a.children===!0&&(l.state.loaded=!1,l.children=[],l.children_d=[]),delete a.data,delete a.children,l.original=a,j[l.id]=l,l.state.selected&&this._data.core.selected.push(l.id),l.id},_redraw:function(){var b=this._model.force_full_redraw?this._model.data[a.jstree.root].children.concat([]):this._model.changed.concat([]),c=i.createElement("UL"),d,e,f,g=this._data.core.focused;for(e=0,f=b.length;f>e;e++)d=this.redraw_node(b[e],!0,this._model.force_full_redraw),d&&this._model.force_full_redraw&&c.appendChild(d);this._model.force_full_redraw&&(c.className=this.get_container_ul()[0].className,c.setAttribute("role","group"),this.element.empty().append(c)),null!==g&&(d=this.get_node(g,!0),d&&d.length&&d.children(".jstree-anchor")[0]!==i.activeElement?d.children(".jstree-anchor").focus():this._data.core.focused=null),this._model.force_full_redraw=!1,this._model.changed=[],this.trigger("redraw",{nodes:b})},redraw:function(a){a&&(this._model.force_full_redraw=!0),this._redraw()},draw_children:function(b){var c=this.get_node(b),d=!1,e=!1,f=!1,g=i;if(!c)return!1;if(c.id===a.jstree.root)return this.redraw(!0);if(b=this.get_node(b,!0),!b||!b.length)return!1;if(b.children(".jstree-children").remove(),b=b[0],c.children.length&&c.state.loaded){for(f=g.createElement("UL"),f.setAttribute("role","group"),f.className="jstree-children",d=0,e=c.children.length;e>d;d++)f.appendChild(this.redraw_node(c.children[d],!0,!0));b.appendChild(f)}},redraw_node:function(b,c,d,e){
3
+ var f=this.get_node(b),g=!1,h=!1,j=!1,k=!1,l=!1,m=!1,n="",o=i,p=this._model.data,q=!1,r=!1,s=null,t=0,u=0,v=!1,w=!1;if(!f)return!1;if(f.id===a.jstree.root)return this.redraw(!0);if(c=c||0===f.children.length,b=i.querySelector?this.element[0].querySelector("#"+(-1!=="0123456789".indexOf(f.id[0])?"\\3"+f.id[0]+" "+f.id.substr(1).replace(a.jstree.idregex,"\\$&"):f.id.replace(a.jstree.idregex,"\\$&"))):i.getElementById(f.id))b=a(b),d||(g=b.parent().parent()[0],g===this.element[0]&&(g=null),h=b.index()),c||!f.children.length||b.children(".jstree-children").length||(c=!0),c||(j=b.children(".jstree-children")[0]),q=b.children(".jstree-anchor")[0]===i.activeElement,b.remove();else if(c=!0,!d){if(g=f.parent!==a.jstree.root?a("#"+f.parent.replace(a.jstree.idregex,"\\$&"),this.element)[0]:null,!(null===g||g&&p[f.parent].state.opened))return!1;h=a.inArray(f.id,null===g?p[a.jstree.root].children:p[f.parent].children)}b=this._data.core.node.cloneNode(!0),n="jstree-node ";for(k in f.li_attr)if(f.li_attr.hasOwnProperty(k)){if("id"===k)continue;"class"!==k?b.setAttribute(k,f.li_attr[k]):n+=f.li_attr[k]}for(f.a_attr.id||(f.a_attr.id=f.id+"_anchor"),b.setAttribute("aria-selected",!!f.state.selected),b.setAttribute("aria-level",f.parents.length),b.setAttribute("aria-labelledby",f.a_attr.id),f.state.disabled&&b.setAttribute("aria-disabled",!0),k=0,l=f.children.length;l>k;k++)if(!p[f.children[k]].state.hidden){v=!0;break}if(null!==f.parent&&p[f.parent]&&!f.state.hidden&&(k=a.inArray(f.id,p[f.parent].children),w=f.id,-1!==k))for(k++,l=p[f.parent].children.length;l>k;k++)if(p[p[f.parent].children[k]].state.hidden||(w=p[f.parent].children[k]),w!==f.id)break;f.state.hidden&&(n+=" jstree-hidden"),f.state.loaded&&!v?n+=" jstree-leaf":(n+=f.state.opened&&f.state.loaded?" jstree-open":" jstree-closed",b.setAttribute("aria-expanded",f.state.opened&&f.state.loaded)),w===f.id&&(n+=" jstree-last"),b.id=f.id,b.className=n,n=(f.state.selected?" jstree-clicked":"")+(f.state.disabled?" jstree-disabled":"");for(l in f.a_attr)if(f.a_attr.hasOwnProperty(l)){if("href"===l&&"#"===f.a_attr[l])continue;"class"!==l?b.childNodes[1].setAttribute(l,f.a_attr[l]):n+=" "+f.a_attr[l]}if(n.length&&(b.childNodes[1].className="jstree-anchor "+n),(f.icon&&f.icon!==!0||f.icon===!1)&&(f.icon===!1?b.childNodes[1].childNodes[0].className+=" jstree-themeicon-hidden":-1===f.icon.indexOf("/")&&-1===f.icon.indexOf(".")?b.childNodes[1].childNodes[0].className+=" "+f.icon+" jstree-themeicon-custom":(b.childNodes[1].childNodes[0].style.backgroundImage='url("'+f.icon+'")',b.childNodes[1].childNodes[0].style.backgroundPosition="center center",b.childNodes[1].childNodes[0].style.backgroundSize="auto",b.childNodes[1].childNodes[0].className+=" jstree-themeicon-custom")),this.settings.core.force_text?b.childNodes[1].appendChild(o.createTextNode(f.text)):b.childNodes[1].innerHTML+=f.text,c&&f.children.length&&(f.state.opened||e)&&f.state.loaded){for(m=o.createElement("UL"),m.setAttribute("role","group"),m.className="jstree-children",k=0,l=f.children.length;l>k;k++)m.appendChild(this.redraw_node(f.children[k],c,!0));b.appendChild(m)}if(j&&b.appendChild(j),!d){for(g||(g=this.element[0]),k=0,l=g.childNodes.length;l>k;k++)if(g.childNodes[k]&&g.childNodes[k].className&&-1!==g.childNodes[k].className.indexOf("jstree-children")){s=g.childNodes[k];break}s||(s=o.createElement("UL"),s.setAttribute("role","group"),s.className="jstree-children",g.appendChild(s)),g=s,h<g.childNodes.length?g.insertBefore(b,g.childNodes[h]):g.appendChild(b),q&&(t=this.element[0].scrollTop,u=this.element[0].scrollLeft,b.childNodes[1].focus(),this.element[0].scrollTop=t,this.element[0].scrollLeft=u)}return f.state.opened&&!f.state.loaded&&(f.state.opened=!1,setTimeout(a.proxy(function(){this.open_node(f.id,!1,0)},this),0)),b},open_node:function(c,d,e){var f,g,h,i;if(a.isArray(c)){for(c=c.slice(),f=0,g=c.length;g>f;f++)this.open_node(c[f],d,e);return!0}return c=this.get_node(c),c&&c.id!==a.jstree.root?(e=e===b?this.settings.core.animation:e,this.is_closed(c)?this.is_loaded(c)?(h=this.get_node(c,!0),i=this,h.length&&(e&&h.children(".jstree-children").length&&h.children(".jstree-children").stop(!0,!0),c.children.length&&!this._firstChild(h.children(".jstree-children")[0])&&this.draw_children(c),e?(this.trigger("before_open",{node:c}),h.children(".jstree-children").css("display","none").end().removeClass("jstree-closed").addClass("jstree-open").attr("aria-expanded",!0).children(".jstree-children").stop(!0,!0).slideDown(e,function(){this.style.display="",i.element&&i.trigger("after_open",{node:c})})):(this.trigger("before_open",{node:c}),h[0].className=h[0].className.replace("jstree-closed","jstree-open"),h[0].setAttribute("aria-expanded",!0))),c.state.opened=!0,d&&d.call(this,c,!0),h.length||this.trigger("before_open",{node:c}),this.trigger("open_node",{node:c}),e&&h.length||this.trigger("after_open",{node:c}),!0):this.is_loading(c)?setTimeout(a.proxy(function(){this.open_node(c,d,e)},this),500):void this.load_node(c,function(a,b){return b?this.open_node(a,d,e):d?d.call(this,a,!1):!1}):(d&&d.call(this,c,!1),!1)):!1},_open_to:function(b){if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;var c,d,e=b.parents;for(c=0,d=e.length;d>c;c+=1)c!==a.jstree.root&&this.open_node(e[c],!1,0);return a("#"+b.id.replace(a.jstree.idregex,"\\$&"),this.element)},close_node:function(c,d){var e,f,g,h;if(a.isArray(c)){for(c=c.slice(),e=0,f=c.length;f>e;e++)this.close_node(c[e],d);return!0}return c=this.get_node(c),c&&c.id!==a.jstree.root?this.is_closed(c)?!1:(d=d===b?this.settings.core.animation:d,g=this,h=this.get_node(c,!0),c.state.opened=!1,this.trigger("close_node",{node:c}),void(h.length?d?h.children(".jstree-children").attr("style","display:block !important").end().removeClass("jstree-open").addClass("jstree-closed").attr("aria-expanded",!1).children(".jstree-children").stop(!0,!0).slideUp(d,function(){this.style.display="",h.children(".jstree-children").remove(),g.element&&g.trigger("after_close",{node:c})}):(h[0].className=h[0].className.replace("jstree-open","jstree-closed"),h.attr("aria-expanded",!1).children(".jstree-children").remove(),this.trigger("after_close",{node:c})):this.trigger("after_close",{node:c}))):!1},toggle_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.toggle_node(b[c]);return!0}return this.is_closed(b)?this.open_node(b):this.is_open(b)?this.close_node(b):void 0},open_all:function(b,c,d){if(b||(b=a.jstree.root),b=this.get_node(b),!b)return!1;var e=b.id===a.jstree.root?this.get_container_ul():this.get_node(b,!0),f,g,h;if(!e.length){for(f=0,g=b.children_d.length;g>f;f++)this.is_closed(this._model.data[b.children_d[f]])&&(this._model.data[b.children_d[f]].state.opened=!0);return this.trigger("open_all",{node:b})}d=d||e,h=this,e=this.is_closed(b)?e.find(".jstree-closed").addBack():e.find(".jstree-closed"),e.each(function(){h.open_node(this,function(a,b){b&&this.is_parent(a)&&this.open_all(a,c,d)},c||0)}),0===d.find(".jstree-closed").length&&this.trigger("open_all",{node:this.get_node(d)})},close_all:function(b,c){if(b||(b=a.jstree.root),b=this.get_node(b),!b)return!1;var d=b.id===a.jstree.root?this.get_container_ul():this.get_node(b,!0),e=this,f,g;for(d.length&&(d=this.is_open(b)?d.find(".jstree-open").addBack():d.find(".jstree-open"),a(d.get().reverse()).each(function(){e.close_node(this,c||0)})),f=0,g=b.children_d.length;g>f;f++)this._model.data[b.children_d[f]].state.opened=!1;this.trigger("close_all",{node:b})},is_disabled:function(a){return a=this.get_node(a),a&&a.state&&a.state.disabled},enable_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.enable_node(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(b.state.disabled=!1,this.get_node(b,!0).children(".jstree-anchor").removeClass("jstree-disabled").attr("aria-disabled",!1),void this.trigger("enable_node",{node:b})):!1},disable_node:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.disable_node(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(b.state.disabled=!0,this.get_node(b,!0).children(".jstree-anchor").addClass("jstree-disabled").attr("aria-disabled",!0),void this.trigger("disable_node",{node:b})):!1},is_hidden:function(a){return a=this.get_node(a),a.state.hidden===!0},hide_node:function(b,c){var d,e;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.hide_node(b[d],!0);return c||this.redraw(),!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?void(b.state.hidden||(b.state.hidden=!0,this._node_changed(b.parent),c||this.redraw(),this.trigger("hide_node",{node:b}))):!1},show_node:function(b,c){var d,e;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.show_node(b[d],!0);return c||this.redraw(),!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?void(b.state.hidden&&(b.state.hidden=!1,this._node_changed(b.parent),c||this.redraw(),this.trigger("show_node",{node:b}))):!1},hide_all:function(b){var c,d=this._model.data,e=[];for(c in d)d.hasOwnProperty(c)&&c!==a.jstree.root&&!d[c].state.hidden&&(d[c].state.hidden=!0,e.push(c));return this._model.force_full_redraw=!0,b||this.redraw(),this.trigger("hide_all",{nodes:e}),e},show_all:function(b){var c,d=this._model.data,e=[];for(c in d)d.hasOwnProperty(c)&&c!==a.jstree.root&&d[c].state.hidden&&(d[c].state.hidden=!1,e.push(c));return this._model.force_full_redraw=!0,b||this.redraw(),this.trigger("show_all",{nodes:e}),e},activate_node:function(a,c){if(this.is_disabled(a))return!1;if(c&&"object"==typeof c||(c={}),this._data.core.last_clicked=this._data.core.last_clicked&&this._data.core.last_clicked.id!==b?this.get_node(this._data.core.last_clicked.id):null,this._data.core.last_clicked&&!this._data.core.last_clicked.state.selected&&(this._data.core.last_clicked=null),!this._data.core.last_clicked&&this._data.core.selected.length&&(this._data.core.last_clicked=this.get_node(this._data.core.selected[this._data.core.selected.length-1])),this.settings.core.multiple&&(c.metaKey||c.ctrlKey||c.shiftKey)&&(!c.shiftKey||this._data.core.last_clicked&&this.get_parent(a)&&this.get_parent(a)===this._data.core.last_clicked.parent))if(c.shiftKey){var d=this.get_node(a).id,e=this._data.core.last_clicked.id,f=this.get_node(this._data.core.last_clicked.parent).children,g=!1,h,i;for(h=0,i=f.length;i>h;h+=1)f[h]===d&&(g=!g),f[h]===e&&(g=!g),this.is_disabled(f[h])||!g&&f[h]!==d&&f[h]!==e?this.deselect_node(f[h],!0,c):this.is_hidden(f[h])||this.select_node(f[h],!0,!1,c);this.trigger("changed",{action:"select_node",node:this.get_node(a),selected:this._data.core.selected,event:c})}else this.is_selected(a)?this.deselect_node(a,!1,c):this.select_node(a,!1,!1,c);else!this.settings.core.multiple&&(c.metaKey||c.ctrlKey||c.shiftKey)&&this.is_selected(a)?this.deselect_node(a,!1,c):(this.deselect_all(!0),this.select_node(a,!1,!1,c),this._data.core.last_clicked=this.get_node(a));this.trigger("activate_node",{node:this.get_node(a),event:c})},hover_node:function(a){if(a=this.get_node(a,!0),!a||!a.length||a.children(".jstree-hovered").length)return!1;var b=this.element.find(".jstree-hovered"),c=this.element;b&&b.length&&this.dehover_node(b),a.children(".jstree-anchor").addClass("jstree-hovered"),this.trigger("hover_node",{node:this.get_node(a)}),setTimeout(function(){c.attr("aria-activedescendant",a[0].id)},0)},dehover_node:function(a){return a=this.get_node(a,!0),a&&a.length&&a.children(".jstree-hovered").length?(a.children(".jstree-anchor").removeClass("jstree-hovered"),void this.trigger("dehover_node",{node:this.get_node(a)})):!1},select_node:function(b,c,d,e){var f,g,h,i;if(a.isArray(b)){for(b=b.slice(),g=0,h=b.length;h>g;g++)this.select_node(b[g],c,d,e);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(f=this.get_node(b,!0),void(b.state.selected||(b.state.selected=!0,this._data.core.selected.push(b.id),d||(f=this._open_to(b)),f&&f.length&&f.attr("aria-selected",!0).children(".jstree-anchor").addClass("jstree-clicked"),this.trigger("select_node",{node:b,selected:this._data.core.selected,event:e}),c||this.trigger("changed",{action:"select_node",node:b,selected:this._data.core.selected,event:e})))):!1},deselect_node:function(b,c,d){var e,f,g;if(a.isArray(b)){for(b=b.slice(),e=0,f=b.length;f>e;e++)this.deselect_node(b[e],c,d);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(g=this.get_node(b,!0),void(b.state.selected&&(b.state.selected=!1,this._data.core.selected=a.vakata.array_remove_item(this._data.core.selected,b.id),g.length&&g.attr("aria-selected",!1).children(".jstree-anchor").removeClass("jstree-clicked"),this.trigger("deselect_node",{node:b,selected:this._data.core.selected,event:d}),c||this.trigger("changed",{action:"deselect_node",node:b,selected:this._data.core.selected,event:d})))):!1},select_all:function(b){var c=this._data.core.selected.concat([]),d,e;for(this._data.core.selected=this._model.data[a.jstree.root].children_d.concat(),d=0,e=this._data.core.selected.length;e>d;d++)this._model.data[this._data.core.selected[d]]&&(this._model.data[this._data.core.selected[d]].state.selected=!0);this.redraw(!0),this.trigger("select_all",{selected:this._data.core.selected}),b||this.trigger("changed",{action:"select_all",selected:this._data.core.selected,old_selection:c})},deselect_all:function(a){var b=this._data.core.selected.concat([]),c,d;for(c=0,d=this._data.core.selected.length;d>c;c++)this._model.data[this._data.core.selected[c]]&&(this._model.data[this._data.core.selected[c]].state.selected=!1);this._data.core.selected=[],this.element.find(".jstree-clicked").removeClass("jstree-clicked").parent().attr("aria-selected",!1),this.trigger("deselect_all",{selected:this._data.core.selected,node:b}),a||this.trigger("changed",{action:"deselect_all",selected:this._data.core.selected,old_selection:b})},is_selected:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.state.selected:!1},get_selected:function(b){return b?a.map(this._data.core.selected,a.proxy(function(a){return this.get_node(a)},this)):this._data.core.selected.slice()},get_top_selected:function(b){var c=this.get_selected(!0),d={},e,f,g,h;for(e=0,f=c.length;f>e;e++)d[c[e].id]=c[e];for(e=0,f=c.length;f>e;e++)for(g=0,h=c[e].children_d.length;h>g;g++)d[c[e].children_d[g]]&&delete d[c[e].children_d[g]];c=[];for(e in d)d.hasOwnProperty(e)&&c.push(e);return b?a.map(c,a.proxy(function(a){return this.get_node(a)},this)):c},get_bottom_selected:function(b){var c=this.get_selected(!0),d=[],e,f;for(e=0,f=c.length;f>e;e++)c[e].children.length||d.push(c[e].id);return b?a.map(d,a.proxy(function(a){return this.get_node(a)},this)):d},get_state:function(){var b={core:{open:[],scroll:{left:this.element.scrollLeft(),top:this.element.scrollTop()},selected:[]}},c;for(c in this._model.data)this._model.data.hasOwnProperty(c)&&c!==a.jstree.root&&(this._model.data[c].state.opened&&b.core.open.push(c),this._model.data[c].state.selected&&b.core.selected.push(c));return b},set_state:function(c,d){if(c){if(c.core&&c.core.selected&&c.core.initial_selection===b&&(c.core.initial_selection=this._data.core.selected.concat([]).sort().join(",")),c.core){var e,f,g,h,i;if(c.core.open)return a.isArray(c.core.open)&&c.core.open.length?this._load_nodes(c.core.open,function(a){this.open_node(a,!1,0),delete c.core.open,this.set_state(c,d)}):(delete c.core.open,this.set_state(c,d)),!1;if(c.core.scroll)return c.core.scroll&&c.core.scroll.left!==b&&this.element.scrollLeft(c.core.scroll.left),c.core.scroll&&c.core.scroll.top!==b&&this.element.scrollTop(c.core.scroll.top),delete c.core.scroll,this.set_state(c,d),!1;if(c.core.selected)return h=this,(c.core.initial_selection===b||c.core.initial_selection===this._data.core.selected.concat([]).sort().join(","))&&(this.deselect_all(),a.each(c.core.selected,function(a,b){h.select_node(b,!1,!0)})),delete c.core.initial_selection,delete c.core.selected,this.set_state(c,d),!1;for(i in c)c.hasOwnProperty(i)&&"core"!==i&&-1===a.inArray(i,this.settings.plugins)&&delete c[i];if(a.isEmptyObject(c.core))return delete c.core,this.set_state(c,d),!1}return a.isEmptyObject(c)?(c=null,d&&d.call(this),this.trigger("set_state"),!1):!0}return!1},refresh:function(b,c){this._data.core.state=c===!0?{}:this.get_state(),c&&a.isFunction(c)&&(this._data.core.state=c.call(this,this._data.core.state)),this._cnt=0,this._model.data={},this._model.data[a.jstree.root]={id:a.jstree.root,parent:null,parents:[],children:[],children_d:[],state:{loaded:!1}},this._data.core.selected=[],this._data.core.last_clicked=null,this._data.core.focused=null;var d=this.get_container_ul()[0].className;b||(this.element.html("<ul class='"+d+"' role='group'><li class='jstree-initial-node jstree-loading jstree-leaf jstree-last' role='treeitem' id='j"+this._id+"_loading'><i class='jstree-icon jstree-ocl'></i><a class='jstree-anchor' href='#'><i class='jstree-icon jstree-themeicon-hidden'></i>"+this.get_string("Loading ...")+"</a></li></ul>"),this.element.attr("aria-activedescendant","j"+this._id+"_loading")),this.load_node(a.jstree.root,function(b,c){c&&(this.get_container_ul()[0].className=d,this._firstChild(this.get_container_ul()[0])&&this.element.attr("aria-activedescendant",this._firstChild(this.get_container_ul()[0]).id),this.set_state(a.extend(!0,{},this._data.core.state),function(){this.trigger("refresh")})),this._data.core.state=null})},refresh_node:function(b){if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;var c=[],d=[],e=this._data.core.selected.concat([]);d.push(b.id),b.state.opened===!0&&c.push(b.id),this.get_node(b,!0).find(".jstree-open").each(function(){d.push(this.id),c.push(this.id)}),this._load_nodes(d,a.proxy(function(a){this.open_node(c,!1,0),this.select_node(e),this.trigger("refresh_node",{node:b,nodes:a})},this),!1,!0)},set_id:function(b,c){if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;var d,e,f=this._model.data,g=b.id;for(c=c.toString(),f[b.parent].children[a.inArray(b.id,f[b.parent].children)]=c,d=0,e=b.parents.length;e>d;d++)f[b.parents[d]].children_d[a.inArray(b.id,f[b.parents[d]].children_d)]=c;for(d=0,e=b.children.length;e>d;d++)f[b.children[d]].parent=c;for(d=0,e=b.children_d.length;e>d;d++)f[b.children_d[d]].parents[a.inArray(b.id,f[b.children_d[d]].parents)]=c;return d=a.inArray(b.id,this._data.core.selected),-1!==d&&(this._data.core.selected[d]=c),d=this.get_node(b.id,!0),d&&(d.attr("id",c),this.element.attr("aria-activedescendant")===b.id&&this.element.attr("aria-activedescendant",c)),delete f[b.id],b.id=c,b.li_attr.id=c,f[c]=b,this.trigger("set_id",{node:b,"new":b.id,old:g}),!0},get_text:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.text:!1},set_text:function(b,c){var d,e;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.set_text(b[d],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(b.text=c,this.get_node(b,!0).length&&this.redraw_node(b.id),this.trigger("set_text",{obj:b,text:c}),!0):!1},get_json:function(b,c,d){if(b=this.get_node(b||a.jstree.root),!b)return!1;c&&c.flat&&!d&&(d=[]);var e={id:b.id,text:b.text,icon:this.get_icon(b),li_attr:a.extend(!0,{},b.li_attr),a_attr:a.extend(!0,{},b.a_attr),state:{},data:c&&c.no_data?!1:a.extend(!0,a.isArray(b.data)?[]:{},b.data)},f,g;if(c&&c.flat?e.parent=b.parent:e.children=[],c&&c.no_state)delete e.state;else for(f in b.state)b.state.hasOwnProperty(f)&&(e.state[f]=b.state[f]);if(c&&c.no_li_attr&&delete e.li_attr,c&&c.no_a_attr&&delete e.a_attr,c&&c.no_id&&(delete e.id,e.li_attr&&e.li_attr.id&&delete e.li_attr.id,e.a_attr&&e.a_attr.id&&delete e.a_attr.id),c&&c.flat&&b.id!==a.jstree.root&&d.push(e),!c||!c.no_children)for(f=0,g=b.children.length;g>f;f++)c&&c.flat?this.get_json(b.children[f],c,d):e.children.push(this.get_json(b.children[f],c));return c&&c.flat?d:b.id===a.jstree.root?e.children:e},create_node:function(c,d,e,f,g){if(null===c&&(c=a.jstree.root),c=this.get_node(c),!c)return!1;if(e=e===b?"last":e,!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(c))return this.load_node(c,function(){this.create_node(c,d,e,f,!0)});d||(d={text:this.get_string("New node")}),d="string"==typeof d?{text:d}:a.extend(!0,{},d),d.text===b&&(d.text=this.get_string("New node"));var h,i,j,k;switch(c.id===a.jstree.root&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":h=this.get_node(c.parent),e=a.inArray(c.id,h.children),c=h;break;case"after":h=this.get_node(c.parent),e=a.inArray(c.id,h.children)+1,c=h;break;case"inside":case"first":e=0;break;case"last":e=c.children.length;break;default:e||(e=0)}if(e>c.children.length&&(e=c.children.length),d.id||(d.id=!0),!this.check("create_node",d,c,e))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(d.id===!0&&delete d.id,d=this._parse_model_from_json(d,c.id,c.parents.concat()),!d)return!1;for(h=this.get_node(d),i=[],i.push(d),i=i.concat(h.children_d),this.trigger("model",{nodes:i,parent:c.id}),c.children_d=c.children_d.concat(i),j=0,k=c.parents.length;k>j;j++)this._model.data[c.parents[j]].children_d=this._model.data[c.parents[j]].children_d.concat(i);for(d=h,h=[],j=0,k=c.children.length;k>j;j++)h[j>=e?j+1:j]=c.children[j];return h[e]=d.id,c.children=h,this.redraw_node(c,!0),this.trigger("create_node",{node:this.get_node(d),parent:c.id,position:e}),f&&f.call(this,this.get_node(d)),d.id},rename_node:function(b,c){var d,e,f;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.rename_node(b[d],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(f=b.text,this.check("rename_node",b,this.get_parent(b),c)?(this.set_text(b,c),this.trigger("rename_node",{node:b,text:c,old:f}),!0):(this.settings.core.error.call(this,this._data.core.last_error),!1)):!1},delete_node:function(b){var c,d,e,f,g,h,i,j,k,l,m,n;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.delete_node(b[c]);return!0}if(b=this.get_node(b),!b||b.id===a.jstree.root)return!1;if(e=this.get_node(b.parent),f=a.inArray(b.id,e.children),l=!1,!this.check("delete_node",b,e,f))return this.settings.core.error.call(this,this._data.core.last_error),!1;for(-1!==f&&(e.children=a.vakata.array_remove(e.children,f)),g=b.children_d.concat([]),g.push(b.id),h=0,i=b.parents.length;i>h;h++)this._model.data[b.parents[h]].children_d=a.vakata.array_filter(this._model.data[b.parents[h]].children_d,function(b){return-1===a.inArray(b,g)});for(j=0,k=g.length;k>j;j++)if(this._model.data[g[j]].state.selected){l=!0;break}for(l&&(this._data.core.selected=a.vakata.array_filter(this._data.core.selected,function(b){return-1===a.inArray(b,g)})),this.trigger("delete_node",{node:b,parent:e.id}),l&&this.trigger("changed",{action:"delete_node",node:b,selected:this._data.core.selected,parent:e.id}),j=0,k=g.length;k>j;j++)delete this._model.data[g[j]];return-1!==a.inArray(this._data.core.focused,g)&&(this._data.core.focused=null,m=this.element[0].scrollTop,n=this.element[0].scrollLeft,e.id===a.jstree.root?this._model.data[a.jstree.root].children[0]&&this.get_node(this._model.data[a.jstree.root].children[0],!0).children(".jstree-anchor").focus():this.get_node(e,!0).children(".jstree-anchor").focus(),this.element[0].scrollTop=m,this.element[0].scrollLeft=n),this.redraw_node(e,!0),!0},check:function(b,c,d,e,f){c=c&&c.id?c:this.get_node(c),d=d&&d.id?d:this.get_node(d);var g=b.match(/^move_node|copy_node|create_node$/i)?d:c,h=this.settings.core.check_callback;return"move_node"!==b&&"copy_node"!==b||f&&f.is_multi||c.id!==d.id&&("move_node"!==b||a.inArray(c.id,d.children)!==e)&&-1===a.inArray(d.id,c.children_d)?(g&&g.data&&(g=g.data),g&&g.functions&&(g.functions[b]===!1||g.functions[b]===!0)?(g.functions[b]===!1&&(this._data.core.last_error={error:"check",plugin:"core",id:"core_02",reason:"Node data prevents function: "+b,data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})}),g.functions[b]):h===!1||a.isFunction(h)&&h.call(this,b,c,d,e,f)===!1||h&&h[b]===!1?(this._data.core.last_error={error:"check",plugin:"core",id:"core_03",reason:"User config for core.check_callback prevents function: "+b,data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})},!1):!0):(this._data.core.last_error={error:"check",plugin:"core",id:"core_01",reason:"Moving parent inside child",data:JSON.stringify({chk:b,pos:e,obj:c&&c.id?c.id:!1,par:d&&d.id?d.id:!1})},!1)},last_error:function(){return this._data.core.last_error},move_node:function(c,d,e,f,g,h,i){var j,k,l,m,n,o,p,q,r,s,t,u,v,w;if(d=this.get_node(d),e=e===b?0:e,!d)return!1;if(!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(d))return this.load_node(d,function(){this.move_node(c,d,e,f,!0,!1,i)});if(a.isArray(c)){if(1!==c.length){for(j=0,k=c.length;k>j;j++)(r=this.move_node(c[j],d,e,f,g,!1,i))&&(d=r,e="after");return this.redraw(),!0}c=c[0]}if(c=c&&c.id?c:this.get_node(c),!c||c.id===a.jstree.root)return!1;if(l=(c.parent||a.jstree.root).toString(),n=e.toString().match(/^(before|after)$/)&&d.id!==a.jstree.root?this.get_node(d.parent):d,o=i?i:this._model.data[c.id]?this:a.jstree.reference(c.id),p=!o||!o._id||this._id!==o._id,m=o&&o._id&&l&&o._model.data[l]&&o._model.data[l].children?a.inArray(c.id,o._model.data[l].children):-1,o&&o._id&&(c=o._model.data[c.id]),p)return(r=this.copy_node(c,d,e,f,g,!1,i))?(o&&o.delete_node(c),r):!1;switch(d.id===a.jstree.root&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":e=a.inArray(d.id,n.children);break;case"after":e=a.inArray(d.id,n.children)+1;break;case"inside":case"first":e=0;break;case"last":e=n.children.length;break;default:e||(e=0)}if(e>n.children.length&&(e=n.children.length),!this.check("move_node",c,n,e,{core:!0,origin:i,is_multi:o&&o._id&&o._id!==this._id,is_foreign:!o||!o._id}))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(c.parent===n.id){for(q=n.children.concat(),r=a.inArray(c.id,q),-1!==r&&(q=a.vakata.array_remove(q,r),e>r&&e--),r=[],s=0,t=q.length;t>s;s++)r[s>=e?s+1:s]=q[s];r[e]=c.id,n.children=r,this._node_changed(n.id),this.redraw(n.id===a.jstree.root)}else{for(r=c.children_d.concat(),r.push(c.id),s=0,t=c.parents.length;t>s;s++){for(q=[],w=o._model.data[c.parents[s]].children_d,u=0,v=w.length;v>u;u++)-1===a.inArray(w[u],r)&&q.push(w[u]);o._model.data[c.parents[s]].children_d=q}for(o._model.data[l].children=a.vakata.array_remove_item(o._model.data[l].children,c.id),s=0,t=n.parents.length;t>s;s++)this._model.data[n.parents[s]].children_d=this._model.data[n.parents[s]].children_d.concat(r);for(q=[],s=0,t=n.children.length;t>s;s++)q[s>=e?s+1:s]=n.children[s];for(q[e]=c.id,n.children=q,n.children_d.push(c.id),n.children_d=n.children_d.concat(c.children_d),c.parent=n.id,r=n.parents.concat(),r.unshift(n.id),w=c.parents.length,c.parents=r,r=r.concat(),s=0,t=c.children_d.length;t>s;s++)this._model.data[c.children_d[s]].parents=this._model.data[c.children_d[s]].parents.slice(0,-1*w),Array.prototype.push.apply(this._model.data[c.children_d[s]].parents,r);(l===a.jstree.root||n.id===a.jstree.root)&&(this._model.force_full_redraw=!0),this._model.force_full_redraw||(this._node_changed(l),this._node_changed(n.id)),h||this.redraw()}return f&&f.call(this,c,n,e),this.trigger("move_node",{node:c,parent:n.id,position:e,old_parent:l,old_position:m,is_multi:o&&o._id&&o._id!==this._id,is_foreign:!o||!o._id,old_instance:o,new_instance:this}),c.id},copy_node:function(c,d,e,f,g,h,i){var j,k,l,m,n,o,p,q,r,s,t;if(d=this.get_node(d),e=e===b?0:e,!d)return!1;if(!e.toString().match(/^(before|after)$/)&&!g&&!this.is_loaded(d))return this.load_node(d,function(){this.copy_node(c,d,e,f,!0,!1,i)});if(a.isArray(c)){if(1!==c.length){for(j=0,k=c.length;k>j;j++)(m=this.copy_node(c[j],d,e,f,g,!0,i))&&(d=m,e="after");return this.redraw(),!0}c=c[0]}if(c=c&&c.id?c:this.get_node(c),!c||c.id===a.jstree.root)return!1;switch(q=(c.parent||a.jstree.root).toString(),r=e.toString().match(/^(before|after)$/)&&d.id!==a.jstree.root?this.get_node(d.parent):d,s=i?i:this._model.data[c.id]?this:a.jstree.reference(c.id),t=!s||!s._id||this._id!==s._id,s&&s._id&&(c=s._model.data[c.id]),d.id===a.jstree.root&&("before"===e&&(e="first"),"after"===e&&(e="last")),e){case"before":e=a.inArray(d.id,r.children);break;case"after":e=a.inArray(d.id,r.children)+1;break;case"inside":case"first":e=0;break;case"last":e=r.children.length;break;default:e||(e=0)}if(e>r.children.length&&(e=r.children.length),!this.check("copy_node",c,r,e,{core:!0,origin:i,is_multi:s&&s._id&&s._id!==this._id,is_foreign:!s||!s._id}))return this.settings.core.error.call(this,this._data.core.last_error),!1;if(p=s?s.get_json(c,{no_id:!0,no_data:!0,no_state:!0}):c,!p)return!1;if(p.id===!0&&delete p.id,p=this._parse_model_from_json(p,r.id,r.parents.concat()),!p)return!1;for(m=this.get_node(p),c&&c.state&&c.state.loaded===!1&&(m.state.loaded=!1),l=[],l.push(p),l=l.concat(m.children_d),this.trigger("model",{nodes:l,parent:r.id}),n=0,o=r.parents.length;o>n;n++)this._model.data[r.parents[n]].children_d=this._model.data[r.parents[n]].children_d.concat(l);for(l=[],n=0,o=r.children.length;o>n;n++)l[n>=e?n+1:n]=r.children[n];return l[e]=m.id,r.children=l,r.children_d.push(m.id),r.children_d=r.children_d.concat(m.children_d),r.id===a.jstree.root&&(this._model.force_full_redraw=!0),this._model.force_full_redraw||this._node_changed(r.id),h||this.redraw(r.id===a.jstree.root),f&&f.call(this,m,r,e),this.trigger("copy_node",{node:m,original:c,parent:r.id,position:e,old_parent:q,old_position:s&&s._id&&q&&s._model.data[q]&&s._model.data[q].children?a.inArray(c.id,s._model.data[q].children):-1,is_multi:s&&s._id&&s._id!==this._id,is_foreign:!s||!s._id,old_instance:s,new_instance:this}),m.id},cut:function(b){if(b||(b=this._data.core.selected.concat()),a.isArray(b)||(b=[b]),!b.length)return!1;var c=[],g,h,i;for(h=0,i=b.length;i>h;h++)g=this.get_node(b[h]),g&&g.id&&g.id!==a.jstree.root&&c.push(g);return c.length?(d=c,f=this,e="move_node",void this.trigger("cut",{node:b})):!1},copy:function(b){if(b||(b=this._data.core.selected.concat()),a.isArray(b)||(b=[b]),!b.length)return!1;var c=[],g,h,i;for(h=0,i=b.length;i>h;h++)g=this.get_node(b[h]),g&&g.id&&g.id!==a.jstree.root&&c.push(g);return c.length?(d=c,f=this,e="copy_node",void this.trigger("copy",{node:b})):!1},get_buffer:function(){return{mode:e,node:d,inst:f}},can_paste:function(){return e!==!1&&d!==!1},paste:function(a,b){return a=this.get_node(a),a&&e&&e.match(/^(copy_node|move_node)$/)&&d?(this[e](d,a,b,!1,!1,!1,f)&&this.trigger("paste",{parent:a.id,node:d,mode:e}),d=!1,e=!1,void(f=!1)):!1},clear_buffer:function(){d=!1,e=!1,f=!1,this.trigger("clear_buffer")},edit:function(b,c,d){var e,f,g,h,j,k,l,m,n,o=!1;return(b=this.get_node(b))?this.check("edit",b,this.get_parent(b))?(n=b,c="string"==typeof c?c:b.text,this.set_text(b,""),b=this._open_to(b),n.text=c,e=this._data.core.rtl,f=this.element.width(),this._data.core.focused=n.id,g=b.children(".jstree-anchor").focus(),h=a("<span>"),j=c,k=a("<div />",{css:{position:"absolute",top:"-200px",left:e?"0px":"-1000px",visibility:"hidden"}}).appendTo("body"),l=a("<input />",{value:j,"class":"jstree-rename-input",css:{padding:"0",border:"1px solid silver","box-sizing":"border-box",display:"inline-block",height:this._data.core.li_height+"px",lineHeight:this._data.core.li_height+"px",width:"150px"},blur:a.proxy(function(c){c.stopImmediatePropagation(),c.preventDefault();var e=h.children(".jstree-rename-input"),f=e.val(),i=this.settings.core.force_text,m;""===f&&(f=j),k.remove(),h.replaceWith(g),h.remove(),j=i?j:a("<div></div>").append(a.parseHTML(j)).html(),this.set_text(b,j),m=!!this.rename_node(b,i?a("<div></div>").text(f).text():a("<div></div>").append(a.parseHTML(f)).html()),m||this.set_text(b,j),this._data.core.focused=n.id,setTimeout(a.proxy(function(){var a=this.get_node(n.id,!0);a.length&&(this._data.core.focused=n.id,a.children(".jstree-anchor").focus())},this),0),d&&d.call(this,n,m,o),l=null},this),keydown:function(a){var b=a.which;27===b&&(o=!0,this.value=j),(27===b||13===b||37===b||38===b||39===b||40===b||32===b)&&a.stopImmediatePropagation(),(27===b||13===b)&&(a.preventDefault(),this.blur())},click:function(a){a.stopImmediatePropagation();
4
+ },mousedown:function(a){a.stopImmediatePropagation()},keyup:function(a){l.width(Math.min(k.text("pW"+this.value).width(),f))},keypress:function(a){return 13===a.which?!1:void 0}}),m={fontFamily:g.css("fontFamily")||"",fontSize:g.css("fontSize")||"",fontWeight:g.css("fontWeight")||"",fontStyle:g.css("fontStyle")||"",fontStretch:g.css("fontStretch")||"",fontVariant:g.css("fontVariant")||"",letterSpacing:g.css("letterSpacing")||"",wordSpacing:g.css("wordSpacing")||""},h.attr("class",g.attr("class")).append(g.contents().clone()).append(l),g.replaceWith(h),k.css(m),l.css(m).width(Math.min(k.text("pW"+l[0].value).width(),f))[0].select(),void a(i).one("mousedown.jstree touchstart.jstree dnd_start.vakata",function(b){l&&b.target!==l&&a(l).blur()})):(this.settings.core.error.call(this,this._data.core.last_error),!1):!1},set_theme:function(b,c){if(!b)return!1;if(c===!0){var d=this.settings.core.themes.dir;d||(d=a.jstree.path+"/themes"),c=d+"/"+b+"/style.css"}c&&-1===a.inArray(c,g)&&(a("head").append('<link rel="stylesheet" href="'+c+'" type="text/css" />'),g.push(c)),this._data.core.themes.name&&this.element.removeClass("jstree-"+this._data.core.themes.name),this._data.core.themes.name=b,this.element.addClass("jstree-"+b),this.element[this.settings.core.themes.responsive?"addClass":"removeClass"]("jstree-"+b+"-responsive"),this.trigger("set_theme",{theme:b})},get_theme:function(){return this._data.core.themes.name},set_theme_variant:function(a){this._data.core.themes.variant&&this.element.removeClass("jstree-"+this._data.core.themes.name+"-"+this._data.core.themes.variant),this._data.core.themes.variant=a,a&&this.element.addClass("jstree-"+this._data.core.themes.name+"-"+this._data.core.themes.variant)},get_theme_variant:function(){return this._data.core.themes.variant},show_stripes:function(){this._data.core.themes.stripes=!0,this.get_container_ul().addClass("jstree-striped"),this.trigger("show_stripes")},hide_stripes:function(){this._data.core.themes.stripes=!1,this.get_container_ul().removeClass("jstree-striped"),this.trigger("hide_stripes")},toggle_stripes:function(){this._data.core.themes.stripes?this.hide_stripes():this.show_stripes()},show_dots:function(){this._data.core.themes.dots=!0,this.get_container_ul().removeClass("jstree-no-dots"),this.trigger("show_dots")},hide_dots:function(){this._data.core.themes.dots=!1,this.get_container_ul().addClass("jstree-no-dots"),this.trigger("hide_dots")},toggle_dots:function(){this._data.core.themes.dots?this.hide_dots():this.show_dots()},show_icons:function(){this._data.core.themes.icons=!0,this.get_container_ul().removeClass("jstree-no-icons"),this.trigger("show_icons")},hide_icons:function(){this._data.core.themes.icons=!1,this.get_container_ul().addClass("jstree-no-icons"),this.trigger("hide_icons")},toggle_icons:function(){this._data.core.themes.icons?this.hide_icons():this.show_icons()},show_ellipsis:function(){this._data.core.themes.ellipsis=!0,this.get_container_ul().addClass("jstree-ellipsis"),this.trigger("show_ellipsis")},hide_ellipsis:function(){this._data.core.themes.ellipsis=!1,this.get_container_ul().removeClass("jstree-ellipsis"),this.trigger("hide_ellipsis")},toggle_ellipsis:function(){this._data.core.themes.ellipsis?this.hide_ellipsis():this.show_ellipsis()},set_icon:function(c,d){var e,f,g,h;if(a.isArray(c)){for(c=c.slice(),e=0,f=c.length;f>e;e++)this.set_icon(c[e],d);return!0}return c=this.get_node(c),c&&c.id!==a.jstree.root?(h=c.icon,c.icon=d===!0||null===d||d===b||""===d?!0:d,g=this.get_node(c,!0).children(".jstree-anchor").children(".jstree-themeicon"),d===!1?this.hide_icon(c):d===!0||null===d||d===b||""===d?(g.removeClass("jstree-themeicon-custom "+h).css("background","").removeAttr("rel"),h===!1&&this.show_icon(c)):-1===d.indexOf("/")&&-1===d.indexOf(".")?(g.removeClass(h).css("background",""),g.addClass(d+" jstree-themeicon-custom").attr("rel",d),h===!1&&this.show_icon(c)):(g.removeClass(h).css("background",""),g.addClass("jstree-themeicon-custom").css("background","url('"+d+"') center center no-repeat").attr("rel",d),h===!1&&this.show_icon(c)),!0):!1},get_icon:function(b){return b=this.get_node(b),b&&b.id!==a.jstree.root?b.icon:!1},hide_icon:function(b){var c,d;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.hide_icon(b[c]);return!0}return b=this.get_node(b),b&&b!==a.jstree.root?(b.icon=!1,this.get_node(b,!0).children(".jstree-anchor").children(".jstree-themeicon").addClass("jstree-themeicon-hidden"),!0):!1},show_icon:function(b){var c,d,e;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.show_icon(b[c]);return!0}return b=this.get_node(b),b&&b!==a.jstree.root?(e=this.get_node(b,!0),b.icon=e.length?e.children(".jstree-anchor").children(".jstree-themeicon").attr("rel"):!0,b.icon||(b.icon=!0),e.children(".jstree-anchor").children(".jstree-themeicon").removeClass("jstree-themeicon-hidden"),!0):!1}},a.vakata={},a.vakata.attributes=function(b,c){b=a(b)[0];var d=c?{}:[];return b&&b.attributes&&a.each(b.attributes,function(b,e){-1===a.inArray(e.name.toLowerCase(),["style","contenteditable","hasfocus","tabindex"])&&null!==e.value&&""!==a.trim(e.value)&&(c?d[e.name]=e.value:d.push(e.name))}),d},a.vakata.array_unique=function(a){var c=[],d,e,f,g={};for(d=0,f=a.length;f>d;d++)g[a[d]]===b&&(c.push(a[d]),g[a[d]]=!0);return c},a.vakata.array_remove=function(a,b){return a.splice(b,1),a},a.vakata.array_remove_item=function(b,c){var d=a.inArray(c,b);return-1!==d?a.vakata.array_remove(b,d):b},a.vakata.array_filter=function(a,b,c,d,e){if(a.filter)return a.filter(b,c);d=[];for(e in a)~~e+""==e+""&&e>=0&&b.call(c,a[e],+e,a)&&d.push(a[e]);return d},a.jstree.plugins.changed=function(a,b){var c=[];this.trigger=function(a,d){var e,f;if(d||(d={}),"changed"===a.replace(".jstree","")){d.changed={selected:[],deselected:[]};var g={};for(e=0,f=c.length;f>e;e++)g[c[e]]=1;for(e=0,f=d.selected.length;f>e;e++)g[d.selected[e]]?g[d.selected[e]]=2:d.changed.selected.push(d.selected[e]);for(e=0,f=c.length;f>e;e++)1===g[c[e]]&&d.changed.deselected.push(c[e]);c=d.selected.slice()}b.trigger.call(this,a,d)},this.refresh=function(a,d){return c=[],b.refresh.apply(this,arguments)}};var j=i.createElement("I");j.className="jstree-icon jstree-checkbox",j.setAttribute("role","presentation"),a.jstree.defaults.checkbox={visible:!0,three_state:!0,whole_node:!0,keep_selected_style:!0,cascade:"",tie_selection:!0,cascade_to_disabled:!0,cascade_to_hidden:!0},a.jstree.plugins.checkbox=function(c,d){this.bind=function(){d.bind.call(this),this._data.checkbox.uto=!1,this._data.checkbox.selected=[],this.settings.checkbox.three_state&&(this.settings.checkbox.cascade="up+down+undetermined"),this.element.on("init.jstree",a.proxy(function(){this._data.checkbox.visible=this.settings.checkbox.visible,this.settings.checkbox.keep_selected_style||this.element.addClass("jstree-checkbox-no-clicked"),this.settings.checkbox.tie_selection&&this.element.addClass("jstree-checkbox-selection")},this)).on("loading.jstree",a.proxy(function(){this[this._data.checkbox.visible?"show_checkboxes":"hide_checkboxes"]()},this)),-1!==this.settings.checkbox.cascade.indexOf("undetermined")&&this.element.on("changed.jstree uncheck_node.jstree check_node.jstree uncheck_all.jstree check_all.jstree move_node.jstree copy_node.jstree redraw.jstree open_node.jstree",a.proxy(function(){this._data.checkbox.uto&&clearTimeout(this._data.checkbox.uto),this._data.checkbox.uto=setTimeout(a.proxy(this._undetermined,this),50)},this)),this.settings.checkbox.tie_selection||this.element.on("model.jstree",a.proxy(function(a,b){var c=this._model.data,d=c[b.parent],e=b.nodes,f,g;for(f=0,g=e.length;g>f;f++)c[e[f]].state.checked=c[e[f]].state.checked||c[e[f]].original&&c[e[f]].original.state&&c[e[f]].original.state.checked,c[e[f]].state.checked&&this._data.checkbox.selected.push(e[f])},this)),(-1!==this.settings.checkbox.cascade.indexOf("up")||-1!==this.settings.checkbox.cascade.indexOf("down"))&&this.element.on("model.jstree",a.proxy(function(b,c){var d=this._model.data,e=d[c.parent],f=c.nodes,g=[],h,i,j,k,l,m,n=this.settings.checkbox.cascade,o=this.settings.checkbox.tie_selection;if(-1!==n.indexOf("down"))if(e.state[o?"selected":"checked"]){for(i=0,j=f.length;j>i;i++)d[f[i]].state[o?"selected":"checked"]=!0;this._data[o?"core":"checkbox"].selected=this._data[o?"core":"checkbox"].selected.concat(f)}else for(i=0,j=f.length;j>i;i++)if(d[f[i]].state[o?"selected":"checked"]){for(k=0,l=d[f[i]].children_d.length;l>k;k++)d[d[f[i]].children_d[k]].state[o?"selected":"checked"]=!0;this._data[o?"core":"checkbox"].selected=this._data[o?"core":"checkbox"].selected.concat(d[f[i]].children_d)}if(-1!==n.indexOf("up")){for(i=0,j=e.children_d.length;j>i;i++)d[e.children_d[i]].children.length||g.push(d[e.children_d[i]].parent);for(g=a.vakata.array_unique(g),k=0,l=g.length;l>k;k++){e=d[g[k]];while(e&&e.id!==a.jstree.root){for(h=0,i=0,j=e.children.length;j>i;i++)h+=d[e.children[i]].state[o?"selected":"checked"];if(h!==j)break;e.state[o?"selected":"checked"]=!0,this._data[o?"core":"checkbox"].selected.push(e.id),m=this.get_node(e,!0),m&&m.length&&m.attr("aria-selected",!0).children(".jstree-anchor").addClass(o?"jstree-clicked":"jstree-checked"),e=this.get_node(e.parent)}}}this._data[o?"core":"checkbox"].selected=a.vakata.array_unique(this._data[o?"core":"checkbox"].selected)},this)).on(this.settings.checkbox.tie_selection?"select_node.jstree":"check_node.jstree",a.proxy(function(b,c){var d=this,e=c.node,f=this._model.data,g=this.get_node(e.parent),h,i,j,k,l=this.settings.checkbox.cascade,m=this.settings.checkbox.tie_selection,n={},o=this._data[m?"core":"checkbox"].selected;for(h=0,i=o.length;i>h;h++)n[o[h]]=!0;if(-1!==l.indexOf("down")){var p=this._cascade_new_checked_state(e.id,!0);e.children_d.concat(e.id).forEach(function(a){p.indexOf(a)>-1?n[a]=!0:delete n[a]})}if(-1!==l.indexOf("up"))while(g&&g.id!==a.jstree.root){for(j=0,h=0,i=g.children.length;i>h;h++)j+=f[g.children[h]].state[m?"selected":"checked"];if(j!==i)break;g.state[m?"selected":"checked"]=!0,n[g.id]=!0,k=this.get_node(g,!0),k&&k.length&&k.attr("aria-selected",!0).children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"),g=this.get_node(g.parent)}o=[];for(h in n)n.hasOwnProperty(h)&&o.push(h);this._data[m?"core":"checkbox"].selected=o},this)).on(this.settings.checkbox.tie_selection?"deselect_all.jstree":"uncheck_all.jstree",a.proxy(function(b,c){var d=this.get_node(a.jstree.root),e=this._model.data,f,g,h;for(f=0,g=d.children_d.length;g>f;f++)h=e[d.children_d[f]],h&&h.original&&h.original.state&&h.original.state.undetermined&&(h.original.state.undetermined=!1)},this)).on(this.settings.checkbox.tie_selection?"deselect_node.jstree":"uncheck_node.jstree",a.proxy(function(a,b){var c=this,d=b.node,e=this.get_node(d,!0),f,g,h,i=this.settings.checkbox.cascade,j=this.settings.checkbox.tie_selection,k=this._data[j?"core":"checkbox"].selected,l={},m=[],n=d.children_d.concat(d.id);if(-1!==i.indexOf("down")){var o=this._cascade_new_checked_state(d.id,!1);k=k.filter(function(a){return-1===n.indexOf(a)||o.indexOf(a)>-1})}if(-1!==i.indexOf("up")&&-1===k.indexOf(d.id)){for(f=0,g=d.parents.length;g>f;f++)h=this._model.data[d.parents[f]],h.state[j?"selected":"checked"]=!1,h&&h.original&&h.original.state&&h.original.state.undetermined&&(h.original.state.undetermined=!1),h=this.get_node(d.parents[f],!0),h&&h.length&&h.attr("aria-selected",!1).children(".jstree-anchor").removeClass(j?"jstree-clicked":"jstree-checked");k=k.filter(function(a){return-1===d.parents.indexOf(a)})}this._data[j?"core":"checkbox"].selected=k},this)),-1!==this.settings.checkbox.cascade.indexOf("up")&&this.element.on("delete_node.jstree",a.proxy(function(b,c){var d=this.get_node(c.parent),e=this._model.data,f,g,h,i,j=this.settings.checkbox.tie_selection;while(d&&d.id!==a.jstree.root&&!d.state[j?"selected":"checked"]){for(h=0,f=0,g=d.children.length;g>f;f++)h+=e[d.children[f]].state[j?"selected":"checked"];if(!(g>0&&h===g))break;d.state[j?"selected":"checked"]=!0,this._data[j?"core":"checkbox"].selected.push(d.id),i=this.get_node(d,!0),i&&i.length&&i.attr("aria-selected",!0).children(".jstree-anchor").addClass(j?"jstree-clicked":"jstree-checked"),d=this.get_node(d.parent)}},this)).on("move_node.jstree",a.proxy(function(b,c){var d=c.is_multi,e=c.old_parent,f=this.get_node(c.parent),g=this._model.data,h,i,j,k,l,m=this.settings.checkbox.tie_selection;if(!d){h=this.get_node(e);while(h&&h.id!==a.jstree.root&&!h.state[m?"selected":"checked"]){for(i=0,j=0,k=h.children.length;k>j;j++)i+=g[h.children[j]].state[m?"selected":"checked"];if(!(k>0&&i===k))break;h.state[m?"selected":"checked"]=!0,this._data[m?"core":"checkbox"].selected.push(h.id),l=this.get_node(h,!0),l&&l.length&&l.attr("aria-selected",!0).children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"),h=this.get_node(h.parent)}}h=f;while(h&&h.id!==a.jstree.root){for(i=0,j=0,k=h.children.length;k>j;j++)i+=g[h.children[j]].state[m?"selected":"checked"];if(i===k)h.state[m?"selected":"checked"]||(h.state[m?"selected":"checked"]=!0,this._data[m?"core":"checkbox"].selected.push(h.id),l=this.get_node(h,!0),l&&l.length&&l.attr("aria-selected",!0).children(".jstree-anchor").addClass(m?"jstree-clicked":"jstree-checked"));else{if(!h.state[m?"selected":"checked"])break;h.state[m?"selected":"checked"]=!1,this._data[m?"core":"checkbox"].selected=a.vakata.array_remove_item(this._data[m?"core":"checkbox"].selected,h.id),l=this.get_node(h,!0),l&&l.length&&l.attr("aria-selected",!1).children(".jstree-anchor").removeClass(m?"jstree-clicked":"jstree-checked")}h=this.get_node(h.parent)}},this))},this._undetermined=function(){if(null!==this.element){var c,d,e,f,g={},h=this._model.data,i=this.settings.checkbox.tie_selection,j=this._data[i?"core":"checkbox"].selected,k=[],l=this;for(c=0,d=j.length;d>c;c++)if(h[j[c]]&&h[j[c]].parents)for(e=0,f=h[j[c]].parents.length;f>e;e++){if(g[h[j[c]].parents[e]]!==b)break;h[j[c]].parents[e]!==a.jstree.root&&(g[h[j[c]].parents[e]]=!0,k.push(h[j[c]].parents[e]))}for(this.element.find(".jstree-closed").not(":has(.jstree-children)").each(function(){var i=l.get_node(this),j;if(i)if(i.state.loaded){for(c=0,d=i.children_d.length;d>c;c++)if(j=h[i.children_d[c]],!j.state.loaded&&j.original&&j.original.state&&j.original.state.undetermined&&j.original.state.undetermined===!0)for(g[j.id]===b&&j.id!==a.jstree.root&&(g[j.id]=!0,k.push(j.id)),e=0,f=j.parents.length;f>e;e++)g[j.parents[e]]===b&&j.parents[e]!==a.jstree.root&&(g[j.parents[e]]=!0,k.push(j.parents[e]))}else if(i.original&&i.original.state&&i.original.state.undetermined&&i.original.state.undetermined===!0)for(g[i.id]===b&&i.id!==a.jstree.root&&(g[i.id]=!0,k.push(i.id)),e=0,f=i.parents.length;f>e;e++)g[i.parents[e]]===b&&i.parents[e]!==a.jstree.root&&(g[i.parents[e]]=!0,k.push(i.parents[e]))}),this.element.find(".jstree-undetermined").removeClass("jstree-undetermined"),c=0,d=k.length;d>c;c++)h[k[c]].state[i?"selected":"checked"]||(j=this.get_node(k[c],!0),j&&j.length&&j.children(".jstree-anchor").children(".jstree-checkbox").addClass("jstree-undetermined"))}},this.redraw_node=function(b,c,e,f){if(b=d.redraw_node.apply(this,arguments)){var g,h,i=null,k=null;for(g=0,h=b.childNodes.length;h>g;g++)if(b.childNodes[g]&&b.childNodes[g].className&&-1!==b.childNodes[g].className.indexOf("jstree-anchor")){i=b.childNodes[g];break}i&&(!this.settings.checkbox.tie_selection&&this._model.data[b.id].state.checked&&(i.className+=" jstree-checked"),k=j.cloneNode(!1),this._model.data[b.id].state.checkbox_disabled&&(k.className+=" jstree-checkbox-disabled"),i.insertBefore(k,i.childNodes[0]))}return e||-1===this.settings.checkbox.cascade.indexOf("undetermined")||(this._data.checkbox.uto&&clearTimeout(this._data.checkbox.uto),this._data.checkbox.uto=setTimeout(a.proxy(this._undetermined,this),50)),b},this.show_checkboxes=function(){this._data.core.themes.checkboxes=!0,this.get_container_ul().removeClass("jstree-no-checkboxes")},this.hide_checkboxes=function(){this._data.core.themes.checkboxes=!1,this.get_container_ul().addClass("jstree-no-checkboxes")},this.toggle_checkboxes=function(){this._data.core.themes.checkboxes?this.hide_checkboxes():this.show_checkboxes()},this.is_undetermined=function(b){b=this.get_node(b);var c=this.settings.checkbox.cascade,d,e,f=this.settings.checkbox.tie_selection,g=this._data[f?"core":"checkbox"].selected,h=this._model.data;if(!b||b.state[f?"selected":"checked"]===!0||-1===c.indexOf("undetermined")||-1===c.indexOf("down")&&-1===c.indexOf("up"))return!1;if(!b.state.loaded&&b.original.state.undetermined===!0)return!0;for(d=0,e=b.children_d.length;e>d;d++)if(-1!==a.inArray(b.children_d[d],g)||!h[b.children_d[d]].state.loaded&&h[b.children_d[d]].original.state.undetermined)return!0;return!1},this.disable_checkbox=function(b){var c,d,e;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.disable_checkbox(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(e=this.get_node(b,!0),void(b.state.checkbox_disabled||(b.state.checkbox_disabled=!0,e&&e.length&&e.children(".jstree-anchor").children(".jstree-checkbox").addClass("jstree-checkbox-disabled"),this.trigger("disable_checkbox",{node:b})))):!1},this.enable_checkbox=function(b){var c,d,e;if(a.isArray(b)){for(b=b.slice(),c=0,d=b.length;d>c;c++)this.enable_checkbox(b[c]);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(e=this.get_node(b,!0),void(b.state.checkbox_disabled&&(b.state.checkbox_disabled=!1,e&&e.length&&e.children(".jstree-anchor").children(".jstree-checkbox").removeClass("jstree-checkbox-disabled"),this.trigger("enable_checkbox",{node:b})))):!1},this.activate_node=function(b,c){return a(c.target).hasClass("jstree-checkbox-disabled")?!1:(this.settings.checkbox.tie_selection&&(this.settings.checkbox.whole_node||a(c.target).hasClass("jstree-checkbox"))&&(c.ctrlKey=!0),this.settings.checkbox.tie_selection||!this.settings.checkbox.whole_node&&!a(c.target).hasClass("jstree-checkbox")?d.activate_node.call(this,b,c):this.is_disabled(b)?!1:(this.is_checked(b)?this.uncheck_node(b,c):this.check_node(b,c),void this.trigger("activate_node",{node:this.get_node(b)})))},this._cascade_new_checked_state=function(a,b){var c=this,d=this.settings.checkbox.tie_selection,e=this._model.data[a],f=[],g=[];if(!this.settings.checkbox.cascade_to_disabled&&e.state.disabled||!this.settings.checkbox.cascade_to_hidden&&e.state.hidden){var h=this.get_checked_descendants(a);e.state[d?"selected":"checked"]&&h.push(e.id),f=f.concat(h)}else{e.children&&e.children.forEach(function(a){var d=c._cascade_new_checked_state(a,b);f=f.concat(d),d.indexOf(a)>-1&&g.push(a)});var i=c.get_node(e,!0),j=g.length>0&&g.length<e.children.length;e.original&&e.original.state&&e.original.state.undetermined&&(e.original.state.undetermined=j),j?(e.state[d?"selected":"checked"]=!1,i.attr("aria-selected",!1).children(".jstree-anchor").removeClass(d?"jstree-clicked":"jstree-checked")):b&&g.length===e.children.length?(e.state[d?"selected":"checked"]=b,f.push(e.id),i.attr("aria-selected",!0).children(".jstree-anchor").addClass(d?"jstree-clicked":"jstree-checked")):(e.state[d?"selected":"checked"]=!1,i.attr("aria-selected",!1).children(".jstree-anchor").removeClass(d?"jstree-clicked":"jstree-checked"))}return f},this.get_checked_descendants=function(a){var b=this,c=b.settings.checkbox.tie_selection,d=b._model.data[a];return d.children_d.filter(function(a){return b._model.data[a].state[c?"selected":"checked"]})},this.check_node=function(b,c){if(this.settings.checkbox.tie_selection)return this.select_node(b,!1,!0,c);var d,e,f,g;if(a.isArray(b)){for(b=b.slice(),e=0,f=b.length;f>e;e++)this.check_node(b[e],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(d=this.get_node(b,!0),void(b.state.checked||(b.state.checked=!0,this._data.checkbox.selected.push(b.id),d&&d.length&&d.children(".jstree-anchor").addClass("jstree-checked"),this.trigger("check_node",{node:b,selected:this._data.checkbox.selected,event:c})))):!1},this.uncheck_node=function(b,c){if(this.settings.checkbox.tie_selection)return this.deselect_node(b,!1,c);var d,e,f;if(a.isArray(b)){for(b=b.slice(),d=0,e=b.length;e>d;d++)this.uncheck_node(b[d],c);return!0}return b=this.get_node(b),b&&b.id!==a.jstree.root?(f=this.get_node(b,!0),void(b.state.checked&&(b.state.checked=!1,this._data.checkbox.selected=a.vakata.array_remove_item(this._data.checkbox.selected,b.id),f.length&&f.children(".jstree-anchor").removeClass("jstree-checked"),this.trigger("uncheck_node",{node:b,selected:this._data.checkbox.selected,event:c})))):!1},this.check_all=function(){if(this.settings.checkbox.tie_selection)return this.select_all();var b=this._data.checkbox.selected.concat([]),c,d;for(this._data.checkbox.selected=this._model.data[a.jstree.root].children_d.concat(),c=0,d=this._data.checkbox.selected.length;d>c;c++)this._model.data[this._data.checkbox.selected[c]]&&(this._model.data[this._data.checkbox.selected[c]].state.checked=!0);this.redraw(!0),this.trigger("check_all",{selected:this._data.checkbox.selected})},this.uncheck_all=function(){if(this.settings.checkbox.tie_selection)return this.deselect_all();var a=this._data.checkbox.selected.concat([]),b,c;for(b=0,c=this._data.checkbox.selected.length;c>b;b++)this._model.data[this._data.checkbox.selected[b]]&&(this._model.data[this._data.checkbox.selected[b]].state.checked=!1);this._data.checkbox.selected=[],this.element.find(".jstree-checked").removeClass("jstree-checked"),this.trigger("uncheck_all",{selected:this._data.checkbox.selected,node:a})},this.is_checked=function(b){return this.settings.checkbox.tie_selection?this.is_selected(b):(b=this.get_node(b),b&&b.id!==a.jstree.root?b.state.checked:!1)},this.get_checked=function(b){return this.settings.checkbox.tie_selection?this.get_selected(b):b?a.map(this._data.checkbox.selected,a.proxy(function(a){return this.get_node(a)},this)):this._data.checkbox.selected},this.get_top_checked=function(b){if(this.settings.checkbox.tie_selection)return this.get_top_selected(b);var c=this.get_checked(!0),d={},e,f,g,h;for(e=0,f=c.length;f>e;e++)d[c[e].id]=c[e];for(e=0,f=c.length;f>e;e++)for(g=0,h=c[e].children_d.length;h>g;g++)d[c[e].children_d[g]]&&delete d[c[e].children_d[g]];c=[];for(e in d)d.hasOwnProperty(e)&&c.push(e);return b?a.map(c,a.proxy(function(a){return this.get_node(a)},this)):c},this.get_bottom_checked=function(b){if(this.settings.checkbox.tie_selection)return this.get_bottom_selected(b);var c=this.get_checked(!0),d=[],e,f;for(e=0,f=c.length;f>e;e++)c[e].children.length||d.push(c[e].id);return b?a.map(d,a.proxy(function(a){return this.get_node(a)},this)):d},this.load_node=function(b,c){var e,f,g,h,i,j;if(!a.isArray(b)&&!this.settings.checkbox.tie_selection&&(j=this.get_node(b),j&&j.state.loaded))for(e=0,f=j.children_d.length;f>e;e++)this._model.data[j.children_d[e]].state.checked&&(i=!0,this._data.checkbox.selected=a.vakata.array_remove_item(this._data.checkbox.selected,j.children_d[e]));return d.load_node.apply(this,arguments)},this.get_state=function(){var a=d.get_state.apply(this,arguments);return this.settings.checkbox.tie_selection?a:(a.checkbox=this._data.checkbox.selected.slice(),a)},this.set_state=function(b,c){var e=d.set_state.apply(this,arguments);if(e&&b.checkbox){if(!this.settings.checkbox.tie_selection){this.uncheck_all();var f=this;a.each(b.checkbox,function(a,b){f.check_node(b)})}return delete b.checkbox,this.set_state(b,c),!1}return e},this.refresh=function(a,b){return this.settings.checkbox.tie_selection||(this._data.checkbox.selected=[]),d.refresh.apply(this,arguments)}},a.jstree.defaults.conditionalselect=function(){return!0},a.jstree.plugins.conditionalselect=function(a,b){this.activate_node=function(a,c){this.settings.conditionalselect.call(this,this.get_node(a),c)&&b.activate_node.call(this,a,c)}},a.jstree.defaults.contextmenu={select_node:!0,show_at_node:!0,items:function(b,c){return{create:{separator_before:!1,separator_after:!0,_disabled:!1,label:"Create",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.create_node(d,{},"last",function(a){try{c.edit(a)}catch(b){setTimeout(function(){c.edit(a)},0)}})}},rename:{separator_before:!1,separator_after:!1,_disabled:!1,label:"Rename",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.edit(d)}},remove:{separator_before:!1,icon:!1,separator_after:!1,_disabled:!1,label:"Delete",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.is_selected(d)?c.delete_node(c.get_selected()):c.delete_node(d)}},ccp:{separator_before:!0,icon:!1,separator_after:!1,label:"Edit",action:!1,submenu:{cut:{separator_before:!1,separator_after:!1,label:"Cut",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.is_selected(d)?c.cut(c.get_top_selected()):c.cut(d)}},copy:{separator_before:!1,icon:!1,separator_after:!1,label:"Copy",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.is_selected(d)?c.copy(c.get_top_selected()):c.copy(d)}},paste:{separator_before:!1,icon:!1,_disabled:function(b){return!a.jstree.reference(b.reference).can_paste()},separator_after:!1,label:"Paste",action:function(b){var c=a.jstree.reference(b.reference),d=c.get_node(b.reference);c.paste(d)}}}}}}},a.jstree.plugins.contextmenu=function(c,d){this.bind=function(){d.bind.call(this);var b=0,c=null,e,f;this.element.on("init.jstree loading.jstree ready.jstree",a.proxy(function(){this.get_container_ul().addClass("jstree-contextmenu")},this)).on("contextmenu.jstree",".jstree-anchor",a.proxy(function(a,d){"input"!==a.target.tagName.toLowerCase()&&(a.preventDefault(),b=a.ctrlKey?+new Date:0,(d||c)&&(b=+new Date+1e4),c&&clearTimeout(c),this.is_loading(a.currentTarget)||this.show_contextmenu(a.currentTarget,a.pageX,a.pageY,a))},this)).on("click.jstree",".jstree-anchor",a.proxy(function(c){this._data.contextmenu.visible&&(!b||+new Date-b>250)&&a.vakata.context.hide(),b=0},this)).on("touchstart.jstree",".jstree-anchor",function(b){b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(e=b.originalEvent.changedTouches[0].clientX,f=b.originalEvent.changedTouches[0].clientY,c=setTimeout(function(){a(b.currentTarget).trigger("contextmenu",!0)},750))}).on("touchmove.vakata.jstree",function(a){c&&a.originalEvent&&a.originalEvent.changedTouches&&a.originalEvent.changedTouches[0]&&(Math.abs(e-a.originalEvent.changedTouches[0].clientX)>50||Math.abs(f-a.originalEvent.changedTouches[0].clientY)>50)&&clearTimeout(c)}).on("touchend.vakata.jstree",function(a){c&&clearTimeout(c)}),a(i).on("context_hide.vakata.jstree",a.proxy(function(b,c){this._data.contextmenu.visible=!1,a(c.reference).removeClass("jstree-context")},this))},this.teardown=function(){this._data.contextmenu.visible&&a.vakata.context.hide(),d.teardown.call(this)},this.show_contextmenu=function(c,d,e,f){if(c=this.get_node(c),!c||c.id===a.jstree.root)return!1;var g=this.settings.contextmenu,h=this.get_node(c,!0),i=h.children(".jstree-anchor"),j=!1,k=!1;(g.show_at_node||d===b||e===b)&&(j=i.offset(),d=j.left,e=j.top+this._data.core.li_height),this.settings.contextmenu.select_node&&!this.is_selected(c)&&this.activate_node(c,f),k=g.items,a.isFunction(k)&&(k=k.call(this,c,a.proxy(function(a){this._show_contextmenu(c,d,e,a)},this))),a.isPlainObject(k)&&this._show_contextmenu(c,d,e,k)},this._show_contextmenu=function(b,c,d,e){var f=this.get_node(b,!0),g=f.children(".jstree-anchor");a(i).one("context_show.vakata.jstree",a.proxy(function(b,c){var d="jstree-contextmenu jstree-"+this.get_theme()+"-contextmenu";a(c.element).addClass(d),g.addClass("jstree-context")},this)),this._data.contextmenu.visible=!0,a.vakata.context.show(g,{x:c,y:d},e),this.trigger("show_contextmenu",{node:b,x:c,y:d})}},function(a){var b=!1,c={element:!1,reference:!1,position_x:0,position_y:0,items:[],html:"",is_visible:!1};a.vakata.context={settings:{hide_onmouseleave:0,icons:!0},_trigger:function(b){a(i).triggerHandler("context_"+b+".vakata",{reference:c.reference,element:c.element,position:{x:c.position_x,y:c.position_y}})},_execute:function(b){return b=c.items[b],b&&(!b._disabled||a.isFunction(b._disabled)&&!b._disabled({item:b,reference:c.reference,element:c.element}))&&b.action?b.action.call(null,{item:b,reference:c.reference,element:c.element,position:{x:c.position_x,y:c.position_y}}):!1},_parse:function(b,d){if(!b)return!1;d||(c.html="",c.items=[]);var e="",f=!1,g;return d&&(e+="<ul>"),a.each(b,function(b,d){return d?(c.items.push(d),!f&&d.separator_before&&(e+="<li class='vakata-context-separator'><a href='#' "+(a.vakata.context.settings.icons?"":'style="margin-left:0px;"')+">&#160;</a></li>"),f=!1,e+="<li class='"+(d._class||"")+(d._disabled===!0||a.isFunction(d._disabled)&&d._disabled({item:d,reference:c.reference,element:c.element})?" vakata-contextmenu-disabled ":"")+"' "+(d.shortcut?" data-shortcut='"+d.shortcut+"' ":"")+">",e+="<a href='#' rel='"+(c.items.length-1)+"' "+(d.title?"title='"+d.title+"'":"")+">",a.vakata.context.settings.icons&&(e+="<i ",d.icon&&(e+=-1!==d.icon.indexOf("/")||-1!==d.icon.indexOf(".")?" style='background:url(\""+d.icon+"\") center center no-repeat' ":" class='"+d.icon+"' "),e+="></i><span class='vakata-contextmenu-sep'>&#160;</span>"),e+=(a.isFunction(d.label)?d.label({item:b,reference:c.reference,element:c.element}):d.label)+(d.shortcut?' <span class="vakata-contextmenu-shortcut vakata-contextmenu-shortcut-'+d.shortcut+'">'+(d.shortcut_label||"")+"</span>":"")+"</a>",d.submenu&&(g=a.vakata.context._parse(d.submenu,!0),g&&(e+=g)),e+="</li>",void(d.separator_after&&(e+="<li class='vakata-context-separator'><a href='#' "+(a.vakata.context.settings.icons?"":'style="margin-left:0px;"')+">&#160;</a></li>",f=!0))):!0}),e=e.replace(/<li class\='vakata-context-separator'\><\/li\>$/,""),d&&(e+="</ul>"),d||(c.html=e,a.vakata.context._trigger("parse")),e.length>10?e:!1},_show_submenu:function(c){if(c=a(c),c.length&&c.children("ul").length){var d=c.children("ul"),e=c.offset().left,f=e+c.outerWidth(),g=c.offset().top,h=d.width(),i=d.height(),j=a(window).width()+a(window).scrollLeft(),k=a(window).height()+a(window).scrollTop();b?c[f-(h+10+c.outerWidth())<0?"addClass":"removeClass"]("vakata-context-left"):c[f+h>j&&e>j-f?"addClass":"removeClass"]("vakata-context-right"),g+i+10>k&&d.css("bottom","-1px"),c.hasClass("vakata-context-right")?h>e&&d.css("margin-right",e-h):h>j-f&&d.css("margin-left",j-f-h),d.show()}},show:function(d,e,f){var g,h,i,j,k,l,m,n,o=!0;switch(c.element&&c.element.length&&c.element.width(""),o){case!e&&!d:return!1;case!!e&&!!d:c.reference=d,c.position_x=e.x,c.position_y=e.y;break;case!e&&!!d:c.reference=d,g=d.offset(),c.position_x=g.left+d.outerHeight(),c.position_y=g.top;break;case!!e&&!d:c.position_x=e.x,c.position_y=e.y}d&&!f&&a(d).data("vakata_contextmenu")&&(f=a(d).data("vakata_contextmenu")),a.vakata.context._parse(f)&&c.element.html(c.html),c.items.length&&(c.element.appendTo("body"),h=c.element,i=c.position_x,j=c.position_y,k=h.width(),l=h.height(),m=a(window).width()+a(window).scrollLeft(),n=a(window).height()+a(window).scrollTop(),b&&(i-=h.outerWidth()-a(d).outerWidth(),i<a(window).scrollLeft()+20&&(i=a(window).scrollLeft()+20)),i+k+20>m&&(i=m-(k+20)),j+l+20>n&&(j=n-(l+20)),c.element.css({left:i,top:j}).show().find("a").first().focus().parent().addClass("vakata-context-hover"),c.is_visible=!0,a.vakata.context._trigger("show"))},hide:function(){c.is_visible&&(c.element.hide().find("ul").hide().end().find(":focus").blur().end().detach(),c.is_visible=!1,a.vakata.context._trigger("hide"))}},a(function(){b="rtl"===a("body").css("direction");var d=!1;c.element=a("<ul class='vakata-context'></ul>"),c.element.on("mouseenter","li",function(b){b.stopImmediatePropagation(),a.contains(this,b.relatedTarget)||(d&&clearTimeout(d),c.element.find(".vakata-context-hover").removeClass("vakata-context-hover").end(),a(this).siblings().find("ul").hide().end().end().parentsUntil(".vakata-context","li").addBack().addClass("vakata-context-hover"),a.vakata.context._show_submenu(this))}).on("mouseleave","li",function(b){
5
+ a.contains(this,b.relatedTarget)||a(this).find(".vakata-context-hover").addBack().removeClass("vakata-context-hover")}).on("mouseleave",function(b){a(this).find(".vakata-context-hover").removeClass("vakata-context-hover"),a.vakata.context.settings.hide_onmouseleave&&(d=setTimeout(function(b){return function(){a.vakata.context.hide()}}(this),a.vakata.context.settings.hide_onmouseleave))}).on("click","a",function(b){b.preventDefault(),a(this).blur().parent().hasClass("vakata-context-disabled")||a.vakata.context._execute(a(this).attr("rel"))===!1||a.vakata.context.hide()}).on("keydown","a",function(b){var d=null;switch(b.which){case 13:case 32:b.type="click",b.preventDefault(),a(b.currentTarget).trigger(b);break;case 37:c.is_visible&&(c.element.find(".vakata-context-hover").last().closest("li").first().find("ul").hide().find(".vakata-context-hover").removeClass("vakata-context-hover").end().end().children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 38:c.is_visible&&(d=c.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").prevAll("li:not(.vakata-context-separator)").first(),d.length||(d=c.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").last()),d.addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 39:c.is_visible&&(c.element.find(".vakata-context-hover").last().children("ul").show().children("li:not(.vakata-context-separator)").removeClass("vakata-context-hover").first().addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 40:c.is_visible&&(d=c.element.find("ul:visible").addBack().last().children(".vakata-context-hover").removeClass("vakata-context-hover").nextAll("li:not(.vakata-context-separator)").first(),d.length||(d=c.element.find("ul:visible").addBack().last().children("li:not(.vakata-context-separator)").first()),d.addClass("vakata-context-hover").children("a").focus(),b.stopImmediatePropagation(),b.preventDefault());break;case 27:a.vakata.context.hide(),b.preventDefault()}}).on("keydown",function(a){a.preventDefault();var b=c.element.find(".vakata-contextmenu-shortcut-"+a.which).parent();b.parent().not(".vakata-context-disabled")&&b.click()}),a(i).on("mousedown.vakata.jstree",function(b){c.is_visible&&c.element[0]!==b.target&&!a.contains(c.element[0],b.target)&&a.vakata.context.hide()}).on("context_show.vakata.jstree",function(a,d){c.element.find("li:has(ul)").children("a").addClass("vakata-context-parent"),b&&c.element.addClass("vakata-context-rtl").css("direction","rtl"),c.element.find("ul").hide().end()})})}(a),a.jstree.defaults.dnd={copy:!0,open_timeout:500,is_draggable:!0,check_while_dragging:!0,always_copy:!1,inside_pos:0,drag_selection:!0,touch:!0,large_drop_target:!1,large_drag_target:!1,use_html5:!1};var k,l;a.jstree.plugins.dnd=function(b,c){this.init=function(a,b){c.init.call(this,a,b),this.settings.dnd.use_html5=this.settings.dnd.use_html5&&"draggable"in i.createElement("span")},this.bind=function(){c.bind.call(this),this.element.on(this.settings.dnd.use_html5?"dragstart.jstree":"mousedown.jstree touchstart.jstree",this.settings.dnd.large_drag_target?".jstree-node":".jstree-anchor",a.proxy(function(b){if(this.settings.dnd.large_drag_target&&a(b.target).closest(".jstree-node")[0]!==b.currentTarget)return!0;if("touchstart"===b.type&&(!this.settings.dnd.touch||"selected"===this.settings.dnd.touch&&!a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").hasClass("jstree-clicked")))return!0;var c=this.get_node(b.target),d=this.is_selected(c)&&this.settings.dnd.drag_selection?this.get_top_selected().length:1,e=d>1?d+" "+this.get_string("nodes"):this.get_text(b.currentTarget);if(this.settings.core.force_text&&(e=a.vakata.html.escape(e)),c&&c.id&&c.id!==a.jstree.root&&(1===b.which||"touchstart"===b.type||"dragstart"===b.type)&&(this.settings.dnd.is_draggable===!0||a.isFunction(this.settings.dnd.is_draggable)&&this.settings.dnd.is_draggable.call(this,d>1?this.get_top_selected(!0):[c],b))){if(k={jstree:!0,origin:this,obj:this.get_node(c,!0),nodes:d>1?this.get_top_selected():[c.id]},l=b.currentTarget,!this.settings.dnd.use_html5)return this.element.trigger("mousedown.jstree"),a.vakata.dnd.start(b,k,'<div id="jstree-dnd" class="jstree-'+this.get_theme()+" jstree-"+this.get_theme()+"-"+this.get_theme_variant()+" "+(this.settings.core.themes.responsive?" jstree-dnd-responsive":"")+'"><i class="jstree-icon jstree-er"></i>'+e+'<ins class="jstree-copy" style="display:none;">+</ins></div>');a.vakata.dnd._trigger("start",b,{helper:a(),element:l,data:k})}},this)),this.settings.dnd.use_html5&&this.element.on("dragover.jstree",function(b){return b.preventDefault(),a.vakata.dnd._trigger("move",b,{helper:a(),element:l,data:k}),!1}).on("drop.jstree",a.proxy(function(b){return b.preventDefault(),a.vakata.dnd._trigger("stop",b,{helper:a(),element:l,data:k}),!1},this))},this.redraw_node=function(a,b,d,e){if(a=c.redraw_node.apply(this,arguments),a&&this.settings.dnd.use_html5)if(this.settings.dnd.large_drag_target)a.setAttribute("draggable",!0);else{var f,g,h=null;for(f=0,g=a.childNodes.length;g>f;f++)if(a.childNodes[f]&&a.childNodes[f].className&&-1!==a.childNodes[f].className.indexOf("jstree-anchor")){h=a.childNodes[f];break}h&&h.setAttribute("draggable",!0)}return a}},a(function(){var c=!1,d=!1,e=!1,f=!1,g=a('<div id="jstree-marker">&#160;</div>').hide();a(i).on("dnd_start.vakata.jstree",function(a,b){c=!1,e=!1,b&&b.data&&b.data.jstree&&g.appendTo("body")}).on("dnd_move.vakata.jstree",function(h,i){var j=i.event.target!==e.target;if(f&&(!i.event||"dragover"!==i.event.type||j)&&clearTimeout(f),i&&i.data&&i.data.jstree&&(!i.event.target.id||"jstree-marker"!==i.event.target.id)){e=i.event;var k=a.jstree.reference(i.event.target),l=!1,m=!1,n=!1,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E;if(k&&k._data&&k._data.dnd)if(g.attr("class","jstree-"+k.get_theme()+(k.settings.core.themes.responsive?" jstree-dnd-responsive":"")),D=i.data.origin&&(i.data.origin.settings.dnd.always_copy||i.data.origin.settings.dnd.copy&&(i.event.metaKey||i.event.ctrlKey)),i.helper.children().attr("class","jstree-"+k.get_theme()+" jstree-"+k.get_theme()+"-"+k.get_theme_variant()+" "+(k.settings.core.themes.responsive?" jstree-dnd-responsive":"")).find(".jstree-copy").first()[D?"show":"hide"](),i.event.target!==k.element[0]&&i.event.target!==k.get_container_ul()[0]||0!==k.get_container_ul().children().length){if(l=k.settings.dnd.large_drop_target?a(i.event.target).closest(".jstree-node").children(".jstree-anchor"):a(i.event.target).closest(".jstree-anchor"),l&&l.length&&l.parent().is(".jstree-closed, .jstree-open, .jstree-leaf")&&(m=l.offset(),n=(i.event.pageY!==b?i.event.pageY:i.event.originalEvent.pageY)-m.top,r=l.outerHeight(),u=r/3>n?["b","i","a"]:n>r-r/3?["a","i","b"]:n>r/2?["i","a","b"]:["i","b","a"],a.each(u,function(b,e){switch(e){case"b":p=m.left-6,q=m.top,s=k.get_parent(l),t=l.parent().index();break;case"i":B=k.settings.dnd.inside_pos,C=k.get_node(l.parent()),p=m.left-2,q=m.top+r/2+1,s=C.id,t="first"===B?0:"last"===B?C.children.length:Math.min(B,C.children.length);break;case"a":p=m.left-6,q=m.top+r,s=k.get_parent(l),t=l.parent().index()+1}for(v=!0,w=0,x=i.data.nodes.length;x>w;w++)if(y=i.data.origin&&(i.data.origin.settings.dnd.always_copy||i.data.origin.settings.dnd.copy&&(i.event.metaKey||i.event.ctrlKey))?"copy_node":"move_node",z=t,"move_node"===y&&"a"===e&&i.data.origin&&i.data.origin===k&&s===k.get_parent(i.data.nodes[w])&&(A=k.get_node(s),z>a.inArray(i.data.nodes[w],A.children)&&(z-=1)),v=v&&(k&&k.settings&&k.settings.dnd&&k.settings.dnd.check_while_dragging===!1||k.check(y,i.data.origin&&i.data.origin!==k?i.data.origin.get_node(i.data.nodes[w]):i.data.nodes[w],s,z,{dnd:!0,ref:k.get_node(l.parent()),pos:e,origin:i.data.origin,is_multi:i.data.origin&&i.data.origin!==k,is_foreign:!i.data.origin})),!v){k&&k.last_error&&(d=k.last_error());break}return"i"===e&&l.parent().is(".jstree-closed")&&k.settings.dnd.open_timeout&&(!i.event||"dragover"!==i.event.type||j)&&(f&&clearTimeout(f),f=setTimeout(function(a,b){return function(){a.open_node(b)}}(k,l),k.settings.dnd.open_timeout)),v?(E=k.get_node(s,!0),E.hasClass(".jstree-dnd-parent")||(a(".jstree-dnd-parent").removeClass("jstree-dnd-parent"),E.addClass("jstree-dnd-parent")),c={ins:k,par:s,pos:"i"!==e||"last"!==B||0!==t||k.is_loaded(C)?t:"last"},g.css({left:p+"px",top:q+"px"}).show(),i.helper.find(".jstree-icon").first().removeClass("jstree-er").addClass("jstree-ok"),i.event.originalEvent&&i.event.originalEvent.dataTransfer&&(i.event.originalEvent.dataTransfer.dropEffect=D?"copy":"move"),d={},u=!0,!1):void 0}),u===!0))return}else{for(v=!0,w=0,x=i.data.nodes.length;x>w;w++)if(v=v&&k.check(i.data.origin&&(i.data.origin.settings.dnd.always_copy||i.data.origin.settings.dnd.copy&&(i.event.metaKey||i.event.ctrlKey))?"copy_node":"move_node",i.data.origin&&i.data.origin!==k?i.data.origin.get_node(i.data.nodes[w]):i.data.nodes[w],a.jstree.root,"last",{dnd:!0,ref:k.get_node(a.jstree.root),pos:"i",origin:i.data.origin,is_multi:i.data.origin&&i.data.origin!==k,is_foreign:!i.data.origin}),!v)break;if(v)return c={ins:k,par:a.jstree.root,pos:"last"},g.hide(),i.helper.find(".jstree-icon").first().removeClass("jstree-er").addClass("jstree-ok"),void(i.event.originalEvent&&i.event.originalEvent.dataTransfer&&(i.event.originalEvent.dataTransfer.dropEffect=D?"copy":"move"))}a(".jstree-dnd-parent").removeClass("jstree-dnd-parent"),c=!1,i.helper.find(".jstree-icon").removeClass("jstree-ok").addClass("jstree-er"),i.event.originalEvent&&i.event.originalEvent.dataTransfer&&(i.event.originalEvent.dataTransfer.dropEffect="none"),g.hide()}}).on("dnd_scroll.vakata.jstree",function(a,b){b&&b.data&&b.data.jstree&&(g.hide(),c=!1,e=!1,b.helper.find(".jstree-icon").first().removeClass("jstree-ok").addClass("jstree-er"))}).on("dnd_stop.vakata.jstree",function(b,h){if(a(".jstree-dnd-parent").removeClass("jstree-dnd-parent"),f&&clearTimeout(f),h&&h.data&&h.data.jstree){g.hide().detach();var i,j,k=[];if(c){for(i=0,j=h.data.nodes.length;j>i;i++)k[i]=h.data.origin?h.data.origin.get_node(h.data.nodes[i]):h.data.nodes[i];c.ins[h.data.origin&&(h.data.origin.settings.dnd.always_copy||h.data.origin.settings.dnd.copy&&(h.event.metaKey||h.event.ctrlKey))?"copy_node":"move_node"](k,c.par,c.pos,!1,!1,!1,h.data.origin)}else i=a(h.event.target).closest(".jstree"),i.length&&d&&d.error&&"check"===d.error&&(i=i.jstree(!0),i&&i.settings.core.error.call(this,d));e=!1,c=!1}}).on("keyup.jstree keydown.jstree",function(b,h){h=a.vakata.dnd._get(),h&&h.data&&h.data.jstree&&("keyup"===b.type&&27===b.which?(f&&clearTimeout(f),c=!1,d=!1,e=!1,f=!1,g.hide().detach(),a.vakata.dnd._clean()):(h.helper.find(".jstree-copy").first()[h.data.origin&&(h.data.origin.settings.dnd.always_copy||h.data.origin.settings.dnd.copy&&(b.metaKey||b.ctrlKey))?"show":"hide"](),e&&(e.metaKey=b.metaKey,e.ctrlKey=b.ctrlKey,a.vakata.dnd._trigger("move",e))))})}),function(a){a.vakata.html={div:a("<div />"),escape:function(b){return a.vakata.html.div.text(b).html()},strip:function(b){return a.vakata.html.div.empty().append(a.parseHTML(b)).text()}};var c={element:!1,target:!1,is_down:!1,is_drag:!1,helper:!1,helper_w:0,data:!1,init_x:0,init_y:0,scroll_l:0,scroll_t:0,scroll_e:!1,scroll_i:!1,is_touch:!1};a.vakata.dnd={settings:{scroll_speed:10,scroll_proximity:20,helper_left:5,helper_top:10,threshold:5,threshold_touch:50},_trigger:function(c,d,e){e===b&&(e=a.vakata.dnd._get()),e.event=d,a(i).triggerHandler("dnd_"+c+".vakata",e)},_get:function(){return{data:c.data,element:c.element,helper:c.helper}},_clean:function(){c.helper&&c.helper.remove(),c.scroll_i&&(clearInterval(c.scroll_i),c.scroll_i=!1),c={element:!1,target:!1,is_down:!1,is_drag:!1,helper:!1,helper_w:0,data:!1,init_x:0,init_y:0,scroll_l:0,scroll_t:0,scroll_e:!1,scroll_i:!1,is_touch:!1},a(i).off("mousemove.vakata.jstree touchmove.vakata.jstree",a.vakata.dnd.drag),a(i).off("mouseup.vakata.jstree touchend.vakata.jstree",a.vakata.dnd.stop)},_scroll:function(b){if(!c.scroll_e||!c.scroll_l&&!c.scroll_t)return c.scroll_i&&(clearInterval(c.scroll_i),c.scroll_i=!1),!1;if(!c.scroll_i)return c.scroll_i=setInterval(a.vakata.dnd._scroll,100),!1;if(b===!0)return!1;var d=c.scroll_e.scrollTop(),e=c.scroll_e.scrollLeft();c.scroll_e.scrollTop(d+c.scroll_t*a.vakata.dnd.settings.scroll_speed),c.scroll_e.scrollLeft(e+c.scroll_l*a.vakata.dnd.settings.scroll_speed),(d!==c.scroll_e.scrollTop()||e!==c.scroll_e.scrollLeft())&&a.vakata.dnd._trigger("scroll",c.scroll_e)},start:function(b,d,e){"touchstart"===b.type&&b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(b.pageX=b.originalEvent.changedTouches[0].pageX,b.pageY=b.originalEvent.changedTouches[0].pageY,b.target=i.elementFromPoint(b.originalEvent.changedTouches[0].pageX-window.pageXOffset,b.originalEvent.changedTouches[0].pageY-window.pageYOffset)),c.is_drag&&a.vakata.dnd.stop({});try{b.currentTarget.unselectable="on",b.currentTarget.onselectstart=function(){return!1},b.currentTarget.style&&(b.currentTarget.style.touchAction="none",b.currentTarget.style.msTouchAction="none",b.currentTarget.style.MozUserSelect="none")}catch(f){}return c.init_x=b.pageX,c.init_y=b.pageY,c.data=d,c.is_down=!0,c.element=b.currentTarget,c.target=b.target,c.is_touch="touchstart"===b.type,e!==!1&&(c.helper=a("<div id='vakata-dnd'></div>").html(e).css({display:"block",margin:"0",padding:"0",position:"absolute",top:"-2000px",lineHeight:"16px",zIndex:"10000"})),a(i).on("mousemove.vakata.jstree touchmove.vakata.jstree",a.vakata.dnd.drag),a(i).on("mouseup.vakata.jstree touchend.vakata.jstree",a.vakata.dnd.stop),!1},drag:function(b){if("touchmove"===b.type&&b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(b.pageX=b.originalEvent.changedTouches[0].pageX,b.pageY=b.originalEvent.changedTouches[0].pageY,b.target=i.elementFromPoint(b.originalEvent.changedTouches[0].pageX-window.pageXOffset,b.originalEvent.changedTouches[0].pageY-window.pageYOffset)),c.is_down){if(!c.is_drag){if(!(Math.abs(b.pageX-c.init_x)>(c.is_touch?a.vakata.dnd.settings.threshold_touch:a.vakata.dnd.settings.threshold)||Math.abs(b.pageY-c.init_y)>(c.is_touch?a.vakata.dnd.settings.threshold_touch:a.vakata.dnd.settings.threshold)))return;c.helper&&(c.helper.appendTo("body"),c.helper_w=c.helper.outerWidth()),c.is_drag=!0,a(c.target).one("click.vakata",!1),a.vakata.dnd._trigger("start",b)}var d=!1,e=!1,f=!1,g=!1,h=!1,j=!1,k=!1,l=!1,m=!1,n=!1;return c.scroll_t=0,c.scroll_l=0,c.scroll_e=!1,a(a(b.target).parentsUntil("body").addBack().get().reverse()).filter(function(){return/^auto|scroll$/.test(a(this).css("overflow"))&&(this.scrollHeight>this.offsetHeight||this.scrollWidth>this.offsetWidth)}).each(function(){var d=a(this),e=d.offset();return this.scrollHeight>this.offsetHeight&&(e.top+d.height()-b.pageY<a.vakata.dnd.settings.scroll_proximity&&(c.scroll_t=1),b.pageY-e.top<a.vakata.dnd.settings.scroll_proximity&&(c.scroll_t=-1)),this.scrollWidth>this.offsetWidth&&(e.left+d.width()-b.pageX<a.vakata.dnd.settings.scroll_proximity&&(c.scroll_l=1),b.pageX-e.left<a.vakata.dnd.settings.scroll_proximity&&(c.scroll_l=-1)),c.scroll_t||c.scroll_l?(c.scroll_e=a(this),!1):void 0}),c.scroll_e||(d=a(i),e=a(window),f=d.height(),g=e.height(),h=d.width(),j=e.width(),k=d.scrollTop(),l=d.scrollLeft(),f>g&&b.pageY-k<a.vakata.dnd.settings.scroll_proximity&&(c.scroll_t=-1),f>g&&g-(b.pageY-k)<a.vakata.dnd.settings.scroll_proximity&&(c.scroll_t=1),h>j&&b.pageX-l<a.vakata.dnd.settings.scroll_proximity&&(c.scroll_l=-1),h>j&&j-(b.pageX-l)<a.vakata.dnd.settings.scroll_proximity&&(c.scroll_l=1),(c.scroll_t||c.scroll_l)&&(c.scroll_e=d)),c.scroll_e&&a.vakata.dnd._scroll(!0),c.helper&&(m=parseInt(b.pageY+a.vakata.dnd.settings.helper_top,10),n=parseInt(b.pageX+a.vakata.dnd.settings.helper_left,10),f&&m+25>f&&(m=f-50),h&&n+c.helper_w>h&&(n=h-(c.helper_w+2)),c.helper.css({left:n+"px",top:m+"px"})),a.vakata.dnd._trigger("move",b),!1}},stop:function(b){if("touchend"===b.type&&b.originalEvent&&b.originalEvent.changedTouches&&b.originalEvent.changedTouches[0]&&(b.pageX=b.originalEvent.changedTouches[0].pageX,b.pageY=b.originalEvent.changedTouches[0].pageY,b.target=i.elementFromPoint(b.originalEvent.changedTouches[0].pageX-window.pageXOffset,b.originalEvent.changedTouches[0].pageY-window.pageYOffset)),c.is_drag)b.target!==c.target&&a(c.target).off("click.vakata"),a.vakata.dnd._trigger("stop",b);else if("touchend"===b.type&&b.target===c.target){var d=setTimeout(function(){a(b.target).click()},100);a(b.target).one("click",function(){d&&clearTimeout(d)})}return a.vakata.dnd._clean(),!1}}}(a),a.jstree.defaults.massload=null,a.jstree.plugins.massload=function(b,c){this.init=function(a,b){this._data.massload={},c.init.call(this,a,b)},this._load_nodes=function(b,d,e,f){var g=this.settings.massload,h=JSON.stringify(b),i=[],j=this._model.data,k,l,m;if(!e){for(k=0,l=b.length;l>k;k++)(!j[b[k]]||!j[b[k]].state.loaded&&!j[b[k]].state.failed||f)&&(i.push(b[k]),m=this.get_node(b[k],!0),m&&m.length&&m.addClass("jstree-loading").attr("aria-busy",!0));if(this._data.massload={},i.length){if(a.isFunction(g))return g.call(this,i,a.proxy(function(a){var g,h;if(a)for(g in a)a.hasOwnProperty(g)&&(this._data.massload[g]=a[g]);for(g=0,h=b.length;h>g;g++)m=this.get_node(b[g],!0),m&&m.length&&m.removeClass("jstree-loading").attr("aria-busy",!1);c._load_nodes.call(this,b,d,e,f)},this));if("object"==typeof g&&g&&g.url)return g=a.extend(!0,{},g),a.isFunction(g.url)&&(g.url=g.url.call(this,i)),a.isFunction(g.data)&&(g.data=g.data.call(this,i)),a.ajax(g).done(a.proxy(function(a,g,h){var i,j;if(a)for(i in a)a.hasOwnProperty(i)&&(this._data.massload[i]=a[i]);for(i=0,j=b.length;j>i;i++)m=this.get_node(b[i],!0),m&&m.length&&m.removeClass("jstree-loading").attr("aria-busy",!1);c._load_nodes.call(this,b,d,e,f)},this)).fail(a.proxy(function(a){c._load_nodes.call(this,b,d,e,f)},this))}}return c._load_nodes.call(this,b,d,e,f)},this._load_node=function(b,d){var e=this._data.massload[b.id],f=null,g;return e?(f=this["string"==typeof e?"_append_html_data":"_append_json_data"](b,"string"==typeof e?a(a.parseHTML(e)).filter(function(){return 3!==this.nodeType}):e,function(a){d.call(this,a)}),g=this.get_node(b.id,!0),g&&g.length&&g.removeClass("jstree-loading").attr("aria-busy",!1),delete this._data.massload[b.id],f):c._load_node.call(this,b,d)}},a.jstree.defaults.search={ajax:!1,fuzzy:!1,case_sensitive:!1,show_only_matches:!1,show_only_matches_children:!1,close_opened_onclear:!0,search_leaves_only:!1,search_callback:!1},a.jstree.plugins.search=function(c,d){this.bind=function(){d.bind.call(this),this._data.search.str="",this._data.search.dom=a(),this._data.search.res=[],this._data.search.opn=[],this._data.search.som=!1,this._data.search.smc=!1,this._data.search.hdn=[],this.element.on("search.jstree",a.proxy(function(b,c){if(this._data.search.som&&c.res.length){var d=this._model.data,e,f,g=[],h,i;for(e=0,f=c.res.length;f>e;e++)if(d[c.res[e]]&&!d[c.res[e]].state.hidden&&(g.push(c.res[e]),g=g.concat(d[c.res[e]].parents),this._data.search.smc))for(h=0,i=d[c.res[e]].children_d.length;i>h;h++)d[d[c.res[e]].children_d[h]]&&!d[d[c.res[e]].children_d[h]].state.hidden&&g.push(d[c.res[e]].children_d[h]);g=a.vakata.array_remove_item(a.vakata.array_unique(g),a.jstree.root),this._data.search.hdn=this.hide_all(!0),this.show_node(g,!0),this.redraw(!0)}},this)).on("clear_search.jstree",a.proxy(function(a,b){this._data.search.som&&b.res.length&&(this.show_node(this._data.search.hdn,!0),this.redraw(!0))},this))},this.search=function(c,d,e,f,g,h){if(c===!1||""===a.trim(c.toString()))return this.clear_search();f=this.get_node(f),f=f&&f.id?f.id:null,c=c.toString();var i=this.settings.search,j=i.ajax?i.ajax:!1,k=this._model.data,l=null,m=[],n=[],o,p;if(this._data.search.res.length&&!g&&this.clear_search(),e===b&&(e=i.show_only_matches),h===b&&(h=i.show_only_matches_children),!d&&j!==!1)return a.isFunction(j)?j.call(this,c,a.proxy(function(b){b&&b.d&&(b=b.d),this._load_nodes(a.isArray(b)?a.vakata.array_unique(b):[],function(){this.search(c,!0,e,f,g,h)})},this),f):(j=a.extend({},j),j.data||(j.data={}),j.data.str=c,f&&(j.data.inside=f),this._data.search.lastRequest&&this._data.search.lastRequest.abort(),this._data.search.lastRequest=a.ajax(j).fail(a.proxy(function(){this._data.core.last_error={error:"ajax",plugin:"search",id:"search_01",reason:"Could not load search parents",data:JSON.stringify(j)},this.settings.core.error.call(this,this._data.core.last_error)},this)).done(a.proxy(function(b){b&&b.d&&(b=b.d),this._load_nodes(a.isArray(b)?a.vakata.array_unique(b):[],function(){this.search(c,!0,e,f,g,h)})},this)),this._data.search.lastRequest);if(g||(this._data.search.str=c,this._data.search.dom=a(),this._data.search.res=[],this._data.search.opn=[],this._data.search.som=e,this._data.search.smc=h),l=new a.vakata.search(c,!0,{caseSensitive:i.case_sensitive,fuzzy:i.fuzzy}),a.each(k[f?f:a.jstree.root].children_d,function(a,b){var d=k[b];d.text&&!d.state.hidden&&(!i.search_leaves_only||d.state.loaded&&0===d.children.length)&&(i.search_callback&&i.search_callback.call(this,c,d)||!i.search_callback&&l.search(d.text).isMatch)&&(m.push(b),n=n.concat(d.parents))}),m.length){for(n=a.vakata.array_unique(n),o=0,p=n.length;p>o;o++)n[o]!==a.jstree.root&&k[n[o]]&&this.open_node(n[o],null,0)===!0&&this._data.search.opn.push(n[o]);g?(this._data.search.dom=this._data.search.dom.add(a(this.element[0].querySelectorAll("#"+a.map(m,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #")))),this._data.search.res=a.vakata.array_unique(this._data.search.res.concat(m))):(this._data.search.dom=a(this.element[0].querySelectorAll("#"+a.map(m,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #"))),this._data.search.res=m),this._data.search.dom.children(".jstree-anchor").addClass("jstree-search")}this.trigger("search",{nodes:this._data.search.dom,str:c,res:this._data.search.res,show_only_matches:e})},this.clear_search=function(){this.settings.search.close_opened_onclear&&this.close_node(this._data.search.opn,0),this.trigger("clear_search",{nodes:this._data.search.dom,str:this._data.search.str,res:this._data.search.res}),this._data.search.res.length&&(this._data.search.dom=a(this.element[0].querySelectorAll("#"+a.map(this._data.search.res,function(b){return-1!=="0123456789".indexOf(b[0])?"\\3"+b[0]+" "+b.substr(1).replace(a.jstree.idregex,"\\$&"):b.replace(a.jstree.idregex,"\\$&")}).join(", #"))),this._data.search.dom.children(".jstree-anchor").removeClass("jstree-search")),this._data.search.str="",this._data.search.res=[],this._data.search.opn=[],this._data.search.dom=a()},this.redraw_node=function(b,c,e,f){if(b=d.redraw_node.apply(this,arguments),b&&-1!==a.inArray(b.id,this._data.search.res)){var g,h,i=null;for(g=0,h=b.childNodes.length;h>g;g++)if(b.childNodes[g]&&b.childNodes[g].className&&-1!==b.childNodes[g].className.indexOf("jstree-anchor")){i=b.childNodes[g];break}i&&(i.className+=" jstree-search")}return b}},function(a){a.vakata.search=function(b,c,d){d=d||{},d=a.extend({},a.vakata.search.defaults,d),d.fuzzy!==!1&&(d.fuzzy=!0),b=d.caseSensitive?b:b.toLowerCase();var e=d.location,f=d.distance,g=d.threshold,h=b.length,i,j,k,l;return h>32&&(d.fuzzy=!1),d.fuzzy&&(i=1<<h-1,j=function(){var a={},c=0;for(c=0;h>c;c++)a[b.charAt(c)]=0;for(c=0;h>c;c++)a[b.charAt(c)]|=1<<h-c-1;return a}(),k=function(a,b){var c=a/h,d=Math.abs(e-b);return f?c+d/f:d?1:c}),l=function(a){if(a=d.caseSensitive?a:a.toLowerCase(),b===a||-1!==a.indexOf(b))return{isMatch:!0,score:0};if(!d.fuzzy)return{isMatch:!1,score:1};var c,f,l=a.length,m=g,n=a.indexOf(b,e),o,p,q=h+l,r,s,t,u,v,w=1,x=[];for(-1!==n&&(m=Math.min(k(0,n),m),n=a.lastIndexOf(b,e+h),-1!==n&&(m=Math.min(k(0,n),m))),n=-1,c=0;h>c;c++){o=0,p=q;while(p>o)k(c,e+p)<=m?o=p:q=p,p=Math.floor((q-o)/2+o);for(q=p,s=Math.max(1,e-p+1),t=Math.min(e+p,l)+h,u=new Array(t+2),u[t+1]=(1<<c)-1,f=t;f>=s;f--)if(v=j[a.charAt(f-1)],0===c?u[f]=(u[f+1]<<1|1)&v:u[f]=(u[f+1]<<1|1)&v|((r[f+1]|r[f])<<1|1)|r[f+1],u[f]&i&&(w=k(c,f-1),m>=w)){if(m=w,n=f-1,x.push(n),!(n>e))break;s=Math.max(1,2*e-n)}if(k(c+1,e)>m)break;r=u}return{isMatch:n>=0,score:w}},c===!0?{search:l}:l(c)},a.vakata.search.defaults={location:0,distance:100,threshold:.6,fuzzy:!1,caseSensitive:!1}}(a),a.jstree.defaults.sort=function(a,b){return this.get_text(a)>this.get_text(b)?1:-1},a.jstree.plugins.sort=function(b,c){this.bind=function(){c.bind.call(this),this.element.on("model.jstree",a.proxy(function(a,b){this.sort(b.parent,!0)},this)).on("rename_node.jstree create_node.jstree",a.proxy(function(a,b){this.sort(b.parent||b.node.parent,!1),this.redraw_node(b.parent||b.node.parent,!0)},this)).on("move_node.jstree copy_node.jstree",a.proxy(function(a,b){this.sort(b.parent,!1),this.redraw_node(b.parent,!0)},this))},this.sort=function(b,c){var d,e;if(b=this.get_node(b),b&&b.children&&b.children.length&&(b.children.sort(a.proxy(this.settings.sort,this)),c))for(d=0,e=b.children_d.length;e>d;d++)this.sort(b.children_d[d],!1)}};var m=!1;a.jstree.defaults.state={key:"jstree",events:"changed.jstree open_node.jstree close_node.jstree check_node.jstree uncheck_node.jstree",ttl:!1,filter:!1},a.jstree.plugins.state=function(b,c){this.bind=function(){c.bind.call(this);var b=a.proxy(function(){this.element.on(this.settings.state.events,a.proxy(function(){m&&clearTimeout(m),m=setTimeout(a.proxy(function(){this.save_state()},this),100)},this)),this.trigger("state_ready")},this);this.element.on("ready.jstree",a.proxy(function(a,c){this.element.one("restore_state.jstree",b),this.restore_state()||b()},this))},this.save_state=function(){var b={state:this.get_state(),ttl:this.settings.state.ttl,sec:+new Date};a.vakata.storage.set(this.settings.state.key,JSON.stringify(b))},this.restore_state=function(){var b=a.vakata.storage.get(this.settings.state.key);if(b)try{b=JSON.parse(b)}catch(c){return!1}return b&&b.ttl&&b.sec&&+new Date-b.sec>b.ttl?!1:(b&&b.state&&(b=b.state),b&&a.isFunction(this.settings.state.filter)&&(b=this.settings.state.filter.call(this,b)),b?(this.element.one("set_state.jstree",function(c,d){d.instance.trigger("restore_state",{state:a.extend(!0,{},b)})}),this.set_state(b),!0):!1)},this.clear_state=function(){return a.vakata.storage.del(this.settings.state.key)}},function(a,b){a.vakata.storage={set:function(a,b){return window.localStorage.setItem(a,b)},get:function(a){return window.localStorage.getItem(a)},del:function(a){return window.localStorage.removeItem(a)}}}(a),a.jstree.defaults.types={"default":{}},a.jstree.defaults.types[a.jstree.root]={},a.jstree.plugins.types=function(c,d){this.init=function(c,e){var f,g;if(e&&e.types&&e.types["default"])for(f in e.types)if("default"!==f&&f!==a.jstree.root&&e.types.hasOwnProperty(f))for(g in e.types["default"])e.types["default"].hasOwnProperty(g)&&e.types[f][g]===b&&(e.types[f][g]=e.types["default"][g]);d.init.call(this,c,e),this._model.data[a.jstree.root].type=a.jstree.root},this.refresh=function(b,c){d.refresh.call(this,b,c),this._model.data[a.jstree.root].type=a.jstree.root},this.bind=function(){this.element.on("model.jstree",a.proxy(function(c,d){var e=this._model.data,f=d.nodes,g=this.settings.types,h,i,j="default",k;for(h=0,i=f.length;i>h;h++){if(j="default",e[f[h]].original&&e[f[h]].original.type&&g[e[f[h]].original.type]&&(j=e[f[h]].original.type),e[f[h]].data&&e[f[h]].data.jstree&&e[f[h]].data.jstree.type&&g[e[f[h]].data.jstree.type]&&(j=e[f[h]].data.jstree.type),e[f[h]].type=j,e[f[h]].icon===!0&&g[j].icon!==b&&(e[f[h]].icon=g[j].icon),g[j].li_attr!==b&&"object"==typeof g[j].li_attr)for(k in g[j].li_attr)if(g[j].li_attr.hasOwnProperty(k)){if("id"===k)continue;e[f[h]].li_attr[k]===b?e[f[h]].li_attr[k]=g[j].li_attr[k]:"class"===k&&(e[f[h]].li_attr["class"]=g[j].li_attr["class"]+" "+e[f[h]].li_attr["class"])}if(g[j].a_attr!==b&&"object"==typeof g[j].a_attr)for(k in g[j].a_attr)if(g[j].a_attr.hasOwnProperty(k)){if("id"===k)continue;e[f[h]].a_attr[k]===b?e[f[h]].a_attr[k]=g[j].a_attr[k]:"href"===k&&"#"===e[f[h]].a_attr[k]?e[f[h]].a_attr.href=g[j].a_attr.href:"class"===k&&(e[f[h]].a_attr["class"]=g[j].a_attr["class"]+" "+e[f[h]].a_attr["class"])}}e[a.jstree.root].type=a.jstree.root},this)),d.bind.call(this)},this.get_json=function(b,c,e){var f,g,h=this._model.data,i=c?a.extend(!0,{},c,{no_id:!1}):{},j=d.get_json.call(this,b,i,e);if(j===!1)return!1;if(a.isArray(j))for(f=0,g=j.length;g>f;f++)j[f].type=j[f].id&&h[j[f].id]&&h[j[f].id].type?h[j[f].id].type:"default",c&&c.no_id&&(delete j[f].id,j[f].li_attr&&j[f].li_attr.id&&delete j[f].li_attr.id,j[f].a_attr&&j[f].a_attr.id&&delete j[f].a_attr.id);else j.type=j.id&&h[j.id]&&h[j.id].type?h[j.id].type:"default",c&&c.no_id&&(j=this._delete_ids(j));return j},this._delete_ids=function(b){if(a.isArray(b)){for(var c=0,d=b.length;d>c;c++)b[c]=this._delete_ids(b[c]);return b}return delete b.id,b.li_attr&&b.li_attr.id&&delete b.li_attr.id,b.a_attr&&b.a_attr.id&&delete b.a_attr.id,b.children&&a.isArray(b.children)&&(b.children=this._delete_ids(b.children)),b},this.check=function(c,e,f,g,h){if(d.check.call(this,c,e,f,g,h)===!1)return!1;e=e&&e.id?e:this.get_node(e),f=f&&f.id?f:this.get_node(f);var i=e&&e.id?h&&h.origin?h.origin:a.jstree.reference(e.id):null,j,k,l,m;switch(i=i&&i._model&&i._model.data?i._model.data:null,c){case"create_node":case"move_node":case"copy_node":if("move_node"!==c||-1===a.inArray(e.id,f.children)){if(j=this.get_rules(f),j.max_children!==b&&-1!==j.max_children&&j.max_children===f.children.length)return this._data.core.last_error={error:"check",plugin:"types",id:"types_01",reason:"max_children prevents function: "+c,data:JSON.stringify({chk:c,pos:g,obj:e&&e.id?e.id:!1,par:f&&f.id?f.id:!1})},!1;if(j.valid_children!==b&&-1!==j.valid_children&&-1===a.inArray(e.type||"default",j.valid_children))return this._data.core.last_error={error:"check",plugin:"types",id:"types_02",reason:"valid_children prevents function: "+c,data:JSON.stringify({chk:c,pos:g,obj:e&&e.id?e.id:!1,par:f&&f.id?f.id:!1})},!1;if(i&&e.children_d&&e.parents){for(k=0,l=0,m=e.children_d.length;m>l;l++)k=Math.max(k,i[e.children_d[l]].parents.length);k=k-e.parents.length+1}(0>=k||k===b)&&(k=1);do{if(j.max_depth!==b&&-1!==j.max_depth&&j.max_depth<k)return this._data.core.last_error={error:"check",plugin:"types",id:"types_03",reason:"max_depth prevents function: "+c,data:JSON.stringify({chk:c,pos:g,obj:e&&e.id?e.id:!1,par:f&&f.id?f.id:!1})},!1;f=this.get_node(f.parent),j=this.get_rules(f),k++}while(f)}}return!0},this.get_rules=function(a){if(a=this.get_node(a),!a)return!1;var c=this.get_type(a,!0);return c.max_depth===b&&(c.max_depth=-1),c.max_children===b&&(c.max_children=-1),c.valid_children===b&&(c.valid_children=-1),c},this.get_type=function(b,c){return b=this.get_node(b),b?c?a.extend({type:b.type},this.settings.types[b.type]):b.type:!1},this.set_type=function(c,d){var e=this._model.data,f,g,h,i,j,k,l,m;if(a.isArray(c)){for(c=c.slice(),g=0,h=c.length;h>g;g++)this.set_type(c[g],d);return!0}if(f=this.settings.types,c=this.get_node(c),!f[d]||!c)return!1;if(l=this.get_node(c,!0),l&&l.length&&(m=l.children(".jstree-anchor")),i=c.type,j=this.get_icon(c),c.type=d,(j===!0||!f[i]||f[i].icon!==b&&j===f[i].icon)&&this.set_icon(c,f[d].icon!==b?f[d].icon:!0),f[i]&&f[i].li_attr!==b&&"object"==typeof f[i].li_attr)for(k in f[i].li_attr)if(f[i].li_attr.hasOwnProperty(k)){if("id"===k)continue;"class"===k?(e[c.id].li_attr["class"]=(e[c.id].li_attr["class"]||"").replace(f[i].li_attr[k],""),l&&l.removeClass(f[i].li_attr[k])):e[c.id].li_attr[k]===f[i].li_attr[k]&&(e[c.id].li_attr[k]=null,l&&l.removeAttr(k))}if(f[i]&&f[i].a_attr!==b&&"object"==typeof f[i].a_attr)for(k in f[i].a_attr)if(f[i].a_attr.hasOwnProperty(k)){if("id"===k)continue;"class"===k?(e[c.id].a_attr["class"]=(e[c.id].a_attr["class"]||"").replace(f[i].a_attr[k],""),
6
+ m&&m.removeClass(f[i].a_attr[k])):e[c.id].a_attr[k]===f[i].a_attr[k]&&("href"===k?(e[c.id].a_attr[k]="#",m&&m.attr("href","#")):(delete e[c.id].a_attr[k],m&&m.removeAttr(k)))}if(f[d].li_attr!==b&&"object"==typeof f[d].li_attr)for(k in f[d].li_attr)if(f[d].li_attr.hasOwnProperty(k)){if("id"===k)continue;e[c.id].li_attr[k]===b?(e[c.id].li_attr[k]=f[d].li_attr[k],l&&("class"===k?l.addClass(f[d].li_attr[k]):l.attr(k,f[d].li_attr[k]))):"class"===k&&(e[c.id].li_attr["class"]=f[d].li_attr[k]+" "+e[c.id].li_attr["class"],l&&l.addClass(f[d].li_attr[k]))}if(f[d].a_attr!==b&&"object"==typeof f[d].a_attr)for(k in f[d].a_attr)if(f[d].a_attr.hasOwnProperty(k)){if("id"===k)continue;e[c.id].a_attr[k]===b?(e[c.id].a_attr[k]=f[d].a_attr[k],m&&("class"===k?m.addClass(f[d].a_attr[k]):m.attr(k,f[d].a_attr[k]))):"href"===k&&"#"===e[c.id].a_attr[k]?(e[c.id].a_attr.href=f[d].a_attr.href,m&&m.attr("href",f[d].a_attr.href)):"class"===k&&(e[c.id].a_attr["class"]=f[d].a_attr["class"]+" "+e[c.id].a_attr["class"],m&&m.addClass(f[d].a_attr[k]))}return!0}},a.jstree.defaults.unique={case_sensitive:!1,duplicate:function(a,b){return a+" ("+b+")"}},a.jstree.plugins.unique=function(c,d){this.check=function(b,c,e,f,g){if(d.check.call(this,b,c,e,f,g)===!1)return!1;if(c=c&&c.id?c:this.get_node(c),e=e&&e.id?e:this.get_node(e),!e||!e.children)return!0;var h="rename_node"===b?f:c.text,i=[],j=this.settings.unique.case_sensitive,k=this._model.data,l,m;for(l=0,m=e.children.length;m>l;l++)i.push(j?k[e.children[l]].text:k[e.children[l]].text.toLowerCase());switch(j||(h=h.toLowerCase()),b){case"delete_node":return!0;case"rename_node":return l=-1===a.inArray(h,i)||c.text&&c.text[j?"toString":"toLowerCase"]()===h,l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_01",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l;case"create_node":return l=-1===a.inArray(h,i),l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_04",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l;case"copy_node":return l=-1===a.inArray(h,i),l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_02",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l;case"move_node":return l=c.parent===e.id&&(!g||!g.is_multi)||-1===a.inArray(h,i),l||(this._data.core.last_error={error:"check",plugin:"unique",id:"unique_03",reason:"Child with name "+h+" already exists. Preventing: "+b,data:JSON.stringify({chk:b,pos:f,obj:c&&c.id?c.id:!1,par:e&&e.id?e.id:!1})}),l}return!0},this.create_node=function(c,e,f,g,h){if(!e||e.text===b){if(null===c&&(c=a.jstree.root),c=this.get_node(c),!c)return d.create_node.call(this,c,e,f,g,h);if(f=f===b?"last":f,!f.toString().match(/^(before|after)$/)&&!h&&!this.is_loaded(c))return d.create_node.call(this,c,e,f,g,h);e||(e={});var i,j,k,l,m,n=this._model.data,o=this.settings.unique.case_sensitive,p=this.settings.unique.duplicate;for(j=i=this.get_string("New node"),k=[],l=0,m=c.children.length;m>l;l++)k.push(o?n[c.children[l]].text:n[c.children[l]].text.toLowerCase());l=1;while(-1!==a.inArray(o?j:j.toLowerCase(),k))j=p.call(this,i,++l).toString();e.text=j}return d.create_node.call(this,c,e,f,g,h)}};var n=i.createElement("DIV");if(n.setAttribute("unselectable","on"),n.setAttribute("role","presentation"),n.className="jstree-wholerow",n.innerHTML="&#160;",a.jstree.plugins.wholerow=function(b,c){this.bind=function(){c.bind.call(this),this.element.on("ready.jstree set_state.jstree",a.proxy(function(){this.hide_dots()},this)).on("init.jstree loading.jstree ready.jstree",a.proxy(function(){this.get_container_ul().addClass("jstree-wholerow-ul")},this)).on("deselect_all.jstree",a.proxy(function(a,b){this.element.find(".jstree-wholerow-clicked").removeClass("jstree-wholerow-clicked")},this)).on("changed.jstree",a.proxy(function(a,b){this.element.find(".jstree-wholerow-clicked").removeClass("jstree-wholerow-clicked");var c=!1,d,e;for(d=0,e=b.selected.length;e>d;d++)c=this.get_node(b.selected[d],!0),c&&c.length&&c.children(".jstree-wholerow").addClass("jstree-wholerow-clicked")},this)).on("open_node.jstree",a.proxy(function(a,b){this.get_node(b.node,!0).find(".jstree-clicked").parent().children(".jstree-wholerow").addClass("jstree-wholerow-clicked")},this)).on("hover_node.jstree dehover_node.jstree",a.proxy(function(a,b){"hover_node"===a.type&&this.is_disabled(b.node)||this.get_node(b.node,!0).children(".jstree-wholerow")["hover_node"===a.type?"addClass":"removeClass"]("jstree-wholerow-hovered")},this)).on("contextmenu.jstree",".jstree-wholerow",a.proxy(function(b){if(this._data.contextmenu){b.preventDefault();var c=a.Event("contextmenu",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey,pageX:b.pageX,pageY:b.pageY});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c)}},this)).on("click.jstree",".jstree-wholerow",function(b){b.stopImmediatePropagation();var c=a.Event("click",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()}).on("dblclick.jstree",".jstree-wholerow",function(b){b.stopImmediatePropagation();var c=a.Event("dblclick",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()}).on("click.jstree",".jstree-leaf > .jstree-ocl",a.proxy(function(b){b.stopImmediatePropagation();var c=a.Event("click",{metaKey:b.metaKey,ctrlKey:b.ctrlKey,altKey:b.altKey,shiftKey:b.shiftKey});a(b.currentTarget).closest(".jstree-node").children(".jstree-anchor").first().trigger(c).focus()},this)).on("mouseover.jstree",".jstree-wholerow, .jstree-icon",a.proxy(function(a){return a.stopImmediatePropagation(),this.is_disabled(a.currentTarget)||this.hover_node(a.currentTarget),!1},this)).on("mouseleave.jstree",".jstree-node",a.proxy(function(a){this.dehover_node(a.currentTarget)},this))},this.teardown=function(){this.settings.wholerow&&this.element.find(".jstree-wholerow").remove(),c.teardown.call(this)},this.redraw_node=function(b,d,e,f){if(b=c.redraw_node.apply(this,arguments)){var g=n.cloneNode(!0);-1!==a.inArray(b.id,this._data.core.selected)&&(g.className+=" jstree-wholerow-clicked"),this._data.core.focused&&this._data.core.focused===b.id&&(g.className+=" jstree-wholerow-hovered"),b.insertBefore(g,b.childNodes[0])}return b}},i.registerElement&&Object&&Object.create){var o=Object.create(HTMLElement.prototype);o.createdCallback=function(){var b={core:{},plugins:[]},c;for(c in a.jstree.plugins)a.jstree.plugins.hasOwnProperty(c)&&this.attributes[c]&&(b.plugins.push(c),this.getAttribute(c)&&JSON.parse(this.getAttribute(c))&&(b[c]=JSON.parse(this.getAttribute(c))));for(c in a.jstree.defaults.core)a.jstree.defaults.core.hasOwnProperty(c)&&this.attributes[c]&&(b.core[c]=JSON.parse(this.getAttribute(c))||this.getAttribute(c));a(this).jstree(b)};try{i.registerElement("vakata-jstree",{prototype:o})}catch(p){}}}});
includes/jstree/themes/default-dark/style.css CHANGED
@@ -105,6 +105,12 @@
105
  -ms-user-select: none;
106
  user-select: none;
107
  }
 
 
 
 
 
 
108
  .vakata-context {
109
  display: none;
110
  }
105
  -ms-user-select: none;
106
  user-select: none;
107
  }
108
+ .jstree-contextmenu .jstree-anchor {
109
+ -webkit-user-select: none;
110
+ /* disable selection/Copy of UIWebView */
111
+ -webkit-touch-callout: none;
112
+ /* disable the IOS popup when long-press on a link */
113
+ }
114
  .vakata-context {
115
  display: none;
116
  }
includes/jstree/themes/default-dark/style.min.css CHANGED
@@ -1 +1 @@
1
- .jstree-node,.jstree-children,.jstree-container-ul{display:block;margin:0;padding:0;list-style-type:none;list-style-image:none}.jstree-node{white-space:nowrap}.jstree-anchor{display:inline-block;color:#000;white-space:nowrap;padding:0 4px 0 1px;margin:0;vertical-align:top}.jstree-anchor:focus{outline:0}.jstree-anchor,.jstree-anchor:link,.jstree-anchor:visited,.jstree-anchor:hover,.jstree-anchor:active{text-decoration:none;color:inherit}.jstree-icon{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-icon:empty{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-ocl{cursor:pointer}.jstree-leaf>.jstree-ocl{cursor:default}.jstree .jstree-open>.jstree-children{display:block}.jstree .jstree-closed>.jstree-children,.jstree .jstree-leaf>.jstree-children{display:none}.jstree-anchor>.jstree-themeicon{margin-right:2px}.jstree-no-icons .jstree-themeicon,.jstree-anchor>.jstree-themeicon-hidden{display:none}.jstree-hidden,.jstree-node.jstree-hidden{display:none}.jstree-rtl .jstree-anchor{padding:0 1px 0 4px}.jstree-rtl .jstree-anchor>.jstree-themeicon{margin-left:2px;margin-right:0}.jstree-rtl .jstree-node{margin-left:0}.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-wholerow-ul{position:relative;display:inline-block;min-width:100%}.jstree-wholerow-ul .jstree-leaf>.jstree-ocl{cursor:pointer}.jstree-wholerow-ul .jstree-anchor,.jstree-wholerow-ul .jstree-icon{position:relative}.jstree-wholerow-ul .jstree-wholerow{width:100%;cursor:pointer;position:absolute;left:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vakata-context{display:none}.vakata-context,.vakata-context ul{margin:0;padding:2px;position:absolute;background:#f5f5f5;border:1px solid #979797;box-shadow:2px 2px 2px #999}.vakata-context ul{list-style:none;left:100%;margin-top:-2.7em;margin-left:-4px}.vakata-context .vakata-context-right ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context li{list-style:none}.vakata-context li>a{display:block;padding:0 2em;text-decoration:none;width:auto;color:#000;white-space:nowrap;line-height:2.4em;text-shadow:1px 1px 0 #fff;border-radius:1px}.vakata-context li>a:hover{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==);background-position:right center;background-repeat:no-repeat}.vakata-context li>a:focus{outline:0}.vakata-context .vakata-context-hover>a{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context .vakata-context-separator>a,.vakata-context .vakata-context-separator>a:hover{background:#fff;border:0;border-top:1px solid #e2e3e3;height:1px;min-height:1px;max-height:1px;padding:0;margin:0 0 0 2.4em;border-left:1px solid #e0e0e0;text-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;border-radius:0}.vakata-context .vakata-contextmenu-disabled a,.vakata-context .vakata-contextmenu-disabled a:hover{color:silver;background-color:transparent;border:0;box-shadow:0 0 0}.vakata-context li>a>i{text-decoration:none;display:inline-block;width:2.4em;height:2.4em;background:0 0;margin:0 0 0 -2em;vertical-align:top;text-align:center;line-height:2.4em}.vakata-context li>a>i:empty{width:2.4em;line-height:2.4em}.vakata-context li>a .vakata-contextmenu-sep{display:inline-block;width:1px;height:2.4em;background:#fff;margin:0 .5em 0 0;border-left:1px solid #e2e3e3}.vakata-context .vakata-contextmenu-shortcut{font-size:.8em;color:silver;opacity:.5;display:none}.vakata-context-rtl ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context-rtl li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7);background-position:left center;background-repeat:no-repeat}.vakata-context-rtl .vakata-context-separator>a{margin:0 2.4em 0 0;border-left:0;border-right:1px solid #e2e3e3}.vakata-context-rtl .vakata-context-left ul{right:auto;left:100%;margin-left:-4px;margin-right:auto}.vakata-context-rtl li>a>i{margin:0 -2em 0 0}.vakata-context-rtl li>a .vakata-contextmenu-sep{margin:0 0 0 .5em;border-left-color:#fff;background:#e2e3e3}#jstree-marker{position:absolute;top:0;left:0;margin:-5px 0 0 0;padding:0;border-right:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid;width:0;height:0;font-size:0;line-height:0}#jstree-dnd{line-height:16px;margin:0;padding:4px}#jstree-dnd .jstree-icon,#jstree-dnd .jstree-copy{display:inline-block;text-decoration:none;margin:0 2px 0 0;padding:0;width:16px;height:16px}#jstree-dnd .jstree-ok{background:green}#jstree-dnd .jstree-er{background:red}#jstree-dnd .jstree-copy{margin:0 2px}.jstree-default-dark .jstree-node,.jstree-default-dark .jstree-icon{background-repeat:no-repeat;background-color:transparent}.jstree-default-dark .jstree-anchor,.jstree-default-dark .jstree-animated,.jstree-default-dark .jstree-wholerow{transition:background-color .15s,box-shadow .15s}.jstree-default-dark .jstree-hovered{background:#555;border-radius:2px;box-shadow:inset 0 0 1px #555}.jstree-default-dark .jstree-context{background:#555;border-radius:2px;box-shadow:inset 0 0 1px #555}.jstree-default-dark .jstree-clicked{background:#5fa2db;border-radius:2px;box-shadow:inset 0 0 1px #666}.jstree-default-dark .jstree-no-icons .jstree-anchor>.jstree-themeicon{display:none}.jstree-default-dark .jstree-disabled{background:0 0;color:#666}.jstree-default-dark .jstree-disabled.jstree-hovered{background:0 0;box-shadow:none}.jstree-default-dark .jstree-disabled.jstree-clicked{background:#333}.jstree-default-dark .jstree-disabled>.jstree-icon{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-dark .jstree-search{font-style:italic;color:#fff;font-weight:700}.jstree-default-dark .jstree-no-checkboxes .jstree-checkbox{display:none!important}.jstree-default-dark.jstree-checkbox-no-clicked .jstree-clicked{background:0 0;box-shadow:none}.jstree-default-dark.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered{background:#555}.jstree-default-dark.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked{background:0 0}.jstree-default-dark.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered{background:#555}.jstree-default-dark>.jstree-striped{min-width:100%;display:inline-block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==) left top repeat}.jstree-default-dark>.jstree-wholerow-ul .jstree-hovered,.jstree-default-dark>.jstree-wholerow-ul .jstree-clicked{background:0 0;box-shadow:none;border-radius:0}.jstree-default-dark .jstree-wholerow{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.jstree-default-dark .jstree-wholerow-hovered{background:#555}.jstree-default-dark .jstree-wholerow-clicked{background:#5fa2db;background:-webkit-linear-gradient(top,#5fa2db 0,#5fa2db 100%);background:linear-gradient(to bottom,#5fa2db 0,#5fa2db 100%)}.jstree-default-dark .jstree-node{min-height:24px;line-height:24px;margin-left:24px;min-width:24px}.jstree-default-dark .jstree-anchor{line-height:24px;height:24px}.jstree-default-dark .jstree-icon{width:24px;height:24px;line-height:24px}.jstree-default-dark .jstree-icon:empty{width:24px;height:24px;line-height:24px}.jstree-default-dark.jstree-rtl .jstree-node{margin-right:24px}.jstree-default-dark .jstree-wholerow{height:24px}.jstree-default-dark .jstree-node,.jstree-default-dark .jstree-icon{background-image:url(32px.png)}.jstree-default-dark .jstree-node{background-position:-292px -4px;background-repeat:repeat-y}.jstree-default-dark .jstree-last{background:0 0}.jstree-default-dark .jstree-open>.jstree-ocl{background-position:-132px -4px}.jstree-default-dark .jstree-closed>.jstree-ocl{background-position:-100px -4px}.jstree-default-dark .jstree-leaf>.jstree-ocl{background-position:-68px -4px}.jstree-default-dark .jstree-themeicon{background-position:-260px -4px}.jstree-default-dark>.jstree-no-dots .jstree-node,.jstree-default-dark>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -4px}.jstree-default-dark>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -4px}.jstree-default-dark .jstree-disabled{background:0 0}.jstree-default-dark .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-dark .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-dark .jstree-checkbox{background-position:-164px -4px}.jstree-default-dark .jstree-checkbox:hover{background-position:-164px -36px}.jstree-default-dark.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-dark .jstree-checked>.jstree-checkbox{background-position:-228px -4px}.jstree-default-dark.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-dark .jstree-checked>.jstree-checkbox:hover{background-position:-228px -36px}.jstree-default-dark .jstree-anchor>.jstree-undetermined{background-position:-196px -4px}.jstree-default-dark .jstree-anchor>.jstree-undetermined:hover{background-position:-196px -36px}.jstree-default-dark .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-dark>.jstree-striped{background-size:auto 48px}.jstree-default-dark.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-dark.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark.jstree-rtl .jstree-open>.jstree-ocl{background-position:-132px -36px}.jstree-default-dark.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-100px -36px}.jstree-default-dark.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-68px -36px}.jstree-default-dark.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-dark.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -36px}.jstree-default-dark.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -36px}.jstree-default-dark .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-dark>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-dark .jstree-file{background:url(32px.png) -100px -68px no-repeat}.jstree-default-dark .jstree-folder{background:url(32px.png) -260px -4px no-repeat}.jstree-default-dark>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-dark{line-height:24px;padding:0 4px}#jstree-dnd.jstree-default-dark .jstree-ok,#jstree-dnd.jstree-default-dark .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-dark i{background:0 0;width:24px;height:24px;line-height:24px}#jstree-dnd.jstree-default-dark .jstree-ok{background-position:-4px -68px}#jstree-dnd.jstree-default-dark .jstree-er{background-position:-36px -68px}.jstree-default-dark .jstree-ellipsis{overflow:hidden}.jstree-default-dark .jstree-ellipsis .jstree-anchor{width:calc(100% - 29px);text-overflow:ellipsis;overflow:hidden}.jstree-default-dark .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default-dark.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==)}.jstree-default-dark.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-small .jstree-node{min-height:18px;line-height:18px;margin-left:18px;min-width:18px}.jstree-default-dark-small .jstree-anchor{line-height:18px;height:18px}.jstree-default-dark-small .jstree-icon{width:18px;height:18px;line-height:18px}.jstree-default-dark-small .jstree-icon:empty{width:18px;height:18px;line-height:18px}.jstree-default-dark-small.jstree-rtl .jstree-node{margin-right:18px}.jstree-default-dark-small .jstree-wholerow{height:18px}.jstree-default-dark-small .jstree-node,.jstree-default-dark-small .jstree-icon{background-image:url(32px.png)}.jstree-default-dark-small .jstree-node{background-position:-295px -7px;background-repeat:repeat-y}.jstree-default-dark-small .jstree-last{background:0 0}.jstree-default-dark-small .jstree-open>.jstree-ocl{background-position:-135px -7px}.jstree-default-dark-small .jstree-closed>.jstree-ocl{background-position:-103px -7px}.jstree-default-dark-small .jstree-leaf>.jstree-ocl{background-position:-71px -7px}.jstree-default-dark-small .jstree-themeicon{background-position:-263px -7px}.jstree-default-dark-small>.jstree-no-dots .jstree-node,.jstree-default-dark-small>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark-small>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -7px}.jstree-default-dark-small>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -7px}.jstree-default-dark-small .jstree-disabled{background:0 0}.jstree-default-dark-small .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-dark-small .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-dark-small .jstree-checkbox{background-position:-167px -7px}.jstree-default-dark-small .jstree-checkbox:hover{background-position:-167px -39px}.jstree-default-dark-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-dark-small .jstree-checked>.jstree-checkbox{background-position:-231px -7px}.jstree-default-dark-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-dark-small .jstree-checked>.jstree-checkbox:hover{background-position:-231px -39px}.jstree-default-dark-small .jstree-anchor>.jstree-undetermined{background-position:-199px -7px}.jstree-default-dark-small .jstree-anchor>.jstree-undetermined:hover{background-position:-199px -39px}.jstree-default-dark-small .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-dark-small>.jstree-striped{background-size:auto 36px}.jstree-default-dark-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-dark-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-small.jstree-rtl .jstree-open>.jstree-ocl{background-position:-135px -39px}.jstree-default-dark-small.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-103px -39px}.jstree-default-dark-small.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-71px -39px}.jstree-default-dark-small.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-dark-small.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark-small.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -39px}.jstree-default-dark-small.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -39px}.jstree-default-dark-small .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-dark-small>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-dark-small .jstree-file{background:url(32px.png) -103px -71px no-repeat}.jstree-default-dark-small .jstree-folder{background:url(32px.png) -263px -7px no-repeat}.jstree-default-dark-small>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-dark-small{line-height:18px;padding:0 4px}#jstree-dnd.jstree-default-dark-small .jstree-ok,#jstree-dnd.jstree-default-dark-small .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-dark-small i{background:0 0;width:18px;height:18px;line-height:18px}#jstree-dnd.jstree-default-dark-small .jstree-ok{background-position:-7px -71px}#jstree-dnd.jstree-default-dark-small .jstree-er{background-position:-39px -71px}.jstree-default-dark-small .jstree-ellipsis{overflow:hidden}.jstree-default-dark-small .jstree-ellipsis .jstree-anchor{width:calc(100% - 23px);text-overflow:ellipsis;overflow:hidden}.jstree-default-dark-small .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default-dark-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==)}.jstree-default-dark-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-large .jstree-node{min-height:32px;line-height:32px;margin-left:32px;min-width:32px}.jstree-default-dark-large .jstree-anchor{line-height:32px;height:32px}.jstree-default-dark-large .jstree-icon{width:32px;height:32px;line-height:32px}.jstree-default-dark-large .jstree-icon:empty{width:32px;height:32px;line-height:32px}.jstree-default-dark-large.jstree-rtl .jstree-node{margin-right:32px}.jstree-default-dark-large .jstree-wholerow{height:32px}.jstree-default-dark-large .jstree-node,.jstree-default-dark-large .jstree-icon{background-image:url(32px.png)}.jstree-default-dark-large .jstree-node{background-position:-288px 0;background-repeat:repeat-y}.jstree-default-dark-large .jstree-last{background:0 0}.jstree-default-dark-large .jstree-open>.jstree-ocl{background-position:-128px 0}.jstree-default-dark-large .jstree-closed>.jstree-ocl{background-position:-96px 0}.jstree-default-dark-large .jstree-leaf>.jstree-ocl{background-position:-64px 0}.jstree-default-dark-large .jstree-themeicon{background-position:-256px 0}.jstree-default-dark-large>.jstree-no-dots .jstree-node,.jstree-default-dark-large>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark-large>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px 0}.jstree-default-dark-large>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 0}.jstree-default-dark-large .jstree-disabled{background:0 0}.jstree-default-dark-large .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-dark-large .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-dark-large .jstree-checkbox{background-position:-160px 0}.jstree-default-dark-large .jstree-checkbox:hover{background-position:-160px -32px}.jstree-default-dark-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-dark-large .jstree-checked>.jstree-checkbox{background-position:-224px 0}.jstree-default-dark-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-dark-large .jstree-checked>.jstree-checkbox:hover{background-position:-224px -32px}.jstree-default-dark-large .jstree-anchor>.jstree-undetermined{background-position:-192px 0}.jstree-default-dark-large .jstree-anchor>.jstree-undetermined:hover{background-position:-192px -32px}.jstree-default-dark-large .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-dark-large>.jstree-striped{background-size:auto 64px}.jstree-default-dark-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-dark-large.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-large.jstree-rtl .jstree-open>.jstree-ocl{background-position:-128px -32px}.jstree-default-dark-large.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-96px -32px}.jstree-default-dark-large.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-64px -32px}.jstree-default-dark-large.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-dark-large.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark-large.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px -32px}.jstree-default-dark-large.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 -32px}.jstree-default-dark-large .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-dark-large>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-dark-large .jstree-file{background:url(32px.png) -96px -64px no-repeat}.jstree-default-dark-large .jstree-folder{background:url(32px.png) -256px 0 no-repeat}.jstree-default-dark-large>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-dark-large{line-height:32px;padding:0 4px}#jstree-dnd.jstree-default-dark-large .jstree-ok,#jstree-dnd.jstree-default-dark-large .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-dark-large i{background:0 0;width:32px;height:32px;line-height:32px}#jstree-dnd.jstree-default-dark-large .jstree-ok{background-position:0 -64px}#jstree-dnd.jstree-default-dark-large .jstree-er{background-position:-32px -64px}.jstree-default-dark-large .jstree-ellipsis{overflow:hidden}.jstree-default-dark-large .jstree-ellipsis .jstree-anchor{width:calc(100% - 37px);text-overflow:ellipsis;overflow:hidden}.jstree-default-dark-large .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default-dark-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==)}.jstree-default-dark-large.jstree-rtl .jstree-last{background:0 0}@media (max-width:768px){#jstree-dnd.jstree-dnd-responsive{line-height:40px;font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}#jstree-dnd.jstree-dnd-responsive>i{background:0 0;width:40px;height:40px}#jstree-dnd.jstree-dnd-responsive>.jstree-ok{background-image:url(40px.png);background-position:0 -200px;background-size:120px 240px}#jstree-dnd.jstree-dnd-responsive>.jstree-er{background-image:url(40px.png);background-position:-40px -200px;background-size:120px 240px}#jstree-marker.jstree-dnd-responsive{border-left-width:10px;border-top-width:10px;border-bottom-width:10px;margin-top:-10px}}@media (max-width:768px){.jstree-default-dark-responsive .jstree-icon{background-image:url(40px.png)}.jstree-default-dark-responsive .jstree-node,.jstree-default-dark-responsive .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark-responsive .jstree-node{min-height:40px;line-height:40px;margin-left:40px;min-width:40px;white-space:nowrap}.jstree-default-dark-responsive .jstree-anchor{line-height:40px;height:40px}.jstree-default-dark-responsive .jstree-icon,.jstree-default-dark-responsive .jstree-icon:empty{width:40px;height:40px;line-height:40px}.jstree-default-dark-responsive>.jstree-container-ul>.jstree-node{margin-left:0}.jstree-default-dark-responsive.jstree-rtl .jstree-node{margin-left:0;margin-right:40px;background:0 0}.jstree-default-dark-responsive.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-default-dark-responsive .jstree-ocl,.jstree-default-dark-responsive .jstree-themeicon,.jstree-default-dark-responsive .jstree-checkbox{background-size:120px 240px}.jstree-default-dark-responsive .jstree-leaf>.jstree-ocl,.jstree-default-dark-responsive.jstree-rtl .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark-responsive .jstree-open>.jstree-ocl{background-position:0 0!important}.jstree-default-dark-responsive .jstree-closed>.jstree-ocl{background-position:0 -40px!important}.jstree-default-dark-responsive.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-40px 0!important}.jstree-default-dark-responsive .jstree-themeicon{background-position:-40px -40px}.jstree-default-dark-responsive .jstree-checkbox,.jstree-default-dark-responsive .jstree-checkbox:hover{background-position:-40px -80px}.jstree-default-dark-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-dark-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-dark-responsive .jstree-checked>.jstree-checkbox,.jstree-default-dark-responsive .jstree-checked>.jstree-checkbox:hover{background-position:0 -80px}.jstree-default-dark-responsive .jstree-anchor>.jstree-undetermined,.jstree-default-dark-responsive .jstree-anchor>.jstree-undetermined:hover{background-position:0 -120px}.jstree-default-dark-responsive .jstree-anchor{font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}.jstree-default-dark-responsive>.jstree-striped{background:0 0}.jstree-default-dark-responsive .jstree-wholerow{border-top:1px solid #666;border-bottom:1px solid #000;background:#333;height:40px}.jstree-default-dark-responsive .jstree-wholerow-hovered{background:#555}.jstree-default-dark-responsive .jstree-wholerow-clicked{background:#5fa2db}.jstree-default-dark-responsive .jstree-children .jstree-last>.jstree-wholerow{box-shadow:inset 0 -6px 3px -5px #111}.jstree-default-dark-responsive .jstree-children .jstree-open>.jstree-wholerow{box-shadow:inset 0 6px 3px -5px #111;border-top:0}.jstree-default-dark-responsive .jstree-children .jstree-open+.jstree-open{box-shadow:none}.jstree-default-dark-responsive .jstree-node,.jstree-default-dark-responsive .jstree-icon,.jstree-default-dark-responsive .jstree-node>.jstree-ocl,.jstree-default-dark-responsive .jstree-themeicon,.jstree-default-dark-responsive .jstree-checkbox{background-image:url(40px.png);background-size:120px 240px}.jstree-default-dark-responsive .jstree-node{background-position:-80px 0;background-repeat:repeat-y}.jstree-default-dark-responsive .jstree-last{background:0 0}.jstree-default-dark-responsive .jstree-leaf>.jstree-ocl{background-position:-40px -120px}.jstree-default-dark-responsive .jstree-last>.jstree-ocl{background-position:-40px -160px}.jstree-default-dark-responsive .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-dark-responsive .jstree-file{background:url(40px.png) 0 -160px no-repeat;background-size:120px 240px}.jstree-default-dark-responsive .jstree-folder{background:url(40px.png) -40px -40px no-repeat;background-size:120px 240px}.jstree-default-dark-responsive>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}}.jstree-default-dark{background:#333}.jstree-default-dark .jstree-anchor{color:#999;text-shadow:1px 1px 0 rgba(0,0,0,.5)}.jstree-default-dark .jstree-clicked,.jstree-default-dark .jstree-checked{color:#fff}.jstree-default-dark .jstree-hovered{color:#fff}#jstree-marker.jstree-default-dark{border-left-color:#999;background:0 0}.jstree-default-dark .jstree-anchor>.jstree-icon{opacity:.75}.jstree-default-dark .jstree-clicked>.jstree-icon,.jstree-default-dark .jstree-hovered>.jstree-icon,.jstree-default-dark .jstree-checked>.jstree-icon{opacity:1}.jstree-default-dark.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==)}.jstree-default-dark.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==)}.jstree-default-dark-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==)}.jstree-default-dark-large.jstree-rtl .jstree-last{background:0 0}
1
+ .jstree-node,.jstree-children,.jstree-container-ul{display:block;margin:0;padding:0;list-style-type:none;list-style-image:none}.jstree-node{white-space:nowrap}.jstree-anchor{display:inline-block;color:#000;white-space:nowrap;padding:0 4px 0 1px;margin:0;vertical-align:top}.jstree-anchor:focus{outline:0}.jstree-anchor,.jstree-anchor:link,.jstree-anchor:visited,.jstree-anchor:hover,.jstree-anchor:active{text-decoration:none;color:inherit}.jstree-icon{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-icon:empty{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-ocl{cursor:pointer}.jstree-leaf>.jstree-ocl{cursor:default}.jstree .jstree-open>.jstree-children{display:block}.jstree .jstree-closed>.jstree-children,.jstree .jstree-leaf>.jstree-children{display:none}.jstree-anchor>.jstree-themeicon{margin-right:2px}.jstree-no-icons .jstree-themeicon,.jstree-anchor>.jstree-themeicon-hidden{display:none}.jstree-hidden,.jstree-node.jstree-hidden{display:none}.jstree-rtl .jstree-anchor{padding:0 1px 0 4px}.jstree-rtl .jstree-anchor>.jstree-themeicon{margin-left:2px;margin-right:0}.jstree-rtl .jstree-node{margin-left:0}.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-wholerow-ul{position:relative;display:inline-block;min-width:100%}.jstree-wholerow-ul .jstree-leaf>.jstree-ocl{cursor:pointer}.jstree-wholerow-ul .jstree-anchor,.jstree-wholerow-ul .jstree-icon{position:relative}.jstree-wholerow-ul .jstree-wholerow{width:100%;cursor:pointer;position:absolute;left:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.jstree-contextmenu .jstree-anchor{-webkit-user-select:none;-webkit-touch-callout:none}.vakata-context{display:none}.vakata-context,.vakata-context ul{margin:0;padding:2px;position:absolute;background:#f5f5f5;border:1px solid #979797;box-shadow:2px 2px 2px #999}.vakata-context ul{list-style:none;left:100%;margin-top:-2.7em;margin-left:-4px}.vakata-context .vakata-context-right ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context li{list-style:none}.vakata-context li>a{display:block;padding:0 2em;text-decoration:none;width:auto;color:#000;white-space:nowrap;line-height:2.4em;text-shadow:1px 1px 0 #fff;border-radius:1px}.vakata-context li>a:hover{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==);background-position:right center;background-repeat:no-repeat}.vakata-context li>a:focus{outline:0}.vakata-context .vakata-context-hover>a{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context .vakata-context-separator>a,.vakata-context .vakata-context-separator>a:hover{background:#fff;border:0;border-top:1px solid #e2e3e3;height:1px;min-height:1px;max-height:1px;padding:0;margin:0 0 0 2.4em;border-left:1px solid #e0e0e0;text-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;border-radius:0}.vakata-context .vakata-contextmenu-disabled a,.vakata-context .vakata-contextmenu-disabled a:hover{color:silver;background-color:transparent;border:0;box-shadow:0 0 0}.vakata-context li>a>i{text-decoration:none;display:inline-block;width:2.4em;height:2.4em;background:0 0;margin:0 0 0 -2em;vertical-align:top;text-align:center;line-height:2.4em}.vakata-context li>a>i:empty{width:2.4em;line-height:2.4em}.vakata-context li>a .vakata-contextmenu-sep{display:inline-block;width:1px;height:2.4em;background:#fff;margin:0 .5em 0 0;border-left:1px solid #e2e3e3}.vakata-context .vakata-contextmenu-shortcut{font-size:.8em;color:silver;opacity:.5;display:none}.vakata-context-rtl ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context-rtl li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7);background-position:left center;background-repeat:no-repeat}.vakata-context-rtl .vakata-context-separator>a{margin:0 2.4em 0 0;border-left:0;border-right:1px solid #e2e3e3}.vakata-context-rtl .vakata-context-left ul{right:auto;left:100%;margin-left:-4px;margin-right:auto}.vakata-context-rtl li>a>i{margin:0 -2em 0 0}.vakata-context-rtl li>a .vakata-contextmenu-sep{margin:0 0 0 .5em;border-left-color:#fff;background:#e2e3e3}#jstree-marker{position:absolute;top:0;left:0;margin:-5px 0 0 0;padding:0;border-right:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid;width:0;height:0;font-size:0;line-height:0}#jstree-dnd{line-height:16px;margin:0;padding:4px}#jstree-dnd .jstree-icon,#jstree-dnd .jstree-copy{display:inline-block;text-decoration:none;margin:0 2px 0 0;padding:0;width:16px;height:16px}#jstree-dnd .jstree-ok{background:green}#jstree-dnd .jstree-er{background:red}#jstree-dnd .jstree-copy{margin:0 2px}.jstree-default-dark .jstree-node,.jstree-default-dark .jstree-icon{background-repeat:no-repeat;background-color:transparent}.jstree-default-dark .jstree-anchor,.jstree-default-dark .jstree-animated,.jstree-default-dark .jstree-wholerow{transition:background-color .15s,box-shadow .15s}.jstree-default-dark .jstree-hovered{background:#555;border-radius:2px;box-shadow:inset 0 0 1px #555}.jstree-default-dark .jstree-context{background:#555;border-radius:2px;box-shadow:inset 0 0 1px #555}.jstree-default-dark .jstree-clicked{background:#5fa2db;border-radius:2px;box-shadow:inset 0 0 1px #666}.jstree-default-dark .jstree-no-icons .jstree-anchor>.jstree-themeicon{display:none}.jstree-default-dark .jstree-disabled{background:0 0;color:#666}.jstree-default-dark .jstree-disabled.jstree-hovered{background:0 0;box-shadow:none}.jstree-default-dark .jstree-disabled.jstree-clicked{background:#333}.jstree-default-dark .jstree-disabled>.jstree-icon{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-dark .jstree-search{font-style:italic;color:#fff;font-weight:700}.jstree-default-dark .jstree-no-checkboxes .jstree-checkbox{display:none!important}.jstree-default-dark.jstree-checkbox-no-clicked .jstree-clicked{background:0 0;box-shadow:none}.jstree-default-dark.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered{background:#555}.jstree-default-dark.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked{background:0 0}.jstree-default-dark.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered{background:#555}.jstree-default-dark>.jstree-striped{min-width:100%;display:inline-block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==) left top repeat}.jstree-default-dark>.jstree-wholerow-ul .jstree-hovered,.jstree-default-dark>.jstree-wholerow-ul .jstree-clicked{background:0 0;box-shadow:none;border-radius:0}.jstree-default-dark .jstree-wholerow{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.jstree-default-dark .jstree-wholerow-hovered{background:#555}.jstree-default-dark .jstree-wholerow-clicked{background:#5fa2db;background:-webkit-linear-gradient(top,#5fa2db 0,#5fa2db 100%);background:linear-gradient(to bottom,#5fa2db 0,#5fa2db 100%)}.jstree-default-dark .jstree-node{min-height:24px;line-height:24px;margin-left:24px;min-width:24px}.jstree-default-dark .jstree-anchor{line-height:24px;height:24px}.jstree-default-dark .jstree-icon{width:24px;height:24px;line-height:24px}.jstree-default-dark .jstree-icon:empty{width:24px;height:24px;line-height:24px}.jstree-default-dark.jstree-rtl .jstree-node{margin-right:24px}.jstree-default-dark .jstree-wholerow{height:24px}.jstree-default-dark .jstree-node,.jstree-default-dark .jstree-icon{background-image:url(32px.png)}.jstree-default-dark .jstree-node{background-position:-292px -4px;background-repeat:repeat-y}.jstree-default-dark .jstree-last{background:0 0}.jstree-default-dark .jstree-open>.jstree-ocl{background-position:-132px -4px}.jstree-default-dark .jstree-closed>.jstree-ocl{background-position:-100px -4px}.jstree-default-dark .jstree-leaf>.jstree-ocl{background-position:-68px -4px}.jstree-default-dark .jstree-themeicon{background-position:-260px -4px}.jstree-default-dark>.jstree-no-dots .jstree-node,.jstree-default-dark>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -4px}.jstree-default-dark>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -4px}.jstree-default-dark .jstree-disabled{background:0 0}.jstree-default-dark .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-dark .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-dark .jstree-checkbox{background-position:-164px -4px}.jstree-default-dark .jstree-checkbox:hover{background-position:-164px -36px}.jstree-default-dark.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-dark .jstree-checked>.jstree-checkbox{background-position:-228px -4px}.jstree-default-dark.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-dark .jstree-checked>.jstree-checkbox:hover{background-position:-228px -36px}.jstree-default-dark .jstree-anchor>.jstree-undetermined{background-position:-196px -4px}.jstree-default-dark .jstree-anchor>.jstree-undetermined:hover{background-position:-196px -36px}.jstree-default-dark .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-dark>.jstree-striped{background-size:auto 48px}.jstree-default-dark.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-dark.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark.jstree-rtl .jstree-open>.jstree-ocl{background-position:-132px -36px}.jstree-default-dark.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-100px -36px}.jstree-default-dark.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-68px -36px}.jstree-default-dark.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-dark.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -36px}.jstree-default-dark.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -36px}.jstree-default-dark .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-dark>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-dark .jstree-file{background:url(32px.png) -100px -68px no-repeat}.jstree-default-dark .jstree-folder{background:url(32px.png) -260px -4px no-repeat}.jstree-default-dark>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-dark{line-height:24px;padding:0 4px}#jstree-dnd.jstree-default-dark .jstree-ok,#jstree-dnd.jstree-default-dark .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-dark i{background:0 0;width:24px;height:24px;line-height:24px}#jstree-dnd.jstree-default-dark .jstree-ok{background-position:-4px -68px}#jstree-dnd.jstree-default-dark .jstree-er{background-position:-36px -68px}.jstree-default-dark .jstree-ellipsis{overflow:hidden}.jstree-default-dark .jstree-ellipsis .jstree-anchor{width:calc(100% - 29px);text-overflow:ellipsis;overflow:hidden}.jstree-default-dark .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default-dark.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==)}.jstree-default-dark.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-small .jstree-node{min-height:18px;line-height:18px;margin-left:18px;min-width:18px}.jstree-default-dark-small .jstree-anchor{line-height:18px;height:18px}.jstree-default-dark-small .jstree-icon{width:18px;height:18px;line-height:18px}.jstree-default-dark-small .jstree-icon:empty{width:18px;height:18px;line-height:18px}.jstree-default-dark-small.jstree-rtl .jstree-node{margin-right:18px}.jstree-default-dark-small .jstree-wholerow{height:18px}.jstree-default-dark-small .jstree-node,.jstree-default-dark-small .jstree-icon{background-image:url(32px.png)}.jstree-default-dark-small .jstree-node{background-position:-295px -7px;background-repeat:repeat-y}.jstree-default-dark-small .jstree-last{background:0 0}.jstree-default-dark-small .jstree-open>.jstree-ocl{background-position:-135px -7px}.jstree-default-dark-small .jstree-closed>.jstree-ocl{background-position:-103px -7px}.jstree-default-dark-small .jstree-leaf>.jstree-ocl{background-position:-71px -7px}.jstree-default-dark-small .jstree-themeicon{background-position:-263px -7px}.jstree-default-dark-small>.jstree-no-dots .jstree-node,.jstree-default-dark-small>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark-small>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -7px}.jstree-default-dark-small>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -7px}.jstree-default-dark-small .jstree-disabled{background:0 0}.jstree-default-dark-small .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-dark-small .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-dark-small .jstree-checkbox{background-position:-167px -7px}.jstree-default-dark-small .jstree-checkbox:hover{background-position:-167px -39px}.jstree-default-dark-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-dark-small .jstree-checked>.jstree-checkbox{background-position:-231px -7px}.jstree-default-dark-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-dark-small .jstree-checked>.jstree-checkbox:hover{background-position:-231px -39px}.jstree-default-dark-small .jstree-anchor>.jstree-undetermined{background-position:-199px -7px}.jstree-default-dark-small .jstree-anchor>.jstree-undetermined:hover{background-position:-199px -39px}.jstree-default-dark-small .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-dark-small>.jstree-striped{background-size:auto 36px}.jstree-default-dark-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-dark-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-small.jstree-rtl .jstree-open>.jstree-ocl{background-position:-135px -39px}.jstree-default-dark-small.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-103px -39px}.jstree-default-dark-small.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-71px -39px}.jstree-default-dark-small.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-dark-small.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark-small.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -39px}.jstree-default-dark-small.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -39px}.jstree-default-dark-small .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-dark-small>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-dark-small .jstree-file{background:url(32px.png) -103px -71px no-repeat}.jstree-default-dark-small .jstree-folder{background:url(32px.png) -263px -7px no-repeat}.jstree-default-dark-small>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-dark-small{line-height:18px;padding:0 4px}#jstree-dnd.jstree-default-dark-small .jstree-ok,#jstree-dnd.jstree-default-dark-small .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-dark-small i{background:0 0;width:18px;height:18px;line-height:18px}#jstree-dnd.jstree-default-dark-small .jstree-ok{background-position:-7px -71px}#jstree-dnd.jstree-default-dark-small .jstree-er{background-position:-39px -71px}.jstree-default-dark-small .jstree-ellipsis{overflow:hidden}.jstree-default-dark-small .jstree-ellipsis .jstree-anchor{width:calc(100% - 23px);text-overflow:ellipsis;overflow:hidden}.jstree-default-dark-small .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default-dark-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==)}.jstree-default-dark-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-large .jstree-node{min-height:32px;line-height:32px;margin-left:32px;min-width:32px}.jstree-default-dark-large .jstree-anchor{line-height:32px;height:32px}.jstree-default-dark-large .jstree-icon{width:32px;height:32px;line-height:32px}.jstree-default-dark-large .jstree-icon:empty{width:32px;height:32px;line-height:32px}.jstree-default-dark-large.jstree-rtl .jstree-node{margin-right:32px}.jstree-default-dark-large .jstree-wholerow{height:32px}.jstree-default-dark-large .jstree-node,.jstree-default-dark-large .jstree-icon{background-image:url(32px.png)}.jstree-default-dark-large .jstree-node{background-position:-288px 0;background-repeat:repeat-y}.jstree-default-dark-large .jstree-last{background:0 0}.jstree-default-dark-large .jstree-open>.jstree-ocl{background-position:-128px 0}.jstree-default-dark-large .jstree-closed>.jstree-ocl{background-position:-96px 0}.jstree-default-dark-large .jstree-leaf>.jstree-ocl{background-position:-64px 0}.jstree-default-dark-large .jstree-themeicon{background-position:-256px 0}.jstree-default-dark-large>.jstree-no-dots .jstree-node,.jstree-default-dark-large>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark-large>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px 0}.jstree-default-dark-large>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 0}.jstree-default-dark-large .jstree-disabled{background:0 0}.jstree-default-dark-large .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-dark-large .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-dark-large .jstree-checkbox{background-position:-160px 0}.jstree-default-dark-large .jstree-checkbox:hover{background-position:-160px -32px}.jstree-default-dark-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-dark-large .jstree-checked>.jstree-checkbox{background-position:-224px 0}.jstree-default-dark-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-dark-large .jstree-checked>.jstree-checkbox:hover{background-position:-224px -32px}.jstree-default-dark-large .jstree-anchor>.jstree-undetermined{background-position:-192px 0}.jstree-default-dark-large .jstree-anchor>.jstree-undetermined:hover{background-position:-192px -32px}.jstree-default-dark-large .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-dark-large>.jstree-striped{background-size:auto 64px}.jstree-default-dark-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-dark-large.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-large.jstree-rtl .jstree-open>.jstree-ocl{background-position:-128px -32px}.jstree-default-dark-large.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-96px -32px}.jstree-default-dark-large.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-64px -32px}.jstree-default-dark-large.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-dark-large.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark-large.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px -32px}.jstree-default-dark-large.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 -32px}.jstree-default-dark-large .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-dark-large>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-dark-large .jstree-file{background:url(32px.png) -96px -64px no-repeat}.jstree-default-dark-large .jstree-folder{background:url(32px.png) -256px 0 no-repeat}.jstree-default-dark-large>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-dark-large{line-height:32px;padding:0 4px}#jstree-dnd.jstree-default-dark-large .jstree-ok,#jstree-dnd.jstree-default-dark-large .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-dark-large i{background:0 0;width:32px;height:32px;line-height:32px}#jstree-dnd.jstree-default-dark-large .jstree-ok{background-position:0 -64px}#jstree-dnd.jstree-default-dark-large .jstree-er{background-position:-32px -64px}.jstree-default-dark-large .jstree-ellipsis{overflow:hidden}.jstree-default-dark-large .jstree-ellipsis .jstree-anchor{width:calc(100% - 37px);text-overflow:ellipsis;overflow:hidden}.jstree-default-dark-large .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default-dark-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==)}.jstree-default-dark-large.jstree-rtl .jstree-last{background:0 0}@media (max-width:768px){#jstree-dnd.jstree-dnd-responsive{line-height:40px;font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}#jstree-dnd.jstree-dnd-responsive>i{background:0 0;width:40px;height:40px}#jstree-dnd.jstree-dnd-responsive>.jstree-ok{background-image:url(40px.png);background-position:0 -200px;background-size:120px 240px}#jstree-dnd.jstree-dnd-responsive>.jstree-er{background-image:url(40px.png);background-position:-40px -200px;background-size:120px 240px}#jstree-marker.jstree-dnd-responsive{border-left-width:10px;border-top-width:10px;border-bottom-width:10px;margin-top:-10px}}@media (max-width:768px){.jstree-default-dark-responsive .jstree-icon{background-image:url(40px.png)}.jstree-default-dark-responsive .jstree-node,.jstree-default-dark-responsive .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark-responsive .jstree-node{min-height:40px;line-height:40px;margin-left:40px;min-width:40px;white-space:nowrap}.jstree-default-dark-responsive .jstree-anchor{line-height:40px;height:40px}.jstree-default-dark-responsive .jstree-icon,.jstree-default-dark-responsive .jstree-icon:empty{width:40px;height:40px;line-height:40px}.jstree-default-dark-responsive>.jstree-container-ul>.jstree-node{margin-left:0}.jstree-default-dark-responsive.jstree-rtl .jstree-node{margin-left:0;margin-right:40px;background:0 0}.jstree-default-dark-responsive.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-default-dark-responsive .jstree-ocl,.jstree-default-dark-responsive .jstree-themeicon,.jstree-default-dark-responsive .jstree-checkbox{background-size:120px 240px}.jstree-default-dark-responsive .jstree-leaf>.jstree-ocl,.jstree-default-dark-responsive.jstree-rtl .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-dark-responsive .jstree-open>.jstree-ocl{background-position:0 0!important}.jstree-default-dark-responsive .jstree-closed>.jstree-ocl{background-position:0 -40px!important}.jstree-default-dark-responsive.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-40px 0!important}.jstree-default-dark-responsive .jstree-themeicon{background-position:-40px -40px}.jstree-default-dark-responsive .jstree-checkbox,.jstree-default-dark-responsive .jstree-checkbox:hover{background-position:-40px -80px}.jstree-default-dark-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-dark-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-dark-responsive .jstree-checked>.jstree-checkbox,.jstree-default-dark-responsive .jstree-checked>.jstree-checkbox:hover{background-position:0 -80px}.jstree-default-dark-responsive .jstree-anchor>.jstree-undetermined,.jstree-default-dark-responsive .jstree-anchor>.jstree-undetermined:hover{background-position:0 -120px}.jstree-default-dark-responsive .jstree-anchor{font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}.jstree-default-dark-responsive>.jstree-striped{background:0 0}.jstree-default-dark-responsive .jstree-wholerow{border-top:1px solid #666;border-bottom:1px solid #000;background:#333;height:40px}.jstree-default-dark-responsive .jstree-wholerow-hovered{background:#555}.jstree-default-dark-responsive .jstree-wholerow-clicked{background:#5fa2db}.jstree-default-dark-responsive .jstree-children .jstree-last>.jstree-wholerow{box-shadow:inset 0 -6px 3px -5px #111}.jstree-default-dark-responsive .jstree-children .jstree-open>.jstree-wholerow{box-shadow:inset 0 6px 3px -5px #111;border-top:0}.jstree-default-dark-responsive .jstree-children .jstree-open+.jstree-open{box-shadow:none}.jstree-default-dark-responsive .jstree-node,.jstree-default-dark-responsive .jstree-icon,.jstree-default-dark-responsive .jstree-node>.jstree-ocl,.jstree-default-dark-responsive .jstree-themeicon,.jstree-default-dark-responsive .jstree-checkbox{background-image:url(40px.png);background-size:120px 240px}.jstree-default-dark-responsive .jstree-node{background-position:-80px 0;background-repeat:repeat-y}.jstree-default-dark-responsive .jstree-last{background:0 0}.jstree-default-dark-responsive .jstree-leaf>.jstree-ocl{background-position:-40px -120px}.jstree-default-dark-responsive .jstree-last>.jstree-ocl{background-position:-40px -160px}.jstree-default-dark-responsive .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-dark-responsive .jstree-file{background:url(40px.png) 0 -160px no-repeat;background-size:120px 240px}.jstree-default-dark-responsive .jstree-folder{background:url(40px.png) -40px -40px no-repeat;background-size:120px 240px}.jstree-default-dark-responsive>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}}.jstree-default-dark{background:#333}.jstree-default-dark .jstree-anchor{color:#999;text-shadow:1px 1px 0 rgba(0,0,0,.5)}.jstree-default-dark .jstree-clicked,.jstree-default-dark .jstree-checked{color:#fff}.jstree-default-dark .jstree-hovered{color:#fff}#jstree-marker.jstree-default-dark{border-left-color:#999;background:0 0}.jstree-default-dark .jstree-anchor>.jstree-icon{opacity:.75}.jstree-default-dark .jstree-clicked>.jstree-icon,.jstree-default-dark .jstree-hovered>.jstree-icon,.jstree-default-dark .jstree-checked>.jstree-icon{opacity:1}.jstree-default-dark.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==)}.jstree-default-dark.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==)}.jstree-default-dark-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-dark-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAACZmZl+9SADAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==)}.jstree-default-dark-large.jstree-rtl .jstree-last{background:0 0}
includes/jstree/themes/default/style.css CHANGED
@@ -105,6 +105,12 @@
105
  -ms-user-select: none;
106
  user-select: none;
107
  }
 
 
 
 
 
 
108
  .vakata-context {
109
  display: none;
110
  }
105
  -ms-user-select: none;
106
  user-select: none;
107
  }
108
+ .jstree-contextmenu .jstree-anchor {
109
+ -webkit-user-select: none;
110
+ /* disable selection/Copy of UIWebView */
111
+ -webkit-touch-callout: none;
112
+ /* disable the IOS popup when long-press on a link */
113
+ }
114
  .vakata-context {
115
  display: none;
116
  }
includes/jstree/themes/default/style.min.css CHANGED
@@ -1 +1 @@
1
- .jstree-node,.jstree-children,.jstree-container-ul{display:block;margin:0;padding:0;list-style-type:none;list-style-image:none}.jstree-node{white-space:nowrap}.jstree-anchor{display:inline-block;color:#000;white-space:nowrap;padding:0 4px 0 1px;margin:0;vertical-align:top}.jstree-anchor:focus{outline:0}.jstree-anchor,.jstree-anchor:link,.jstree-anchor:visited,.jstree-anchor:hover,.jstree-anchor:active{text-decoration:none;color:inherit}.jstree-icon{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-icon:empty{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-ocl{cursor:pointer}.jstree-leaf>.jstree-ocl{cursor:default}.jstree .jstree-open>.jstree-children{display:block}.jstree .jstree-closed>.jstree-children,.jstree .jstree-leaf>.jstree-children{display:none}.jstree-anchor>.jstree-themeicon{margin-right:2px}.jstree-no-icons .jstree-themeicon,.jstree-anchor>.jstree-themeicon-hidden{display:none}.jstree-hidden,.jstree-node.jstree-hidden{display:none}.jstree-rtl .jstree-anchor{padding:0 1px 0 4px}.jstree-rtl .jstree-anchor>.jstree-themeicon{margin-left:2px;margin-right:0}.jstree-rtl .jstree-node{margin-left:0}.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-wholerow-ul{position:relative;display:inline-block;min-width:100%}.jstree-wholerow-ul .jstree-leaf>.jstree-ocl{cursor:pointer}.jstree-wholerow-ul .jstree-anchor,.jstree-wholerow-ul .jstree-icon{position:relative}.jstree-wholerow-ul .jstree-wholerow{width:100%;cursor:pointer;position:absolute;left:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vakata-context{display:none}.vakata-context,.vakata-context ul{margin:0;padding:2px;position:absolute;background:#f5f5f5;border:1px solid #979797;box-shadow:2px 2px 2px #999}.vakata-context ul{list-style:none;left:100%;margin-top:-2.7em;margin-left:-4px}.vakata-context .vakata-context-right ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context li{list-style:none}.vakata-context li>a{display:block;padding:0 2em;text-decoration:none;width:auto;color:#000;white-space:nowrap;line-height:2.4em;text-shadow:1px 1px 0 #fff;border-radius:1px}.vakata-context li>a:hover{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==);background-position:right center;background-repeat:no-repeat}.vakata-context li>a:focus{outline:0}.vakata-context .vakata-context-hover>a{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context .vakata-context-separator>a,.vakata-context .vakata-context-separator>a:hover{background:#fff;border:0;border-top:1px solid #e2e3e3;height:1px;min-height:1px;max-height:1px;padding:0;margin:0 0 0 2.4em;border-left:1px solid #e0e0e0;text-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;border-radius:0}.vakata-context .vakata-contextmenu-disabled a,.vakata-context .vakata-contextmenu-disabled a:hover{color:silver;background-color:transparent;border:0;box-shadow:0 0 0}.vakata-context li>a>i{text-decoration:none;display:inline-block;width:2.4em;height:2.4em;background:0 0;margin:0 0 0 -2em;vertical-align:top;text-align:center;line-height:2.4em}.vakata-context li>a>i:empty{width:2.4em;line-height:2.4em}.vakata-context li>a .vakata-contextmenu-sep{display:inline-block;width:1px;height:2.4em;background:#fff;margin:0 .5em 0 0;border-left:1px solid #e2e3e3}.vakata-context .vakata-contextmenu-shortcut{font-size:.8em;color:silver;opacity:.5;display:none}.vakata-context-rtl ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context-rtl li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7);background-position:left center;background-repeat:no-repeat}.vakata-context-rtl .vakata-context-separator>a{margin:0 2.4em 0 0;border-left:0;border-right:1px solid #e2e3e3}.vakata-context-rtl .vakata-context-left ul{right:auto;left:100%;margin-left:-4px;margin-right:auto}.vakata-context-rtl li>a>i{margin:0 -2em 0 0}.vakata-context-rtl li>a .vakata-contextmenu-sep{margin:0 0 0 .5em;border-left-color:#fff;background:#e2e3e3}#jstree-marker{position:absolute;top:0;left:0;margin:-5px 0 0 0;padding:0;border-right:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid;width:0;height:0;font-size:0;line-height:0}#jstree-dnd{line-height:16px;margin:0;padding:4px}#jstree-dnd .jstree-icon,#jstree-dnd .jstree-copy{display:inline-block;text-decoration:none;margin:0 2px 0 0;padding:0;width:16px;height:16px}#jstree-dnd .jstree-ok{background:green}#jstree-dnd .jstree-er{background:red}#jstree-dnd .jstree-copy{margin:0 2px}.jstree-default .jstree-node,.jstree-default .jstree-icon{background-repeat:no-repeat;background-color:transparent}.jstree-default .jstree-anchor,.jstree-default .jstree-animated,.jstree-default .jstree-wholerow{transition:background-color .15s,box-shadow .15s}.jstree-default .jstree-hovered{background:#e7f4f9;border-radius:2px;box-shadow:inset 0 0 1px #ccc}.jstree-default .jstree-context{background:#e7f4f9;border-radius:2px;box-shadow:inset 0 0 1px #ccc}.jstree-default .jstree-clicked{background:#beebff;border-radius:2px;box-shadow:inset 0 0 1px #999}.jstree-default .jstree-no-icons .jstree-anchor>.jstree-themeicon{display:none}.jstree-default .jstree-disabled{background:0 0;color:#666}.jstree-default .jstree-disabled.jstree-hovered{background:0 0;box-shadow:none}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-disabled>.jstree-icon{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default .jstree-search{font-style:italic;color:#8b0000;font-weight:700}.jstree-default .jstree-no-checkboxes .jstree-checkbox{display:none!important}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked{background:0 0;box-shadow:none}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered{background:#e7f4f9}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked{background:0 0}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered{background:#e7f4f9}.jstree-default>.jstree-striped{min-width:100%;display:inline-block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==) left top repeat}.jstree-default>.jstree-wholerow-ul .jstree-hovered,.jstree-default>.jstree-wholerow-ul .jstree-clicked{background:0 0;box-shadow:none;border-radius:0}.jstree-default .jstree-wholerow{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.jstree-default .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default .jstree-wholerow-clicked{background:#beebff;background:-webkit-linear-gradient(top,#beebff 0,#a8e4ff 100%);background:linear-gradient(to bottom,#beebff 0,#a8e4ff 100%)}.jstree-default .jstree-node{min-height:24px;line-height:24px;margin-left:24px;min-width:24px}.jstree-default .jstree-anchor{line-height:24px;height:24px}.jstree-default .jstree-icon{width:24px;height:24px;line-height:24px}.jstree-default .jstree-icon:empty{width:24px;height:24px;line-height:24px}.jstree-default.jstree-rtl .jstree-node{margin-right:24px}.jstree-default .jstree-wholerow{height:24px}.jstree-default .jstree-node,.jstree-default .jstree-icon{background-image:url(32px.png)}.jstree-default .jstree-node{background-position:-292px -4px;background-repeat:repeat-y}.jstree-default .jstree-last{background:0 0}.jstree-default .jstree-open>.jstree-ocl{background-position:-132px -4px}.jstree-default .jstree-closed>.jstree-ocl{background-position:-100px -4px}.jstree-default .jstree-leaf>.jstree-ocl{background-position:-68px -4px}.jstree-default .jstree-themeicon{background-position:-260px -4px}.jstree-default>.jstree-no-dots .jstree-node,.jstree-default>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -4px}.jstree-default>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -4px}.jstree-default .jstree-disabled{background:0 0}.jstree-default .jstree-disabled.jstree-hovered{background:0 0}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-checkbox{background-position:-164px -4px}.jstree-default .jstree-checkbox:hover{background-position:-164px -36px}.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default .jstree-checked>.jstree-checkbox{background-position:-228px -4px}.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default .jstree-checked>.jstree-checkbox:hover{background-position:-228px -36px}.jstree-default .jstree-anchor>.jstree-undetermined{background-position:-196px -4px}.jstree-default .jstree-anchor>.jstree-undetermined:hover{background-position:-196px -36px}.jstree-default .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default>.jstree-striped{background-size:auto 48px}.jstree-default.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default.jstree-rtl .jstree-last{background:0 0}.jstree-default.jstree-rtl .jstree-open>.jstree-ocl{background-position:-132px -36px}.jstree-default.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-100px -36px}.jstree-default.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-68px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -36px}.jstree-default .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default .jstree-file{background:url(32px.png) -100px -68px no-repeat}.jstree-default .jstree-folder{background:url(32px.png) -260px -4px no-repeat}.jstree-default>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default{line-height:24px;padding:0 4px}#jstree-dnd.jstree-default .jstree-ok,#jstree-dnd.jstree-default .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default i{background:0 0;width:24px;height:24px;line-height:24px}#jstree-dnd.jstree-default .jstree-ok{background-position:-4px -68px}#jstree-dnd.jstree-default .jstree-er{background-position:-36px -68px}.jstree-default .jstree-ellipsis{overflow:hidden}.jstree-default .jstree-ellipsis .jstree-anchor{width:calc(100% - 29px);text-overflow:ellipsis;overflow:hidden}.jstree-default .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==)}.jstree-default.jstree-rtl .jstree-last{background:0 0}.jstree-default-small .jstree-node{min-height:18px;line-height:18px;margin-left:18px;min-width:18px}.jstree-default-small .jstree-anchor{line-height:18px;height:18px}.jstree-default-small .jstree-icon{width:18px;height:18px;line-height:18px}.jstree-default-small .jstree-icon:empty{width:18px;height:18px;line-height:18px}.jstree-default-small.jstree-rtl .jstree-node{margin-right:18px}.jstree-default-small .jstree-wholerow{height:18px}.jstree-default-small .jstree-node,.jstree-default-small .jstree-icon{background-image:url(32px.png)}.jstree-default-small .jstree-node{background-position:-295px -7px;background-repeat:repeat-y}.jstree-default-small .jstree-last{background:0 0}.jstree-default-small .jstree-open>.jstree-ocl{background-position:-135px -7px}.jstree-default-small .jstree-closed>.jstree-ocl{background-position:-103px -7px}.jstree-default-small .jstree-leaf>.jstree-ocl{background-position:-71px -7px}.jstree-default-small .jstree-themeicon{background-position:-263px -7px}.jstree-default-small>.jstree-no-dots .jstree-node,.jstree-default-small>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-small>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -7px}.jstree-default-small>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -7px}.jstree-default-small .jstree-disabled{background:0 0}.jstree-default-small .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-small .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-small .jstree-checkbox{background-position:-167px -7px}.jstree-default-small .jstree-checkbox:hover{background-position:-167px -39px}.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-small .jstree-checked>.jstree-checkbox{background-position:-231px -7px}.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-small .jstree-checked>.jstree-checkbox:hover{background-position:-231px -39px}.jstree-default-small .jstree-anchor>.jstree-undetermined{background-position:-199px -7px}.jstree-default-small .jstree-anchor>.jstree-undetermined:hover{background-position:-199px -39px}.jstree-default-small .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-small>.jstree-striped{background-size:auto 36px}.jstree-default-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-small.jstree-rtl .jstree-open>.jstree-ocl{background-position:-135px -39px}.jstree-default-small.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-103px -39px}.jstree-default-small.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-71px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -39px}.jstree-default-small .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-small>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-small .jstree-file{background:url(32px.png) -103px -71px no-repeat}.jstree-default-small .jstree-folder{background:url(32px.png) -263px -7px no-repeat}.jstree-default-small>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-small{line-height:18px;padding:0 4px}#jstree-dnd.jstree-default-small .jstree-ok,#jstree-dnd.jstree-default-small .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-small i{background:0 0;width:18px;height:18px;line-height:18px}#jstree-dnd.jstree-default-small .jstree-ok{background-position:-7px -71px}#jstree-dnd.jstree-default-small .jstree-er{background-position:-39px -71px}.jstree-default-small .jstree-ellipsis{overflow:hidden}.jstree-default-small .jstree-ellipsis .jstree-anchor{width:calc(100% - 23px);text-overflow:ellipsis;overflow:hidden}.jstree-default-small .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==)}.jstree-default-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-large .jstree-node{min-height:32px;line-height:32px;margin-left:32px;min-width:32px}.jstree-default-large .jstree-anchor{line-height:32px;height:32px}.jstree-default-large .jstree-icon{width:32px;height:32px;line-height:32px}.jstree-default-large .jstree-icon:empty{width:32px;height:32px;line-height:32px}.jstree-default-large.jstree-rtl .jstree-node{margin-right:32px}.jstree-default-large .jstree-wholerow{height:32px}.jstree-default-large .jstree-node,.jstree-default-large .jstree-icon{background-image:url(32px.png)}.jstree-default-large .jstree-node{background-position:-288px 0;background-repeat:repeat-y}.jstree-default-large .jstree-last{background:0 0}.jstree-default-large .jstree-open>.jstree-ocl{background-position:-128px 0}.jstree-default-large .jstree-closed>.jstree-ocl{background-position:-96px 0}.jstree-default-large .jstree-leaf>.jstree-ocl{background-position:-64px 0}.jstree-default-large .jstree-themeicon{background-position:-256px 0}.jstree-default-large>.jstree-no-dots .jstree-node,.jstree-default-large>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-large>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px 0}.jstree-default-large>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 0}.jstree-default-large .jstree-disabled{background:0 0}.jstree-default-large .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-large .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-large .jstree-checkbox{background-position:-160px 0}.jstree-default-large .jstree-checkbox:hover{background-position:-160px -32px}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-large .jstree-checked>.jstree-checkbox{background-position:-224px 0}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-large .jstree-checked>.jstree-checkbox:hover{background-position:-224px -32px}.jstree-default-large .jstree-anchor>.jstree-undetermined{background-position:-192px 0}.jstree-default-large .jstree-anchor>.jstree-undetermined:hover{background-position:-192px -32px}.jstree-default-large .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-large>.jstree-striped{background-size:auto 64px}.jstree-default-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-large.jstree-rtl .jstree-last{background:0 0}.jstree-default-large.jstree-rtl .jstree-open>.jstree-ocl{background-position:-128px -32px}.jstree-default-large.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-96px -32px}.jstree-default-large.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-64px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 -32px}.jstree-default-large .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-large>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-large .jstree-file{background:url(32px.png) -96px -64px no-repeat}.jstree-default-large .jstree-folder{background:url(32px.png) -256px 0 no-repeat}.jstree-default-large>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-large{line-height:32px;padding:0 4px}#jstree-dnd.jstree-default-large .jstree-ok,#jstree-dnd.jstree-default-large .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-large i{background:0 0;width:32px;height:32px;line-height:32px}#jstree-dnd.jstree-default-large .jstree-ok{background-position:0 -64px}#jstree-dnd.jstree-default-large .jstree-er{background-position:-32px -64px}.jstree-default-large .jstree-ellipsis{overflow:hidden}.jstree-default-large .jstree-ellipsis .jstree-anchor{width:calc(100% - 37px);text-overflow:ellipsis;overflow:hidden}.jstree-default-large .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==)}.jstree-default-large.jstree-rtl .jstree-last{background:0 0}@media (max-width:768px){#jstree-dnd.jstree-dnd-responsive{line-height:40px;font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}#jstree-dnd.jstree-dnd-responsive>i{background:0 0;width:40px;height:40px}#jstree-dnd.jstree-dnd-responsive>.jstree-ok{background-image:url(40px.png);background-position:0 -200px;background-size:120px 240px}#jstree-dnd.jstree-dnd-responsive>.jstree-er{background-image:url(40px.png);background-position:-40px -200px;background-size:120px 240px}#jstree-marker.jstree-dnd-responsive{border-left-width:10px;border-top-width:10px;border-bottom-width:10px;margin-top:-10px}}@media (max-width:768px){.jstree-default-responsive .jstree-icon{background-image:url(40px.png)}.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-responsive .jstree-node{min-height:40px;line-height:40px;margin-left:40px;min-width:40px;white-space:nowrap}.jstree-default-responsive .jstree-anchor{line-height:40px;height:40px}.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-icon:empty{width:40px;height:40px;line-height:40px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0}.jstree-default-responsive.jstree-rtl .jstree-node{margin-left:0;margin-right:40px;background:0 0}.jstree-default-responsive.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-default-responsive .jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-size:120px 240px}.jstree-default-responsive .jstree-leaf>.jstree-ocl,.jstree-default-responsive.jstree-rtl .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-responsive .jstree-open>.jstree-ocl{background-position:0 0!important}.jstree-default-responsive .jstree-closed>.jstree-ocl{background-position:0 -40px!important}.jstree-default-responsive.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-40px 0!important}.jstree-default-responsive .jstree-themeicon{background-position:-40px -40px}.jstree-default-responsive .jstree-checkbox,.jstree-default-responsive .jstree-checkbox:hover{background-position:-40px -80px}.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-responsive .jstree-checked>.jstree-checkbox,.jstree-default-responsive .jstree-checked>.jstree-checkbox:hover{background-position:0 -80px}.jstree-default-responsive .jstree-anchor>.jstree-undetermined,.jstree-default-responsive .jstree-anchor>.jstree-undetermined:hover{background-position:0 -120px}.jstree-default-responsive .jstree-anchor{font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}.jstree-default-responsive>.jstree-striped{background:0 0}.jstree-default-responsive .jstree-wholerow{border-top:1px solid rgba(255,255,255,.7);border-bottom:1px solid rgba(64,64,64,.2);background:#ebebeb;height:40px}.jstree-default-responsive .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default-responsive .jstree-wholerow-clicked{background:#beebff}.jstree-default-responsive .jstree-children .jstree-last>.jstree-wholerow{box-shadow:inset 0 -6px 3px -5px #666}.jstree-default-responsive .jstree-children .jstree-open>.jstree-wholerow{box-shadow:inset 0 6px 3px -5px #666;border-top:0}.jstree-default-responsive .jstree-children .jstree-open+.jstree-open{box-shadow:none}.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-node>.jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-image:url(40px.png);background-size:120px 240px}.jstree-default-responsive .jstree-node{background-position:-80px 0;background-repeat:repeat-y}.jstree-default-responsive .jstree-last{background:0 0}.jstree-default-responsive .jstree-leaf>.jstree-ocl{background-position:-40px -120px}.jstree-default-responsive .jstree-last>.jstree-ocl{background-position:-40px -160px}.jstree-default-responsive .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-responsive .jstree-file{background:url(40px.png) 0 -160px no-repeat;background-size:120px 240px}.jstree-default-responsive .jstree-folder{background:url(40px.png) -40px -40px no-repeat;background-size:120px 240px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}}
1
+ .jstree-node,.jstree-children,.jstree-container-ul{display:block;margin:0;padding:0;list-style-type:none;list-style-image:none}.jstree-node{white-space:nowrap}.jstree-anchor{display:inline-block;color:#000;white-space:nowrap;padding:0 4px 0 1px;margin:0;vertical-align:top}.jstree-anchor:focus{outline:0}.jstree-anchor,.jstree-anchor:link,.jstree-anchor:visited,.jstree-anchor:hover,.jstree-anchor:active{text-decoration:none;color:inherit}.jstree-icon{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-icon:empty{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-ocl{cursor:pointer}.jstree-leaf>.jstree-ocl{cursor:default}.jstree .jstree-open>.jstree-children{display:block}.jstree .jstree-closed>.jstree-children,.jstree .jstree-leaf>.jstree-children{display:none}.jstree-anchor>.jstree-themeicon{margin-right:2px}.jstree-no-icons .jstree-themeicon,.jstree-anchor>.jstree-themeicon-hidden{display:none}.jstree-hidden,.jstree-node.jstree-hidden{display:none}.jstree-rtl .jstree-anchor{padding:0 1px 0 4px}.jstree-rtl .jstree-anchor>.jstree-themeicon{margin-left:2px;margin-right:0}.jstree-rtl .jstree-node{margin-left:0}.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-wholerow-ul{position:relative;display:inline-block;min-width:100%}.jstree-wholerow-ul .jstree-leaf>.jstree-ocl{cursor:pointer}.jstree-wholerow-ul .jstree-anchor,.jstree-wholerow-ul .jstree-icon{position:relative}.jstree-wholerow-ul .jstree-wholerow{width:100%;cursor:pointer;position:absolute;left:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.jstree-contextmenu .jstree-anchor{-webkit-user-select:none;-webkit-touch-callout:none}.vakata-context{display:none}.vakata-context,.vakata-context ul{margin:0;padding:2px;position:absolute;background:#f5f5f5;border:1px solid #979797;box-shadow:2px 2px 2px #999}.vakata-context ul{list-style:none;left:100%;margin-top:-2.7em;margin-left:-4px}.vakata-context .vakata-context-right ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context li{list-style:none}.vakata-context li>a{display:block;padding:0 2em;text-decoration:none;width:auto;color:#000;white-space:nowrap;line-height:2.4em;text-shadow:1px 1px 0 #fff;border-radius:1px}.vakata-context li>a:hover{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==);background-position:right center;background-repeat:no-repeat}.vakata-context li>a:focus{outline:0}.vakata-context .vakata-context-hover>a{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context .vakata-context-separator>a,.vakata-context .vakata-context-separator>a:hover{background:#fff;border:0;border-top:1px solid #e2e3e3;height:1px;min-height:1px;max-height:1px;padding:0;margin:0 0 0 2.4em;border-left:1px solid #e0e0e0;text-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;border-radius:0}.vakata-context .vakata-contextmenu-disabled a,.vakata-context .vakata-contextmenu-disabled a:hover{color:silver;background-color:transparent;border:0;box-shadow:0 0 0}.vakata-context li>a>i{text-decoration:none;display:inline-block;width:2.4em;height:2.4em;background:0 0;margin:0 0 0 -2em;vertical-align:top;text-align:center;line-height:2.4em}.vakata-context li>a>i:empty{width:2.4em;line-height:2.4em}.vakata-context li>a .vakata-contextmenu-sep{display:inline-block;width:1px;height:2.4em;background:#fff;margin:0 .5em 0 0;border-left:1px solid #e2e3e3}.vakata-context .vakata-contextmenu-shortcut{font-size:.8em;color:silver;opacity:.5;display:none}.vakata-context-rtl ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context-rtl li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7);background-position:left center;background-repeat:no-repeat}.vakata-context-rtl .vakata-context-separator>a{margin:0 2.4em 0 0;border-left:0;border-right:1px solid #e2e3e3}.vakata-context-rtl .vakata-context-left ul{right:auto;left:100%;margin-left:-4px;margin-right:auto}.vakata-context-rtl li>a>i{margin:0 -2em 0 0}.vakata-context-rtl li>a .vakata-contextmenu-sep{margin:0 0 0 .5em;border-left-color:#fff;background:#e2e3e3}#jstree-marker{position:absolute;top:0;left:0;margin:-5px 0 0 0;padding:0;border-right:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid;width:0;height:0;font-size:0;line-height:0}#jstree-dnd{line-height:16px;margin:0;padding:4px}#jstree-dnd .jstree-icon,#jstree-dnd .jstree-copy{display:inline-block;text-decoration:none;margin:0 2px 0 0;padding:0;width:16px;height:16px}#jstree-dnd .jstree-ok{background:green}#jstree-dnd .jstree-er{background:red}#jstree-dnd .jstree-copy{margin:0 2px}.jstree-default .jstree-node,.jstree-default .jstree-icon{background-repeat:no-repeat;background-color:transparent}.jstree-default .jstree-anchor,.jstree-default .jstree-animated,.jstree-default .jstree-wholerow{transition:background-color .15s,box-shadow .15s}.jstree-default .jstree-hovered{background:#e7f4f9;border-radius:2px;box-shadow:inset 0 0 1px #ccc}.jstree-default .jstree-context{background:#e7f4f9;border-radius:2px;box-shadow:inset 0 0 1px #ccc}.jstree-default .jstree-clicked{background:#beebff;border-radius:2px;box-shadow:inset 0 0 1px #999}.jstree-default .jstree-no-icons .jstree-anchor>.jstree-themeicon{display:none}.jstree-default .jstree-disabled{background:0 0;color:#666}.jstree-default .jstree-disabled.jstree-hovered{background:0 0;box-shadow:none}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-disabled>.jstree-icon{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default .jstree-search{font-style:italic;color:#8b0000;font-weight:700}.jstree-default .jstree-no-checkboxes .jstree-checkbox{display:none!important}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked{background:0 0;box-shadow:none}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered{background:#e7f4f9}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked{background:0 0}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered{background:#e7f4f9}.jstree-default>.jstree-striped{min-width:100%;display:inline-block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==) left top repeat}.jstree-default>.jstree-wholerow-ul .jstree-hovered,.jstree-default>.jstree-wholerow-ul .jstree-clicked{background:0 0;box-shadow:none;border-radius:0}.jstree-default .jstree-wholerow{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.jstree-default .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default .jstree-wholerow-clicked{background:#beebff;background:-webkit-linear-gradient(top,#beebff 0,#a8e4ff 100%);background:linear-gradient(to bottom,#beebff 0,#a8e4ff 100%)}.jstree-default .jstree-node{min-height:24px;line-height:24px;margin-left:24px;min-width:24px}.jstree-default .jstree-anchor{line-height:24px;height:24px}.jstree-default .jstree-icon{width:24px;height:24px;line-height:24px}.jstree-default .jstree-icon:empty{width:24px;height:24px;line-height:24px}.jstree-default.jstree-rtl .jstree-node{margin-right:24px}.jstree-default .jstree-wholerow{height:24px}.jstree-default .jstree-node,.jstree-default .jstree-icon{background-image:url(32px.png)}.jstree-default .jstree-node{background-position:-292px -4px;background-repeat:repeat-y}.jstree-default .jstree-last{background:0 0}.jstree-default .jstree-open>.jstree-ocl{background-position:-132px -4px}.jstree-default .jstree-closed>.jstree-ocl{background-position:-100px -4px}.jstree-default .jstree-leaf>.jstree-ocl{background-position:-68px -4px}.jstree-default .jstree-themeicon{background-position:-260px -4px}.jstree-default>.jstree-no-dots .jstree-node,.jstree-default>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -4px}.jstree-default>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -4px}.jstree-default .jstree-disabled{background:0 0}.jstree-default .jstree-disabled.jstree-hovered{background:0 0}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-checkbox{background-position:-164px -4px}.jstree-default .jstree-checkbox:hover{background-position:-164px -36px}.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default .jstree-checked>.jstree-checkbox{background-position:-228px -4px}.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default .jstree-checked>.jstree-checkbox:hover{background-position:-228px -36px}.jstree-default .jstree-anchor>.jstree-undetermined{background-position:-196px -4px}.jstree-default .jstree-anchor>.jstree-undetermined:hover{background-position:-196px -36px}.jstree-default .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default>.jstree-striped{background-size:auto 48px}.jstree-default.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default.jstree-rtl .jstree-last{background:0 0}.jstree-default.jstree-rtl .jstree-open>.jstree-ocl{background-position:-132px -36px}.jstree-default.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-100px -36px}.jstree-default.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-68px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -36px}.jstree-default .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default .jstree-file{background:url(32px.png) -100px -68px no-repeat}.jstree-default .jstree-folder{background:url(32px.png) -260px -4px no-repeat}.jstree-default>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default{line-height:24px;padding:0 4px}#jstree-dnd.jstree-default .jstree-ok,#jstree-dnd.jstree-default .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default i{background:0 0;width:24px;height:24px;line-height:24px}#jstree-dnd.jstree-default .jstree-ok{background-position:-4px -68px}#jstree-dnd.jstree-default .jstree-er{background-position:-36px -68px}.jstree-default .jstree-ellipsis{overflow:hidden}.jstree-default .jstree-ellipsis .jstree-anchor{width:calc(100% - 29px);text-overflow:ellipsis;overflow:hidden}.jstree-default .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==)}.jstree-default.jstree-rtl .jstree-last{background:0 0}.jstree-default-small .jstree-node{min-height:18px;line-height:18px;margin-left:18px;min-width:18px}.jstree-default-small .jstree-anchor{line-height:18px;height:18px}.jstree-default-small .jstree-icon{width:18px;height:18px;line-height:18px}.jstree-default-small .jstree-icon:empty{width:18px;height:18px;line-height:18px}.jstree-default-small.jstree-rtl .jstree-node{margin-right:18px}.jstree-default-small .jstree-wholerow{height:18px}.jstree-default-small .jstree-node,.jstree-default-small .jstree-icon{background-image:url(32px.png)}.jstree-default-small .jstree-node{background-position:-295px -7px;background-repeat:repeat-y}.jstree-default-small .jstree-last{background:0 0}.jstree-default-small .jstree-open>.jstree-ocl{background-position:-135px -7px}.jstree-default-small .jstree-closed>.jstree-ocl{background-position:-103px -7px}.jstree-default-small .jstree-leaf>.jstree-ocl{background-position:-71px -7px}.jstree-default-small .jstree-themeicon{background-position:-263px -7px}.jstree-default-small>.jstree-no-dots .jstree-node,.jstree-default-small>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-small>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -7px}.jstree-default-small>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -7px}.jstree-default-small .jstree-disabled{background:0 0}.jstree-default-small .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-small .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-small .jstree-checkbox{background-position:-167px -7px}.jstree-default-small .jstree-checkbox:hover{background-position:-167px -39px}.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-small .jstree-checked>.jstree-checkbox{background-position:-231px -7px}.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-small .jstree-checked>.jstree-checkbox:hover{background-position:-231px -39px}.jstree-default-small .jstree-anchor>.jstree-undetermined{background-position:-199px -7px}.jstree-default-small .jstree-anchor>.jstree-undetermined:hover{background-position:-199px -39px}.jstree-default-small .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-small>.jstree-striped{background-size:auto 36px}.jstree-default-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-small.jstree-rtl .jstree-open>.jstree-ocl{background-position:-135px -39px}.jstree-default-small.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-103px -39px}.jstree-default-small.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-71px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -39px}.jstree-default-small .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-small>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-small .jstree-file{background:url(32px.png) -103px -71px no-repeat}.jstree-default-small .jstree-folder{background:url(32px.png) -263px -7px no-repeat}.jstree-default-small>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-small{line-height:18px;padding:0 4px}#jstree-dnd.jstree-default-small .jstree-ok,#jstree-dnd.jstree-default-small .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-small i{background:0 0;width:18px;height:18px;line-height:18px}#jstree-dnd.jstree-default-small .jstree-ok{background-position:-7px -71px}#jstree-dnd.jstree-default-small .jstree-er{background-position:-39px -71px}.jstree-default-small .jstree-ellipsis{overflow:hidden}.jstree-default-small .jstree-ellipsis .jstree-anchor{width:calc(100% - 23px);text-overflow:ellipsis;overflow:hidden}.jstree-default-small .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==)}.jstree-default-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-large .jstree-node{min-height:32px;line-height:32px;margin-left:32px;min-width:32px}.jstree-default-large .jstree-anchor{line-height:32px;height:32px}.jstree-default-large .jstree-icon{width:32px;height:32px;line-height:32px}.jstree-default-large .jstree-icon:empty{width:32px;height:32px;line-height:32px}.jstree-default-large.jstree-rtl .jstree-node{margin-right:32px}.jstree-default-large .jstree-wholerow{height:32px}.jstree-default-large .jstree-node,.jstree-default-large .jstree-icon{background-image:url(32px.png)}.jstree-default-large .jstree-node{background-position:-288px 0;background-repeat:repeat-y}.jstree-default-large .jstree-last{background:0 0}.jstree-default-large .jstree-open>.jstree-ocl{background-position:-128px 0}.jstree-default-large .jstree-closed>.jstree-ocl{background-position:-96px 0}.jstree-default-large .jstree-leaf>.jstree-ocl{background-position:-64px 0}.jstree-default-large .jstree-themeicon{background-position:-256px 0}.jstree-default-large>.jstree-no-dots .jstree-node,.jstree-default-large>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-large>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px 0}.jstree-default-large>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 0}.jstree-default-large .jstree-disabled{background:0 0}.jstree-default-large .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-large .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-large .jstree-checkbox{background-position:-160px 0}.jstree-default-large .jstree-checkbox:hover{background-position:-160px -32px}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-large .jstree-checked>.jstree-checkbox{background-position:-224px 0}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-large .jstree-checked>.jstree-checkbox:hover{background-position:-224px -32px}.jstree-default-large .jstree-anchor>.jstree-undetermined{background-position:-192px 0}.jstree-default-large .jstree-anchor>.jstree-undetermined:hover{background-position:-192px -32px}.jstree-default-large .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-large>.jstree-striped{background-size:auto 64px}.jstree-default-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-large.jstree-rtl .jstree-last{background:0 0}.jstree-default-large.jstree-rtl .jstree-open>.jstree-ocl{background-position:-128px -32px}.jstree-default-large.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-96px -32px}.jstree-default-large.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-64px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-node,.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 -32px}.jstree-default-large .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-large>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-large .jstree-file{background:url(32px.png) -96px -64px no-repeat}.jstree-default-large .jstree-folder{background:url(32px.png) -256px 0 no-repeat}.jstree-default-large>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-large{line-height:32px;padding:0 4px}#jstree-dnd.jstree-default-large .jstree-ok,#jstree-dnd.jstree-default-large .jstree-er{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-large i{background:0 0;width:32px;height:32px;line-height:32px}#jstree-dnd.jstree-default-large .jstree-ok{background-position:0 -64px}#jstree-dnd.jstree-default-large .jstree-er{background-position:-32px -64px}.jstree-default-large .jstree-ellipsis{overflow:hidden}.jstree-default-large .jstree-ellipsis .jstree-anchor{width:calc(100% - 37px);text-overflow:ellipsis;overflow:hidden}.jstree-default-large .jstree-ellipsis.jstree-no-icons .jstree-anchor{width:calc(100% - 5px)}.jstree-default-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==)}.jstree-default-large.jstree-rtl .jstree-last{background:0 0}@media (max-width:768px){#jstree-dnd.jstree-dnd-responsive{line-height:40px;font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}#jstree-dnd.jstree-dnd-responsive>i{background:0 0;width:40px;height:40px}#jstree-dnd.jstree-dnd-responsive>.jstree-ok{background-image:url(40px.png);background-position:0 -200px;background-size:120px 240px}#jstree-dnd.jstree-dnd-responsive>.jstree-er{background-image:url(40px.png);background-position:-40px -200px;background-size:120px 240px}#jstree-marker.jstree-dnd-responsive{border-left-width:10px;border-top-width:10px;border-bottom-width:10px;margin-top:-10px}}@media (max-width:768px){.jstree-default-responsive .jstree-icon{background-image:url(40px.png)}.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-responsive .jstree-node{min-height:40px;line-height:40px;margin-left:40px;min-width:40px;white-space:nowrap}.jstree-default-responsive .jstree-anchor{line-height:40px;height:40px}.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-icon:empty{width:40px;height:40px;line-height:40px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0}.jstree-default-responsive.jstree-rtl .jstree-node{margin-left:0;margin-right:40px;background:0 0}.jstree-default-responsive.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-default-responsive .jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-size:120px 240px}.jstree-default-responsive .jstree-leaf>.jstree-ocl,.jstree-default-responsive.jstree-rtl .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-responsive .jstree-open>.jstree-ocl{background-position:0 0!important}.jstree-default-responsive .jstree-closed>.jstree-ocl{background-position:0 -40px!important}.jstree-default-responsive.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-40px 0!important}.jstree-default-responsive .jstree-themeicon{background-position:-40px -40px}.jstree-default-responsive .jstree-checkbox,.jstree-default-responsive .jstree-checkbox:hover{background-position:-40px -80px}.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-responsive .jstree-checked>.jstree-checkbox,.jstree-default-responsive .jstree-checked>.jstree-checkbox:hover{background-position:0 -80px}.jstree-default-responsive .jstree-anchor>.jstree-undetermined,.jstree-default-responsive .jstree-anchor>.jstree-undetermined:hover{background-position:0 -120px}.jstree-default-responsive .jstree-anchor{font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}.jstree-default-responsive>.jstree-striped{background:0 0}.jstree-default-responsive .jstree-wholerow{border-top:1px solid rgba(255,255,255,.7);border-bottom:1px solid rgba(64,64,64,.2);background:#ebebeb;height:40px}.jstree-default-responsive .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default-responsive .jstree-wholerow-clicked{background:#beebff}.jstree-default-responsive .jstree-children .jstree-last>.jstree-wholerow{box-shadow:inset 0 -6px 3px -5px #666}.jstree-default-responsive .jstree-children .jstree-open>.jstree-wholerow{box-shadow:inset 0 6px 3px -5px #666;border-top:0}.jstree-default-responsive .jstree-children .jstree-open+.jstree-open{box-shadow:none}.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-node>.jstree-ocl,.jstree-default-responsive .jstree-themeicon,.jstree-default-responsive .jstree-checkbox{background-image:url(40px.png);background-size:120px 240px}.jstree-default-responsive .jstree-node{background-position:-80px 0;background-repeat:repeat-y}.jstree-default-responsive .jstree-last{background:0 0}.jstree-default-responsive .jstree-leaf>.jstree-ocl{background-position:-40px -120px}.jstree-default-responsive .jstree-last>.jstree-ocl{background-position:-40px -160px}.jstree-default-responsive .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-responsive .jstree-file{background:url(40px.png) 0 -160px no-repeat;background-size:120px 240px}.jstree-default-responsive .jstree-folder{background:url(40px.png) -40px -40px no-repeat;background-size:120px 240px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}}
includes/labelauty/jquery-labelauty.min.css ADDED
@@ -0,0 +1,2 @@
 
 
1
+ /* * LABELAUTY jQuery Plugin Styles * * @file: jquery-labelauty.css * @author: Francisco Neves (@fntneves) * @site: www.francisconeves.com * @license: MIT License */input.labelauty+label ::-moz-selection{background-color:rgba(255,255,255,0)}input.labelauty+label ::selection{background-color:rgba(255,255,255,0)}input.labelauty+label ::-moz-selection{background-color:rgba(255,255,255,0)}input.labelauty{display:none !important}input.labelauty+label{display:inline-block;font-size:13px;padding:3px;background-color:#efefef;color:black;cursor:pointer;margin-top:10px;margin-right:10px;width:96%;border-radius:3px 3px 3px 3px;-moz-border-radius:3px 3px 3px 3px;-webkit-border-radius:3px 3px 3px 3px;transition:background-color .25s;-moz-transition:background-color .25s;-webkit-transition:background-color .25s;-o-transition:background-color .25s;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}input.labelauty+label>span.labelauty-unchecked,input.labelauty+label>span.labelauty-checked{display:inline-block;line-height:12px;margin-bottom:10px}input.labelauty+label>span.labelauty-unchecked-image,input.labelauty+label>span.labelauty-checked-image{display:inline-block;width:40px;height:40px;vertical-align:bottom;background-repeat:no-repeat;background-position:left center;transition:background-image .5s linear;-moz-transition:background-image .5s linear;-webkit-transition:background-image .5s linear;-o-transition:background-image .5s linear}input.labelauty+label>span.labelauty-unchecked-image+span.labelauty-unchecked,input.labelauty+label>span.labelauty-checked-image+span.labelauty-checked{margin-left:7px}input.labelauty:not(:checked):not([disabled])+label:hover{background-color:#eaeaea;color:#a7a7a7}input.labelauty:not(:checked)+label>span.labelauty-checked-image{display:none}input.labelauty:not(:checked)+label>span.labelauty-checked{display:none}input.labelauty:checked+label{background-color:#3498db;color:#fff}input.labelauty:checked:not([disabled])+label:hover{background-color:#72c5fd}input.labelauty:checked+label>span.labelauty-unchecked-image{display:none}input.labelauty:checked+label>span.labelauty-unchecked{display:none}input.labelauty:checked+label>span.labelauty-checked{display:inline-block}input.labelauty.no-label:checked+label>span.labelauty-checked{display:block}input.labelauty[disabled]+label{opacity:.5}input.labelauty+label>span.labelauty-unchecked-image{background-image:url(images/icons/folder.png)}input.labelauty+label>span.labelauty-checked-image{background-image:url(images/icons/folder.png)}input.labelauty.email+label>span.labelauty-checked-image,input.labelauty.email+label>span.labelauty-unchecked-image{background-image:url(../../images/icons/email.png)}input.labelauty.cloudfiles+label>span.labelauty-checked-image,input.labelauty.cloudfiles+label>span.labelauty-unchecked-image{background-image:url(../../images/icons/cloudfiles.png)}input.labelauty.dreamobjects+label>span.labelauty-checked-image,input.labelauty.dreamobjects+label>span.labelauty-unchecked-image{background-image:url(../../images/icons/dreamobjects.png)}input.labelauty.dropbox+label>span.labelauty-checked-image,input.labelauty.dropbox+label>span.labelauty-unchecked-image{background-image:url(../../images/icons/dropbox.png)}input.labelauty.ftp+label>span.labelauty-checked-image,input.labelauty.ftp+label>span.labelauty-unchecked-image{background-image:url(../../images/icons/folder.png)}input.labelauty.sftp+label>span.labelauty-checked-image,input.labelauty.sftp+label>span.labelauty-unchecked-image{background-image:url(../../images/icons/folder.png)}input.labelauty.googledrive+label>span.labelauty-checked-image,input.labelauty.googledrive+label>span.labelauty-unchecked-image{background-image:url(../../images/icons/googledrive.png)}input.labelauty.s3generic+label>span.labelauty-checked-image,input.labelauty.s3generic+label>span.labelauty-unchecked-image{background-image:url(../../images/icons/folder.png)}input.labelauty.onedrive+label>span.labelauty-checked-image,input.labelauty.onedrive+label>span.labelauty-unchecked-image{background-image:url(../../images/icons/onedrive.png)}input.labelauty.azure+label>span.labelauty-checked-image,input.labelauty.azure+label>span.labelauty-unchecked-image{background-image:url(../../images/icons/azure.png)}input.labelauty.openstack+label>span.labelauty-checked-image,input.labelauty.openstack+label>span.labelauty-unchecked-image{background-image:url(../../images/icons/openstack.png)}input.labelauty.s3+label>span.labelauty-checked-image,input.labelauty.s3+label>span.labelauty-unchecked-image{background-image:url(../../images/icons/s3.png)}input.labelauty.updraftvault+label>span.labelauty-checked-image,input.labelauty.updraftvault+label>span.labelauty-unchecked-image{background-image:url(../../images/icons/updraftvault.png)}input.labelauty.webdav+label>span.labelauty-checked-image,input.labelauty.webdav+label>span.labelauty-unchecked-image{background-image:url(../../images/icons/webdav.png)}input.labelauty.googlecloud+label>span.labelauty-checked-image,input.labelauty.googlecloud+label>span.labelauty-unchecked-image{background-image:url(../../images/icons/googlecloud.png)}#remote-storage-container{column-count:3;height:auto;width:auto}
2
+ /*# sourceMappingURL=jquery-labelauty.min.css.map */
includes/labelauty/jquery-labelauty.min.css.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["includes/labelauty/jquery-labelauty.css"],"names":[],"mappings":"AAAA;;;;;;;GAOG;;AAEH,uCAAuC;AACvC,2CAAsC,yCAAyC,EAAE;AAAjF,sCAAsC,yCAAyC,EAAE;AACjF,2CAA2C,yCAAyC,EAAE;;AAEtF,8CAA8C;AAC9C,kBAAkB,yBAAyB,EAAE;;AAE7C;;;GAGG;AACH;;CAEC,sBAAsB;CACtB,gBAAgB;CAChB,aAAa;CACb,0BAA0B;CAC1B,aAAa;CACb,gBAAgB;CAChB,iBAAiB;CACjB,mBAAmB;CACnB,WAAW;;CAEX,+BAA+B;CAC/B,oCAAoC;CACpC,uCAAuC;;;CAGvC,mCAAmC;CACnC,wCAAwC;CACxC,2CAA2C;CAC3C,sCAAsC;;CAEtC,uBAAuB;CACvB,yBAAyB;CACzB,0BAA0B;CAC1B,qBAAqB;CACrB;;AAED,+BAA+B;;AAE/B;;;CAGC,sBAAsB;CACtB,kBAAkB;CAClB,oBAAoB;CACpB,6BAA6B;CAC7B;;AAED,gCAAgC;;AAEhC;;;CAGC,sBAAsB;CACtB,YAAY;CACZ,aAAa;CACb,uBAAuB;CACvB,6BAA6B;CAC7B,iCAAiC;;CAEjC,yCAAyC;CACzC,8CAA8C;CAC9C,iDAAiD;CACjD,4CAA4C;CAC5C;;AAED,2DAA2D;AAC3D;;;CAGC,iBAAiB;CACjB;;AAED,sBAAsB;AACtB;;CAEC,0BAA0B;CAC1B,eAAe;CACf;AACD;;CAEC,cAAc;CACd;;AAED;;CAEC,cAAc;CACd;;AAED,kBAAkB;AAClB;;CAEC,0BAA0B;CAC1B,eAAe;CACf;;AAED;;CAEC,0BAA0B;CAC1B;AACD;;CAEC,cAAc;CACd;;AAED;;CAEC,cAAc;CACd;;AAED;;CAEC,sBAAsB;CACtB;;AAED;;CAEC,eAAe;CACf;;AAED,mBAAmB;AACnB;;CAEC,aAAa;CACb;;AAED,4CAA4C;AAC5C;;CAEC,iDAAiD;CACjD;;AAED;;CAEC,iDAAiD;CACjD;;AAED;;CAEC,sDAAsD;CACtD;;AAED;;CAEC,2DAA2D;CAC3D;;AAED;;CAEC,6DAA6D;CAC7D;;AAED;;CAEC,wDAAwD;CACxD;;AAED;;CAEC,uDAAuD;CACvD;;AAED;;CAEC,uDAAuD;CACvD;;AAED;;CAEC,4DAA4D;CAC5D;;AAED;;CAEC,uDAAuD;CACvD;;AAED;;CAEC,yDAAyD;CACzD;;AAED;;CAEC,sDAAsD;CACtD;;AAED;;CAEC,0DAA0D;CAC1D;;AAED;;CAEC,mDAAmD;CACnD;;AAED;;CAEC,6DAA6D;CAC7D;;AAED;;CAEC,uDAAuD;CACvD;;AAED;;CAEC,4DAA4D;CAC5D;;AAED;IAGI,gBAAgB;IAChB,aAAa;IACb,YAAY;CACf","file":"jquery-labelauty.min.css","sourcesContent":["/*!\n * LABELAUTY jQuery Plugin Styles\n *\n * @file: jquery-labelauty.css\n * @author: Francisco Neves (@fntneves)\n * @site: www.francisconeves.com\n * @license: MIT License\n */\n\n/* Prevent text and blocks selection */\ninput.labelauty + label ::selection { background-color: rgba(255, 255, 255, 0); }\ninput.labelauty + label ::-moz-selection { background-color: rgba(255, 255, 255, 0); }\n\n/* Hide original checkboxes. They are ugly! */\ninput.labelauty { display: none !important; }\n\n/*\n * Let's style the input\n * Feel free to work with it as you wish!\n */\ninput.labelauty + label\n{\n\tdisplay: inline-block;\n\tfont-size: 13px;\n\tpadding: 3px;\n\tbackground-color: #efefef;\n\tcolor: black;\n\tcursor: pointer;\n\tmargin-top: 10px;\n\tmargin-right: 10px;\n\twidth: 96%;\n\n\tborder-radius: 3px 3px 3px 3px;\n\t-moz-border-radius: 3px 3px 3px 3px;\n\t-webkit-border-radius: 3px 3px 3px 3px;\n\n\n\ttransition: background-color 0.25s;\n\t-moz-transition: background-color 0.25s;\n\t-webkit-transition: background-color 0.25s;\n\t-o-transition: background-color 0.25s;\n\n\t-moz-user-select: none;\n\t-khtml-user-select: none;\n\t-webkit-user-select: none;\n\t-o-user-select: none;\n}\n\n/* Stylish text inside label */\n\ninput.labelauty + label > span.labelauty-unchecked,\ninput.labelauty + label > span.labelauty-checked\n{\n\tdisplay: inline-block;\n\tline-height: 12px;\n\tmargin-bottom: 10px;\n\t/* vertical-align: bottom; */\n}\n\n/* Stylish icons inside label */\n\ninput.labelauty + label > span.labelauty-unchecked-image,\ninput.labelauty + label > span.labelauty-checked-image\n{\n\tdisplay: inline-block;\n\twidth: 40px;\n\theight: 40px;\n\tvertical-align: bottom;\n\tbackground-repeat: no-repeat;\n\tbackground-position: left center;\n\n\ttransition: background-image 0.5s linear;\n\t-moz-transition: background-image 0.5s linear;\n\t-webkit-transition: background-image 0.5s linear;\n\t-o-transition: background-image 0.5s linear;\n}\n\n/* When there's a label, add a little margin to the left */\ninput.labelauty + label > span.labelauty-unchecked-image + span.labelauty-unchecked,\ninput.labelauty + label > span.labelauty-checked-image + span.labelauty-checked\n{\n\tmargin-left: 7px;\n}\n\n/* When not Checked */\ninput.labelauty:not(:checked):not([disabled]) + label:hover\n{\n\tbackground-color: #eaeaea;\n\tcolor: #a7a7a7;\n}\ninput.labelauty:not(:checked) + label > span.labelauty-checked-image\n{\n\tdisplay: none;\n}\n\ninput.labelauty:not(:checked) + label > span.labelauty-checked\n{\n\tdisplay: none;\n}\n\n/* When Checked */\ninput.labelauty:checked + label\n{\n\tbackground-color: #3498db;\n\tcolor: #ffffff;\n}\n\ninput.labelauty:checked:not([disabled]) + label:hover\n{\n\tbackground-color: #72c5fd;\n}\ninput.labelauty:checked + label > span.labelauty-unchecked-image\n{\n\tdisplay: none;\n}\n\ninput.labelauty:checked + label > span.labelauty-unchecked\n{\n\tdisplay: none;\n}\n\ninput.labelauty:checked + label > span.labelauty-checked\n{\n\tdisplay: inline-block;\n}\n\ninput.labelauty.no-label:checked + label > span.labelauty-checked\n{\n\tdisplay: block;\n}\n\n/* When Disabled */\ninput.labelauty[disabled] + label\n{\n\topacity: 0.5;\n}\n\n/* Add a background to (un)checked images */\ninput.labelauty + label > span.labelauty-unchecked-image\n{\n\tbackground-image: url( images/icons/folder.png );\n}\n\ninput.labelauty + label > span.labelauty-checked-image\n{\n\tbackground-image: url( images/icons/folder.png );\n}\n\ninput.labelauty.email + label > span.labelauty-checked-image,\ninput.labelauty.email + label > span.labelauty-unchecked-image {\n\tbackground-image: url( ../../images/icons/email.png );\n}\n\ninput.labelauty.cloudfiles + label > span.labelauty-checked-image,\ninput.labelauty.cloudfiles + label > span.labelauty-unchecked-image {\n\tbackground-image: url( ../../images/icons/cloudfiles.png );\n}\n\ninput.labelauty.dreamobjects + label > span.labelauty-checked-image,\ninput.labelauty.dreamobjects + label > span.labelauty-unchecked-image {\n\tbackground-image: url( ../../images/icons/dreamobjects.png );\n}\n\ninput.labelauty.dropbox + label > span.labelauty-checked-image,\ninput.labelauty.dropbox + label > span.labelauty-unchecked-image {\n\tbackground-image: url( ../../images/icons/dropbox.png );\n}\n\ninput.labelauty.ftp + label > span.labelauty-checked-image,\ninput.labelauty.ftp + label > span.labelauty-unchecked-image {\n\tbackground-image: url( ../../images/icons/folder.png );\n}\n\ninput.labelauty.sftp + label > span.labelauty-checked-image,\ninput.labelauty.sftp + label > span.labelauty-unchecked-image {\n\tbackground-image: url( ../../images/icons/folder.png );\n}\n\ninput.labelauty.googledrive + label > span.labelauty-checked-image,\ninput.labelauty.googledrive + label > span.labelauty-unchecked-image {\n\tbackground-image: url( ../../images/icons/googledrive.png );\n}\n\ninput.labelauty.s3generic + label > span.labelauty-checked-image,\ninput.labelauty.s3generic + label > span.labelauty-unchecked-image {\n\tbackground-image: url( ../../images/icons/folder.png );\n}\n\ninput.labelauty.onedrive + label > span.labelauty-checked-image,\ninput.labelauty.onedrive + label > span.labelauty-unchecked-image {\n\tbackground-image: url( ../../images/icons/onedrive.png );\n}\n\ninput.labelauty.azure + label > span.labelauty-checked-image,\ninput.labelauty.azure + label > span.labelauty-unchecked-image {\n\tbackground-image: url( ../../images/icons/azure.png );\n}\n\ninput.labelauty.openstack + label > span.labelauty-checked-image,\ninput.labelauty.openstack + label > span.labelauty-unchecked-image {\n\tbackground-image: url( ../../images/icons/openstack.png );\n}\n\ninput.labelauty.s3 + label > span.labelauty-checked-image,\ninput.labelauty.s3 + label > span.labelauty-unchecked-image {\n\tbackground-image: url( ../../images/icons/s3.png );\n}\n\ninput.labelauty.updraftvault + label > span.labelauty-checked-image,\ninput.labelauty.updraftvault + label > span.labelauty-unchecked-image {\n\tbackground-image: url( ../../images/icons/updraftvault.png );\n}\n\ninput.labelauty.webdav + label > span.labelauty-checked-image,\ninput.labelauty.webdav + label > span.labelauty-unchecked-image {\n\tbackground-image: url( ../../images/icons/webdav.png );\n}\n\ninput.labelauty.googlecloud + label > span.labelauty-checked-image,\ninput.labelauty.googlecloud + label > span.labelauty-unchecked-image {\n\tbackground-image: url( ../../images/icons/googlecloud.png );\n}\n\n#remote-storage-container {\n -moz-column-count: 3;\n -webkit-column-count: 3;\n column-count: 3;\n height: auto;\n width: auto;\n}\n"]}
includes/labelauty/jquery-labelauty.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(e){function a(e){var a=0,l=e,t="position: absolute !important; top: -1000 !important; ";return l=l.clone().attr("style",t).appendTo("body"),a=l.width(!0),l.remove(),a}function l(e,a){e&&window.console&&window.console.log&&window.console.log("jQuery-LABELAUTY: "+a)}function t(e,a,l,t,n,c){var i,r,s,d="";return null==n?r=s="":(r=n[0],s=null==n[1]?r:n[1]),d=null==a?"":'tabindex="0" role="'+t+'" aria-checked="'+l+'" aria-label="'+a+'"',i=1==c?'<label for="'+e+'" '+d+'><span class="labelauty-unchecked-image"></span><span class="labelauty-unchecked">'+r+'</span><span class="labelauty-checked-image"></span><span class="labelauty-checked">'+s+"</span></label>":'<label for="'+e+'" '+d+'><span class="labelauty-unchecked-image"></span><span class="labelauty-checked-image"></span></label>'}e.fn.labelauty=function(n){var c=e.extend({development:!1,"class":"labelauty",label:!0,separator:"|",checked_label:"Checked",unchecked_label:"Unchecked",force_random_id:!1,minimum_width:!1,same_width:!0},n);return this.each(function(){var n,i,r,s=e(this),d=s.is(":checked"),o=s.attr("type"),h=!0,u=s.attr("aria-label");if(s.attr("aria-hidden",!0),s.is(":checkbox")===!1&&s.is(":radio")===!1)return this;if(s.addClass(c["class"]),n=s.attr("data-labelauty"),h=c.label,h===!0&&(null==n||0===n.length?(i=new Array,i[0]=c.unchecked_label,i[1]=c.checked_label):(i=n.split(c.separator),i.length>2?(h=!1,l(c.development,"There's more than two labels. LABELAUTY will not use labels.")):1===i.length&&l(c.development,"There's just one label. LABELAUTY will use this one for both cases."))),s.css({display:"none"}),s.removeAttr("data-labelauty"),r=s.attr("id"),c.force_random_id||null==r||""===r.trim()){var b=1+Math.floor(1024e3*Math.random());for(r="labelauty-"+b;0!==e(r).length;)b++,r="labelauty-"+b,l(c.development,"Holy crap, between 1024 thousand numbers, one raised a conflict. Trying again.");s.attr("id",r)}var p=jQuery(t(r,u,d,o,i,h));if(p.click(function(){s.is(":checked")?e(p).attr("aria-checked",!1):e(p).attr("aria-checked",!0)}),p.keypress(function(a){a.preventDefault(),32!==a.keyCode&&13!==a.keyCode||(s.is(":checked")?(s.prop("checked",!1),e(p).attr("aria-checked",!1)):(s.prop("checked",!0),e(p).attr("aria-checked",!0)))}),s.after(p),c.minimum_width!==!1&&s.next("label[for="+r+"]").css({"min-width":c.minimum_width}),0!=c.same_width&&1==c.label){var k=s.next("label[for="+r+"]"),m=a(k.find("span.labelauty-unchecked")),y=a(k.find("span.labelauty-checked"));m>y?k.find("span.labelauty-checked").width(m):k.find("span.labelauty-unchecked").width(y)}})}}(jQuery);
includes/updraft-admin.min.js ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ function updraft_send_command(t,e,a,r){default_options={json_parse:!0,alert_on_error:!0,action:"updraft_ajax",nonce:updraft_credentialtest_nonce,nonce_key:"nonce",timeout:null,async:!0,type:"POST"},"undefined"==typeof r&&(r={});for(var n in default_options)r.hasOwnProperty(n)||(r[n]=default_options[n]);var o={action:r.action,subaction:t};if(o[r.nonce_key]=r.nonce,"object"==typeof e)for(var u in e)o[u]=e[u];else o.action_data=e;var d={type:r.type,url:ajaxurl,data:o,success:function(t,e){if(r.json_parse){try{var n=JSON.parse(t)}catch(o){return console.log(o),console.log(t),void(r.alert_on_error&&alert(updraftlion.unexpectedresponse+" "+t))}"function"==typeof a&&a(n,e,t)}else"function"==typeof a&&a(t,e)},error:function(t,e,a){"function"==typeof r.error_callback?r.error_callback(t,e,a):(console.log("updraft_send_command: error: "+e+" ("+a+")"),console.log(t))},dataType:"text",async:r.async};null!=r.timeout&&(d.timeout=r.timeout),jQuery.ajax(d)}function updraft_delete(t,e,a){jQuery("#updraft_delete_timestamp").val(t),jQuery("#updraft_delete_nonce").val(e),a?jQuery("#updraft-delete-remote-section, #updraft_delete_remote").removeAttr("disabled").show():jQuery("#updraft-delete-remote-section, #updraft_delete_remote").hide().attr("disabled","disabled"),t.indexOf(",")>-1?(jQuery("#updraft_delete_question_singular").hide(),jQuery("#updraft_delete_question_plural").show()):(jQuery("#updraft_delete_question_plural").hide(),jQuery("#updraft_delete_question_singular").show()),jQuery("#updraft-delete-modal").dialog("open")}function updraft_remote_storage_tab_activation(t){jQuery(".updraftplusmethod").hide(),jQuery(".remote-tab").data("active",!1),jQuery(".remote-tab").removeClass("nav-tab-active"),jQuery(".updraftplusmethod."+t).show(),jQuery(".remote-tab-"+t).data("active",!0),jQuery(".remote-tab-"+t).addClass("nav-tab-active")}function updraft_check_overduecrons(){updraft_send_command("check_overdue_crons",null,function(t){t&&t.hasOwnProperty("m")&&jQuery("#updraft-insert-admin-warning").html(t.m)},{alert_on_error:!1})}function updraft_remote_storage_tabs_setup(){var t=0,e=jQuery(".updraft_servicecheckbox:checked");jQuery(e).each(function(a,r){var n=jQuery(r).val();"updraft_servicecheckbox_none"!=jQuery(r).attr("id")&&t++,jQuery(".remote-tab-"+n).show(),a==jQuery(e).length-1&&updraft_remote_storage_tab_activation(n)}),t>0&&jQuery(".updraftplusmethod.none").hide(),jQuery(document).keyup(function(t){if((32===t.keyCode||13===t.keyCode)&&jQuery(document.activeElement).is("input.labelauty + label")){var e=jQuery(document.activeElement).attr("for");e&&jQuery("#"+e).change()}}),jQuery(".updraft_servicecheckbox").change(function(){var e=jQuery(this).attr("id");if("updraft_servicecheckbox_"==e.substring(0,24)){var a=e.substring(24);null!=a&&""!=a&&(jQuery(this).is(":checked")?(t++,jQuery(".remote-tab-"+a).fadeIn(),updraft_remote_storage_tab_activation(a)):(t--,jQuery(".remote-tab-"+a).hide(),1==jQuery(".remote-tab-"+a).data("active")&&updraft_remote_storage_tab_activation(jQuery(".remote-tab:visible").last().attr("name"))))}t<=0?jQuery(".updraftplusmethod.none").fadeIn():jQuery(".updraftplusmethod.none").hide()}),jQuery(".updraft_servicecheckbox:not(.multi)").change(function(){var t=jQuery(this).attr("value");jQuery(this).is(":not(:checked)")?(jQuery(".updraftplusmethod."+t).hide(),jQuery(".updraftplusmethod.none").fadeIn()):jQuery(".updraft_servicecheckbox").not(this).prop("checked",!1)});var a=jQuery(".updraft_servicecheckbox");"function"==typeof a.labelauty&&a.labelauty()}function updraft_remote_storage_test(t,e,a){var r,n;a?(r=jQuery("#updraft-"+t+"-test-"+a),n=".updraftplusmethod."+t+"-"+a):(r=jQuery("#updraft-"+t+"-test"),n=".updraftplusmethod."+t);var o=r.data("method_label");r.html(updraftlion.testing_settings.replace("%s",o));var u={method:t};jQuery("#updraft-navtab-settings-content "+n+" input[data-updraft_settings_test], #updraft-navtab-settings-content .expertmode input[data-updraft_settings_test]").each(function(t,e){var a=jQuery(e).data("updraft_settings_test"),r=jQuery(e).attr("type");if(a){r||(console.log("UpdraftPlus: settings test input item with no type found"),console.log(e),r="text");var n=null;"checkbox"==r?n=jQuery(e).is(":checked")?1:0:"text"==r||"password"==r?n=jQuery(e).val():(console.log("UpdraftPlus: settings test input item with unrecognised type ("+r+") found"),console.log(e)),u[a]=n}}),jQuery("#updraft-navtab-settings-content "+n+" textarea[data-updraft_settings_test], #updraft-navtab-settings-content "+n+" select[data-updraft_settings_test]").each(function(t,e){var a=jQuery(e).data("updraft_settings_test");u[a]=jQuery(e).val()}),updraft_send_command("test_storage_settings",u,function(t,a){r.html(updraftlion.test_settings.replace("%s",o)),"undefined"!=typeof e&&0!=e&&(e=e.call(this,t,a,u)),"undefined"!=typeof e&&!1===e&&alert(updraftlion.settings_test_result.replace("%s",o)+" "+t.output)})}function backupnow_whichfiles_checked(t){return jQuery('#backupnow_includefiles_moreoptions input[type="checkbox"]').each(function(e){if(jQuery(this).is(":checked")){var a=jQuery(this).attr("name");if("updraft_include_"==a.substring(0,16)){var r=a.substring(16);""!=t&&(t+=","),t+=r}}}),t}function backupnow_whichtables_checked(t){var e=!1;return jQuery('#backupnow_database_moreoptions input[type="checkbox"]').each(function(t){if(!jQuery(this).is(":checked"))return void(e=!0)}),t=jQuery("input[name^='updraft_include_tables_']").serializeArray(),!e||t}function updraft_deleteallselected(){var t=0,e="",a="",r="";jQuery("#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected").each(function(n){t++;var o=jQuery(this).data("nonce");a&&(a+=","),a+=o;var u=jQuery(this).data("key");e&&(e+=","),e+=u;var d=jQuery(this).find(".updraftplus-remove").data("hasremote");r&&(r+=","),r+=d}),updraft_delete(e,a,r)}function updraft_openrestorepanel(t){updraft_console_focussed_tab=2,updraft_historytimertoggle(t),jQuery("#updraft-navtab-status-content").hide(),jQuery("#updraft-navtab-expert-content").hide(),jQuery("#updraft-navtab-settings-content").hide(),jQuery("#updraft-navtab-addons-content").hide(),jQuery("#updraft-navtab-backups-content").show(),jQuery("#updraft-navtab-backups").addClass("nav-tab-active"),jQuery("#updraft-navtab-expert").removeClass("nav-tab-active"),jQuery("#updraft-navtab-settings").removeClass("nav-tab-active"),jQuery("#updraft-navtab-status").removeClass("nav-tab-active"),jQuery("#updraft-navtab-addons").removeClass("nav-tab-active")}function updraft_delete_old_dirs(){return!0}function updraft_initiate_restore(t){jQuery("#updraft-migrate-modal").dialog("close"),jQuery('#updraft-navtab-backups-content .updraft_existing_backups button[data-backup_timestamp="'+t+'"]').click()}function updraft_restore_setoptions(t){var e=0;jQuery('input[name="updraft_restore[]"]').each(function(a,r){var n=jQuery(r).val(),o=n+"=([0-9,]+)",u=new RegExp(o),d=t.match(u);d?(jQuery(r).removeAttr("disabled").data("howmany",d[1]).parent().show(),e++,"db"==n&&(e+=4.5),jQuery(r).is(":checked")&&jQuery("#updraft_restorer_"+n+"options").show()):jQuery(r).attr("disabled","disabled").parent().hide()});var a=t.match(/dbcrypted=1/);a?jQuery(".updraft_restore_crypteddb").show():jQuery(".updraft_restore_crypteddb").hide();var r=t.match(/meta_foreign=([12])/);r?jQuery("#updraft_restore_meta_foreign").val(r[1]):jQuery("#updraft_restore_meta_foreign").val("0");var n=336+20*e;jQuery("#updraft-restore-modal").dialog("option","height",n)}function updraft_backup_dialog_open(){jQuery("#backupnow_includefiles_moreoptions").hide(),updraft_settings_form_changed?window.confirm(updraftlion.unsavedsettingsbackup)&&(jQuery("#backupnow_label").val(""),jQuery("#updraft-backupnow-modal").dialog("open")):(jQuery("#backupnow_label").val(""),jQuery("#updraft-backupnow-modal").dialog("open"))}function updraft_migrate_dialog_open(){jQuery("#updraft_migrate_modal_alt").hide(),updraft_migrate_modal_default_buttons={},updraft_migrate_modal_default_buttons[updraftlion.close]=function(){jQuery(this).dialog("close")},jQuery("#updraft-migrate-modal").dialog("option","buttons",updraft_migrate_modal_default_buttons),jQuery("#updraft-migrate-modal").dialog("open"),jQuery("#updraft_migrate_modal_main").show()}function updraft_check_page_visibility(t){"hidden"==document.visibilityState?updraft_page_is_visible=0:(updraft_page_is_visible=1,1!==t&&updraft_activejobs_update(!0))}function updraft_backupnow_inpage_go(t,e,a,r,n,o){r="undefined"==typeof r?0:r,n="undefined"==typeof n?0:n,o="undefined"==typeof o?0:o,updraft_console_focussed_tab=1,updraft_inpage_success_callback=t;var u={},d=jQuery("#updraft-backupnow-inpage-modal").length;d&&jQuery("#updraft-backupnow-inpage-modal").dialog("option","buttons",u),jQuery("#updraft_inpage_prebackup").hide(),d&&jQuery("#updraft-backupnow-inpage-modal").dialog("open"),jQuery("#updraft_inpage_backup").show(),updraft_activejobslist_backupnownonce_only=1,updraft_inpage_hasbegun=0,updraft_backupnow_go(r,n,o,e,a,updraftlion.automaticbackupbeforeupdate,"")}function updraft_activejobs_update(t){var e=(new Date).getTime();if(!(0==t&&e<updraft_activejobs_nextupdate)){updraft_activejobs_nextupdate=e+5500;var a="";jQuery(".ud_downloadstatus .updraftplus_downloader, #ud_downloadstatus2 .updraftplus_downloader").each(function(t,e){var r=jQuery(e).data("downloaderfor");"object"==typeof r&&(""!=a&&(a+=":"),a=a+r.base+","+r.nonce+","+r.what+","+r.index)});var r={downloaders:a};try{jQuery("#updraft-poplog").dialog("isOpen")&&(r.log_fetch=1,r.log_nonce=updraft_poplog_log_nonce,r.log_pointer=updraft_poplog_log_pointer)}catch(n){console.log(n)}updraft_activejobslist_backupnownonce_only&&"undefined"!=typeof updraft_backupnow_nonce&&""!=updraft_backupnow_nonce&&(r.thisjobonly=updraft_backupnow_nonce),updraft_send_command("activejobs_list",r,function(t){try{resp=JSON.parse(t),resp.hasOwnProperty("l")&&(resp.l?(jQuery("#updraft_lastlogmessagerow").show(),jQuery("#updraft_lastlogcontainer").html(resp.l)):(jQuery("#updraft_lastlogmessagerow").hide(),jQuery("#updraft_lastlogcontainer").html("("+updraftlion.nothing_yet_logged+")")));var n=-1;if(jQuery("#updraft_activejobs").html(resp.j),jQuery("#updraft_activejobs .updraft_jobtimings").each(function(t,a){var r=jQuery(a);if(r.data("lastactivity")&&r.data("jobid")){var o=r.data("jobid"),u=r.data("lastactivity");(n==-1||u<n)&&(n=u);var d=r.data("nextresumptionafter"),s=r.data("nextresumption");e=(new Date).getTime(),u>50&&s>0&&d<-30&&e>updraft_last_forced_when+1e5&&(updraft_last_forced_jobid!=o||s!=updraft_last_forced_resumption)&&(updraft_last_forced_resumption=s,updraft_last_forced_jobid=o,updraft_last_forced_when=e,console.log("UpdraftPlus: force resumption: job_id="+o+", resumption="+s),updraft_send_command("forcescheduledresumption",{resumption:s,job_id:o},function(t){console.log(t)},{json_parse:!1,alert_on_error:!1}))}}),e=(new Date).getTime(),updraft_activejobs_nextupdate=e+18e4,1==updraft_page_is_visible&&(1==updraft_console_focussed_tab||2==updraft_console_focussed_tab&&""!=a)&&(updraft_activejobs_nextupdate=n>-1?n<5?e+1750:e+5e3:lastlog_lastdata==t?e+7500:e+1750),lastlog_lastdata=t,null!=resp.j&&""!=resp.j?(jQuery("#updraft_activejobsrow").show(),r.hasOwnProperty("thisjobonly")&&!updraft_inpage_hasbegun&&jQuery("#updraft-jobid-"+r.thisjobonly).length?(updraft_inpage_hasbegun=1,console.log("UpdraftPlus: the start of the requested backup job has been detected")):!updraft_inpage_hasbegun&&updraft_activejobslist_backupnownonce_only&&jQuery(".updraft_jobtimings.isautobackup").length?(autobackup_nonce=jQuery(".updraft_jobtimings.isautobackup").first().data("jobid"),autobackup_nonce&&(updraft_inpage_hasbegun=1,updraft_backupnow_nonce=autobackup_nonce,r.thisjobonly=autobackup_nonce,console.log("UpdraftPlus: the start of the requested backup job has been detected; id: "+autobackup_nonce))):1==updraft_inpage_hasbegun&&jQuery("#updraft-jobid-"+r.thisjobonly+".updraft_finished").length&&(updraft_inpage_hasbegun=2,console.log("UpdraftPlus: the end of the requested backup job has been detected"),"undefined"!=typeof updraft_inpage_success_callback&&""!=updraft_inpage_success_callback?updraft_inpage_success_callback.call(!1):jQuery("#updraft-backupnow-inpage-modal").dialog("close")),""==lastlog_jobs&&setTimeout(function(){jQuery("#updraft_backup_started").slideUp()},3500)):jQuery("#updraft_activejobsrow").is(":hidden")||("undefined"!=typeof lastbackup_laststatus&&updraft_showlastbackup(),jQuery("#updraft_activejobsrow").hide()),lastlog_jobs=resp.j,null!=resp.ds&&""!=resp.ds&&jQuery(resp.ds).each(function(e,a){""!=a.base&&updraft_downloader_status_update(a.base,a.timestamp,a.what,a.findex,a,t)}),null!=resp.u&&""!=resp.u&&jQuery("#updraft-poplog").dialog("isOpen")){var o=resp.u;if(o.nonce==updraft_poplog_log_nonce&&(updraft_poplog_log_pointer=o.pointer,null!=o.log&&""!=o.log)){var u=jQuery("#updraft-poplog").scrollTop();jQuery("#updraft-poplog-content").append(o.log),updraft_poplog_lastscroll!=u&&updraft_poplog_lastscroll!=-1||(jQuery("#updraft-poplog").scrollTop(jQuery("#updraft-poplog-content").prop("scrollHeight")),updraft_poplog_lastscroll=jQuery("#updraft-poplog").scrollTop())}}}catch(d){console.log(updraftlion.unexpectedresponse+" "+t),console.log(d)}},{json_parse:!1,type:"GET"})}}function updraft_popuplog(t){var e=updraftlion.loading_log_file;t&&(e+=" (log."+t+".txt)"),jQuery("#updraft-poplog").dialog("option","title",e),jQuery("#updraft-poplog-content").html("<em>"+e+" ...</em> "),jQuery("#updraft-poplog").dialog("open"),updraft_send_command("get_log",t,function(t){updraft_poplog_log_pointer=t.pointer,updraft_poplog_log_nonce=t.nonce;var e="?page=updraftplus&action=downloadlog&force_download=1&updraftplus_backup_nonce="+t.nonce;jQuery("#updraft-poplog-content").html(t.log);var a={};a[updraftlion.downloadlogfile]=function(){window.location.href=e},a[updraftlion.close]=function(){jQuery(this).dialog("close")},jQuery("#updraft-poplog").dialog("option","buttons",a),jQuery("#updraft-poplog").dialog("option","title","log."+t.nonce+".txt"),updraft_poplog_lastscroll=-1},{type:"GET",timeout:6e4,error_callback:function(t,e,a){var r=e==a?a:a+" ("+e+")";jQuery("#updraft-poplog-content").append(r),console.log(t)}})}function updraft_showlastbackup(){updraft_send_command("get_fragment","last_backup_html",function(t){response=t.output,lastbackup_laststatus==response?setTimeout(function(){updraft_showlastbackup()},7e3):jQuery("#updraft_last_backup").html(response),lastbackup_laststatus=response},{type:"GET"})}function updraft_historytimertoggle(t){updraft_historytimer&&1!=t?(clearTimeout(updraft_historytimer),updraft_historytimer=0):(updraft_updatehistory(0,0),updraft_historytimer=setInterval(function(){updraft_updatehistory(0,0)},3e4),calculated_diskspace||(updraftplus_diskspace(),calculated_diskspace=1))}function updraft_updatehistory(t,e){var a=Math.round((new Date).getTime()/1e3);if(1==t||1==e)updraft_historytimer_notbefore=a+30;else if(a<updraft_historytimer_notbefore)return void console.log("Update history skipped: "+a.toString()+" < "+updraft_historytimer_notbefore.toString());1==t&&(1==e?(updraft_history_lastchecksum=!1,jQuery("#updraft-navtab-backups-content .updraft_existing_backups").html('<p style="text-align:center;"><em>'+updraftlion.rescanningremote+"</em></p>")):(updraft_history_lastchecksum=!1,jQuery("#updraft-navtab-backups-content .updraft_existing_backups").html('<p style="text-align:center;"><em>'+updraftlion.rescanning+"</em></p>")));var r=e?"remotescan":!!t&&"rescan";updraft_send_command("rescan",r,function(t){if(t.hasOwnProperty("logs_exist")&&t.logs_exist&&jQuery("#updraft_lastlogmessagerow .updraft-log-link").show(),t.hasOwnProperty("migrate_modal")&&t.migrate_modal&&jQuery("#updraft_migrate_modal_main").replaceWith(t.migrate_modal),null!=t.n&&jQuery("#updraft-navtab-backups").html(t.n),null!=t.t){if(null!=t.cksum){if(t.cksum==updraft_history_lastchecksum)return;updraft_history_lastchecksum=t.cksum}jQuery("#updraft-navtab-backups-content .updraft_existing_backups").html(t.t),t.data&&console.log(t.data)}})}function updraft_intervals_monthly_or_not(t,e){var a="#updraft-navtab-settings-content #"+t,r=jQuery(a+" option").length,n="monthly"==e,o=!1;if(r>10&&(o=!0),n||o){if(n&&o)return void("monthly"==e&&(jQuery(".updraft_monthly_extra_words_"+t).remove(),jQuery(a).before('<span class="updraft_monthly_extra_words_'+t+'">'+updraftlion.day+" </span>").after('<span class="updraft_monthly_extra_words_'+t+'"> '+updraftlion.inthemonth+" </span>")));if(jQuery(".updraft_monthly_extra_words_"+t).remove(),n){updraft_interval_week_val=jQuery(a+" option:selected").val(),jQuery(a).html(updraftlion.mdayselector).before('<span class="updraft_monthly_extra_words_'+t+'">'+updraftlion.day+" </span>").after('<span class="updraft_monthly_extra_words_'+t+'"> '+updraftlion.inthemonth+" </span>");var u=updraft_interval_month_val===!1?1:updraft_interval_month_val;u-=1,jQuery(a+" option:eq("+u+")").prop("selected",!0)}else{updraft_interval_month_val=jQuery(a+" option:selected").val(),jQuery(a).html(updraftlion.dayselector);var d=updraft_interval_week_val===!1?1:updraft_interval_week_val;jQuery(a+" option:eq("+d+")").prop("selected",!0)}}}function updraft_check_same_times(){var t=0,e=jQuery("#updraft-navtab-settings-content .updraft_interval").val();"manual"==e?jQuery("#updraft-navtab-settings-content .updraft_files_timings").hide():jQuery("#updraft-navtab-settings-content .updraft_files_timings").show(),"weekly"==e||"fortnightly"==e||"monthly"==e?(updraft_intervals_monthly_or_not("updraft_startday_files",e),jQuery("#updraft-navtab-settings-content #updraft_startday_files").show()):(jQuery(".updraft_monthly_extra_words_updraft_startday_files").remove(),jQuery("#updraft-navtab-settings-content #updraft_startday_files").hide());var a=jQuery("#updraft-navtab-settings-content .updraft_interval_database").val();"manual"==a&&(t=1,jQuery("#updraft-navtab-settings-content .updraft_db_timings").hide()),"weekly"==a||"fortnightly"==a||"monthly"==a?(updraft_intervals_monthly_or_not("updraft_startday_db",a),jQuery("#updraft-navtab-settings-content #updraft_startday_db").show()):(jQuery(".updraft_monthly_extra_words_updraft_startday_db").remove(),jQuery("#updraft-navtab-settings-content #updraft_startday_db").hide()),a==e?(jQuery("#updraft-navtab-settings-content .updraft_db_timings").hide(),0==t?jQuery("#updraft-navtab-settings-content .updraft_same_schedules_message").show():jQuery("#updraft-navtab-settings-content .updraft_same_schedules_message").hide()):(jQuery("#updraft-navtab-settings-content .updraft_same_schedules_message").hide(),0==t&&jQuery("#updraft-navtab-settings-content .updraft_db_timings").show())}function updraft_activejobs_delete(t){updraft_send_command("activejobs_delete",t,function(e){"Y"==e.ok?jQuery("#updraft-jobid-"+t).html(e.m).fadeOut("slow").remove():"N"==e.ok?alert(e.m):(alert(updraftlion.unexpectedresponse),console.log(e))})}function updraftplus_diskspace_entity(t){jQuery("#updraft_diskspaceused_"+t).html("<em>"+updraftlion.calculating+"</em>"),updraft_send_command("get_fragment",{fragment:"disk_usage",data:t},function(e){jQuery("#updraft_diskspaceused_"+t).html(e.output)},{type:"GET"})}function updraft_iframe_modal(t,e){var a=780,r=500;jQuery("#updraft-iframe-modal-innards").html('<iframe width="100%" height="430px" src="'+ajaxurl+"?action=updraft_ajax&subaction="+t+"&nonce="+updraft_credentialtest_nonce+'"></iframe>'),jQuery("#updraft-iframe-modal").dialog("option","title",e).dialog("option","width",a).dialog("option","height",r).dialog("open")}function updraft_html_modal(t,e,a,r){jQuery("#updraft-iframe-modal-innards").html(t);var n={};a<450&&(n[updraftlion.close]=function(){jQuery(this).dialog("close")}),jQuery("#updraft-iframe-modal").dialog("option","title",e).dialog("option","width",a).dialog("option","height",r).dialog("option","buttons",n).dialog("open")}function updraftplus_diskspace(){jQuery("#updraft-navtab-backups-content .updraft_diskspaceused").html("<em>"+updraftlion.calculating+"</em>"),updraft_send_command("get_fragment",{fragment:"disk_usage",data:"updraft"},function(t){jQuery("#updraft-navtab-backups-content .updraft_diskspaceused").html(t.output)},{type:"GET"})}function updraftplus_deletefromserver(t,e,a){a||(a=0);var r={stage:"delete",timestamp:t,type:e,findex:a};updraft_send_command("updraft_download_backup",r,null,{action:"updraft_download_backup",nonce:updraft_download_nonce,nonce_key:"_wpnonce"})}function updraftplus_downloadstage2(t,e,a){location.href=ajaxurl+"?_wpnonce="+updraft_download_nonce+"&timestamp="+t+"&type="+e+"&stage=2&findex="+a+"&action=updraft_download_backup"}function updraftplus_show_contents(t,e,a){var r='<div id="updraft_zip_files_container" class="hidden-in-updraftcentral" style="clear:left;"><div id="updraft_zip_info_container"><p><span id="updraft_zip_path_text">'+updraftlion.zip_file_contents_info+'</span> - <span id="updraft_zip_size_text"></span></p>'+updraftlion.browse_download_link+'</div><div id="updraft_zip_files_jstree_container"><input type="search" id="zip_files_jstree_search" name="zip_files_jstree_search" placeholder="'+updraftlion.search+'"><div id="updraft_zip_files_jstree"></div></div></div>';updraft_html_modal(r,updraftlion.zip_file_contents,780,500),zip_files_jstree("zipbrowser",t,e,a)}function zip_files_jstree(t,e,a,r){jQuery("#updraft_zip_files_jstree").jstree({core:{multiple:!1,data:function(n,o){updraft_send_command("get_jstree_directory_nodes",{entity:t,node:n,timestamp:e,type:a,findex:r},function(t){t.hasOwnProperty("error")?alert(t.error):o.call(this,t.nodes)})},error:function(t){alert(t),console.log(t)}},search:{show_only_matches:!0},plugins:["search","sort"]}),jQuery("#updraft_zip_files_jstree").on("ready.jstree",function(t,e){jQuery("#updraft-iframe-modal").dialog("option","title",updraftlion.zip_file_contents+": "+e.instance.get_node("#").children[0])});var n=!1;jQuery("#zip_files_jstree_search").keyup(function(){n&&clearTimeout(n),n=setTimeout(function(){var t=jQuery("#zip_files_jstree_search").val();jQuery("#updraft_zip_files_jstree").jstree(!0).search(t)},250)}),jQuery("#updraft_zip_files_jstree").on("changed.jstree",function(t,e){jQuery("#updraft_zip_path_text").text(e.node.li_attr.path),e.node.li_attr.size?(jQuery("#updraft_zip_size_text").text(e.node.li_attr.size),jQuery("#updraft_zip_download_item").show()):(jQuery("#updraft_zip_size_text").text(""),jQuery("#updraft_zip_download_item").hide())}),jQuery("#updraft_zip_download_item").click(function(t){t.preventDefault();var n=jQuery("#updraft_zip_path_text").text();updraft_send_command("get_zipfile_download",{path:n,timestamp:e,type:a,findex:r},function(t){t.hasOwnProperty("error")?alert(t.error):t.hasOwnProperty("path")?location.href=ajaxurl+"?_wpnonce="+updraft_download_nonce+"&timestamp="+e+"&type="+a+"&stage=2&findex="+r+"&filepath="+t.path+"&action=updraft_download_backup":alert(updraftlion.download_timeout)})})}function updraft_downloader(t,e,a,r,n,o,u){"string"!=typeof n&&(n=n.toString());for(var n=n.split(","),d=0;d<n.length;d++){var s=t+e+"_"+a+"_"+n[d],p="."+s,i=parseInt(n[d]);i++;var l=0==n[d]?"":" ("+i+")";if(!jQuery(p).length){var c=o?o:e;jQuery(r).append('<div style="clear:left; border: 1px solid; padding: 8px; margin-top: 4px; max-width:840px;" class="'+s+' updraftplus_downloader"><button onclick="jQuery(this).parent().fadeOut().remove();" type="button" style="float:right; margin-bottom: 8px;">X</button><strong>'+updraftlion.download+" "+a+l+" ("+c+')</strong>:<div class="raw">'+updraftlion.begunlooking+'</div><div class="file '+s+'_st"><div class="dlfileprogress" style="width: 0;"></div></div></div>'),jQuery(p).data("downloaderfor",{base:t,nonce:e,what:a,index:d}),setTimeout(function(){updraft_activejobs_update(!0)},1500)}jQuery(p).data("lasttimebegan",(new Date).getTime()),u=!!u;var f=jQuery("#updraft-navtab-backups-content .uddownloadform_"+a+"_"+e+"_"+n[d]).data("wp_nonce").toString(),_={type:a,timestamp:e,findex:n[d]},g={action:"updraft_download_backup",nonce_key:"_wpnonce",nonce:f,timeout:1e4,async:u};updraft_send_command("updraft_download_backup",_,function(t){},g)}return!1}function updraft_restorer_checkstage2(t){var e=jQuery("#ud_downloadstatus2 .file").length;return e>0?void(t&&alert(updraftlion.stilldownloading)):(jQuery("#updraft-restore-modal-stage2a").html(updraftlion.processing),void updraft_send_command("restore_alldownloaded",{timestamp:jQuery("#updraft_restore_timestamp").val(),restoreopts:jQuery("#updraft_restore_form").serialize()},function(t){var e=null;jQuery("#updraft_restorer_restore_options").val("");try{var a=JSON.parse(t);if(null==a)return void jQuery("#updraft-restore-modal-stage2a").html(updraftlion.emptyresponse);var r=a.m;if(""!=a.w&&(r=r+"<p><strong>"+updraftlion.warnings+"</strong><br>"+a.w+"</p>"),""!=a.e?r=r+"<p><strong>"+updraftlion.errors+"</strong><br>"+a.e+"</p>":updraft_restore_stage=3,a.hasOwnProperty("i")){try{if(e=jQuery.parseJSON(a.i),e.hasOwnProperty("addui")){console.log("Further UI options are being displayed");var n=e.addui;r+='<div id="updraft_restoreoptions_ui" style="clear:left; padding-top:10px;">'+n+"</div>","object"==typeof JSON&&"function"==typeof JSON.stringify&&(delete e.addui,a.i=JSON.stringify(e))}}catch(o){console.log(o),console.log(a)}jQuery("#updraft_restorer_backup_info").val(a.i)}else jQuery("#updraft_restorer_backup_info").val();jQuery("#updraft-restore-modal-stage2a").html(r),jQuery("#updraft-restore-modal-stage2a .updraft_select2").length>0&&jQuery("#updraft-restore-modal-stage2a .updraft_select2").select2()}catch(o){console.log(t),console.log(o),jQuery("#updraft-restore-modal-stage2a").text(updraftlion.jsonnotunderstood+" "+updraftlion.errordata+": "+t).html()}},{json_parse:!1}))}function updraft_downloader_status(t,e,a,r){}function updraft_downloader_status_update(t,e,a,r,n,o){var u=t+e+"_"+a+"_"+r,d="."+u,s=0;if(null!=n.e)jQuery(d+" .raw").html("<strong>"+updraftlion.error+"</strong> "+n.e),console.log(n);else if(null!=n.p){if(jQuery(d+"_st .dlfileprogress").width(n.p+"%"),null!=n.a&&n.a>0){var p=(new Date).getTime(),i=jQuery(d).data("lasttimebegan"),l=p-i;if(n.a>90&&l>6e4){console.log(e+" "+a+" "+r+": restarting download: file_age="+n.a+", sincelastrestart_ms="+l),jQuery(d).data("lasttimebegan",(new Date).getTime());var c=jQuery("#updraft-navtab-backups-content .uddownloadform_"+a+"_"+e+"_"+r),f={type:a,timestamp:e,findex:r},_={action:"updraft_download_backup",nonce_key:"_wpnonce",nonce:c.data("wp_nonce").toString(),timeout:1e4};updraft_send_command("updraft_download_backup",f,function(t){},_),jQuery(d).data("lasttimebegan",(new Date).getTime())}}if(null!=n.m)if(n.p>=100&&"udrestoredlstatus_"==t)jQuery(d+" .raw").html(n.m),jQuery(d).fadeOut("slow",function(){jQuery(this).remove(),updraft_restorer_checkstage2(0)});else if(n.p<100||"uddlstatus_"!=t)jQuery(d+" .raw").html(n.m);else{var g=updraftlion.fileready+" "+updraftlion.actions+': \t\t\t\t<button type="button" onclick="updraftplus_downloadstage2(\''+e+"', '"+a+"', '"+r+"')\">"+updraftlion.downloadtocomputer+'</button> \t\t\t\t<button id="uddownloaddelete_'+e+"_"+a+'" type="button" onclick="updraftplus_deletefromserver(\''+e+"', '"+a+"', '"+r+"')\">"+updraftlion.deletefromserver+"</button>";n.hasOwnProperty("can_show_contents")&&n.can_show_contents&&(g+=' <button type="button" onclick="updraftplus_show_contents(\''+e+"', '"+a+"', '"+r+"')\">"+updraftlion.browse_contents+"</button>"),jQuery(d+" .raw").html(g)}}else null!=n.m?jQuery(d+" .raw").html(n.m):(jQuery(d+" .raw").html(updraftlion.jsonnotunderstood+" ("+o+")"),s=1);return s}function updraft_backupnow_go(t,e,a,r,n,o,u){jQuery("#updraft_backup_started").html("<em>"+updraftlion.requeststart+"</em>").slideDown(""),setTimeout(function(){jQuery("#updraft_backup_started").fadeOut("slow")},75e3);var d={backupnow_nodb:t,backupnow_nofiles:e,backupnow_nocloud:a,backupnow_label:o,extradata:n};""!=r&&(d.onlythisfileentity=r),""!=u&&(d.onlythesetableentities=u),updraft_send_command("backupnow",d,function(t){jQuery("#updraft_backup_started").html(t.m),t.hasOwnProperty("nonce")&&(updraft_backupnow_nonce=t.nonce,console.log("UpdraftPlus: ID of started job: "+updraft_backupnow_nonce)),setTimeout(function(){updraft_activejobs_update(!0)},500)})}var onlythesefileentities=backupnow_whichfiles_checked("");""==onlythesefileentities?jQuery("#backupnow_includefiles_moreoptions").show():jQuery("#backupnow_includefiles_moreoptions").hide();var updraft_restore_stage=1,lastlog_lastmessage="",lastlog_lastdata="",lastlog_jobs="",updraft_activejobs_nextupdate=(new Date).getTime()+1e3,updraft_page_is_visible=1,updraft_console_focussed_tab=1,updraft_settings_form_changed=!1;window.onbeforeunload=function(t){if(updraft_settings_form_changed)return updraftlion.unsavedsettings},"undefined"!=typeof document.hidden&&document.addEventListener("visibilitychange",function(){updraft_check_page_visibility(0)},!1),updraft_check_page_visibility(1);var updraft_poplog_log_nonce,updraft_poplog_log_pointer=0,updraft_poplog_lastscroll=-1,updraft_last_forced_jobid=-1,updraft_last_forced_resumption=-1,updraft_last_forced_when=-1,updraft_backupnow_nonce="",updraft_activejobslist_backupnownonce_only=0,updraft_inpage_hasbegun=0,updraft_historytimer=0,calculated_diskspace=0,updraft_historytimer_notbefore=0,updraft_history_lastchecksum=!1,updraft_interval_week_val=!1,updraft_interval_month_val=!1;"undefined"!=typeof updraft_siteurl&&setInterval(function(){jQuery.get(updraft_siteurl+"/wp-cron.php")},21e4);var lastlog_lastmessage="";jQuery(document).ajaxError(function(t,e,a,r){if(null!=r&&""!=r&&null!=e.responseText&&""!=e.responseText&&(console.log("Error caught by UpdraftPlus ajaxError handler (follows) for "+a.url),console.log(r),0==a.url.search(ajaxurl)))if(a.url.search("subaction=downloadstatus")>=0){var n=a.url.match(/timestamp=\d+/),o=a.url.match(/type=[a-z]+/),u=a.url.match(/findex=\d+/),d=a.url.match(/base=[a-z_]+/);if(u=u instanceof Array?parseInt(u[0].substr(7)):0,o=o instanceof Array?o[0].substr(5):"",d=d instanceof Array?d[0].substr(5):"",n=n instanceof Array?parseInt(n[0].substr(10)):0,""!=d&&""!=o&&n>0){var s=d+n+"_"+o+"_"+u;jQuery("."+s+" .raw").html("<strong>"+updraftlion.error+"</strong> "+updraftlion.servererrorcode)}}else a.url.search("subaction=restore_alldownloaded")>=0&&jQuery("#updraft-restore-modal-stage2a").append("<br><strong>"+updraftlion.error+"</strong> "+updraftlion.servererrorcode+": "+r)}),jQuery(document).ready(function(t){function e(e){t('.expertmode .advanced_settings_container .advanced_tools:not(".'+e+'")').hide(),t(".expertmode .advanced_settings_container .advanced_tools."+e).fadeIn("slow"),t(".expertmode .advanced_settings_container .advanced_tools_button:not(#"+e+")").removeClass("active"),t(".expertmode .advanced_settings_container .advanced_tools_button#"+e).addClass("active")}function a(t){var e=!!jQuery("#updraftcentral_mothership_other").is(":checked");e?(jQuery("#updraftcentral_keycreate_mothership").prop("disabled",!1),t?jQuery("#updraftcentral_keycreate_mothership_firewalled_container").show():(jQuery("#updraftcentral_keycreate_mothership_firewalled_container").slideDown(),jQuery("#updraftcentral_keycreate_mothership").focus())):jQuery("#updraftcentral_keycreate_mothership").prop("disabled",!0)}function r(e,a,n,o){jQuery("#updraft-delete-waitwarning").slideDown();var u=e,d=a,s=n,p=o,i=jQuery("#updraft_delete_timestamp").val().split(","),l=jQuery("#updraft_delete_form").serializeArray(),c={};t.each(l,function(){void 0!==c[this.name]?(c[this.name].push||(c[this.name]=[c[this.name]]),c[this.name].push(this.value||"")):c[this.name]=this.value||""}),c.remote_delete_limit=updraftlion.remote_delete_limit,delete c.action,delete c.subaction,delete c.nonce,updraft_send_command("deleteset",c,function(t){if(t.hasOwnProperty("result")&&null!=t.result)if("error"==t.result)alert(updraftlion.error+" "+t.message);else if("continue"==t.result)u=u+t.backup_local+t.backup_remote,d+=t.backup_local,s+=t.backup_remote,p+=t.backup_sets,jQuery("#updraft-deleted-files-total").text(u+" "+updraftlion.remote_files_deleted),
2
+ r(u,d,s,p);else if("success"==t.result){jQuery("#updraft-deleted-files-total").text(""),jQuery("#updraft-delete-waitwarning").slideUp(),t.hasOwnProperty("count_backups")&&jQuery("#updraft-navtab-backups").html(updraftlion.existing_backups+" ("+t.count_backups+")");for(var e=0;e<i.length;e++){var a=i[e];jQuery("#updraft-navtab-backups-content .updraft_existing_backups_row_"+a).slideUp().remove()}jQuery("#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected").length<1&&jQuery("#ud_massactions").hide(),updraft_history_lastchecksum=!1,jQuery("#updraft-delete-modal").dialog("close"),d+=t.backup_local,s+=t.backup_remote,p+=t.backup_sets,alert(t.set_message+" "+p+"\n"+t.local_message+" "+d+"\n"+t.remote_message+" "+s)}})}function n(t,e){jQuery("#updraft-navtab-settings-content #updraft_include_"+t).is(":checked")?e?jQuery("#updraft-navtab-settings-content #updraft_include_"+t+"_exclude").show():jQuery("#updraft-navtab-settings-content #updraft_include_"+t+"_exclude").slideDown():e?jQuery("#updraft-navtab-settings-content #updraft_include_"+t+"_exclude").hide():jQuery("#updraft-navtab-settings-content #updraft_include_"+t+"_exclude").slideUp()}function o(){var t=new plupload.Uploader(updraft_plupload_config);t.bind("Init",function(t){var e=jQuery("#plupload-upload-ui");t.features.dragdrop?(e.addClass("drag-drop"),jQuery("#drag-drop-area").bind("dragover.wp-uploader",function(){e.addClass("drag-over")}).bind("dragleave.wp-uploader, drop.wp-uploader",function(){e.removeClass("drag-over")})):(e.removeClass("drag-drop"),jQuery("#drag-drop-area").unbind(".wp-uploader"))}),t.init(),t.bind("FilesAdded",function(e,a){plupload.each(a,function(e){if(!/^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-[\-a-z]+([0-9]+?)?(\.(zip|gz|gz\.crypt))?$/i.test(e.name)&&!/^log\.([0-9a-f]{12})\.txt$/.test(e.name)){for(var a=!1,r=0;r<updraft_accept_archivename.length;r++)if(updraft_accept_archivename[r].test(e.name))var a=!0;if(!a)return/\.(zip|tar|tar\.gz|tar\.bz2)$/i.test(e.name)||/\.sql(\.gz)?$/i.test(e.name)?(jQuery("#updraft-message-modal-innards").html("<p><strong>"+e.name+"</strong></p> "+updraftlion.notarchive2),jQuery("#updraft-message-modal").dialog("open")):alert(e.name+": "+updraftlion.notarchive),void t.removeFile(e)}jQuery("#filelist").append('<div class="file" id="'+e.id+'"><b>'+e.name+"</b> (<span>"+plupload.formatSize(0)+"</span>/"+plupload.formatSize(e.size)+') <div class="fileprogress"></div></div>')}),e.refresh(),e.start()}),t.bind("UploadProgress",function(t,e){jQuery("#"+e.id+" .fileprogress").width(e.percent+"%"),jQuery("#"+e.id+" span").html(plupload.formatSize(parseInt(e.size*e.percent/100))),e.size==e.loaded&&(jQuery("#"+e.id).html('<div class="file" id="'+e.id+'"><b>'+e.name+"</b> (<span>"+plupload.formatSize(parseInt(e.size*e.percent/100))+"</span>/"+plupload.formatSize(e.size)+") - "+updraftlion.complete+"</div>"),jQuery("#"+e.id+" .fileprogress").width(e.percent+"%"))}),t.bind("Error",function(t,e){console.log(e);var a;a="-200"==e.code?"\n"+updraftlion.makesure2:updraftlion.makesure;var r=updraftlion.uploaderr+" (code "+e.code+") : "+e.message;e.hasOwnProperty("status")&&e.status&&(r+=" ("+updraftlion.http_code+" "+e.status+")"),e.hasOwnProperty("response")&&(console.log("UpdraftPlus: plupload error: "+e.response),e.response.length<100&&(r+=" "+updraftlion.error+" "+e.response+"\n")),r+=" "+a,alert(r)}),t.bind("FileUploaded",function(t,e,a){if("200"==a.status)try{resp=jQuery.parseJSON(a.response),resp.e?alert(updraftlion.uploaderror+" "+resp.e):resp.dm?(alert(resp.dm),updraft_updatehistory(1,0)):resp.m?updraft_updatehistory(1,0):alert("Unknown server response: "+a.response)}catch(r){console.log(a),alert(updraftlion.jsonnotunderstood)}else alert("Unknown server response status: "+a.code),console.log(a)})}function u(t){params={uri:jQuery("#updraftplus_httpget_uri").val()},params.curl=t,updraft_send_command("httpget",params,function(t){t.e&&alert(t.e),t.r?jQuery("#updraftplus_httpget_results").html("<pre>"+t.r+"</pre>"):console.log(t)},{type:"GET"})}function d(t,e,a){updraft_restore_setoptions(t),jQuery("#updraft_restore_timestamp").val(e),jQuery(".updraft_restore_date").html(a),updraft_restore_stage=1,jQuery("#updraft-migrate-modal").dialog("close"),jQuery("#updraft-restore-modal").dialog("open"),jQuery("#updraft-restore-modal-stage1").show(),jQuery("#updraft-restore-modal-stage2").hide(),jQuery("#updraft-restore-modal-stage2a").html(""),updraft_activejobs_update(!0)}function s(t){t=t.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var e="[\\?&]"+t+"=([^&#]*)",a=new RegExp(e),r=a.exec(window.location.href);return null==r?"":decodeURIComponent(r[1].replace(/\+/g," "))}if(t(".expertmode .advanced_settings_container .advanced_tools_button").click(function(){e(t(this).attr("id"))}),jQuery.ui&&jQuery.ui.dialog&&jQuery.ui.dialog.prototype._allowInteraction){var p=jQuery.ui.dialog.prototype._allowInteraction;jQuery.ui.dialog.prototype._allowInteraction=function(t){return!!jQuery(t.target).closest(".select2-dropdown").length||p.apply(this,arguments)}}t("#updraftcentral_keycreate_altmethod_moreinfo_get").click(function(e){e.preventDefault(),t(this).remove(),t("#updraftcentral_keycreate_altmethod_moreinfo").slideDown()}),t(".updraft_webdav_settings").on("change keyup paste",function(){var e=[],a="";t(".updraft_webdav_settings").each(function(r,n){var o=t(n).attr("id");if(o&&"updraft_webdav_"==o.substring(0,15)){var u=o.substring(15);id_split=u.split("_"),u=id_split[0],a=id_split[1],e[u]=this.value}});var r="",n="@",o="/",u=":",d=":";(e.host.indexOf("@")>=0||""===e.host)&&(n=""),e.host.indexOf("/")>=0?t("#updraft_webdav_host_error").show():t("#updraft_webdav_host_error").hide(),0!=e.path.indexOf("/")&&""!==e.path||(o=""),""!==e.user&&""!==e.pass||(u=""),""!==e.host&&""!==e.port||(d=""),r=e.webdav+e.user+u+e.pass+n+encodeURIComponent(e.host)+d+e.port+o+e.path,t("#updraft_webdav_url_"+a).val(r)}),t("#updraft-navtab-backups-content").on("click",".updraft_existing_backups .updraft_existing_backups_row",function(e){(e.ctrlKey||e.metaKey)&&(t(this).toggleClass("backuprowselected"),t("#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected").length>0?t("#ud_massactions").show():t("#ud_massactions").hide())}),jQuery("#updraft-navtab-settings-content .updraftplusmethod").on("click","button.updraft-test-button",function(){var t=jQuery(this).data("method"),e=jQuery(this).data("instance_id");updraft_remote_storage_test(t,function(e,a,r){return"sftp"==t&&(r.hasOwnProperty("scp")&&r.scp?alert(updraftlion.settings_test_result.replace("%s","SCP")+" "+e.output):alert(updraftlion.settings_test_result.replace("%s","SFTP")+" "+e.output),!0)},e)}),t("#updraft-navtab-settings-content select.updraft_interval, #updraft-navtab-settings-content select.updraft_interval_database").change(function(){updraft_check_same_times()}),t("#backupnow_includefiles_showmoreoptions").click(function(e){e.preventDefault(),t("#backupnow_includefiles_moreoptions").toggle()}),t("#backupnow_database_showmoreoptions").click(function(e){e.preventDefault(),t("#backupnow_database_moreoptions").toggle()}),t("#updraft-navtab-backups-content a.updraft_diskspaceused_update").click(function(t){t.preventDefault(),updraftplus_diskspace()}),t("#updraft-navtab-backups-content a.updraft_uploader_toggle").click(function(e){e.preventDefault(),t("#updraft-plupload-modal").slideToggle()}),t("#updraft-navtab-backups-content a.updraft_rescan_local").click(function(t){t.preventDefault(),updraft_updatehistory(1,0)}),t("#updraft-navtab-backups-content a.updraft_rescan_remote").click(function(t){t.preventDefault(),updraft_updatehistory(1,1)}),jQuery("#updraftcentral_keys").on("change",'input[type="radio"]',function(){a(!1)}),a(!0),jQuery("#updraftcentral_keys").on("click","#updraftcentral_view_log",function(t){t.preventDefault(),jQuery("#updraftcentral_view_log_container").block({message:'<div style="margin: 8px; font-size:150%;"><img src="'+updraftlion.ud_url+'/images/udlogo-rotating.gif" height="80" width="80" style="padding-bottom:10px;"><br>'+updraftlion.fetching+"</div>"});try{updraft_send_command("updraftcentral_get_log",null,function(t){jQuery("#updraftcentral_view_log_container").unblock(),t.hasOwnProperty("log_contents")?jQuery("#updraftcentral_view_log_contents").html('<div style="border:1px solid;padding: 2px;max-height: 400px; overflow-y:scroll;">'+t.log_contents+"</div>"):console.response(resp)})}catch(e){jQuery("#updraft_central_key").html(),console.log(e)}}),jQuery("#updraftcentral_keys").on("click","#updraftcentral_keycreate_go",function(t){t.preventDefault();var e=!!jQuery("#updraftcentral_mothership_other").is(":checked"),a=jQuery("#updraftcentral_keycreate_description").val(),r=jQuery("#updraftcentral_keycreate_keysize").val(),n="__updraftpluscom";if(data={key_description:a,key_size:r},e&&(n=jQuery("#updraftcentral_keycreate_mothership").val(),"http"!=n.substring(0,4)))return void alert(updraftlion.enter_mothership_url);data.mothership_firewalled=jQuery("#updraftcentral_keycreate_mothership_firewalled").is(":checked")?1:0,data.where_send=n,jQuery("#updraftcentral_keys").block({message:'<div style="margin: 8px; font-size:150%;"><img src="'+updraftlion.ud_url+'/images/udlogo-rotating.gif" height="80" width="80" style="padding-bottom:10px;"><br>'+updraftlion.creating_please_allow+"</div>"});try{updraft_send_command("updraftcentral_create_key",data,function(t){jQuery("#updraftcentral_keys").unblock();try{if(resp=jQuery.parseJSON(t),resp.hasOwnProperty("error"))return alert(resp.error),void console.log(resp);alert(resp.r),resp.hasOwnProperty("keys_table")&&jQuery("#updraftcentral_keys_content").html(resp.keys_table),resp.hasOwnProperty("bundle")?jQuery("#updraftcentral_keys_content").append(resp.r+'<br><textarea onclick="this.select();" style="width:620px; height:165px; word-wrap:break-word; border: 1px solid #aaa; border-radius: 3px; padding:4px;">'+resp.bundle+"</textarea>"):console.log(resp)}catch(e){alert(updraftlion.unexpectedresponse+" "+t),console.log(e)}},{json_parse:!1})}catch(o){jQuery("#updraft_central_key").html(),console.log(o)}}),jQuery("#updraftcentral_keys").on("click",".updraftcentral_key_delete",function(t){t.preventDefault();var e=jQuery(this).data("key_id");return"undefined"==typeof e?void console.log("UpdraftPlus: .updraftcentral_key_delete clicked, but no key ID found"):(jQuery("#updraftcentral_keys").block({message:'<div style="margin: 8px; font-size:150%;"><img src="'+updraftlion.ud_url+'/images/udlogo-rotating.gif" height="80" width="80" style="padding-bottom:10px;"><br>'+updraftlion.deleting+"</div>"}),void updraft_send_command("updraftcentral_delete_key",{key_id:e},function(t){jQuery("#updraftcentral_keys").unblock(),t.hasOwnProperty("keys_table")&&jQuery("#updraftcentral_keys_content").html(t.keys_table)}))}),jQuery("#updraft_reset_sid").click(function(t){t.preventDefault(),updraft_send_command("reset_site_id",null,function(t){jQuery("#updraft_show_sid").html(t)},{json_parse:!1})}),jQuery("#updraft-navtab-settings-content form input:not('.udignorechange'), #updraft-navtab-settings-content form select").change(function(t){updraft_settings_form_changed=!0}),jQuery("#updraft-navtab-settings-content form input[type='submit']").click(function(t){updraft_settings_form_changed=!1});var i=180;jQuery(".updraft-bigbutton").each(function(t,e){var a=jQuery(e).width();a>i&&(i=a)}),i>180&&jQuery(".updraft-bigbutton").width(i),setInterval(function(){updraft_activejobs_update(!1)},1250),setTimeout(function(){jQuery("#setting-error-settings_updated").slideUp()},5e3),jQuery(".updraftplusmethod").hide(),jQuery("#updraft_restore_db").change(function(){jQuery("#updraft_restore_db").is(":checked")?jQuery("#updraft_restorer_dboptions").slideDown():jQuery("#updraft_restorer_dboptions").slideUp()}),updraft_check_same_times();var l={};l[updraftlion.close]=function(){jQuery(this).dialog("close")},jQuery("#updraft-message-modal").dialog({autoOpen:!1,height:350,width:520,modal:!0,buttons:l});var c={};c[updraftlion.deletebutton]=function(){r(0,0,0,0)},c[updraftlion.cancel]=function(){jQuery(this).dialog("close")},jQuery("#updraft-delete-modal").dialog({autoOpen:!1,height:262,width:430,modal:!0,buttons:c});var f={};f[updraftlion.restore]=function(){var t=0,e=[],a=0,r=jQuery("#updraft_restore_meta_foreign").val();if(jQuery('input[name="updraft_restore[]"]').each(function(n,o){if(jQuery(o).is(":checked")&&!jQuery(o).is(":disabled")){t=1;var u=jQuery(o).data("howmany"),d=jQuery(o).val();if((1==r||2==r&&"db"!=d)&&("wpcore"!=d&&(u=jQuery("#updraft_restore_form #updraft_restore_wpcore").data("howmany")),d="wpcore"),"wpcore"!=d||0==a){var s=[d,u];e.push(s),"wpcore"==d&&(a=1)}}}),1==t){if(1==updraft_restore_stage){jQuery("#updraft-restore-modal-stage1").slideUp("slow"),jQuery("#updraft-restore-modal-stage2").show(),updraft_restore_stage=2;var n=jQuery(".updraft_restore_date").first().text(),o=e,u=jQuery("#updraft_restore_timestamp").val();try{updraft_send_command("whichdownloadsneeded",{downloads:e,timestamp:u},function(t){if(t.hasOwnProperty("downloads")&&(console.log("UpdraftPlus: items which still require downloading follow"),o=t.downloads,console.log(o)),0==o.length)updraft_restorer_checkstage2(0);else for(var e=0;e<o.length;e++)updraft_downloader("udrestoredlstatus_",u,o[e][0],"#ud_downloadstatus2",o[e][1],n,!1)},{alert_on_error:!1})}catch(d){console.log("UpdraftPlus: error (follows) when looking for items needing downloading"),console.log(d),alert(updraftlion.jsonnotunderstood)}}else if(2==updraft_restore_stage)updraft_restorer_checkstage2(1);else if(3==updraft_restore_stage){var s=1;if(jQuery("#updraft_restoreoptions_ui input.required").each(function(t){if(0!=s){var e=jQuery(this).val();if(""==e)alert(updraftlion.pleasefillinrequired),s=0;else if(""!=jQuery(this).attr("pattern")){var a=jQuery(this).attr("pattern"),r=new RegExp(a,"g");r.test(e)||(alert(jQuery(this).data("invalidpattern")),s=0)}}}),!s)return;var p=jQuery("#updraft_restoreoptions_ui select, #updraft_restoreoptions_ui input").serialize();console.log("Restore options: "+p),jQuery("#updraft_restorer_restore_options").val(p),jQuery("#updraft-restore-modal-stage2a").html(updraftlion.restoreproceeding),jQuery("#updraft_restore_form").submit()}}else alert(updraftlion.youdidnotselectany)},f[updraftlion.cancel]=function(){jQuery(this).dialog("close")},jQuery("#updraft-restore-modal").dialog({autoOpen:!1,height:505,width:590,modal:!0,buttons:f}),jQuery("#updraft-iframe-modal").dialog({autoOpen:!1,height:500,width:780,modal:!0}),jQuery("#updraft-backupnow-inpage-modal").dialog({autoOpen:!1,height:345,width:580,modal:!0});var _={};_[updraftlion.backupnow]=function(){var t=jQuery("#backupnow_includedb").is(":checked")?0:1,e=jQuery("#backupnow_includefiles").is(":checked")?0:1,a=jQuery("#backupnow_includecloud").is(":checked")?0:1,r=backupnow_whichtables_checked("");if(""==r&&0==t)return alert(updraftlion.notableschosen),void jQuery("#backupnow_includefiles_moreoptions").show();"boolean"==typeof r&&(r=null);var n=backupnow_whichfiles_checked("");return""==n&&0==e?(alert(updraftlion.nofileschosen),void jQuery("#backupnow_includefiles_moreoptions").show()):t&&e?void alert(updraftlion.excludedeverything):(jQuery(this).dialog("close"),setTimeout(function(){jQuery("#updraft_lastlogmessagerow").fadeOut("slow",function(){jQuery(this).fadeIn("slow")})},1700),void updraft_backupnow_go(t,e,a,n,"",jQuery("#backupnow_label").val(),r))},_[updraftlion.cancel]=function(){jQuery(this).dialog("close")},jQuery("#updraft-backupnow-modal").dialog({autoOpen:!1,height:472,width:610,modal:!0,buttons:_}),jQuery("#updraft-migrate-modal").dialog({autoOpen:!1,height:updraftlion.migratemodalheight,width:updraftlion.migratemodalwidth,modal:!0}),jQuery("#updraft-poplog").dialog({autoOpen:!1,height:600,width:"75%",modal:!0}),jQuery("#updraft-navtab-settings-content .enableexpertmode").click(function(){return jQuery("#updraft-navtab-settings-content .expertmode").fadeIn(),jQuery("#updraft-navtab-settings-content .enableexpertmode").off("click"),!1}),jQuery("#updraft-navtab-settings-content .backupdirrow").on("click","a.updraft_backup_dir_reset",function(){return jQuery("#updraft_dir").val("updraft"),!1}),jQuery("#updraft-navtab-settings-content .updraft_include_entity").click(function(){var t=jQuery(this).data("toggle_exclude_field");t&&n(t,!1)}),jQuery("#updraft-navtab-settings-content .updraft-service").change(function(){var t=jQuery(this).val();jQuery("#updraft-navtab-settings-content .updraftplusmethod").hide(),jQuery("#updraft-navtab-settings-content ."+t).show()}),jQuery("#updraft-navtab-settings-content a.updraft_show_decryption_widget").click(function(t){t.preventDefault(),jQuery("#updraftplus_db_decrypt").val(jQuery("#updraft_encryptionphrase").val()),jQuery("#updraft-manualdecrypt-modal").slideToggle()}),jQuery("#updraftplus-phpinfo").click(function(t){t.preventDefault(),updraft_iframe_modal("phpinfo",updraftlion.phpinfo)}),jQuery("#updraftplus-rawbackuphistory").click(function(t){t.preventDefault(),updraft_iframe_modal("rawbackuphistory",updraftlion.raw)}),jQuery("#updraft-navtab-status").click(function(t){t.preventDefault(),jQuery(this).addClass("nav-tab-active"),jQuery("#updraft-navtab-expert-content").hide(),jQuery("#updraft-navtab-settings-content").hide(),jQuery("#updraft-navtab-backups-content").hide(),jQuery("#updraft-navtab-addons-content").hide(),jQuery("#updraft-navtab-status-content").show(),jQuery("#updraft-navtab-expert").removeClass("nav-tab-active"),jQuery("#updraft-navtab-backups").removeClass("nav-tab-active"),jQuery("#updraft-navtab-settings").removeClass("nav-tab-active"),jQuery("#updraft-navtab-addons").removeClass("nav-tab-active"),updraft_page_is_visible=1,updraft_console_focussed_tab=1,updraft_activejobs_update(!0)}),jQuery("#updraft-navtab-expert").click(function(t){t.preventDefault(),jQuery(this).addClass("nav-tab-active"),jQuery("#updraft-navtab-settings-content").hide(),jQuery("#updraft-navtab-status-content").hide(),jQuery("#updraft-navtab-backups-content").hide(),jQuery("#updraft-navtab-addons-content").hide(),jQuery("#updraft-navtab-expert-content").show(),jQuery("#updraft-navtab-status").removeClass("nav-tab-active"),jQuery("#updraft-navtab-backups").removeClass("nav-tab-active"),jQuery("#updraft-navtab-settings").removeClass("nav-tab-active"),jQuery("#updraft-navtab-addons").removeClass("nav-tab-active"),updraft_page_is_visible=1,updraft_console_focussed_tab=4}),jQuery("#updraft-navtab-settings, #updraft-navtab-settings2, #updraft_backupnow_gotosettings").click(function(t){t.preventDefault(),jQuery(this).parents(".updraftmessage").remove(),jQuery("#updraft-backupnow-modal").dialog("close"),jQuery("#updraft-navtab-status-content").hide(),jQuery("#updraft-navtab-backups-content").hide(),jQuery("#updraft-navtab-expert-content").hide(),jQuery("#updraft-navtab-addons-content").hide(),jQuery("#updraft-navtab-settings-content").show(),jQuery("#updraft-navtab-settings").addClass("nav-tab-active"),jQuery("#updraft-navtab-expert").removeClass("nav-tab-active"),jQuery("#updraft-navtab-backups").removeClass("nav-tab-active"),jQuery("#updraft-navtab-status").removeClass("nav-tab-active"),jQuery("#updraft-navtab-addons").removeClass("nav-tab-active"),updraft_page_is_visible=1,updraft_console_focussed_tab=3}),jQuery("#updraft-navtab-addons").click(function(t){t.preventDefault(),jQuery(this).addClass("b#nav-tab-active"),jQuery("#updraft-navtab-status-content").hide(),jQuery("#updraft-navtab-backups-content").hide(),jQuery("#updraft-navtab-expert-content").hide(),jQuery("#updraft-navtab-settings-content").hide(),jQuery("#updraft-navtab-addons-content").show(),jQuery("#updraft-navtab-addons").addClass("nav-tab-active"),jQuery("#updraft-navtab-expert").removeClass("nav-tab-active"),jQuery("#updraft-navtab-backups").removeClass("nav-tab-active"),jQuery("#updraft-navtab-status").removeClass("nav-tab-active"),jQuery("#updraft-navtab-settings").removeClass("nav-tab-active"),updraft_page_is_visible=1,updraft_console_focussed_tab=5}),jQuery("#updraft-navtab-backups").click(function(t){t.preventDefault(),updraft_openrestorepanel(1)}),updraft_send_command("ping",null,function(t,e){"success"==e&&"pong"!=t&&t.indexOf("pong")>=0&&(jQuery("#updraft-navtab-backups-content .ud-whitespace-warning").show(),console.log("UpdraftPlus: Extra output warning: response (which should be just (string)'pong') follows."),console.log(t))},{json_parse:!1,type:"GET"});try{"undefined"!=typeof updraft_plupload_config&&o()}catch(g){console.log(g)}if(jQuery("#updraftplus_httpget_go").click(function(t){t.preventDefault(),u(0)}),jQuery("#updraftplus_httpget_gocurl").click(function(t){t.preventDefault(),u(1)}),jQuery("#updraftplus_callwpaction_go").click(function(t){t.preventDefault(),params={wpaction:jQuery("#updraftplus_callwpaction").val()},updraft_send_command("call_wordpress_action",params,function(t){t.e?alert(t.e):t.s||(t.r?jQuery("#updraftplus_callwpaction_results").html(t.r):(console.log(t),alert(updraftlion.jsonnotunderstood)))})}),jQuery("#updraft_activejobs_table").on("click",".updraft_jobinfo_delete",function(t){t.preventDefault();var e=jQuery(this).data("jobid");e?updraft_activejobs_delete(e):console.log("UpdraftPlus: A stop job link was clicked, but the Job ID could not be found")}),jQuery("#updraft_activejobs_table, #updraft-navtab-backups-content .updraft_existing_backups, #updraft-backupnow-inpage-modal").on("click",".updraft-log-link",function(t){t.preventDefault();var e=jQuery(this).data("jobid");e?updraft_popuplog(e):console.log("UpdraftPlus: A log link was clicked, but the Job ID could not be found")}),jQuery("#updraft-navtab-backups-content .updraft_existing_backups").on("click","button.choose-components-button",function(t){var e=jQuery(this).data("entities"),a=jQuery(this).data("backup_timestamp"),r=jQuery(this).data("showdata");d(e,a,r)}),"initiate_restore"==s("udaction")){var y=s("entities"),m=s("backup_timestamp"),h=s("showdata");d(y,m,h)}jQuery("#updraft-navtab-backups-content .updraft_existing_backups").on("click",".updraft-delete-link",function(t){t.preventDefault();var e=jQuery(this).data("hasremote").toString(),a=jQuery(this).data("nonce").toString(),r=jQuery(this).data("key").toString();a?updraft_delete(r,a,e):console.log("UpdraftPlus: A delete link was clicked, but the Job ID could not be found")}),jQuery("#updraft-navtab-backups-content .updraft_existing_backups").on("click","button.updraft_download_button",function(t){t.preventDefault();var e="uddlstatus_",a=jQuery(this).data("backup_timestamp"),r=jQuery(this).data("what"),n=".ud_downloadstatus",o=jQuery(this).data("set_contents"),u=jQuery(this).data("prettydate"),d=!0;updraft_downloader(e,a,r,n,o,u,d)}),jQuery("#updraft-navtab-backups-content .updraft_existing_backups").on("dblclick",".updraft_existingbackup_date",function(t){t.preventDefault();var e=jQuery(this).data("rawbackup");null!=e&&""!=e&&updraft_html_modal(e,updraftlion.raw,780,500)})}),jQuery(document).ready(function(t){var e="#updraft-navtab-settings-content ";t(e+"#updraftvault_settings_cell").on("click",".updraftvault_backtostart",function(a){a.preventDefault(),t(e+"#updraftvault_settings_showoptions").slideUp(),t(e+"#updraftvault_settings_connect").slideUp(),t(e+"#updraftvault_settings_connected").slideUp(),t(e+"#updraftvault_settings_default").slideDown()}),t(e+"#updraftvault_settings_connect input").keypress(function(a){if(13==a.which)return t(e+"#updraftvault_connect_go").click(),!1}),t(e+"#updraftvault_settings_cell").on("click","#updraftvault_recountquota",function(a){a.preventDefault(),t(e+"#updraftvault_recountquota").html(updraftlion.counting);try{updraft_send_command("vault_recountquota",null,function(a){t(e+"#updraftvault_recountquota").html(updraftlion.updatequotacount),a.hasOwnProperty("html")&&(t(e+"#updraftvault_settings_connected").html(a.html),a.hasOwnProperty("connected")&&(a.connected?(t(e+"#updraftvault_settings_default").hide(),t(e+"#updraftvault_settings_connected").show()):(t(e+"#updraftvault_settings_connected").hide(),t(e+"#updraftvault_settings_default").show())))})}catch(r){t(e+"#updraftvault_recountquota").html(updraftlion.updatequotacount),console.log(r)}}),t(e+"#updraftvault_settings_cell").on("click","#updraftvault_disconnect",function(a){a.preventDefault(),t(e+"#updraftvault_disconnect").html(updraftlion.disconnecting);try{updraft_send_command("vault_disconnect",{immediate_echo:!0},function(a){t(e+"#updraftvault_disconnect").html(updraftlion.disconnect),a.hasOwnProperty("html")&&(t(e+"#updraftvault_settings_connected").html(a.html).slideUp(),t(e+"#updraftvault_settings_default").slideDown())})}catch(r){t(e+"#updraftvault_disconnect").html(updraftlion.disconnect),console.log(r)}}),t(e+"#updraftvault_connect").click(function(a){a.preventDefault(),t(e+"#updraftvault_settings_default").slideUp(),t(e+"#updraftvault_settings_connect").slideDown()}),t(e+"#updraftvault_showoptions").click(function(a){a.preventDefault(),t(e+"#updraftvault_settings_default").slideUp(),t(e+"#updraftvault_settings_showoptions").slideDown()}),t(e+"#updraftvault_connect_go").click(function(a){return t(e+"#updraftvault_connect_go").html(updraftlion.connecting),updraft_send_command("vault_connect",{email:t("#updraftvault_email").val(),pass:t("#updraftvault_pass").val()},function(a,r,n){t(e+"#updraftvault_connect_go").html(updraftlion.connect),a.hasOwnProperty("e")?(updraft_html_modal('<h4 style="margin-top:0px; padding-top:0px;">'+updraftlion.errornocolon+"</h4><p>"+a.e+"</p>",updraftlion.disconnect,400,250),a.hasOwnProperty("code")&&"no_quota"==a.code&&(t(e+"#updraftvault_settings_connect").slideUp(),t(e+"#updraftvault_settings_default").slideDown())):a.hasOwnProperty("connected")&&a.connected&&a.hasOwnProperty("html")?(t(e+"#updraftvault_settings_connect").slideUp(),t(e+"#updraftvault_settings_connected").html(a.html).slideDown()):(console.log(a),alert(updraftlion.unexpectedresponse+" "+n))}),!1})}),jQuery(document).ready(function(t){function e(){var t=new plupload.Uploader(updraft_plupload_config2);t.bind("Init",function(t){var e=jQuery("#plupload-upload-ui2");t.features.dragdrop?(e.addClass("drag-drop"),jQuery("#drag-drop-area2").bind("dragover.wp-uploader",function(){e.addClass("drag-over")}).bind("dragleave.wp-uploader, drop.wp-uploader",function(){e.removeClass("drag-over")})):(e.removeClass("drag-drop"),jQuery("#drag-drop-area2").unbind(".wp-uploader"))}),t.init(),t.bind("FilesAdded",function(e,a){plupload.each(a,function(e){return/^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-db([0-9]+)?\.(gz\.crypt)$/i.test(e.name)?void jQuery("#filelist2").append('<div class="file" id="'+e.id+'"><b>'+e.name+"</b> (<span>"+plupload.formatSize(0)+"</span>/"+plupload.formatSize(e.size)+') <div class="fileprogress"></div></div>'):(alert(e.name+": "+updraftlion.notdba),void t.removeFile(e))}),e.refresh(),e.start()}),t.bind("UploadProgress",function(t,e){jQuery("#"+e.id+" .fileprogress").width(e.percent+"%"),jQuery("#"+e.id+" span").html(plupload.formatSize(parseInt(e.size*e.percent/100)))}),t.bind("Error",function(t,e){"-200"==e.code?err_makesure="\n"+updraftlion.makesure2:err_makesure=updraftlion.makesure,alert(updraftlion.uploaderr+" (code "+e.code+") : "+e.message+" "+err_makesure)}),t.bind("FileUploaded",function(t,e,a){"200"==a.status?"ERROR:"==a.response.substring(0,6)?alert(updraftlion.uploaderror+" "+a.response.substring(6)):"OK:"==a.response.substring(0,3)?(bkey=a.response.substring(3),jQuery("#"+e.id+" .fileprogress").hide(),jQuery("#"+e.id).append(updraftlion.uploaded+' <a href="?page=updraftplus&action=downloadfile&updraftplus_file='+bkey+"&decrypt_key="+encodeURIComponent(jQuery("#updraftplus_db_decrypt").val())+'">'+updraftlion.followlink+"</a> "+updraftlion.thiskey+" "+jQuery("#updraftplus_db_decrypt").val().replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"))):alert(updraftlion.unknownresp+" "+a.response):alert(updraftlion.ukrespstatus+" "+a.code)})}try{"undefined"!=typeof updraft_plupload_config2&&e()}catch(a){console.log(a)}jQuery("#updraft-hidethis").remove(),updraft_remote_storage_tabs_setup()}),jQuery(document).ready(function(t){function e(){var t=r("object"),e=new Date;t=JSON.stringify({version:"1.12.40",epoch_date:e.getTime(),local_date:e.toLocaleString(),network_site_url:updraftlion.network_site_url,data:t});var a=document.body.appendChild(document.createElement("a"));a.setAttribute("download","updraftplus-settings.json"),a.setAttribute("style","display:none;"),a.setAttribute("href","data:text/json;charset=UTF-8,"+encodeURIComponent(t)),a.click()}function a(e){var a=decodeURIComponent(e);a=JSON.parse(a),window.confirm(updraftlion.importing_data_from+" "+a.network_site_url+"\n"+updraftlion.exported_on+" "+a.local_date+"\n"+updraftlion.continue_import)?(a=JSON.stringify(a.data),updraft_send_command("importsettings",{settings:a,updraftplus_version:updraftlion.updraftplus_version},function(e){var a=n(e);!a.hasOwnProperty("saved")||a.saved?(updraft_settings_form_changed=!1,location.replace(updraftlion.updraft_settings_url)):(t.unblockUI(),a.hasOwnProperty("error_message")&&a.error_message&&alert(a.error_message))},{action:"updraft_importsettings",nonce:updraftplus_settings_nonce,json_parse:!1})):t.unblockUI()}function r(e){var a="",e="undefined"==typeof e?"string":e;return"object"==e?a=t("#updraft-navtab-settings-content form input[name!='action'][name!='option_page'][name!='_wpnonce'][name!='_wp_http_referer'], #updraft-navtab-settings-content form textarea, #updraft-navtab-settings-content form select, #updraft-navtab-settings-content form input[type=checkbox]").serializeJSON({checkboxUncheckedValue:"0",useIntKeysAsArrayIndex:!0}):(a=t("#updraft-navtab-settings-content form input[name!='action'], #updraft-navtab-settings-content form textarea, #updraft-navtab-settings-content form select").serialize(),t.each(t("#updraft-navtab-settings-content form input[type=checkbox]").filter(function(e){return 0==t(this).prop("checked")}),function(e,r){var n="0";a+="&"+t(r).attr("name")+"="+n})),a}function n(e){try{var a=jQuery.parseJSON(e),r=(a.messages,a.backup_dir.writable),n=a.backup_dir.message,o=a.backup_dir.button_title}catch(u){return console.log(u),console.log(e),alert(updraftlion.jsonnotunderstood),t.unblockUI(),{}}if(a.hasOwnProperty("changed")){console.log("UpdraftPlus: savesettings: some values were changed after being filtered"),console.log(a.changed);for(prop in a.changed)if("object"==typeof a.changed[prop])for(innerprop in a.changed[prop])t("[name='"+innerprop+"']").is(":checkbox")||t("[name='"+prop+"["+innerprop+"]']").val(a.changed[prop][innerprop]);else t("[name='"+prop+"']").is(":checkbox")||t("[name='"+prop+"']").val(a.changed[prop])}return t("#updraft_writable_mess").html(n),0==r?(t("#updraft-backupnow-button").attr("disabled","disabled"),t("#updraft-backupnow-button").attr("title",o),t(".backupdirrow").css("display","table-row")):(t("#updraft-backupnow-button").removeAttr("disabled"),t("#updraft-backupnow-button").removeAttr("title")),a.hasOwnProperty("updraft_include_more_path")&&t("#backupnow_includefiles_moreoptions").html(a.updraft_include_more_path),a.hasOwnProperty("backup_now_message")&&t("#backupnow_remote_container").html(a.backup_now_message),t(".updraftmessage").remove(),t("#updraft_backup_started").before(a.messages),t("#next-backup-table-inner").html(a.scheduled),a}function o(){var t=!1;if(jQuery("#updraft-authenticate-modal-innards").html(""),jQuery("div[class*=updraft_authenticate_] a.updraft_authlink").each(function(){jQuery("#updraft-authenticate-modal-innards").append('<p><a href="'+jQuery(this).attr("href")+'">'+jQuery(this).html()+"</a></p>"),t=!0}),t){var e={};e[updraftlion.cancel]=function(){jQuery(this).dialog("close")},jQuery("#updraft-authenticate-modal").dialog({autoOpen:!0,modal:!0,resizable:!1,draggable:!1,buttons:e,width:"auto"}).dialog("open")}}var u=new Image;u.src=updraftlion.ud_url+"/images/udlogo-rotating.gif",t("#updraft-navtab-settings-content input.updraft_include_entity").change(function(e){
3
+ var a=t(this).attr("id"),r=t(this).is(":checked"),n="#backupnow_files_"+a;t(n).prop("checked",r)}),t("#updraftplus-settings-save").click(function(e){e.preventDefault(),t.blockUI({message:'<div style="margin: 8px; font-size:150%;"><img src="'+updraftlion.ud_url+'/images/udlogo-rotating.gif" height="80" width="80" style="padding-bottom:10px;"><br>'+updraftlion.saving+"</div>"});var a=r("string");updraft_send_command("savesettings",{settings:a,updraftplus_version:updraftlion.updraftplus_version},function(e){n(e),t("#updraft-wrap .fade").delay(6e3).fadeOut(2e3),t("html, body").animate({scrollTop:t("#updraft-wrap").offset().top},1e3,function(){o()}),t.unblockUI()},{action:"updraft_savesettings",nonce:updraftplus_settings_nonce,json_parse:!1})}),t("#updraftplus-settings-export").click(function(){updraft_settings_form_changed&&alert(updraftlion.unsaved_settings_export),e()}),t("#updraftplus-settings-import").click(function(){t.blockUI({message:'<div style="margin: 8px; font-size:150%;"><img src="'+updraftlion.ud_url+'/images/udlogo-rotating.gif" height="80" width="80" style="padding-bottom:10px;"><br>'+updraftlion.importing+"</div>"});var e=document.getElementById("import_settings");if(0==e.files.length)return alert(updraftlion.import_select_file),void t.unblockUI();var r=e.files[0],n=new FileReader;n.onload=function(){a(this.result)},n.readAsText(r)})});
includes/updraftplus-notices.php CHANGED
@@ -206,9 +206,9 @@ class UpdraftPlus_Notices extends Updraft_Notices {
206
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
207
  'button_meta' => 'updraftplus',
208
  'dismiss_time' => 'dismiss_season',
209
- 'discount_code' => 'blackfridaysale2016',
210
- 'valid_from' => '2016-11-23 00:00:00',
211
- 'valid_to' => '2016-11-30 23:59:59',
212
  'supported_positions' => $this->dashboard_top_or_report,
213
  ),
214
  'christmas' => array(
@@ -219,9 +219,9 @@ class UpdraftPlus_Notices extends Updraft_Notices {
219
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
220
  'button_meta' => 'updraftplus',
221
  'dismiss_time' => 'dismiss_season',
222
- 'discount_code' => 'christmassale2016',
223
- 'valid_from' => '2016-12-01 00:00:00',
224
- 'valid_to' => '2016-12-25 23:59:59',
225
  'supported_positions' => $this->dashboard_top_or_report,
226
  ),
227
  'newyear' => array(
@@ -232,9 +232,9 @@ class UpdraftPlus_Notices extends Updraft_Notices {
232
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
233
  'button_meta' => 'updraftplus',
234
  'dismiss_time' => 'dismiss_season',
235
- 'discount_code' => 'newyearsale2017',
236
- 'valid_from' => '2016-12-26 00:00:00',
237
- 'valid_to' => '2017-01-01 23:59:59',
238
  'supported_positions' => $this->dashboard_top_or_report,
239
  ),
240
  'spring' => array(
@@ -245,9 +245,9 @@ class UpdraftPlus_Notices extends Updraft_Notices {
245
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
246
  'button_meta' => 'updraftplus',
247
  'dismiss_time' => 'dismiss_season',
248
- 'discount_code' => 'springsale2017',
249
- 'valid_from' => '2017-04-01 00:00:00',
250
- 'valid_to' => '2017-04-30 23:59:59',
251
  'supported_positions' => $this->dashboard_top_or_report,
252
  ),
253
  'summer' => array(
@@ -258,22 +258,11 @@ class UpdraftPlus_Notices extends Updraft_Notices {
258
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
259
  'button_meta' => 'updraftplus',
260
  'dismiss_time' => 'dismiss_season',
261
- 'discount_code' => 'summersale2017',
262
- 'valid_from' => '2017-07-01 00:00:00',
263
- 'valid_to' => '2017-07-31 23:59:59',
264
  'supported_positions' => $this->dashboard_top_or_report,
265
- ),
266
- 'clef' => array(
267
- 'prefix' => '',
268
- 'title' => 'Clef Two Factor Authentication is shutting down',
269
- 'text' => $this->url_start(true,'blog.getclef.com/discontinuing-support-for-clef-6c89febef5f3') . __("Clef confirms that they are closing down their two factor security plugin.",'updraftplus') . $this->url_end(true,'blog.getclef.com/discontinuing-support-for-clef-6c89febef5f3') . ' ' . __("Switch to UpdraftPlus's alternative:", "updraftplus").' <a href="'.wp_nonce_url(self_admin_url('update.php?action=install-plugin&amp;updraftplus_noautobackup=1&amp;plugin=keyy'), 'install-plugin_keyy').'">'.__("install","updraftplus") .'</a> '. __("or", "updraftplus") . ' ' .$this->url_start(true,'wordpress.org/plugins/keyy/') . __("get more info",'updraftplus') . $this->url_end(true,'wordpress.org/plugins/keyy/') . '.',
270
- 'image' => 'notices/updraft_logo.png',
271
- 'dismiss_time' => 'dismiss_notice',
272
- 'supported_positions' => $this->anywhere,
273
- 'validity_function' => 'clef_2fa_installed',
274
- 'valid_from' => '2017-06-01 00:00:00',
275
- 'valid_to' => '2017-07-07 23:59:59',
276
- ),
277
  );
278
 
279
  return array_merge($parent_notice_content, $child_notice_content);
@@ -286,8 +275,10 @@ class UpdraftPlus_Notices extends Updraft_Notices {
286
  //parent::notices_init();
287
  $this->notices_content = (defined('UPDRAFTPLUS_NOADS_B') && UPDRAFTPLUS_NOADS_B) ? array() : $this->populate_notices_content();
288
  global $updraftplus;
289
- $our_version = @constant('SCRIPT_DEBUG') ? $updraftplus->version.'.'.time() : $updraftplus->version;
290
- wp_enqueue_style('updraftplus-notices-css', UPDRAFTPLUS_URL.'/css/updraftplus-notices.css', array(), $our_version);
 
 
291
  }
292
 
293
  protected function translation_needed($plugin_base_dir = null, $product_name = null) {
206
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
207
  'button_meta' => 'updraftplus',
208
  'dismiss_time' => 'dismiss_season',
209
+ 'discount_code' => 'blackfridaysale2017',
210
+ 'valid_from' => '2017-11-20 00:00:00',
211
+ 'valid_to' => '2017-11-30 23:59:59',
212
  'supported_positions' => $this->dashboard_top_or_report,
213
  ),
214
  'christmas' => array(
219
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
220
  'button_meta' => 'updraftplus',
221
  'dismiss_time' => 'dismiss_season',
222
+ 'discount_code' => 'christmassale2017',
223
+ 'valid_from' => '2017-12-01 00:00:00',
224
+ 'valid_to' => '2017-12-25 23:59:59',
225
  'supported_positions' => $this->dashboard_top_or_report,
226
  ),
227
  'newyear' => array(
232
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
233
  'button_meta' => 'updraftplus',
234
  'dismiss_time' => 'dismiss_season',
235
+ 'discount_code' => 'newyearsale2018',
236
+ 'valid_from' => '2017-12-26 00:00:00',
237
+ 'valid_to' => '2018-01-14 23:59:59',
238
  'supported_positions' => $this->dashboard_top_or_report,
239
  ),
240
  'spring' => array(
245
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
246
  'button_meta' => 'updraftplus',
247
  'dismiss_time' => 'dismiss_season',
248
+ 'discount_code' => 'springsale2018',
249
+ 'valid_from' => '2018-04-01 00:00:00',
250
+ 'valid_to' => '2018-04-30 23:59:59',
251
  'supported_positions' => $this->dashboard_top_or_report,
252
  ),
253
  'summer' => array(
258
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
259
  'button_meta' => 'updraftplus',
260
  'dismiss_time' => 'dismiss_season',
261
+ 'discount_code' => 'summersale2018',
262
+ 'valid_from' => '2018-07-01 00:00:00',
263
+ 'valid_to' => '2018-07-31 23:59:59',
264
  'supported_positions' => $this->dashboard_top_or_report,
265
+ )
 
 
 
 
 
 
 
 
 
 
 
266
  );
267
 
268
  return array_merge($parent_notice_content, $child_notice_content);
275
  //parent::notices_init();
276
  $this->notices_content = (defined('UPDRAFTPLUS_NOADS_B') && UPDRAFTPLUS_NOADS_B) ? array() : $this->populate_notices_content();
277
  global $updraftplus;
278
+ $enqueue_version = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? $updraftplus->version.'.'.time() : $updraftplus->version;
279
+ $min_or_not = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? '' : '.min';
280
+
281
+ wp_enqueue_style('updraftplus-notices-css', UPDRAFTPLUS_URL.'/css/updraftplus-notices'.$min_or_not.'.css', array(), $enqueue_version);
282
  }
283
 
284
  protected function translation_needed($plugin_base_dir = null, $product_name = null) {
languages/updraftplus-af.po CHANGED
@@ -11,6501 +11,6476 @@ msgstr ""
11
  "Language: af_ZA\n"
12
  "Project-Id-Version: UpdraftPlus\n"
13
 
14
- #: templates/wp-admin/settings/existing-backups-table.php:69
15
- msgid "Stored at: %s"
16
  msgstr ""
17
 
18
- #: methods/cloudfiles.php:500
19
- msgid "Cloud Files"
20
  msgstr ""
21
 
22
- #: admin.php:4114
23
- msgid "Your settings failed to save. Please refresh the settings page and try again"
24
  msgstr ""
25
 
26
- #: admin.php:4073
27
- msgid "UpdraftPlus seems to have been updated to version (%s) different to the version running when this settings page was loaded. Please reload the settings page before trying to save settings."
28
  msgstr ""
29
 
30
- #: methods/updraftvault.php:62
31
- msgid "UpdraftVault"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  msgstr ""
33
 
34
- #: includes/updraftplus-notices.php:260
35
- msgid "get more info"
36
  msgstr ""
37
 
38
- #: includes/updraftplus-notices.php:260
39
- msgid "install"
40
  msgstr ""
41
 
42
- #: includes/updraftplus-notices.php:260
43
- msgid "Switch to UpdraftPlus's free alternative:"
44
  msgstr ""
45
 
46
- #: includes/updraftplus-notices.php:260
47
- msgid "Clef confirms that they are closing down their two factor security plugin."
48
  msgstr ""
49
 
50
- #: includes/class-wpadmin-commands.php:467
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  msgid "archive"
52
  msgstr ""
53
 
54
- #: includes/class-wpadmin-commands.php:458
55
  msgid "Extra database"
56
  msgstr ""
57
 
58
- #: admin.php:3372
59
  msgid "Press here to download or browse"
60
  msgstr ""
61
 
62
- #: admin.php:1059 admin.php:1069
63
  msgid "Error: invalid path"
64
  msgstr ""
65
 
66
- #: admin.php:917
67
  msgid "An error occurred when fetching storage module options: "
68
  msgstr ""
69
 
70
- #: admin.php:745
71
  msgid "Loading log file"
72
  msgstr ""
73
 
74
- #: admin.php:744
75
  msgid "Unable to download file. This could be caused by a timeout. It would be best to download the zip to your computer."
76
  msgstr ""
77
 
78
- #: admin.php:743
79
  msgid "Search"
80
  msgstr ""
81
 
82
- #: admin.php:742
83
  msgid "Select a file to view information about it"
84
  msgstr ""
85
 
86
- #: admin.php:741
87
  msgid "Browsing zip file"
88
  msgstr ""
89
 
90
- #: admin.php:711
91
  msgid "With UpdraftPlus Premium, you can directly download individual files from here."
92
  msgstr ""
93
 
94
- #: admin.php:659
95
  msgid "Browse contents"
96
  msgstr ""
97
 
98
- #: restorer.php:1629
99
  msgid "Skipped tables:"
100
  msgstr ""
101
 
102
- #: class-updraftplus.php:4327
103
  msgid "This database backup has the following WordPress tables excluded: %s"
104
  msgstr ""
105
 
106
- #: admin.php:2368
107
  msgid "With UpdraftPlus Premium, you can choose to backup non-WordPress tables, backup only specified tables, and backup other databases too."
108
  msgstr ""
109
 
110
- #: admin.php:2368
111
  msgid "All WordPress tables will be backed up."
112
  msgstr ""
113
 
114
- #: admin.php:740
115
  msgid "Further information may be found in the browser JavaScript console, and the server PHP error logs."
116
  msgstr ""
117
 
118
- #: admin.php:740
119
  msgid "That you are attempting to upload a zip file previously created by UpdraftPlus."
120
  msgstr ""
121
 
122
- #: admin.php:740
123
  msgid "The available memory on the server."
124
  msgstr ""
125
 
126
- #: admin.php:740
127
  msgid "Any settings in your .htaccess or web.config file that affects the maximum upload or post size."
128
  msgstr ""
129
 
130
- #: admin.php:740
131
  msgid "The file failed to upload. Please check the following:"
132
  msgstr ""
133
 
134
- #: admin.php:739
135
  msgid "HTTP code:"
136
  msgstr ""
137
 
138
- #: admin.php:636
139
  msgid "You have chosen to backup a database, but no tables have been selected"
140
  msgstr ""
141
 
142
- #: addons/moredatabase.php:575
143
  msgid "tables"
144
  msgstr ""
145
 
146
- #: addons/moredatabase.php:574
147
  msgid "WordPress database"
148
  msgstr ""
149
 
150
- #: addons/moredatabase.php:567
151
  msgid "You should backup all tables unless you are an expert in the internals of the WordPress database."
152
  msgstr ""
153
 
154
- #: templates/wp-admin/settings/tab-addons.php:300
155
  msgid "Everyone can use the free version; but UpdraftGold bundles an enhanced paid version."
156
  msgstr ""
157
 
158
- #: templates/wp-admin/settings/tab-addons.php:298
159
  msgid "UpdraftCentral Cloud or Premium"
160
  msgstr ""
161
 
162
- #: templates/wp-admin/settings/tab-addons.php:281
163
- #: templates/wp-admin/settings/tab-addons.php:301
164
  msgid "Find out more"
165
  msgstr ""
166
 
167
- #: templates/wp-admin/settings/tab-addons.php:280
168
  msgid "UpdraftPlus has its own embedded storage option, providing a zero-hassle way to download, store and manage all your backups from one place."
169
  msgstr ""
170
 
171
- #: templates/wp-admin/settings/tab-addons.php:272
 
172
  msgid "UpdraftPlus Gold"
173
  msgstr ""
174
 
175
- #: templates/wp-admin/settings/tab-addons.php:266
176
  msgid "UpdraftPlus Free"
177
  msgstr ""
178
 
179
- #: templates/wp-admin/settings/tab-addons.php:263
180
  msgid "Other products bundled with UpdraftPlus Premium or Gold"
181
  msgstr ""
182
 
183
- #: templates/wp-admin/settings/tab-addons.php:249
184
  msgid "Lock access to UpdraftPlus via a password so you choose which admin users can access backups."
185
  msgstr ""
186
 
187
- #: templates/wp-admin/settings/tab-addons.php:233
188
  msgid "Some backup plugins can’t restore a backup, so Premium allows you to restore backups from other plugins."
189
  msgstr ""
190
 
191
- #: templates/wp-admin/settings/tab-addons.php:232
 
192
  msgid "Importer"
193
  msgstr ""
194
 
195
- #: templates/wp-admin/settings/tab-addons.php:217
196
  msgid "Tidy things up for clients and remove all adverts for our other products."
197
  msgstr ""
198
 
199
- #: templates/wp-admin/settings/tab-addons.php:216
 
200
  msgid "No ads"
201
  msgstr ""
202
 
203
- #: templates/wp-admin/settings/tab-addons.php:201
204
  msgid "Sophisticated reporting and emailing capabilities."
205
  msgstr ""
206
 
207
- #: templates/wp-admin/settings/tab-addons.php:185
208
  msgid "Encrypt your sensitive databases (e.g. customer information or passwords); Backup external databases too."
209
  msgstr ""
210
 
211
- #: templates/wp-admin/settings/tab-addons.php:184
 
212
  msgid "More database options"
213
  msgstr ""
214
 
215
- #: templates/wp-admin/settings/tab-addons.php:169
216
  msgid "Set exact times to create or delete backups."
217
  msgstr ""
218
 
219
- #: templates/wp-admin/settings/tab-addons.php:168
 
220
  msgid "Backup time and scheduling"
221
  msgstr ""
222
 
223
- #: templates/wp-admin/settings/tab-addons.php:153
224
  msgid "Backup WordPress multisites (i.e, networks), securely."
225
  msgstr ""
226
 
227
- #: templates/wp-admin/settings/tab-addons.php:152
228
  msgid "Network / multisite"
229
  msgstr ""
230
 
231
- #: templates/wp-admin/settings/tab-addons.php:137
232
  msgid "Backup WordPress core and non-WP files and databases."
233
  msgstr ""
234
 
235
- #: templates/wp-admin/settings/tab-addons.php:121
236
  msgid "Automatically backs up your website before any updates to plugins, themes and WordPress core."
237
  msgstr ""
238
 
239
- #: templates/wp-admin/settings/tab-addons.php:120
 
240
  msgid "Pre-update backups"
241
  msgstr ""
242
 
243
- #: templates/wp-admin/settings/tab-addons.php:105
244
  msgid "Provides expert help and support from the developers whenever you need it."
245
  msgstr ""
246
 
247
- #: templates/wp-admin/settings/tab-addons.php:104
248
  msgid "Fast, personal support"
249
  msgstr ""
250
 
251
- #: templates/wp-admin/settings/tab-addons.php:89
252
  msgid "UpdraftPlus Migrator clones your WordPress site and moves it to a new domain directly and simply."
253
  msgstr ""
254
 
255
- #: templates/wp-admin/settings/tab-addons.php:88
256
  msgid "Cloning and migration"
257
  msgstr ""
258
 
259
- #: templates/wp-admin/settings/tab-addons.php:73
260
  msgid "Get enhanced versions of the free remote storage options and even more remote storage options like OneDrive, SFTP, Azure, WebDAV and more with UpdraftPlus Premium."
261
  msgstr ""
262
 
263
- #: templates/wp-admin/settings/tab-addons.php:72
264
  msgid "Additional and enhanced remote storage locations"
265
  msgstr ""
266
 
267
- #: templates/wp-admin/settings/tab-addons.php:57
268
  msgid "To avoid server-wide risks, always backup to remote cloud storage. UpdraftPlus free includes Dropbox, Google Drive, Amazon S3, Rackspace and more."
269
  msgstr ""
270
 
271
- #: templates/wp-admin/settings/tab-addons.php:56
272
  msgid "Backup to remote storage locations"
273
  msgstr ""
274
 
275
- #: templates/wp-admin/settings/tab-addons.php:47
276
- #: templates/wp-admin/settings/tab-addons.php:50
277
- #: templates/wp-admin/settings/tab-addons.php:320
278
- #: templates/wp-admin/settings/tab-addons.php:323
279
  msgid "Upgrade now"
280
  msgstr ""
281
 
282
- #: templates/wp-admin/settings/tab-addons.php:44
283
- #: templates/wp-admin/settings/tab-addons.php:317
284
  msgid "Installed"
285
  msgstr ""
286
 
287
- #: templates/wp-admin/settings/tab-addons.php:38
288
  msgid "Gold"
289
  msgstr ""
290
 
291
- #: templates/wp-admin/settings/tab-addons.php:30
292
  msgid "Free"
293
  msgstr ""
294
 
295
- #: templates/wp-admin/settings/tab-addons.php:30
296
- #: templates/wp-admin/settings/tab-addons.php:34
297
- #: templates/wp-admin/settings/tab-addons.php:38
298
  msgid "UpdraftPlus"
299
  msgstr ""
300
 
301
- #: templates/wp-admin/settings/form-contents.php:286
302
  msgid "Recommended: optimize your database with WP-Optimize."
303
  msgstr ""
304
 
305
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:15
306
  msgid "When you've backed up your database, we recommend you install our WP-Optimize plugin to streamline it for better website performance."
307
  msgstr ""
308
 
309
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:15
310
  msgid "WP-Optimize"
311
  msgstr ""
312
 
313
- #: templates/wp-admin/notices/bottom-notice.php:35
314
- #: templates/wp-admin/notices/horizontal-notice.php:46
315
- #: templates/wp-admin/notices/report-plain.php:33
316
- #: templates/wp-admin/notices/report.php:30
317
  msgid "Read more"
318
  msgstr ""
319
 
320
- #: includes/updraftplus-notices.php:182
321
  msgid "After you've backed up your database, we recommend you install our WP-Optimize plugin to streamline it for better website performance."
322
  msgstr ""
323
 
324
- #: addons/morefiles.php:306
325
  msgid "Please choose a file or directory"
326
  msgstr ""
327
 
328
- #: addons/morefiles.php:295
329
  msgid "Confirm"
330
  msgstr ""
331
 
332
- #: addons/morefiles.php:298
333
  msgid "Go up a directory"
334
  msgstr ""
335
 
336
- #: addons/morefiles.php:291
337
  msgid "Add directory..."
338
  msgstr ""
339
 
340
- #: addons/morefiles.php:284 addons/morefiles.php:304
341
  msgid "Edit"
342
  msgstr ""
343
 
344
- #: addons/morefiles.php:267
345
  msgid "If using it, select a path from the directory tree below and then press confirm selection."
346
  msgstr ""
347
 
348
- #: central/modules/comments.php:340
349
- msgid "Spam"
350
- msgstr ""
351
-
352
- #: central/modules/comments.php:339
353
- msgid "Trash"
354
- msgstr ""
355
-
356
- #: central/modules/comments.php:338
357
- msgid "Hold or Unapprove"
358
- msgstr ""
359
-
360
- #: central/modules/comments.php:337
361
- msgid "Approve"
362
- msgstr ""
363
-
364
- #: central/modules/comments.php:332
365
- msgid "Pings"
366
- msgstr ""
367
-
368
- #: central/modules/comments.php:331
369
- msgid "Comments"
370
- msgstr ""
371
-
372
- #: addons/s3-enhanced.php:335
373
  msgid "Europe (Frankfurt)"
374
  msgstr ""
375
 
376
- #: addons/s3-enhanced.php:334
377
  msgid "Europe (London)"
378
  msgstr ""
379
 
380
- #: addons/s3-enhanced.php:333
381
  msgid "Europe (Ireland)"
382
  msgstr ""
383
 
384
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:15
385
  msgid "WP-Optimize (free)"
386
  msgstr ""
387
 
388
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:13
389
  msgid "Explore our Cloud and Premium versions."
390
  msgstr ""
391
 
392
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:13
393
  msgid "Download it for free from WordPress.org"
394
  msgstr ""
395
 
396
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:13
397
  msgid "You can even use it to centrally manage and update all themes, plugins and WordPress core on all your sites without logging into them!"
398
  msgstr ""
399
 
400
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:13
401
  msgid "UpdraftCentral is a powerful remote control plugin for WordPress that allows you to control all your UpdraftPlus installs and backups from one central location."
402
  msgstr ""
403
 
404
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:13
 
405
  msgid "UpdraftCentral"
406
  msgstr ""
407
 
408
- #: templates/wp-admin/notices/horizontal-notice.php:6
409
  msgid "notice image"
410
  msgstr ""
411
 
412
- #: templates/wp-admin/notices/bottom-notice.php:33
413
- #: templates/wp-admin/notices/horizontal-notice.php:44
414
- #: templates/wp-admin/notices/report-plain.php:31
415
- #: templates/wp-admin/notices/report.php:28
416
  msgid "Go there"
417
  msgstr ""
418
 
419
- #: templates/wp-admin/notices/bottom-notice.php:31
420
- #: templates/wp-admin/notices/horizontal-notice.php:42
421
- #: templates/wp-admin/notices/report-plain.php:29
422
- #: templates/wp-admin/notices/report.php:26
423
  msgid "Sign up"
424
  msgstr ""
425
 
426
- #: templates/wp-admin/notices/bottom-notice.php:29
427
- #: templates/wp-admin/notices/horizontal-notice.php:40
428
- #: templates/wp-admin/notices/report-plain.php:27
429
- #: templates/wp-admin/notices/report.php:24
430
  msgid "Get Premium"
431
  msgstr ""
432
 
433
- #: templates/wp-admin/notices/bottom-notice.php:27
434
- #: templates/wp-admin/notices/horizontal-notice.php:38
435
- #: templates/wp-admin/notices/report-plain.php:25
436
- #: templates/wp-admin/notices/report.php:22
437
  msgid "Review UpdraftPlus"
438
  msgstr ""
439
 
440
- #: templates/wp-admin/notices/bottom-notice.php:25
441
- #: templates/wp-admin/notices/horizontal-notice.php:36
442
- #: templates/wp-admin/notices/report-plain.php:23
443
- #: templates/wp-admin/notices/report.php:20
444
  msgid "Get UpdraftCentral"
445
  msgstr ""
446
 
447
- #: templates/wp-admin/advanced/site-info.php:84
448
  msgid "Apache modules"
449
  msgstr ""
450
 
451
- #: includes/updraftplus-notices.php:246
452
  msgid "Summer sale - 20% off UpdraftPlus Premium until July 31st"
453
  msgstr ""
454
 
455
- #: includes/updraftplus-notices.php:233
456
  msgid "Spring sale - 20% off UpdraftPlus Premium until April 31st"
457
  msgstr ""
458
 
459
- #: includes/updraftplus-notices.php:220
460
  msgid "Happy New Year - 20% off UpdraftPlus Premium until January 1st"
461
  msgstr ""
462
 
463
- #: includes/updraftplus-notices.php:207
464
  msgid "Christmas sale - 20% off UpdraftPlus Premium until December 25th"
465
  msgstr ""
466
 
467
- #: includes/updraftplus-notices.php:195 includes/updraftplus-notices.php:208
468
- #: includes/updraftplus-notices.php:221 includes/updraftplus-notices.php:234
469
- #: includes/updraftplus-notices.php:247
 
 
470
  msgid "To benefit, use this discount code:"
471
  msgstr ""
472
 
473
- #: includes/updraftplus-notices.php:194
474
  msgid "Black Friday - 20% off UpdraftPlus Premium until November 30th"
475
  msgstr ""
476
 
477
- #: includes/updraftplus-notices.php:172
478
  msgid "UpdraftPlus Premium can automatically backup your plugins/themes/database before you update, without you needing to remember."
479
  msgstr ""
480
 
481
- #: includes/updraftplus-notices.php:151 includes/updraftplus-notices.php:161
 
482
  msgid "UpdraftPlus Blog - get up-to-date news and offers"
483
  msgstr ""
484
 
485
- #: includes/updraftplus-notices.php:141
486
  msgid "UpdraftPlus Newsletter"
487
  msgstr ""
488
 
489
- #: includes/updraftplus-notices.php:112
490
  msgid "Control all your WordPress installations from one place using UpdraftCentral remote site management!"
491
  msgstr ""
492
 
493
- #: includes/updraftplus-notices.php:111
494
  msgid "Do you use UpdraftPlus on multiple sites?"
495
  msgstr ""
496
 
497
- #: includes/updraftplus-notices.php:92
498
- #: templates/wp-admin/settings/tab-addons.php:300
499
  msgid "UpdraftCentral is a highly efficient way to manage, update and backup multiple websites from one place."
500
  msgstr ""
501
 
502
- #: includes/updraftplus-notices.php:91
503
  msgid "Introducing UpdraftCentral"
504
  msgstr ""
505
 
506
- #: includes/updraftplus-notices.php:82
507
  msgid "Copy your site to another domain directly. Includes find-and-replace tool for database references."
508
  msgstr ""
509
 
510
- #: includes/updraftplus-notices.php:81
511
  msgid "easily migrate or clone your site in minutes"
512
  msgstr ""
513
 
514
- #: includes/updraftplus-notices.php:72
515
  msgid "Add SFTP to send your data securely, lock settings and encrypt your database backups for extra security."
516
  msgstr ""
517
 
518
- #: includes/updraftplus-notices.php:71
519
  msgid "secure your backups"
520
  msgstr ""
521
 
522
- #: includes/updraftplus-notices.php:62
523
  msgid "Secure multisite installation, advanced reporting and much more."
524
  msgstr ""
525
 
526
- #: includes/updraftplus-notices.php:61
527
  msgid "advanced options"
528
  msgstr ""
529
 
530
- #: includes/updraftplus-notices.php:52
531
  msgid "Enhanced storage options for Dropbox, Google Drive and S3. Plus many more options."
532
  msgstr ""
533
 
534
- #: includes/updraftplus-notices.php:51
535
  msgid "enhanced remote storage options"
536
  msgstr ""
537
 
538
- #: includes/updraftplus-notices.php:42
539
  msgid "The ultimately secure and convenient place to store your backups."
540
  msgstr ""
541
 
542
- #: includes/updraftplus-notices.php:41
543
- #: templates/wp-admin/settings/tab-addons.php:278
544
  msgid "UpdraftVault storage"
545
  msgstr ""
546
 
547
- #: includes/updraftplus-notices.php:32
548
  msgid "Enjoy professional, fast, and friendly help whenever you need it."
549
  msgstr ""
550
 
551
- #: includes/updraftplus-notices.php:31
552
  msgid "support"
553
  msgstr ""
554
 
555
- #: includes/updraftplus-notices.php:30 includes/updraftplus-notices.php:40
556
- #: includes/updraftplus-notices.php:50 includes/updraftplus-notices.php:60
557
- #: includes/updraftplus-notices.php:70 includes/updraftplus-notices.php:80
 
 
 
558
  msgid "UpdraftPlus Premium:"
559
  msgstr ""
560
 
561
- #: templates/wp-admin/settings/tab-status.php:71
562
  msgid "Then, try out our \"Migrator\" add-on which can perform a direct site-to-site migration. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand."
563
  msgstr ""
564
 
565
- #: addons/s3-enhanced.php:332
566
  msgid "Canada Central"
567
  msgstr ""
568
 
569
- #: templates/wp-admin/advanced/tools-menu.php:22
570
  msgid "Site size"
571
  msgstr ""
572
 
573
- #: templates/wp-admin/advanced/tools-menu.php:10
574
- #: templates/wp-admin/settings/tab-addons.php:248
 
575
  msgid "Lock settings"
576
  msgstr ""
577
 
578
- #: templates/wp-admin/advanced/site-info.php:5
579
- #: templates/wp-admin/advanced/tools-menu.php:6
580
  msgid "Site information"
581
  msgstr ""
582
 
583
- #: templates/wp-admin/advanced/search-replace.php:9
584
  msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium."
585
  msgstr ""
586
 
587
- #: templates/wp-admin/advanced/export-settings.php:15
588
  msgid "Import settings"
589
  msgstr ""
590
 
591
- #: templates/wp-admin/advanced/export-settings.php:12
592
  msgid "You can also import previously-exported settings. This tool will replace all your saved settings."
593
  msgstr ""
594
 
595
- #: templates/wp-admin/advanced/export-settings.php:9
596
  msgid "Export settings"
597
  msgstr ""
598
 
599
- #: templates/wp-admin/advanced/export-settings.php:7
600
  msgid "including any passwords"
601
  msgstr ""
602
 
603
- #: templates/wp-admin/advanced/export-settings.php:7
604
  msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab."
605
  msgstr ""
606
 
607
- #: templates/wp-admin/advanced/export-settings.php:5
608
- #: templates/wp-admin/advanced/tools-menu.php:26
609
  msgid "Export / import settings"
610
  msgstr ""
611
 
612
- #: restorer.php:1995
613
- msgid "Skipping site %s: this table (%s) and others from the site will not be restored"
614
- msgstr ""
615
-
616
- #: restorer.php:1814
617
  msgid "Processing table (%s)"
618
  msgstr ""
619
 
620
- #: restorer.php:1595
621
  msgid "Backup of: %s"
622
  msgstr ""
623
 
624
- #: methods/googledrive.php:196
625
  msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus."
626
  msgstr ""
627
 
628
- #: methods/dropbox.php:571
629
  msgid "%s de-authentication"
630
  msgstr ""
631
 
632
- #: methods/dropbox.php:536
633
  msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked"
634
  msgstr ""
635
 
636
- #: methods/dropbox.php:510
637
  msgid "Follow this link to deauthenticate with %s."
638
  msgstr ""
639
 
640
- #: central/bootstrap.php:542
641
  msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard."
642
  msgstr ""
643
 
644
- #: backup.php:1507
645
  msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources."
646
  msgstr ""
647
 
648
- #: templates/wp-admin/settings/tab-status.php:82
649
  msgid "You have selected a remote storage option which has an authorization step to complete:"
650
  msgstr ""
651
 
652
- #: admin.php:1488
653
  msgid "Remote files deleted:"
654
  msgstr ""
655
 
656
- #: admin.php:1487
657
  msgid "Local files deleted:"
658
  msgstr ""
659
 
660
- #: admin.php:962 admin.php:966 admin.php:974 admin.php:978
661
  msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)."
662
  msgstr ""
663
 
664
- #: admin.php:738
665
  msgid "remote files deleted"
666
  msgstr ""
667
 
668
- #: admin.php:736
669
  msgid "Complete"
670
  msgstr ""
671
 
672
- #: admin.php:735
673
  msgid "Do you want to carry out the import?"
674
  msgstr ""
675
 
676
- #: admin.php:734
677
  msgid "Which was exported on:"
678
  msgstr ""
679
 
680
- #: admin.php:733
681
  msgid "This will import data from:"
682
  msgstr ""
683
 
684
- #: admin.php:732
685
  msgid "Importing..."
686
  msgstr ""
687
 
688
- #: admin.php:729
689
  msgid "You have not yet selected a file to import."
690
  msgstr ""
691
 
692
- #: admin.php:713
693
  msgid "Your export file will be of your displayed settings, not your saved ones."
694
  msgstr ""
695
 
696
- #: admin.php:82
697
  msgid "template not found"
698
  msgstr ""
699
 
700
- #: addons/s3-enhanced.php:328
701
  msgid "US East (Ohio)"
702
  msgstr ""
703
 
704
- #: addons/onedrive.php:962
705
  msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account."
706
  msgstr ""
707
 
708
- #: addons/onedrive.php:637
709
  msgid "Account is not authorized (%s)."
710
  msgstr ""
711
 
712
- #: addons/onedrive.php:598 udaddons/updraftplus-addons.php:732
713
  msgid "Your IP address:"
714
  msgstr ""
715
 
716
- #: addons/onedrive.php:598 udaddons/updraftplus-addons.php:732
717
- #: udaddons/updraftplus-addons.php:747
718
  msgid "To remove any block, please go here."
719
  msgstr ""
720
 
721
- #: addons/onedrive.php:583 udaddons/updraftplus-addons.php:717
722
  msgid "An error response was received; HTTP code:"
723
  msgstr ""
724
 
725
- #: includes/class-commands.php:310
726
  msgid "%s add-on not found"
727
  msgstr ""
728
 
729
- #: templates/wp-admin/settings/delete-and-restore-modals.php:62
730
  msgid "or to restore manually"
731
  msgstr ""
732
 
733
- #: templates/wp-admin/settings/delete-and-restore-modals.php:62
734
  msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time"
735
  msgstr ""
736
 
737
- #: admin.php:2193
738
  msgid "To fix this problem go here."
739
  msgstr ""
740
 
741
- #: admin.php:2193
742
  msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work."
743
  msgstr ""
744
 
745
- #: admin.php:697
746
  msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup."
747
  msgstr ""
748
 
749
- #: addons/webdav.php:115
750
  msgid "Path"
751
  msgstr ""
752
 
753
- #: addons/webdav.php:110
754
  msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)"
755
  msgstr ""
756
 
757
- #: addons/webdav.php:102
758
  msgid "Enter any path in the field below."
759
  msgstr ""
760
 
761
- #: addons/webdav.php:102
762
  msgid "A host name cannot contain a slash."
763
  msgstr ""
764
 
765
- #: addons/webdav.php:77
766
  msgid "Protocol (SSL or not)"
767
  msgstr ""
768
 
769
- #: addons/webdav.php:72
770
  msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider."
771
  msgstr ""
772
 
773
- #: udaddons/updraftplus-addons.php:750
774
  msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com."
775
  msgstr ""
776
 
777
- #: methods/s3.php:1031
778
  msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")"
779
  msgstr ""
780
 
781
- #: methods/s3.php:101
782
  msgid "No settings were found - please go to the Settings tab and check your settings"
783
  msgstr ""
784
 
785
- #: templates/wp-admin/settings/form-contents.php:123
786
  msgid "Backup using %s?"
787
  msgstr ""
788
 
789
- #: addons/s3-enhanced.php:339
790
  msgid "Asia Pacific (Mumbai)"
791
  msgstr ""
792
 
793
- #: addons/s3-enhanced.php:63
794
  msgid "Reduced redundancy"
795
  msgstr ""
796
 
797
- #: addons/s3-enhanced.php:62
798
  msgid "Standard (infrequent access)"
799
  msgstr ""
800
 
801
- #: templates/wp-admin/settings/header.php:14
802
  msgid "FAQs"
803
  msgstr ""
804
 
805
- #: udaddons/plugin-updates/plugin-update-checker.php:824
806
- msgid "Unknown update checker status \"%s\""
807
- msgstr ""
808
-
809
- #: udaddons/plugin-updates/plugin-update-checker.php:822
810
- msgid "A new version of this plugin is available."
811
- msgstr ""
812
-
813
- #: udaddons/plugin-updates/plugin-update-checker.php:820
814
- msgid "This plugin is up to date."
815
- msgstr ""
816
-
817
- #: udaddons/plugin-updates/plugin-update-checker.php:776
818
- msgid "Check for updates"
819
- msgstr ""
820
-
821
- #: udaddons/plugin-updates/github-checker.php:119
822
- msgid "There is no changelog available."
823
- msgstr ""
824
-
825
- #: central/bootstrap.php:492
826
- msgid "This is useful if the dashboard webserver cannot be contacted with incoming traffic by this website (for example, this is the case if this website is hosted on the public Internet, but the UpdraftCentral dashboard is on localhost, or on an Intranet, or if this website has an outgoing firewall), or if the dashboard website does not have a SSL certificate."
827
- msgstr ""
828
-
829
- #: central/bootstrap.php:489
830
  msgid "More information..."
831
  msgstr ""
832
 
833
- #: central/bootstrap.php:487
834
  msgid "Use the alternative method for making a connection with the dashboard."
835
  msgstr ""
836
 
837
- #: central/bootstrap.php:470
838
  msgid "Dashboard at"
839
  msgstr ""
840
 
841
- #: central/bootstrap.php:419
842
  msgid "Key size: %d bits"
843
  msgstr ""
844
 
845
- #: central/bootstrap.php:414
846
  msgid "Public key was sent to:"
847
  msgstr ""
848
 
849
- #: backup.php:2079
850
  msgid "Failed to open directory (check the file permissions and ownership): %s"
851
  msgstr ""
852
 
853
- #: backup.php:2057
854
  msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)"
855
  msgstr ""
856
 
857
- #: addons/migrator.php:2208
858
  msgid "Create key"
859
  msgstr ""
860
 
861
- #: addons/migrator.php:2205 central/bootstrap.php:506
862
  msgid "slower, strongest"
863
  msgstr ""
864
 
865
- #: addons/migrator.php:2204 central/bootstrap.php:505
866
  msgid "recommended"
867
  msgstr ""
868
 
869
- #: addons/migrator.php:2204 central/bootstrap.php:505
870
  msgid "%s bytes"
871
  msgstr ""
872
 
873
- #: addons/migrator.php:2203 central/bootstrap.php:504
874
  msgid "faster (possibility for slow PHP installs)"
875
  msgstr ""
876
 
877
- #: addons/migrator.php:2202 central/bootstrap.php:503
878
  msgid "easy to break, fastest"
879
  msgstr ""
880
 
881
- #: addons/migrator.php:2202 addons/migrator.php:2203 addons/migrator.php:2205
882
- #: central/bootstrap.php:503 central/bootstrap.php:504
883
- #: central/bootstrap.php:506
884
  msgid "%s bits"
885
  msgstr ""
886
 
887
- #: addons/migrator.php:2200 central/bootstrap.php:501
888
  msgid "Encryption key size:"
889
  msgstr ""
890
 
891
- #: addons/migrator.php:2198
892
  msgid "Enter your chosen name"
893
  msgstr ""
894
 
895
- #: addons/migrator.php:2197
896
  msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":"
897
  msgstr ""
898
 
899
- #: methods/googledrive.php:407
900
  msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)"
901
  msgstr ""
902
 
903
- #: methods/ftp.php:390
904
  msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again."
905
  msgstr ""
906
 
907
- #: methods/ftp.php:362
908
  msgid "login"
909
  msgstr ""
910
 
911
- #: methods/email.php:79
912
  msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive."
913
  msgstr ""
914
 
915
- #: methods/email.php:30
916
  msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method."
917
  msgstr ""
918
 
919
- #: class-updraftplus.php:1590
920
  msgid "Size: %s MB"
921
  msgstr ""
922
 
923
- #: central/bootstrap.php:479
924
  msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)"
925
  msgstr ""
926
 
927
- #: central/bootstrap.php:474
928
  msgid "i.e. you have an account there"
929
  msgstr ""
930
 
931
- #: templates/wp-admin/settings/form-contents.php:371
932
  msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)."
933
  msgstr ""
934
 
935
- #: templates/wp-admin/settings/tab-status.php:48
936
  msgid "Now"
937
  msgstr ""
938
 
939
- #: class-updraftplus.php:4191 restorer.php:996
940
  msgid "You should enable %s to make any pretty permalinks (e.g. %s) work"
941
  msgstr ""
942
 
943
- #: templates/wp-admin/settings/form-contents.php:112
944
  msgid "(tap on an icon to select or unselect)"
945
  msgstr ""
946
 
947
- #: methods/updraftvault.php:310 methods/updraftvault.php:316
948
- #: methods/updraftvault.php:322
949
  msgid "%s per year"
950
  msgstr ""
951
 
952
- #: methods/updraftvault.php:309 methods/updraftvault.php:315
953
- #: methods/updraftvault.php:321
954
  msgid "or (annual discount)"
955
  msgstr ""
956
 
957
- #: methods/updraftvault.php:246
958
  msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect."
959
  msgstr ""
960
 
961
- #: class-updraftplus.php:451 class-updraftplus.php:496
962
  msgid "The given file was not found, or could not be read."
963
  msgstr ""
964
 
965
- #: central/bootstrap.php:540
966
  msgid "UpdraftCentral (Remote Control)"
967
  msgstr ""
968
 
969
- #: central/bootstrap.php:528
970
  msgid "fetch..."
971
  msgstr ""
972
 
973
- #: central/bootstrap.php:527
974
  msgid "View recent UpdraftCentral log events"
975
  msgstr ""
976
 
977
- #: central/bootstrap.php:482
978
  msgid "URL of mothership"
979
  msgstr ""
980
 
981
- #: central/bootstrap.php:465
982
  msgid "Enter any description"
983
  msgstr ""
984
 
985
- #: central/bootstrap.php:462
986
  msgid "Description"
987
  msgstr ""
988
 
989
- #: central/bootstrap.php:456
990
  msgid "Create new key"
991
  msgstr ""
992
 
993
- #: central/bootstrap.php:424
994
  msgid "Delete..."
995
  msgstr ""
996
 
997
- #: central/bootstrap.php:417
998
  msgid "Created:"
999
  msgstr ""
1000
 
1001
- #: central/bootstrap.php:414
1002
  msgid "Access this site as user:"
1003
  msgstr ""
1004
 
1005
- #: central/bootstrap.php:382
1006
  msgid "No keys have yet been created."
1007
  msgstr ""
1008
 
1009
- #: central/bootstrap.php:436
1010
  msgid "Details"
1011
  msgstr ""
1012
 
1013
- #: central/bootstrap.php:435
1014
  msgid "Key description"
1015
  msgstr ""
1016
 
1017
- #: central/bootstrap.php:310 central/bootstrap.php:321
1018
  msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later."
1019
  msgstr ""
1020
 
1021
- #: central/bootstrap.php:193
1022
  msgid "An invalid URL was entered"
1023
  msgstr ""
1024
 
1025
- #: central/bootstrap.php:80
1026
  msgid "Close..."
1027
  msgstr ""
1028
 
1029
- #: central/bootstrap.php:72
1030
  msgid "This connection appears to already have been made."
1031
  msgstr ""
1032
 
1033
- #: central/bootstrap.php:68
1034
  msgid "You must visit this link in the same browser and login session as you created the key in."
1035
  msgstr ""
1036
 
1037
- #: central/bootstrap.php:61
1038
  msgid "You must visit this URL in the same browser and login session as you created the key in."
1039
  msgstr ""
1040
 
1041
- #: central/bootstrap.php:61
1042
  msgid "You are not logged into this WordPress site in your web browser."
1043
  msgstr ""
1044
 
1045
- #: central/bootstrap.php:55
1046
  msgid "The key referred to was unknown."
1047
  msgstr ""
1048
 
1049
- #: central/bootstrap.php:52
1050
  msgid "A new UpdraftCentral connection has not been made."
1051
  msgstr ""
1052
 
1053
- #: central/bootstrap.php:50
1054
  msgid "An UpdraftCentral connection has been made successfully."
1055
  msgstr ""
1056
 
1057
- #: central/bootstrap.php:47
1058
  msgid "UpdraftCentral Connection"
1059
  msgstr ""
1060
 
1061
- #: backup.php:849 class-updraftplus.php:2846
1062
  msgid "The backup was aborted by the user"
1063
  msgstr ""
1064
 
1065
- #: admin.php:4109
1066
  msgid "Your settings have been saved."
1067
  msgstr ""
1068
 
1069
- #: admin.php:3266
1070
  msgid "Total backup size:"
1071
  msgstr ""
1072
 
1073
- #: admin.php:2690
1074
  msgid "stop"
1075
  msgstr ""
1076
 
1077
- #: admin.php:2528
1078
  msgid "The backup has finished running"
1079
  msgstr ""
1080
 
1081
- #: templates/wp-admin/advanced/tools-menu.php:30
1082
- #: templates/wp-admin/advanced/wipe-settings.php:5
1083
- #: templates/wp-admin/advanced/wipe-settings.php:9
1084
  msgid "Wipe settings"
1085
  msgstr ""
1086
 
1087
- #: templates/wp-admin/advanced/site-info.php:95
1088
  msgid "reset"
1089
  msgstr ""
1090
 
1091
- #: templates/wp-admin/settings/delete-and-restore-modals.php:21
1092
  msgid "these backup sets"
1093
  msgstr ""
1094
 
1095
- #: templates/wp-admin/settings/delete-and-restore-modals.php:18
1096
  msgid "this backup set"
1097
  msgstr ""
1098
 
1099
- #: templates/wp-admin/settings/downloading-and-restoring.php:34
1100
  msgid "calculate"
1101
  msgstr ""
1102
 
1103
- #: admin.php:712
1104
  msgid "You should save your changes to ensure that they are used for making your backup."
1105
  msgstr ""
1106
 
1107
- #: admin.php:705
1108
  msgid "We requested to delete the file, but could not understand the server's response"
1109
  msgstr ""
1110
 
1111
- #: admin.php:704
1112
  msgid "Please enter a valid URL"
1113
  msgstr ""
1114
 
1115
- #: admin.php:687
1116
  msgid "Saving..."
1117
  msgstr ""
1118
 
1119
- #: admin.php:650
1120
  msgid "Error: the server sent us a response which we did not understand."
1121
  msgstr ""
1122
 
1123
- #: admin.php:642
1124
  msgid "Fetching..."
1125
  msgstr ""
1126
 
1127
- #: addons/s3-enhanced.php:336
1128
  msgid "Asia Pacific (Seoul)"
1129
  msgstr ""
1130
 
1131
- #: restorer.php:1618
1132
  msgid "Uploads URL:"
1133
  msgstr ""
1134
 
1135
- #: backup.php:400
1136
  msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)"
1137
  msgstr ""
1138
 
1139
- #: addons/onedrive.php:58
1140
  msgid "The required %s PHP module is not installed - ask your web hosting company to enable it."
1141
  msgstr ""
1142
 
1143
- #: restorer.php:2019
1144
- msgid "Skipping table %s: this table will not be restored"
1145
- msgstr ""
1146
-
1147
- #: class-updraftplus.php:4242 restorer.php:1642
1148
  msgid "To import an ordinary WordPress site into a multisite installation requires %s."
1149
  msgstr ""
1150
 
1151
- #: class-updraftplus.php:4238
1152
  msgid "Please read this link for important information on this process."
1153
  msgstr ""
1154
 
1155
- #: class-updraftplus.php:4238
1156
  msgid "It will be imported as a new site."
1157
  msgstr ""
1158
 
1159
- #: admin.php:2341 templates/wp-admin/notices/horizontal-notice.php:16
1160
- #: templates/wp-admin/notices/horizontal-notice.php:18
1161
  msgid "Dismiss"
1162
  msgstr ""
1163
 
1164
- #: admin.php:724
1165
  msgid "Please fill in the required information."
1166
  msgstr ""
1167
 
1168
- #: addons/multisite.php:550
1169
  msgid "Read more..."
1170
  msgstr ""
1171
 
1172
- #: addons/multisite.php:550
1173
- msgid "N.B. this option only affects the restoration of the database and uploads - other file entities (such as plugins) in WordPress are shared by the whole network."
1174
- msgstr ""
1175
-
1176
- #: addons/multisite.php:541
1177
  msgid "may include some site-wide data"
1178
  msgstr ""
1179
 
1180
- #: addons/multisite.php:536
1181
  msgid "All sites"
1182
  msgstr ""
1183
 
1184
- #: addons/multisite.php:532
1185
  msgid "Which site to restore"
1186
  msgstr ""
1187
 
1188
- #: addons/multisite.php:368 addons/multisite.php:378
1189
- msgid "Restoring only the site with id=%s: removing other data (if any) from the unpacked backup"
1190
- msgstr ""
1191
-
1192
- #: addons/migrator.php:532
1193
- msgid "<strong>ERROR</strong>: problem creating site entry."
1194
- msgstr ""
1195
-
1196
- #: addons/migrator.php:506 addons/migrator.php:507
1197
  msgid "Error when creating new site at your chosen address:"
1198
  msgstr ""
1199
 
1200
- #: addons/migrator.php:448
1201
  msgid "Required information for restoring this backup was not given (%s)"
1202
  msgstr ""
1203
 
1204
- #: addons/migrator.php:407
1205
  msgid "Attribute imported content to user"
1206
  msgstr ""
1207
 
1208
- #: addons/migrator.php:397 addons/migrator.php:399
1209
  msgid "You must use lower-case letters or numbers for the site path, only."
1210
  msgstr ""
1211
 
1212
- #: addons/migrator.php:377
1213
  msgid "This feature is not compatible with %s"
1214
  msgstr ""
1215
 
1216
- #: addons/migrator.php:375 addons/migrator.php:377
1217
  msgid "Importing a single site into a multisite install"
1218
  msgstr ""
1219
 
1220
- #: addons/migrator.php:366
1221
  msgid "other content from wp-content"
1222
  msgstr ""
1223
 
1224
- #: addons/migrator.php:363
1225
  msgid "WordPress core"
1226
  msgstr ""
1227
 
1228
- #: addons/migrator.php:363 addons/migrator.php:366 addons/migrator.php:369
 
1229
  msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network."
1230
  msgstr ""
1231
 
1232
- #: templates/wp-admin/advanced/site-info.php:93
1233
  msgid "Call WordPress action:"
1234
  msgstr ""
1235
 
1236
- #: admin.php:2376
1237
  msgid "Your saved settings also affect what is backed up - e.g. files excluded."
1238
  msgstr ""
1239
 
1240
- #: admin.php:3677
1241
  msgid "Skipping: this archive was already restored."
1242
  msgstr ""
1243
 
1244
- #: templates/wp-admin/settings/form-contents.php:212
1245
  msgid "File Options"
1246
  msgstr ""
1247
 
1248
- #: templates/wp-admin/settings/form-contents.php:102
1249
  msgid "Sending Your Backup To Remote Storage"
1250
  msgstr ""
1251
 
1252
- #: templates/wp-admin/settings/form-contents.php:66
1253
  msgid "Database backup schedule"
1254
  msgstr ""
1255
 
1256
- #: templates/wp-admin/settings/form-contents.php:55
1257
  msgid "Incremental file backup schedule"
1258
  msgstr ""
1259
 
1260
- #: templates/wp-admin/settings/form-contents.php:22
1261
  msgid "Files backup schedule"
1262
  msgstr ""
1263
 
1264
- #: templates/wp-admin/advanced/wipe-settings.php:6
1265
  msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish."
1266
  msgstr ""
1267
 
1268
- #: templates/wp-admin/advanced/wipe-settings.php:6
1269
  msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)."
1270
  msgstr ""
1271
 
1272
- #: admin.php:3986
1273
  msgid "Send this backup to remote storage"
1274
  msgstr ""
1275
 
1276
- #: admin.php:3984
1277
  msgid "Check out UpdraftPlus Vault."
1278
  msgstr ""
1279
 
1280
- #: admin.php:3984
1281
  msgid "Not got any remote storage?"
1282
  msgstr ""
1283
 
1284
- #: admin.php:3984
1285
  msgid "settings"
1286
  msgstr ""
1287
 
1288
- #: admin.php:3984
1289
  msgid "Backup won't be sent to any remote storage - none has been saved in the %s"
1290
  msgstr ""
1291
 
1292
- #: admin.php:2374
1293
  msgid "Include any files in the backup"
1294
  msgstr ""
1295
 
1296
- #: admin.php:2360
1297
  msgid "Include the database in the backup"
1298
  msgstr ""
1299
 
1300
- #: admin.php:2340
1301
  msgid "Continue restoration"
1302
  msgstr ""
1303
 
1304
- #: admin.php:2335
1305
  msgid "You have an unfinished restoration operation, begun %s ago."
1306
  msgstr ""
1307
 
1308
- #: admin.php:2334
1309
  msgid "Unfinished restoration"
1310
  msgstr ""
1311
 
1312
- #: admin.php:2332
1313
  msgid "%s minutes, %s seconds"
1314
  msgstr ""
1315
 
1316
- #: admin.php:2279
1317
  msgid "Backup Contents And Schedule"
1318
  msgstr ""
1319
 
1320
- #: templates/wp-admin/settings/tab-bar.php:9
1321
  msgid "Premium / Extensions"
1322
  msgstr ""
1323
 
1324
- #: admin.php:2059 admin.php:2068
1325
  msgid "Sufficient information about the in-progress restoration operation could not be found."
1326
  msgstr ""
1327
 
1328
- #: addons/morefiles.php:53 admin.php:710
1329
  msgctxt "(verb)"
1330
  msgid "Download"
1331
  msgstr ""
1332
 
1333
- #: admin.php:635
1334
  msgid "You have chosen to backup files, but no file entities have been selected"
1335
  msgstr ""
1336
 
1337
- #: admin.php:542
1338
  msgid "Extensions"
1339
  msgstr ""
1340
 
1341
- #: admin.php:534 templates/wp-admin/settings/tab-bar.php:8
1342
  msgid "Advanced Tools"
1343
  msgstr ""
1344
 
1345
- #: addons/googlecloud.php:926
1346
  msgid "Bucket location"
1347
  msgstr ""
1348
 
1349
- #: addons/googlecloud.php:921
1350
  msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability."
1351
  msgstr ""
1352
 
1353
- #: addons/googlecloud.php:921 addons/googlecloud.php:936
1354
  msgid "This setting applies only when a new bucket is being created."
1355
  msgstr ""
1356
 
1357
- #: addons/googlecloud.php:906
1358
  msgid "You must use a bucket name that is unique, for all %s users."
1359
  msgstr ""
1360
 
1361
- #: addons/googlecloud.php:862
1362
  msgid "Do not confuse %s with %s - they are separate things."
1363
  msgstr ""
1364
 
1365
- #: addons/googlecloud.php:294
1366
  msgid "You do not have access to this bucket"
1367
  msgstr ""
1368
 
1369
- #: addons/googlecloud.php:51
1370
  msgid "Western Europe"
1371
  msgstr ""
1372
 
1373
- #: addons/googlecloud.php:50
1374
  msgid "Eastern Asia-Pacific"
1375
  msgstr ""
1376
 
1377
- #: addons/googlecloud.php:49
1378
  msgid "Western United States"
1379
  msgstr ""
1380
 
1381
- #: addons/googlecloud.php:47 addons/googlecloud.php:48
1382
  msgid "Eastern United States"
1383
  msgstr ""
1384
 
1385
- #: addons/googlecloud.php:45
1386
  msgid " Eastern United States"
1387
  msgstr ""
1388
 
1389
- #: addons/googlecloud.php:44 addons/googlecloud.php:46
1390
  msgid "Central United States"
1391
  msgstr ""
1392
 
1393
- #: addons/googlecloud.php:43
1394
  msgid "European Union"
1395
  msgstr ""
1396
 
1397
- #: addons/googlecloud.php:42
1398
  msgid "Asia Pacific"
1399
  msgstr ""
1400
 
1401
- #: addons/googlecloud.php:41 addons/googlecloud.php:42
1402
- #: addons/googlecloud.php:43
1403
  msgid "multi-region location"
1404
  msgstr ""
1405
 
1406
- #: addons/googlecloud.php:41
1407
  msgid "United States"
1408
  msgstr ""
1409
 
1410
- #: addons/googlecloud.php:37
1411
  msgid "Nearline"
1412
  msgstr ""
1413
 
1414
- #: addons/googlecloud.php:36
1415
  msgid "Durable reduced availability"
1416
  msgstr ""
1417
 
1418
- #: addons/googlecloud.php:35 addons/s3-enhanced.php:61
1419
  msgid "Standard"
1420
  msgstr ""
1421
 
1422
- #: addons/azure.php:553
1423
  msgid "container"
1424
  msgstr ""
1425
 
1426
- #: addons/azure.php:553
1427
  msgid "You can enter the path of any %s virtual folder you wish to use here."
1428
  msgstr ""
1429
 
1430
- #: addons/azure.php:552
1431
  msgid "optional"
1432
  msgstr ""
1433
 
1434
- #: addons/azure.php:552
1435
  msgid "Prefix"
1436
  msgstr ""
1437
 
1438
- #: addons/azure.php:547
1439
  msgid "See Microsoft's guidelines on container naming by following this link."
1440
  msgstr ""
1441
 
1442
- #: addons/azure.php:547
1443
- msgid "If the %s does not already exist, then it will be created."
1444
- msgstr ""
1445
-
1446
- #: addons/azure.php:547
1447
  msgid "Enter the path of the %s you wish to use here."
1448
  msgstr ""
1449
 
1450
- #: addons/azure.php:536
1451
  msgid "This is not your Azure login - see the instructions if needing more guidance."
1452
  msgstr ""
1453
 
1454
- #: addons/azure.php:535
1455
  msgid "Account Name"
1456
  msgstr ""
1457
 
1458
- #: addons/azure.php:535 addons/azure.php:539
1459
  msgid "Azure"
1460
  msgstr ""
1461
 
1462
- #: addons/azure.php:531
1463
  msgid "Create Azure credentials in your Azure developer console."
1464
  msgstr ""
1465
 
1466
- #: addons/azure.php:480
1467
  msgid "Could not create the container"
1468
  msgstr ""
1469
 
1470
- #: addons/azure.php:353
1471
  msgid "Could not access container"
1472
  msgstr ""
1473
 
1474
- #: class-updraftplus.php:2863
1475
  msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set."
1476
  msgstr ""
1477
 
1478
- #: backup.php:1559
1479
  msgid "the options table was not found"
1480
  msgstr ""
1481
 
1482
- #: backup.php:1557
1483
  msgid "no options or sitemeta table was found"
1484
  msgstr ""
1485
 
1486
- #: backup.php:1557 backup.php:1559
1487
  msgid "The database backup appears to have failed"
1488
  msgstr ""
1489
 
1490
- #: backup.php:1431
1491
  msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail."
1492
  msgstr ""
1493
 
1494
- #: templates/wp-admin/advanced/site-info.php:49
1495
  msgid "required for some remote storage providers"
1496
  msgstr ""
1497
 
1498
- #: templates/wp-admin/advanced/site-info.php:49
1499
  msgid "Not installed"
1500
  msgstr ""
1501
 
1502
- #: addons/googlecloud.php:911 addons/s3-enhanced.php:54
1503
  msgid "Storage class"
1504
  msgstr ""
1505
 
1506
- #: addons/googlecloud.php:906
1507
  msgid "See Google's guidelines on bucket naming by following this link."
1508
  msgstr ""
1509
 
1510
- #: addons/googlecloud.php:906
1511
- msgid "Bucket names have to be globally unique. If the bucket does not already exist, then it will be created."
1512
- msgstr ""
1513
-
1514
- #: addons/googlecloud.php:906
1515
  msgid "Enter the name of the %s bucket you wish to use here."
1516
  msgstr ""
1517
 
1518
- #: addons/googlecloud.php:905
1519
  msgid "Bucket"
1520
  msgstr ""
1521
 
1522
- #: addons/googlecloud.php:901
1523
  msgid "Otherwise, you can leave it blank."
1524
  msgstr ""
1525
 
1526
- #: addons/googlecloud.php:901
1527
  msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you."
1528
  msgstr ""
1529
 
1530
- #: addons/googlecloud.php:901
1531
  msgid "Enter the ID of the %s project you wish to use here."
1532
  msgstr ""
1533
 
1534
- #: addons/googlecloud.php:874
1535
  msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section."
1536
  msgstr ""
1537
 
1538
- #: addons/googlecloud.php:779
1539
  msgid "You must enter a project ID in order to be able to create a new bucket."
1540
  msgstr ""
1541
 
1542
- #: addons/googlecloud.php:900
1543
  msgid "Project ID"
1544
  msgstr ""
1545
 
1546
- #: addons/googlecloud.php:645
1547
  msgid "You must save and authenticate before you can test your settings."
1548
  msgstr ""
1549
 
1550
- #: addons/googlecloud.php:510
1551
  msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud."
1552
  msgstr ""
1553
 
1554
- #: addons/googlecloud.php:241 addons/googlecloud.php:314
1555
- #: addons/googlecloud.php:771 addons/googlecloud.php:818
1556
  msgid "You do not have access to this bucket."
1557
  msgstr ""
1558
 
1559
- #: addons/googlecloud.php:241 addons/googlecloud.php:294
1560
- #: addons/googlecloud.php:304 addons/googlecloud.php:314
1561
- #: addons/googlecloud.php:610 addons/googlecloud.php:771
1562
- #: addons/googlecloud.php:818 addons/googlecloud.php:868
1563
- #: addons/googlecloud.php:885 addons/googlecloud.php:893
1564
- #: addons/googlecloud.php:906
1565
  msgid "Google Cloud"
1566
  msgstr ""
1567
 
1568
- #: addons/googlecloud.php:241 addons/googlecloud.php:294
1569
- #: addons/googlecloud.php:314 addons/googlecloud.php:771
1570
- #: addons/googlecloud.php:818
1571
  msgid "%s Service Exception."
1572
  msgstr ""
1573
 
1574
- #: updraftplus.php:147
1575
  msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files."
1576
  msgstr ""
1577
 
1578
- #: restorer.php:778
1579
  msgid "Deferring..."
1580
  msgstr ""
1581
 
1582
- #: templates/wp-admin/settings/form-contents.php:96
1583
  msgid "or to configure more complex schedules"
1584
  msgstr ""
1585
 
1586
- #: templates/wp-admin/settings/delete-and-restore-modals.php:18
1587
- #: templates/wp-admin/settings/delete-and-restore-modals.php:21
1588
  msgid "Are you sure that you wish to remove %s from UpdraftPlus?"
1589
  msgstr ""
1590
 
1591
- #: templates/wp-admin/settings/delete-and-restore-modals.php:7
1592
  msgid "Deselect"
1593
  msgstr ""
1594
 
1595
- #: templates/wp-admin/settings/delete-and-restore-modals.php:6
1596
  msgid "Select all"
1597
  msgstr ""
1598
 
1599
- #: templates/wp-admin/settings/delete-and-restore-modals.php:4
1600
  msgid "Actions upon selected backups"
1601
  msgstr ""
1602
 
1603
- #: templates/wp-admin/settings/downloading-and-restoring.php:40
1604
  msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)."
1605
  msgstr ""
1606
 
1607
- #: admin.php:1486
1608
  msgid "Backup sets removed:"
1609
  msgstr ""
1610
 
1611
- #: admin.php:723
1612
  msgid "Processing..."
1613
  msgstr ""
1614
 
1615
- #: admin.php:721
1616
  msgid "For backups older than"
1617
  msgstr ""
1618
 
1619
- #: admin.php:720
1620
  msgid "week(s)"
1621
  msgstr ""
1622
 
1623
- #: admin.php:719
1624
  msgid "hour(s)"
1625
  msgstr ""
1626
 
1627
- #: admin.php:718
1628
  msgid "day(s)"
1629
  msgstr ""
1630
 
1631
- #: admin.php:717
1632
  msgid "in the month"
1633
  msgstr ""
1634
 
1635
- #: admin.php:716
1636
  msgid "day"
1637
  msgstr ""
1638
 
1639
- #: addons/morestorage.php:26
1640
  msgid "(as many as you like)"
1641
  msgstr ""
1642
 
1643
- #: addons/fixtime.php:281 addons/fixtime.php:286
1644
  msgid "Add an additional retention rule..."
1645
  msgstr ""
1646
 
1647
- #: restorer.php:2116
1648
  msgid "This database needs to be deployed on MySQL version %s or later."
1649
  msgstr ""
1650
 
1651
- #: restorer.php:2116
1652
  msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database."
1653
  msgstr ""
1654
 
1655
- #: methods/updraftvault.php:616
1656
  msgid "You do not currently have any UpdraftPlus Vault quota"
1657
  msgstr ""
1658
 
1659
- #: class-updraftplus.php:4277
1660
  msgid "You must upgrade MySQL to be able to use this database."
1661
  msgstr ""
1662
 
1663
- #: class-updraftplus.php:4277
1664
  msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on."
1665
  msgstr ""
1666
 
1667
- #: admin.php:2178
1668
  msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem."
1669
  msgstr ""
1670
 
1671
- #: methods/updraftvault.php:343
1672
  msgid "Don't know your email address, or forgotten your password?"
1673
  msgstr ""
1674
 
1675
- #: methods/updraftvault.php:336
1676
  msgid "Enter your UpdraftPlus.Com email / password here to connect:"
1677
  msgstr ""
1678
 
1679
- #: methods/updraftvault.php:298 methods/updraftvault.php:328
1680
  msgid "Read the FAQs here."
1681
  msgstr ""
1682
 
1683
- #: addons/s3-enhanced.php:69
1684
  msgid "Check this box to use Amazon's server-side encryption"
1685
  msgstr ""
1686
 
1687
- #: addons/s3-enhanced.php:68
1688
  msgid "Server-side encryption"
1689
  msgstr ""
1690
 
1691
- #: methods/updraftvault.php:625
1692
  msgid "If you have forgotten your password, then go here to change your password on updraftplus.com."
1693
  msgstr ""
1694
 
1695
- #: admin.php:970
1696
  msgid "Go to the remote storage settings in order to connect."
1697
  msgstr ""
1698
 
1699
- #: admin.php:970
1700
  msgid "%s has been chosen for remote storage, but you are not currently connected."
1701
  msgstr ""
1702
 
1703
- #: methods/updraftvault.php:325
1704
  msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal."
1705
  msgstr ""
1706
 
1707
- #: admin.php:693
1708
  msgid "Update quota count"
1709
  msgstr ""
1710
 
1711
- #: admin.php:692
1712
  msgid "Counting..."
1713
  msgstr ""
1714
 
1715
- #: admin.php:691
1716
  msgid "Disconnecting..."
1717
  msgstr ""
1718
 
1719
- #: admin.php:689
1720
  msgid "Connecting..."
1721
  msgstr ""
1722
 
1723
- #: methods/updraftvault.php:399 methods/updraftvault.php:468
1724
  msgid "Refresh current status"
1725
  msgstr ""
1726
 
1727
- #: methods/updraftvault.php:397 methods/updraftvault.php:413
1728
- #: methods/updraftvault.php:415 methods/updraftvault.php:468
1729
  msgid "Get more quota"
1730
  msgstr ""
1731
 
1732
- #: methods/updraftvault.php:394 methods/updraftvault.php:410
1733
- #: methods/updraftvault.php:449
1734
  msgid "Current use:"
1735
  msgstr ""
1736
 
1737
- #: methods/updraftvault.php:389
1738
  msgid "You can get more quota here"
1739
  msgstr ""
1740
 
1741
- #: methods/updraftvault.php:389
1742
  msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)."
1743
  msgstr ""
1744
 
1745
- #: admin.php:690 methods/updraftvault.php:381
1746
  msgid "Disconnect"
1747
  msgstr ""
1748
 
1749
- #: methods/updraftvault.php:373
1750
  msgid "Quota:"
1751
  msgstr ""
1752
 
1753
- #: methods/updraftvault.php:371
1754
  msgid "Vault owner"
1755
  msgstr ""
1756
 
1757
- #: methods/updraftvault.php:371
1758
  msgid "Well done - there's nothing more needed to set up."
1759
  msgstr ""
1760
 
1761
- #: methods/updraftvault.php:371
1762
  msgid "This site is <strong>connected</strong> to UpdraftPlus Vault."
1763
  msgstr ""
1764
 
1765
- #: methods/updraftvault.php:367
1766
  msgid "You are <strong>not connected</strong> to UpdraftPlus Vault."
1767
  msgstr ""
1768
 
1769
- #: methods/updraftvault.php:343
1770
  msgid "Go here for help"
1771
  msgstr ""
1772
 
1773
- #: methods/updraftvault.php:338
1774
  msgid "E-mail"
1775
  msgstr ""
1776
 
1777
- #: methods/updraftvault.php:331 methods/updraftvault.php:346
1778
  msgid "Back..."
1779
  msgstr ""
1780
 
1781
- #: methods/updraftvault.php:325
1782
  msgid "Subscriptions can be cancelled at any time."
1783
  msgstr ""
1784
 
1785
- #: methods/updraftvault.php:308 methods/updraftvault.php:314
1786
- #: methods/updraftvault.php:320
1787
  msgid "%s per quarter"
1788
  msgstr ""
1789
 
1790
- #: central/bootstrap.php:542 methods/updraftvault.php:298
1791
- #: methods/updraftvault.php:328
1792
  msgid "Read more about it here."
1793
  msgstr ""
1794
 
1795
- #: methods/updraftvault.php:298 methods/updraftvault.php:328
1796
  msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability."
1797
  msgstr ""
1798
 
1799
- #: methods/updraftvault.php:294
1800
  msgid "Already purchased space?"
1801
  msgstr ""
1802
 
1803
- #: methods/updraftvault.php:291
1804
  msgid "Show the options"
1805
  msgstr ""
1806
 
1807
- #: methods/updraftvault.php:290
1808
  msgid "First time user?"
1809
  msgstr ""
1810
 
1811
- #: methods/updraftvault.php:287 methods/updraftvault.php:304
1812
  msgid "Press a button to get started."
1813
  msgstr ""
1814
 
1815
- #: methods/updraftvault.php:287 methods/updraftvault.php:304
1816
  msgid "UpdraftPlus Vault brings you storage that is <strong>reliable, easy to use and a great price</strong>."
1817
  msgstr ""
1818
 
1819
- #: methods/updraftvault.php:242
1820
  msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible."
1821
  msgstr ""
1822
 
1823
- #: methods/updraftvault.php:239
1824
  msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!"
1825
  msgstr ""
1826
 
1827
- #: methods/updraftvault.php:236
1828
  msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer."
1829
  msgstr ""
1830
 
1831
- #: methods/updraftvault.php:90
1832
  msgid "Updraft Vault"
1833
  msgstr ""
1834
 
1835
- #: addons/azure.php:375 addons/googlecloud.php:729 methods/s3.php:1059
 
1836
  msgid "Delete failed:"
1837
  msgstr ""
1838
 
1839
- #: backup.php:3019
1840
  msgid "The zip engine returned the message: %s."
1841
  msgstr ""
1842
 
1843
- #: addons/s3-enhanced.php:360
1844
  msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors."
1845
  msgstr ""
1846
 
1847
- #: addons/s3-enhanced.php:358
1848
  msgid "Allow deletion"
1849
  msgstr ""
1850
 
1851
- #: addons/s3-enhanced.php:356
1852
  msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website."
1853
  msgstr ""
1854
 
1855
- #: addons/s3-enhanced.php:354
1856
  msgid "Allow download"
1857
  msgstr ""
1858
 
1859
- #: addons/migrator.php:1757
1860
  msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead."
1861
  msgstr ""
1862
 
1863
- #: addons/migrator.php:1742 admin.php:699
1864
  msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly."
1865
  msgstr ""
1866
 
1867
- #: addons/migrator.php:2240
1868
  msgid "Existing keys"
1869
  msgstr ""
1870
 
1871
- #: addons/migrator.php:2231
1872
  msgid "No keys to allow remote sites to connect have yet been created."
1873
  msgstr ""
1874
 
1875
- #: addons/migrator.php:2213
1876
  msgid "Your new key:"
1877
  msgstr ""
1878
 
1879
- #: addons/migrator.php:2192
1880
  msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there."
1881
  msgstr ""
1882
 
1883
- #: addons/migrator.php:2175
1884
  msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there."
1885
  msgstr ""
1886
 
1887
- #: addons/migrator.php:2175
1888
  msgid "Keys for this site are created in the section below the one you just pressed in."
1889
  msgstr ""
1890
 
1891
- #: addons/migrator.php:1855 central/bootstrap.php:364
1892
  msgid "You must copy and paste this key now - it cannot be shown again."
1893
  msgstr ""
1894
 
1895
- #: addons/migrator.php:1855 central/bootstrap.php:364
1896
  msgid "Key created successfully."
1897
  msgstr ""
1898
 
1899
- #: addons/migrator.php:1840
1900
  msgid "A key with this name already exists; you must use a unique name."
1901
  msgstr ""
1902
 
1903
- #: addons/migrator.php:1788
1904
  msgid "Also send this backup to the active remote storage locations"
1905
  msgstr ""
1906
 
1907
- #: addons/migrator.php:1753
1908
  msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this."
1909
  msgstr ""
1910
 
1911
- #: addons/migrator.php:1709
1912
  msgid "site not found"
1913
  msgstr ""
1914
 
1915
- #: addons/migrator.php:1694
1916
  msgid "Backup data will be sent to:"
1917
  msgstr ""
1918
 
1919
- #: addons/migrator.php:189
1920
  msgid "Restore an existing backup set onto this site"
1921
  msgstr ""
1922
 
1923
- #: addons/migrator.php:182
1924
  msgid "This site has no backups to restore from yet."
1925
  msgstr ""
1926
 
1927
- #: addons/reporting.php:143
1928
  msgid "Backup made by %s"
1929
  msgstr ""
1930
 
1931
- #: methods/addon-base-v2.php:177
1932
  msgid "This storage method does not allow downloading"
1933
  msgstr ""
1934
 
1935
- #: admin.php:3437
1936
  msgid "(backup set imported from remote location)"
1937
  msgstr ""
1938
 
1939
- #: templates/wp-admin/settings/existing-backups-table.php:82
1940
  msgid "Site"
1941
  msgstr ""
1942
 
1943
- #: templates/wp-admin/settings/existing-backups-table.php:81
1944
  msgid "Backup sent to remote site - not available for download."
1945
  msgstr ""
1946
 
1947
- #: includes/class-wpadmin-commands.php:118
1948
  msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)."
1949
  msgstr ""
1950
 
1951
- #: includes/class-wpadmin-commands.php:118
1952
  msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site."
1953
  msgstr ""
1954
 
1955
- #: addons/migrator.php:1770 admin.php:706
1956
  msgid "Testing connection..."
1957
  msgstr ""
1958
 
1959
- #: admin.php:703
1960
  msgid "Deleting..."
1961
  msgstr ""
1962
 
1963
- #: admin.php:702
1964
  msgid "key name"
1965
  msgstr ""
1966
 
1967
- #: admin.php:700
1968
  msgid "Please give this key a name (e.g. indicate the site it is for):"
1969
  msgstr ""
1970
 
1971
- #: admin.php:697
1972
  msgid "Creating..."
1973
  msgstr ""
1974
 
1975
- #: addons/migrator.php:2191
1976
  msgid "Or, receive a backup from a remote site"
1977
  msgstr ""
1978
 
1979
- #: addons/migrator.php:2180
1980
  msgid "Paste key here"
1981
  msgstr ""
1982
 
1983
- #: addons/migrator.php:2175
1984
  msgid "How do I get a site's key?"
1985
  msgstr ""
1986
 
1987
- #: addons/migrator.php:2175
1988
  msgid "To add a site as a destination for sending to, enter that site's key below."
1989
  msgstr ""
1990
 
1991
- #: addons/migrator.php:2172
1992
  msgid "Or, send a backup to another site"
1993
  msgstr ""
1994
 
1995
- #: addons/migrator.php:1937 admin.php:707
1996
  msgid "Send"
1997
  msgstr ""
1998
 
1999
- #: addons/migrator.php:1931 admin.php:698
2000
  msgid "Send to site:"
2001
  msgstr ""
2002
 
2003
- #: addons/migrator.php:1929
2004
  msgid "No receiving sites have yet been added."
2005
  msgstr ""
2006
 
2007
- #: addons/migrator.php:1910
2008
  msgid "It is for sending backups to the following site: "
2009
  msgstr ""
2010
 
2011
- #: addons/migrator.php:1910
2012
  msgid "The key was successfully added."
2013
  msgstr ""
2014
 
2015
- #: addons/migrator.php:1894
2016
  msgid "The entered key does not belong to a remote site (it belongs to this one)."
2017
  msgstr ""
2018
 
2019
- #: addons/migrator.php:1883 addons/migrator.php:1885 addons/migrator.php:1889
 
2020
  msgid "The entered key was corrupt - please try again."
2021
  msgstr ""
2022
 
2023
- #: addons/migrator.php:1881
2024
  msgid "The entered key was the wrong length - please try again."
2025
  msgstr ""
2026
 
2027
- #: addons/migrator.php:1871
2028
  msgid "key"
2029
  msgstr ""
2030
 
2031
- #: methods/ftp.php:336
2032
  msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this."
2033
  msgstr ""
2034
 
2035
- #: methods/ftp.php:334
2036
  msgid "Passive mode"
2037
  msgstr ""
2038
 
2039
- #: methods/ftp.php:329
2040
  msgid "Remote path"
2041
  msgstr ""
2042
 
2043
- #: methods/ftp.php:324
2044
  msgid "FTP password"
2045
  msgstr ""
2046
 
2047
- #: methods/ftp.php:319
2048
  msgid "FTP login"
2049
  msgstr ""
2050
 
2051
- #: methods/ftp.php:314
2052
  msgid "FTP server"
2053
  msgstr ""
2054
 
2055
- #: addons/migrator.php:162
2056
  msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site."
2057
  msgstr ""
2058
 
2059
- #: addons/migrator.php:162
2060
  msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site."
2061
  msgstr ""
2062
 
2063
- #: addons/migrator.php:2180 admin.php:695
 
 
 
 
2064
  msgid "Add site"
2065
  msgstr ""
2066
 
2067
- #: admin.php:694
2068
  msgid "Adding..."
2069
  msgstr ""
2070
 
2071
- #: udaddons/options.php:345
2072
  msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?"
2073
  msgstr ""
2074
 
2075
- #: restorer.php:2118
2076
  msgid "To use this backup, your database server needs to support the %s character set."
2077
  msgstr ""
2078
 
2079
- #: udaddons/updraftplus-addons.php:786
2080
  msgid "go here to change your password on updraftplus.com."
2081
  msgstr ""
2082
 
2083
- #: udaddons/updraftplus-addons.php:786
2084
  msgid "If you have forgotten your password "
2085
  msgstr ""
2086
 
2087
- #: udaddons/updraftplus-addons.php:785
2088
  msgid "Go here to re-enter your password."
2089
  msgstr ""
2090
 
2091
- #: addons/migrator.php:218
2092
  msgid "After pressing this button, you will be given the option to choose which components you wish to migrate"
2093
  msgstr ""
2094
 
2095
- #: addons/migrator.php:189
2096
  msgid "To import a backup set, go to the \"Existing Backups\" tab"
2097
  msgstr ""
2098
 
2099
- #: admin.php:686 admin.php:712 admin.php:713
 
 
 
 
2100
  msgid "You have made changes to your settings, and not saved."
2101
  msgstr ""
2102
 
2103
- #: addons/onedrive.php:998
2104
  msgid "N.B. %s is not case-sensitive."
2105
  msgstr ""
2106
 
2107
- #: addons/onedrive.php:986
2108
  msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here."
2109
  msgstr ""
2110
 
2111
- #: addons/azure.php:531 addons/migrator.php:1757 addons/onedrive.php:970
 
2112
  msgid "For longer help, including screenshots, follow this link."
2113
  msgstr ""
2114
 
2115
- #: addons/onedrive.php:970
2116
  msgid "Create OneDrive credentials in your OneDrive developer console."
2117
  msgstr ""
2118
 
2119
- #: addons/onedrive.php:965
2120
  msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked"
2121
  msgstr ""
2122
 
2123
- #: addons/onedrive.php:938 addons/onedrive.php:940
 
 
 
 
2124
  msgid "%s authorisation failed:"
2125
  msgstr ""
2126
 
2127
- #: addons/onedrive.php:795 addons/onedrive.php:985 addons/onedrive.php:989
 
2128
  msgid "OneDrive"
2129
  msgstr ""
2130
 
2131
- #: addons/onedrive.php:628
2132
  msgid "Please re-authorize the connection to your %s account."
2133
  msgstr ""
2134
 
2135
- #: methods/email.php:75
2136
  msgid "configure it here"
2137
  msgstr ""
2138
 
2139
- #: addons/onedrive.php:621 methods/updraftvault.php:589
2140
  msgid "To remove the block, please go here."
2141
  msgstr ""
2142
 
2143
- #: addons/s3-enhanced.php:447
2144
  msgid "Do remember to save your settings."
2145
  msgstr ""
2146
 
2147
- #: addons/s3-enhanced.php:447
2148
  msgid "You are now using a IAM user account to access your bucket."
2149
  msgstr ""
2150
 
2151
- #: addons/s3-enhanced.php:352
2152
  msgid "S3 bucket"
2153
  msgstr ""
2154
 
2155
- #: addons/s3-enhanced.php:342
2156
  msgid "China (Beijing) (restricted)"
2157
  msgstr ""
2158
 
2159
- #: addons/s3-enhanced.php:341
2160
  msgid "South America (Sao Paulo)"
2161
  msgstr ""
2162
 
2163
- #: addons/s3-enhanced.php:340
2164
  msgid "Asia Pacific (Tokyo)"
2165
  msgstr ""
2166
 
2167
- #: addons/s3-enhanced.php:338
2168
  msgid "Asia Pacific (Sydney)"
2169
  msgstr ""
2170
 
2171
- #: addons/s3-enhanced.php:337
2172
  msgid "Asia Pacific (Singapore)"
2173
  msgstr ""
2174
 
2175
- #: addons/s3-enhanced.php:331
2176
  msgid "US Government West (restricted)"
2177
  msgstr ""
2178
 
2179
- #: addons/s3-enhanced.php:330
2180
  msgid "US West (N. California)"
2181
  msgstr ""
2182
 
2183
- #: addons/s3-enhanced.php:329
2184
  msgid "US West (Oregon)"
2185
  msgstr ""
2186
 
2187
- #: addons/s3-enhanced.php:327
2188
  msgid "US Standard (default)"
2189
  msgstr ""
2190
 
2191
- #: addons/s3-enhanced.php:323
2192
  msgid "S3 storage region"
2193
  msgstr ""
2194
 
2195
- #: addons/s3-enhanced.php:321
2196
  msgid "New IAM username"
2197
  msgstr ""
2198
 
2199
- #: addons/s3-enhanced.php:320
2200
  msgid "Admin secret key"
2201
  msgstr ""
2202
 
2203
- #: addons/s3-enhanced.php:319
2204
  msgid "Admin access key"
2205
  msgstr ""
2206
 
2207
- #: addons/s3-enhanced.php:312
2208
  msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys."
2209
  msgstr ""
2210
 
2211
- #: addons/s3-enhanced.php:312
2212
  msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket."
2213
  msgstr ""
2214
 
2215
- #: addons/s3-enhanced.php:312
2216
  msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name."
2217
  msgstr ""
2218
 
2219
- #: addons/s3-enhanced.php:389
2220
  msgid "Create new IAM user and S3 bucket"
2221
  msgstr ""
2222
 
2223
- #: addons/s3-enhanced.php:302
2224
  msgid "Secret Key: %s"
2225
  msgstr ""
2226
 
2227
- #: addons/s3-enhanced.php:302
2228
  msgid "Access Key: %s"
2229
  msgstr ""
2230
 
2231
- #: addons/s3-enhanced.php:290 addons/s3-enhanced.php:292
2232
  msgid "Failed to apply User Policy"
2233
  msgstr ""
2234
 
2235
- #: addons/s3-enhanced.php:231 addons/s3-enhanced.php:235
2236
  msgid "Operation to create user Access Key failed"
2237
  msgstr ""
2238
 
2239
- #: addons/s3-enhanced.php:229
2240
  msgid "Failed to create user Access Key"
2241
  msgstr ""
2242
 
2243
- #: addons/s3-enhanced.php:209 addons/s3-enhanced.php:212
2244
- #: addons/s3-enhanced.php:216
2245
  msgid "IAM operation failed (%s)"
2246
  msgstr ""
2247
 
2248
- #: addons/s3-enhanced.php:207
2249
  msgid "Conflict: that user already exists"
2250
  msgstr ""
2251
 
2252
- #: addons/s3-enhanced.php:179
2253
  msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)."
2254
  msgstr ""
2255
 
2256
- #: addons/s3-enhanced.php:132
2257
  msgid "AWS authentication failed"
2258
  msgstr ""
2259
 
2260
- #: addons/s3-enhanced.php:125
2261
  msgid "Cannot create new AWS user, since the old AWS toolkit is being used."
2262
  msgstr ""
2263
 
2264
- #: addons/s3-enhanced.php:100
2265
  msgid "You need to enter a bucket"
2266
  msgstr ""
2267
 
2268
- #: addons/s3-enhanced.php:97
2269
  msgid "You need to enter a new IAM username"
2270
  msgstr ""
2271
 
2272
- #: addons/s3-enhanced.php:94
2273
  msgid "You need to enter an admin secret key"
2274
  msgstr ""
2275
 
2276
- #: addons/s3-enhanced.php:91
2277
  msgid "You need to enter an admin access key"
2278
  msgstr ""
2279
 
2280
- #: addons/s3-enhanced.php:79
2281
  msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)"
2282
  msgstr ""
2283
 
2284
- #: methods/s3.php:862
2285
  msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on."
2286
  msgstr ""
2287
 
2288
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:11
2289
  msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin."
2290
  msgstr ""
2291
 
2292
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:9
2293
  msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time."
2294
  msgstr ""
2295
 
2296
- #: restorer.php:2221
2297
- msgid "Uploads path (%s) has changed during a migration - resetting (to: %s)"
2298
- msgstr ""
2299
-
2300
- #: addons/onedrive.php:598 addons/onedrive.php:621 methods/updraftvault.php:589
2301
- #: udaddons/updraftplus-addons.php:732 udaddons/updraftplus-addons.php:747
2302
  msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks."
2303
  msgstr ""
2304
 
2305
- #: addons/onedrive.php:621 methods/updraftvault.php:589
2306
- #: udaddons/updraftplus-addons.php:747
2307
  msgid "It appears that your web server's IP Address (%s) is blocked."
2308
  msgstr ""
2309
 
2310
- #: addons/onedrive.php:621 methods/updraftvault.php:589
2311
- #: udaddons/updraftplus-addons.php:747
2312
  msgid "UpdraftPlus.com has responded with 'Access Denied'."
2313
  msgstr ""
2314
 
2315
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:17
2316
  msgid "Premium WooCommerce plugins"
2317
  msgstr ""
2318
 
2319
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:17
2320
  msgid "Free two-factor security plugin"
2321
  msgstr ""
2322
 
2323
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:17
2324
  msgid "More Quality Plugins"
2325
  msgstr ""
2326
 
2327
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:11
2328
  msgid "Go to the shop."
2329
  msgstr ""
2330
 
2331
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:11
2332
  msgid "Compare with the free version"
2333
  msgstr ""
2334
 
2335
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:11
2336
- #: templates/wp-admin/settings/tab-addons.php:269
 
2337
  msgid "UpdraftPlus Premium"
2338
  msgstr ""
2339
 
2340
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:9
2341
  msgid "Follow this link to sign up."
2342
  msgstr ""
2343
 
2344
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:9
2345
  msgid "Free Newsletter"
2346
  msgstr ""
2347
 
2348
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:4
2349
  msgid "Thank you for backing up with UpdraftPlus!"
2350
  msgstr ""
2351
 
2352
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:2
2353
- #: templates/wp-admin/notices/thanks-for-using-main-dash.php:21
2354
  msgid "Dismiss (for %s months)"
2355
  msgstr ""
2356
 
2357
- #: addons/fixtime.php:422
2358
  msgid "(at same time as files backup)"
2359
  msgstr ""
2360
 
2361
- #: admin.php:2958
2362
  msgid "No backup has been completed"
2363
  msgstr ""
2364
 
2365
- #: templates/wp-admin/settings/tab-addons.php:14
2366
  msgid "The first step is to de-install the free version."
2367
  msgstr ""
2368
 
2369
- #: templates/wp-admin/settings/tab-addons.php:14
2370
  msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase."
2371
  msgstr ""
2372
 
2373
- #: templates/wp-admin/settings/header.php:12
2374
  msgid "Newsletter sign-up"
2375
  msgstr ""
2376
 
2377
- #: includes/updraftplus-notices.php:142
2378
  msgid "Follow this link to sign up for the UpdraftPlus newsletter."
2379
  msgstr ""
2380
 
2381
- #: templates/wp-admin/settings/tab-addons.php:136
 
2382
  msgid "Backup non-WordPress files and databases"
2383
  msgstr ""
2384
 
2385
- #: templates/wp-admin/settings/tab-addons.php:19
2386
  msgid "Ask a pre-sales question"
2387
  msgstr ""
2388
 
2389
- #: templates/wp-admin/settings/tab-addons.php:18
2390
  msgid "Pre-sales FAQs"
2391
  msgstr ""
2392
 
2393
- #: templates/wp-admin/settings/tab-addons.php:17
2394
  msgid "Full feature list"
2395
  msgstr ""
2396
 
2397
- #: templates/wp-admin/settings/tab-addons.php:16
2398
  msgid "Get UpdraftPlus Premium"
2399
  msgstr ""
2400
 
2401
- #: templates/wp-admin/settings/tab-addons.php:14
2402
  msgid "You are currently using the free version of UpdraftPlus from wordpress.org."
2403
  msgstr ""
2404
 
2405
- #: addons/autobackup.php:991
2406
  msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating"
2407
  msgstr ""
2408
 
2409
- #: methods/s3.php:148 methods/s3.php:149 methods/s3.php:150 methods/s3.php:158
2410
- #: methods/s3.php:159 methods/s3.php:160
2411
  msgid "%s Error: Failed to initialise"
2412
  msgstr ""
2413
 
2414
- #: templates/wp-admin/settings/form-contents.php:261
2415
  msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files"
2416
  msgid "or"
2417
  msgstr ""
2418
 
2419
- #: templates/wp-admin/settings/downloading-and-restoring.php:63
2420
- msgctxt "Uploader: Drop backup files here - or - Select Files"
2421
- msgid "or"
2422
- msgstr ""
2423
-
2424
- #: admin.php:680
2425
  msgid "You did not select any components to restore. Please select at least one, and then try again."
2426
  msgstr ""
2427
 
2428
- #: addons/sftp.php:399
2429
  msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated."
2430
  msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted."
2431
  msgstr ""
2432
 
2433
- #: addons/sftp.php:362
2434
  msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file."
2435
  msgstr ""
2436
 
2437
- #: methods/openstack2.php:173
2438
  msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning"
2439
  msgid "tenant"
2440
  msgstr ""
2441
 
2442
- #: methods/openstack2.php:123
2443
  msgctxt "Keystone and swauth are technical terms which cannot be translated"
2444
  msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported."
2445
  msgstr ""
2446
 
2447
- #: templates/wp-admin/settings/form-contents.php:332
2448
  msgid "your site's admin address"
2449
  msgstr ""
2450
 
2451
- #: templates/wp-admin/settings/form-contents.php:332
2452
  msgid "Check this box to have a basic report sent to"
2453
  msgstr ""
2454
 
2455
- #: admin.php:2967
2456
  msgctxt "i.e. Non-automatic"
2457
  msgid "Manual"
2458
  msgstr ""
2459
 
2460
- #: restorer.php:2095
2461
  msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred"
2462
  msgid "An error (%s) occurred:"
2463
  msgstr ""
2464
 
2465
- #: addons/lockadmin.php:173
2466
  msgid "Change Lock Settings"
2467
  msgstr ""
2468
 
2469
- #: addons/morefiles.php:245
2470
  msgid "Any other file/directory on your server that you wish to back up"
2471
  msgstr ""
2472
 
2473
- #: admin.php:2195
2474
  msgid "For even more features and personal support, check out "
2475
  msgstr ""
2476
 
2477
- #: restorer.php:2101
2478
- msgid "Create table failed - probably because there is no permission to drop tables and the table already exists; will continue"
2479
- msgstr ""
2480
-
2481
- #: restorer.php:1233
2482
- msgid "Clearing cached pages (%s)..."
2483
- msgstr ""
2484
-
2485
- #: addons/moredatabase.php:50
2486
  msgid "Database decryption phrase"
2487
  msgstr ""
2488
 
2489
- #: addons/autobackup.php:131 addons/autobackup.php:966 admin.php:685
 
2490
  msgid "Automatic backup before update"
2491
  msgstr ""
2492
 
2493
- #: addons/autobackup.php:96
2494
  msgid "WordPress core (only)"
2495
  msgstr ""
2496
 
2497
- #: addons/lockadmin.php:222
2498
  msgid "For unlocking support, please contact whoever manages UpdraftPlus for you."
2499
  msgstr ""
2500
 
2501
- #: addons/lockadmin.php:215
2502
  msgid "To access the UpdraftPlus settings, please enter your unlock password"
2503
  msgstr ""
2504
 
2505
- #: addons/lockadmin.php:212
2506
  msgid "Password incorrect"
2507
  msgstr ""
2508
 
2509
- #: addons/lockadmin.php:200 addons/lockadmin.php:206
2510
  msgid "Unlock"
2511
  msgstr ""
2512
 
2513
- #: addons/lockadmin.php:171
2514
  msgid "Otherwise, the default link will be shown."
2515
  msgstr ""
2516
 
2517
- #: addons/lockadmin.php:171
2518
  msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address."
2519
  msgstr ""
2520
 
2521
- #: addons/lockadmin.php:171
2522
  msgid "Support URL"
2523
  msgstr ""
2524
 
2525
- #: addons/lockadmin.php:169
2526
  msgid "Require password again after"
2527
  msgstr ""
2528
 
2529
- #: addons/lockadmin.php:160 addons/lockadmin.php:161
2530
  msgid "%s weeks"
2531
  msgstr ""
2532
 
2533
- #: addons/lockadmin.php:159
2534
  msgid "1 week"
2535
  msgstr ""
2536
 
2537
- #: addons/lockadmin.php:157 addons/lockadmin.php:158
2538
  msgid "%s hours"
2539
  msgstr ""
2540
 
2541
- #: addons/lockadmin.php:156
2542
  msgid "1 hour"
2543
  msgstr ""
2544
 
2545
- #: addons/lockadmin.php:145
2546
  msgid "Please make sure that you have made a note of the password!"
2547
  msgstr ""
2548
 
2549
- #: addons/lockadmin.php:138 templates/wp-admin/advanced/lock-admin.php:7
 
2550
  msgid "Lock access to the UpdraftPlus settings page"
2551
  msgstr ""
2552
 
2553
- #: addons/lockadmin.php:116
2554
- msgid "Settings saved."
2555
- msgstr ""
2556
-
2557
- #: addons/lockadmin.php:114
2558
  msgid "The admin password has been changed."
2559
  msgstr ""
2560
 
2561
- #: addons/lockadmin.php:112
2562
  msgid "An admin password has been set."
2563
  msgstr ""
2564
 
2565
- #: addons/lockadmin.php:110
2566
  msgid "The admin password has now been removed."
2567
  msgstr ""
2568
 
2569
- #: addons/morefiles.php:134
2570
  msgid "(learn more about this significant option)"
2571
  msgstr ""
2572
 
2573
- #: udaddons/options.php:280
2574
  msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates."
2575
  msgstr ""
2576
 
2577
- #: admin.php:2528 admin.php:3460
 
 
 
 
2578
  msgid "View Log"
2579
  msgstr ""
2580
 
2581
- #: templates/wp-admin/settings/existing-backups-table.php:15
2582
  msgid "Backup data (click to download)"
2583
  msgstr ""
2584
 
2585
- #: templates/wp-admin/settings/existing-backups-table.php:14
2586
  msgid "Backup date"
2587
  msgstr ""
2588
 
2589
- #: templates/wp-admin/settings/form-contents.php:42
2590
- #: templates/wp-admin/settings/form-contents.php:83
2591
  msgid "and retain this many scheduled backups"
2592
  msgstr ""
2593
 
2594
- #: admin.php:2928
2595
  msgid "incremental backup; base backup: %s"
2596
  msgstr ""
2597
 
2598
- #: templates/wp-admin/advanced/lock-admin.php:9
2599
  msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium."
2600
  msgstr ""
2601
 
2602
- #: templates/wp-admin/settings/downloading-and-restoring.php:52
2603
  msgid "Upload files into UpdraftPlus."
2604
  msgstr ""
2605
 
2606
- #: admin.php:921 includes/class-commands.php:364
2607
- #: templates/wp-admin/settings/tab-status.php:22
2608
  msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)."
2609
  msgstr ""
2610
 
2611
- #: class-updraftplus.php:4227
2612
  msgid "Backup label:"
2613
  msgstr ""
2614
 
2615
- #: admin.php:1722
2616
  msgid "Error: unexpected file read fail"
2617
  msgstr ""
2618
 
2619
- #: backup.php:3025
2620
  msgid "check your log for more details."
2621
  msgstr ""
2622
 
2623
- #: backup.php:3023
2624
  msgid "your web hosting account appears to be full; please see: %s"
2625
  msgstr ""
2626
 
2627
- #: backup.php:3021
2628
  msgid "A zip error occurred"
2629
  msgstr ""
2630
 
2631
- #: addons/reporting.php:60
2632
  msgid "Your label for this backup (optional)"
2633
  msgstr ""
2634
 
2635
- #: addons/googlecloud.php:868 methods/googledrive.php:902
2636
  msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage."
2637
  msgstr ""
2638
 
2639
- #: methods/updraftvault.php:628 udaddons/updraftplus-addons.php:789
2640
  msgid "You entered an email address that was not recognised by UpdraftPlus.Com"
2641
  msgstr ""
2642
 
2643
- #: methods/updraftvault.php:625 udaddons/updraftplus-addons.php:785
2644
  msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com."
2645
  msgstr ""
2646
 
2647
- #: methods/updraftvault.php:565 udaddons/updraftplus-addons.php:655
2648
  msgid "You need to supply both an email address and a password"
2649
  msgstr ""
2650
 
2651
- #: templates/wp-admin/settings/tab-status.php:89
2652
  msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity."
2653
  msgstr ""
2654
 
2655
- #: class-updraftplus.php:4246
2656
  msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite."
2657
  msgstr ""
2658
 
2659
- #: class-updraftplus.php:4246
2660
  msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible."
2661
  msgstr ""
2662
 
2663
- #: addons/migrator.php:1063
2664
  msgid "already done"
2665
  msgstr ""
2666
 
2667
- #: addons/migrator.php:1020
2668
  msgid "skipped (not in list)"
2669
  msgstr ""
2670
 
2671
- #: addons/migrator.php:1020 addons/migrator.php:1063 addons/migrator.php:1205
 
2672
  msgid "Search and replacing table:"
2673
  msgstr ""
2674
 
2675
- #: addons/migrator.php:314
2676
  msgid "Enter a comma-separated list; otherwise, leave blank for all tables."
2677
  msgstr ""
2678
 
2679
- #: addons/migrator.php:314
2680
  msgid "These tables only"
2681
  msgstr ""
2682
 
2683
- #: addons/migrator.php:313
2684
  msgid "Rows per batch"
2685
  msgstr ""
2686
 
2687
- #: udaddons/options.php:109
2688
  msgid "You have not yet connected with your UpdraftPlus.Com account."
2689
  msgstr ""
2690
 
2691
- #: udaddons/options.php:107 udaddons/options.php:109
2692
  msgid "You need to connect to receive future updates to UpdraftPlus."
2693
  msgstr ""
2694
 
2695
- #: class-updraftplus.php:4219
2696
  msgid "Any support requests to do with %s should be raised with your web hosting company."
2697
  msgstr ""
2698
 
2699
- #: class-updraftplus.php:4219
2700
  msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version."
2701
  msgstr ""
2702
 
2703
- #: class-updraftplus.php:4219
2704
  msgid "This is significantly newer than the server which you are now restoring onto (version %s)."
2705
  msgstr ""
2706
 
2707
- #: class-updraftplus.php:4219
2708
  msgid "The site in this backup was running on a webserver with version %s of %s. "
2709
  msgstr ""
2710
 
2711
- #: includes/updraftplus-notices.php:133 includes/updraftplus-notices.php:134
 
2712
  msgid "LinkedIn"
2713
  msgstr ""
2714
 
2715
- #: includes/updraftplus-notices.php:133 includes/updraftplus-notices.php:134
 
2716
  msgid "Google+"
2717
  msgstr ""
2718
 
2719
- #: includes/updraftplus-notices.php:133 includes/updraftplus-notices.php:134
 
2720
  msgid "Facebook"
2721
  msgstr ""
2722
 
2723
- #: includes/updraftplus-notices.php:133 includes/updraftplus-notices.php:134
2724
- #: templates/wp-admin/settings/header.php:10
 
2725
  msgid "Twitter"
2726
  msgstr ""
2727
 
2728
- #: includes/updraftplus-notices.php:132
2729
  msgid "UpdraftPlus is on social media - check us out!"
2730
  msgstr ""
2731
 
2732
- #: admin.php:3521
2733
  msgid "Why am I seeing this?"
2734
  msgstr ""
2735
 
2736
- #: templates/wp-admin/settings/downloading-and-restoring.php:39
2737
  msgid "The location of this directory is set in the expert settings, in the Settings tab."
2738
  msgstr ""
2739
 
2740
- #: templates/wp-admin/settings/downloading-and-restoring.php:39
2741
  msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded."
2742
  msgstr ""
2743
 
2744
- #: admin.php:1670 admin.php:1682
2745
  msgid "Start backup"
2746
  msgstr ""
2747
 
2748
- #: class-updraftplus.php:4191 restorer.php:996
2749
  msgid "You are using the %s webserver, but do not seem to have the %s module loaded."
2750
  msgstr ""
2751
 
2752
- #: admin.php:2851
2753
  msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory."
2754
  msgstr ""
2755
 
2756
- #: templates/wp-admin/advanced/advanced-tools.php:6
2757
  msgid "Unless you have a problem, you can completely ignore everything here."
2758
  msgstr ""
2759
 
2760
- #: admin.php:1881
2761
  msgid "This file could not be uploaded"
2762
  msgstr ""
2763
 
2764
- #: admin.php:1846
2765
  msgid "You will find more information about this in the Settings section."
2766
  msgstr ""
2767
 
2768
- #: addons/importer.php:70
2769
  msgid "Supported backup plugins: %s"
2770
  msgstr ""
2771
 
2772
- #: addons/importer.php:70
2773
  msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link."
2774
  msgstr ""
2775
 
2776
- #: templates/wp-admin/settings/form-contents.php:58
2777
  msgid "Tell me more about incremental backups"
2778
  msgstr ""
2779
 
2780
- #: templates/wp-admin/advanced/site-info.php:42
2781
  msgid "Memory limit"
2782
  msgstr ""
2783
 
2784
- #: class-updraftplus.php:4349 restorer.php:1441
2785
  msgid "restoration"
2786
  msgstr ""
2787
 
2788
- #: restorer.php:2046
2789
- msgid "Table to be implicitly dropped: %s"
2790
- msgstr ""
2791
-
2792
- #: backup.php:844
2793
  msgid "Incremental"
2794
  msgstr ""
2795
 
2796
- #: backup.php:844
2797
  msgid "Full backup"
2798
  msgstr ""
2799
 
2800
- #: addons/autobackup.php:488 addons/autobackup.php:490
2801
  msgid "now proceeding with the updates..."
2802
  msgstr ""
2803
 
2804
- #: addons/autobackup.php:488 addons/autobackup.php:490
2805
  msgid "(view log...)"
2806
  msgstr ""
2807
 
2808
- #: addons/autobackup.php:488 addons/autobackup.php:490
2809
  msgid "Backup succeeded"
2810
  msgstr ""
2811
 
2812
- #: admin.php:2968 admin.php:2969 admin.php:2970 updraftplus.php:92
2813
- #: updraftplus.php:93
2814
  msgid "Every %s hours"
2815
  msgstr ""
2816
 
2817
- #: addons/migrator.php:778 addons/migrator.php:780
2818
  msgid "search and replace"
2819
  msgstr ""
2820
 
2821
- #: addons/migrator.php:316
2822
  msgid "Go"
2823
  msgstr ""
2824
 
2825
- #: addons/migrator.php:305
2826
  msgid "A search/replace cannot be undone - are you sure you want to do this?"
2827
  msgstr ""
2828
 
2829
- #: addons/migrator.php:304
2830
  msgid "This can easily destroy your site; so, use it with care!"
2831
  msgstr ""
2832
 
2833
- #: addons/migrator.php:274 addons/migrator.php:312
2834
  msgid "Replace with"
2835
  msgstr ""
2836
 
2837
- #: addons/migrator.php:273 addons/migrator.php:311
2838
  msgid "Search for"
2839
  msgstr ""
2840
 
2841
- #: addons/migrator.php:272 addons/migrator.php:303
2842
- #: templates/wp-admin/advanced/search-replace.php:7
2843
- #: templates/wp-admin/advanced/tools-menu.php:18
2844
  msgid "Search / replace database"
2845
  msgstr ""
2846
 
2847
- #: addons/migrator.php:278
2848
  msgid "search term"
2849
  msgstr ""
2850
 
2851
- #: restorer.php:2123
2852
  msgid "Too many database errors have occurred - aborting"
2853
  msgstr ""
2854
 
2855
- #: backup.php:910
2856
  msgid "read more at %s"
2857
  msgstr ""
2858
 
2859
- #: backup.php:910
2860
  msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news"
2861
  msgstr ""
2862
 
2863
- #: methods/googledrive.php:908
2864
  msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site."
2865
  msgstr ""
2866
 
2867
- #: admin.php:3286
2868
  msgid "You have not yet made any backups."
2869
  msgstr ""
2870
 
2871
- #: templates/wp-admin/settings/form-contents.php:224
2872
  msgid "Database Options"
2873
  msgstr ""
2874
 
2875
- #: templates/wp-admin/advanced/site-info.php:88
2876
  msgid "Plugins for debugging:"
2877
  msgstr ""
2878
 
2879
- #: templates/wp-admin/advanced/site-info.php:67
2880
  msgid "%s (%s used)"
2881
  msgstr ""
2882
 
2883
- #: templates/wp-admin/advanced/site-info.php:67
2884
  msgid "Free disk space in account:"
2885
  msgstr ""
2886
 
2887
- #: admin.php:4080 templates/wp-admin/settings/tab-status.php:27
 
 
 
 
2888
  msgid "This button is disabled because your backup directory is not writable (see the settings)."
2889
  msgstr ""
2890
 
2891
- #: admin.php:518 admin.php:654 admin.php:1535
2892
- #: includes/deprecated-actions.php:30
2893
- #: templates/wp-admin/settings/downloading-and-restoring.php:22
2894
- #: templates/wp-admin/settings/tab-bar.php:6
2895
  msgid "Existing Backups"
2896
  msgstr ""
2897
 
2898
- #: admin.php:510 templates/wp-admin/settings/tab-bar.php:5
2899
  msgid "Current Status"
2900
  msgstr ""
2901
 
2902
- #: admin.php:926
2903
  msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab."
2904
  msgstr ""
2905
 
2906
- #: admin.php:926
2907
  msgid "To make a backup, just press the Backup Now button."
2908
  msgstr ""
2909
 
2910
- #: admin.php:926
2911
  msgid "Welcome to UpdraftPlus!"
2912
  msgstr ""
2913
 
2914
- #: addons/moredatabase.php:304
2915
  msgid "If you enter text here, it is used to encrypt database backups (Rijndael). <strong>Do make a separate record of it and do not lose it, or all your backups <em>will</em> be useless.</strong> This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)."
2916
  msgstr ""
2917
 
2918
- #: addons/moredatabase.php:255
2919
  msgid "Testing..."
2920
  msgstr ""
2921
 
2922
- #: addons/moredatabase.php:242
2923
  msgid "Test connection..."
2924
  msgstr ""
2925
 
2926
- #: addons/moredatabase.php:241
2927
  msgid "Table prefix"
2928
  msgstr ""
2929
 
2930
- #: addons/moredatabase.php:235
2931
  msgid "Backup external database"
2932
  msgstr ""
2933
 
2934
- #: addons/moredatabase.php:163
2935
  msgid "Add an external database to backup..."
2936
  msgstr ""
2937
 
2938
- #: addons/moredatabase.php:159
2939
  msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up."
2940
  msgstr ""
2941
 
2942
- #: addons/moredatabase.php:158
2943
  msgid "Backup non-WordPress tables contained in the same database as WordPress"
2944
  msgstr ""
2945
 
2946
- #: addons/moredatabase.php:158
2947
  msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up."
2948
  msgstr ""
2949
 
2950
- #: addons/moredatabase.php:143
2951
  msgid "Connection failed."
2952
  msgstr ""
2953
 
2954
- #: addons/moredatabase.php:141
2955
  msgid "Connection succeeded."
2956
  msgstr ""
2957
 
2958
- #: addons/moredatabase.php:123
2959
  msgid "%s total table(s) found; %s with the indicated prefix."
2960
  msgstr ""
2961
 
2962
- #: addons/moredatabase.php:117
2963
  msgid "%s table(s) found."
2964
  msgstr ""
2965
 
2966
- #: addons/moredatabase.php:90
2967
  msgid "database connection attempt failed"
2968
  msgstr ""
2969
 
2970
- #: addons/moredatabase.php:79
2971
  msgid "database name"
2972
  msgstr ""
2973
 
2974
- #: addons/moredatabase.php:77
2975
  msgid "host"
2976
  msgstr ""
2977
 
2978
- #: addons/moredatabase.php:75
2979
  msgid "user"
2980
  msgstr ""
2981
 
2982
- #: class-updraftplus.php:1587
2983
  msgid "External database (%s)"
2984
  msgstr ""
2985
 
2986
- #: methods/googledrive.php:908
2987
  msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section."
2988
  msgstr ""
2989
 
2990
- #: methods/googledrive.php:371
2991
  msgid "failed to access parent folder"
2992
  msgstr ""
2993
 
2994
- #: addons/googlecloud.php:590 addons/onedrive.php:763 addons/onedrive.php:774
2995
- #: methods/googledrive.php:328
2996
  msgid "However, subsequent access attempts failed:"
2997
  msgstr ""
2998
 
2999
- #: admin.php:3311
3000
  msgid "External database"
3001
  msgstr ""
3002
 
3003
- #: templates/wp-admin/settings/form-contents.php:366
3004
  msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these."
3005
  msgstr ""
3006
 
3007
- #: templates/wp-admin/settings/form-contents.php:306
3008
  msgid "Back up more databases"
3009
  msgstr ""
3010
 
3011
- #: templates/wp-admin/settings/form-contents.php:263
3012
  msgid "First, enter the decryption key"
3013
  msgstr ""
3014
 
3015
- #: templates/wp-admin/settings/form-contents.php:245
3016
  msgid "You can manually decrypt an encrypted database here."
3017
  msgstr ""
3018
 
3019
- #: templates/wp-admin/settings/form-contents.php:233
3020
  msgid "It can also backup external databases."
3021
  msgstr ""
3022
 
3023
- #: templates/wp-admin/settings/form-contents.php:233
3024
  msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup."
3025
  msgstr ""
3026
 
3027
- #: templates/wp-admin/settings/form-contents.php:96
3028
  msgid "use UpdraftPlus Premium"
3029
  msgstr ""
3030
 
3031
- #: class-updraftplus.php:4109
3032
  msgid "Decryption failed. The database file is encrypted."
3033
  msgstr ""
3034
 
3035
- #: includes/class-wpadmin-commands.php:130
3036
  msgid "Only the WordPress database can be restored; you will need to deal with the external database manually."
3037
  msgstr ""
3038
 
3039
- #: restorer.php:1702 restorer.php:2068 restorer.php:2105 restorer.php:2118
 
3040
  msgid "An error occurred on the first %s command - aborting run"
3041
  msgstr ""
3042
 
3043
- #: addons/moredatabase.php:98 backup.php:1372
3044
  msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled."
3045
  msgstr ""
3046
 
3047
- #: backup.php:1372
3048
  msgid "database connection attempt failed."
3049
  msgstr ""
3050
 
3051
- #: addons/migrator.php:951
3052
  msgid "Warning: the database's home URL (%s) is different to what we expected (%s)"
3053
  msgstr ""
3054
 
3055
- #: addons/google-enhanced.php:84
3056
  msgid "In %s, path names are case sensitive."
3057
  msgstr ""
3058
 
3059
- #: addons/azure.php:553 addons/google-enhanced.php:82 addons/onedrive.php:998
 
3060
  msgid "If you leave it blank, then the backup will be placed in the root of your %s"
3061
  msgstr ""
3062
 
3063
- #: addons/google-enhanced.php:82 addons/googlecloud.php:906
3064
- #: addons/onedrive.php:998
3065
  msgid "e.g. %s"
3066
  msgstr ""
3067
 
3068
- #: addons/google-enhanced.php:82 addons/onedrive.php:998
3069
- msgid "If the folder does not already exist, then it will be created."
3070
- msgstr ""
3071
-
3072
- #: addons/google-enhanced.php:82 addons/onedrive.php:998
3073
  msgid "Enter the path of the %s folder you wish to use here."
3074
  msgstr ""
3075
 
3076
- #: addons/azure.php:546 methods/openstack2.php:154
3077
  msgid "Container"
3078
  msgstr ""
3079
 
3080
- #: methods/openstack2.php:137
3081
  msgid "Leave this blank, and a default will be chosen."
3082
  msgstr ""
3083
 
3084
- #: methods/openstack2.php:128
3085
  msgid "Tenant"
3086
  msgstr ""
3087
 
3088
- #: methods/openstack2.php:128
3089
  msgid "Follow this link for more information"
3090
  msgstr ""
3091
 
3092
- #: methods/openstack2.php:120 methods/openstack2.php:178
3093
  msgid "authentication URI"
3094
  msgstr ""
3095
 
3096
- #: methods/openstack2.php:115
3097
  msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist."
3098
  msgstr ""
3099
 
3100
- #: methods/addon-base-v2.php:194 methods/addon-base-v2.php:214
3101
  msgid "Failed to download %s"
3102
  msgstr ""
3103
 
3104
- #: methods/addon-base-v2.php:208
3105
  msgid "Failed to download"
3106
  msgstr ""
3107
 
3108
- #: methods/addon-base-v2.php:116
3109
  msgid "failed to list files"
3110
  msgstr ""
3111
 
3112
- #: methods/addon-base-v2.php:84 methods/addon-base-v2.php:89
3113
  msgid "Failed to upload %s"
3114
  msgstr ""
3115
 
3116
- #: methods/dropbox.php:614 methods/dropbox.php:616
3117
  msgid "Success:"
3118
  msgstr ""
3119
 
3120
- #: addons/onedrive.php:1006 methods/dropbox.php:512
3121
  msgid "<strong>After</strong> you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s."
3122
  msgstr ""
3123
 
3124
- #: addons/onedrive.php:1004 methods/dropbox.php:509
3125
  msgid "(You appear to be already authenticated)."
3126
  msgstr ""
3127
 
3128
- #: methods/dropbox.php:504 methods/dropbox.php:510 methods/dropbox.php:512
 
3129
  msgid "Dropbox"
3130
  msgstr ""
3131
 
3132
- #: addons/onedrive.php:1003 methods/dropbox.php:504
3133
  msgid "Authenticate with %s"
3134
  msgstr ""
3135
 
3136
- #: methods/cloudfiles.php:407
3137
  msgid "Error downloading remote file: Failed to download"
3138
  msgstr ""
3139
 
3140
- #: methods/openstack-base.php:476 methods/openstack-base.php:481
3141
  msgid "Region: %s"
3142
  msgstr ""
3143
 
3144
- #: methods/openstack-base.php:475
3145
  msgid "%s error - we accessed the container, but failed to create a file within it"
3146
  msgstr ""
3147
 
3148
- #: methods/openstack-base.php:393
3149
  msgid "The %s object was not found"
3150
  msgstr ""
3151
 
3152
- #: methods/openstack-base.php:52 methods/openstack-base.php:316
3153
- #: methods/openstack-base.php:385
3154
  msgid "Could not access %s container"
3155
  msgstr ""
3156
 
3157
- #: methods/openstack-base.php:44 methods/openstack-base.php:112
3158
- #: methods/openstack-base.php:119 methods/openstack-base.php:308
3159
- #: methods/openstack-base.php:373
3160
  msgid "%s error - failed to access the container"
3161
  msgstr ""
3162
 
3163
- #: addons/googlecloud.php:948 addons/onedrive.php:1005 methods/dropbox.php:519
3164
- #: methods/googledrive.php:957
3165
  msgid "Account holder's name: %s."
3166
  msgstr ""
3167
 
3168
- #: methods/googledrive.php:946
3169
  msgid "To be able to set a custom folder name, use UpdraftPlus Premium."
3170
  msgstr ""
3171
 
3172
- #: methods/googledrive.php:937
3173
  msgid "It is an ID number internal to Google Drive"
3174
  msgstr ""
3175
 
3176
- #: methods/googledrive.php:937
3177
  msgid "<strong>This is NOT a folder name</strong>."
3178
  msgstr ""
3179
 
3180
- #: addons/google-enhanced.php:81 addons/onedrive.php:997
3181
- #: methods/googledrive.php:933 methods/googledrive.php:943
3182
  msgid "Folder"
3183
  msgstr ""
3184
 
3185
- #: addons/googlecloud.php:280 addons/onedrive.php:375
3186
- #: methods/googledrive.php:863
3187
  msgid "%s download: failed: file not found"
3188
  msgstr ""
3189
 
3190
- #: addons/googlecloud.php:610 methods/googledrive.php:348
3191
  msgid "Name: %s."
3192
  msgstr ""
3193
 
3194
- #: methods/googledrive.php:141
3195
  msgid "Google Drive list files: failed to access parent folder"
3196
  msgstr ""
3197
 
3198
- #: methods/addon-not-yet-present.php:77 methods/insufficient.php:67
3199
  msgid "Your %s version: %s."
3200
  msgstr ""
3201
 
3202
- #: methods/addon-not-yet-present.php:76 methods/insufficient.php:66
3203
  msgid "You will need to ask your web hosting company to upgrade."
3204
  msgstr ""
3205
 
3206
- #: methods/addon-not-yet-present.php:18 methods/insufficient.php:19
3207
  msgid "This remote storage method (%s) requires PHP %s or later."
3208
  msgstr ""
3209
 
3210
- #: admin.php:3866
3211
- msgid "Theme directory (%s) not found, but lower-case version exists; updating database option accordingly"
3212
- msgstr ""
3213
-
3214
- #: templates/wp-admin/advanced/site-info.php:93
3215
  msgid "Call"
3216
  msgstr ""
3217
 
3218
- #: templates/wp-admin/advanced/site-info.php:91
 
3219
  msgid "Fetch"
3220
  msgstr ""
3221
 
3222
- #: addons/migrator.php:375
3223
- #: templates/wp-admin/settings/downloading-and-restoring.php:56
3224
- #: templates/wp-admin/settings/form-contents.php:253
3225
  msgid "This feature requires %s version %s or later"
3226
  msgstr ""
3227
 
3228
- #: restorer.php:2251
3229
- msgid "Elegant themes theme builder plugin data detected: resetting temporary folder"
3230
- msgstr ""
3231
-
3232
- #: restorer.php:316
3233
- msgid "%s files have been extracted"
3234
- msgstr ""
3235
-
3236
- #: restorer.php:163
3237
  msgid "Failed to unpack the archive"
3238
  msgstr ""
3239
 
3240
- #: class-updraftplus.php:1145
3241
  msgid "Error - failed to download the file"
3242
  msgstr ""
3243
 
3244
- #: templates/wp-admin/settings/downloading-and-restoring.php:39
3245
  msgid "Rescan local folder for new backup sets"
3246
  msgstr ""
3247
 
3248
- #: udaddons/updraftplus-addons.php:208
3249
  msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility."
3250
  msgstr ""
3251
 
3252
- #: udaddons/updraftplus-addons.php:208
3253
  msgid "It has been tested up to version %s."
3254
  msgstr ""
3255
 
3256
- #: udaddons/updraftplus-addons.php:208
3257
  msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)."
3258
  msgstr ""
3259
 
3260
- #: addons/sftp.php:443
3261
  msgid "password/key"
3262
  msgstr ""
3263
 
3264
- #: addons/azure.php:539 addons/migrator.php:2198 addons/sftp.php:396
3265
- #: admin.php:701
3266
  msgid "Key"
3267
  msgstr ""
3268
 
3269
- #: addons/sftp.php:391
3270
  msgid "Your login may be either password or key-based - you only need to enter one, not both."
3271
  msgstr ""
3272
 
3273
- #: addons/sftp.php:309
3274
  msgid "The key provided was not in a valid format, or was corrupt."
3275
  msgstr ""
3276
 
3277
- #: addons/sftp.php:48
3278
  msgid "SCP/SFTP password/key"
3279
  msgstr ""
3280
 
3281
- #: admin.php:3346
3282
  msgid "Files backup (created by %s)"
3283
  msgstr ""
3284
 
3285
- #: admin.php:3346
3286
  msgid "Files and database WordPress backup (created by %s)"
3287
  msgstr ""
3288
 
3289
- #: addons/importer.php:261 admin.php:3340 class-updraftplus.php:2645
 
3290
  msgid "Backup created by: %s."
3291
  msgstr ""
3292
 
3293
- #: admin.php:3309
3294
  msgid "Database (created by %s)"
3295
  msgstr ""
3296
 
3297
- #: admin.php:3303 admin.php:3342
3298
  msgid "unknown source"
3299
  msgstr ""
3300
 
3301
- #: templates/wp-admin/settings/downloading-and-restoring.php:40
3302
  msgid "Rescan remote storage"
3303
  msgstr ""
3304
 
3305
- #: templates/wp-admin/settings/downloading-and-restoring.php:38
3306
  msgid "Upload backup files"
3307
  msgstr ""
3308
 
3309
- #: admin.php:1925
3310
  msgid "This backup was created by %s, and can be imported."
3311
  msgstr ""
3312
 
3313
- #: admin.php:955
3314
  msgid "Read this page for a guide to possible causes and how to fix it."
3315
  msgstr ""
3316
 
3317
- #: admin.php:955
3318
  msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working."
3319
  msgstr ""
3320
 
3321
- #: admin.php:666 class-updraftplus.php:2652
3322
  msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you."
3323
  msgstr ""
3324
 
3325
- #: admin.php:665
3326
  msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern."
3327
  msgstr ""
3328
 
3329
- #: admin.php:665 admin.php:666 class-updraftplus.php:2652
3330
  msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))."
3331
  msgstr ""
3332
 
3333
- #: admin.php:3343 includes/class-wpadmin-commands.php:143 restorer.php:1410
 
3334
  msgid "Backup created by unknown source (%s) - cannot be restored."
3335
  msgstr ""
3336
 
3337
- #: restorer.php:820 restorer.php:868
3338
  msgid "The WordPress content folder (wp-content) was not found in this zip file."
3339
  msgstr ""
3340
 
3341
- #: restorer.php:684
3342
  msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup"
3343
  msgstr ""
3344
 
3345
- #: methods/dropbox.php:294
3346
  msgid "%s returned an unexpected HTTP response: %s"
3347
  msgstr ""
3348
 
3349
- #: addons/sftp.php:903
3350
  msgid "The UpdraftPlus module for this file access method (%s) does not support listing files"
3351
  msgstr ""
3352
 
3353
- #: methods/cloudfiles.php:232 methods/dropbox.php:275
3354
- #: methods/openstack-base.php:107
3355
  msgid "No settings were found"
3356
  msgstr ""
3357
 
3358
- #: class-updraftplus.php:2773
3359
  msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually."
3360
  msgstr ""
3361
 
3362
- #: admin.php:632
3363
  msgid "Rescanning remote and local storage for backup sets..."
3364
  msgstr ""
3365
 
3366
- #: addons/googlecloud.php:911 addons/googlecloud.php:926
3367
- #: addons/s3-enhanced.php:54 addons/s3-enhanced.php:68
3368
  msgid "(Read more)"
3369
  msgstr ""
3370
 
3371
- #: addons/migrator.php:752
3372
- msgid "Adjusting multisite paths"
3373
- msgstr ""
3374
-
3375
- #: addons/reporting.php:414
3376
  msgid "Log all messages to syslog (only server admins are likely to want this)"
3377
  msgstr ""
3378
 
3379
- #: addons/morefiles.php:488
3380
  msgid "No backup of location: there was nothing found to back up"
3381
  msgstr ""
3382
 
3383
- #: addons/moredatabase.php:234 addons/morefiles.php:284
3384
- #: addons/morefiles.php:305
3385
  msgid "Remove"
3386
  msgstr ""
3387
 
3388
- #: methods/s3.php:834
3389
  msgid "Other %s FAQs."
3390
  msgstr ""
3391
 
3392
- #: templates/wp-admin/settings/form-contents.php:366
3393
  msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong."
3394
  msgstr ""
3395
 
3396
- #: addons/morefiles.php:442 admin.php:3060
3397
  msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard."
3398
  msgstr ""
3399
 
3400
- #: restorer.php:2240
3401
- msgid "Custom content type manager plugin data detected: clearing option cache"
3402
- msgstr ""
3403
-
3404
- #: class-updraftplus.php:4349 methods/ftp.php:291 restorer.php:1441
3405
  msgid "Your hosting company must enable these functions before %s can work."
3406
  msgstr ""
3407
 
3408
- #: class-updraftplus.php:4349 methods/ftp.php:291 restorer.php:1440
3409
  msgid "Your web server's PHP installation has these functions disabled: %s."
3410
  msgstr ""
3411
 
3412
- #: methods/ftp.php:288
3413
  msgid "encrypted FTP (explicit encryption)"
3414
  msgstr ""
3415
 
3416
- #: methods/ftp.php:287
3417
  msgid "encrypted FTP (implicit encryption)"
3418
  msgstr ""
3419
 
3420
- #: methods/ftp.php:286
3421
  msgid "regular non-encrypted FTP"
3422
  msgstr ""
3423
 
3424
- #: restorer.php:1602
3425
  msgid "Backup created by:"
3426
  msgstr ""
3427
 
3428
- #: udaddons/options.php:489
3429
  msgid "Available to claim on this site"
3430
  msgstr ""
3431
 
3432
- #: udaddons/updraftplus-addons.php:229
3433
  msgid "To maintain your access to support, please renew."
3434
  msgstr ""
3435
 
3436
- #: udaddons/updraftplus-addons.php:229
3437
  msgid "Your paid access to UpdraftPlus support will soon expire."
3438
  msgstr ""
3439
 
3440
- #: udaddons/updraftplus-addons.php:227
3441
  msgid "To regain your access, please renew."
3442
  msgstr ""
3443
 
3444
- #: udaddons/updraftplus-addons.php:227
3445
  msgid "Your paid access to UpdraftPlus support has expired."
3446
  msgstr ""
3447
 
3448
- #: udaddons/updraftplus-addons.php:223
3449
  msgid "Your paid access to UpdraftPlus updates for this site will soon expire."
3450
  msgstr ""
3451
 
3452
- #: udaddons/updraftplus-addons.php:221 udaddons/updraftplus-addons.php:223
 
3453
  msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew."
3454
  msgstr ""
3455
 
3456
- #: udaddons/updraftplus-addons.php:221
3457
  msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire."
3458
  msgstr ""
3459
 
3460
- #: udaddons/updraftplus-addons.php:217
3461
  msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired."
3462
  msgstr ""
3463
 
3464
- #: udaddons/updraftplus-addons.php:215 udaddons/updraftplus-addons.php:217
 
3465
  msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew."
3466
  msgstr ""
3467
 
3468
- #: udaddons/updraftplus-addons.php:215
3469
  msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus."
3470
  msgstr ""
3471
 
3472
- #: udaddons/updraftplus-addons.php:180
3473
  msgid "Dismiss from main dashboard (for %s weeks)"
3474
  msgstr ""
3475
 
3476
- #: class-updraftplus.php:4399
3477
  msgid "The attempt to undo the double-compression succeeded."
3478
  msgstr ""
3479
 
3480
- #: class-updraftplus.php:4376 class-updraftplus.php:4397
3481
  msgid "The attempt to undo the double-compression failed."
3482
  msgstr ""
3483
 
3484
- #: class-updraftplus.php:4369
3485
  msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver."
3486
  msgstr ""
3487
 
3488
- #: includes/class-wpadmin-commands.php:271
3489
  msgid "Constants"
3490
  msgstr ""
3491
 
3492
- #: backup.php:1607
3493
  msgid "Failed to open database file for reading:"
3494
  msgstr ""
3495
 
3496
- #: backup.php:1420
3497
  msgid "No database tables found"
3498
  msgstr ""
3499
 
3500
- #: backup.php:1418
3501
  msgid "please wait for the rescheduled attempt"
3502
  msgstr ""
3503
 
3504
- #: addons/reporting.php:189
3505
  msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed."
3506
  msgstr ""
3507
 
3508
- #: restorer.php:2134
3509
- msgid "Database queries processed: %d in %.2f seconds"
3510
- msgstr ""
3511
-
3512
- #: addons/migrator.php:1258
3513
- msgid "Searching and replacing reached row: %d"
3514
- msgstr ""
3515
-
3516
- #: addons/migrator.php:675
3517
- msgid "Skipping this table: data in this table (%s) should not be search/replaced"
3518
- msgstr ""
3519
-
3520
- #: addons/onedrive.php:99
3521
  msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)"
3522
  msgstr ""
3523
 
3524
- #: udaddons/updraftplus-addons.php:391 udaddons/updraftplus-addons.php:396
 
3525
  msgid "Errors occurred:"
3526
  msgstr ""
3527
 
3528
- #: admin.php:3541
3529
  msgid "Follow this link to download the log file for this restoration (needed for any support requests)."
3530
  msgstr ""
3531
 
3532
- #: templates/wp-admin/settings/form-contents.php:410
3533
  msgid "See this FAQ also."
3534
  msgstr ""
3535
 
3536
- #: templates/wp-admin/settings/form-contents.php:144
3537
  msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event."
3538
  msgstr ""
3539
 
3540
- #: templates/wp-admin/settings/delete-and-restore-modals.php:42
3541
  msgid "Retrieving (if necessary) and preparing backup files..."
3542
  msgstr ""
3543
 
3544
- #: includes/class-wpadmin-commands.php:114
3545
  msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)."
3546
  msgstr ""
3547
 
3548
- #: restorer.php:675
3549
  msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s"
3550
  msgstr ""
3551
 
3552
- #: admin.php:930 class-updraftplus.php:694
3553
  msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)"
3554
  msgstr ""
3555
 
3556
- #: addons/migrator.php:683
3557
- msgid "Replacing in blogs/site table: from: %s to: %s"
3558
- msgstr ""
3559
-
3560
- #: addons/migrator.php:258
3561
- msgid "%s: Skipping cache file (does not already exist)"
3562
- msgstr ""
3563
-
3564
- #: addons/migrator.php:245
3565
  msgid "Disabled this plugin: %s: re-activate it manually when you are ready."
3566
  msgstr ""
3567
 
3568
- #: addons/sftp.php:658 addons/sftp.php:661 includes/ftp.class.php:44
3569
- #: includes/ftp.class.php:47
3570
  msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company."
3571
  msgstr ""
3572
 
3573
- #: admin.php:3874
3574
- msgid "The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme"
3575
- msgstr ""
3576
-
3577
- #: admin.php:2103 admin.php:2113
3578
- msgid "Restore failed..."
3579
- msgstr ""
3580
-
3581
- #: addons/moredatabase.php:130 admin.php:1324
3582
  msgid "Messages:"
3583
  msgstr ""
3584
 
3585
- #: restorer.php:1970
3586
  msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s"
3587
  msgstr ""
3588
 
3589
- #: restorer.php:455
3590
  msgid "The directory does not exist"
3591
  msgstr ""
3592
 
3593
- #: addons/cloudfiles-enhanced.php:268
3594
  msgid "New User's Email Address"
3595
  msgstr ""
3596
 
3597
- #: addons/cloudfiles-enhanced.php:265
3598
  msgid "New User's Username"
3599
  msgstr ""
3600
 
3601
- #: addons/cloudfiles-enhanced.php:262
3602
  msgid "Admin API Key"
3603
  msgstr ""
3604
 
3605
- #: addons/cloudfiles-enhanced.php:259
3606
  msgid "Admin Username"
3607
  msgstr ""
3608
 
3609
- #: addons/cloudfiles-enhanced.php:254
3610
  msgid "US or UK Rackspace Account"
3611
  msgstr ""
3612
 
3613
- #: addons/cloudfiles-enhanced.php:246
3614
  msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name."
3615
  msgstr ""
3616
 
3617
- #: addons/cloudfiles-enhanced.php:243
3618
  msgid "Create new API user and container"
3619
  msgstr ""
3620
 
3621
- #: addons/cloudfiles-enhanced.php:181
3622
  msgid "API Key: %s"
3623
  msgstr ""
3624
 
3625
- #: addons/cloudfiles-enhanced.php:181
3626
  msgid "Password: %s"
3627
  msgstr ""
3628
 
3629
- #: addons/cloudfiles-enhanced.php:181 addons/s3-enhanced.php:302
3630
  msgid "Username: %s"
3631
  msgstr ""
3632
 
3633
- #: addons/cloudfiles-enhanced.php:140 addons/cloudfiles-enhanced.php:143
3634
- #: addons/cloudfiles-enhanced.php:147 addons/cloudfiles-enhanced.php:159
3635
- #: addons/cloudfiles-enhanced.php:166 addons/cloudfiles-enhanced.php:170
 
 
 
3636
  msgid "Cloud Files operation failed (%s)"
3637
  msgstr ""
3638
 
3639
- #: addons/cloudfiles-enhanced.php:138
3640
  msgid "Conflict: that user or email address already exists"
3641
  msgstr ""
3642
 
3643
- #: addons/cloudfiles-enhanced.php:74
3644
  msgid "You need to enter a valid new email address"
3645
  msgstr ""
3646
 
3647
- #: addons/cloudfiles-enhanced.php:70
3648
  msgid "You need to enter a container"
3649
  msgstr ""
3650
 
3651
- #: addons/cloudfiles-enhanced.php:67
3652
  msgid "You need to enter a new username"
3653
  msgstr ""
3654
 
3655
- #: addons/cloudfiles-enhanced.php:64
3656
  msgid "You need to enter an admin API key"
3657
  msgstr ""
3658
 
3659
- #: addons/cloudfiles-enhanced.php:61
3660
  msgid "You need to enter an admin username"
3661
  msgstr ""
3662
 
3663
- #: addons/cloudfiles-enhanced.php:54
3664
  msgid "Create a new API user with access to only this container (rather than your whole account)"
3665
  msgstr ""
3666
 
3667
- #: addons/cloudfiles-enhanced.php:29
3668
  msgid "Adds enhanced capabilities for Rackspace Cloud Files users"
3669
  msgstr ""
3670
 
3671
- #: addons/cloudfiles-enhanced.php:28
3672
  msgid "Rackspace Cloud Files, enhanced"
3673
  msgstr ""
3674
 
3675
- #: addons/cloudfiles-enhanced.php:275 methods/cloudfiles-new.php:161
3676
  msgid "Cloud Files Container"
3677
  msgstr ""
3678
 
3679
- #: methods/cloudfiles-new.php:156
3680
  msgid "Cloud Files API Key"
3681
  msgstr ""
3682
 
3683
- #: methods/cloudfiles-new.php:151
3684
  msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on."
3685
  msgstr ""
3686
 
3687
- #: methods/cloudfiles-new.php:148
3688
  msgid "Cloud Files Username"
3689
  msgstr ""
3690
 
3691
- #: addons/cloudfiles-enhanced.php:45 methods/cloudfiles-new.php:134
3692
  msgid "London (LON)"
3693
  msgstr ""
3694
 
3695
- #: addons/cloudfiles-enhanced.php:44 methods/cloudfiles-new.php:133
3696
  msgid "Hong Kong (HKG)"
3697
  msgstr ""
3698
 
3699
- #: addons/cloudfiles-enhanced.php:43 methods/cloudfiles-new.php:132
3700
  msgid "Northern Virginia (IAD)"
3701
  msgstr ""
3702
 
3703
- #: addons/cloudfiles-enhanced.php:42 methods/cloudfiles-new.php:131
3704
  msgid "Chicago (ORD)"
3705
  msgstr ""
3706
 
3707
- #: addons/cloudfiles-enhanced.php:41 methods/cloudfiles-new.php:130
3708
  msgid "Sydney (SYD)"
3709
  msgstr ""
3710
 
3711
- #: addons/cloudfiles-enhanced.php:40 methods/cloudfiles-new.php:129
3712
  msgid "Dallas (DFW) (default)"
3713
  msgstr ""
3714
 
3715
- #: addons/cloudfiles-enhanced.php:271 methods/cloudfiles-new.php:124
3716
  msgid "Cloud Files Storage Region"
3717
  msgstr ""
3718
 
3719
- #: methods/cloudfiles-new.php:116
3720
  msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based"
3721
  msgstr ""
3722
 
3723
- #: methods/cloudfiles-new.php:114
3724
  msgid "US or UK-based Rackspace Account"
3725
  msgstr ""
3726
 
3727
- #: addons/cloudfiles-enhanced.php:255 methods/cloudfiles-new.php:114
3728
  msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts."
3729
  msgstr ""
3730
 
3731
- #: addons/cloudfiles-enhanced.php:136 addons/s3-enhanced.php:205
3732
- #: methods/cloudfiles-new.php:39 methods/openstack-base.php:435
3733
- #: methods/openstack-base.php:437 methods/openstack-base.php:457
3734
- #: methods/openstack2.php:25
3735
  msgid "Authorisation failed (check your credentials)"
3736
  msgstr ""
3737
 
3738
- #: methods/updraftvault.php:545 udaddons/options.php:272
3739
  msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com"
3740
  msgstr ""
3741
 
3742
- #: admin.php:679 central/bootstrap.php:513
3743
  msgid "Create"
3744
  msgstr ""
3745
 
3746
- #: admin.php:641
3747
  msgid "Trying..."
3748
  msgstr ""
3749
 
3750
- #: admin.php:640
3751
  msgid "The new user's RackSpace console password is (this will not be shown again):"
3752
  msgstr ""
3753
 
3754
- #: class-updraftplus.php:1599
3755
- msgid "(when decrypted)"
3756
- msgstr ""
3757
-
3758
- #: admin.php:651 admin.php:3816
3759
  msgid "Error data:"
3760
  msgstr ""
3761
 
3762
- #: admin.php:3492
3763
  msgid "Backup does not exist in the backup history"
3764
  msgstr ""
3765
 
3766
- #: admin.php:2472
3767
  msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked."
3768
  msgstr ""
3769
 
3770
- #: restorer.php:1674
3771
  msgid "Split line to avoid exceeding maximum packet size"
3772
  msgstr ""
3773
 
3774
- #: restorer.php:1549
3775
  msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)"
3776
  msgstr ""
3777
 
3778
- #: restorer.php:1368
3779
- msgid "New table prefix: %s"
3780
- msgstr ""
3781
-
3782
- #: restorer.php:1056
3783
- msgid "File permissions do not allow the old data to be moved and retained; instead, it will be deleted."
3784
- msgstr ""
3785
-
3786
- #: restorer.php:1026 restorer.php:1040
3787
- msgid "%s: This directory already exists, and will be replaced"
3788
- msgstr ""
3789
-
3790
- #: restorer.php:160
3791
  msgid "Could not move the files into place. Check your file permissions."
3792
  msgstr ""
3793
 
3794
- #: restorer.php:159
3795
  msgid "Could not move new files into place. Check your wp-content/upgrade folder."
3796
  msgstr ""
3797
 
3798
- #: restorer.php:157
3799
  msgid "Could not move old files out of the way."
3800
  msgstr ""
3801
 
3802
- #: restorer.php:153
3803
  msgid "Moving old data out of the way..."
3804
  msgstr ""
3805
 
3806
- #: addons/reporting.php:405
3807
  msgid "Add another address..."
3808
  msgstr ""
3809
 
3810
- #: addons/reporting.php:391
3811
  msgid "Enter addresses here to have a report sent to them when a backup job finishes."
3812
  msgstr ""
3813
 
3814
- #: addons/reporting.php:366
3815
  msgid "Email reports"
3816
  msgstr ""
3817
 
3818
- #: class-updraftplus.php:1595 class-updraftplus.php:1600
3819
  msgid "%s checksum: %s"
3820
  msgstr ""
3821
 
3822
- #: class-updraftplus.php:1568 class-updraftplus.php:1570
3823
  msgid "files: %s"
3824
  msgstr ""
3825
 
3826
- #: addons/reporting.php:330
3827
  msgid "Use the \"Reporting\" section to configure the email addresses to be used."
3828
  msgstr ""
3829
 
3830
- #: addons/reporting.php:300
3831
- msgid " (with warnings (%s))"
3832
- msgstr ""
3833
-
3834
- #: addons/reporting.php:298
3835
- msgid " (with errors (%s))"
3836
- msgstr ""
3837
-
3838
- #: addons/reporting.php:239
3839
  msgid "Debugging information"
3840
  msgstr ""
3841
 
3842
- #: addons/reporting.php:194 admin.php:3249
3843
  msgid "Uploaded to:"
3844
  msgstr ""
3845
 
3846
- #: addons/reporting.php:193
3847
  msgid "Time taken:"
3848
  msgstr ""
3849
 
3850
- #: addons/reporting.php:184
3851
  msgid "Warnings"
3852
  msgstr ""
3853
 
3854
- #: addons/reporting.php:169
3855
  msgid "Errors"
3856
  msgstr ""
3857
 
3858
- #: addons/reporting.php:166
3859
  msgid "Errors / warnings:"
3860
  msgstr ""
3861
 
3862
- #: addons/morefiles.php:122 addons/morefiles.php:123 addons/reporting.php:155
 
3863
  msgid "Contains:"
3864
  msgstr ""
3865
 
3866
- #: addons/reporting.php:154
3867
  msgid "Backup began:"
3868
  msgstr ""
3869
 
3870
- #: addons/reporting.php:142
3871
  msgid "Backup Report"
3872
  msgstr ""
3873
 
3874
- #: addons/reporting.php:137
3875
  msgid "%d hours, %d minutes, %d seconds"
3876
  msgstr ""
3877
 
3878
- #: addons/reporting.php:123
3879
  msgid "%d errors, %d warnings"
3880
  msgstr ""
3881
 
3882
- #: addons/onedrive.php:719 methods/dropbox.php:598
3883
  msgid "%s authentication"
3884
  msgstr ""
3885
 
3886
- #: addons/onedrive.php:719 class-updraftplus.php:399 methods/dropbox.php:571
3887
- #: methods/dropbox.php:598 methods/dropbox.php:611 methods/dropbox.php:742
 
 
3888
  msgid "%s error: %s"
3889
  msgstr ""
3890
 
3891
- #: addons/googlecloud.php:861 methods/dropbox.php:477
3892
  msgid "%s logo"
3893
  msgstr ""
3894
 
3895
- #: methods/dropbox.php:208
3896
  msgid "%s did not return the expected response - check your log file for more details"
3897
  msgstr ""
3898
 
3899
- #: methods/s3.php:291
3900
  msgid "The required %s PHP module is not installed - ask your web hosting company to enable it"
3901
  msgstr ""
3902
 
3903
- #: methods/email.php:76
3904
  msgid "For more options, use the \"%s\" add-on."
3905
  msgstr ""
3906
 
3907
- #: methods/email.php:75
3908
  msgid "Your site's admin email address (%s) will be used."
3909
  msgstr ""
3910
 
3911
- #: admin.php:688 methods/updraftvault.php:295 methods/updraftvault.php:340
3912
- #: udaddons/options.php:251
3913
  msgid "Connect"
3914
  msgstr ""
3915
 
3916
- #: templates/wp-admin/settings/form-contents.php:334
3917
  msgid "For more reporting features, use the Reporting add-on."
3918
  msgstr ""
3919
 
3920
- #: class-updraftplus.php:4179
3921
  msgid "(version: %s)"
3922
  msgstr ""
3923
 
3924
- #: addons/reporting.php:438 admin.php:630
 
3925
  msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive."
3926
  msgstr ""
3927
 
3928
- #: addons/reporting.php:438 admin.php:629
3929
  msgid "When the Email storage method is enabled, also send the entire backup"
3930
  msgstr ""
3931
 
3932
- #: addons/reporting.php:153 backup.php:945
3933
  msgid "Latest status:"
3934
  msgstr ""
3935
 
3936
- #: backup.php:944
3937
  msgid "Backup contains:"
3938
  msgstr ""
3939
 
3940
- #: backup.php:901
3941
  msgid "Backed up: %s"
3942
  msgstr ""
3943
 
3944
- #: addons/reporting.php:236 backup.php:895
3945
  msgid "The log file has been attached to this email."
3946
  msgstr ""
3947
 
3948
- #: backup.php:859
3949
  msgid "Unknown/unexpected error - please raise a support request"
3950
  msgstr ""
3951
 
3952
- #: backup.php:856
3953
  msgid "Database only (files were not part of this particular schedule)"
3954
  msgstr ""
3955
 
3956
- #: backup.php:856
3957
  msgid "Database (files backup has not completed)"
3958
  msgstr ""
3959
 
3960
- #: backup.php:853
3961
  msgid "Files only (database was not part of this particular schedule)"
3962
  msgstr ""
3963
 
3964
- #: backup.php:853
3965
  msgid "Files (database backup has not completed)"
3966
  msgstr ""
3967
 
3968
- #: admin.php:291 backup.php:851
3969
  msgid "Files and database"
3970
  msgstr ""
3971
 
3972
- #: options.php:184
3973
  msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)."
3974
  msgstr ""
3975
 
3976
- #: options.php:184
3977
  msgid "Without upgrading, UpdraftPlus allows <strong>every</strong> blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) <strong>the entire network</strong>."
3978
  msgstr ""
3979
 
3980
- #: options.php:184
3981
  msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on."
3982
  msgstr ""
3983
 
3984
- #: options.php:184
3985
  msgid "This is a WordPress multi-site (a.k.a. network) installation."
3986
  msgstr ""
3987
 
3988
- #: options.php:184
3989
  msgid "UpdraftPlus warning:"
3990
  msgstr ""
3991
 
3992
- #: udaddons/options.php:495
3993
  msgid "(or connect using the form on this page if you have already purchased it)"
3994
  msgstr ""
3995
 
3996
- #: udaddons/options.php:481
3997
  msgid "please follow this link to update the plugin in order to activate it"
3998
  msgstr ""
3999
 
4000
- #: udaddons/options.php:478
4001
  msgid "please follow this link to update the plugin in order to get it"
4002
  msgstr ""
4003
 
4004
- #: udaddons/options.php:468 udaddons/options.php:470
4005
  msgid "latest"
4006
  msgstr ""
4007
 
4008
- #: udaddons/options.php:466
4009
  msgid "Your version: %s"
4010
  msgstr ""
4011
 
4012
- #: udaddons/options.php:464
4013
  msgid "You've got it"
4014
  msgstr ""
4015
 
4016
- #: udaddons/options.php:430
4017
  msgid "UpdraftPlus Support"
4018
  msgstr ""
4019
 
4020
- #: udaddons/options.php:388
4021
  msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it."
4022
  msgstr ""
4023
 
4024
- #: udaddons/options.php:377 udaddons/updraftplus-addons.php:256
4025
  msgid "UpdraftPlus Addons"
4026
  msgstr ""
4027
 
4028
- #: udaddons/options.php:101
4029
  msgid "An update is available for UpdraftPlus - please follow this link to get it."
4030
  msgstr ""
4031
 
4032
- #: methods/updraftvault.php:618 methods/updraftvault.php:636
4033
- #: udaddons/updraftplus-addons.php:795
4034
  msgid "UpdraftPlus.Com returned a response, but we could not understand it"
4035
  msgstr ""
4036
 
4037
- #: methods/updraftvault.php:632 udaddons/updraftplus-addons.php:792
4038
  msgid "Your email address and password were not recognised by UpdraftPlus.Com"
4039
  msgstr ""
4040
 
4041
- #: methods/updraftvault.php:591 udaddons/updraftplus-addons.php:752
4042
  msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)"
4043
  msgstr ""
4044
 
4045
- #: udaddons/updraftplus-addons.php:682
4046
  msgid "UpdraftPlus.Com responded, but we did not understand the response"
4047
  msgstr ""
4048
 
4049
- #: udaddons/updraftplus-addons.php:680
4050
  msgid "We failed to successfully connect to UpdraftPlus.Com"
4051
  msgstr ""
4052
 
4053
- #: methods/email.php:76 templates/wp-admin/settings/form-contents.php:315
4054
- #: templates/wp-admin/settings/tab-addons.php:200
 
 
4055
  msgid "Reporting"
4056
  msgstr ""
4057
 
4058
- #: admin.php:4266
4059
  msgid "Options (raw)"
4060
  msgstr ""
4061
 
4062
- #: addons/reporting.php:436 admin.php:628
4063
  msgid "Send a report only when there are warnings/errors"
4064
  msgstr ""
4065
 
4066
- #: restorer.php:1613
4067
  msgid "Content URL:"
4068
  msgstr ""
4069
 
4070
- #: restorer.php:157
4071
  msgid "You should check the file ownerships and permissions in your WordPress installation"
4072
  msgstr ""
4073
 
4074
- #: templates/wp-admin/settings/form-contents.php:219
4075
  msgid "See also the \"More Files\" add-on from our shop."
4076
  msgstr ""
4077
 
4078
- #: backup.php:3012 class-updraftplus.php:707
4079
  msgid "Your free space in your hosting account is very low - only %s Mb remain"
4080
  msgstr ""
4081
 
4082
- #: class-updraftplus.php:691
4083
  msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)"
4084
  msgstr ""
4085
 
4086
- #: udaddons/options.php:554
4087
  msgid "Manage Addons"
4088
  msgstr ""
4089
 
4090
- #: udaddons/options.php:496
4091
  msgid "Buy It"
4092
  msgstr ""
4093
 
4094
- #: udaddons/options.php:495
4095
  msgid "Get it from the UpdraftPlus.Com Store"
4096
  msgstr ""
4097
 
4098
- #: udaddons/options.php:489 udaddons/options.php:491
4099
  msgid "activate it on this site"
4100
  msgstr ""
4101
 
4102
- #: udaddons/options.php:491
4103
  msgid "You have an inactive purchase"
4104
  msgstr ""
4105
 
4106
- #: udaddons/options.php:481
4107
  msgid "Assigned to this site"
4108
  msgstr ""
4109
 
4110
- #: udaddons/options.php:478
4111
  msgid "Available for this site (via your all-addons purchase)"
4112
  msgstr ""
4113
 
4114
- #: udaddons/options.php:472
4115
  msgid "(apparently a pre-release or withdrawn release)"
4116
  msgstr ""
4117
 
4118
- #: udaddons/options.php:432
4119
  msgid "Go here"
4120
  msgstr ""
4121
 
4122
- #: udaddons/options.php:432
4123
  msgid "Need to get support?"
4124
  msgstr ""
4125
 
4126
- #: udaddons/options.php:414
4127
  msgid "An error occurred when trying to retrieve your add-ons."
4128
  msgstr ""
4129
 
4130
- #: udaddons/options.php:347
4131
  msgid "An unknown response was received. Response was:"
4132
  msgstr ""
4133
 
4134
- #: udaddons/options.php:346
4135
  msgid "Claim not granted - your account login details were wrong"
4136
  msgstr ""
4137
 
4138
- #: udaddons/options.php:344
4139
  msgid "Please wait whilst we make the claim..."
4140
  msgstr ""
4141
 
4142
- #: udaddons/options.php:297
4143
  msgid "Errors occurred when trying to connect to UpdraftPlus.Com:"
4144
  msgstr ""
4145
 
4146
- #: udaddons/options.php:288
4147
  msgid "You are presently <strong>not connected</strong> to an UpdraftPlus.Com account."
4148
  msgstr ""
4149
 
4150
- #: udaddons/options.php:279
4151
  msgid "If you bought new add-ons, then follow this link to refresh your connection"
4152
  msgstr ""
4153
 
4154
- #: udaddons/options.php:278
4155
  msgid "You are presently <strong>connected</strong> to an UpdraftPlus.Com account."
4156
  msgstr ""
4157
 
4158
- #: udaddons/options.php:249
4159
  msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here."
4160
  msgstr ""
4161
 
4162
- #: udaddons/options.php:190
4163
  msgid "Forgotten your details?"
4164
  msgstr ""
4165
 
4166
- #: udaddons/options.php:179
4167
  msgid "Not yet got an account (it's free)? Go get one!"
4168
  msgstr ""
4169
 
4170
- #: udaddons/options.php:148
4171
  msgid "Connect with your UpdraftPlus.Com account"
4172
  msgstr ""
4173
 
4174
- #: udaddons/options.php:127
4175
- msgid "Your web server's version of PHP is too old ("
4176
- msgstr ""
4177
-
4178
- #: udaddons/options.php:121
4179
  msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?"
4180
  msgstr ""
4181
 
4182
- #: udaddons/options.php:120
4183
  msgid "Go here to begin installing it."
4184
  msgstr ""
4185
 
4186
- #: udaddons/options.php:120
4187
  msgid "UpdraftPlus is not yet installed."
4188
  msgstr ""
4189
 
4190
- #: udaddons/options.php:117
4191
  msgid "Go here to activate it."
4192
  msgstr ""
4193
 
4194
- #: udaddons/options.php:116
4195
  msgid "UpdraftPlus is not yet activated."
4196
  msgstr ""
4197
 
4198
- #: udaddons/options.php:107 udaddons/options.php:109
4199
  msgid "Go here to connect."
4200
  msgstr ""
4201
 
4202
- #: udaddons/options.php:107
4203
  msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons."
4204
  msgstr ""
4205
 
4206
- #: addons/moredatabase.php:299 addons/moredatabase.php:388
4207
  msgid "Without it, encryption will be a lot slower."
4208
  msgstr ""
4209
 
4210
- #: addons/moredatabase.php:299 addons/moredatabase.php:388
4211
  msgid "Your web-server does not have the %s module installed."
4212
  msgstr ""
4213
 
4214
- #: addons/googlecloud.php:944 methods/googledrive.php:953
4215
  msgid "<strong>(You appear to be already authenticated,</strong> though you can authenticate again to refresh your access if you've had a problem)."
4216
  msgstr ""
4217
 
4218
- #: templates/wp-admin/settings/downloading-and-restoring.php:62
4219
  msgid "Drop backup files here"
4220
  msgstr ""
4221
 
4222
- #: admin.php:639
 
 
 
 
4223
  msgid "The web server returned an error code (try again, or check your web server logs)"
4224
  msgstr ""
4225
 
4226
- #: admin.php:637
4227
  msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished."
4228
  msgstr ""
4229
 
4230
- #: admin.php:634
4231
  msgid "If you exclude both the database and the files, then you have excluded everything!"
4232
  msgstr ""
4233
 
4234
- #: restorer.php:1607
4235
  msgid "Site home:"
4236
  msgstr ""
4237
 
4238
- #: addons/morestorage.php:79
4239
  msgid "Remote Storage Options"
4240
  msgstr ""
4241
 
4242
- #: addons/autobackup.php:292 addons/autobackup.php:382
4243
  msgid "(logs can be found in the UpdraftPlus settings page as normal)..."
4244
  msgstr ""
4245
 
4246
- #: addons/autobackup.php:252 addons/autobackup.php:996
4247
  msgid "Remember this choice for next time (you will still have the chance to change it)"
4248
  msgstr ""
4249
 
4250
- #: addons/azure.php:360 methods/stream-base.php:121 methods/stream-base.php:126
 
4251
  msgid "Upload failed"
4252
  msgstr ""
4253
 
4254
- #: templates/wp-admin/settings/form-contents.php:135
4255
  msgid "You can send a backup to more than one destination with an add-on."
4256
  msgstr ""
4257
 
4258
- #: admin.php:2690
4259
  msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal."
4260
  msgstr ""
4261
 
4262
- #: admin.php:2588
4263
  msgid "(%s%%, file %s of %s)"
4264
  msgstr ""
4265
 
4266
- #: addons/autobackup.php:253 addons/autobackup.php:1001
4267
- #: addons/lockadmin.php:142
4268
  msgid "Read more about how this works..."
4269
  msgstr ""
4270
 
4271
- #: addons/sftp.php:503
4272
  msgid "Failed: We were able to log in, but failed to successfully create a file in that location."
4273
  msgstr ""
4274
 
4275
- #: addons/sftp.php:501
4276
  msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location."
4277
  msgstr ""
4278
 
4279
- #: addons/sftp.php:422
4280
  msgid "Use SCP instead of SFTP"
4281
  msgstr ""
4282
 
4283
- #: addons/sftp.php:47
4284
  msgid "SCP/SFTP user setting"
4285
  msgstr ""
4286
 
4287
- #: addons/sftp.php:46
4288
  msgid "SCP/SFTP host setting"
4289
  msgstr ""
4290
 
4291
- #: methods/email.php:60
4292
  msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)"
4293
  msgstr ""
4294
 
4295
- #: methods/email.php:47
4296
  msgid "Backup is of: %s."
4297
  msgstr ""
4298
 
4299
- #: admin.php:727
4300
  msgid "%s settings test result:"
4301
  msgstr ""
4302
 
4303
- #: admin.php:3410 admin.php:3412
4304
  msgid "(Not finished)"
4305
  msgstr ""
4306
 
4307
- #: admin.php:3412
4308
  msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes."
4309
  msgstr ""
4310
 
4311
- #: templates/wp-admin/settings/form-contents.php:393
4312
  msgid "<b>Do not</b> place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)."
4313
  msgstr ""
4314
 
4315
- #: templates/wp-admin/settings/form-contents.php:393
4316
  msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)."
4317
  msgstr ""
4318
 
4319
- #: admin.php:2685
4320
  msgid "Job ID: %s"
4321
  msgstr ""
4322
 
4323
- #: admin.php:2670
4324
  msgid "last activity: %ss ago"
4325
  msgstr ""
4326
 
4327
- #: admin.php:2669
4328
  msgid "next resumption: %d (after %ss)"
4329
  msgstr ""
4330
 
4331
- #: admin.php:2652 central/bootstrap.php:405 central/bootstrap.php:412
4332
- #: methods/updraftvault.php:375 methods/updraftvault.php:455
 
4333
  msgid "Unknown"
4334
  msgstr ""
4335
 
4336
- #: admin.php:2602
4337
  msgid "Backup finished"
4338
  msgstr ""
4339
 
4340
- #: admin.php:2597
4341
  msgid "Waiting until scheduled time to retry because of errors"
4342
  msgstr ""
4343
 
4344
- #: admin.php:2593
4345
  msgid "Pruning old backup sets"
4346
  msgstr ""
4347
 
4348
- #: admin.php:2581
4349
  msgid "Uploading files to remote storage"
4350
  msgstr ""
4351
 
4352
- #: admin.php:2650
4353
  msgid "Encrypted database"
4354
  msgstr ""
4355
 
4356
- #: admin.php:2642
4357
  msgid "Encrypting database"
4358
  msgstr ""
4359
 
4360
- #: admin.php:2616
4361
  msgid "Created database backup"
4362
  msgstr ""
4363
 
4364
- #: admin.php:2629
4365
  msgid "table: %s"
4366
  msgstr ""
4367
 
4368
- #: admin.php:2627
4369
  msgid "Creating database backup"
4370
  msgstr ""
4371
 
4372
- #: admin.php:2575
4373
  msgid "Created file backup zips"
4374
  msgstr ""
4375
 
4376
- #: admin.php:2562
4377
  msgid "Creating file backup zips"
4378
  msgstr ""
4379
 
4380
- #: admin.php:2557
4381
  msgid "Backup begun"
4382
  msgstr ""
4383
 
4384
- #: admin.php:2400
4385
  msgid "Backups in progress:"
4386
  msgstr ""
4387
 
4388
- #: admin.php:934
4389
  msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even &quot;Backup Now&quot;) unless either you have set up a facility to call the scheduler manually, or until it is enabled."
4390
  msgstr ""
4391
 
4392
- #: restorer.php:657
4393
  msgid "file"
4394
  msgstr ""
4395
 
4396
- #: restorer.php:650
4397
  msgid "folder"
4398
  msgstr ""
4399
 
4400
- #: restorer.php:650 restorer.php:657
4401
  msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)"
4402
  msgstr ""
4403
 
4404
- #: class-updraftplus.php:2870
4405
  msgid "The backup has not finished; a resumption is scheduled"
4406
  msgstr ""
4407
 
4408
- #: class-updraftplus.php:1840
4409
  msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:"
4410
  msgstr ""
4411
 
4412
- #: addons/googlecloud.php:366 addons/onedrive.php:887
4413
- #: includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115
4414
- #: includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:118
4415
- #: methods/googledrive.php:229
4416
  msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)."
4417
  msgstr ""
4418
 
4419
- #: admin.php:2223
4420
  msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)."
4421
  msgstr ""
4422
 
4423
- #: addons/autobackup.php:1006 admin.php:681
4424
  msgid "Proceed with update"
4425
  msgstr ""
4426
 
4427
- #: addons/autobackup.php:1005
4428
  msgid "Do not abort after pressing Proceed below - wait for the backup to complete."
4429
  msgstr ""
4430
 
4431
- #: addons/autobackup.php:113 addons/autobackup.php:982
4432
  msgid "UpdraftPlus Automatic Backups"
4433
  msgstr ""
4434
 
4435
- #: addons/autobackup.php:469
4436
  msgid "Errors have occurred:"
4437
  msgstr ""
4438
 
4439
- #: addons/autobackup.php:441
4440
  msgid "Creating backup with UpdraftPlus..."
4441
  msgstr ""
4442
 
4443
- #: addons/autobackup.php:391 addons/autobackup.php:516
4444
- #: addons/autobackup.php:567
4445
  msgid "Automatic Backup"
4446
  msgstr ""
4447
 
4448
- #: addons/autobackup.php:382
4449
  msgid "Creating database backup with UpdraftPlus..."
4450
  msgstr ""
4451
 
4452
- #: addons/autobackup.php:371
4453
- msgid "You do not have sufficient permissions to update this site."
4454
- msgstr ""
4455
-
4456
- #: addons/autobackup.php:350
4457
  msgid "themes"
4458
  msgstr ""
4459
 
4460
- #: addons/autobackup.php:343
4461
  msgid "plugins"
4462
  msgstr ""
4463
 
4464
- #: addons/autobackup.php:296 addons/autobackup.php:389
4465
  msgid "Starting automatic backup..."
4466
  msgstr ""
4467
 
4468
- #: addons/autobackup.php:292
4469
  msgid "Creating %s and database backup with UpdraftPlus..."
4470
  msgstr ""
4471
 
4472
- #: addons/autobackup.php:250
4473
  msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating"
4474
  msgstr ""
4475
 
4476
- #: addons/morefiles.php:230 addons/morefiles.php:231
4477
  msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation."
4478
  msgstr ""
4479
 
4480
- #: addons/morefiles.php:230 addons/morefiles.php:231
4481
  msgid "This does not look like a valid WordPress core backup - the file %s was missing."
4482
  msgstr ""
4483
 
4484
- #: addons/morefiles.php:183
4485
  msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity."
4486
  msgstr ""
4487
 
4488
- #: addons/morefiles.php:173
4489
  msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity."
4490
  msgstr ""
4491
 
4492
- #: templates/wp-admin/settings/header.php:14
4493
  msgid "More plugins"
4494
  msgstr ""
4495
 
4496
- #: templates/wp-admin/settings/header.php:11
4497
- #: templates/wp-admin/settings/tab-addons.php:19
 
4498
  msgid "Support"
4499
  msgstr ""
4500
 
4501
- #: class-updraftplus.php:4332
4502
  msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup."
4503
  msgstr ""
4504
 
4505
- #: class-updraftplus.php:4324
4506
  msgid "This database backup is missing core WordPress tables: %s"
4507
  msgstr ""
4508
 
4509
- #: class-updraftplus.php:4212
4510
  msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this."
4511
  msgstr ""
4512
 
4513
- #: class-updraftplus.php:4128
4514
- msgid "The database is too small to be a valid WordPress database (size: %s Kb)."
4515
- msgstr ""
4516
-
4517
- #: addons/autobackup.php:556 admin.php:898
4518
- msgid "Update Theme"
4519
  msgstr ""
4520
 
4521
- #: addons/autobackup.php:505 admin.php:894
4522
- msgid "Update Plugin"
4523
  msgstr ""
4524
 
4525
- #: addons/autobackup.php:985 admin.php:767 includes/updraftplus-notices.php:171
 
4526
  msgid "Be safe with an automatic backup"
4527
  msgstr ""
4528
 
4529
- #: restorer.php:2219
4530
- msgid "Uploads path (%s) does not exist - resetting (%s)"
4531
- msgstr ""
4532
-
4533
- #: admin.php:2175
4534
  msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site."
4535
  msgstr ""
4536
 
4537
- #: admin.php:675
4538
  msgid "The file was uploaded."
4539
  msgstr ""
4540
 
4541
- #: admin.php:674
4542
  msgid "Unknown server response status:"
4543
  msgstr ""
4544
 
4545
- #: admin.php:673
4546
  msgid "Unknown server response:"
4547
  msgstr ""
4548
 
4549
- #: admin.php:672
4550
  msgid "This decryption key will be attempted:"
4551
  msgstr ""
4552
 
4553
- #: admin.php:671
4554
  msgid "Follow this link to attempt decryption and download the database file to your computer."
4555
  msgstr ""
4556
 
4557
- #: admin.php:670
4558
  msgid "Upload error"
4559
  msgstr ""
4560
 
4561
- #: admin.php:669
4562
  msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)."
4563
  msgstr ""
4564
 
4565
- #: admin.php:668
4566
  msgid "Upload error:"
4567
  msgstr ""
4568
 
4569
- #: admin.php:667
4570
  msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)"
4571
  msgstr ""
4572
 
4573
- #: admin.php:658
4574
  msgid "Download to your computer"
4575
  msgstr ""
4576
 
4577
- #: admin.php:657
4578
  msgid "Delete from your web server"
4579
  msgstr ""
4580
 
4581
- #: methods/s3.php:794
4582
- msgid "Examples of S3-compatible storage providers:"
4583
- msgstr ""
4584
-
4585
- #: admin.php:3766
4586
- msgid "Will not delete any archives after unpacking them, because there was no cloud storage for this backup"
4587
- msgstr ""
4588
-
4589
- #: admin.php:3380
4590
  msgid "You appear to be missing one or more archives from this multi-archive set."
4591
  msgstr ""
4592
 
4593
- #: admin.php:3377
4594
  msgid "(%d archive(s) in set)."
4595
  msgstr ""
4596
 
4597
- #: templates/wp-admin/settings/form-contents.php:370
4598
  msgid "Split archives every:"
4599
  msgstr ""
4600
 
4601
- #: addons/moredatabase.php:272
4602
  msgid "Error: the server sent us a response (JSON) which we did not understand."
4603
  msgstr ""
4604
 
4605
- #: admin.php:648
4606
  msgid "Warnings:"
4607
  msgstr ""
4608
 
4609
- #: admin.php:647
4610
  msgid "Error: the server sent an empty response."
4611
  msgstr ""
4612
 
4613
- #: admin.php:1936
4614
  msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?"
4615
  msgstr ""
4616
 
4617
- #: includes/class-wpadmin-commands.php:195
4618
  msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying."
4619
  msgstr ""
4620
 
4621
- #: includes/class-wpadmin-commands.php:193
4622
  msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first."
4623
  msgstr ""
4624
 
4625
- #: includes/class-wpadmin-commands.php:191
4626
  msgid "The backup archive files have been successfully processed. Now press Restore again to proceed."
4627
  msgstr ""
4628
 
4629
- #: includes/class-wpadmin-commands.php:186
4630
  msgid "This multi-archive backup set appears to have the following archives missing: %s"
4631
  msgstr ""
4632
 
4633
- #: includes/class-wpadmin-commands.php:171
4634
  msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt."
4635
  msgstr ""
4636
 
4637
- #: includes/class-wpadmin-commands.php:166
4638
  msgid "File was found, but is zero-sized (you need to re-upload it): %s"
4639
  msgstr ""
4640
 
4641
- #: includes/class-wpadmin-commands.php:164
4642
  msgid "File not found (you need to upload it): %s"
4643
  msgstr ""
4644
 
4645
- #: includes/class-wpadmin-commands.php:96
4646
  msgid "No such backup set exists"
4647
  msgstr ""
4648
 
4649
- #: admin.php:1212
4650
  msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder"
4651
  msgstr ""
4652
 
4653
- #: restorer.php:599
4654
- msgid "Failed to move directory (check your file permissions and disk quota): %s"
4655
- msgstr ""
4656
-
4657
- #: restorer.php:590
4658
- msgid "Failed to move file (check your file permissions and disk quota): %s"
4659
- msgstr ""
4660
-
4661
- #: restorer.php:154
4662
  msgid "Moving unpacked backup into place..."
4663
  msgstr ""
4664
 
4665
- #: backup.php:2716 backup.php:2972
4666
  msgid "Failed to open the zip file (%s) - %s"
4667
  msgstr ""
4668
 
4669
- #: addons/morefiles.php:161
4670
  msgid "WordPress root directory server path: %s"
4671
  msgstr ""
4672
 
4673
- #: methods/s3.php:839
4674
  msgid "%s end-point"
4675
  msgstr ""
4676
 
4677
- #: methods/s3.php:801
4678
  msgid "... and many more!"
4679
  msgstr ""
4680
 
4681
- #: methods/s3generic.php:48 methods/s3generic.php:56
4682
  msgid "S3 (Compatible)"
4683
  msgstr ""
4684
 
4685
- #: admin.php:3687
4686
  msgid "File is not locally present - needs retrieving from remote storage"
4687
  msgstr ""
4688
 
4689
- #: admin.php:3674
4690
  msgid "Looking for %s archive: file name: %s"
4691
  msgstr ""
4692
 
4693
- #: admin.php:3635
4694
  msgid "Final checks"
4695
  msgstr ""
4696
 
4697
- #: templates/wp-admin/settings/form-contents.php:376
4698
  msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)."
4699
  msgstr ""
4700
 
4701
- #: templates/wp-admin/settings/form-contents.php:260
4702
  msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption"
4703
  msgstr ""
4704
 
4705
- #: admin.php:3049
4706
  msgid "Your wp-content directory server path: %s"
4707
  msgstr ""
4708
 
4709
- #: admin.php:664
4710
  msgid "Raw backup history"
4711
  msgstr ""
4712
 
4713
- #: templates/wp-admin/advanced/site-info.php:97
4714
  msgid "Show raw backup and file list"
4715
  msgstr ""
4716
 
4717
- #: admin.php:646
4718
  msgid "Processing files - please wait..."
4719
  msgstr ""
4720
 
4721
- #: admin.php:3818 templates/wp-admin/settings/downloading-and-restoring.php:29
 
4722
  msgid "Please consult this FAQ for help on what to do about it."
4723
  msgstr ""
4724
 
4725
- #: templates/wp-admin/settings/downloading-and-restoring.php:29
4726
  msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corru
11
  "Language: af_ZA\n"
12
  "Project-Id-Version: UpdraftPlus\n"
13
 
14
+ #: src/udaddons/options.php:127
15
+ msgid "Your web server's version of PHP is too old (.phpversion.) - UpdraftPlus expects at least %s. You can try it, but don't be surprised if it does not work. To fix this problem, contact your web hosting company"
16
  msgstr ""
17
 
18
+ #: src/templates/wp-admin/settings/tab-status.php:81
19
+ msgid "Remote storage authentication"
20
  msgstr ""
21
 
22
+ #: src/templates/wp-admin/settings/tab-addons.php:151
23
+ msgid "Network and multisite"
24
  msgstr ""
25
 
26
+ #: src/templates/wp-admin/settings/tab-addons.php:87
27
+ msgid "Migrator"
28
  msgstr ""
29
 
30
+ #: src/templates/wp-admin/settings/tab-addons.php:71
31
+ msgid "Additional storage"
32
+ msgstr ""
33
+
34
+ #: src/templates/wp-admin/settings/tab-addons.php:55
35
+ msgid "Remote storage"
36
+ msgstr ""
37
+
38
+ #: src/templates/wp-admin/settings/form-contents.php:300
39
+ msgid "This feature is part of UpdraftPlus Premium."
40
+ msgstr ""
41
+
42
+ #: src/templates/wp-admin/settings/form-contents.php:262
43
+ msgid "Select Files"
44
+ msgstr ""
45
+
46
+ #: src/restorer.php:1799
47
+ msgid "Requested table engine (%s) is present."
48
+ msgstr ""
49
+
50
+ #: src/restorer.php:459
51
+ msgid "Failed to create directory"
52
  msgstr ""
53
 
54
+ #: src/methods/updraftvault.php:339
55
+ msgid "__Password"
56
  msgstr ""
57
 
58
+ #: src/methods/updraftvault.php:338
59
+ msgid "__E-mail"
60
  msgstr ""
61
 
62
+ #: src/methods/openstack-base.php:407
63
+ msgid "Error downloading remote file: Failed to download. (.$e->getMessage.)"
64
  msgstr ""
65
 
66
+ #: src/methods/cloudfiles.php:497
67
+ msgid "Rackspace Storage Region"
68
  msgstr ""
69
 
70
+ #: src/includes/updraftplus-notices.php:193
71
+ msgid "Find out more about our revolutionary new WordPress plugin."
72
+ msgstr ""
73
+
74
+ #: src/includes/updraftplus-notices.php:193
75
+ msgid "Instant and secure logon with a wave of your phone."
76
+ msgstr ""
77
+
78
+ #: src/class-updraftplus.php:878
79
+ msgid "$pre_line"
80
+ msgstr ""
81
+
82
+ #: src/backup.php:1890
83
+ msgid "As previously warned (see: %s), encryption is no longer a feature of the free edition of UpdraftPlus"
84
+ msgstr ""
85
+
86
+ #: src/admin.php:4303
87
+ msgid "Value"
88
+ msgstr ""
89
+
90
+ #: src/admin.php:3506
91
+ msgid "No backup log)"
92
+ msgstr ""
93
+
94
+ #: src/admin.php:1442
95
+ msgid "Did not know how to delete from this cloud service."
96
+ msgstr ""
97
+
98
+ #: src/addons/sftp.php:646
99
+ msgid "Encrypted login failed; trying non-encrypted"
100
+ msgstr ""
101
+
102
+ #: src/addons/s3-enhanced.php:72
103
+ msgid "__Check this box to use Amazon's server-side encryption"
104
+ msgstr ""
105
+
106
+ #: src/addons/azure.php:536
107
+ msgid "You must add the following as the authorised redirect URI in your Azure console (under \"API Settings\") when asked"
108
+ msgstr ""
109
+
110
+ #: src/templates/wp-admin/settings/existing-backups-table.php:69
111
+ msgid "Stored at: %s"
112
+ msgstr ""
113
+
114
+ #: src/methods/cloudfiles.php:520
115
+ msgid "Cloud Files"
116
+ msgstr ""
117
+
118
+ #: src/admin.php:4148
119
+ msgid "Your settings failed to save. Please refresh the settings page and try again"
120
+ msgstr ""
121
+
122
+ #: src/admin.php:4107
123
+ msgid "UpdraftPlus seems to have been updated to version (%s), which is different to the version running when this settings page was loaded. Please reload the settings page before trying to save settings."
124
+ msgstr ""
125
+
126
+ #: src/methods/updraftvault.php:62,
127
+ #: src/templates/wp-admin/settings/tab-addons.php:277
128
+ msgid "UpdraftVault"
129
+ msgstr ""
130
+
131
+ #: src/includes/class-wpadmin-commands.php:467
132
  msgid "archive"
133
  msgstr ""
134
 
135
+ #: src/includes/class-wpadmin-commands.php:458
136
  msgid "Extra database"
137
  msgstr ""
138
 
139
+ #: src/admin.php:3399
140
  msgid "Press here to download or browse"
141
  msgstr ""
142
 
143
+ #: src/admin.php:1065, src/admin.php:1075
144
  msgid "Error: invalid path"
145
  msgstr ""
146
 
147
+ #: src/admin.php:923
148
  msgid "An error occurred when fetching storage module options: "
149
  msgstr ""
150
 
151
+ #: src/admin.php:751
152
  msgid "Loading log file"
153
  msgstr ""
154
 
155
+ #: src/admin.php:750
156
  msgid "Unable to download file. This could be caused by a timeout. It would be best to download the zip to your computer."
157
  msgstr ""
158
 
159
+ #: src/admin.php:749
160
  msgid "Search"
161
  msgstr ""
162
 
163
+ #: src/admin.php:748
164
  msgid "Select a file to view information about it"
165
  msgstr ""
166
 
167
+ #: src/admin.php:747
168
  msgid "Browsing zip file"
169
  msgstr ""
170
 
171
+ #: src/admin.php:717
172
  msgid "With UpdraftPlus Premium, you can directly download individual files from here."
173
  msgstr ""
174
 
175
+ #: src/admin.php:665
176
  msgid "Browse contents"
177
  msgstr ""
178
 
179
+ #: src/restorer.php:1629
180
  msgid "Skipped tables:"
181
  msgstr ""
182
 
183
+ #: src/class-updraftplus.php:4328
184
  msgid "This database backup has the following WordPress tables excluded: %s"
185
  msgstr ""
186
 
187
+ #: src/admin.php:2385
188
  msgid "With UpdraftPlus Premium, you can choose to backup non-WordPress tables, backup only specified tables, and backup other databases too."
189
  msgstr ""
190
 
191
+ #: src/admin.php:2385
192
  msgid "All WordPress tables will be backed up."
193
  msgstr ""
194
 
195
+ #: src/admin.php:746
196
  msgid "Further information may be found in the browser JavaScript console, and the server PHP error logs."
197
  msgstr ""
198
 
199
+ #: src/admin.php:746
200
  msgid "That you are attempting to upload a zip file previously created by UpdraftPlus."
201
  msgstr ""
202
 
203
+ #: src/admin.php:746
204
  msgid "The available memory on the server."
205
  msgstr ""
206
 
207
+ #: src/admin.php:746
208
  msgid "Any settings in your .htaccess or web.config file that affects the maximum upload or post size."
209
  msgstr ""
210
 
211
+ #: src/admin.php:746
212
  msgid "The file failed to upload. Please check the following:"
213
  msgstr ""
214
 
215
+ #: src/admin.php:745
216
  msgid "HTTP code:"
217
  msgstr ""
218
 
219
+ #: src/admin.php:642
220
  msgid "You have chosen to backup a database, but no tables have been selected"
221
  msgstr ""
222
 
223
+ #: src/addons/moredatabase.php:585
224
  msgid "tables"
225
  msgstr ""
226
 
227
+ #: src/addons/moredatabase.php:584
228
  msgid "WordPress database"
229
  msgstr ""
230
 
231
+ #: src/addons/moredatabase.php:577
232
  msgid "You should backup all tables unless you are an expert in the internals of the WordPress database."
233
  msgstr ""
234
 
235
+ #: src/templates/wp-admin/settings/tab-addons.php:300
236
  msgid "Everyone can use the free version; but UpdraftGold bundles an enhanced paid version."
237
  msgstr ""
238
 
239
+ #: src/templates/wp-admin/settings/tab-addons.php:298
240
  msgid "UpdraftCentral Cloud or Premium"
241
  msgstr ""
242
 
243
+ #: src/templates/wp-admin/settings/tab-addons.php:281,
244
+ #: src/templates/wp-admin/settings/tab-addons.php:301
245
  msgid "Find out more"
246
  msgstr ""
247
 
248
+ #: src/templates/wp-admin/settings/tab-addons.php:280
249
  msgid "UpdraftPlus has its own embedded storage option, providing a zero-hassle way to download, store and manage all your backups from one place."
250
  msgstr ""
251
 
252
+ #: src/templates/wp-admin/settings/tab-addons.php:37,
253
+ #: src/templates/wp-admin/settings/tab-addons.php:272
254
  msgid "UpdraftPlus Gold"
255
  msgstr ""
256
 
257
+ #: src/templates/wp-admin/settings/tab-addons.php:266
258
  msgid "UpdraftPlus Free"
259
  msgstr ""
260
 
261
+ #: src/templates/wp-admin/settings/tab-addons.php:263
262
  msgid "Other products bundled with UpdraftPlus Premium or Gold"
263
  msgstr ""
264
 
265
+ #: src/templates/wp-admin/settings/tab-addons.php:249
266
  msgid "Lock access to UpdraftPlus via a password so you choose which admin users can access backups."
267
  msgstr ""
268
 
269
+ #: src/templates/wp-admin/settings/tab-addons.php:233
270
  msgid "Some backup plugins can’t restore a backup, so Premium allows you to restore backups from other plugins."
271
  msgstr ""
272
 
273
+ #: src/templates/wp-admin/settings/tab-addons.php:231,
274
+ #: src/templates/wp-admin/settings/tab-addons.php:232
275
  msgid "Importer"
276
  msgstr ""
277
 
278
+ #: src/templates/wp-admin/settings/tab-addons.php:217
279
  msgid "Tidy things up for clients and remove all adverts for our other products."
280
  msgstr ""
281
 
282
+ #: src/templates/wp-admin/settings/tab-addons.php:215,
283
+ #: src/templates/wp-admin/settings/tab-addons.php:216
284
  msgid "No ads"
285
  msgstr ""
286
 
287
+ #: src/templates/wp-admin/settings/tab-addons.php:201
288
  msgid "Sophisticated reporting and emailing capabilities."
289
  msgstr ""
290
 
291
+ #: src/templates/wp-admin/settings/tab-addons.php:185
292
  msgid "Encrypt your sensitive databases (e.g. customer information or passwords); Backup external databases too."
293
  msgstr ""
294
 
295
+ #: src/templates/wp-admin/settings/tab-addons.php:183,
296
+ #: src/templates/wp-admin/settings/tab-addons.php:184
297
  msgid "More database options"
298
  msgstr ""
299
 
300
+ #: src/templates/wp-admin/settings/tab-addons.php:169
301
  msgid "Set exact times to create or delete backups."
302
  msgstr ""
303
 
304
+ #: src/templates/wp-admin/settings/tab-addons.php:167,
305
+ #: src/templates/wp-admin/settings/tab-addons.php:168
306
  msgid "Backup time and scheduling"
307
  msgstr ""
308
 
309
+ #: src/templates/wp-admin/settings/tab-addons.php:153
310
  msgid "Backup WordPress multisites (i.e, networks), securely."
311
  msgstr ""
312
 
313
+ #: src/templates/wp-admin/settings/tab-addons.php:152
314
  msgid "Network / multisite"
315
  msgstr ""
316
 
317
+ #: src/templates/wp-admin/settings/tab-addons.php:137
318
  msgid "Backup WordPress core and non-WP files and databases."
319
  msgstr ""
320
 
321
+ #: src/templates/wp-admin/settings/tab-addons.php:121
322
  msgid "Automatically backs up your website before any updates to plugins, themes and WordPress core."
323
  msgstr ""
324
 
325
+ #: src/templates/wp-admin/settings/tab-addons.php:119,
326
+ #: src/templates/wp-admin/settings/tab-addons.php:120
327
  msgid "Pre-update backups"
328
  msgstr ""
329
 
330
+ #: src/templates/wp-admin/settings/tab-addons.php:105
331
  msgid "Provides expert help and support from the developers whenever you need it."
332
  msgstr ""
333
 
334
+ #: src/templates/wp-admin/settings/tab-addons.php:104
335
  msgid "Fast, personal support"
336
  msgstr ""
337
 
338
+ #: src/templates/wp-admin/settings/tab-addons.php:89
339
  msgid "UpdraftPlus Migrator clones your WordPress site and moves it to a new domain directly and simply."
340
  msgstr ""
341
 
342
+ #: src/templates/wp-admin/settings/tab-addons.php:88
343
  msgid "Cloning and migration"
344
  msgstr ""
345
 
346
+ #: src/templates/wp-admin/settings/tab-addons.php:73
347
  msgid "Get enhanced versions of the free remote storage options and even more remote storage options like OneDrive, SFTP, Azure, WebDAV and more with UpdraftPlus Premium."
348
  msgstr ""
349
 
350
+ #: src/templates/wp-admin/settings/tab-addons.php:72
351
  msgid "Additional and enhanced remote storage locations"
352
  msgstr ""
353
 
354
+ #: src/templates/wp-admin/settings/tab-addons.php:57
355
  msgid "To avoid server-wide risks, always backup to remote cloud storage. UpdraftPlus free includes Dropbox, Google Drive, Amazon S3, Rackspace and more."
356
  msgstr ""
357
 
358
+ #: src/templates/wp-admin/settings/tab-addons.php:56
359
  msgid "Backup to remote storage locations"
360
  msgstr ""
361
 
362
+ #: src/templates/wp-admin/settings/tab-addons.php:47,
363
+ #: src/templates/wp-admin/settings/tab-addons.php:50,
364
+ #: src/templates/wp-admin/settings/tab-addons.php:320,
365
+ #: src/templates/wp-admin/settings/tab-addons.php:323
366
  msgid "Upgrade now"
367
  msgstr ""
368
 
369
+ #: src/templates/wp-admin/settings/tab-addons.php:44,
370
+ #: src/templates/wp-admin/settings/tab-addons.php:317
371
  msgid "Installed"
372
  msgstr ""
373
 
374
+ #: src/templates/wp-admin/settings/tab-addons.php:38
375
  msgid "Gold"
376
  msgstr ""
377
 
378
+ #: src/templates/wp-admin/settings/tab-addons.php:30
379
  msgid "Free"
380
  msgstr ""
381
 
382
+ #: src/templates/wp-admin/settings/tab-addons.php:30,
383
+ #: src/templates/wp-admin/settings/tab-addons.php:34,
384
+ #: src/templates/wp-admin/settings/tab-addons.php:38
385
  msgid "UpdraftPlus"
386
  msgstr ""
387
 
388
+ #: src/templates/wp-admin/settings/form-contents.php:286
389
  msgid "Recommended: optimize your database with WP-Optimize."
390
  msgstr ""
391
 
392
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:15
393
  msgid "When you've backed up your database, we recommend you install our WP-Optimize plugin to streamline it for better website performance."
394
  msgstr ""
395
 
396
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:15
397
  msgid "WP-Optimize"
398
  msgstr ""
399
 
400
+ #: src/templates/wp-admin/notices/bottom-notice.php:35,
401
+ #: src/templates/wp-admin/notices/horizontal-notice.php:46,
402
+ #: src/templates/wp-admin/notices/report-plain.php:33,
403
+ #: src/templates/wp-admin/notices/report.php:30
404
  msgid "Read more"
405
  msgstr ""
406
 
407
+ #: src/includes/updraftplus-notices.php:182
408
  msgid "After you've backed up your database, we recommend you install our WP-Optimize plugin to streamline it for better website performance."
409
  msgstr ""
410
 
411
+ #: src/addons/morefiles.php:309
412
  msgid "Please choose a file or directory"
413
  msgstr ""
414
 
415
+ #: src/addons/morefiles.php:298
416
  msgid "Confirm"
417
  msgstr ""
418
 
419
+ #: src/addons/morefiles.php:301
420
  msgid "Go up a directory"
421
  msgstr ""
422
 
423
+ #: src/addons/morefiles.php:294
424
  msgid "Add directory..."
425
  msgstr ""
426
 
427
+ #: src/addons/morefiles.php:287, src/addons/morefiles.php:307
428
  msgid "Edit"
429
  msgstr ""
430
 
431
+ #: src/addons/morefiles.php:270
432
  msgid "If using it, select a path from the directory tree below and then press confirm selection."
433
  msgstr ""
434
 
435
+ #: src/addons/s3-enhanced.php:342
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
436
  msgid "Europe (Frankfurt)"
437
  msgstr ""
438
 
439
+ #: src/addons/s3-enhanced.php:341
440
  msgid "Europe (London)"
441
  msgstr ""
442
 
443
+ #: src/addons/s3-enhanced.php:340
444
  msgid "Europe (Ireland)"
445
  msgstr ""
446
 
447
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:15
448
  msgid "WP-Optimize (free)"
449
  msgstr ""
450
 
451
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:13
452
  msgid "Explore our Cloud and Premium versions."
453
  msgstr ""
454
 
455
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:13
456
  msgid "Download it for free from WordPress.org"
457
  msgstr ""
458
 
459
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:13
460
  msgid "You can even use it to centrally manage and update all themes, plugins and WordPress core on all your sites without logging into them!"
461
  msgstr ""
462
 
463
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:13
464
  msgid "UpdraftCentral is a powerful remote control plugin for WordPress that allows you to control all your UpdraftPlus installs and backups from one central location."
465
  msgstr ""
466
 
467
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:13,
468
+ #: src/templates/wp-admin/settings/tab-addons.php:297
469
  msgid "UpdraftCentral"
470
  msgstr ""
471
 
472
+ #: src/templates/wp-admin/notices/horizontal-notice.php:6
473
  msgid "notice image"
474
  msgstr ""
475
 
476
+ #: src/templates/wp-admin/notices/bottom-notice.php:33,
477
+ #: src/templates/wp-admin/notices/horizontal-notice.php:44,
478
+ #: src/templates/wp-admin/notices/report-plain.php:31,
479
+ #: src/templates/wp-admin/notices/report.php:28
480
  msgid "Go there"
481
  msgstr ""
482
 
483
+ #: src/templates/wp-admin/notices/bottom-notice.php:31,
484
+ #: src/templates/wp-admin/notices/horizontal-notice.php:42,
485
+ #: src/templates/wp-admin/notices/report-plain.php:29,
486
+ #: src/templates/wp-admin/notices/report.php:26
487
  msgid "Sign up"
488
  msgstr ""
489
 
490
+ #: src/templates/wp-admin/notices/bottom-notice.php:29,
491
+ #: src/templates/wp-admin/notices/horizontal-notice.php:40,
492
+ #: src/templates/wp-admin/notices/report-plain.php:27,
493
+ #: src/templates/wp-admin/notices/report.php:24
494
  msgid "Get Premium"
495
  msgstr ""
496
 
497
+ #: src/templates/wp-admin/notices/bottom-notice.php:27,
498
+ #: src/templates/wp-admin/notices/horizontal-notice.php:38,
499
+ #: src/templates/wp-admin/notices/report-plain.php:25,
500
+ #: src/templates/wp-admin/notices/report.php:22
501
  msgid "Review UpdraftPlus"
502
  msgstr ""
503
 
504
+ #: src/templates/wp-admin/notices/bottom-notice.php:25,
505
+ #: src/templates/wp-admin/notices/horizontal-notice.php:36,
506
+ #: src/templates/wp-admin/notices/report-plain.php:23,
507
+ #: src/templates/wp-admin/notices/report.php:20
508
  msgid "Get UpdraftCentral"
509
  msgstr ""
510
 
511
+ #: src/templates/wp-admin/advanced/site-info.php:84
512
  msgid "Apache modules"
513
  msgstr ""
514
 
515
+ #: src/includes/updraftplus-notices.php:255
516
  msgid "Summer sale - 20% off UpdraftPlus Premium until July 31st"
517
  msgstr ""
518
 
519
+ #: src/includes/updraftplus-notices.php:242
520
  msgid "Spring sale - 20% off UpdraftPlus Premium until April 31st"
521
  msgstr ""
522
 
523
+ #: src/includes/updraftplus-notices.php:229
524
  msgid "Happy New Year - 20% off UpdraftPlus Premium until January 1st"
525
  msgstr ""
526
 
527
+ #: src/includes/updraftplus-notices.php:216
528
  msgid "Christmas sale - 20% off UpdraftPlus Premium until December 25th"
529
  msgstr ""
530
 
531
+ #: src/includes/updraftplus-notices.php:204,
532
+ #: src/includes/updraftplus-notices.php:217,
533
+ #: src/includes/updraftplus-notices.php:230,
534
+ #: src/includes/updraftplus-notices.php:243,
535
+ #: src/includes/updraftplus-notices.php:256
536
  msgid "To benefit, use this discount code:"
537
  msgstr ""
538
 
539
+ #: src/includes/updraftplus-notices.php:203
540
  msgid "Black Friday - 20% off UpdraftPlus Premium until November 30th"
541
  msgstr ""
542
 
543
+ #: src/includes/updraftplus-notices.php:172
544
  msgid "UpdraftPlus Premium can automatically backup your plugins/themes/database before you update, without you needing to remember."
545
  msgstr ""
546
 
547
+ #: src/includes/updraftplus-notices.php:151,
548
+ #: src/includes/updraftplus-notices.php:161
549
  msgid "UpdraftPlus Blog - get up-to-date news and offers"
550
  msgstr ""
551
 
552
+ #: src/includes/updraftplus-notices.php:141
553
  msgid "UpdraftPlus Newsletter"
554
  msgstr ""
555
 
556
+ #: src/includes/updraftplus-notices.php:112
557
  msgid "Control all your WordPress installations from one place using UpdraftCentral remote site management!"
558
  msgstr ""
559
 
560
+ #: src/includes/updraftplus-notices.php:111
561
  msgid "Do you use UpdraftPlus on multiple sites?"
562
  msgstr ""
563
 
564
+ #: src/includes/updraftplus-notices.php:92,
565
+ #: src/templates/wp-admin/settings/tab-addons.php:300
566
  msgid "UpdraftCentral is a highly efficient way to manage, update and backup multiple websites from one place."
567
  msgstr ""
568
 
569
+ #: src/includes/updraftplus-notices.php:91
570
  msgid "Introducing UpdraftCentral"
571
  msgstr ""
572
 
573
+ #: src/includes/updraftplus-notices.php:82
574
  msgid "Copy your site to another domain directly. Includes find-and-replace tool for database references."
575
  msgstr ""
576
 
577
+ #: src/includes/updraftplus-notices.php:81
578
  msgid "easily migrate or clone your site in minutes"
579
  msgstr ""
580
 
581
+ #: src/includes/updraftplus-notices.php:72
582
  msgid "Add SFTP to send your data securely, lock settings and encrypt your database backups for extra security."
583
  msgstr ""
584
 
585
+ #: src/includes/updraftplus-notices.php:71
586
  msgid "secure your backups"
587
  msgstr ""
588
 
589
+ #: src/includes/updraftplus-notices.php:62
590
  msgid "Secure multisite installation, advanced reporting and much more."
591
  msgstr ""
592
 
593
+ #: src/includes/updraftplus-notices.php:61
594
  msgid "advanced options"
595
  msgstr ""
596
 
597
+ #: src/includes/updraftplus-notices.php:52
598
  msgid "Enhanced storage options for Dropbox, Google Drive and S3. Plus many more options."
599
  msgstr ""
600
 
601
+ #: src/includes/updraftplus-notices.php:51
602
  msgid "enhanced remote storage options"
603
  msgstr ""
604
 
605
+ #: src/includes/updraftplus-notices.php:42
606
  msgid "The ultimately secure and convenient place to store your backups."
607
  msgstr ""
608
 
609
+ #: src/includes/updraftplus-notices.php:41,
610
+ #: src/templates/wp-admin/settings/tab-addons.php:278
611
  msgid "UpdraftVault storage"
612
  msgstr ""
613
 
614
+ #: src/includes/updraftplus-notices.php:32
615
  msgid "Enjoy professional, fast, and friendly help whenever you need it."
616
  msgstr ""
617
 
618
+ #: src/includes/updraftplus-notices.php:31
619
  msgid "support"
620
  msgstr ""
621
 
622
+ #: src/includes/updraftplus-notices.php:30,
623
+ #: src/includes/updraftplus-notices.php:40,
624
+ #: src/includes/updraftplus-notices.php:50,
625
+ #: src/includes/updraftplus-notices.php:60,
626
+ #: src/includes/updraftplus-notices.php:70,
627
+ #: src/includes/updraftplus-notices.php:80
628
  msgid "UpdraftPlus Premium:"
629
  msgstr ""
630
 
631
+ #: src/templates/wp-admin/settings/tab-status.php:71
632
  msgid "Then, try out our \"Migrator\" add-on which can perform a direct site-to-site migration. After using it once, you'll have saved the purchase price compared to the time needed to copy a site by hand."
633
  msgstr ""
634
 
635
+ #: src/addons/s3-enhanced.php:339
636
  msgid "Canada Central"
637
  msgstr ""
638
 
639
+ #: src/templates/wp-admin/advanced/tools-menu.php:22
640
  msgid "Site size"
641
  msgstr ""
642
 
643
+ #: src/templates/wp-admin/advanced/tools-menu.php:10,
644
+ #: src/templates/wp-admin/settings/tab-addons.php:247,
645
+ #: src/templates/wp-admin/settings/tab-addons.php:248
646
  msgid "Lock settings"
647
  msgstr ""
648
 
649
+ #: src/templates/wp-admin/advanced/site-info.php:5,
650
+ #: src/templates/wp-admin/advanced/tools-menu.php:6
651
  msgid "Site information"
652
  msgstr ""
653
 
654
+ #: src/templates/wp-admin/advanced/search-replace.php:9
655
  msgid "For the ability to migrate websites, upgrade to UpdraftPlus Premium."
656
  msgstr ""
657
 
658
+ #: src/templates/wp-admin/advanced/export-settings.php:15
659
  msgid "Import settings"
660
  msgstr ""
661
 
662
+ #: src/templates/wp-admin/advanced/export-settings.php:12
663
  msgid "You can also import previously-exported settings. This tool will replace all your saved settings."
664
  msgstr ""
665
 
666
+ #: src/templates/wp-admin/advanced/export-settings.php:9
667
  msgid "Export settings"
668
  msgstr ""
669
 
670
+ #: src/templates/wp-admin/advanced/export-settings.php:7
671
  msgid "including any passwords"
672
  msgstr ""
673
 
674
+ #: src/templates/wp-admin/advanced/export-settings.php:7
675
  msgid "Here, you can export your UpdraftPlus settings (%s), either for using on another site, or to keep as a backup. This tool will export what is currently in the settings tab."
676
  msgstr ""
677
 
678
+ #: src/templates/wp-admin/advanced/export-settings.php:5,
679
+ #: src/templates/wp-admin/advanced/tools-menu.php:26
680
  msgid "Export / import settings"
681
  msgstr ""
682
 
683
+ #: src/restorer.php:1814
 
 
 
 
684
  msgid "Processing table (%s)"
685
  msgstr ""
686
 
687
+ #: src/restorer.php:1595
688
  msgid "Backup of: %s"
689
  msgstr ""
690
 
691
+ #: src/methods/googledrive.php:196
692
  msgid "The client has been deleted from the Google Drive API console. Please create a new Google Drive project and reconnect with UpdraftPlus."
693
  msgstr ""
694
 
695
+ #: src/methods/dropbox.php:571
696
  msgid "%s de-authentication"
697
  msgstr ""
698
 
699
+ #: src/methods/dropbox.php:536
700
  msgid "You must add the following as the authorised redirect URI in your Dropbox console (under \"API Settings\") when asked"
701
  msgstr ""
702
 
703
+ #: src/methods/dropbox.php:510
704
  msgid "Follow this link to deauthenticate with %s."
705
  msgstr ""
706
 
707
+ #: src/central/bootstrap.php:540
708
  msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard."
709
  msgstr ""
710
 
711
+ #: src/backup.php:1509
712
  msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources."
713
  msgstr ""
714
 
715
+ #: src/templates/wp-admin/settings/tab-status.php:82
716
  msgid "You have selected a remote storage option which has an authorization step to complete:"
717
  msgstr ""
718
 
719
+ #: src/admin.php:1494
720
  msgid "Remote files deleted:"
721
  msgstr ""
722
 
723
+ #: src/admin.php:1493
724
  msgid "Local files deleted:"
725
  msgstr ""
726
 
727
+ #: src/admin.php:968, src/admin.php:972, src/admin.php:980, src/admin.php:984
728
  msgid "Follow this link to authorize access to your %s account (you will not be able to back up to %s without it)."
729
  msgstr ""
730
 
731
+ #: src/admin.php:744
732
  msgid "remote files deleted"
733
  msgstr ""
734
 
735
+ #: src/admin.php:742
736
  msgid "Complete"
737
  msgstr ""
738
 
739
+ #: src/admin.php:741
740
  msgid "Do you want to carry out the import?"
741
  msgstr ""
742
 
743
+ #: src/admin.php:740
744
  msgid "Which was exported on:"
745
  msgstr ""
746
 
747
+ #: src/admin.php:739
748
  msgid "This will import data from:"
749
  msgstr ""
750
 
751
+ #: src/admin.php:738
752
  msgid "Importing..."
753
  msgstr ""
754
 
755
+ #: src/admin.php:735
756
  msgid "You have not yet selected a file to import."
757
  msgstr ""
758
 
759
+ #: src/admin.php:719
760
  msgid "Your export file will be of your displayed settings, not your saved ones."
761
  msgstr ""
762
 
763
+ #: src/admin.php:82
764
  msgid "template not found"
765
  msgstr ""
766
 
767
+ #: src/addons/s3-enhanced.php:335
768
  msgid "US East (Ohio)"
769
  msgstr ""
770
 
771
+ #: src/addons/onedrive.php:946
772
  msgid "This site uses a URL which is either non-HTTPS, or is localhost or 127.0.0.1 URL. As such, you must use the main %s %s App to authenticate with your account."
773
  msgstr ""
774
 
775
+ #: src/addons/onedrive.php:634
776
  msgid "Account is not authorized (%s)."
777
  msgstr ""
778
 
779
+ #: src/addons/onedrive.php:595, src/udaddons/updraftplus-addons.php:766
780
  msgid "Your IP address:"
781
  msgstr ""
782
 
783
+ #: src/addons/onedrive.php:595, src/udaddons/updraftplus-addons.php:766,
784
+ #: src/udaddons/updraftplus-addons.php:781
785
  msgid "To remove any block, please go here."
786
  msgstr ""
787
 
788
+ #: src/addons/onedrive.php:580, src/udaddons/updraftplus-addons.php:751
789
  msgid "An error response was received; HTTP code:"
790
  msgstr ""
791
 
792
+ #: src/includes/class-commands.php:310
793
  msgid "%s add-on not found"
794
  msgstr ""
795
 
796
+ #: src/templates/wp-admin/settings/delete-and-restore-modals.php:62
797
  msgid "or to restore manually"
798
  msgstr ""
799
 
800
+ #: src/templates/wp-admin/settings/delete-and-restore-modals.php:62
801
  msgid "This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time"
802
  msgstr ""
803
 
804
+ #: src/admin.php:2210
805
  msgid "To fix this problem go here."
806
  msgstr ""
807
 
808
+ #: src/admin.php:2210
809
  msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work."
810
  msgstr ""
811
 
812
+ #: src/admin.php:703
813
  msgid "your PHP install lacks the openssl module; as a result, this can take minutes; if nothing has happened by then, then you should either try a smaller key size, or ask your web hosting company how to enable this PHP module on your setup."
814
  msgstr ""
815
 
816
+ #: src/addons/webdav.php:132
817
  msgid "Path"
818
  msgstr ""
819
 
820
+ #: src/addons/webdav.php:127
821
  msgid "Leave this blank to use the default (80 for webdav, 443 for webdavs)"
822
  msgstr ""
823
 
824
+ #: src/addons/webdav.php:119
825
  msgid "Enter any path in the field below."
826
  msgstr ""
827
 
828
+ #: src/addons/webdav.php:119
829
  msgid "A host name cannot contain a slash."
830
  msgstr ""
831
 
832
+ #: src/addons/webdav.php:80
833
  msgid "Protocol (SSL or not)"
834
  msgstr ""
835
 
836
+ #: src/addons/webdav.php:75
837
  msgid "This WebDAV URL is generated by filling in the options below. If you do not know the details, then you will need to ask your WebDAV provider."
838
  msgstr ""
839
 
840
+ #: src/udaddons/updraftplus-addons.php:784
841
  msgid "No response data was received. This usually indicates a network connectivity issue (e.g. an outgoing firewall or overloaded network) between this site and UpdraftPlus.com."
842
  msgstr ""
843
 
844
+ #: src/methods/s3.php:1031
845
  msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")"
846
  msgstr ""
847
 
848
+ #: src/methods/s3.php:101
849
  msgid "No settings were found - please go to the Settings tab and check your settings"
850
  msgstr ""
851
 
852
+ #: src/templates/wp-admin/settings/form-contents.php:123
853
  msgid "Backup using %s?"
854
  msgstr ""
855
 
856
+ #: src/addons/s3-enhanced.php:346
857
  msgid "Asia Pacific (Mumbai)"
858
  msgstr ""
859
 
860
+ #: src/addons/s3-enhanced.php:66
861
  msgid "Reduced redundancy"
862
  msgstr ""
863
 
864
+ #: src/addons/s3-enhanced.php:65
865
  msgid "Standard (infrequent access)"
866
  msgstr ""
867
 
868
+ #: src/templates/wp-admin/settings/header.php:14
869
  msgid "FAQs"
870
  msgstr ""
871
 
872
+ #: src/central/bootstrap.php:487
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
873
  msgid "More information..."
874
  msgstr ""
875
 
876
+ #: src/central/bootstrap.php:485
877
  msgid "Use the alternative method for making a connection with the dashboard."
878
  msgstr ""
879
 
880
+ #: src/central/bootstrap.php:468
881
  msgid "Dashboard at"
882
  msgstr ""
883
 
884
+ #: src/central/bootstrap.php:416
885
  msgid "Key size: %d bits"
886
  msgstr ""
887
 
888
+ #: src/central/bootstrap.php:411
889
  msgid "Public key was sent to:"
890
  msgstr ""
891
 
892
+ #: src/backup.php:2081
893
  msgid "Failed to open directory (check the file permissions and ownership): %s"
894
  msgstr ""
895
 
896
+ #: src/backup.php:2059
897
  msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)"
898
  msgstr ""
899
 
900
+ #: src/addons/migrator.php:2215
901
  msgid "Create key"
902
  msgstr ""
903
 
904
+ #: src/addons/migrator.php:2212, src/central/bootstrap.php:504
905
  msgid "slower, strongest"
906
  msgstr ""
907
 
908
+ #: src/addons/migrator.php:2211, src/central/bootstrap.php:503
909
  msgid "recommended"
910
  msgstr ""
911
 
912
+ #: src/addons/migrator.php:2211, src/central/bootstrap.php:503
913
  msgid "%s bytes"
914
  msgstr ""
915
 
916
+ #: src/addons/migrator.php:2210, src/central/bootstrap.php:502
917
  msgid "faster (possibility for slow PHP installs)"
918
  msgstr ""
919
 
920
+ #: src/addons/migrator.php:2209, src/central/bootstrap.php:501
921
  msgid "easy to break, fastest"
922
  msgstr ""
923
 
924
+ #: src/addons/migrator.php:2209, src/addons/migrator.php:2210,
925
+ #: src/addons/migrator.php:2212, src/central/bootstrap.php:501,
926
+ #: src/central/bootstrap.php:502, src/central/bootstrap.php:504
927
  msgid "%s bits"
928
  msgstr ""
929
 
930
+ #: src/addons/migrator.php:2207, src/central/bootstrap.php:499
931
  msgid "Encryption key size:"
932
  msgstr ""
933
 
934
+ #: src/addons/migrator.php:2205
935
  msgid "Enter your chosen name"
936
  msgstr ""
937
 
938
+ #: src/addons/migrator.php:2204
939
  msgid "Create a key: give this key a unique name (e.g. indicate the site it is for), then press \"Create Key\":"
940
  msgstr ""
941
 
942
+ #: src/methods/googledrive.php:407
943
  msgid "Upload expected to fail: the %s limit for any single file is %s, whereas this file is %s GB (%d bytes)"
944
  msgstr ""
945
 
946
+ #: src/methods/ftp.php:390
947
  msgid "This is sometimes caused by a firewall - try turning off SSL in the expert settings, and testing again."
948
  msgstr ""
949
 
950
+ #: src/methods/ftp.php:362
951
  msgid "login"
952
  msgstr ""
953
 
954
+ #: src/methods/email.php:79
955
  msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive."
956
  msgstr ""
957
 
958
+ #: src/methods/email.php:30
959
  msgid "This backup archive is %s MB in size - the attempt to send this via email is likely to fail (few email servers allow attachments of this size). If so, you should switch to using a different remote storage method."
960
  msgstr ""
961
 
962
+ #: src/class-updraftplus.php:1590
963
  msgid "Size: %s MB"
964
  msgstr ""
965
 
966
+ #: src/central/bootstrap.php:477
967
  msgid "Other (please specify - i.e. the site where you have installed an UpdraftCentral dashboard)"
968
  msgstr ""
969
 
970
+ #: src/central/bootstrap.php:472
971
  msgid "i.e. you have an account there"
972
  msgstr ""
973
 
974
+ #: src/templates/wp-admin/settings/form-contents.php:371
975
  msgid "UpdraftPlus will split up backup archives when they exceed this file size. The default value is %s megabytes. Be careful to leave some margin if your web-server has a hard size limit (e.g. the 2 GB / 2048 MB limit on some 32-bit servers/file systems)."
976
  msgstr ""
977
 
978
+ #: src/templates/wp-admin/settings/tab-status.php:48
979
  msgid "Now"
980
  msgstr ""
981
 
982
+ #: src/class-updraftplus.php:4192, src/restorer.php:996
983
  msgid "You should enable %s to make any pretty permalinks (e.g. %s) work"
984
  msgstr ""
985
 
986
+ #: src/templates/wp-admin/settings/form-contents.php:112
987
  msgid "(tap on an icon to select or unselect)"
988
  msgstr ""
989
 
990
+ #: src/methods/updraftvault.php:310, src/methods/updraftvault.php:316,
991
+ #: src/methods/updraftvault.php:322
992
  msgid "%s per year"
993
  msgstr ""
994
 
995
+ #: src/methods/updraftvault.php:309, src/methods/updraftvault.php:315,
996
+ #: src/methods/updraftvault.php:321
997
  msgid "or (annual discount)"
998
  msgstr ""
999
 
1000
+ #: src/methods/updraftvault.php:246
1001
  msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect."
1002
  msgstr ""
1003
 
1004
+ #: src/class-updraftplus.php:451, src/class-updraftplus.php:496
1005
  msgid "The given file was not found, or could not be read."
1006
  msgstr ""
1007
 
1008
+ #: src/central/bootstrap.php:538
1009
  msgid "UpdraftCentral (Remote Control)"
1010
  msgstr ""
1011
 
1012
+ #: src/central/bootstrap.php:526
1013
  msgid "fetch..."
1014
  msgstr ""
1015
 
1016
+ #: src/central/bootstrap.php:525
1017
  msgid "View recent UpdraftCentral log events"
1018
  msgstr ""
1019
 
1020
+ #: src/central/bootstrap.php:480
1021
  msgid "URL of mothership"
1022
  msgstr ""
1023
 
1024
+ #: src/central/bootstrap.php:463
1025
  msgid "Enter any description"
1026
  msgstr ""
1027
 
1028
+ #: src/central/bootstrap.php:460
1029
  msgid "Description"
1030
  msgstr ""
1031
 
1032
+ #: src/central/bootstrap.php:454
1033
  msgid "Create new key"
1034
  msgstr ""
1035
 
1036
+ #: src/central/bootstrap.php:421
1037
  msgid "Delete..."
1038
  msgstr ""
1039
 
1040
+ #: src/central/bootstrap.php:414
1041
  msgid "Created:"
1042
  msgstr ""
1043
 
1044
+ #: src/central/bootstrap.php:411
1045
  msgid "Access this site as user:"
1046
  msgstr ""
1047
 
1048
+ #: src/central/bootstrap.php:379
1049
  msgid "No keys have yet been created."
1050
  msgstr ""
1051
 
1052
+ #: src/central/bootstrap.php:433
1053
  msgid "Details"
1054
  msgstr ""
1055
 
1056
+ #: src/central/bootstrap.php:432
1057
  msgid "Key description"
1058
  msgstr ""
1059
 
1060
+ #: src/central/bootstrap.php:307, src/central/bootstrap.php:318
1061
  msgid "A key was created, but the attempt to register it with %s was unsuccessful - please try again later."
1062
  msgstr ""
1063
 
1064
+ #: src/central/bootstrap.php:192
1065
  msgid "An invalid URL was entered"
1066
  msgstr ""
1067
 
1068
+ #: src/central/bootstrap.php:73
1069
  msgid "Close..."
1070
  msgstr ""
1071
 
1072
+ #: src/central/bootstrap.php:65
1073
  msgid "This connection appears to already have been made."
1074
  msgstr ""
1075
 
1076
+ #: src/central/bootstrap.php:62
1077
  msgid "You must visit this link in the same browser and login session as you created the key in."
1078
  msgstr ""
1079
 
1080
+ #: src/central/bootstrap.php:58
1081
  msgid "You must visit this URL in the same browser and login session as you created the key in."
1082
  msgstr ""
1083
 
1084
+ #: src/central/bootstrap.php:58
1085
  msgid "You are not logged into this WordPress site in your web browser."
1086
  msgstr ""
1087
 
1088
+ #: src/central/bootstrap.php:55
1089
  msgid "The key referred to was unknown."
1090
  msgstr ""
1091
 
1092
+ #: src/central/bootstrap.php:52
1093
  msgid "A new UpdraftCentral connection has not been made."
1094
  msgstr ""
1095
 
1096
+ #: src/central/bootstrap.php:50
1097
  msgid "An UpdraftCentral connection has been made successfully."
1098
  msgstr ""
1099
 
1100
+ #: src/central/bootstrap.php:47
1101
  msgid "UpdraftCentral Connection"
1102
  msgstr ""
1103
 
1104
+ #: src/backup.php:849, src/class-updraftplus.php:2846
1105
  msgid "The backup was aborted by the user"
1106
  msgstr ""
1107
 
1108
+ #: src/admin.php:4143
1109
  msgid "Your settings have been saved."
1110
  msgstr ""
1111
 
1112
+ #: src/admin.php:3293
1113
  msgid "Total backup size:"
1114
  msgstr ""
1115
 
1116
+ #: src/admin.php:2707
1117
  msgid "stop"
1118
  msgstr ""
1119
 
1120
+ #: src/admin.php:2545
1121
  msgid "The backup has finished running"
1122
  msgstr ""
1123
 
1124
+ #: src/templates/wp-admin/advanced/tools-menu.php:30,
1125
+ #: src/templates/wp-admin/advanced/wipe-settings.php:5,
1126
+ #: src/templates/wp-admin/advanced/wipe-settings.php:9
1127
  msgid "Wipe settings"
1128
  msgstr ""
1129
 
1130
+ #: src/templates/wp-admin/advanced/site-info.php:95
1131
  msgid "reset"
1132
  msgstr ""
1133
 
1134
+ #: src/templates/wp-admin/settings/delete-and-restore-modals.php:21
1135
  msgid "these backup sets"
1136
  msgstr ""
1137
 
1138
+ #: src/templates/wp-admin/settings/delete-and-restore-modals.php:18
1139
  msgid "this backup set"
1140
  msgstr ""
1141
 
1142
+ #: src/templates/wp-admin/settings/downloading-and-restoring.php:34
1143
  msgid "calculate"
1144
  msgstr ""
1145
 
1146
+ #: src/admin.php:718
1147
  msgid "You should save your changes to ensure that they are used for making your backup."
1148
  msgstr ""
1149
 
1150
+ #: src/admin.php:711
1151
  msgid "We requested to delete the file, but could not understand the server's response"
1152
  msgstr ""
1153
 
1154
+ #: src/admin.php:710
1155
  msgid "Please enter a valid URL"
1156
  msgstr ""
1157
 
1158
+ #: src/admin.php:693
1159
  msgid "Saving..."
1160
  msgstr ""
1161
 
1162
+ #: src/admin.php:656
1163
  msgid "Error: the server sent us a response which we did not understand."
1164
  msgstr ""
1165
 
1166
+ #: src/admin.php:648
1167
  msgid "Fetching..."
1168
  msgstr ""
1169
 
1170
+ #: src/addons/s3-enhanced.php:343
1171
  msgid "Asia Pacific (Seoul)"
1172
  msgstr ""
1173
 
1174
+ #: src/restorer.php:1618
1175
  msgid "Uploads URL:"
1176
  msgstr ""
1177
 
1178
+ #: src/backup.php:400
1179
  msgid "Unexpected error: no class '%s' was found (your UpdraftPlus installation seems broken - try re-installing)"
1180
  msgstr ""
1181
 
1182
+ #: src/addons/onedrive.php:50
1183
  msgid "The required %s PHP module is not installed - ask your web hosting company to enable it."
1184
  msgstr ""
1185
 
1186
+ #: src/class-updraftplus.php:4243, src/restorer.php:1642
 
 
 
 
1187
  msgid "To import an ordinary WordPress site into a multisite installation requires %s."
1188
  msgstr ""
1189
 
1190
+ #: src/class-updraftplus.php:4239
1191
  msgid "Please read this link for important information on this process."
1192
  msgstr ""
1193
 
1194
+ #: src/class-updraftplus.php:4239
1195
  msgid "It will be imported as a new site."
1196
  msgstr ""
1197
 
1198
+ #: src/admin.php:2358, src/templates/wp-admin/notices/horizontal-notice.php:16,
1199
+ #: src/templates/wp-admin/notices/horizontal-notice.php:18
1200
  msgid "Dismiss"
1201
  msgstr ""
1202
 
1203
+ #: src/admin.php:730
1204
  msgid "Please fill in the required information."
1205
  msgstr ""
1206
 
1207
+ #: src/addons/multisite.php:576
1208
  msgid "Read more..."
1209
  msgstr ""
1210
 
1211
+ #: src/addons/multisite.php:567
 
 
 
 
1212
  msgid "may include some site-wide data"
1213
  msgstr ""
1214
 
1215
+ #: src/addons/multisite.php:562
1216
  msgid "All sites"
1217
  msgstr ""
1218
 
1219
+ #: src/addons/multisite.php:558
1220
  msgid "Which site to restore"
1221
  msgstr ""
1222
 
1223
+ #: src/addons/migrator.php:506, src/addons/migrator.php:507
 
 
 
 
 
 
 
 
1224
  msgid "Error when creating new site at your chosen address:"
1225
  msgstr ""
1226
 
1227
+ #: src/addons/migrator.php:448
1228
  msgid "Required information for restoring this backup was not given (%s)"
1229
  msgstr ""
1230
 
1231
+ #: src/addons/migrator.php:407
1232
  msgid "Attribute imported content to user"
1233
  msgstr ""
1234
 
1235
+ #: src/addons/migrator.php:397, src/addons/migrator.php:399
1236
  msgid "You must use lower-case letters or numbers for the site path, only."
1237
  msgstr ""
1238
 
1239
+ #: src/addons/migrator.php:385
1240
  msgid "This feature is not compatible with %s"
1241
  msgstr ""
1242
 
1243
+ #: src/addons/migrator.php:383, src/addons/migrator.php:385
1244
  msgid "Importing a single site into a multisite install"
1245
  msgstr ""
1246
 
1247
+ #: src/addons/migrator.php:374
1248
  msgid "other content from wp-content"
1249
  msgstr ""
1250
 
1251
+ #: src/addons/migrator.php:371
1252
  msgid "WordPress core"
1253
  msgstr ""
1254
 
1255
+ #: src/addons/migrator.php:371, src/addons/migrator.php:374,
1256
+ #: src/addons/migrator.php:377
1257
  msgid "You selected %s to be included in the restoration - this cannot / should not be done when importing a single site into a network."
1258
  msgstr ""
1259
 
1260
+ #: src/templates/wp-admin/advanced/site-info.php:93
1261
  msgid "Call WordPress action:"
1262
  msgstr ""
1263
 
1264
+ #: src/admin.php:2393
1265
  msgid "Your saved settings also affect what is backed up - e.g. files excluded."
1266
  msgstr ""
1267
 
1268
+ #: src/admin.php:3704
1269
  msgid "Skipping: this archive was already restored."
1270
  msgstr ""
1271
 
1272
+ #: src/templates/wp-admin/settings/form-contents.php:212
1273
  msgid "File Options"
1274
  msgstr ""
1275
 
1276
+ #: src/templates/wp-admin/settings/form-contents.php:102
1277
  msgid "Sending Your Backup To Remote Storage"
1278
  msgstr ""
1279
 
1280
+ #: src/templates/wp-admin/settings/form-contents.php:66
1281
  msgid "Database backup schedule"
1282
  msgstr ""
1283
 
1284
+ #: src/templates/wp-admin/settings/form-contents.php:55
1285
  msgid "Incremental file backup schedule"
1286
  msgstr ""
1287
 
1288
+ #: src/templates/wp-admin/settings/form-contents.php:22
1289
  msgid "Files backup schedule"
1290
  msgstr ""
1291
 
1292
+ #: src/templates/wp-admin/advanced/wipe-settings.php:6
1293
  msgid "You will then need to enter all your settings again. You can also do this before deactivating/deinstalling UpdraftPlus if you wish."
1294
  msgstr ""
1295
 
1296
+ #: src/templates/wp-admin/advanced/wipe-settings.php:6
1297
  msgid "This button will delete all UpdraftPlus settings and progress information for in-progress backups (but not any of your existing backups from your cloud storage)."
1298
  msgstr ""
1299
 
1300
+ #: src/admin.php:4020
1301
  msgid "Send this backup to remote storage"
1302
  msgstr ""
1303
 
1304
+ #: src/admin.php:4018
1305
  msgid "Check out UpdraftPlus Vault."
1306
  msgstr ""
1307
 
1308
+ #: src/admin.php:4018
1309
  msgid "Not got any remote storage?"
1310
  msgstr ""
1311
 
1312
+ #: src/admin.php:4018
1313
  msgid "settings"
1314
  msgstr ""
1315
 
1316
+ #: src/admin.php:4018
1317
  msgid "Backup won't be sent to any remote storage - none has been saved in the %s"
1318
  msgstr ""
1319
 
1320
+ #: src/admin.php:2391
1321
  msgid "Include any files in the backup"
1322
  msgstr ""
1323
 
1324
+ #: src/admin.php:2377
1325
  msgid "Include the database in the backup"
1326
  msgstr ""
1327
 
1328
+ #: src/admin.php:2357
1329
  msgid "Continue restoration"
1330
  msgstr ""
1331
 
1332
+ #: src/admin.php:2352
1333
  msgid "You have an unfinished restoration operation, begun %s ago."
1334
  msgstr ""
1335
 
1336
+ #: src/admin.php:2351
1337
  msgid "Unfinished restoration"
1338
  msgstr ""
1339
 
1340
+ #: src/admin.php:2349
1341
  msgid "%s minutes, %s seconds"
1342
  msgstr ""
1343
 
1344
+ #: src/admin.php:2296
1345
  msgid "Backup Contents And Schedule"
1346
  msgstr ""
1347
 
1348
+ #: src/templates/wp-admin/settings/tab-bar.php:9
1349
  msgid "Premium / Extensions"
1350
  msgstr ""
1351
 
1352
+ #: src/admin.php:2076, src/admin.php:2085
1353
  msgid "Sufficient information about the in-progress restoration operation could not be found."
1354
  msgstr ""
1355
 
1356
+ #: src/addons/morefiles.php:55, src/admin.php:716
1357
  msgctxt "(verb)"
1358
  msgid "Download"
1359
  msgstr ""
1360
 
1361
+ #: src/admin.php:641
1362
  msgid "You have chosen to backup files, but no file entities have been selected"
1363
  msgstr ""
1364
 
1365
+ #: src/admin.php:542
1366
  msgid "Extensions"
1367
  msgstr ""
1368
 
1369
+ #: src/admin.php:534, src/templates/wp-admin/settings/tab-bar.php:8
1370
  msgid "Advanced Tools"
1371
  msgstr ""
1372
 
1373
+ #: src/addons/googlecloud.php:963
1374
  msgid "Bucket location"
1375
  msgstr ""
1376
 
1377
+ #: src/addons/googlecloud.php:958
1378
  msgid "Note that Google do not support every storage class in every location - you should read their documentation to learn about current availability."
1379
  msgstr ""
1380
 
1381
+ #: src/addons/googlecloud.php:958, src/addons/googlecloud.php:973
1382
  msgid "This setting applies only when a new bucket is being created."
1383
  msgstr ""
1384
 
1385
+ #: src/addons/googlecloud.php:943
1386
  msgid "You must use a bucket name that is unique, for all %s users."
1387
  msgstr ""
1388
 
1389
+ #: src/addons/googlecloud.php:899
1390
  msgid "Do not confuse %s with %s - they are separate things."
1391
  msgstr ""
1392
 
1393
+ #: src/addons/googlecloud.php:307
1394
  msgid "You do not have access to this bucket"
1395
  msgstr ""
1396
 
1397
+ #: src/addons/googlecloud.php:56
1398
  msgid "Western Europe"
1399
  msgstr ""
1400
 
1401
+ #: src/addons/googlecloud.php:55
1402
  msgid "Eastern Asia-Pacific"
1403
  msgstr ""
1404
 
1405
+ #: src/addons/googlecloud.php:54
1406
  msgid "Western United States"
1407
  msgstr ""
1408
 
1409
+ #: src/addons/googlecloud.php:52, src/addons/googlecloud.php:53
1410
  msgid "Eastern United States"
1411
  msgstr ""
1412
 
1413
+ #: src/addons/googlecloud.php:50
1414
  msgid " Eastern United States"
1415
  msgstr ""
1416
 
1417
+ #: src/addons/googlecloud.php:49, src/addons/googlecloud.php:51
1418
  msgid "Central United States"
1419
  msgstr ""
1420
 
1421
+ #: src/addons/googlecloud.php:48
1422
  msgid "European Union"
1423
  msgstr ""
1424
 
1425
+ #: src/addons/googlecloud.php:47
1426
  msgid "Asia Pacific"
1427
  msgstr ""
1428
 
1429
+ #: src/addons/googlecloud.php:46, src/addons/googlecloud.php:47,
1430
+ #: src/addons/googlecloud.php:48
1431
  msgid "multi-region location"
1432
  msgstr ""
1433
 
1434
+ #: src/addons/googlecloud.php:46
1435
  msgid "United States"
1436
  msgstr ""
1437
 
1438
+ #: src/addons/googlecloud.php:42
1439
  msgid "Nearline"
1440
  msgstr ""
1441
 
1442
+ #: src/addons/googlecloud.php:41
1443
  msgid "Durable reduced availability"
1444
  msgstr ""
1445
 
1446
+ #: src/addons/googlecloud.php:40, src/addons/s3-enhanced.php:64
1447
  msgid "Standard"
1448
  msgstr ""
1449
 
1450
+ #: src/addons/azure.php:564
1451
  msgid "container"
1452
  msgstr ""
1453
 
1454
+ #: src/addons/azure.php:564
1455
  msgid "You can enter the path of any %s virtual folder you wish to use here."
1456
  msgstr ""
1457
 
1458
+ #: src/addons/azure.php:563
1459
  msgid "optional"
1460
  msgstr ""
1461
 
1462
+ #: src/addons/azure.php:563
1463
  msgid "Prefix"
1464
  msgstr ""
1465
 
1466
+ #: src/addons/azure.php:558
1467
  msgid "See Microsoft's guidelines on container naming by following this link."
1468
  msgstr ""
1469
 
1470
+ #: src/addons/azure.php:558
 
 
 
 
1471
  msgid "Enter the path of the %s you wish to use here."
1472
  msgstr ""
1473
 
1474
+ #: src/addons/azure.php:547
1475
  msgid "This is not your Azure login - see the instructions if needing more guidance."
1476
  msgstr ""
1477
 
1478
+ #: src/addons/azure.php:546
1479
  msgid "Account Name"
1480
  msgstr ""
1481
 
1482
+ #: src/addons/azure.php:546, src/addons/azure.php:550
1483
  msgid "Azure"
1484
  msgstr ""
1485
 
1486
+ #: src/addons/azure.php:542
1487
  msgid "Create Azure credentials in your Azure developer console."
1488
  msgstr ""
1489
 
1490
+ #: src/addons/azure.php:490
1491
  msgid "Could not create the container"
1492
  msgstr ""
1493
 
1494
+ #: src/addons/azure.php:353
1495
  msgid "Could not access container"
1496
  msgstr ""
1497
 
1498
+ #: src/class-updraftplus.php:2863
1499
  msgid "To complete your migration/clone, you should now log in to the remote site and restore the backup set."
1500
  msgstr ""
1501
 
1502
+ #: src/backup.php:1561
1503
  msgid "the options table was not found"
1504
  msgstr ""
1505
 
1506
+ #: src/backup.php:1559
1507
  msgid "no options or sitemeta table was found"
1508
  msgstr ""
1509
 
1510
+ #: src/backup.php:1559, src/backup.php:1561
1511
  msgid "The database backup appears to have failed"
1512
  msgstr ""
1513
 
1514
+ #: src/backup.php:1431
1515
  msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail."
1516
  msgstr ""
1517
 
1518
+ #: src/templates/wp-admin/advanced/site-info.php:49
1519
  msgid "required for some remote storage providers"
1520
  msgstr ""
1521
 
1522
+ #: src/templates/wp-admin/advanced/site-info.php:49
1523
  msgid "Not installed"
1524
  msgstr ""
1525
 
1526
+ #: src/addons/googlecloud.php:948, src/addons/s3-enhanced.php:57
1527
  msgid "Storage class"
1528
  msgstr ""
1529
 
1530
+ #: src/addons/googlecloud.php:943
1531
  msgid "See Google's guidelines on bucket naming by following this link."
1532
  msgstr ""
1533
 
1534
+ #: src/addons/googlecloud.php:943
 
 
 
 
1535
  msgid "Enter the name of the %s bucket you wish to use here."
1536
  msgstr ""
1537
 
1538
+ #: src/addons/googlecloud.php:942
1539
  msgid "Bucket"
1540
  msgstr ""
1541
 
1542
+ #: src/addons/googlecloud.php:938
1543
  msgid "Otherwise, you can leave it blank."
1544
  msgstr ""
1545
 
1546
+ #: src/addons/googlecloud.php:938
1547
  msgid "N.B. This is only needed if you have not already created the bucket, and you wish UpdraftPlus to create it for you."
1548
  msgstr ""
1549
 
1550
+ #: src/addons/googlecloud.php:938
1551
  msgid "Enter the ID of the %s project you wish to use here."
1552
  msgstr ""
1553
 
1554
+ #: src/addons/googlecloud.php:911
1555
  msgid "Follow this link to your Google API Console, and there activate the Storage API and create a Client ID in the API Access section."
1556
  msgstr ""
1557
 
1558
+ #: src/addons/googlecloud.php:814
1559
  msgid "You must enter a project ID in order to be able to create a new bucket."
1560
  msgstr ""
1561
 
1562
+ #: src/addons/googlecloud.php:937
1563
  msgid "Project ID"
1564
  msgstr ""
1565
 
1566
+ #: src/addons/googlecloud.php:673
1567
  msgid "You must save and authenticate before you can test your settings."
1568
  msgstr ""
1569
 
1570
+ #: src/addons/googlecloud.php:530
1571
  msgid "Have not yet obtained an access token from Google - you need to authorise or re-authorise your connection to Google Cloud."
1572
  msgstr ""
1573
 
1574
+ #: src/addons/googlecloud.php:254, src/addons/googlecloud.php:327,
1575
+ #: src/addons/googlecloud.php:806, src/addons/googlecloud.php:853
1576
  msgid "You do not have access to this bucket."
1577
  msgstr ""
1578
 
1579
+ #: src/addons/googlecloud.php:254, src/addons/googlecloud.php:307,
1580
+ #: src/addons/googlecloud.php:317, src/addons/googlecloud.php:327,
1581
+ #: src/addons/googlecloud.php:632, src/addons/googlecloud.php:806,
1582
+ #: src/addons/googlecloud.php:853, src/addons/googlecloud.php:905,
1583
+ #: src/addons/googlecloud.php:905, src/addons/googlecloud.php:922,
1584
+ #: src/addons/googlecloud.php:930, src/addons/googlecloud.php:943
1585
  msgid "Google Cloud"
1586
  msgstr ""
1587
 
1588
+ #: src/addons/googlecloud.php:254, src/addons/googlecloud.php:307,
1589
+ #: src/addons/googlecloud.php:327, src/addons/googlecloud.php:806,
1590
+ #: src/addons/googlecloud.php:853
1591
  msgid "%s Service Exception."
1592
  msgstr ""
1593
 
1594
+ #: src/updraftplus.php:147
1595
  msgid "You do not have UpdraftPlus completely installed - please de-install and install it again. Most likely, WordPress malfunctioned when copying the plugin files."
1596
  msgstr ""
1597
 
1598
+ #: src/restorer.php:778
1599
  msgid "Deferring..."
1600
  msgstr ""
1601
 
1602
+ #: src/templates/wp-admin/settings/form-contents.php:96
1603
  msgid "or to configure more complex schedules"
1604
  msgstr ""
1605
 
1606
+ #: src/templates/wp-admin/settings/delete-and-restore-modals.php:18,
1607
+ #: src/templates/wp-admin/settings/delete-and-restore-modals.php:21
1608
  msgid "Are you sure that you wish to remove %s from UpdraftPlus?"
1609
  msgstr ""
1610
 
1611
+ #: src/templates/wp-admin/settings/delete-and-restore-modals.php:7
1612
  msgid "Deselect"
1613
  msgstr ""
1614
 
1615
+ #: src/templates/wp-admin/settings/delete-and-restore-modals.php:6
1616
  msgid "Select all"
1617
  msgstr ""
1618
 
1619
+ #: src/templates/wp-admin/settings/delete-and-restore-modals.php:4
1620
  msgid "Actions upon selected backups"
1621
  msgstr ""
1622
 
1623
+ #: src/templates/wp-admin/settings/downloading-and-restoring.php:40
1624
  msgid "Press here to look inside your remote storage methods for any existing backup sets (from any site, if they are stored in the same folder)."
1625
  msgstr ""
1626
 
1627
+ #: src/admin.php:1492
1628
  msgid "Backup sets removed:"
1629
  msgstr ""
1630
 
1631
+ #: src/admin.php:729
1632
  msgid "Processing..."
1633
  msgstr ""
1634
 
1635
+ #: src/admin.php:727
1636
  msgid "For backups older than"
1637
  msgstr ""
1638
 
1639
+ #: src/admin.php:726
1640
  msgid "week(s)"
1641
  msgstr ""
1642
 
1643
+ #: src/admin.php:725
1644
  msgid "hour(s)"
1645
  msgstr ""
1646
 
1647
+ #: src/admin.php:724
1648
  msgid "day(s)"
1649
  msgstr ""
1650
 
1651
+ #: src/admin.php:723
1652
  msgid "in the month"
1653
  msgstr ""
1654
 
1655
+ #: src/admin.php:722
1656
  msgid "day"
1657
  msgstr ""
1658
 
1659
+ #: src/addons/morestorage.php:28
1660
  msgid "(as many as you like)"
1661
  msgstr ""
1662
 
1663
+ #: src/addons/fixtime.php:307, src/addons/fixtime.php:312
1664
  msgid "Add an additional retention rule..."
1665
  msgstr ""
1666
 
1667
+ #: src/restorer.php:2116
1668
  msgid "This database needs to be deployed on MySQL version %s or later."
1669
  msgstr ""
1670
 
1671
+ #: src/restorer.php:2116
1672
  msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database."
1673
  msgstr ""
1674
 
1675
+ #: src/methods/updraftvault.php:616
1676
  msgid "You do not currently have any UpdraftPlus Vault quota"
1677
  msgstr ""
1678
 
1679
+ #: src/class-updraftplus.php:4278
1680
  msgid "You must upgrade MySQL to be able to use this database."
1681
  msgstr ""
1682
 
1683
+ #: src/class-updraftplus.php:4278
1684
  msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on."
1685
  msgstr ""
1686
 
1687
+ #: src/admin.php:2195
1688
  msgid "The UpdraftPlus directory in wp-content/plugins has white-space in it; WordPress does not like this. You should rename the directory to wp-content/plugins/updraftplus to fix this problem."
1689
  msgstr ""
1690
 
1691
+ #: src/methods/updraftvault.php:343
1692
  msgid "Don't know your email address, or forgotten your password?"
1693
  msgstr ""
1694
 
1695
+ #: src/methods/updraftvault.php:336
1696
  msgid "Enter your UpdraftPlus.Com email / password here to connect:"
1697
  msgstr ""
1698
 
1699
+ #: src/methods/updraftvault.php:298, src/methods/updraftvault.php:328
1700
  msgid "Read the FAQs here."
1701
  msgstr ""
1702
 
1703
+ #: src/addons/s3-enhanced.php:72
1704
  msgid "Check this box to use Amazon's server-side encryption"
1705
  msgstr ""
1706
 
1707
+ #: src/addons/s3-enhanced.php:71
1708
  msgid "Server-side encryption"
1709
  msgstr ""
1710
 
1711
+ #: src/methods/updraftvault.php:625
1712
  msgid "If you have forgotten your password, then go here to change your password on updraftplus.com."
1713
  msgstr ""
1714
 
1715
+ #: src/admin.php:976
1716
  msgid "Go to the remote storage settings in order to connect."
1717
  msgstr ""
1718
 
1719
+ #: src/admin.php:976
1720
  msgid "%s has been chosen for remote storage, but you are not currently connected."
1721
  msgstr ""
1722
 
1723
+ #: src/methods/updraftvault.php:325
1724
  msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal."
1725
  msgstr ""
1726
 
1727
+ #: src/admin.php:699
1728
  msgid "Update quota count"
1729
  msgstr ""
1730
 
1731
+ #: src/admin.php:698
1732
  msgid "Counting..."
1733
  msgstr ""
1734
 
1735
+ #: src/admin.php:697
1736
  msgid "Disconnecting..."
1737
  msgstr ""
1738
 
1739
+ #: src/admin.php:695
1740
  msgid "Connecting..."
1741
  msgstr ""
1742
 
1743
+ #: src/methods/updraftvault.php:399, src/methods/updraftvault.php:468
1744
  msgid "Refresh current status"
1745
  msgstr ""
1746
 
1747
+ #: src/methods/updraftvault.php:397, src/methods/updraftvault.php:413,
1748
+ #: src/methods/updraftvault.php:415, src/methods/updraftvault.php:468
1749
  msgid "Get more quota"
1750
  msgstr ""
1751
 
1752
+ #: src/methods/updraftvault.php:394, src/methods/updraftvault.php:410,
1753
+ #: src/methods/updraftvault.php:449
1754
  msgid "Current use:"
1755
  msgstr ""
1756
 
1757
+ #: src/methods/updraftvault.php:389
1758
  msgid "You can get more quota here"
1759
  msgstr ""
1760
 
1761
+ #: src/methods/updraftvault.php:389
1762
  msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)."
1763
  msgstr ""
1764
 
1765
+ #: src/admin.php:696, src/methods/updraftvault.php:381
1766
  msgid "Disconnect"
1767
  msgstr ""
1768
 
1769
+ #: src/methods/updraftvault.php:373
1770
  msgid "Quota:"
1771
  msgstr ""
1772
 
1773
+ #: src/methods/updraftvault.php:371
1774
  msgid "Vault owner"
1775
  msgstr ""
1776
 
1777
+ #: src/methods/updraftvault.php:371
1778
  msgid "Well done - there's nothing more needed to set up."
1779
  msgstr ""
1780
 
1781
+ #: src/methods/updraftvault.php:371
1782
  msgid "This site is <strong>connected</strong> to UpdraftPlus Vault."
1783
  msgstr ""
1784
 
1785
+ #: src/methods/updraftvault.php:367
1786
  msgid "You are <strong>not connected</strong> to UpdraftPlus Vault."
1787
  msgstr ""
1788
 
1789
+ #: src/methods/updraftvault.php:343
1790
  msgid "Go here for help"
1791
  msgstr ""
1792
 
1793
+ #: src/methods/updraftvault.php:338
1794
  msgid "E-mail"
1795
  msgstr ""
1796
 
1797
+ #: src/methods/updraftvault.php:331, src/methods/updraftvault.php:346
1798
  msgid "Back..."
1799
  msgstr ""
1800
 
1801
+ #: src/methods/updraftvault.php:325
1802
  msgid "Subscriptions can be cancelled at any time."
1803
  msgstr ""
1804
 
1805
+ #: src/methods/updraftvault.php:308, src/methods/updraftvault.php:314,
1806
+ #: src/methods/updraftvault.php:320
1807
  msgid "%s per quarter"
1808
  msgstr ""
1809
 
1810
+ #: src/central/bootstrap.php:540, src/methods/updraftvault.php:298,
1811
+ #: src/methods/updraftvault.php:328
1812
  msgid "Read more about it here."
1813
  msgstr ""
1814
 
1815
+ #: src/methods/updraftvault.php:298, src/methods/updraftvault.php:328
1816
  msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability."
1817
  msgstr ""
1818
 
1819
+ #: src/methods/updraftvault.php:294
1820
  msgid "Already purchased space?"
1821
  msgstr ""
1822
 
1823
+ #: src/methods/updraftvault.php:291
1824
  msgid "Show the options"
1825
  msgstr ""
1826
 
1827
+ #: src/methods/updraftvault.php:290
1828
  msgid "First time user?"
1829
  msgstr ""
1830
 
1831
+ #: src/methods/updraftvault.php:287, src/methods/updraftvault.php:304
1832
  msgid "Press a button to get started."
1833
  msgstr ""
1834
 
1835
+ #: src/methods/updraftvault.php:287, src/methods/updraftvault.php:304
1836
  msgid "UpdraftPlus Vault brings you storage that is <strong>reliable, easy to use and a great price</strong>."
1837
  msgstr ""
1838
 
1839
+ #: src/methods/updraftvault.php:242
1840
  msgid "You have an UpdraftPlus Vault subscription that has not been renewed, and the grace period has expired. In a few days' time, your stored data will be permanently removed. If you do not wish this to happen, then you should renew as soon as possible."
1841
  msgstr ""
1842
 
1843
+ #: src/methods/updraftvault.php:239
1844
  msgid "You have an UpdraftPlus Vault subscription with overdue payment. You are within the few days of grace period before it will be suspended, and you will lose your quota and access to data stored within it. Please renew as soon as possible!"
1845
  msgstr ""
1846
 
1847
+ #: src/methods/updraftvault.php:236
1848
  msgid "Your UpdraftPlus Premium purchase is over a year ago. You should renew immediately to avoid losing the 12 months of free storage allowance that you get for being a current UpdraftPlus Premium customer."
1849
  msgstr ""
1850
 
1851
+ #: src/methods/updraftvault.php:90
1852
  msgid "Updraft Vault"
1853
  msgstr ""
1854
 
1855
+ #: src/addons/azure.php:375, src/addons/googlecloud.php:757,
1856
+ #: src/methods/s3.php:1059
1857
  msgid "Delete failed:"
1858
  msgstr ""
1859
 
1860
+ #: src/backup.php:3021
1861
  msgid "The zip engine returned the message: %s."
1862
  msgstr ""
1863
 
1864
+ #: src/addons/s3-enhanced.php:367
1865
  msgid "Without this permission, UpdraftPlus cannot delete backups - you should also set your 'retain' settings very high to prevent seeing deletion errors."
1866
  msgstr ""
1867
 
1868
+ #: src/addons/s3-enhanced.php:365
1869
  msgid "Allow deletion"
1870
  msgstr ""
1871
 
1872
+ #: src/addons/s3-enhanced.php:363
1873
  msgid "Without this permission, you cannot directly download or restore using UpdraftPlus, and will instead need to visit the AWS website."
1874
  msgstr ""
1875
 
1876
+ #: src/addons/s3-enhanced.php:361
1877
  msgid "Allow download"
1878
  msgstr ""
1879
 
1880
+ #: src/addons/migrator.php:1759
1881
  msgid "If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead."
1882
  msgstr ""
1883
 
1884
+ #: src/addons/migrator.php:1744, src/admin.php:705
1885
  msgid "You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly."
1886
  msgstr ""
1887
 
1888
+ #: src/addons/migrator.php:2247
1889
  msgid "Existing keys"
1890
  msgstr ""
1891
 
1892
+ #: src/addons/migrator.php:2238
1893
  msgid "No keys to allow remote sites to connect have yet been created."
1894
  msgstr ""
1895
 
1896
+ #: src/addons/migrator.php:2220
1897
  msgid "Your new key:"
1898
  msgstr ""
1899
 
1900
+ #: src/addons/migrator.php:2199
1901
  msgid "To allow another site to send a backup to this site, create a key, and then press the 'Migrate' button on the sending site, and copy-and-paste the key there."
1902
  msgstr ""
1903
 
1904
+ #: src/addons/migrator.php:2181
1905
  msgid "So, to get the key for the remote site, open the 'Migrate' window on that site, scroll down, and you can create one there."
1906
  msgstr ""
1907
 
1908
+ #: src/addons/migrator.php:2181
1909
  msgid "Keys for this site are created in the section below the one you just pressed in."
1910
  msgstr ""
1911
 
1912
+ #: src/addons/migrator.php:1861, src/central/bootstrap.php:361
1913
  msgid "You must copy and paste this key now - it cannot be shown again."
1914
  msgstr ""
1915
 
1916
+ #: src/addons/migrator.php:1861, src/central/bootstrap.php:361
1917
  msgid "Key created successfully."
1918
  msgstr ""
1919
 
1920
+ #: src/addons/migrator.php:1846
1921
  msgid "A key with this name already exists; you must use a unique name."
1922
  msgstr ""
1923
 
1924
+ #: src/addons/migrator.php:1790
1925
  msgid "Also send this backup to the active remote storage locations"
1926
  msgstr ""
1927
 
1928
+ #: src/addons/migrator.php:1755
1929
  msgid "The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this."
1930
  msgstr ""
1931
 
1932
+ #: src/addons/migrator.php:1711
1933
  msgid "site not found"
1934
  msgstr ""
1935
 
1936
+ #: src/addons/migrator.php:1696
1937
  msgid "Backup data will be sent to:"
1938
  msgstr ""
1939
 
1940
+ #: src/addons/migrator.php:195
1941
  msgid "Restore an existing backup set onto this site"
1942
  msgstr ""
1943
 
1944
+ #: src/addons/migrator.php:188
1945
  msgid "This site has no backups to restore from yet."
1946
  msgstr ""
1947
 
1948
+ #: src/addons/reporting.php:160
1949
  msgid "Backup made by %s"
1950
  msgstr ""
1951
 
1952
+ #: src/methods/addon-base-v2.php:188
1953
  msgid "This storage method does not allow downloading"
1954
  msgstr ""
1955
 
1956
+ #: src/admin.php:3464
1957
  msgid "(backup set imported from remote location)"
1958
  msgstr ""
1959
 
1960
+ #: src/templates/wp-admin/settings/existing-backups-table.php:82
1961
  msgid "Site"
1962
  msgstr ""
1963
 
1964
+ #: src/templates/wp-admin/settings/existing-backups-table.php:81
1965
  msgid "Backup sent to remote site - not available for download."
1966
  msgstr ""
1967
 
1968
+ #: src/includes/class-wpadmin-commands.php:118
1969
  msgid "You should make sure that this really is a backup set intended for use on this website, before you restore (rather than a backup set of an unrelated website)."
1970
  msgstr ""
1971
 
1972
+ #: src/includes/class-wpadmin-commands.php:118
1973
  msgid "This backup set was not known by UpdraftPlus to be created by the current WordPress installation, but was either found in remote storage, or was sent from a remote site."
1974
  msgstr ""
1975
 
1976
+ #: src/addons/migrator.php:1772, src/admin.php:712
1977
  msgid "Testing connection..."
1978
  msgstr ""
1979
 
1980
+ #: src/admin.php:709
1981
  msgid "Deleting..."
1982
  msgstr ""
1983
 
1984
+ #: src/admin.php:708
1985
  msgid "key name"
1986
  msgstr ""
1987
 
1988
+ #: src/admin.php:706
1989
  msgid "Please give this key a name (e.g. indicate the site it is for):"
1990
  msgstr ""
1991
 
1992
+ #: src/admin.php:703
1993
  msgid "Creating..."
1994
  msgstr ""
1995
 
1996
+ #: src/addons/migrator.php:2198
1997
  msgid "Or, receive a backup from a remote site"
1998
  msgstr ""
1999
 
2000
+ #: src/addons/migrator.php:2187
2001
  msgid "Paste key here"
2002
  msgstr ""
2003
 
2004
+ #: src/addons/migrator.php:2181
2005
  msgid "How do I get a site's key?"
2006
  msgstr ""
2007
 
2008
+ #: src/addons/migrator.php:2181
2009
  msgid "To add a site as a destination for sending to, enter that site's key below."
2010
  msgstr ""
2011
 
2012
+ #: src/addons/migrator.php:2178
2013
  msgid "Or, send a backup to another site"
2014
  msgstr ""
2015
 
2016
+ #: src/addons/migrator.php:1943, src/admin.php:713
2017
  msgid "Send"
2018
  msgstr ""
2019
 
2020
+ #: src/addons/migrator.php:1937, src/admin.php:704
2021
  msgid "Send to site:"
2022
  msgstr ""
2023
 
2024
+ #: src/addons/migrator.php:1935
2025
  msgid "No receiving sites have yet been added."
2026
  msgstr ""
2027
 
2028
+ #: src/addons/migrator.php:1916
2029
  msgid "It is for sending backups to the following site: "
2030
  msgstr ""
2031
 
2032
+ #: src/addons/migrator.php:1916
2033
  msgid "The key was successfully added."
2034
  msgstr ""
2035
 
2036
+ #: src/addons/migrator.php:1900
2037
  msgid "The entered key does not belong to a remote site (it belongs to this one)."
2038
  msgstr ""
2039
 
2040
+ #: src/addons/migrator.php:1889, src/addons/migrator.php:1891,
2041
+ #: src/addons/migrator.php:1895
2042
  msgid "The entered key was corrupt - please try again."
2043
  msgstr ""
2044
 
2045
+ #: src/addons/migrator.php:1887
2046
  msgid "The entered key was the wrong length - please try again."
2047
  msgstr ""
2048
 
2049
+ #: src/addons/migrator.php:1877
2050
  msgid "key"
2051
  msgstr ""
2052
 
2053
+ #: src/methods/ftp.php:336
2054
  msgid "Almost all FTP servers will want passive mode; but if you need active mode, then uncheck this."
2055
  msgstr ""
2056
 
2057
+ #: src/methods/ftp.php:334
2058
  msgid "Passive mode"
2059
  msgstr ""
2060
 
2061
+ #: src/methods/ftp.php:329
2062
  msgid "Remote path"
2063
  msgstr ""
2064
 
2065
+ #: src/methods/ftp.php:324
2066
  msgid "FTP password"
2067
  msgstr ""
2068
 
2069
+ #: src/methods/ftp.php:319
2070
  msgid "FTP login"
2071
  msgstr ""
2072
 
2073
+ #: src/methods/ftp.php:314
2074
  msgid "FTP server"
2075
  msgstr ""
2076
 
2077
+ #: src/addons/migrator.php:168
2078
  msgid "The UpdraftPlus Migrator modifies the restoration operation appropriately, to fit the backup data to the new site."
2079
  msgstr ""
2080
 
2081
+ #: src/addons/migrator.php:168
2082
  msgid "A \"migration\" is ultimately the same as a restoration - but using backup archives that you import from another site."
2083
  msgstr ""
2084
 
2085
+ #: src/admin.php:702
2086
+ msgid "Resetting..."
2087
+ msgstr ""
2088
+
2089
+ #: src/addons/migrator.php:2187, src/admin.php:701
2090
  msgid "Add site"
2091
  msgstr ""
2092
 
2093
+ #: src/admin.php:700
2094
  msgid "Adding..."
2095
  msgstr ""
2096
 
2097
+ #: src/udaddons/options.php:345
2098
  msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?"
2099
  msgstr ""
2100
 
2101
+ #: src/restorer.php:2118
2102
  msgid "To use this backup, your database server needs to support the %s character set."
2103
  msgstr ""
2104
 
2105
+ #: src/udaddons/updraftplus-addons.php:820
2106
  msgid "go here to change your password on updraftplus.com."
2107
  msgstr ""
2108
 
2109
+ #: src/udaddons/updraftplus-addons.php:820
2110
  msgid "If you have forgotten your password "
2111
  msgstr ""
2112
 
2113
+ #: src/udaddons/updraftplus-addons.php:819
2114
  msgid "Go here to re-enter your password."
2115
  msgstr ""
2116
 
2117
+ #: src/addons/migrator.php:224
2118
  msgid "After pressing this button, you will be given the option to choose which components you wish to migrate"
2119
  msgstr ""
2120
 
2121
+ #: src/addons/migrator.php:195
2122
  msgid "To import a backup set, go to the \"Existing Backups\" tab"
2123
  msgstr ""
2124
 
2125
+ #: src/addons/migrator.php:170
2126
+ msgid "To restore using any of the backup sets below, press the button."
2127
+ msgstr ""
2128
+
2129
+ #: src/admin.php:692, src/admin.php:718, src/admin.php:719
2130
  msgid "You have made changes to your settings, and not saved."
2131
  msgstr ""
2132
 
2133
+ #: src/addons/onedrive.php:983
2134
  msgid "N.B. %s is not case-sensitive."
2135
  msgstr ""
2136
 
2137
+ #: src/addons/onedrive.php:971
2138
  msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here."
2139
  msgstr ""
2140
 
2141
+ #: src/addons/azure.php:542, src/addons/migrator.php:1759,
2142
+ #: src/addons/onedrive.php:955
2143
  msgid "For longer help, including screenshots, follow this link."
2144
  msgstr ""
2145
 
2146
+ #: src/addons/onedrive.php:955
2147
  msgid "Create OneDrive credentials in your OneDrive developer console."
2148
  msgstr ""
2149
 
2150
+ #: src/addons/onedrive.php:950
2151
  msgid "You must add the following as the authorised redirect URI in your OneDrive console (under \"API Settings\") when asked"
2152
  msgstr ""
2153
 
2154
+ #: src/addons/azure.php:534
2155
+ msgid "Microsoft Azure is not compatible with sites hosted on a localhost or 127.0.0.1 URL - their developer console forbids these (current URL is: %s)."
2156
+ msgstr ""
2157
+
2158
+ #: src/addons/onedrive.php:922, src/addons/onedrive.php:924
2159
  msgid "%s authorisation failed:"
2160
  msgstr ""
2161
 
2162
+ #: src/addons/onedrive.php:794, src/addons/onedrive.php:970,
2163
+ #: src/addons/onedrive.php:974
2164
  msgid "OneDrive"
2165
  msgstr ""
2166
 
2167
+ #: src/addons/onedrive.php:625
2168
  msgid "Please re-authorize the connection to your %s account."
2169
  msgstr ""
2170
 
2171
+ #: src/methods/email.php:75
2172
  msgid "configure it here"
2173
  msgstr ""
2174
 
2175
+ #: src/addons/onedrive.php:618, src/methods/updraftvault.php:589
2176
  msgid "To remove the block, please go here."
2177
  msgstr ""
2178
 
2179
+ #: src/addons/s3-enhanced.php:454
2180
  msgid "Do remember to save your settings."
2181
  msgstr ""
2182
 
2183
+ #: src/addons/s3-enhanced.php:454
2184
  msgid "You are now using a IAM user account to access your bucket."
2185
  msgstr ""
2186
 
2187
+ #: src/addons/s3-enhanced.php:359
2188
  msgid "S3 bucket"
2189
  msgstr ""
2190
 
2191
+ #: src/addons/s3-enhanced.php:349
2192
  msgid "China (Beijing) (restricted)"
2193
  msgstr ""
2194
 
2195
+ #: src/addons/s3-enhanced.php:348
2196
  msgid "South America (Sao Paulo)"
2197
  msgstr ""
2198
 
2199
+ #: src/addons/s3-enhanced.php:347
2200
  msgid "Asia Pacific (Tokyo)"
2201
  msgstr ""
2202
 
2203
+ #: src/addons/s3-enhanced.php:345
2204
  msgid "Asia Pacific (Sydney)"
2205
  msgstr ""
2206
 
2207
+ #: src/addons/s3-enhanced.php:344
2208
  msgid "Asia Pacific (Singapore)"
2209
  msgstr ""
2210
 
2211
+ #: src/addons/s3-enhanced.php:338
2212
  msgid "US Government West (restricted)"
2213
  msgstr ""
2214
 
2215
+ #: src/addons/s3-enhanced.php:337
2216
  msgid "US West (N. California)"
2217
  msgstr ""
2218
 
2219
+ #: src/addons/s3-enhanced.php:336
2220
  msgid "US West (Oregon)"
2221
  msgstr ""
2222
 
2223
+ #: src/addons/s3-enhanced.php:334
2224
  msgid "US Standard (default)"
2225
  msgstr ""
2226
 
2227
+ #: src/addons/s3-enhanced.php:330
2228
  msgid "S3 storage region"
2229
  msgstr ""
2230
 
2231
+ #: src/addons/s3-enhanced.php:328
2232
  msgid "New IAM username"
2233
  msgstr ""
2234
 
2235
+ #: src/addons/s3-enhanced.php:327
2236
  msgid "Admin secret key"
2237
  msgstr ""
2238
 
2239
+ #: src/addons/s3-enhanced.php:326
2240
  msgid "Admin access key"
2241
  msgstr ""
2242
 
2243
+ #: src/addons/s3-enhanced.php:319
2244
  msgid "Then, these lower-powered access credentials can be used, instead of storing your administrative keys."
2245
  msgstr ""
2246
 
2247
+ #: src/addons/s3-enhanced.php:319
2248
  msgid "These will be used to create a new user and key pair with an IAM policy attached which will only allow it to access the indicated bucket."
2249
  msgstr ""
2250
 
2251
+ #: src/addons/s3-enhanced.php:319
2252
  msgid "Enter your administrative Amazon S3 access/secret keys (this needs to be a key pair with enough rights to create new users and buckets), and a new (unique) username for the new user and a bucket name."
2253
  msgstr ""
2254
 
2255
+ #: src/addons/s3-enhanced.php:396
2256
  msgid "Create new IAM user and S3 bucket"
2257
  msgstr ""
2258
 
2259
+ #: src/addons/s3-enhanced.php:305
2260
  msgid "Secret Key: %s"
2261
  msgstr ""
2262
 
2263
+ #: src/addons/s3-enhanced.php:305
2264
  msgid "Access Key: %s"
2265
  msgstr ""
2266
 
2267
+ #: src/addons/s3-enhanced.php:293
2268
  msgid "Failed to apply User Policy"
2269
  msgstr ""
2270
 
2271
+ #: src/addons/s3-enhanced.php:234, src/addons/s3-enhanced.php:238
2272
  msgid "Operation to create user Access Key failed"
2273
  msgstr ""
2274
 
2275
+ #: src/addons/s3-enhanced.php:232
2276
  msgid "Failed to create user Access Key"
2277
  msgstr ""
2278
 
2279
+ #: src/addons/s3-enhanced.php:212, src/addons/s3-enhanced.php:215,
2280
+ #: src/addons/s3-enhanced.php:219
2281
  msgid "IAM operation failed (%s)"
2282
  msgstr ""
2283
 
2284
+ #: src/addons/s3-enhanced.php:210
2285
  msgid "Conflict: that user already exists"
2286
  msgstr ""
2287
 
2288
+ #: src/addons/s3-enhanced.php:182
2289
  msgid "Failure: We could not successfully access or create such a bucket. Please check your access credentials, and if those are correct then try another bucket name (as another AWS user may already have taken your name)."
2290
  msgstr ""
2291
 
2292
+ #: src/addons/s3-enhanced.php:135
2293
  msgid "AWS authentication failed"
2294
  msgstr ""
2295
 
2296
+ #: src/addons/s3-enhanced.php:128
2297
  msgid "Cannot create new AWS user, since the old AWS toolkit is being used."
2298
  msgstr ""
2299
 
2300
+ #: src/addons/s3-enhanced.php:103
2301
  msgid "You need to enter a bucket"
2302
  msgstr ""
2303
 
2304
+ #: src/addons/s3-enhanced.php:100
2305
  msgid "You need to enter a new IAM username"
2306
  msgstr ""
2307
 
2308
+ #: src/addons/s3-enhanced.php:97
2309
  msgid "You need to enter an admin secret key"
2310
  msgstr ""
2311
 
2312
+ #: src/addons/s3-enhanced.php:94
2313
  msgid "You need to enter an admin access key"
2314
  msgstr ""
2315
 
2316
+ #: src/addons/s3-enhanced.php:82
2317
  msgid "If you have an AWS admin user, then you can use this wizard to quickly create a new AWS (IAM) user with access to only this bucket (rather than your whole account)"
2318
  msgstr ""
2319
 
2320
+ #: src/methods/s3.php:862
2321
  msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on."
2322
  msgstr ""
2323
 
2324
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:11
2325
  msgid "For personal support, the ability to copy sites, more storage destinations, encrypted backups for security, multiple backup destinations, better reporting, no adverts and plenty more, take a look at the premium version of UpdraftPlus - the world’s most popular backup plugin."
2326
  msgstr ""
2327
 
2328
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:9
2329
  msgid "UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time."
2330
  msgstr ""
2331
 
2332
+ #: src/addons/onedrive.php:595, src/addons/onedrive.php:618,
2333
+ #: src/methods/updraftvault.php:589, src/udaddons/updraftplus-addons.php:766,
2334
+ #: src/udaddons/updraftplus-addons.php:781
 
 
 
2335
  msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks."
2336
  msgstr ""
2337
 
2338
+ #: src/addons/onedrive.php:618, src/methods/updraftvault.php:589,
2339
+ #: src/udaddons/updraftplus-addons.php:781
2340
  msgid "It appears that your web server's IP Address (%s) is blocked."
2341
  msgstr ""
2342
 
2343
+ #: src/addons/onedrive.php:618, src/methods/updraftvault.php:589,
2344
+ #: src/udaddons/updraftplus-addons.php:781
2345
  msgid "UpdraftPlus.com has responded with 'Access Denied'."
2346
  msgstr ""
2347
 
2348
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:17
2349
  msgid "Premium WooCommerce plugins"
2350
  msgstr ""
2351
 
2352
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:17
2353
  msgid "Free two-factor security plugin"
2354
  msgstr ""
2355
 
2356
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:17
2357
  msgid "More Quality Plugins"
2358
  msgstr ""
2359
 
2360
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:11
2361
  msgid "Go to the shop."
2362
  msgstr ""
2363
 
2364
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:11
2365
  msgid "Compare with the free version"
2366
  msgstr ""
2367
 
2368
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:11,
2369
+ #: src/templates/wp-admin/settings/tab-addons.php:33,
2370
+ #: src/templates/wp-admin/settings/tab-addons.php:269
2371
  msgid "UpdraftPlus Premium"
2372
  msgstr ""
2373
 
2374
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:9
2375
  msgid "Follow this link to sign up."
2376
  msgstr ""
2377
 
2378
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:9
2379
  msgid "Free Newsletter"
2380
  msgstr ""
2381
 
2382
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:4
2383
  msgid "Thank you for backing up with UpdraftPlus!"
2384
  msgstr ""
2385
 
2386
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:2,
2387
+ #: src/templates/wp-admin/notices/thanks-for-using-main-dash.php:21
2388
  msgid "Dismiss (for %s months)"
2389
  msgstr ""
2390
 
2391
+ #: src/addons/fixtime.php:448
2392
  msgid "(at same time as files backup)"
2393
  msgstr ""
2394
 
2395
+ #: src/admin.php:2975
2396
  msgid "No backup has been completed"
2397
  msgstr ""
2398
 
2399
+ #: src/templates/wp-admin/settings/tab-addons.php:14
2400
  msgid "The first step is to de-install the free version."
2401
  msgstr ""
2402
 
2403
+ #: src/templates/wp-admin/settings/tab-addons.php:14
2404
  msgid "If you have made a purchase from UpdraftPlus.Com, then follow this link to the instructions to install your purchase."
2405
  msgstr ""
2406
 
2407
+ #: src/templates/wp-admin/settings/header.php:12
2408
  msgid "Newsletter sign-up"
2409
  msgstr ""
2410
 
2411
+ #: src/includes/updraftplus-notices.php:142
2412
  msgid "Follow this link to sign up for the UpdraftPlus newsletter."
2413
  msgstr ""
2414
 
2415
+ #: src/templates/wp-admin/settings/tab-addons.php:135,
2416
+ #: src/templates/wp-admin/settings/tab-addons.php:136
2417
  msgid "Backup non-WordPress files and databases"
2418
  msgstr ""
2419
 
2420
+ #: src/templates/wp-admin/settings/tab-addons.php:19
2421
  msgid "Ask a pre-sales question"
2422
  msgstr ""
2423
 
2424
+ #: src/templates/wp-admin/settings/tab-addons.php:18
2425
  msgid "Pre-sales FAQs"
2426
  msgstr ""
2427
 
2428
+ #: src/templates/wp-admin/settings/tab-addons.php:17
2429
  msgid "Full feature list"
2430
  msgstr ""
2431
 
2432
+ #: src/templates/wp-admin/settings/tab-addons.php:16
2433
  msgid "Get UpdraftPlus Premium"
2434
  msgstr ""
2435
 
2436
+ #: src/templates/wp-admin/settings/tab-addons.php:14
2437
  msgid "You are currently using the free version of UpdraftPlus from wordpress.org."
2438
  msgstr ""
2439
 
2440
+ #: src/addons/autobackup.php:1061
2441
  msgid "Backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating"
2442
  msgstr ""
2443
 
2444
+ #: src/methods/s3.php:148, src/methods/s3.php:149, src/methods/s3.php:150,
2445
+ #: src/methods/s3.php:158, src/methods/s3.php:159, src/methods/s3.php:160
2446
  msgid "%s Error: Failed to initialise"
2447
  msgstr ""
2448
 
2449
+ #: src/templates/wp-admin/settings/form-contents.php:261
2450
  msgctxt "Uploader: Drop db.gz.crypt files here to upload them for decryption - or - Select Files"
2451
  msgid "or"
2452
  msgstr ""
2453
 
2454
+ #: src/admin.php:686
 
 
 
 
 
2455
  msgid "You did not select any components to restore. Please select at least one, and then try again."
2456
  msgstr ""
2457
 
2458
+ #: src/addons/sftp.php:400
2459
  msgctxt "Do not translate BEGIN RSA PRIVATE KEY. PCKS1, XML, PEM and PuTTY are also technical acronyms which should not be translated."
2460
  msgid "PKCS1 (PEM header: BEGIN RSA PRIVATE KEY), XML and PuTTY format keys are accepted."
2461
  msgstr ""
2462
 
2463
+ #: src/addons/sftp.php:363
2464
  msgid "Resuming partial uploads is supported for SFTP, but not for SCP. Thus, if using SCP then you will need to ensure that your webserver allows PHP processes to run long enough to upload your largest backup file."
2465
  msgstr ""
2466
 
2467
+ #: src/methods/openstack2.php:173
2468
  msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenStack tenant\" to get more help on its meaning"
2469
  msgid "tenant"
2470
  msgstr ""
2471
 
2472
+ #: src/methods/openstack2.php:123
2473
  msgctxt "Keystone and swauth are technical terms which cannot be translated"
2474
  msgid "This needs to be a v2 (Keystone) authentication URI; v1 (Swauth) is not supported."
2475
  msgstr ""
2476
 
2477
+ #: src/templates/wp-admin/settings/form-contents.php:332
2478
  msgid "your site's admin address"
2479
  msgstr ""
2480
 
2481
+ #: src/templates/wp-admin/settings/form-contents.php:332
2482
  msgid "Check this box to have a basic report sent to"
2483
  msgstr ""
2484
 
2485
+ #: src/admin.php:2984
2486
  msgctxt "i.e. Non-automatic"
2487
  msgid "Manual"
2488
  msgstr ""
2489
 
2490
+ #: src/restorer.php:2095
2491
  msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred"
2492
  msgid "An error (%s) occurred:"
2493
  msgstr ""
2494
 
2495
+ #: src/addons/lockadmin.php:176
2496
  msgid "Change Lock Settings"
2497
  msgstr ""
2498
 
2499
+ #: src/addons/morefiles.php:248
2500
  msgid "Any other file/directory on your server that you wish to back up"
2501
  msgstr ""
2502
 
2503
+ #: src/admin.php:2212
2504
  msgid "For even more features and personal support, check out "
2505
  msgstr ""
2506
 
2507
+ #: src/addons/moredatabase.php:52
 
 
 
 
 
 
 
 
2508
  msgid "Database decryption phrase"
2509
  msgstr ""
2510
 
2511
+ #: src/addons/autobackup.php:143, src/addons/autobackup.php:1007,
2512
+ #: src/admin.php:691
2513
  msgid "Automatic backup before update"
2514
  msgstr ""
2515
 
2516
+ #: src/addons/autobackup.php:108
2517
  msgid "WordPress core (only)"
2518
  msgstr ""
2519
 
2520
+ #: src/addons/lockadmin.php:228
2521
  msgid "For unlocking support, please contact whoever manages UpdraftPlus for you."
2522
  msgstr ""
2523
 
2524
+ #: src/addons/lockadmin.php:219
2525
  msgid "To access the UpdraftPlus settings, please enter your unlock password"
2526
  msgstr ""
2527
 
2528
+ #: src/addons/lockadmin.php:216
2529
  msgid "Password incorrect"
2530
  msgstr ""
2531
 
2532
+ #: src/addons/lockadmin.php:204, src/addons/lockadmin.php:210
2533
  msgid "Unlock"
2534
  msgstr ""
2535
 
2536
+ #: src/addons/lockadmin.php:174
2537
  msgid "Otherwise, the default link will be shown."
2538
  msgstr ""
2539
 
2540
+ #: src/addons/lockadmin.php:174
2541
  msgid "Anyone seeing the lock screen will be shown this URL for support - enter a website address or an email address."
2542
  msgstr ""
2543
 
2544
+ #: src/addons/lockadmin.php:174
2545
  msgid "Support URL"
2546
  msgstr ""
2547
 
2548
+ #: src/addons/lockadmin.php:172
2549
  msgid "Require password again after"
2550
  msgstr ""
2551
 
2552
+ #: src/addons/lockadmin.php:163, src/addons/lockadmin.php:164
2553
  msgid "%s weeks"
2554
  msgstr ""
2555
 
2556
+ #: src/addons/lockadmin.php:162
2557
  msgid "1 week"
2558
  msgstr ""
2559
 
2560
+ #: src/addons/lockadmin.php:160, src/addons/lockadmin.php:161
2561
  msgid "%s hours"
2562
  msgstr ""
2563
 
2564
+ #: src/addons/lockadmin.php:159
2565
  msgid "1 hour"
2566
  msgstr ""
2567
 
2568
+ #: src/addons/lockadmin.php:148
2569
  msgid "Please make sure that you have made a note of the password!"
2570
  msgstr ""
2571
 
2572
+ #: src/addons/lockadmin.php:141,
2573
+ #: src/templates/wp-admin/advanced/lock-admin.php:7
2574
  msgid "Lock access to the UpdraftPlus settings page"
2575
  msgstr ""
2576
 
2577
+ #: src/addons/lockadmin.php:117
 
 
 
 
2578
  msgid "The admin password has been changed."
2579
  msgstr ""
2580
 
2581
+ #: src/addons/lockadmin.php:115
2582
  msgid "An admin password has been set."
2583
  msgstr ""
2584
 
2585
+ #: src/addons/lockadmin.php:113
2586
  msgid "The admin password has now been removed."
2587
  msgstr ""
2588
 
2589
+ #: src/addons/morefiles.php:131
2590
  msgid "(learn more about this significant option)"
2591
  msgstr ""
2592
 
2593
+ #: src/udaddons/options.php:280
2594
  msgid "Note that after you have claimed your add-ons, you can remove your password (but not the email address) from the settings below, without affecting this site's access to updates."
2595
  msgstr ""
2596
 
2597
+ #: src/udaddons/options.php:46
2598
+ msgid "Add-ons"
2599
+ msgstr ""
2600
+
2601
+ #: src/admin.php:2545, src/admin.php:3486, src/admin.php:3487
2602
  msgid "View Log"
2603
  msgstr ""
2604
 
2605
+ #: src/templates/wp-admin/settings/existing-backups-table.php:15
2606
  msgid "Backup data (click to download)"
2607
  msgstr ""
2608
 
2609
+ #: src/templates/wp-admin/settings/existing-backups-table.php:14
2610
  msgid "Backup date"
2611
  msgstr ""
2612
 
2613
+ #: src/templates/wp-admin/settings/form-contents.php:42,
2614
+ #: src/templates/wp-admin/settings/form-contents.php:83
2615
  msgid "and retain this many scheduled backups"
2616
  msgstr ""
2617
 
2618
+ #: src/admin.php:2945
2619
  msgid "incremental backup; base backup: %s"
2620
  msgstr ""
2621
 
2622
+ #: src/templates/wp-admin/advanced/lock-admin.php:9
2623
  msgid "For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium."
2624
  msgstr ""
2625
 
2626
+ #: src/templates/wp-admin/settings/downloading-and-restoring.php:52
2627
  msgid "Upload files into UpdraftPlus."
2628
  msgstr ""
2629
 
2630
+ #: src/admin.php:927, src/includes/class-commands.php:364,
2631
+ #: src/templates/wp-admin/settings/tab-status.php:22
2632
  msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)."
2633
  msgstr ""
2634
 
2635
+ #: src/class-updraftplus.php:4228
2636
  msgid "Backup label:"
2637
  msgstr ""
2638
 
2639
+ #: src/admin.php:1737
2640
  msgid "Error: unexpected file read fail"
2641
  msgstr ""
2642
 
2643
+ #: src/backup.php:3027
2644
  msgid "check your log for more details."
2645
  msgstr ""
2646
 
2647
+ #: src/backup.php:3025
2648
  msgid "your web hosting account appears to be full; please see: %s"
2649
  msgstr ""
2650
 
2651
+ #: src/backup.php:3023
2652
  msgid "A zip error occurred"
2653
  msgstr ""
2654
 
2655
+ #: src/addons/reporting.php:65
2656
  msgid "Your label for this backup (optional)"
2657
  msgstr ""
2658
 
2659
+ #: src/addons/googlecloud.php:905, src/methods/googledrive.php:902
2660
  msgid "%s does not allow authorisation of sites hosted on direct IP addresses. You will need to change your site's address (%s) before you can use %s for storage."
2661
  msgstr ""
2662
 
2663
+ #: src/methods/updraftvault.php:628, src/udaddons/updraftplus-addons.php:823
2664
  msgid "You entered an email address that was not recognised by UpdraftPlus.Com"
2665
  msgstr ""
2666
 
2667
+ #: src/methods/updraftvault.php:625, src/udaddons/updraftplus-addons.php:819
2668
  msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com."
2669
  msgstr ""
2670
 
2671
+ #: src/methods/updraftvault.php:565, src/udaddons/updraftplus-addons.php:689
2672
  msgid "You need to supply both an email address and a password"
2673
  msgstr ""
2674
 
2675
+ #: src/templates/wp-admin/settings/tab-status.php:89
2676
  msgid "To proceed, press 'Backup Now'. Then, watch the 'Last Log Message' field for activity."
2677
  msgstr ""
2678
 
2679
+ #: src/class-updraftplus.php:4247
2680
  msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite."
2681
  msgstr ""
2682
 
2683
+ #: src/class-updraftplus.php:4247
2684
  msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible."
2685
  msgstr ""
2686
 
2687
+ #: src/addons/migrator.php:1083
2688
  msgid "already done"
2689
  msgstr ""
2690
 
2691
+ #: src/addons/migrator.php:1040
2692
  msgid "skipped (not in list)"
2693
  msgstr ""
2694
 
2695
+ #: src/addons/migrator.php:1040, src/addons/migrator.php:1083,
2696
+ #: src/addons/migrator.php:1213
2697
  msgid "Search and replacing table:"
2698
  msgstr ""
2699
 
2700
+ #: src/addons/migrator.php:322
2701
  msgid "Enter a comma-separated list; otherwise, leave blank for all tables."
2702
  msgstr ""
2703
 
2704
+ #: src/addons/migrator.php:322
2705
  msgid "These tables only"
2706
  msgstr ""
2707
 
2708
+ #: src/addons/migrator.php:321
2709
  msgid "Rows per batch"
2710
  msgstr ""
2711
 
2712
+ #: src/udaddons/options.php:109
2713
  msgid "You have not yet connected with your UpdraftPlus.Com account."
2714
  msgstr ""
2715
 
2716
+ #: src/udaddons/options.php:107, src/udaddons/options.php:109
2717
  msgid "You need to connect to receive future updates to UpdraftPlus."
2718
  msgstr ""
2719
 
2720
+ #: src/class-updraftplus.php:4220
2721
  msgid "Any support requests to do with %s should be raised with your web hosting company."
2722
  msgstr ""
2723
 
2724
+ #: src/class-updraftplus.php:4220
2725
  msgid "You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version."
2726
  msgstr ""
2727
 
2728
+ #: src/class-updraftplus.php:4220
2729
  msgid "This is significantly newer than the server which you are now restoring onto (version %s)."
2730
  msgstr ""
2731
 
2732
+ #: src/class-updraftplus.php:4220
2733
  msgid "The site in this backup was running on a webserver with version %s of %s. "
2734
  msgstr ""
2735
 
2736
+ #: src/includes/updraftplus-notices.php:133,
2737
+ #: src/includes/updraftplus-notices.php:134
2738
  msgid "LinkedIn"
2739
  msgstr ""
2740
 
2741
+ #: src/includes/updraftplus-notices.php:133,
2742
+ #: src/includes/updraftplus-notices.php:134
2743
  msgid "Google+"
2744
  msgstr ""
2745
 
2746
+ #: src/includes/updraftplus-notices.php:133,
2747
+ #: src/includes/updraftplus-notices.php:134
2748
  msgid "Facebook"
2749
  msgstr ""
2750
 
2751
+ #: src/includes/updraftplus-notices.php:133,
2752
+ #: src/includes/updraftplus-notices.php:134,
2753
+ #: src/templates/wp-admin/settings/header.php:10
2754
  msgid "Twitter"
2755
  msgstr ""
2756
 
2757
+ #: src/includes/updraftplus-notices.php:132
2758
  msgid "UpdraftPlus is on social media - check us out!"
2759
  msgstr ""
2760
 
2761
+ #: src/admin.php:3548
2762
  msgid "Why am I seeing this?"
2763
  msgstr ""
2764
 
2765
+ #: src/templates/wp-admin/settings/downloading-and-restoring.php:39
2766
  msgid "The location of this directory is set in the expert settings, in the Settings tab."
2767
  msgstr ""
2768
 
2769
+ #: src/templates/wp-admin/settings/downloading-and-restoring.php:39
2770
  msgid "Press here to look inside your UpdraftPlus directory (in your web hosting space) for any new backup sets that you have uploaded."
2771
  msgstr ""
2772
 
2773
+ #: src/admin.php:1676, src/admin.php:1688
2774
  msgid "Start backup"
2775
  msgstr ""
2776
 
2777
+ #: src/class-updraftplus.php:4192, src/restorer.php:996
2778
  msgid "You are using the %s webserver, but do not seem to have the %s module loaded."
2779
  msgstr ""
2780
 
2781
+ #: src/admin.php:2868
2782
  msgid "You will need to consult with your web hosting provider to find out how to set permissions for a WordPress plugin to write to the directory."
2783
  msgstr ""
2784
 
2785
+ #: src/templates/wp-admin/advanced/advanced-tools.php:6
2786
  msgid "Unless you have a problem, you can completely ignore everything here."
2787
  msgstr ""
2788
 
2789
+ #: src/admin.php:1898
2790
  msgid "This file could not be uploaded"
2791
  msgstr ""
2792
 
2793
+ #: src/admin.php:1863
2794
  msgid "You will find more information about this in the Settings section."
2795
  msgstr ""
2796
 
2797
+ #: src/addons/importer.php:78
2798
  msgid "Supported backup plugins: %s"
2799
  msgstr ""
2800
 
2801
+ #: src/addons/importer.php:78
2802
  msgid "Was this a backup created by a different backup plugin? If so, then you might first need to rename it so that it can be recognised - please follow this link."
2803
  msgstr ""
2804
 
2805
+ #: src/templates/wp-admin/settings/form-contents.php:58
2806
  msgid "Tell me more about incremental backups"
2807
  msgstr ""
2808
 
2809
+ #: src/templates/wp-admin/advanced/site-info.php:42
2810
  msgid "Memory limit"
2811
  msgstr ""
2812
 
2813
+ #: src/class-updraftplus.php:4350, src/restorer.php:1441
2814
  msgid "restoration"
2815
  msgstr ""
2816
 
2817
+ #: src/backup.php:844
 
 
 
 
2818
  msgid "Incremental"
2819
  msgstr ""
2820
 
2821
+ #: src/backup.php:844
2822
  msgid "Full backup"
2823
  msgstr ""
2824
 
2825
+ #: src/addons/autobackup.php:529, src/addons/autobackup.php:531
2826
  msgid "now proceeding with the updates..."
2827
  msgstr ""
2828
 
2829
+ #: src/addons/autobackup.php:529, src/addons/autobackup.php:531
2830
  msgid "(view log...)"
2831
  msgstr ""
2832
 
2833
+ #: src/addons/autobackup.php:529, src/addons/autobackup.php:531
2834
  msgid "Backup succeeded"
2835
  msgstr ""
2836
 
2837
+ #: src/admin.php:2985, src/admin.php:2986, src/admin.php:2987,
2838
+ #: src/updraftplus.php:92, src/updraftplus.php:93
2839
  msgid "Every %s hours"
2840
  msgstr ""
2841
 
2842
+ #: src/addons/migrator.php:785, src/addons/migrator.php:787
2843
  msgid "search and replace"
2844
  msgstr ""
2845
 
2846
+ #: src/addons/migrator.php:324
2847
  msgid "Go"
2848
  msgstr ""
2849
 
2850
+ #: src/addons/migrator.php:313
2851
  msgid "A search/replace cannot be undone - are you sure you want to do this?"
2852
  msgstr ""
2853
 
2854
+ #: src/addons/migrator.php:312
2855
  msgid "This can easily destroy your site; so, use it with care!"
2856
  msgstr ""
2857
 
2858
+ #: src/addons/migrator.php:282, src/addons/migrator.php:320
2859
  msgid "Replace with"
2860
  msgstr ""
2861
 
2862
+ #: src/addons/migrator.php:281, src/addons/migrator.php:319
2863
  msgid "Search for"
2864
  msgstr ""
2865
 
2866
+ #: src/addons/migrator.php:280, src/addons/migrator.php:311,
2867
+ #: src/templates/wp-admin/advanced/search-replace.php:7,
2868
+ #: src/templates/wp-admin/advanced/tools-menu.php:18
2869
  msgid "Search / replace database"
2870
  msgstr ""
2871
 
2872
+ #: src/addons/migrator.php:286
2873
  msgid "search term"
2874
  msgstr ""
2875
 
2876
+ #: src/restorer.php:2123
2877
  msgid "Too many database errors have occurred - aborting"
2878
  msgstr ""
2879
 
2880
+ #: src/backup.php:910
2881
  msgid "read more at %s"
2882
  msgstr ""
2883
 
2884
+ #: src/backup.php:910
2885
  msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news"
2886
  msgstr ""
2887
 
2888
+ #: src/methods/googledrive.php:908
2889
  msgid "N.B. If you install UpdraftPlus on several WordPress sites, then you cannot re-use your project; you must create a new one from your Google API console for each site."
2890
  msgstr ""
2891
 
2892
+ #: src/admin.php:3313
2893
  msgid "You have not yet made any backups."
2894
  msgstr ""
2895
 
2896
+ #: src/templates/wp-admin/settings/form-contents.php:224
2897
  msgid "Database Options"
2898
  msgstr ""
2899
 
2900
+ #: src/templates/wp-admin/advanced/site-info.php:88
2901
  msgid "Plugins for debugging:"
2902
  msgstr ""
2903
 
2904
+ #: src/templates/wp-admin/advanced/site-info.php:67
2905
  msgid "%s (%s used)"
2906
  msgstr ""
2907
 
2908
+ #: src/templates/wp-admin/advanced/site-info.php:67
2909
  msgid "Free disk space in account:"
2910
  msgstr ""
2911
 
2912
+ #: src/templates/wp-admin/settings/downloading-and-restoring.php:26
2913
+ msgid "Existing Backups: Downloading And Restoring"
2914
+ msgstr ""
2915
+
2916
+ #: src/admin.php:4114, src/templates/wp-admin/settings/tab-status.php:27
2917
  msgid "This button is disabled because your backup directory is not writable (see the settings)."
2918
  msgstr ""
2919
 
2920
+ #: src/admin.php:518, src/admin.php:660, src/admin.php:1541,
2921
+ #: src/includes/deprecated-actions.php:30,
2922
+ #: src/templates/wp-admin/settings/downloading-and-restoring.php:22,
2923
+ #: src/templates/wp-admin/settings/tab-bar.php:6
2924
  msgid "Existing Backups"
2925
  msgstr ""
2926
 
2927
+ #: src/admin.php:510, src/templates/wp-admin/settings/tab-bar.php:5
2928
  msgid "Current Status"
2929
  msgstr ""
2930
 
2931
+ #: src/admin.php:932
2932
  msgid "To change any of the default settings of what is backed up, to configure scheduled backups, to send your backups to remote storage (recommended), and more, go to the settings tab."
2933
  msgstr ""
2934
 
2935
+ #: src/admin.php:932
2936
  msgid "To make a backup, just press the Backup Now button."
2937
  msgstr ""
2938
 
2939
+ #: src/admin.php:932
2940
  msgid "Welcome to UpdraftPlus!"
2941
  msgstr ""
2942
 
2943
+ #: src/addons/moredatabase.php:311
2944
  msgid "If you enter text here, it is used to encrypt database backups (Rijndael). <strong>Do make a separate record of it and do not lose it, or all your backups <em>will</em> be useless.</strong> This is also the key used to decrypt backups from this admin interface (so if you change it, then automatic decryption will not work until you change it back)."
2945
  msgstr ""
2946
 
2947
+ #: src/addons/moredatabase.php:262
2948
  msgid "Testing..."
2949
  msgstr ""
2950
 
2951
+ #: src/addons/moredatabase.php:249
2952
  msgid "Test connection..."
2953
  msgstr ""
2954
 
2955
+ #: src/addons/moredatabase.php:248
2956
  msgid "Table prefix"
2957
  msgstr ""
2958
 
2959
+ #: src/addons/moredatabase.php:242
2960
  msgid "Backup external database"
2961
  msgstr ""
2962
 
2963
+ #: src/addons/moredatabase.php:170
2964
  msgid "Add an external database to backup..."
2965
  msgstr ""
2966
 
2967
+ #: src/addons/moredatabase.php:166
2968
  msgid "If your database includes extra tables that are not part of this WordPress site (you will know if this is the case), then activate this option to also back them up."
2969
  msgstr ""
2970
 
2971
+ #: src/addons/moredatabase.php:165
2972
  msgid "Backup non-WordPress tables contained in the same database as WordPress"
2973
  msgstr ""
2974
 
2975
+ #: src/addons/moredatabase.php:165
2976
  msgid "This option will cause tables stored in the MySQL database which do not belong to WordPress (identified by their lacking the configured WordPress prefix, %s) to also be backed up."
2977
  msgstr ""
2978
 
2979
+ #: src/addons/moredatabase.php:150
2980
  msgid "Connection failed."
2981
  msgstr ""
2982
 
2983
+ #: src/addons/moredatabase.php:148
2984
  msgid "Connection succeeded."
2985
  msgstr ""
2986
 
2987
+ #: src/addons/moredatabase.php:130
2988
  msgid "%s total table(s) found; %s with the indicated prefix."
2989
  msgstr ""
2990
 
2991
+ #: src/addons/moredatabase.php:124
2992
  msgid "%s table(s) found."
2993
  msgstr ""
2994
 
2995
+ #: src/addons/moredatabase.php:97
2996
  msgid "database connection attempt failed"
2997
  msgstr ""
2998
 
2999
+ #: src/addons/moredatabase.php:86
3000
  msgid "database name"
3001
  msgstr ""
3002
 
3003
+ #: src/addons/moredatabase.php:84
3004
  msgid "host"
3005
  msgstr ""
3006
 
3007
+ #: src/addons/moredatabase.php:82
3008
  msgid "user"
3009
  msgstr ""
3010
 
3011
+ #: src/class-updraftplus.php:1587
3012
  msgid "External database (%s)"
3013
  msgstr ""
3014
 
3015
+ #: src/methods/googledrive.php:908
3016
  msgid "Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section."
3017
  msgstr ""
3018
 
3019
+ #: src/methods/googledrive.php:371
3020
  msgid "failed to access parent folder"
3021
  msgstr ""
3022
 
3023
+ #: src/addons/googlecloud.php:612, src/addons/onedrive.php:762,
3024
+ #: src/addons/onedrive.php:773, src/methods/googledrive.php:328
3025
  msgid "However, subsequent access attempts failed:"
3026
  msgstr ""
3027
 
3028
+ #: src/admin.php:3338
3029
  msgid "External database"
3030
  msgstr ""
3031
 
3032
+ #: src/templates/wp-admin/settings/form-contents.php:366
3033
  msgid "This will also cause debugging output from all plugins to be shown upon this screen - please do not be surprised to see these."
3034
  msgstr ""
3035
 
3036
+ #: src/templates/wp-admin/settings/form-contents.php:306
3037
  msgid "Back up more databases"
3038
  msgstr ""
3039
 
3040
+ #: src/templates/wp-admin/settings/form-contents.php:263
3041
  msgid "First, enter the decryption key"
3042
  msgstr ""
3043
 
3044
+ #: src/templates/wp-admin/settings/form-contents.php:245
3045
  msgid "You can manually decrypt an encrypted database here."
3046
  msgstr ""
3047
 
3048
+ #: src/templates/wp-admin/settings/form-contents.php:233
3049
  msgid "It can also backup external databases."
3050
  msgstr ""
3051
 
3052
+ #: src/templates/wp-admin/settings/form-contents.php:233
3053
  msgid "Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup."
3054
  msgstr ""
3055
 
3056
+ #: src/templates/wp-admin/settings/form-contents.php:96
3057
  msgid "use UpdraftPlus Premium"
3058
  msgstr ""
3059
 
3060
+ #: src/class-updraftplus.php:4110
3061
  msgid "Decryption failed. The database file is encrypted."
3062
  msgstr ""
3063
 
3064
+ #: src/includes/class-wpadmin-commands.php:130
3065
  msgid "Only the WordPress database can be restored; you will need to deal with the external database manually."
3066
  msgstr ""
3067
 
3068
+ #: src/restorer.php:1702, src/restorer.php:2068, src/restorer.php:2105,
3069
+ #: src/restorer.php:2118
3070
  msgid "An error occurred on the first %s command - aborting run"
3071
  msgstr ""
3072
 
3073
+ #: src/addons/moredatabase.php:105, src/backup.php:1372
3074
  msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled."
3075
  msgstr ""
3076
 
3077
+ #: src/backup.php:1372
3078
  msgid "database connection attempt failed."
3079
  msgstr ""
3080
 
3081
+ #: src/addons/migrator.php:971
3082
  msgid "Warning: the database's home URL (%s) is different to what we expected (%s)"
3083
  msgstr ""
3084
 
3085
+ #: src/addons/google-enhanced.php:87
3086
  msgid "In %s, path names are case sensitive."
3087
  msgstr ""
3088
 
3089
+ #: src/addons/azure.php:564, src/addons/google-enhanced.php:85,
3090
+ #: src/addons/onedrive.php:983
3091
  msgid "If you leave it blank, then the backup will be placed in the root of your %s"
3092
  msgstr ""
3093
 
3094
+ #: src/addons/google-enhanced.php:85, src/addons/googlecloud.php:943,
3095
+ #: src/addons/onedrive.php:983
3096
  msgid "e.g. %s"
3097
  msgstr ""
3098
 
3099
+ #: src/addons/google-enhanced.php:85, src/addons/onedrive.php:983
 
 
 
 
3100
  msgid "Enter the path of the %s folder you wish to use here."
3101
  msgstr ""
3102
 
3103
+ #: src/addons/azure.php:557, src/methods/openstack2.php:154
3104
  msgid "Container"
3105
  msgstr ""
3106
 
3107
+ #: src/methods/openstack2.php:137
3108
  msgid "Leave this blank, and a default will be chosen."
3109
  msgstr ""
3110
 
3111
+ #: src/methods/openstack2.php:128
3112
  msgid "Tenant"
3113
  msgstr ""
3114
 
3115
+ #: src/methods/openstack2.php:128
3116
  msgid "Follow this link for more information"
3117
  msgstr ""
3118
 
3119
+ #: src/methods/openstack2.php:120, src/methods/openstack2.php:178
3120
  msgid "authentication URI"
3121
  msgstr ""
3122
 
3123
+ #: src/methods/openstack2.php:115
3124
  msgid "Get your access credentials from your OpenStack Swift provider, and then pick a container name to use for storage. This container will be created for you if it does not already exist."
3125
  msgstr ""
3126
 
3127
+ #: src/methods/addon-base-v2.php:205, src/methods/addon-base-v2.php:225
3128
  msgid "Failed to download %s"
3129
  msgstr ""
3130
 
3131
+ #: src/methods/addon-base-v2.php:219
3132
  msgid "Failed to download"
3133
  msgstr ""
3134
 
3135
+ #: src/methods/addon-base-v2.php:127
3136
  msgid "failed to list files"
3137
  msgstr ""
3138
 
3139
+ #: src/methods/addon-base-v2.php:95, src/methods/addon-base-v2.php:100
3140
  msgid "Failed to upload %s"
3141
  msgstr ""
3142
 
3143
+ #: src/methods/dropbox.php:614, src/methods/dropbox.php:616
3144
  msgid "Success:"
3145
  msgstr ""
3146
 
3147
+ #: src/addons/onedrive.php:991, src/methods/dropbox.php:512
3148
  msgid "<strong>After</strong> you have saved your settings (by clicking 'Save Changes' below), then come back here once and click this link to complete authentication with %s."
3149
  msgstr ""
3150
 
3151
+ #: src/addons/onedrive.php:989, src/methods/dropbox.php:509
3152
  msgid "(You appear to be already authenticated)."
3153
  msgstr ""
3154
 
3155
+ #: src/methods/dropbox.php:504, src/methods/dropbox.php:510,
3156
+ #: src/methods/dropbox.php:512
3157
  msgid "Dropbox"
3158
  msgstr ""
3159
 
3160
+ #: src/addons/onedrive.php:988, src/methods/dropbox.php:504
3161
  msgid "Authenticate with %s"
3162
  msgstr ""
3163
 
3164
+ #: src/methods/cloudfiles.php:422
3165
  msgid "Error downloading remote file: Failed to download"
3166
  msgstr ""
3167
 
3168
+ #: src/methods/openstack-base.php:476, src/methods/openstack-base.php:481
3169
  msgid "Region: %s"
3170
  msgstr ""
3171
 
3172
+ #: src/methods/openstack-base.php:475
3173
  msgid "%s error - we accessed the container, but failed to create a file within it"
3174
  msgstr ""
3175
 
3176
+ #: src/methods/openstack-base.php:393
3177
  msgid "The %s object was not found"
3178
  msgstr ""
3179
 
3180
+ #: src/methods/openstack-base.php:52, src/methods/openstack-base.php:316,
3181
+ #: src/methods/openstack-base.php:385
3182
  msgid "Could not access %s container"
3183
  msgstr ""
3184
 
3185
+ #: src/methods/openstack-base.php:44, src/methods/openstack-base.php:112,
3186
+ #: src/methods/openstack-base.php:119, src/methods/openstack-base.php:308,
3187
+ #: src/methods/openstack-base.php:373
3188
  msgid "%s error - failed to access the container"
3189
  msgstr ""
3190
 
3191
+ #: src/addons/googlecloud.php:985, src/addons/onedrive.php:990,
3192
+ #: src/methods/dropbox.php:519, src/methods/googledrive.php:957
3193
  msgid "Account holder's name: %s."
3194
  msgstr ""
3195
 
3196
+ #: src/methods/googledrive.php:946
3197
  msgid "To be able to set a custom folder name, use UpdraftPlus Premium."
3198
  msgstr ""
3199
 
3200
+ #: src/methods/googledrive.php:937
3201
  msgid "It is an ID number internal to Google Drive"
3202
  msgstr ""
3203
 
3204
+ #: src/methods/googledrive.php:937
3205
  msgid "<strong>This is NOT a folder name</strong>."
3206
  msgstr ""
3207
 
3208
+ #: src/addons/google-enhanced.php:84, src/addons/onedrive.php:982,
3209
+ #: src/methods/googledrive.php:933, src/methods/googledrive.php:943
3210
  msgid "Folder"
3211
  msgstr ""
3212
 
3213
+ #: src/addons/googlecloud.php:293, src/addons/onedrive.php:366,
3214
+ #: src/methods/googledrive.php:863
3215
  msgid "%s download: failed: file not found"
3216
  msgstr ""
3217
 
3218
+ #: src/addons/googlecloud.php:632, src/methods/googledrive.php:348
3219
  msgid "Name: %s."
3220
  msgstr ""
3221
 
3222
+ #: src/methods/googledrive.php:141
3223
  msgid "Google Drive list files: failed to access parent folder"
3224
  msgstr ""
3225
 
3226
+ #: src/methods/addon-not-yet-present.php:83, src/methods/insufficient.php:67
3227
  msgid "Your %s version: %s."
3228
  msgstr ""
3229
 
3230
+ #: src/methods/addon-not-yet-present.php:82, src/methods/insufficient.php:66
3231
  msgid "You will need to ask your web hosting company to upgrade."
3232
  msgstr ""
3233
 
3234
+ #: src/methods/addon-not-yet-present.php:19, src/methods/insufficient.php:19
3235
  msgid "This remote storage method (%s) requires PHP %s or later."
3236
  msgstr ""
3237
 
3238
+ #: src/templates/wp-admin/advanced/site-info.php:93
 
 
 
 
3239
  msgid "Call"
3240
  msgstr ""
3241
 
3242
+ #: src/templates/wp-admin/advanced/site-info.php:91,
3243
+ #: src/templates/wp-admin/advanced/site-info.php:91
3244
  msgid "Fetch"
3245
  msgstr ""
3246
 
3247
+ #: src/addons/migrator.php:383,
3248
+ #: src/templates/wp-admin/settings/downloading-and-restoring.php:56,
3249
+ #: src/templates/wp-admin/settings/form-contents.php:253
3250
  msgid "This feature requires %s version %s or later"
3251
  msgstr ""
3252
 
3253
+ #: src/restorer.php:163
 
 
 
 
 
 
 
 
3254
  msgid "Failed to unpack the archive"
3255
  msgstr ""
3256
 
3257
+ #: src/class-updraftplus.php:1145
3258
  msgid "Error - failed to download the file"
3259
  msgstr ""
3260
 
3261
+ #: src/templates/wp-admin/settings/downloading-and-restoring.php:39
3262
  msgid "Rescan local folder for new backup sets"
3263
  msgstr ""
3264
 
3265
+ #: src/udaddons/updraftplus-addons.php:238
3266
  msgid "You should update UpdraftPlus to make sure that you have a version that has been tested for compatibility."
3267
  msgstr ""
3268
 
3269
+ #: src/udaddons/updraftplus-addons.php:238
3270
  msgid "It has been tested up to version %s."
3271
  msgstr ""
3272
 
3273
+ #: src/udaddons/updraftplus-addons.php:238
3274
  msgid "The installed version of UpdraftPlus Backup/Restore has not been tested on your version of WordPress (%s)."
3275
  msgstr ""
3276
 
3277
+ #: src/addons/sftp.php:444
3278
  msgid "password/key"
3279
  msgstr ""
3280
 
3281
+ #: src/addons/azure.php:550, src/addons/migrator.php:2205,
3282
+ #: src/addons/sftp.php:397, src/admin.php:707, src/admin.php:4303
3283
  msgid "Key"
3284
  msgstr ""
3285
 
3286
+ #: src/addons/sftp.php:392
3287
  msgid "Your login may be either password or key-based - you only need to enter one, not both."
3288
  msgstr ""
3289
 
3290
+ #: src/addons/sftp.php:310
3291
  msgid "The key provided was not in a valid format, or was corrupt."
3292
  msgstr ""
3293
 
3294
+ #: src/addons/sftp.php:49
3295
  msgid "SCP/SFTP password/key"
3296
  msgstr ""
3297
 
3298
+ #: src/admin.php:3373
3299
  msgid "Files backup (created by %s)"
3300
  msgstr ""
3301
 
3302
+ #: src/admin.php:3373
3303
  msgid "Files and database WordPress backup (created by %s)"
3304
  msgstr ""
3305
 
3306
+ #: src/addons/importer.php:276, src/admin.php:3367,
3307
+ #: src/class-updraftplus.php:2645
3308
  msgid "Backup created by: %s."
3309
  msgstr ""
3310
 
3311
+ #: src/admin.php:3336
3312
  msgid "Database (created by %s)"
3313
  msgstr ""
3314
 
3315
+ #: src/admin.php:3330, src/admin.php:3369
3316
  msgid "unknown source"
3317
  msgstr ""
3318
 
3319
+ #: src/templates/wp-admin/settings/downloading-and-restoring.php:40
3320
  msgid "Rescan remote storage"
3321
  msgstr ""
3322
 
3323
+ #: src/templates/wp-admin/settings/downloading-and-restoring.php:38
3324
  msgid "Upload backup files"
3325
  msgstr ""
3326
 
3327
+ #: src/admin.php:1942
3328
  msgid "This backup was created by %s, and can be imported."
3329
  msgstr ""
3330
 
3331
+ #: src/admin.php:961
3332
  msgid "Read this page for a guide to possible causes and how to fix it."
3333
  msgstr ""
3334
 
3335
+ #: src/admin.php:961
3336
  msgid "WordPress has a number (%d) of scheduled tasks which are overdue. Unless this is a development site, this probably means that the scheduler in your WordPress install is not working."
3337
  msgstr ""
3338
 
3339
+ #: src/admin.php:672, src/class-updraftplus.php:2652
3340
  msgid "If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you."
3341
  msgstr ""
3342
 
3343
+ #: src/admin.php:671
3344
  msgid "However, UpdraftPlus archives are standard zip/SQL files - so if you are sure that your file has the right format, then you can rename it to match that pattern."
3345
  msgstr ""
3346
 
3347
+ #: src/admin.php:671, src/admin.php:672, src/class-updraftplus.php:2652
3348
  msgid "This file does not appear to be an UpdraftPlus backup archive (such files are .zip or .gz files which have a name like: backup_(time)_(site name)_(code)_(type).(zip|gz))."
3349
  msgstr ""
3350
 
3351
+ #: src/admin.php:3370, src/includes/class-wpadmin-commands.php:143,
3352
+ #: src/restorer.php:1410
3353
  msgid "Backup created by unknown source (%s) - cannot be restored."
3354
  msgstr ""
3355
 
3356
+ #: src/restorer.php:820, src/restorer.php:868
3357
  msgid "The WordPress content folder (wp-content) was not found in this zip file."
3358
  msgstr ""
3359
 
3360
+ #: src/restorer.php:684
3361
  msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup"
3362
  msgstr ""
3363
 
3364
+ #: src/methods/dropbox.php:294
3365
  msgid "%s returned an unexpected HTTP response: %s"
3366
  msgstr ""
3367
 
3368
+ #: src/addons/sftp.php:912
3369
  msgid "The UpdraftPlus module for this file access method (%s) does not support listing files"
3370
  msgstr ""
3371
 
3372
+ #: src/methods/cloudfiles.php:246, src/methods/dropbox.php:275,
3373
+ #: src/methods/openstack-base.php:107
3374
  msgid "No settings were found"
3375
  msgstr ""
3376
 
3377
+ #: src/class-updraftplus.php:2773
3378
  msgid "One or more backups has been added from scanning remote storage; note that these backups will not be automatically deleted through the \"retain\" settings; if/when you wish to delete them then you must do so manually."
3379
  msgstr ""
3380
 
3381
+ #: src/admin.php:638
3382
  msgid "Rescanning remote and local storage for backup sets..."
3383
  msgstr ""
3384
 
3385
+ #: src/addons/googlecloud.php:948, src/addons/googlecloud.php:963,
3386
+ #: src/addons/s3-enhanced.php:57, src/addons/s3-enhanced.php:71
3387
  msgid "(Read more)"
3388
  msgstr ""
3389
 
3390
+ #: src/addons/reporting.php:431
 
 
 
 
3391
  msgid "Log all messages to syslog (only server admins are likely to want this)"
3392
  msgstr ""
3393
 
3394
+ #: src/addons/morefiles.php:491
3395
  msgid "No backup of location: there was nothing found to back up"
3396
  msgstr ""
3397
 
3398
+ #: src/addons/moredatabase.php:241, src/addons/morefiles.php:287,
3399
+ #: src/addons/morefiles.php:308
3400
  msgid "Remove"
3401
  msgstr ""
3402
 
3403
+ #: src/methods/s3.php:834
3404
  msgid "Other %s FAQs."
3405
  msgstr ""
3406
 
3407
+ #: src/templates/wp-admin/settings/form-contents.php:366
3408
  msgid "Check this to receive more information and emails on the backup process - useful if something is going wrong."
3409
  msgstr ""
3410
 
3411
+ #: src/addons/morefiles.php:445, src/admin.php:3077
3412
  msgid "If entering multiple files/directories, then separate them with commas. For entities at the top level, you can use a * at the start or end of the entry as a wildcard."
3413
  msgstr ""
3414
 
3415
+ #: src/class-updraftplus.php:4350, src/methods/ftp.php:291,
3416
+ #: src/restorer.php:1441
 
 
 
3417
  msgid "Your hosting company must enable these functions before %s can work."
3418
  msgstr ""
3419
 
3420
+ #: src/class-updraftplus.php:4350, src/methods/ftp.php:291
3421
  msgid "Your web server's PHP installation has these functions disabled: %s."
3422
  msgstr ""
3423
 
3424
+ #: src/methods/ftp.php:288
3425
  msgid "encrypted FTP (explicit encryption)"
3426
  msgstr ""
3427
 
3428
+ #: src/methods/ftp.php:287
3429
  msgid "encrypted FTP (implicit encryption)"
3430
  msgstr ""
3431
 
3432
+ #: src/methods/ftp.php:286
3433
  msgid "regular non-encrypted FTP"
3434
  msgstr ""
3435
 
3436
+ #: src/restorer.php:1602
3437
  msgid "Backup created by:"
3438
  msgstr ""
3439
 
3440
+ #: src/udaddons/options.php:489
3441
  msgid "Available to claim on this site"
3442
  msgstr ""
3443
 
3444
+ #: src/udaddons/updraftplus-addons.php:259
3445
  msgid "To maintain your access to support, please renew."
3446
  msgstr ""
3447
 
3448
+ #: src/udaddons/updraftplus-addons.php:259
3449
  msgid "Your paid access to UpdraftPlus support will soon expire."
3450
  msgstr ""
3451
 
3452
+ #: src/udaddons/updraftplus-addons.php:257
3453
  msgid "To regain your access, please renew."
3454
  msgstr ""
3455
 
3456
+ #: src/udaddons/updraftplus-addons.php:257
3457
  msgid "Your paid access to UpdraftPlus support has expired."
3458
  msgstr ""
3459
 
3460
+ #: src/udaddons/updraftplus-addons.php:253
3461
  msgid "Your paid access to UpdraftPlus updates for this site will soon expire."
3462
  msgstr ""
3463
 
3464
+ #: src/udaddons/updraftplus-addons.php:251,
3465
+ #: src/udaddons/updraftplus-addons.php:253
3466
  msgid "To retain your access, and maintain access to updates (including future features and compatibility with future WordPress releases) and support, please renew."
3467
  msgstr ""
3468
 
3469
+ #: src/udaddons/updraftplus-addons.php:251
3470
  msgid "Your paid access to UpdraftPlus updates for %s of the %s add-ons on this site will soon expire."
3471
  msgstr ""
3472
 
3473
+ #: src/udaddons/updraftplus-addons.php:247
3474
  msgid "Your paid access to UpdraftPlus updates for %s add-ons on this site has expired."
3475
  msgstr ""
3476
 
3477
+ #: src/udaddons/updraftplus-addons.php:245,
3478
+ #: src/udaddons/updraftplus-addons.php:247
3479
  msgid "To regain access to updates (including future features and compatibility with future WordPress releases) and support, please renew."
3480
  msgstr ""
3481
 
3482
+ #: src/udaddons/updraftplus-addons.php:245
3483
  msgid "Your paid access to UpdraftPlus updates for this site has expired. You will no longer receive updates to UpdraftPlus."
3484
  msgstr ""
3485
 
3486
+ #: src/udaddons/updraftplus-addons.php:210
3487
  msgid "Dismiss from main dashboard (for %s weeks)"
3488
  msgstr ""
3489
 
3490
+ #: src/class-updraftplus.php:4400
3491
  msgid "The attempt to undo the double-compression succeeded."
3492
  msgstr ""
3493
 
3494
+ #: src/class-updraftplus.php:4377, src/class-updraftplus.php:4398
3495
  msgid "The attempt to undo the double-compression failed."
3496
  msgstr ""
3497
 
3498
+ #: src/class-updraftplus.php:4370
3499
  msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver."
3500
  msgstr ""
3501
 
3502
+ #: src/includes/class-wpadmin-commands.php:271
3503
  msgid "Constants"
3504
  msgstr ""
3505
 
3506
+ #: src/backup.php:1609
3507
  msgid "Failed to open database file for reading:"
3508
  msgstr ""
3509
 
3510
+ #: src/backup.php:1420
3511
  msgid "No database tables found"
3512
  msgstr ""
3513
 
3514
+ #: src/backup.php:1418
3515
  msgid "please wait for the rescheduled attempt"
3516
  msgstr ""
3517
 
3518
+ #: src/addons/reporting.php:206
3519
  msgid "Note that warning messages are advisory - the backup process does not stop for them. Instead, they provide information that you might find useful, or that may indicate the source of a problem if the backup did not succeed."
3520
  msgstr ""
3521
 
3522
+ #: src/addons/onedrive.php:91, src/methods/dropbox.php:189
 
 
 
 
 
 
 
 
 
 
 
 
3523
  msgid "Account full: your %s account has only %d bytes left, but the file to be uploaded has %d bytes remaining (total size: %d bytes)"
3524
  msgstr ""
3525
 
3526
+ #: src/udaddons/updraftplus-addons.php:421,
3527
+ #: src/udaddons/updraftplus-addons.php:426
3528
  msgid "Errors occurred:"
3529
  msgstr ""
3530
 
3531
+ #: src/admin.php:3568
3532
  msgid "Follow this link to download the log file for this restoration (needed for any support requests)."
3533
  msgstr ""
3534
 
3535
+ #: src/templates/wp-admin/settings/form-contents.php:410
3536
  msgid "See this FAQ also."
3537
  msgstr ""
3538
 
3539
+ #: src/templates/wp-admin/settings/form-contents.php:144
3540
  msgid "If you choose no remote storage, then the backups remain on the web-server. This is not recommended (unless you plan to manually copy them to your computer), as losing the web-server would mean losing both your website and the backups in one event."
3541
  msgstr ""
3542
 
3543
+ #: src/templates/wp-admin/settings/delete-and-restore-modals.php:42
3544
  msgid "Retrieving (if necessary) and preparing backup files..."
3545
  msgstr ""
3546
 
3547
+ #: src/includes/class-wpadmin-commands.php:114
3548
  msgid "The PHP setup on this webserver allows only %s seconds for PHP to run, and does not allow this limit to be raised. If you have a lot of data to import, and if the restore operation times out, then you will need to ask your web hosting company for ways to raise this limit (or attempt the restoration piece-by-piece)."
3549
  msgstr ""
3550
 
3551
+ #: src/restorer.php:675
3552
  msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s"
3553
  msgstr ""
3554
 
3555
+ #: src/admin.php:936, src/class-updraftplus.php:694
3556
  msgid "The amount of time allowed for WordPress plugins to run is very low (%s seconds) - you should increase it to avoid backup failures due to time-outs (consult your web hosting company for more help - it is the max_execution_time PHP setting; the recommended value is %s seconds or more)"
3557
  msgstr ""
3558
 
3559
+ #: src/addons/migrator.php:253
 
 
 
 
 
 
 
 
3560
  msgid "Disabled this plugin: %s: re-activate it manually when you are ready."
3561
  msgstr ""
3562
 
3563
+ #: src/addons/sftp.php:668, src/addons/sftp.php:671,
3564
+ #: src/includes/ftp.class.php:44, src/includes/ftp.class.php:47
3565
  msgid "The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company."
3566
  msgstr ""
3567
 
3568
+ #: src/addons/moredatabase.php:137, src/admin.php:1330
 
 
 
 
 
 
 
 
3569
  msgid "Messages:"
3570
  msgstr ""
3571
 
3572
+ #: src/restorer.php:1970
3573
  msgid "An SQL line that is larger than the maximum packet size and cannot be split was found; this line will not be processed, but will be dropped: %s"
3574
  msgstr ""
3575
 
3576
+ #: src/restorer.php:455
3577
  msgid "The directory does not exist"
3578
  msgstr ""
3579
 
3580
+ #: src/addons/cloudfiles-enhanced.php:271
3581
  msgid "New User's Email Address"
3582
  msgstr ""
3583
 
3584
+ #: src/addons/cloudfiles-enhanced.php:268
3585
  msgid "New User's Username"
3586
  msgstr ""
3587
 
3588
+ #: src/addons/cloudfiles-enhanced.php:265
3589
  msgid "Admin API Key"
3590
  msgstr ""
3591
 
3592
+ #: src/addons/cloudfiles-enhanced.php:262
3593
  msgid "Admin Username"
3594
  msgstr ""
3595
 
3596
+ #: src/addons/cloudfiles-enhanced.php:257
3597
  msgid "US or UK Rackspace Account"
3598
  msgstr ""
3599
 
3600
+ #: src/addons/cloudfiles-enhanced.php:249
3601
  msgid "Enter your Rackspace admin username/API key (so that Rackspace can authenticate your permission to create new users), and enter a new (unique) username and email address for the new user and a container name."
3602
  msgstr ""
3603
 
3604
+ #: src/addons/cloudfiles-enhanced.php:246
3605
  msgid "Create new API user and container"
3606
  msgstr ""
3607
 
3608
+ #: src/addons/cloudfiles-enhanced.php:184
3609
  msgid "API Key: %s"
3610
  msgstr ""
3611
 
3612
+ #: src/addons/cloudfiles-enhanced.php:184
3613
  msgid "Password: %s"
3614
  msgstr ""
3615
 
3616
+ #: src/addons/cloudfiles-enhanced.php:184, src/addons/s3-enhanced.php:305
3617
  msgid "Username: %s"
3618
  msgstr ""
3619
 
3620
+ #: src/addons/cloudfiles-enhanced.php:143,
3621
+ #: src/addons/cloudfiles-enhanced.php:146,
3622
+ #: src/addons/cloudfiles-enhanced.php:150,
3623
+ #: src/addons/cloudfiles-enhanced.php:162,
3624
+ #: src/addons/cloudfiles-enhanced.php:169,
3625
+ #: src/addons/cloudfiles-enhanced.php:173
3626
  msgid "Cloud Files operation failed (%s)"
3627
  msgstr ""
3628
 
3629
+ #: src/addons/cloudfiles-enhanced.php:141
3630
  msgid "Conflict: that user or email address already exists"
3631
  msgstr ""
3632
 
3633
+ #: src/addons/cloudfiles-enhanced.php:76
3634
  msgid "You need to enter a valid new email address"
3635
  msgstr ""
3636
 
3637
+ #: src/addons/cloudfiles-enhanced.php:72
3638
  msgid "You need to enter a container"
3639
  msgstr ""
3640
 
3641
+ #: src/addons/cloudfiles-enhanced.php:69
3642
  msgid "You need to enter a new username"
3643
  msgstr ""
3644
 
3645
+ #: src/addons/cloudfiles-enhanced.php:66
3646
  msgid "You need to enter an admin API key"
3647
  msgstr ""
3648
 
3649
+ #: src/addons/cloudfiles-enhanced.php:63
3650
  msgid "You need to enter an admin username"
3651
  msgstr ""
3652
 
3653
+ #: src/addons/cloudfiles-enhanced.php:56
3654
  msgid "Create a new API user with access to only this container (rather than your whole account)"
3655
  msgstr ""
3656
 
3657
+ #: src/addons/cloudfiles-enhanced.php:31
3658
  msgid "Adds enhanced capabilities for Rackspace Cloud Files users"
3659
  msgstr ""
3660
 
3661
+ #: src/addons/cloudfiles-enhanced.php:30
3662
  msgid "Rackspace Cloud Files, enhanced"
3663
  msgstr ""
3664
 
3665
+ #: src/addons/cloudfiles-enhanced.php:278, src/methods/cloudfiles-new.php:163
3666
  msgid "Cloud Files Container"
3667
  msgstr ""
3668
 
3669
+ #: src/methods/cloudfiles-new.php:158
3670
  msgid "Cloud Files API Key"
3671
  msgstr ""
3672
 
3673
+ #: src/methods/cloudfiles-new.php:153
3674
  msgid "To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on."
3675
  msgstr ""
3676
 
3677
+ #: src/methods/cloudfiles-new.php:150
3678
  msgid "Cloud Files Username"
3679
  msgstr ""
3680
 
3681
+ #: src/addons/cloudfiles-enhanced.php:47, src/methods/cloudfiles-new.php:136
3682
  msgid "London (LON)"
3683
  msgstr ""
3684
 
3685
+ #: src/addons/cloudfiles-enhanced.php:46, src/methods/cloudfiles-new.php:135
3686
  msgid "Hong Kong (HKG)"
3687
  msgstr ""
3688
 
3689
+ #: src/addons/cloudfiles-enhanced.php:45, src/methods/cloudfiles-new.php:134
3690
  msgid "Northern Virginia (IAD)"
3691
  msgstr ""
3692
 
3693
+ #: src/addons/cloudfiles-enhanced.php:44, src/methods/cloudfiles-new.php:133
3694
  msgid "Chicago (ORD)"
3695
  msgstr ""
3696
 
3697
+ #: src/addons/cloudfiles-enhanced.php:43, src/methods/cloudfiles-new.php:132
3698
  msgid "Sydney (SYD)"
3699
  msgstr ""
3700
 
3701
+ #: src/addons/cloudfiles-enhanced.php:42, src/methods/cloudfiles-new.php:131
3702
  msgid "Dallas (DFW) (default)"
3703
  msgstr ""
3704
 
3705
+ #: src/addons/cloudfiles-enhanced.php:274, src/methods/cloudfiles-new.php:126
3706
  msgid "Cloud Files Storage Region"
3707
  msgstr ""
3708
 
3709
+ #: src/methods/cloudfiles-new.php:118
3710
  msgid "Accounts created at rackspacecloud.com are US-accounts; accounts created at rackspace.co.uk are UK-based"
3711
  msgstr ""
3712
 
3713
+ #: src/methods/cloudfiles-new.php:116
3714
  msgid "US or UK-based Rackspace Account"
3715
  msgstr ""
3716
 
3717
+ #: src/addons/cloudfiles-enhanced.php:258, src/methods/cloudfiles-new.php:116
3718
  msgid "Accounts created at rackspacecloud.com are US accounts; accounts created at rackspace.co.uk are UK accounts."
3719
  msgstr ""
3720
 
3721
+ #: src/addons/cloudfiles-enhanced.php:139, src/addons/s3-enhanced.php:208,
3722
+ #: src/methods/cloudfiles-new.php:39, src/methods/openstack-base.php:435,
3723
+ #: src/methods/openstack-base.php:437, src/methods/openstack-base.php:457,
3724
+ #: src/methods/openstack2.php:25
3725
  msgid "Authorisation failed (check your credentials)"
3726
  msgstr ""
3727
 
3728
+ #: src/methods/updraftvault.php:545, src/udaddons/options.php:272
3729
  msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com"
3730
  msgstr ""
3731
 
3732
+ #: src/admin.php:685, src/central/bootstrap.php:511
3733
  msgid "Create"
3734
  msgstr ""
3735
 
3736
+ #: src/admin.php:647
3737
  msgid "Trying..."
3738
  msgstr ""
3739
 
3740
+ #: src/admin.php:646
3741
  msgid "The new user's RackSpace console password is (this will not be shown again):"
3742
  msgstr ""
3743
 
3744
+ #: src/admin.php:657, src/admin.php:3843
 
 
 
 
3745
  msgid "Error data:"
3746
  msgstr ""
3747
 
3748
+ #: src/admin.php:3519
3749
  msgid "Backup does not exist in the backup history"
3750
  msgstr ""
3751
 
3752
+ #: src/admin.php:2489
3753
  msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old). You should press this button to delete them as soon as you have verified that the restoration worked."
3754
  msgstr ""
3755
 
3756
+ #: src/restorer.php:1674
3757
  msgid "Split line to avoid exceeding maximum packet size"
3758
  msgstr ""
3759
 
3760
+ #: src/restorer.php:1549
3761
  msgid "Your database user does not have permission to drop tables. We will attempt to restore by simply emptying the tables; this should work as long as you are restoring from a WordPress version with the same database structure (%s)"
3762
  msgstr ""
3763
 
3764
+ #: src/restorer.php:160
 
 
 
 
 
 
 
 
 
 
 
 
3765
  msgid "Could not move the files into place. Check your file permissions."
3766
  msgstr ""
3767
 
3768
+ #: src/restorer.php:159
3769
  msgid "Could not move new files into place. Check your wp-content/upgrade folder."
3770
  msgstr ""
3771
 
3772
+ #: src/restorer.php:157
3773
  msgid "Could not move old files out of the way."
3774
  msgstr ""
3775
 
3776
+ #: src/restorer.php:153
3777
  msgid "Moving old data out of the way..."
3778
  msgstr ""
3779
 
3780
+ #: src/addons/reporting.php:422
3781
  msgid "Add another address..."
3782
  msgstr ""
3783
 
3784
+ #: src/addons/reporting.php:408
3785
  msgid "Enter addresses here to have a report sent to them when a backup job finishes."
3786
  msgstr ""
3787
 
3788
+ #: src/addons/reporting.php:383
3789
  msgid "Email reports"
3790
  msgstr ""
3791
 
3792
+ #: src/class-updraftplus.php:1595, src/class-updraftplus.php:1600
3793
  msgid "%s checksum: %s"
3794
  msgstr ""
3795
 
3796
+ #: src/class-updraftplus.php:1568, src/class-updraftplus.php:1570
3797
  msgid "files: %s"
3798
  msgstr ""
3799
 
3800
+ #: src/addons/reporting.php:347
3801
  msgid "Use the \"Reporting\" section to configure the email addresses to be used."
3802
  msgstr ""
3803
 
3804
+ #: src/addons/reporting.php:256
 
 
 
 
 
 
 
 
3805
  msgid "Debugging information"
3806
  msgstr ""
3807
 
3808
+ #: src/addons/reporting.php:211, src/admin.php:3276
3809
  msgid "Uploaded to:"
3810
  msgstr ""
3811
 
3812
+ #: src/addons/reporting.php:210
3813
  msgid "Time taken:"
3814
  msgstr ""
3815
 
3816
+ #: src/addons/reporting.php:201
3817
  msgid "Warnings"
3818
  msgstr ""
3819
 
3820
+ #: src/addons/reporting.php:186
3821
  msgid "Errors"
3822
  msgstr ""
3823
 
3824
+ #: src/addons/reporting.php:183
3825
  msgid "Errors / warnings:"
3826
  msgstr ""
3827
 
3828
+ #: src/addons/morefiles.php:119, src/addons/morefiles.php:120,
3829
+ #: src/addons/reporting.php:172
3830
  msgid "Contains:"
3831
  msgstr ""
3832
 
3833
+ #: src/addons/reporting.php:171
3834
  msgid "Backup began:"
3835
  msgstr ""
3836
 
3837
+ #: src/addons/reporting.php:159
3838
  msgid "Backup Report"
3839
  msgstr ""
3840
 
3841
+ #: src/addons/reporting.php:154
3842
  msgid "%d hours, %d minutes, %d seconds"
3843
  msgstr ""
3844
 
3845
+ #: src/addons/reporting.php:140
3846
  msgid "%d errors, %d warnings"
3847
  msgstr ""
3848
 
3849
+ #: src/addons/onedrive.php:718, src/methods/dropbox.php:598
3850
  msgid "%s authentication"
3851
  msgstr ""
3852
 
3853
+ #: src/addons/onedrive.php:718, src/class-updraftplus.php:399,
3854
+ #: src/methods/dropbox.php:162, src/methods/dropbox.php:571,
3855
+ #: src/methods/dropbox.php:598, src/methods/dropbox.php:611,
3856
+ #: src/methods/dropbox.php:742
3857
  msgid "%s error: %s"
3858
  msgstr ""
3859
 
3860
+ #: src/addons/googlecloud.php:898, src/methods/dropbox.php:477
3861
  msgid "%s logo"
3862
  msgstr ""
3863
 
3864
+ #: src/methods/dropbox.php:208
3865
  msgid "%s did not return the expected response - check your log file for more details"
3866
  msgstr ""
3867
 
3868
+ #: src/methods/s3.php:291
3869
  msgid "The required %s PHP module is not installed - ask your web hosting company to enable it"
3870
  msgstr ""
3871
 
3872
+ #: src/methods/email.php:76
3873
  msgid "For more options, use the \"%s\" add-on."
3874
  msgstr ""
3875
 
3876
+ #: src/methods/email.php:75
3877
  msgid "Your site's admin email address (%s) will be used."
3878
  msgstr ""
3879
 
3880
+ #: src/admin.php:694, src/methods/updraftvault.php:295,
3881
+ #: src/methods/updraftvault.php:340, src/udaddons/options.php:251
3882
  msgid "Connect"
3883
  msgstr ""
3884
 
3885
+ #: src/templates/wp-admin/settings/form-contents.php:334
3886
  msgid "For more reporting features, use the Reporting add-on."
3887
  msgstr ""
3888
 
3889
+ #: src/class-updraftplus.php:4180
3890
  msgid "(version: %s)"
3891
  msgstr ""
3892
 
3893
+ #: src/addons/reporting.php:455, src/addons/reporting.php:455,
3894
+ #: src/admin.php:636
3895
  msgid "Be aware that mail servers tend to have size limits; typically around %s Mb; backups larger than any limits will likely not arrive."
3896
  msgstr ""
3897
 
3898
+ #: src/addons/reporting.php:455, src/admin.php:635
3899
  msgid "When the Email storage method is enabled, also send the entire backup"
3900
  msgstr ""
3901
 
3902
+ #: src/addons/reporting.php:170, src/backup.php:945
3903
  msgid "Latest status:"
3904
  msgstr ""
3905
 
3906
+ #: src/backup.php:944
3907
  msgid "Backup contains:"
3908
  msgstr ""
3909
 
3910
+ #: src/backup.php:901
3911
  msgid "Backed up: %s"
3912
  msgstr ""
3913
 
3914
+ #: src/addons/reporting.php:253, src/backup.php:895
3915
  msgid "The log file has been attached to this email."
3916
  msgstr ""
3917
 
3918
+ #: src/backup.php:859
3919
  msgid "Unknown/unexpected error - please raise a support request"
3920
  msgstr ""
3921
 
3922
+ #: src/backup.php:856
3923
  msgid "Database only (files were not part of this particular schedule)"
3924
  msgstr ""
3925
 
3926
+ #: src/backup.php:856
3927
  msgid "Database (files backup has not completed)"
3928
  msgstr ""
3929
 
3930
+ #: src/backup.php:853
3931
  msgid "Files only (database was not part of this particular schedule)"
3932
  msgstr ""
3933
 
3934
+ #: src/backup.php:853
3935
  msgid "Files (database backup has not completed)"
3936
  msgstr ""
3937
 
3938
+ #: src/admin.php:291, src/backup.php:851
3939
  msgid "Files and database"
3940
  msgstr ""
3941
 
3942
+ #: src/options.php:184
3943
  msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)."
3944
  msgstr ""
3945
 
3946
+ #: src/options.php:184
3947
  msgid "Without upgrading, UpdraftPlus allows <strong>every</strong> blog admin who can modify plugin settings to back up (and hence access the data, including passwords, from) and restore (including with customised modifications, e.g. changed passwords) <strong>the entire network</strong>."
3948
  msgstr ""
3949
 
3950
+ #: src/options.php:184
3951
  msgid "WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on."
3952
  msgstr ""
3953
 
3954
+ #: src/options.php:184
3955
  msgid "This is a WordPress multi-site (a.k.a. network) installation."
3956
  msgstr ""
3957
 
3958
+ #: src/options.php:184
3959
  msgid "UpdraftPlus warning:"
3960
  msgstr ""
3961
 
3962
+ #: src/udaddons/options.php:495
3963
  msgid "(or connect using the form on this page if you have already purchased it)"
3964
  msgstr ""
3965
 
3966
+ #: src/udaddons/options.php:481
3967
  msgid "please follow this link to update the plugin in order to activate it"
3968
  msgstr ""
3969
 
3970
+ #: src/udaddons/options.php:478
3971
  msgid "please follow this link to update the plugin in order to get it"
3972
  msgstr ""
3973
 
3974
+ #: src/udaddons/options.php:468, src/udaddons/options.php:470
3975
  msgid "latest"
3976
  msgstr ""
3977
 
3978
+ #: src/udaddons/options.php:466
3979
  msgid "Your version: %s"
3980
  msgstr ""
3981
 
3982
+ #: src/udaddons/options.php:464, src/udaddons/options.php:464
3983
  msgid "You've got it"
3984
  msgstr ""
3985
 
3986
+ #: src/udaddons/options.php:430
3987
  msgid "UpdraftPlus Support"
3988
  msgstr ""
3989
 
3990
+ #: src/udaddons/options.php:388
3991
  msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it."
3992
  msgstr ""
3993
 
3994
+ #: src/udaddons/options.php:377, src/udaddons/updraftplus-addons.php:286
3995
  msgid "UpdraftPlus Addons"
3996
  msgstr ""
3997
 
3998
+ #: src/udaddons/options.php:101
3999
  msgid "An update is available for UpdraftPlus - please follow this link to get it."
4000
  msgstr ""
4001
 
4002
+ #: src/methods/updraftvault.php:618, src/methods/updraftvault.php:636,
4003
+ #: src/udaddons/updraftplus-addons.php:829
4004
  msgid "UpdraftPlus.Com returned a response, but we could not understand it"
4005
  msgstr ""
4006
 
4007
+ #: src/methods/updraftvault.php:632, src/udaddons/updraftplus-addons.php:826
4008
  msgid "Your email address and password were not recognised by UpdraftPlus.Com"
4009
  msgstr ""
4010
 
4011
+ #: src/methods/updraftvault.php:591, src/udaddons/updraftplus-addons.php:786
4012
  msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)"
4013
  msgstr ""
4014
 
4015
+ #: src/udaddons/updraftplus-addons.php:716
4016
  msgid "UpdraftPlus.Com responded, but we did not understand the response"
4017
  msgstr ""
4018
 
4019
+ #: src/udaddons/updraftplus-addons.php:714
4020
  msgid "We failed to successfully connect to UpdraftPlus.Com"
4021
  msgstr ""
4022
 
4023
+ #: src/methods/email.php:76,
4024
+ #: src/templates/wp-admin/settings/form-contents.php:315,
4025
+ #: src/templates/wp-admin/settings/tab-addons.php:199,
4026
+ #: src/templates/wp-admin/settings/tab-addons.php:200
4027
  msgid "Reporting"
4028
  msgstr ""
4029
 
4030
+ #: src/admin.php:4300
4031
  msgid "Options (raw)"
4032
  msgstr ""
4033
 
4034
+ #: src/addons/reporting.php:453, src/admin.php:634
4035
  msgid "Send a report only when there are warnings/errors"
4036
  msgstr ""
4037
 
4038
+ #: src/restorer.php:1613
4039
  msgid "Content URL:"
4040
  msgstr ""
4041
 
4042
+ #: src/restorer.php:157
4043
  msgid "You should check the file ownerships and permissions in your WordPress installation"
4044
  msgstr ""
4045
 
4046
+ #: src/templates/wp-admin/settings/form-contents.php:219
4047
  msgid "See also the \"More Files\" add-on from our shop."
4048
  msgstr ""
4049
 
4050
+ #: src/backup.php:3014, src/class-updraftplus.php:707
4051
  msgid "Your free space in your hosting account is very low - only %s Mb remain"
4052
  msgstr ""
4053
 
4054
+ #: src/class-updraftplus.php:691
4055
  msgid "The amount of memory (RAM) allowed for PHP is very low (%s Mb) - you should increase it to avoid failures due to insufficient memory (consult your web hosting company for more help)"
4056
  msgstr ""
4057
 
4058
+ #: src/udaddons/options.php:554
4059
  msgid "Manage Addons"
4060
  msgstr ""
4061
 
4062
+ #: src/udaddons/options.php:496, src/udaddons/options.php:496
4063
  msgid "Buy It"
4064
  msgstr ""
4065
 
4066
+ #: src/udaddons/options.php:495
4067
  msgid "Get it from the UpdraftPlus.Com Store"
4068
  msgstr ""
4069
 
4070
+ #: src/udaddons/options.php:489, src/udaddons/options.php:491
4071
  msgid "activate it on this site"
4072
  msgstr ""
4073
 
4074
+ #: src/udaddons/options.php:491
4075
  msgid "You have an inactive purchase"
4076
  msgstr ""
4077
 
4078
+ #: src/udaddons/options.php:481
4079
  msgid "Assigned to this site"
4080
  msgstr ""
4081
 
4082
+ #: src/udaddons/options.php:478
4083
  msgid "Available for this site (via your all-addons purchase)"
4084
  msgstr ""
4085
 
4086
+ #: src/udaddons/options.php:472
4087
  msgid "(apparently a pre-release or withdrawn release)"
4088
  msgstr ""
4089
 
4090
+ #: src/udaddons/options.php:432
4091
  msgid "Go here"
4092
  msgstr ""
4093
 
4094
+ #: src/udaddons/options.php:432
4095
  msgid "Need to get support?"
4096
  msgstr ""
4097
 
4098
+ #: src/udaddons/options.php:414
4099
  msgid "An error occurred when trying to retrieve your add-ons."
4100
  msgstr ""
4101
 
4102
+ #: src/udaddons/options.php:347
4103
  msgid "An unknown response was received. Response was:"
4104
  msgstr ""
4105
 
4106
+ #: src/udaddons/options.php:346
4107
  msgid "Claim not granted - your account login details were wrong"
4108
  msgstr ""
4109
 
4110
+ #: src/udaddons/options.php:344
4111
  msgid "Please wait whilst we make the claim..."
4112
  msgstr ""
4113
 
4114
+ #: src/udaddons/options.php:297
4115
  msgid "Errors occurred when trying to connect to UpdraftPlus.Com:"
4116
  msgstr ""
4117
 
4118
+ #: src/udaddons/options.php:288
4119
  msgid "You are presently <strong>not connected</strong> to an UpdraftPlus.Com account."
4120
  msgstr ""
4121
 
4122
+ #: src/udaddons/options.php:279
4123
  msgid "If you bought new add-ons, then follow this link to refresh your connection"
4124
  msgstr ""
4125
 
4126
+ #: src/udaddons/options.php:278
4127
  msgid "You are presently <strong>connected</strong> to an UpdraftPlus.Com account."
4128
  msgstr ""
4129
 
4130
+ #: src/udaddons/options.php:249
4131
  msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here."
4132
  msgstr ""
4133
 
4134
+ #: src/udaddons/options.php:190
4135
  msgid "Forgotten your details?"
4136
  msgstr ""
4137
 
4138
+ #: src/udaddons/options.php:179
4139
  msgid "Not yet got an account (it's free)? Go get one!"
4140
  msgstr ""
4141
 
4142
+ #: src/udaddons/options.php:148
4143
  msgid "Connect with your UpdraftPlus.Com account"
4144
  msgstr ""
4145
 
4146
+ #: src/udaddons/options.php:121
 
 
 
 
4147
  msgid "You do seem to have the obsolete Updraft plugin installed - perhaps you got them confused?"
4148
  msgstr ""
4149
 
4150
+ #: src/udaddons/options.php:120
4151
  msgid "Go here to begin installing it."
4152
  msgstr ""
4153
 
4154
+ #: src/udaddons/options.php:120
4155
  msgid "UpdraftPlus is not yet installed."
4156
  msgstr ""
4157
 
4158
+ #: src/udaddons/options.php:117
4159
  msgid "Go here to activate it."
4160
  msgstr ""
4161
 
4162
+ #: src/udaddons/options.php:116
4163
  msgid "UpdraftPlus is not yet activated."
4164
  msgstr ""
4165
 
4166
+ #: src/udaddons/options.php:107, src/udaddons/options.php:109
4167
  msgid "Go here to connect."
4168
  msgstr ""
4169
 
4170
+ #: src/udaddons/options.php:107
4171
  msgid "You have not yet connected with your UpdraftPlus.Com account, to enable you to list your purchased add-ons."
4172
  msgstr ""
4173
 
4174
+ #: src/addons/moredatabase.php:306, src/addons/moredatabase.php:397
4175
  msgid "Without it, encryption will be a lot slower."
4176
  msgstr ""
4177
 
4178
+ #: src/addons/moredatabase.php:306, src/addons/moredatabase.php:397
4179
  msgid "Your web-server does not have the %s module installed."
4180
  msgstr ""
4181
 
4182
+ #: src/addons/googlecloud.php:981, src/methods/googledrive.php:953
4183
  msgid "<strong>(You appear to be already authenticated,</strong> though you can authenticate again to refresh your access if you've had a problem)."
4184
  msgstr ""
4185
 
4186
+ #: src/templates/wp-admin/settings/downloading-and-restoring.php:62
4187
  msgid "Drop backup files here"
4188
  msgstr ""
4189
 
4190
+ #: src/admin.php:2368
4191
+ msgid "Does nothing happen when you attempt backups?"
4192
+ msgstr ""
4193
+
4194
+ #: src/admin.php:645
4195
  msgid "The web server returned an error code (try again, or check your web server logs)"
4196
  msgstr ""
4197
 
4198
+ #: src/admin.php:643
4199
  msgid "The restore operation has begun. Do not press stop or close your browser until it reports itself as having finished."
4200
  msgstr ""
4201
 
4202
+ #: src/admin.php:640
4203
  msgid "If you exclude both the database and the files, then you have excluded everything!"
4204
  msgstr ""
4205
 
4206
+ #: src/restorer.php:1607
4207
  msgid "Site home:"
4208
  msgstr ""
4209
 
4210
+ #: src/addons/morestorage.php:72
4211
  msgid "Remote Storage Options"
4212
  msgstr ""
4213
 
4214
+ #: src/addons/autobackup.php:324, src/addons/autobackup.php:418
4215
  msgid "(logs can be found in the UpdraftPlus settings page as normal)..."
4216
  msgstr ""
4217
 
4218
+ #: src/addons/autobackup.php:284, src/addons/autobackup.php:1066
4219
  msgid "Remember this choice for next time (you will still have the chance to change it)"
4220
  msgstr ""
4221
 
4222
+ #: src/addons/azure.php:360, src/methods/stream-base.php:121,
4223
+ #: src/methods/stream-base.php:126
4224
  msgid "Upload failed"
4225
  msgstr ""
4226
 
4227
+ #: src/templates/wp-admin/settings/form-contents.php:135
4228
  msgid "You can send a backup to more than one destination with an add-on."
4229
  msgstr ""
4230
 
4231
+ #: src/admin.php:2707
4232
  msgid "Note: the progress bar below is based on stages, NOT time. Do not stop the backup simply because it seems to have remained in the same place for a while - that is normal."
4233
  msgstr ""
4234
 
4235
+ #: src/admin.php:2605
4236
  msgid "(%s%%, file %s of %s)"
4237
  msgstr ""
4238
 
4239
+ #: src/addons/autobackup.php:285, src/addons/autobackup.php:1071,
4240
+ #: src/addons/lockadmin.php:145
4241
  msgid "Read more about how this works..."
4242
  msgstr ""
4243
 
4244
+ #: src/addons/sftp.php:505
4245
  msgid "Failed: We were able to log in, but failed to successfully create a file in that location."
4246
  msgstr ""
4247
 
4248
+ #: src/addons/sftp.php:503
4249
  msgid "Failed: We were able to log in and move to the indicated directory, but failed to successfully create a file in that location."
4250
  msgstr ""
4251
 
4252
+ #: src/addons/sftp.php:423
4253
  msgid "Use SCP instead of SFTP"
4254
  msgstr ""
4255
 
4256
+ #: src/addons/sftp.php:48
4257
  msgid "SCP/SFTP user setting"
4258
  msgstr ""
4259
 
4260
+ #: src/addons/sftp.php:47
4261
  msgid "SCP/SFTP host setting"
4262
  msgstr ""
4263
 
4264
+ #: src/methods/email.php:60
4265
  msgid "The attempt to send the backup via email failed (probably the backup was too large for this method)"
4266
  msgstr ""
4267
 
4268
+ #: src/methods/email.php:47
4269
  msgid "Backup is of: %s."
4270
  msgstr ""
4271
 
4272
+ #: src/admin.php:733
4273
  msgid "%s settings test result:"
4274
  msgstr ""
4275
 
4276
+ #: src/admin.php:3437, src/admin.php:3439
4277
  msgid "(Not finished)"
4278
  msgstr ""
4279
 
4280
+ #: src/admin.php:3439
4281
  msgid "If you are seeing more backups than you expect, then it is probably because the deletion of old backup sets does not happen until a fresh backup completes."
4282
  msgstr ""
4283
 
4284
+ #: src/templates/wp-admin/settings/form-contents.php:393
4285
  msgid "<b>Do not</b> place it inside your uploads or plugins directory, as that will cause recursion (backups of backups of backups of...)."
4286
  msgstr ""
4287
 
4288
+ #: src/templates/wp-admin/settings/form-contents.php:393
4289
  msgid "This is where UpdraftPlus will write the zip files it creates initially. This directory must be writable by your web server. It is relative to your content directory (which by default is called wp-content)."
4290
  msgstr ""
4291
 
4292
+ #: src/admin.php:2702
4293
  msgid "Job ID: %s"
4294
  msgstr ""
4295
 
4296
+ #: src/admin.php:2687
4297
  msgid "last activity: %ss ago"
4298
  msgstr ""
4299
 
4300
+ #: src/admin.php:2686
4301
  msgid "next resumption: %d (after %ss)"
4302
  msgstr ""
4303
 
4304
+ #: src/admin.php:2669, src/central/bootstrap.php:402,
4305
+ #: src/central/bootstrap.php:409, src/methods/updraftvault.php:375,
4306
+ #: src/methods/updraftvault.php:455
4307
  msgid "Unknown"
4308
  msgstr ""
4309
 
4310
+ #: src/admin.php:2619
4311
  msgid "Backup finished"
4312
  msgstr ""
4313
 
4314
+ #: src/admin.php:2614
4315
  msgid "Waiting until scheduled time to retry because of errors"
4316
  msgstr ""
4317
 
4318
+ #: src/admin.php:2610
4319
  msgid "Pruning old backup sets"
4320
  msgstr ""
4321
 
4322
+ #: src/admin.php:2598
4323
  msgid "Uploading files to remote storage"
4324
  msgstr ""
4325
 
4326
+ #: src/admin.php:2667
4327
  msgid "Encrypted database"
4328
  msgstr ""
4329
 
4330
+ #: src/admin.php:2659
4331
  msgid "Encrypting database"
4332
  msgstr ""
4333
 
4334
+ #: src/admin.php:2633
4335
  msgid "Created database backup"
4336
  msgstr ""
4337
 
4338
+ #: src/admin.php:2646
4339
  msgid "table: %s"
4340
  msgstr ""
4341
 
4342
+ #: src/admin.php:2644
4343
  msgid "Creating database backup"
4344
  msgstr ""
4345
 
4346
+ #: src/admin.php:2592
4347
  msgid "Created file backup zips"
4348
  msgstr ""
4349
 
4350
+ #: src/admin.php:2579
4351
  msgid "Creating file backup zips"
4352
  msgstr ""
4353
 
4354
+ #: src/admin.php:2574
4355
  msgid "Backup begun"
4356
  msgstr ""
4357
 
4358
+ #: src/admin.php:2417
4359
  msgid "Backups in progress:"
4360
  msgstr ""
4361
 
4362
+ #: src/admin.php:940
4363
  msgid "The scheduler is disabled in your WordPress install, via the DISABLE_WP_CRON setting. No backups can run (even &quot;Backup Now&quot;) unless either you have set up a facility to call the scheduler manually, or until it is enabled."
4364
  msgstr ""
4365
 
4366
+ #: src/restorer.php:657
4367
  msgid "file"
4368
  msgstr ""
4369
 
4370
+ #: src/restorer.php:650
4371
  msgid "folder"
4372
  msgstr ""
4373
 
4374
+ #: src/restorer.php:650, src/restorer.php:657
4375
  msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)"
4376
  msgstr ""
4377
 
4378
+ #: src/class-updraftplus.php:2870
4379
  msgid "The backup has not finished; a resumption is scheduled"
4380
  msgstr ""
4381
 
4382
+ #: src/class-updraftplus.php:1840
4383
  msgid "Your website is visited infrequently and UpdraftPlus is not getting the resources it hoped for; please read this page:"
4384
  msgstr ""
4385
 
4386
+ #: src/addons/onedrive.php:865,
4387
+ #: src/includes/Dropbox/OAuth/Consumer/ConsumerAbstract.php:115,
4388
+ #: src/includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:118
 
4389
  msgid "The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help)."
4390
  msgstr ""
4391
 
4392
+ #: src/admin.php:2240
4393
  msgid "Your PHP memory limit (set by your web hosting company) is very low. UpdraftPlus attempted to raise it but was unsuccessful. This plugin may struggle with a memory limit of less than 64 Mb - especially if you have very large files uploaded (though on the other hand, many sites will be successful with a 32Mb limit - your experience may vary)."
4394
  msgstr ""
4395
 
4396
+ #: src/addons/autobackup.php:1085, src/admin.php:687
4397
  msgid "Proceed with update"
4398
  msgstr ""
4399
 
4400
+ #: src/addons/autobackup.php:1078
4401
  msgid "Do not abort after pressing Proceed below - wait for the backup to complete."
4402
  msgstr ""
4403
 
4404
+ #: src/addons/autobackup.php:125, src/addons/autobackup.php:1027
4405
  msgid "UpdraftPlus Automatic Backups"
4406
  msgstr ""
4407
 
4408
+ #: src/addons/autobackup.php:510
4409
  msgid "Errors have occurred:"
4410
  msgstr ""
4411
 
4412
+ #: src/addons/autobackup.php:482
4413
  msgid "Creating backup with UpdraftPlus..."
4414
  msgstr ""
4415
 
4416
+ #: src/addons/autobackup.php:427, src/addons/autobackup.php:557,
4417
+ #: src/addons/autobackup.php:608
4418
  msgid "Automatic Backup"
4419
  msgstr ""
4420
 
4421
+ #: src/addons/autobackup.php:418
4422
  msgid "Creating database backup with UpdraftPlus..."
4423
  msgstr ""
4424
 
4425
+ #: src/addons/autobackup.php:384
 
 
 
 
4426
  msgid "themes"
4427
  msgstr ""
4428
 
4429
+ #: src/addons/autobackup.php:377
4430
  msgid "plugins"
4431
  msgstr ""
4432
 
4433
+ #: src/addons/autobackup.php:328, src/addons/autobackup.php:425
4434
  msgid "Starting automatic backup..."
4435
  msgstr ""
4436
 
4437
+ #: src/addons/autobackup.php:324
4438
  msgid "Creating %s and database backup with UpdraftPlus..."
4439
  msgstr ""
4440
 
4441
+ #: src/addons/autobackup.php:282
4442
  msgid "Automatically backup (where relevant) plugins, themes and the WordPress database with UpdraftPlus before updating"
4443
  msgstr ""
4444
 
4445
+ #: src/addons/morefiles.php:233, src/addons/morefiles.php:234
4446
  msgid "If you are not sure then you should stop; otherwise you may destroy this WordPress installation."
4447
  msgstr ""
4448
 
4449
+ #: src/addons/morefiles.php:233, src/addons/morefiles.php:234
4450
  msgid "This does not look like a valid WordPress core backup - the file %s was missing."
4451
  msgstr ""
4452
 
4453
+ #: src/addons/morefiles.php:180
4454
  msgid "Unable to open zip file (%s) - could not pre-scan it to check its integrity."
4455
  msgstr ""
4456
 
4457
+ #: src/addons/morefiles.php:170
4458
  msgid "Unable to read zip file (%s) - could not pre-scan it to check its integrity."
4459
  msgstr ""
4460
 
4461
+ #: src/templates/wp-admin/settings/header.php:14
4462
  msgid "More plugins"
4463
  msgstr ""
4464
 
4465
+ #: src/templates/wp-admin/settings/header.php:11,
4466
+ #: src/templates/wp-admin/settings/tab-addons.php:19,
4467
+ #: src/templates/wp-admin/settings/tab-addons.php:103
4468
  msgid "Support"
4469
  msgstr ""
4470
 
4471
+ #: src/class-updraftplus.php:4333
4472
  msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup."
4473
  msgstr ""
4474
 
4475
+ #: src/class-updraftplus.php:4325
4476
  msgid "This database backup is missing core WordPress tables: %s"
4477
  msgstr ""
4478
 
4479
+ #: src/class-updraftplus.php:4213
4480
  msgid "You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this."
4481
  msgstr ""
4482
 
4483
+ #: src/class-updraftplus.php:4212, src/class-updraftplus.php:4219
4484
+ msgid "%s version: %s"
 
 
 
 
4485
  msgstr ""
4486
 
4487
+ #: src/class-updraftplus.php:4129
4488
+ msgid "The database is too small to be a valid WordPress database (size: %s Kb)."
4489
  msgstr ""
4490
 
4491
+ #: src/addons/autobackup.php:1053, src/admin.php:773,
4492
+ #: src/includes/updraftplus-notices.php:171
4493
  msgid "Be safe with an automatic backup"
4494
  msgstr ""
4495
 
4496
+ #: src/admin.php:2192
 
 
 
 
4497
  msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site."
4498
  msgstr ""
4499
 
4500
+ #: src/admin.php:681
4501
  msgid "The file was uploaded."
4502
  msgstr ""
4503
 
4504
+ #: src/admin.php:680
4505
  msgid "Unknown server response status:"
4506
  msgstr ""
4507
 
4508
+ #: src/admin.php:679
4509
  msgid "Unknown server response:"
4510
  msgstr ""
4511
 
4512
+ #: src/admin.php:678
4513
  msgid "This decryption key will be attempted:"
4514
  msgstr ""
4515
 
4516
+ #: src/admin.php:677
4517
  msgid "Follow this link to attempt decryption and download the database file to your computer."
4518
  msgstr ""
4519
 
4520
+ #: src/admin.php:676
4521
  msgid "Upload error"
4522
  msgstr ""
4523
 
4524
+ #: src/admin.php:675
4525
  msgid "This file does not appear to be an UpdraftPlus encrypted database archive (such files are .gz.crypt files which have a name like: backup_(time)_(site name)_(code)_db.crypt.gz)."
4526
  msgstr ""
4527
 
4528
+ #: src/admin.php:674
4529
  msgid "Upload error:"
4530
  msgstr ""
4531
 
4532
+ #: src/admin.php:673
4533
  msgid "(make sure that you were trying to upload a zip file previously created by UpdraftPlus)"
4534
  msgstr ""
4535
 
4536
+ #: src/admin.php:664
4537
  msgid "Download to your computer"
4538
  msgstr ""
4539
 
4540
+ #: src/admin.php:663
4541
  msgid "Delete from your web server"
4542
  msgstr ""
4543
 
4544
+ #: src/admin.php:3407
 
 
 
 
 
 
 
 
4545
  msgid "You appear to be missing one or more archives from this multi-archive set."
4546
  msgstr ""
4547
 
4548
+ #: src/admin.php:3404
4549
  msgid "(%d archive(s) in set)."
4550
  msgstr ""
4551
 
4552
+ #: src/templates/wp-admin/settings/form-contents.php:370
4553
  msgid "Split archives every:"
4554
  msgstr ""
4555
 
4556
+ #: src/addons/moredatabase.php:279
4557
  msgid "Error: the server sent us a response (JSON) which we did not understand."
4558
  msgstr ""
4559
 
4560
+ #: src/admin.php:654
4561
  msgid "Warnings:"
4562
  msgstr ""
4563
 
4564
+ #: src/admin.php:653
4565
  msgid "Error: the server sent an empty response."
4566
  msgstr ""
4567
 
4568
+ #: src/admin.php:1953
4569
  msgid "This looks like a file created by UpdraftPlus, but this install does not know about this type of object: %s. Perhaps you need to install an add-on?"
4570
  msgstr ""
4571
 
4572
+ #: src/includes/class-wpadmin-commands.php:195
4573
  msgid "The backup archive files have been processed, but with some errors. You will need to cancel and correct any problems before retrying."
4574
  msgstr ""
4575
 
4576
+ #: src/includes/class-wpadmin-commands.php:193
4577
  msgid "The backup archive files have been processed, but with some warnings. If all is well, then now press Restore again to proceed. Otherwise, cancel and correct any problems first."
4578
  msgstr ""
4579
 
4580
+ #: src/includes/class-wpadmin-commands.php:191
4581
  msgid "The backup archive files have been successfully processed. Now press Restore again to proceed."
4582
  msgstr ""
4583
 
4584
+ #: src/includes/class-wpadmin-commands.php:186
4585
  msgid "This multi-archive backup set appears to have the following archives missing: %s"
4586
  msgstr ""
4587
 
4588
+ #: src/includes/class-wpadmin-commands.php:171
4589
  msgid "File (%s) was found, but has a different size (%s) from what was expected (%s) - it may be corrupt."
4590
  msgstr ""
4591
 
4592
+ #: src/includes/class-wpadmin-commands.php:166
4593
  msgid "File was found, but is zero-sized (you need to re-upload it): %s"
4594
  msgstr ""
4595
 
4596
+ #: src/includes/class-wpadmin-commands.php:164
4597
  msgid "File not found (you need to upload it): %s"
4598
  msgstr ""
4599
 
4600
+ #: src/includes/class-wpadmin-commands.php:96
4601
  msgid "No such backup set exists"
4602
  msgstr ""
4603
 
4604
+ #: src/admin.php:1218
4605
  msgid "The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder"
4606
  msgstr ""
4607
 
4608
+ #: src/restorer.php:154
 
 
 
 
 
 
 
 
4609
  msgid "Moving unpacked backup into place..."
4610
  msgstr ""
4611
 
4612
+ #: src/backup.php:2718, src/backup.php:2974
4613
  msgid "Failed to open the zip file (%s) - %s"
4614
  msgstr ""
4615
 
4616
+ #: src/addons/morefiles.php:158
4617
  msgid "WordPress root directory server path: %s"
4618
  msgstr ""
4619
 
4620
+ #: src/methods/s3.php:839
4621
  msgid "%s end-point"
4622
  msgstr ""
4623
 
4624
+ #: src/methods/s3.php:801
4625
  msgid "... and many more!"
4626
  msgstr ""
4627
 
4628
+ #: src/methods/s3generic.php:48, src/methods/s3generic.php:56
4629
  msgid "S3 (Compatible)"
4630
  msgstr ""
4631
 
4632
+ #: src/admin.php:3714
4633
  msgid "File is not locally present - needs retrieving from remote storage"
4634
  msgstr ""
4635
 
4636
+ #: src/admin.php:3701
4637
  msgid "Looking for %s archive: file name: %s"
4638
  msgstr ""
4639
 
4640
+ #: src/admin.php:3662
4641
  msgid "Final checks"
4642
  msgstr ""
4643
 
4644
+ #: src/templates/wp-admin/settings/form-contents.php:376
4645
  msgid "Check this to delete any superfluous backup files from your server after the backup run finishes (i.e. if you uncheck, then any files despatched remotely will also remain locally, and any files being kept locally will not be subject to the retention limits)."
4646
  msgstr ""
4647
 
4648
+ #: src/templates/wp-admin/settings/form-contents.php:260
4649
  msgid "Drop encrypted database files (db.gz.crypt files) here to upload them for decryption"
4650
  msgstr ""
4651
 
4652
+ #: src/admin.php:3066
4653
  msgid "Your wp-content directory server path: %s"
4654
  msgstr ""
4655
 
4656
+ #: src/admin.php:670
4657
  msgid "Raw backup history"
4658
  msgstr ""
4659
 
4660
+ #: src/templates/wp-admin/advanced/site-info.php:97
4661
  msgid "Show raw backup and file list"
4662
  msgstr ""
4663
 
4664
+ #: src/admin.php:652
4665
  msgid "Processing files - please wait..."
4666
  msgstr ""
4667
 
4668
+ #: src/admin.php:3845,
4669
+ #: src/templates/wp-admin/settings/downloading-and-restoring.php:29
4670
  msgid "Please consult this FAQ for help on what to do about it."
4671
  msgstr ""
4672
 
4673
+ #: src/templates/wp-admin/settings/downloading-and-restoring.php:29
4674
  msgid "Your WordPress installation has a problem with outputting extra whitespace. This can corru