UpdraftPlus WordPress Backup Plugin - Version 1.16.4

Version Description

  • 17/Jan/2019 =

  • FIX: Regression: Properly mark backups picked up via "Rescan remote storage" as non-native (preventing unwelcome side-effects such as being pruned by another site)

  • FIX: Correctly update the OneDrive refresh token to prevent expiry

  • FIX: Again work around an issue with 'SSH2 Server Host Key Algorithm Mismatch' occurring with the current phpseclib release by temporarily reverting to an earlier one as it still does not work on all installs

  • FIX: When restoring an incremental backup set via WP-CLI, the selected restore point was ignored

  • FIX: If the remote storage settings were for multiple instances of a single backend-type (e.g. two Dropbox accounts), and if the entire backup and send operation completed in a single PHP process, then the local copy of the files would not be deleted

  • TWEAK: Show the error message if mbstring.func_overload is turned on in php.ini while creating migration key

  • TWEAK: Added Azure China endpoint

  • TWEAK: Resolve "dashicons" CSS conflict

  • TWEAK: Add 'blogmeta' to the list of core tables (in readiness for WP 5.1)

  • TWEAK: Remove unnecessary deprecated (in PHP 7.3) parameter to define() in WebDAV HTTP library

  • TWEAK: Prevent a potential PHP notice in UpdraftPlus Premium when installed without network access

  • TWEAK: Enhance the updraftplus_exclude_file and updraftplus_exclude_directory filters to also pass the stored names

  • TWEAK: Add a new constant UPDRAFTPLUS_ZIP_BATCH_CEILING that can tweak internals of the zip backup engine

Download this release

Release Info

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

Code changes from version 1.16.0 to 1.16.4

Files changed (63) hide show
  1. admin.php +101 -225
  2. backup.php +69 -34
  3. class-updraftplus.php +24 -13
  4. css/updraftplus-admin.css +6 -2
  5. css/updraftplus-admin.min.css +1 -1
  6. css/updraftplus-admin.min.css.map +1 -1
  7. includes/S3compat.php +7 -6
  8. includes/class-backup-history.php +5 -4
  9. includes/class-database-utility.php +20 -11
  10. includes/class-filesystem-functions.php +167 -40
  11. includes/class-job-scheduler.php +19 -0
  12. includes/class-remote-send.php +13 -4
  13. includes/class-udrpc.php +2 -2
  14. includes/class-wpadmin-commands.php +5 -9
  15. includes/class-zip.php +63 -17
  16. includes/ftp.class.php +1 -1
  17. includes/updraft-notices.php +3 -0
  18. includes/updraftclone/temporary-clone-status.php +2 -2
  19. includes/updraftplus-clone.php +16 -0
  20. includes/updraftplus-notices.php +27 -14
  21. index.html +1 -1
  22. languages/updraftplus-bg_BG.mo +0 -0
  23. languages/updraftplus-bg_BG.po +29 -29
  24. languages/updraftplus-eu.mo +0 -0
  25. languages/updraftplus-eu.po +9 -9
  26. languages/updraftplus.pot +643 -631
  27. methods/addon-base-v2.php +2 -2
  28. methods/addon-not-yet-present.php +4 -4
  29. methods/cloudfiles-new.php +2 -2
  30. methods/cloudfiles.php +2 -2
  31. methods/dreamobjects.php +6 -4
  32. methods/dropbox.php +4 -4
  33. methods/email.php +1 -1
  34. methods/ftp.php +2 -2
  35. methods/googledrive.php +4 -4
  36. methods/insufficient.php +4 -4
  37. methods/openstack-base.php +1 -1
  38. methods/openstack2.php +2 -2
  39. methods/remotesend.php +1 -1
  40. methods/s3.php +74 -27
  41. methods/s3generic.php +4 -2
  42. methods/template.php +4 -4
  43. methods/updraftvault.php +15 -10
  44. options.php +1 -1
  45. readme.txt +49 -5
  46. restorer.php +245 -55
  47. templates/wp-admin/advanced/lock-admin.php +1 -1
  48. templates/wp-admin/advanced/search-replace.php +1 -1
  49. templates/wp-admin/notices/thanks-for-using-main-dash.php +8 -8
  50. templates/wp-admin/settings/backupnow-modal.php +1 -1
  51. templates/wp-admin/settings/delete-and-restore-modals.php +1 -1
  52. templates/wp-admin/settings/downloading-and-restoring.php +1 -1
  53. templates/wp-admin/settings/form-contents.php +8 -8
  54. templates/wp-admin/settings/header.php +8 -8
  55. templates/wp-admin/settings/migrator-no-migrator.php +1 -1
  56. templates/wp-admin/settings/tab-addons.php +4 -4
  57. templates/wp-admin/settings/tab-backups.php +1 -1
  58. templates/wp-admin/settings/take-backup.php +1 -1
  59. updraftplus.php +1 -1
  60. vendor/composer/installed.json +6 -6
  61. vendor/symfony/process/ExecutableFinder.php +4 -4
  62. vendor/symfony/process/LICENSE +1 -1
  63. vendor/symfony/process/Tests/ExecutableFinderTest.php +15 -0
admin.php CHANGED
@@ -875,7 +875,7 @@ class UpdraftPlus_Admin {
875
  'migratemodalheight' => class_exists('UpdraftPlus_Addons_Migrator') ? 555 : 300,
876
  'migratemodalwidth' => class_exists('UpdraftPlus_Addons_Migrator') ? 770 : 500,
877
  'download' => _x('Download', '(verb)', 'updraftplus'),
878
- 'browse_download_link' => apply_filters('updraftplus_browse_download_link', '<a id="updraft_zip_download_notice" href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/landing/updraftplus-premium").'">'.__("With UpdraftPlus Premium, you can directly download individual files from here.", "updraftplus").'</a>'),
879
  'unsavedsettingsbackup' => __('You have made changes to your settings, and not saved.', 'updraftplus')."\n".__('You should save your changes to ensure that they are used for making your backup.', 'updraftplus'),
880
  'unsaved_settings_export' => __('You have made changes to your settings, and not saved.', 'updraftplus')."\n".__('Your export file will be of your displayed settings, not your saved ones.', 'updraftplus'),
881
  'dayselector' => $day_selector,
@@ -1091,7 +1091,7 @@ class UpdraftPlus_Admin {
1091
  if (is_array($links) && 'updraftplus/updraftplus.php' == $file) {
1092
  $settings_link = '<a href="'.UpdraftPlus_Options::admin_page_url().'?page=updraftplus" class="js-updraftplus-settings">'.__("Settings", "updraftplus").'</a>';
1093
  array_unshift($links, $settings_link);
1094
- $settings_link = '<a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/").'">'.__("Add-Ons / Pro Support", "updraftplus").'</a>';
1095
  array_unshift($links, $settings_link);
1096
  }
1097
  return $links;
@@ -1127,6 +1127,12 @@ class UpdraftPlus_Admin {
1127
  }
1128
  }
1129
 
 
 
 
 
 
 
1130
  public function show_admin_warning($message, $class = 'updated') {
1131
  echo '<div class="updraftmessage '.$class.'">'."<p>$message</p></div>";
1132
  }
@@ -1150,7 +1156,7 @@ class UpdraftPlus_Admin {
1150
  }
1151
 
1152
  public function show_admin_warning_disabledcron() {
1153
- $this->show_admin_warning('<strong>'.__('Warning', 'updraftplus').':</strong> '.__('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.', 'updraftplus').' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/faqs/my-scheduled-backups-and-pressing-backup-now-does-nothing-however-pressing-debug-backup-does-produce-a-backup/#disablewpcron/").'">'.__('Go here for more information.', 'updraftplus').'</a>', 'updated updraftplus-disable-wp-cron-warning');
1154
  }
1155
 
1156
  public function show_admin_warning_diskspace() {
@@ -1162,7 +1168,7 @@ class UpdraftPlus_Admin {
1162
  }
1163
 
1164
  public function show_admin_warning_litespeed() {
1165
- $this->show_admin_warning('<strong>'.__('Warning', 'updraftplus').':</strong> '.sprintf(__('Your website is hosted using the %s web server.', 'updraftplus'), 'LiteSpeed').' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/faqs/i-am-having-trouble-backing-up-and-my-web-hosting-company-uses-the-litespeed-webserver/").'">'.__('Please consult this FAQ if you have problems backing up.', 'updraftplus').'</a>');
1166
  }
1167
 
1168
  public function show_admin_debug_warning() {
@@ -1171,7 +1177,7 @@ class UpdraftPlus_Admin {
1171
 
1172
  public function show_admin_warning_overdue_crons($howmany) {
1173
  $ret = '<div class="updraftmessage updated"><p>';
1174
- $ret .= '<strong>'.__('Warning', 'updraftplus').':</strong> '.sprintf(__('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.', 'updraftplus'), $howmany).' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/faqs/scheduler-wordpress-installation-working/").'">'.__('Read this page for a guide to possible causes and how to fix it.', 'updraftplus').'</a>';
1175
  $ret .= '</p></div>';
1176
  return $ret;
1177
  }
@@ -2622,7 +2628,7 @@ class UpdraftPlus_Admin {
2622
  <?php if (false !== strpos(basename(UPDRAFTPLUS_URL), ' ')) { ?>
2623
  <strong><?php _e('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.', 'updraftplus');?></strong>
2624
  <?php } else { ?>
2625
- <a href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/do-you-have-a-javascript-or-jquery-error/");?>"><?php _e('Go here for more information.', 'updraftplus'); ?></a>
2626
  <?php } ?>
2627
  </p>
2628
  </div>
@@ -2851,9 +2857,12 @@ class UpdraftPlus_Admin {
2851
  }
2852
  }
2853
 
 
 
 
2854
  public function show_admin_restore_in_progress_notice() {
2855
 
2856
- if (isset($_REQUEST['action']) && 'updraft_restore_abort' == $_REQUEST['action'] && !empty($_REQUEST['restoreid'])) {
2857
  delete_site_option('updraft_restore_in_progress');
2858
  return;
2859
  }
@@ -2917,7 +2926,7 @@ class UpdraftPlus_Admin {
2917
 
2918
  $enter_credentials_end .= '<span class="updraftplus_spinner spinner">' . __('Processing', 'updraftplus') . '...</span></p>';
2919
 
2920
- $enter_credentials_end .= '<p class="updraft-after-form-table" style="font-size: 70%"><em><a href="https://updraftplus.com/faqs/tell-me-about-my-updraftplus-com-account/">'.$interested.'</a></em></p>';
2921
 
2922
  $enter_credentials_end .= $include_form_container ? '</form>' : '</div>';
2923
 
@@ -3128,6 +3137,12 @@ class UpdraftPlus_Admin {
3128
  $this->include_template('wp-admin/settings/take-backup.php', false, array('backup_disabled' => $backup_disabled));
3129
  }
3130
 
 
 
 
 
 
 
3131
  public function settings_debugrow($head, $content) {
3132
  echo "<tr class=\"updraft_debugrow\"><th>$head</th><td>$content</td></tr>";
3133
  }
@@ -3179,10 +3194,11 @@ class UpdraftPlus_Admin {
3179
  }
3180
 
3181
  /**
3182
- * Print active Jobs
3183
  *
3184
- * @param boolean $this_job_only A value for $this_job_only also causes something to always be returned (to allow detection of the job having started on the front-end)
3185
- * @return [type] [description]
 
3186
  */
3187
  private function print_active_jobs($this_job_only = false) {
3188
  $cron = $this->get_cron();
@@ -3438,7 +3454,7 @@ class UpdraftPlus_Admin {
3438
  /**
3439
  * Deletes the -old directories that are created when a backup is restored.
3440
  *
3441
- * @return String. Can also exit (something we ought to probably review)
3442
  */
3443
  private function delete_old_dirs() {
3444
  global $wp_filesystem, $updraftplus;
@@ -4387,7 +4403,10 @@ ENDHERE;
4387
  *
4388
  * @return Array
4389
  */
4390
- private function get_entities_to_restore($backup_set) {
 
 
 
4391
 
4392
  $entities_to_restore = array();
4393
  $foreign_known = apply_filters('updraftplus_accept_archivename', array());
@@ -4405,196 +4424,119 @@ ENDHERE;
4405
  }
4406
 
4407
  foreach ($_POST as $key => $value) {
4408
- if (0 === strpos($key, 'updraft_restore_')) {
4409
- $nkey = substr($key, 16);
4410
- if (!isset($entities_to_restore[$nkey])) {
4411
- $_POST['updraft_restore'][] = $nkey;
4412
- if (empty($backup_set['meta_foreign'])) {
4413
- $entities_to_restore[$nkey] = $nkey;
4414
- } else {
4415
- if ('db' == $entity && !empty($foreign_known[$backup_set['meta_foreign']]['separatedb'])) {
4416
- $entities_to_restore[$nkey] = 'db';
4417
- } else {
4418
- $entities_to_restore[$nkey] = 'wpcore';
4419
- }
4420
- }
 
 
 
4421
  }
4422
  }
 
4423
  }
4424
 
4425
  return $entities_to_restore;
4426
  }
4427
 
4428
  /**
4429
- * Ensure that WP_Filesystem is instantiated and functional. Otherwise, outputs necessary HTML and dies.
4430
- *
4431
- * @param Array $continuation_data - continuation data
4432
- * @param Integer $timestamp - backup timestamp
4433
  *
4434
- * @return Array|Null - restore options to use, if any
4435
  */
4436
- private function ensure_wp_filesystem_set_up($continuation_data, $timestamp) {
4437
 
4438
- global $wp_filesystem;
4439
-
4440
- $restore_options = null;
4441
 
4442
- // request_filesystem_credentials passes on fields just via hidden name/value pairs.
4443
- // Build array of parameters to be passed via this
4444
- $extra_fields = array();
4445
- if (isset($_POST['updraft_restore']) && is_array($_POST['updraft_restore'])) {
4446
- foreach ($_POST['updraft_restore'] as $entity) {
4447
- $_POST['updraft_restore_'.$entity] = 1;
4448
- $extra_fields[] = 'updraft_restore_'.$entity;
4449
- }
4450
- }
4451
-
4452
- if (is_array($continuation_data)) {
4453
- foreach ($continuation_data['second_loop_entities'] as $type => $files) {
4454
- $_POST['updraft_restore_'.$type] = 1;
4455
- if (!in_array('updraft_restore_'.$type, $extra_fields)) $extra_fields[] = 'updraft_restore_'.$type;
4456
- }
4457
- if (!empty($continuation_data['restore_options'])) $restore_options = $continuation_data['restore_options'];
4458
- }
4459
-
4460
- // Now make sure that updraft_restorer_ option fields get passed along to request_filesystem_credentials
4461
- foreach ($_POST as $key => $value) {
4462
- if (0 === strpos($key, 'updraft_restorer_')) $extra_fields[] = $key;
4463
- }
4464
-
4465
- $credentials = request_filesystem_credentials(UpdraftPlus_Options::admin_page()."?page=updraftplus&action=updraft_restore&backup_timestamp=$timestamp", '', false, false, $extra_fields);
4466
- WP_Filesystem($credentials);
4467
- if ($wp_filesystem->errors->get_error_code()) {
4468
- echo '<p><em><a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/faqs/asked-ftp-details-upon-restorationmigration-updates/").'">'.__('Why am I seeing this?', 'updraftplus').'</a></em></p>';
4469
- foreach ($wp_filesystem->errors->get_error_messages() as $message) show_message($message);
4470
- exit;
4471
  }
4472
 
 
 
 
 
 
 
4473
  return $restore_options;
4474
  }
4475
 
4476
  /**
4477
- * Carry out the restore process
4478
  *
4479
- * @param Integer $timestamp Identifying the backup to be restored
4480
- * @param Array|null $continuation_data For continuing a multi-stage restore (code believed to be incomplete)
4481
- * @return Boolean|WP_Error WP_Error indicates a terminal failure; false indicates not-yet complete (not necessarily terminal); true indicates complete.
4482
  */
4483
  private function restore_backup($timestamp, $continuation_data = null) {
4484
 
4485
- global $updraftplus;
4486
 
4487
  $backup_set = UpdraftPlus_Backup_History::get_history($timestamp);
4488
-
4489
  if (empty($backup_set)) {
4490
  echo '<p>'.__('This backup does not exist in the backup history - restoration aborted. Timestamp:', 'updraftplus')." $timestamp</p><br>";
4491
  return new WP_Error('does_not_exist', __('Backup does not exist in the backup history', 'updraftplus')." ($timestamp)");
4492
  }
4493
 
4494
- // Will print HTML and die() if necessary
4495
- $restore_options = $this->ensure_wp_filesystem_set_up($continuation_data, $timestamp);
4496
 
4497
- // The <div> is closed by self::post_restore_clean_up()
4498
- echo '<h1>'.__('UpdraftPlus Restoration: Progress', 'updraftplus').'</h1><div id="updraft-restore-progress">';
 
 
4499
 
4500
- // Set up job ID, time and logging
4501
- $updraftplus->backup_time_nonce();
4502
- $updraftplus->jobdata_set('job_type', 'restore');
4503
- $updraftplus->jobdata_set('job_time_ms', $updraftplus->job_time_ms);
4504
- $updraftplus->logfile_open($updraftplus->nonce);
4505
 
4506
- // Provide download link for the log file
4507
- // TODO: Automatic purging of old log files
4508
- // TODO: Provide option to auto-email the log file
4509
 
 
4510
  $this->show_admin_warning('<a target="_blank" href="?action=downloadlog&page=updraftplus&updraftplus_backup_nonce='.htmlspecialchars($updraftplus->nonce).'">'.__('Follow this link to download the log file for this restoration (needed for any support requests).', 'updraftplus').'</a>');
4511
 
4512
- // Now, need to turn any updraft_restore_<entity> fields (that came from a potential WP_Filesystem form) back into parts of the _POST array (which we want to use)
4513
- if (empty($_POST['updraft_restore']) || (!is_array($_POST['updraft_restore']))) $_POST['updraft_restore'] = array();
4514
 
4515
- // N.B. This both processes, and edits, $_POST['updraft_restore']
4516
- $entities_to_restore = $this->get_entities_to_restore($backup_set);
4517
-
4518
- if (0 == count($_POST['updraft_restore'])) {
4519
- echo '<p>'.__('ABORT: Could not find the information on which entities to restore.', 'updraftplus').'</p>';
4520
- echo '<p>'.__('If making a request for support, please include this information:', 'updraftplus').' '.count($_POST).' : '.htmlspecialchars(serialize($_POST)).'</p>';
4521
  return new WP_Error('missing_info', 'Backup information not found');
4522
  }
4523
 
4524
  // This is used in painting the admin page after a successful restore
4525
  $this->entities_to_restore = $entities_to_restore;
4526
 
4527
- // This will be removed by self::post_restore_clean_up()
4528
  set_error_handler(array($updraftplus, 'php_error'), E_ALL & ~E_STRICT);
4529
 
4530
- // $_POST['updraft_restore'] is typically something like: array('db', 'plugins', 'themes'), etc.
4531
-
4532
- // If not options were supplied in $restore_options, then process things in $_POST to get them
4533
- if (empty($restore_options)) {
4534
  // Gather the restore options into one place - code after here should read the options, and not the HTTP variables
4535
- $restore_options = array();
4536
- if (!empty($_POST['updraft_restorer_restore_options'])) {
4537
- parse_str(stripslashes($_POST['updraft_restorer_restore_options']), $restore_options);
4538
- }
4539
- $restore_options['updraft_encryptionphrase'] = empty($_POST['updraft_encryptionphrase']) ? '' : (string) stripslashes($_POST['updraft_encryptionphrase']);
4540
- $restore_options['updraft_restorer_wpcore_includewpconfig'] = empty($_POST['updraft_restorer_wpcore_includewpconfig']) ? false : true;
4541
- $restore_options['updraft_incremental_restore_point'] = empty($restore_options['updraft_incremental_restore_point']) ? -1 : (int) $restore_options['updraft_incremental_restore_point'];
4542
  $updraftplus->jobdata_set('restore_options', $restore_options);
4543
  }
 
 
4544
 
4545
- // If updraft_incremental_restore_point is equal to -1 then this is either not a incremental restore or we are going to restore up to the latest increment, so there is no need to prune the backup set of any unwanted backup archives.
4546
- if (isset($restore_options['updraft_incremental_restore_point']) && $restore_options['updraft_incremental_restore_point'] > 0) {
4547
- $restore_point = $restore_options['updraft_incremental_restore_point'];
4548
- foreach ($backup_set['incremental_sets'] as $increment_timestamp => $entities) {
4549
- if ($increment_timestamp > $restore_point) {
4550
- foreach ($entities as $entity => $backups) {
4551
- foreach ($backups as $key => $value) {
4552
- unset($backup_set[$entity][$key]);
4553
- }
4554
- }
4555
- }
4556
- }
4557
- }
4558
-
4559
- // Restore in the most helpful order
4560
- uksort($backup_set, array('UpdraftPlus_Manipulation_Functions', 'sort_restoration_entities'));
4561
-
4562
- // Now log. We first remove any encryption passphrase from the log data.
4563
- $copy_restore_options = $restore_options;
4564
- if (!empty($copy_restore_options['updraft_encryptionphrase'])) $copy_restore_options['updraft_encryptionphrase'] = '***';
4565
- $updraftplus->log("Restore job started. Entities to restore: ".implode(', ', array_flip($entities_to_restore)).'. Restore options: '.json_encode($copy_restore_options));
4566
-
4567
- $backup_set['timestamp'] = $timestamp;
4568
-
4569
  // We use a single object for each entity, because we want to store information about the backup set
4570
- if (!class_exists('Updraft_Restorer')) include_once(UPDRAFTPLUS_DIR.'/restorer.php');
4571
-
4572
- echo "<h2>".__('Final checks', 'updraftplus').'</h2>';
4573
-
4574
- global $updraftplus_restorer;
4575
-
4576
  $updraftplus_restorer = new Updraft_Restorer(new Updraft_Restorer_Skin, $backup_set, false, $restore_options);
4577
 
4578
- add_action('updraftplus_restoration_title', array($this, 'restoration_title'));
4579
-
4580
  $restore_result = $updraftplus_restorer->perform_restore($entities_to_restore, $restore_options, $continuation_data);
4581
-
4582
- if (is_wp_error($restore_result)) {
4583
- foreach ($restore_result->get_error_codes() as $code) {
4584
- if ('already_exists' == $code) $this->print_delete_old_dirs_form(false);
4585
- $data = $restore_result->get_error_data($code);
4586
- if (!empty($data)) {
4587
- $pdata = is_string($data) ? $data : serialize($data);
4588
- $updraftplus->log(__('Error data:', 'updraftplus').' '.$pdata, 'warning-restore');
4589
- if (false !== strpos($pdata, 'PCLZIP_ERR_BAD_FORMAT (-10)')) {
4590
- echo '<a href="'.apply_filters('updraftplus_com_link', 'https://updraftplus.com/faqs/error-message-pclzip_err_bad_format-10-invalid-archive-structure-mean/').'"><strong>'.__('Follow this link for more information', 'updraftplus').'</strong></a><br>';
4591
- }
4592
- }
4593
-
4594
- }
4595
- }
4596
 
4597
- $this->post_restore_clean_up((true === $restore_result) ? true : false);
4598
 
4599
  return $restore_result;
4600
 
@@ -4610,85 +4552,19 @@ ENDHERE;
4610
  }
4611
 
4612
  /**
4613
- * Restore has been completed - clean some things up
4614
  *
4615
- * @param Boolean $successful - if the restore was successful or not. If not, then only a minimum of necessary clean-up things is done.
4616
- * @param Boolean $browser_context - if true, then extra messages will be echo-ed
4617
  *
4618
- * @uses $GLOBALS['updraftplus_restorer']
4619
- * @uses UpdraftPlus::log()
4620
  */
4621
- public function post_restore_clean_up($successful = true, $browser_context = true) {
4622
-
4623
- global $updraftplus_restorer, $updraftplus;
4624
-
4625
- if ($successful) {
4626
- // All done - remove the intermediate marker
4627
- delete_site_option('updraft_restore_in_progress');
4628
-
4629
- foreach (array('template', 'stylesheet', 'template_root', 'stylesheet_root') as $opt) {
4630
- add_filter('pre_option_'.$opt, array($this, 'option_filter_'.$opt));
4631
- }
4632
-
4633
- // Clear any cached pages after the restore
4634
- $updraftplus_restorer->clear_cache();
4635
-
4636
- // Have seen a case where the current theme in the DB began with a capital, but not on disk - and this breaks migrating from Windows to a case-sensitive system
4637
- $template = get_option('template');
4638
- if (!empty($template) && WP_DEFAULT_THEME != $template && strtolower($template) != $template) {
4639
-
4640
- $theme_root = get_theme_root($template);
4641
- $theme_root2 = get_theme_root(strtolower($template));
4642
-
4643
- if (!file_exists("$theme_root/$template/style.css") && file_exists("$theme_root/".strtolower($template)."/style.css")) {
4644
- $updraftplus->log_e("Theme directory (%s) not found, but lower-case version exists; updating database option accordingly", $template);
4645
- update_option('template', strtolower($template));
4646
- }
4647
-
4648
- }
4649
-
4650
- if (!function_exists('validate_current_theme')) include_once(ABSPATH.WPINC.'/themes');
4651
-
4652
- if (!validate_current_theme()) {
4653
- if ($browser_context) echo '<strong>';
4654
- $updraftplus->log_e("The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme");
4655
- if ($browser_context) echo '</strong>';
4656
- }
4657
-
4658
- do_action('updraftplus_restore_completed');
4659
- }
4660
-
4661
- if ($browser_context) echo '</div>'; // Close the updraft_restore_progress div
4662
-
4663
- restore_error_handler();
4664
-
4665
- }
4666
-
4667
- public function option_filter_template($val) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
4668
- global $updraftplus;
4669
- return $updraftplus->option_filter_get('template');
4670
- }
4671
-
4672
- public function option_filter_stylesheet($val) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
4673
- global $updraftplus;
4674
- return $updraftplus->option_filter_get('stylesheet');
4675
- }
4676
-
4677
- public function option_filter_template_root($val) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
4678
- global $updraftplus;
4679
- return $updraftplus->option_filter_get('template_root');
4680
- }
4681
-
4682
- public function option_filter_stylesheet_root($val) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
4683
- global $updraftplus;
4684
- return $updraftplus->option_filter_get('stylesheet_root');
4685
- }
4686
-
4687
  public function return_array($input) {
4688
- if (!is_array($input)) $input = array();
4689
- return $input;
4690
  }
4691
 
 
 
 
4692
  public function updraft_ajax_savesettings() {
4693
  try {
4694
  global $updraftplus;
@@ -4800,7 +4676,7 @@ ENDHERE;
4800
  $no_remote_configured = (empty($service) || array('none') === $service || array('') === $service) ? true : false;
4801
 
4802
  if ($no_remote_configured) {
4803
- return '<input type="checkbox" disabled="disabled" id="backupnow_includecloud"> <em>'.sprintf(__("Backup won't be sent to any remote storage - none has been saved in the %s", 'updraftplus'), '<a href="'.UpdraftPlus_Options::admin_page_url().'?page=updraftplus&amp;tab=settings" id="updraft_backupnow_gotosettings">'.__('settings', 'updraftplus')).'</a>. '.__('Not got any remote storage?', 'updraftplus').' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/landing/vault/").'">'.__("Check out UpdraftPlus Vault.", 'updraftplus').'</a></em>';
4804
  } else {
4805
  return '<input type="checkbox" id="backupnow_includecloud" checked="checked"> <label for="backupnow_includecloud">'.__("Send this backup to remote storage", 'updraftplus').'</label>';
4806
  }
@@ -5343,7 +5219,7 @@ ENDHERE;
5343
  return false;
5344
  } else {
5345
  $corrupted_files_count = count($corrupted_files);
5346
- return '<strong>'.__('Warning', 'updraftplus').':</strong> '.sprintf(_n('The file %s has a "byte order mark" (BOM) at its beginning.', 'The files %s have a "byte order mark" (BOM) at their beginning.', $corrupted_files_count, 'updraftplus'), '<strong>'.implode('</strong>, <strong>', $corrupted_files).'</strong>').' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/problems-with-extra-white-space/").'">'.__('Follow this link for more information', 'updraftplus').'</a>';
5347
  }
5348
  }
5349
 
875
  'migratemodalheight' => class_exists('UpdraftPlus_Addons_Migrator') ? 555 : 300,
876
  'migratemodalwidth' => class_exists('UpdraftPlus_Addons_Migrator') ? 770 : 500,
877
  'download' => _x('Download', '(verb)', 'updraftplus'),
878
+ 'browse_download_link' => apply_filters('updraftplus_browse_download_link', '<a id="updraft_zip_download_notice" href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/landing/updraftplus-premium").'" target="_blank">'.__("With UpdraftPlus Premium, you can directly download individual files from here.", "updraftplus").'</a>'),
879
  'unsavedsettingsbackup' => __('You have made changes to your settings, and not saved.', 'updraftplus')."\n".__('You should save your changes to ensure that they are used for making your backup.', 'updraftplus'),
880
  'unsaved_settings_export' => __('You have made changes to your settings, and not saved.', 'updraftplus')."\n".__('Your export file will be of your displayed settings, not your saved ones.', 'updraftplus'),
881
  'dayselector' => $day_selector,
1091
  if (is_array($links) && 'updraftplus/updraftplus.php' == $file) {
1092
  $settings_link = '<a href="'.UpdraftPlus_Options::admin_page_url().'?page=updraftplus" class="js-updraftplus-settings">'.__("Settings", "updraftplus").'</a>';
1093
  array_unshift($links, $settings_link);
1094
+ $settings_link = '<a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/").'" target="_blank">'.__("Add-Ons / Pro Support", "updraftplus").'</a>';
1095
  array_unshift($links, $settings_link);
1096
  }
1097
  return $links;
1127
  }
1128
  }
1129
 
1130
+ /**
1131
+ * Paint a div for a dashboard warning
1132
+ *
1133
+ * @param String $message - the HTML for the message (already escaped)
1134
+ * @param String $class - CSS class to use for the div
1135
+ */
1136
  public function show_admin_warning($message, $class = 'updated') {
1137
  echo '<div class="updraftmessage '.$class.'">'."<p>$message</p></div>";
1138
  }
1156
  }
1157
 
1158
  public function show_admin_warning_disabledcron() {
1159
+ $this->show_admin_warning('<strong>'.__('Warning', 'updraftplus').':</strong> '.__('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.', 'updraftplus').' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/faqs/my-scheduled-backups-and-pressing-backup-now-does-nothing-however-pressing-debug-backup-does-produce-a-backup/#disablewpcron/").'" target="_blank">'.__('Go here for more information.', 'updraftplus').'</a>', 'updated updraftplus-disable-wp-cron-warning');
1160
  }
1161
 
1162
  public function show_admin_warning_diskspace() {
1168
  }
1169
 
1170
  public function show_admin_warning_litespeed() {
1171
+ $this->show_admin_warning('<strong>'.__('Warning', 'updraftplus').':</strong> '.sprintf(__('Your website is hosted using the %s web server.', 'updraftplus'), 'LiteSpeed').' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/faqs/i-am-having-trouble-backing-up-and-my-web-hosting-company-uses-the-litespeed-webserver/").'" target="_blank">'.__('Please consult this FAQ if you have problems backing up.', 'updraftplus').'</a>');
1172
  }
1173
 
1174
  public function show_admin_debug_warning() {
1177
 
1178
  public function show_admin_warning_overdue_crons($howmany) {
1179
  $ret = '<div class="updraftmessage updated"><p>';
1180
+ $ret .= '<strong>'.__('Warning', 'updraftplus').':</strong> '.sprintf(__('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.', 'updraftplus'), $howmany).' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/faqs/scheduler-wordpress-installation-working/").'" target="_blank">'.__('Read this page for a guide to possible causes and how to fix it.', 'updraftplus').'</a>';
1181
  $ret .= '</p></div>';
1182
  return $ret;
1183
  }
2628
  <?php if (false !== strpos(basename(UPDRAFTPLUS_URL), ' ')) { ?>
2629
  <strong><?php _e('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.', 'updraftplus');?></strong>
2630
  <?php } else { ?>
2631
+ <a href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/do-you-have-a-javascript-or-jquery-error/");?>" target="_blank"><?php _e('Go here for more information.', 'updraftplus'); ?></a>
2632
  <?php } ?>
2633
  </p>
2634
  </div>
2857
  }
2858
  }
2859
 
2860
+ /**
2861
+ * If added, then runs upon the WP action all_admin_notices
2862
+ */
2863
  public function show_admin_restore_in_progress_notice() {
2864
 
2865
+ if (isset($_REQUEST['action']) && 'updraft_restore_abort' === $_REQUEST['action'] && !empty($_REQUEST['restoreid'])) {
2866
  delete_site_option('updraft_restore_in_progress');
2867
  return;
2868
  }
2926
 
2927
  $enter_credentials_end .= '<span class="updraftplus_spinner spinner">' . __('Processing', 'updraftplus') . '...</span></p>';
2928
 
2929
+ $enter_credentials_end .= '<p class="updraft-after-form-table" style="font-size: 70%"><em><a href="https://updraftplus.com/faqs/tell-me-about-my-updraftplus-com-account/" target="_blank">'.$interested.'</a></em></p>';
2930
 
2931
  $enter_credentials_end .= $include_form_container ? '</form>' : '</div>';
2932
 
3137
  $this->include_template('wp-admin/settings/take-backup.php', false, array('backup_disabled' => $backup_disabled));
3138
  }
3139
 
3140
+ /**
3141
+ * Output a table row using the updraft_debugrow class
3142
+ *
3143
+ * @param String $head - header cell contents
3144
+ * @param String $content - content cell contents
3145
+ */
3146
  public function settings_debugrow($head, $content) {
3147
  echo "<tr class=\"updraft_debugrow\"><th>$head</th><td>$content</td></tr>";
3148
  }
3194
  }
3195
 
3196
  /**
3197
+ * Gets HTML describing the active jobs
3198
  *
3199
+ * @param Boolean $this_job_only A value for $this_job_only also causes something non-empty to always be returned (to allow detection of the job having started on the front-end)
3200
+ *
3201
+ * @return String - the HTML
3202
  */
3203
  private function print_active_jobs($this_job_only = false) {
3204
  $cron = $this->get_cron();
3454
  /**
3455
  * Deletes the -old directories that are created when a backup is restored.
3456
  *
3457
+ * @return Boolean. Can also exit (something we ought to probably review)
3458
  */
3459
  private function delete_old_dirs() {
3460
  global $wp_filesystem, $updraftplus;
4403
  *
4404
  * @return Array
4405
  */
4406
+ private function get_entities_to_restore_from_post($backup_set) {
4407
+
4408
+ // Now, need to turn any updraft_restore_<entity> fields (that came from a potential WP_Filesystem form) back into parts of the _POST array (which we want to use)
4409
+ if (empty($_POST['updraft_restore']) || (!is_array($_POST['updraft_restore']))) $_POST['updraft_restore'] = array();
4410
 
4411
  $entities_to_restore = array();
4412
  $foreign_known = apply_filters('updraftplus_accept_archivename', array());
4424
  }
4425
 
4426
  foreach ($_POST as $key => $value) {
4427
+
4428
+ if (0 !== strpos($key, 'updraft_restore_')) continue;
4429
+
4430
+ $nkey = substr($key, 16);
4431
+
4432
+ if (isset($entities_to_restore[$nkey])) continue;
4433
+
4434
+ $_POST['updraft_restore'][] = $nkey;
4435
+
4436
+ if (empty($backup_set['meta_foreign'])) {
4437
+ $entities_to_restore[$nkey] = $nkey;
4438
+ } else {
4439
+ if ('db' == $entity && !empty($foreign_known[$backup_set['meta_foreign']]['separatedb'])) {
4440
+ $entities_to_restore[$nkey] = 'db';
4441
+ } else {
4442
+ $entities_to_restore[$nkey] = 'wpcore';
4443
  }
4444
  }
4445
+
4446
  }
4447
 
4448
  return $entities_to_restore;
4449
  }
4450
 
4451
  /**
4452
+ * Gets the restoration options as passed in via $_POST
 
 
 
4453
  *
4454
+ * @return Array
4455
  */
4456
+ private function get_restore_options_from_post() {
4457
 
4458
+ global $updraftplus;
 
 
4459
 
4460
+ $restore_options = array();
4461
+
4462
+ if (!empty($_POST['updraft_restorer_restore_options'])) {
4463
+ parse_str(stripslashes($_POST['updraft_restorer_restore_options']), $restore_options);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4464
  }
4465
 
4466
+ $restore_options['updraft_encryptionphrase'] = empty($_POST['updraft_encryptionphrase']) ? '' : (string) stripslashes($_POST['updraft_encryptionphrase']);
4467
+
4468
+ $restore_options['updraft_restorer_wpcore_includewpconfig'] = !empty($_POST['updraft_restorer_wpcore_includewpconfig']);
4469
+
4470
+ $restore_options['updraft_incremental_restore_point'] = empty($restore_options['updraft_incremental_restore_point']) ? -1 : (int) $restore_options['updraft_incremental_restore_point'];
4471
+
4472
  return $restore_options;
4473
  }
4474
 
4475
  /**
4476
+ * Carry out the restore process within the WP admin dashboard, using data from $_POST
4477
  *
4478
+ * @param Array $timestamp Identifying the backup to be restored
4479
+ * @param Array|null $continuation_data For continuing a multi-stage restore; this is the saved jobdata for the job
4480
+ * @return Boolean|WP_Error - a WP_Error indicates a terminal failure; false indicates not-yet complete (not necessarily terminal); true indicates complete.
4481
  */
4482
  private function restore_backup($timestamp, $continuation_data = null) {
4483
 
4484
+ global $updraftplus, $wp_filesystem, $updraftplus_restorer;
4485
 
4486
  $backup_set = UpdraftPlus_Backup_History::get_history($timestamp);
4487
+
4488
  if (empty($backup_set)) {
4489
  echo '<p>'.__('This backup does not exist in the backup history - restoration aborted. Timestamp:', 'updraftplus')." $timestamp</p><br>";
4490
  return new WP_Error('does_not_exist', __('Backup does not exist in the backup history', 'updraftplus')." ($timestamp)");
4491
  }
4492
 
4493
+ $backup_set['timestamp'] = $timestamp;
 
4494
 
4495
+ $second_loop_entities = empty($continuation_data['second_loop_entities']) ? array() : $continuation_data['second_loop_entities'];
4496
+
4497
+ // This will print HTML and die() if necessary; can also edit $_POST['updraft_restore_*'] to make it reflect the contents of $_POST['updraft_restore']
4498
+ UpdraftPlus_Filesystem_Functions::ensure_wp_filesystem_set_up_for_restore($second_loop_entities, array('backup_timestamp' => $timestamp));
4499
 
4500
+ // Set up nonces, log files etc.
4501
+ $updraftplus->initiate_restore_job();
 
 
 
4502
 
4503
+ // The <div> is closed by Updraft_Restorer::post_restore_clean_up()
4504
+ echo '<h1>'.__('UpdraftPlus Restoration: Progress', 'updraftplus').'</h1><div id="updraft-restore-progress">';
 
4505
 
4506
+ // Provide download link for the log file
4507
  $this->show_admin_warning('<a target="_blank" href="?action=downloadlog&page=updraftplus&updraftplus_backup_nonce='.htmlspecialchars($updraftplus->nonce).'">'.__('Follow this link to download the log file for this restoration (needed for any support requests).', 'updraftplus').'</a>');
4508
 
4509
+ // N.B. This both processes, and edits, $_POST['updraft_restore'], and processes $_POST['updraft_
4510
+ $entities_to_restore = $this->get_entities_to_restore_from_post($backup_set);
4511
 
4512
+ if (empty($entities_to_restore)) {
4513
+ echo '<p>'.__('ABORT: Could not find the information on which entities to restore.', 'updraftplus').'</p><p>'.__('If making a request for support, please include this information:', 'updraftplus').' '.count($_POST).' : '.htmlspecialchars(serialize($_POST)).'</p>';
 
 
 
 
4514
  return new WP_Error('missing_info', 'Backup information not found');
4515
  }
4516
 
4517
  // This is used in painting the admin page after a successful restore
4518
  $this->entities_to_restore = $entities_to_restore;
4519
 
4520
+ // This will be removed by Updraft_Restorer::post_restore_clean_up()
4521
  set_error_handler(array($updraftplus, 'php_error'), E_ALL & ~E_STRICT);
4522
 
4523
+ // Set $restore_options, either from the continuation data, or from $_POST
4524
+ if (!empty($continuation_data['restore_options'])) {
4525
+ $restore_options = $continuation_data['restore_options'];
4526
+ } else {
4527
  // Gather the restore options into one place - code after here should read the options, and not the HTTP variables
4528
+ $restore_options = $this->get_restore_options_from_post();
 
 
 
 
 
 
4529
  $updraftplus->jobdata_set('restore_options', $restore_options);
4530
  }
4531
+
4532
+ add_action('updraftplus_restoration_title', array($this, 'restoration_title'));
4533
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4534
  // We use a single object for each entity, because we want to store information about the backup set
 
 
 
 
 
 
4535
  $updraftplus_restorer = new Updraft_Restorer(new Updraft_Restorer_Skin, $backup_set, false, $restore_options);
4536
 
 
 
4537
  $restore_result = $updraftplus_restorer->perform_restore($entities_to_restore, $restore_options, $continuation_data);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4538
 
4539
+ $updraftplus_restorer->post_restore_clean_up($restore_result);
4540
 
4541
  return $restore_result;
4542
 
4552
  }
4553
 
4554
  /**
4555
+ * Ensure that what is returned is an array. Used as a WP options filter.
4556
  *
4557
+ * @param Array $input - input
 
4558
  *
4559
+ * @return Array
 
4560
  */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4561
  public function return_array($input) {
4562
+ return is_array($input) ? $input : array();
 
4563
  }
4564
 
4565
+ /**
4566
+ * Called upon the WP action wp_ajax_updraft_savesettings. Will die().
4567
+ */
4568
  public function updraft_ajax_savesettings() {
4569
  try {
4570
  global $updraftplus;
4676
  $no_remote_configured = (empty($service) || array('none') === $service || array('') === $service) ? true : false;
4677
 
4678
  if ($no_remote_configured) {
4679
+ return '<input type="checkbox" disabled="disabled" id="backupnow_includecloud"> <em>'.sprintf(__("Backup won't be sent to any remote storage - none has been saved in the %s", 'updraftplus'), '<a href="'.UpdraftPlus_Options::admin_page_url().'?page=updraftplus&amp;tab=settings" id="updraft_backupnow_gotosettings">'.__('settings', 'updraftplus')).'</a>. '.__('Not got any remote storage?', 'updraftplus').' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/landing/vault/").'" target="_blank">'.__("Check out UpdraftPlus Vault.", 'updraftplus').'</a></em>';
4680
  } else {
4681
  return '<input type="checkbox" id="backupnow_includecloud" checked="checked"> <label for="backupnow_includecloud">'.__("Send this backup to remote storage", 'updraftplus').'</label>';
4682
  }
5219
  return false;
5220
  } else {
5221
  $corrupted_files_count = count($corrupted_files);
5222
+ return '<strong>'.__('Warning', 'updraftplus').':</strong> '.sprintf(_n('The file %s has a "byte order mark" (BOM) at its beginning.', 'The files %s have a "byte order mark" (BOM) at their beginning.', $corrupted_files_count, 'updraftplus'), '<strong>'.implode('</strong>, <strong>', $corrupted_files).'</strong>').' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/problems-with-extra-white-space/").'" target="_blank">'.__('Follow this link for more information', 'updraftplus').'</a>';
5223
  }
5224
  }
5225
 
backup.php CHANGED
@@ -4,7 +4,7 @@ if (!defined('UPDRAFTPLUS_DIR')) die('No direct access allowed');
4
  if (!class_exists('UpdraftPlus_PclZip')) require_once(UPDRAFTPLUS_DIR.'/includes/class-zip.php');
5
 
6
  /**
7
- * This file contains functions that are only needed/loaded when a backup is running (reduces memory usage on other pages)
8
  */
9
  class UpdraftPlus_Backup {
10
 
@@ -74,7 +74,19 @@ class UpdraftPlus_Backup {
74
 
75
  // Append to this any skipped tables
76
  private $skipped_tables;
 
 
 
 
 
 
77
 
 
 
 
 
 
 
78
  public function __construct($backup_files, $altered_since = -1) {
79
 
80
  global $updraftplus;
@@ -143,9 +155,18 @@ class UpdraftPlus_Backup {
143
  $updraftplus->log("Zip engine: ZipArchive (a.k.a. php-zip) is not available or is disabled (will use PclZip (much slower) if needed)");
144
  $this->use_zip_object = 'UpdraftPlus_PclZip';
145
  }
 
 
146
 
147
  }
148
 
 
 
 
 
 
 
 
149
  public function report_remotestorage_extrainfo($service, $info_html, $info_plain) {
150
  $this->remotestorage_extrainfo[$service] = array('pretty' => $info_html, 'plain' => $info_plain);
151
  }
@@ -158,6 +179,7 @@ class UpdraftPlus_Backup {
158
  * @param String $backup_file_basename Name of backup file
159
  * @param Integer $index Index of zip in the sequence
160
  * @param Integer|Boolean $first_linked_index First linked index in the sequence, or false
 
161
  * @return Boolean
162
  */
163
  public function create_zip($create_from_dir, $whichone, $backup_file_basename, $index, $first_linked_index = false) {
@@ -403,14 +425,13 @@ class UpdraftPlus_Backup {
403
  $this->current_service = $service;
404
 
405
  // Used when deciding whether to delete the local file
406
- $this->last_service = ($ind+1 >= count($services) && $instance_id_count+1 >= $total_instance_ids && $errors_before_uploads == $updraftplus->error_count()) ? true : false;
407
-
408
- $log_extra = $this->last_service ? ' (last)' : '';
409
  $updraftplus->log("Cloud backup selection (".($ind+1)."/".count($services)."): ".$service." with instance (".($instance_id_count+1)."/".$total_instance_ids.")".$log_extra);
410
  @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT);
411
 
412
  if ('none' == $service || '' == $service) {
413
- $updraftplus->log("No remote despatch: user chose no remote backup service");
414
  // Still want to mark as "uploaded", to signal that nothing more needs doing. (Important on incremental runs with no cloud storage).
415
  foreach ($backup_array as $bind => $file) {
416
  if ($updraftplus->is_uploaded($file)) {
@@ -426,6 +447,13 @@ class UpdraftPlus_Backup {
426
  $do_prune = array_merge_recursive($do_prune, $this->upload_cloud($remote_obj, $service, $backup_array, ''));
427
  } elseif (!empty($storage_objects_and_ids[$service]['instance_settings'])) {
428
  foreach ($storage_objects_and_ids[$service]['instance_settings'] as $instance_id => $options) {
 
 
 
 
 
 
 
429
  // Used for logging by record_upload_chunk()
430
  $this->current_instance = $instance_id;
431
 
@@ -433,11 +461,10 @@ class UpdraftPlus_Backup {
433
 
434
  if (1 == $options['instance_enabled']) {
435
  $remote_obj = $storage_objects_and_ids[$service]['object'];
436
-
437
  $remote_obj->set_options($options, true, $instance_id);
438
  $do_prune = array_merge_recursive($do_prune, $this->upload_cloud($remote_obj, $service, $backup_array, $instance_id));
439
  } else {
440
- $updraftplus->log("This instance id ($instance_id) has been set to inactive.");
441
  }
442
 
443
  $instance_id_count++;
@@ -512,6 +539,13 @@ class UpdraftPlus_Backup {
512
  return $do_prune;
513
  }
514
 
 
 
 
 
 
 
 
515
  private function group_backups($backup_history) {
516
  return array(array('sets' => $backup_history, 'process_order' => 'keep_newest'));
517
  }
@@ -1240,7 +1274,7 @@ class UpdraftPlus_Backup {
1240
  $updraftplus->log($e->getMessage());
1241
  }
1242
 
1243
- if (empty($core_tables)) $core_tables = array('terms', 'term_taxonomy', 'termmeta', 'term_relationships', 'commentmeta', 'comments', 'links', 'postmeta', 'posts', 'site', 'sitemeta', 'blogs', 'blogversions');
1244
 
1245
  global $updraftplus;
1246
  $na = UpdraftPlus_Manipulation_Functions::str_replace_once($our_table_prefix, '', $a);
@@ -2335,7 +2369,7 @@ class UpdraftPlus_Backup {
2335
  return true;
2336
  }
2337
 
2338
- if (apply_filters('updraftplus_exclude_directory', false, $fullpath)) {
2339
  $updraftplus->log("Skip filtered directory: $use_path_when_storing");
2340
  return true;
2341
  }
@@ -2368,7 +2402,7 @@ class UpdraftPlus_Backup {
2368
  $updraftplus->log("Entity excluded by configuration option (extension): $use_stripped");
2369
  } elseif (!empty($this->excluded_prefixes) && $this->is_entity_excluded_by_prefix($e)) {
2370
  $updraftplus->log("Entity excluded by configuration option (prefix): $use_stripped");
2371
- } elseif (apply_filters('updraftplus_exclude_file', false, $deref)) {
2372
  $updraftplus->log("Entity excluded by filter: $use_stripped");
2373
  } else {
2374
  $mtime = filemtime($deref);
@@ -2576,12 +2610,15 @@ class UpdraftPlus_Backup {
2576
  $updraftplus->log("Could not open zip file to examine (".$zip->last_error."); will remove: ".basename($examine_zip));
2577
  @unlink($examine_zip);
2578
  } else {
2579
- // Don't put this in the for loop, or the magic __get() method gets called and opens the zip file every time the loop goes round
 
2580
  $numfiles = $zip->numFiles;
2581
 
2582
  for ($i=0; $i < $numfiles; $i++) {
2583
  $si = $zip->statIndex($i);
2584
  $name = $si['name'];
 
 
2585
  $this->existing_files[$name] = $si['size'];
2586
  $this->existing_files_rawsize += $si['size'];
2587
  }
@@ -2961,41 +2998,39 @@ class UpdraftPlus_Backup {
2961
  if (false === fwrite($handle, '{"version":'.$version.',"type":"'.$whichone.'",'.$directory.'"listed_levels":"'.$go_to_level.'","contents":{"directories":[')) $updraftplus->log("First write to manifest file failed ($manifest_name)");
2962
 
2963
  // First loop: find out which is the last entry, so that we don't write the comma after it
2964
- $last_file_index = false;
2965
  foreach ($this->zipfiles_dirbatched as $index => $dir) {
2966
  if ('all' !== $go_to_level && substr_count($dir, '/') > $go_to_level - 1) continue;
2967
- $last_file_index = $index;
2968
  }
2969
 
2970
  // Second loop: write out the entry
2971
  foreach ($this->zipfiles_dirbatched as $index => $dir) {
2972
  if ('all' !== $go_to_level && substr_count($dir, '/') > $go_to_level - 1) continue;
2973
- fwrite($handle, json_encode($dir).(($index != $last_file_index) ? ',' : ''));
2974
  }
2975
 
2976
  // Now do the same for files
2977
  fwrite($handle, '],"files":[');
2978
 
2979
  $last_file_index = false;
2980
- foreach ($this->zipfiles_batched as $index => $dir) {
2981
- if ('all' !== $go_to_level && substr_count($dir, '/') > $go_to_level - 1) continue;
2982
- $last_file_index = $index;
2983
  }
2984
-
2985
- foreach ($this->zipfiles_batched as $index => $dir) {
2986
- if ('all' !== $go_to_level && substr_count($dir, '/') > $go_to_level - 1) continue;
2987
- fwrite($handle, json_encode($dir).(($index != $last_file_index) ? ',' : ''));
2988
  }
2989
 
2990
- $last_file_index = false;
2991
- foreach ($this->zipfiles_skipped_notaltered as $index => $dir) {
2992
- if ('all' !== $go_to_level && substr_count($dir, '/') > $go_to_level - 1) continue;
2993
- $last_file_index = $index;
2994
  }
2995
-
2996
- foreach ($this->zipfiles_skipped_notaltered as $index => $dir) {
2997
- if ('all' !== $go_to_level && substr_count($dir, '/') > $go_to_level - 1) continue;
2998
- fwrite($handle, json_encode($dir).(($index != $last_file_index) ? ',' : ''));
2999
  }
3000
 
3001
  fwrite($handle, ']}}');
@@ -3261,19 +3296,19 @@ class UpdraftPlus_Backup {
3261
  $max_time = -1;
3262
  }
3263
 
3264
- if ($normalised_time_since_began<6 || ($updraftplus->current_resumption >=1 && $run_times_known >=1 && $time_since_began < 0.6*$max_time)) {
3265
 
3266
  // How much can we increase it by?
3267
- if ($normalised_time_since_began <6) {
3268
  if ($run_times_known > 0 && $max_time >0) {
3269
- $new_maxzipbatch = min(floor(max($maxzipbatch*6/$normalised_time_since_began, $maxzipbatch*((0.6*$max_time)/$normalised_time_since_began))), 200*1024*1024);
3270
  } else {
3271
  // Maximum of 200MB in a batch
3272
- $new_maxzipbatch = min(floor($maxzipbatch*6/$normalised_time_since_began), 200*1024*1024);
3273
  }
3274
  } else {
3275
  // Use up to 60% of available time
3276
- $new_maxzipbatch = min(floor($maxzipbatch*((0.6*$max_time)/$normalised_time_since_began)), 200*1024*1024);
3277
  }
3278
 
3279
  // Throttle increases - don't increase by more than 2x in one go - ???
4
  if (!class_exists('UpdraftPlus_PclZip')) require_once(UPDRAFTPLUS_DIR.'/includes/class-zip.php');
5
 
6
  /**
7
+ * This file contains code that is only needed/loaded when a backup is running
8
  */
9
  class UpdraftPlus_Backup {
10
 
74
 
75
  // Append to this any skipped tables
76
  private $skipped_tables;
77
+
78
+ // When initialised, a boolean
79
+ public $last_storage_instance;
80
+
81
+ // The absolute upper limit that will be considered for a zip batch (in bytes)
82
+ private $zip_batch_ceiling;
83
 
84
+ /**
85
+ * Class constructor
86
+ *
87
+ * @param Array|String $backup_files - files to backup, or (string)'no'
88
+ * @param Integer $altered_since - only backup files altered since this time (UNIX epoch time)
89
+ */
90
  public function __construct($backup_files, $altered_since = -1) {
91
 
92
  global $updraftplus;
155
  $updraftplus->log("Zip engine: ZipArchive (a.k.a. php-zip) is not available or is disabled (will use PclZip (much slower) if needed)");
156
  $this->use_zip_object = 'UpdraftPlus_PclZip';
157
  }
158
+
159
+ $this->zip_batch_ceiling = (defined('UPDRAFTPLUS_ZIP_BATCH_CEILING') && UPDRAFTPLUS_ZIP_BATCH_CEILING > 104857600) ? UPDRAFTPLUS_ZIP_BATCH_CEILING : 200 * 1048576;
160
 
161
  }
162
 
163
+ /**
164
+ * Called by the WP action updraft_report_remotestorage_extrainfo
165
+ *
166
+ * @param String $service
167
+ * @param String $info_html
168
+ * @param String $info_plain
169
+ */
170
  public function report_remotestorage_extrainfo($service, $info_html, $info_plain) {
171
  $this->remotestorage_extrainfo[$service] = array('pretty' => $info_html, 'plain' => $info_plain);
172
  }
179
  * @param String $backup_file_basename Name of backup file
180
  * @param Integer $index Index of zip in the sequence
181
  * @param Integer|Boolean $first_linked_index First linked index in the sequence, or false
182
+ *
183
  * @return Boolean
184
  */
185
  public function create_zip($create_from_dir, $whichone, $backup_file_basename, $index, $first_linked_index = false) {
425
  $this->current_service = $service;
426
 
427
  // Used when deciding whether to delete the local file
428
+ $this->last_storage_instance = ($ind+1 >= count($services) && $instance_id_count+1 >= $total_instance_ids && $errors_before_uploads == $updraftplus->error_count()) ? true : false;
429
+ $log_extra = $this->last_storage_instance ? ' (last)' : '';
 
430
  $updraftplus->log("Cloud backup selection (".($ind+1)."/".count($services)."): ".$service." with instance (".($instance_id_count+1)."/".$total_instance_ids.")".$log_extra);
431
  @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT);
432
 
433
  if ('none' == $service || '' == $service) {
434
+ $updraftplus->log('No remote despatch: user chose no remote backup service');
435
  // Still want to mark as "uploaded", to signal that nothing more needs doing. (Important on incremental runs with no cloud storage).
436
  foreach ($backup_array as $bind => $file) {
437
  if ($updraftplus->is_uploaded($file)) {
447
  $do_prune = array_merge_recursive($do_prune, $this->upload_cloud($remote_obj, $service, $backup_array, ''));
448
  } elseif (!empty($storage_objects_and_ids[$service]['instance_settings'])) {
449
  foreach ($storage_objects_and_ids[$service]['instance_settings'] as $instance_id => $options) {
450
+
451
+ if ($instance_id_count > 0) {
452
+ $this->last_storage_instance = ($ind+1 >= count($services) && $instance_id_count+1 >= $total_instance_ids && $errors_before_uploads == $updraftplus->error_count()) ? true : false;
453
+ $log_extra = $this->last_storage_instance ? ' (last)' : '';
454
+ $updraftplus->log("Cloud backup selection (".($ind+1)."/".count($services)."): ".$service." with instance (".($instance_id_count+1)."/".$total_instance_ids.")".$log_extra);
455
+ }
456
+
457
  // Used for logging by record_upload_chunk()
458
  $this->current_instance = $instance_id;
459
 
461
 
462
  if (1 == $options['instance_enabled']) {
463
  $remote_obj = $storage_objects_and_ids[$service]['object'];
 
464
  $remote_obj->set_options($options, true, $instance_id);
465
  $do_prune = array_merge_recursive($do_prune, $this->upload_cloud($remote_obj, $service, $backup_array, $instance_id));
466
  } else {
467
+ $updraftplus->log("This instance id ($instance_id) is set as inactive.");
468
  }
469
 
470
  $instance_id_count++;
539
  return $do_prune;
540
  }
541
 
542
+ /**
543
+ * Group the backup history into sets for retention processing and indicate the retention rule to apply to each group. This is a 'default' function which just puts them all in together.
544
+ *
545
+ * @param Array $backup_history
546
+ *
547
+ * @return Array
548
+ */
549
  private function group_backups($backup_history) {
550
  return array(array('sets' => $backup_history, 'process_order' => 'keep_newest'));
551
  }
1274
  $updraftplus->log($e->getMessage());
1275
  }
1276
 
1277
+ if (empty($core_tables)) $core_tables = array('terms', 'term_taxonomy', 'termmeta', 'term_relationships', 'commentmeta', 'comments', 'links', 'postmeta', 'posts', 'site', 'sitemeta', 'blogs', 'blogversions', 'blogmeta');
1278
 
1279
  global $updraftplus;
1280
  $na = UpdraftPlus_Manipulation_Functions::str_replace_once($our_table_prefix, '', $a);
2369
  return true;
2370
  }
2371
 
2372
+ if (apply_filters('updraftplus_exclude_directory', false, $fullpath, $use_path_when_storing)) {
2373
  $updraftplus->log("Skip filtered directory: $use_path_when_storing");
2374
  return true;
2375
  }
2402
  $updraftplus->log("Entity excluded by configuration option (extension): $use_stripped");
2403
  } elseif (!empty($this->excluded_prefixes) && $this->is_entity_excluded_by_prefix($e)) {
2404
  $updraftplus->log("Entity excluded by configuration option (prefix): $use_stripped");
2405
+ } elseif (apply_filters('updraftplus_exclude_file', false, $deref, $use_stripped)) {
2406
  $updraftplus->log("Entity excluded by filter: $use_stripped");
2407
  } else {
2408
  $mtime = filemtime($deref);
2610
  $updraftplus->log("Could not open zip file to examine (".$zip->last_error."); will remove: ".basename($examine_zip));
2611
  @unlink($examine_zip);
2612
  } else {
2613
+
2614
+ // Don't put this in the for loop, or the magic __get() method gets repeatedly called every time the loop goes round
2615
  $numfiles = $zip->numFiles;
2616
 
2617
  for ($i=0; $i < $numfiles; $i++) {
2618
  $si = $zip->statIndex($i);
2619
  $name = $si['name'];
2620
+ // Exclude folders
2621
+ if ('/' == substr($name, -1)) continue;
2622
  $this->existing_files[$name] = $si['size'];
2623
  $this->existing_files_rawsize += $si['size'];
2624
  }
2998
  if (false === fwrite($handle, '{"version":'.$version.',"type":"'.$whichone.'",'.$directory.'"listed_levels":"'.$go_to_level.'","contents":{"directories":[')) $updraftplus->log("First write to manifest file failed ($manifest_name)");
2999
 
3000
  // First loop: find out which is the last entry, so that we don't write the comma after it
3001
+ $last_dir_index = false;
3002
  foreach ($this->zipfiles_dirbatched as $index => $dir) {
3003
  if ('all' !== $go_to_level && substr_count($dir, '/') > $go_to_level - 1) continue;
3004
+ $last_dir_index = $index;
3005
  }
3006
 
3007
  // Second loop: write out the entry
3008
  foreach ($this->zipfiles_dirbatched as $index => $dir) {
3009
  if ('all' !== $go_to_level && substr_count($dir, '/') > $go_to_level - 1) continue;
3010
+ fwrite($handle, json_encode($dir).(($index != $last_dir_index) ? ',' : ''));
3011
  }
3012
 
3013
  // Now do the same for files
3014
  fwrite($handle, '],"files":[');
3015
 
3016
  $last_file_index = false;
3017
+ foreach ($this->zipfiles_batched as $source => $store_as) {
3018
+ if ('all' !== $go_to_level && substr_count($store_as, '/') > $go_to_level - 1) continue;
3019
+ $last_file_index = $store_as;
3020
  }
3021
+ foreach ($this->zipfiles_skipped_notaltered as $source => $store_as) {
3022
+ if ('all' !== $go_to_level && substr_count($store_as, '/') > $go_to_level - 1) continue;
3023
+ $last_file_index = $store_as;
 
3024
  }
3025
 
3026
+ foreach ($this->zipfiles_batched as $source => $store_as) {
3027
+ if ('all' !== $go_to_level && substr_count($store_as, '/') > $go_to_level - 1) continue;
3028
+ fwrite($handle, json_encode($store_as).(($store_as != $last_file_index) ? ',' : ''));
 
3029
  }
3030
+
3031
+ foreach ($this->zipfiles_skipped_notaltered as $source => $store_as) {
3032
+ if ('all' !== $go_to_level && substr_count($store_as, '/') > $go_to_level - 1) continue;
3033
+ fwrite($handle, json_encode($store_as).(($store_as != $last_file_index) ? ',' : ''));
3034
  }
3035
 
3036
  fwrite($handle, ']}}');
3296
  $max_time = -1;
3297
  }
3298
 
3299
+ if ($normalised_time_since_began < 6 || ($updraftplus->current_resumption >= 1 && $run_times_known >= 1 && $time_since_began < 0.6*$max_time)) {
3300
 
3301
  // How much can we increase it by?
3302
+ if ($normalised_time_since_began < 6) {
3303
  if ($run_times_known > 0 && $max_time >0) {
3304
+ $new_maxzipbatch = min(floor(max($maxzipbatch*6/$normalised_time_since_began, $maxzipbatch*((0.6*$max_time)/$normalised_time_since_began))), $this->zip_batch_ceiling);
3305
  } else {
3306
  // Maximum of 200MB in a batch
3307
+ $new_maxzipbatch = min(floor($maxzipbatch*6/$normalised_time_since_began), $this->zip_batch_ceiling);
3308
  }
3309
  } else {
3310
  // Use up to 60% of available time
3311
+ $new_maxzipbatch = min(floor($maxzipbatch*((0.6*$max_time)/$normalised_time_since_began)), $this->zip_batch_ceiling);
3312
  }
3313
 
3314
  // Throttle increases - don't increase by more than 2x in one go - ???
class-updraftplus.php CHANGED
@@ -3176,7 +3176,7 @@ class UpdraftPlus {
3176
  * This should be called whenever a file is successfully uploaded
3177
  *
3178
  * @param String $file - full filepath
3179
- * @param boolean $force - mark as successfully uploaded even if not on the last server
3180
  * @return Void
3181
  */
3182
  public function uploaded_file($file, $force = false) {
@@ -3189,7 +3189,7 @@ class UpdraftPlus {
3189
  $instance_id = empty($updraftplus_backup->current_instance) ? '' : $updraftplus_backup->current_instance;
3190
  $shash = $service.(('' == $service) ? '' : '-').$instance_id.(('' == $instance_id) ? '' : '-').md5($file);
3191
 
3192
- if ($force || !empty($updraftplus_backup->last_service)) {
3193
  $this->log("Recording as successfully uploaded: $file");
3194
  $new_jobdata = $this->get_uploaded_jobdata_items($file, $service, $instance_id);
3195
  } else {
@@ -3215,7 +3215,7 @@ class UpdraftPlus {
3215
  // Delete local files immediately if the option is set
3216
  // Where we are only backing up locally, only the "prune" function should do deleting
3217
  $service = $this->jobdata_get('service');
3218
- if (!empty($updraftplus_backup->last_service) && ('' !== $service && ((is_array($service) && count($service)>0 && (count($service) > 1 || ('' !== $service[0] && 'none' !== $service[0]))) || (is_string($service) && 'none' !== $service)))) {
3219
  $this->delete_local($file);
3220
  }
3221
  }
@@ -3577,7 +3577,7 @@ class UpdraftPlus {
3577
 
3578
  // Clear schedule so that we don't stack up scheduled backups
3579
  wp_clear_scheduled_hook('updraft_backup_increments');
3580
- if ('none' == $interval) return 'none';
3581
  $previous_interval = UpdraftPlus_Options::get_updraft_option('updraft_interval_increments');
3582
 
3583
  $valid_schedules = wp_get_schedules();
@@ -3645,7 +3645,7 @@ class UpdraftPlus {
3645
  // index.php is for a sanity check - make sure that we're not somewhere unexpected
3646
  if ((!is_dir($updraft_dir) || !is_file($updraft_dir.'/index.html') || !is_file($updraft_dir.'/.htaccess')) && !is_file($updraft_dir.'/index.php') || !is_file($updraft_dir.'/web.config')) {
3647
  @mkdir($updraft_dir, 0775, true);
3648
- @file_put_contents($updraft_dir.'/index.html', "<html><body><a href=\"https://updraftplus.com\">WordPress backups by UpdraftPlus</a></body></html>");
3649
  if (!is_file($updraft_dir.'/.htaccess')) @file_put_contents($updraft_dir.'/.htaccess', 'deny from all');
3650
  if (!is_file($updraft_dir.'/web.config')) @file_put_contents($updraft_dir.'/web.config', "<configuration>\n<system.webServer>\n<authorization>\n<deny users=\"*\" />\n</authorization>\n</system.webServer>\n</configuration>\n");
3651
  }
@@ -3814,6 +3814,17 @@ class UpdraftPlus {
3814
  return fetch_feed('http://feeds.feedburner.com/updraftplus/');
3815
  }
3816
 
 
 
 
 
 
 
 
 
 
 
 
3817
  /**
3818
  * Analyse a database file and return information about it
3819
  *
@@ -3957,9 +3968,9 @@ class UpdraftPlus {
3957
  if (('https' == $old_siteurl_parsed['scheme'] && 'http' == $actual_siteurl_parsed['scheme']) || ('http' == $old_siteurl_parsed['scheme'] && 'https' == $actual_siteurl_parsed['scheme'])) {
3958
  $powarn .= sprintf(__('This backup set is of this site, but at the time of the backup you were using %s, whereas the site now uses %s.', 'updraftplus'), $old_siteurl_parsed['scheme'], $actual_siteurl_parsed['scheme']);
3959
  if ('https' == $old_siteurl_parsed['scheme']) {
3960
- $powarn .= ' '.apply_filters('updraftplus_https_to_http_additional_warning', sprintf(__('This restoration will work if you still have an SSL certificate (i.e. can use https) to access the site. Otherwise, you will want to use %s to search/replace the site address so that the site can be visited without https.', 'updraftplus'), '<a href="https://updraftplus.com/shop/migrator/">'.__('the migrator add-on', 'updraftplus').'</a>'));
3961
  } else {
3962
- $powarn .= ' '.apply_filters('updraftplus_http_to_https_additional_warning', sprintf(__('As long as your web hosting allows http (i.e. non-SSL access) or will forward requests to https (which is almost always the case), this is no problem. If that is not yet set up, then you should set it up, or use %s so that the non-https links are automatically replaced.', 'updraftplus'), apply_filters('updraftplus_migrator_addon_link', '<a href="https://updraftplus.com/shop/migrator/">'.__('the migrator add-on', 'updraftplus').'</a>')));
3963
  }
3964
  } else {
3965
  $powarn .= apply_filters('updraftplus_dbscan_urlchange_www_append_warning', '');
@@ -3968,10 +3979,10 @@ class UpdraftPlus {
3968
  } else {
3969
  // For completely different site migration
3970
  $info['same_url'] = false;
3971
- $warn[] = apply_filters('updraftplus_dbscan_urlchange', '<a href="https://updraftplus.com/shop/migrator/">'.sprintf(__('This backup set is from a different site (%s) - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work.', 'updraftplus'), htmlspecialchars($old_siteurl.' / '.untrailingslashit(site_url()))).'</a>', $old_siteurl, $res);
3972
  }
3973
  if (!class_exists('UpdraftPlus_Addons_Migrator')) {
3974
- $warn[] .= '<strong><a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/faqs/tell-me-more-about-the-search-and-replace-site-location-in-the-database-option/").'">'.__('You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information', 'updraftplus').'</a></strong>';
3975
  }
3976
  }
3977
 
@@ -3988,7 +3999,7 @@ class UpdraftPlus {
3988
  // Check for should-be migration
3989
  if (!$migration_warning && UpdraftPlus_Manipulation_Functions::normalise_url(home_url()) != UpdraftPlus_Manipulation_Functions::normalise_url($old_home)) {
3990
  $migration_warning = true;
3991
- $powarn = apply_filters('updraftplus_dbscan_urlchange', '<a href="https://updraftplus.com/shop/migrator/">'.sprintf(__('This backup set is from a different site (%s) - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work.', 'updraftplus'), htmlspecialchars($old_home.' / '.home_url())).'</a>', $old_home, $res);
3992
  if (!empty($powarn)) $warn[] = $powarn;
3993
  }
3994
  } elseif (!isset($info['created_by_version']) && preg_match('/^\# Created by UpdraftPlus version ([\d\.]+)/', $buffer, $matches)) {
@@ -4024,7 +4035,7 @@ class UpdraftPlus {
4024
  // $err[] = sprintf(__('Error: %s', 'updraftplus'), __('You are running on WordPress multisite - but your backup is not of a multisite site.', 'updraftplus'));
4025
  // return array($mess, $warn, $err, $info);
4026
  // } else {
4027
- $warn[] = __('You are running on WordPress multisite - but your backup is not of a multisite site.', 'updraftplus').' '.__('It will be imported as a new site.', 'updraftplus').' <a href="https://updraftplus.com/information-on-importing-a-single-site-wordpress-backup-into-a-wordpress-network-i-e-multisite/">'.__('Please read this link for important information on this process.', 'updraftplus').'</a>';
4028
  // }
4029
  // Got the needed code?
4030
  if (!class_exists('UpdraftPlusAddOn_MultiSite') || !class_exists('UpdraftPlus_Addons_Migrator')) {
@@ -4032,7 +4043,7 @@ class UpdraftPlus {
4032
  return array($mess, $warn, $err, $info);
4033
  }
4034
  } elseif (isset($old_siteinfo['multisite']) && $old_siteinfo['multisite'] && !is_multisite()) {
4035
- $warn[] = __('Warning:', 'updraftplus').' '.__('Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible.', 'updraftplus').' <a href="https://codex.wordpress.org/Create_A_Network">'.__('If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite.', 'updraftplus').'</a>';
4036
  }
4037
  } elseif (preg_match('/^([^=]+)=(.*)$/', $matches[1], $kvmatches)) {
4038
  $key = $kvmatches[1];
@@ -4120,7 +4131,7 @@ class UpdraftPlus {
4120
  }
4121
  if ($db_charset_forbidden) {
4122
  $db_unsupported_charset_unique = array_unique($db_unsupported_charset);
4123
- $warn[] = sprintf(_n("The database server that this WordPress site is running on doesn't support the character set (%s) which you are trying to import.", "The database server that this WordPress site is running on doesn't support the character sets (%s) which you are trying to import.", count($db_unsupported_charset_unique), 'updraftplus'), implode(', ', $db_unsupported_charset_unique)).' '.__('You can choose another suitable character set instead and continue with the restoration at your own risk.', 'updraftplus').' <a target="_blank" href="https://updraftplus.com/faqs/implications-changing-tables-character-set/">'.__('Go here for more information.', 'updraftplus').'</a>'.' <a target="_blank" href="https://updraftplus.com/faqs/implications-changing-tables-character-set/">'.__('Go here for more information.', 'updraftplus').'</a>';
4124
  $db_supported_character_sets = array_keys($db_supported_character_sets);
4125
  $similar_type_charset = UpdraftPlus_Manipulation_Functions::get_matching_str_from_array_elems($db_unsupported_charset_unique, $db_supported_character_sets, true);
4126
  if (empty($similar_type_charset)) {
3176
  * This should be called whenever a file is successfully uploaded
3177
  *
3178
  * @param String $file - full filepath
3179
+ * @param Boolean $force - mark as successfully uploaded even if not on the last service
3180
  * @return Void
3181
  */
3182
  public function uploaded_file($file, $force = false) {
3189
  $instance_id = empty($updraftplus_backup->current_instance) ? '' : $updraftplus_backup->current_instance;
3190
  $shash = $service.(('' == $service) ? '' : '-').$instance_id.(('' == $instance_id) ? '' : '-').md5($file);
3191
 
3192
+ if ($force || !empty($updraftplus_backup->last_storage_instance)) {
3193
  $this->log("Recording as successfully uploaded: $file");
3194
  $new_jobdata = $this->get_uploaded_jobdata_items($file, $service, $instance_id);
3195
  } else {
3215
  // Delete local files immediately if the option is set
3216
  // Where we are only backing up locally, only the "prune" function should do deleting
3217
  $service = $this->jobdata_get('service');
3218
+ if (!empty($updraftplus_backup->last_storage_instance) && ('' !== $service && ((is_array($service) && count($service)>0 && (count($service) > 1 || (array('') !== $service && array('none') !== $service))) || (is_string($service) && 'none' !== $service)))) {
3219
  $this->delete_local($file);
3220
  }
3221
  }
3577
 
3578
  // Clear schedule so that we don't stack up scheduled backups
3579
  wp_clear_scheduled_hook('updraft_backup_increments');
3580
+ if ('none' == $interval || empty($interval)) return 'none';
3581
  $previous_interval = UpdraftPlus_Options::get_updraft_option('updraft_interval_increments');
3582
 
3583
  $valid_schedules = wp_get_schedules();
3645
  // index.php is for a sanity check - make sure that we're not somewhere unexpected
3646
  if ((!is_dir($updraft_dir) || !is_file($updraft_dir.'/index.html') || !is_file($updraft_dir.'/.htaccess')) && !is_file($updraft_dir.'/index.php') || !is_file($updraft_dir.'/web.config')) {
3647
  @mkdir($updraft_dir, 0775, true);
3648
+ @file_put_contents($updraft_dir.'/index.html', "<html><body><a href=\"https://updraftplus.com\" target=\"_blank\">WordPress backups by UpdraftPlus</a></body></html>");
3649
  if (!is_file($updraft_dir.'/.htaccess')) @file_put_contents($updraft_dir.'/.htaccess', 'deny from all');
3650
  if (!is_file($updraft_dir.'/web.config')) @file_put_contents($updraft_dir.'/web.config', "<configuration>\n<system.webServer>\n<authorization>\n<deny users=\"*\" />\n</authorization>\n</system.webServer>\n</configuration>\n");
3651
  }
3814
  return fetch_feed('http://feeds.feedburner.com/updraftplus/');
3815
  }
3816
 
3817
+ /**
3818
+ * Sets up the nonce, basic job data, opens a log file for a new restore job, and makes sure that the Updraft_Restorer class is available
3819
+ */
3820
+ public function initiate_restore_job() {
3821
+ $this->backup_time_nonce();
3822
+ $this->jobdata_set('job_type', 'restore');
3823
+ $this->jobdata_set('job_time_ms', $this->job_time_ms);
3824
+ $this->logfile_open($this->nonce);
3825
+ if (!class_exists('Updraft_Restorer')) include_once(UPDRAFTPLUS_DIR.'/restorer.php');
3826
+ }
3827
+
3828
  /**
3829
  * Analyse a database file and return information about it
3830
  *
3968
  if (('https' == $old_siteurl_parsed['scheme'] && 'http' == $actual_siteurl_parsed['scheme']) || ('http' == $old_siteurl_parsed['scheme'] && 'https' == $actual_siteurl_parsed['scheme'])) {
3969
  $powarn .= sprintf(__('This backup set is of this site, but at the time of the backup you were using %s, whereas the site now uses %s.', 'updraftplus'), $old_siteurl_parsed['scheme'], $actual_siteurl_parsed['scheme']);
3970
  if ('https' == $old_siteurl_parsed['scheme']) {
3971
+ $powarn .= ' '.apply_filters('updraftplus_https_to_http_additional_warning', sprintf(__('This restoration will work if you still have an SSL certificate (i.e. can use https) to access the site. Otherwise, you will want to use %s to search/replace the site address so that the site can be visited without https.', 'updraftplus'), '<a href="https://updraftplus.com/shop/migrator/" target="_blank">'.__('the migrator add-on', 'updraftplus').'</a>'));
3972
  } else {
3973
+ $powarn .= ' '.apply_filters('updraftplus_http_to_https_additional_warning', sprintf(__('As long as your web hosting allows http (i.e. non-SSL access) or will forward requests to https (which is almost always the case), this is no problem. If that is not yet set up, then you should set it up, or use %s so that the non-https links are automatically replaced.', 'updraftplus'), apply_filters('updraftplus_migrator_addon_link', '<a href="https://updraftplus.com/shop/migrator/" target="_blank">'.__('the migrator add-on', 'updraftplus').'</a>')));
3974
  }
3975
  } else {
3976
  $powarn .= apply_filters('updraftplus_dbscan_urlchange_www_append_warning', '');
3979
  } else {
3980
  // For completely different site migration
3981
  $info['same_url'] = false;
3982
+ $warn[] = apply_filters('updraftplus_dbscan_urlchange', '<a href="https://updraftplus.com/shop/migrator/" target="_blank">'.sprintf(__('This backup set is from a different site (%s) - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work.', 'updraftplus'), htmlspecialchars($old_siteurl.' / '.untrailingslashit(site_url()))).'</a>', $old_siteurl, $res);
3983
  }
3984
  if (!class_exists('UpdraftPlus_Addons_Migrator')) {
3985
+ $warn[] .= '<strong><a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/faqs/tell-me-more-about-the-search-and-replace-site-location-in-the-database-option/").'" target="_blank">'.__('You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information', 'updraftplus').'</a></strong>';
3986
  }
3987
  }
3988
 
3999
  // Check for should-be migration
4000
  if (!$migration_warning && UpdraftPlus_Manipulation_Functions::normalise_url(home_url()) != UpdraftPlus_Manipulation_Functions::normalise_url($old_home)) {
4001
  $migration_warning = true;
4002
+ $powarn = apply_filters('updraftplus_dbscan_urlchange', '<a href="https://updraftplus.com/shop/migrator/" target="_blank">'.sprintf(__('This backup set is from a different site (%s) - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work.', 'updraftplus'), htmlspecialchars($old_home.' / '.home_url())).'</a>', $old_home, $res);
4003
  if (!empty($powarn)) $warn[] = $powarn;
4004
  }
4005
  } elseif (!isset($info['created_by_version']) && preg_match('/^\# Created by UpdraftPlus version ([\d\.]+)/', $buffer, $matches)) {
4035
  // $err[] = sprintf(__('Error: %s', 'updraftplus'), __('You are running on WordPress multisite - but your backup is not of a multisite site.', 'updraftplus'));
4036
  // return array($mess, $warn, $err, $info);
4037
  // } else {
4038
+ $warn[] = __('You are running on WordPress multisite - but your backup is not of a multisite site.', 'updraftplus').' '.__('It will be imported as a new site.', 'updraftplus').' <a href="https://updraftplus.com/information-on-importing-a-single-site-wordpress-backup-into-a-wordpress-network-i-e-multisite/" target="_blank">'.__('Please read this link for important information on this process.', 'updraftplus').'</a>';
4039
  // }
4040
  // Got the needed code?
4041
  if (!class_exists('UpdraftPlusAddOn_MultiSite') || !class_exists('UpdraftPlus_Addons_Migrator')) {
4043
  return array($mess, $warn, $err, $info);
4044
  }
4045
  } elseif (isset($old_siteinfo['multisite']) && $old_siteinfo['multisite'] && !is_multisite()) {
4046
+ $warn[] = __('Warning:', 'updraftplus').' '.__('Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible.', 'updraftplus').' <a href="https://codex.wordpress.org/Create_A_Network" target="_blank">'.__('If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite.', 'updraftplus').'</a>';
4047
  }
4048
  } elseif (preg_match('/^([^=]+)=(.*)$/', $matches[1], $kvmatches)) {
4049
  $key = $kvmatches[1];
4131
  }
4132
  if ($db_charset_forbidden) {
4133
  $db_unsupported_charset_unique = array_unique($db_unsupported_charset);
4134
+ $warn[] = sprintf(_n("The database server that this WordPress site is running on doesn't support the character set (%s) which you are trying to import.", "The database server that this WordPress site is running on doesn't support the character sets (%s) which you are trying to import.", count($db_unsupported_charset_unique), 'updraftplus'), implode(', ', $db_unsupported_charset_unique)).' '.__('You can choose another suitable character set instead and continue with the restoration at your own risk.', 'updraftplus').' <a target="_blank" href="https://updraftplus.com/faqs/implications-changing-tables-character-set/" target="_blank">'.__('Go here for more information.', 'updraftplus').'</a>'.' <a target="_blank" href="https://updraftplus.com/faqs/implications-changing-tables-character-set/" target="_blank">'.__('Go here for more information.', 'updraftplus').'</a>';
4135
  $db_supported_character_sets = array_keys($db_supported_character_sets);
4136
  $similar_type_charset = UpdraftPlus_Manipulation_Functions::get_matching_str_from_array_elems($db_unsupported_charset_unique, $db_supported_character_sets, true);
4137
  if (empty($similar_type_charset)) {
css/updraftplus-admin.css CHANGED
@@ -281,7 +281,6 @@ span.tokens-number {
281
  .updraft_migrate_widget_temporary_clone_show_stage0 .dashicons {
282
  text-decoration: none;
283
  font-size: 20px;
284
- line-height: inherit;
285
  }
286
 
287
  .opened .button.updraft_migrate_widget_temporary_clone_show_stage0 {
@@ -2182,11 +2181,16 @@ small.ud_massactions-tip {
2182
  /* Add-ons */
2183
  /* Want to fix the WordPress icons so that they fit inline with the text, and don't push everything out of place. */
2184
 
2185
- .dashicons {
2186
  line-height: inherit;
2187
  font-size: inherit;
2188
  }
2189
 
 
 
 
 
 
2190
  .addon-logo-150 {
2191
  margin-left: 30px;
2192
  margin-top: 33px;
281
  .updraft_migrate_widget_temporary_clone_show_stage0 .dashicons {
282
  text-decoration: none;
283
  font-size: 20px;
 
284
  }
285
 
286
  .opened .button.updraft_migrate_widget_temporary_clone_show_stage0 {
2181
  /* Add-ons */
2182
  /* Want to fix the WordPress icons so that they fit inline with the text, and don't push everything out of place. */
2183
 
2184
+ #updraft-wrap .dashicons.dashicons-adapt-size {
2185
  line-height: inherit;
2186
  font-size: inherit;
2187
  }
2188
 
2189
+ #updraft-wrap .button span.dashicons:not(.dashicons-adapt-size) {
2190
+ vertical-align: middle;
2191
+ margin-top: -3px;
2192
+ }
2193
+
2194
  .addon-logo-150 {
2195
  margin-left: 30px;
2196
  margin-top: 33px;
css/updraftplus-admin.min.css CHANGED
@@ -1,2 +1,2 @@
1
- @keyframes udp_blink{from{opacity:1;transform:scale(1)}to{opacity:.4;transform:scale(0.85)}}.max-width-600{max-width:600px}.width-900{max-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}.udpdraft__lifted{box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}#updraft-wrap a .dashicons{text-decoration:none}.updraft-field-description,table.form-table td p.updraft-field-description{font-size:90%;line-height:1.2;font-style:italic;margin-bottom:5px}label.updraft_checkbox{display:block;margin-bottom:4px;margin-left:26px}label.updraft_checkbox>input[type=checkbox]{margin-left:-25px}div[id*="updraft_include_"]{margin-bottom:9px}.settings_page_updraftplus input[type="file"]{border:0}.settings_page_updraftplus .wipe_settings{padding-bottom:10px}.settings_page_updraftplus input[type="text"]{font-size:14px}.settings_page_updraftplus select{border-radius:4px;max-width:100%}input.updraft_input--wide,textarea.updraft_input--wide{max-width:442px;width:100%}#updraft-wrap .button-large{font-size:1.3em}.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}p.updraftplus-option{margin-top:0;margin-bottom:5px}p.updraftplus-option-inline{display:inline-block;padding-right:20px}span.updraftplus-option-label{display:block}#updraft-navtab-migrate-content .postbox{padding:18px}.updraftclone-main-row{display:-ms-flexbox;display:flex}.updraftclone-tokens{background:#f5f5f5;padding:20px;border-radius:10px;margin-right:20px;max-width:300px}.updraftclone-tokens p{margin:0}.updraftclone_action_box{background:#f5f5f5;padding:20px;border-radius:10px;-ms-flex:1;flex:1}.updraftclone_action_box p:first-child{margin-top:0}.updraftclone_action_box p:last-child{margin-bottom:0}span.tokens-number{font-size:46px;display:block}.button.updraft_migrate_widget_temporary_clone_show_stage0{display:none;position:absolute;right:0;top:0;height:100%;border-left:1px solid #CCC;padding-left:10px;padding-right:10px}.updraft_migrate_widget_temporary_clone_stage0_container{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.updraft_migrate_widget_temporary_clone_stage0_box{margin-right:20px;width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.updraft_migrate_widget_temporary_clone_stage0_box iframe,.updraft_migrate_widget_temporary_clone_stage0_box a.udp-replace-with-iframe--js{float:none}@media(min-width:1024px){.updraft_migrate_widget_temporary_clone_stage0_container{-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.updraft_migrate_widget_temporary_clone_stage0_box{-ms-flex-preferred-size:45%;flex-basis:45%}.updraft_migrate_widget_temporary_clone_stage0_box iframe,.updraft_migrate_widget_temporary_clone_stage0_box a.udp-replace-with-iframe--js{float:right}}.updraft_migrate_widget_temporary_clone_show_stage0 .dashicons{text-decoration:none;font-size:20px;line-height:inherit}.opened .button.updraft_migrate_widget_temporary_clone_show_stage0{display:inline-block}.opened .updraft_migrate_widget_temporary_clone_stage0{background:#f5f5f5;padding:20px;border-radius:8px;margin-bottom:21px}.clone-list{clear:both;width:100%;margin-top:40px}.clone-list table{width:100%;text-align:left}.clone-list table tr th{background:#e4e4e4}.clone-list table tr td{background:#f5f5f5;word-break:break-word}.clone-list table tr:nth-child(odd) td{background:#fafafa}.clone-list table td,.clone-list table th{padding:6px}.updraftplus-clone .updraft_row{padding-left:0;padding-right:0}button#updraft_migrate_createclone+.updraftplus_spinner{margin-top:13px}.button.button-hero.updraftclone_show_step_1{white-space:normal;height:auto;line-height:14px;padding-top:10px;padding-bottom:10px}.button.button-hero.updraftclone_show_step_1 span.dashicons{height:auto}.updraftplus_clone_status{color:red}a.updraft_migrate_add_site--trigger span.dashicons{text-decoration:none}.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}#updraft_migrate_tab_main{padding:8px}.updraft_migrate_widget_module_content{background:#FFF;border-radius:0;position:relative}body.js #updraft_migrate .updraft_migrate_widget_module_content{display:none}.updraft_migrate_widget_module_content>h3,div[class*="updraft_migrate_widget_temporary_clone_stage"]>h3{margin-top:0}.updraft_migrate_widget_module_content header{position:relative;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-ms-grid-column-align:center;justify-items:center;margin-top:-18px;margin-left:-18px;margin-right:-18px;margin-bottom:15px;border-bottom:1px solid #CCC}.updraft_migrate_widget_module_content header h3,.updraft_migrate_widget_module_content header button.button.close{padding:10px;line-height:20px;height:auto;margin:0}.updraft_migrate_widget_module_content button.button.close{text-decoration:none;padding-left:5px;border-right:1px solid #CCC}.updraft_migrate_widget_module_content button.button.close .dashicons{margin-top:1px}.updraft_migrate_widget_module_content header h3{margin:0}.updraft_migrate_intro button.button.button-primary.button-hero{max-width:235px;word-wrap:normal;white-space:normal;line-height:1;height:auto;padding-top:13px;padding-bottom:13px;text-align:left;position:relative;margin-right:10px;margin-bottom:10px}.updraft_migrate_intro button.button.button-primary.button-hero .dashicons{position:absolute;left:10px;top:calc(50% - 8px)}#updraft_migrate .ui-widget-content a{color:#1c94c4}#updraft-wrap .ui-accordion .ui-accordion-header{background:#f6f6f6;margin:0;border-radius:0;padding-left:.5em;padding-right:.7em}#updraft-wrap .ui-widget{font-family:inherit}.ui-accordion-header .ui-accordion-header-icon.ui-icon-caret-1-w{background-position:-96px 0}.ui-accordion-header .ui-accordion-header-icon.ui-icon-caret-1-s{background-position:-64px 0}#updraft-wrap .ui-accordion .ui-accordion-header .ui-accordion-header-icon{left:auto;right:5px}#updraft-wrap .ui-accordion .ui-accordion-header:focus{outline:0;box-shadow:0 0 0 1px rgba(91,157,217,0.22),0 0 2px 1px rgba(30,140,190,0.3);background:#FFF}#updraft-wrap .ui-accordion .ui-accordion-header:focus .dashicons{color:#0572aa;opacity:1}#updraft-wrap .ui-accordion .ui-accordion-header.ui-state-active{background:#f6f6f6;border-bottom:2px solid #0572aa;box-shadow:1px 6px 12px -5px rgba(0,0,0,0.3)}#updraft-wrap .ui-accordion .ui-accordion-header.ui-state-active:focus{box-shadow:1px 6px 12px -5px rgba(0,0,0,0.3),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#updraft-wrap .ui-accordion .ui-accordion-header:not(:first-child){border-top:0}#updraft-wrap .ui-accordion .ui-accordion-header .dashicons{opacity:.4;margin-right:10px}#updraft-wrap .ui-accordion .ui-accordion-header:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);z-index:1}.updraft_next_scheduled_backups_wrapper{display:-ms-flexbox;display:flex;background:#FFF;-ms-grid-column-align:center;justify-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.updraft_next_scheduled_backups_wrapper>div{width:50%;background:#FFF;height:auto;padding:33px;box-sizing:border-box}.updraft_backup_btn_wrapper{text-align:center;border-left:1px solid #f1f1f1;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.incremental-backups-only{display:none}.incremental-free-only{display:none}.incremental-free-only p{padding:5px;background:rgba(255,0,0,0.06);border:1px solid #bfbfbf}#updraft-delete-waitwarning span.spinner{visibility:visible;float:none;margin:0;margin-right:10px}button#updraft-backupnow-button .spinner,button#updraft-backupnow-button .dashicons-yes{display:none}button#updraft-backupnow-button.loading .spinner{display:inline-block;visibility:visible;margin-top:13px;margin-right:0}button#updraft-backupnow-button.loading{background-color:#efefef;border-color:#CCC;text-shadow:0 -1px 1px #bbc3c7,1px 0 1px #bbc3c7,0 1px 1px #bbc3c7,-1px 0 1px #bbc3c7;box-shadow:none}button#updraft-backupnow-button.finished .dashicons-yes{display:inline-block;visibility:visible;font-size:42px;margin-right:0;margin-top:2px}.updraft_next_scheduled_entity{width:50%;display:inline-block;float:left}.updraft_next_scheduled_entity .dashicons{color:#CCC;font-size:20px}.updraft_next_scheduled_entity strong{font-size:20px}.updraft_next_scheduled_heading{margin-bottom:10px}.updraft_next_scheduled_date_time{color:#46a84b}.updraft_time_now_wrapper{margin-top:68px;width:100%}.updraft_time_now_label,.updraft_time_now{display:inline-block;padding:7px}.updraft_time_now_label{background:#b7b7b7;border-top-left-radius:4px;border-bottom-left-radius:4px;color:#FFF;margin-right:0;text-shadow:0 1px 2px rgba(0,0,0,0.4)}.updraft_time_now{background:#f1f1f1;border-top-right-radius:4px;border-bottom-right-radius:4px;margin-left:-3px}#updraft_lastlogmessagerow{margin:6px 0}#updraft_lastlogmessagerow{clear:both;padding:.25px 0}#updraft_lastlogmessagerow .updraft-log-link{float:right;margin-top:-2.5em;margin-right:2px}#updraft_lastlogmessagerow>div{clear:both;background:#FFF;padding:18px}#updraft_activejobs_table{overflow:hidden;width:100%;background:#fafafa;padding:0}.updraft_requeststart{padding:15px 33px;text-align:center}.updraft_requeststart .spinner{visibility:visible;float:none;vertical-align:middle;margin-top:-2px}a.updraft_jobinfo_delete.disabled{opacity:.4;color:inherit;text-decoration:none}.updraft_row{clear:both;transition:.3s all;padding:15px 33px}.updraft_row.deleting{opacity:.4}.updraft_existing_backups_count{padding:2px 8px;font-size:12px;background:#ca4a1e;color:#FFF;font-weight:bold;border-radius:10px}.form-table .existing-backups-table input[type="checkbox"]{border-radius:0}.form-table .existing-backups-table .check-column{width:40px;padding:0;padding-top:8px}.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,#updraft-delete-waitwarning>.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%}span#updraft_lastlogcontainer{word-break:break-all}.stored_icon{height:1.3em;position:relative;top:.2em}.backup_date_label>*{vertical-align:middle}.backup_date_label .dashicons{font-size:18px}.backup_date_label .clear-right{clear:right}.existing-backups-table .backup_date_label>div,.existing-backups-table .backup_date_label span>div{font-weight:bold}.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_exclude_container,.updraft_include_container{margin-left:24px;margin-top:5px;margin-bottom:10px;padding:15px;border:1px solid #DDD}label.updraft-exclude-label{font-weight:500;margin-bottom:5px;display:block}.updraft_add_exclude_item,#updraft_include_more_paths_another{display:inline-block;margin-top:10px}input.updraft_exclude_entity_field,.form-table td input.updraft_exclude_entity_field,.updraftplus-morefiles-row input[type=text]{width:calc(100% - 70px);max-width:400px}@media screen and (max-width:782px){.form-table td input.updraft_exclude_entity_field,.form-table td .updraftplus-morefiles-row input[type=text]{display:inline-block}}.updraft_exclude_entity_delete.dashicons,.updraft_exclude_entity_edit.dashicons,.updraft_exclude_entity_update.dashicons,.updraftplus-morefiles-row a.dashicons{margin-top:2px;font-size:20px;box-shadow:none;line-height:1;padding:3px;margin-right:4px}.updraft_exclude_entity_delete,.updraft_exclude_entity_delete:hover,.updraftplus-morefiles-row-delete{color:#ff6347}.updraft_exclude_entity_update.dashicons,.updraft_exclude_entity_update.dashicons:hover{color:#008000;font-weight:bold;font-size:22px;margin-left:4px}.updraft_exclude_entity_edit{margin-left:4px}.updraft_exclude_entity_update.is-active ~ .updraft_exclude_entity_delete{display:none}.updraft-exclude-panel-heading{margin-bottom:8px}.updraft-exclude-panel-heading h3{margin:.5em 0 .5em 0}.updraft-exclude-submit.button-primary{margin-top:5px}.updraft_exclude_actions_list{font-weight:bold}.updraft-exclude-link{cursor:pointer}#updraft_include_more_options{padding-left:25px}#updraft_report_cell .updraft_reportbox,.updraft_small_box{padding:12px;margin:8px 0;border:1px solid #CCC;position:relative}#updraft_report_cell button.updraft_reportbox_delete,.updraft_box_delete_button,.updraft_small_box .updraft_box_delete_button{padding:4px;padding-top:6px;border:0;background:transparent;position:absolute;top:4px;right:4px;cursor:pointer}#updraft_report_cell button.updraft_reportbox_delete:hover{color:#de3c3c}a.updraft_report_another .dashicons{text-decoration:none;margin-top:2px}.updraft_report_dbbackup.updraft_report_disabled{color:#CCC}#updraft-navtab-settings-content .updraft-test-button{font-size:18px !important}#updraft_report_cell .updraft_report_email{display:block;width:calc(100% - 50px);margin-bottom:9px}#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,#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected td{background-color:#efefef}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected:nth-child(even) td{background-color:#e8e8e8}.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}tr[class*="_updraft_remote_storage_border"]{border-top:1px solid #CCC}.updraft_multi_storage_options{float:right;clear:right;margin-bottom:5px !important}.updraft_toggle_instance_label{vertical-align:top !important}.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,.onedrive_folder_error{color:red}.updraft_jstree .jstree-container-ul>.jstree-node,#updraft_more_files_jstree .jstree-container-ul>.jstree-node{background:transparent}.updraft_jstree .jstree-container-ul>.jstree-open>.jstree-ocl,#updraft_more_files_jstree .jstree-container-ul>.jstree-open>.jstree-ocl{background-position:-36px -4px}.updraft_jstree .jstree-container-ul>.jstree-closed>.jstree-ocl,#updraft_more_files_jstree .jstree-container-ul>.jstree-closed>.jstree-ocl{background-position:-4px -4px}.updraft_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_jstree_info_container{position:relative;height:auto;width:100%;border:1px dotted;margin-bottom:5px}.updraft_jstree_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_exclude_files_folders_jstree{max-height:200px;overflow-y:scroll}.updraft_jstree{position:relative;border:1px dotted;height:80%;width:100%;overflow:auto}#updraft_more_files_container{position:relative;display:none;width:100%;border:1px solid #CCC;background:#fafafa;margin-bottom:5px;margin-top:4px;box-shadow:0 5px 8px rgba(0,0,0,0.1)}div#updraft_more_files_container::before{content:' ';width:11px;height:11px;display:block;background:#fafafa;position:absolute;top:0;left:20px;border-top:1px solid #CCC;border-left:1px solid #CCC;transform:translatey(-7px) rotate(45deg)}input.updraft_more_path_editing{border-color:#0285ba}input.updraft_more_path_editing ~ a.dashicons{display:none}#updraft_jstree_buttons{padding:10px;background:#e6e6e6}#updraft_jstree_container{height:300px;width:100%;overflow:auto}#updraft_more_files_container button{line-height:20px}#updraft_parent_directory{margin:10px 10px 4px 10px;padding-left:3px}#updraft_jstree_confirm,#updraft_jstree_cancel{display:none}.updraftplus-morefiles-row-delete,.updraftplus-morefiles-row-edit{cursor:pointer}#updraft-wrap .form-table th{width:230px}#updraft-wrap .form-table .existing-backups-table th{width:auto}.updraft-viewlogdiv form{margin:0;padding:0}.updraft-viewlogdiv{display:inline-block}.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 input:hover,.updraft-viewlogdiv a:hover{color:#FFF;cursor:pointer}.button.button-remove{color:white;background-color:#de3c3c;border-color:#c00000;box-shadow:0 1px 0 #c10100}.button.button-remove:hover,.button.button-remove:focus{border-color:#C00;color:#FFF;background:#C00}body.admin-color-midnight .button.button-remove{color:#de3c3c;background-color:#f7f7f7;border-color:#CCC;box-shadow:0 1px 0 #CCC}body.admin-color-midnight .button.button-remove:hover,body.admin-color-midnight .button.button-remove:focus{border-color:#ba281f}body.admin-color-midnight .button.button-remove:focus{box-shadow:inherit;box-shadow:0 0 3px rgba(0,115,170,0.8)}.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:1px;background:#ececec;border:solid 1px #CCC;margin:4px 0}.updraft_premium section{margin-bottom:20px}.updraft_premium_cta{background:#FFF;margin-top:30px;padding:0;border-left:4px solid #db6a03}.updraft_premium_cta a{font-weight:normal}.updraft_premium_cta a.button.button-primary.button-hero{font-size:1.3em;letter-spacing:.03rem;text-transform:uppercase}.updraft_premium_cta__top{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:18px 30px}.updraft_premium_cta__bottom{background:#f9f9f9;padding:5px 30px}.updraft_premium_cta__summary{margin-right:60px}.updraft_premium_cta h2{font-size:28px;font-weight:200;line-height:1;margin:0;margin-bottom:5px;letter-spacing:.05rem;color:#db6a03}.updraft_premium_cta ul li::after{color:#CCC}@media only screen and (max-width:768px){.updraft_premium_cta__top{-ms-flex-direction:column;flex-direction:column;text-align:center;-ms-flex-align:center;align-items:center}.updraft_premium_cta__summary{margin-right:0;margin-bottom:30px}}.udp-box{background:#FFF;padding:20px;box-shadow:0 1px 2px rgba(0,0,0,0.1);text-align:center}.udp-box h3{margin:0}.udp-box__heading{-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;background:0;box-shadow:none}.updraft-more-plugins{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:justify;justify-content:space-between;flex-wrap:wrap}.updraft-more-plugins img{max-width:200px;width:100%;display:inline-block}.updraft-more-plugins .udp-box{box-sizing:border-box;width:24%}.updraft-more-plugins .udp-box p:last-child{margin-bottom:0;padding-bottom:0}.updraft_premium_description_list{text-align:left;margin:0;font-size:12px}ul.updraft_premium_description_list,ul#updraft_restore_warnings{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-child::after{content:""}.updraft_feature_cell{background-color:#f7d9c9 !important;padding:5px 10px}.updraftplus_com_login_status,.updraftplus_com_key_status{display:none;border-left-color:#dc3232 !important;background:#FFF;border-left:4px solid #FFF;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 15px 0;padding:5px 12px}.updraft_feat_table{border:0;border-collapse:collapse;font-size:120%;background-color:white;text-align:center}.updraft_feat_th,.updraft_feat_table td{border:1px solid #f1f1f1;border-collapse:collapse;font-size:120%;background-color:white;text-align:center;padding:15px}.updraft_feat_table td{border-bottom-width:4px}.updraft_feat_table td:first-child{border-left:0}.updraft_feat_table td:last-child{border-right:0}.updraft_feat_table tr:last-child td{border-bottom:0}.updraft_feat_table td:nth-child(2),.updraft_feat_table td:nth-child(3){background-color:rgba(241,241,241,0.38);width:190px}.updraft_feat_table__header td img{display:block;margin:0 auto}.updraft_feat_table__header td{text-align:center}.updraft_feat_table .installed{font-size:14px}.updraft_feat_table p{padding:0 10px;margin:5px 0;font-size:13px}.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}.ud_downloadstatus__close{border:0;background:transparent;width:auto;font-size:20px;padding:0;cursor:pointer}#filelist .fileprogress,#filelist2 .fileprogress,.ud_downloadstatus .dlfileprogress,#ud_downloadstatus2 .dlfileprogress{width:0;background:#0572aa;height:8px}.ud_downloadstatus .raw,#ud_downloadstatus2 .raw{margin-top:8px;clear:left}.ud_downloadstatus .file,#ud_downloadstatus2 .file{margin-top:8px}div[class^="updraftplus_downloader_container_"]{padding:10px}tr.updraftplusmethod h3{margin:0}tr.updraftplusmethod img{max-width:100%}#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;text-decoration:none;display:inline-block}#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}.blockUI.blockOverlay.ui-widget-overlay{background:#000}.updraft_success_popup{text-align:center;padding-bottom:30px}.updraft_success_popup>.dashicons{font-size:100px;width:100px;height:100px;line-height:100px;padding:0;border-radius:50%;margin-top:30px;display:block;margin-left:auto;margin-right:auto;background:#e2e6e5}.updraft_success_popup>.dashicons.dashicons-yes{text-indent:-5px}.updraft_success_popup.success>.dashicons{color:green}.updraft_success_popup.warning>.dashicons{color:#888}.updraft_success_popup--message{padding:20px}.button.updraft-close-overlay .dashicons{text-decoration:none;font-size:20px;margin-left:-5px;padding:0}.updraft_saving_popup img{animation-name:udp_blink;animation-duration:610ms;animation-iteration-count:infinite;animation-direction:alternate;animation-timing-function:ease-out}.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}.updraft_all-files{color:blue}.multisite-advert-width{width:800px}.updraft_settings_sectionheading{margin-top:6px}.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_activejobsrow th{max-width:112px;margin:0;padding:13px 0 0 0}#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}.download-backups .ud-whitespace-warning,.download-backups .ud-bom-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{margin:16px 0}.download-backups .upload{max-width:610px}.download-backups #plupload-upload-ui{width:100%}.ud_downloadstatus{padding:10px 0}#ud_massactions,#updraft-delete-waitwarning{padding:14px;background:#f1f1f1;position:absolute;left:0;top:100%}#ud_massactions>*,#updraft-delete-waitwarning>*{vertical-align:middle}#ud_massactions .updraftplus-remove{display:inline-block;margin-right:0}#ud_massactions .updraftplus-remove a{text-decoration:none}#ud_massactions .updraft-viewlogdiv a{text-decoration:none;position:relative}small.ud_massactions-tip{display:inline-block;opacity:.5;font-style:italic;margin-left:20px}#updraft-navtab-backups-content .updraft_existing_backups{margin-bottom:35px;position:relative}#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;max-width:140px}.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{width:100%;text-align:center;padding:33px}.job-id{margin-top:0;margin-bottom:8px}.next-resumption{font-weight:bold}.updraft_percentage{z-index:-1;position:absolute;left:0;top:0;text-align:center;background-color:#1d8ec2;transition:width .3s}.curstage{z-index:1;border-radius:2px;margin-top:8px;width:100%;height:26px;line-height:26px;position:relative;text-align:center;font-style:italic;color:#FFF;background-color:#b7b7b7;text-shadow:0 1px 2px rgba(0,0,0,0.3)}.curstage-info{display:inline-block;z-index:2}.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}.updraft_existing_backups_wrapper{margin-top:20px;border-top:1px solid #DDD}.updraft-no-backups-msg{text-align:center}.tr-bottom-4{margin-bottom:4px}.existing-backups-table th{padding:8px 10px}.form-table .backup-date{width:172px}.form-table .backup-data{width:426px}.form-table .updraft_backup_actions{width:272px}.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}.updraftplus-upload{margin-right:6px;float:left;clear:none}.before-restore-button{padding:1px;margin:0}.before-restore-button div{float:none;display:inline-block}.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_delete_old_dirs_pagediv{padding-bottom:10px}.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:first-child{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}.updraftcentral_wizard_option{width:45%;float:left;text-align:center}.updraftcentral_wizard_option label{margin-bottom:8px}#updraftcentral_keys_table{display:none}.create_key_container{border:1px solid;border-radius:4px;padding:0 0 6px 6px;margin-bottom:8px}.updraftcentral_cloud_connect{border-radius:4px;border:1px solid #000;padding:0 20px;margin-top:30px;background-color:#FFF}.updraftcentral_cloud_error{border:1px solid #000;padding:3px 10px;border-left:3px solid #F00;background-color:#FFF;margin-bottom:10px}.updraftcentral_cloud_info{border:1px solid #000;padding:3px 10px;border-left:3px solid #ef8f31;background-color:#FFF;margin-bottom:10px}.updraftplus_spinner.spinner{padding-left:25px;float:none}.updraftplus_spinner.spinner.visible{visibility:visible}.updraftcentral_cloud_notices .updraftplus_spinner{margin-top:-5px}.updraftcentral-subheading{font-size:14px;margin-top:-10px;margin-bottom:20px}#updraftcentral_cloud_form input#email,#updraftcentral_cloud_form input#password{min-width:250px}.updraftcentral-data-consent{font-size:13px;margin-bottom:10px}.updraftcentral_cloud_wizard_image{float:left;min-width:100px;margin-right:25px}.updraftcentral_cloud_wizard{float:left}.updraftcentral_cloud_clear{clear:both}.updraftplus-settings-footer{margin-top:30px}.updraftplus-top-menu{padding:.5em}#updraft_inpage_backup #updraft_activejobs_table{background:transparent}#updraft_inpage_backup #updraft_lastlogmessagerow .updraft-log-link{float:none}#updraft_inpage_backup #updraft_activejobsrow .updraft_row{-ms-flex-direction:column;flex-direction:column;padding-left:20px;padding-right:20px}#updraft_inpage_backup #updraft_activejobsrow .updraft_progress_container{width:100%}#updraft_inpage_backup #updraft_activejobs_table{overflow:inherit}#updraft_inpage_backup span#updraft_lastlogcontainer{padding:18px;background:#fafafa;display:block;font-size:90%;box-shadow:0 1px 2px rgba(0,0,0,0.1)}#updraft_inpage_backup div#updraft_activejobsrow{background:#fafafa;box-shadow:0 1px 2px rgba(0,0,0,0.1)}#updraft_inpage_backup #updraft_lastlogmessagerow>div{background:transparent;padding:0}#updraft_inpage_backup .last-message>strong{display:block;margin-top:13px}@media only screen and (min-width:1024px){#updraft_activejobsrow .updraft_row{display:-ms-flexbox;display:flex;-ms-flex-align:baseline;align-items:baseline}#updraft_activejobsrow .updraft_row .updraft_col{-ms-flex:auto;flex:auto}#updraft_activejobsrow .updraft_progress_container{width:calc(100% - 230px)}}@media only screen and (min-width:782px){.settings_page_updraftplus input[type=text],.settings_page_updraftplus input[type=password],.settings_page_updraftplus input[type=number]{line-height:1.42;height:27px;padding:2px 6px;color:#555}.settings_page_updraftplus input[type="number"]{height:31px}#ud_massactions.active,#updraft-delete-waitwarning.active{position:fixed;bottom:0;left:160px;right:0;top:auto;background:#FFF;z-index:3;box-shadow:0 0 10px rgba(0,0,0,0.2)}body.folded #ud_massactions.active,body.folded #updraft-delete-waitwarning.active{left:36px}.updraft-after-form-table{margin-left:250px}}@media only screen and (min-width:782px) and (max-width:960px){body.auto-fold #ud_massactions.active,body.auto-fold #updraft-delete-waitwarning.active{left:36px}}@media only screen and (max-width:782px){#updraft-wrap{margin-right:0}#updraft-wrap .form-table td{padding-right:0}label.updraft_checkbox{margin-bottom:8px;margin-top:8px;margin-left:36px}.updraft_retain_rules{position:relative;margin-right:0;border:1px solid #CCC;padding:5px;margin-bottom:-1px}.updraft_retain_rules_delete{position:absolute;right:0;top:5px}a[id*=updraft_retain_]{display:block;padding:15px 15px 15px 0}label.updraft_checkbox>input[type=checkbox]{margin-left:-33px}#updraft-backupnow-button{margin:0;display:block;width:100%}.updraft_next_scheduled_backups_wrapper>.updraft_backup_btn_wrapper{padding-top:0}#ud_massactions,#updraft-delete-waitwarning{width:100%;box-sizing:border-box;text-align:center}#ud_massactions.active{position:fixed;top:auto;bottom:0;width:100%;box-sizing:border-box;text-align:center;box-shadow:0 -3px 15px rgba(0,0,0,0.08);background:#FFF;z-index:3}#ud_massactions strong{display:block;margin-bottom:5px}small.ud_massactions-tip{display:block}.existing-backups-table .backup_date_label>div,.existing-backups-table .backup_date_label span>div{font-weight:normal}.existing-backups-table .backup_date_label .clear-right{display:inline-block}table.widefat.existing-backups-table{border:0;box-shadow:none;background:transparent}.existing-backups-table thead{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;padding:0;margin:0}.existing-backups-table tr{display:block;margin-bottom:.625em;padding-bottom:16.625px;width:100%;padding:0;margin:0;margin-bottom:10px;background:#FFF;box-shadow:0 2px 3px rgba(0,0,0,0.1)}.existing-backups-table td{border-bottom:1px solid #DDD;display:block;font-size:.9em;text-align:left;width:100%;padding:10px;margin:0}.wp-list-table.existing-backups-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before{content:attr(data-label);font-weight:bold;display:block;position:relative;left:auto;padding-bottom:10px;width:auto;text-align:left}.existing-backups-table td:last-child{border-bottom:0}.form-table td.updraft_existingbackup_date{width:inherit;max-width:100%}.existing-backups-table td.before-restore-button{min-height:36px}.updraft_next_scheduled_backups_wrapper{-ms-flex-direction:column;flex-direction:column}.updraft_next_scheduled_backups_wrapper>div{width:100%}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row{position:relative}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected{background-color:#FFF;border-left:4px solid #0572aa}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row td:not(.backup-select){margin-left:50px}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row td.backup-select{width:50px !important;position:absolute;left:0;top:0;box-sizing:border-box;height:100%;z-index:1;border:0;border-right:1px solid rgba(0,0,0,0.05)}#updraft-navtab-backups-content .updraft_existing_backups input[type="checkbox"]{height:25px}.updraft_migrate_intro button.button.button-primary.button-hero{display:block;margin-right:0;width:100%;max-width:100%}.updraftclone-main-row{-ms-flex-direction:column;flex-direction:column}.updraftclone-main-row>div{width:auto;max-width:none;margin-right:0;margin-bottom:10px}.form-table th{padding-bottom:10px}}@media screen and (max-width:600px){.updraft_next_scheduled_entity{float:none;width:100%;margin-bottom:2em}.updraft_time_now_wrapper{margin-top:0}#updraft_lastlogmessagerow h3{margin-bottom:5px}#updraft_lastlogmessagerow .updraft-log-link{display:block;float:none;margin:0;margin-bottom:10px}}@media only screen and (min-width:768px){.addon-activation-notice{left:20em}.existing-backups-table tbody tr:hover{background:#f1f1f1}.existing-backups-table tbody tr td.before-restore-button{position:relative}.form-table .existing-backups-table thead th.check-column{padding-left:6px}.existing-backups-table tr td:first-child{border-left:4px solid transparent}.existing-backups-table tr.backuprowselected td:first-child{border-left-color:#0572aa}}@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}}@media only screen and (max-width:1068px){.updraft-more-plugins .udp-box{width:calc(50% - 10px);margin-bottom:20px}.updraft_feat_table td:nth-child(2),.updraft_feat_table td:nth-child(3){width:100px}}@media only screen and (max-width:600px){.updraft-more-plugins .udp-box{width:100%;margin-bottom:20px}.updraft_feat_table td:nth-child(2),.updraft_feat_table td:nth-child(3){width:auto}table.updraft_feat_table{display:block}table.updraft_feat_table tr{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}table.updraft_feat_table td{display:block}table.updraft_feat_table td:first-child{width:100%;border-bottom:0}table.updraft_feat_table td:not(:first-child){width:50%;box-sizing:border-box}table.updraft_feat_table td:first-child:empty{display:none}td[data-colname]::before{content:attr(data-colname);font-size:.8rem;color:#CCC;line-height:1}}
2
  /*# sourceMappingURL=updraftplus-admin.min.css.map */
1
+ @keyframes udp_blink{from{opacity:1;transform:scale(1)}to{opacity:.4;transform:scale(0.85)}}.max-width-600{max-width:600px}.width-900{max-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}.udpdraft__lifted{box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}#updraft-wrap a .dashicons{text-decoration:none}.updraft-field-description,table.form-table td p.updraft-field-description{font-size:90%;line-height:1.2;font-style:italic;margin-bottom:5px}label.updraft_checkbox{display:block;margin-bottom:4px;margin-left:26px}label.updraft_checkbox>input[type=checkbox]{margin-left:-25px}div[id*="updraft_include_"]{margin-bottom:9px}.settings_page_updraftplus input[type="file"]{border:0}.settings_page_updraftplus .wipe_settings{padding-bottom:10px}.settings_page_updraftplus input[type="text"]{font-size:14px}.settings_page_updraftplus select{border-radius:4px;max-width:100%}input.updraft_input--wide,textarea.updraft_input--wide{max-width:442px;width:100%}#updraft-wrap .button-large{font-size:1.3em}.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}p.updraftplus-option{margin-top:0;margin-bottom:5px}p.updraftplus-option-inline{display:inline-block;padding-right:20px}span.updraftplus-option-label{display:block}#updraft-navtab-migrate-content .postbox{padding:18px}.updraftclone-main-row{display:-ms-flexbox;display:flex}.updraftclone-tokens{background:#f5f5f5;padding:20px;border-radius:10px;margin-right:20px;max-width:300px}.updraftclone-tokens p{margin:0}.updraftclone_action_box{background:#f5f5f5;padding:20px;border-radius:10px;-ms-flex:1;flex:1}.updraftclone_action_box p:first-child{margin-top:0}.updraftclone_action_box p:last-child{margin-bottom:0}span.tokens-number{font-size:46px;display:block}.button.updraft_migrate_widget_temporary_clone_show_stage0{display:none;position:absolute;right:0;top:0;height:100%;border-left:1px solid #CCC;padding-left:10px;padding-right:10px}.updraft_migrate_widget_temporary_clone_stage0_container{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.updraft_migrate_widget_temporary_clone_stage0_box{margin-right:20px;width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.updraft_migrate_widget_temporary_clone_stage0_box iframe,.updraft_migrate_widget_temporary_clone_stage0_box a.udp-replace-with-iframe--js{float:none}@media(min-width:1024px){.updraft_migrate_widget_temporary_clone_stage0_container{-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.updraft_migrate_widget_temporary_clone_stage0_box{-ms-flex-preferred-size:45%;flex-basis:45%}.updraft_migrate_widget_temporary_clone_stage0_box iframe,.updraft_migrate_widget_temporary_clone_stage0_box a.udp-replace-with-iframe--js{float:right}}.updraft_migrate_widget_temporary_clone_show_stage0 .dashicons{text-decoration:none;font-size:20px}.opened .button.updraft_migrate_widget_temporary_clone_show_stage0{display:inline-block}.opened .updraft_migrate_widget_temporary_clone_stage0{background:#f5f5f5;padding:20px;border-radius:8px;margin-bottom:21px}.clone-list{clear:both;width:100%;margin-top:40px}.clone-list table{width:100%;text-align:left}.clone-list table tr th{background:#e4e4e4}.clone-list table tr td{background:#f5f5f5;word-break:break-word}.clone-list table tr:nth-child(odd) td{background:#fafafa}.clone-list table td,.clone-list table th{padding:6px}.updraftplus-clone .updraft_row{padding-left:0;padding-right:0}button#updraft_migrate_createclone+.updraftplus_spinner{margin-top:13px}.button.button-hero.updraftclone_show_step_1{white-space:normal;height:auto;line-height:14px;padding-top:10px;padding-bottom:10px}.button.button-hero.updraftclone_show_step_1 span.dashicons{height:auto}.updraftplus_clone_status{color:red}a.updraft_migrate_add_site--trigger span.dashicons{text-decoration:none}.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}#updraft_migrate_tab_main{padding:8px}.updraft_migrate_widget_module_content{background:#FFF;border-radius:0;position:relative}body.js #updraft_migrate .updraft_migrate_widget_module_content{display:none}.updraft_migrate_widget_module_content>h3,div[class*="updraft_migrate_widget_temporary_clone_stage"]>h3{margin-top:0}.updraft_migrate_widget_module_content header{position:relative;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-ms-grid-column-align:center;justify-items:center;margin-top:-18px;margin-left:-18px;margin-right:-18px;margin-bottom:15px;border-bottom:1px solid #CCC}.updraft_migrate_widget_module_content header h3,.updraft_migrate_widget_module_content header button.button.close{padding:10px;line-height:20px;height:auto;margin:0}.updraft_migrate_widget_module_content button.button.close{text-decoration:none;padding-left:5px;border-right:1px solid #CCC}.updraft_migrate_widget_module_content button.button.close .dashicons{margin-top:1px}.updraft_migrate_widget_module_content header h3{margin:0}.updraft_migrate_intro button.button.button-primary.button-hero{max-width:235px;word-wrap:normal;white-space:normal;line-height:1;height:auto;padding-top:13px;padding-bottom:13px;text-align:left;position:relative;margin-right:10px;margin-bottom:10px}.updraft_migrate_intro button.button.button-primary.button-hero .dashicons{position:absolute;left:10px;top:calc(50% - 8px)}#updraft_migrate .ui-widget-content a{color:#1c94c4}#updraft-wrap .ui-accordion .ui-accordion-header{background:#f6f6f6;margin:0;border-radius:0;padding-left:.5em;padding-right:.7em}#updraft-wrap .ui-widget{font-family:inherit}.ui-accordion-header .ui-accordion-header-icon.ui-icon-caret-1-w{background-position:-96px 0}.ui-accordion-header .ui-accordion-header-icon.ui-icon-caret-1-s{background-position:-64px 0}#updraft-wrap .ui-accordion .ui-accordion-header .ui-accordion-header-icon{left:auto;right:5px}#updraft-wrap .ui-accordion .ui-accordion-header:focus{outline:0;box-shadow:0 0 0 1px rgba(91,157,217,0.22),0 0 2px 1px rgba(30,140,190,0.3);background:#FFF}#updraft-wrap .ui-accordion .ui-accordion-header:focus .dashicons{color:#0572aa;opacity:1}#updraft-wrap .ui-accordion .ui-accordion-header.ui-state-active{background:#f6f6f6;border-bottom:2px solid #0572aa;box-shadow:1px 6px 12px -5px rgba(0,0,0,0.3)}#updraft-wrap .ui-accordion .ui-accordion-header.ui-state-active:focus{box-shadow:1px 6px 12px -5px rgba(0,0,0,0.3),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#updraft-wrap .ui-accordion .ui-accordion-header:not(:first-child){border-top:0}#updraft-wrap .ui-accordion .ui-accordion-header .dashicons{opacity:.4;margin-right:10px}#updraft-wrap .ui-accordion .ui-accordion-header:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);z-index:1}.updraft_next_scheduled_backups_wrapper{display:-ms-flexbox;display:flex;background:#FFF;-ms-grid-column-align:center;justify-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.updraft_next_scheduled_backups_wrapper>div{width:50%;background:#FFF;height:auto;padding:33px;box-sizing:border-box}.updraft_backup_btn_wrapper{text-align:center;border-left:1px solid #f1f1f1;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.incremental-backups-only{display:none}.incremental-free-only{display:none}.incremental-free-only p{padding:5px;background:rgba(255,0,0,0.06);border:1px solid #bfbfbf}#updraft-delete-waitwarning span.spinner{visibility:visible;float:none;margin:0;margin-right:10px}button#updraft-backupnow-button .spinner,button#updraft-backupnow-button .dashicons-yes{display:none}button#updraft-backupnow-button.loading .spinner{display:inline-block;visibility:visible;margin-top:13px;margin-right:0}button#updraft-backupnow-button.loading{background-color:#efefef;border-color:#CCC;text-shadow:0 -1px 1px #bbc3c7,1px 0 1px #bbc3c7,0 1px 1px #bbc3c7,-1px 0 1px #bbc3c7;box-shadow:none}button#updraft-backupnow-button.finished .dashicons-yes{display:inline-block;visibility:visible;font-size:42px;margin-right:0;margin-top:2px}.updraft_next_scheduled_entity{width:50%;display:inline-block;float:left}.updraft_next_scheduled_entity .dashicons{color:#CCC;font-size:20px}.updraft_next_scheduled_entity strong{font-size:20px}.updraft_next_scheduled_heading{margin-bottom:10px}.updraft_next_scheduled_date_time{color:#46a84b}.updraft_time_now_wrapper{margin-top:68px;width:100%}.updraft_time_now_label,.updraft_time_now{display:inline-block;padding:7px}.updraft_time_now_label{background:#b7b7b7;border-top-left-radius:4px;border-bottom-left-radius:4px;color:#FFF;margin-right:0;text-shadow:0 1px 2px rgba(0,0,0,0.4)}.updraft_time_now{background:#f1f1f1;border-top-right-radius:4px;border-bottom-right-radius:4px;margin-left:-3px}#updraft_lastlogmessagerow{margin:6px 0}#updraft_lastlogmessagerow{clear:both;padding:.25px 0}#updraft_lastlogmessagerow .updraft-log-link{float:right;margin-top:-2.5em;margin-right:2px}#updraft_lastlogmessagerow>div{clear:both;background:#FFF;padding:18px}#updraft_activejobs_table{overflow:hidden;width:100%;background:#fafafa;padding:0}.updraft_requeststart{padding:15px 33px;text-align:center}.updraft_requeststart .spinner{visibility:visible;float:none;vertical-align:middle;margin-top:-2px}a.updraft_jobinfo_delete.disabled{opacity:.4;color:inherit;text-decoration:none}.updraft_row{clear:both;transition:.3s all;padding:15px 33px}.updraft_row.deleting{opacity:.4}.updraft_existing_backups_count{padding:2px 8px;font-size:12px;background:#ca4a1e;color:#FFF;font-weight:bold;border-radius:10px}.form-table .existing-backups-table input[type="checkbox"]{border-radius:0}.form-table .existing-backups-table .check-column{width:40px;padding:0;padding-top:8px}.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,#updraft-delete-waitwarning>.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%}span#updraft_lastlogcontainer{word-break:break-all}.stored_icon{height:1.3em;position:relative;top:.2em}.backup_date_label>*{vertical-align:middle}.backup_date_label .dashicons{font-size:18px}.backup_date_label .clear-right{clear:right}.existing-backups-table .backup_date_label>div,.existing-backups-table .backup_date_label span>div{font-weight:bold}.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_exclude_container,.updraft_include_container{margin-left:24px;margin-top:5px;margin-bottom:10px;padding:15px;border:1px solid #DDD}label.updraft-exclude-label{font-weight:500;margin-bottom:5px;display:block}.updraft_add_exclude_item,#updraft_include_more_paths_another{display:inline-block;margin-top:10px}input.updraft_exclude_entity_field,.form-table td input.updraft_exclude_entity_field,.updraftplus-morefiles-row input[type=text]{width:calc(100% - 70px);max-width:400px}@media screen and (max-width:782px){.form-table td input.updraft_exclude_entity_field,.form-table td .updraftplus-morefiles-row input[type=text]{display:inline-block}}.updraft_exclude_entity_delete.dashicons,.updraft_exclude_entity_edit.dashicons,.updraft_exclude_entity_update.dashicons,.updraftplus-morefiles-row a.dashicons{margin-top:2px;font-size:20px;box-shadow:none;line-height:1;padding:3px;margin-right:4px}.updraft_exclude_entity_delete,.updraft_exclude_entity_delete:hover,.updraftplus-morefiles-row-delete{color:#ff6347}.updraft_exclude_entity_update.dashicons,.updraft_exclude_entity_update.dashicons:hover{color:#008000;font-weight:bold;font-size:22px;margin-left:4px}.updraft_exclude_entity_edit{margin-left:4px}.updraft_exclude_entity_update.is-active ~ .updraft_exclude_entity_delete{display:none}.updraft-exclude-panel-heading{margin-bottom:8px}.updraft-exclude-panel-heading h3{margin:.5em 0 .5em 0}.updraft-exclude-submit.button-primary{margin-top:5px}.updraft_exclude_actions_list{font-weight:bold}.updraft-exclude-link{cursor:pointer}#updraft_include_more_options{padding-left:25px}#updraft_report_cell .updraft_reportbox,.updraft_small_box{padding:12px;margin:8px 0;border:1px solid #CCC;position:relative}#updraft_report_cell button.updraft_reportbox_delete,.updraft_box_delete_button,.updraft_small_box .updraft_box_delete_button{padding:4px;padding-top:6px;border:0;background:transparent;position:absolute;top:4px;right:4px;cursor:pointer}#updraft_report_cell button.updraft_reportbox_delete:hover{color:#de3c3c}a.updraft_report_another .dashicons{text-decoration:none;margin-top:2px}.updraft_report_dbbackup.updraft_report_disabled{color:#CCC}#updraft-navtab-settings-content .updraft-test-button{font-size:18px !important}#updraft_report_cell .updraft_report_email{display:block;width:calc(100% - 50px);margin-bottom:9px}#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,#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected td{background-color:#efefef}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected:nth-child(even) td{background-color:#e8e8e8}.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}tr[class*="_updraft_remote_storage_border"]{border-top:1px solid #CCC}.updraft_multi_storage_options{float:right;clear:right;margin-bottom:5px !important}.updraft_toggle_instance_label{vertical-align:top !important}.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,.onedrive_folder_error{color:red}.updraft_jstree .jstree-container-ul>.jstree-node,#updraft_more_files_jstree .jstree-container-ul>.jstree-node{background:transparent}.updraft_jstree .jstree-container-ul>.jstree-open>.jstree-ocl,#updraft_more_files_jstree .jstree-container-ul>.jstree-open>.jstree-ocl{background-position:-36px -4px}.updraft_jstree .jstree-container-ul>.jstree-closed>.jstree-ocl,#updraft_more_files_jstree .jstree-container-ul>.jstree-closed>.jstree-ocl{background-position:-4px -4px}.updraft_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_jstree_info_container{position:relative;height:auto;width:100%;border:1px dotted;margin-bottom:5px}.updraft_jstree_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_exclude_files_folders_jstree{max-height:200px;overflow-y:scroll}.updraft_jstree{position:relative;border:1px dotted;height:80%;width:100%;overflow:auto}#updraft_more_files_container{position:relative;display:none;width:100%;border:1px solid #CCC;background:#fafafa;margin-bottom:5px;margin-top:4px;box-shadow:0 5px 8px rgba(0,0,0,0.1)}div#updraft_more_files_container::before{content:' ';width:11px;height:11px;display:block;background:#fafafa;position:absolute;top:0;left:20px;border-top:1px solid #CCC;border-left:1px solid #CCC;transform:translatey(-7px) rotate(45deg)}input.updraft_more_path_editing{border-color:#0285ba}input.updraft_more_path_editing ~ a.dashicons{display:none}#updraft_jstree_buttons{padding:10px;background:#e6e6e6}#updraft_jstree_container{height:300px;width:100%;overflow:auto}#updraft_more_files_container button{line-height:20px}#updraft_parent_directory{margin:10px 10px 4px 10px;padding-left:3px}#updraft_jstree_confirm,#updraft_jstree_cancel{display:none}.updraftplus-morefiles-row-delete,.updraftplus-morefiles-row-edit{cursor:pointer}#updraft-wrap .form-table th{width:230px}#updraft-wrap .form-table .existing-backups-table th{width:auto}.updraft-viewlogdiv form{margin:0;padding:0}.updraft-viewlogdiv{display:inline-block}.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 input:hover,.updraft-viewlogdiv a:hover{color:#FFF;cursor:pointer}.button.button-remove{color:white;background-color:#de3c3c;border-color:#c00000;box-shadow:0 1px 0 #c10100}.button.button-remove:hover,.button.button-remove:focus{border-color:#C00;color:#FFF;background:#C00}body.admin-color-midnight .button.button-remove{color:#de3c3c;background-color:#f7f7f7;border-color:#CCC;box-shadow:0 1px 0 #CCC}body.admin-color-midnight .button.button-remove:hover,body.admin-color-midnight .button.button-remove:focus{border-color:#ba281f}body.admin-color-midnight .button.button-remove:focus{box-shadow:inherit;box-shadow:0 0 3px rgba(0,115,170,0.8)}.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:1px;background:#ececec;border:solid 1px #CCC;margin:4px 0}.updraft_premium section{margin-bottom:20px}.updraft_premium_cta{background:#FFF;margin-top:30px;padding:0;border-left:4px solid #db6a03}.updraft_premium_cta a{font-weight:normal}.updraft_premium_cta a.button.button-primary.button-hero{font-size:1.3em;letter-spacing:.03rem;text-transform:uppercase}.updraft_premium_cta__top{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:18px 30px}.updraft_premium_cta__bottom{background:#f9f9f9;padding:5px 30px}.updraft_premium_cta__summary{margin-right:60px}.updraft_premium_cta h2{font-size:28px;font-weight:200;line-height:1;margin:0;margin-bottom:5px;letter-spacing:.05rem;color:#db6a03}.updraft_premium_cta ul li::after{color:#CCC}@media only screen and (max-width:768px){.updraft_premium_cta__top{-ms-flex-direction:column;flex-direction:column;text-align:center;-ms-flex-align:center;align-items:center}.updraft_premium_cta__summary{margin-right:0;margin-bottom:30px}}.udp-box{background:#FFF;padding:20px;box-shadow:0 1px 2px rgba(0,0,0,0.1);text-align:center}.udp-box h3{margin:0}.udp-box__heading{-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;background:0;box-shadow:none}.updraft-more-plugins{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:justify;justify-content:space-between;flex-wrap:wrap}.updraft-more-plugins img{max-width:200px;width:100%;display:inline-block}.updraft-more-plugins .udp-box{box-sizing:border-box;width:24%}.updraft-more-plugins .udp-box p:last-child{margin-bottom:0;padding-bottom:0}.updraft_premium_description_list{text-align:left;margin:0;font-size:12px}ul.updraft_premium_description_list,ul#updraft_restore_warnings{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-child::after{content:""}.updraft_feature_cell{background-color:#f7d9c9 !important;padding:5px 10px}.updraftplus_com_login_status,.updraftplus_com_key_status{display:none;border-left-color:#dc3232 !important;background:#FFF;border-left:4px solid #FFF;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 15px 0;padding:5px 12px}.updraft_feat_table{border:0;border-collapse:collapse;font-size:120%;background-color:white;text-align:center}.updraft_feat_th,.updraft_feat_table td{border:1px solid #f1f1f1;border-collapse:collapse;font-size:120%;background-color:white;text-align:center;padding:15px}.updraft_feat_table td{border-bottom-width:4px}.updraft_feat_table td:first-child{border-left:0}.updraft_feat_table td:last-child{border-right:0}.updraft_feat_table tr:last-child td{border-bottom:0}.updraft_feat_table td:nth-child(2),.updraft_feat_table td:nth-child(3){background-color:rgba(241,241,241,0.38);width:190px}.updraft_feat_table__header td img{display:block;margin:0 auto}.updraft_feat_table__header td{text-align:center}.updraft_feat_table .installed{font-size:14px}.updraft_feat_table p{padding:0 10px;margin:5px 0;font-size:13px}.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}.ud_downloadstatus__close{border:0;background:transparent;width:auto;font-size:20px;padding:0;cursor:pointer}#filelist .fileprogress,#filelist2 .fileprogress,.ud_downloadstatus .dlfileprogress,#ud_downloadstatus2 .dlfileprogress{width:0;background:#0572aa;height:8px}.ud_downloadstatus .raw,#ud_downloadstatus2 .raw{margin-top:8px;clear:left}.ud_downloadstatus .file,#ud_downloadstatus2 .file{margin-top:8px}div[class^="updraftplus_downloader_container_"]{padding:10px}tr.updraftplusmethod h3{margin:0}tr.updraftplusmethod img{max-width:100%}#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;text-decoration:none;display:inline-block}#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}.blockUI.blockOverlay.ui-widget-overlay{background:#000}.updraft_success_popup{text-align:center;padding-bottom:30px}.updraft_success_popup>.dashicons{font-size:100px;width:100px;height:100px;line-height:100px;padding:0;border-radius:50%;margin-top:30px;display:block;margin-left:auto;margin-right:auto;background:#e2e6e5}.updraft_success_popup>.dashicons.dashicons-yes{text-indent:-5px}.updraft_success_popup.success>.dashicons{color:green}.updraft_success_popup.warning>.dashicons{color:#888}.updraft_success_popup--message{padding:20px}.button.updraft-close-overlay .dashicons{text-decoration:none;font-size:20px;margin-left:-5px;padding:0}.updraft_saving_popup img{animation-name:udp_blink;animation-duration:610ms;animation-iteration-count:infinite;animation-direction:alternate;animation-timing-function:ease-out}.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}.updraft_all-files{color:blue}.multisite-advert-width{width:800px}.updraft_settings_sectionheading{margin-top:6px}.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_activejobsrow th{max-width:112px;margin:0;padding:13px 0 0 0}#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}.download-backups .ud-whitespace-warning,.download-backups .ud-bom-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{margin:16px 0}.download-backups .upload{max-width:610px}.download-backups #plupload-upload-ui{width:100%}.ud_downloadstatus{padding:10px 0}#ud_massactions,#updraft-delete-waitwarning{padding:14px;background:#f1f1f1;position:absolute;left:0;top:100%}#ud_massactions>*,#updraft-delete-waitwarning>*{vertical-align:middle}#ud_massactions .updraftplus-remove{display:inline-block;margin-right:0}#ud_massactions .updraftplus-remove a{text-decoration:none}#ud_massactions .updraft-viewlogdiv a{text-decoration:none;position:relative}small.ud_massactions-tip{display:inline-block;opacity:.5;font-style:italic;margin-left:20px}#updraft-navtab-backups-content .updraft_existing_backups{margin-bottom:35px;position:relative}#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;max-width:140px}.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{width:100%;text-align:center;padding:33px}.job-id{margin-top:0;margin-bottom:8px}.next-resumption{font-weight:bold}.updraft_percentage{z-index:-1;position:absolute;left:0;top:0;text-align:center;background-color:#1d8ec2;transition:width .3s}.curstage{z-index:1;border-radius:2px;margin-top:8px;width:100%;height:26px;line-height:26px;position:relative;text-align:center;font-style:italic;color:#FFF;background-color:#b7b7b7;text-shadow:0 1px 2px rgba(0,0,0,0.3)}.curstage-info{display:inline-block;z-index:2}.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}.updraft_existing_backups_wrapper{margin-top:20px;border-top:1px solid #DDD}.updraft-no-backups-msg{text-align:center}.tr-bottom-4{margin-bottom:4px}.existing-backups-table th{padding:8px 10px}.form-table .backup-date{width:172px}.form-table .backup-data{width:426px}.form-table .updraft_backup_actions{width:272px}.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}.updraftplus-upload{margin-right:6px;float:left;clear:none}.before-restore-button{padding:1px;margin:0}.before-restore-button div{float:none;display:inline-block}.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_delete_old_dirs_pagediv{padding-bottom:10px}.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}#updraft-wrap .dashicons.dashicons-adapt-size{line-height:inherit;font-size:inherit}#updraft-wrap .button span.dashicons:not(.dashicons-adapt-size){vertical-align:middle;margin-top:-3px}.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:first-child{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}.updraftcentral_wizard_option{width:45%;float:left;text-align:center}.updraftcentral_wizard_option label{margin-bottom:8px}#updraftcentral_keys_table{display:none}.create_key_container{border:1px solid;border-radius:4px;padding:0 0 6px 6px;margin-bottom:8px}.updraftcentral_cloud_connect{border-radius:4px;border:1px solid #000;padding:0 20px;margin-top:30px;background-color:#FFF}.updraftcentral_cloud_error{border:1px solid #000;padding:3px 10px;border-left:3px solid #F00;background-color:#FFF;margin-bottom:10px}.updraftcentral_cloud_info{border:1px solid #000;padding:3px 10px;border-left:3px solid #ef8f31;background-color:#FFF;margin-bottom:10px}.updraftplus_spinner.spinner{padding-left:25px;float:none}.updraftplus_spinner.spinner.visible{visibility:visible}.updraftcentral_cloud_notices .updraftplus_spinner{margin-top:-5px}.updraftcentral-subheading{font-size:14px;margin-top:-10px;margin-bottom:20px}#updraftcentral_cloud_form input#email,#updraftcentral_cloud_form input#password{min-width:250px}.updraftcentral-data-consent{font-size:13px;margin-bottom:10px}.updraftcentral_cloud_wizard_image{float:left;min-width:100px;margin-right:25px}.updraftcentral_cloud_wizard{float:left}.updraftcentral_cloud_clear{clear:both}.updraftplus-settings-footer{margin-top:30px}.updraftplus-top-menu{padding:.5em}#updraft_inpage_backup #updraft_activejobs_table{background:transparent}#updraft_inpage_backup #updraft_lastlogmessagerow .updraft-log-link{float:none}#updraft_inpage_backup #updraft_activejobsrow .updraft_row{-ms-flex-direction:column;flex-direction:column;padding-left:20px;padding-right:20px}#updraft_inpage_backup #updraft_activejobsrow .updraft_progress_container{width:100%}#updraft_inpage_backup #updraft_activejobs_table{overflow:inherit}#updraft_inpage_backup span#updraft_lastlogcontainer{padding:18px;background:#fafafa;display:block;font-size:90%;box-shadow:0 1px 2px rgba(0,0,0,0.1)}#updraft_inpage_backup div#updraft_activejobsrow{background:#fafafa;box-shadow:0 1px 2px rgba(0,0,0,0.1)}#updraft_inpage_backup #updraft_lastlogmessagerow>div{background:transparent;padding:0}#updraft_inpage_backup .last-message>strong{display:block;margin-top:13px}@media only screen and (min-width:1024px){#updraft_activejobsrow .updraft_row{display:-ms-flexbox;display:flex;-ms-flex-align:baseline;align-items:baseline}#updraft_activejobsrow .updraft_row .updraft_col{-ms-flex:auto;flex:auto}#updraft_activejobsrow .updraft_progress_container{width:calc(100% - 230px)}}@media only screen and (min-width:782px){.settings_page_updraftplus input[type=text],.settings_page_updraftplus input[type=password],.settings_page_updraftplus input[type=number]{line-height:1.42;height:27px;padding:2px 6px;color:#555}.settings_page_updraftplus input[type="number"]{height:31px}#ud_massactions.active,#updraft-delete-waitwarning.active{position:fixed;bottom:0;left:160px;right:0;top:auto;background:#FFF;z-index:3;box-shadow:0 0 10px rgba(0,0,0,0.2)}body.folded #ud_massactions.active,body.folded #updraft-delete-waitwarning.active{left:36px}.updraft-after-form-table{margin-left:250px}}@media only screen and (min-width:782px) and (max-width:960px){body.auto-fold #ud_massactions.active,body.auto-fold #updraft-delete-waitwarning.active{left:36px}}@media only screen and (max-width:782px){#updraft-wrap{margin-right:0}#updraft-wrap .form-table td{padding-right:0}label.updraft_checkbox{margin-bottom:8px;margin-top:8px;margin-left:36px}.updraft_retain_rules{position:relative;margin-right:0;border:1px solid #CCC;padding:5px;margin-bottom:-1px}.updraft_retain_rules_delete{position:absolute;right:0;top:5px}a[id*=updraft_retain_]{display:block;padding:15px 15px 15px 0}label.updraft_checkbox>input[type=checkbox]{margin-left:-33px}#updraft-backupnow-button{margin:0;display:block;width:100%}.updraft_next_scheduled_backups_wrapper>.updraft_backup_btn_wrapper{padding-top:0}#ud_massactions,#updraft-delete-waitwarning{width:100%;box-sizing:border-box;text-align:center}#ud_massactions.active{position:fixed;top:auto;bottom:0;width:100%;box-sizing:border-box;text-align:center;box-shadow:0 -3px 15px rgba(0,0,0,0.08);background:#FFF;z-index:3}#ud_massactions strong{display:block;margin-bottom:5px}small.ud_massactions-tip{display:block}.existing-backups-table .backup_date_label>div,.existing-backups-table .backup_date_label span>div{font-weight:normal}.existing-backups-table .backup_date_label .clear-right{display:inline-block}table.widefat.existing-backups-table{border:0;box-shadow:none;background:transparent}.existing-backups-table thead{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;padding:0;margin:0}.existing-backups-table tr{display:block;margin-bottom:.625em;padding-bottom:16.625px;width:100%;padding:0;margin:0;margin-bottom:10px;background:#FFF;box-shadow:0 2px 3px rgba(0,0,0,0.1)}.existing-backups-table td{border-bottom:1px solid #DDD;display:block;font-size:.9em;text-align:left;width:100%;padding:10px;margin:0}.wp-list-table.existing-backups-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before{content:attr(data-label);font-weight:bold;display:block;position:relative;left:auto;padding-bottom:10px;width:auto;text-align:left}.existing-backups-table td:last-child{border-bottom:0}.form-table td.updraft_existingbackup_date{width:inherit;max-width:100%}.existing-backups-table td.before-restore-button{min-height:36px}.updraft_next_scheduled_backups_wrapper{-ms-flex-direction:column;flex-direction:column}.updraft_next_scheduled_backups_wrapper>div{width:100%}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row{position:relative}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected{background-color:#FFF;border-left:4px solid #0572aa}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row td:not(.backup-select){margin-left:50px}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row td.backup-select{width:50px !important;position:absolute;left:0;top:0;box-sizing:border-box;height:100%;z-index:1;border:0;border-right:1px solid rgba(0,0,0,0.05)}#updraft-navtab-backups-content .updraft_existing_backups input[type="checkbox"]{height:25px}.updraft_migrate_intro button.button.button-primary.button-hero{display:block;margin-right:0;width:100%;max-width:100%}.updraftclone-main-row{-ms-flex-direction:column;flex-direction:column}.updraftclone-main-row>div{width:auto;max-width:none;margin-right:0;margin-bottom:10px}.form-table th{padding-bottom:10px}}@media screen and (max-width:600px){.updraft_next_scheduled_entity{float:none;width:100%;margin-bottom:2em}.updraft_time_now_wrapper{margin-top:0}#updraft_lastlogmessagerow h3{margin-bottom:5px}#updraft_lastlogmessagerow .updraft-log-link{display:block;float:none;margin:0;margin-bottom:10px}}@media only screen and (min-width:768px){.addon-activation-notice{left:20em}.existing-backups-table tbody tr:hover{background:#f1f1f1}.existing-backups-table tbody tr td.before-restore-button{position:relative}.form-table .existing-backups-table thead th.check-column{padding-left:6px}.existing-backups-table tr td:first-child{border-left:4px solid transparent}.existing-backups-table tr.backuprowselected td:first-child{border-left-color:#0572aa}}@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}}@media only screen and (max-width:1068px){.updraft-more-plugins .udp-box{width:calc(50% - 10px);margin-bottom:20px}.updraft_feat_table td:nth-child(2),.updraft_feat_table td:nth-child(3){width:100px}}@media only screen and (max-width:600px){.updraft-more-plugins .udp-box{width:100%;margin-bottom:20px}.updraft_feat_table td:nth-child(2),.updraft_feat_table td:nth-child(3){width:auto}table.updraft_feat_table{display:block}table.updraft_feat_table tr{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}table.updraft_feat_table td{display:block}table.updraft_feat_table td:first-child{width:100%;border-bottom:0}table.updraft_feat_table td:not(:first-child){width:50%;box-sizing:border-box}table.updraft_feat_table td:first-child:empty{display:none}td[data-colname]::before{content:attr(data-colname);font-size:.8rem;color:#CCC;line-height:1}}
2
  /*# sourceMappingURL=updraftplus-admin.min.css.map */
css/updraftplus-admin.min.css.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["css/updraftplus-admin.css"],"names":[],"mappings":"AAAA;;CAEC;EACC,WAAW;EACX,oBAAoB;EACpB;;CAED;EACC,aAAa;EACb,uBAAuB;EACvB;;CAED;;AAED,uBAAuB;AACvB;CACC,iBAAiB;CACjB;;AAED;CACC,iBAAiB;CACjB;;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;CACC,uCAAuC;CACvC;;AAED;CACC,sBAAsB;CACtB;;AAED;;CAEC,eAAe;CACf,iBAAiB;CACjB,mBAAmB;CACnB,mBAAmB;CACnB;;AAED,iBAAiB;AACjB;CACC,eAAe;CACf,mBAAmB;CACnB,kBAAkB;CAClB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB;;AAED,iBAAiB;AACjB;CACC,aAAa;CACb;;AAED;CACC,qBAAqB;CACrB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,mBAAmB;CACnB,gBAAgB;CAChB;;AAED;;CAEC,iBAAiB;CACjB,YAAY;CACZ;;AAED;CACC,iBAAiB;CACjB;;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;CACC,cAAc;CACd,mBAAmB;CACnB;;AAED;CACC,sBAAsB;CACtB,oBAAoB;CACpB;;AAED;CACC,eAAe;CACf;;AAED;;EAEE;;AAEF;CACC,cAAc;CACd;;AAED,gBAAgB;;AAEhB;CACC,qBAAc;CAAd,cAAc;CACd;;AAED;CACC,oBAAoB;CACpB,cAAc;CACd,oBAAoB;CACpB,mBAAmB;CACnB,iBAAiB;CACjB;;AAED;CACC,UAAU;CACV;;AAED;CACC,oBAAoB;CACpB,cAAc;CACd,oBAAoB;CACpB,YAAQ;KAAR,QAAQ;CACR;;AAED;CACC,cAAc;CACd;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,gBAAgB;CAChB,eAAe;CACf;;AAED,yBAAyB;AACzB;CACC,cAAc;CACd,mBAAmB;CACnB,SAAS;CACT,OAAO;CACP,aAAa;CACb,4BAA4B;CAC5B,mBAAmB;CACnB,oBAAoB;CACpB;;AAED;CACC,qBAAc;CAAd,cAAc;CACd,2BAAuB;KAAvB,uBAAuB;CACvB;;AAED;CACC,mBAAmB;CACnB,YAAY;CACZ,8BAAiB;KAAjB,iBAAiB;CACjB;;AAED;;CAEC,YAAY;CACZ;;AAED;;CAEC;EACC,wBAAoB;MAApB,oBAAoB;EACpB,oBAAgB;MAAhB,gBAAgB;EAChB;;CAED;EACC,6BAAgB;MAAhB,gBAAgB;EAChB;;CAED;;EAEC,aAAa;EACb;;CAED;;AAED;CACC,sBAAsB;CACtB,gBAAgB;CAChB,qBAAqB;CACrB;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,oBAAoB;CACpB,cAAc;CACd,mBAAmB;CACnB,oBAAoB;CACpB;;AAED,sBAAsB;AACtB;CACC,YAAY;CACZ,YAAY;CACZ,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ,iBAAiB;CACjB;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,oBAAoB;CACpB,uBAAuB;CACvB;;AAED;CACC,oBAAoB;CACpB;;AAED;;CAEC,aAAa;CACb;;AAED,oBAAoB;AACpB;CACC,gBAAgB;CAChB,iBAAiB;CACjB;;AAED;CACC,iBAAiB;CACjB;;AAED,qCAAqC;AACrC;CACC,oBAAoB;CACpB,aAAa;CACb,kBAAkB;CAClB,kBAAkB;CAClB,qBAAqB;CACrB;;AAED;CACC,aAAa;CACb;;AAED;CACC,WAAW;CACX;;AAED,aAAa;;AAEb;CACC,sBAAsB;CACtB;;AAED;;;CAGC,sBAAsB;CACtB,eAAe;CACf;;AAED;CACC,yBAAyB;CACzB,gCAAgC;CAChC;;AAED;CACC,aAAa;CACb;;AAED;CACC,iBAAiB;CACjB,iBAAiB;CACjB,mBAAmB;CACnB;;AAED;CACC,cAAc;CACd;;AAED;;CAEC,cAAc;CACd;;AAED,6BAA6B;AAC7B;CACC,mBAAmB;CACnB,qBAAc;CAAd,cAAc;CACd,2BAAsB;KAAtB,sBAAsB;CACtB,8BAAsB;KAAtB,sBAAsB;CACtB,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,oBAAoB;CACpB,8BAA8B;CAC9B;;AAED;;CAEC,cAAc;CACd,kBAAkB;CAClB,aAAa;CACb,UAAU;CACV;;AAED;CACC,sBAAsB;CACtB,kBAAkB;CAClB,6BAA6B;CAC7B;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,UAAU;CACV;;AAED;CACC,iBAAiB;CACjB,kBAAkB;CAClB,oBAAoB;CACpB,eAAe;CACf,aAAa;CACb,kBAAkB;CAClB,qBAAqB;CACrB,iBAAiB;CACjB,mBAAmB;CACnB,mBAAmB;CACnB,oBAAoB;CACpB;;AAED;CACC,mBAAmB;CACnB,WAAW;CACX,qBAAqB;CACrB;;AAED;;EAEE;AACF;CACC,eAAe;CACf;;AAED;CACC,oBAAoB;CACpB,UAAU;CACV,iBAAiB;CACjB,oBAAoB;CACpB,qBAAqB;CACrB;;AAED;CACC,qBAAqB;CACrB;;AAED;CACC,+BAA+B;CAC/B;;AAED;CACC,6BAA6B;CAC7B;;AAED;CACC,WAAW;CACX,WAAW;CACX;;AAED;CACC,cAAc;CACd,oFAAoF;CACpF,iBAAiB;CACjB;;AAED;CACC,eAAe;CACf,WAAW;CACX;;AAED;CACC,oBAAoB;CACpB,iCAAiC;CACjC,iDAAiD;CACjD;;AAED;CACC,wGAAwG;CACxG;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,aAAa;CACb,mBAAmB;CACnB;;AAED;CACC,cAAc;CACd,kEAAkE;CAClE,WAAW;CACX;;AAED;CACC,qBAAc;CAAd,cAAc;CACd,iBAAiB;CACjB,8BAAsB;KAAtB,sBAAsB;CACtB,oBAAgB;KAAhB,gBAAgB;CAChB;;AAED;CACC,WAAW;CACX,iBAAiB;CACjB,aAAa;CACb,yBAAyB;CACzB,cAAc;CACd,uBAAuB;CACvB;;AAED;CACC,mBAAmB;CACnB,+BAA+B;CAC/B,sBAAwB;KAAxB,wBAAwB;CACxB,uBAAoB;KAApB,oBAAoB;CACpB;;AAED;CACC,cAAc;CACd;;AAED;CACC,cAAc;CACd;;AAED;CACC,aAAa;CACb,kCAAkC;CAClC,0BAA0B;CAC1B;;AAED;CACC,oBAAoB;CACpB,YAAY;CACZ,UAAU;CACV,mBAAmB;CACnB;;AAED;;CAEC,cAAc;CACd;;AAED;CACC,sBAAsB;CACtB,oBAAoB;CACpB,iBAAiB;CACjB,gBAAgB;CAChB;;AAED;CACC,0BAA0B;CAC1B,mBAAmB;CACnB,0FAA0F;CAC1F,iBAAiB;CACjB;;AAED;CACC,sBAAsB;CACtB,oBAAoB;CACpB,gBAAgB;CAChB,gBAAgB;CAChB,gBAAgB;CAChB;;AAED;CACC,WAAW;CACX,sBAAsB;CACtB,YAAY;CACZ;;GAEE;CACF;;AAED;CACC,YAAY;CACZ,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB,YAAY;CACZ;;AAED;CACC,sBAAsB;CACtB,aAAa;CACb;;AAED;CACC,oBAAoB;CACpB,4BAA4B;CAC5B,+BAA+B;CAC/B,YAAY;CACZ,gBAAgB;CAChB,0CAA0C;CAC1C;;AAED;CACC,oBAAoB;CACpB,6BAA6B;CAC7B,gCAAgC;CAChC,kBAAkB;CAClB;;AAED;CACC,cAAc;CACd;;AAED;CACC,YAAY;CACZ,kBAAkB;CAClB;;AAED;CACC,aAAa;CACb,mBAAmB;CACnB,kBAAkB;CAClB;;AAED;CACC,YAAY;CACZ,iBAAiB;CACjB,cAAc;CACd;;AAED;CACC,iBAAiB;CACjB,YAAY;CACZ,oBAAoB;CACpB,WAAW;CACX;;AAED;CACC,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,oBAAoB;CACpB,YAAY;CACZ,uBAAuB;CACvB,iBAAiB;CACjB;;AAED;CACC,aAAa;CACb,eAAe;CACf,sBAAsB;CACtB;;AAED;CACC,YAAY;CACZ,qBAAqB;CACrB,mBAAmB;CACnB;;AAED;CACC,aAAa;CACb;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,iBAAiB;CACjB,gBAAgB;CAChB,oBAAoB;CACpB,YAAY;CACZ,kBAAkB;CAClB,oBAAoB;CACpB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ,WAAW;CACX,iBAAiB;CACjB;;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,sBAAsB;CACtB;;AAED;CACC,cAAc;CACd,mBAAmB;CACnB,WAAW;CACX;;AAED;CACC,uBAAuB;CACvB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,aAAa;CACb;;AAED;CACC,kBAAkB;CAClB;;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;;CAEC,kBAAkB;CAClB,gBAAgB;CAChB,oBAAoB;CACpB,cAAc;CACd,uBAAuB;CACvB;;AAED;CACC,iBAAiB;CACjB,mBAAmB;CACnB,eAAe;CACf;;AAED;;CAEC,sBAAsB;CACtB,iBAAiB;CACjB;;AAED;;;CAGC,yBAAyB;CACzB,iBAAiB;CACjB;;AAED;;CAEC;;EAEC,sBAAsB;EACtB;;CAED;;AAED;CACC,gBAAgB;CAChB,gBAAgB;CAChB,iBAAiB;CACjB,eAAe;CACf,aAAa;CACb,kBAAkB;CAClB;;AAED;;;CAGC,eAAe;CACf;;AAED;CACC,eAAe;CACf,kBAAkB;CAClB,gBAAgB;CAChB,iBAAiB;CACjB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,cAAc;CACd;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,wBAAwB;CACxB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,mBAAmB;CACnB;;AAED;;CAEC,cAAc;CACd,cAAc;CACd,uBAAuB;CACvB,mBAAmB;CACnB;;AAED;;;CAGC,aAAa;CACb,iBAAiB;CACjB,aAAa;CACb,wBAAwB;CACxB,mBAAmB;CACnB,SAAS;CACT,WAAW;CACX,gBAAgB;CAChB;;AAED;CACC,eAAe;CACf;;AAED;CACC,sBAAsB;CACtB,gBAAgB;CAChB;;AAED;CACC,YAAY;CACZ;;AAED;CACC,2BAA2B;CAC3B;;AAED;CACC,eAAe;CACf,yBAAyB;CACzB,mBAAmB;CACnB;;AAED;CACC,YAAY;CACZ;;AAED,mCAAmC;;AAEnC;CACC,iBAAiB;CACjB;;AAED;;CAEC,0BAA0B;CAC1B;;AAED;CACC,0BAA0B;CAC1B;;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,2BAA2B;CAC3B;;AAED;CACC,aAAa;CACb,aAAa;CACb,8BAA8B;CAC9B;;AAED;CACC,+BAA+B;CAC/B;;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,kBAAkB;CAClB,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB,mBAAmB;CACnB,YAAY;CACZ,YAAY;CACZ,eAAe;CACf;;AAED,8BAA8B;AAC9B;CACC,mBAAmB;CACnB,cAAc;CACd,YAAY;CACZ,uBAAuB;CACvB,oBAAoB;CACpB,mBAAmB;CACnB,gBAAgB;CAChB,yCAAyC;CACzC;;AAED;CACC,aAAa;CACb,YAAY;CACZ,aAAa;CACb,eAAe;CACf,oBAAoB;CACpB,mBAAmB;CACnB,OAAO;CACP,WAAW;CACX,2BAA2B;CAC3B,4BAA4B;CAC5B,0CAA0C;CAC1C;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,cAAc;CACd;;AAED;CACC,cAAc;CACd,oBAAoB;CACpB;;AAED;CACC,cAAc;CACd,YAAY;CACZ,eAAe;CACf;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,2BAA2B;CAC3B,kBAAkB;CAClB;;AAED;CACC,cAAc;CACd;;AAED;;CAEC,gBAAgB;CAChB;;AAED;CACC,aAAa;CACb;;AAED;CACC,YAAY;CACZ;;AAED;CACC,UAAU;CACV,WAAW;CACX;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,aAAa;CACb,8BAA8B;CAC9B,YAAY;CACZ,YAAY;CACZ,iBAAiB;CACjB,gBAAgB;CAChB,kBAAkB;CAClB;;AAED;CACC,YAAY;CACZ,gBAAgB;CAChB;;AAED;CACC,aAAa;CACb,0BAA0B;CAC1B,sBAAsB;CACtB,4BAA4B;CAC5B;;AAED;;CAEC,mBAAmB;CACnB,YAAY;CACZ,iBAAiB;CACjB;;AAED,mDAAmD;AACnD;CACC,eAAe;CACf,0BAA0B;CAC1B,mBAAmB;CACnB,yBAAyB;CACzB;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,oBAAoB;CACpB,2CAA2C;CAC3C;;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,oBAAoB;CACpB;;AAED;;EAEE;AACF;CACC,iBAAiB;CACjB,iBAAiB;CACjB,WAAW;CACX,+BAA+B;CAC/B;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,iBAAiB;CACjB,wBAAwB;CACxB,0BAA0B;CAC1B;;AAED;CACC,qBAAc;CAAd,cAAc;CACd,uBAAoB;KAApB,oBAAoB;CACpB,uBAA+B;KAA/B,+BAA+B;CAC/B,mBAAmB;CACnB;;AAED;CACC,oBAAoB;CACpB,kBAAkB;CAClB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,gBAAgB;CAChB,iBAAiB;CACjB,eAAe;CACf,UAAU;CACV,mBAAmB;CACnB,wBAAwB;CACxB,eAAe;CACf;;AAED;CACC,YAAY;CACZ;;AAED;;CAEC;EACC,2BAAuB;MAAvB,uBAAuB;EACvB,mBAAmB;EACnB,uBAAoB;MAApB,oBAAoB;EACpB;;CAED;EACC,gBAAgB;EAChB,oBAAoB;EACpB;;CAED;;AAED;;EAEE;AACF;CACC,iBAAiB;CACjB,cAAc;CACd,yCAAyC;CACzC,mBAAmB;CACnB;;AAED;CACC,UAAU;CACV;;AAED;CACC,4BAAmB;KAAnB,2BAAmB;KAAnB,mBAAmB;CACnB,iBAAiB;CACjB,iBAAiB;CACjB;;AAED;;EAEE;AACF;CACC,qBAAc;CAAd,cAAc;CACd,wBAAoB;KAApB,oBAAoB;CACpB,oBAAgB;KAAhB,gBAAgB;CAChB,uBAA+B;KAA/B,+BAA+B;CAC/B,gBAAgB;CAChB;;AAED;CACC,iBAAiB;CACjB,YAAY;CACZ,sBAAsB;CACtB;;AAED;CACC,uBAAuB;CACvB,WAAW;CACX;;AAED;CACC,iBAAiB;CACjB,kBAAkB;CAClB;;AAED;;EAEE;AACF;CACC,iBAAiB;CACjB,UAAU;CACV,gBAAgB;CAChB;;AAED;CACC,wBAAwB;CACxB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,eAAe;CACf;;AAED;CACC,YAAY;CACZ;;AAED;CACC,qCAAqC;CACrC,kBAAkB;CAClB;;AAED;CACC,cAAc;CACd,sCAAsC;CACtC,iBAAiB;CACjB,4BAA4B;CAC5B,uCAAuC;CACvC,qBAAqB;CACrB,kBAAkB;CAClB;;AAED;CACC,aAAa;CACb,0BAA0B;CAC1B,gBAAgB;CAChB,wBAAwB;CACxB,mBAAmB;CACnB;;AAED;CACC,0BAA0B;CAC1B,0BAA0B;CAC1B,gBAAgB;CAChB,wBAAwB;CACxB,mBAAmB;CACnB,cAAc;CACd;;AAED;CACC,yBAAyB;CACzB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,oBAAoB;CACpB;;AAED;;CAEC,4CAA4C;CAC5C,aAAa;CACb;;AAED;CACC,eAAe;CACf,eAAe;CACf;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,gBAAgB;CAChB;;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,aAAa;CACb,wBAAwB;CACxB,YAAY;CACZ,gBAAgB;CAChB,WAAW;CACX,gBAAgB;CAChB;;AAED;CACC,UAAU;CACV,oBAAoB;CACpB,YAAY;CACZ;;AAED;CACC,gBAAgB;CAChB,YAAY;CACZ;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,cAAc;CACd;;AAED;CACC,YAAY;CACZ;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB,WAAW;CACX,gBAAgB;CAChB,kBAAkB;CAClB,YAAY;CACZ,mBAAmB;CACnB,aAAa;CACb,cAAc;CACd,sBAAsB;CACtB,sBAAsB;CACtB;;AAED;CACC,gBAAgB;CAChB,aAAa;CACb,gBAAgB;CAChB;;AAED;CACC,iBAAiB;CACjB,gBAAgB;CAChB,kBAAkB;CAClB,cAAc;CACd,YAAY;CACZ;;AAED,qBAAqB;AACrB;CACC,iBAAiB;CACjB;;AAED;CACC,mBAAmB;CACnB,qBAAqB;CACrB;;AAED;CACC,iBAAiB;CACjB,aAAa;CACb,cAAc;CACd,mBAAmB;CACnB,aAAa;CACb,mBAAmB;CACnB,iBAAiB;CACjB,eAAe;CACf,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,aAAa;CACb;;AAED;CACC,YAAY;CACZ;;AAED;CACC,cAAc;CACd;;AAED;CACC,sBAAsB;CACtB,gBAAgB;CAChB,kBAAkB;CAClB,WAAW;CACX;;AAED;CACC,0BAA0B;CAC1B,0BAA0B;CAC1B,oCAAoC;CACpC,+BAA+B;CAC/B,oCAAoC;CACpC;;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;;AAED;CACC,aAAa;CACb;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,sBAAsB;CACtB;;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,iBAAiB;CACjB,UAAU;CACV,oBAAoB;CACpB;;AAED;CACC,kBAAkB;CAClB,eAAe;CACf;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,uBAAuB;CACvB,aAAa;CACb,YAAY;CACZ,mBAAmB;CACnB;;AAED;CACC,wBAAwB;CACxB,iBAAiB;CACjB,gBAAgB;CAChB,oBAAoB;CACpB;;AAED;CACC,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,cAAc;CACd,+BAA+B;CAC/B,mBAAmB;CACnB,QAAQ;CACR,UAAU;CACV;;AAED;CACC,uBAAuB;CACvB;;AAED;CACC,sBAAsB;CACtB,gBAAgB;CAChB;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,sBAAsB;CACtB,mBAAmB;CACnB;;AAED;CACC,sBAAsB;CACtB,aAAa;CACb,mBAAmB;CACnB,kBAAkB;CAClB;;AAED;CACC,oBAAoB;CACpB,mBAAmB;CACnB;;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,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,YAAY;CACZ,mBAAmB;CACnB,cAAc;CACd;;AAED;CACC,cAAc;CACd,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,YAAY;CACZ,mBAAmB;CACnB,UAAU;CACV,SAAS;CACT,mBAAmB;CACnB,0BAA0B;CAC1B,uBAAuB;CACvB;;AAED;CACC,WAAW;CACX,mBAAmB;CACnB,gBAAgB;CAChB,YAAY;CACZ,aAAa;CACb,kBAAkB;CAClB,mBAAmB;CACnB,mBAAmB;CACnB,mBAAmB;CACnB,YAAY;CACZ,0BAA0B;CAC1B,0CAA0C;CAC1C;;AAED;CACC,sBAAsB;CACtB,WAAW;CACX;;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,2BAA2B;CAC3B;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,aAAa;CACb;;AAED;CACC,aAAa;CACb;;AAED;CACC,aAAa;CACb;;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,aAAa;CACb,YAAY;CACZ;;AAED;CACC,YAAY;CACZ,sBAAsB;CACtB;;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,qBAAqB;CACrB;;AAED;;GAEG;;AAEH,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,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;CACC,WAAW;CACX,YAAY;CACZ,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,cAAc;CACd;;AAED;CACC,kBAAkB;CAClB,mBAAmB;CACnB,qBAAqB;CACrB,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB,uBAAuB;CACvB,gBAAgB;CAChB,iBAAiB;CACjB,uBAAuB;CACvB;;AAED;CACC,uBAAuB;CACvB,kBAAkB;CAClB,4BAA4B;CAC5B,uBAAuB;CACvB,oBAAoB;CACpB;;AAED;CACC,uBAAuB;CACvB,kBAAkB;CAClB,+BAA+B;CAC/B,uBAAuB;CACvB,oBAAoB;CACpB;;AAED;CACC,mBAAmB;CACnB,YAAY;CACZ;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,gBAAgB;CAChB,kBAAkB;CAClB,oBAAoB;CACpB;;AAED;;CAEC,iBAAiB;CACjB;;AAED;CACC,gBAAgB;CAChB,oBAAoB;CACpB;;AAED;CACC,YAAY;CACZ,iBAAiB;CACjB,mBAAmB;CACnB;;AAED;CACC,YAAY;CACZ;;AAED;CACC,YAAY;CACZ;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,eAAe;CACf;;AAED;CACC,wBAAwB;CACxB;;AAED;CACC,YAAY;CACZ;;AAED;CACC,2BAAuB;KAAvB,uBAAuB;CACvB,mBAAmB;CACnB,oBAAoB;CACpB;;AAED;CACC,YAAY;CACZ;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,cAAc;CACd,oBAAoB;CACpB,eAAe;CACf,eAAe;CACf,2CAA2C;CAC3C;;AAED;CACC,oBAAoB;CACpB,2CAA2C;CAC3C;;AAED;CACC,wBAAwB;CACxB,WAAW;CACX;;AAED;CACC,eAAe;CACf,iBAAiB;CACjB;;AAED;;CAEC;EACC,qBAAc;EAAd,cAAc;EACd,yBAAsB;MAAtB,sBAAsB;EACtB;;CAED;EACC,eAAW;MAAX,WAAW;EACX;;CAED;EACC,0BAA0B;EAC1B;;CAED;;AAED;;CAEC;;;EAGC,yBAAyB;EACzB,kBAAkB;EAClB,6BAA6B;EAC7B,aAAa;EACb,iBAAiB;EACjB,YAAY;EACZ;;CAED;EACC,aAAa;EACb;;CAED;EACC,gBAAgB;EAChB,UAAU;EACV,YAAY;EACZ,SAAS;EACT,UAAU;EACV,iBAAiB;EACjB,WAAW;EACX,wCAAwC;EACxC;;CAED;EACC,WAAW;EACX;;CAED;EACC,mBAAmB;EACnB;;CAED;;AAED;;CAEC;EACC,WAAW;EACX;;CAED;;AAED;;CAEC;EACC,gBAAgB;EAChB;;CAED;EACC,iBAAiB;EACjB;;CAED;EACC,mBAAmB;EACnB,gBAAgB;EAChB,kBAAkB;EAClB;;CAED;EACC,mBAAmB;EACnB,gBAAgB;EAChB,uBAAuB;EACvB,aAAa;EACb,oBAAoB;EACpB;;CAED;EACC,mBAAmB;EACnB,SAAS;EACT,SAAS;EACT;;CAED;EACC,eAAe;EACf,0BAA0B;EAC1B;;CAED;EACC,mBAAmB;EACnB;;CAED;EACC,UAAU;EACV,eAAe;EACf,YAAY;EACZ;;CAED;EACC,eAAe;EACf;;CAED;EACC,YAAY;EACZ,uBAAuB;EACvB,mBAAmB;EACnB;;CAED;EACC,gBAAgB;EAChB,UAAU;EACV,UAAU;EACV,YAAY;EACZ,uBAAuB;EACvB,mBAAmB;EACnB,4CAA4C;EAC5C,iBAAiB;EACjB,WAAW;EACX;;CAED;EACC,eAAe;EACf,mBAAmB;EACnB;;CAED;EACC,eAAe;EACf;;AAEF;;;;;;;;;IASI;;CAEH;EACC,oBAAoB;EACpB;;CAED;EACC,sBAAsB;EACtB;;CAED;EACC,UAAU;EACV,iBAAiB;EACjB,wBAAwB;EACxB;;CAED;EACC,aAAa;EACb,oBAAoB;EACpB,YAAY;EACZ,aAAa;EACb,iBAAiB;EACjB,WAAW;EACX,mBAAmB;EACnB,WAAW;EACX,WAAW;EACX,UAAU;EACV;;CAED;EACC,eAAe;EACf,sBAAsB;EACtB,yBAAyB;EACzB,YAAY;EACZ,WAAW;EACX,UAAU;EACV,oBAAoB;EACpB,iBAAiB;EACjB,yCAAyC;EACzC;;CAED;EACC,8BAA8B;EAC9B,eAAe;EACf,gBAAgB;EAChB,iBAAiB;EACjB,YAAY;EACZ,cAAc;EACd,UAAU;EACV;;CAED;EACC;;;IAGE;EACF,0BAA0B;EAC1B,kBAAkB;EAClB,eAAe;EACf,mBAAmB;EACnB,WAAW;EACX,qBAAqB;EACrB,YAAY;EACZ,iBAAiB;EACjB;;CAED;EACC,iBAAiB;EACjB;;CAED;EACC,eAAe;EACf,gBAAgB;EAChB;;CAED;EACC,iBAAiB;EACjB;;CAED;EACC,2BAAuB;MAAvB,uBAAuB;EACvB;;CAED;EACC,YAAY;EACZ;;CAED;EACC,iBAAiB;EACjB;;CAED;EACC,mBAAmB;EACnB;;CAED;EACC,uBAAuB;EACvB,+BAA+B;EAC/B;;CAED;EACC,kBAAkB;EAClB;;CAED;EACC,uBAAuB;EACvB,mBAAmB;EACnB,QAAQ;EACR,OAAO;EACP,uBAAuB;EACvB,aAAa;EACb,WAAW;EACX,aAAa;EACb,4CAA4C;EAC5C;;CAED;EACC,aAAa;EACb;;CAED;EACC,eAAe;EACf,gBAAgB;EAChB,YAAY;EACZ,gBAAgB;EAChB;;CAED;EACC,2BAAuB;MAAvB,uBAAuB;EACvB;;CAED;EACC,YAAY;EACZ,gBAAgB;EAChB,gBAAgB;EAChB,oBAAoB;EACpB;;CAED;EACC,qBAAqB;EACrB;;CAED;;AAED;;CAEC;EACC;;CAED;EACC,YAAY;EACZ,YAAY;EACZ,mBAAmB;EACnB;;CAED;EACC,cAAc;EACd;;CAED;EACC,mBAAmB;EACnB;;CAED;EACC,eAAe;EACf,YAAY;EACZ,UAAU;EACV,oBAAoB;EACpB;;CAED;;AAED;CACC;;AAED;;CAEC;EACC,WAAW;EACX;;CAED;EACC,oBAAoB;EACpB;;CAED;EACC,mBAAmB;EACnB;;CAED;EACC,kBAAkB;EAClB;;CAED;EACC,mCAAmC;EACnC;;CAED;EACC,2BAA2B;EAC3B;;CAED;;AAED;;CAEC;EACC,YAAY;EACZ,aAAa;EACb,2CAA2C;EAC3C,oBAAoB;EACpB;;CAED;EACC,mBAAmB;EACnB,iBAAiB;EACjB;;CAED;EACC,eAAe;EACf;;CAED;;AAED;;CAEC;EACC,wBAAwB;EACxB,oBAAoB;EACpB;;CAED;EACC,aAAa;EACb;;CAED;;AAED;;CAEC;EACC,YAAY;EACZ,oBAAoB;EACpB;;CAED;EACC,YAAY;EACZ;;CAED;EACC,eAAe;EACf;;CAED;EACC,qBAAc;EAAd,cAAc;EACd,oBAAgB;MAAhB,gBAAgB;EAChB;;CAED;EACC,eAAe;EACf;;CAED;EACC,YAAY;EACZ,oBAAoB;EACpB;;CAED;EACC,WAAW;EACX,uBAAuB;EACvB;;CAED;EACC,cAAc;EACd;;CAED;EACC,4BAA4B;EAC5B,kBAAkB;EAClB,YAAY;EACZ,eAAe;EACf;;CAED","file":"updraftplus-admin.min.css","sourcesContent":["@keyframes udp_blink {\n\n\tfrom {\n\t\topacity: 1;\n\t\ttransform: scale(1);\n\t}\n\n\tto {\n\t\topacity: 0.4;\n\t\ttransform: scale(0.85);\n\t}\n\n}\n\n/* Widths and sizing */\n.max-width-600 {\n\tmax-width: 600px;\n}\n\n.width-900 {\n\tmax-width: 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.udpdraft__lifted {\n\tbox-shadow: 0 1px 1px 0 rgba(0,0,0,.1);\n}\n\n#updraft-wrap a .dashicons {\n\ttext-decoration: none;\n}\n\n.updraft-field-description,\ntable.form-table td p.updraft-field-description {\n\tfont-size: 90%;\n\tline-height: 1.2;\n\tfont-style: italic;\n\tmargin-bottom: 5px;\n}\n\n/* Input boxes */\nlabel.updraft_checkbox {\n\tdisplay: block;\n\tmargin-bottom: 4px;\n\tmargin-left: 26px;\n}\n\nlabel.updraft_checkbox > input[type=checkbox] {\n\tmargin-left: -25px;\n}\n\ndiv[id*=\"updraft_include_\"] {\n\tmargin-bottom: 9px;\n}\n\n/* Input boxes */\n.settings_page_updraftplus input[type=\"file\"] {\n\tborder: none;\n}\n\n.settings_page_updraftplus .wipe_settings {\n\tpadding-bottom: 10px;\n}\n\n.settings_page_updraftplus input[type=\"text\"] {\n\tfont-size: 14px;\n}\n\n.settings_page_updraftplus select {\n\tborder-radius: 4px;\n\tmax-width: 100%;\n}\n\ninput.updraft_input--wide,\ntextarea.updraft_input--wide {\n\tmax-width: 442px;\n\twidth: 100%;\n}\n\n#updraft-wrap .button-large {\n\tfont-size: 1.3em;\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\np.updraftplus-option {\n\tmargin-top: 0;\n\tmargin-bottom: 5px;\n}\n\np.updraftplus-option-inline {\n\tdisplay: inline-block;\n\tpadding-right: 20px;\n}\n\nspan.updraftplus-option-label {\n\tdisplay: block;\n}\n\n/*\n* MIGRATE - CLONE\n*/\n\n#updraft-navtab-migrate-content .postbox {\n\tpadding: 18px;\n}\n\n/* Clone Rows */\n\n.updraftclone-main-row {\n\tdisplay: flex;\n}\n\n.updraftclone-tokens {\n\tbackground: #F5F5F5;\n\tpadding: 20px;\n\tborder-radius: 10px;\n\tmargin-right: 20px;\n\tmax-width: 300px;\n}\n\n.updraftclone-tokens p {\n\tmargin: 0;\n}\n\n.updraftclone_action_box {\n\tbackground: #F5F5F5;\n\tpadding: 20px;\n\tborder-radius: 10px;\n\tflex: 1;\n}\n\n.updraftclone_action_box p:first-child {\n\tmargin-top: 0;\n}\n\n.updraftclone_action_box p:last-child {\n\tmargin-bottom: 0;\n}\n\nspan.tokens-number {\n\tfont-size: 46px;\n\tdisplay: block;\n}\n\n/* Clone header button */\n.button.updraft_migrate_widget_temporary_clone_show_stage0 {\n\tdisplay: none;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\theight: 100%;\n\tborder-left: 1px solid #CCC;\n\tpadding-left: 10px;\n\tpadding-right: 10px;\n}\n\n.updraft_migrate_widget_temporary_clone_stage0_container {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.updraft_migrate_widget_temporary_clone_stage0_box {\n\tmargin-right: 20px;\n\twidth: 100%;\n\tflex-basis: 100%;\n}\n\n.updraft_migrate_widget_temporary_clone_stage0_box iframe,\n.updraft_migrate_widget_temporary_clone_stage0_box a.udp-replace-with-iframe--js {\n\tfloat: none;\n}\n\n@media (min-width: 1024px) {\n\n\t.updraft_migrate_widget_temporary_clone_stage0_container {\n\t\tflex-direction: row;\n\t\tflex-wrap: wrap;\n\t}\n\n\t.updraft_migrate_widget_temporary_clone_stage0_box {\n\t\tflex-basis: 45%;\n\t}\n\n\t.updraft_migrate_widget_temporary_clone_stage0_box iframe,\n\t.updraft_migrate_widget_temporary_clone_stage0_box a.udp-replace-with-iframe--js {\n\t\tfloat: right;\n\t}\n\n}\n\n.updraft_migrate_widget_temporary_clone_show_stage0 .dashicons {\n\ttext-decoration: none;\n\tfont-size: 20px;\n\tline-height: inherit;\n}\n\n.opened .button.updraft_migrate_widget_temporary_clone_show_stage0 {\n\tdisplay: inline-block;\n}\n\n.opened .updraft_migrate_widget_temporary_clone_stage0 {\n\tbackground: #F5F5F5;\n\tpadding: 20px;\n\tborder-radius: 8px;\n\tmargin-bottom: 21px;\n}\n\n/* Clone list table */\n.clone-list {\n\tclear: both;\n\twidth: 100%;\n\tmargin-top: 40px;\n}\n\n.clone-list table {\n\twidth: 100%;\n\ttext-align: left;\n}\n\n.clone-list table tr th {\n\tbackground: #E4E4E4;\n}\n\n.clone-list table tr td {\n\tbackground: #F5F5F5;\n\tword-break: break-word;\n}\n\n.clone-list table tr:nth-child(odd) td {\n\tbackground: #FAFAFA;\n}\n\n.clone-list table td,\n.clone-list table th {\n\tpadding: 6px;\n}\n\n/* Clone Progress */\n.updraftplus-clone .updraft_row {\n\tpadding-left: 0;\n\tpadding-right: 0;\n}\n\nbutton#updraft_migrate_createclone + .updraftplus_spinner {\n\tmargin-top: 13px;\n}\n\n/* Clone - Show step 1 info button */\n.button.button-hero.updraftclone_show_step_1 {\n\twhite-space: normal;\n\theight: auto;\n\tline-height: 14px;\n\tpadding-top: 10px;\n\tpadding-bottom: 10px;\n}\n\n.button.button-hero.updraftclone_show_step_1 span.dashicons {\n\theight: auto;\n}\n\n.updraftplus_clone_status {\n\tcolor: red;\n}\n\n/* MIGRATE */\n\na.updraft_migrate_add_site--trigger span.dashicons {\n\ttext-decoration: none;\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#updraft_migrate_tab_main {\n\tpadding: 8px;\n}\n\n.updraft_migrate_widget_module_content {\n\tbackground: #FFF;\n\tborder-radius: 0;\n\tposition: relative;\n}\n\nbody.js #updraft_migrate .updraft_migrate_widget_module_content {\n\tdisplay: none;\n}\n\n.updraft_migrate_widget_module_content > h3,\ndiv[class*=\"updraft_migrate_widget_temporary_clone_stage\"] > h3 {\n\tmargin-top: 0;\n}\n\n/* Migrate / Clone headers */\n.updraft_migrate_widget_module_content header {\n\tposition: relative;\n\tdisplay: flex;\n\talign-content: center;\n\tjustify-items: center;\n\tmargin-top: -18px;\n\tmargin-left: -18px;\n\tmargin-right: -18px;\n\tmargin-bottom: 15px;\n\tborder-bottom: 1px solid #CCC;\n}\n\n.updraft_migrate_widget_module_content header h3,\n.updraft_migrate_widget_module_content header button.button.close {\n\tpadding: 10px;\n\tline-height: 20px;\n\theight: auto;\n\tmargin: 0;\n}\n\n.updraft_migrate_widget_module_content button.button.close {\n\ttext-decoration: none;\n\tpadding-left: 5px;\n\tborder-right: 1px solid #CCC;\n}\n\n.updraft_migrate_widget_module_content button.button.close .dashicons {\n\tmargin-top: 1px;\n}\n\n.updraft_migrate_widget_module_content header h3 {\n\tmargin: 0;\n}\n\n.updraft_migrate_intro button.button.button-primary.button-hero {\n\tmax-width: 235px;\n\tword-wrap: normal;\n\twhite-space: normal;\n\tline-height: 1;\n\theight: auto;\n\tpadding-top: 13px;\n\tpadding-bottom: 13px;\n\ttext-align: left;\n\tposition: relative;\n\tmargin-right: 10px;\n\tmargin-bottom: 10px;\n}\n\n.updraft_migrate_intro button.button.button-primary.button-hero .dashicons {\n\tposition: absolute;\n\tleft: 10px;\n\ttop: calc(50% - 8px);\n}\n\n/*\njquery UI Accordion module\n*/\n#updraft_migrate .ui-widget-content a {\n\tcolor: #1C94C4;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header {\n\tbackground: #F6F6F6;\n\tmargin: 0;\n\tborder-radius: 0;\n\tpadding-left: 0.5em;\n\tpadding-right: 0.7em;\n}\n\n#updraft-wrap .ui-widget {\n\tfont-family: inherit;\n}\n\n.ui-accordion-header .ui-accordion-header-icon.ui-icon-caret-1-w {\n\tbackground-position: -96px 0px;\n}\n\n.ui-accordion-header .ui-accordion-header-icon.ui-icon-caret-1-s {\n\tbackground-position: -64px 0;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header .ui-accordion-header-icon {\n\tleft: auto;\n\tright: 5px;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header:focus {\n\toutline: none;\n\tbox-shadow: 0 0 0 1px rgba(91, 157, 217, 0.22), 0 0 2px 1px rgba(30, 140, 190, 0.3);\n\tbackground: #FFF;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header:focus .dashicons {\n\tcolor: #0572AA;\n\topacity: 1;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header.ui-state-active {\n\tbackground: #F6F6F6;\n\tborder-bottom: 2px solid #0572AA;\n\tbox-shadow: 1px 6px 12px -5px rgba(0, 0, 0, 0.3);\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header.ui-state-active:focus {\n\tbox-shadow: 1px 6px 12px -5px rgba(0, 0, 0, 0.3), 0 0 0 1px #5B9DD9, 0 0 2px 1px rgba(30, 140, 190, .8);\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header:not(:first-child) {\n\tborder-top: none;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header .dashicons {\n\topacity: 0.4;\n\tmargin-right: 10px;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header:focus {\n\toutline: none;\n\tbox-shadow: 0 0 0 1px #5B9DD9, 0 0 2px 1px rgba(30, 140, 190, .8);\n\tz-index: 1;\n}\n\n.updraft_next_scheduled_backups_wrapper {\n\tdisplay: flex;\n\tbackground: #FFF;\n\tjustify-items: center;\n\tflex-wrap: wrap;\n}\n\n.updraft_next_scheduled_backups_wrapper > div {\n\twidth: 50%;\n\tbackground: #FFF;\n\theight: auto;\n\t/* padding: 18px 33px; */\n\tpadding: 33px;\n\tbox-sizing: border-box;\n}\n\n.updraft_backup_btn_wrapper {\n\ttext-align: center;\n\tborder-left: 1px solid #F1F1F1;\n\tjustify-content: center;\n\talign-items: center;\n}\n\n.incremental-backups-only {\n\tdisplay: none;\n}\n\n.incremental-free-only {\n\tdisplay: none;\n}\n\n.incremental-free-only p {\n\tpadding: 5px;\n\tbackground: rgba(255, 0, 0, 0.06);\n\tborder: 1px solid #BFBFBF;\n}\n\n#updraft-delete-waitwarning span.spinner {\n\tvisibility: visible;\n\tfloat: none;\n\tmargin: 0;\n\tmargin-right: 10px;\n}\n\nbutton#updraft-backupnow-button .spinner,\nbutton#updraft-backupnow-button .dashicons-yes {\n\tdisplay: none;\n}\n\nbutton#updraft-backupnow-button.loading .spinner {\n\tdisplay: inline-block;\n\tvisibility: visible;\n\tmargin-top: 13px;\n\tmargin-right: 0;\n}\n\nbutton#updraft-backupnow-button.loading {\n\tbackground-color: #EFEFEF;\n\tborder-color: #CCC;\n\ttext-shadow: 0 -1px 1px #BBC3C7, 1px 0 1px #BBC3C7, 0 1px 1px #BBC3C7, -1px 0 1px #BBC3C7;\n\tbox-shadow: none;\n}\n\nbutton#updraft-backupnow-button.finished .dashicons-yes {\n\tdisplay: inline-block;\n\tvisibility: visible;\n\tfont-size: 42px;\n\tmargin-right: 0;\n\tmargin-top: 2px;\n}\n\n.updraft_next_scheduled_entity {\n\twidth: 50%;\n\tdisplay: inline-block;\n\tfloat: left;\n\t/*\n\tpadding: 20px 20px 10px 20px;\n\t*/\n}\n\n.updraft_next_scheduled_entity .dashicons {\n\tcolor: #CCC;\n\tfont-size: 20px;\n}\n\n.updraft_next_scheduled_entity strong {\n\tfont-size: 20px;\n}\n\n.updraft_next_scheduled_heading {\n\tmargin-bottom: 10px;\n}\n\n.updraft_next_scheduled_date_time {\n\tcolor: #46A84B;\n}\n\n.updraft_time_now_wrapper {\n\tmargin-top: 68px;\n\twidth: 100%;\n}\n\n.updraft_time_now_label, .updraft_time_now {\n\tdisplay: inline-block;\n\tpadding: 7px;\n}\n\n.updraft_time_now_label {\n\tbackground: #B7B7B7;\n\tborder-top-left-radius: 4px;\n\tborder-bottom-left-radius: 4px;\n\tcolor: #FFF;\n\tmargin-right: 0;\n\ttext-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);\n}\n\n.updraft_time_now {\n\tbackground: #F1F1F1;\n\tborder-top-right-radius: 4px;\n\tborder-bottom-right-radius: 4px;\n\tmargin-left: -3px;\n}\n\n#updraft_lastlogmessagerow {\n\tmargin: 6px 0;\n}\n\n#updraft_lastlogmessagerow {\n\tclear: both;\n\tpadding: 0.25px 0;\n}\n\n#updraft_lastlogmessagerow .updraft-log-link {\n\tfloat: right;\n\tmargin-top: -2.5em;\n\tmargin-right: 2px;\n}\n\n#updraft_lastlogmessagerow > div {\n\tclear: both;\n\tbackground: #FFF;\n\tpadding: 18px;\n}\n\n#updraft_activejobs_table {\n\toverflow: hidden;\n\twidth: 100%;\n\tbackground: #FAFAFA;\n\tpadding: 0;\n}\n\n.updraft_requeststart {\n\tpadding: 15px 33px;\n\ttext-align: center;\n}\n\n.updraft_requeststart .spinner {\n\tvisibility: visible;\n\tfloat: none;\n\tvertical-align: middle;\n\tmargin-top: -2px;\n}\n\na.updraft_jobinfo_delete.disabled {\n\topacity: 0.4;\n\tcolor: inherit;\n\ttext-decoration: none;\n}\n\n.updraft_row {\n\tclear: both;\n\ttransition: 0.3s all;\n\tpadding: 15px 33px;\n}\n\n.updraft_row.deleting {\n\topacity: 0.4;\n}\n\n.updraft_progress_container {\n\t/* width: 83%; */\n}\n\n.updraft_existing_backups_count {\n\tpadding: 2px 8px;\n\tfont-size: 12px;\n\tbackground: #CA4A1E;\n\tcolor: #FFF;\n\tfont-weight: bold;\n\tborder-radius: 10px;\n}\n\n.form-table .existing-backups-table input[type=\"checkbox\"] {\n\tborder-radius: 0;\n}\n\n.form-table .existing-backups-table .check-column {\n\twidth: 40px;\n\tpadding: 0;\n\tpadding-top: 8px;\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, #updraft-delete-waitwarning > .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\nspan#updraft_lastlogcontainer {\n\tword-break: break-all;\n}\n\n.stored_icon {\n\theight: 1.3em;\n\tposition: relative;\n\ttop: 0.2em;\n}\n\n.backup_date_label > * {\n\tvertical-align: middle;\n}\n\n.backup_date_label .dashicons {\n\tfont-size: 18px;\n}\n\n.backup_date_label .clear-right {\n\tclear: right;\n}\n\n.existing-backups-table .backup_date_label > div, .existing-backups-table .backup_date_label span > div {\n\tfont-weight: bold;\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_exclude_container,\n.updraft_include_container {\n\tmargin-left: 24px;\n\tmargin-top: 5px;\n\tmargin-bottom: 10px;\n\tpadding: 15px;\n\tborder: 1px solid #DDD;\n}\n\nlabel.updraft-exclude-label {\n\tfont-weight: 500;\n\tmargin-bottom: 5px;\n\tdisplay: block;\n}\n\n.updraft_add_exclude_item,\n#updraft_include_more_paths_another {\n\tdisplay: inline-block;\n\tmargin-top: 10px;\n}\n\ninput.updraft_exclude_entity_field,\n.form-table td input.updraft_exclude_entity_field,\n.updraftplus-morefiles-row input[type=text] {\n\twidth: calc(100% - 70px);\n\tmax-width: 400px;\n}\n\n@media screen and (max-width: 782px) {\n\n\t.form-table td input.updraft_exclude_entity_field,\n\t.form-table td .updraftplus-morefiles-row input[type=text] {\n\t\tdisplay: inline-block;\n\t}\n\n}\n\n.updraft_exclude_entity_delete.dashicons, .updraft_exclude_entity_edit.dashicons, .updraft_exclude_entity_update.dashicons, .updraftplus-morefiles-row a.dashicons {\n\tmargin-top: 2px;\n\tfont-size: 20px;\n\tbox-shadow: none;\n\tline-height: 1;\n\tpadding: 3px;\n\tmargin-right: 4px;\n}\n\n.updraft_exclude_entity_delete,\n.updraft_exclude_entity_delete:hover,\n.updraftplus-morefiles-row-delete {\n\tcolor: #FF6347;\n}\n\n.updraft_exclude_entity_update.dashicons, .updraft_exclude_entity_update.dashicons:hover {\n\tcolor: #008000;\n\tfont-weight: bold;\n\tfont-size: 22px;\n\tmargin-left: 4px;\n}\n\n.updraft_exclude_entity_edit {\n\tmargin-left: 4px;\n}\n\n.updraft_exclude_entity_update.is-active ~ .updraft_exclude_entity_delete {\n\tdisplay: none;\n}\n\n.updraft-exclude-panel-heading {\n\tmargin-bottom: 8px;\n}\n\n.updraft-exclude-panel-heading h3 {\n\tmargin: 0.5em 0 0.5em 0;\n}\n\n.updraft-exclude-submit.button-primary {\n\tmargin-top: 5px;\n}\n\n.updraft_exclude_actions_list {\n\tfont-weight: bold;\n}\n\n.updraft-exclude-link {\n\tcursor: pointer;\n}\n\n#updraft_include_more_options {\n\tpadding-left: 25px;\n}\n\n#updraft_report_cell .updraft_reportbox,\n.updraft_small_box {\n\tpadding: 12px;\n\tmargin: 8px 0;\n\tborder: 1px solid #CCC;\n\tposition: relative;\n}\n\n#updraft_report_cell button.updraft_reportbox_delete,\n.updraft_box_delete_button,\n.updraft_small_box .updraft_box_delete_button {\n\tpadding: 4px;\n\tpadding-top: 6px;\n\tborder: none;\n\tbackground: transparent;\n\tposition: absolute;\n\ttop: 4px;\n\tright: 4px;\n\tcursor: pointer;\n}\n\n#updraft_report_cell button.updraft_reportbox_delete:hover {\n\tcolor: #DE3C3C;\n}\n\na.updraft_report_another .dashicons {\n\ttext-decoration: none;\n\tmargin-top: 2px;\n}\n\n.updraft_report_dbbackup.updraft_report_disabled {\n\tcolor: #CCC;\n}\n\n#updraft-navtab-settings-content .updraft-test-button {\n\tfont-size: 18px !important;\n}\n\n#updraft_report_cell .updraft_report_email {\n\tdisplay: block;\n\twidth: calc(100% - 50px);\n\tmargin-bottom: 9px;\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#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected td {\n\tbackground-color: #EFEFEF;\n}\n\n#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected:nth-child(even) td {\n\tbackground-color: #E8E8E8;\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\ntr[class*=\"_updraft_remote_storage_border\"] {\n\tborder-top: 1px solid #CCC;\n}\n\n.updraft_multi_storage_options {\n\tfloat: right;\n\tclear: right;\n\tmargin-bottom: 5px !important;\n}\n\n.updraft_toggle_instance_label {\n\tvertical-align: top !important;\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, .onedrive_folder_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_jstree .jstree-container-ul > .jstree-node,\n#updraft_more_files_jstree .jstree-container-ul > .jstree-node {\n\tbackground: transparent;\n}\n\n.updraft_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_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_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_jstree_info_container {\n\tposition: relative;\n\theight: auto;\n\twidth: 100%;\n\tborder: 1px dotted;\n\tmargin-bottom: 5px;\n}\n\n.updraft_jstree_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_exclude_files_folders_jstree {\n\tmax-height: 200px;\n\toverflow-y: scroll;\n}\n\n.updraft_jstree {\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\twidth: 100%;\n\tborder: 1px solid #CCC;\n\tbackground: #FAFAFA;\n\tmargin-bottom: 5px;\n\tmargin-top: 4px;\n\tbox-shadow: 0 5px 8px rgba(0, 0, 0, 0.1);\n}\n\ndiv#updraft_more_files_container::before {\n\tcontent: ' ';\n\twidth: 11px;\n\theight: 11px;\n\tdisplay: block;\n\tbackground: #FAFAFA;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 20px;\n\tborder-top: 1px solid #CCC;\n\tborder-left: 1px solid #CCC;\n\ttransform: translatey(-7px) rotate(45deg);\n}\n\ninput.updraft_more_path_editing {\n\tborder-color: #0285BA;\n}\n\ninput.updraft_more_path_editing ~ a.dashicons {\n\tdisplay: none;\n}\n\n#updraft_jstree_buttons {\n\tpadding: 10px;\n\tbackground: #E6E6E6;\n}\n\n#updraft_jstree_container {\n\theight: 300px;\n\twidth: 100%;\n\toverflow: auto;\n}\n\n#updraft_more_files_container button {\n\tline-height: 20px;\n}\n\n#updraft_parent_directory {\n\tmargin: 10px 10px 4px 10px;\n\tpadding-left: 3px;\n}\n\n#updraft_jstree_confirm, #updraft_jstree_cancel {\n\tdisplay: none;\n}\n\n.updraftplus-morefiles-row-delete,\n.updraftplus-morefiles-row-edit {\n\tcursor: pointer;\n}\n\n#updraft-wrap .form-table th {\n\twidth: 230px;\n}\n\n#updraft-wrap .form-table .existing-backups-table th {\n\twidth: auto;\n}\n\n.updraft-viewlogdiv form {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.updraft-viewlogdiv {\n\tdisplay: inline-block;\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 input:hover, .updraft-viewlogdiv a:hover {\n\tcolor: #FFF;\n\tcursor: pointer;\n}\n\n.button.button-remove {\n\tcolor: white;\n\tbackground-color: #DE3C3C;\n\tborder-color: #C00000;\n\tbox-shadow: 0 1px 0 #C10100;\n}\n\n.button.button-remove:hover,\n.button.button-remove:focus {\n\tborder-color: #C00;\n\tcolor: #FFF;\n\tbackground: #C00;\n}\n\n/* button-remove colors for midnight admin theme */\nbody.admin-color-midnight .button.button-remove {\n\tcolor: #DE3C3C;\n\tbackground-color: #F7F7F7;\n\tborder-color: #CCC;\n\tbox-shadow: 0 1px 0 #CCC;\n}\n\nbody.admin-color-midnight .button.button-remove:hover, body.admin-color-midnight .button.button-remove:focus {\n\tborder-color: #BA281F;\n}\n\nbody.admin-color-midnight .button.button-remove:focus {\n\tbox-shadow: inherit;\n\tbox-shadow: 0 0 3px rgba(0, 115, 170, 0.8);\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: 1px;\n\tbackground: #ECECEC;\n\tborder: solid 1px #CCC;\n\tmargin: 4px 0;\n}\n\n.updraft_premium section {\n\tmargin-bottom: 20px;\n}\n\n/*\n\tCall to action Premium\n*/\n.updraft_premium_cta {\n\tbackground: #FFF;\n\tmargin-top: 30px;\n\tpadding: 0;\n\tborder-left: 4px solid #DB6A03;\n}\n\n.updraft_premium_cta a {\n\tfont-weight: normal;\n}\n\n.updraft_premium_cta a.button.button-primary.button-hero {\n\tfont-size: 1.3em;\n\tletter-spacing: 0.03rem;\n\ttext-transform: uppercase;\n}\n\n.updraft_premium_cta__top {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: 18px 30px;\n}\n\n.updraft_premium_cta__bottom {\n\tbackground: #F9F9F9;\n\tpadding: 5px 30px;\n}\n\n.updraft_premium_cta__summary {\n\tmargin-right: 60px;\n}\n\n.updraft_premium_cta h2 {\n\tfont-size: 28px;\n\tfont-weight: 200;\n\tline-height: 1;\n\tmargin: 0;\n\tmargin-bottom: 5px;\n\tletter-spacing: 0.05rem;\n\tcolor: #DB6A03;\n}\n\n.updraft_premium_cta ul li::after {\n\tcolor: #CCC;\n}\n\n@media only screen and (max-width: 768px) {\n\n\t.updraft_premium_cta__top {\n\t\tflex-direction: column;\n\t\ttext-align: center;\n\t\talign-items: center;\n\t}\n\n\t.updraft_premium_cta__summary {\n\t\tmargin-right: 0;\n\t\tmargin-bottom: 30px;\n\t}\n\n}\n\n/*\n\tBox\n*/\n.udp-box {\n\tbackground: #FFF;\n\tpadding: 20px;\n\tbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n\ttext-align: center;\n}\n\n.udp-box h3 {\n\tmargin: 0;\n}\n\n.udp-box__heading {\n\talign-self: center;\n\tbackground: none;\n\tbox-shadow: none;\n}\n\n/*\n\tOther Plugins\n*/\n.updraft-more-plugins {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: wrap;\n\tjustify-content: space-between;\n\tflex-wrap: wrap;\n}\n\n.updraft-more-plugins img {\n\tmax-width: 200px;\n\twidth: 100%;\n\tdisplay: inline-block;\n}\n\n.updraft-more-plugins .udp-box {\n\tbox-sizing: border-box;\n\twidth: 24%;\n}\n\n.updraft-more-plugins .udp-box p:last-child {\n\tmargin-bottom: 0;\n\tpadding-bottom: 0;\n}\n\n/*\n\tlinks list\n*/\n.updraft_premium_description_list {\n\ttext-align: left;\n\tmargin: 0;\n\tfont-size: 12px;\n}\n\nul.updraft_premium_description_list, ul#updraft_restore_warnings {\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-child::after {\n\tcontent: \"\";\n}\n\n.updraft_feature_cell {\n\tbackground-color: #F7D9C9 !important;\n\tpadding: 5px 10px;\n}\n\n.updraftplus_com_login_status, .updraftplus_com_key_status {\n\tdisplay: none;\n\tborder-left-color: #DC3232 !important;\n\tbackground: #FFF;\n\tborder-left: 4px solid #FFF;\n\tbox-shadow: 0 1px 1px 0 rgba(0,0,0,.1);\n\tmargin: 5px 0 15px 0;\n\tpadding: 5px 12px;\n}\n\n.updraft_feat_table {\n\tborder: none;\n\tborder-collapse: collapse;\n\tfont-size: 120%;\n\tbackground-color: white;\n\ttext-align: center;\n}\n\n.updraft_feat_th, .updraft_feat_table td {\n\tborder: 1px solid #F1F1F1;\n\tborder-collapse: collapse;\n\tfont-size: 120%;\n\tbackground-color: white;\n\ttext-align: center;\n\tpadding: 15px;\n}\n\n.updraft_feat_table td {\n\tborder-bottom-width: 4px;\n}\n\n.updraft_feat_table td:first-child {\n\tborder-left: none;\n}\n\n.updraft_feat_table td:last-child {\n\tborder-right: none;\n}\n\n.updraft_feat_table tr:last-child td {\n\tborder-bottom: none;\n}\n\n.updraft_feat_table td:nth-child(2),\n.updraft_feat_table td:nth-child(3) {\n\tbackground-color: rgba(241, 241, 241, 0.38);\n\twidth: 190px;\n}\n\n.updraft_feat_table__header td img {\n\tdisplay: block;\n\tmargin: 0 auto;\n}\n\n.updraft_feat_table__header td {\n\ttext-align: center;\n}\n\n.updraft_feat_table .installed {\n\tfont-size: 14px;\n}\n\n.updraft_feat_table p {\n\tpadding: 0px 10px;\n\tmargin: 5px 0px;\n\tfont-size: 13px;\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.ud_downloadstatus__close {\n\tborder: none;\n\tbackground: transparent;\n\twidth: auto;\n\tfont-size: 20px;\n\tpadding: 0;\n\tcursor: pointer;\n}\n\n#filelist .fileprogress, #filelist2 .fileprogress, .ud_downloadstatus .dlfileprogress, #ud_downloadstatus2 .dlfileprogress {\n\twidth: 0%;\n\tbackground: #0572AA;\n\theight: 8px;\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\ndiv[class^=\"updraftplus_downloader_container_\"] {\n\tpadding: 10px;\n}\n\ntr.updraftplusmethod h3 {\n\tmargin: 0px;\n}\n\ntr.updraftplusmethod img {\n\tmax-width: 100%;\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\ttext-decoration: none;\n\tdisplay: inline-block;\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/* backup finished */\n.blockUI.blockOverlay.ui-widget-overlay {\n\tbackground: #000;\n}\n\n.updraft_success_popup {\n\ttext-align: center;\n\tpadding-bottom: 30px;\n}\n\n.updraft_success_popup > .dashicons {\n\tfont-size: 100px;\n\twidth: 100px;\n\theight: 100px;\n\tline-height: 100px;\n\tpadding: 0px;\n\tborder-radius: 50%;\n\tmargin-top: 30px;\n\tdisplay: block;\n\tmargin-left: auto;\n\tmargin-right: auto;\n\tbackground: #E2E6E5;\n}\n\n.updraft_success_popup > .dashicons.dashicons-yes {\n\ttext-indent: -5px;\n}\n\n.updraft_success_popup.success > .dashicons {\n\tcolor: green;\n}\n\n.updraft_success_popup.warning > .dashicons {\n\tcolor: #888;\n}\n\n.updraft_success_popup--message {\n\tpadding: 20px;\n}\n\n.button.updraft-close-overlay .dashicons {\n\ttext-decoration: none;\n\tfont-size: 20px;\n\tmargin-left: -5px;\n\tpadding: 0;\n}\n\n.updraft_saving_popup img {\n\tanimation-name: udp_blink;\n\tanimation-duration: 610ms;\n\tanimation-iteration-count: infinite;\n\tanimation-direction: alternate;\n\tanimation-timing-function: ease-out;\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.updraft_all-files {\n\tcolor: blue;\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\t/* font-size: 115%; */\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_activejobsrow th {\n\tmax-width: 112px;\n\tmargin: 0;\n\tpadding: 13px 0 0 0;\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}\n\n.download-backups .ud-whitespace-warning, .download-backups .ud-bom-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\tmargin: 16px 0;\n}\n\n.download-backups .upload {\n\tmax-width: 610px;\n}\n\n.download-backups #plupload-upload-ui {\n\twidth: 100%;\n}\n\n.ud_downloadstatus {\n\tpadding: 10px 0;\n}\n\n#ud_massactions, #updraft-delete-waitwarning {\n\tpadding: 14px;\n\tbackground: rgb(241, 241, 241);\n\tposition: absolute;\n\tleft: 0;\n\ttop: 100%;\n}\n\n#ud_massactions > *, #updraft-delete-waitwarning > * {\n\tvertical-align: middle;\n}\n\n#ud_massactions .updraftplus-remove {\n\tdisplay: inline-block;\n\tmargin-right: 0;\n}\n\n#ud_massactions .updraftplus-remove a {\n\ttext-decoration: none;\n}\n\n#ud_massactions .updraft-viewlogdiv a {\n\ttext-decoration: none;\n\tposition: relative;\n}\n\nsmall.ud_massactions-tip {\n\tdisplay: inline-block;\n\topacity: 0.5;\n\tfont-style: italic;\n\tmargin-left: 20px;\n}\n\n#updraft-navtab-backups-content .updraft_existing_backups {\n\tmargin-bottom: 35px;\n\tposition: relative;\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\tmax-width: 140px;\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\twidth: 100%;\n\ttext-align: center;\n\tpadding: 33px;\n}\n\n.job-id {\n\tmargin-top: 0;\n\tmargin-bottom: 8px;\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: #1D8EC2;\n\ttransition: width 0.3s;\n}\n\n.curstage {\n\tz-index: 1;\n\tborder-radius: 2px;\n\tmargin-top: 8px;\n\twidth: 100%;\n\theight: 26px;\n\tline-height: 26px;\n\tposition: relative;\n\ttext-align: center;\n\tfont-style: italic;\n\tcolor: #FFF;\n\tbackground-color: #B7B7B7;\n\ttext-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n}\n\n.curstage-info {\n\tdisplay: inline-block;\n\tz-index: 2;\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.updraft_existing_backups_wrapper {\n\tmargin-top: 20px;\n\tborder-top: 1px solid #DDD;\n}\n\n.updraft-no-backups-msg {\n\ttext-align: center;\n}\n\n.tr-bottom-4 {\n\tmargin-bottom: 4px;\n}\n\n.existing-backups-table th {\n\tpadding: 8px 10px;\n}\n\n.form-table .backup-date {\n\twidth: 172px;\n}\n\n.form-table .backup-data {\n\twidth: 426px;\n}\n\n.form-table .updraft_backup_actions {\n\twidth: 272px;\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.updraftplus-upload {\n\tmargin-right: 6px;\n\tfloat: left;\n\tclear: none;\n}\n\n.before-restore-button {\n\tpadding: 1px;\n\tmargin: 0px;\n}\n\n.before-restore-button div {\n\tfloat: none;\n\tdisplay: inline-block;\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_delete_old_dirs_pagediv {\n\tpadding-bottom: 10px;\n}\n\n/*#updraft_lastlogmessagerow > td, #updraft_last_backup > td {\n\tpadding: 0;\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/* 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:first-child {\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.updraftcentral_wizard_option {\n\twidth: 45%;\n\tfloat: left;\n\ttext-align: center;\n}\n\n.updraftcentral_wizard_option label {\n\tmargin-bottom: 8px;\n}\n\n#updraftcentral_keys_table {\n\tdisplay: none;\n}\n\n.create_key_container {\n\tborder: 1px solid;\n\tborder-radius: 4px;\n\tpadding: 0 0 6px 6px;\n\tmargin-bottom: 8px;\n}\n\n.updraftcentral_cloud_connect {\n\tborder-radius: 4px;\n\tborder: 1px solid #000;\n\tpadding: 0 20px;\n\tmargin-top: 30px;\n\tbackground-color: #FFF;\n}\n\n.updraftcentral_cloud_error {\n\tborder: 1px solid #000;\n\tpadding: 3px 10px;\n\tborder-left: 3px solid #F00;\n\tbackground-color: #FFF;\n\tmargin-bottom: 10px;\n}\n\n.updraftcentral_cloud_info {\n\tborder: 1px solid #000;\n\tpadding: 3px 10px;\n\tborder-left: 3px solid #EF8F31;\n\tbackground-color: #FFF;\n\tmargin-bottom: 10px;\n}\n\n.updraftplus_spinner.spinner {\n\tpadding-left: 25px;\n\tfloat: none;\n}\n\n.updraftplus_spinner.spinner.visible {\n\tvisibility: visible;\n}\n\n.updraftcentral_cloud_notices .updraftplus_spinner {\n\tmargin-top: -5px;\n}\n\n.updraftcentral-subheading {\n\tfont-size: 14px;\n\tmargin-top: -10px;\n\tmargin-bottom: 20px;\n}\n\n#updraftcentral_cloud_form input#email,\n#updraftcentral_cloud_form input#password {\n\tmin-width: 250px;\n}\n\n.updraftcentral-data-consent {\n\tfont-size: 13px;\n\tmargin-bottom: 10px;\n}\n\n.updraftcentral_cloud_wizard_image {\n\tfloat: left;\n\tmin-width: 100px;\n\tmargin-right: 25px;\n}\n\n.updraftcentral_cloud_wizard {\n\tfloat: left;\n}\n\n.updraftcentral_cloud_clear {\n\tclear: both;\n}\n\n.updraftplus-settings-footer {\n\tmargin-top: 30px;\n}\n\n.updraftplus-top-menu {\n\tpadding: 0.5em;\n}\n\n#updraft_inpage_backup #updraft_activejobs_table {\n\tbackground: transparent;\n}\n\n#updraft_inpage_backup #updraft_lastlogmessagerow .updraft-log-link {\n\tfloat: none;\n}\n\n#updraft_inpage_backup #updraft_activejobsrow .updraft_row {\n\tflex-direction: column;\n\tpadding-left: 20px;\n\tpadding-right: 20px;\n}\n\n#updraft_inpage_backup #updraft_activejobsrow .updraft_progress_container {\n\twidth: 100%;\n}\n\n#updraft_inpage_backup #updraft_activejobs_table {\n\toverflow: inherit;\n}\n\n#updraft_inpage_backup span#updraft_lastlogcontainer {\n\tpadding: 18px;\n\tbackground: #FAFAFA;\n\tdisplay: block;\n\tfont-size: 90%;\n\tbox-shadow: 0px 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n#updraft_inpage_backup div#updraft_activejobsrow {\n\tbackground: #FAFAFA;\n\tbox-shadow: 0px 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n#updraft_inpage_backup #updraft_lastlogmessagerow > div {\n\tbackground: transparent;\n\tpadding: 0;\n}\n\n#updraft_inpage_backup .last-message > strong {\n\tdisplay: block;\n\tmargin-top: 13px;\n}\n\n@media only screen and (min-width: 1024px) {\n\n\t#updraft_activejobsrow .updraft_row {\n\t\tdisplay: flex;\n\t\talign-items: baseline;\n\t}\n\n\t#updraft_activejobsrow .updraft_row .updraft_col {\n\t\tflex: auto;\n\t}\n\n\t#updraft_activejobsrow .updraft_progress_container {\n\t\twidth: calc(100% - 230px);\n\t}\n\n}\n\n@media only screen and (min-width: 782px) {\n\n\t.settings_page_updraftplus input[type=text],\n\t.settings_page_updraftplus input[type=password],\n\t.settings_page_updraftplus input[type=number] {\n\t\t/* border-radius: 4px; */\n\t\tline-height: 1.42;\n\t\t/* border: 1px solid #CCC; */\n\t\theight: 27px;\n\t\tpadding: 2px 6px;\n\t\tcolor: #555;\n\t}\n\n\t.settings_page_updraftplus input[type=\"number\"] {\n\t\theight: 31px;\n\t}\n\n\t#ud_massactions.active, #updraft-delete-waitwarning.active {\n\t\tposition: fixed;\n\t\tbottom: 0;\n\t\tleft: 160px;\n\t\tright: 0;\n\t\ttop: auto;\n\t\tbackground: #FFF;\n\t\tz-index: 3;\n\t\tbox-shadow: 0 0 10px rgba(0, 0, 0, 0.2);\n\t}\n\n\tbody.folded #ud_massactions.active, body.folded #updraft-delete-waitwarning.active {\n\t\tleft: 36px;\n\t}\n\n\t.updraft-after-form-table {\n\t\tmargin-left: 250px;\n\t}\n\n}\n\n@media only screen and (min-width: 782px) and (max-width: 960px) {\n\n\tbody.auto-fold #ud_massactions.active, body.auto-fold #updraft-delete-waitwarning.active {\n\t\tleft: 36px;\n\t}\n\n}\n\n@media only screen and (max-width: 782px) {\n\n\t#updraft-wrap {\n\t\tmargin-right: 0;\n\t}\n\n\t#updraft-wrap .form-table td {\n\t\tpadding-right: 0;\n\t}\n\n\tlabel.updraft_checkbox {\n\t\tmargin-bottom: 8px;\n\t\tmargin-top: 8px;\n\t\tmargin-left: 36px;\n\t}\n\n\t.updraft_retain_rules {\n\t\tposition: relative;\n\t\tmargin-right: 0;\n\t\tborder: 1px solid #CCC;\n\t\tpadding: 5px;\n\t\tmargin-bottom: -1px;\n\t}\n\n\t.updraft_retain_rules_delete {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\ttop: 5px;\n\t}\n\n\ta[id*=updraft_retain_] {\n\t\tdisplay: block;\n\t\tpadding: 15px 15px 15px 0;\n\t}\n\n\tlabel.updraft_checkbox > input[type=checkbox] {\n\t\tmargin-left: -33px;\n\t}\n\n\t#updraft-backupnow-button {\n\t\tmargin: 0;\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t}\n\n\t.updraft_next_scheduled_backups_wrapper > .updraft_backup_btn_wrapper {\n\t\tpadding-top: 0;\n\t}\n\n\t#ud_massactions, #updraft-delete-waitwarning {\n\t\twidth: 100%;\n\t\tbox-sizing: border-box;\n\t\ttext-align: center;\n\t}\n\n\t#ud_massactions.active {\n\t\tposition: fixed;\n\t\ttop: auto;\n\t\tbottom: 0;\n\t\twidth: 100%;\n\t\tbox-sizing: border-box;\n\t\ttext-align: center;\n\t\tbox-shadow: 0 -3px 15px rgba(0, 0, 0, 0.08);\n\t\tbackground: #FFF;\n\t\tz-index: 3;\n\t}\n\n\t#ud_massactions strong {\n\t\tdisplay: block;\n\t\tmargin-bottom: 5px;\n\t}\n\n\tsmall.ud_massactions-tip {\n\t\tdisplay: block;\n\t}\n\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\t.existing-backups-table .backup_date_label > div, .existing-backups-table .backup_date_label span > div {\n\t\tfont-weight: normal;\n\t}\n\n\t.existing-backups-table .backup_date_label .clear-right {\n\t\tdisplay: inline-block;\n\t}\n\n\ttable.widefat.existing-backups-table {\n\t\tborder: 0;\n\t\tbox-shadow: none;\n\t\tbackground: transparent;\n\t}\n\n\t.existing-backups-table thead {\n\t\tborder: none;\n\t\tclip: rect(0 0 0 0);\n\t\theight: 1px;\n\t\tmargin: -1px;\n\t\toverflow: hidden;\n\t\tpadding: 0;\n\t\tposition: absolute;\n\t\twidth: 1px;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t}\n\n\t.existing-backups-table tr {\n\t\tdisplay: block;\n\t\tmargin-bottom: .625em;\n\t\tpadding-bottom: 16.625px;\n\t\twidth: 100%;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\tmargin-bottom: 10px;\n\t\tbackground: #FFF;\n\t\tbox-shadow: 0 2px 3px rgba(0, 0, 0, 0.1);\n\t}\n\n\t.existing-backups-table td {\n\t\tborder-bottom: 1px solid #DDD;\n\t\tdisplay: block;\n\t\tfont-size: .9em;\n\t\ttext-align: left;\n\t\twidth: 100%;\n\t\tpadding: 10px;\n\t\tmargin: 0;\n\t}\n\n\t.wp-list-table.existing-backups-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before {\n\t\t/*\n\t\t* aria-label has no advantage, it won't be read inside a table\n\t\tcontent: attr(aria-label);\n\t\t*/\n\t\tcontent: attr(data-label);\n\t\tfont-weight: bold;\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tleft: auto;\n\t\tpadding-bottom: 10px;\n\t\twidth: auto;\n\t\ttext-align: left;\n\t}\n\n\t.existing-backups-table td:last-child {\n\t\tborder-bottom: 0;\n\t}\n\n\t.form-table td.updraft_existingbackup_date {\n\t\twidth: inherit;\n\t\tmax-width: 100%;\n\t}\n\n\t.existing-backups-table td.before-restore-button {\n\t\tmin-height: 36px;\n\t}\n\n\t.updraft_next_scheduled_backups_wrapper {\n\t\tflex-direction: column;\n\t}\n\n\t.updraft_next_scheduled_backups_wrapper > div {\n\t\twidth: 100%;\n\t}\n\n\t.updraft_progress_container {\n\t\t/* width: 77%; */\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row {\n\t\tposition: relative;\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected {\n\t\tbackground-color: #FFF;\n\t\tborder-left: 4px solid #0572AA;\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row td:not(.backup-select) {\n\t\tmargin-left: 50px;\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row td.backup-select {\n\t\twidth: 50px !important;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 0;\n\t\tbox-sizing: border-box;\n\t\theight: 100%;\n\t\tz-index: 1;\n\t\tborder: none;\n\t\tborder-right: 1px solid rgba(0, 0, 0, 0.05);\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups input[type=\"checkbox\"] {\n\t\theight: 25px;\n\t}\n\n\t.updraft_migrate_intro button.button.button-primary.button-hero {\n\t\tdisplay: block;\n\t\tmargin-right: 0;\n\t\twidth: 100%;\n\t\tmax-width: 100%;\n\t}\n\n\t.updraftclone-main-row {\n\t\tflex-direction: column;\n\t}\n\n\t.updraftclone-main-row > div {\n\t\twidth: auto;\n\t\tmax-width: none;\n\t\tmargin-right: 0;\n\t\tmargin-bottom: 10px;\n\t}\n\n\t.form-table th {\n\t\tpadding-bottom: 10px;\n\t}\n\n}\n\n@media screen and (max-width: 600px) {\n\t\n\t.updraft_next_scheduled_backups_wrapper > div {\n\t}\n\n\t.updraft_next_scheduled_entity {\n\t\tfloat: none;\n\t\twidth: 100%;\n\t\tmargin-bottom: 2em;\n\t}\n\n\t.updraft_time_now_wrapper {\n\t\tmargin-top: 0;\n\t}\n\n\t#updraft_lastlogmessagerow h3 {\n\t\tmargin-bottom: 5px;\n\t}\n\n\t#updraft_lastlogmessagerow .updraft-log-link {\n\t\tdisplay: block;\n\t\tfloat: none;\n\t\tmargin: 0;\n\t\tmargin-bottom: 10px;\n\t}\n\n}\n\n@media screen and (max-width: 520px) {\n}\n\n@media only screen and (min-width: 768px) {\n\n\t.addon-activation-notice {\n\t\tleft: 20em;\n\t}\n\n\t.existing-backups-table tbody tr:hover {\n\t\tbackground: #F1F1F1;\n\t}\n\n\t.existing-backups-table tbody tr td.before-restore-button {\n\t\tposition: relative;\n\t}\n\n\t.form-table .existing-backups-table thead th.check-column {\n\t\tpadding-left: 6px;\n\t}\n\n\t.existing-backups-table tr td:first-child {\n\t\tborder-left: 4px solid transparent;\n\t}\n\n\t.existing-backups-table tr.backuprowselected td:first-child {\n\t\tborder-left-color: #0572AA;\n\t}\n\n}\n\n@media screen and (min-width: 670px) {\n\t\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\n@media only screen and (max-width: 1068px) {\n\n\t.updraft-more-plugins .udp-box {\n\t\twidth: calc(50% - 10px);\n\t\tmargin-bottom: 20px;\n\t}\n\n\t.updraft_feat_table td:nth-child(2), .updraft_feat_table td:nth-child(3) {\n\t\twidth: 100px;\n\t}\n\n}\n\n@media only screen and (max-width: 600px) {\n\n\t.updraft-more-plugins .udp-box {\n\t\twidth: 100%;\n\t\tmargin-bottom: 20px;\n\t}\n\n\t.updraft_feat_table td:nth-child(2), .updraft_feat_table td:nth-child(3) {\n\t\twidth: auto;\n\t}\n\n\ttable.updraft_feat_table {\n\t\tdisplay: block;\n\t}\n\n\ttable.updraft_feat_table tr {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t}\n\n\ttable.updraft_feat_table td {\n\t\tdisplay: block;\n\t}\n\n\ttable.updraft_feat_table td:first-child {\n\t\twidth: 100%;\n\t\tborder-bottom: none;\n\t}\n\n\ttable.updraft_feat_table td:not(:first-child) {\n\t\twidth: 50%;\n\t\tbox-sizing: border-box;\n\t}\n\n\ttable.updraft_feat_table td:first-child:empty {\n\t\tdisplay: none;\n\t}\n\n\ttd[data-colname]::before {\n\t\tcontent: attr(data-colname);\n\t\tfont-size: 0.8rem;\n\t\tcolor: #CCC;\n\t\tline-height: 1;\n\t}\n\n}\n"]}
1
+ {"version":3,"sources":["css/updraftplus-admin.css"],"names":[],"mappings":"AAAA;;CAEC;EACC,WAAW;EACX,oBAAoB;EACpB;;CAED;EACC,aAAa;EACb,uBAAuB;EACvB;;CAED;;AAED,uBAAuB;AACvB;CACC,iBAAiB;CACjB;;AAED;CACC,iBAAiB;CACjB;;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;CACC,uCAAuC;CACvC;;AAED;CACC,sBAAsB;CACtB;;AAED;;CAEC,eAAe;CACf,iBAAiB;CACjB,mBAAmB;CACnB,mBAAmB;CACnB;;AAED,iBAAiB;AACjB;CACC,eAAe;CACf,mBAAmB;CACnB,kBAAkB;CAClB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB;;AAED,iBAAiB;AACjB;CACC,aAAa;CACb;;AAED;CACC,qBAAqB;CACrB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,mBAAmB;CACnB,gBAAgB;CAChB;;AAED;;CAEC,iBAAiB;CACjB,YAAY;CACZ;;AAED;CACC,iBAAiB;CACjB;;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;CACC,cAAc;CACd,mBAAmB;CACnB;;AAED;CACC,sBAAsB;CACtB,oBAAoB;CACpB;;AAED;CACC,eAAe;CACf;;AAED;;EAEE;;AAEF;CACC,cAAc;CACd;;AAED,gBAAgB;;AAEhB;CACC,qBAAc;CAAd,cAAc;CACd;;AAED;CACC,oBAAoB;CACpB,cAAc;CACd,oBAAoB;CACpB,mBAAmB;CACnB,iBAAiB;CACjB;;AAED;CACC,UAAU;CACV;;AAED;CACC,oBAAoB;CACpB,cAAc;CACd,oBAAoB;CACpB,YAAQ;KAAR,QAAQ;CACR;;AAED;CACC,cAAc;CACd;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,gBAAgB;CAChB,eAAe;CACf;;AAED,yBAAyB;AACzB;CACC,cAAc;CACd,mBAAmB;CACnB,SAAS;CACT,OAAO;CACP,aAAa;CACb,4BAA4B;CAC5B,mBAAmB;CACnB,oBAAoB;CACpB;;AAED;CACC,qBAAc;CAAd,cAAc;CACd,2BAAuB;KAAvB,uBAAuB;CACvB;;AAED;CACC,mBAAmB;CACnB,YAAY;CACZ,8BAAiB;KAAjB,iBAAiB;CACjB;;AAED;;CAEC,YAAY;CACZ;;AAED;;CAEC;EACC,wBAAoB;MAApB,oBAAoB;EACpB,oBAAgB;MAAhB,gBAAgB;EAChB;;CAED;EACC,6BAAgB;MAAhB,gBAAgB;EAChB;;CAED;;EAEC,aAAa;EACb;;CAED;;AAED;CACC,sBAAsB;CACtB,gBAAgB;CAChB;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,oBAAoB;CACpB,cAAc;CACd,mBAAmB;CACnB,oBAAoB;CACpB;;AAED,sBAAsB;AACtB;CACC,YAAY;CACZ,YAAY;CACZ,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ,iBAAiB;CACjB;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,oBAAoB;CACpB,uBAAuB;CACvB;;AAED;CACC,oBAAoB;CACpB;;AAED;;CAEC,aAAa;CACb;;AAED,oBAAoB;AACpB;CACC,gBAAgB;CAChB,iBAAiB;CACjB;;AAED;CACC,iBAAiB;CACjB;;AAED,qCAAqC;AACrC;CACC,oBAAoB;CACpB,aAAa;CACb,kBAAkB;CAClB,kBAAkB;CAClB,qBAAqB;CACrB;;AAED;CACC,aAAa;CACb;;AAED;CACC,WAAW;CACX;;AAED,aAAa;;AAEb;CACC,sBAAsB;CACtB;;AAED;;;CAGC,sBAAsB;CACtB,eAAe;CACf;;AAED;CACC,yBAAyB;CACzB,gCAAgC;CAChC;;AAED;CACC,aAAa;CACb;;AAED;CACC,iBAAiB;CACjB,iBAAiB;CACjB,mBAAmB;CACnB;;AAED;CACC,cAAc;CACd;;AAED;;CAEC,cAAc;CACd;;AAED,6BAA6B;AAC7B;CACC,mBAAmB;CACnB,qBAAc;CAAd,cAAc;CACd,2BAAsB;KAAtB,sBAAsB;CACtB,8BAAsB;KAAtB,sBAAsB;CACtB,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB,oBAAoB;CACpB,8BAA8B;CAC9B;;AAED;;CAEC,cAAc;CACd,kBAAkB;CAClB,aAAa;CACb,UAAU;CACV;;AAED;CACC,sBAAsB;CACtB,kBAAkB;CAClB,6BAA6B;CAC7B;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,UAAU;CACV;;AAED;CACC,iBAAiB;CACjB,kBAAkB;CAClB,oBAAoB;CACpB,eAAe;CACf,aAAa;CACb,kBAAkB;CAClB,qBAAqB;CACrB,iBAAiB;CACjB,mBAAmB;CACnB,mBAAmB;CACnB,oBAAoB;CACpB;;AAED;CACC,mBAAmB;CACnB,WAAW;CACX,qBAAqB;CACrB;;AAED;;EAEE;AACF;CACC,eAAe;CACf;;AAED;CACC,oBAAoB;CACpB,UAAU;CACV,iBAAiB;CACjB,oBAAoB;CACpB,qBAAqB;CACrB;;AAED;CACC,qBAAqB;CACrB;;AAED;CACC,+BAA+B;CAC/B;;AAED;CACC,6BAA6B;CAC7B;;AAED;CACC,WAAW;CACX,WAAW;CACX;;AAED;CACC,cAAc;CACd,oFAAoF;CACpF,iBAAiB;CACjB;;AAED;CACC,eAAe;CACf,WAAW;CACX;;AAED;CACC,oBAAoB;CACpB,iCAAiC;CACjC,iDAAiD;CACjD;;AAED;CACC,wGAAwG;CACxG;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,aAAa;CACb,mBAAmB;CACnB;;AAED;CACC,cAAc;CACd,kEAAkE;CAClE,WAAW;CACX;;AAED;CACC,qBAAc;CAAd,cAAc;CACd,iBAAiB;CACjB,8BAAsB;KAAtB,sBAAsB;CACtB,oBAAgB;KAAhB,gBAAgB;CAChB;;AAED;CACC,WAAW;CACX,iBAAiB;CACjB,aAAa;CACb,yBAAyB;CACzB,cAAc;CACd,uBAAuB;CACvB;;AAED;CACC,mBAAmB;CACnB,+BAA+B;CAC/B,sBAAwB;KAAxB,wBAAwB;CACxB,uBAAoB;KAApB,oBAAoB;CACpB;;AAED;CACC,cAAc;CACd;;AAED;CACC,cAAc;CACd;;AAED;CACC,aAAa;CACb,kCAAkC;CAClC,0BAA0B;CAC1B;;AAED;CACC,oBAAoB;CACpB,YAAY;CACZ,UAAU;CACV,mBAAmB;CACnB;;AAED;;CAEC,cAAc;CACd;;AAED;CACC,sBAAsB;CACtB,oBAAoB;CACpB,iBAAiB;CACjB,gBAAgB;CAChB;;AAED;CACC,0BAA0B;CAC1B,mBAAmB;CACnB,0FAA0F;CAC1F,iBAAiB;CACjB;;AAED;CACC,sBAAsB;CACtB,oBAAoB;CACpB,gBAAgB;CAChB,gBAAgB;CAChB,gBAAgB;CAChB;;AAED;CACC,WAAW;CACX,sBAAsB;CACtB,YAAY;CACZ;;GAEE;CACF;;AAED;CACC,YAAY;CACZ,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB,YAAY;CACZ;;AAED;CACC,sBAAsB;CACtB,aAAa;CACb;;AAED;CACC,oBAAoB;CACpB,4BAA4B;CAC5B,+BAA+B;CAC/B,YAAY;CACZ,gBAAgB;CAChB,0CAA0C;CAC1C;;AAED;CACC,oBAAoB;CACpB,6BAA6B;CAC7B,gCAAgC;CAChC,kBAAkB;CAClB;;AAED;CACC,cAAc;CACd;;AAED;CACC,YAAY;CACZ,kBAAkB;CAClB;;AAED;CACC,aAAa;CACb,mBAAmB;CACnB,kBAAkB;CAClB;;AAED;CACC,YAAY;CACZ,iBAAiB;CACjB,cAAc;CACd;;AAED;CACC,iBAAiB;CACjB,YAAY;CACZ,oBAAoB;CACpB,WAAW;CACX;;AAED;CACC,mBAAmB;CACnB,mBAAmB;CACnB;;AAED;CACC,oBAAoB;CACpB,YAAY;CACZ,uBAAuB;CACvB,iBAAiB;CACjB;;AAED;CACC,aAAa;CACb,eAAe;CACf,sBAAsB;CACtB;;AAED;CACC,YAAY;CACZ,qBAAqB;CACrB,mBAAmB;CACnB;;AAED;CACC,aAAa;CACb;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,iBAAiB;CACjB,gBAAgB;CAChB,oBAAoB;CACpB,YAAY;CACZ,kBAAkB;CAClB,oBAAoB;CACpB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ,WAAW;CACX,iBAAiB;CACjB;;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,sBAAsB;CACtB;;AAED;CACC,cAAc;CACd,mBAAmB;CACnB,WAAW;CACX;;AAED;CACC,uBAAuB;CACvB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,aAAa;CACb;;AAED;CACC,kBAAkB;CAClB;;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;;CAEC,kBAAkB;CAClB,gBAAgB;CAChB,oBAAoB;CACpB,cAAc;CACd,uBAAuB;CACvB;;AAED;CACC,iBAAiB;CACjB,mBAAmB;CACnB,eAAe;CACf;;AAED;;CAEC,sBAAsB;CACtB,iBAAiB;CACjB;;AAED;;;CAGC,yBAAyB;CACzB,iBAAiB;CACjB;;AAED;;CAEC;;EAEC,sBAAsB;EACtB;;CAED;;AAED;CACC,gBAAgB;CAChB,gBAAgB;CAChB,iBAAiB;CACjB,eAAe;CACf,aAAa;CACb,kBAAkB;CAClB;;AAED;;;CAGC,eAAe;CACf;;AAED;CACC,eAAe;CACf,kBAAkB;CAClB,gBAAgB;CAChB,iBAAiB;CACjB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,cAAc;CACd;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,wBAAwB;CACxB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,mBAAmB;CACnB;;AAED;;CAEC,cAAc;CACd,cAAc;CACd,uBAAuB;CACvB,mBAAmB;CACnB;;AAED;;;CAGC,aAAa;CACb,iBAAiB;CACjB,aAAa;CACb,wBAAwB;CACxB,mBAAmB;CACnB,SAAS;CACT,WAAW;CACX,gBAAgB;CAChB;;AAED;CACC,eAAe;CACf;;AAED;CACC,sBAAsB;CACtB,gBAAgB;CAChB;;AAED;CACC,YAAY;CACZ;;AAED;CACC,2BAA2B;CAC3B;;AAED;CACC,eAAe;CACf,yBAAyB;CACzB,mBAAmB;CACnB;;AAED;CACC,YAAY;CACZ;;AAED,mCAAmC;;AAEnC;CACC,iBAAiB;CACjB;;AAED;;CAEC,0BAA0B;CAC1B;;AAED;CACC,0BAA0B;CAC1B;;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,2BAA2B;CAC3B;;AAED;CACC,aAAa;CACb,aAAa;CACb,8BAA8B;CAC9B;;AAED;CACC,+BAA+B;CAC/B;;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,kBAAkB;CAClB,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB,mBAAmB;CACnB,YAAY;CACZ,YAAY;CACZ,eAAe;CACf;;AAED,8BAA8B;AAC9B;CACC,mBAAmB;CACnB,cAAc;CACd,YAAY;CACZ,uBAAuB;CACvB,oBAAoB;CACpB,mBAAmB;CACnB,gBAAgB;CAChB,yCAAyC;CACzC;;AAED;CACC,aAAa;CACb,YAAY;CACZ,aAAa;CACb,eAAe;CACf,oBAAoB;CACpB,mBAAmB;CACnB,OAAO;CACP,WAAW;CACX,2BAA2B;CAC3B,4BAA4B;CAC5B,0CAA0C;CAC1C;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,cAAc;CACd;;AAED;CACC,cAAc;CACd,oBAAoB;CACpB;;AAED;CACC,cAAc;CACd,YAAY;CACZ,eAAe;CACf;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,2BAA2B;CAC3B,kBAAkB;CAClB;;AAED;CACC,cAAc;CACd;;AAED;;CAEC,gBAAgB;CAChB;;AAED;CACC,aAAa;CACb;;AAED;CACC,YAAY;CACZ;;AAED;CACC,UAAU;CACV,WAAW;CACX;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,aAAa;CACb,8BAA8B;CAC9B,YAAY;CACZ,YAAY;CACZ,iBAAiB;CACjB,gBAAgB;CAChB,kBAAkB;CAClB;;AAED;CACC,YAAY;CACZ,gBAAgB;CAChB;;AAED;CACC,aAAa;CACb,0BAA0B;CAC1B,sBAAsB;CACtB,4BAA4B;CAC5B;;AAED;;CAEC,mBAAmB;CACnB,YAAY;CACZ,iBAAiB;CACjB;;AAED,mDAAmD;AACnD;CACC,eAAe;CACf,0BAA0B;CAC1B,mBAAmB;CACnB,yBAAyB;CACzB;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,oBAAoB;CACpB,2CAA2C;CAC3C;;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,oBAAoB;CACpB;;AAED;;EAEE;AACF;CACC,iBAAiB;CACjB,iBAAiB;CACjB,WAAW;CACX,+BAA+B;CAC/B;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,iBAAiB;CACjB,wBAAwB;CACxB,0BAA0B;CAC1B;;AAED;CACC,qBAAc;CAAd,cAAc;CACd,uBAAoB;KAApB,oBAAoB;CACpB,uBAA+B;KAA/B,+BAA+B;CAC/B,mBAAmB;CACnB;;AAED;CACC,oBAAoB;CACpB,kBAAkB;CAClB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,gBAAgB;CAChB,iBAAiB;CACjB,eAAe;CACf,UAAU;CACV,mBAAmB;CACnB,wBAAwB;CACxB,eAAe;CACf;;AAED;CACC,YAAY;CACZ;;AAED;;CAEC;EACC,2BAAuB;MAAvB,uBAAuB;EACvB,mBAAmB;EACnB,uBAAoB;MAApB,oBAAoB;EACpB;;CAED;EACC,gBAAgB;EAChB,oBAAoB;EACpB;;CAED;;AAED;;EAEE;AACF;CACC,iBAAiB;CACjB,cAAc;CACd,yCAAyC;CACzC,mBAAmB;CACnB;;AAED;CACC,UAAU;CACV;;AAED;CACC,4BAAmB;KAAnB,2BAAmB;KAAnB,mBAAmB;CACnB,iBAAiB;CACjB,iBAAiB;CACjB;;AAED;;EAEE;AACF;CACC,qBAAc;CAAd,cAAc;CACd,wBAAoB;KAApB,oBAAoB;CACpB,oBAAgB;KAAhB,gBAAgB;CAChB,uBAA+B;KAA/B,+BAA+B;CAC/B,gBAAgB;CAChB;;AAED;CACC,iBAAiB;CACjB,YAAY;CACZ,sBAAsB;CACtB;;AAED;CACC,uBAAuB;CACvB,WAAW;CACX;;AAED;CACC,iBAAiB;CACjB,kBAAkB;CAClB;;AAED;;EAEE;AACF;CACC,iBAAiB;CACjB,UAAU;CACV,gBAAgB;CAChB;;AAED;CACC,wBAAwB;CACxB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,eAAe;CACf;;AAED;CACC,YAAY;CACZ;;AAED;CACC,qCAAqC;CACrC,kBAAkB;CAClB;;AAED;CACC,cAAc;CACd,sCAAsC;CACtC,iBAAiB;CACjB,4BAA4B;CAC5B,uCAAuC;CACvC,qBAAqB;CACrB,kBAAkB;CAClB;;AAED;CACC,aAAa;CACb,0BAA0B;CAC1B,gBAAgB;CAChB,wBAAwB;CACxB,mBAAmB;CACnB;;AAED;CACC,0BAA0B;CAC1B,0BAA0B;CAC1B,gBAAgB;CAChB,wBAAwB;CACxB,mBAAmB;CACnB,cAAc;CACd;;AAED;CACC,yBAAyB;CACzB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,oBAAoB;CACpB;;AAED;;CAEC,4CAA4C;CAC5C,aAAa;CACb;;AAED;CACC,eAAe;CACf,eAAe;CACf;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,gBAAgB;CAChB;;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,aAAa;CACb,wBAAwB;CACxB,YAAY;CACZ,gBAAgB;CAChB,WAAW;CACX,gBAAgB;CAChB;;AAED;CACC,UAAU;CACV,oBAAoB;CACpB,YAAY;CACZ;;AAED;CACC,gBAAgB;CAChB,YAAY;CACZ;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,cAAc;CACd;;AAED;CACC,YAAY;CACZ;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,gBAAgB;CAChB,WAAW;CACX,gBAAgB;CAChB,kBAAkB;CAClB,YAAY;CACZ,mBAAmB;CACnB,aAAa;CACb,cAAc;CACd,sBAAsB;CACtB,sBAAsB;CACtB;;AAED;CACC,gBAAgB;CAChB,aAAa;CACb,gBAAgB;CAChB;;AAED;CACC,iBAAiB;CACjB,gBAAgB;CAChB,kBAAkB;CAClB,cAAc;CACd,YAAY;CACZ;;AAED,qBAAqB;AACrB;CACC,iBAAiB;CACjB;;AAED;CACC,mBAAmB;CACnB,qBAAqB;CACrB;;AAED;CACC,iBAAiB;CACjB,aAAa;CACb,cAAc;CACd,mBAAmB;CACnB,aAAa;CACb,mBAAmB;CACnB,iBAAiB;CACjB,eAAe;CACf,kBAAkB;CAClB,mBAAmB;CACnB,oBAAoB;CACpB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,aAAa;CACb;;AAED;CACC,YAAY;CACZ;;AAED;CACC,cAAc;CACd;;AAED;CACC,sBAAsB;CACtB,gBAAgB;CAChB,kBAAkB;CAClB,WAAW;CACX;;AAED;CACC,0BAA0B;CAC1B,0BAA0B;CAC1B,oCAAoC;CACpC,+BAA+B;CAC/B,oCAAoC;CACpC;;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;;AAED;CACC,aAAa;CACb;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,sBAAsB;CACtB;;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,iBAAiB;CACjB,UAAU;CACV,oBAAoB;CACpB;;AAED;CACC,kBAAkB;CAClB,eAAe;CACf;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,uBAAuB;CACvB,aAAa;CACb,YAAY;CACZ,mBAAmB;CACnB;;AAED;CACC,wBAAwB;CACxB,iBAAiB;CACjB,gBAAgB;CAChB,oBAAoB;CACpB;;AAED;CACC,eAAe;CACf;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,YAAY;CACZ;;AAED;CACC,gBAAgB;CAChB;;AAED;CACC,cAAc;CACd,+BAA+B;CAC/B,mBAAmB;CACnB,QAAQ;CACR,UAAU;CACV;;AAED;CACC,uBAAuB;CACvB;;AAED;CACC,sBAAsB;CACtB,gBAAgB;CAChB;;AAED;CACC,sBAAsB;CACtB;;AAED;CACC,sBAAsB;CACtB,mBAAmB;CACnB;;AAED;CACC,sBAAsB;CACtB,aAAa;CACb,mBAAmB;CACnB,kBAAkB;CAClB;;AAED;CACC,oBAAoB;CACpB,mBAAmB;CACnB;;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,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,YAAY;CACZ,mBAAmB;CACnB,cAAc;CACd;;AAED;CACC,cAAc;CACd,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,YAAY;CACZ,mBAAmB;CACnB,UAAU;CACV,SAAS;CACT,mBAAmB;CACnB,0BAA0B;CAC1B,uBAAuB;CACvB;;AAED;CACC,WAAW;CACX,mBAAmB;CACnB,gBAAgB;CAChB,YAAY;CACZ,aAAa;CACb,kBAAkB;CAClB,mBAAmB;CACnB,mBAAmB;CACnB,mBAAmB;CACnB,YAAY;CACZ,0BAA0B;CAC1B,0CAA0C;CAC1C;;AAED;CACC,sBAAsB;CACtB,WAAW;CACX;;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,2BAA2B;CAC3B;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,aAAa;CACb;;AAED;CACC,aAAa;CACb;;AAED;CACC,aAAa;CACb;;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,aAAa;CACb,YAAY;CACZ;;AAED;CACC,YAAY;CACZ,sBAAsB;CACtB;;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,qBAAqB;CACrB;;AAED;;GAEG;;AAEH,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,uBAAuB;CACvB,iBAAiB;CACjB;;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,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;CACC,WAAW;CACX,YAAY;CACZ,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB;;AAED;CACC,cAAc;CACd;;AAED;CACC,kBAAkB;CAClB,mBAAmB;CACnB,qBAAqB;CACrB,mBAAmB;CACnB;;AAED;CACC,mBAAmB;CACnB,uBAAuB;CACvB,gBAAgB;CAChB,iBAAiB;CACjB,uBAAuB;CACvB;;AAED;CACC,uBAAuB;CACvB,kBAAkB;CAClB,4BAA4B;CAC5B,uBAAuB;CACvB,oBAAoB;CACpB;;AAED;CACC,uBAAuB;CACvB,kBAAkB;CAClB,+BAA+B;CAC/B,uBAAuB;CACvB,oBAAoB;CACpB;;AAED;CACC,mBAAmB;CACnB,YAAY;CACZ;;AAED;CACC,oBAAoB;CACpB;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,gBAAgB;CAChB,kBAAkB;CAClB,oBAAoB;CACpB;;AAED;;CAEC,iBAAiB;CACjB;;AAED;CACC,gBAAgB;CAChB,oBAAoB;CACpB;;AAED;CACC,YAAY;CACZ,iBAAiB;CACjB,mBAAmB;CACnB;;AAED;CACC,YAAY;CACZ;;AAED;CACC,YAAY;CACZ;;AAED;CACC,iBAAiB;CACjB;;AAED;CACC,eAAe;CACf;;AAED;CACC,wBAAwB;CACxB;;AAED;CACC,YAAY;CACZ;;AAED;CACC,2BAAuB;KAAvB,uBAAuB;CACvB,mBAAmB;CACnB,oBAAoB;CACpB;;AAED;CACC,YAAY;CACZ;;AAED;CACC,kBAAkB;CAClB;;AAED;CACC,cAAc;CACd,oBAAoB;CACpB,eAAe;CACf,eAAe;CACf,2CAA2C;CAC3C;;AAED;CACC,oBAAoB;CACpB,2CAA2C;CAC3C;;AAED;CACC,wBAAwB;CACxB,WAAW;CACX;;AAED;CACC,eAAe;CACf,iBAAiB;CACjB;;AAED;;CAEC;EACC,qBAAc;EAAd,cAAc;EACd,yBAAsB;MAAtB,sBAAsB;EACtB;;CAED;EACC,eAAW;MAAX,WAAW;EACX;;CAED;EACC,0BAA0B;EAC1B;;CAED;;AAED;;CAEC;;;EAGC,yBAAyB;EACzB,kBAAkB;EAClB,6BAA6B;EAC7B,aAAa;EACb,iBAAiB;EACjB,YAAY;EACZ;;CAED;EACC,aAAa;EACb;;CAED;EACC,gBAAgB;EAChB,UAAU;EACV,YAAY;EACZ,SAAS;EACT,UAAU;EACV,iBAAiB;EACjB,WAAW;EACX,wCAAwC;EACxC;;CAED;EACC,WAAW;EACX;;CAED;EACC,mBAAmB;EACnB;;CAED;;AAED;;CAEC;EACC,WAAW;EACX;;CAED;;AAED;;CAEC;EACC,gBAAgB;EAChB;;CAED;EACC,iBAAiB;EACjB;;CAED;EACC,mBAAmB;EACnB,gBAAgB;EAChB,kBAAkB;EAClB;;CAED;EACC,mBAAmB;EACnB,gBAAgB;EAChB,uBAAuB;EACvB,aAAa;EACb,oBAAoB;EACpB;;CAED;EACC,mBAAmB;EACnB,SAAS;EACT,SAAS;EACT;;CAED;EACC,eAAe;EACf,0BAA0B;EAC1B;;CAED;EACC,mBAAmB;EACnB;;CAED;EACC,UAAU;EACV,eAAe;EACf,YAAY;EACZ;;CAED;EACC,eAAe;EACf;;CAED;EACC,YAAY;EACZ,uBAAuB;EACvB,mBAAmB;EACnB;;CAED;EACC,gBAAgB;EAChB,UAAU;EACV,UAAU;EACV,YAAY;EACZ,uBAAuB;EACvB,mBAAmB;EACnB,4CAA4C;EAC5C,iBAAiB;EACjB,WAAW;EACX;;CAED;EACC,eAAe;EACf,mBAAmB;EACnB;;CAED;EACC,eAAe;EACf;;AAEF;;;;;;;;;IASI;;CAEH;EACC,oBAAoB;EACpB;;CAED;EACC,sBAAsB;EACtB;;CAED;EACC,UAAU;EACV,iBAAiB;EACjB,wBAAwB;EACxB;;CAED;EACC,aAAa;EACb,oBAAoB;EACpB,YAAY;EACZ,aAAa;EACb,iBAAiB;EACjB,WAAW;EACX,mBAAmB;EACnB,WAAW;EACX,WAAW;EACX,UAAU;EACV;;CAED;EACC,eAAe;EACf,sBAAsB;EACtB,yBAAyB;EACzB,YAAY;EACZ,WAAW;EACX,UAAU;EACV,oBAAoB;EACpB,iBAAiB;EACjB,yCAAyC;EACzC;;CAED;EACC,8BAA8B;EAC9B,eAAe;EACf,gBAAgB;EAChB,iBAAiB;EACjB,YAAY;EACZ,cAAc;EACd,UAAU;EACV;;CAED;EACC;;;IAGE;EACF,0BAA0B;EAC1B,kBAAkB;EAClB,eAAe;EACf,mBAAmB;EACnB,WAAW;EACX,qBAAqB;EACrB,YAAY;EACZ,iBAAiB;EACjB;;CAED;EACC,iBAAiB;EACjB;;CAED;EACC,eAAe;EACf,gBAAgB;EAChB;;CAED;EACC,iBAAiB;EACjB;;CAED;EACC,2BAAuB;MAAvB,uBAAuB;EACvB;;CAED;EACC,YAAY;EACZ;;CAED;EACC,iBAAiB;EACjB;;CAED;EACC,mBAAmB;EACnB;;CAED;EACC,uBAAuB;EACvB,+BAA+B;EAC/B;;CAED;EACC,kBAAkB;EAClB;;CAED;EACC,uBAAuB;EACvB,mBAAmB;EACnB,QAAQ;EACR,OAAO;EACP,uBAAuB;EACvB,aAAa;EACb,WAAW;EACX,aAAa;EACb,4CAA4C;EAC5C;;CAED;EACC,aAAa;EACb;;CAED;EACC,eAAe;EACf,gBAAgB;EAChB,YAAY;EACZ,gBAAgB;EAChB;;CAED;EACC,2BAAuB;MAAvB,uBAAuB;EACvB;;CAED;EACC,YAAY;EACZ,gBAAgB;EAChB,gBAAgB;EAChB,oBAAoB;EACpB;;CAED;EACC,qBAAqB;EACrB;;CAED;;AAED;;CAEC;EACC;;CAED;EACC,YAAY;EACZ,YAAY;EACZ,mBAAmB;EACnB;;CAED;EACC,cAAc;EACd;;CAED;EACC,mBAAmB;EACnB;;CAED;EACC,eAAe;EACf,YAAY;EACZ,UAAU;EACV,oBAAoB;EACpB;;CAED;;AAED;CACC;;AAED;;CAEC;EACC,WAAW;EACX;;CAED;EACC,oBAAoB;EACpB;;CAED;EACC,mBAAmB;EACnB;;CAED;EACC,kBAAkB;EAClB;;CAED;EACC,mCAAmC;EACnC;;CAED;EACC,2BAA2B;EAC3B;;CAED;;AAED;;CAEC;EACC,YAAY;EACZ,aAAa;EACb,2CAA2C;EAC3C,oBAAoB;EACpB;;CAED;EACC,mBAAmB;EACnB,iBAAiB;EACjB;;CAED;EACC,eAAe;EACf;;CAED;;AAED;;CAEC;EACC,wBAAwB;EACxB,oBAAoB;EACpB;;CAED;EACC,aAAa;EACb;;CAED;;AAED;;CAEC;EACC,YAAY;EACZ,oBAAoB;EACpB;;CAED;EACC,YAAY;EACZ;;CAED;EACC,eAAe;EACf;;CAED;EACC,qBAAc;EAAd,cAAc;EACd,oBAAgB;MAAhB,gBAAgB;EAChB;;CAED;EACC,eAAe;EACf;;CAED;EACC,YAAY;EACZ,oBAAoB;EACpB;;CAED;EACC,WAAW;EACX,uBAAuB;EACvB;;CAED;EACC,cAAc;EACd;;CAED;EACC,4BAA4B;EAC5B,kBAAkB;EAClB,YAAY;EACZ,eAAe;EACf;;CAED","file":"updraftplus-admin.min.css","sourcesContent":["@keyframes udp_blink {\n\n\tfrom {\n\t\topacity: 1;\n\t\ttransform: scale(1);\n\t}\n\n\tto {\n\t\topacity: 0.4;\n\t\ttransform: scale(0.85);\n\t}\n\n}\n\n/* Widths and sizing */\n.max-width-600 {\n\tmax-width: 600px;\n}\n\n.width-900 {\n\tmax-width: 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.udpdraft__lifted {\n\tbox-shadow: 0 1px 1px 0 rgba(0,0,0,.1);\n}\n\n#updraft-wrap a .dashicons {\n\ttext-decoration: none;\n}\n\n.updraft-field-description,\ntable.form-table td p.updraft-field-description {\n\tfont-size: 90%;\n\tline-height: 1.2;\n\tfont-style: italic;\n\tmargin-bottom: 5px;\n}\n\n/* Input boxes */\nlabel.updraft_checkbox {\n\tdisplay: block;\n\tmargin-bottom: 4px;\n\tmargin-left: 26px;\n}\n\nlabel.updraft_checkbox > input[type=checkbox] {\n\tmargin-left: -25px;\n}\n\ndiv[id*=\"updraft_include_\"] {\n\tmargin-bottom: 9px;\n}\n\n/* Input boxes */\n.settings_page_updraftplus input[type=\"file\"] {\n\tborder: none;\n}\n\n.settings_page_updraftplus .wipe_settings {\n\tpadding-bottom: 10px;\n}\n\n.settings_page_updraftplus input[type=\"text\"] {\n\tfont-size: 14px;\n}\n\n.settings_page_updraftplus select {\n\tborder-radius: 4px;\n\tmax-width: 100%;\n}\n\ninput.updraft_input--wide,\ntextarea.updraft_input--wide {\n\tmax-width: 442px;\n\twidth: 100%;\n}\n\n#updraft-wrap .button-large {\n\tfont-size: 1.3em;\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\np.updraftplus-option {\n\tmargin-top: 0;\n\tmargin-bottom: 5px;\n}\n\np.updraftplus-option-inline {\n\tdisplay: inline-block;\n\tpadding-right: 20px;\n}\n\nspan.updraftplus-option-label {\n\tdisplay: block;\n}\n\n/*\n* MIGRATE - CLONE\n*/\n\n#updraft-navtab-migrate-content .postbox {\n\tpadding: 18px;\n}\n\n/* Clone Rows */\n\n.updraftclone-main-row {\n\tdisplay: flex;\n}\n\n.updraftclone-tokens {\n\tbackground: #F5F5F5;\n\tpadding: 20px;\n\tborder-radius: 10px;\n\tmargin-right: 20px;\n\tmax-width: 300px;\n}\n\n.updraftclone-tokens p {\n\tmargin: 0;\n}\n\n.updraftclone_action_box {\n\tbackground: #F5F5F5;\n\tpadding: 20px;\n\tborder-radius: 10px;\n\tflex: 1;\n}\n\n.updraftclone_action_box p:first-child {\n\tmargin-top: 0;\n}\n\n.updraftclone_action_box p:last-child {\n\tmargin-bottom: 0;\n}\n\nspan.tokens-number {\n\tfont-size: 46px;\n\tdisplay: block;\n}\n\n/* Clone header button */\n.button.updraft_migrate_widget_temporary_clone_show_stage0 {\n\tdisplay: none;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\theight: 100%;\n\tborder-left: 1px solid #CCC;\n\tpadding-left: 10px;\n\tpadding-right: 10px;\n}\n\n.updraft_migrate_widget_temporary_clone_stage0_container {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.updraft_migrate_widget_temporary_clone_stage0_box {\n\tmargin-right: 20px;\n\twidth: 100%;\n\tflex-basis: 100%;\n}\n\n.updraft_migrate_widget_temporary_clone_stage0_box iframe,\n.updraft_migrate_widget_temporary_clone_stage0_box a.udp-replace-with-iframe--js {\n\tfloat: none;\n}\n\n@media (min-width: 1024px) {\n\n\t.updraft_migrate_widget_temporary_clone_stage0_container {\n\t\tflex-direction: row;\n\t\tflex-wrap: wrap;\n\t}\n\n\t.updraft_migrate_widget_temporary_clone_stage0_box {\n\t\tflex-basis: 45%;\n\t}\n\n\t.updraft_migrate_widget_temporary_clone_stage0_box iframe,\n\t.updraft_migrate_widget_temporary_clone_stage0_box a.udp-replace-with-iframe--js {\n\t\tfloat: right;\n\t}\n\n}\n\n.updraft_migrate_widget_temporary_clone_show_stage0 .dashicons {\n\ttext-decoration: none;\n\tfont-size: 20px;\n}\n\n.opened .button.updraft_migrate_widget_temporary_clone_show_stage0 {\n\tdisplay: inline-block;\n}\n\n.opened .updraft_migrate_widget_temporary_clone_stage0 {\n\tbackground: #F5F5F5;\n\tpadding: 20px;\n\tborder-radius: 8px;\n\tmargin-bottom: 21px;\n}\n\n/* Clone list table */\n.clone-list {\n\tclear: both;\n\twidth: 100%;\n\tmargin-top: 40px;\n}\n\n.clone-list table {\n\twidth: 100%;\n\ttext-align: left;\n}\n\n.clone-list table tr th {\n\tbackground: #E4E4E4;\n}\n\n.clone-list table tr td {\n\tbackground: #F5F5F5;\n\tword-break: break-word;\n}\n\n.clone-list table tr:nth-child(odd) td {\n\tbackground: #FAFAFA;\n}\n\n.clone-list table td,\n.clone-list table th {\n\tpadding: 6px;\n}\n\n/* Clone Progress */\n.updraftplus-clone .updraft_row {\n\tpadding-left: 0;\n\tpadding-right: 0;\n}\n\nbutton#updraft_migrate_createclone + .updraftplus_spinner {\n\tmargin-top: 13px;\n}\n\n/* Clone - Show step 1 info button */\n.button.button-hero.updraftclone_show_step_1 {\n\twhite-space: normal;\n\theight: auto;\n\tline-height: 14px;\n\tpadding-top: 10px;\n\tpadding-bottom: 10px;\n}\n\n.button.button-hero.updraftclone_show_step_1 span.dashicons {\n\theight: auto;\n}\n\n.updraftplus_clone_status {\n\tcolor: red;\n}\n\n/* MIGRATE */\n\na.updraft_migrate_add_site--trigger span.dashicons {\n\ttext-decoration: none;\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#updraft_migrate_tab_main {\n\tpadding: 8px;\n}\n\n.updraft_migrate_widget_module_content {\n\tbackground: #FFF;\n\tborder-radius: 0;\n\tposition: relative;\n}\n\nbody.js #updraft_migrate .updraft_migrate_widget_module_content {\n\tdisplay: none;\n}\n\n.updraft_migrate_widget_module_content > h3,\ndiv[class*=\"updraft_migrate_widget_temporary_clone_stage\"] > h3 {\n\tmargin-top: 0;\n}\n\n/* Migrate / Clone headers */\n.updraft_migrate_widget_module_content header {\n\tposition: relative;\n\tdisplay: flex;\n\talign-content: center;\n\tjustify-items: center;\n\tmargin-top: -18px;\n\tmargin-left: -18px;\n\tmargin-right: -18px;\n\tmargin-bottom: 15px;\n\tborder-bottom: 1px solid #CCC;\n}\n\n.updraft_migrate_widget_module_content header h3,\n.updraft_migrate_widget_module_content header button.button.close {\n\tpadding: 10px;\n\tline-height: 20px;\n\theight: auto;\n\tmargin: 0;\n}\n\n.updraft_migrate_widget_module_content button.button.close {\n\ttext-decoration: none;\n\tpadding-left: 5px;\n\tborder-right: 1px solid #CCC;\n}\n\n.updraft_migrate_widget_module_content button.button.close .dashicons {\n\tmargin-top: 1px;\n}\n\n.updraft_migrate_widget_module_content header h3 {\n\tmargin: 0;\n}\n\n.updraft_migrate_intro button.button.button-primary.button-hero {\n\tmax-width: 235px;\n\tword-wrap: normal;\n\twhite-space: normal;\n\tline-height: 1;\n\theight: auto;\n\tpadding-top: 13px;\n\tpadding-bottom: 13px;\n\ttext-align: left;\n\tposition: relative;\n\tmargin-right: 10px;\n\tmargin-bottom: 10px;\n}\n\n.updraft_migrate_intro button.button.button-primary.button-hero .dashicons {\n\tposition: absolute;\n\tleft: 10px;\n\ttop: calc(50% - 8px);\n}\n\n/*\njquery UI Accordion module\n*/\n#updraft_migrate .ui-widget-content a {\n\tcolor: #1C94C4;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header {\n\tbackground: #F6F6F6;\n\tmargin: 0;\n\tborder-radius: 0;\n\tpadding-left: 0.5em;\n\tpadding-right: 0.7em;\n}\n\n#updraft-wrap .ui-widget {\n\tfont-family: inherit;\n}\n\n.ui-accordion-header .ui-accordion-header-icon.ui-icon-caret-1-w {\n\tbackground-position: -96px 0px;\n}\n\n.ui-accordion-header .ui-accordion-header-icon.ui-icon-caret-1-s {\n\tbackground-position: -64px 0;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header .ui-accordion-header-icon {\n\tleft: auto;\n\tright: 5px;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header:focus {\n\toutline: none;\n\tbox-shadow: 0 0 0 1px rgba(91, 157, 217, 0.22), 0 0 2px 1px rgba(30, 140, 190, 0.3);\n\tbackground: #FFF;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header:focus .dashicons {\n\tcolor: #0572AA;\n\topacity: 1;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header.ui-state-active {\n\tbackground: #F6F6F6;\n\tborder-bottom: 2px solid #0572AA;\n\tbox-shadow: 1px 6px 12px -5px rgba(0, 0, 0, 0.3);\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header.ui-state-active:focus {\n\tbox-shadow: 1px 6px 12px -5px rgba(0, 0, 0, 0.3), 0 0 0 1px #5B9DD9, 0 0 2px 1px rgba(30, 140, 190, .8);\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header:not(:first-child) {\n\tborder-top: none;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header .dashicons {\n\topacity: 0.4;\n\tmargin-right: 10px;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header:focus {\n\toutline: none;\n\tbox-shadow: 0 0 0 1px #5B9DD9, 0 0 2px 1px rgba(30, 140, 190, .8);\n\tz-index: 1;\n}\n\n.updraft_next_scheduled_backups_wrapper {\n\tdisplay: flex;\n\tbackground: #FFF;\n\tjustify-items: center;\n\tflex-wrap: wrap;\n}\n\n.updraft_next_scheduled_backups_wrapper > div {\n\twidth: 50%;\n\tbackground: #FFF;\n\theight: auto;\n\t/* padding: 18px 33px; */\n\tpadding: 33px;\n\tbox-sizing: border-box;\n}\n\n.updraft_backup_btn_wrapper {\n\ttext-align: center;\n\tborder-left: 1px solid #F1F1F1;\n\tjustify-content: center;\n\talign-items: center;\n}\n\n.incremental-backups-only {\n\tdisplay: none;\n}\n\n.incremental-free-only {\n\tdisplay: none;\n}\n\n.incremental-free-only p {\n\tpadding: 5px;\n\tbackground: rgba(255, 0, 0, 0.06);\n\tborder: 1px solid #BFBFBF;\n}\n\n#updraft-delete-waitwarning span.spinner {\n\tvisibility: visible;\n\tfloat: none;\n\tmargin: 0;\n\tmargin-right: 10px;\n}\n\nbutton#updraft-backupnow-button .spinner,\nbutton#updraft-backupnow-button .dashicons-yes {\n\tdisplay: none;\n}\n\nbutton#updraft-backupnow-button.loading .spinner {\n\tdisplay: inline-block;\n\tvisibility: visible;\n\tmargin-top: 13px;\n\tmargin-right: 0;\n}\n\nbutton#updraft-backupnow-button.loading {\n\tbackground-color: #EFEFEF;\n\tborder-color: #CCC;\n\ttext-shadow: 0 -1px 1px #BBC3C7, 1px 0 1px #BBC3C7, 0 1px 1px #BBC3C7, -1px 0 1px #BBC3C7;\n\tbox-shadow: none;\n}\n\nbutton#updraft-backupnow-button.finished .dashicons-yes {\n\tdisplay: inline-block;\n\tvisibility: visible;\n\tfont-size: 42px;\n\tmargin-right: 0;\n\tmargin-top: 2px;\n}\n\n.updraft_next_scheduled_entity {\n\twidth: 50%;\n\tdisplay: inline-block;\n\tfloat: left;\n\t/*\n\tpadding: 20px 20px 10px 20px;\n\t*/\n}\n\n.updraft_next_scheduled_entity .dashicons {\n\tcolor: #CCC;\n\tfont-size: 20px;\n}\n\n.updraft_next_scheduled_entity strong {\n\tfont-size: 20px;\n}\n\n.updraft_next_scheduled_heading {\n\tmargin-bottom: 10px;\n}\n\n.updraft_next_scheduled_date_time {\n\tcolor: #46A84B;\n}\n\n.updraft_time_now_wrapper {\n\tmargin-top: 68px;\n\twidth: 100%;\n}\n\n.updraft_time_now_label, .updraft_time_now {\n\tdisplay: inline-block;\n\tpadding: 7px;\n}\n\n.updraft_time_now_label {\n\tbackground: #B7B7B7;\n\tborder-top-left-radius: 4px;\n\tborder-bottom-left-radius: 4px;\n\tcolor: #FFF;\n\tmargin-right: 0;\n\ttext-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);\n}\n\n.updraft_time_now {\n\tbackground: #F1F1F1;\n\tborder-top-right-radius: 4px;\n\tborder-bottom-right-radius: 4px;\n\tmargin-left: -3px;\n}\n\n#updraft_lastlogmessagerow {\n\tmargin: 6px 0;\n}\n\n#updraft_lastlogmessagerow {\n\tclear: both;\n\tpadding: 0.25px 0;\n}\n\n#updraft_lastlogmessagerow .updraft-log-link {\n\tfloat: right;\n\tmargin-top: -2.5em;\n\tmargin-right: 2px;\n}\n\n#updraft_lastlogmessagerow > div {\n\tclear: both;\n\tbackground: #FFF;\n\tpadding: 18px;\n}\n\n#updraft_activejobs_table {\n\toverflow: hidden;\n\twidth: 100%;\n\tbackground: #FAFAFA;\n\tpadding: 0;\n}\n\n.updraft_requeststart {\n\tpadding: 15px 33px;\n\ttext-align: center;\n}\n\n.updraft_requeststart .spinner {\n\tvisibility: visible;\n\tfloat: none;\n\tvertical-align: middle;\n\tmargin-top: -2px;\n}\n\na.updraft_jobinfo_delete.disabled {\n\topacity: 0.4;\n\tcolor: inherit;\n\ttext-decoration: none;\n}\n\n.updraft_row {\n\tclear: both;\n\ttransition: 0.3s all;\n\tpadding: 15px 33px;\n}\n\n.updraft_row.deleting {\n\topacity: 0.4;\n}\n\n.updraft_progress_container {\n\t/* width: 83%; */\n}\n\n.updraft_existing_backups_count {\n\tpadding: 2px 8px;\n\tfont-size: 12px;\n\tbackground: #CA4A1E;\n\tcolor: #FFF;\n\tfont-weight: bold;\n\tborder-radius: 10px;\n}\n\n.form-table .existing-backups-table input[type=\"checkbox\"] {\n\tborder-radius: 0;\n}\n\n.form-table .existing-backups-table .check-column {\n\twidth: 40px;\n\tpadding: 0;\n\tpadding-top: 8px;\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, #updraft-delete-waitwarning > .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\nspan#updraft_lastlogcontainer {\n\tword-break: break-all;\n}\n\n.stored_icon {\n\theight: 1.3em;\n\tposition: relative;\n\ttop: 0.2em;\n}\n\n.backup_date_label > * {\n\tvertical-align: middle;\n}\n\n.backup_date_label .dashicons {\n\tfont-size: 18px;\n}\n\n.backup_date_label .clear-right {\n\tclear: right;\n}\n\n.existing-backups-table .backup_date_label > div, .existing-backups-table .backup_date_label span > div {\n\tfont-weight: bold;\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_exclude_container,\n.updraft_include_container {\n\tmargin-left: 24px;\n\tmargin-top: 5px;\n\tmargin-bottom: 10px;\n\tpadding: 15px;\n\tborder: 1px solid #DDD;\n}\n\nlabel.updraft-exclude-label {\n\tfont-weight: 500;\n\tmargin-bottom: 5px;\n\tdisplay: block;\n}\n\n.updraft_add_exclude_item,\n#updraft_include_more_paths_another {\n\tdisplay: inline-block;\n\tmargin-top: 10px;\n}\n\ninput.updraft_exclude_entity_field,\n.form-table td input.updraft_exclude_entity_field,\n.updraftplus-morefiles-row input[type=text] {\n\twidth: calc(100% - 70px);\n\tmax-width: 400px;\n}\n\n@media screen and (max-width: 782px) {\n\n\t.form-table td input.updraft_exclude_entity_field,\n\t.form-table td .updraftplus-morefiles-row input[type=text] {\n\t\tdisplay: inline-block;\n\t}\n\n}\n\n.updraft_exclude_entity_delete.dashicons, .updraft_exclude_entity_edit.dashicons, .updraft_exclude_entity_update.dashicons, .updraftplus-morefiles-row a.dashicons {\n\tmargin-top: 2px;\n\tfont-size: 20px;\n\tbox-shadow: none;\n\tline-height: 1;\n\tpadding: 3px;\n\tmargin-right: 4px;\n}\n\n.updraft_exclude_entity_delete,\n.updraft_exclude_entity_delete:hover,\n.updraftplus-morefiles-row-delete {\n\tcolor: #FF6347;\n}\n\n.updraft_exclude_entity_update.dashicons, .updraft_exclude_entity_update.dashicons:hover {\n\tcolor: #008000;\n\tfont-weight: bold;\n\tfont-size: 22px;\n\tmargin-left: 4px;\n}\n\n.updraft_exclude_entity_edit {\n\tmargin-left: 4px;\n}\n\n.updraft_exclude_entity_update.is-active ~ .updraft_exclude_entity_delete {\n\tdisplay: none;\n}\n\n.updraft-exclude-panel-heading {\n\tmargin-bottom: 8px;\n}\n\n.updraft-exclude-panel-heading h3 {\n\tmargin: 0.5em 0 0.5em 0;\n}\n\n.updraft-exclude-submit.button-primary {\n\tmargin-top: 5px;\n}\n\n.updraft_exclude_actions_list {\n\tfont-weight: bold;\n}\n\n.updraft-exclude-link {\n\tcursor: pointer;\n}\n\n#updraft_include_more_options {\n\tpadding-left: 25px;\n}\n\n#updraft_report_cell .updraft_reportbox,\n.updraft_small_box {\n\tpadding: 12px;\n\tmargin: 8px 0;\n\tborder: 1px solid #CCC;\n\tposition: relative;\n}\n\n#updraft_report_cell button.updraft_reportbox_delete,\n.updraft_box_delete_button,\n.updraft_small_box .updraft_box_delete_button {\n\tpadding: 4px;\n\tpadding-top: 6px;\n\tborder: none;\n\tbackground: transparent;\n\tposition: absolute;\n\ttop: 4px;\n\tright: 4px;\n\tcursor: pointer;\n}\n\n#updraft_report_cell button.updraft_reportbox_delete:hover {\n\tcolor: #DE3C3C;\n}\n\na.updraft_report_another .dashicons {\n\ttext-decoration: none;\n\tmargin-top: 2px;\n}\n\n.updraft_report_dbbackup.updraft_report_disabled {\n\tcolor: #CCC;\n}\n\n#updraft-navtab-settings-content .updraft-test-button {\n\tfont-size: 18px !important;\n}\n\n#updraft_report_cell .updraft_report_email {\n\tdisplay: block;\n\twidth: calc(100% - 50px);\n\tmargin-bottom: 9px;\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#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected td {\n\tbackground-color: #EFEFEF;\n}\n\n#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected:nth-child(even) td {\n\tbackground-color: #E8E8E8;\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\ntr[class*=\"_updraft_remote_storage_border\"] {\n\tborder-top: 1px solid #CCC;\n}\n\n.updraft_multi_storage_options {\n\tfloat: right;\n\tclear: right;\n\tmargin-bottom: 5px !important;\n}\n\n.updraft_toggle_instance_label {\n\tvertical-align: top !important;\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, .onedrive_folder_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_jstree .jstree-container-ul > .jstree-node,\n#updraft_more_files_jstree .jstree-container-ul > .jstree-node {\n\tbackground: transparent;\n}\n\n.updraft_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_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_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_jstree_info_container {\n\tposition: relative;\n\theight: auto;\n\twidth: 100%;\n\tborder: 1px dotted;\n\tmargin-bottom: 5px;\n}\n\n.updraft_jstree_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_exclude_files_folders_jstree {\n\tmax-height: 200px;\n\toverflow-y: scroll;\n}\n\n.updraft_jstree {\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\twidth: 100%;\n\tborder: 1px solid #CCC;\n\tbackground: #FAFAFA;\n\tmargin-bottom: 5px;\n\tmargin-top: 4px;\n\tbox-shadow: 0 5px 8px rgba(0, 0, 0, 0.1);\n}\n\ndiv#updraft_more_files_container::before {\n\tcontent: ' ';\n\twidth: 11px;\n\theight: 11px;\n\tdisplay: block;\n\tbackground: #FAFAFA;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 20px;\n\tborder-top: 1px solid #CCC;\n\tborder-left: 1px solid #CCC;\n\ttransform: translatey(-7px) rotate(45deg);\n}\n\ninput.updraft_more_path_editing {\n\tborder-color: #0285BA;\n}\n\ninput.updraft_more_path_editing ~ a.dashicons {\n\tdisplay: none;\n}\n\n#updraft_jstree_buttons {\n\tpadding: 10px;\n\tbackground: #E6E6E6;\n}\n\n#updraft_jstree_container {\n\theight: 300px;\n\twidth: 100%;\n\toverflow: auto;\n}\n\n#updraft_more_files_container button {\n\tline-height: 20px;\n}\n\n#updraft_parent_directory {\n\tmargin: 10px 10px 4px 10px;\n\tpadding-left: 3px;\n}\n\n#updraft_jstree_confirm, #updraft_jstree_cancel {\n\tdisplay: none;\n}\n\n.updraftplus-morefiles-row-delete,\n.updraftplus-morefiles-row-edit {\n\tcursor: pointer;\n}\n\n#updraft-wrap .form-table th {\n\twidth: 230px;\n}\n\n#updraft-wrap .form-table .existing-backups-table th {\n\twidth: auto;\n}\n\n.updraft-viewlogdiv form {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.updraft-viewlogdiv {\n\tdisplay: inline-block;\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 input:hover, .updraft-viewlogdiv a:hover {\n\tcolor: #FFF;\n\tcursor: pointer;\n}\n\n.button.button-remove {\n\tcolor: white;\n\tbackground-color: #DE3C3C;\n\tborder-color: #C00000;\n\tbox-shadow: 0 1px 0 #C10100;\n}\n\n.button.button-remove:hover,\n.button.button-remove:focus {\n\tborder-color: #C00;\n\tcolor: #FFF;\n\tbackground: #C00;\n}\n\n/* button-remove colors for midnight admin theme */\nbody.admin-color-midnight .button.button-remove {\n\tcolor: #DE3C3C;\n\tbackground-color: #F7F7F7;\n\tborder-color: #CCC;\n\tbox-shadow: 0 1px 0 #CCC;\n}\n\nbody.admin-color-midnight .button.button-remove:hover, body.admin-color-midnight .button.button-remove:focus {\n\tborder-color: #BA281F;\n}\n\nbody.admin-color-midnight .button.button-remove:focus {\n\tbox-shadow: inherit;\n\tbox-shadow: 0 0 3px rgba(0, 115, 170, 0.8);\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: 1px;\n\tbackground: #ECECEC;\n\tborder: solid 1px #CCC;\n\tmargin: 4px 0;\n}\n\n.updraft_premium section {\n\tmargin-bottom: 20px;\n}\n\n/*\n\tCall to action Premium\n*/\n.updraft_premium_cta {\n\tbackground: #FFF;\n\tmargin-top: 30px;\n\tpadding: 0;\n\tborder-left: 4px solid #DB6A03;\n}\n\n.updraft_premium_cta a {\n\tfont-weight: normal;\n}\n\n.updraft_premium_cta a.button.button-primary.button-hero {\n\tfont-size: 1.3em;\n\tletter-spacing: 0.03rem;\n\ttext-transform: uppercase;\n}\n\n.updraft_premium_cta__top {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: 18px 30px;\n}\n\n.updraft_premium_cta__bottom {\n\tbackground: #F9F9F9;\n\tpadding: 5px 30px;\n}\n\n.updraft_premium_cta__summary {\n\tmargin-right: 60px;\n}\n\n.updraft_premium_cta h2 {\n\tfont-size: 28px;\n\tfont-weight: 200;\n\tline-height: 1;\n\tmargin: 0;\n\tmargin-bottom: 5px;\n\tletter-spacing: 0.05rem;\n\tcolor: #DB6A03;\n}\n\n.updraft_premium_cta ul li::after {\n\tcolor: #CCC;\n}\n\n@media only screen and (max-width: 768px) {\n\n\t.updraft_premium_cta__top {\n\t\tflex-direction: column;\n\t\ttext-align: center;\n\t\talign-items: center;\n\t}\n\n\t.updraft_premium_cta__summary {\n\t\tmargin-right: 0;\n\t\tmargin-bottom: 30px;\n\t}\n\n}\n\n/*\n\tBox\n*/\n.udp-box {\n\tbackground: #FFF;\n\tpadding: 20px;\n\tbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n\ttext-align: center;\n}\n\n.udp-box h3 {\n\tmargin: 0;\n}\n\n.udp-box__heading {\n\talign-self: center;\n\tbackground: none;\n\tbox-shadow: none;\n}\n\n/*\n\tOther Plugins\n*/\n.updraft-more-plugins {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: wrap;\n\tjustify-content: space-between;\n\tflex-wrap: wrap;\n}\n\n.updraft-more-plugins img {\n\tmax-width: 200px;\n\twidth: 100%;\n\tdisplay: inline-block;\n}\n\n.updraft-more-plugins .udp-box {\n\tbox-sizing: border-box;\n\twidth: 24%;\n}\n\n.updraft-more-plugins .udp-box p:last-child {\n\tmargin-bottom: 0;\n\tpadding-bottom: 0;\n}\n\n/*\n\tlinks list\n*/\n.updraft_premium_description_list {\n\ttext-align: left;\n\tmargin: 0;\n\tfont-size: 12px;\n}\n\nul.updraft_premium_description_list, ul#updraft_restore_warnings {\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-child::after {\n\tcontent: \"\";\n}\n\n.updraft_feature_cell {\n\tbackground-color: #F7D9C9 !important;\n\tpadding: 5px 10px;\n}\n\n.updraftplus_com_login_status, .updraftplus_com_key_status {\n\tdisplay: none;\n\tborder-left-color: #DC3232 !important;\n\tbackground: #FFF;\n\tborder-left: 4px solid #FFF;\n\tbox-shadow: 0 1px 1px 0 rgba(0,0,0,.1);\n\tmargin: 5px 0 15px 0;\n\tpadding: 5px 12px;\n}\n\n.updraft_feat_table {\n\tborder: none;\n\tborder-collapse: collapse;\n\tfont-size: 120%;\n\tbackground-color: white;\n\ttext-align: center;\n}\n\n.updraft_feat_th, .updraft_feat_table td {\n\tborder: 1px solid #F1F1F1;\n\tborder-collapse: collapse;\n\tfont-size: 120%;\n\tbackground-color: white;\n\ttext-align: center;\n\tpadding: 15px;\n}\n\n.updraft_feat_table td {\n\tborder-bottom-width: 4px;\n}\n\n.updraft_feat_table td:first-child {\n\tborder-left: none;\n}\n\n.updraft_feat_table td:last-child {\n\tborder-right: none;\n}\n\n.updraft_feat_table tr:last-child td {\n\tborder-bottom: none;\n}\n\n.updraft_feat_table td:nth-child(2),\n.updraft_feat_table td:nth-child(3) {\n\tbackground-color: rgba(241, 241, 241, 0.38);\n\twidth: 190px;\n}\n\n.updraft_feat_table__header td img {\n\tdisplay: block;\n\tmargin: 0 auto;\n}\n\n.updraft_feat_table__header td {\n\ttext-align: center;\n}\n\n.updraft_feat_table .installed {\n\tfont-size: 14px;\n}\n\n.updraft_feat_table p {\n\tpadding: 0px 10px;\n\tmargin: 5px 0px;\n\tfont-size: 13px;\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.ud_downloadstatus__close {\n\tborder: none;\n\tbackground: transparent;\n\twidth: auto;\n\tfont-size: 20px;\n\tpadding: 0;\n\tcursor: pointer;\n}\n\n#filelist .fileprogress, #filelist2 .fileprogress, .ud_downloadstatus .dlfileprogress, #ud_downloadstatus2 .dlfileprogress {\n\twidth: 0%;\n\tbackground: #0572AA;\n\theight: 8px;\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\ndiv[class^=\"updraftplus_downloader_container_\"] {\n\tpadding: 10px;\n}\n\ntr.updraftplusmethod h3 {\n\tmargin: 0px;\n}\n\ntr.updraftplusmethod img {\n\tmax-width: 100%;\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\ttext-decoration: none;\n\tdisplay: inline-block;\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/* backup finished */\n.blockUI.blockOverlay.ui-widget-overlay {\n\tbackground: #000;\n}\n\n.updraft_success_popup {\n\ttext-align: center;\n\tpadding-bottom: 30px;\n}\n\n.updraft_success_popup > .dashicons {\n\tfont-size: 100px;\n\twidth: 100px;\n\theight: 100px;\n\tline-height: 100px;\n\tpadding: 0px;\n\tborder-radius: 50%;\n\tmargin-top: 30px;\n\tdisplay: block;\n\tmargin-left: auto;\n\tmargin-right: auto;\n\tbackground: #E2E6E5;\n}\n\n.updraft_success_popup > .dashicons.dashicons-yes {\n\ttext-indent: -5px;\n}\n\n.updraft_success_popup.success > .dashicons {\n\tcolor: green;\n}\n\n.updraft_success_popup.warning > .dashicons {\n\tcolor: #888;\n}\n\n.updraft_success_popup--message {\n\tpadding: 20px;\n}\n\n.button.updraft-close-overlay .dashicons {\n\ttext-decoration: none;\n\tfont-size: 20px;\n\tmargin-left: -5px;\n\tpadding: 0;\n}\n\n.updraft_saving_popup img {\n\tanimation-name: udp_blink;\n\tanimation-duration: 610ms;\n\tanimation-iteration-count: infinite;\n\tanimation-direction: alternate;\n\tanimation-timing-function: ease-out;\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.updraft_all-files {\n\tcolor: blue;\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\t/* font-size: 115%; */\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_activejobsrow th {\n\tmax-width: 112px;\n\tmargin: 0;\n\tpadding: 13px 0 0 0;\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}\n\n.download-backups .ud-whitespace-warning, .download-backups .ud-bom-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\tmargin: 16px 0;\n}\n\n.download-backups .upload {\n\tmax-width: 610px;\n}\n\n.download-backups #plupload-upload-ui {\n\twidth: 100%;\n}\n\n.ud_downloadstatus {\n\tpadding: 10px 0;\n}\n\n#ud_massactions, #updraft-delete-waitwarning {\n\tpadding: 14px;\n\tbackground: rgb(241, 241, 241);\n\tposition: absolute;\n\tleft: 0;\n\ttop: 100%;\n}\n\n#ud_massactions > *, #updraft-delete-waitwarning > * {\n\tvertical-align: middle;\n}\n\n#ud_massactions .updraftplus-remove {\n\tdisplay: inline-block;\n\tmargin-right: 0;\n}\n\n#ud_massactions .updraftplus-remove a {\n\ttext-decoration: none;\n}\n\n#ud_massactions .updraft-viewlogdiv a {\n\ttext-decoration: none;\n\tposition: relative;\n}\n\nsmall.ud_massactions-tip {\n\tdisplay: inline-block;\n\topacity: 0.5;\n\tfont-style: italic;\n\tmargin-left: 20px;\n}\n\n#updraft-navtab-backups-content .updraft_existing_backups {\n\tmargin-bottom: 35px;\n\tposition: relative;\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\tmax-width: 140px;\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\twidth: 100%;\n\ttext-align: center;\n\tpadding: 33px;\n}\n\n.job-id {\n\tmargin-top: 0;\n\tmargin-bottom: 8px;\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: #1D8EC2;\n\ttransition: width 0.3s;\n}\n\n.curstage {\n\tz-index: 1;\n\tborder-radius: 2px;\n\tmargin-top: 8px;\n\twidth: 100%;\n\theight: 26px;\n\tline-height: 26px;\n\tposition: relative;\n\ttext-align: center;\n\tfont-style: italic;\n\tcolor: #FFF;\n\tbackground-color: #B7B7B7;\n\ttext-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n}\n\n.curstage-info {\n\tdisplay: inline-block;\n\tz-index: 2;\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.updraft_existing_backups_wrapper {\n\tmargin-top: 20px;\n\tborder-top: 1px solid #DDD;\n}\n\n.updraft-no-backups-msg {\n\ttext-align: center;\n}\n\n.tr-bottom-4 {\n\tmargin-bottom: 4px;\n}\n\n.existing-backups-table th {\n\tpadding: 8px 10px;\n}\n\n.form-table .backup-date {\n\twidth: 172px;\n}\n\n.form-table .backup-data {\n\twidth: 426px;\n}\n\n.form-table .updraft_backup_actions {\n\twidth: 272px;\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.updraftplus-upload {\n\tmargin-right: 6px;\n\tfloat: left;\n\tclear: none;\n}\n\n.before-restore-button {\n\tpadding: 1px;\n\tmargin: 0px;\n}\n\n.before-restore-button div {\n\tfloat: none;\n\tdisplay: inline-block;\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_delete_old_dirs_pagediv {\n\tpadding-bottom: 10px;\n}\n\n/*#updraft_lastlogmessagerow > td, #updraft_last_backup > td {\n\tpadding: 0;\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#updraft-wrap .dashicons.dashicons-adapt-size {\n\tline-height: inherit;\n\tfont-size: inherit;\n}\n\n#updraft-wrap .button span.dashicons:not(.dashicons-adapt-size) {\n\tvertical-align: middle;\n\tmargin-top: -3px;\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/* 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:first-child {\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.updraftcentral_wizard_option {\n\twidth: 45%;\n\tfloat: left;\n\ttext-align: center;\n}\n\n.updraftcentral_wizard_option label {\n\tmargin-bottom: 8px;\n}\n\n#updraftcentral_keys_table {\n\tdisplay: none;\n}\n\n.create_key_container {\n\tborder: 1px solid;\n\tborder-radius: 4px;\n\tpadding: 0 0 6px 6px;\n\tmargin-bottom: 8px;\n}\n\n.updraftcentral_cloud_connect {\n\tborder-radius: 4px;\n\tborder: 1px solid #000;\n\tpadding: 0 20px;\n\tmargin-top: 30px;\n\tbackground-color: #FFF;\n}\n\n.updraftcentral_cloud_error {\n\tborder: 1px solid #000;\n\tpadding: 3px 10px;\n\tborder-left: 3px solid #F00;\n\tbackground-color: #FFF;\n\tmargin-bottom: 10px;\n}\n\n.updraftcentral_cloud_info {\n\tborder: 1px solid #000;\n\tpadding: 3px 10px;\n\tborder-left: 3px solid #EF8F31;\n\tbackground-color: #FFF;\n\tmargin-bottom: 10px;\n}\n\n.updraftplus_spinner.spinner {\n\tpadding-left: 25px;\n\tfloat: none;\n}\n\n.updraftplus_spinner.spinner.visible {\n\tvisibility: visible;\n}\n\n.updraftcentral_cloud_notices .updraftplus_spinner {\n\tmargin-top: -5px;\n}\n\n.updraftcentral-subheading {\n\tfont-size: 14px;\n\tmargin-top: -10px;\n\tmargin-bottom: 20px;\n}\n\n#updraftcentral_cloud_form input#email,\n#updraftcentral_cloud_form input#password {\n\tmin-width: 250px;\n}\n\n.updraftcentral-data-consent {\n\tfont-size: 13px;\n\tmargin-bottom: 10px;\n}\n\n.updraftcentral_cloud_wizard_image {\n\tfloat: left;\n\tmin-width: 100px;\n\tmargin-right: 25px;\n}\n\n.updraftcentral_cloud_wizard {\n\tfloat: left;\n}\n\n.updraftcentral_cloud_clear {\n\tclear: both;\n}\n\n.updraftplus-settings-footer {\n\tmargin-top: 30px;\n}\n\n.updraftplus-top-menu {\n\tpadding: 0.5em;\n}\n\n#updraft_inpage_backup #updraft_activejobs_table {\n\tbackground: transparent;\n}\n\n#updraft_inpage_backup #updraft_lastlogmessagerow .updraft-log-link {\n\tfloat: none;\n}\n\n#updraft_inpage_backup #updraft_activejobsrow .updraft_row {\n\tflex-direction: column;\n\tpadding-left: 20px;\n\tpadding-right: 20px;\n}\n\n#updraft_inpage_backup #updraft_activejobsrow .updraft_progress_container {\n\twidth: 100%;\n}\n\n#updraft_inpage_backup #updraft_activejobs_table {\n\toverflow: inherit;\n}\n\n#updraft_inpage_backup span#updraft_lastlogcontainer {\n\tpadding: 18px;\n\tbackground: #FAFAFA;\n\tdisplay: block;\n\tfont-size: 90%;\n\tbox-shadow: 0px 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n#updraft_inpage_backup div#updraft_activejobsrow {\n\tbackground: #FAFAFA;\n\tbox-shadow: 0px 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n#updraft_inpage_backup #updraft_lastlogmessagerow > div {\n\tbackground: transparent;\n\tpadding: 0;\n}\n\n#updraft_inpage_backup .last-message > strong {\n\tdisplay: block;\n\tmargin-top: 13px;\n}\n\n@media only screen and (min-width: 1024px) {\n\n\t#updraft_activejobsrow .updraft_row {\n\t\tdisplay: flex;\n\t\talign-items: baseline;\n\t}\n\n\t#updraft_activejobsrow .updraft_row .updraft_col {\n\t\tflex: auto;\n\t}\n\n\t#updraft_activejobsrow .updraft_progress_container {\n\t\twidth: calc(100% - 230px);\n\t}\n\n}\n\n@media only screen and (min-width: 782px) {\n\n\t.settings_page_updraftplus input[type=text],\n\t.settings_page_updraftplus input[type=password],\n\t.settings_page_updraftplus input[type=number] {\n\t\t/* border-radius: 4px; */\n\t\tline-height: 1.42;\n\t\t/* border: 1px solid #CCC; */\n\t\theight: 27px;\n\t\tpadding: 2px 6px;\n\t\tcolor: #555;\n\t}\n\n\t.settings_page_updraftplus input[type=\"number\"] {\n\t\theight: 31px;\n\t}\n\n\t#ud_massactions.active, #updraft-delete-waitwarning.active {\n\t\tposition: fixed;\n\t\tbottom: 0;\n\t\tleft: 160px;\n\t\tright: 0;\n\t\ttop: auto;\n\t\tbackground: #FFF;\n\t\tz-index: 3;\n\t\tbox-shadow: 0 0 10px rgba(0, 0, 0, 0.2);\n\t}\n\n\tbody.folded #ud_massactions.active, body.folded #updraft-delete-waitwarning.active {\n\t\tleft: 36px;\n\t}\n\n\t.updraft-after-form-table {\n\t\tmargin-left: 250px;\n\t}\n\n}\n\n@media only screen and (min-width: 782px) and (max-width: 960px) {\n\n\tbody.auto-fold #ud_massactions.active, body.auto-fold #updraft-delete-waitwarning.active {\n\t\tleft: 36px;\n\t}\n\n}\n\n@media only screen and (max-width: 782px) {\n\n\t#updraft-wrap {\n\t\tmargin-right: 0;\n\t}\n\n\t#updraft-wrap .form-table td {\n\t\tpadding-right: 0;\n\t}\n\n\tlabel.updraft_checkbox {\n\t\tmargin-bottom: 8px;\n\t\tmargin-top: 8px;\n\t\tmargin-left: 36px;\n\t}\n\n\t.updraft_retain_rules {\n\t\tposition: relative;\n\t\tmargin-right: 0;\n\t\tborder: 1px solid #CCC;\n\t\tpadding: 5px;\n\t\tmargin-bottom: -1px;\n\t}\n\n\t.updraft_retain_rules_delete {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\ttop: 5px;\n\t}\n\n\ta[id*=updraft_retain_] {\n\t\tdisplay: block;\n\t\tpadding: 15px 15px 15px 0;\n\t}\n\n\tlabel.updraft_checkbox > input[type=checkbox] {\n\t\tmargin-left: -33px;\n\t}\n\n\t#updraft-backupnow-button {\n\t\tmargin: 0;\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t}\n\n\t.updraft_next_scheduled_backups_wrapper > .updraft_backup_btn_wrapper {\n\t\tpadding-top: 0;\n\t}\n\n\t#ud_massactions, #updraft-delete-waitwarning {\n\t\twidth: 100%;\n\t\tbox-sizing: border-box;\n\t\ttext-align: center;\n\t}\n\n\t#ud_massactions.active {\n\t\tposition: fixed;\n\t\ttop: auto;\n\t\tbottom: 0;\n\t\twidth: 100%;\n\t\tbox-sizing: border-box;\n\t\ttext-align: center;\n\t\tbox-shadow: 0 -3px 15px rgba(0, 0, 0, 0.08);\n\t\tbackground: #FFF;\n\t\tz-index: 3;\n\t}\n\n\t#ud_massactions strong {\n\t\tdisplay: block;\n\t\tmargin-bottom: 5px;\n\t}\n\n\tsmall.ud_massactions-tip {\n\t\tdisplay: block;\n\t}\n\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\t.existing-backups-table .backup_date_label > div, .existing-backups-table .backup_date_label span > div {\n\t\tfont-weight: normal;\n\t}\n\n\t.existing-backups-table .backup_date_label .clear-right {\n\t\tdisplay: inline-block;\n\t}\n\n\ttable.widefat.existing-backups-table {\n\t\tborder: 0;\n\t\tbox-shadow: none;\n\t\tbackground: transparent;\n\t}\n\n\t.existing-backups-table thead {\n\t\tborder: none;\n\t\tclip: rect(0 0 0 0);\n\t\theight: 1px;\n\t\tmargin: -1px;\n\t\toverflow: hidden;\n\t\tpadding: 0;\n\t\tposition: absolute;\n\t\twidth: 1px;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t}\n\n\t.existing-backups-table tr {\n\t\tdisplay: block;\n\t\tmargin-bottom: .625em;\n\t\tpadding-bottom: 16.625px;\n\t\twidth: 100%;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\tmargin-bottom: 10px;\n\t\tbackground: #FFF;\n\t\tbox-shadow: 0 2px 3px rgba(0, 0, 0, 0.1);\n\t}\n\n\t.existing-backups-table td {\n\t\tborder-bottom: 1px solid #DDD;\n\t\tdisplay: block;\n\t\tfont-size: .9em;\n\t\ttext-align: left;\n\t\twidth: 100%;\n\t\tpadding: 10px;\n\t\tmargin: 0;\n\t}\n\n\t.wp-list-table.existing-backups-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before {\n\t\t/*\n\t\t* aria-label has no advantage, it won't be read inside a table\n\t\tcontent: attr(aria-label);\n\t\t*/\n\t\tcontent: attr(data-label);\n\t\tfont-weight: bold;\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tleft: auto;\n\t\tpadding-bottom: 10px;\n\t\twidth: auto;\n\t\ttext-align: left;\n\t}\n\n\t.existing-backups-table td:last-child {\n\t\tborder-bottom: 0;\n\t}\n\n\t.form-table td.updraft_existingbackup_date {\n\t\twidth: inherit;\n\t\tmax-width: 100%;\n\t}\n\n\t.existing-backups-table td.before-restore-button {\n\t\tmin-height: 36px;\n\t}\n\n\t.updraft_next_scheduled_backups_wrapper {\n\t\tflex-direction: column;\n\t}\n\n\t.updraft_next_scheduled_backups_wrapper > div {\n\t\twidth: 100%;\n\t}\n\n\t.updraft_progress_container {\n\t\t/* width: 77%; */\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row {\n\t\tposition: relative;\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected {\n\t\tbackground-color: #FFF;\n\t\tborder-left: 4px solid #0572AA;\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row td:not(.backup-select) {\n\t\tmargin-left: 50px;\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row td.backup-select {\n\t\twidth: 50px !important;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 0;\n\t\tbox-sizing: border-box;\n\t\theight: 100%;\n\t\tz-index: 1;\n\t\tborder: none;\n\t\tborder-right: 1px solid rgba(0, 0, 0, 0.05);\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups input[type=\"checkbox\"] {\n\t\theight: 25px;\n\t}\n\n\t.updraft_migrate_intro button.button.button-primary.button-hero {\n\t\tdisplay: block;\n\t\tmargin-right: 0;\n\t\twidth: 100%;\n\t\tmax-width: 100%;\n\t}\n\n\t.updraftclone-main-row {\n\t\tflex-direction: column;\n\t}\n\n\t.updraftclone-main-row > div {\n\t\twidth: auto;\n\t\tmax-width: none;\n\t\tmargin-right: 0;\n\t\tmargin-bottom: 10px;\n\t}\n\n\t.form-table th {\n\t\tpadding-bottom: 10px;\n\t}\n\n}\n\n@media screen and (max-width: 600px) {\n\t\n\t.updraft_next_scheduled_backups_wrapper > div {\n\t}\n\n\t.updraft_next_scheduled_entity {\n\t\tfloat: none;\n\t\twidth: 100%;\n\t\tmargin-bottom: 2em;\n\t}\n\n\t.updraft_time_now_wrapper {\n\t\tmargin-top: 0;\n\t}\n\n\t#updraft_lastlogmessagerow h3 {\n\t\tmargin-bottom: 5px;\n\t}\n\n\t#updraft_lastlogmessagerow .updraft-log-link {\n\t\tdisplay: block;\n\t\tfloat: none;\n\t\tmargin: 0;\n\t\tmargin-bottom: 10px;\n\t}\n\n}\n\n@media screen and (max-width: 520px) {\n}\n\n@media only screen and (min-width: 768px) {\n\n\t.addon-activation-notice {\n\t\tleft: 20em;\n\t}\n\n\t.existing-backups-table tbody tr:hover {\n\t\tbackground: #F1F1F1;\n\t}\n\n\t.existing-backups-table tbody tr td.before-restore-button {\n\t\tposition: relative;\n\t}\n\n\t.form-table .existing-backups-table thead th.check-column {\n\t\tpadding-left: 6px;\n\t}\n\n\t.existing-backups-table tr td:first-child {\n\t\tborder-left: 4px solid transparent;\n\t}\n\n\t.existing-backups-table tr.backuprowselected td:first-child {\n\t\tborder-left-color: #0572AA;\n\t}\n\n}\n\n@media screen and (min-width: 670px) {\n\t\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\n@media only screen and (max-width: 1068px) {\n\n\t.updraft-more-plugins .udp-box {\n\t\twidth: calc(50% - 10px);\n\t\tmargin-bottom: 20px;\n\t}\n\n\t.updraft_feat_table td:nth-child(2), .updraft_feat_table td:nth-child(3) {\n\t\twidth: 100px;\n\t}\n\n}\n\n@media only screen and (max-width: 600px) {\n\n\t.updraft-more-plugins .udp-box {\n\t\twidth: 100%;\n\t\tmargin-bottom: 20px;\n\t}\n\n\t.updraft_feat_table td:nth-child(2), .updraft_feat_table td:nth-child(3) {\n\t\twidth: auto;\n\t}\n\n\ttable.updraft_feat_table {\n\t\tdisplay: block;\n\t}\n\n\ttable.updraft_feat_table tr {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t}\n\n\ttable.updraft_feat_table td {\n\t\tdisplay: block;\n\t}\n\n\ttable.updraft_feat_table td:first-child {\n\t\twidth: 100%;\n\t\tborder-bottom: none;\n\t}\n\n\ttable.updraft_feat_table td:not(:first-child) {\n\t\twidth: 50%;\n\t\tbox-sizing: border-box;\n\t}\n\n\ttable.updraft_feat_table td:first-child:empty {\n\t\tdisplay: none;\n\t}\n\n\ttd[data-colname]::before {\n\t\tcontent: attr(data-colname);\n\t\tfont-size: 0.8rem;\n\t\tcolor: #CCC;\n\t\tline-height: 1;\n\t}\n\n}\n"]}
includes/S3compat.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  /**
6
  *
7
- * Copyright (c) 2012-5, David Anderson (https://www.simbahosting.co.uk). All rights reserved.
8
  * Portions copyright (c) 2011, Donovan Schönknecht. All rights reserved.
9
  *
10
  * Redistribution and use in source and binary forms, with or without
@@ -102,7 +102,7 @@ class UpdraftPlus_S3_Compat {
102
  * @param Null|String $region Region. Currently unused, but harmonised with UpdraftPlus_S3 class
103
  * @return void
104
  */
105
- public function __construct($access_key = null, $secret_key = null, $use_ssl = true, $ssl_ca_cert = true, $endpoint = null, $session_token = null, $region = null) {
106
  if (null !== $access_key && null !== $secret_key)
107
  $this->setAuth($access_key, $secret_key, $session_token);
108
 
@@ -260,7 +260,8 @@ class UpdraftPlus_S3_Compat {
260
  * @param string $ssl_ca_cert SSL CA cert (only required if you are having problems with your system CA cert)
261
  * @return void
262
  */
263
- public function setSSLAuth($ssl_cert = null, $ssl_key = null, $ssl_ca_cert = null) {
 
264
  if (!$this->use_ssl) return;
265
 
266
  if (!$this->use_ssl_validation) {
@@ -360,7 +361,7 @@ class UpdraftPlus_S3_Compat {
360
  * @param boolean $return_common_prefixes Set to true to return CommonPrefixes
361
  * @return array
362
  */
363
- public function getBucket($bucket, $prefix = null, $marker = null, $max_keys = null, $delimiter = null, $return_common_prefixes = false) {
364
  try {
365
  if (0 == $max_keys) $max_keys = null;
366
 
@@ -499,7 +500,7 @@ class UpdraftPlus_S3_Compat {
499
  * @param constant $storage_class Storage class constant
500
  * @return string | false
501
  */
502
- public function initiateMultipartUpload($bucket, $uri, $acl = self::ACL_PRIVATE, $meta_headers = array(), $request_headers = array(), $storage_class = self::STORAGE_CLASS_STANDARD) {
503
  $vars = array(
504
  'ACL' => $acl,
505
  'Bucket' => $bucket,
@@ -671,7 +672,7 @@ class UpdraftPlus_S3_Compat {
671
  * @param string $content_type Content type
672
  * @return boolean returns either true of false
673
  */
674
- public function putObjectString($string, $bucket, $uri, $acl = self::ACL_PRIVATE, $meta_headers = array(), $content_type = 'text/plain') {
675
  try {
676
  $result = $this->client->putObject(array(
677
  'Bucket' => $bucket,
4
 
5
  /**
6
  *
7
+ * Copyright (c) 2012-9, David Anderson (https://www.simbahosting.co.uk). All rights reserved.
8
  * Portions copyright (c) 2011, Donovan Schönknecht. All rights reserved.
9
  *
10
  * Redistribution and use in source and binary forms, with or without
102
  * @param Null|String $region Region. Currently unused, but harmonised with UpdraftPlus_S3 class
103
  * @return void
104
  */
105
+ public function __construct($access_key = null, $secret_key = null, $use_ssl = true, $ssl_ca_cert = true, $endpoint = null, $session_token = null, $region = null) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
106
  if (null !== $access_key && null !== $secret_key)
107
  $this->setAuth($access_key, $secret_key, $session_token);
108
 
260
  * @param string $ssl_ca_cert SSL CA cert (only required if you are having problems with your system CA cert)
261
  * @return void
262
  */
263
+ public function setSSLAuth($ssl_cert = null, $ssl_key = null, $ssl_ca_cert = null) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
264
+
265
  if (!$this->use_ssl) return;
266
 
267
  if (!$this->use_ssl_validation) {
361
  * @param boolean $return_common_prefixes Set to true to return CommonPrefixes
362
  * @return array
363
  */
364
+ public function getBucket($bucket, $prefix = null, $marker = null, $max_keys = null, $delimiter = null, $return_common_prefixes = false) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
365
  try {
366
  if (0 == $max_keys) $max_keys = null;
367
 
500
  * @param constant $storage_class Storage class constant
501
  * @return string | false
502
  */
503
+ public function initiateMultipartUpload($bucket, $uri, $acl = self::ACL_PRIVATE, $meta_headers = array(), $request_headers = array(), $storage_class = self::STORAGE_CLASS_STANDARD) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
504
  $vars = array(
505
  'ACL' => $acl,
506
  'Bucket' => $bucket,
672
  * @param string $content_type Content type
673
  * @return boolean returns either true of false
674
  */
675
+ public function putObjectString($string, $bucket, $uri, $acl = self::ACL_PRIVATE, $meta_headers = array(), $content_type = 'text/plain') { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- legacy function
676
  try {
677
  $result = $this->client->putObject(array(
678
  'Bucket' => $bucket,
includes/class-backup-history.php CHANGED
@@ -250,7 +250,7 @@ class UpdraftPlus_Backup_History {
250
  * @param String $v - ignored
251
  * @return Mixed - the database option
252
  */
253
- public static function filter_updraft_backup_history($v) {
254
  global $wpdb;
255
  $row = $wpdb->get_row($wpdb->prepare("SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", 'updraft_backup_history'));
256
  if (is_object($row)) return maybe_unserialize($row->option_value);
@@ -503,7 +503,7 @@ class UpdraftPlus_Backup_History {
503
  'code' => 'possibleforeign_'.md5($entry),
504
  'desc' => $entry,
505
  'method' => '',
506
- 'message' => __('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)).', 'updraftplus').' <a href="https://updraftplus.com/shop/updraftplus-premium/">'.__('If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you.', 'updraftplus').'</a>'
507
  );
508
  $messages[$potmessage['code']] = $potmessage;
509
  continue;
@@ -642,7 +642,8 @@ class UpdraftPlus_Backup_History {
642
  if ($btime <= 100) continue;
643
 
644
  // Remember that at this point, we already know that the file is not stored locally (else it would have been pruned earlier from $remote_files)
645
- if (isset($backup_history[$btime])) {
 
646
  if (!isset($backup_history[$btime]['service']) || (is_array($backup_history[$btime]['service']) && $backup_history[$btime]['service'] !== $services) || (is_string($backup_history[$btime]['service']) && (1 != count($services) || $services[0] !== $backup_history[$btime]['service']))) {
647
  $changes = true;
648
  if (isset($backup_history[$btime]['service'])) {
@@ -691,7 +692,7 @@ class UpdraftPlus_Backup_History {
691
  }
692
  }
693
  }
694
-
695
  $more_backup_history = apply_filters('updraftplus_more_rebuild', $backup_history);
696
 
697
  if ($more_backup_history) {
250
  * @param String $v - ignored
251
  * @return Mixed - the database option
252
  */
253
+ public static function filter_updraft_backup_history($v) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
254
  global $wpdb;
255
  $row = $wpdb->get_row($wpdb->prepare("SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", 'updraft_backup_history'));
256
  if (is_object($row)) return maybe_unserialize($row->option_value);
503
  'code' => 'possibleforeign_'.md5($entry),
504
  'desc' => $entry,
505
  'method' => '',
506
+ 'message' => __('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)).', 'updraftplus').' <a href="https://updraftplus.com/shop/updraftplus-premium/" target="_blank">'.__('If this is a backup created by a different backup plugin, then UpdraftPlus Premium may be able to help you.', 'updraftplus').'</a>'
507
  );
508
  $messages[$potmessage['code']] = $potmessage;
509
  continue;
642
  if ($btime <= 100) continue;
643
 
644
  // Remember that at this point, we already know that the file is not stored locally (else it would have been pruned earlier from $remote_files)
645
+ // The check for a new set needs to take into account that $backup_history[$btime]['service_instance_ids'] may have been created further up this method
646
+ if (isset($backup_history[$btime]) && array('service_instance_ids') !== array_keys($backup_history[$btime])) {
647
  if (!isset($backup_history[$btime]['service']) || (is_array($backup_history[$btime]['service']) && $backup_history[$btime]['service'] !== $services) || (is_string($backup_history[$btime]['service']) && (1 != count($services) || $services[0] !== $backup_history[$btime]['service']))) {
648
  $changes = true;
649
  if (isset($backup_history[$btime]['service'])) {
692
  }
693
  }
694
  }
695
+
696
  $more_backup_history = apply_filters('updraftplus_more_rebuild', $backup_history);
697
 
698
  if ($more_backup_history) {
includes/class-database-utility.php CHANGED
@@ -10,6 +10,16 @@ class UpdraftPlus_Database_Utility {
10
 
11
  private $dbhandle;
12
 
 
 
 
 
 
 
 
 
 
 
13
  public function __construct($whichdb, $table_prefix_raw, $dbhandle) {
14
  $this->whichdb = $whichdb;
15
  $this->table_prefix_raw = $table_prefix_raw;
@@ -19,9 +29,10 @@ class UpdraftPlus_Database_Utility {
19
  /**
20
  * The purpose of this function is to make sure that the options table is put in the database first, then the users table, then the site + blogs tables (if present - multisite), then the usermeta table; and after that the core WP tables - so that when restoring we restore the core tables first
21
  *
22
- * @param [array] $a_arr the first array
23
- * @param [array] $b_arr the second array
24
- * @return [array] returns a sorted array
 
25
  */
26
  public function backup_db_sorttables($a_arr, $b_arr) {
27
 
@@ -58,7 +69,7 @@ class UpdraftPlus_Database_Utility {
58
  $updraftplus->log($e->getMessage());
59
  }
60
 
61
- if (empty($core_tables)) $core_tables = array('terms', 'term_taxonomy', 'termmeta', 'term_relationships', 'commentmeta', 'comments', 'links', 'postmeta', 'posts', 'site', 'sitemeta', 'blogs', 'blogversions');
62
 
63
  $na = UpdraftPlus_Manipulation_Functions::str_replace_once($our_table_prefix, '', $a);
64
  $nb = UpdraftPlus_Manipulation_Functions::str_replace_once($our_table_prefix, '', $b);
@@ -72,18 +83,16 @@ class UpdraftPlus_WPDB_OtherDB_Utility extends wpdb {
72
  /**
73
  * This adjusted bail() does two things: 1) Never dies and 2) logs in the UD log
74
  *
75
- * @param [string] $message a string containing a message
76
- * @param [string] $error_code a string containing an error code
77
- * @return [bool] returns false
78
  */
79
- public function bail( $message, $error_code = '500' ) {
80
  global $updraftplus;
81
  if ('db_connect_fail' == $error_code) $message = 'Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled.';
82
  $updraftplus->log("WPDB_OtherDB error: $message ($error_code)");
83
  // Now do the things that would have been done anyway
84
- if (class_exists('WP_Error'))
85
- $this->error = new WP_Error($error_code, $message);
86
- else $this->error = $message;
87
  return false;
88
  }
89
  }
10
 
11
  private $dbhandle;
12
 
13
+ /**
14
+ * Constructor
15
+ */
16
+ /**
17
+ * Constructor
18
+ *
19
+ * @param String $whichdb - which database is being backed up
20
+ * @param String $table_prefix_raw - the base table prefix
21
+ * @param Object $dbhandle - WPDB object
22
+ */
23
  public function __construct($whichdb, $table_prefix_raw, $dbhandle) {
24
  $this->whichdb = $whichdb;
25
  $this->table_prefix_raw = $table_prefix_raw;
29
  /**
30
  * The purpose of this function is to make sure that the options table is put in the database first, then the users table, then the site + blogs tables (if present - multisite), then the usermeta table; and after that the core WP tables - so that when restoring we restore the core tables first
31
  *
32
+ * @param Array $a_arr the first array
33
+ * @param Array $b_arr the second array
34
+ *
35
+ * @return Integer - the sort result, according to the rules of PHP custom sorting functions
36
  */
37
  public function backup_db_sorttables($a_arr, $b_arr) {
38
 
69
  $updraftplus->log($e->getMessage());
70
  }
71
 
72
+ if (empty($core_tables)) $core_tables = array('terms', 'term_taxonomy', 'termmeta', 'term_relationships', 'commentmeta', 'comments', 'links', 'postmeta', 'posts', 'site', 'sitemeta', 'blogs', 'blogversions', 'blogmeta');
73
 
74
  $na = UpdraftPlus_Manipulation_Functions::str_replace_once($our_table_prefix, '', $a);
75
  $nb = UpdraftPlus_Manipulation_Functions::str_replace_once($our_table_prefix, '', $b);
83
  /**
84
  * This adjusted bail() does two things: 1) Never dies and 2) logs in the UD log
85
  *
86
+ * @param String $message a string containing a message
87
+ * @param String $error_code a string containing an error code
88
+ * @return Boolean returns false
89
  */
90
+ public function bail($message, $error_code = '500') {
91
  global $updraftplus;
92
  if ('db_connect_fail' == $error_code) $message = 'Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled.';
93
  $updraftplus->log("WPDB_OtherDB error: $message ($error_code)");
94
  // Now do the things that would have been done anyway
95
+ $this->error = class_exists('WP_Error') ? new WP_Error($error_code, $message) : $message;
 
 
96
  return false;
97
  }
98
  }
includes/class-filesystem-functions.php CHANGED
@@ -50,6 +50,55 @@ class UpdraftPlus_Filesystem_Functions {
50
 
51
  }
52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  /**
54
  * Get the html of "Web-server disk space" line which resides above of the existing backup table
55
  *
@@ -393,12 +442,13 @@ class UpdraftPlus_Filesystem_Functions {
393
  *
394
  * @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
395
  *
396
- * @param String $file Full path and filename of ZIP archive.
397
- * @param String $to Full path on the filesystem to extract archive to.
 
398
  *
399
  * @return Boolean|WP_Error True on success, WP_Error on failure.
400
  */
401
- public static function unzip_file($file, $to) {
402
  global $wp_filesystem;
403
 
404
  if (!$wp_filesystem || !is_object($wp_filesystem)) {
@@ -431,15 +481,83 @@ class UpdraftPlus_Filesystem_Functions {
431
  }
432
  }
433
 
 
 
 
 
 
 
434
  if (class_exists('ZipArchive', false) && apply_filters('unzip_file_use_ziparchive', true)) {
435
- // Should be able to use self::unzip_file_go() here - not yet tested
436
- $result = _unzip_file_ziparchive($file, $to, $needed_dirs);
437
  if (true === $result || (is_wp_error($result) && 'incompatible_archive' != $result->get_error_code())) return $result;
438
  }
439
 
440
  // Fall through to PclZip if ZipArchive is not available, or encountered an error opening the file.
441
- // Not yet ready to be able to use self::unzip_file_go() until that is ready for PclZip
442
- return _unzip_file_pclzip($file, $to, $needed_dirs);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
443
  }
444
 
445
  /**
@@ -449,24 +567,32 @@ class UpdraftPlus_Filesystem_Functions {
449
  *
450
  * @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
451
  *
452
- * @param String $file Full path and filename of ZIP archive.
453
- * @param String $to Full path on the filesystem to extract archive to.
454
- * @param Array $needed_dirs A partial list of required folders needed to be created.
455
- * @param String $method Either 'ziparchive' or 'pclzip'. DO NOT USE 'pclzip'; it's not yet ready.
 
456
  *
457
  * @return Boolean|WP_Error True on success, WP_Error on failure.
458
  */
459
- public static function unzip_file_go($file, $to, $needed_dirs = array(), $method = 'ziparchive') {
460
- global $wp_filesystem;
461
 
462
  $class_to_use = ('ziparchive' == $method) ? 'UpdraftPlus_ZipArchive' : 'UpdraftPlus_PclZip';
463
 
464
  if (!class_exists($class_to_use)) require_once(UPDRAFTPLUS_DIR.'/includes/class-zip.php');
465
 
 
 
466
  $z = new $class_to_use;
467
 
468
  $flags = (version_compare(PHP_VERSION, '5.2.12', '>') && defined('ZIPARCHIVE::CHECKCONS')) ? ZIPARCHIVE::CHECKCONS : 4;
469
 
 
 
 
 
 
470
  $zopen = $z->open($file, $flags);
471
 
472
  if (true !== $zopen) {
@@ -477,26 +603,23 @@ class UpdraftPlus_Filesystem_Functions {
477
 
478
  $num_files = $z->numFiles;
479
 
480
- for ($i = 0; $i < $num_files; $i++) {
481
  if (!$info = $z->statIndex($i)) {
482
- return new WP_Error('stat_failed_'.$method, __('Could not retrieve file from archive.'));
483
  }
484
 
485
- if ('__MACOSX/' === substr($info['name'], 0, 9)) { // Skip the OS X-created __MACOSX directory
486
- continue;
487
- }
488
 
489
  // Don't extract invalid files:
490
- if (0 !== validate_file($info['name'])) {
491
- continue;
492
- }
493
 
494
  $uncompressed_size += $info['size'];
495
 
496
  if ('/' === substr($info['name'], -1)) {
497
  // Directory.
498
  $needed_dirs[] = $to . untrailingslashit($info['name']);
499
- } elseif ('.' !== $dirname = dirname($info['name'])) {
500
  // Path to a file.
501
  $needed_dirs[] = $to . untrailingslashit($dirname);
502
  }
@@ -507,7 +630,7 @@ class UpdraftPlus_Filesystem_Functions {
507
  * A disk that has zero free bytes has bigger problems.
508
  * Require we have enough space to unzip the file and copy its contents, with a 10% buffer.
509
  */
510
- if (wp_doing_cron()) {
511
  $available_space = @disk_free_space(WP_CONTENT_DIR);
512
  if ($available_space && ($uncompressed_size * 2.1) > $available_space) {
513
  return new WP_Error('disk_full_unzip_file', __('Could not copy files. You may have run out of disk space.'), compact('uncompressed_size', 'available_space'));
@@ -520,9 +643,9 @@ class UpdraftPlus_Filesystem_Functions {
520
  if (untrailingslashit($to) == $dir) { // Skip over the working directory, We know this exists (or will exist)
521
  continue;
522
  }
523
- if (strpos($dir, $to) === false) { // If the directory is not within the working directory, Skip it
524
- continue;
525
- }
526
 
527
  $parent_folder = dirname($dir);
528
  while (!empty($parent_folder) && untrailingslashit($to) != $parent_folder && !in_array($parent_folder, $needed_dirs)) {
@@ -541,33 +664,37 @@ class UpdraftPlus_Filesystem_Functions {
541
  }
542
  unset($needed_dirs);
543
 
544
- for ($i = 0; $i < $num_files; $i++) {
 
 
545
  if (!$info = $z->statIndex($i)) {
546
  return new WP_Error('stat_failed_'.$method, __('Could not retrieve file from archive.'));
547
  }
548
 
549
- if ('/' == substr($info['name'], -1)) { // directory
550
- continue;
551
- }
552
 
553
- if ('__MACOSX/' === substr($info['name'], 0, 9)) { // Don't extract the OS X-created __MACOSX directory files
554
- continue;
555
- }
556
 
557
  // Don't extract invalid files:
558
- if (0 !== validate_file($info['name'])) {
559
- continue;
560
- }
561
-
562
- $contents = $z->getFromIndex($i);
563
 
564
- if (false === $contents) {
565
- return new WP_Error('extract_failed_'.$method, __('Could not extract file from archive.'), $info['name']);
 
 
 
566
  }
567
 
568
  if (!$wp_filesystem->put_contents($to . $info['name'], $contents, FS_CHMOD_FILE)) {
569
  return new WP_Error('copy_failed_'.$method, __('Could not copy file.'), $info['name']);
570
  }
 
 
 
 
 
571
  }
572
 
573
  $z->close();
50
 
51
  }
52
 
53
+ /**
54
+ * Ensure that WP_Filesystem is instantiated and functional. Otherwise, outputs necessary HTML and dies.
55
+ * Will also consult $_POST['updraft_restore'] and can set $_POST['updraft_restore_*'] and $_POST['updraft_restorer_*']
56
+ *
57
+ * @param Array|Null $second_loop_entities - array of files grouped by type
58
+ * @param Array $url_parameters - parameters and values to be added to the URL output
59
+ */
60
+ public static function ensure_wp_filesystem_set_up_for_restore($second_loop_entities, $url_parameters = array()) {
61
+
62
+ global $wp_filesystem;
63
+
64
+ // request_filesystem_credentials passes on fields just via hidden name/value pairs.
65
+ // Build array of parameters to be passed via this
66
+ $extra_fields = array();
67
+ if (isset($_POST['updraft_restore']) && is_array($_POST['updraft_restore'])) {
68
+ foreach ($_POST['updraft_restore'] as $entity) {
69
+ $_POST['updraft_restore_'.$entity] = 1;
70
+ $extra_fields[] = 'updraft_restore_'.$entity;
71
+ }
72
+ }
73
+
74
+ foreach ($second_loop_entities as $type => $files) {
75
+ $_POST['updraft_restore_'.$type] = 1;
76
+ if (!in_array('updraft_restore_'.$type, $extra_fields)) $extra_fields[] = 'updraft_restore_'.$type;
77
+ }
78
+
79
+ // Now make sure that updraft_restorer_ option fields get passed along to request_filesystem_credentials
80
+ foreach ($_POST as $key => $value) {
81
+ if (0 === strpos($key, 'updraft_restorer_')) $extra_fields[] = $key;
82
+ }
83
+
84
+ $build_url = UpdraftPlus_Options::admin_page().'?page=updraftplus&action=updraft_restore';
85
+
86
+ foreach ($url_parameters as $k => $v) {
87
+ $build_url .= '&'.$k.'='.$v;
88
+ }
89
+
90
+ $credentials = request_filesystem_credentials($build_url, '', false, false, $extra_fields);
91
+
92
+ WP_Filesystem($credentials);
93
+
94
+ if ($wp_filesystem->errors->get_error_code()) {
95
+ echo '<p><em><a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/faqs/asked-ftp-details-upon-restorationmigration-updates/").'" target="_blank">'.__('Why am I seeing this?', 'updraftplus').'</a></em></p>';
96
+ foreach ($wp_filesystem->errors->get_error_messages() as $message) show_message($message);
97
+ exit;
98
+ }
99
+
100
+ }
101
+
102
  /**
103
  * Get the html of "Web-server disk space" line which resides above of the existing backup table
104
  *
442
  *
443
  * @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
444
  *
445
+ * @param String $file - Full path and filename of ZIP archive.
446
+ * @param String $to - Full path on the filesystem to extract archive to.
447
+ * @param Integer $starting_index - index of entry to start unzipping from (allows resumption)
448
  *
449
  * @return Boolean|WP_Error True on success, WP_Error on failure.
450
  */
451
+ public static function unzip_file($file, $to, $starting_index = 0) {
452
  global $wp_filesystem;
453
 
454
  if (!$wp_filesystem || !is_object($wp_filesystem)) {
481
  }
482
  }
483
 
484
+ static $added_unzip_action = false;
485
+ if (!$added_unzip_action) {
486
+ add_action('updraftplus_unzip_file_unzipped', array('UpdraftPlus_Filesystem_Functions', 'unzip_file_unzipped'), 10, 5);
487
+ $added_unzip_action = true;
488
+ }
489
+
490
  if (class_exists('ZipArchive', false) && apply_filters('unzip_file_use_ziparchive', true)) {
491
+ $result = self::unzip_file_go($file, $to, $needed_dirs, 'ziparchive', $starting_index);
 
492
  if (true === $result || (is_wp_error($result) && 'incompatible_archive' != $result->get_error_code())) return $result;
493
  }
494
 
495
  // Fall through to PclZip if ZipArchive is not available, or encountered an error opening the file.
496
+ // The switch here is a sort-of emergency switch-off in case something in WP's version diverges or behaves differently
497
+ if (!defined('UPDRAFTPLUS_USE_INTERNAL_PCLZIP') || UPDRAFTPLUS_USE_INTERNAL_PCLZIP) {
498
+ return self::unzip_file_go($file, $to, $needed_dirs, 'pclzip', $starting_index);
499
+ } else {
500
+ return _unzip_file_pclzip($file, $to, $needed_dirs);
501
+ }
502
+ }
503
+
504
+ /**
505
+ * Called upon the WP action updraftplus_unzip_file_unzipped, to indicate that a file has been unzipped.
506
+ *
507
+ * @param String $file - the file being unzipped
508
+ * @param Integer $i - the file index that was written (0, 1, ...)
509
+ * @param Array $info - information about the file written, from the statIndex() method (see https://php.net/manual/en/ziparchive.statindex.php)
510
+ * @param Integer $size_written - net total number of bytes thus far
511
+ * @param Integer $num_files - the total number of files (i.e. one more than the the maximum value of $i)
512
+ */
513
+ public static function unzip_file_unzipped($file, $i, $info, $size_written, $num_files) {
514
+
515
+ global $updraftplus;
516
+
517
+ static $last_file_seen = null;
518
+
519
+ static $last_logged_bytes;
520
+ static $last_logged_index;
521
+ static $last_logged_time;
522
+ static $last_saved_time;
523
+
524
+ // Detect a new zip file; reset state
525
+ if ($file !== $last_file_seen) {
526
+ $last_file_seen = $file;
527
+ $last_logged_bytes = 0;
528
+ $last_logged_index = 0;
529
+ $last_logged_time = time();
530
+ $last_saved_time = time();
531
+ }
532
+
533
+ // We always log the last one for clarity (the log/display looks odd if the last mention of something being unzipped isn't the last). Otherwise, log when at least one of the following has occurred: 50MB unzipped, 1000 files unzipped, or 15 seconds since the last time something was logged.
534
+ if ($i >= $num_files -1 || $size_written > $last_logged_bytes + 100 * 1048576 || $i > $last_logged_index + 1000 || time() > $last_logged_time + 15) {
535
+
536
+ $updraftplus->jobdata_set('last_index_'.md5(basename($file)), $i);
537
+
538
+ $updraftplus->log(sprintf(__('Unzip progress: %d out of %d files', 'updraftplus').' (%s, %s)', $i+1, $num_files, UpdraftPlus_Manipulation_Functions::convert_numeric_size_to_text($size_written), $info['name']), 'notice-restore');
539
+ $updraftplus->log(sprintf('Unzip progress: %d out of %d files (%s, %s)', $i+1, $num_files, UpdraftPlus_Manipulation_Functions::convert_numeric_size_to_text($size_written), $info['name']), 'notice');
540
+
541
+ $last_logged_bytes = $size_written;
542
+ $last_logged_index = $i;
543
+ $last_logged_time = time();
544
+ $last_saved_time = time();
545
+ }
546
+
547
+ // Because a lot can happen in 5 seconds, we update the job data more often
548
+ if (time() > $last_saved_time + 5) {
549
+ // N.B. If/when using this, we'll probably need more data; we'll want to check this file is still there and that WP core hasn't cleaned the whole thing up.
550
+ $updraftplus->jobdata_set('last_index_'.md5(basename($file)), $i);
551
+ $last_saved_time = time();
552
+ }
553
+ }
554
+
555
+ /**
556
+ * Compatibility function (exists in WP 4.8+)
557
+ */
558
+ public static function wp_doing_cron() {
559
+ if (function_exists('wp_doing_cron')) return wp_doing_cron();
560
+ return apply_filters('wp_doing_cron', defined('DOING_CRON') && DOING_CRON);
561
  }
562
 
563
  /**
567
  *
568
  * @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
569
  *
570
+ * @param String $file - full path and filename of ZIP archive.
571
+ * @param String $to - full path on the filesystem to extract archive to.
572
+ * @param Array $needed_dirs - a partial list of required folders needed to be created.
573
+ * @param String $method - either 'ziparchive' or 'pclzip'.
574
+ * @param Integer $starting_index - index of entry to start unzipping from (allows resumption)
575
  *
576
  * @return Boolean|WP_Error True on success, WP_Error on failure.
577
  */
578
+ public static function unzip_file_go($file, $to, $needed_dirs = array(), $method = 'ziparchive', $starting_index = 0) {
579
+ global $wp_filesystem, $updraftplus;
580
 
581
  $class_to_use = ('ziparchive' == $method) ? 'UpdraftPlus_ZipArchive' : 'UpdraftPlus_PclZip';
582
 
583
  if (!class_exists($class_to_use)) require_once(UPDRAFTPLUS_DIR.'/includes/class-zip.php');
584
 
585
+ $updraftplus->log('Unzipping '.basename($file).' to '.$to.' using '.$class_to_use);
586
+
587
  $z = new $class_to_use;
588
 
589
  $flags = (version_compare(PHP_VERSION, '5.2.12', '>') && defined('ZIPARCHIVE::CHECKCONS')) ? ZIPARCHIVE::CHECKCONS : 4;
590
 
591
+ // This is just for crazy people with mbstring.func_overload enabled (deprecated from PHP 7.2)
592
+ // This belongs somewhere else
593
+ // if ('UpdraftPlus_PclZip' == $class_to_use) mbstring_binary_safe_encoding();
594
+ // if ('UpdraftPlus_PclZip' == $class_to_use) reset_mbstring_encoding();
595
+
596
  $zopen = $z->open($file, $flags);
597
 
598
  if (true !== $zopen) {
603
 
604
  $num_files = $z->numFiles;
605
 
606
+ for ($i = $starting_index; $i < $num_files; $i++) {
607
  if (!$info = $z->statIndex($i)) {
608
+ return new WP_Error('stat_failed_'.$method, __('Could not retrieve file from archive.').' ('.$z->last_error.')');
609
  }
610
 
611
+ // Skip the OS X-created __MACOSX directory
612
+ if ('__MACOSX/' === substr($info['name'], 0, 9)) continue;
 
613
 
614
  // Don't extract invalid files:
615
+ if (0 !== validate_file($info['name'])) continue;
 
 
616
 
617
  $uncompressed_size += $info['size'];
618
 
619
  if ('/' === substr($info['name'], -1)) {
620
  // Directory.
621
  $needed_dirs[] = $to . untrailingslashit($info['name']);
622
+ } elseif ('.' !== ($dirname = dirname($info['name']))) {
623
  // Path to a file.
624
  $needed_dirs[] = $to . untrailingslashit($dirname);
625
  }
630
  * A disk that has zero free bytes has bigger problems.
631
  * Require we have enough space to unzip the file and copy its contents, with a 10% buffer.
632
  */
633
+ if (self::wp_doing_cron()) {
634
  $available_space = @disk_free_space(WP_CONTENT_DIR);
635
  if ($available_space && ($uncompressed_size * 2.1) > $available_space) {
636
  return new WP_Error('disk_full_unzip_file', __('Could not copy files. You may have run out of disk space.'), compact('uncompressed_size', 'available_space'));
643
  if (untrailingslashit($to) == $dir) { // Skip over the working directory, We know this exists (or will exist)
644
  continue;
645
  }
646
+
647
+ // If the directory is not within the working directory, Skip it
648
+ if (false === strpos($dir, $to)) continue;
649
 
650
  $parent_folder = dirname($dir);
651
  while (!empty($parent_folder) && untrailingslashit($to) != $parent_folder && !in_array($parent_folder, $needed_dirs)) {
664
  }
665
  unset($needed_dirs);
666
 
667
+ $size_written = 0;
668
+
669
+ for ($i = $starting_index; $i < $num_files; $i++) {
670
  if (!$info = $z->statIndex($i)) {
671
  return new WP_Error('stat_failed_'.$method, __('Could not retrieve file from archive.'));
672
  }
673
 
674
+ // directory
675
+ if ('/' == substr($info['name'], -1)) continue;
 
676
 
677
+ // Don't extract the OS X-created __MACOSX
678
+ if ('__MACOSX/' === substr($info['name'], 0, 9)) continue;
 
679
 
680
  // Don't extract invalid files:
681
+ if (0 !== validate_file($info['name'])) continue;
 
 
 
 
682
 
683
+ // PclZip will return (boolean)false for an empty file
684
+ $contents = (isset($info['size']) && 0 == $info['size']) ? '' : $z->getFromIndex($i);
685
+
686
+ if (false === $contents && ('pclzip' !== $method || 0 !== $info['size'])) {
687
+ return new WP_Error('extract_failed_'.$method, __('Could not extract file from archive.').' '.$z->last_error, json_encode($info));
688
  }
689
 
690
  if (!$wp_filesystem->put_contents($to . $info['name'], $contents, FS_CHMOD_FILE)) {
691
  return new WP_Error('copy_failed_'.$method, __('Could not copy file.'), $info['name']);
692
  }
693
+
694
+ if (!empty($info['size'])) $size_written += $info['size'];
695
+
696
+ do_action('updraftplus_unzip_file_unzipped', $file, $i, $info, $size_written, $num_files);
697
+
698
  }
699
 
700
  $z->close();
includes/class-job-scheduler.php CHANGED
@@ -69,6 +69,25 @@ class UpdraftPlus_Job_Scheduler {
69
 
70
  $updraftplus->something_useful_happened = true;
71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  $updraft_dir = $updraftplus->backups_dir_location();
73
  if (file_exists($updraft_dir.'/deleteflag-'.$updraftplus->nonce.'.txt')) {
74
  $updraftplus->log("User request for abort: backup job will be immediately halted");
69
 
70
  $updraftplus->something_useful_happened = true;
71
 
72
+ $clone_job = $updraftplus->jobdata_get('clone_job');
73
+
74
+ if (!empty($clone_job)) {
75
+ static $last_call = false;
76
+
77
+ // Check we haven't yet made a call or that 15 minutes has passed before we make another call
78
+ if (!$last_call || time() - $last_call > 900) {
79
+ $last_call = time();
80
+ $clone_id = $updraftplus->jobdata_get('clone_id');
81
+ $secret_token = $updraftplus->jobdata_get('secret_token');
82
+ $response = $updraftplus->get_updraftplus_clone()->clone_checkin(array('clone_id' => $clone_id, 'secret_token' => $secret_token));
83
+ if (!isset($response['status']) || 'success' != $response['status']) {
84
+ $updraftplus->log("UpdraftClone backup check-in failed.");
85
+ } else {
86
+ $updraftplus->log("UpdraftClone backup check-in made succfessfully.");
87
+ }
88
+ }
89
+ }
90
+
91
  $updraft_dir = $updraftplus->backups_dir_location();
92
  if (file_exists($updraft_dir.'/deleteflag-'.$updraftplus->nonce.'.txt')) {
93
  $updraftplus->log("User request for abort: backup job will be immediately halted");
includes/class-remote-send.php CHANGED
@@ -77,7 +77,7 @@ abstract class UpdraftPlus_RemoteSend {
77
  return $msg;
78
  }
79
 
80
- public function updraftplus_logline($line, $nonce, $level, $uniq_id) {
81
  if ('notice' === $level && 'php_event' === $uniq_id) {
82
  $this->php_events[] = $line;
83
  }
@@ -209,7 +209,7 @@ abstract class UpdraftPlus_RemoteSend {
209
  *
210
  * @return array - the array response
211
  */
212
- public function udrpc_command_upload_complete($response, $data, $name_indicator) {
213
  if (!preg_match('/^([a-f0-9]+)\.migrator.updraftplus.com$/', $name_indicator, $matches)) return $response;
214
 
215
  if (defined('UPDRAFTPLUS_THIS_IS_CLONE')) {
@@ -311,7 +311,7 @@ abstract class UpdraftPlus_RemoteSend {
311
  }
312
 
313
  // We got several support requests from people who didn't seem to be aware of other methods
314
- $msg_try_other_method = '<p>'.__('If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead.', 'updraftplus').'<a href="https://updraftplus.com/faqs/how-do-i-migrate-to-a-new-site-location/#importing">'.__('For longer help, including screenshots, follow this link.', 'updraftplus').'</a></p>';
315
 
316
  $res['moreinfo'] = isset($res['moreinfo']) ? $res['moreinfo'].$msg_try_other_method : $msg_try_other_method;
317
 
@@ -393,7 +393,7 @@ abstract class UpdraftPlus_RemoteSend {
393
  *
394
  * @return string - the RSA remote key
395
  */
396
- public function updraft_migrate_key_create_return($string, $data) {
397
  return $this->updraft_migrate_key_create($data);
398
  }
399
 
@@ -441,6 +441,15 @@ abstract class UpdraftPlus_RemoteSend {
441
  ));
442
  die;
443
  }
 
 
 
 
 
 
 
 
 
444
  echo json_encode(array('e' => 1));
445
  die;
446
  }
77
  return $msg;
78
  }
79
 
80
+ public function updraftplus_logline($line, $nonce, $level, $uniq_id) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
81
  if ('notice' === $level && 'php_event' === $uniq_id) {
82
  $this->php_events[] = $line;
83
  }
209
  *
210
  * @return array - the array response
211
  */
212
+ public function udrpc_command_upload_complete($response, $data, $name_indicator) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
213
  if (!preg_match('/^([a-f0-9]+)\.migrator.updraftplus.com$/', $name_indicator, $matches)) return $response;
214
 
215
  if (defined('UPDRAFTPLUS_THIS_IS_CLONE')) {
311
  }
312
 
313
  // We got several support requests from people who didn't seem to be aware of other methods
314
+ $msg_try_other_method = '<p>'.__('If sending directly from site to site does not work for you, then there are three other methods - please try one of these instead.', 'updraftplus').'<a href="https://updraftplus.com/faqs/how-do-i-migrate-to-a-new-site-location/#importing" target="_blank">'.__('For longer help, including screenshots, follow this link.', 'updraftplus').'</a></p>';
315
 
316
  $res['moreinfo'] = isset($res['moreinfo']) ? $res['moreinfo'].$msg_try_other_method : $msg_try_other_method;
317
 
393
  *
394
  * @return string - the RSA remote key
395
  */
396
+ public function updraft_migrate_key_create_return($string, $data) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
397
  return $this->updraft_migrate_key_create($data);
398
  }
399
 
441
  ));
442
  die;
443
  }
444
+
445
+ if (extension_loaded('mbstring')) {
446
+ // phpcs:ignore PHPCompatibility.IniDirectives.RemovedIniDirectives.mbstring_func_overloadDeprecated -- Commented out as this flags as not compatible with PHP 5.2
447
+ if (ini_get('mbstring.func_overload') & 2) {
448
+ echo json_encode(array('e' => 1, 'r' => __('Error:', 'updraftplus').' '.sprintf(__('The setting %s is turned on in your PHP settings. It is deprecated, causes encryption to malfunction, and should be turned off.', 'updraftplus'), 'mbstring.func_overload')));
449
+ die;
450
+ }
451
+ }
452
+
453
  echo json_encode(array('e' => 1));
454
  die;
455
  }
includes/class-udrpc.php CHANGED
@@ -59,7 +59,7 @@ 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.15';
63
 
64
  private $key_name_indicator;
65
 
@@ -106,7 +106,7 @@ class UpdraftPlus_Remote_Communications {
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);
111
  }
112
 
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.16';
63
 
64
  private $key_name_indicator;
65
 
106
 
107
  private $require_message_to_be_understood = false;
108
 
109
+ public function __construct($key_name_indicator = 'default') {
110
  $this->set_key_name_indicator($key_name_indicator);
111
  }
112
 
includes/class-wpadmin-commands.php CHANGED
@@ -552,22 +552,18 @@ class UpdraftPlus_WPAdmin_Commands extends UpdraftPlus_Commands {
552
  if (true !== $zip_opened) {
553
  return array('error' => 'UpdraftPlus: opening zip (' . $fullpath . '): failed to open this zip file (object='.$zip_object.', code: '.$zip_opened.')');
554
  } else {
555
- if ('UpdraftPlus_PclZip' == $zip_object) {
556
- $numfiles = $zip->numAll;
557
- if (false === $numfiles) {
558
- return array('error' => 'UpdraftPlus: reading zip: '.$zip->last_error);
559
- }
560
- } else {
561
- $numfiles = $zip->numFiles;
562
- }
563
 
 
 
564
  for ($i=0; $i < $numfiles; $i++) {
565
  $si = $zip->statIndex($i);
566
 
567
  // Fix for windows being unable to build jstree due to different directory separators being used
568
  $si['name'] = str_replace("/", DIRECTORY_SEPARATOR, $si['name']);
569
 
570
- // if it's a dot then we don't want to append this as it will break the id's and the tree structure
571
  if ('.' == dirname($si['name'])) {
572
  $node_id = $parent_name;
573
  } else {
552
  if (true !== $zip_opened) {
553
  return array('error' => 'UpdraftPlus: opening zip (' . $fullpath . '): failed to open this zip file (object='.$zip_object.', code: '.$zip_opened.')');
554
  } else {
555
+
556
+ $numfiles = $zip->numFiles;
 
 
 
 
 
 
557
 
558
+ if (false === $numfiles) return array('error' => 'UpdraftPlus: reading zip: '.$zip->last_error);
559
+
560
  for ($i=0; $i < $numfiles; $i++) {
561
  $si = $zip->statIndex($i);
562
 
563
  // Fix for windows being unable to build jstree due to different directory separators being used
564
  $si['name'] = str_replace("/", DIRECTORY_SEPARATOR, $si['name']);
565
 
566
+ // if it's a dot then we don't want to append this as it will break the ids and the tree structure
567
  if ('.' == dirname($si['name'])) {
568
  $node_id = $parent_name;
569
  } else {
includes/class-zip.php CHANGED
@@ -48,6 +48,7 @@ class UpdraftPlus_PclZip {
48
  * @return null
49
  */
50
  public function ud_include_mtime() {
 
51
  $this->include_mtime = true;
52
  }
53
 
@@ -59,10 +60,13 @@ class UpdraftPlus_PclZip {
59
  * @return Boolean|Null|Integer - the value, or null if an unknown variable, or false if something goes wrong
60
  */
61
  public function __get($name) {
62
- if ('numFiles' == $name || 'numAll' == $name) {
 
63
 
64
  if (empty($this->pclzip)) return false;
65
 
 
 
66
  $statindex = $this->pclzip->listContent();
67
 
68
  if (empty($statindex)) {
@@ -72,22 +76,9 @@ class UpdraftPlus_PclZip {
72
  return (0 === $statindex) ? false : 0;
73
  }
74
 
75
- if ('numFiles' == $name) {
76
-
77
- $result = array();
78
- foreach ($statindex as $i => $file) {
79
- if (!isset($statindex[$i]['folder']) || 0 == $statindex[$i]['folder']) {
80
- $result[] = $file;
81
- }
82
- unset($statindex[$i]);
83
- }
84
-
85
- $this->statindex = $result;
86
-
87
- } else {
88
- $this->statindex = $statindex;
89
- }
90
-
91
  return count($this->statindex);
92
  }
93
 
@@ -109,6 +100,49 @@ class UpdraftPlus_PclZip {
109
  return $v;
110
  }
111
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
  /**
113
  * Open a zip file
114
  *
@@ -157,6 +191,7 @@ class UpdraftPlus_PclZip {
157
  * @return boolean
158
  */
159
  public function close() {
 
160
  if (empty($this->pclzip)) {
161
  $this->last_error = 'Zip file was not opened';
162
  return false;
@@ -192,6 +227,7 @@ class UpdraftPlus_PclZip {
192
  $this->adddirs = array();
193
 
194
  clearstatcache();
 
195
  if ($activity && filesize($this->path) < 50) {
196
  $this->last_error = "Write failed - unknown cause (check your file permissions)";
197
  return false;
@@ -222,6 +258,16 @@ class UpdraftPlus_PclZip {
222
  $this->adddirs[] = $dir;
223
  }
224
 
 
 
 
 
 
 
 
 
 
 
225
  public function extract($path_to_extract, $path) {
226
  return $this->pclzip->extract(PCLZIP_OPT_PATH, $path_to_extract, PCLZIP_OPT_BY_NAME, $path);
227
  }
48
  * @return null
49
  */
50
  public function ud_include_mtime() {
51
+ if (empty($this->include_mtime)) $this->statindex = null;
52
  $this->include_mtime = true;
53
  }
54
 
60
  * @return Boolean|Null|Integer - the value, or null if an unknown variable, or false if something goes wrong
61
  */
62
  public function __get($name) {
63
+
64
+ if ('numFiles' == $name) {
65
 
66
  if (empty($this->pclzip)) return false;
67
 
68
+ if (!empty($this->statindex)) return count($this->statindex);
69
+
70
  $statindex = $this->pclzip->listContent();
71
 
72
  if (empty($statindex)) {
76
  return (0 === $statindex) ? false : 0;
77
  }
78
 
79
+ // We used to exclude folders in the case of numFiles (and implemented a private alternative, numAll, that included them), because we had no use for them (we ran a loop over $statindex to build a result that excluded the folders); but that is no longer the case (Dec 2018)
80
+ $this->statindex = $statindex;
81
+
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  return count($this->statindex);
83
  }
84
 
100
  return $v;
101
  }
102
 
103
+ /**
104
+ * Returns the entry contents using its index
105
+ *
106
+ * @see https://php.net/manual/en/ziparchive.getfromindex.php
107
+ *
108
+ * @param Integer $index - Index of the entry
109
+ * @param Integer $length - The length to be read from the entry. If 0, then the entire entry is read.
110
+ * @param Integer $flags - The flags to use to open the archive.
111
+ *
112
+ * @return String|Boolean - Returns the contents of the entry on success or FALSE on failure.
113
+ */
114
+ public function getFromIndex($index, $length = 0, $flags = 0) {
115
+
116
+ $contents = $this->pclzip->extract(PCLZIP_OPT_BY_INDEX, array($index), PCLZIP_OPT_EXTRACT_AS_STRING);
117
+
118
+ if (0 === $contents) {
119
+ $this->last_error = $this->pclzip->errorInfo(true);
120
+ return false;
121
+ }
122
+
123
+ // This also prevents CI complaining about an unused parameter
124
+ if ($flags) {
125
+ error_log("A call to UpdraftPlus_PclZip::getFromIndex() set flags=$flags, but this is not implemented");
126
+ }
127
+
128
+ if (!is_array($contents)) {
129
+ $this->last_error = 'PclZip::extract() did not return the expected information (1)';
130
+ return false;
131
+ }
132
+
133
+ $content = array_pop($contents);
134
+
135
+ if (!isset($content['content'])) {
136
+ $this->last_error = 'PclZip::extract() did not return the expected information (2)';
137
+ return false;
138
+ }
139
+
140
+ $results = $content['content'];
141
+
142
+ return $length ? substr($results, 0, $length) : $results;
143
+
144
+ }
145
+
146
  /**
147
  * Open a zip file
148
  *
191
  * @return boolean
192
  */
193
  public function close() {
194
+
195
  if (empty($this->pclzip)) {
196
  $this->last_error = 'Zip file was not opened';
197
  return false;
227
  $this->adddirs = array();
228
 
229
  clearstatcache();
230
+
231
  if ($activity && filesize($this->path) < 50) {
232
  $this->last_error = "Write failed - unknown cause (check your file permissions)";
233
  return false;
258
  $this->adddirs[] = $dir;
259
  }
260
 
261
+ /**
262
+ * Extract a path
263
+ *
264
+ * @param String $path_to_extract
265
+ * @param String $path
266
+ *
267
+ * @see http://www.phpconcept.net/pclzip/user-guide/55
268
+ *
269
+ * @return Array|Integer - either an array with the extracted files or an error. N.B. "If one file extraction fail, the full extraction does not fail. The method does not return an error, but the file status is set with the error reason."
270
+ */
271
  public function extract($path_to_extract, $path) {
272
  return $this->pclzip->extract(PCLZIP_OPT_PATH, $path_to_extract, PCLZIP_OPT_BY_NAME, $path);
273
  }
includes/ftp.class.php CHANGED
@@ -90,7 +90,7 @@ class UpdraftPlus_ftp_wrapper {
90
  if (!$fh = fopen($local_file_path, 'rb')) return false;
91
  if ($existing_size) fseek($fh, $existing_size);
92
 
93
- $ret = ftp_nb_fput($this->conn_id, $remote_file_path, $fh, FTP_BINARY, $existing_size);
94
 
95
  // $existing_size can now be re-purposed
96
 
90
  if (!$fh = fopen($local_file_path, 'rb')) return false;
91
  if ($existing_size) fseek($fh, $existing_size);
92
 
93
+ $ret = ftp_nb_fput($this->conn_id, $remote_file_path, $fh, $mode, $existing_size);
94
 
95
  // $existing_size can now be re-purposed
96
 
includes/updraft-notices.php CHANGED
@@ -126,6 +126,9 @@ abstract class Updraft_Notices {
126
 
127
  // If a seasonal advert can't be returned then we will return a random advert
128
 
 
 
 
129
  /*
130
  Using shuffle here as something like rand which produces a random number and uses that as the array index fails, this is because in future an advert may not be numbered and could have a string as its key which will then cause errors.
131
  */
126
 
127
  // If a seasonal advert can't be returned then we will return a random advert
128
 
129
+ // Here we give a 25% chance for the rate advert to be returned before selecting a random advert from the entire collection which also includes the rate advert
130
+ if (0 == rand(0, 3)) return $available_notices['rate'];
131
+
132
  /*
133
  Using shuffle here as something like rand which produces a random number and uses that as the array index fails, this is because in future an advert may not be numbered and could have a string as its key which will then cause errors.
134
  */
includes/updraftclone/temporary-clone-status.php CHANGED
@@ -418,8 +418,8 @@ class UpdraftPlus_Temporary_Clone_Status {
418
  * @return string - the clone content
419
  */
420
  public function get_content() {
421
- $content = '<p>'.__('Your UpdraftClone is still setting up.', 'updraftplus').' '.sprintf(__('You can check the progress here or in %s', 'updraftplus'), '<a href="https://updraftplus.com/my-account/clones/">'.__('your UpdraftPlus.com account', 'updraftplus')).'</a></p>';
422
- $content .= '<p><a href="https://updraftplus.com/faq-category/updraftclone/">'.__('To read FAQs/documentation about UpdraftClone, go here.', 'updraftplus').'</a></p>';
423
  return $content;
424
  }
425
 
418
  * @return string - the clone content
419
  */
420
  public function get_content() {
421
+ $content = '<p>'.__('Your UpdraftClone is still setting up.', 'updraftplus').' '.sprintf(__('You can check the progress here or in %s', 'updraftplus'), '<a href="https://updraftplus.com/my-account/clones/" target="_blank">'.__('your UpdraftPlus.com account', 'updraftplus')).'</a></p>';
422
+ $content .= '<p><a href="https://updraftplus.com/faq-category/updraftclone/" target="_blank">'.__('To read FAQs/documentation about UpdraftClone, go here.', 'updraftplus').'</a></p>';
423
  return $content;
424
  }
425
 
includes/updraftplus-clone.php CHANGED
@@ -157,6 +157,22 @@ class UpdraftPlus_Clone extends UpdraftPlus_Login {
157
  return $this->parse_response($response);
158
  }
159
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
  /**
161
  * Executes the clone failed delete process. Connects and sends request to the UpdraftPlus clone and returns the response coming from the server
162
  *
157
  return $this->parse_response($response);
158
  }
159
 
160
+ /**
161
+ * Executes the clone checkin. Connects and sends request to UpdraftPlus and returns the response coming from the server
162
+ *
163
+ * @internal
164
+ * @param array $data - The submitted form data
165
+ * @return array - The response from the request
166
+ */
167
+ public function clone_checkin($data) {
168
+ $action = 'updraftplus_clone_checkin';
169
+ if (empty($data['site_url'])) $data['site_url'] = trailingslashit(network_site_url());
170
+
171
+ $response = $this->send_remote_request($data, $action);
172
+
173
+ return $this->parse_response($response);
174
+ }
175
+
176
  /**
177
  * Executes the clone failed delete process. Connects and sends request to the UpdraftPlus clone and returns the response coming from the server
178
  *
includes/updraftplus-notices.php CHANGED
@@ -32,6 +32,7 @@ class UpdraftPlus_Notices extends Updraft_Notices {
32
  'text' => __('Enjoy professional, fast, and friendly help whenever you need it with Premium.', 'updraftplus'),
33
  'image' => 'notices/support.png',
34
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
 
35
  'button_meta' => 'updraftplus',
36
  'dismiss_time' => 'dismiss_notice',
37
  'supported_positions' => $this->dashboard_top_or_report,
@@ -42,6 +43,7 @@ class UpdraftPlus_Notices extends Updraft_Notices {
42
  'text' => __('The ultimately secure and convenient place to store your backups.', 'updraftplus'),
43
  'image' => 'notices/updraft_logo.png',
44
  'button_link' => 'https://updraftplus.com/landing/vault',
 
45
  'button_meta' => 'updraftplus',
46
  'dismiss_time' => 'dismiss_notice',
47
  'supported_positions' => $this->dashboard_top_or_report,
@@ -52,6 +54,7 @@ class UpdraftPlus_Notices extends Updraft_Notices {
52
  'text' => __('Enhanced storage options for Dropbox, Google Drive and S3. Plus many more options.', 'updraftplus'),
53
  'image' => 'addons-images/morestorage.png',
54
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
 
55
  'button_meta' => 'updraftplus',
56
  'dismiss_time' => 'dismiss_notice',
57
  'supported_positions' => $this->dashboard_top_or_report,
@@ -62,6 +65,7 @@ class UpdraftPlus_Notices extends Updraft_Notices {
62
  'text' => __('Secure multisite installation, advanced reporting and much more.', 'updraftplus'),
63
  'image' => 'addons-images/reporting.png',
64
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
 
65
  'button_meta' => 'updraftplus',
66
  'dismiss_time' => 'dismiss_notice',
67
  'supported_positions' => $this->dashboard_top_or_report,
@@ -72,6 +76,7 @@ class UpdraftPlus_Notices extends Updraft_Notices {
72
  'text' => __('Add SFTP to send your data securely, lock settings and encrypt your database backups for extra security.', 'updraftplus'),
73
  'image' => 'addons-images/lockadmin.png',
74
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
 
75
  'button_meta' => 'updraftplus',
76
  'dismiss_time' => 'dismiss_notice',
77
  'supported_positions' => $this->dashboard_top_or_report,
@@ -82,6 +87,7 @@ class UpdraftPlus_Notices extends Updraft_Notices {
82
  'text' => __('Copy your site to another domain directly. Includes find-and-replace tool for database references.', 'updraftplus'),
83
  'image' => 'addons-images/migrator.png',
84
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
 
85
  'button_meta' => 'updraftplus',
86
  'dismiss_time' => 'dismiss_notice',
87
  'supported_positions' => $this->anywhere,
@@ -98,21 +104,21 @@ class UpdraftPlus_Notices extends Updraft_Notices {
98
  ),
99
  8 => array(
100
  'prefix' => '',
101
- 'title' => __('Like UpdraftPlus and can spare one minute?', 'updraftplus'),
102
- 'text' => __('Please help UpdraftPlus by giving a positive review at wordpress.org.', 'updraftplus'),
103
  'image' => 'notices/updraft_logo.png',
104
- 'button_link' => 'https://wordpress.org/support/plugin/updraftplus/reviews/?rate=5#new-post',
105
- 'button_meta' => 'review',
106
  'dismiss_time' => 'dismiss_notice',
107
  'supported_positions' => $this->anywhere,
108
  ),
109
- 9 => array(
110
  'prefix' => '',
111
- 'title' => __('Do you use UpdraftPlus on multiple sites?', 'updraftplus'),
112
- 'text' => __('Control all your WordPress installations from one place using UpdraftCentral remote site management!', 'updraftplus'),
113
  'image' => 'notices/updraft_logo.png',
114
- 'button_link' => 'https://updraftcentral.com',
115
- 'button_meta' => 'updraftcentral',
116
  'dismiss_time' => 'dismiss_notice',
117
  'supported_positions' => $this->anywhere,
118
  ),
@@ -142,6 +148,7 @@ class UpdraftPlus_Notices extends Updraft_Notices {
142
  'text' => __("Follow this link to sign up for the UpdraftPlus newsletter.", 'updraftplus'),
143
  'image' => 'notices/updraft_logo.png',
144
  'button_link' => 'https://updraftplus.com/newsletter-signup',
 
145
  'button_meta' => 'signup',
146
  'supported_positions' => $this->anywhere,
147
  'dismiss_time' => false
@@ -213,6 +220,7 @@ class UpdraftPlus_Notices extends Updraft_Notices {
213
  'text' => __('To benefit, use this discount code:', 'updraftplus').' ',
214
  'image' => 'notices/black_friday.png',
215
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
 
216
  'button_meta' => 'updraftplus',
217
  'dismiss_time' => 'dismiss_season',
218
  'discount_code' => 'blackfridaysale2018',
@@ -226,6 +234,7 @@ class UpdraftPlus_Notices extends Updraft_Notices {
226
  'text' => __('To benefit, use this discount code:', 'updraftplus').' ',
227
  'image' => 'notices/christmas.png',
228
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
 
229
  'button_meta' => 'updraftplus',
230
  'dismiss_time' => 'dismiss_season',
231
  'discount_code' => 'christmassale2018',
@@ -239,6 +248,7 @@ class UpdraftPlus_Notices extends Updraft_Notices {
239
  'text' => __('To benefit, use this discount code:', 'updraftplus').' ',
240
  'image' => 'notices/new_year.png',
241
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
 
242
  'button_meta' => 'updraftplus',
243
  'dismiss_time' => 'dismiss_season',
244
  'discount_code' => 'newyearsale2019',
@@ -252,6 +262,7 @@ class UpdraftPlus_Notices extends Updraft_Notices {
252
  'text' => __('To benefit, use this discount code:', 'updraftplus').' ',
253
  'image' => 'notices/spring.png',
254
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
 
255
  'button_meta' => 'updraftplus',
256
  'dismiss_time' => 'dismiss_season',
257
  'discount_code' => 'springsale2019',
@@ -265,6 +276,7 @@ class UpdraftPlus_Notices extends Updraft_Notices {
265
  'text' => __('To benefit, use this discount code:', 'updraftplus').' ',
266
  'image' => 'notices/summer.png',
267
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
 
268
  'button_meta' => 'updraftplus',
269
  'dismiss_time' => 'dismiss_season',
270
  'discount_code' => 'summersale2019',
@@ -292,11 +304,11 @@ class UpdraftPlus_Notices extends Updraft_Notices {
292
  wp_enqueue_style('updraftplus-notices-css', UPDRAFTPLUS_URL.'/css/updraftplus-notices'.$min_or_not.'.css', array(), $enqueue_version);
293
  }
294
 
295
- protected function translation_needed($plugin_base_dir = null, $product_name = null) {
296
  return parent::translation_needed(UPDRAFTPLUS_DIR, 'updraftplus');
297
  }
298
 
299
- protected function wp_optimize_installed($plugin_base_dir = null, $product_name = null) {
300
  $wp_optimize_file = false;
301
  if (!function_exists('get_plugins')) include_once(ABSPATH.'wp-admin/includes/plugin.php');
302
  $plugins = get_plugins();
@@ -309,7 +321,7 @@ class UpdraftPlus_Notices extends Updraft_Notices {
309
  return true;
310
  }
311
 
312
- protected function keyy_installed($plugin_base_dir = null, $product_name = null) {
313
  $wp_optimize_file = false;
314
  if (!function_exists('get_plugins')) include_once(ABSPATH.'wp-admin/includes/plugin.php');
315
  $plugins = get_plugins();
@@ -322,7 +334,7 @@ class UpdraftPlus_Notices extends Updraft_Notices {
322
  return true;
323
  }
324
 
325
- protected function metaslider_installed($plugin_base_dir = null, $product_name = null) {
326
  if (!function_exists('get_plugins')) include_once(ABSPATH.'wp-admin/includes/plugin.php');
327
  $plugins = get_plugins();
328
 
@@ -334,7 +346,7 @@ class UpdraftPlus_Notices extends Updraft_Notices {
334
  return true;
335
  }
336
 
337
- protected function clef_2fa_installed($plugin_base_dir = null, $product_name = null) {
338
 
339
  if (!function_exists('get_plugins')) include_once(ABSPATH.'wp-admin/includes/plugin.php');
340
 
@@ -410,6 +422,7 @@ class UpdraftPlus_Notices extends Updraft_Notices {
410
 
411
  if (!has_filter('updraftplus_com_link') && isset($advert_information['button_link']) && false !== strpos($advert_information['button_link'], '//updraftplus.com')) {
412
  $advert_information['button_link'] = trailingslashit($advert_information['button_link']).'?afref='.$this->self_affiliate_id;
 
413
  }
414
 
415
  include_once(UPDRAFTPLUS_DIR.'/admin.php');
32
  'text' => __('Enjoy professional, fast, and friendly help whenever you need it with Premium.', 'updraftplus'),
33
  'image' => 'notices/support.png',
34
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
35
+ 'campaign' => 'support',
36
  'button_meta' => 'updraftplus',
37
  'dismiss_time' => 'dismiss_notice',
38
  'supported_positions' => $this->dashboard_top_or_report,
43
  'text' => __('The ultimately secure and convenient place to store your backups.', 'updraftplus'),
44
  'image' => 'notices/updraft_logo.png',
45
  'button_link' => 'https://updraftplus.com/landing/vault',
46
+ 'campaign' => 'vault',
47
  'button_meta' => 'updraftplus',
48
  'dismiss_time' => 'dismiss_notice',
49
  'supported_positions' => $this->dashboard_top_or_report,
54
  'text' => __('Enhanced storage options for Dropbox, Google Drive and S3. Plus many more options.', 'updraftplus'),
55
  'image' => 'addons-images/morestorage.png',
56
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
57
+ 'campaign' => 'morestorage',
58
  'button_meta' => 'updraftplus',
59
  'dismiss_time' => 'dismiss_notice',
60
  'supported_positions' => $this->dashboard_top_or_report,
65
  'text' => __('Secure multisite installation, advanced reporting and much more.', 'updraftplus'),
66
  'image' => 'addons-images/reporting.png',
67
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
68
+ 'campaign' => 'reporting',
69
  'button_meta' => 'updraftplus',
70
  'dismiss_time' => 'dismiss_notice',
71
  'supported_positions' => $this->dashboard_top_or_report,
76
  'text' => __('Add SFTP to send your data securely, lock settings and encrypt your database backups for extra security.', 'updraftplus'),
77
  'image' => 'addons-images/lockadmin.png',
78
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
79
+ 'campaign' => 'lockadmin',
80
  'button_meta' => 'updraftplus',
81
  'dismiss_time' => 'dismiss_notice',
82
  'supported_positions' => $this->dashboard_top_or_report,
87
  'text' => __('Copy your site to another domain directly. Includes find-and-replace tool for database references.', 'updraftplus'),
88
  'image' => 'addons-images/migrator.png',
89
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
90
+ 'campaign' => 'migrator',
91
  'button_meta' => 'updraftplus',
92
  'dismiss_time' => 'dismiss_notice',
93
  'supported_positions' => $this->anywhere,
104
  ),
105
  8 => array(
106
  'prefix' => '',
107
+ 'title' => __('Do you use UpdraftPlus on multiple sites?', 'updraftplus'),
108
+ 'text' => __('Control all your WordPress installations from one place using UpdraftCentral remote site management!', 'updraftplus'),
109
  'image' => 'notices/updraft_logo.png',
110
+ 'button_link' => 'https://updraftcentral.com',
111
+ 'button_meta' => 'updraftcentral',
112
  'dismiss_time' => 'dismiss_notice',
113
  'supported_positions' => $this->anywhere,
114
  ),
115
+ 'rate' => array(
116
  'prefix' => '',
117
+ 'title' => __('Like UpdraftPlus and can spare one minute?', 'updraftplus'),
118
+ 'text' => __('Please help UpdraftPlus by giving a positive review at wordpress.org.', 'updraftplus'),
119
  'image' => 'notices/updraft_logo.png',
120
+ 'button_link' => 'https://wordpress.org/support/plugin/updraftplus/reviews/?rate=5#new-post',
121
+ 'button_meta' => 'review',
122
  'dismiss_time' => 'dismiss_notice',
123
  'supported_positions' => $this->anywhere,
124
  ),
148
  'text' => __("Follow this link to sign up for the UpdraftPlus newsletter.", 'updraftplus'),
149
  'image' => 'notices/updraft_logo.png',
150
  'button_link' => 'https://updraftplus.com/newsletter-signup',
151
+ 'campaign' => 'newsletter',
152
  'button_meta' => 'signup',
153
  'supported_positions' => $this->anywhere,
154
  'dismiss_time' => false
220
  'text' => __('To benefit, use this discount code:', 'updraftplus').' ',
221
  'image' => 'notices/black_friday.png',
222
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
223
+ 'campaign' => 'blackfriday',
224
  'button_meta' => 'updraftplus',
225
  'dismiss_time' => 'dismiss_season',
226
  'discount_code' => 'blackfridaysale2018',
234
  'text' => __('To benefit, use this discount code:', 'updraftplus').' ',
235
  'image' => 'notices/christmas.png',
236
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
237
+ 'campaign' => 'christmas',
238
  'button_meta' => 'updraftplus',
239
  'dismiss_time' => 'dismiss_season',
240
  'discount_code' => 'christmassale2018',
248
  'text' => __('To benefit, use this discount code:', 'updraftplus').' ',
249
  'image' => 'notices/new_year.png',
250
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
251
+ 'campaign' => 'newyear',
252
  'button_meta' => 'updraftplus',
253
  'dismiss_time' => 'dismiss_season',
254
  'discount_code' => 'newyearsale2019',
262
  'text' => __('To benefit, use this discount code:', 'updraftplus').' ',
263
  'image' => 'notices/spring.png',
264
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
265
+ 'campaign' => 'spring',
266
  'button_meta' => 'updraftplus',
267
  'dismiss_time' => 'dismiss_season',
268
  'discount_code' => 'springsale2019',
276
  'text' => __('To benefit, use this discount code:', 'updraftplus').' ',
277
  'image' => 'notices/summer.png',
278
  'button_link' => 'https://updraftplus.com/landing/updraftplus-premium',
279
+ 'campaign' => 'summer',
280
  'button_meta' => 'updraftplus',
281
  'dismiss_time' => 'dismiss_season',
282
  'discount_code' => 'summersale2019',
304
  wp_enqueue_style('updraftplus-notices-css', UPDRAFTPLUS_URL.'/css/updraftplus-notices'.$min_or_not.'.css', array(), $enqueue_version);
305
  }
306
 
307
+ protected function translation_needed($plugin_base_dir = null, $product_name = null) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
308
  return parent::translation_needed(UPDRAFTPLUS_DIR, 'updraftplus');
309
  }
310
 
311
+ protected function wp_optimize_installed($plugin_base_dir = null, $product_name = null) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
312
  $wp_optimize_file = false;
313
  if (!function_exists('get_plugins')) include_once(ABSPATH.'wp-admin/includes/plugin.php');
314
  $plugins = get_plugins();
321
  return true;
322
  }
323
 
324
+ protected function keyy_installed($plugin_base_dir = null, $product_name = null) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
325
  $wp_optimize_file = false;
326
  if (!function_exists('get_plugins')) include_once(ABSPATH.'wp-admin/includes/plugin.php');
327
  $plugins = get_plugins();
334
  return true;
335
  }
336
 
337
+ protected function metaslider_installed($plugin_base_dir = null, $product_name = null) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
338
  if (!function_exists('get_plugins')) include_once(ABSPATH.'wp-admin/includes/plugin.php');
339
  $plugins = get_plugins();
340
 
346
  return true;
347
  }
348
 
349
+ protected function clef_2fa_installed($plugin_base_dir = null, $product_name = null) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
350
 
351
  if (!function_exists('get_plugins')) include_once(ABSPATH.'wp-admin/includes/plugin.php');
352
 
422
 
423
  if (!has_filter('updraftplus_com_link') && isset($advert_information['button_link']) && false !== strpos($advert_information['button_link'], '//updraftplus.com')) {
424
  $advert_information['button_link'] = trailingslashit($advert_information['button_link']).'?afref='.$this->self_affiliate_id;
425
+ if (isset($advert_information['campaign'])) $advert_information['button_link'] .= '?utm_source=updraftplus&utm_medium=banner&utm_campaign='.$advert_information['campaign'].'&utm_term=New&utm_content='.$advert_information['campaign'];
426
  }
427
 
428
  include_once(UPDRAFTPLUS_DIR.'/admin.php');
index.html CHANGED
@@ -45,7 +45,7 @@
45
 
46
  <h4>Are you multi-lingual? Can you translate?</h4>
47
 
48
- <p>Are you able to translate UpdraftPlus into another language? Are you ready to help speakers of your language? UpdraftPlus itself is ready and waiting - the only work needed is the translating. The translation process is easy, and web-based - go here for instructions: <a href="https://updraftplus.com/translate/" rel="nofollow">https://updraftplus.com/translate/</a>. (Or if you're an expert WordPress translator already, then just pick out the .pot file from the wp-content/plugins/updraftplus/languages/ directory).</p>
49
 
50
  <p>Many thanks to the existing translators:</p>
51
 
45
 
46
  <h4>Are you multi-lingual? Can you translate?</h4>
47
 
48
+ <p>Are you able to translate UpdraftPlus into another language? Are you ready to help speakers of your language? UpdraftPlus itself is ready and waiting - the only work needed is the translating. The translation process is easy, and web-based - go here for instructions: <a href="https://updraftplus.com/translate/" rel="nofollow>https://updraftplus.com/translate/</a>. (Or if you're an expert WordPress translator already, then just pick out the .pot file from the wp-content/plugins/updraftplus/languages/ directory).</p>
49
 
50
  <p>Many thanks to the existing translators:</p>
51
 
languages/updraftplus-bg_BG.mo CHANGED
Binary file
languages/updraftplus-bg_BG.po CHANGED
@@ -2,7 +2,7 @@
2
  # This file is distributed under the same license as the UpdraftPlus package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2017-10-09 11:44:16+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
@@ -2192,7 +2192,7 @@ msgstr ""
2192
 
2193
  #: src/central/bootstrap.php:554
2194
  msgid "More information..."
2195
- msgstr ""
2196
 
2197
  #: src/central/bootstrap.php:553
2198
  msgid "Use the alternative method for making a connection with the dashboard."
@@ -2224,7 +2224,7 @@ msgstr ""
2224
 
2225
  #: src/addons/migrator.php:1764, src/central/bootstrap.php:546
2226
  msgid "recommended"
2227
- msgstr ""
2228
 
2229
  #: src/addons/migrator.php:1764, src/central/bootstrap.php:546
2230
  msgid "%s bytes"
@@ -2266,7 +2266,7 @@ msgstr ""
2266
 
2267
  #: src/methods/ftp.php:412
2268
  msgid "login"
2269
- msgstr ""
2270
 
2271
  #: src/addons/reporting.php:527, src/addons/reporting.php:527,
2272
  #: src/addons/reporting.php:529, src/methods/email.php:100
@@ -2325,7 +2325,7 @@ msgstr ""
2325
 
2326
  #: src/central/bootstrap.php:535
2327
  msgid "Description"
2328
- msgstr ""
2329
 
2330
  #: src/central/bootstrap.php:463
2331
  msgid "Delete..."
@@ -2341,7 +2341,7 @@ msgstr ""
2341
 
2342
  #: src/central/bootstrap.php:477
2343
  msgid "Details"
2344
- msgstr ""
2345
 
2346
  #: src/central/bootstrap.php:476
2347
  msgid "Key description"
@@ -2397,7 +2397,7 @@ msgstr ""
2397
 
2398
  #: src/admin.php:4929
2399
  msgid "Your settings have been saved."
2400
- msgstr ""
2401
 
2402
  #: src/admin.php:4009
2403
  msgid "Total backup size:"
@@ -2405,7 +2405,7 @@ msgstr ""
2405
 
2406
  #: src/admin.php:3416
2407
  msgid "stop"
2408
- msgstr ""
2409
 
2410
  #: src/admin.php:905, src/admin.php:3209
2411
  msgid "The backup has finished running"
@@ -2447,7 +2447,7 @@ msgstr ""
2447
 
2448
  #: src/admin.php:854
2449
  msgid "Saving..."
2450
- msgstr ""
2451
 
2452
  #: src/admin.php:815
2453
  msgid "Error: the server sent us a response which we did not understand."
@@ -2484,7 +2484,7 @@ msgstr ""
2484
  #: src/admin.php:2842, src/templates/wp-admin/notices/horizontal-notice.php:16,
2485
  #: src/templates/wp-admin/notices/horizontal-notice.php:18
2486
  msgid "Dismiss"
2487
- msgstr ""
2488
 
2489
  #: src/admin.php:891
2490
  msgid "Please fill in the required information."
@@ -2593,7 +2593,7 @@ msgstr ""
2593
 
2594
  #: src/admin.php:4801
2595
  msgid "settings"
2596
- msgstr ""
2597
 
2598
  #: src/admin.php:4801
2599
  msgid "Backup won't be sent to any remote storage - none has been saved in the %s"
@@ -2646,7 +2646,7 @@ msgstr ""
2646
 
2647
  #: src/admin.php:695
2648
  msgid "Extensions"
2649
- msgstr ""
2650
 
2651
  #: src/admin.php:687, src/admin.php:2801
2652
  msgid "Advanced Tools"
@@ -2793,7 +2793,7 @@ msgstr ""
2793
 
2794
  #: src/templates/wp-admin/advanced/site-info.php:56
2795
  msgid "Not installed"
2796
- msgstr ""
2797
 
2798
  #: src/addons/googlecloud.php:1042, src/addons/s3-enhanced.php:63
2799
  msgid "Storage class"
@@ -3970,18 +3970,18 @@ msgstr ""
3970
  #: src/includes/updraftplus-notices.php:133,
3971
  #: src/includes/updraftplus-notices.php:134
3972
  msgid "Google+"
3973
- msgstr ""
3974
 
3975
  #: src/includes/updraftplus-notices.php:133,
3976
  #: src/includes/updraftplus-notices.php:134
3977
  msgid "Facebook"
3978
- msgstr ""
3979
 
3980
  #: src/includes/updraftplus-notices.php:133,
3981
  #: src/includes/updraftplus-notices.php:134,
3982
  #: src/templates/wp-admin/settings/header.php:16
3983
  msgid "Twitter"
3984
- msgstr ""
3985
 
3986
  #: src/includes/updraftplus-notices.php:132
3987
  msgid "UpdraftPlus is on social media - check us out!"
@@ -5697,7 +5697,7 @@ msgstr ""
5697
  #: src/templates/wp-admin/settings/tab-addons.php:21,
5698
  #: src/templates/wp-admin/settings/tab-addons.php:87
5699
  msgid "Support"
5700
- msgstr ""
5701
 
5702
  #: src/class-updraftplus.php:4237
5703
  msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup."
@@ -6109,7 +6109,7 @@ msgstr ""
6109
 
6110
  #: src/admin.php:2591, src/class-updraftplus.php:4009, src/restorer.php:2647
6111
  msgid "Warning:"
6112
- msgstr ""
6113
 
6114
  #: src/class-updraftplus.php:3998, src/class-updraftplus.php:4001,
6115
  #: src/restorer.php:530
@@ -6434,7 +6434,7 @@ msgstr ""
6434
  #: src/admin.php:3500, src/admin.php:3510, src/methods/addon-base-v2.php:313,
6435
  #: src/methods/stream-base.php:356
6436
  msgid "Failed"
6437
- msgstr ""
6438
 
6439
  #: src/addons/webdav.php:169
6440
  msgid "WebDAV URL"
@@ -6987,7 +6987,7 @@ msgstr ""
6987
 
6988
  #: src/templates/wp-admin/settings/form-contents.php:373
6989
  msgid "Save Changes"
6990
- msgstr ""
6991
 
6992
  #: src/templates/wp-admin/settings/form-contents.php:345
6993
  msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect."
@@ -7067,7 +7067,7 @@ msgstr ""
7067
 
7068
  #: src/addons/morefiles.php:311, src/admin.php:843
7069
  msgid "Cancel"
7070
- msgstr ""
7071
 
7072
  #: src/addons/incremental.php:235, src/addons/reporting.php:245,
7073
  #: src/admin.php:4004
@@ -7089,7 +7089,7 @@ msgstr ""
7089
  #: src/admin.php:2935, src/templates/wp-admin/settings/form-contents.php:255,
7090
  #: src/templates/wp-admin/settings/updraftcentral-connect.php:44
7091
  msgid "Email"
7092
- msgstr ""
7093
 
7094
  #: src/templates/wp-admin/settings/form-contents.php:147
7095
  msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org."
@@ -7117,7 +7117,7 @@ msgstr ""
7117
 
7118
  #: src/addons/incremental.php:244, src/admin.php:3724
7119
  msgid "Monthly"
7120
- msgstr ""
7121
 
7122
  #: src/addons/incremental.php:243, src/admin.php:3723
7123
  msgid "Fortnightly"
@@ -7125,11 +7125,11 @@ msgstr ""
7125
 
7126
  #: src/addons/incremental.php:242, src/admin.php:3722
7127
  msgid "Weekly"
7128
- msgstr ""
7129
 
7130
  #: src/addons/incremental.php:241, src/admin.php:3721
7131
  msgid "Daily"
7132
- msgstr ""
7133
 
7134
  #: src/admin.php:851, src/admin.php:3699
7135
  msgid "Download log file"
@@ -7190,7 +7190,7 @@ msgstr ""
7190
  #: src/templates/wp-admin/settings/tab-addons.php:235,
7191
  #: src/templates/wp-admin/settings/tab-addons.php:252
7192
  msgid "No"
7193
- msgstr ""
7194
 
7195
  #: src/templates/wp-admin/advanced/site-info.php:63,
7196
  #: src/templates/wp-admin/advanced/site-info.php:66,
@@ -7213,7 +7213,7 @@ msgstr ""
7213
  #: src/templates/wp-admin/settings/tab-addons.php:255,
7214
  #: src/templates/wp-admin/settings/tab-addons.php:261
7215
  msgid "Yes"
7216
- msgstr ""
7217
 
7218
  #: src/admin.php:5366, src/admin.php:5370,
7219
  #: src/templates/wp-admin/advanced/site-info.php:45,
@@ -7448,7 +7448,7 @@ msgstr ""
7448
 
7449
  #: src/templates/wp-admin/settings/header.php:26
7450
  msgid "Version"
7451
- msgstr ""
7452
 
7453
  #: src/templates/wp-admin/settings/header.php:25
7454
  msgid "Lead developer's homepage"
@@ -7603,7 +7603,7 @@ msgstr ""
7603
  #: src/addons/azure.php:268, src/class-updraftplus.php:3636,
7604
  #: src/methods/googledrive.php:1120, src/methods/s3.php:341
7605
  msgid "File not found"
7606
- msgstr ""
7607
 
7608
  #: src/includes/class-updraftplus-encryption.php:354
7609
  msgid "The decryption key used:"
2
  # This file is distributed under the same license as the UpdraftPlus package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2019-01-04 23:18:07+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
2192
 
2193
  #: src/central/bootstrap.php:554
2194
  msgid "More information..."
2195
+ msgstr "Повече информация..."
2196
 
2197
  #: src/central/bootstrap.php:553
2198
  msgid "Use the alternative method for making a connection with the dashboard."
2224
 
2225
  #: src/addons/migrator.php:1764, src/central/bootstrap.php:546
2226
  msgid "recommended"
2227
+ msgstr "препоръчва"
2228
 
2229
  #: src/addons/migrator.php:1764, src/central/bootstrap.php:546
2230
  msgid "%s bytes"
2266
 
2267
  #: src/methods/ftp.php:412
2268
  msgid "login"
2269
+ msgstr "Вход"
2270
 
2271
  #: src/addons/reporting.php:527, src/addons/reporting.php:527,
2272
  #: src/addons/reporting.php:529, src/methods/email.php:100
2325
 
2326
  #: src/central/bootstrap.php:535
2327
  msgid "Description"
2328
+ msgstr "описание на"
2329
 
2330
  #: src/central/bootstrap.php:463
2331
  msgid "Delete..."
2341
 
2342
  #: src/central/bootstrap.php:477
2343
  msgid "Details"
2344
+ msgstr "Детайли"
2345
 
2346
  #: src/central/bootstrap.php:476
2347
  msgid "Key description"
2397
 
2398
  #: src/admin.php:4929
2399
  msgid "Your settings have been saved."
2400
+ msgstr "Настройките ви са записани."
2401
 
2402
  #: src/admin.php:4009
2403
  msgid "Total backup size:"
2405
 
2406
  #: src/admin.php:3416
2407
  msgid "stop"
2408
+ msgstr "спиране"
2409
 
2410
  #: src/admin.php:905, src/admin.php:3209
2411
  msgid "The backup has finished running"
2447
 
2448
  #: src/admin.php:854
2449
  msgid "Saving..."
2450
+ msgstr "Запазване..."
2451
 
2452
  #: src/admin.php:815
2453
  msgid "Error: the server sent us a response which we did not understand."
2484
  #: src/admin.php:2842, src/templates/wp-admin/notices/horizontal-notice.php:16,
2485
  #: src/templates/wp-admin/notices/horizontal-notice.php:18
2486
  msgid "Dismiss"
2487
+ msgstr "Отхвърли"
2488
 
2489
  #: src/admin.php:891
2490
  msgid "Please fill in the required information."
2593
 
2594
  #: src/admin.php:4801
2595
  msgid "settings"
2596
+ msgstr "настройки"
2597
 
2598
  #: src/admin.php:4801
2599
  msgid "Backup won't be sent to any remote storage - none has been saved in the %s"
2646
 
2647
  #: src/admin.php:695
2648
  msgid "Extensions"
2649
+ msgstr "Добавки"
2650
 
2651
  #: src/admin.php:687, src/admin.php:2801
2652
  msgid "Advanced Tools"
2793
 
2794
  #: src/templates/wp-admin/advanced/site-info.php:56
2795
  msgid "Not installed"
2796
+ msgstr "Не е инсталиран"
2797
 
2798
  #: src/addons/googlecloud.php:1042, src/addons/s3-enhanced.php:63
2799
  msgid "Storage class"
3970
  #: src/includes/updraftplus-notices.php:133,
3971
  #: src/includes/updraftplus-notices.php:134
3972
  msgid "Google+"
3973
+ msgstr "Google+"
3974
 
3975
  #: src/includes/updraftplus-notices.php:133,
3976
  #: src/includes/updraftplus-notices.php:134
3977
  msgid "Facebook"
3978
+ msgstr "Facebook"
3979
 
3980
  #: src/includes/updraftplus-notices.php:133,
3981
  #: src/includes/updraftplus-notices.php:134,
3982
  #: src/templates/wp-admin/settings/header.php:16
3983
  msgid "Twitter"
3984
+ msgstr "Twitter"
3985
 
3986
  #: src/includes/updraftplus-notices.php:132
3987
  msgid "UpdraftPlus is on social media - check us out!"
5697
  #: src/templates/wp-admin/settings/tab-addons.php:21,
5698
  #: src/templates/wp-admin/settings/tab-addons.php:87
5699
  msgid "Support"
5700
+ msgstr "Поддръжка"
5701
 
5702
  #: src/class-updraftplus.php:4237
5703
  msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup."
6109
 
6110
  #: src/admin.php:2591, src/class-updraftplus.php:4009, src/restorer.php:2647
6111
  msgid "Warning:"
6112
+ msgstr "Внимание:"
6113
 
6114
  #: src/class-updraftplus.php:3998, src/class-updraftplus.php:4001,
6115
  #: src/restorer.php:530
6434
  #: src/admin.php:3500, src/admin.php:3510, src/methods/addon-base-v2.php:313,
6435
  #: src/methods/stream-base.php:356
6436
  msgid "Failed"
6437
+ msgstr "Неуспешно"
6438
 
6439
  #: src/addons/webdav.php:169
6440
  msgid "WebDAV URL"
6987
 
6988
  #: src/templates/wp-admin/settings/form-contents.php:373
6989
  msgid "Save Changes"
6990
+ msgstr "Запис на промените"
6991
 
6992
  #: src/templates/wp-admin/settings/form-contents.php:345
6993
  msgid "Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect."
7067
 
7068
  #: src/addons/morefiles.php:311, src/admin.php:843
7069
  msgid "Cancel"
7070
+ msgstr "Отмяна"
7071
 
7072
  #: src/addons/incremental.php:235, src/addons/reporting.php:245,
7073
  #: src/admin.php:4004
7089
  #: src/admin.php:2935, src/templates/wp-admin/settings/form-contents.php:255,
7090
  #: src/templates/wp-admin/settings/updraftcentral-connect.php:44
7091
  msgid "Email"
7092
+ msgstr "Електронна поща"
7093
 
7094
  #: src/templates/wp-admin/settings/form-contents.php:147
7095
  msgid "The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org."
7117
 
7118
  #: src/addons/incremental.php:244, src/admin.php:3724
7119
  msgid "Monthly"
7120
+ msgstr "Месечен"
7121
 
7122
  #: src/addons/incremental.php:243, src/admin.php:3723
7123
  msgid "Fortnightly"
7125
 
7126
  #: src/addons/incremental.php:242, src/admin.php:3722
7127
  msgid "Weekly"
7128
+ msgstr "Ежеседмично"
7129
 
7130
  #: src/addons/incremental.php:241, src/admin.php:3721
7131
  msgid "Daily"
7132
+ msgstr "Ежедневно"
7133
 
7134
  #: src/admin.php:851, src/admin.php:3699
7135
  msgid "Download log file"
7190
  #: src/templates/wp-admin/settings/tab-addons.php:235,
7191
  #: src/templates/wp-admin/settings/tab-addons.php:252
7192
  msgid "No"
7193
+ msgstr "Не"
7194
 
7195
  #: src/templates/wp-admin/advanced/site-info.php:63,
7196
  #: src/templates/wp-admin/advanced/site-info.php:66,
7213
  #: src/templates/wp-admin/settings/tab-addons.php:255,
7214
  #: src/templates/wp-admin/settings/tab-addons.php:261
7215
  msgid "Yes"
7216
+ msgstr "Да"
7217
 
7218
  #: src/admin.php:5366, src/admin.php:5370,
7219
  #: src/templates/wp-admin/advanced/site-info.php:45,
7448
 
7449
  #: src/templates/wp-admin/settings/header.php:26
7450
  msgid "Version"
7451
+ msgstr "Версия"
7452
 
7453
  #: src/templates/wp-admin/settings/header.php:25
7454
  msgid "Lead developer's homepage"
7603
  #: src/addons/azure.php:268, src/class-updraftplus.php:3636,
7604
  #: src/methods/googledrive.php:1120, src/methods/s3.php:341
7605
  msgid "File not found"
7606
+ msgstr "Файлът не беше намерен"
7607
 
7608
  #: src/includes/class-updraftplus-encryption.php:354
7609
  msgid "The decryption key used:"
languages/updraftplus-eu.mo CHANGED
Binary file
languages/updraftplus-eu.po CHANGED
@@ -2,7 +2,7 @@
2
  # This file is distributed under the same license as the UpdraftPlus package.
3
  msgid ""
4
  msgstr ""
5
- "PO-Revision-Date: 2017-12-21 08:03:53+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
@@ -13,37 +13,37 @@ msgstr ""
13
 
14
  #: src/admin.php:5374
15
  msgid "Clone region:"
16
- msgstr ""
17
 
18
  #: src/udaddons/updraftplus-addons.php:268,
19
  #: src/udaddons/updraftplus-addons.php:280
20
  msgid "go here"
21
- msgstr ""
22
 
23
  #: src/udaddons/updraftplus-addons.php:268,
24
  #: src/udaddons/updraftplus-addons.php:280
25
  msgid "If you have already renewed, then you need to allocate a licence to this site - %s"
26
- msgstr ""
27
 
28
  #: src/addons/onedrive.php:864
29
  msgid "Authentication"
30
- msgstr ""
31
 
32
  #: src/admin.php:926
33
  msgid "You must select at least one remote storage destination to upload this backup set to."
34
- msgstr ""
35
 
36
  #: src/templates/wp-admin/settings/form-contents.php:350
37
  msgid "Read more about Easy Updates Manager"
38
- msgstr ""
39
 
40
  #: src/templates/wp-admin/settings/temporary-clone.php:68
41
  msgid "You can find out more about clone keys here."
42
- msgstr ""
43
 
44
  #: src/templates/wp-admin/settings/temporary-clone.php:57
45
  msgid "Or, use an UpdraftClone key"
46
- msgstr ""
47
 
48
  #: src/restorer.php:2493
49
  msgid "Found SET NAMES %s, but changing to %s as suggested by WPDB::determine_charset()."
2
  # This file is distributed under the same license as the UpdraftPlus package.
3
  msgid ""
4
  msgstr ""
5
+ "PO-Revision-Date: 2019-01-15 15:25:22+0000\n"
6
  "MIME-Version: 1.0\n"
7
  "Content-Type: text/plain; charset=UTF-8\n"
8
  "Content-Transfer-Encoding: 8bit\n"
13
 
14
  #: src/admin.php:5374
15
  msgid "Clone region:"
16
+ msgstr "Klon-erregioa:"
17
 
18
  #: src/udaddons/updraftplus-addons.php:268,
19
  #: src/udaddons/updraftplus-addons.php:280
20
  msgid "go here"
21
+ msgstr "joan hara"
22
 
23
  #: src/udaddons/updraftplus-addons.php:268,
24
  #: src/udaddons/updraftplus-addons.php:280
25
  msgid "If you have already renewed, then you need to allocate a licence to this site - %s"
26
+ msgstr "Jadanik berritu baduzu, lizentzia bat esleitu beharko diozu gune honi: %s."
27
 
28
  #: src/addons/onedrive.php:864
29
  msgid "Authentication"
30
+ msgstr "Autentikazioa"
31
 
32
  #: src/admin.php:926
33
  msgid "You must select at least one remote storage destination to upload this backup set to."
34
+ msgstr "Gutxienez urruneko biltegiratze-helburu bat hautatu behar duzu babeskopia sorta hau bertan kargatzeko."
35
 
36
  #: src/templates/wp-admin/settings/form-contents.php:350
37
  msgid "Read more about Easy Updates Manager"
38
+ msgstr "Irakurri gehiago Eguneraketa Errazen Kudeatzaileari buruz"
39
 
40
  #: src/templates/wp-admin/settings/temporary-clone.php:68
41
  msgid "You can find out more about clone keys here."
42
+ msgstr "Klon-giltzei buruzko informazio gehiago aurki dezakezu hemen."
43
 
44
  #: src/templates/wp-admin/settings/temporary-clone.php:57
45
  msgid "Or, use an UpdraftClone key"
46
+ msgstr "Edo erabili UpdraftClone giltza bat"
47
 
48
  #: src/restorer.php:2493
49
  msgid "Found SET NAMES %s, but changing to %s as suggested by WPDB::determine_charset()."
languages/updraftplus.pot CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2018 updraftplus
2
  # This file is distributed under the same license as the updraftplus package.
3
  msgid ""
4
  msgstr ""
@@ -7,7 +7,7 @@ msgstr ""
7
  "MIME-Version: 1.0\n"
8
  "Content-Type: text/plain; charset=UTF-8\n"
9
  "Content-Transfer-Encoding: 8bit\n"
10
- "PO-Revision-Date: 2018-MO-DA HO:MI+ZONE\n"
11
  "Last-Translator: Team Updraft <mail@example.com>\n"
12
  "Language-Team: Team Updraft <mail@example.com>\n"
13
  "X-Poedit-Basepath: ..\n"
@@ -49,7 +49,7 @@ msgstr ""
49
  msgid "(logs can be found in the UpdraftPlus settings page as normal)..."
50
  msgstr ""
51
 
52
- #: src/addons/autobackup.php:344, src/addons/autobackup.php:439, src/admin.php:3069, src/admin.php:3075, src/templates/wp-admin/settings/take-backup.php:69
53
  msgid "Last log message"
54
  msgstr ""
55
 
@@ -97,7 +97,7 @@ msgstr ""
97
  msgid "now proceeding with the updates..."
98
  msgstr ""
99
 
100
- #: src/addons/autobackup.php:1072, src/admin.php:978, src/includes/updraftplus-notices.php:171
101
  msgid "Be safe with an automatic backup"
102
  msgstr ""
103
 
@@ -117,7 +117,7 @@ msgstr ""
117
  msgid "%s Error"
118
  msgstr ""
119
 
120
- #: src/addons/azure.php:268, src/class-updraftplus.php:3662, src/methods/googledrive.php:1120, src/methods/s3.php:341
121
  msgid "File not found"
122
  msgstr ""
123
 
@@ -129,7 +129,7 @@ msgstr ""
129
  msgid "Upload failed"
130
  msgstr ""
131
 
132
- #: src/addons/azure.php:443, src/addons/backblaze.php:528, src/addons/googlecloud.php:843, src/methods/s3.php:1172
133
  msgid "Delete failed:"
134
  msgstr ""
135
 
@@ -145,11 +145,11 @@ msgstr ""
145
  msgid "You must add the following as the authorised redirect URI in your Azure console (under \"API Settings\") when asked"
146
  msgstr ""
147
 
148
- #: src/addons/azure.php:601, src/addons/migrator.php:948, src/admin.php:1149, src/admin.php:1153, src/admin.php:1157, src/admin.php:1161, src/admin.php:1165, src/admin.php:1174, src/admin.php:3912, src/admin.php:3919, src/admin.php:3921, src/admin.php:5346, src/methods/cloudfiles-new.php:100, src/methods/cloudfiles.php:440, src/methods/ftp.php:330, src/methods/openstack-base.php:571, src/methods/s3.php:859, src/methods/s3.php:863, src/methods/updraftvault.php:306, src/templates/wp-admin/settings/downloading-and-restoring.php:27, src/templates/wp-admin/settings/tab-backups.php:27, src/udaddons/updraftplus-addons.php:259
149
  msgid "Warning"
150
  msgstr ""
151
 
152
- #: src/addons/azure.php:601, src/admin.php:3912, src/methods/updraftvault.php:306
153
  msgid "Your web server's PHP installation does not included a <strong>required</strong> (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it."
154
  msgstr ""
155
 
@@ -157,7 +157,7 @@ msgstr ""
157
  msgid "Create Azure credentials in your Azure developer console."
158
  msgstr ""
159
 
160
- #: src/addons/azure.php:605, src/addons/onedrive.php:1148, src/includes/class-remote-send.php:314
161
  msgid "For longer help, including screenshots, follow this link."
162
  msgstr ""
163
 
@@ -201,7 +201,7 @@ msgstr ""
201
  msgid "You can enter the path of any %s virtual folder you wish to use here."
202
  msgstr ""
203
 
204
- #: src/addons/azure.php:638, src/addons/google-enhanced.php:76, src/addons/onedrive.php:1188
205
  msgid "If you leave it blank, then the backup will be placed in the root of your %s"
206
  msgstr ""
207
 
@@ -225,11 +225,15 @@ msgstr ""
225
  msgid "Azure Government"
226
  msgstr ""
227
 
228
- #: src/addons/backblaze.php:205, src/admin.php:2134
 
 
 
 
229
  msgid "Error: unexpected file read fail"
230
  msgstr ""
231
 
232
- #: src/addons/backblaze.php:225, src/addons/cloudfiles-enhanced.php:117, src/addons/migrator.php:893, src/addons/migrator.php:1190, src/addons/migrator.php:1271, src/addons/migrator.php:1320, src/addons/migrator.php:1558, src/addons/s3-enhanced.php:164, src/addons/s3-enhanced.php:169, src/addons/s3-enhanced.php:171, src/addons/sftp.php:911, src/addons/webdav.php:203, src/admin.php:91, src/admin.php:817, src/includes/class-remote-send.php:266, src/includes/class-remote-send.php:293, src/includes/class-remote-send.php:299, src/includes/class-remote-send.php:362, src/includes/class-remote-send.php:421, src/includes/class-remote-send.php:462, src/includes/class-remote-send.php:472, src/includes/class-remote-send.php:477, src/methods/remotesend.php:74, src/methods/remotesend.php:242, src/methods/remotesend.php:298, src/methods/updraftvault.php:527, src/restorer.php:228, src/restorer.php:256, src/restorer.php:1921
233
  msgid "Error:"
234
  msgstr ""
235
 
@@ -245,7 +249,7 @@ msgstr ""
245
  msgid "Invalid bucket name"
246
  msgstr ""
247
 
248
- #: src/addons/backblaze.php:497, src/methods/s3.php:1141
249
  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 %s user may already have taken your name)."
250
  msgstr ""
251
 
@@ -445,11 +449,11 @@ msgstr ""
445
  msgid "Folder"
446
  msgstr ""
447
 
448
- #: src/addons/google-enhanced.php:76, src/addons/onedrive.php:1188
449
  msgid "Enter the path of the %s folder you wish to use here."
450
  msgstr ""
451
 
452
- #: src/addons/google-enhanced.php:76, src/addons/googlecloud.php:1039, src/addons/onedrive.php:1188
453
  msgid "e.g. %s"
454
  msgstr ""
455
 
@@ -561,7 +565,7 @@ msgstr ""
561
  msgid "Frankfurt"
562
  msgstr ""
563
 
564
- #: src/addons/googlecloud.php:118, src/addons/googlecloud.php:793, src/methods/s3.php:1115
565
  msgid "Failure: No bucket details were given."
566
  msgstr ""
567
 
@@ -597,7 +601,7 @@ msgstr ""
597
  msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again."
598
  msgstr ""
599
 
600
- #: src/addons/googlecloud.php:438, src/addons/migrator.php:590, src/admin.php:2317, src/admin.php:2338, src/admin.php:2346, src/class-updraftplus.php:997, src/class-updraftplus.php:1003, src/class-updraftplus.php:3857, src/class-updraftplus.php:3859, src/class-updraftplus.php:4024, src/class-updraftplus.php:4031, src/class-updraftplus.php:4102, src/methods/googledrive.php:403, src/methods/s3.php:341
601
  msgid "Error: %s"
602
  msgstr ""
603
 
@@ -621,15 +625,15 @@ msgstr ""
621
  msgid "But no %s settings were found. Please complete all fields in %s settings and save the settings."
622
  msgstr ""
623
 
624
- #: src/addons/googlecloud.php:698, src/addons/onedrive.php:907, src/addons/onedrive.php:918, src/methods/googledrive.php:442, src/methods/googledrive.php:455
625
  msgid "However, subsequent access attempts failed:"
626
  msgstr ""
627
 
628
- #: src/addons/googlecloud.php:718, src/addons/googlecloud.php:839, src/addons/onedrive.php:939, src/addons/sftp.php:591, src/addons/sftp.php:595, src/addons/wp-cli.php:516, src/methods/addon-base-v2.php:327, src/methods/cloudfiles.php:575, src/methods/googledrive.php:475, src/methods/openstack-base.php:530, src/methods/s3.php:1155, src/methods/stream-base.php:372
629
  msgid "Success"
630
  msgstr ""
631
 
632
- #: src/addons/googlecloud.php:718, src/addons/onedrive.php:939, src/methods/googledrive.php:475
633
  msgid "you have authenticated your %s account."
634
  msgstr ""
635
 
@@ -641,19 +645,19 @@ msgstr ""
641
  msgid "You must save and authenticate before you can test your settings."
642
  msgstr ""
643
 
644
- #: src/addons/googlecloud.php:776, src/addons/googlecloud.php:810, src/addons/googlecloud.php:816, src/addons/sftp.php:553, src/admin.php:3466, src/admin.php:3502, src/admin.php:3512, src/methods/addon-base-v2.php:313, src/methods/stream-base.php:356
645
  msgid "Failed"
646
  msgstr ""
647
 
648
- #: src/addons/googlecloud.php:833, src/addons/googlecloud.php:847, src/methods/s3.php:1153, src/methods/s3.php:1165
649
  msgid "Failure"
650
  msgstr ""
651
 
652
- #: src/addons/googlecloud.php:833, src/addons/googlecloud.php:847, src/methods/s3.php:1153, src/methods/s3.php:1165
653
  msgid "We successfully accessed the bucket, but the attempt to create a file in it failed."
654
  msgstr ""
655
 
656
- #: src/addons/googlecloud.php:839, src/methods/s3.php:1155
657
  msgid "We accessed the bucket, and were able to create files within it."
658
  msgstr ""
659
 
@@ -689,7 +693,7 @@ msgstr ""
689
  msgid "You must add the following as the authorized redirect URI (under \"More Options\") when asked"
690
  msgstr ""
691
 
692
- #: src/addons/googlecloud.php:1019, src/addons/onedrive.php:1177, src/methods/googledrive.php:1233
693
  msgid "Client ID"
694
  msgstr ""
695
 
@@ -697,7 +701,7 @@ msgstr ""
697
  msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here."
698
  msgstr ""
699
 
700
- #: src/addons/googlecloud.php:1027, src/addons/onedrive.php:1181, src/methods/googledrive.php:1237
701
  msgid "Client Secret"
702
  msgstr ""
703
 
@@ -717,7 +721,7 @@ msgstr ""
717
  msgid "Otherwise, you can leave it blank."
718
  msgstr ""
719
 
720
- #: src/addons/googlecloud.php:1034, src/addons/migrator.php:493, src/addons/migrator.php:496, src/addons/migrator.php:499, src/admin.php:1153, src/admin.php:2625, src/backup.php:3430, src/class-updraftplus.php:4123, src/class-updraftplus.php:4123, src/updraftplus.php:157
721
  msgid "Go here for more information."
722
  msgstr ""
723
 
@@ -761,7 +765,7 @@ msgstr ""
761
  msgid "<strong>(You appear to be already authenticated,</strong> though you can authenticate again to refresh your access if you've had a problem)."
762
  msgstr ""
763
 
764
- #: src/addons/googlecloud.php:1108, src/addons/onedrive.php:1248, src/methods/dropbox.php:668, src/methods/googledrive.php:1289
765
  msgid "Account holder's name: %s."
766
  msgstr ""
767
 
@@ -773,7 +777,7 @@ msgstr ""
773
  msgid "Supported backup plugins: %s"
774
  msgstr ""
775
 
776
- #: src/addons/importer.php:276, src/admin.php:4073, src/includes/class-backup-history.php:499
777
  msgid "Backup created by: %s."
778
  msgstr ""
779
 
@@ -785,51 +789,51 @@ msgstr ""
785
  msgid "Increments exist at: %s"
786
  msgstr ""
787
 
788
- #: src/addons/incremental.php:285
789
  msgid "Files changed since the last backup will be added as a new increment in that backup set."
790
  msgstr ""
791
 
792
- #: src/addons/incremental.php:285
793
  msgid "N.B. No backup of your database will be taken in an incremental backup; if you want a database backup as well, then take that separately."
794
  msgstr ""
795
 
796
- #: src/addons/incremental.php:287
797
  msgid "No incremental backup of your files is possible, as no suitable existing backup was found to add increments to."
798
  msgstr ""
799
 
800
- #: src/addons/incremental.php:332, src/addons/reporting.php:259, src/admin.php:4005
801
  msgid "None"
802
  msgstr ""
803
 
804
- #: src/addons/incremental.php:333, src/updraftplus.php:99
805
  msgid "Every hour"
806
  msgstr ""
807
 
808
- #: src/addons/incremental.php:334, src/addons/incremental.php:335, src/addons/incremental.php:336, src/addons/incremental.php:337, src/admin.php:3720, src/admin.php:3721, src/admin.php:3722, src/updraftplus.php:100, src/updraftplus.php:101, src/updraftplus.php:102
809
  msgid "Every %s hours"
810
  msgstr ""
811
 
812
- #: src/addons/incremental.php:338, src/admin.php:3723
813
  msgid "Daily"
814
  msgstr ""
815
 
816
- #: src/addons/incremental.php:339, src/admin.php:3724
817
  msgid "Weekly"
818
  msgstr ""
819
 
820
- #: src/addons/incremental.php:340, src/admin.php:3725
821
  msgid "Fortnightly"
822
  msgstr ""
823
 
824
- #: src/addons/incremental.php:341, src/admin.php:3726
825
  msgid "Monthly"
826
  msgstr ""
827
 
828
- #: src/addons/incremental.php:355
829
  msgid "And then add an incremental backup"
830
  msgstr ""
831
 
832
- #: src/addons/incremental.php:367
833
  msgid "Tell me more"
834
  msgstr ""
835
 
@@ -853,7 +857,7 @@ msgstr ""
853
  msgid "Please make sure that you have made a note of the password!"
854
  msgstr ""
855
 
856
- #: src/addons/lockadmin.php:171, src/addons/moredatabase.php:241, src/addons/sftp.php:459, src/addons/webdav.php:193, src/admin.php:2977, src/methods/openstack2.php:164, src/methods/updraftvault.php:361, src/templates/wp-admin/settings/updraftcentral-connect.php:50
857
  msgid "Password"
858
  msgstr ""
859
 
@@ -945,7 +949,7 @@ msgstr ""
945
  msgid "After pressing this button, you will be given the option to choose which components you wish to migrate"
946
  msgstr ""
947
 
948
- #: src/addons/migrator.php:274, src/admin.php:663, src/admin.php:850, src/admin.php:4171
949
  msgid "Restore"
950
  msgstr ""
951
 
@@ -969,7 +973,7 @@ msgstr ""
969
  msgid "Replace with"
970
  msgstr ""
971
 
972
- #: src/addons/migrator.php:340, src/addons/moredatabase.php:89, src/addons/moredatabase.php:91, src/addons/moredatabase.php:93, src/addons/sftp.php:522, src/addons/sftp.php:526, src/addons/sftp.php:530, src/addons/webdav.php:253, src/admin.php:869, src/includes/class-remote-send.php:454, src/methods/addon-base-v2.php:305, src/methods/cloudfiles-new.php:184, src/methods/cloudfiles-new.php:189, src/methods/cloudfiles.php:519, src/methods/cloudfiles.php:524, src/methods/ftp.php:412, src/methods/ftp.php:416, src/methods/openstack2.php:180, src/methods/openstack2.php:185, src/methods/openstack2.php:190, src/methods/openstack2.php:195, src/methods/s3.php:1089, src/methods/s3.php:1093
973
  msgid "Failure: No %s was given."
974
  msgstr ""
975
 
@@ -977,7 +981,7 @@ msgstr ""
977
  msgid "search term"
978
  msgstr ""
979
 
980
- #: src/addons/migrator.php:343, src/addons/migrator.php:358, src/admin.php:2543, src/admin.php:2553, src/admin.php:2562, src/admin.php:2604, src/admin.php:3435
981
  msgid "Return to UpdraftPlus Configuration"
982
  msgstr ""
983
 
@@ -1179,7 +1183,7 @@ msgstr ""
1179
  msgid "Time taken (seconds):"
1180
  msgstr ""
1181
 
1182
- #: src/addons/migrator.php:1320, src/restorer.php:2784
1183
  msgid "the database query being run was:"
1184
  msgstr ""
1185
 
@@ -1243,7 +1247,7 @@ msgstr ""
1243
  msgid "Enter your chosen name"
1244
  msgstr ""
1245
 
1246
- #: src/addons/migrator.php:1761, src/addons/sftp.php:467, src/admin.php:868, src/admin.php:5194, src/templates/wp-admin/settings/temporary-clone.php:63
1247
  msgid "Key"
1248
  msgstr ""
1249
 
@@ -1303,7 +1307,7 @@ msgstr ""
1303
  msgid "database connection attempt failed"
1304
  msgstr ""
1305
 
1306
- #: src/addons/moredatabase.php:112, src/backup.php:1602
1307
  msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled."
1308
  msgstr ""
1309
 
@@ -1315,7 +1319,7 @@ msgstr ""
1315
  msgid "%s total table(s) found; %s with the indicated prefix."
1316
  msgstr ""
1317
 
1318
- #: src/addons/moredatabase.php:144, src/admin.php:1644
1319
  msgid "Messages:"
1320
  msgstr ""
1321
 
@@ -1359,7 +1363,7 @@ msgstr ""
1359
  msgid "Username"
1360
  msgstr ""
1361
 
1362
- #: src/addons/moredatabase.php:242, src/addons/reporting.php:274, src/addons/wp-cli.php:432, src/admin.php:344, src/admin.php:3980, src/admin.php:4033, src/includes/class-remote-send.php:331, src/includes/class-wpadmin-commands.php:157, src/includes/class-wpadmin-commands.php:521, src/restorer.php:354, src/templates/wp-admin/settings/delete-and-restore-modals.php:74, src/templates/wp-admin/settings/delete-and-restore-modals.php:75, src/templates/wp-admin/settings/take-backup.php:34
1363
  msgid "Database"
1364
  msgstr ""
1365
 
@@ -1416,7 +1420,7 @@ msgctxt "(verb)"
1416
  msgid "Download"
1417
  msgstr ""
1418
 
1419
- #: src/addons/morefiles.php:129, src/addons/morefiles.php:130, src/addons/reporting.php:198
1420
  msgid "Contains:"
1421
  msgstr ""
1422
 
@@ -1512,7 +1516,7 @@ msgstr ""
1512
  msgid "Exclude these:"
1513
  msgstr ""
1514
 
1515
- #: src/addons/morefiles.php:476, src/admin.php:3834
1516
  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."
1517
  msgstr ""
1518
 
@@ -1596,7 +1600,7 @@ msgstr ""
1596
  msgid "An error response was received; HTTP code:"
1597
  msgstr ""
1598
 
1599
- #: src/addons/onedrive.php:693, src/addons/onedrive.php:717, src/includes/updraftplus-login.php:56, src/methods/updraftvault.php:680, src/udaddons/updraftplus-addons.php:952, src/udaddons/updraftplus-addons.php:966
1600
  msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks."
1601
  msgstr ""
1602
 
@@ -1608,15 +1612,15 @@ msgstr ""
1608
  msgid "Your IP address:"
1609
  msgstr ""
1610
 
1611
- #: src/addons/onedrive.php:717, src/includes/updraftplus-login.php:56, src/methods/updraftvault.php:680, src/udaddons/updraftplus-addons.php:966
1612
  msgid "UpdraftPlus.com has responded with 'Access Denied'."
1613
  msgstr ""
1614
 
1615
- #: src/addons/onedrive.php:717, src/includes/updraftplus-login.php:56, src/methods/updraftvault.php:680, src/udaddons/updraftplus-addons.php:966
1616
  msgid "It appears that your web server's IP Address (%s) is blocked."
1617
  msgstr ""
1618
 
1619
- #: src/addons/onedrive.php:717, src/includes/updraftplus-login.php:56, src/methods/updraftvault.php:680
1620
  msgid "To remove the block, please go here."
1621
  msgstr ""
1622
 
@@ -1628,83 +1632,83 @@ msgstr ""
1628
  msgid "Account is not authorized (%s)."
1629
  msgstr ""
1630
 
1631
- #: src/addons/onedrive.php:864, src/class-updraftplus.php:532, src/methods/dropbox.php:240, src/methods/dropbox.php:753, src/methods/dropbox.php:775, src/methods/dropbox.php:790, src/methods/dropbox.php:803, src/methods/dropbox.php:946
1632
  msgid "%s error: %s"
1633
  msgstr ""
1634
 
1635
- #: src/addons/onedrive.php:864
1636
  msgid "Authentication"
1637
  msgstr ""
1638
 
1639
- #: src/addons/onedrive.php:893, src/methods/dropbox.php:844, src/methods/dropbox.php:853, src/methods/googledrive.php:439
1640
  msgid "Your %s quota usage: %s %% used, %s available"
1641
  msgstr ""
1642
 
1643
- #: src/addons/onedrive.php:901, src/methods/dropbox.php:821
1644
  msgid "Your %s account name: %s"
1645
  msgstr ""
1646
 
1647
- #: src/addons/onedrive.php:939, src/addons/onedrive.php:1177, src/addons/onedrive.php:1181
1648
  msgid "OneDrive"
1649
  msgstr ""
1650
 
1651
- #: src/addons/onedrive.php:1037, src/includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:118
1652
  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)."
1653
  msgstr ""
1654
 
1655
- #: src/addons/onedrive.php:1096, src/addons/onedrive.php:1098
1656
  msgid "authorization failed:"
1657
  msgstr ""
1658
 
1659
- #: src/addons/onedrive.php:1125
1660
  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."
1661
  msgstr ""
1662
 
1663
- #: src/addons/onedrive.php:1133
1664
  msgid "You must add the following as the authorized redirect URI in your OneDrive console (under \"API Settings\") when asked"
1665
  msgstr ""
1666
 
1667
- #: src/addons/onedrive.php:1141
1668
  msgid "Create OneDrive credentials in your OneDrive developer console."
1669
  msgstr ""
1670
 
1671
- #: src/addons/onedrive.php:1157, src/methods/dropbox.php:586, src/methods/googledrive.php:1214
1672
  msgid "Please read %s for use of our %s authorization app (none of your backup data is sent to us)."
1673
  msgstr ""
1674
 
1675
- #: src/addons/onedrive.php:1157, src/methods/dropbox.php:586, src/methods/googledrive.php:1214
1676
  msgid "this privacy policy"
1677
  msgstr ""
1678
 
1679
- #: src/addons/onedrive.php:1178
1680
  msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here."
1681
  msgstr ""
1682
 
1683
- #: src/addons/onedrive.php:1186, src/restorer.php:1083
1684
  msgid "folder"
1685
  msgstr ""
1686
 
1687
- #: src/addons/onedrive.php:1188
1688
  msgid "N.B. %s is not case-sensitive."
1689
  msgstr ""
1690
 
1691
- #: src/addons/onedrive.php:1193
1692
  msgid "Account type"
1693
  msgstr ""
1694
 
1695
- #: src/addons/onedrive.php:1196
1696
  msgid "OneDrive International"
1697
  msgstr ""
1698
 
1699
- #: src/addons/onedrive.php:1197
1700
  msgid "OneDrive Germany"
1701
  msgstr ""
1702
 
1703
- #: src/addons/onedrive.php:1205, src/methods/dropbox.php:611
1704
  msgid "Authenticate with %s"
1705
  msgstr ""
1706
 
1707
- #: src/addons/onedrive.php:1212, src/methods/dropbox.php:615
1708
  msgid "(You appear to be already authenticated)."
1709
  msgstr ""
1710
 
@@ -1712,7 +1716,7 @@ msgstr ""
1712
  msgid "Your label for this backup (optional)"
1713
  msgstr ""
1714
 
1715
- #: src/addons/reporting.php:86, src/addons/reporting.php:195, src/backup.php:1134, src/class-updraftplus.php:3940
1716
  msgid "Backup of:"
1717
  msgstr ""
1718
 
@@ -1720,107 +1724,107 @@ msgstr ""
1720
  msgid "%d errors, %d warnings"
1721
  msgstr ""
1722
 
1723
- #: src/addons/reporting.php:180
1724
  msgid "%d hours, %d minutes, %d seconds"
1725
  msgstr ""
1726
 
1727
- #: src/addons/reporting.php:185
1728
  msgid "Backup Report"
1729
  msgstr ""
1730
 
1731
- #: src/addons/reporting.php:186
1732
  msgid "Backup made by %s"
1733
  msgstr ""
1734
 
1735
- #: src/addons/reporting.php:196, src/backup.php:1137
1736
  msgid "Latest status:"
1737
  msgstr ""
1738
 
1739
- #: src/addons/reporting.php:197
1740
  msgid "Backup began:"
1741
  msgstr ""
1742
 
1743
- #: src/addons/reporting.php:209
1744
  msgid "Errors / warnings:"
1745
  msgstr ""
1746
 
1747
- #: src/addons/reporting.php:212
1748
  msgid "Errors"
1749
  msgstr ""
1750
 
1751
- #: src/addons/reporting.php:227
1752
  msgid "Warnings"
1753
  msgstr ""
1754
 
1755
- #: src/addons/reporting.php:232
1756
  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."
1757
  msgstr ""
1758
 
1759
- #: src/addons/reporting.php:236
1760
  msgid "Time taken:"
1761
  msgstr ""
1762
 
1763
- #: src/addons/reporting.php:237, src/admin.php:3993
1764
  msgid "Uploaded to:"
1765
  msgstr ""
1766
 
1767
- #: src/addons/reporting.php:279, src/backup.php:1087
1768
  msgid "The log file has been attached to this email."
1769
  msgstr ""
1770
 
1771
- #: src/addons/reporting.php:282
1772
  msgid "Debugging information"
1773
  msgstr ""
1774
 
1775
- #: src/addons/reporting.php:406
1776
  msgid "Use the \"Reporting\" section to configure the email addresses to be used."
1777
  msgstr ""
1778
 
1779
- #: src/addons/reporting.php:454
1780
  msgid "Email reports"
1781
  msgstr ""
1782
 
1783
- #: src/addons/reporting.php:480
1784
  msgid "Enter addresses here to have a report sent to them when a backup job finishes."
1785
  msgstr ""
1786
 
1787
- #: src/addons/reporting.php:495
1788
  msgid "Add another address..."
1789
  msgstr ""
1790
 
1791
- #: src/addons/reporting.php:509
1792
  msgid "Log all messages to syslog"
1793
  msgstr ""
1794
 
1795
- #: src/addons/reporting.php:510
1796
  msgid "Log all messages to syslog (only server admins are likely to want this)"
1797
  msgstr ""
1798
 
1799
- #: src/addons/reporting.php:537, src/admin.php:798
1800
  msgid "To send to more than one address, separate each address with a comma."
1801
  msgstr ""
1802
 
1803
- #: src/addons/reporting.php:539, src/admin.php:792
1804
  msgid "Send a report only when there are warnings/errors"
1805
  msgstr ""
1806
 
1807
- #: src/addons/reporting.php:541, src/addons/reporting.php:541, src/addons/reporting.php:543, src/methods/email.php:100
1808
  msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive."
1809
  msgstr ""
1810
 
1811
- #: src/addons/reporting.php:541, src/admin.php:793
1812
  msgid "When the Email storage method is enabled, also send the backup"
1813
  msgstr ""
1814
 
1815
- #: src/addons/reporting.php:543
1816
  msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive as a result UpdraftPlus will only send Database backups to email."
1817
  msgstr ""
1818
 
1819
- #: src/addons/reporting.php:543
1820
  msgid "Use this option to only send database backups when sending to email, and skip other components."
1821
  msgstr ""
1822
 
1823
- #: src/addons/reporting.php:543, src/admin.php:796
1824
  msgid "Only email the database backup"
1825
  msgstr ""
1826
 
@@ -1864,7 +1868,7 @@ msgstr ""
1864
  msgid "AWS authentication failed"
1865
  msgstr ""
1866
 
1867
- #: src/addons/s3-enhanced.php:188, src/methods/openstack2.php:150, src/methods/s3.php:1135
1868
  msgid "Region"
1869
  msgstr ""
1870
 
@@ -1872,7 +1876,7 @@ msgstr ""
1872
  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)."
1873
  msgstr ""
1874
 
1875
- #: src/addons/s3-enhanced.php:215, src/methods/s3.php:1143
1876
  msgid "The error reported by %s was:"
1877
  msgstr ""
1878
 
@@ -2064,7 +2068,7 @@ msgstr ""
2064
  msgid "Fingerprints don't match."
2065
  msgstr ""
2066
 
2067
- #: src/addons/sftp.php:141, src/addons/sftp.php:153, src/methods/cloudfiles.php:147, src/methods/cloudfiles.php:189, src/methods/openstack-base.php:81, src/methods/openstack-base.php:315, src/methods/s3.php:376, src/methods/s3.php:388, src/methods/s3.php:389
2068
  msgid "%s Error: Failed to upload"
2069
  msgstr ""
2070
 
@@ -2189,7 +2193,7 @@ msgstr ""
2189
  msgid "Path"
2190
  msgstr ""
2191
 
2192
- #: src/addons/wp-cli.php:91, src/addons/wp-cli.php:510, src/addons/wp-cli.php:632, src/addons/wp-cli.php:720, src/addons/wp-cli.php:743
2193
  msgid "The given value for the '%s' option is not valid"
2194
  msgstr ""
2195
 
@@ -2233,27 +2237,27 @@ msgstr ""
2233
  msgid "Latest full backup found; identifier:"
2234
  msgstr ""
2235
 
2236
- #: src/addons/wp-cli.php:430, src/admin.php:4027, src/admin.php:4075
2237
  msgid "unknown source"
2238
  msgstr ""
2239
 
2240
- #: src/addons/wp-cli.php:432, src/admin.php:4033
2241
  msgid "Database (created by %s)"
2242
  msgstr ""
2243
 
2244
- #: src/addons/wp-cli.php:438, src/admin.php:4035
2245
  msgid "External database"
2246
  msgstr ""
2247
 
2248
- #: src/addons/wp-cli.php:450, src/admin.php:4079
2249
  msgid "Files and database WordPress backup (created by %s)"
2250
  msgstr ""
2251
 
2252
- #: src/addons/wp-cli.php:450, src/admin.php:4079
2253
  msgid "Files backup (created by %s)"
2254
  msgstr ""
2255
 
2256
- #: src/addons/wp-cli.php:519, src/admin.php:818, src/class-updraftplus.php:1298, src/class-updraftplus.php:1342, src/includes/class-filesystem-functions.php:380, src/includes/class-storage-methods-interface.php:324, src/methods/addon-base-v2.php:93, src/methods/addon-base-v2.php:98, src/methods/addon-base-v2.php:205, src/methods/addon-base-v2.php:225, src/methods/stream-base.php:219, src/restorer.php:2884, src/restorer.php:2909, src/restorer.php:2990, src/updraftplus.php:157
2257
  msgid "Error"
2258
  msgstr ""
2259
 
@@ -2269,43 +2273,27 @@ msgstr ""
2269
  msgid "No such backup set exists"
2270
  msgstr ""
2271
 
2272
- #: src/addons/wp-cli.php:648, src/admin.php:4498
2273
  msgid "UpdraftPlus Restoration: Progress"
2274
  msgstr ""
2275
 
2276
- #: src/addons/wp-cli.php:665, src/admin.php:4510
2277
  msgid "Follow this link to download the log file for this restoration (needed for any support requests)."
2278
  msgstr ""
2279
 
2280
- #: src/addons/wp-cli.php:666
2281
  msgid "Run this command to see the log file for this restoration (needed for any support requests)."
2282
  msgstr ""
2283
 
2284
- #: src/addons/wp-cli.php:740, src/addons/wp-cli.php:744
2285
  msgid "This is not an incremental backup"
2286
  msgstr ""
2287
 
2288
- #: src/addons/wp-cli.php:785, src/admin.php:4572
2289
- msgid "Final checks"
2290
- msgstr ""
2291
-
2292
- #: src/addons/wp-cli.php:794
2293
- msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old)."
2294
- msgstr ""
2295
-
2296
- #: src/addons/wp-cli.php:798, src/admin.php:816, src/admin.php:4588
2297
- msgid "Error data:"
2298
- msgstr ""
2299
-
2300
- #: src/addons/wp-cli.php:801, src/admin.php:4590, src/admin.php:5346, src/methods/openstack2.php:144, src/templates/wp-admin/settings/downloading-and-restoring.php:27, src/templates/wp-admin/settings/tab-backups.php:27, src/templates/wp-admin/settings/updraftcentral-connect.php:14
2301
- msgid "Follow this link for more information"
2302
- msgstr ""
2303
-
2304
- #: src/addons/wp-cli.php:835
2305
  msgid "You have given the %1$s option. The %1$s is working with \"%2$s\" addon. Get the \"%2$s\" addon: %3$s"
2306
  msgstr ""
2307
 
2308
- #: src/addons/wp-cli.php:908, src/admin.php:4468
2309
  msgid "Why am I seeing this?"
2310
  msgstr ""
2311
 
@@ -2321,11 +2309,11 @@ msgstr ""
2321
  msgid "At the same time as the files backup"
2322
  msgstr ""
2323
 
2324
- #: src/admin.php:334, src/admin.php:5163, src/templates/wp-admin/settings/take-backup.php:24
2325
  msgid "Files"
2326
  msgstr ""
2327
 
2328
- #: src/admin.php:334, src/backup.php:1043
2329
  msgid "Files and database"
2330
  msgstr ""
2331
 
@@ -2349,15 +2337,15 @@ msgstr ""
2349
  msgid "Backup"
2350
  msgstr ""
2351
 
2352
- #: src/admin.php:671, src/admin.php:2828
2353
  msgid "Migrate / Clone"
2354
  msgstr ""
2355
 
2356
- #: src/admin.php:679, src/admin.php:1092, src/admin.php:2829
2357
  msgid "Settings"
2358
  msgstr ""
2359
 
2360
- #: src/admin.php:687, src/admin.php:2830
2361
  msgid "Advanced Tools"
2362
  msgstr ""
2363
 
@@ -2429,15 +2417,19 @@ msgstr ""
2429
  msgid "Error: the server sent us a response which we did not understand."
2430
  msgstr ""
2431
 
2432
- #: src/admin.php:819, src/admin.php:1920, src/includes/deprecated-actions.php:29, src/templates/wp-admin/settings/downloading-and-restoring.php:21, src/templates/wp-admin/settings/tab-backups.php:21, src/templates/wp-admin/settings/tab-backups.php:44
 
 
 
 
2433
  msgid "Existing Backups"
2434
  msgstr ""
2435
 
2436
- #: src/admin.php:820, src/admin.php:2212
2437
  msgid "File ready."
2438
  msgstr ""
2439
 
2440
- #: src/admin.php:821, src/admin.php:2543, src/admin.php:2553, src/admin.php:2562, src/admin.php:2604, src/admin.php:3435, src/templates/wp-admin/settings/existing-backups-table.php:19, src/templates/wp-admin/settings/existing-backups-table.php:137
2441
  msgid "Actions"
2442
  msgstr ""
2443
 
@@ -2465,7 +2457,7 @@ msgstr ""
2465
  msgid "PHP information"
2466
  msgstr ""
2467
 
2468
- #: src/admin.php:828, src/admin.php:3150
2469
  msgid "Delete Old Directories"
2470
  msgstr ""
2471
 
@@ -2525,7 +2517,7 @@ msgstr ""
2525
  msgid "Backup Now"
2526
  msgstr ""
2527
 
2528
- #: src/admin.php:844, src/admin.php:3463, src/admin.php:3497, src/admin.php:4270, src/includes/class-remote-send.php:544, src/templates/wp-admin/settings/existing-backups-table.php:153, src/templates/wp-admin/settings/file-backup-exclude.php:11
2529
  msgid "Delete"
2530
  msgstr ""
2531
 
@@ -2533,7 +2525,7 @@ msgstr ""
2533
  msgid "Create"
2534
  msgstr ""
2535
 
2536
- #: src/admin.php:846, src/admin.php:4250
2537
  msgid "Upload"
2538
  msgstr ""
2539
 
@@ -2545,7 +2537,7 @@ msgstr ""
2545
  msgid "Close"
2546
  msgstr ""
2547
 
2548
- #: src/admin.php:851, src/admin.php:3701
2549
  msgid "Download log file"
2550
  msgstr ""
2551
 
@@ -2557,7 +2549,7 @@ msgstr ""
2557
  msgid "Saving..."
2558
  msgstr ""
2559
 
2560
- #: src/admin.php:855, src/admin.php:2908, src/methods/updraftvault.php:319, src/methods/updraftvault.php:362, src/templates/wp-admin/settings/temporary-clone.php:82
2561
  msgid "Connect"
2562
  msgstr ""
2563
 
@@ -2565,7 +2557,7 @@ msgstr ""
2565
  msgid "Connecting..."
2566
  msgstr ""
2567
 
2568
- #: src/admin.php:857, src/methods/updraftvault.php:392, src/methods/updraftvault.php:450
2569
  msgid "Disconnect"
2570
  msgstr ""
2571
 
@@ -2597,7 +2589,7 @@ msgstr ""
2597
  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."
2598
  msgstr ""
2599
 
2600
- #: src/admin.php:865, src/includes/class-remote-send.php:514
2601
  msgid "Send to site:"
2602
  msgstr ""
2603
 
@@ -2629,7 +2621,7 @@ msgstr ""
2629
  msgid "Testing connection..."
2630
  msgstr ""
2631
 
2632
- #: src/admin.php:874, src/includes/class-remote-send.php:358, src/includes/class-remote-send.php:520
2633
  msgid "Send"
2634
  msgstr ""
2635
 
@@ -2721,7 +2713,7 @@ msgstr ""
2721
  msgid "Complete"
2722
  msgstr ""
2723
 
2724
- #: src/admin.php:905, src/admin.php:3208
2725
  msgid "The backup has finished running"
2726
  msgstr ""
2727
 
@@ -2905,810 +2897,814 @@ msgstr ""
2905
  msgid "Add-Ons / Pro Support"
2906
  msgstr ""
2907
 
2908
- #: src/admin.php:1135
2909
  msgid "An error occurred when fetching storage module options: "
2910
  msgstr ""
2911
 
2912
- #: src/admin.php:1140, src/includes/class-commands.php:466, src/templates/wp-admin/settings/take-backup.php:13
2913
  msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)."
2914
  msgstr ""
2915
 
2916
- #: src/admin.php:1145
2917
  msgid "Welcome to UpdraftPlus!"
2918
  msgstr ""
2919
 
2920
- #: src/admin.php:1145
2921
  msgid "To make a backup, just press the Backup Now button."
2922
  msgstr ""
2923
 
2924
- #: src/admin.php:1145
2925
  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."
2926
  msgstr ""
2927
 
2928
- #: src/admin.php:1149, src/class-updraftplus.php:848
2929
  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)"
2930
  msgstr ""
2931
 
2932
- #: src/admin.php:1153
2933
  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."
2934
  msgstr ""
2935
 
2936
- #: src/admin.php:1157
2937
  msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue."
2938
  msgstr ""
2939
 
2940
- #: src/admin.php:1161
2941
  msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress."
2942
  msgstr ""
2943
 
2944
- #: src/admin.php:1165
2945
  msgid "Your website is hosted using the %s web server."
2946
  msgstr ""
2947
 
2948
- #: src/admin.php:1165
2949
  msgid "Please consult this FAQ if you have problems backing up."
2950
  msgstr ""
2951
 
2952
- #: src/admin.php:1169
2953
  msgid "Notice"
2954
  msgstr ""
2955
 
2956
- #: src/admin.php:1169
2957
  msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request."
2958
  msgstr ""
2959
 
2960
- #: src/admin.php:1174
2961
  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."
2962
  msgstr ""
2963
 
2964
- #: src/admin.php:1174
2965
  msgid "Read this page for a guide to possible causes and how to fix it."
2966
  msgstr ""
2967
 
2968
- #: src/admin.php:1194, src/admin.php:1215, src/admin.php:1234, src/class-updraftplus.php:584, src/class-updraftplus.php:619, src/class-updraftplus.php:624, src/class-updraftplus.php:629
2969
  msgid "UpdraftPlus notice:"
2970
  msgstr ""
2971
 
2972
- #: src/admin.php:1194
2973
  msgid "%s has been chosen for remote storage, but you are not currently connected."
2974
  msgstr ""
2975
 
2976
- #: src/admin.php:1194
2977
  msgid "Go to the remote storage settings in order to connect."
2978
  msgstr ""
2979
 
2980
- #: src/admin.php:1336, src/admin.php:1346
2981
  msgid "Error: invalid path"
2982
  msgstr ""
2983
 
2984
- #: src/admin.php:1697, src/includes/class-wpadmin-commands.php:506
2985
  msgid "Backup set not found"
2986
  msgstr ""
2987
 
2988
- #: src/admin.php:1783
2989
  msgid "Did not know how to delete from this cloud service."
2990
  msgstr ""
2991
 
2992
- #: src/admin.php:1864
2993
  msgid "Backup sets removed:"
2994
  msgstr ""
2995
 
2996
- #: src/admin.php:1865
2997
  msgid "Local files deleted:"
2998
  msgstr ""
2999
 
3000
- #: src/admin.php:1866
3001
  msgid "Remote files deleted:"
3002
  msgstr ""
3003
 
3004
- #: src/admin.php:1953
3005
  msgid "Job deleted"
3006
  msgstr ""
3007
 
3008
- #: src/admin.php:1961
3009
  msgid "Could not find that job - perhaps it has already finished?"
3010
  msgstr ""
3011
 
3012
- #: src/admin.php:2059, src/admin.php:2080, src/includes/class-commands.php:837
3013
  msgid "Start backup"
3014
  msgstr ""
3015
 
3016
- #: src/admin.php:2059, src/includes/class-commands.php:837
3017
  msgid "OK. You should soon see activity in the \"Last log message\" field below."
3018
  msgstr ""
3019
 
3020
- #: src/admin.php:2142, src/admin.php:2146, src/class-updraftplus.php:619
3021
  msgid "The log file could not be read."
3022
  msgstr ""
3023
 
3024
- #: src/admin.php:2193
3025
  msgid "Download failed"
3026
  msgstr ""
3027
 
3028
- #: src/admin.php:2223
3029
  msgid "Download in progress"
3030
  msgstr ""
3031
 
3032
- #: src/admin.php:2226
3033
  msgid "No local copy present."
3034
  msgstr ""
3035
 
3036
- #: src/admin.php:2280, src/backup.php:1358
3037
  msgid "Backup directory (%s) is not writable, or does not exist."
3038
  msgstr ""
3039
 
3040
- #: src/admin.php:2280
3041
  msgid "You will find more information about this in the Settings section."
3042
  msgstr ""
3043
 
3044
- #: src/admin.php:2317
3045
  msgid "This file could not be uploaded"
3046
  msgstr ""
3047
 
3048
- #: src/admin.php:2332
3049
  msgid "This backup was created by %s, and can be imported."
3050
  msgstr ""
3051
 
3052
- #: src/admin.php:2338
3053
  msgid "Bad filename format - this does not look like a file created by UpdraftPlus"
3054
  msgstr ""
3055
 
3056
- #: src/admin.php:2346
3057
  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?"
3058
  msgstr ""
3059
 
3060
- #: src/admin.php:2438
3061
  msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus"
3062
  msgstr ""
3063
 
3064
- #: src/admin.php:2505, src/admin.php:2514
3065
  msgid "Sufficient information about the in-progress restoration operation could not be found."
3066
  msgstr ""
3067
 
3068
- #: src/admin.php:2595
3069
  msgid "Backup directory could not be created"
3070
  msgstr ""
3071
 
3072
- #: src/admin.php:2602
3073
  msgid "Backup directory successfully created."
3074
  msgstr ""
3075
 
3076
- #: src/admin.php:2620, src/class-updraftplus.php:4035, src/restorer.php:2647
3077
  msgid "Warning:"
3078
  msgstr ""
3079
 
3080
- #: src/admin.php:2620
3081
  msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site."
3082
  msgstr ""
3083
 
3084
- #: src/admin.php:2623
3085
  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."
3086
  msgstr ""
3087
 
3088
- #: src/admin.php:2638
3089
  msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work."
3090
  msgstr ""
3091
 
3092
- #: src/admin.php:2638
3093
  msgid "To fix this problem go here."
3094
  msgstr ""
3095
 
3096
- #: src/admin.php:2640
3097
  msgid "For even more features and personal support, check out "
3098
  msgstr ""
3099
 
3100
- #: src/admin.php:2642
3101
  msgid "Your backup has been restored."
3102
  msgstr ""
3103
 
3104
- #: src/admin.php:2667
3105
  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)."
3106
  msgstr ""
3107
 
3108
- #: src/admin.php:2667
3109
  msgid "Current limit is:"
3110
  msgstr ""
3111
 
3112
- #: src/admin.php:2728
3113
  msgid "Backup Contents And Schedule"
3114
  msgstr ""
3115
 
3116
- #: src/admin.php:2827
3117
  msgid "Backup / Restore"
3118
  msgstr ""
3119
 
3120
- #: src/admin.php:2831
3121
  msgid "Premium / Extensions"
3122
  msgstr ""
3123
 
3124
- #: src/admin.php:2865
3125
  msgid "%s minutes, %s seconds"
3126
  msgstr ""
3127
 
3128
- #: src/admin.php:2867
3129
  msgid "Unfinished restoration"
3130
  msgstr ""
3131
 
3132
- #: src/admin.php:2868
3133
  msgid "You have an unfinished restoration operation, begun %s ago."
3134
  msgstr ""
3135
 
3136
- #: src/admin.php:2873
3137
  msgid "Continue restoration"
3138
  msgstr ""
3139
 
3140
- #: src/admin.php:2874, src/templates/wp-admin/notices/horizontal-notice.php:16, src/templates/wp-admin/notices/horizontal-notice.php:18
3141
  msgid "Dismiss"
3142
  msgstr ""
3143
 
3144
- #: src/admin.php:2895
3145
  msgid "Not yet got an account (it's free)? Go get one!"
3146
  msgstr ""
3147
 
3148
- #: src/admin.php:2906
3149
  msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here."
3150
  msgstr ""
3151
 
3152
- #: src/admin.php:2918, src/includes/class-commands.php:905, src/includes/class-commands.php:953, src/templates/wp-admin/settings/temporary-clone.php:83, src/templates/wp-admin/settings/updraftcentral-connect.php:71
3153
  msgid "Processing"
3154
  msgstr ""
3155
 
3156
- #: src/admin.php:2961
3157
  msgid "Connect with your UpdraftPlus.Com account"
3158
  msgstr ""
3159
 
3160
- #: src/admin.php:2967, src/templates/wp-admin/settings/form-contents.php:255, src/templates/wp-admin/settings/updraftcentral-connect.php:44
3161
  msgid "Email"
3162
  msgstr ""
3163
 
3164
- #: src/admin.php:2982
3165
  msgid "Forgotten your details?"
3166
  msgstr ""
3167
 
3168
- #: src/admin.php:2994
3169
  msgid "Ask WordPress to update UpdraftPlus automatically when an update is available"
3170
  msgstr ""
3171
 
3172
- #: src/admin.php:3016, src/templates/wp-admin/settings/updraftcentral-connect.php:56
3173
  msgid "One Time Password (check your OTP app to get this password)"
3174
  msgstr ""
3175
 
3176
- #: src/admin.php:3086
3177
  msgid "Latest UpdraftPlus.com news:"
3178
  msgstr ""
3179
 
3180
- #: src/admin.php:3113
3181
  msgid "Download most recently modified log file"
3182
  msgstr ""
3183
 
3184
- #: src/admin.php:3144
3185
  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."
3186
  msgstr ""
3187
 
3188
- #: src/admin.php:3208, src/admin.php:4280
3189
  msgid "View Log"
3190
  msgstr ""
3191
 
3192
- #: src/admin.php:3247
3193
  msgid "Backup begun"
3194
  msgstr ""
3195
 
3196
- #: src/admin.php:3252
3197
  msgid "Creating file backup zips"
3198
  msgstr ""
3199
 
3200
- #: src/admin.php:3265
3201
  msgid "Created file backup zips"
3202
  msgstr ""
3203
 
3204
- #: src/admin.php:3270
3205
  msgid "Clone server being provisioned and booted (can take several minutes)"
3206
  msgstr ""
3207
 
3208
- #: src/admin.php:3274
3209
  msgid "Uploading files to remote storage"
3210
  msgstr ""
3211
 
3212
- #: src/admin.php:3275
3213
  msgid "Sending files to remote site"
3214
  msgstr ""
3215
 
3216
- #: src/admin.php:3282
3217
  msgid "(%s%%, file %s of %s)"
3218
  msgstr ""
3219
 
3220
- #: src/admin.php:3287
3221
  msgid "Pruning old backup sets"
3222
  msgstr ""
3223
 
3224
- #: src/admin.php:3291
3225
  msgid "Waiting until scheduled time to retry because of errors"
3226
  msgstr ""
3227
 
3228
- #: src/admin.php:3296
3229
  msgid "Backup finished"
3230
  msgstr ""
3231
 
3232
- #: src/admin.php:3309
3233
  msgid "Created database backup"
3234
  msgstr ""
3235
 
3236
- #: src/admin.php:3320
3237
  msgid "Creating database backup"
3238
  msgstr ""
3239
 
3240
- #: src/admin.php:3322
3241
  msgid "table: %s"
3242
  msgstr ""
3243
 
3244
- #: src/admin.php:3335
3245
  msgid "Encrypting database"
3246
  msgstr ""
3247
 
3248
- #: src/admin.php:3343
3249
  msgid "Encrypted database"
3250
  msgstr ""
3251
 
3252
- #: src/admin.php:3345, src/central/bootstrap.php:444, src/central/bootstrap.php:451, src/methods/updraftvault.php:410, src/methods/updraftvault.php:444, src/methods/updraftvault.php:529
3253
  msgid "Unknown"
3254
  msgstr ""
3255
 
3256
- #: src/admin.php:3362
3257
  msgid "next resumption: %d (after %ss)"
3258
  msgstr ""
3259
 
3260
- #: src/admin.php:3363
3261
  msgid "last activity: %ss ago"
3262
  msgstr ""
3263
 
3264
- #: src/admin.php:3383
3265
  msgid "Job ID: %s"
3266
  msgstr ""
3267
 
3268
- #: src/admin.php:3397, src/admin.php:3687
3269
  msgid "Warning: %s"
3270
  msgstr ""
3271
 
3272
- #: src/admin.php:3417
3273
  msgid "show log"
3274
  msgstr ""
3275
 
3276
- #: src/admin.php:3418
3277
  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."
3278
  msgstr ""
3279
 
3280
- #: src/admin.php:3418
3281
  msgid "stop"
3282
  msgstr ""
3283
 
3284
- #: src/admin.php:3428, src/admin.php:3428
3285
  msgid "Remove old directories"
3286
  msgstr ""
3287
 
3288
- #: src/admin.php:3431
3289
  msgid "Old directories successfully removed."
3290
  msgstr ""
3291
 
3292
- #: src/admin.php:3433
3293
  msgid "Old directory removal failed for some reason. You may want to do this manually."
3294
  msgstr ""
3295
 
3296
- #: src/admin.php:3470, src/admin.php:3505, src/admin.php:3509, src/includes/class-remote-send.php:327, src/includes/class-storage-methods-interface.php:315, src/restorer.php:226, src/restorer.php:2888, src/restorer.php:2993
3297
  msgid "OK"
3298
  msgstr ""
3299
 
3300
- #: src/admin.php:3554
3301
  msgid "The request to the filesystem to create the directory failed."
3302
  msgstr ""
3303
 
3304
- #: src/admin.php:3568
3305
  msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems"
3306
  msgstr ""
3307
 
3308
- #: src/admin.php:3573
3309
  msgid "The folder exists, but your webserver does not have permission to write to it."
3310
  msgstr ""
3311
 
3312
- #: src/admin.php:3573
3313
  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."
3314
  msgstr ""
3315
 
3316
- #: src/admin.php:3675
3317
  msgid "incremental backup; base backup: %s"
3318
  msgstr ""
3319
 
3320
- #: src/admin.php:3705
3321
  msgid "No backup has been completed"
3322
  msgstr ""
3323
 
3324
- #: src/admin.php:3719
3325
  msgctxt "i.e. Non-automatic"
3326
  msgid "Manual"
3327
  msgstr ""
3328
 
3329
- #: src/admin.php:3732
3330
  msgid "Backup directory specified is writable, which is good."
3331
  msgstr ""
3332
 
3333
- #: src/admin.php:3736
3334
  msgid "Backup directory specified does <b>not</b> exist."
3335
  msgstr ""
3336
 
3337
- #: src/admin.php:3738
3338
  msgid "Backup directory specified exists, but is <b>not</b> writable."
3339
  msgstr ""
3340
 
3341
- #: src/admin.php:3740
3342
  msgid "Follow this link to attempt to create the directory and set the permissions"
3343
  msgstr ""
3344
 
3345
- #: src/admin.php:3740
3346
  msgid "or, to reset this option"
3347
  msgstr ""
3348
 
3349
- #: src/admin.php:3740
3350
  msgid "press here"
3351
  msgstr ""
3352
 
3353
- #: src/admin.php:3740
3354
  msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process."
3355
  msgstr ""
3356
 
3357
- #: src/admin.php:3820
3358
  msgid "Your wp-content directory server path: %s"
3359
  msgstr ""
3360
 
3361
- #: src/admin.php:3820
3362
  msgid "Any other directories found inside wp-content"
3363
  msgstr ""
3364
 
3365
- #: src/admin.php:3831
3366
  msgid "Exclude these from"
3367
  msgstr ""
3368
 
3369
- #: src/admin.php:3919
3370
  msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. Ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)."
3371
  msgstr ""
3372
 
3373
- #: src/admin.php:3921
3374
  msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s <strong>requires</strong> Curl+https. Please do not file any support requests; there is no alternative."
3375
  msgstr ""
3376
 
3377
- #: src/admin.php:3924
3378
  msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help."
3379
  msgstr ""
3380
 
3381
- #: src/admin.php:3962, src/templates/wp-admin/settings/backupnow-modal.php:60, src/templates/wp-admin/settings/existing-backups-table.php:71, src/templates/wp-admin/settings/existing-backups-table.php:74
3382
  msgid "Only allow this backup to be deleted manually (i.e. keep it even if retention limits are hit)."
3383
  msgstr ""
3384
 
3385
- #: src/admin.php:4010
3386
  msgid "Total backup size:"
3387
  msgstr ""
3388
 
3389
- #: src/admin.php:4076, src/includes/class-wpadmin-commands.php:162, src/restorer.php:1975
3390
  msgid "Backup created by unknown source (%s) - cannot be restored."
3391
  msgstr ""
3392
 
3393
- #: src/admin.php:4105
3394
  msgid "Press here to download or browse"
3395
  msgstr ""
3396
 
3397
- #: src/admin.php:4110
3398
  msgid "(%d archive(s) in set)."
3399
  msgstr ""
3400
 
3401
- #: src/admin.php:4113
3402
  msgid "You appear to be missing one or more archives from this multi-archive set."
3403
  msgstr ""
3404
 
3405
- #: src/admin.php:4141, src/admin.php:4143
3406
  msgid "(Not finished)"
3407
  msgstr ""
3408
 
3409
- #: src/admin.php:4143
3410
  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."
3411
  msgstr ""
3412
 
3413
- #: src/admin.php:4168
3414
  msgid "(backup set imported from remote location)"
3415
  msgstr ""
3416
 
3417
- #: src/admin.php:4171
3418
  msgid "After pressing this button, you will be given the option to choose which components you wish to restore"
3419
  msgstr ""
3420
 
3421
- #: src/admin.php:4250
3422
  msgid "After pressing this button, you can select where to upload your backup from a list of your currently saved remote storage locations"
3423
  msgstr ""
3424
 
3425
- #: src/admin.php:4270
3426
  msgid "Delete this backup set"
3427
  msgstr ""
3428
 
3429
- #: src/admin.php:4490
3430
  msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:"
3431
  msgstr ""
3432
 
3433
- #: src/admin.php:4491
3434
  msgid "Backup does not exist in the backup history"
3435
  msgstr ""
3436
 
3437
- #: src/admin.php:4519
3438
  msgid "ABORT: Could not find the information on which entities to restore."
3439
  msgstr ""
3440
 
3441
- #: src/admin.php:4520
3442
  msgid "If making a request for support, please include this information:"
3443
  msgstr ""
3444
 
3445
- #: src/admin.php:4803
3446
  msgid "Backup won't be sent to any remote storage - none has been saved in the %s"
3447
  msgstr ""
3448
 
3449
- #: src/admin.php:4803
3450
  msgid "settings"
3451
  msgstr ""
3452
 
3453
- #: src/admin.php:4803
3454
  msgid "Not got any remote storage?"
3455
  msgstr ""
3456
 
3457
- #: src/admin.php:4803
3458
  msgid "Check out UpdraftPlus Vault."
3459
  msgstr ""
3460
 
3461
- #: src/admin.php:4805
3462
  msgid "Send this backup to remote storage"
3463
  msgstr ""
3464
 
3465
- #: src/admin.php:4895
3466
  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."
3467
  msgstr ""
3468
 
3469
- #: src/admin.php:4902, src/templates/wp-admin/settings/take-backup.php:51
3470
  msgid "This button is disabled because your backup directory is not writable (see the settings)."
3471
  msgstr ""
3472
 
3473
- #: src/admin.php:4931
3474
  msgid "Your settings have been saved."
3475
  msgstr ""
3476
 
3477
- #: src/admin.php:4936
3478
  msgid "Your settings failed to save. Please refresh the settings page and try again"
3479
  msgstr ""
3480
 
3481
- #: src/admin.php:4984
3482
  msgid "authentication error"
3483
  msgstr ""
3484
 
3485
- #: src/admin.php:4988
3486
  msgid "Remote storage method and instance id are required for authentication."
3487
  msgstr ""
3488
 
3489
- #: src/admin.php:5055
3490
  msgid "Your settings have been wiped."
3491
  msgstr ""
3492
 
3493
- #: src/admin.php:5156
3494
  msgid "Known backups (raw)"
3495
  msgstr ""
3496
 
3497
- #: src/admin.php:5191
3498
  msgid "Options (raw)"
3499
  msgstr ""
3500
 
3501
- #: src/admin.php:5194
3502
  msgid "Value"
3503
  msgstr ""
3504
 
3505
- #: src/admin.php:5346
3506
  msgid "The file %s has a \"byte order mark\" (BOM) at its beginning."
3507
  msgid_plural "The files %s have a \"byte order mark\" (BOM) at their beginning."
3508
  msgstr[0] ""
3509
  msgstr[1] ""
3510
 
3511
- #: src/admin.php:5368, src/admin.php:5372, src/templates/wp-admin/advanced/site-info.php:45, src/templates/wp-admin/advanced/site-info.php:51, src/templates/wp-admin/advanced/site-info.php:58, src/templates/wp-admin/advanced/site-info.php:59
 
 
 
 
3512
  msgid "%s version:"
3513
  msgstr ""
3514
 
3515
- #: src/admin.php:5376
3516
  msgid "Clone region:"
3517
  msgstr ""
3518
 
3519
- #: src/admin.php:5381
3520
  msgid "Forbid non-administrators to login to WordPress on your clone"
3521
  msgstr ""
3522
 
3523
- #: src/admin.php:5404
3524
  msgid "(current version)"
3525
  msgstr ""
3526
 
3527
- #: src/admin.php:5424
3528
  msgid "Your clone has started and will be available at the following URLs once it is ready."
3529
  msgstr ""
3530
 
3531
- #: src/admin.php:5425
3532
  msgid "Front page:"
3533
  msgstr ""
3534
 
3535
- #: src/admin.php:5426
3536
  msgid "Dashboard:"
3537
  msgstr ""
3538
 
3539
- #: src/admin.php:5428, src/admin.php:5431
3540
  msgid "You can find your temporary clone information in your updraftplus.com account here."
3541
  msgstr ""
3542
 
3543
- #: src/admin.php:5430
3544
  msgid "Your clone has started, network information is not yet available but will be displayed here and at your updraftplus.com account once it is ready."
3545
  msgstr ""
3546
 
3547
- #: src/backup.php:189
3548
  msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)"
3549
  msgstr ""
3550
 
3551
- #: src/backup.php:261
3552
  msgid "Could not create %s zip. Consult the log file for more information."
3553
  msgstr ""
3554
 
3555
- #: src/backup.php:450, src/backup.php:2130, src/class-updraftplus.php:2125, src/class-updraftplus.php:2192, src/includes/class-storage-methods-interface.php:364, src/restorer.php:370
3556
  msgid "A PHP exception (%s) has occurred: %s"
3557
  msgstr ""
3558
 
3559
- #: src/backup.php:456, src/backup.php:2139, src/class-updraftplus.php:2134, src/class-updraftplus.php:2199, src/includes/class-storage-methods-interface.php:373, src/restorer.php:384
3560
  msgid "A PHP fatal error (%s) has occurred: %s"
3561
  msgstr ""
3562
 
3563
- #: src/backup.php:1036
3564
  msgid "Full backup"
3565
  msgstr ""
3566
 
3567
- #: src/backup.php:1036
3568
  msgid "Incremental"
3569
  msgstr ""
3570
 
3571
- #: src/backup.php:1041, src/class-updraftplus.php:2996
3572
  msgid "The backup was aborted by the user"
3573
  msgstr ""
3574
 
3575
- #: src/backup.php:1045
3576
  msgid "Files (database backup has not completed)"
3577
  msgstr ""
3578
 
3579
- #: src/backup.php:1045
3580
  msgid "Files only (database was not part of this particular schedule)"
3581
  msgstr ""
3582
 
3583
- #: src/backup.php:1048
3584
  msgid "Database (files backup has not completed)"
3585
  msgstr ""
3586
 
3587
- #: src/backup.php:1048
3588
  msgid "Database only (files were not part of this particular schedule)"
3589
  msgstr ""
3590
 
3591
- #: src/backup.php:1051
3592
  msgid "Unknown/unexpected error - please raise a support request"
3593
  msgstr ""
3594
 
3595
- #: src/backup.php:1060
3596
  msgid "Errors encountered:"
3597
  msgstr ""
3598
 
3599
- #: src/backup.php:1078
3600
  msgid "Warnings encountered:"
3601
  msgstr ""
3602
 
3603
- #: src/backup.php:1093
3604
  msgid "Backed up: %s"
3605
  msgstr ""
3606
 
3607
- #: src/backup.php:1102
3608
  msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news"
3609
  msgstr ""
3610
 
3611
- #: src/backup.php:1102
3612
  msgid "read more at %s"
3613
  msgstr ""
3614
 
3615
- #: src/backup.php:1135
3616
  msgid "WordPress backup is complete"
3617
  msgstr ""
3618
 
3619
- #: src/backup.php:1136
3620
  msgid "Backup contains:"
3621
  msgstr ""
3622
 
3623
- #: src/backup.php:1602
3624
  msgid "database connection attempt failed."
3625
  msgstr ""
3626
 
3627
- #: src/backup.php:1648
3628
  msgid "please wait for the rescheduled attempt"
3629
  msgstr ""
3630
 
3631
- #: src/backup.php:1650
3632
  msgid "No database tables found"
3633
  msgstr ""
3634
 
3635
- #: src/backup.php:1661
3636
  msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail."
3637
  msgstr ""
3638
 
3639
- #: src/backup.php:1739
3640
  msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup"
3641
  msgstr ""
3642
 
3643
- #: src/backup.php:1739
3644
  msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources."
3645
  msgstr ""
3646
 
3647
- #: src/backup.php:1789, src/backup.php:1791
3648
  msgid "The database backup appears to have failed"
3649
  msgstr ""
3650
 
3651
- #: src/backup.php:1789
3652
  msgid "no options or sitemeta table was found"
3653
  msgstr ""
3654
 
3655
- #: src/backup.php:1791
3656
  msgid "the options table was not found"
3657
  msgstr ""
3658
 
3659
- #: src/backup.php:1839
3660
  msgid "Failed to open database file for reading:"
3661
  msgstr ""
3662
 
3663
- #: src/backup.php:1858
3664
  msgid "An error occurred whilst closing the final database file"
3665
  msgstr ""
3666
 
3667
- #: src/backup.php:2171
3668
  msgid "Could not open the backup file for writing"
3669
  msgstr ""
3670
 
3671
- #: src/backup.php:2297
3672
  msgid "Infinite recursion: consult your log for more information"
3673
  msgstr ""
3674
 
3675
- #: src/backup.php:2330
3676
  msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)"
3677
  msgstr ""
3678
 
3679
- #: src/backup.php:2352
3680
  msgid "Failed to open directory (check the file permissions and ownership): %s"
3681
  msgstr ""
3682
 
3683
- #: src/backup.php:2417
3684
  msgid "%s: unreadable file - could not be backed up"
3685
  msgstr ""
3686
 
3687
- #: src/backup.php:3096, src/backup.php:3379
3688
  msgid "Failed to open the zip file (%s) - %s"
3689
  msgstr ""
3690
 
3691
- #: src/backup.php:3122
3692
  msgid "A very large file was encountered: %s (size: %s Mb)"
3693
  msgstr ""
3694
 
3695
- #: src/backup.php:3423, src/class-updraftplus.php:861
3696
  msgid "Your free space in your hosting account is very low - only %s Mb remain"
3697
  msgstr ""
3698
 
3699
- #: src/backup.php:3430
3700
  msgid "The zip engine returned the message: %s."
3701
  msgstr ""
3702
 
3703
- #: src/backup.php:3432
3704
  msgid "A zip error occurred"
3705
  msgstr ""
3706
 
3707
- #: src/backup.php:3434
3708
  msgid "your web hosting account appears to be full; please see: %s"
3709
  msgstr ""
3710
 
3711
- #: src/backup.php:3436
3712
  msgid "check your log for more details."
3713
  msgstr ""
3714
 
@@ -3876,7 +3872,7 @@ msgstr ""
3876
  msgid "More information..."
3877
  msgstr ""
3878
 
3879
- #: src/central/bootstrap.php:570, src/methods/updraftvault.php:354, src/methods/updraftvault.php:368, src/templates/wp-admin/settings/exclude-settings-modal/exclude-panel-heading.php:4
3880
  msgid "Back..."
3881
  msgstr ""
3882
 
@@ -3892,7 +3888,7 @@ msgstr ""
3892
  msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard."
3893
  msgstr ""
3894
 
3895
- #: src/central/bootstrap.php:597, src/methods/updraftvault.php:322, src/methods/updraftvault.php:351
3896
  msgid "Read more about it here."
3897
  msgstr ""
3898
 
@@ -4000,175 +3996,175 @@ msgstr ""
4000
  msgid "Could not save backup history because we have no backup array. Backup probably failed."
4001
  msgstr ""
4002
 
4003
- #: src/class-updraftplus.php:3857, src/includes/class-updraftplus-encryption.php:336, src/restorer.php:768
4004
  msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered."
4005
  msgstr ""
4006
 
4007
- #: src/class-updraftplus.php:3859
4008
  msgid "Decryption failed. The database file is encrypted."
4009
  msgstr ""
4010
 
4011
- #: src/class-updraftplus.php:3869, src/includes/class-updraftplus-encryption.php:354, src/restorer.php:781
4012
  msgid "Decryption failed. The most likely cause is that you used the wrong key."
4013
  msgstr ""
4014
 
4015
- #: src/class-updraftplus.php:3876
4016
  msgid "The database is too small to be a valid WordPress database (size: %s Kb)."
4017
  msgstr ""
4018
 
4019
- #: src/class-updraftplus.php:3884
4020
  msgid "Failed to open database file."
4021
  msgstr ""
4022
 
4023
- #: src/class-updraftplus.php:3940
4024
  msgid "(version: %s)"
4025
  msgstr ""
4026
 
4027
- #: src/class-updraftplus.php:3953
4028
  msgid "The website address in the backup set (%s) is slightly different from that of the site now (%s). This is not expected to be a problem for restoring the site, as long as visits to the former address still reach the site."
4029
  msgstr ""
4030
 
4031
- #: src/class-updraftplus.php:3958
4032
  msgid "This backup set is of this site, but at the time of the backup you were using %s, whereas the site now uses %s."
4033
  msgstr ""
4034
 
4035
- #: src/class-updraftplus.php:3960
4036
  msgid "This restoration will work if you still have an SSL certificate (i.e. can use https) to access the site. Otherwise, you will want to use %s to search/replace the site address so that the site can be visited without https."
4037
  msgstr ""
4038
 
4039
- #: src/class-updraftplus.php:3960, src/class-updraftplus.php:3962
4040
  msgid "the migrator add-on"
4041
  msgstr ""
4042
 
4043
- #: src/class-updraftplus.php:3962
4044
  msgid "As long as your web hosting allows http (i.e. non-SSL access) or will forward requests to https (which is almost always the case), this is no problem. If that is not yet set up, then you should set it up, or use %s so that the non-https links are automatically replaced."
4045
  msgstr ""
4046
 
4047
- #: src/class-updraftplus.php:3971, src/class-updraftplus.php:3991
4048
  msgid "This backup set is from a different site (%s) - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work."
4049
  msgstr ""
4050
 
4051
- #: src/class-updraftplus.php:3974
4052
  msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information"
4053
  msgstr ""
4054
 
4055
- #: src/class-updraftplus.php:3979, src/restorer.php:1446
4056
  msgid "You are using the %s webserver, but do not seem to have the %s module loaded."
4057
  msgstr ""
4058
 
4059
- #: src/class-updraftplus.php:3979, src/restorer.php:1446
4060
  msgid "You should enable %s to make any pretty permalinks (e.g. %s) work"
4061
  msgstr ""
4062
 
4063
- #: src/class-updraftplus.php:4000, src/class-updraftplus.php:4007
4064
  msgid "%s version: %s"
4065
  msgstr ""
4066
 
4067
- #: src/class-updraftplus.php:4001
4068
  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."
4069
  msgstr ""
4070
 
4071
- #: src/class-updraftplus.php:4008
4072
  msgid "The site in this backup was running on a webserver with version %s of %s. "
4073
  msgstr ""
4074
 
4075
- #: src/class-updraftplus.php:4008
4076
  msgid "This is significantly newer than the server which you are now restoring onto (version %s)."
4077
  msgstr ""
4078
 
4079
- #: src/class-updraftplus.php:4008
4080
  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."
4081
  msgstr ""
4082
 
4083
- #: src/class-updraftplus.php:4008
4084
  msgid "Any support requests to do with %s should be raised with your web hosting company."
4085
  msgstr ""
4086
 
4087
- #: src/class-updraftplus.php:4013, src/restorer.php:2215, src/restorer.php:2304, src/restorer.php:2330
4088
  msgid "Old table prefix:"
4089
  msgstr ""
4090
 
4091
- #: src/class-updraftplus.php:4016
4092
  msgid "Backup label:"
4093
  msgstr ""
4094
 
4095
- #: src/class-updraftplus.php:4024, src/class-updraftplus.php:4027, src/restorer.php:530
4096
  msgid "You are running on WordPress multisite - but your backup is not of a multisite site."
4097
  msgstr ""
4098
 
4099
- #: src/class-updraftplus.php:4027
4100
  msgid "It will be imported as a new site."
4101
  msgstr ""
4102
 
4103
- #: src/class-updraftplus.php:4027
4104
  msgid "Please read this link for important information on this process."
4105
  msgstr ""
4106
 
4107
- #: src/class-updraftplus.php:4031, src/restorer.php:2227
4108
  msgid "To import an ordinary WordPress site into a multisite installation requires %s."
4109
  msgstr ""
4110
 
4111
- #: src/class-updraftplus.php:4035
4112
  msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible."
4113
  msgstr ""
4114
 
4115
- #: src/class-updraftplus.php:4035
4116
  msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite."
4117
  msgstr ""
4118
 
4119
- #: src/class-updraftplus.php:4042, src/restorer.php:2233
4120
  msgid "Site information:"
4121
  msgstr ""
4122
 
4123
- #: src/class-updraftplus.php:4102
4124
  msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on."
4125
  msgstr ""
4126
 
4127
- #: src/class-updraftplus.php:4102
4128
  msgid "You must upgrade MySQL to be able to use this database."
4129
  msgstr ""
4130
 
4131
- #: src/class-updraftplus.php:4123
4132
  msgid "The database server that this WordPress site is running on doesn't support the character set (%s) which you are trying to import."
4133
  msgid_plural "The database server that this WordPress site is running on doesn't support the character sets (%s) which you are trying to import."
4134
  msgstr[0] ""
4135
  msgstr[1] ""
4136
 
4137
- #: src/class-updraftplus.php:4123
4138
  msgid "You can choose another suitable character set instead and continue with the restoration at your own risk."
4139
  msgstr ""
4140
 
4141
- #: src/class-updraftplus.php:4133
4142
  msgid "Your chosen character set to use instead:"
4143
  msgstr ""
4144
 
4145
- #: src/class-updraftplus.php:4157
4146
  msgid "The database server that this WordPress site is running on doesn't support the collation (%s) used in the database which you are trying to import."
4147
  msgid_plural "The database server that this WordPress site is running on doesn't support multiple collations (%s) used in the database which you are trying to import."
4148
  msgstr[0] ""
4149
  msgstr[1] ""
4150
 
4151
- #: src/class-updraftplus.php:4157
4152
  msgid "You can choose another suitable collation instead and continue with the restoration (at your own risk)."
4153
  msgstr ""
4154
 
4155
- #: src/class-updraftplus.php:4180
4156
  msgid "Your chosen replacement collation"
4157
  msgstr ""
4158
 
4159
- #: src/class-updraftplus.php:4203
4160
  msgid "Choose a default for each table"
4161
  msgstr ""
4162
 
4163
- #: src/class-updraftplus.php:4255
4164
  msgid "This database backup is missing core WordPress tables: %s"
4165
  msgstr ""
4166
 
4167
- #: src/class-updraftplus.php:4258
4168
  msgid "This database backup has the following WordPress tables excluded: %s"
4169
  msgstr ""
4170
 
4171
- #: src/class-updraftplus.php:4263
4172
  msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup."
4173
  msgstr ""
4174
 
@@ -4176,7 +4172,7 @@ msgstr ""
4176
  msgid "You have not yet made any backups."
4177
  msgstr ""
4178
 
4179
- #: src/includes/class-backup-history.php:674
4180
  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."
4181
  msgstr ""
4182
 
@@ -4184,7 +4180,7 @@ msgstr ""
4184
  msgid "%s add-on not found"
4185
  msgstr ""
4186
 
4187
- #: src/includes/class-commands.php:793, src/methods/updraftvault.php:630, src/udaddons/options.php:229
4188
  msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com"
4189
  msgstr ""
4190
 
@@ -4212,46 +4208,50 @@ msgstr ""
4212
  msgid "The creation of your data for creating the clone should now begin. N.B. You will be charged one token once the clone is ready. If the clone fails to boot, then no token will be taken."
4213
  msgstr ""
4214
 
4215
- #: src/includes/class-filesystem-functions.php:65, src/templates/wp-admin/advanced/site-info.php:38
4216
  msgid "refresh"
4217
  msgstr ""
4218
 
4219
- #: src/includes/class-filesystem-functions.php:72
4220
  msgid "calculate"
4221
  msgstr ""
4222
 
4223
- #: src/includes/class-filesystem-functions.php:86
4224
  msgid "This is a count of the contents of your Updraft directory"
4225
  msgstr ""
4226
 
4227
- #: src/includes/class-filesystem-functions.php:86, src/templates/wp-admin/advanced/site-info.php:38
4228
  msgid "Web-server disk space in use by UpdraftPlus"
4229
  msgstr ""
4230
 
4231
- #: src/includes/class-filesystem-functions.php:245, src/methods/ftp.php:330
4232
  msgid "Your web server's PHP installation has these functions disabled: %s."
4233
  msgstr ""
4234
 
4235
- #: src/includes/class-filesystem-functions.php:245, src/methods/ftp.php:330, src/restorer.php:2006
4236
  msgid "Your hosting company must enable these functions before %s can work."
4237
  msgstr ""
4238
 
4239
- #: src/includes/class-filesystem-functions.php:245, src/restorer.php:2006
4240
  msgid "restoration"
4241
  msgstr ""
4242
 
4243
- #: src/includes/class-filesystem-functions.php:265
4244
  msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver."
4245
  msgstr ""
4246
 
4247
- #: src/includes/class-filesystem-functions.php:272, src/includes/class-filesystem-functions.php:294
4248
  msgid "The attempt to undo the double-compression failed."
4249
  msgstr ""
4250
 
4251
- #: src/includes/class-filesystem-functions.php:296
4252
  msgid "The attempt to undo the double-compression succeeded."
4253
  msgstr ""
4254
 
 
 
 
 
4255
  #: src/includes/class-remote-send.php:251
4256
  msgid "Backup data will be sent to:"
4257
  msgstr ""
@@ -4280,39 +4280,43 @@ msgstr ""
4280
  msgid "You must copy and paste this key on the sending site now - it cannot be shown again."
4281
  msgstr ""
4282
 
4283
- #: src/includes/class-remote-send.php:454
 
 
 
 
4284
  msgid "key"
4285
  msgstr ""
4286
 
4287
- #: src/includes/class-remote-send.php:464
4288
  msgid "The entered key was the wrong length - please try again."
4289
  msgstr ""
4290
 
4291
- #: src/includes/class-remote-send.php:466, src/includes/class-remote-send.php:468, src/includes/class-remote-send.php:472
4292
  msgid "The entered key was corrupt - please try again."
4293
  msgstr ""
4294
 
4295
- #: src/includes/class-remote-send.php:477
4296
  msgid "The entered key does not belong to a remote site (it belongs to this one)."
4297
  msgstr ""
4298
 
4299
- #: src/includes/class-remote-send.php:493
4300
  msgid "The key was successfully added."
4301
  msgstr ""
4302
 
4303
- #: src/includes/class-remote-send.php:493
4304
  msgid "It is for sending backups to the following site: "
4305
  msgstr ""
4306
 
4307
- #: src/includes/class-remote-send.php:512
4308
  msgid "No receiving sites have yet been added."
4309
  msgstr ""
4310
 
4311
- #: src/includes/class-remote-send.php:532
4312
  msgid "No keys to allow remote sites to send backup data here have yet been created."
4313
  msgstr ""
4314
 
4315
- #: src/includes/class-remote-send.php:541
4316
  msgid "Existing keys"
4317
  msgstr ""
4318
 
@@ -4488,11 +4492,11 @@ msgstr ""
4488
  msgid "Allow only administrators to log in"
4489
  msgstr ""
4490
 
4491
- #: src/includes/updraftplus-login.php:58, src/methods/updraftvault.php:682, src/udaddons/updraftplus-addons.php:971
4492
  msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)"
4493
  msgstr ""
4494
 
4495
- #: src/includes/updraftplus-notices.php:30, src/includes/updraftplus-notices.php:40, src/includes/updraftplus-notices.php:50, src/includes/updraftplus-notices.php:60, src/includes/updraftplus-notices.php:70, src/includes/updraftplus-notices.php:80
4496
  msgid "UpdraftPlus Premium:"
4497
  msgstr ""
4498
 
@@ -4504,151 +4508,151 @@ msgstr ""
4504
  msgid "Enjoy professional, fast, and friendly help whenever you need it with Premium."
4505
  msgstr ""
4506
 
4507
- #: src/includes/updraftplus-notices.php:41, src/templates/wp-admin/settings/tab-addons.php:260
4508
  msgid "UpdraftVault storage"
4509
  msgstr ""
4510
 
4511
- #: src/includes/updraftplus-notices.php:42
4512
  msgid "The ultimately secure and convenient place to store your backups."
4513
  msgstr ""
4514
 
4515
- #: src/includes/updraftplus-notices.php:51
4516
  msgid "enhanced remote storage options"
4517
  msgstr ""
4518
 
4519
- #: src/includes/updraftplus-notices.php:52
4520
  msgid "Enhanced storage options for Dropbox, Google Drive and S3. Plus many more options."
4521
  msgstr ""
4522
 
4523
- #: src/includes/updraftplus-notices.php:61
4524
  msgid "advanced options"
4525
  msgstr ""
4526
 
4527
- #: src/includes/updraftplus-notices.php:62
4528
  msgid "Secure multisite installation, advanced reporting and much more."
4529
  msgstr ""
4530
 
4531
- #: src/includes/updraftplus-notices.php:71
4532
  msgid "secure your backups"
4533
  msgstr ""
4534
 
4535
- #: src/includes/updraftplus-notices.php:72
4536
  msgid "Add SFTP to send your data securely, lock settings and encrypt your database backups for extra security."
4537
  msgstr ""
4538
 
4539
- #: src/includes/updraftplus-notices.php:81
4540
  msgid "easily migrate or clone your site in minutes"
4541
  msgstr ""
4542
 
4543
- #: src/includes/updraftplus-notices.php:82
4544
  msgid "Copy your site to another domain directly. Includes find-and-replace tool for database references."
4545
  msgstr ""
4546
 
4547
- #: src/includes/updraftplus-notices.php:91
4548
  msgid "Introducing UpdraftCentral"
4549
  msgstr ""
4550
 
4551
- #: src/includes/updraftplus-notices.php:92
4552
  msgid "UpdraftCentral is a highly efficient way to manage, update and backup multiple websites from one place."
4553
  msgstr ""
4554
 
4555
- #: src/includes/updraftplus-notices.php:101
4556
- msgid "Like UpdraftPlus and can spare one minute?"
4557
  msgstr ""
4558
 
4559
- #: src/includes/updraftplus-notices.php:102
4560
- msgid "Please help UpdraftPlus by giving a positive review at wordpress.org."
4561
  msgstr ""
4562
 
4563
- #: src/includes/updraftplus-notices.php:111
4564
- msgid "Do you use UpdraftPlus on multiple sites?"
4565
  msgstr ""
4566
 
4567
- #: src/includes/updraftplus-notices.php:112
4568
- msgid "Control all your WordPress installations from one place using UpdraftCentral remote site management!"
4569
  msgstr ""
4570
 
4571
- #: src/includes/updraftplus-notices.php:132
4572
  msgid "UpdraftPlus is on social media - check us out!"
4573
  msgstr ""
4574
 
4575
- #: src/includes/updraftplus-notices.php:133, src/includes/updraftplus-notices.php:134, src/templates/wp-admin/settings/header.php:16
4576
  msgid "Twitter"
4577
  msgstr ""
4578
 
4579
- #: src/includes/updraftplus-notices.php:133, src/includes/updraftplus-notices.php:134
4580
  msgid "Facebook"
4581
  msgstr ""
4582
 
4583
- #: src/includes/updraftplus-notices.php:133, src/includes/updraftplus-notices.php:134
4584
  msgid "Google+"
4585
  msgstr ""
4586
 
4587
- #: src/includes/updraftplus-notices.php:133, src/includes/updraftplus-notices.php:134
4588
  msgid "LinkedIn"
4589
  msgstr ""
4590
 
4591
- #: src/includes/updraftplus-notices.php:141
4592
  msgid "UpdraftPlus Newsletter"
4593
  msgstr ""
4594
 
4595
- #: src/includes/updraftplus-notices.php:142
4596
  msgid "Follow this link to sign up for the UpdraftPlus newsletter."
4597
  msgstr ""
4598
 
4599
- #: src/includes/updraftplus-notices.php:151, src/includes/updraftplus-notices.php:161
4600
  msgid "UpdraftPlus Blog - get up-to-date news and offers"
4601
  msgstr ""
4602
 
4603
- #: src/includes/updraftplus-notices.php:152, src/includes/updraftplus-notices.php:153, src/includes/updraftplus-notices.php:162, src/includes/updraftplus-notices.php:163
4604
  msgid "Blog link"
4605
  msgstr ""
4606
 
4607
- #: src/includes/updraftplus-notices.php:152, src/includes/updraftplus-notices.php:153, src/includes/updraftplus-notices.php:162, src/includes/updraftplus-notices.php:163
4608
  msgid "RSS link"
4609
  msgstr ""
4610
 
4611
- #: src/includes/updraftplus-notices.php:172
4612
  msgid "UpdraftPlus Premium can automatically backup your plugins/themes/database before you update, without you needing to remember."
4613
  msgstr ""
4614
 
4615
- #: src/includes/updraftplus-notices.php:182
4616
  msgid "After you've backed up your database, we recommend you install our WP-Optimize plugin to streamline it for better website performance."
4617
  msgstr ""
4618
 
4619
- #: src/includes/updraftplus-notices.php:193
4620
  msgid "Instant and secure logon with a wave of your phone."
4621
  msgstr ""
4622
 
4623
- #: src/includes/updraftplus-notices.php:193
4624
  msgid "No more forgotten passwords. Find out more about our revolutionary new WordPress plugin"
4625
  msgstr ""
4626
 
4627
- #: src/includes/updraftplus-notices.php:202
4628
  msgid "With Metaslider, you can easily add style and flare with beautifully-designed sliders."
4629
  msgstr ""
4630
 
4631
- #: src/includes/updraftplus-notices.php:212
4632
  msgid "Black Friday - 20% off UpdraftPlus Premium until November 30th"
4633
  msgstr ""
4634
 
4635
- #: src/includes/updraftplus-notices.php:213, src/includes/updraftplus-notices.php:226, src/includes/updraftplus-notices.php:239, src/includes/updraftplus-notices.php:252, src/includes/updraftplus-notices.php:265
4636
  msgid "To benefit, use this discount code:"
4637
  msgstr ""
4638
 
4639
- #: src/includes/updraftplus-notices.php:225
4640
  msgid "Christmas sale - 20% off UpdraftPlus Premium until December 25th"
4641
  msgstr ""
4642
 
4643
- #: src/includes/updraftplus-notices.php:238
4644
  msgid "Happy New Year - 20% off UpdraftPlus Premium until January 14th"
4645
  msgstr ""
4646
 
4647
- #: src/includes/updraftplus-notices.php:251
4648
  msgid "Spring sale - 20% off UpdraftPlus Premium until April 30th"
4649
  msgstr ""
4650
 
4651
- #: src/includes/updraftplus-notices.php:264
4652
  msgid "Summer sale - 20% off UpdraftPlus Premium until July 31st"
4653
  msgstr ""
4654
 
@@ -4875,16 +4879,16 @@ msgstr ""
4875
  msgid "Follow this link to remove these settings for %s."
4876
  msgstr ""
4877
 
4878
- #: src/methods/cloudfiles-new.php:100, src/methods/cloudfiles.php:440, src/methods/openstack-base.php:571, src/methods/s3.php:863
4879
  msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support."
4880
  msgstr ""
4881
 
4882
- #: src/methods/cloudfiles-new.php:100, src/methods/cloudfiles.php:440, src/methods/openstack-base.php:571, src/methods/s3.php:863
4883
  msgid "UpdraftPlus's %s module <strong>requires</strong> %s. Please do not file any support requests; there is no alternative."
4884
  msgstr ""
4885
 
4886
  #: src/methods/cloudfiles-new.php:102, src/methods/cloudfiles.php:446
4887
- msgid "Get your API key <a href=\"https://mycloud.rackspace.com/\">from your Rackspace Cloud console</a> (read instructions <a href=\"http://www.rackspace.com/knowledge_center/article/rackspace-cloud-essentials-1-generating-your-api-key\">here</a>), then pick a container name to use for storage. This container will be created for you if it does not already exist."
4888
  msgstr ""
4889
 
4890
  #: src/methods/cloudfiles-new.php:102, src/methods/cloudfiles.php:446, src/methods/openstack2.php:120
@@ -4911,7 +4915,7 @@ msgstr ""
4911
  msgid "Cloud Files API Key"
4912
  msgstr ""
4913
 
4914
- #: src/methods/cloudfiles-new.php:184, src/methods/cloudfiles.php:519, src/methods/s3.php:1089
4915
  msgid "API key"
4916
  msgstr ""
4917
 
@@ -4975,7 +4979,7 @@ msgstr ""
4975
  msgid "Closing 1st October 2018"
4976
  msgstr ""
4977
 
4978
- #: src/methods/dreamobjects.php:113, src/methods/s3generic.php:104
4979
  msgid "%s end-point"
4980
  msgstr ""
4981
 
@@ -5289,111 +5293,111 @@ msgctxt "\"tenant\" is a term used with OpenStack storage - Google for \"OpenSta
5289
  msgid "tenant"
5290
  msgstr ""
5291
 
5292
- #: src/methods/s3.php:128
5293
  msgid "No settings were found - please go to the Settings tab and check your settings"
5294
  msgstr ""
5295
 
5296
- #: src/methods/s3.php:179, src/methods/s3.php:180, src/methods/s3.php:181, src/methods/s3.php:189, src/methods/s3.php:190, src/methods/s3.php:191
5297
  msgid "%s Error: Failed to initialise"
5298
  msgstr ""
5299
 
5300
- #: src/methods/s3.php:312
5301
  msgid "The required %s PHP module is not installed - ask your web hosting company to enable it"
5302
  msgstr ""
5303
 
5304
- #: src/methods/s3.php:408
5305
  msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details"
5306
  msgstr ""
5307
 
5308
- #: src/methods/s3.php:430
5309
  msgid "%s error: file %s was shortened unexpectedly"
5310
  msgstr ""
5311
 
5312
- #: src/methods/s3.php:440
5313
  msgid "%s chunk %s: upload failed"
5314
  msgstr ""
5315
 
5316
- #: src/methods/s3.php:456
5317
  msgid "%s upload (%s): re-assembly failed (see log for more details)"
5318
  msgstr ""
5319
 
5320
- #: src/methods/s3.php:460
5321
  msgid "%s re-assembly error (%s): (see log file for more)"
5322
  msgstr ""
5323
 
5324
- #: src/methods/s3.php:482
5325
  msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials.1"
5326
  msgstr ""
5327
 
5328
- #: src/methods/s3.php:598, src/methods/s3.php:671, src/methods/s3.php:776
5329
  msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials."
5330
  msgstr ""
5331
 
5332
- #: src/methods/s3.php:759, src/methods/s3.php:769, src/methods/s3.php:805
5333
  msgid "%s Error: Failed to download %s. Check your permissions and credentials."
5334
  msgstr ""
5335
 
5336
- #: src/methods/s3.php:850
5337
  msgid "... and many more!"
5338
  msgstr ""
5339
 
5340
- #: src/methods/s3.php:859
5341
  msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it."
5342
  msgstr ""
5343
 
5344
- #: src/methods/s3.php:869
5345
  msgid "Get your access key and secret key <a href=\"%s\">from your %s console</a>, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist."
5346
  msgstr ""
5347
 
5348
- #: src/methods/s3.php:871
5349
  msgid "If you see errors about SSL certificates, then please go here for help."
5350
  msgstr ""
5351
 
5352
- #: src/methods/s3.php:873
5353
  msgid "Other %s FAQs."
5354
  msgstr ""
5355
 
5356
- #: src/methods/s3.php:923
5357
  msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on."
5358
  msgstr ""
5359
 
5360
- #: src/methods/s3.php:932
5361
  msgid "%s access key"
5362
  msgstr ""
5363
 
5364
- #: src/methods/s3.php:936
5365
  msgid "%s secret key"
5366
  msgstr ""
5367
 
5368
- #: src/methods/s3.php:940
5369
  msgid "%s location"
5370
  msgstr ""
5371
 
5372
- #: src/methods/s3.php:941
5373
  msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath"
5374
  msgstr ""
5375
 
5376
- #: src/methods/s3.php:1093
5377
  msgid "API secret"
5378
  msgstr ""
5379
 
5380
- #: src/methods/s3.php:1144
5381
  msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")"
5382
  msgstr ""
5383
 
5384
- #: src/methods/s3.php:1158
5385
  msgid "The communication with %s was encrypted."
5386
  msgstr ""
5387
 
5388
- #: src/methods/s3.php:1160
5389
  msgid "The communication with %s was not encrypted."
5390
  msgstr ""
5391
 
5392
- #: src/methods/s3.php:1165
5393
  msgid "Please check your access credentials."
5394
  msgstr ""
5395
 
5396
- #: src/methods/s3generic.php:61, src/methods/s3generic.php:72, src/methods/s3generic.php:83
5397
  msgid "S3 (Compatible)"
5398
  msgstr ""
5399
 
@@ -5421,155 +5425,155 @@ msgstr ""
5421
  msgid "UpdraftVault"
5422
  msgstr ""
5423
 
5424
- #: src/methods/updraftvault.php:99
5425
  msgid "Updraft Vault"
5426
  msgstr ""
5427
 
5428
- #: src/methods/updraftvault.php:250
5429
  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."
5430
  msgstr ""
5431
 
5432
- #: src/methods/updraftvault.php:253
5433
  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!"
5434
  msgstr ""
5435
 
5436
- #: src/methods/updraftvault.php:256
5437
  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."
5438
  msgstr ""
5439
 
5440
- #: src/methods/updraftvault.php:261
5441
  msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect."
5442
  msgstr ""
5443
 
5444
- #: src/methods/updraftvault.php:311, src/methods/updraftvault.php:328
5445
  msgid "UpdraftPlus Vault brings you storage that is <strong>reliable, easy to use and a great price</strong>."
5446
  msgstr ""
5447
 
5448
- #: src/methods/updraftvault.php:311, src/methods/updraftvault.php:328
5449
  msgid "Press a button to get started."
5450
  msgstr ""
5451
 
5452
- #: src/methods/updraftvault.php:314
5453
  msgid "First time user?"
5454
  msgstr ""
5455
 
5456
- #: src/methods/updraftvault.php:315
5457
  msgid "Show the options"
5458
  msgstr ""
5459
 
5460
- #: src/methods/updraftvault.php:318
5461
  msgid "Already purchased space?"
5462
  msgstr ""
5463
 
5464
- #: src/methods/updraftvault.php:322, src/methods/updraftvault.php:351
5465
  msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability."
5466
  msgstr ""
5467
 
5468
- #: src/methods/updraftvault.php:322, src/methods/updraftvault.php:351
5469
  msgid "Read the FAQs here."
5470
  msgstr ""
5471
 
5472
- #: src/methods/updraftvault.php:331, src/methods/updraftvault.php:337, src/methods/updraftvault.php:343
5473
  msgid "%s per quarter"
5474
  msgstr ""
5475
 
5476
- #: src/methods/updraftvault.php:332, src/methods/updraftvault.php:338, src/methods/updraftvault.php:344
5477
  msgid "or (annual discount)"
5478
  msgstr ""
5479
 
5480
- #: src/methods/updraftvault.php:333, src/methods/updraftvault.php:339, src/methods/updraftvault.php:345
5481
  msgid "%s per year"
5482
  msgstr ""
5483
 
5484
- #: src/methods/updraftvault.php:348
5485
  msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal."
5486
  msgstr ""
5487
 
5488
- #: src/methods/updraftvault.php:348
5489
  msgid "Subscriptions can be cancelled at any time."
5490
  msgstr ""
5491
 
5492
- #: src/methods/updraftvault.php:358
5493
  msgid "Enter your UpdraftPlus.Com email / password here to connect:"
5494
  msgstr ""
5495
 
5496
- #: src/methods/updraftvault.php:360
5497
  msgid "E-mail"
5498
  msgstr ""
5499
 
5500
- #: src/methods/updraftvault.php:365
5501
  msgid "Don't know your email address, or forgotten your password?"
5502
  msgstr ""
5503
 
5504
- #: src/methods/updraftvault.php:365
5505
  msgid "Go here for help"
5506
  msgstr ""
5507
 
5508
- #: src/methods/updraftvault.php:388, src/methods/updraftvault.php:440
5509
  msgid "This site is <strong>connected</strong> to UpdraftPlus Vault."
5510
  msgstr ""
5511
 
5512
- #: src/methods/updraftvault.php:388, src/methods/updraftvault.php:440
5513
  msgid "Well done - there's nothing more needed to set up."
5514
  msgstr ""
5515
 
5516
- #: src/methods/updraftvault.php:388, src/methods/updraftvault.php:440
5517
  msgid "Vault owner"
5518
  msgstr ""
5519
 
5520
- #: src/methods/updraftvault.php:389, src/methods/updraftvault.php:442
5521
  msgid "Quota:"
5522
  msgstr ""
5523
 
5524
- #: src/methods/updraftvault.php:394, src/methods/updraftvault.php:436
5525
  msgid "You are <strong>not connected</strong> to UpdraftPlus Vault."
5526
  msgstr ""
5527
 
5528
- #: src/methods/updraftvault.php:458
5529
  msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)."
5530
  msgstr ""
5531
 
5532
- #: src/methods/updraftvault.php:458
5533
  msgid "You can get more quota here"
5534
  msgstr ""
5535
 
5536
- #: src/methods/updraftvault.php:463, src/methods/updraftvault.php:479, src/methods/updraftvault.php:523
5537
  msgid "Current use:"
5538
  msgstr ""
5539
 
5540
- #: src/methods/updraftvault.php:466, src/methods/updraftvault.php:482, src/methods/updraftvault.php:484, src/methods/updraftvault.php:542
5541
  msgid "Get more quota"
5542
  msgstr ""
5543
 
5544
- #: src/methods/updraftvault.php:468, src/methods/updraftvault.php:542
5545
  msgid "Refresh current status"
5546
  msgstr ""
5547
 
5548
- #: src/methods/updraftvault.php:656, src/udaddons/updraftplus-addons.php:867
5549
  msgid "You need to supply both an email address and a password"
5550
  msgstr ""
5551
 
5552
- #: src/methods/updraftvault.php:707
5553
  msgid "You do not currently have any UpdraftPlus Vault quota"
5554
  msgstr ""
5555
 
5556
- #: src/methods/updraftvault.php:709, src/methods/updraftvault.php:724, src/udaddons/updraftplus-addons.php:1012
5557
  msgid "UpdraftPlus.Com returned a response, but we could not understand it"
5558
  msgstr ""
5559
 
5560
- #: src/methods/updraftvault.php:715, src/udaddons/updraftplus-addons.php:1001
5561
  msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com."
5562
  msgstr ""
5563
 
5564
- #: src/methods/updraftvault.php:715
5565
  msgid "If you have forgotten your password, then go here to change your password on updraftplus.com."
5566
  msgstr ""
5567
 
5568
- #: src/methods/updraftvault.php:718, src/udaddons/updraftplus-addons.php:1005
5569
  msgid "You entered an email address that was not recognised by UpdraftPlus.Com"
5570
  msgstr ""
5571
 
5572
- #: src/methods/updraftvault.php:721, src/udaddons/updraftplus-addons.php:1008
5573
  msgid "Your email address and password were not recognised by UpdraftPlus.Com"
5574
  msgstr ""
5575
 
@@ -5593,282 +5597,290 @@ msgstr ""
5593
  msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)."
5594
  msgstr ""
5595
 
5596
- #: src/restorer.php:197
 
 
 
 
5597
  msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file."
5598
  msgstr ""
5599
 
5600
- #: src/restorer.php:208
5601
  msgid "Looking for %s archive: file name: %s"
5602
  msgstr ""
5603
 
5604
- #: src/restorer.php:211
5605
  msgid "Skipping: this archive was already restored."
5606
  msgstr ""
5607
 
5608
- #: src/restorer.php:223
5609
  msgid "Archive is expected to be size:"
5610
  msgstr ""
5611
 
5612
- #: src/restorer.php:228
5613
  msgid "file is size:"
5614
  msgstr ""
5615
 
5616
- #: src/restorer.php:231
5617
  msgid "The backup records do not contain information about the proper size of this file."
5618
  msgstr ""
5619
 
5620
- #: src/restorer.php:234, src/restorer.php:235
5621
  msgid "Could not find one of the files for restoration"
5622
  msgstr ""
5623
 
5624
- #: src/restorer.php:396
 
 
 
 
5625
  msgid "Error message"
5626
  msgstr ""
5627
 
5628
- #: src/restorer.php:515
5629
  msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually."
5630
  msgstr ""
5631
 
5632
- #: src/restorer.php:516
5633
  msgid "Backup file not available."
5634
  msgstr ""
5635
 
5636
- #: src/restorer.php:517
5637
  msgid "Copying this entity failed."
5638
  msgstr ""
5639
 
5640
- #: src/restorer.php:518
5641
  msgid "Unpacking backup..."
5642
  msgstr ""
5643
 
5644
- #: src/restorer.php:519
5645
  msgid "Decrypting database (can take a while)..."
5646
  msgstr ""
5647
 
5648
- #: src/restorer.php:520
5649
  msgid "Database successfully decrypted."
5650
  msgstr ""
5651
 
5652
- #: src/restorer.php:521
5653
  msgid "Moving old data out of the way..."
5654
  msgstr ""
5655
 
5656
- #: src/restorer.php:522
5657
  msgid "Moving unpacked backup into place..."
5658
  msgstr ""
5659
 
5660
- #: src/restorer.php:523
5661
  msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..."
5662
  msgstr ""
5663
 
5664
- #: src/restorer.php:524
5665
  msgid "Cleaning up rubbish..."
5666
  msgstr ""
5667
 
5668
- #: src/restorer.php:525
5669
  msgid "Could not move old files out of the way."
5670
  msgstr ""
5671
 
5672
- #: src/restorer.php:525
5673
  msgid "You should check the file ownerships and permissions in your WordPress installation"
5674
  msgstr ""
5675
 
5676
- #: src/restorer.php:526
5677
  msgid "Could not delete old directory."
5678
  msgstr ""
5679
 
5680
- #: src/restorer.php:527
5681
  msgid "Could not move new files into place. Check your wp-content/upgrade folder."
5682
  msgstr ""
5683
 
5684
- #: src/restorer.php:528
5685
  msgid "Could not move the files into place. Check your file permissions."
5686
  msgstr ""
5687
 
5688
- #: src/restorer.php:529
5689
  msgid "Failed to delete working directory after restoring."
5690
  msgstr ""
5691
 
5692
- #: src/restorer.php:531
5693
  msgid "Failed to unpack the archive"
5694
  msgstr ""
5695
 
5696
- #: src/restorer.php:532
5697
  msgid "Failed to read the manifest file from backup."
5698
  msgstr ""
5699
 
5700
- #: src/restorer.php:533
5701
  msgid "Failed to find a manifest file in the backup."
5702
  msgstr ""
5703
 
5704
- #: src/restorer.php:534
5705
  msgid "Failed to read from the working directory."
5706
  msgstr ""
5707
 
5708
- #: src/restorer.php:760
5709
  msgid "Failed to create a temporary directory"
5710
  msgstr ""
5711
 
5712
- #: src/restorer.php:776
5713
  msgid "Failed to write out the decrypted database to the filesystem"
5714
  msgstr ""
5715
 
5716
- #: src/restorer.php:853
5717
  msgid "The directory does not exist"
5718
  msgstr ""
5719
 
5720
- #: src/restorer.php:893
5721
  msgid "wp-config.php from backup: will restore as wp-config-backup.php"
5722
  msgstr ""
5723
 
5724
- #: src/restorer.php:900
5725
  msgid "wp-config.php from backup: restoring (as per user's request)"
5726
  msgstr ""
5727
 
5728
- #: src/restorer.php:1083, src/restorer.php:1091
5729
  msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)"
5730
  msgstr ""
5731
 
5732
- #: src/restorer.php:1091
5733
  msgid "file"
5734
  msgstr ""
5735
 
5736
- #: src/restorer.php:1106
5737
  msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s"
5738
  msgstr ""
5739
 
5740
- #: src/restorer.php:1113
5741
  msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup"
5742
  msgstr ""
5743
 
5744
- #: src/restorer.php:1216
5745
  msgid "Deferring..."
5746
  msgstr ""
5747
 
5748
- #: src/restorer.php:1259, src/restorer.php:1307
5749
  msgid "The WordPress content folder (wp-content) was not found in this zip file."
5750
  msgstr ""
5751
 
5752
- #: src/restorer.php:1400
5753
  msgid "Files found:"
5754
  msgstr ""
5755
 
5756
- #: src/restorer.php:1916
5757
  msgid "Please supply the requested information, and then continue."
5758
  msgstr ""
5759
 
5760
- #: src/restorer.php:1968
5761
  msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method."
5762
  msgstr ""
5763
 
5764
- #: src/restorer.php:1991
5765
  msgid "Failed to find database file"
5766
  msgstr ""
5767
 
5768
- #: src/restorer.php:2012
5769
  msgid "Failed to open database file"
5770
  msgstr ""
5771
 
5772
- #: src/restorer.php:2092, src/restorer.php:2134
5773
  msgid "Your database user does not have permission to drop tables"
5774
  msgstr ""
5775
 
5776
- #: src/restorer.php:2095
5777
  msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site."
5778
  msgstr ""
5779
 
5780
- #: src/restorer.php:2139
5781
  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)"
5782
  msgstr ""
5783
 
5784
- #: src/restorer.php:2185
5785
  msgid "Backup of: %s"
5786
  msgstr ""
5787
 
5788
- #: src/restorer.php:2192
5789
  msgid "Backup created by:"
5790
  msgstr ""
5791
 
5792
- #: src/restorer.php:2197
5793
  msgid "Site home:"
5794
  msgstr ""
5795
 
5796
- #: src/restorer.php:2203
5797
  msgid "Content URL:"
5798
  msgstr ""
5799
 
5800
- #: src/restorer.php:2208
5801
  msgid "Uploads URL:"
5802
  msgstr ""
5803
 
5804
- #: src/restorer.php:2219
5805
  msgid "Skipped tables:"
5806
  msgstr ""
5807
 
5808
- #: src/restorer.php:2259
5809
  msgid "Split line to avoid exceeding maximum packet size"
5810
  msgstr ""
5811
 
5812
- #: src/restorer.php:2284, src/restorer.php:2753, src/restorer.php:2794, src/restorer.php:2807
5813
  msgid "An error occurred on the first %s command - aborting run"
5814
  msgstr ""
5815
 
5816
- #: src/restorer.php:2385
5817
  msgid "Requested table engine (%s) is not present - changing to MyISAM."
5818
  msgstr ""
5819
 
5820
- #: src/restorer.php:2398
5821
  msgid "Requested table character set (%s) is not present - changing to %s."
5822
  msgstr ""
5823
 
5824
- #: src/restorer.php:2448
5825
  msgid "Requested table collation (%1$s) is not present - changing to %2$s."
5826
  msgid_plural "Requested table collations (%1$s) are not present - changing to %2$s."
5827
  msgstr[0] ""
5828
  msgstr[1] ""
5829
 
5830
- #: src/restorer.php:2450
5831
  msgid "Processing table (%s)"
5832
  msgstr ""
5833
 
5834
- #: src/restorer.php:2454
5835
  msgid "will restore as:"
5836
  msgstr ""
5837
 
5838
- #: src/restorer.php:2493
5839
  msgid "Found SET NAMES %s, but changing to %s as suggested by WPDB::determine_charset()."
5840
  msgstr ""
5841
 
5842
- #: src/restorer.php:2499
5843
  msgid "Requested character set (%s) is not present - changing to %s."
5844
  msgstr ""
5845
 
5846
- #: src/restorer.php:2647
5847
  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"
5848
  msgstr ""
5849
 
5850
- #: src/restorer.php:2784
5851
  msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred"
5852
  msgid "An error (%s) occurred:"
5853
  msgstr ""
5854
 
5855
- #: src/restorer.php:2805
5856
  msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database."
5857
  msgstr ""
5858
 
5859
- #: src/restorer.php:2805
5860
  msgid "This database needs to be deployed on MySQL version %s or later."
5861
  msgstr ""
5862
 
5863
- #: src/restorer.php:2807
5864
  msgid "To use this backup, your database server needs to support the %s character set."
5865
  msgstr ""
5866
 
5867
- #: src/restorer.php:2812
5868
  msgid "Too many database errors have occurred - aborting"
5869
  msgstr ""
5870
 
5871
- #: src/restorer.php:2882, src/restorer.php:2957
5872
  msgid "Table prefix has changed: changing %s table field(s) accordingly:"
5873
  msgstr ""
5874
 
@@ -7053,127 +7065,127 @@ msgstr ""
7053
  msgid "Your web server's version of PHP is too old (%s) - 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"
7054
  msgstr ""
7055
 
7056
- #: src/udaddons/options.php:235
7057
  msgid "You are presently <strong>connected</strong> to an UpdraftPlus.Com account."
7058
  msgstr ""
7059
 
7060
- #: src/udaddons/options.php:240
7061
  msgid "If you bought new add-ons, then follow this link to refresh your connection"
7062
  msgstr ""
7063
 
7064
- #: src/udaddons/options.php:241
7065
  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."
7066
  msgstr ""
7067
 
7068
- #: src/udaddons/options.php:244
7069
  msgid "You are presently <strong>not connected</strong> to an UpdraftPlus.Com account."
7070
  msgstr ""
7071
 
7072
- #: src/udaddons/options.php:251
7073
  msgid "Errors occurred when trying to connect to UpdraftPlus.Com:"
7074
  msgstr ""
7075
 
7076
- #: src/udaddons/options.php:297
7077
  msgid "Please wait whilst we make the claim..."
7078
  msgstr ""
7079
 
7080
- #: src/udaddons/options.php:298
7081
  msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?"
7082
  msgstr ""
7083
 
7084
- #: src/udaddons/options.php:299
7085
  msgid "Claim not granted - your account login details were wrong"
7086
  msgstr ""
7087
 
7088
- #: src/udaddons/options.php:300
7089
  msgid "An unknown response was received. Response was:"
7090
  msgstr ""
7091
 
7092
- #: src/udaddons/options.php:301
7093
  msgid "The claim and installation was successful. You can now use your purchase!"
7094
  msgstr ""
7095
 
7096
- #: src/udaddons/options.php:357, src/udaddons/updraftplus-addons.php:315
7097
  msgid "UpdraftPlus Addons"
7098
  msgstr ""
7099
 
7100
- #: src/udaddons/options.php:368
7101
  msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it."
7102
  msgstr ""
7103
 
7104
- #: src/udaddons/options.php:408
7105
  msgid "An error occurred when trying to retrieve your add-ons."
7106
  msgstr ""
7107
 
7108
- #: src/udaddons/options.php:424
7109
  msgid "UpdraftPlus Support"
7110
  msgstr ""
7111
 
7112
- #: src/udaddons/options.php:426
7113
  msgid "Need to get support?"
7114
  msgstr ""
7115
 
7116
- #: src/udaddons/options.php:426
7117
  msgid "Go here"
7118
  msgstr ""
7119
 
7120
- #: src/udaddons/options.php:463, src/udaddons/options.php:463
7121
  msgid "You've got it"
7122
  msgstr ""
7123
 
7124
- #: src/udaddons/options.php:465
7125
  msgid "Your version: %s"
7126
  msgstr ""
7127
 
7128
- #: src/udaddons/options.php:467, src/udaddons/options.php:469
7129
  msgid "latest"
7130
  msgstr ""
7131
 
7132
- #: src/udaddons/options.php:471
7133
  msgid "(apparently a pre-release or withdrawn release)"
7134
  msgstr ""
7135
 
7136
- #: src/udaddons/options.php:477
7137
  msgid "Available for this site (via your all-addons purchase)"
7138
  msgstr ""
7139
 
7140
- #: src/udaddons/options.php:477
7141
  msgid "please follow this link to update the plugin in order to get it"
7142
  msgstr ""
7143
 
7144
- #: src/udaddons/options.php:480
7145
  msgid "Assigned to this site"
7146
  msgstr ""
7147
 
7148
- #: src/udaddons/options.php:480
7149
  msgid "please follow this link to update the plugin in order to activate it"
7150
  msgstr ""
7151
 
7152
- #: src/udaddons/options.php:486
7153
  msgid "Available to claim on this site"
7154
  msgstr ""
7155
 
7156
- #: src/udaddons/options.php:486, src/udaddons/options.php:488
7157
  msgid "activate it on this site"
7158
  msgstr ""
7159
 
7160
- #: src/udaddons/options.php:488
7161
  msgid "You have an inactive purchase"
7162
  msgstr ""
7163
 
7164
- #: src/udaddons/options.php:492
7165
  msgid "Get it from the UpdraftPlus.Com Store"
7166
  msgstr ""
7167
 
7168
- #: src/udaddons/options.php:492
7169
  msgid "(or connect using the form on this page if you have already purchased it)"
7170
  msgstr ""
7171
 
7172
- #: src/udaddons/options.php:493, src/udaddons/options.php:493
7173
  msgid "Buy It"
7174
  msgstr ""
7175
 
7176
- #: src/udaddons/options.php:515
7177
  msgid "Manage Addons"
7178
  msgstr ""
7179
 
1
+ # Copyright (C) 2019 updraftplus
2
  # This file is distributed under the same license as the updraftplus package.
3
  msgid ""
4
  msgstr ""
7
  "MIME-Version: 1.0\n"
8
  "Content-Type: text/plain; charset=UTF-8\n"
9
  "Content-Transfer-Encoding: 8bit\n"
10
+ "PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
11
  "Last-Translator: Team Updraft <mail@example.com>\n"
12
  "Language-Team: Team Updraft <mail@example.com>\n"
13
  "X-Poedit-Basepath: ..\n"
49
  msgid "(logs can be found in the UpdraftPlus settings page as normal)..."
50
  msgstr ""
51
 
52
+ #: src/addons/autobackup.php:344, src/addons/autobackup.php:439, src/admin.php:3078, src/admin.php:3084, src/templates/wp-admin/settings/take-backup.php:69
53
  msgid "Last log message"
54
  msgstr ""
55
 
97
  msgid "now proceeding with the updates..."
98
  msgstr ""
99
 
100
+ #: src/addons/autobackup.php:1072, src/admin.php:978, src/includes/updraftplus-notices.php:178
101
  msgid "Be safe with an automatic backup"
102
  msgstr ""
103
 
117
  msgid "%s Error"
118
  msgstr ""
119
 
120
+ #: src/addons/azure.php:268, src/class-updraftplus.php:3662, src/methods/googledrive.php:1120, src/methods/s3.php:343
121
  msgid "File not found"
122
  msgstr ""
123
 
129
  msgid "Upload failed"
130
  msgstr ""
131
 
132
+ #: src/addons/azure.php:443, src/addons/backblaze.php:528, src/addons/googlecloud.php:843, src/methods/s3.php:1219
133
  msgid "Delete failed:"
134
  msgstr ""
135
 
145
  msgid "You must add the following as the authorised redirect URI in your Azure console (under \"API Settings\") when asked"
146
  msgstr ""
147
 
148
+ #: src/addons/azure.php:601, src/addons/migrator.php:948, src/admin.php:1155, src/admin.php:1159, src/admin.php:1163, src/admin.php:1167, src/admin.php:1171, src/admin.php:1180, src/admin.php:3928, src/admin.php:3935, src/admin.php:3937, src/admin.php:5222, src/methods/cloudfiles-new.php:100, src/methods/cloudfiles.php:440, src/methods/ftp.php:330, src/methods/openstack-base.php:571, src/methods/s3.php:864, src/methods/s3.php:868, src/methods/updraftvault.php:311, src/templates/wp-admin/settings/downloading-and-restoring.php:27, src/templates/wp-admin/settings/tab-backups.php:27, src/udaddons/updraftplus-addons.php:259
149
  msgid "Warning"
150
  msgstr ""
151
 
152
+ #: src/addons/azure.php:601, src/admin.php:3928, src/methods/updraftvault.php:311
153
  msgid "Your web server's PHP installation does not included a <strong>required</strong> (for %s) module (%s). Please contact your web hosting provider's support and ask for them to enable it."
154
  msgstr ""
155
 
157
  msgid "Create Azure credentials in your Azure developer console."
158
  msgstr ""
159
 
160
+ #: src/addons/azure.php:605, src/addons/onedrive.php:1149, src/includes/class-remote-send.php:314
161
  msgid "For longer help, including screenshots, follow this link."
162
  msgstr ""
163
 
201
  msgid "You can enter the path of any %s virtual folder you wish to use here."
202
  msgstr ""
203
 
204
+ #: src/addons/azure.php:638, src/addons/google-enhanced.php:76, src/addons/onedrive.php:1189
205
  msgid "If you leave it blank, then the backup will be placed in the root of your %s"
206
  msgstr ""
207
 
225
  msgid "Azure Government"
226
  msgstr ""
227
 
228
+ #: src/addons/azure.php:647
229
+ msgid "Azure China"
230
+ msgstr ""
231
+
232
+ #: src/addons/backblaze.php:205, src/admin.php:2140
233
  msgid "Error: unexpected file read fail"
234
  msgstr ""
235
 
236
+ #: src/addons/backblaze.php:225, src/addons/cloudfiles-enhanced.php:117, src/addons/migrator.php:893, src/addons/migrator.php:1190, src/addons/migrator.php:1271, src/addons/migrator.php:1320, src/addons/migrator.php:1558, src/addons/s3-enhanced.php:164, src/addons/s3-enhanced.php:169, src/addons/s3-enhanced.php:171, src/addons/sftp.php:911, src/addons/webdav.php:203, src/admin.php:91, src/admin.php:817, src/includes/class-remote-send.php:266, src/includes/class-remote-send.php:293, src/includes/class-remote-send.php:299, src/includes/class-remote-send.php:362, src/includes/class-remote-send.php:421, src/includes/class-remote-send.php:448, src/includes/class-remote-send.php:471, src/includes/class-remote-send.php:481, src/includes/class-remote-send.php:486, src/methods/remotesend.php:74, src/methods/remotesend.php:242, src/methods/remotesend.php:298, src/methods/updraftvault.php:532, src/restorer.php:328, src/restorer.php:356, src/restorer.php:2040
237
  msgid "Error:"
238
  msgstr ""
239
 
249
  msgid "Invalid bucket name"
250
  msgstr ""
251
 
252
+ #: src/addons/backblaze.php:497, src/methods/s3.php:1188
253
  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 %s user may already have taken your name)."
254
  msgstr ""
255
 
449
  msgid "Folder"
450
  msgstr ""
451
 
452
+ #: src/addons/google-enhanced.php:76, src/addons/onedrive.php:1189
453
  msgid "Enter the path of the %s folder you wish to use here."
454
  msgstr ""
455
 
456
+ #: src/addons/google-enhanced.php:76, src/addons/googlecloud.php:1039, src/addons/onedrive.php:1189
457
  msgid "e.g. %s"
458
  msgstr ""
459
 
565
  msgid "Frankfurt"
566
  msgstr ""
567
 
568
+ #: src/addons/googlecloud.php:118, src/addons/googlecloud.php:793, src/methods/s3.php:1162
569
  msgid "Failure: No bucket details were given."
570
  msgstr ""
571
 
601
  msgid "No refresh token was received from Google. This often means that you entered your client secret wrongly, or that you have not yet re-authenticated (below) since correcting it. Re-check it, then follow the link to authenticate again. Finally, if that does not work, then use expert mode to wipe all your settings, create a new Google client ID/secret, and start again."
602
  msgstr ""
603
 
604
+ #: src/addons/googlecloud.php:438, src/addons/migrator.php:590, src/admin.php:2323, src/admin.php:2344, src/admin.php:2352, src/class-updraftplus.php:997, src/class-updraftplus.php:1003, src/class-updraftplus.php:3868, src/class-updraftplus.php:3870, src/class-updraftplus.php:4035, src/class-updraftplus.php:4042, src/class-updraftplus.php:4113, src/methods/googledrive.php:403, src/methods/s3.php:343
605
  msgid "Error: %s"
606
  msgstr ""
607
 
625
  msgid "But no %s settings were found. Please complete all fields in %s settings and save the settings."
626
  msgstr ""
627
 
628
+ #: src/addons/googlecloud.php:698, src/addons/onedrive.php:908, src/addons/onedrive.php:919, src/methods/googledrive.php:442, src/methods/googledrive.php:455
629
  msgid "However, subsequent access attempts failed:"
630
  msgstr ""
631
 
632
+ #: src/addons/googlecloud.php:718, src/addons/googlecloud.php:839, src/addons/onedrive.php:940, src/addons/sftp.php:591, src/addons/sftp.php:595, src/addons/wp-cli.php:516, src/methods/addon-base-v2.php:327, src/methods/cloudfiles.php:575, src/methods/googledrive.php:475, src/methods/openstack-base.php:530, src/methods/s3.php:1202, src/methods/stream-base.php:372
633
  msgid "Success"
634
  msgstr ""
635
 
636
+ #: src/addons/googlecloud.php:718, src/addons/onedrive.php:940, src/methods/googledrive.php:475
637
  msgid "you have authenticated your %s account."
638
  msgstr ""
639
 
645
  msgid "You must save and authenticate before you can test your settings."
646
  msgstr ""
647
 
648
+ #: src/addons/googlecloud.php:776, src/addons/googlecloud.php:810, src/addons/googlecloud.php:816, src/addons/sftp.php:553, src/admin.php:3482, src/admin.php:3518, src/admin.php:3528, src/methods/addon-base-v2.php:313, src/methods/stream-base.php:356
649
  msgid "Failed"
650
  msgstr ""
651
 
652
+ #: src/addons/googlecloud.php:833, src/addons/googlecloud.php:847, src/methods/s3.php:1200, src/methods/s3.php:1212
653
  msgid "Failure"
654
  msgstr ""
655
 
656
+ #: src/addons/googlecloud.php:833, src/addons/googlecloud.php:847, src/methods/s3.php:1200, src/methods/s3.php:1212
657
  msgid "We successfully accessed the bucket, but the attempt to create a file in it failed."
658
  msgstr ""
659
 
660
+ #: src/addons/googlecloud.php:839, src/methods/s3.php:1202
661
  msgid "We accessed the bucket, and were able to create files within it."
662
  msgstr ""
663
 
693
  msgid "You must add the following as the authorized redirect URI (under \"More Options\") when asked"
694
  msgstr ""
695
 
696
+ #: src/addons/googlecloud.php:1019, src/addons/onedrive.php:1178, src/methods/googledrive.php:1233
697
  msgid "Client ID"
698
  msgstr ""
699
 
701
  msgid "If Google later shows you the message \"invalid_client\", then you did not enter a valid client ID here."
702
  msgstr ""
703
 
704
+ #: src/addons/googlecloud.php:1027, src/addons/onedrive.php:1182, src/methods/googledrive.php:1237
705
  msgid "Client Secret"
706
  msgstr ""
707
 
721
  msgid "Otherwise, you can leave it blank."
722
  msgstr ""
723
 
724
+ #: src/addons/googlecloud.php:1034, src/addons/migrator.php:493, src/addons/migrator.php:496, src/addons/migrator.php:499, src/admin.php:1159, src/admin.php:2631, src/backup.php:3465, src/class-updraftplus.php:4134, src/class-updraftplus.php:4134, src/updraftplus.php:157
725
  msgid "Go here for more information."
726
  msgstr ""
727
 
765
  msgid "<strong>(You appear to be already authenticated,</strong> though you can authenticate again to refresh your access if you've had a problem)."
766
  msgstr ""
767
 
768
+ #: src/addons/googlecloud.php:1108, src/addons/onedrive.php:1249, src/methods/dropbox.php:668, src/methods/googledrive.php:1289
769
  msgid "Account holder's name: %s."
770
  msgstr ""
771
 
777
  msgid "Supported backup plugins: %s"
778
  msgstr ""
779
 
780
+ #: src/addons/importer.php:276, src/admin.php:4089, src/includes/class-backup-history.php:499
781
  msgid "Backup created by: %s."
782
  msgstr ""
783
 
789
  msgid "Increments exist at: %s"
790
  msgstr ""
791
 
792
+ #: src/addons/incremental.php:288
793
  msgid "Files changed since the last backup will be added as a new increment in that backup set."
794
  msgstr ""
795
 
796
+ #: src/addons/incremental.php:288
797
  msgid "N.B. No backup of your database will be taken in an incremental backup; if you want a database backup as well, then take that separately."
798
  msgstr ""
799
 
800
+ #: src/addons/incremental.php:290
801
  msgid "No incremental backup of your files is possible, as no suitable existing backup was found to add increments to."
802
  msgstr ""
803
 
804
+ #: src/addons/incremental.php:335, src/addons/reporting.php:261, src/admin.php:4021
805
  msgid "None"
806
  msgstr ""
807
 
808
+ #: src/addons/incremental.php:336, src/updraftplus.php:99
809
  msgid "Every hour"
810
  msgstr ""
811
 
812
+ #: src/addons/incremental.php:337, src/addons/incremental.php:338, src/addons/incremental.php:339, src/addons/incremental.php:340, src/admin.php:3736, src/admin.php:3737, src/admin.php:3738, src/updraftplus.php:100, src/updraftplus.php:101, src/updraftplus.php:102
813
  msgid "Every %s hours"
814
  msgstr ""
815
 
816
+ #: src/addons/incremental.php:341, src/admin.php:3739
817
  msgid "Daily"
818
  msgstr ""
819
 
820
+ #: src/addons/incremental.php:342, src/admin.php:3740
821
  msgid "Weekly"
822
  msgstr ""
823
 
824
+ #: src/addons/incremental.php:343, src/admin.php:3741
825
  msgid "Fortnightly"
826
  msgstr ""
827
 
828
+ #: src/addons/incremental.php:344, src/admin.php:3742
829
  msgid "Monthly"
830
  msgstr ""
831
 
832
+ #: src/addons/incremental.php:358
833
  msgid "And then add an incremental backup"
834
  msgstr ""
835
 
836
+ #: src/addons/incremental.php:370
837
  msgid "Tell me more"
838
  msgstr ""
839
 
857
  msgid "Please make sure that you have made a note of the password!"
858
  msgstr ""
859
 
860
+ #: src/addons/lockadmin.php:171, src/addons/moredatabase.php:241, src/addons/sftp.php:459, src/addons/webdav.php:193, src/admin.php:2986, src/methods/openstack2.php:164, src/methods/updraftvault.php:366, src/templates/wp-admin/settings/updraftcentral-connect.php:50
861
  msgid "Password"
862
  msgstr ""
863
 
949
  msgid "After pressing this button, you will be given the option to choose which components you wish to migrate"
950
  msgstr ""
951
 
952
+ #: src/addons/migrator.php:274, src/admin.php:663, src/admin.php:850, src/admin.php:4187
953
  msgid "Restore"
954
  msgstr ""
955
 
973
  msgid "Replace with"
974
  msgstr ""
975
 
976
+ #: src/addons/migrator.php:340, src/addons/moredatabase.php:89, src/addons/moredatabase.php:91, src/addons/moredatabase.php:93, src/addons/sftp.php:522, src/addons/sftp.php:526, src/addons/sftp.php:530, src/addons/webdav.php:253, src/admin.php:869, src/includes/class-remote-send.php:463, src/methods/addon-base-v2.php:305, src/methods/cloudfiles-new.php:184, src/methods/cloudfiles-new.php:189, src/methods/cloudfiles.php:519, src/methods/cloudfiles.php:524, src/methods/ftp.php:412, src/methods/ftp.php:416, src/methods/openstack2.php:180, src/methods/openstack2.php:185, src/methods/openstack2.php:190, src/methods/openstack2.php:195, src/methods/s3.php:1136, src/methods/s3.php:1140
977
  msgid "Failure: No %s was given."
978
  msgstr ""
979
 
981
  msgid "search term"
982
  msgstr ""
983
 
984
+ #: src/addons/migrator.php:343, src/addons/migrator.php:358, src/admin.php:2549, src/admin.php:2559, src/admin.php:2568, src/admin.php:2610, src/admin.php:3451
985
  msgid "Return to UpdraftPlus Configuration"
986
  msgstr ""
987
 
1183
  msgid "Time taken (seconds):"
1184
  msgstr ""
1185
 
1186
+ #: src/addons/migrator.php:1320, src/restorer.php:2924
1187
  msgid "the database query being run was:"
1188
  msgstr ""
1189
 
1247
  msgid "Enter your chosen name"
1248
  msgstr ""
1249
 
1250
+ #: src/addons/migrator.php:1761, src/addons/sftp.php:467, src/admin.php:868, src/admin.php:5070, src/templates/wp-admin/settings/temporary-clone.php:63
1251
  msgid "Key"
1252
  msgstr ""
1253
 
1307
  msgid "database connection attempt failed"
1308
  msgstr ""
1309
 
1310
+ #: src/addons/moredatabase.php:112, src/backup.php:1636
1311
  msgid "Connection failed: check your access details, that the database server is up, and that the network connection is not firewalled."
1312
  msgstr ""
1313
 
1319
  msgid "%s total table(s) found; %s with the indicated prefix."
1320
  msgstr ""
1321
 
1322
+ #: src/addons/moredatabase.php:144, src/admin.php:1650
1323
  msgid "Messages:"
1324
  msgstr ""
1325
 
1363
  msgid "Username"
1364
  msgstr ""
1365
 
1366
+ #: src/addons/moredatabase.php:242, src/addons/reporting.php:276, src/addons/wp-cli.php:432, src/admin.php:344, src/admin.php:3996, src/admin.php:4049, src/includes/class-remote-send.php:331, src/includes/class-wpadmin-commands.php:157, src/includes/class-wpadmin-commands.php:521, src/restorer.php:461, src/templates/wp-admin/settings/delete-and-restore-modals.php:74, src/templates/wp-admin/settings/delete-and-restore-modals.php:75, src/templates/wp-admin/settings/take-backup.php:34
1367
  msgid "Database"
1368
  msgstr ""
1369
 
1420
  msgid "Download"
1421
  msgstr ""
1422
 
1423
+ #: src/addons/morefiles.php:129, src/addons/morefiles.php:130, src/addons/reporting.php:200
1424
  msgid "Contains:"
1425
  msgstr ""
1426
 
1516
  msgid "Exclude these:"
1517
  msgstr ""
1518
 
1519
+ #: src/addons/morefiles.php:476, src/admin.php:3850
1520
  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."
1521
  msgstr ""
1522
 
1600
  msgid "An error response was received; HTTP code:"
1601
  msgstr ""
1602
 
1603
+ #: src/addons/onedrive.php:693, src/addons/onedrive.php:717, src/includes/updraftplus-login.php:56, src/methods/updraftvault.php:685, src/udaddons/updraftplus-addons.php:952, src/udaddons/updraftplus-addons.php:966
1604
  msgid "This most likely means that you share a webserver with a hacked website that has been used in previous attacks."
1605
  msgstr ""
1606
 
1612
  msgid "Your IP address:"
1613
  msgstr ""
1614
 
1615
+ #: src/addons/onedrive.php:717, src/includes/updraftplus-login.php:56, src/methods/updraftvault.php:685, src/udaddons/updraftplus-addons.php:966
1616
  msgid "UpdraftPlus.com has responded with 'Access Denied'."
1617
  msgstr ""
1618
 
1619
+ #: src/addons/onedrive.php:717, src/includes/updraftplus-login.php:56, src/methods/updraftvault.php:685, src/udaddons/updraftplus-addons.php:966
1620
  msgid "It appears that your web server's IP Address (%s) is blocked."
1621
  msgstr ""
1622
 
1623
+ #: src/addons/onedrive.php:717, src/includes/updraftplus-login.php:56, src/methods/updraftvault.php:685
1624
  msgid "To remove the block, please go here."
1625
  msgstr ""
1626
 
1632
  msgid "Account is not authorized (%s)."
1633
  msgstr ""
1634
 
1635
+ #: src/addons/onedrive.php:865, src/class-updraftplus.php:532, src/methods/dropbox.php:240, src/methods/dropbox.php:753, src/methods/dropbox.php:775, src/methods/dropbox.php:790, src/methods/dropbox.php:803, src/methods/dropbox.php:946
1636
  msgid "%s error: %s"
1637
  msgstr ""
1638
 
1639
+ #: src/addons/onedrive.php:865
1640
  msgid "Authentication"
1641
  msgstr ""
1642
 
1643
+ #: src/addons/onedrive.php:894, src/methods/dropbox.php:844, src/methods/dropbox.php:853, src/methods/googledrive.php:439
1644
  msgid "Your %s quota usage: %s %% used, %s available"
1645
  msgstr ""
1646
 
1647
+ #: src/addons/onedrive.php:902, src/methods/dropbox.php:821
1648
  msgid "Your %s account name: %s"
1649
  msgstr ""
1650
 
1651
+ #: src/addons/onedrive.php:940, src/addons/onedrive.php:1178, src/addons/onedrive.php:1182
1652
  msgid "OneDrive"
1653
  msgstr ""
1654
 
1655
+ #: src/addons/onedrive.php:1038, src/includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php:118
1656
  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)."
1657
  msgstr ""
1658
 
1659
+ #: src/addons/onedrive.php:1097, src/addons/onedrive.php:1099
1660
  msgid "authorization failed:"
1661
  msgstr ""
1662
 
1663
+ #: src/addons/onedrive.php:1126
1664
  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."
1665
  msgstr ""
1666
 
1667
+ #: src/addons/onedrive.php:1134
1668
  msgid "You must add the following as the authorized redirect URI in your OneDrive console (under \"API Settings\") when asked"
1669
  msgstr ""
1670
 
1671
+ #: src/addons/onedrive.php:1142
1672
  msgid "Create OneDrive credentials in your OneDrive developer console."
1673
  msgstr ""
1674
 
1675
+ #: src/addons/onedrive.php:1158, src/methods/dropbox.php:586, src/methods/googledrive.php:1214
1676
  msgid "Please read %s for use of our %s authorization app (none of your backup data is sent to us)."
1677
  msgstr ""
1678
 
1679
+ #: src/addons/onedrive.php:1158, src/methods/dropbox.php:586, src/methods/googledrive.php:1214
1680
  msgid "this privacy policy"
1681
  msgstr ""
1682
 
1683
+ #: src/addons/onedrive.php:1179
1684
  msgid "If OneDrive later shows you the message \"unauthorized_client\", then you did not enter a valid client ID here."
1685
  msgstr ""
1686
 
1687
+ #: src/addons/onedrive.php:1187, src/restorer.php:1191
1688
  msgid "folder"
1689
  msgstr ""
1690
 
1691
+ #: src/addons/onedrive.php:1189
1692
  msgid "N.B. %s is not case-sensitive."
1693
  msgstr ""
1694
 
1695
+ #: src/addons/onedrive.php:1194
1696
  msgid "Account type"
1697
  msgstr ""
1698
 
1699
+ #: src/addons/onedrive.php:1197
1700
  msgid "OneDrive International"
1701
  msgstr ""
1702
 
1703
+ #: src/addons/onedrive.php:1198
1704
  msgid "OneDrive Germany"
1705
  msgstr ""
1706
 
1707
+ #: src/addons/onedrive.php:1206, src/methods/dropbox.php:611
1708
  msgid "Authenticate with %s"
1709
  msgstr ""
1710
 
1711
+ #: src/addons/onedrive.php:1213, src/methods/dropbox.php:615
1712
  msgid "(You appear to be already authenticated)."
1713
  msgstr ""
1714
 
1716
  msgid "Your label for this backup (optional)"
1717
  msgstr ""
1718
 
1719
+ #: src/addons/reporting.php:86, src/addons/reporting.php:197, src/backup.php:1168, src/class-updraftplus.php:3951
1720
  msgid "Backup of:"
1721
  msgstr ""
1722
 
1724
  msgid "%d errors, %d warnings"
1725
  msgstr ""
1726
 
1727
+ #: src/addons/reporting.php:182
1728
  msgid "%d hours, %d minutes, %d seconds"
1729
  msgstr ""
1730
 
1731
+ #: src/addons/reporting.php:187
1732
  msgid "Backup Report"
1733
  msgstr ""
1734
 
1735
+ #: src/addons/reporting.php:188
1736
  msgid "Backup made by %s"
1737
  msgstr ""
1738
 
1739
+ #: src/addons/reporting.php:198, src/backup.php:1171
1740
  msgid "Latest status:"
1741
  msgstr ""
1742
 
1743
+ #: src/addons/reporting.php:199
1744
  msgid "Backup began:"
1745
  msgstr ""
1746
 
1747
+ #: src/addons/reporting.php:211
1748
  msgid "Errors / warnings:"
1749
  msgstr ""
1750
 
1751
+ #: src/addons/reporting.php:214
1752
  msgid "Errors"
1753
  msgstr ""
1754
 
1755
+ #: src/addons/reporting.php:229
1756
  msgid "Warnings"
1757
  msgstr ""
1758
 
1759
+ #: src/addons/reporting.php:234
1760
  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."
1761
  msgstr ""
1762
 
1763
+ #: src/addons/reporting.php:238
1764
  msgid "Time taken:"
1765
  msgstr ""
1766
 
1767
+ #: src/addons/reporting.php:239, src/admin.php:4009
1768
  msgid "Uploaded to:"
1769
  msgstr ""
1770
 
1771
+ #: src/addons/reporting.php:281, src/backup.php:1121
1772
  msgid "The log file has been attached to this email."
1773
  msgstr ""
1774
 
1775
+ #: src/addons/reporting.php:284
1776
  msgid "Debugging information"
1777
  msgstr ""
1778
 
1779
+ #: src/addons/reporting.php:408
1780
  msgid "Use the \"Reporting\" section to configure the email addresses to be used."
1781
  msgstr ""
1782
 
1783
+ #: src/addons/reporting.php:456
1784
  msgid "Email reports"
1785
  msgstr ""
1786
 
1787
+ #: src/addons/reporting.php:482
1788
  msgid "Enter addresses here to have a report sent to them when a backup job finishes."
1789
  msgstr ""
1790
 
1791
+ #: src/addons/reporting.php:497
1792
  msgid "Add another address..."
1793
  msgstr ""
1794
 
1795
+ #: src/addons/reporting.php:511
1796
  msgid "Log all messages to syslog"
1797
  msgstr ""
1798
 
1799
+ #: src/addons/reporting.php:512
1800
  msgid "Log all messages to syslog (only server admins are likely to want this)"
1801
  msgstr ""
1802
 
1803
+ #: src/addons/reporting.php:539, src/admin.php:798
1804
  msgid "To send to more than one address, separate each address with a comma."
1805
  msgstr ""
1806
 
1807
+ #: src/addons/reporting.php:541, src/admin.php:792
1808
  msgid "Send a report only when there are warnings/errors"
1809
  msgstr ""
1810
 
1811
+ #: src/addons/reporting.php:543, src/addons/reporting.php:543, src/addons/reporting.php:545, src/methods/email.php:100
1812
  msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive."
1813
  msgstr ""
1814
 
1815
+ #: src/addons/reporting.php:543, src/admin.php:793
1816
  msgid "When the Email storage method is enabled, also send the backup"
1817
  msgstr ""
1818
 
1819
+ #: src/addons/reporting.php:545
1820
  msgid "Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive as a result UpdraftPlus will only send Database backups to email."
1821
  msgstr ""
1822
 
1823
+ #: src/addons/reporting.php:545
1824
  msgid "Use this option to only send database backups when sending to email, and skip other components."
1825
  msgstr ""
1826
 
1827
+ #: src/addons/reporting.php:545, src/admin.php:796
1828
  msgid "Only email the database backup"
1829
  msgstr ""
1830
 
1868
  msgid "AWS authentication failed"
1869
  msgstr ""
1870
 
1871
+ #: src/addons/s3-enhanced.php:188, src/methods/openstack2.php:150, src/methods/s3.php:1182
1872
  msgid "Region"
1873
  msgstr ""
1874
 
1876
  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)."
1877
  msgstr ""
1878
 
1879
+ #: src/addons/s3-enhanced.php:215, src/methods/s3.php:1190
1880
  msgid "The error reported by %s was:"
1881
  msgstr ""
1882
 
2068
  msgid "Fingerprints don't match."
2069
  msgstr ""
2070
 
2071
+ #: src/addons/sftp.php:141, src/addons/sftp.php:153, src/methods/cloudfiles.php:147, src/methods/cloudfiles.php:189, src/methods/openstack-base.php:81, src/methods/openstack-base.php:315, src/methods/s3.php:378, src/methods/s3.php:390, src/methods/s3.php:391
2072
  msgid "%s Error: Failed to upload"
2073
  msgstr ""
2074
 
2193
  msgid "Path"
2194
  msgstr ""
2195
 
2196
+ #: src/addons/wp-cli.php:91, src/addons/wp-cli.php:510, src/addons/wp-cli.php:632, src/addons/wp-cli.php:717, src/addons/wp-cli.php:740
2197
  msgid "The given value for the '%s' option is not valid"
2198
  msgstr ""
2199
 
2237
  msgid "Latest full backup found; identifier:"
2238
  msgstr ""
2239
 
2240
+ #: src/addons/wp-cli.php:430, src/admin.php:4043, src/admin.php:4091
2241
  msgid "unknown source"
2242
  msgstr ""
2243
 
2244
+ #: src/addons/wp-cli.php:432, src/admin.php:4049
2245
  msgid "Database (created by %s)"
2246
  msgstr ""
2247
 
2248
+ #: src/addons/wp-cli.php:438, src/admin.php:4051
2249
  msgid "External database"
2250
  msgstr ""
2251
 
2252
+ #: src/addons/wp-cli.php:450, src/admin.php:4095
2253
  msgid "Files and database WordPress backup (created by %s)"
2254
  msgstr ""
2255
 
2256
+ #: src/addons/wp-cli.php:450, src/admin.php:4095
2257
  msgid "Files backup (created by %s)"
2258
  msgstr ""
2259
 
2260
+ #: src/addons/wp-cli.php:519, src/admin.php:818, src/class-updraftplus.php:1298, src/class-updraftplus.php:1342, src/includes/class-filesystem-functions.php:429, src/includes/class-storage-methods-interface.php:324, src/methods/addon-base-v2.php:93, src/methods/addon-base-v2.php:98, src/methods/addon-base-v2.php:205, src/methods/addon-base-v2.php:225, src/methods/stream-base.php:219, src/restorer.php:3074, src/restorer.php:3099, src/restorer.php:3180, src/updraftplus.php:157
2261
  msgid "Error"
2262
  msgstr ""
2263
 
2273
  msgid "No such backup set exists"
2274
  msgstr ""
2275
 
2276
+ #: src/addons/wp-cli.php:648, src/admin.php:4504
2277
  msgid "UpdraftPlus Restoration: Progress"
2278
  msgstr ""
2279
 
2280
+ #: src/addons/wp-cli.php:662, src/admin.php:4507
2281
  msgid "Follow this link to download the log file for this restoration (needed for any support requests)."
2282
  msgstr ""
2283
 
2284
+ #: src/addons/wp-cli.php:663
2285
  msgid "Run this command to see the log file for this restoration (needed for any support requests)."
2286
  msgstr ""
2287
 
2288
+ #: src/addons/wp-cli.php:737, src/addons/wp-cli.php:741
2289
  msgid "This is not an incremental backup"
2290
  msgstr ""
2291
 
2292
+ #: src/addons/wp-cli.php:788
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2293
  msgid "You have given the %1$s option. The %1$s is working with \"%2$s\" addon. Get the \"%2$s\" addon: %3$s"
2294
  msgstr ""
2295
 
2296
+ #: src/addons/wp-cli.php:870, src/includes/class-filesystem-functions.php:95
2297
  msgid "Why am I seeing this?"
2298
  msgstr ""
2299
 
2309
  msgid "At the same time as the files backup"
2310
  msgstr ""
2311
 
2312
+ #: src/admin.php:334, src/admin.php:5039, src/templates/wp-admin/settings/take-backup.php:24
2313
  msgid "Files"
2314
  msgstr ""
2315
 
2316
+ #: src/admin.php:334, src/backup.php:1077
2317
  msgid "Files and database"
2318
  msgstr ""
2319
 
2337
  msgid "Backup"
2338
  msgstr ""
2339
 
2340
+ #: src/admin.php:671, src/admin.php:2834
2341
  msgid "Migrate / Clone"
2342
  msgstr ""
2343
 
2344
+ #: src/admin.php:679, src/admin.php:1092, src/admin.php:2835
2345
  msgid "Settings"
2346
  msgstr ""
2347
 
2348
+ #: src/admin.php:687, src/admin.php:2836
2349
  msgid "Advanced Tools"
2350
  msgstr ""
2351
 
2417
  msgid "Error: the server sent us a response which we did not understand."
2418
  msgstr ""
2419
 
2420
+ #: src/admin.php:816, src/restorer.php:175
2421
+ msgid "Error data:"
2422
+ msgstr ""
2423
+
2424
+ #: src/admin.php:819, src/admin.php:1926, src/includes/deprecated-actions.php:29, src/templates/wp-admin/settings/downloading-and-restoring.php:21, src/templates/wp-admin/settings/tab-backups.php:21, src/templates/wp-admin/settings/tab-backups.php:44
2425
  msgid "Existing Backups"
2426
  msgstr ""
2427
 
2428
+ #: src/admin.php:820, src/admin.php:2218
2429
  msgid "File ready."
2430
  msgstr ""
2431
 
2432
+ #: src/admin.php:821, src/admin.php:2549, src/admin.php:2559, src/admin.php:2568, src/admin.php:2610, src/admin.php:3451, src/templates/wp-admin/settings/existing-backups-table.php:19, src/templates/wp-admin/settings/existing-backups-table.php:137
2433
  msgid "Actions"
2434
  msgstr ""
2435
 
2457
  msgid "PHP information"
2458
  msgstr ""
2459
 
2460
+ #: src/admin.php:828, src/admin.php:3165
2461
  msgid "Delete Old Directories"
2462
  msgstr ""
2463
 
2517
  msgid "Backup Now"
2518
  msgstr ""
2519
 
2520
+ #: src/admin.php:844, src/admin.php:3479, src/admin.php:3513, src/admin.php:4286, src/includes/class-remote-send.php:553, src/templates/wp-admin/settings/existing-backups-table.php:153, src/templates/wp-admin/settings/file-backup-exclude.php:11
2521
  msgid "Delete"
2522
  msgstr ""
2523
 
2525
  msgid "Create"
2526
  msgstr ""
2527
 
2528
+ #: src/admin.php:846, src/admin.php:4266
2529
  msgid "Upload"
2530
  msgstr ""
2531
 
2537
  msgid "Close"
2538
  msgstr ""
2539
 
2540
+ #: src/admin.php:851, src/admin.php:3717
2541
  msgid "Download log file"
2542
  msgstr ""
2543
 
2549
  msgid "Saving..."
2550
  msgstr ""
2551
 
2552
+ #: src/admin.php:855, src/admin.php:2917, src/methods/updraftvault.php:324, src/methods/updraftvault.php:367, src/templates/wp-admin/settings/temporary-clone.php:82
2553
  msgid "Connect"
2554
  msgstr ""
2555
 
2557
  msgid "Connecting..."
2558
  msgstr ""
2559
 
2560
+ #: src/admin.php:857, src/methods/updraftvault.php:397, src/methods/updraftvault.php:455
2561
  msgid "Disconnect"
2562
  msgstr ""
2563
 
2589
  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."
2590
  msgstr ""
2591
 
2592
+ #: src/admin.php:865, src/includes/class-remote-send.php:523
2593
  msgid "Send to site:"
2594
  msgstr ""
2595
 
2621
  msgid "Testing connection..."
2622
  msgstr ""
2623
 
2624
+ #: src/admin.php:874, src/includes/class-remote-send.php:358, src/includes/class-remote-send.php:529
2625
  msgid "Send"
2626
  msgstr ""
2627
 
2713
  msgid "Complete"
2714
  msgstr ""
2715
 
2716
+ #: src/admin.php:905, src/admin.php:3224
2717
  msgid "The backup has finished running"
2718
  msgstr ""
2719
 
2897
  msgid "Add-Ons / Pro Support"
2898
  msgstr ""
2899
 
2900
+ #: src/admin.php:1141
2901
  msgid "An error occurred when fetching storage module options: "
2902
  msgstr ""
2903
 
2904
+ #: src/admin.php:1146, src/includes/class-commands.php:466, src/templates/wp-admin/settings/take-backup.php:13
2905
  msgid "The 'Backup Now' button is disabled as your backup directory is not writable (go to the 'Settings' tab and find the relevant option)."
2906
  msgstr ""
2907
 
2908
+ #: src/admin.php:1151
2909
  msgid "Welcome to UpdraftPlus!"
2910
  msgstr ""
2911
 
2912
+ #: src/admin.php:1151
2913
  msgid "To make a backup, just press the Backup Now button."
2914
  msgstr ""
2915
 
2916
+ #: src/admin.php:1151
2917
  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."
2918
  msgstr ""
2919
 
2920
+ #: src/admin.php:1155, src/class-updraftplus.php:848
2921
  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)"
2922
  msgstr ""
2923
 
2924
+ #: src/admin.php:1159
2925
  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."
2926
  msgstr ""
2927
 
2928
+ #: src/admin.php:1163
2929
  msgid "You have less than %s of free disk space on the disk which UpdraftPlus is configured to use to create backups. UpdraftPlus could well run out of space. Contact your the operator of your server (e.g. your web hosting company) to resolve this issue."
2930
  msgstr ""
2931
 
2932
+ #: src/admin.php:1167
2933
  msgid "UpdraftPlus does not officially support versions of WordPress before %s. It may work for you, but if it does not, then please be aware that no support is available until you upgrade WordPress."
2934
  msgstr ""
2935
 
2936
+ #: src/admin.php:1171
2937
  msgid "Your website is hosted using the %s web server."
2938
  msgstr ""
2939
 
2940
+ #: src/admin.php:1171
2941
  msgid "Please consult this FAQ if you have problems backing up."
2942
  msgstr ""
2943
 
2944
+ #: src/admin.php:1175
2945
  msgid "Notice"
2946
  msgstr ""
2947
 
2948
+ #: src/admin.php:1175
2949
  msgid "UpdraftPlus's debug mode is on. You may see debugging notices on this page not just from UpdraftPlus, but from any other plugin installed. Please try to make sure that the notice you are seeing is from UpdraftPlus before you raise a support request."
2950
  msgstr ""
2951
 
2952
+ #: src/admin.php:1180
2953
  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."
2954
  msgstr ""
2955
 
2956
+ #: src/admin.php:1180
2957
  msgid "Read this page for a guide to possible causes and how to fix it."
2958
  msgstr ""
2959
 
2960
+ #: src/admin.php:1200, src/admin.php:1221, src/admin.php:1240, src/class-updraftplus.php:584, src/class-updraftplus.php:619, src/class-updraftplus.php:624, src/class-updraftplus.php:629
2961
  msgid "UpdraftPlus notice:"
2962
  msgstr ""
2963
 
2964
+ #: src/admin.php:1200
2965
  msgid "%s has been chosen for remote storage, but you are not currently connected."
2966
  msgstr ""
2967
 
2968
+ #: src/admin.php:1200
2969
  msgid "Go to the remote storage settings in order to connect."
2970
  msgstr ""
2971
 
2972
+ #: src/admin.php:1342, src/admin.php:1352
2973
  msgid "Error: invalid path"
2974
  msgstr ""
2975
 
2976
+ #: src/admin.php:1703, src/includes/class-wpadmin-commands.php:506
2977
  msgid "Backup set not found"
2978
  msgstr ""
2979
 
2980
+ #: src/admin.php:1789
2981
  msgid "Did not know how to delete from this cloud service."
2982
  msgstr ""
2983
 
2984
+ #: src/admin.php:1870
2985
  msgid "Backup sets removed:"
2986
  msgstr ""
2987
 
2988
+ #: src/admin.php:1871
2989
  msgid "Local files deleted:"
2990
  msgstr ""
2991
 
2992
+ #: src/admin.php:1872
2993
  msgid "Remote files deleted:"
2994
  msgstr ""
2995
 
2996
+ #: src/admin.php:1959
2997
  msgid "Job deleted"
2998
  msgstr ""
2999
 
3000
+ #: src/admin.php:1967
3001
  msgid "Could not find that job - perhaps it has already finished?"
3002
  msgstr ""
3003
 
3004
+ #: src/admin.php:2065, src/admin.php:2086, src/includes/class-commands.php:837
3005
  msgid "Start backup"
3006
  msgstr ""
3007
 
3008
+ #: src/admin.php:2065, src/includes/class-commands.php:837
3009
  msgid "OK. You should soon see activity in the \"Last log message\" field below."
3010
  msgstr ""
3011
 
3012
+ #: src/admin.php:2148, src/admin.php:2152, src/class-updraftplus.php:619
3013
  msgid "The log file could not be read."
3014
  msgstr ""
3015
 
3016
+ #: src/admin.php:2199
3017
  msgid "Download failed"
3018
  msgstr ""
3019
 
3020
+ #: src/admin.php:2229
3021
  msgid "Download in progress"
3022
  msgstr ""
3023
 
3024
+ #: src/admin.php:2232
3025
  msgid "No local copy present."
3026
  msgstr ""
3027
 
3028
+ #: src/admin.php:2286, src/backup.php:1392
3029
  msgid "Backup directory (%s) is not writable, or does not exist."
3030
  msgstr ""
3031
 
3032
+ #: src/admin.php:2286
3033
  msgid "You will find more information about this in the Settings section."
3034
  msgstr ""
3035
 
3036
+ #: src/admin.php:2323
3037
  msgid "This file could not be uploaded"
3038
  msgstr ""
3039
 
3040
+ #: src/admin.php:2338
3041
  msgid "This backup was created by %s, and can be imported."
3042
  msgstr ""
3043
 
3044
+ #: src/admin.php:2344
3045
  msgid "Bad filename format - this does not look like a file created by UpdraftPlus"
3046
  msgstr ""
3047
 
3048
+ #: src/admin.php:2352
3049
  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?"
3050
  msgstr ""
3051
 
3052
+ #: src/admin.php:2444
3053
  msgid "Bad filename format - this does not look like an encrypted database file created by UpdraftPlus"
3054
  msgstr ""
3055
 
3056
+ #: src/admin.php:2511, src/admin.php:2520
3057
  msgid "Sufficient information about the in-progress restoration operation could not be found."
3058
  msgstr ""
3059
 
3060
+ #: src/admin.php:2601
3061
  msgid "Backup directory could not be created"
3062
  msgstr ""
3063
 
3064
+ #: src/admin.php:2608
3065
  msgid "Backup directory successfully created."
3066
  msgstr ""
3067
 
3068
+ #: src/admin.php:2626, src/class-updraftplus.php:4046, src/restorer.php:2787
3069
  msgid "Warning:"
3070
  msgstr ""
3071
 
3072
+ #: src/admin.php:2626
3073
  msgid "If you can still read these words after the page finishes loading, then there is a JavaScript or jQuery problem in the site."
3074
  msgstr ""
3075
 
3076
+ #: src/admin.php:2629
3077
  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."
3078
  msgstr ""
3079
 
3080
+ #: src/admin.php:2644
3081
  msgid "OptimizePress 2.0 encodes its contents, so search/replace does not work."
3082
  msgstr ""
3083
 
3084
+ #: src/admin.php:2644
3085
  msgid "To fix this problem go here."
3086
  msgstr ""
3087
 
3088
+ #: src/admin.php:2646
3089
  msgid "For even more features and personal support, check out "
3090
  msgstr ""
3091
 
3092
+ #: src/admin.php:2648
3093
  msgid "Your backup has been restored."
3094
  msgstr ""
3095
 
3096
+ #: src/admin.php:2673
3097
  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)."
3098
  msgstr ""
3099
 
3100
+ #: src/admin.php:2673
3101
  msgid "Current limit is:"
3102
  msgstr ""
3103
 
3104
+ #: src/admin.php:2734
3105
  msgid "Backup Contents And Schedule"
3106
  msgstr ""
3107
 
3108
+ #: src/admin.php:2833
3109
  msgid "Backup / Restore"
3110
  msgstr ""
3111
 
3112
+ #: src/admin.php:2837
3113
  msgid "Premium / Extensions"
3114
  msgstr ""
3115
 
3116
+ #: src/admin.php:2874
3117
  msgid "%s minutes, %s seconds"
3118
  msgstr ""
3119
 
3120
+ #: src/admin.php:2876
3121
  msgid "Unfinished restoration"
3122
  msgstr ""
3123
 
3124
+ #: src/admin.php:2877
3125
  msgid "You have an unfinished restoration operation, begun %s ago."
3126
  msgstr ""
3127
 
3128
+ #: src/admin.php:2882
3129
  msgid "Continue restoration"
3130
  msgstr ""
3131
 
3132
+ #: src/admin.php:2883, src/templates/wp-admin/notices/horizontal-notice.php:16, src/templates/wp-admin/notices/horizontal-notice.php:18
3133
  msgid "Dismiss"
3134
  msgstr ""
3135
 
3136
+ #: src/admin.php:2904
3137
  msgid "Not yet got an account (it's free)? Go get one!"
3138
  msgstr ""
3139
 
3140
+ #: src/admin.php:2915
3141
  msgid "Interested in knowing about your UpdraftPlus.Com password security? Read about it here."
3142
  msgstr ""
3143
 
3144
+ #: src/admin.php:2927, src/includes/class-commands.php:905, src/includes/class-commands.php:953, src/templates/wp-admin/settings/temporary-clone.php:83, src/templates/wp-admin/settings/updraftcentral-connect.php:71
3145
  msgid "Processing"
3146
  msgstr ""
3147
 
3148
+ #: src/admin.php:2970
3149
  msgid "Connect with your UpdraftPlus.Com account"
3150
  msgstr ""
3151
 
3152
+ #: src/admin.php:2976, src/templates/wp-admin/settings/form-contents.php:255, src/templates/wp-admin/settings/updraftcentral-connect.php:44
3153
  msgid "Email"
3154
  msgstr ""
3155
 
3156
+ #: src/admin.php:2991
3157
  msgid "Forgotten your details?"
3158
  msgstr ""
3159
 
3160
+ #: src/admin.php:3003
3161
  msgid "Ask WordPress to update UpdraftPlus automatically when an update is available"
3162
  msgstr ""
3163
 
3164
+ #: src/admin.php:3025, src/templates/wp-admin/settings/updraftcentral-connect.php:56
3165
  msgid "One Time Password (check your OTP app to get this password)"
3166
  msgstr ""
3167
 
3168
+ #: src/admin.php:3095
3169
  msgid "Latest UpdraftPlus.com news:"
3170
  msgstr ""
3171
 
3172
+ #: src/admin.php:3122
3173
  msgid "Download most recently modified log file"
3174
  msgstr ""
3175
 
3176
+ #: src/admin.php:3159
3177
  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."
3178
  msgstr ""
3179
 
3180
+ #: src/admin.php:3224, src/admin.php:4296
3181
  msgid "View Log"
3182
  msgstr ""
3183
 
3184
+ #: src/admin.php:3263
3185
  msgid "Backup begun"
3186
  msgstr ""
3187
 
3188
+ #: src/admin.php:3268
3189
  msgid "Creating file backup zips"
3190
  msgstr ""
3191
 
3192
+ #: src/admin.php:3281
3193
  msgid "Created file backup zips"
3194
  msgstr ""
3195
 
3196
+ #: src/admin.php:3286
3197
  msgid "Clone server being provisioned and booted (can take several minutes)"
3198
  msgstr ""
3199
 
3200
+ #: src/admin.php:3290
3201
  msgid "Uploading files to remote storage"
3202
  msgstr ""
3203
 
3204
+ #: src/admin.php:3291
3205
  msgid "Sending files to remote site"
3206
  msgstr ""
3207
 
3208
+ #: src/admin.php:3298
3209
  msgid "(%s%%, file %s of %s)"
3210
  msgstr ""
3211
 
3212
+ #: src/admin.php:3303
3213
  msgid "Pruning old backup sets"
3214
  msgstr ""
3215
 
3216
+ #: src/admin.php:3307
3217
  msgid "Waiting until scheduled time to retry because of errors"
3218
  msgstr ""
3219
 
3220
+ #: src/admin.php:3312
3221
  msgid "Backup finished"
3222
  msgstr ""
3223
 
3224
+ #: src/admin.php:3325
3225
  msgid "Created database backup"
3226
  msgstr ""
3227
 
3228
+ #: src/admin.php:3336
3229
  msgid "Creating database backup"
3230
  msgstr ""
3231
 
3232
+ #: src/admin.php:3338
3233
  msgid "table: %s"
3234
  msgstr ""
3235
 
3236
+ #: src/admin.php:3351
3237
  msgid "Encrypting database"
3238
  msgstr ""
3239
 
3240
+ #: src/admin.php:3359
3241
  msgid "Encrypted database"
3242
  msgstr ""
3243
 
3244
+ #: src/admin.php:3361, src/central/bootstrap.php:444, src/central/bootstrap.php:451, src/methods/updraftvault.php:415, src/methods/updraftvault.php:449, src/methods/updraftvault.php:534
3245
  msgid "Unknown"
3246
  msgstr ""
3247
 
3248
+ #: src/admin.php:3378
3249
  msgid "next resumption: %d (after %ss)"
3250
  msgstr ""
3251
 
3252
+ #: src/admin.php:3379
3253
  msgid "last activity: %ss ago"
3254
  msgstr ""
3255
 
3256
+ #: src/admin.php:3399
3257
  msgid "Job ID: %s"
3258
  msgstr ""
3259
 
3260
+ #: src/admin.php:3413, src/admin.php:3703
3261
  msgid "Warning: %s"
3262
  msgstr ""
3263
 
3264
+ #: src/admin.php:3433
3265
  msgid "show log"
3266
  msgstr ""
3267
 
3268
+ #: src/admin.php:3434
3269
  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."
3270
  msgstr ""
3271
 
3272
+ #: src/admin.php:3434
3273
  msgid "stop"
3274
  msgstr ""
3275
 
3276
+ #: src/admin.php:3444, src/admin.php:3444
3277
  msgid "Remove old directories"
3278
  msgstr ""
3279
 
3280
+ #: src/admin.php:3447
3281
  msgid "Old directories successfully removed."
3282
  msgstr ""
3283
 
3284
+ #: src/admin.php:3449
3285
  msgid "Old directory removal failed for some reason. You may want to do this manually."
3286
  msgstr ""
3287
 
3288
+ #: src/admin.php:3486, src/admin.php:3521, src/admin.php:3525, src/includes/class-remote-send.php:327, src/includes/class-storage-methods-interface.php:315, src/restorer.php:326, src/restorer.php:3078, src/restorer.php:3183
3289
  msgid "OK"
3290
  msgstr ""
3291
 
3292
+ #: src/admin.php:3570
3293
  msgid "The request to the filesystem to create the directory failed."
3294
  msgstr ""
3295
 
3296
+ #: src/admin.php:3584
3297
  msgid "The folder was created, but we had to change its file permissions to 777 (world-writable) to be able to write to it. You should check with your hosting provider that this will not cause any problems"
3298
  msgstr ""
3299
 
3300
+ #: src/admin.php:3589
3301
  msgid "The folder exists, but your webserver does not have permission to write to it."
3302
  msgstr ""
3303
 
3304
+ #: src/admin.php:3589
3305
  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."
3306
  msgstr ""
3307
 
3308
+ #: src/admin.php:3691
3309
  msgid "incremental backup; base backup: %s"
3310
  msgstr ""
3311
 
3312
+ #: src/admin.php:3721
3313
  msgid "No backup has been completed"
3314
  msgstr ""
3315
 
3316
+ #: src/admin.php:3735
3317
  msgctxt "i.e. Non-automatic"
3318
  msgid "Manual"
3319
  msgstr ""
3320
 
3321
+ #: src/admin.php:3748
3322
  msgid "Backup directory specified is writable, which is good."
3323
  msgstr ""
3324
 
3325
+ #: src/admin.php:3752
3326
  msgid "Backup directory specified does <b>not</b> exist."
3327
  msgstr ""
3328
 
3329
+ #: src/admin.php:3754
3330
  msgid "Backup directory specified exists, but is <b>not</b> writable."
3331
  msgstr ""
3332
 
3333
+ #: src/admin.php:3756
3334
  msgid "Follow this link to attempt to create the directory and set the permissions"
3335
  msgstr ""
3336
 
3337
+ #: src/admin.php:3756
3338
  msgid "or, to reset this option"
3339
  msgstr ""
3340
 
3341
+ #: src/admin.php:3756
3342
  msgid "press here"
3343
  msgstr ""
3344
 
3345
+ #: src/admin.php:3756
3346
  msgid "If that is unsuccessful check the permissions on your server or change it to another directory that is writable by your web server process."
3347
  msgstr ""
3348
 
3349
+ #: src/admin.php:3836
3350
  msgid "Your wp-content directory server path: %s"
3351
  msgstr ""
3352
 
3353
+ #: src/admin.php:3836
3354
  msgid "Any other directories found inside wp-content"
3355
  msgstr ""
3356
 
3357
+ #: src/admin.php:3847
3358
  msgid "Exclude these from"
3359
  msgstr ""
3360
 
3361
+ #: src/admin.php:3935
3362
  msgid "Your web server's PHP/Curl installation does not support https access. Communications with %s will be unencrypted. Ask your web host to install Curl/SSL in order to gain the ability for encryption (via an add-on)."
3363
  msgstr ""
3364
 
3365
+ #: src/admin.php:3937
3366
  msgid "Your web server's PHP/Curl installation does not support https access. We cannot access %s without this support. Please contact your web hosting provider's support. %s <strong>requires</strong> Curl+https. Please do not file any support requests; there is no alternative."
3367
  msgstr ""
3368
 
3369
+ #: src/admin.php:3940
3370
  msgid "Good news: Your site's communications with %s can be encrypted. If you see any errors to do with encryption, then look in the 'Expert Settings' for more help."
3371
  msgstr ""
3372
 
3373
+ #: src/admin.php:3978, src/templates/wp-admin/settings/backupnow-modal.php:60, src/templates/wp-admin/settings/existing-backups-table.php:71, src/templates/wp-admin/settings/existing-backups-table.php:74
3374
  msgid "Only allow this backup to be deleted manually (i.e. keep it even if retention limits are hit)."
3375
  msgstr ""
3376
 
3377
+ #: src/admin.php:4026
3378
  msgid "Total backup size:"
3379
  msgstr ""
3380
 
3381
+ #: src/admin.php:4092, src/includes/class-wpadmin-commands.php:162, src/restorer.php:2115
3382
  msgid "Backup created by unknown source (%s) - cannot be restored."
3383
  msgstr ""
3384
 
3385
+ #: src/admin.php:4121
3386
  msgid "Press here to download or browse"
3387
  msgstr ""
3388
 
3389
+ #: src/admin.php:4126
3390
  msgid "(%d archive(s) in set)."
3391
  msgstr ""
3392
 
3393
+ #: src/admin.php:4129
3394
  msgid "You appear to be missing one or more archives from this multi-archive set."
3395
  msgstr ""
3396
 
3397
+ #: src/admin.php:4157, src/admin.php:4159
3398
  msgid "(Not finished)"
3399
  msgstr ""
3400
 
3401
+ #: src/admin.php:4159
3402
  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."
3403
  msgstr ""
3404
 
3405
+ #: src/admin.php:4184
3406
  msgid "(backup set imported from remote location)"
3407
  msgstr ""
3408
 
3409
+ #: src/admin.php:4187
3410
  msgid "After pressing this button, you will be given the option to choose which components you wish to restore"
3411
  msgstr ""
3412
 
3413
+ #: src/admin.php:4266
3414
  msgid "After pressing this button, you can select where to upload your backup from a list of your currently saved remote storage locations"
3415
  msgstr ""
3416
 
3417
+ #: src/admin.php:4286
3418
  msgid "Delete this backup set"
3419
  msgstr ""
3420
 
3421
+ #: src/admin.php:4489
3422
  msgid "This backup does not exist in the backup history - restoration aborted. Timestamp:"
3423
  msgstr ""
3424
 
3425
+ #: src/admin.php:4490
3426
  msgid "Backup does not exist in the backup history"
3427
  msgstr ""
3428
 
3429
+ #: src/admin.php:4513
3430
  msgid "ABORT: Could not find the information on which entities to restore."
3431
  msgstr ""
3432
 
3433
+ #: src/admin.php:4513
3434
  msgid "If making a request for support, please include this information:"
3435
  msgstr ""
3436
 
3437
+ #: src/admin.php:4679
3438
  msgid "Backup won't be sent to any remote storage - none has been saved in the %s"
3439
  msgstr ""
3440
 
3441
+ #: src/admin.php:4679
3442
  msgid "settings"
3443
  msgstr ""
3444
 
3445
+ #: src/admin.php:4679
3446
  msgid "Not got any remote storage?"
3447
  msgstr ""
3448
 
3449
+ #: src/admin.php:4679
3450
  msgid "Check out UpdraftPlus Vault."
3451
  msgstr ""
3452
 
3453
+ #: src/admin.php:4681
3454
  msgid "Send this backup to remote storage"
3455
  msgstr ""
3456
 
3457
+ #: src/admin.php:4771
3458
  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."
3459
  msgstr ""
3460
 
3461
+ #: src/admin.php:4778, src/templates/wp-admin/settings/take-backup.php:51
3462
  msgid "This button is disabled because your backup directory is not writable (see the settings)."
3463
  msgstr ""
3464
 
3465
+ #: src/admin.php:4807
3466
  msgid "Your settings have been saved."
3467
  msgstr ""
3468
 
3469
+ #: src/admin.php:4812
3470
  msgid "Your settings failed to save. Please refresh the settings page and try again"
3471
  msgstr ""
3472
 
3473
+ #: src/admin.php:4860
3474
  msgid "authentication error"
3475
  msgstr ""
3476
 
3477
+ #: src/admin.php:4864
3478
  msgid "Remote storage method and instance id are required for authentication."
3479
  msgstr ""
3480
 
3481
+ #: src/admin.php:4931
3482
  msgid "Your settings have been wiped."
3483
  msgstr ""
3484
 
3485
+ #: src/admin.php:5032
3486
  msgid "Known backups (raw)"
3487
  msgstr ""
3488
 
3489
+ #: src/admin.php:5067
3490
  msgid "Options (raw)"
3491
  msgstr ""
3492
 
3493
+ #: src/admin.php:5070
3494
  msgid "Value"
3495
  msgstr ""
3496
 
3497
+ #: src/admin.php:5222
3498
  msgid "The file %s has a \"byte order mark\" (BOM) at its beginning."
3499
  msgid_plural "The files %s have a \"byte order mark\" (BOM) at their beginning."
3500
  msgstr[0] ""
3501
  msgstr[1] ""
3502
 
3503
+ #: src/admin.php:5222, src/methods/openstack2.php:144, src/restorer.php:178, src/restorer.php:180, src/templates/wp-admin/settings/downloading-and-restoring.php:27, src/templates/wp-admin/settings/tab-backups.php:27, src/templates/wp-admin/settings/updraftcentral-connect.php:14
3504
+ msgid "Follow this link for more information"
3505
+ msgstr ""
3506
+
3507
+ #: src/admin.php:5244, src/admin.php:5248, src/templates/wp-admin/advanced/site-info.php:45, src/templates/wp-admin/advanced/site-info.php:51, src/templates/wp-admin/advanced/site-info.php:58, src/templates/wp-admin/advanced/site-info.php:59
3508
  msgid "%s version:"
3509
  msgstr ""
3510
 
3511
+ #: src/admin.php:5252
3512
  msgid "Clone region:"
3513
  msgstr ""
3514
 
3515
+ #: src/admin.php:5257
3516
  msgid "Forbid non-administrators to login to WordPress on your clone"
3517
  msgstr ""
3518
 
3519
+ #: src/admin.php:5280
3520
  msgid "(current version)"
3521
  msgstr ""
3522
 
3523
+ #: src/admin.php:5300
3524
  msgid "Your clone has started and will be available at the following URLs once it is ready."
3525
  msgstr ""
3526
 
3527
+ #: src/admin.php:5301
3528
  msgid "Front page:"
3529
  msgstr ""
3530
 
3531
+ #: src/admin.php:5302
3532
  msgid "Dashboard:"
3533
  msgstr ""
3534
 
3535
+ #: src/admin.php:5304, src/admin.php:5307
3536
  msgid "You can find your temporary clone information in your updraftplus.com account here."
3537
  msgstr ""
3538
 
3539
+ #: src/admin.php:5306
3540
  msgid "Your clone has started, network information is not yet available but will be displayed here and at your updraftplus.com account once it is ready."
3541
  msgstr ""
3542
 
3543
+ #: src/backup.php:211
3544
  msgid "%s - could not back this entity up; the corresponding directory does not exist (%s)"
3545
  msgstr ""
3546
 
3547
+ #: src/backup.php:283
3548
  msgid "Could not create %s zip. Consult the log file for more information."
3549
  msgstr ""
3550
 
3551
+ #: src/backup.php:477, src/backup.php:2164, src/class-updraftplus.php:2125, src/class-updraftplus.php:2192, src/includes/class-storage-methods-interface.php:364, src/restorer.php:480
3552
  msgid "A PHP exception (%s) has occurred: %s"
3553
  msgstr ""
3554
 
3555
+ #: src/backup.php:483, src/backup.php:2173, src/class-updraftplus.php:2134, src/class-updraftplus.php:2199, src/includes/class-storage-methods-interface.php:373, src/restorer.php:494
3556
  msgid "A PHP fatal error (%s) has occurred: %s"
3557
  msgstr ""
3558
 
3559
+ #: src/backup.php:1070
3560
  msgid "Full backup"
3561
  msgstr ""
3562
 
3563
+ #: src/backup.php:1070
3564
  msgid "Incremental"
3565
  msgstr ""
3566
 
3567
+ #: src/backup.php:1075, src/class-updraftplus.php:2996
3568
  msgid "The backup was aborted by the user"
3569
  msgstr ""
3570
 
3571
+ #: src/backup.php:1079
3572
  msgid "Files (database backup has not completed)"
3573
  msgstr ""
3574
 
3575
+ #: src/backup.php:1079
3576
  msgid "Files only (database was not part of this particular schedule)"
3577
  msgstr ""
3578
 
3579
+ #: src/backup.php:1082
3580
  msgid "Database (files backup has not completed)"
3581
  msgstr ""
3582
 
3583
+ #: src/backup.php:1082
3584
  msgid "Database only (files were not part of this particular schedule)"
3585
  msgstr ""
3586
 
3587
+ #: src/backup.php:1085
3588
  msgid "Unknown/unexpected error - please raise a support request"
3589
  msgstr ""
3590
 
3591
+ #: src/backup.php:1094
3592
  msgid "Errors encountered:"
3593
  msgstr ""
3594
 
3595
+ #: src/backup.php:1112
3596
  msgid "Warnings encountered:"
3597
  msgstr ""
3598
 
3599
+ #: src/backup.php:1127
3600
  msgid "Backed up: %s"
3601
  msgstr ""
3602
 
3603
+ #: src/backup.php:1136
3604
  msgid "Email reports created by UpdraftPlus (free edition) bring you the latest UpdraftPlus.com news"
3605
  msgstr ""
3606
 
3607
+ #: src/backup.php:1136
3608
  msgid "read more at %s"
3609
  msgstr ""
3610
 
3611
+ #: src/backup.php:1169
3612
  msgid "WordPress backup is complete"
3613
  msgstr ""
3614
 
3615
+ #: src/backup.php:1170
3616
  msgid "Backup contains:"
3617
  msgstr ""
3618
 
3619
+ #: src/backup.php:1636
3620
  msgid "database connection attempt failed."
3621
  msgstr ""
3622
 
3623
+ #: src/backup.php:1682
3624
  msgid "please wait for the rescheduled attempt"
3625
  msgstr ""
3626
 
3627
+ #: src/backup.php:1684
3628
  msgid "No database tables found"
3629
  msgstr ""
3630
 
3631
+ #: src/backup.php:1695
3632
  msgid "The backup directory is not writable (or disk space is full) - the database backup is expected to shortly fail."
3633
  msgstr ""
3634
 
3635
+ #: src/backup.php:1773
3636
  msgid "Table %s has very many rows (%s) - we hope your web hosting company gives you enough resources to dump out that table in the backup"
3637
  msgstr ""
3638
 
3639
+ #: src/backup.php:1773
3640
  msgid "If not, you will need to either remove data from this table, or contact your hosting company to request more resources."
3641
  msgstr ""
3642
 
3643
+ #: src/backup.php:1823, src/backup.php:1825
3644
  msgid "The database backup appears to have failed"
3645
  msgstr ""
3646
 
3647
+ #: src/backup.php:1823
3648
  msgid "no options or sitemeta table was found"
3649
  msgstr ""
3650
 
3651
+ #: src/backup.php:1825
3652
  msgid "the options table was not found"
3653
  msgstr ""
3654
 
3655
+ #: src/backup.php:1873
3656
  msgid "Failed to open database file for reading:"
3657
  msgstr ""
3658
 
3659
+ #: src/backup.php:1892
3660
  msgid "An error occurred whilst closing the final database file"
3661
  msgstr ""
3662
 
3663
+ #: src/backup.php:2205
3664
  msgid "Could not open the backup file for writing"
3665
  msgstr ""
3666
 
3667
+ #: src/backup.php:2331
3668
  msgid "Infinite recursion: consult your log for more information"
3669
  msgstr ""
3670
 
3671
+ #: src/backup.php:2364
3672
  msgid "%s: unreadable file - could not be backed up (check the file permissions and ownership)"
3673
  msgstr ""
3674
 
3675
+ #: src/backup.php:2386
3676
  msgid "Failed to open directory (check the file permissions and ownership): %s"
3677
  msgstr ""
3678
 
3679
+ #: src/backup.php:2451
3680
  msgid "%s: unreadable file - could not be backed up"
3681
  msgstr ""
3682
 
3683
+ #: src/backup.php:3131, src/backup.php:3414
3684
  msgid "Failed to open the zip file (%s) - %s"
3685
  msgstr ""
3686
 
3687
+ #: src/backup.php:3157
3688
  msgid "A very large file was encountered: %s (size: %s Mb)"
3689
  msgstr ""
3690
 
3691
+ #: src/backup.php:3458, src/class-updraftplus.php:861
3692
  msgid "Your free space in your hosting account is very low - only %s Mb remain"
3693
  msgstr ""
3694
 
3695
+ #: src/backup.php:3465
3696
  msgid "The zip engine returned the message: %s."
3697
  msgstr ""
3698
 
3699
+ #: src/backup.php:3467
3700
  msgid "A zip error occurred"
3701
  msgstr ""
3702
 
3703
+ #: src/backup.php:3469
3704
  msgid "your web hosting account appears to be full; please see: %s"
3705
  msgstr ""
3706
 
3707
+ #: src/backup.php:3471
3708
  msgid "check your log for more details."
3709
  msgstr ""
3710
 
3872
  msgid "More information..."
3873
  msgstr ""
3874
 
3875
+ #: src/central/bootstrap.php:570, src/methods/updraftvault.php:359, src/methods/updraftvault.php:373, src/templates/wp-admin/settings/exclude-settings-modal/exclude-panel-heading.php:4
3876
  msgid "Back..."
3877
  msgstr ""
3878
 
3888
  msgid "UpdraftCentral enables control of your WordPress sites (including management of backups and updates) from a central dashboard."
3889
  msgstr ""
3890
 
3891
+ #: src/central/bootstrap.php:597, src/methods/updraftvault.php:327, src/methods/updraftvault.php:356
3892
  msgid "Read more about it here."
3893
  msgstr ""
3894
 
3996
  msgid "Could not save backup history because we have no backup array. Backup probably failed."
3997
  msgstr ""
3998
 
3999
+ #: src/class-updraftplus.php:3868, src/includes/class-updraftplus-encryption.php:336, src/restorer.php:876
4000
  msgid "Decryption failed. The database file is encrypted, but you have no encryption key entered."
4001
  msgstr ""
4002
 
4003
+ #: src/class-updraftplus.php:3870
4004
  msgid "Decryption failed. The database file is encrypted."
4005
  msgstr ""
4006
 
4007
+ #: src/class-updraftplus.php:3880, src/includes/class-updraftplus-encryption.php:354, src/restorer.php:889
4008
  msgid "Decryption failed. The most likely cause is that you used the wrong key."
4009
  msgstr ""
4010
 
4011
+ #: src/class-updraftplus.php:3887
4012
  msgid "The database is too small to be a valid WordPress database (size: %s Kb)."
4013
  msgstr ""
4014
 
4015
+ #: src/class-updraftplus.php:3895
4016
  msgid "Failed to open database file."
4017
  msgstr ""
4018
 
4019
+ #: src/class-updraftplus.php:3951
4020
  msgid "(version: %s)"
4021
  msgstr ""
4022
 
4023
+ #: src/class-updraftplus.php:3964
4024
  msgid "The website address in the backup set (%s) is slightly different from that of the site now (%s). This is not expected to be a problem for restoring the site, as long as visits to the former address still reach the site."
4025
  msgstr ""
4026
 
4027
+ #: src/class-updraftplus.php:3969
4028
  msgid "This backup set is of this site, but at the time of the backup you were using %s, whereas the site now uses %s."
4029
  msgstr ""
4030
 
4031
+ #: src/class-updraftplus.php:3971
4032
  msgid "This restoration will work if you still have an SSL certificate (i.e. can use https) to access the site. Otherwise, you will want to use %s to search/replace the site address so that the site can be visited without https."
4033
  msgstr ""
4034
 
4035
+ #: src/class-updraftplus.php:3971, src/class-updraftplus.php:3973
4036
  msgid "the migrator add-on"
4037
  msgstr ""
4038
 
4039
+ #: src/class-updraftplus.php:3973
4040
  msgid "As long as your web hosting allows http (i.e. non-SSL access) or will forward requests to https (which is almost always the case), this is no problem. If that is not yet set up, then you should set it up, or use %s so that the non-https links are automatically replaced."
4041
  msgstr ""
4042
 
4043
+ #: src/class-updraftplus.php:3982, src/class-updraftplus.php:4002
4044
  msgid "This backup set is from a different site (%s) - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work."
4045
  msgstr ""
4046
 
4047
+ #: src/class-updraftplus.php:3985
4048
  msgid "You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information"
4049
  msgstr ""
4050
 
4051
+ #: src/class-updraftplus.php:3990, src/restorer.php:1554
4052
  msgid "You are using the %s webserver, but do not seem to have the %s module loaded."
4053
  msgstr ""
4054
 
4055
+ #: src/class-updraftplus.php:3990, src/restorer.php:1554
4056
  msgid "You should enable %s to make any pretty permalinks (e.g. %s) work"
4057
  msgstr ""
4058
 
4059
+ #: src/class-updraftplus.php:4011, src/class-updraftplus.php:4018
4060
  msgid "%s version: %s"
4061
  msgstr ""
4062
 
4063
+ #: src/class-updraftplus.php:4012
4064
  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."
4065
  msgstr ""
4066
 
4067
+ #: src/class-updraftplus.php:4019
4068
  msgid "The site in this backup was running on a webserver with version %s of %s. "
4069
  msgstr ""
4070
 
4071
+ #: src/class-updraftplus.php:4019
4072
  msgid "This is significantly newer than the server which you are now restoring onto (version %s)."
4073
  msgstr ""
4074
 
4075
+ #: src/class-updraftplus.php:4019
4076
  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."
4077
  msgstr ""
4078
 
4079
+ #: src/class-updraftplus.php:4019
4080
  msgid "Any support requests to do with %s should be raised with your web hosting company."
4081
  msgstr ""
4082
 
4083
+ #: src/class-updraftplus.php:4024, src/restorer.php:2355, src/restorer.php:2444, src/restorer.php:2470
4084
  msgid "Old table prefix:"
4085
  msgstr ""
4086
 
4087
+ #: src/class-updraftplus.php:4027
4088
  msgid "Backup label:"
4089
  msgstr ""
4090
 
4091
+ #: src/class-updraftplus.php:4035, src/class-updraftplus.php:4038, src/restorer.php:638
4092
  msgid "You are running on WordPress multisite - but your backup is not of a multisite site."
4093
  msgstr ""
4094
 
4095
+ #: src/class-updraftplus.php:4038
4096
  msgid "It will be imported as a new site."
4097
  msgstr ""
4098
 
4099
+ #: src/class-updraftplus.php:4038
4100
  msgid "Please read this link for important information on this process."
4101
  msgstr ""
4102
 
4103
+ #: src/class-updraftplus.php:4042, src/restorer.php:2367
4104
  msgid "To import an ordinary WordPress site into a multisite installation requires %s."
4105
  msgstr ""
4106
 
4107
+ #: src/class-updraftplus.php:4046
4108
  msgid "Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible."
4109
  msgstr ""
4110
 
4111
+ #: src/class-updraftplus.php:4046
4112
  msgid "If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite."
4113
  msgstr ""
4114
 
4115
+ #: src/class-updraftplus.php:4053, src/restorer.php:2373
4116
  msgid "Site information:"
4117
  msgstr ""
4118
 
4119
+ #: src/class-updraftplus.php:4113
4120
  msgid "The database backup uses MySQL features not available in the old MySQL version (%s) that this site is running on."
4121
  msgstr ""
4122
 
4123
+ #: src/class-updraftplus.php:4113
4124
  msgid "You must upgrade MySQL to be able to use this database."
4125
  msgstr ""
4126
 
4127
+ #: src/class-updraftplus.php:4134
4128
  msgid "The database server that this WordPress site is running on doesn't support the character set (%s) which you are trying to import."
4129
  msgid_plural "The database server that this WordPress site is running on doesn't support the character sets (%s) which you are trying to import."
4130
  msgstr[0] ""
4131
  msgstr[1] ""
4132
 
4133
+ #: src/class-updraftplus.php:4134
4134
  msgid "You can choose another suitable character set instead and continue with the restoration at your own risk."
4135
  msgstr ""
4136
 
4137
+ #: src/class-updraftplus.php:4144
4138
  msgid "Your chosen character set to use instead:"
4139
  msgstr ""
4140
 
4141
+ #: src/class-updraftplus.php:4168
4142
  msgid "The database server that this WordPress site is running on doesn't support the collation (%s) used in the database which you are trying to import."
4143
  msgid_plural "The database server that this WordPress site is running on doesn't support multiple collations (%s) used in the database which you are trying to import."
4144
  msgstr[0] ""
4145
  msgstr[1] ""
4146
 
4147
+ #: src/class-updraftplus.php:4168
4148
  msgid "You can choose another suitable collation instead and continue with the restoration (at your own risk)."
4149
  msgstr ""
4150
 
4151
+ #: src/class-updraftplus.php:4191
4152
  msgid "Your chosen replacement collation"
4153
  msgstr ""
4154
 
4155
+ #: src/class-updraftplus.php:4214
4156
  msgid "Choose a default for each table"
4157
  msgstr ""
4158
 
4159
+ #: src/class-updraftplus.php:4266
4160
  msgid "This database backup is missing core WordPress tables: %s"
4161
  msgstr ""
4162
 
4163
+ #: src/class-updraftplus.php:4269
4164
  msgid "This database backup has the following WordPress tables excluded: %s"
4165
  msgstr ""
4166
 
4167
+ #: src/class-updraftplus.php:4274
4168
  msgid "UpdraftPlus was unable to find the table prefix when scanning the database backup."
4169
  msgstr ""
4170
 
4172
  msgid "You have not yet made any backups."
4173
  msgstr ""
4174
 
4175
+ #: src/includes/class-backup-history.php:675
4176
  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."
4177
  msgstr ""
4178
 
4180
  msgid "%s add-on not found"
4181
  msgstr ""
4182
 
4183
+ #: src/includes/class-commands.php:793, src/methods/updraftvault.php:635, src/udaddons/options.php:226
4184
  msgid "An unknown error occurred when trying to connect to UpdraftPlus.Com"
4185
  msgstr ""
4186
 
4208
  msgid "The creation of your data for creating the clone should now begin. N.B. You will be charged one token once the clone is ready. If the clone fails to boot, then no token will be taken."
4209
  msgstr ""
4210
 
4211
+ #: src/includes/class-filesystem-functions.php:114, src/templates/wp-admin/advanced/site-info.php:38
4212
  msgid "refresh"
4213
  msgstr ""
4214
 
4215
+ #: src/includes/class-filesystem-functions.php:121
4216
  msgid "calculate"
4217
  msgstr ""
4218
 
4219
+ #: src/includes/class-filesystem-functions.php:135
4220
  msgid "This is a count of the contents of your Updraft directory"
4221
  msgstr ""
4222
 
4223
+ #: src/includes/class-filesystem-functions.php:135, src/templates/wp-admin/advanced/site-info.php:38
4224
  msgid "Web-server disk space in use by UpdraftPlus"
4225
  msgstr ""
4226
 
4227
+ #: src/includes/class-filesystem-functions.php:294, src/methods/ftp.php:330
4228
  msgid "Your web server's PHP installation has these functions disabled: %s."
4229
  msgstr ""
4230
 
4231
+ #: src/includes/class-filesystem-functions.php:294, src/methods/ftp.php:330, src/restorer.php:2146
4232
  msgid "Your hosting company must enable these functions before %s can work."
4233
  msgstr ""
4234
 
4235
+ #: src/includes/class-filesystem-functions.php:294, src/restorer.php:2146
4236
  msgid "restoration"
4237
  msgstr ""
4238
 
4239
+ #: src/includes/class-filesystem-functions.php:314
4240
  msgid "The database file appears to have been compressed twice - probably the website you downloaded it from had a mis-configured webserver."
4241
  msgstr ""
4242
 
4243
+ #: src/includes/class-filesystem-functions.php:321, src/includes/class-filesystem-functions.php:343
4244
  msgid "The attempt to undo the double-compression failed."
4245
  msgstr ""
4246
 
4247
+ #: src/includes/class-filesystem-functions.php:345
4248
  msgid "The attempt to undo the double-compression succeeded."
4249
  msgstr ""
4250
 
4251
+ #: src/includes/class-filesystem-functions.php:538
4252
+ msgid "Unzip progress: %d out of %d files"
4253
+ msgstr ""
4254
+
4255
  #: src/includes/class-remote-send.php:251
4256
  msgid "Backup data will be sent to:"
4257
  msgstr ""
4280
  msgid "You must copy and paste this key on the sending site now - it cannot be shown again."
4281
  msgstr ""
4282
 
4283
+ #: src/includes/class-remote-send.php:448
4284
+ msgid "The setting %s is turned on in your PHP settings. It is deprecated, causes encryption to malfunction, and should be turned off."
4285
+ msgstr ""
4286
+
4287
+ #: src/includes/class-remote-send.php:463
4288
  msgid "key"
4289
  msgstr ""
4290
 
4291
+ #: src/includes/class-remote-send.php:473
4292
  msgid "The entered key was the wrong length - please try again."
4293
  msgstr ""
4294
 
4295
+ #: src/includes/class-remote-send.php:475, src/includes/class-remote-send.php:477, src/includes/class-remote-send.php:481
4296
  msgid "The entered key was corrupt - please try again."
4297
  msgstr ""
4298
 
4299
+ #: src/includes/class-remote-send.php:486
4300
  msgid "The entered key does not belong to a remote site (it belongs to this one)."
4301
  msgstr ""
4302
 
4303
+ #: src/includes/class-remote-send.php:502
4304
  msgid "The key was successfully added."
4305
  msgstr ""
4306
 
4307
+ #: src/includes/class-remote-send.php:502
4308
  msgid "It is for sending backups to the following site: "
4309
  msgstr ""
4310
 
4311
+ #: src/includes/class-remote-send.php:521
4312
  msgid "No receiving sites have yet been added."
4313
  msgstr ""
4314
 
4315
+ #: src/includes/class-remote-send.php:541
4316
  msgid "No keys to allow remote sites to send backup data here have yet been created."
4317
  msgstr ""
4318
 
4319
+ #: src/includes/class-remote-send.php:550
4320
  msgid "Existing keys"
4321
  msgstr ""
4322
 
4492
  msgid "Allow only administrators to log in"
4493
  msgstr ""
4494
 
4495
+ #: src/includes/updraftplus-login.php:58, src/methods/updraftvault.php:687, src/udaddons/updraftplus-addons.php:971
4496
  msgid "UpdraftPlus.Com returned a response which we could not understand (data: %s)"
4497
  msgstr ""
4498
 
4499
+ #: src/includes/updraftplus-notices.php:30, src/includes/updraftplus-notices.php:41, src/includes/updraftplus-notices.php:52, src/includes/updraftplus-notices.php:63, src/includes/updraftplus-notices.php:74, src/includes/updraftplus-notices.php:85
4500
  msgid "UpdraftPlus Premium:"
4501
  msgstr ""
4502
 
4508
  msgid "Enjoy professional, fast, and friendly help whenever you need it with Premium."
4509
  msgstr ""
4510
 
4511
+ #: src/includes/updraftplus-notices.php:42, src/templates/wp-admin/settings/tab-addons.php:260
4512
  msgid "UpdraftVault storage"
4513
  msgstr ""
4514
 
4515
+ #: src/includes/updraftplus-notices.php:43
4516
  msgid "The ultimately secure and convenient place to store your backups."
4517
  msgstr ""
4518
 
4519
+ #: src/includes/updraftplus-notices.php:53
4520
  msgid "enhanced remote storage options"
4521
  msgstr ""
4522
 
4523
+ #: src/includes/updraftplus-notices.php:54
4524
  msgid "Enhanced storage options for Dropbox, Google Drive and S3. Plus many more options."
4525
  msgstr ""
4526
 
4527
+ #: src/includes/updraftplus-notices.php:64
4528
  msgid "advanced options"
4529
  msgstr ""
4530
 
4531
+ #: src/includes/updraftplus-notices.php:65
4532
  msgid "Secure multisite installation, advanced reporting and much more."
4533
  msgstr ""
4534
 
4535
+ #: src/includes/updraftplus-notices.php:75
4536
  msgid "secure your backups"
4537
  msgstr ""
4538
 
4539
+ #: src/includes/updraftplus-notices.php:76
4540
  msgid "Add SFTP to send your data securely, lock settings and encrypt your database backups for extra security."
4541
  msgstr ""
4542
 
4543
+ #: src/includes/updraftplus-notices.php:86
4544
  msgid "easily migrate or clone your site in minutes"
4545
  msgstr ""
4546
 
4547
+ #: src/includes/updraftplus-notices.php:87
4548
  msgid "Copy your site to another domain directly. Includes find-and-replace tool for database references."
4549
  msgstr ""
4550
 
4551
+ #: src/includes/updraftplus-notices.php:97
4552
  msgid "Introducing UpdraftCentral"
4553
  msgstr ""
4554
 
4555
+ #: src/includes/updraftplus-notices.php:98
4556
  msgid "UpdraftCentral is a highly efficient way to manage, update and backup multiple websites from one place."
4557
  msgstr ""
4558
 
4559
+ #: src/includes/updraftplus-notices.php:107
4560
+ msgid "Do you use UpdraftPlus on multiple sites?"
4561
  msgstr ""
4562
 
4563
+ #: src/includes/updraftplus-notices.php:108
4564
+ msgid "Control all your WordPress installations from one place using UpdraftCentral remote site management!"
4565
  msgstr ""
4566
 
4567
+ #: src/includes/updraftplus-notices.php:117
4568
+ msgid "Like UpdraftPlus and can spare one minute?"
4569
  msgstr ""
4570
 
4571
+ #: src/includes/updraftplus-notices.php:118
4572
+ msgid "Please help UpdraftPlus by giving a positive review at wordpress.org."
4573
  msgstr ""
4574
 
4575
+ #: src/includes/updraftplus-notices.php:138
4576
  msgid "UpdraftPlus is on social media - check us out!"
4577
  msgstr ""
4578
 
4579
+ #: src/includes/updraftplus-notices.php:139, src/includes/updraftplus-notices.php:140, src/templates/wp-admin/settings/header.php:16
4580
  msgid "Twitter"
4581
  msgstr ""
4582
 
4583
+ #: src/includes/updraftplus-notices.php:139, src/includes/updraftplus-notices.php:140
4584
  msgid "Facebook"
4585
  msgstr ""
4586
 
4587
+ #: src/includes/updraftplus-notices.php:139, src/includes/updraftplus-notices.php:140
4588
  msgid "Google+"
4589
  msgstr ""
4590
 
4591
+ #: src/includes/updraftplus-notices.php:139, src/includes/updraftplus-notices.php:140
4592
  msgid "LinkedIn"
4593
  msgstr ""
4594
 
4595
+ #: src/includes/updraftplus-notices.php:147
4596
  msgid "UpdraftPlus Newsletter"
4597
  msgstr ""
4598
 
4599
+ #: src/includes/updraftplus-notices.php:148
4600
  msgid "Follow this link to sign up for the UpdraftPlus newsletter."
4601
  msgstr ""
4602
 
4603
+ #: src/includes/updraftplus-notices.php:158, src/includes/updraftplus-notices.php:168
4604
  msgid "UpdraftPlus Blog - get up-to-date news and offers"
4605
  msgstr ""
4606
 
4607
+ #: src/includes/updraftplus-notices.php:159, src/includes/updraftplus-notices.php:160, src/includes/updraftplus-notices.php:169, src/includes/updraftplus-notices.php:170
4608
  msgid "Blog link"
4609
  msgstr ""
4610
 
4611
+ #: src/includes/updraftplus-notices.php:159, src/includes/updraftplus-notices.php:160, src/includes/updraftplus-notices.php:169, src/includes/updraftplus-notices.php:170
4612
  msgid "RSS link"
4613
  msgstr ""
4614
 
4615
+ #: src/includes/updraftplus-notices.php:179
4616
  msgid "UpdraftPlus Premium can automatically backup your plugins/themes/database before you update, without you needing to remember."
4617
  msgstr ""
4618
 
4619
+ #: src/includes/updraftplus-notices.php:189
4620
  msgid "After you've backed up your database, we recommend you install our WP-Optimize plugin to streamline it for better website performance."
4621
  msgstr ""
4622
 
4623
+ #: src/includes/updraftplus-notices.php:200
4624
  msgid "Instant and secure logon with a wave of your phone."
4625
  msgstr ""
4626
 
4627
+ #: src/includes/updraftplus-notices.php:200
4628
  msgid "No more forgotten passwords. Find out more about our revolutionary new WordPress plugin"
4629
  msgstr ""
4630
 
4631
+ #: src/includes/updraftplus-notices.php:209
4632
  msgid "With Metaslider, you can easily add style and flare with beautifully-designed sliders."
4633
  msgstr ""
4634
 
4635
+ #: src/includes/updraftplus-notices.php:219
4636
  msgid "Black Friday - 20% off UpdraftPlus Premium until November 30th"
4637
  msgstr ""
4638
 
4639
+ #: src/includes/updraftplus-notices.php:220, src/includes/updraftplus-notices.php:234, src/includes/updraftplus-notices.php:248, src/includes/updraftplus-notices.php:262, src/includes/updraftplus-notices.php:276
4640
  msgid "To benefit, use this discount code:"
4641
  msgstr ""
4642
 
4643
+ #: src/includes/updraftplus-notices.php:233
4644
  msgid "Christmas sale - 20% off UpdraftPlus Premium until December 25th"
4645
  msgstr ""
4646
 
4647
+ #: src/includes/updraftplus-notices.php:247
4648
  msgid "Happy New Year - 20% off UpdraftPlus Premium until January 14th"
4649
  msgstr ""
4650
 
4651
+ #: src/includes/updraftplus-notices.php:261
4652
  msgid "Spring sale - 20% off UpdraftPlus Premium until April 30th"
4653
  msgstr ""
4654
 
4655
+ #: src/includes/updraftplus-notices.php:275
4656
  msgid "Summer sale - 20% off UpdraftPlus Premium until July 31st"
4657
  msgstr ""
4658
 
4879
  msgid "Follow this link to remove these settings for %s."
4880
  msgstr ""
4881
 
4882
+ #: src/methods/cloudfiles-new.php:100, src/methods/cloudfiles.php:440, src/methods/openstack-base.php:571, src/methods/s3.php:868
4883
  msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support."
4884
  msgstr ""
4885
 
4886
+ #: src/methods/cloudfiles-new.php:100, src/methods/cloudfiles.php:440, src/methods/openstack-base.php:571, src/methods/s3.php:868
4887
  msgid "UpdraftPlus's %s module <strong>requires</strong> %s. Please do not file any support requests; there is no alternative."
4888
  msgstr ""
4889
 
4890
  #: src/methods/cloudfiles-new.php:102, src/methods/cloudfiles.php:446
4891
+ msgid "Get your API key <a href=\"https://mycloud.rackspace.com/\" target=\"_blank\">from your Rackspace Cloud console</a> (read instructions <a href=\"http://www.rackspace.com/knowledge_center/article/rackspace-cloud-essentials-1-generating-your-api-key\" target=\"_blank\">here</a>), then pick a container name to use for storage. This container will be created for you if it does not already exist."
4892
  msgstr ""
4893
 
4894
  #: src/methods/cloudfiles-new.php:102, src/methods/cloudfiles.php:446, src/methods/openstack2.php:120
4915
  msgid "Cloud Files API Key"
4916
  msgstr ""
4917
 
4918
+ #: src/methods/cloudfiles-new.php:184, src/methods/cloudfiles.php:519, src/methods/s3.php:1136
4919
  msgid "API key"
4920
  msgstr ""
4921
 
4979
  msgid "Closing 1st October 2018"
4980
  msgstr ""
4981
 
4982
+ #: src/methods/dreamobjects.php:115, src/methods/s3generic.php:106
4983
  msgid "%s end-point"
4984
  msgstr ""
4985
 
5293
  msgid "tenant"
5294
  msgstr ""
5295
 
5296
+ #: src/methods/s3.php:130
5297
  msgid "No settings were found - please go to the Settings tab and check your settings"
5298
  msgstr ""
5299
 
5300
+ #: src/methods/s3.php:181, src/methods/s3.php:182, src/methods/s3.php:183, src/methods/s3.php:191, src/methods/s3.php:192, src/methods/s3.php:193
5301
  msgid "%s Error: Failed to initialise"
5302
  msgstr ""
5303
 
5304
+ #: src/methods/s3.php:314
5305
  msgid "The required %s PHP module is not installed - ask your web hosting company to enable it"
5306
  msgstr ""
5307
 
5308
+ #: src/methods/s3.php:413
5309
  msgid "%s upload: getting uploadID for multipart upload failed - see log file for more details"
5310
  msgstr ""
5311
 
5312
+ #: src/methods/s3.php:435
5313
  msgid "%s error: file %s was shortened unexpectedly"
5314
  msgstr ""
5315
 
5316
+ #: src/methods/s3.php:445
5317
  msgid "%s chunk %s: upload failed"
5318
  msgstr ""
5319
 
5320
+ #: src/methods/s3.php:461
5321
  msgid "%s upload (%s): re-assembly failed (see log for more details)"
5322
  msgstr ""
5323
 
5324
+ #: src/methods/s3.php:465
5325
  msgid "%s re-assembly error (%s): (see log file for more)"
5326
  msgstr ""
5327
 
5328
+ #: src/methods/s3.php:487
5329
  msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials.1"
5330
  msgstr ""
5331
 
5332
+ #: src/methods/s3.php:603, src/methods/s3.php:676, src/methods/s3.php:781
5333
  msgid "%s Error: Failed to access bucket %s. Check your permissions and credentials."
5334
  msgstr ""
5335
 
5336
+ #: src/methods/s3.php:764, src/methods/s3.php:774, src/methods/s3.php:810
5337
  msgid "%s Error: Failed to download %s. Check your permissions and credentials."
5338
  msgstr ""
5339
 
5340
+ #: src/methods/s3.php:855
5341
  msgid "... and many more!"
5342
  msgstr ""
5343
 
5344
+ #: src/methods/s3.php:864
5345
  msgid "Your web server's PHP installation does not included a required module (%s). Please contact your web hosting provider's support and ask for them to enable it."
5346
  msgstr ""
5347
 
5348
+ #: src/methods/s3.php:874
5349
  msgid "Get your access key and secret key <a href=\"%s\">from your %s console</a>, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist."
5350
  msgstr ""
5351
 
5352
+ #: src/methods/s3.php:876
5353
  msgid "If you see errors about SSL certificates, then please go here for help."
5354
  msgstr ""
5355
 
5356
+ #: src/methods/s3.php:878
5357
  msgid "Other %s FAQs."
5358
  msgstr ""
5359
 
5360
+ #: src/methods/s3.php:928
5361
  msgid "To create a new IAM sub-user and access key that has access only to this bucket, use this add-on."
5362
  msgstr ""
5363
 
5364
+ #: src/methods/s3.php:937
5365
  msgid "%s access key"
5366
  msgstr ""
5367
 
5368
+ #: src/methods/s3.php:941
5369
  msgid "%s secret key"
5370
  msgstr ""
5371
 
5372
+ #: src/methods/s3.php:945
5373
  msgid "%s location"
5374
  msgstr ""
5375
 
5376
+ #: src/methods/s3.php:946
5377
  msgid "Enter only a bucket name or a bucket and path. Examples: mybucket, mybucket/mypath"
5378
  msgstr ""
5379
 
5380
+ #: src/methods/s3.php:1140
5381
  msgid "API secret"
5382
  msgstr ""
5383
 
5384
+ #: src/methods/s3.php:1191
5385
  msgid "The AWS access key looks to be wrong (valid %s access keys begin with \"AK\")"
5386
  msgstr ""
5387
 
5388
+ #: src/methods/s3.php:1205
5389
  msgid "The communication with %s was encrypted."
5390
  msgstr ""
5391
 
5392
+ #: src/methods/s3.php:1207
5393
  msgid "The communication with %s was not encrypted."
5394
  msgstr ""
5395
 
5396
+ #: src/methods/s3.php:1212
5397
  msgid "Please check your access credentials."
5398
  msgstr ""
5399
 
5400
+ #: src/methods/s3generic.php:63, src/methods/s3generic.php:74, src/methods/s3generic.php:85
5401
  msgid "S3 (Compatible)"
5402
  msgstr ""
5403
 
5425
  msgid "UpdraftVault"
5426
  msgstr ""
5427
 
5428
+ #: src/methods/updraftvault.php:104
5429
  msgid "Updraft Vault"
5430
  msgstr ""
5431
 
5432
+ #: src/methods/updraftvault.php:255
5433
  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."
5434
  msgstr ""
5435
 
5436
+ #: src/methods/updraftvault.php:258
5437
  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!"
5438
  msgstr ""
5439
 
5440
+ #: src/methods/updraftvault.php:261
5441
  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."
5442
  msgstr ""
5443
 
5444
+ #: src/methods/updraftvault.php:266
5445
  msgid "No Vault connection was found for this site (has it moved?); please disconnect and re-connect."
5446
  msgstr ""
5447
 
5448
+ #: src/methods/updraftvault.php:316, src/methods/updraftvault.php:333
5449
  msgid "UpdraftPlus Vault brings you storage that is <strong>reliable, easy to use and a great price</strong>."
5450
  msgstr ""
5451
 
5452
+ #: src/methods/updraftvault.php:316, src/methods/updraftvault.php:333
5453
  msgid "Press a button to get started."
5454
  msgstr ""
5455
 
5456
+ #: src/methods/updraftvault.php:319
5457
  msgid "First time user?"
5458
  msgstr ""
5459
 
5460
+ #: src/methods/updraftvault.php:320
5461
  msgid "Show the options"
5462
  msgstr ""
5463
 
5464
+ #: src/methods/updraftvault.php:323
5465
  msgid "Already purchased space?"
5466
  msgstr ""
5467
 
5468
+ #: src/methods/updraftvault.php:327, src/methods/updraftvault.php:356
5469
  msgid "UpdraftPlus Vault is built on top of Amazon's world-leading data-centres, with redundant data storage to achieve 99.999999999% reliability."
5470
  msgstr ""
5471
 
5472
+ #: src/methods/updraftvault.php:327, src/methods/updraftvault.php:356
5473
  msgid "Read the FAQs here."
5474
  msgstr ""
5475
 
5476
+ #: src/methods/updraftvault.php:336, src/methods/updraftvault.php:342, src/methods/updraftvault.php:348
5477
  msgid "%s per quarter"
5478
  msgstr ""
5479
 
5480
+ #: src/methods/updraftvault.php:337, src/methods/updraftvault.php:343, src/methods/updraftvault.php:349
5481
  msgid "or (annual discount)"
5482
  msgstr ""
5483
 
5484
+ #: src/methods/updraftvault.php:338, src/methods/updraftvault.php:344, src/methods/updraftvault.php:350
5485
  msgid "%s per year"
5486
  msgstr ""
5487
 
5488
+ #: src/methods/updraftvault.php:353
5489
  msgid "Payments can be made in US dollars, euros or GB pounds sterling, via card or PayPal."
5490
  msgstr ""
5491
 
5492
+ #: src/methods/updraftvault.php:353
5493
  msgid "Subscriptions can be cancelled at any time."
5494
  msgstr ""
5495
 
5496
+ #: src/methods/updraftvault.php:363
5497
  msgid "Enter your UpdraftPlus.Com email / password here to connect:"
5498
  msgstr ""
5499
 
5500
+ #: src/methods/updraftvault.php:365
5501
  msgid "E-mail"
5502
  msgstr ""
5503
 
5504
+ #: src/methods/updraftvault.php:370
5505
  msgid "Don't know your email address, or forgotten your password?"
5506
  msgstr ""
5507
 
5508
+ #: src/methods/updraftvault.php:370
5509
  msgid "Go here for help"
5510
  msgstr ""
5511
 
5512
+ #: src/methods/updraftvault.php:393, src/methods/updraftvault.php:445
5513
  msgid "This site is <strong>connected</strong> to UpdraftPlus Vault."
5514
  msgstr ""
5515
 
5516
+ #: src/methods/updraftvault.php:393, src/methods/updraftvault.php:445
5517
  msgid "Well done - there's nothing more needed to set up."
5518
  msgstr ""
5519
 
5520
+ #: src/methods/updraftvault.php:393, src/methods/updraftvault.php:445
5521
  msgid "Vault owner"
5522
  msgstr ""
5523
 
5524
+ #: src/methods/updraftvault.php:394, src/methods/updraftvault.php:447
5525
  msgid "Quota:"
5526
  msgstr ""
5527
 
5528
+ #: src/methods/updraftvault.php:399, src/methods/updraftvault.php:441
5529
  msgid "You are <strong>not connected</strong> to UpdraftPlus Vault."
5530
  msgstr ""
5531
 
5532
+ #: src/methods/updraftvault.php:463
5533
  msgid "%s Error: you have insufficient storage quota available (%s) to upload this archive (%s)."
5534
  msgstr ""
5535
 
5536
+ #: src/methods/updraftvault.php:463
5537
  msgid "You can get more quota here"
5538
  msgstr ""
5539
 
5540
+ #: src/methods/updraftvault.php:468, src/methods/updraftvault.php:484, src/methods/updraftvault.php:528
5541
  msgid "Current use:"
5542
  msgstr ""
5543
 
5544
+ #: src/methods/updraftvault.php:471, src/methods/updraftvault.php:487, src/methods/updraftvault.php:489, src/methods/updraftvault.php:547
5545
  msgid "Get more quota"
5546
  msgstr ""
5547
 
5548
+ #: src/methods/updraftvault.php:473, src/methods/updraftvault.php:547
5549
  msgid "Refresh current status"
5550
  msgstr ""
5551
 
5552
+ #: src/methods/updraftvault.php:661, src/udaddons/updraftplus-addons.php:867
5553
  msgid "You need to supply both an email address and a password"
5554
  msgstr ""
5555
 
5556
+ #: src/methods/updraftvault.php:712
5557
  msgid "You do not currently have any UpdraftPlus Vault quota"
5558
  msgstr ""
5559
 
5560
+ #: src/methods/updraftvault.php:714, src/methods/updraftvault.php:729, src/udaddons/updraftplus-addons.php:1012
5561
  msgid "UpdraftPlus.Com returned a response, but we could not understand it"
5562
  msgstr ""
5563
 
5564
+ #: src/methods/updraftvault.php:720, src/udaddons/updraftplus-addons.php:1001
5565
  msgid "Your email address was valid, but your password was not recognised by UpdraftPlus.Com."
5566
  msgstr ""
5567
 
5568
+ #: src/methods/updraftvault.php:720
5569
  msgid "If you have forgotten your password, then go here to change your password on updraftplus.com."
5570
  msgstr ""
5571
 
5572
+ #: src/methods/updraftvault.php:723, src/udaddons/updraftplus-addons.php:1005
5573
  msgid "You entered an email address that was not recognised by UpdraftPlus.Com"
5574
  msgstr ""
5575
 
5576
+ #: src/methods/updraftvault.php:726, src/udaddons/updraftplus-addons.php:1008
5577
  msgid "Your email address and password were not recognised by UpdraftPlus.Com"
5578
  msgstr ""
5579
 
5597
  msgid "(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility)."
5598
  msgstr ""
5599
 
5600
+ #: src/restorer.php:169
5601
+ msgid "Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old)."
5602
+ msgstr ""
5603
+
5604
+ #: src/restorer.php:297
5605
  msgid "Skipping restoration of WordPress core when importing a single site into a multisite installation. If you had anything necessary in your WordPress directory then you will need to re-add it manually from the zip file."
5606
  msgstr ""
5607
 
5608
+ #: src/restorer.php:308
5609
  msgid "Looking for %s archive: file name: %s"
5610
  msgstr ""
5611
 
5612
+ #: src/restorer.php:311
5613
  msgid "Skipping: this archive was already restored."
5614
  msgstr ""
5615
 
5616
+ #: src/restorer.php:323
5617
  msgid "Archive is expected to be size:"
5618
  msgstr ""
5619
 
5620
+ #: src/restorer.php:328
5621
  msgid "file is size:"
5622
  msgstr ""
5623
 
5624
+ #: src/restorer.php:331
5625
  msgid "The backup records do not contain information about the proper size of this file."
5626
  msgstr ""
5627
 
5628
+ #: src/restorer.php:334, src/restorer.php:335
5629
  msgid "Could not find one of the files for restoration"
5630
  msgstr ""
5631
 
5632
+ #: src/restorer.php:417
5633
+ msgid "Final checks"
5634
+ msgstr ""
5635
+
5636
+ #: src/restorer.php:506
5637
  msgid "Error message"
5638
  msgstr ""
5639
 
5640
+ #: src/restorer.php:623
5641
  msgid "UpdraftPlus is not able to directly restore this kind of entity. It must be restored manually."
5642
  msgstr ""
5643
 
5644
+ #: src/restorer.php:624
5645
  msgid "Backup file not available."
5646
  msgstr ""
5647
 
5648
+ #: src/restorer.php:625
5649
  msgid "Copying this entity failed."
5650
  msgstr ""
5651
 
5652
+ #: src/restorer.php:626
5653
  msgid "Unpacking backup..."
5654
  msgstr ""
5655
 
5656
+ #: src/restorer.php:627
5657
  msgid "Decrypting database (can take a while)..."
5658
  msgstr ""
5659
 
5660
+ #: src/restorer.php:628
5661
  msgid "Database successfully decrypted."
5662
  msgstr ""
5663
 
5664
+ #: src/restorer.php:629
5665
  msgid "Moving old data out of the way..."
5666
  msgstr ""
5667
 
5668
+ #: src/restorer.php:630
5669
  msgid "Moving unpacked backup into place..."
5670
  msgstr ""
5671
 
5672
+ #: src/restorer.php:631
5673
  msgid "Restoring the database (on a large site this can take a long time - if it times out (which can happen if your web hosting company has configured your hosting to limit resources) then you should use a different method, such as phpMyAdmin)..."
5674
  msgstr ""
5675
 
5676
+ #: src/restorer.php:632
5677
  msgid "Cleaning up rubbish..."
5678
  msgstr ""
5679
 
5680
+ #: src/restorer.php:633
5681
  msgid "Could not move old files out of the way."
5682
  msgstr ""
5683
 
5684
+ #: src/restorer.php:633
5685
  msgid "You should check the file ownerships and permissions in your WordPress installation"
5686
  msgstr ""
5687
 
5688
+ #: src/restorer.php:634
5689
  msgid "Could not delete old directory."
5690
  msgstr ""
5691
 
5692
+ #: src/restorer.php:635
5693
  msgid "Could not move new files into place. Check your wp-content/upgrade folder."
5694
  msgstr ""
5695
 
5696
+ #: src/restorer.php:636
5697
  msgid "Could not move the files into place. Check your file permissions."
5698
  msgstr ""
5699
 
5700
+ #: src/restorer.php:637
5701
  msgid "Failed to delete working directory after restoring."
5702
  msgstr ""
5703
 
5704
+ #: src/restorer.php:639
5705
  msgid "Failed to unpack the archive"
5706
  msgstr ""
5707
 
5708
+ #: src/restorer.php:640
5709
  msgid "Failed to read the manifest file from backup."
5710
  msgstr ""
5711
 
5712
+ #: src/restorer.php:641
5713
  msgid "Failed to find a manifest file in the backup."
5714
  msgstr ""
5715
 
5716
+ #: src/restorer.php:642
5717
  msgid "Failed to read from the working directory."
5718
  msgstr ""
5719
 
5720
+ #: src/restorer.php:868
5721
  msgid "Failed to create a temporary directory"
5722
  msgstr ""
5723
 
5724
+ #: src/restorer.php:884
5725
  msgid "Failed to write out the decrypted database to the filesystem"
5726
  msgstr ""
5727
 
5728
+ #: src/restorer.php:961
5729
  msgid "The directory does not exist"
5730
  msgstr ""
5731
 
5732
+ #: src/restorer.php:1001
5733
  msgid "wp-config.php from backup: will restore as wp-config-backup.php"
5734
  msgstr ""
5735
 
5736
+ #: src/restorer.php:1008
5737
  msgid "wp-config.php from backup: restoring (as per user's request)"
5738
  msgstr ""
5739
 
5740
+ #: src/restorer.php:1191, src/restorer.php:1199
5741
  msgid "UpdraftPlus needed to create a %s in your content directory, but failed - please check your file permissions and enable the access (%s)"
5742
  msgstr ""
5743
 
5744
+ #: src/restorer.php:1199
5745
  msgid "file"
5746
  msgstr ""
5747
 
5748
+ #: src/restorer.php:1214
5749
  msgid "Existing unremoved folders from a previous restore exist (please use the \"Delete Old Directories\" button to delete them before trying again): %s"
5750
  msgstr ""
5751
 
5752
+ #: src/restorer.php:1221
5753
  msgid "This version of UpdraftPlus does not know how to handle this type of foreign backup"
5754
  msgstr ""
5755
 
5756
+ #: src/restorer.php:1324
5757
  msgid "Deferring..."
5758
  msgstr ""
5759
 
5760
+ #: src/restorer.php:1367, src/restorer.php:1415
5761
  msgid "The WordPress content folder (wp-content) was not found in this zip file."
5762
  msgstr ""
5763
 
5764
+ #: src/restorer.php:1508
5765
  msgid "Files found:"
5766
  msgstr ""
5767
 
5768
+ #: src/restorer.php:2035
5769
  msgid "Please supply the requested information, and then continue."
5770
  msgstr ""
5771
 
5772
+ #: src/restorer.php:2108
5773
  msgid "Warning: PHP safe_mode is active on your server. Timeouts are much more likely. If these happen, then you will need to manually restore the file via phpMyAdmin or another method."
5774
  msgstr ""
5775
 
5776
+ #: src/restorer.php:2131
5777
  msgid "Failed to find database file"
5778
  msgstr ""
5779
 
5780
+ #: src/restorer.php:2152
5781
  msgid "Failed to open database file"
5782
  msgstr ""
5783
 
5784
+ #: src/restorer.php:2232, src/restorer.php:2274
5785
  msgid "Your database user does not have permission to drop tables"
5786
  msgstr ""
5787
 
5788
+ #: src/restorer.php:2235
5789
  msgid "Your database user does not have permission to create tables. We will attempt to restore by simply emptying the tables; this should work as long as a) you are restoring from a WordPress version with the same database structure, and b) Your imported database does not contain any tables which are not already present on the importing site."
5790
  msgstr ""
5791
 
5792
+ #: src/restorer.php:2279
5793
  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)"
5794
  msgstr ""
5795
 
5796
+ #: src/restorer.php:2325
5797
  msgid "Backup of: %s"
5798
  msgstr ""
5799
 
5800
+ #: src/restorer.php:2332
5801
  msgid "Backup created by:"
5802
  msgstr ""
5803
 
5804
+ #: src/restorer.php:2337
5805
  msgid "Site home:"
5806
  msgstr ""
5807
 
5808
+ #: src/restorer.php:2343
5809
  msgid "Content URL:"
5810
  msgstr ""
5811
 
5812
+ #: src/restorer.php:2348
5813
  msgid "Uploads URL:"
5814
  msgstr ""
5815
 
5816
+ #: src/restorer.php:2359
5817
  msgid "Skipped tables:"
5818
  msgstr ""
5819
 
5820
+ #: src/restorer.php:2399
5821
  msgid "Split line to avoid exceeding maximum packet size"
5822
  msgstr ""
5823
 
5824
+ #: src/restorer.php:2424, src/restorer.php:2893, src/restorer.php:2934, src/restorer.php:2947
5825
  msgid "An error occurred on the first %s command - aborting run"
5826
  msgstr ""
5827
 
5828
+ #: src/restorer.php:2525
5829
  msgid "Requested table engine (%s) is not present - changing to MyISAM."
5830
  msgstr ""
5831
 
5832
+ #: src/restorer.php:2538
5833
  msgid "Requested table character set (%s) is not present - changing to %s."
5834
  msgstr ""
5835
 
5836
+ #: src/restorer.php:2588
5837
  msgid "Requested table collation (%1$s) is not present - changing to %2$s."
5838
  msgid_plural "Requested table collations (%1$s) are not present - changing to %2$s."
5839
  msgstr[0] ""
5840
  msgstr[1] ""
5841
 
5842
+ #: src/restorer.php:2590
5843
  msgid "Processing table (%s)"
5844
  msgstr ""
5845
 
5846
+ #: src/restorer.php:2594
5847
  msgid "will restore as:"
5848
  msgstr ""
5849
 
5850
+ #: src/restorer.php:2633
5851
  msgid "Found SET NAMES %s, but changing to %s as suggested by WPDB::determine_charset()."
5852
  msgstr ""
5853
 
5854
+ #: src/restorer.php:2639
5855
  msgid "Requested character set (%s) is not present - changing to %s."
5856
  msgstr ""
5857
 
5858
+ #: src/restorer.php:2787
5859
  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"
5860
  msgstr ""
5861
 
5862
+ #: src/restorer.php:2924
5863
  msgctxt "The user is being told the number of times an error has happened, e.g. An error (27) occurred"
5864
  msgid "An error (%s) occurred:"
5865
  msgstr ""
5866
 
5867
+ #: src/restorer.php:2945
5868
  msgid "This problem is caused by trying to restore a database on a very old MySQL version that is incompatible with the source database."
5869
  msgstr ""
5870
 
5871
+ #: src/restorer.php:2945
5872
  msgid "This database needs to be deployed on MySQL version %s or later."
5873
  msgstr ""
5874
 
5875
+ #: src/restorer.php:2947
5876
  msgid "To use this backup, your database server needs to support the %s character set."
5877
  msgstr ""
5878
 
5879
+ #: src/restorer.php:2952
5880
  msgid "Too many database errors have occurred - aborting"
5881
  msgstr ""
5882
 
5883
+ #: src/restorer.php:3072, src/restorer.php:3147
5884
  msgid "Table prefix has changed: changing %s table field(s) accordingly:"
5885
  msgstr ""
5886
 
7065
  msgid "Your web server's version of PHP is too old (%s) - 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"
7066
  msgstr ""
7067
 
7068
+ #: src/udaddons/options.php:232
7069
  msgid "You are presently <strong>connected</strong> to an UpdraftPlus.Com account."
7070
  msgstr ""
7071
 
7072
+ #: src/udaddons/options.php:237
7073
  msgid "If you bought new add-ons, then follow this link to refresh your connection"
7074
  msgstr ""
7075
 
7076
+ #: src/udaddons/options.php:238
7077
  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."
7078
  msgstr ""
7079
 
7080
+ #: src/udaddons/options.php:241
7081
  msgid "You are presently <strong>not connected</strong> to an UpdraftPlus.Com account."
7082
  msgstr ""
7083
 
7084
+ #: src/udaddons/options.php:248
7085
  msgid "Errors occurred when trying to connect to UpdraftPlus.Com:"
7086
  msgstr ""
7087
 
7088
+ #: src/udaddons/options.php:294
7089
  msgid "Please wait whilst we make the claim..."
7090
  msgstr ""
7091
 
7092
+ #: src/udaddons/options.php:295
7093
  msgid "Claim not granted - perhaps you have already used this purchase somewhere else, or your paid period for downloading from updraftplus.com has expired?"
7094
  msgstr ""
7095
 
7096
+ #: src/udaddons/options.php:296
7097
  msgid "Claim not granted - your account login details were wrong"
7098
  msgstr ""
7099
 
7100
+ #: src/udaddons/options.php:297
7101
  msgid "An unknown response was received. Response was:"
7102
  msgstr ""
7103
 
7104
+ #: src/udaddons/options.php:298
7105
  msgid "The claim and installation was successful. You can now use your purchase!"
7106
  msgstr ""
7107
 
7108
+ #: src/udaddons/options.php:354, src/udaddons/updraftplus-addons.php:315
7109
  msgid "UpdraftPlus Addons"
7110
  msgstr ""
7111
 
7112
+ #: src/udaddons/options.php:365
7113
  msgid "An update containing your addons is available for UpdraftPlus - please follow this link to get it."
7114
  msgstr ""
7115
 
7116
+ #: src/udaddons/options.php:414
7117
  msgid "An error occurred when trying to retrieve your add-ons."
7118
  msgstr ""
7119
 
7120
+ #: src/udaddons/options.php:430
7121
  msgid "UpdraftPlus Support"
7122
  msgstr ""
7123
 
7124
+ #: src/udaddons/options.php:432
7125
  msgid "Need to get support?"
7126
  msgstr ""
7127
 
7128
+ #: src/udaddons/options.php:432
7129
  msgid "Go here"
7130
  msgstr ""
7131
 
7132
+ #: src/udaddons/options.php:469, src/udaddons/options.php:469
7133
  msgid "You've got it"
7134
  msgstr ""
7135
 
7136
+ #: src/udaddons/options.php:471
7137
  msgid "Your version: %s"
7138
  msgstr ""
7139
 
7140
+ #: src/udaddons/options.php:473, src/udaddons/options.php:475
7141
  msgid "latest"
7142
  msgstr ""
7143
 
7144
+ #: src/udaddons/options.php:477
7145
  msgid "(apparently a pre-release or withdrawn release)"
7146
  msgstr ""
7147
 
7148
+ #: src/udaddons/options.php:483
7149
  msgid "Available for this site (via your all-addons purchase)"
7150
  msgstr ""
7151
 
7152
+ #: src/udaddons/options.php:483
7153
  msgid "please follow this link to update the plugin in order to get it"
7154
  msgstr ""
7155
 
7156
+ #: src/udaddons/options.php:486
7157
  msgid "Assigned to this site"
7158
  msgstr ""
7159
 
7160
+ #: src/udaddons/options.php:486
7161
  msgid "please follow this link to update the plugin in order to activate it"
7162
  msgstr ""
7163
 
7164
+ #: src/udaddons/options.php:492
7165
  msgid "Available to claim on this site"
7166
  msgstr ""
7167
 
7168
+ #: src/udaddons/options.php:492, src/udaddons/options.php:494
7169
  msgid "activate it on this site"
7170
  msgstr ""
7171
 
7172
+ #: src/udaddons/options.php:494
7173
  msgid "You have an inactive purchase"
7174
  msgstr ""
7175
 
7176
+ #: src/udaddons/options.php:498
7177
  msgid "Get it from the UpdraftPlus.Com Store"
7178
  msgstr ""
7179
 
7180
+ #: src/udaddons/options.php:498
7181
  msgid "(or connect using the form on this page if you have already purchased it)"
7182
  msgstr ""
7183
 
7184
+ #: src/udaddons/options.php:499, src/udaddons/options.php:499
7185
  msgid "Buy It"
7186
  msgstr ""
7187
 
7188
+ #: src/udaddons/options.php:521
7189
  msgid "Manage Addons"
7190
  msgstr ""
7191
 
methods/addon-base-v2.php CHANGED
@@ -63,7 +63,7 @@ abstract class UpdraftPlus_RemoteStorage_Addons_Base_v2 extends UpdraftPlus_Back
63
  protected function required_configuration_keys() {
64
  }
65
 
66
- public function upload_files($ret, $backup_array) {
67
 
68
  global $updraftplus;
69
 
@@ -127,7 +127,7 @@ abstract class UpdraftPlus_RemoteStorage_Addons_Base_v2 extends UpdraftPlus_Back
127
 
128
  }
129
 
130
- public function delete_files($ret, $files, $ignore_it = false) {
131
 
132
  global $updraftplus;
133
 
63
  protected function required_configuration_keys() {
64
  }
65
 
66
+ public function upload_files($ret, $backup_array) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
67
 
68
  global $updraftplus;
69
 
127
 
128
  }
129
 
130
+ public function delete_files($ret, $files, $ignore_it = false) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
131
 
132
  global $updraftplus;
133
 
methods/addon-not-yet-present.php CHANGED
@@ -19,7 +19,7 @@ class UpdraftPlus_BackupModule_AddonNotYetPresent extends UpdraftPlus_BackupModu
19
  $this->error_msg_trans = sprintf(__('This remote storage method (%s) requires PHP %s or later.', 'updraftplus'), $this->description, $this->required_php);
20
  }
21
 
22
- public function backup($backup_array) {
23
 
24
  global $updraftplus;
25
 
@@ -59,7 +59,7 @@ class UpdraftPlus_BackupModule_AddonNotYetPresent extends UpdraftPlus_BackupModu
59
  return array('multi_options', 'config_templates');
60
  }
61
 
62
- public function delete($files, $method_obj = false, $sizeinfo = array()) {
63
 
64
  global $updraftplus;
65
 
@@ -71,7 +71,7 @@ class UpdraftPlus_BackupModule_AddonNotYetPresent extends UpdraftPlus_BackupModu
71
 
72
  }
73
 
74
- public function listfiles($match = 'backup_') {
75
  return new WP_Error('no_addon', sprintf(__('You do not have the UpdraftPlus %s add-on installed - get it from %s', 'updraftplus'), $this->description, ''.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/")));
76
  }
77
 
@@ -81,7 +81,7 @@ class UpdraftPlus_BackupModule_AddonNotYetPresent extends UpdraftPlus_BackupModu
81
  * @return String - the template, ready for substitutions to be carried out
82
  */
83
  public function get_configuration_template() {
84
- $link = sprintf(__('%s support is available as an add-on', 'updraftplus'), $this->description).' - <a href="'.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/".$this->method."/").'">'.__('follow this link to get it', 'updraftplus');
85
 
86
  $default = '
87
  <tr class="updraftplusmethod '.$this->method.'">
19
  $this->error_msg_trans = sprintf(__('This remote storage method (%s) requires PHP %s or later.', 'updraftplus'), $this->description, $this->required_php);
20
  }
21
 
22
+ public function backup($backup_array) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
23
 
24
  global $updraftplus;
25
 
59
  return array('multi_options', 'config_templates');
60
  }
61
 
62
+ public function delete($files, $method_obj = false, $sizeinfo = array()) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
63
 
64
  global $updraftplus;
65
 
71
 
72
  }
73
 
74
+ public function listfiles($match = 'backup_') {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
75
  return new WP_Error('no_addon', sprintf(__('You do not have the UpdraftPlus %s add-on installed - get it from %s', 'updraftplus'), $this->description, ''.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/")));
76
  }
77
 
81
  * @return String - the template, ready for substitutions to be carried out
82
  */
83
  public function get_configuration_template() {
84
+ $link = sprintf(__('%s support is available as an add-on', 'updraftplus'), $this->description).' - <a href="'.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/".$this->method."/").'" target="_blank">'.__('follow this link to get it', 'updraftplus');
85
 
86
  $default = '
87
  <tr class="updraftplusmethod '.$this->method.'">
methods/cloudfiles-new.php CHANGED
@@ -99,7 +99,7 @@ class UpdraftPlus_BackupModule_cloudfiles_opencloudsdk extends UpdraftPlus_Backu
99
  if (!function_exists('json_last_error')) {
100
  $updraftplus_admin->show_double_warning('<strong>'.__('Warning', 'updraftplus').':</strong> '.sprintf(__('Your web server\'s PHP installation does not included a required module (%s). Please contact your web hosting provider\'s support.', 'updraftplus'), 'json').' '.sprintf(__("UpdraftPlus's %s module <strong>requires</strong> %s. Please do not file any support requests; there is no alternative.", 'updraftplus'), 'Cloud Files', 'json'), 'cloudfiles', false);
101
  }
102
- echo '<p>' . __('Get your API key <a href="https://mycloud.rackspace.com/">from your Rackspace Cloud console</a> (read instructions <a href="http://www.rackspace.com/knowledge_center/article/rackspace-cloud-essentials-1-generating-your-api-key">here</a>), then pick a container name to use for storage. This container will be created for you if it does not already exist.', 'updraftplus').' <a href="'.apply_filters("updraftplus_com_link", "https://updraftplus.com/faqs/there-appear-to-be-lots-of-extra-files-in-my-rackspace-cloud-files-container/").'">'.__('Also, you should read this important FAQ.', 'updraftplus').'</a></p>';
103
  }
104
 
105
  /**
@@ -134,7 +134,7 @@ class UpdraftPlus_BackupModule_cloudfiles_opencloudsdk extends UpdraftPlus_Backu
134
  <th>'.__('Cloud Files Username', 'updraftplus').':</th>
135
  <td><input data-updraft_settings_test="user" type="text" autocomplete="off" class="updraft_input--wide" '.$this->output_settings_field_name_and_id('user', true).' value="{{user}}" />
136
  <div style="clear:both;">
137
- '.apply_filters('updraft_cloudfiles_apikeysetting', '<a href="'.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/cloudfiles-enhanced/").'"><em>'.__('To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on.', 'updraftplus').'</em></a>').'
138
  </div>
139
  </td>
140
  </tr>
99
  if (!function_exists('json_last_error')) {
100
  $updraftplus_admin->show_double_warning('<strong>'.__('Warning', 'updraftplus').':</strong> '.sprintf(__('Your web server\'s PHP installation does not included a required module (%s). Please contact your web hosting provider\'s support.', 'updraftplus'), 'json').' '.sprintf(__("UpdraftPlus's %s module <strong>requires</strong> %s. Please do not file any support requests; there is no alternative.", 'updraftplus'), 'Cloud Files', 'json'), 'cloudfiles', false);
101
  }
102
+ echo '<p>' . __('Get your API key <a href="https://mycloud.rackspace.com/" target="_blank">from your Rackspace Cloud console</a> (read instructions <a href="http://www.rackspace.com/knowledge_center/article/rackspace-cloud-essentials-1-generating-your-api-key" target="_blank">here</a>), then pick a container name to use for storage. This container will be created for you if it does not already exist.', 'updraftplus').' <a href="'.apply_filters("updraftplus_com_link", "https://updraftplus.com/faqs/there-appear-to-be-lots-of-extra-files-in-my-rackspace-cloud-files-container/").'" target="_blank">'.__('Also, you should read this important FAQ.', 'updraftplus').'</a></p>';
103
  }
104
 
105
  /**
134
  <th>'.__('Cloud Files Username', 'updraftplus').':</th>
135
  <td><input data-updraft_settings_test="user" type="text" autocomplete="off" class="updraft_input--wide" '.$this->output_settings_field_name_and_id('user', true).' value="{{user}}" />
136
  <div style="clear:both;">
137
+ '.apply_filters('updraft_cloudfiles_apikeysetting', '<a href="'.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/cloudfiles-enhanced/").'" target="_blank"><em>'.__('To create a new Rackspace API sub-user and API key that has access only to this Rackspace container, use this add-on.', 'updraftplus').'</em></a>').'
138
  </div>
139
  </td>
140
  </tr>
methods/cloudfiles.php CHANGED
@@ -266,7 +266,7 @@ class UpdraftPlus_BackupModule_cloudfiles_oldsdk extends UpdraftPlus_BackupModul
266
 
267
  }
268
 
269
- public function delete($files, $cloudfilesarr = false, $sizeinfo = array()) {
270
 
271
  global $updraftplus;
272
  if (is_string($files)) $files =array($files);
@@ -443,7 +443,7 @@ class UpdraftPlus_BackupModule_cloudfiles_oldsdk extends UpdraftPlus_BackupModul
443
  ?>
444
 
445
  <?php
446
- echo '<p>' . __('Get your API key <a href="https://mycloud.rackspace.com/">from your Rackspace Cloud console</a> (read instructions <a href="http://www.rackspace.com/knowledge_center/article/rackspace-cloud-essentials-1-generating-your-api-key">here</a>), then pick a container name to use for storage. This container will be created for you if it does not already exist.', 'updraftplus').' <a href="https://updraftplus.com/faqs/there-appear-to-be-lots-of-extra-files-in-my-rackspace-cloud-files-container/">'.__('Also, you should read this important FAQ.', 'updraftplus').'</a></p>';
447
  ?>
448
  </td>
449
  </tr>
266
 
267
  }
268
 
269
+ public function delete($files, $cloudfilesarr = false, $sizeinfo = array()) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
270
 
271
  global $updraftplus;
272
  if (is_string($files)) $files =array($files);
443
  ?>
444
 
445
  <?php
446
+ echo '<p>' . __('Get your API key <a href="https://mycloud.rackspace.com/" target="_blank">from your Rackspace Cloud console</a> (read instructions <a href="http://www.rackspace.com/knowledge_center/article/rackspace-cloud-essentials-1-generating-your-api-key" target="_blank">here</a>), then pick a container name to use for storage. This container will be created for you if it does not already exist.', 'updraftplus').' <a href="https://updraftplus.com/faqs/there-appear-to-be-lots-of-extra-files-in-my-rackspace-cloud-files-container/" target="_blank">'.__('Also, you should read this important FAQ.', 'updraftplus').'</a></p>';
447
  ?>
448
  </td>
449
  </tr>
methods/dreamobjects.php CHANGED
@@ -23,7 +23,7 @@ class UpdraftPlus_BackupModule_dreamobjects extends UpdraftPlus_BackupModule_s3
23
 
24
  protected $use_v4 = false;
25
 
26
- protected function set_region($obj, $region = '', $bucket_name = '') {
27
  $config = $this->get_config();
28
  $endpoint = ('' != $region && 'n/a' != $region) ? $region : $config['endpoint'];
29
  global $updraftplus;
@@ -70,9 +70,11 @@ class UpdraftPlus_BackupModule_dreamobjects extends UpdraftPlus_BackupModule_s3
70
  /**
71
  * Retrieve specific options for this remote storage module
72
  *
 
 
73
  * @return Array - an array of options
74
  */
75
- protected function get_config() {
76
  $opts = $this->get_options();
77
  $opts['whoweare'] = 'DreamObjects';
78
  $opts['whoweare_long'] = 'DreamObjects';
@@ -90,7 +92,7 @@ class UpdraftPlus_BackupModule_dreamobjects extends UpdraftPlus_BackupModule_s3
90
  * @return String - the template
91
  */
92
  public function get_pre_configuration_template() {
93
- $this->get_pre_configuration_template_engine('dreamobjects', 'DreamObjects', 'DreamObjects', 'DreamObjects', 'https://panel.dreamhost.com/index.cgi?tree=storage.dreamhostobjects', '<a href="https://dreamhost.com/cloud/dreamobjects/"><img alt="DreamObjects" src="'.UPDRAFTPLUS_URL.'/images/dreamobjects_logo-horiz-2013.png"></a>');
94
  }
95
 
96
  /**
@@ -99,7 +101,7 @@ class UpdraftPlus_BackupModule_dreamobjects extends UpdraftPlus_BackupModule_s3
99
  * @return String - the template, ready for substitutions to be carried out
100
  */
101
  public function get_configuration_template() {
102
- return $this->get_configuration_template_engine('dreamobjects', 'DreamObjects', 'DreamObjects', 'DreamObjects', 'https://panel.dreamhost.com/index.cgi?tree=storage.dreamhostobjects', '<a href="https://dreamhost.com/cloud/dreamobjects/"><img alt="DreamObjects" src="'.UPDRAFTPLUS_URL.'/images/dreamobjects_logo-horiz-2013.png"></a>');
103
  }
104
 
105
  /**
23
 
24
  protected $use_v4 = false;
25
 
26
+ protected function set_region($obj, $region = '', $bucket_name = '') {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
27
  $config = $this->get_config();
28
  $endpoint = ('' != $region && 'n/a' != $region) ? $region : $config['endpoint'];
29
  global $updraftplus;
70
  /**
71
  * Retrieve specific options for this remote storage module
72
  *
73
+ * @param Boolean $force_refresh - if set, and if relevant, don't use cached credentials, but get them afresh
74
+ *
75
  * @return Array - an array of options
76
  */
77
+ protected function get_config($force_refresh = false) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
78
  $opts = $this->get_options();
79
  $opts['whoweare'] = 'DreamObjects';
80
  $opts['whoweare_long'] = 'DreamObjects';
92
  * @return String - the template
93
  */
94
  public function get_pre_configuration_template() {
95
+ $this->get_pre_configuration_template_engine('dreamobjects', 'DreamObjects', 'DreamObjects', 'DreamObjects', 'https://panel.dreamhost.com/index.cgi?tree=storage.dreamhostobjects', '<a href="https://dreamhost.com/cloud/dreamobjects/" target="_blank"><img alt="DreamObjects" src="'.UPDRAFTPLUS_URL.'/images/dreamobjects_logo-horiz-2013.png"></a>');
96
  }
97
 
98
  /**
101
  * @return String - the template, ready for substitutions to be carried out
102
  */
103
  public function get_configuration_template() {
104
+ return $this->get_configuration_template_engine('dreamobjects', 'DreamObjects', 'DreamObjects', 'DreamObjects', 'https://panel.dreamhost.com/index.cgi?tree=storage.dreamhostobjects', '<a href="https://dreamhost.com/cloud/dreamobjects/" target="_blank"><img alt="DreamObjects" src="'.UPDRAFTPLUS_URL.'/images/dreamobjects_logo-horiz-2013.png"></a>');
105
  }
106
 
107
  /**
methods/dropbox.php CHANGED
@@ -428,7 +428,7 @@ class UpdraftPlus_BackupModule_dropbox extends UpdraftPlus_BackupModule {
428
  return apply_filters('updraftplus_dropbox_defaults', array('Z3Q3ZmkwbnplNHA0Zzlx', 'bTY0bm9iNmY4eWhjODRt'));
429
  }
430
 
431
- public function delete($files, $data = null, $sizeinfo = array()) {
432
 
433
  global $updraftplus;
434
  if (is_string($files)) $files = array($files);
@@ -514,7 +514,7 @@ class UpdraftPlus_BackupModule_dropbox extends UpdraftPlus_BackupModule {
514
  *
515
  * @return String - the data downloaded
516
  */
517
- public function chunked_download($file, $headers, $data, $fh) {
518
 
519
  global $updraftplus;
520
 
@@ -600,9 +600,9 @@ class UpdraftPlus_BackupModule_dropbox extends UpdraftPlus_BackupModule {
600
  ob_start();
601
  $classes = $this->get_css_classes();
602
 
603
- $defmsg = '<tr class="'.$classes.'"><td></td><td><strong>'.__('Need to use sub-folders?', 'updraftplus').'</strong> '.__('Backups are saved in', 'updraftplus').' apps/UpdraftPlus. '.__('If you backup several sites into the same Dropbox and want to organize with sub-folders, then ', 'updraftplus').'<a href="https://updraftplus.com/shop/">'.__("there's an add-on for that.", 'updraftplus').'</a></td></tr>';
604
 
605
- $defmsg = '<tr class="'.$classes.'"><td></td><td><strong>'.__('Need to use sub-folders?', 'updraftplus').'</strong> '.__('Backups are saved in', 'updraftplus').' apps/UpdraftPlus. '.__('If you backup several sites into the same Dropbox and want to organize with sub-folders, then ', 'updraftplus').'<a href="'.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/").'">'.__("there's an add-on for that.", 'updraftplus').'</a></td></tr>';
606
 
607
  $extra_config = apply_filters('updraftplus_dropbox_extra_config_template', $defmsg, $this);
608
  echo $extra_config;
428
  return apply_filters('updraftplus_dropbox_defaults', array('Z3Q3ZmkwbnplNHA0Zzlx', 'bTY0bm9iNmY4eWhjODRt'));
429
  }
430
 
431
+ public function delete($files, $data = null, $sizeinfo = array()) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
432
 
433
  global $updraftplus;
434
  if (is_string($files)) $files = array($files);
514
  *
515
  * @return String - the data downloaded
516
  */
517
+ public function chunked_download($file, $headers, $data, $fh) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
518
 
519
  global $updraftplus;
520
 
600
  ob_start();
601
  $classes = $this->get_css_classes();
602
 
603
+ $defmsg = '<tr class="'.$classes.'"><td></td><td><strong>'.__('Need to use sub-folders?', 'updraftplus').'</strong> '.__('Backups are saved in', 'updraftplus').' apps/UpdraftPlus. '.__('If you backup several sites into the same Dropbox and want to organize with sub-folders, then ', 'updraftplus').'<a href="https://updraftplus.com/shop/" target="_blank">'.__("there's an add-on for that.", 'updraftplus').'</a></td></tr>';
604
 
605
+ $defmsg = '<tr class="'.$classes.'"><td></td><td><strong>'.__('Need to use sub-folders?', 'updraftplus').'</strong> '.__('Backups are saved in', 'updraftplus').' apps/UpdraftPlus. '.__('If you backup several sites into the same Dropbox and want to organize with sub-folders, then ', 'updraftplus').'<a href="'.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/").'" target="_blank">'.__("there's an add-on for that.", 'updraftplus').'</a></td></tr>';
606
 
607
  $extra_config = apply_filters('updraftplus_dropbox_extra_config_template', $defmsg, $this);
608
  echo $extra_config;
methods/email.php CHANGED
@@ -94,7 +94,7 @@ class UpdraftPlus_BackupModule_email extends UpdraftPlus_BackupModule {
94
 
95
  $used = apply_filters('updraftplus_email_whichaddresses',
96
  sprintf(__("Your site's admin email address (%s) will be used.", 'updraftplus'), get_bloginfo('admin_email').' - <a href="'.esc_attr(admin_url('options-general.php')).'">'.__("configure it here", 'updraftplus').'</a>').
97
- ' <a href="'.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/reporting/").'">'.sprintf(__('For more options, use the "%s" add-on.', 'updraftplus'), __('Reporting', 'updraftplus')).'</a>'
98
  );
99
 
100
  echo $used.' '.sprintf(__('Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive.', 'updraftplus'), '10-20');
94
 
95
  $used = apply_filters('updraftplus_email_whichaddresses',
96
  sprintf(__("Your site's admin email address (%s) will be used.", 'updraftplus'), get_bloginfo('admin_email').' - <a href="'.esc_attr(admin_url('options-general.php')).'">'.__("configure it here", 'updraftplus').'</a>').
97
+ ' <a href="'.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/reporting/").'" target="_blank">'.sprintf(__('For more options, use the "%s" add-on.', 'updraftplus'), __('Reporting', 'updraftplus')).'</a>'
98
  );
99
 
100
  echo $used.' '.sprintf(__('Be aware that mail servers tend to have size limits; typically around %s MB; backups larger than any limits will likely not arrive.', 'updraftplus'), '10-20');
methods/ftp.php CHANGED
@@ -211,7 +211,7 @@ class UpdraftPlus_BackupModule_ftp extends UpdraftPlus_BackupModule {
211
 
212
  }
213
 
214
- public function delete($files, $ftparr = array(), $sizeinfo = array()) {
215
 
216
  global $updraftplus;
217
  if (is_string($files)) $files = array($files);
@@ -333,7 +333,7 @@ class UpdraftPlus_BackupModule_ftp extends UpdraftPlus_BackupModule {
333
 
334
  ?>
335
 
336
- <em><?php echo '<p>' . apply_filters('updraft_sftp_ftps_notice', '<strong>'.htmlspecialchars(__('Only non-encrypted FTP is supported by regular UpdraftPlus.')).'</strong> <a href="'.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/sftp/").'">'.__('If you want encryption (e.g. you are storing sensitive business data), then an add-on is available.', 'updraftplus')).'</a></p>'; ?></em>
337
  </td>
338
  </tr>
339
 
211
 
212
  }
213
 
214
+ public function delete($files, $ftparr = array(), $sizeinfo = array()) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
215
 
216
  global $updraftplus;
217
  if (is_string($files)) $files = array($files);
333
 
334
  ?>
335
 
336
+ <em><?php echo '<p>' . apply_filters('updraft_sftp_ftps_notice', '<strong>'.htmlspecialchars(__('Only non-encrypted FTP is supported by regular UpdraftPlus.')).'</strong> <a href="'.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/sftp/").'" target="_blank">'.__('If you want encryption (e.g. you are storing sensitive business data), then an add-on is available.', 'updraftplus')).'</a></p>'; ?></em>
337
  </td>
338
  </tr>
339
 
methods/googledrive.php CHANGED
@@ -885,7 +885,7 @@ class UpdraftPlus_BackupModule_googledrive extends UpdraftPlus_BackupModule {
885
  return $result;
886
  }
887
 
888
- public function delete($files, $data = null, $sizeinfo = array()) {
889
 
890
  if (is_string($files)) $files = array($files);
891
 
@@ -1202,9 +1202,9 @@ class UpdraftPlus_BackupModule_googledrive extends UpdraftPlus_BackupModule {
1202
  // If we are not using the master app then show them the instructions for Client ID and Secret
1203
  ?>
1204
  <p><a href="<?php echo apply_filters('updraftplus_com_link', 'https://updraftplus.com/support/configuring-google-drive-api-access-in-updraftplus/');
1205
- ?>"><strong><?php _e('For longer help, including screenshots, follow this link. The description below is sufficient for more expert users.', 'updraftplus');?></strong></a></p>
1206
 
1207
- <p><a href="https://console.developers.google.com"><?php _e('Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section.', 'updraftplus');?></a> <?php _e("Select 'Web Application' as the application type.", 'updraftplus');?></p><p><?php echo htmlspecialchars(__('You must add the following as the authorised redirect URI (under "More Options") when asked', 'updraftplus'));?>: <kbd><?php echo UpdraftPlus_Options::admin_page_url().'?action=updraftmethod-googledrive-auth'; ?></kbd> <?php _e('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.', 'updraftplus');?>
1208
  </p>
1209
  <?php
1210
  }
@@ -1262,7 +1262,7 @@ class UpdraftPlus_BackupModule_googledrive extends UpdraftPlus_BackupModule {
1262
  {{/if}}
1263
  <br>
1264
  <em>
1265
- <a href="<?php echo apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/updraftplus-premium/");?>">
1266
  <?php echo __('To be able to set a custom folder name, use UpdraftPlus Premium.', 'updraftplus');?>
1267
  </a>
1268
  </em>
885
  return $result;
886
  }
887
 
888
+ public function delete($files, $data = null, $sizeinfo = array()) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
889
 
890
  if (is_string($files)) $files = array($files);
891
 
1202
  // If we are not using the master app then show them the instructions for Client ID and Secret
1203
  ?>
1204
  <p><a href="<?php echo apply_filters('updraftplus_com_link', 'https://updraftplus.com/support/configuring-google-drive-api-access-in-updraftplus/');
1205
+ ?>" target="_blank"><strong><?php _e('For longer help, including screenshots, follow this link. The description below is sufficient for more expert users.', 'updraftplus');?></strong></a></p>
1206
 
1207
+ <p><a href="https://console.developers.google.com" target="_blank"><?php _e('Follow this link to your Google API Console, and there activate the Drive API and create a Client ID in the API Access section.', 'updraftplus');?></a> <?php _e("Select 'Web Application' as the application type.", 'updraftplus');?></p><p><?php echo htmlspecialchars(__('You must add the following as the authorised redirect URI (under "More Options") when asked', 'updraftplus'));?>: <kbd><?php echo UpdraftPlus_Options::admin_page_url().'?action=updraftmethod-googledrive-auth'; ?></kbd> <?php _e('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.', 'updraftplus');?>
1208
  </p>
1209
  <?php
1210
  }
1262
  {{/if}}
1263
  <br>
1264
  <em>
1265
+ <a href="<?php echo apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/updraftplus-premium/");?>" target="_blank">
1266
  <?php echo __('To be able to set a custom folder name, use UpdraftPlus Premium.', 'updraftplus');?>
1267
  </a>
1268
  </em>
methods/insufficient.php CHANGED
@@ -34,7 +34,7 @@ class UpdraftPlus_BackupModule_insufficientphp extends UpdraftPlus_BackupModule
34
  * @param array $backup_array An array backups
35
  * @return array
36
  */
37
- public function backup($backup_array) {
38
  return $this->log_error();
39
  }
40
 
@@ -72,7 +72,7 @@ class UpdraftPlus_BackupModule_insufficientphp extends UpdraftPlus_BackupModule
72
  * @param string $match THis will specify which match is used for the SQL but by default it is set to 'backup_' unless specified
73
  * @return array
74
  */
75
- public function listfiles($match = 'backup_') {
76
  return new WP_Error('insufficient_php', $this->error_msg_trans);
77
  }
78
 
@@ -84,7 +84,7 @@ class UpdraftPlus_BackupModule_insufficientphp extends UpdraftPlus_BackupModule
84
  * @param array $sizeinfo This is the size info on the file.
85
  * @return array
86
  */
87
- public function delete($files, $data = false, $sizeinfo = array()) {
88
  return $this->log_error();
89
  }
90
 
@@ -95,7 +95,7 @@ class UpdraftPlus_BackupModule_insufficientphp extends UpdraftPlus_BackupModule
95
  * @param string $file List of files
96
  * @return array
97
  */
98
- public function download($file) {
99
  return $this->log_error();
100
  }
101
 
34
  * @param array $backup_array An array backups
35
  * @return array
36
  */
37
+ public function backup($backup_array) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
38
  return $this->log_error();
39
  }
40
 
72
  * @param string $match THis will specify which match is used for the SQL but by default it is set to 'backup_' unless specified
73
  * @return array
74
  */
75
+ public function listfiles($match = 'backup_') {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
76
  return new WP_Error('insufficient_php', $this->error_msg_trans);
77
  }
78
 
84
  * @param array $sizeinfo This is the size info on the file.
85
  * @return array
86
  */
87
+ public function delete($files, $data = false, $sizeinfo = array()) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
88
  return $this->log_error();
89
  }
90
 
95
  * @param string $file List of files
96
  * @return array
97
  */
98
+ public function download($file) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
99
  return $this->log_error();
100
  }
101
 
methods/openstack-base.php CHANGED
@@ -332,7 +332,7 @@ class UpdraftPlus_BackupModule_openstack_base extends UpdraftPlus_BackupModule {
332
  return true;
333
  }
334
 
335
- public function delete($files, $data = false, $sizeinfo = array()) {
336
 
337
  global $updraftplus;
338
  if (is_string($files)) $files = array($files);
332
  return true;
333
  }
334
 
335
+ public function delete($files, $data = false, $sizeinfo = array()) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
336
 
337
  global $updraftplus;
338
  if (is_string($files)) $files = array($files);
methods/openstack2.php CHANGED
@@ -117,7 +117,7 @@ class UpdraftPlus_BackupModule_openstack extends UpdraftPlus_BackupModule_openst
117
  public function get_pre_configuration_middlesection_template() {
118
 
119
  ?>
120
- <p><?php _e('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.', 'updraftplus');?> <a href="<?php echo apply_filters("updraftplus_com_link", "https://updraftplus.com/faqs/there-appear-to-be-lots-of-extra-files-in-my-rackspace-cloud-files-container/");?>"><?php _e('Also, you should read this important FAQ.', 'updraftplus'); ?></a></p>
121
 
122
  <?php
123
  }
@@ -141,7 +141,7 @@ class UpdraftPlus_BackupModule_openstack extends UpdraftPlus_BackupModule_openst
141
  </tr>
142
 
143
  <tr class="<?php echo $classes; ?>">
144
- <th><a href="http://docs.openstack.org/openstack-ops/content/projects_users.html" title="<?php _e('Follow this link for more information', 'updraftplus');?>"><?php _e('Tenant', 'updraftplus');?></a>:</th>
145
  <td><input data-updraft_settings_test="tenant" type="text" autocomplete="off" class="updraft_input--wide" <?php $this->output_settings_field_name_and_id('tenant');?> value="{{tenant}}" />
146
  </td>
147
  </tr>
117
  public function get_pre_configuration_middlesection_template() {
118
 
119
  ?>
120
+ <p><?php _e('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.', 'updraftplus');?> <a href="<?php echo apply_filters("updraftplus_com_link", "https://updraftplus.com/faqs/there-appear-to-be-lots-of-extra-files-in-my-rackspace-cloud-files-container/");?>" target="_blank"><?php _e('Also, you should read this important FAQ.', 'updraftplus'); ?></a></p>
121
 
122
  <?php
123
  }
141
  </tr>
142
 
143
  <tr class="<?php echo $classes; ?>">
144
+ <th><a href="http://docs.openstack.org/openstack-ops/content/projects_users.html" title="<?php _e('Follow this link for more information', 'updraftplus');?>" target="_blank"><?php _e('Tenant', 'updraftplus');?></a>:</th>
145
  <td><input data-updraft_settings_test="tenant" type="text" autocomplete="off" class="updraft_input--wide" <?php $this->output_settings_field_name_and_id('tenant');?> value="{{tenant}}" />
146
  </td>
147
  </tr>
methods/remotesend.php CHANGED
@@ -320,7 +320,7 @@ class UpdraftPlus_Addons_RemoteStorage_remotesend extends UpdraftPlus_RemoteStor
320
  return $response;
321
  }
322
 
323
- public function do_bootstrap($opts, $connect = true) {
324
 
325
  global $updraftplus;
326
 
320
  return $response;
321
  }
322
 
323
+ public function do_bootstrap($opts, $connect = true) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
324
 
325
  global $updraftplus;
326
 
methods/s3.php CHANGED
@@ -32,9 +32,11 @@ class UpdraftPlus_BackupModule_s3 extends UpdraftPlus_BackupModule {
32
  /**
33
  * Retrieve specific options for this remote storage module
34
  *
 
 
35
  * @return Array - an array of options
36
  */
37
- protected function get_config() {
38
  $opts = $this->get_options();
39
  $opts['whoweare'] = 'S3';
40
  $opts['whoweare_long'] = 'Amazon S3';
@@ -215,7 +217,7 @@ class UpdraftPlus_BackupModule_s3 extends UpdraftPlus_BackupModule {
215
  return $storage;
216
  }
217
 
218
- protected function set_region($obj, $region, $bucket_name = '') {
219
  global $updraftplus;
220
  switch ($region) {
221
  case 'EU':
@@ -288,10 +290,6 @@ class UpdraftPlus_BackupModule_s3 extends UpdraftPlus_BackupModule {
288
  return $updraftplus->log_wp_error($err, false, true);
289
  }
290
 
291
- $whoweare = $config['whoweare'];
292
- $whoweare_key = $config['key'];
293
- $whoweare_keys = substr($whoweare_key, 0, 3);
294
- $sse = empty($config['server_side_encryption']) ? false : true;
295
  if (empty($config['sessiontoken'])) $config['sessiontoken'] = null;
296
 
297
  $storage = $this->getS3(
@@ -301,12 +299,16 @@ class UpdraftPlus_BackupModule_s3 extends UpdraftPlus_BackupModule {
301
  UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify'),
302
  UpdraftPlus_Options::get_updraft_option('updraft_ssl_nossl'),
303
  null,
304
- $sse,
305
  $config['sessiontoken']
306
  );
307
 
308
  if (is_wp_error($storage)) return $updraftplus->log_wp_error($storage, false, true);
309
 
 
 
 
 
310
  if (is_a($storage, 'UpdraftPlus_S3_Compat') && !class_exists('XMLWriter')) {
311
  $updraftplus->log('The required XMLWriter PHP module is not installed');
312
  $updraftplus->log(sprintf(__('The required %s PHP module is not installed - ask your web hosting company to enable it', 'updraftplus'), 'XMLWriter'), 'error');
@@ -322,7 +324,7 @@ class UpdraftPlus_BackupModule_s3 extends UpdraftPlus_BackupModule {
322
  $bucket_path = $bmatches[2]."/";
323
  }
324
 
325
- list($storage, $bucket_exists, $region) = $this->get_bucket_access($storage, $config, $bucket_name, $bucket_path);
326
 
327
  // See if we can detect the region (which implies the bucket exists and is ours), or if not create it
328
  if ($bucket_exists) {
@@ -398,8 +400,11 @@ class UpdraftPlus_BackupModule_s3 extends UpdraftPlus_BackupModule {
398
  try {
399
  $upload_id = $storage->initiateMultipartUpload($bucket_name, $filepath, 'private', array(), array(), apply_filters('updraft_'.$whoweare_key.'_storageclass', 'STANDARD', $storage, $config));
400
  } catch (Exception $e) {
401
- $updraftplus->log("$whoweare error whilst trying initiateMultipartUpload: ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')');
 
 
402
  $upload_id = false;
 
403
  }
404
  $storage->setExceptions(false);
405
 
@@ -584,7 +589,7 @@ class UpdraftPlus_BackupModule_s3 extends UpdraftPlus_BackupModule {
584
  $storage = $this->possibly_wait_for_bucket_or_user($config, $storage);
585
  if (!is_a($storage, 'UpdraftPlus_S3') && !is_a($storage, 'UpdraftPlus_S3_Compat')) return $storage;
586
 
587
- list($storage, $bucket_exists, $region) = $this->get_bucket_access($storage, $config, $bucket_name, $bucket_path);
588
 
589
  /*
590
  $region = ($config['key'] == 'dreamobjects' || $config['key'] == 's3generic') ? 'n/a' : @$storage->getBucketLocation($bucket_name);
@@ -664,7 +669,7 @@ class UpdraftPlus_BackupModule_s3 extends UpdraftPlus_BackupModule {
664
  $bucket_path = '';
665
  }
666
 
667
- list($storage, $bucket_exists, $region) = $this->get_bucket_access($storage, $config, $bucket_name, $bucket_path);
668
 
669
  if (!$bucket_exists) {
670
  $updraftplus->log("$whoweare Error: Failed to access bucket $bucket_name. Check your permissions and credentials.");
@@ -695,7 +700,7 @@ class UpdraftPlus_BackupModule_s3 extends UpdraftPlus_BackupModule {
695
  $this->s3_record_quota_info($this->quota_used, $config['quota']);
696
  }
697
  } catch (Exception $e) {
698
- $updraftplus->log("$whoweare delete failed: ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')');
699
  $storage->setExceptions(false);
700
  $ret = false;
701
  }
@@ -737,7 +742,7 @@ class UpdraftPlus_BackupModule_s3 extends UpdraftPlus_BackupModule {
737
  }
738
 
739
 
740
- list($storage, $bucket_exists, $region) = $this->get_bucket_access($storage, $config, $bucket_name, $bucket_path);
741
 
742
  if ($bucket_exists) {
743
 
@@ -840,13 +845,13 @@ class UpdraftPlus_BackupModule_s3 extends UpdraftPlus_BackupModule {
840
  if ('s3generic' == $key) {
841
  echo '<p>';
842
  _e('Examples of S3-compatible storage providers:');
843
- echo ' <a href="https://updraftplus.com/use-updraftplus-digital-ocean-spaces/">DigitalOcean Spaces</a>, ';
844
- echo '<a href="https://www.cloudian.com">Cloudian</a>, ';
845
- echo '<a href="https://www.mh.connectria.com/rp/order/cloud_storage_index">Connectria</a>, ';
846
- echo '<a href="https://www.constant.com/cloud/storage/">Constant</a>, ';
847
- echo '<a href="http://www.eucalyptus.com/eucalyptus-cloud/iaas">Eucalyptus</a>, ';
848
- echo '<a href="http://cloud.nifty.com/storage/">Nifty</a>, ';
849
- echo '<a href="http://www.ntt.com/business/services/cloud/iaas/cloudn.html">Cloudn</a>';
850
  echo ''.__('... and many more!', 'updraftplus').'<br>';
851
  echo '</p>';
852
  }
@@ -868,9 +873,9 @@ class UpdraftPlus_BackupModule_s3 extends UpdraftPlus_BackupModule {
868
  <p>
869
  <?php if ($console_url) echo sprintf(__('Get your access key and secret key <a href="%s">from your %s console</a>, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist.', 'updraftplus'), $console_url, $console_descrip, $whoweare_long);?>
870
 
871
- <a href="<?php echo apply_filters("updraftplus_com_link", "https://updraftplus.com/faqs/i-get-ssl-certificate-errors-when-backing-up-andor-restoring/");?>"><?php _e('If you see errors about SSL certificates, then please go here for help.', 'updraftplus');?></a>
872
 
873
- <a href="<?php echo apply_filters("updraftplus_com_link", "https://updraftplus.com/faq-category/amazon-s3/");?>"><?php if ('s3' == $key) echo sprintf(__('Other %s FAQs.', 'updraftplus'), 'S3');?></a>
874
  </p>
875
  </td>
876
  </tr>
@@ -910,7 +915,7 @@ class UpdraftPlus_BackupModule_s3 extends UpdraftPlus_BackupModule {
910
  *
911
  * @return string $template_str handlebars template string
912
  */
913
- public function get_configuration_template_engine($key, $whoweare_short, $whoweare_long, $console_descrip, $console_url, $img_html = '') {
914
  ob_start();
915
  $classes = $this->get_css_classes();
916
  $template_str = '';
@@ -920,7 +925,7 @@ class UpdraftPlus_BackupModule_s3 extends UpdraftPlus_BackupModule {
920
  <tr class="<?php echo $classes;?>">
921
  <td colspan="2">
922
  <?php
923
- echo apply_filters('updraft_s3_apikeysetting', '<a href="'.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/s3-enhanced/").'"><em>'.__('To create a new IAM sub-user and access key that has access only to this bucket, use this add-on.', 'updraftplus').'</em></a>');
924
  ?>
925
  </td>
926
  </tr>
@@ -999,7 +1004,7 @@ class UpdraftPlus_BackupModule_s3 extends UpdraftPlus_BackupModule {
999
  * @param String $path S3 Path
1000
  * @param Boolean|String $endpoint S3 endpoint
1001
  *
1002
- * @return Array
1003
  */
1004
  private function get_bucket_access($storage, $config, $bucket, $path, $endpoint = false) {
1005
 
@@ -1016,7 +1021,49 @@ class UpdraftPlus_BackupModule_s3 extends UpdraftPlus_BackupModule {
1016
  // We want to distinguish between an empty region (null), and an exception or missing bucket (false)
1017
  if (empty($region) && false !== $region) $region = null;
1018
  } catch (Exception $e) {
 
1019
  $region = false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1020
  }
1021
  $storage->setExceptions(false);
1022
  } else {
@@ -1079,7 +1126,7 @@ class UpdraftPlus_BackupModule_s3 extends UpdraftPlus_BackupModule {
1079
  }
1080
  }
1081
 
1082
- return array($storage, $bucket_exists, $region);
1083
 
1084
  }
1085
 
@@ -1127,7 +1174,7 @@ class UpdraftPlus_BackupModule_s3 extends UpdraftPlus_BackupModule {
1127
  return;
1128
  }
1129
 
1130
- list($storage, $bucket_exists, $region) = $this->get_bucket_access($storage, $config, $bucket, $path, $endpoint);
1131
 
1132
  $bucket_verb = '';
1133
  if ($region && 'n/a' != $region) {
32
  /**
33
  * Retrieve specific options for this remote storage module
34
  *
35
+ * @param Boolean $force_refresh - if set, and if relevant, don't use cached credentials, but get them afresh
36
+ *
37
  * @return Array - an array of options
38
  */
39
+ protected function get_config($force_refresh = false) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
40
  $opts = $this->get_options();
41
  $opts['whoweare'] = 'S3';
42
  $opts['whoweare_long'] = 'Amazon S3';
217
  return $storage;
218
  }
219
 
220
+ protected function set_region($obj, $region, $bucket_name = '') {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
221
  global $updraftplus;
222
  switch ($region) {
223
  case 'EU':
290
  return $updraftplus->log_wp_error($err, false, true);
291
  }
292
 
 
 
 
 
293
  if (empty($config['sessiontoken'])) $config['sessiontoken'] = null;
294
 
295
  $storage = $this->getS3(
299
  UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify'),
300
  UpdraftPlus_Options::get_updraft_option('updraft_ssl_nossl'),
301
  null,
302
+ !empty($config['server_side_encryption']),
303
  $config['sessiontoken']
304
  );
305
 
306
  if (is_wp_error($storage)) return $updraftplus->log_wp_error($storage, false, true);
307
 
308
+ $whoweare = $config['whoweare'];
309
+ $whoweare_key = $config['key'];
310
+ $whoweare_keys = substr($whoweare_key, 0, 3);
311
+
312
  if (is_a($storage, 'UpdraftPlus_S3_Compat') && !class_exists('XMLWriter')) {
313
  $updraftplus->log('The required XMLWriter PHP module is not installed');
314
  $updraftplus->log(sprintf(__('The required %s PHP module is not installed - ask your web hosting company to enable it', 'updraftplus'), 'XMLWriter'), 'error');
324
  $bucket_path = $bmatches[2]."/";
325
  }
326
 
327
+ list($storage, $config, $bucket_exists, $region) = $this->get_bucket_access($storage, $config, $bucket_name, $bucket_path);
328
 
329
  // See if we can detect the region (which implies the bucket exists and is ours), or if not create it
330
  if ($bucket_exists) {
400
  try {
401
  $upload_id = $storage->initiateMultipartUpload($bucket_name, $filepath, 'private', array(), array(), apply_filters('updraft_'.$whoweare_key.'_storageclass', 'STANDARD', $storage, $config));
402
  } catch (Exception $e) {
403
+
404
+ $updraftplus->log("$whoweare exception (".get_class($e).") whilst trying initiateMultipartUpload: ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')');
405
+
406
  $upload_id = false;
407
+
408
  }
409
  $storage->setExceptions(false);
410
 
589
  $storage = $this->possibly_wait_for_bucket_or_user($config, $storage);
590
  if (!is_a($storage, 'UpdraftPlus_S3') && !is_a($storage, 'UpdraftPlus_S3_Compat')) return $storage;
591
 
592
+ list($storage, $config, $bucket_exists, $region) = $this->get_bucket_access($storage, $config, $bucket_name, $bucket_path);
593
 
594
  /*
595
  $region = ($config['key'] == 'dreamobjects' || $config['key'] == 's3generic') ? 'n/a' : @$storage->getBucketLocation($bucket_name);
669
  $bucket_path = '';
670
  }
671
 
672
+ list($storage, $config, $bucket_exists, $region) = $this->get_bucket_access($storage, $config, $bucket_name, $bucket_path);
673
 
674
  if (!$bucket_exists) {
675
  $updraftplus->log("$whoweare Error: Failed to access bucket $bucket_name. Check your permissions and credentials.");
700
  $this->s3_record_quota_info($this->quota_used, $config['quota']);
701
  }
702
  } catch (Exception $e) {
703
+ $updraftplus->log("$whoweare delete failed (".get_class($e)."): ".$e->getMessage().' (line: '.$e->getLine().', file: '.$e->getFile().')');
704
  $storage->setExceptions(false);
705
  $ret = false;
706
  }
742
  }
743
 
744
 
745
+ list($storage, $config, $bucket_exists, $region) = $this->get_bucket_access($storage, $config, $bucket_name, $bucket_path);
746
 
747
  if ($bucket_exists) {
748
 
845
  if ('s3generic' == $key) {
846
  echo '<p>';
847
  _e('Examples of S3-compatible storage providers:');
848
+ echo ' <a href="https://updraftplus.com/use-updraftplus-digital-ocean-spaces/" target="_blank">DigitalOcean Spaces</a>, ';
849
+ echo '<a href="https://www.cloudian.com" target="_blank">Cloudian</a>, ';
850
+ echo '<a href="https://www.mh.connectria.com/rp/order/cloud_storage_index" target="_blank">Connectria</a>, ';
851
+ echo '<a href="https://www.constant.com/cloud/storage/" target="_blank">Constant</a>, ';
852
+ echo '<a href="http://www.eucalyptus.com/eucalyptus-cloud/iaas" target="_blank">Eucalyptus</a>, ';
853
+ echo '<a href="http://cloud.nifty.com/storage/" target="_blank">Nifty</a>, ';
854
+ echo '<a href="http://www.ntt.com/business/services/cloud/iaas/cloudn.html" target="_blank">Cloudn</a>';
855
  echo ''.__('... and many more!', 'updraftplus').'<br>';
856
  echo '</p>';
857
  }
873
  <p>
874
  <?php if ($console_url) echo sprintf(__('Get your access key and secret key <a href="%s">from your %s console</a>, then pick a (globally unique - all %s users) bucket name (letters and numbers) (and optionally a path) to use for storage. This bucket will be created for you if it does not already exist.', 'updraftplus'), $console_url, $console_descrip, $whoweare_long);?>
875
 
876
+ <a href="<?php echo apply_filters("updraftplus_com_link", "https://updraftplus.com/faqs/i-get-ssl-certificate-errors-when-backing-up-andor-restoring/");?>" target="_blank"><?php _e('If you see errors about SSL certificates, then please go here for help.', 'updraftplus');?></a>
877
 
878
+ <a href="<?php echo apply_filters("updraftplus_com_link", "https://updraftplus.com/faq-category/amazon-s3/");?>" target="_blank"><?php if ('s3' == $key) echo sprintf(__('Other %s FAQs.', 'updraftplus'), 'S3');?></a>
879
  </p>
880
  </td>
881
  </tr>
915
  *
916
  * @return string $template_str handlebars template string
917
  */
918
+ public function get_configuration_template_engine($key, $whoweare_short, $whoweare_long, $console_descrip, $console_url, $img_html = '') {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
919
  ob_start();
920
  $classes = $this->get_css_classes();
921
  $template_str = '';
925
  <tr class="<?php echo $classes;?>">
926
  <td colspan="2">
927
  <?php
928
+ echo apply_filters('updraft_s3_apikeysetting', '<a href="'.apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/s3-enhanced/").'" target="_blank"><em>'.__('To create a new IAM sub-user and access key that has access only to this bucket, use this add-on.', 'updraftplus').'</em></a>');
929
  ?>
930
  </td>
931
  </tr>
1004
  * @param String $path S3 Path
1005
  * @param Boolean|String $endpoint S3 endpoint
1006
  *
1007
+ * @return Array - N.B. May contain updated versions of $storage and $config
1008
  */
1009
  private function get_bucket_access($storage, $config, $bucket, $path, $endpoint = false) {
1010
 
1021
  // We want to distinguish between an empty region (null), and an exception or missing bucket (false)
1022
  if (empty($region) && false !== $region) $region = null;
1023
  } catch (Exception $e) {
1024
+
1025
  $region = false;
1026
+
1027
+ // On this 'first try', we trap this particular condition. So, whatever S3 network call it happens on, we'll eventually get it here on the resumption.
1028
+ if (false !== strpos($e->getMessage(), 'The provided token has expired')) {
1029
+
1030
+ $updraftplus->log($e->getMessage().": Requesting new credentials");
1031
+
1032
+ $new_config = $this->get_config(true);
1033
+
1034
+ if (empty($new_config['sessiontoken'])) $new_config['sessiontoken'] = null;
1035
+
1036
+ if (!empty($new_config['accesskey'])) {
1037
+
1038
+ $new_storage = $this->getS3(
1039
+ $new_config['accesskey'],
1040
+ $new_config['secretkey'],
1041
+ UpdraftPlus_Options::get_updraft_option('updraft_ssl_useservercerts'),
1042
+ UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify'),
1043
+ UpdraftPlus_Options::get_updraft_option('updraft_ssl_nossl'),
1044
+ null,
1045
+ !empty($new_config['server_side_encryption']),
1046
+ $new_config['sessiontoken']
1047
+ );
1048
+
1049
+ if (!is_wp_error($new_storage)) {
1050
+ // Try again
1051
+ try {
1052
+ $region = @$new_storage->getBucketLocation($bucket);
1053
+ // We want to distinguish between an empty region (null), and an exception or missing bucket (false)
1054
+ if (empty($region) && false !== $region) $region = null;
1055
+ // Worked this time; update the passed-in information
1056
+ $storage = $new_storage;
1057
+ $config = $new_config;
1058
+ } catch (Exception $e) {
1059
+ $region = false;
1060
+ }
1061
+ }
1062
+ }
1063
+
1064
+ }
1065
+
1066
+
1067
  }
1068
  $storage->setExceptions(false);
1069
  } else {
1126
  }
1127
  }
1128
 
1129
+ return array($storage, $config, $bucket_exists, $region);
1130
 
1131
  }
1132
 
1174
  return;
1175
  }
1176
 
1177
+ list($storage, $config, $bucket_exists, $region) = $this->get_bucket_access($storage, $config, $bucket, $path, $endpoint);
1178
 
1179
  $bucket_verb = '';
1180
  if ($region && 'n/a' != $region) {
methods/s3generic.php CHANGED
@@ -11,7 +11,7 @@ class UpdraftPlus_BackupModule_s3generic extends UpdraftPlus_BackupModule_s3 {
11
 
12
  protected $use_v4 = false;
13
 
14
- protected function set_region($obj, $region = '', $bucket_name = '') {
15
  $config = $this->get_config();
16
  $endpoint = ('' != $region && 'n/a' != $region) ? $region : $config['endpoint'];
17
  $log_message = "Set endpoint: $endpoint";
@@ -53,9 +53,11 @@ class UpdraftPlus_BackupModule_s3generic extends UpdraftPlus_BackupModule_s3 {
53
  /**
54
  * Retrieve specific options for this remote storage module
55
  *
 
 
56
  * @return Array - an array of options
57
  */
58
- protected function get_config() {
59
  $opts = $this->get_options();
60
  $opts['whoweare'] = 'S3';
61
  $opts['whoweare_long'] = __('S3 (Compatible)', 'updraftplus');
11
 
12
  protected $use_v4 = false;
13
 
14
+ protected function set_region($obj, $region = '', $bucket_name = '') {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
15
  $config = $this->get_config();
16
  $endpoint = ('' != $region && 'n/a' != $region) ? $region : $config['endpoint'];
17
  $log_message = "Set endpoint: $endpoint";
53
  /**
54
  * Retrieve specific options for this remote storage module
55
  *
56
+ * @param Boolean $force_refresh - if set, and if relevant, don't use cached credentials, but get them afresh
57
+ *
58
  * @return Array - an array of options
59
  */
60
+ protected function get_config($force_refresh = false) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
61
  $opts = $this->get_options();
62
  $opts['whoweare'] = 'S3';
63
  $opts['whoweare_long'] = __('S3 (Compatible)', 'updraftplus');
methods/template.php CHANGED
@@ -26,7 +26,7 @@ class UpdraftPlus_BackupModule_template extends UpdraftPlus_BackupModule {
26
  * @param Array $backup_array Array of files (basenames) to sent to remote storage
27
  * @return Mixed - (boolean)false to indicate failure; otherwise, something to be passed back when deleting files
28
  */
29
- public function backup($backup_array) {
30
 
31
  global $updraftplus;
32
 
@@ -48,7 +48,7 @@ class UpdraftPlus_BackupModule_template extends UpdraftPlus_BackupModule {
48
  *
49
  * @return Array - each file is represented by an array with entries 'name' and (optional) 'size'
50
  */
51
- public function listfiles($match = 'backup_') {
52
  // This function needs to return an array of arrays. The keys for the sub-arrays are name (a path-less filename, i.e. a basename), (optional)size, and should be a list of matching files from the storage backend. A WP_Error object can also be returned; and the error code should be no_settings if that is relevant.
53
  return array();
54
  }
@@ -61,7 +61,7 @@ class UpdraftPlus_BackupModule_template extends UpdraftPlus_BackupModule {
61
  * @param array $sizeinfo Size information
62
  * @return Boolean - whether the operation succeeded or not
63
  */
64
- public function delete($files, $data = false, $sizeinfo = array()) {
65
 
66
  global $updraftplus;
67
 
@@ -75,7 +75,7 @@ class UpdraftPlus_BackupModule_template extends UpdraftPlus_BackupModule {
75
  *
76
  * @param string $file The specific file to be downloaded from the Cloud Storage
77
  */
78
- public function download($file) {
79
 
80
  global $updraftplus;
81
 
26
  * @param Array $backup_array Array of files (basenames) to sent to remote storage
27
  * @return Mixed - (boolean)false to indicate failure; otherwise, something to be passed back when deleting files
28
  */
29
+ public function backup($backup_array) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
30
 
31
  global $updraftplus;
32
 
48
  *
49
  * @return Array - each file is represented by an array with entries 'name' and (optional) 'size'
50
  */
51
+ public function listfiles($match = 'backup_') {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
52
  // This function needs to return an array of arrays. The keys for the sub-arrays are name (a path-less filename, i.e. a basename), (optional)size, and should be a list of matching files from the storage backend. A WP_Error object can also be returned; and the error code should be no_settings if that is relevant.
53
  return array();
54
  }
61
  * @param array $sizeinfo Size information
62
  * @return Boolean - whether the operation succeeded or not
63
  */
64
+ public function delete($files, $data = false, $sizeinfo = array()) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
65
 
66
  global $updraftplus;
67
 
75
  *
76
  * @param string $file The specific file to be downloaded from the Cloud Storage
77
  */
78
+ public function download($file) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
79
 
80
  global $updraftplus;
81
 
methods/updraftvault.php CHANGED
@@ -76,20 +76,25 @@ class UpdraftPlus_BackupModule_updraftvault extends UpdraftPlus_BackupModule_s3
76
  /**
77
  * Gets the UpdraftVault configuration and credentials
78
  *
 
 
79
  * @return array An array containing the Amazon S3 credentials (accesskey, secretkey, etc.)
80
  * along with some configuration values.
81
  */
82
- public function get_config() {
83
 
84
  global $updraftplus;
85
- // Have we already done this?
86
- if (!empty($this->vault_config)) return $this->vault_config;
87
-
88
- // Stored in the job?
89
- if ($job_config = $this->jobdata_get('config', null, 'updraftvault_config')) {
90
- if (!empty($job_config) && is_array($job_config)) {
91
- $this->vault_config = $job_config;
92
- return $job_config;
 
 
 
93
  }
94
  }
95
 
@@ -465,7 +470,7 @@ class UpdraftPlus_BackupModule_updraftvault extends UpdraftPlus_BackupModule_s3
465
 
466
  $ret .= ' - <a href="'.esc_attr($this->get_url('get_more_quota')).'">'.__('Get more quota', 'updraftplus').'</a>';
467
 
468
- $ret_dashboard = $ret . ' - <a href="'.UpdraftPlus::get_current_clean_url().'" id="updraftvault_recountquota">'.__('Refresh current status', 'updraftplus').'</a>';
469
 
470
  set_transient('updraftvault_quota_text', $ret_dashboard, 86400*3);
471
 
76
  /**
77
  * Gets the UpdraftVault configuration and credentials
78
  *
79
+ * @param Boolean $force_refresh - if set, and if relevant, don't use cached credentials, but get them afresh
80
+ *
81
  * @return array An array containing the Amazon S3 credentials (accesskey, secretkey, etc.)
82
  * along with some configuration values.
83
  */
84
+ public function get_config($force_refresh = false) {
85
 
86
  global $updraftplus;
87
+
88
+ if (!$force_refresh) {
89
+ // Have we already done this?
90
+ if (!empty($this->vault_config)) return $this->vault_config;
91
+
92
+ // Stored in the job?
93
+ if ($job_config = $this->jobdata_get('config', null, 'updraftvault_config')) {
94
+ if (!empty($job_config) && is_array($job_config)) {
95
+ $this->vault_config = $job_config;
96
+ return $job_config;
97
+ }
98
  }
99
  }
100
 
470
 
471
  $ret .= ' - <a href="'.esc_attr($this->get_url('get_more_quota')).'">'.__('Get more quota', 'updraftplus').'</a>';
472
 
473
+ $ret_dashboard = $ret . ' - <a href="#" id="updraftvault_recountquota">'.__('Refresh current status', 'updraftplus').'</a>';
474
 
475
  set_transient('updraftvault_quota_text', $ret_dashboard, 86400*3);
476
 
options.php CHANGED
@@ -205,7 +205,7 @@ class UpdraftPlus_Options {
205
 
206
  public static function show_admin_warning_multisite() {
207
  global $updraftplus_admin;
208
- $updraftplus_admin->show_admin_warning('<strong>'.__('UpdraftPlus warning:', 'updraftplus').'</strong> '.__('This is a WordPress multi-site (a.k.a. network) installation.', 'updraftplus').' <a href="https://updraftplus.com/shop/">'.__('WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on.', 'updraftplus').'</a> '.__('Without upgrading, UpdraftPlus allows <strong>every</strong> blog admin who can modify plugin settings to backup (and hence access the data, including passwords, from) and restore (including with customized modifications, e.g. changed passwords) <strong>the entire network</strong>.', 'updraftplus').' '.__('(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility).', 'updraftplus'), 'error');
209
  }
210
  }
211
 
205
 
206
  public static function show_admin_warning_multisite() {
207
  global $updraftplus_admin;
208
+ $updraftplus_admin->show_admin_warning('<strong>'.__('UpdraftPlus warning:', 'updraftplus').'</strong> '.__('This is a WordPress multi-site (a.k.a. network) installation.', 'updraftplus').' <a href="https://updraftplus.com/shop/" target="_blank">'.__('WordPress Multisite is supported, with extra features, by UpdraftPlus Premium, or the Multisite add-on.', 'updraftplus').'</a> '.__('Without upgrading, UpdraftPlus allows <strong>every</strong> blog admin who can modify plugin settings to backup (and hence access the data, including passwords, from) and restore (including with customized modifications, e.g. changed passwords) <strong>the entire network</strong>.', 'updraftplus').' '.__('(This applies to all WordPress backup plugins unless they have been explicitly coded for multisite compatibility).', 'updraftplus'), 'error');
209
  }
210
  }
211
 
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: Backup with UpdraftPlus, DavidAnderson, DNutbourne, aporter, snigh
3
  Tags: backup, restore, database backup, wordpress backup, cloud backup, s3, dropbox, google drive, onedrive, ftp, backups
4
  Requires at least: 3.2
5
  Tested up to: 5.0
6
- Stable tag: 1.16.0
7
  Author URI: https://updraftplus.com
8
  Donate link: https://david.dw-perspective.org.uk/donate
9
  License: GPLv3 or later
@@ -52,12 +52,17 @@ On our website, we've got a whole page dedicated to how our Premium version comp
52
 
53
  The free version of UpdraftPlus works just fine, but if you need more features and options you can purchase our Premium version. Here are some of the many features of UpdraftPlus Premium:
54
 
 
55
  * Easily duplicates or migrates websites (with Migrator)
56
  * Multisite/multi-network compatible
57
  * Backs up non WP files and databases to multiple remote destinations
 
 
 
 
58
  * Free dedicated expert support
59
 
60
- Find out more on our comparison page. UpdraftPlus Premium is available for purchase <a href="https://updraftplus.com/shop/">here</a>
61
 
62
  = Managing multiple website backups =
63
 
@@ -161,11 +166,50 @@ Unfortunately not; since this is free software, there’s no warranty and no gua
161
 
162
  The <a href="https://updraftplus.com/news/">UpdraftPlus backup blog</a> is the best place to learn in more detail about any important changes.
163
 
164
- N.B. Paid versions of UpdraftPlus Backup / Restore have a version number which is 1 higher in the first digit, and has an extra component on the end, but the changelog below still applies. i.e. changes listed for 1.16.0.x of the free version correspond to changes made in 2.16.0.x of the paid version.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
165
 
166
  = 1.16.0 - 19/Dec/2018 =
167
 
168
- * FEATURE: Added the abilty to create and restore Incremental Backups
169
  * FIX: Work around an issue with 'SSH2 Server Host Key Algorithm Mismatch' occurring with the current phpseclib release by temporarily reverting to an earlier one
170
  * TWEAK: Improve performance by aggregating separate SQL SELECT queries (previously one for each backup) when loading the settings page
171
  * TWEAK: internal backup extradata parameter to prevent unwanted PHP notices
@@ -707,5 +751,5 @@ Furthermore, reliance upon any non-English translation is at your own risk. Updr
707
  We recognise and thank the following for code and/or libraries used and/or modified under the terms of their open source licences; see: https://updraftplus.com/acknowledgements/
708
 
709
  == Upgrade Notice ==
710
- * 1.16.0: Added the ability to create and restore Incremental Backups (Premium version), work around an issue with 'SSH2 Server Host Key Algorithm Mismatch' and various small/minor improvements. A recommended update for all.
711
 
3
  Tags: backup, restore, database backup, wordpress backup, cloud backup, s3, dropbox, google drive, onedrive, ftp, backups
4
  Requires at least: 3.2
5
  Tested up to: 5.0
6
+ Stable tag: 1.16.4
7
  Author URI: https://updraftplus.com
8
  Donate link: https://david.dw-perspective.org.uk/donate
9
  License: GPLv3 or later
52
 
53
  The free version of UpdraftPlus works just fine, but if you need more features and options you can purchase our Premium version. Here are some of the many features of UpdraftPlus Premium:
54
 
55
+ * Incremental backups
56
  * Easily duplicates or migrates websites (with Migrator)
57
  * Multisite/multi-network compatible
58
  * Backs up non WP files and databases to multiple remote destinations
59
+ * More storage destinations (e.g. OneDrive, BackBlaze, Azure, SFTP) and multiple destinations
60
+ * Database encrpytion
61
+ * Advanced reporting
62
+ * Supports WP-CLI
63
  * Free dedicated expert support
64
 
65
+ Find out more <a href="https://updraftplus.com/comparison-updraftplus-free-updraftplus-premium/">on our comparison page</a>. UpdraftPlus Premium is available for purchase <a href="https://updraftplus.com/shop/">here</a>
66
 
67
  = Managing multiple website backups =
68
 
166
 
167
  The <a href="https://updraftplus.com/news/">UpdraftPlus backup blog</a> is the best place to learn in more detail about any important changes.
168
 
169
+ N.B. Paid versions of UpdraftPlus Backup / Restore have a version number which is 1 higher in the first digit, and has an extra component on the end, but the changelog below still applies. i.e. changes listed for 1.16.4.x of the free version correspond to changes made in 2.16.4.x of the paid version.
170
+
171
+ = 1.16.4 - 17/Jan/2019 =
172
+
173
+ * FIX: Regression: Properly mark backups picked up via "Rescan remote storage" as non-native (preventing unwelcome side-effects such as being pruned by another site)
174
+ * FIX: Correctly update the OneDrive refresh token to prevent expiry
175
+ * FIX: Again work around an issue with 'SSH2 Server Host Key Algorithm Mismatch' occurring with the current phpseclib release by temporarily reverting to an earlier one as it still does not work on all installs
176
+ * FIX: When restoring an incremental backup set via WP-CLI, the selected restore point was ignored
177
+ * FIX: If the remote storage settings were for multiple instances of a single backend-type (e.g. two Dropbox accounts), and if the entire backup and send operation completed in a single PHP process, then the local copy of the files would not be deleted
178
+ * TWEAK: Show the error message if mbstring.func_overload is turned on in php.ini while creating migration key
179
+ * TWEAK: Added Azure China endpoint
180
+ * TWEAK: Resolve "dashicons" CSS conflict
181
+ * TWEAK: Add 'blogmeta' to the list of core tables (in readiness for WP 5.1)
182
+ * TWEAK: Remove unnecessary deprecated (in PHP 7.3) parameter to define() in WebDAV HTTP library
183
+ * TWEAK: Prevent a potential PHP notice in UpdraftPlus Premium when installed without network access
184
+ * TWEAK: Enhance the updraftplus_exclude_file and updraftplus_exclude_directory filters to also pass the stored names
185
+ * TWEAK: Add a new constant UPDRAFTPLUS_ZIP_BATCH_CEILING that can tweak internals of the zip backup engine
186
+
187
+ = 1.16.3 - 10/Jan/2019 =
188
+
189
+ * FIX: Prevent extraction regression (in 1.16.1) when using PclZip (N.B. php-zip is always preferred if installed) on zero-sized files
190
+ * FIX: Prevent the incremental backup cron from being incorrectly scheduled
191
+
192
+ = 1.16.2 - 07/Jan/2019 =
193
+
194
+ * FIX: wp_doing_cron() was used when unzipping, but requires WP 4.8+ (regression in 1.16.1, which was never released on wordpress.org)
195
+ * TWEAK: Updated phpseclib to the latest version after the previous work around to fix the 'SSH2 Server Host Key Algorithm Mismatch' issue
196
+ * TWEAK: Check-in with the clone during the backup process to make sure it is not prematurely purged
197
+
198
+ = 1.16.1 - 01/Jan/2019 =
199
+
200
+ * FIX: If a very large UpdraftVault upload took more than an hour, then the token could expire without being refreshed
201
+ * FIX: Version 2.16.0 could write invalid or incomplete JSON when creating the manifest file on an incremental backup under certain circumstances
202
+ * FIX: When restoring an incremental backup set via WP-CLI, the restore order could be wrong
203
+ * TWEAK: Accept and parse the invalid JSON when restoring an incremental archive created on 2.16.0
204
+ * TWEAK: When running an incremental backup, the backup report would report the time taken to run the backup wrongly
205
+ * TWEAK: Make the logging on the state of zip extraction more fine-grained (at least every 100MB, 1000 files or 15 seconds)
206
+ * TWEAK: Re-factoring of zip extraction code to allow for future improvements
207
+ * TWEAK: Re-factoring of the restore routines to share more code between different entry points, and allow future improvements
208
+ * TWEAK: Differentiate between failures to JSON-decode an incremental backup manifest file and other types of failures
209
 
210
  = 1.16.0 - 19/Dec/2018 =
211
 
212
+ * FEATURE: Added the abilty to create and restore Incremental Backups (Premium version)
213
  * FIX: Work around an issue with 'SSH2 Server Host Key Algorithm Mismatch' occurring with the current phpseclib release by temporarily reverting to an earlier one
214
  * TWEAK: Improve performance by aggregating separate SQL SELECT queries (previously one for each backup) when loading the settings page
215
  * TWEAK: internal backup extradata parameter to prevent unwanted PHP notices
751
  We recognise and thank the following for code and/or libraries used and/or modified under the terms of their open source licences; see: https://updraftplus.com/acknowledgements/
752
 
753
  == Upgrade Notice ==
754
+ * 1.16.4: Fix a regression whereby rescanning remote storage did not correctly mark backups' origins, plus various other small tweaks and enhancements. A recommended update for all.
755
 
restorer.php CHANGED
@@ -22,7 +22,7 @@ class Updraft_Restorer {
22
  // This one can be set externally, if the information is available
23
  public $ud_backup_is_multisite = -1;
24
 
25
- private $ud_backup_info;
26
 
27
  public $ud_foreign;
28
 
@@ -73,13 +73,13 @@ class Updraft_Restorer {
73
  * Constructor
74
  *
75
  * @param WP_Upgrader_Skin|Null $skin - an upgrader skin
76
- * @param Array|Null $info - information on the restoration
77
  * @param Boolean $short_init - whether just to do a minimal initialisation
78
  * @param Array $restore_options - options to guide the restoration
79
  */
80
- public function __construct($skin = null, $info = null, $short_init = false, $restore_options = array()) {
81
 
82
- global $wpdb;
83
 
84
  $this->our_siteurl = untrailingslashit(site_url());
85
 
@@ -99,16 +99,34 @@ class Updraft_Restorer {
99
 
100
  if ($short_init) return;
101
 
102
- $this->ud_backup_info = $info;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  do_action('updraftplus_restorer_restore_options', $restore_options);
104
  $this->ud_multisite_selective_restore = (is_array($restore_options) && !empty($restore_options['updraft_restore_ms_whichsites']) && $restore_options['updraft_restore_ms_whichsites'] > 0) ? $restore_options['updraft_restore_ms_whichsites'] : false;
105
  $this->restore_options = $restore_options;
106
 
107
- $this->ud_foreign = empty($info['meta_foreign']) ? false : $info['meta_foreign'];
108
- if (isset($info['is_multisite'])) $this->ud_backup_is_multisite = $info['is_multisite'];
109
- if (isset($info['created_by_version'])) $this->created_by_version = $info['created_by_version'];
110
-
111
- add_filter('updraftplus_logline', array($this, 'updraftplus_logline'), 10, 5);
112
 
113
  $this->backup_strings();
114
 
@@ -128,6 +146,88 @@ class Updraft_Restorer {
128
  public function get_db_object() {
129
  return $this->wpdb_obj;
130
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
 
132
  /**
133
  * Whether or not we must use the global $wpdb object for database queries.
@@ -177,7 +277,7 @@ class Updraft_Restorer {
177
 
178
  $entities_to_download = $this->get_entities_to_download($entities_to_restore);
179
 
180
- $backup_set = $this->ud_backup_info;
181
  $timestamp = $backup_set['timestamp'];
182
 
183
  $updraft_dir = $updraftplus->backups_dir_location();
@@ -295,7 +395,7 @@ class Updraft_Restorer {
295
  }
296
 
297
  /**
298
- * Perform the restoration
299
  *
300
  * @param Array $entities_to_restore - entities to restore
301
  * @param Array $restore_options - restoration options
@@ -309,7 +409,14 @@ class Updraft_Restorer {
309
 
310
  global $updraftplus;
311
 
312
- $backup_set = $this->ud_backup_info;
 
 
 
 
 
 
 
313
 
314
  $services = isset($backup_set['service']) ? $updraftplus->get_canonical_service_list($backup_set['service']) : array();
315
 
@@ -359,6 +466,9 @@ class Updraft_Restorer {
359
 
360
  if (is_string($files)) $files = array($files);
361
 
 
 
 
362
  foreach ($files as $fkey => $file) {
363
  $last_one = (1 == count($second_loop) && 1 == count($files));
364
  $last_entity = (1 == count($files));
@@ -406,8 +516,7 @@ class Updraft_Restorer {
406
 
407
  unset($files[$fkey]);
408
  $second_loop[$type] = $files;
409
- $updraftplus->jobdata_set('second_loop_entities', $second_loop);
410
- $updraftplus->jobdata_set('backup_timestamp', $timestamp);
411
 
412
  do_action('updraft_restored_archive', $file, $type, $restore_result, $fkey, $timestamp);
413
 
@@ -416,8 +525,7 @@ class Updraft_Restorer {
416
  // Update the job data each time we go round the loop, so that if it aborts, it can be resumed from the correct point
417
  unset($second_loop[$type]);
418
  update_site_option('updraft_restore_in_progress', $updraftplus->nonce);
419
- $updraftplus->jobdata_set('second_loop_entities', $second_loop);
420
- $updraftplus->jobdata_set('backup_timestamp', $timestamp);
421
  }
422
 
423
  // If the database was restored, then check active plugins and make sure they all exist; otherwise, the site may go down
@@ -435,7 +543,7 @@ class Updraft_Restorer {
435
  */
436
  public function get_entities_to_download($entities_to_restore) {
437
 
438
- $backup_set = $this->ud_backup_info;
439
 
440
  $foreign_known = apply_filters('updraftplus_accept_archivename', array());
441
 
@@ -455,7 +563,7 @@ class Updraft_Restorer {
455
  }
456
 
457
  /**
458
- * Logs a line from the restore process, being called from UpdraftPlus::log(). Currently, this means adding it to the browser output log file and echoing it.
459
  * Hooks the WordPress filter updraftplus_logline
460
  * In future, this can get more sophisticated. For now, things are funnelled through here, giving the future possibility.
461
  *
@@ -538,10 +646,11 @@ class Updraft_Restorer {
538
  * This function is copied from class WP_Upgrader (WP 3.8 - no significant changes since 3.2 at least); we only had to fork it because it hard-codes using the basename of the zip file as its unpack directory; which can be long; and then combining that with long pathnames in the zip being unpacked can overflow a 256-character path limit (yes, they apparently still exist - amazing!)
539
  * Subsequently, we have also added the ability to unpack tarballs
540
  *
541
- * @param string $package specify package
542
- * @param boolean $delete_package check to delete package
543
- * @param string $type type of archieve e.g. db. THis can also be false
544
- * @return string
 
545
  */
546
  private function unpack_package_archive($package, $delete_package = true, $type = false) {
547
 
@@ -636,8 +745,7 @@ class Updraft_Restorer {
636
  }
637
 
638
  // Once extracted, delete the package if required.
639
- if ($delete_package)
640
- unlink($package);
641
 
642
  if (is_wp_error($result)) {
643
  $wp_filesystem->delete($working_dir, true);
@@ -723,10 +831,10 @@ class Updraft_Restorer {
723
  // If not database, then it is a zip - unpack in the usual way
724
  if (!preg_match('/-db(\.gz(\.crypt)?)?$/i', $package) && !preg_match('/\.sql(\.gz|\.bz2)?$/i', $package)) return $this->unpack_package_archive($updraft_dir.'/'.$package, $delete_package, $type);
725
 
726
- $backup_dir = $wp_filesystem->find_folder($updraft_dir);
727
-
728
  // Unpack a database. The general shape of the following is copied from class-wp-upgrader.php
729
 
 
 
730
  @set_time_limit(1800);
731
 
732
  $packsize = round(filesize($backup_dir.$package)/1048576, 1).' Mb';
@@ -1200,7 +1308,7 @@ class Updraft_Restorer {
1200
  }
1201
  fclose($fp);
1202
  }
1203
- if (!empty($ud_version) && $this->can_version_ajax_restore($ud_version) && !empty($this->ud_backup_info['timestamp'])) {
1204
  $nonce = $updraftplus->nonce;
1205
  if (!function_exists('crypt_random_string')) $updraftplus->ensure_phpseclib('Crypt_Random', 'Crypt/Random');
1206
  $this->ajax_restore_auth_code = bin2hex(crypt_random_string(32));
@@ -1232,7 +1340,7 @@ class Updraft_Restorer {
1232
 
1233
  $this->import_table_prefix = $import_table_prefix;
1234
 
1235
- $now_done = apply_filters('updraftplus_pre_restore_move_in', false, $type, $working_dir, $info, $this->ud_backup_info, $this, $wp_filesystem_dir);
1236
  if (is_wp_error($now_done)) return $now_done;
1237
 
1238
  // A slightly ugly way of getting a particular result back
@@ -1264,9 +1372,9 @@ class Updraft_Restorer {
1264
  // On subsequent archives of a multi-archive set, don't move anything; but do on the first
1265
  $preserve_existing = isset($this->been_restored['others']) ? self::MOVEIN_COPY_IN_CONTENTS : self::MOVEIN_MAKE_BACKUP_OF_EXISTING;
1266
 
1267
- $preserve_existing = apply_filters('updraft_move_others_preserve_existing', $preserve_existing, $this->been_restored, $this->restore_options, $this->ud_backup_info);
1268
 
1269
- $new_move_from = apply_filters('updraft_restore_backup_move_from', $move_from, 'others', $this->restore_options, $this->ud_backup_info);
1270
 
1271
  if ($new_move_from != $move_from && 0 === strpos($new_move_from, $move_from)) {
1272
  $new_suffix = substr($new_move_from, strlen($move_from));
@@ -1313,7 +1421,7 @@ class Updraft_Restorer {
1313
 
1314
  // The backup may not actually have /$type, since that is info from the present site
1315
  $move_from = $this->get_first_directory($working_dir_use, array(basename($info['path']), $type));
1316
- if (false !== $move_from) $move_from = apply_filters('updraft_restore_backup_move_from', $move_from, $type, $this->restore_options, $this->ud_backup_info);
1317
 
1318
  if (false === $move_from) {
1319
  if (!empty($this->ud_foreign) && !apply_filters('updraftplus_foreign_allow_missing_entity', false, $type, $this->ud_foreign)) {
@@ -1466,12 +1574,21 @@ class Updraft_Restorer {
1466
  */
1467
  private function incremental_restore_prune_files($working_dir, $type) {
1468
  // Check file exists again just in case it some how got removed
1469
- if (file_exists($working_dir.DIRECTORY_SEPARATOR.'updraftplus-manifest.json')) {
 
1470
  $entity_manifest = file_get_contents($working_dir.DIRECTORY_SEPARATOR.'updraftplus-manifest.json');
1471
- $entity_manifest = json_decode($entity_manifest, true);
 
 
 
 
 
 
 
 
1472
  $base_path = trailingslashit(WP_CONTENT_DIR);
1473
  $path = $base_path.$type;
1474
- return $this->incremental_restore_scan_dir($base_path, $path, 1, $entity_manifest);
1475
  } else {
1476
  return new WP_Error('manifest_not_found', $this->strings['manifest_not_found']);
1477
  }
@@ -1490,11 +1607,11 @@ class Updraft_Restorer {
1490
 
1491
  global $wp_filesystem;
1492
 
1493
- $directroy_level = $entity_manifest['listed_levels'];
1494
  $entity_directories = $entity_manifest['contents']['directories'];
1495
  $entity_files = $entity_manifest['contents']['files'];
1496
 
1497
- if (!isset($directroy_level) || !isset($entity_directories) || !isset($entity_files)) return new WP_Error('read_manifest_failed', $this->strings['read_manifest_failed']);
1498
 
1499
  $directory_files = $wp_filesystem->dirlist($path);
1500
 
@@ -1503,7 +1620,7 @@ class Updraft_Restorer {
1503
  if ($wp_filesystem->is_dir($path . DIRECTORY_SEPARATOR . $file)) {
1504
  $directory = $path . DIRECTORY_SEPARATOR . $file;
1505
  // Check if we should go deeper in the file path, if not then check if this directory exists in the manifest, if not then remove it.
1506
- if ($current_level + 1 < $directroy_level) {
1507
  $incremental_restore_prune = $this->incremental_restore_scan_dir($base_path, $directory, $current_level + 1, $entity_manifest);
1508
  if (is_wp_error($incremental_restore_prune)) return $incremental_restore_prune;
1509
  } else {
@@ -1639,7 +1756,7 @@ class Updraft_Restorer {
1639
 
1640
  ENDHERE;
1641
  $multisite = 0;
1642
- $timestamp = $this->ud_backup_info['timestamp'];
1643
  if (!empty($_REQUEST['updraft_restorer_backup_info'])) {
1644
 
1645
  $backup_info = UpdraftPlus_Manipulation_Functions::wp_unslash($_REQUEST['updraft_restorer_backup_info']);
@@ -1779,9 +1896,10 @@ ENDHERE;
1779
  /**
1780
  * Returns an octal string (but not an octal number)
1781
  *
1782
- * @param string $file specfy file
1783
- * @param boolean $wpfs wpfs options
1784
- * @return string
 
1785
  */
1786
  private function get_current_chmod($file, $wpfs = false) {
1787
  if (false == $wpfs) {
@@ -1823,12 +1941,13 @@ ENDHERE;
1823
  * "If needed" means, "If the permissions are not already more permissive than this". i.e. This will not tighten permissions from what the user had before (we trust them)
1824
  * $chmod should be an octal - i.e. the same as you'd pass to chmod()
1825
  *
1826
- * @param string $dir directory
1827
- * @param string $chmod specific chmod
1828
- * @param boolean $recursive indicate if recursive chmod is needed
1829
- * @param boolean $wpfs indicate whether to use wpfs access methods
1830
- * @param boolean $suppress suppress output
1831
- * @return string
 
1832
  */
1833
  private function chmod_if_needed($dir, $chmod, $recursive = false, $wpfs = false, $suppress = true) {
1834
 
@@ -1842,8 +1961,8 @@ ENDHERE;
1842
 
1843
  $old_chmod = $this->get_current_chmod($dir, $wpfs);
1844
 
1845
- // Sanity fcheck
1846
- if (strlen($old_chmod) < 3) return;
1847
 
1848
  $new_chmod = $this->calculate_additive_chmod_oct($old_chmod, $chmod);
1849
 
@@ -1928,16 +2047,37 @@ ENDHERE;
1928
 
1929
  }
1930
 
 
 
 
 
 
 
 
1931
  public function option_filter_permalink_structure($val) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
1932
  global $updraftplus;
1933
  return $updraftplus->option_filter_get('permalink_structure');
1934
  }
1935
 
 
 
 
 
 
 
 
1936
  public function option_filter_page_on_front($val) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
1937
  global $updraftplus;
1938
  return $updraftplus->option_filter_get('page_on_front');
1939
  }
1940
 
 
 
 
 
 
 
 
1941
  public function option_filter_rewrite_rules($val) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
1942
  global $updraftplus;
1943
  return $updraftplus->option_filter_get('rewrite_rules');
@@ -1982,7 +2122,7 @@ ENDHERE;
1982
 
1983
  if (!file_exists($working_dir_localpath.'/'.$db_basename)) {
1984
  $separatedb = empty($plugins[$this->ud_foreign]['separatedb']) ? false : true;
1985
- $filtered_db_name = apply_filters('updraftplus_foreign_dbfilename', false, $this->ud_foreign, $this->ud_backup_info, $working_dir_localpath, $separatedb);
1986
  if (is_string($filtered_db_name)) $db_basename = $filtered_db_name;
1987
  }
1988
  }
@@ -2517,8 +2657,8 @@ ENDHERE;
2517
  }
2518
 
2519
  // Rescan storage, but only if there was remote storage and a database; otherwise just re-scan locally
2520
- if (!empty($this->ud_backup_info['db']) && !empty($this->ud_backup_info['service']) && ('none' !== $this->ud_backup_info['service'] && 'email' !== $this->ud_backup_info['service'] && array('') !== $this->ud_backup_info['service'] && array('none') !== $this->ud_backup_info['service'] && array('email') !== $this->ud_backup_info['service'])) {
2521
- $only_add_this_file = array('file' => $this->ud_backup_info['db']);
2522
  UpdraftPlus_Backup_History::rebuild(true, $only_add_this_file);
2523
  } else {
2524
  UpdraftPlus_Backup_History::rebuild();
@@ -2834,7 +2974,9 @@ ENDHERE;
2834
  global $updraftplus_addons_migrator;
2835
  if (!empty($updraftplus_addons_migrator->new_blogid)) switch_to_blog($updraftplus_addons_migrator->new_blogid);
2836
 
2837
- foreach (array('permalink_structure', 'rewrite_rules', 'page_on_front') as $opt) {
 
 
2838
  add_filter('pre_option_'.$opt, array($this, 'option_filter_'.$opt));
2839
  }
2840
 
@@ -2846,7 +2988,7 @@ ENDHERE;
2846
  if (function_exists('save_mod_rewrite_rules')) save_mod_rewrite_rules();
2847
  if (function_exists('iis7_save_url_rewrite_rules')) iis7_save_url_rewrite_rules();
2848
 
2849
- foreach (array('permalink_structure', 'rewrite_rules', 'page_on_front') as $opt) {
2850
  remove_filter('pre_option_'.$opt, array($this, 'option_filter_'.$opt));
2851
  }
2852
 
@@ -2854,6 +2996,54 @@ ENDHERE;
2854
 
2855
  }
2856
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2857
  private function restored_table($table, $import_table_prefix, $old_table_prefix) {
2858
 
2859
  $table_without_prefix = substr($table, strlen($import_table_prefix));
22
  // This one can be set externally, if the information is available
23
  public $ud_backup_is_multisite = -1;
24
 
25
+ private $ud_backup_set;
26
 
27
  public $ud_foreign;
28
 
73
  * Constructor
74
  *
75
  * @param WP_Upgrader_Skin|Null $skin - an upgrader skin
76
+ * @param Array|Null $backup_set - the backup set to restore
77
  * @param Boolean $short_init - whether just to do a minimal initialisation
78
  * @param Array $restore_options - options to guide the restoration
79
  */
80
+ public function __construct($skin = null, $backup_set = null, $short_init = false, $restore_options = array()) {
81
 
82
+ global $wpdb, $updraftplus;
83
 
84
  $this->our_siteurl = untrailingslashit(site_url());
85
 
99
 
100
  if ($short_init) return;
101
 
102
+ // If updraft_incremental_restore_point is equal to -1 then this is either not a incremental restore or we are going to restore up to the latest increment, so there is no need to prune the backup set of any unwanted backup archives.
103
+ if (isset($restore_options['updraft_incremental_restore_point']) && $restore_options['updraft_incremental_restore_point'] > 0) {
104
+ $restore_point = $restore_options['updraft_incremental_restore_point'];
105
+ foreach ($backup_set['incremental_sets'] as $increment_timestamp => $entities) {
106
+ if ($increment_timestamp > $restore_point) {
107
+ foreach ($entities as $entity => $backups) {
108
+ foreach ($backups as $key => $value) {
109
+ unset($backup_set[$entity][$key]);
110
+ }
111
+ }
112
+ }
113
+ }
114
+ }
115
+
116
+ // Restore in the most helpful order
117
+ uksort($backup_set, array('UpdraftPlus_Manipulation_Functions', 'sort_restoration_entities'));
118
+
119
+ $this->ud_backup_set = $backup_set;
120
+
121
+ add_filter('updraftplus_logline', array($this, 'updraftplus_logline'), 10, 5);
122
+
123
  do_action('updraftplus_restorer_restore_options', $restore_options);
124
  $this->ud_multisite_selective_restore = (is_array($restore_options) && !empty($restore_options['updraft_restore_ms_whichsites']) && $restore_options['updraft_restore_ms_whichsites'] > 0) ? $restore_options['updraft_restore_ms_whichsites'] : false;
125
  $this->restore_options = $restore_options;
126
 
127
+ $this->ud_foreign = empty($backup_set['meta_foreign']) ? false : $backup_set['meta_foreign'];
128
+ if (isset($backup_set['is_multisite'])) $this->ud_backup_is_multisite = $backup_set['is_multisite'];
129
+ if (isset($backup_set['created_by_version'])) $this->created_by_version = $backup_set['created_by_version'];
 
 
130
 
131
  $this->backup_strings();
132
 
146
  public function get_db_object() {
147
  return $this->wpdb_obj;
148
  }
149
+
150
+ /**
151
+ * Restore has been completed - clean some things up
152
+ *
153
+ * @param Boolean|WP_Error $successful - if the restore was successful (true) or not (false or WP_Error). If not, then only a minimum of necessary clean-up things is done.
154
+ * @param Boolean $browser_context - if true, then extra messages will be echo-ed
155
+ *
156
+ * @uses UpdraftPlus::log()
157
+ */
158
+ public function post_restore_clean_up($successful = true, $browser_context = true) {
159
+
160
+ global $updraftplus, $updraftplus_admin;
161
+
162
+ if (is_wp_error($successful)) {
163
+ foreach ($successful->get_error_codes() as $code) {
164
+ if ('already_exists' == $code) {
165
+ if ($browser_context) {
166
+ global $updraftplus_admin;
167
+ $updraftplus_admin->print_delete_old_dirs_form(false);
168
+ } else {
169
+ $updraftplus->log(__('Your WordPress install has old directories from its state before you restored/migrated (technical information: these are suffixed with -old).', 'updraftplus'));
170
+ }
171
+ }
172
+ $data = $successful->get_error_data($code);
173
+ if (!empty($data)) {
174
+ $pdata = is_string($data) ? $data : serialize($data);
175
+ $updraftplus->log(__('Error data:', 'updraftplus').' '.$pdata, 'warning-restore');
176
+ if (false !== strpos($pdata, 'PCLZIP_ERR_BAD_FORMAT (-10)')) {
177
+ if ($browser_context) {
178
+ echo '<a href="'.apply_filters('updraftplus_com_link', 'https://updraftplus.com/faqs/error-message-pclzip_err_bad_format-10-invalid-archive-structure-mean/').'" target="_blank"><strong>'.__('Follow this link for more information', 'updraftplus').'</strong></a><br>';
179
+ } else {
180
+ $updraftplus->log(__('Follow this link for more information', 'updraftplus').': '.$url);
181
+ }
182
+ }
183
+ }
184
+
185
+ }
186
+ $successful = false;
187
+ }
188
+
189
+ // From this point on, $successful is a boolean
190
+ if ($successful) {
191
+ // All done - remove the intermediate marker
192
+ delete_site_option('updraft_restore_in_progress');
193
+
194
+ foreach (array('template', 'stylesheet', 'template_root', 'stylesheet_root') as $opt) {
195
+ add_filter('pre_option_'.$opt, array($this, 'option_filter_'.$opt));
196
+ }
197
+
198
+ // Clear any cached pages after the restore
199
+ $this->clear_cache();
200
+
201
+ // Have seen a case where the current theme in the DB began with a capital, but not on disk - and this breaks migrating from Windows to a case-sensitive system
202
+ $template = get_option('template');
203
+ if (!empty($template) && WP_DEFAULT_THEME != $template && strtolower($template) != $template) {
204
+
205
+ $theme_root = get_theme_root($template);
206
+ $theme_root2 = get_theme_root(strtolower($template));
207
+
208
+ if (!file_exists("$theme_root/$template/style.css") && file_exists("$theme_root/".strtolower($template)."/style.css")) {
209
+ $updraftplus->log_e("Theme directory (%s) not found, but lower-case version exists; updating database option accordingly", $template);
210
+ update_option('template', strtolower($template));
211
+ }
212
+
213
+ }
214
+
215
+ if (!function_exists('validate_current_theme')) include_once(ABSPATH.WPINC.'/themes');
216
+
217
+ if (!validate_current_theme()) {
218
+ if ($browser_context) echo '<strong>';
219
+ $updraftplus->log_e("The current theme was not found; to prevent this stopping the site from loading, your theme has been reverted to the default theme");
220
+ if ($browser_context) echo '</strong>';
221
+ }
222
+
223
+ do_action('updraftplus_restore_completed');
224
+ }
225
+
226
+ if ($browser_context) echo '</div>'; // Close the updraft_restore_progress div
227
+
228
+ restore_error_handler();
229
+
230
+ }
231
 
232
  /**
233
  * Whether or not we must use the global $wpdb object for database queries.
277
 
278
  $entities_to_download = $this->get_entities_to_download($entities_to_restore);
279
 
280
+ $backup_set = $this->ud_backup_set;
281
  $timestamp = $backup_set['timestamp'];
282
 
283
  $updraft_dir = $updraftplus->backups_dir_location();
395
  }
396
 
397
  /**
398
+ * Perform the restoration. No code here (or called) should assume anything about the method used to call it (e.g. wp-admin or WP-CLI); it should be independent of how it is being called.
399
  *
400
  * @param Array $entities_to_restore - entities to restore
401
  * @param Array $restore_options - restoration options
409
 
410
  global $updraftplus;
411
 
412
+ // Now log. We first remove any encryption passphrase from the log data.
413
+ $copy_restore_options = $restore_options;
414
+ if (!empty($copy_restore_options['updraft_encryptionphrase'])) $copy_restore_options['updraft_encryptionphrase'] = '***';
415
+ $updraftplus->log("Restore job started. Entities to restore: ".implode(', ', array_flip($entities_to_restore)).'. Restore options: '.json_encode($copy_restore_options));
416
+
417
+ do_action('updraftplus_restoration_title', __('Final checks', 'updraftplus'));
418
+
419
+ $backup_set = $this->ud_backup_set;
420
 
421
  $services = isset($backup_set['service']) ? $updraftplus->get_canonical_service_list($backup_set['service']) : array();
422
 
466
 
467
  if (is_string($files)) $files = array($files);
468
 
469
+ // Don't assume that the caller pre-sorted the array. We do need it sorted, so that incremental zips get restored in the right order
470
+ ksort($files);
471
+
472
  foreach ($files as $fkey => $file) {
473
  $last_one = (1 == count($second_loop) && 1 == count($files));
474
  $last_entity = (1 == count($files));
516
 
517
  unset($files[$fkey]);
518
  $second_loop[$type] = $files;
519
+ $updraftplus->jobdata_set_multi(array('second_loop_entities' => $second_loop, 'backup_timestamp' => $timestamp));
 
520
 
521
  do_action('updraft_restored_archive', $file, $type, $restore_result, $fkey, $timestamp);
522
 
525
  // Update the job data each time we go round the loop, so that if it aborts, it can be resumed from the correct point
526
  unset($second_loop[$type]);
527
  update_site_option('updraft_restore_in_progress', $updraftplus->nonce);
528
+ $updraftplus->jobdata_set_multi(array('second_loop_entities' => $second_loop, 'backup_timestamp' => $timestamp));
 
529
  }
530
 
531
  // If the database was restored, then check active plugins and make sure they all exist; otherwise, the site may go down
543
  */
544
  public function get_entities_to_download($entities_to_restore) {
545
 
546
+ $backup_set = $this->ud_backup_set;
547
 
548
  $foreign_known = apply_filters('updraftplus_accept_archivename', array());
549
 
563
  }
564
 
565
  /**
566
+ * Logs a line from the restore process, being called from UpdraftPlus::log(). Currently, this means adding it to the browser output log file and either (depending on the constant WP_CLI) echoing it or passing it to a WPCLI method.
567
  * Hooks the WordPress filter updraftplus_logline
568
  * In future, this can get more sophisticated. For now, things are funnelled through here, giving the future possibility.
569
  *
646
  * This function is copied from class WP_Upgrader (WP 3.8 - no significant changes since 3.2 at least); we only had to fork it because it hard-codes using the basename of the zip file as its unpack directory; which can be long; and then combining that with long pathnames in the zip being unpacked can overflow a 256-character path limit (yes, they apparently still exist - amazing!)
647
  * Subsequently, we have also added the ability to unpack tarballs
648
  *
649
+ * @param String $package specify package
650
+ * @param Boolean $delete_package check to delete package
651
+ * @param String|Boolean $type type of archive e.g. db.
652
+ *
653
+ * @return String|WP_Error If successful, then this indicates the working directory that the archive was unpacked in
654
  */
655
  private function unpack_package_archive($package, $delete_package = true, $type = false) {
656
 
745
  }
746
 
747
  // Once extracted, delete the package if required.
748
+ if ($delete_package) unlink($package);
 
749
 
750
  if (is_wp_error($result)) {
751
  $wp_filesystem->delete($working_dir, true);
831
  // If not database, then it is a zip - unpack in the usual way
832
  if (!preg_match('/-db(\.gz(\.crypt)?)?$/i', $package) && !preg_match('/\.sql(\.gz|\.bz2)?$/i', $package)) return $this->unpack_package_archive($updraft_dir.'/'.$package, $delete_package, $type);
833
 
 
 
834
  // Unpack a database. The general shape of the following is copied from class-wp-upgrader.php
835
 
836
+ $backup_dir = $wp_filesystem->find_folder($updraft_dir);
837
+
838
  @set_time_limit(1800);
839
 
840
  $packsize = round(filesize($backup_dir.$package)/1048576, 1).' Mb';
1308
  }
1309
  fclose($fp);
1310
  }
1311
+ if (!empty($ud_version) && $this->can_version_ajax_restore($ud_version) && !empty($this->ud_backup_set['timestamp'])) {
1312
  $nonce = $updraftplus->nonce;
1313
  if (!function_exists('crypt_random_string')) $updraftplus->ensure_phpseclib('Crypt_Random', 'Crypt/Random');
1314
  $this->ajax_restore_auth_code = bin2hex(crypt_random_string(32));
1340
 
1341
  $this->import_table_prefix = $import_table_prefix;
1342
 
1343
+ $now_done = apply_filters('updraftplus_pre_restore_move_in', false, $type, $working_dir, $info, $this->ud_backup_set, $this, $wp_filesystem_dir);
1344
  if (is_wp_error($now_done)) return $now_done;
1345
 
1346
  // A slightly ugly way of getting a particular result back
1372
  // On subsequent archives of a multi-archive set, don't move anything; but do on the first
1373
  $preserve_existing = isset($this->been_restored['others']) ? self::MOVEIN_COPY_IN_CONTENTS : self::MOVEIN_MAKE_BACKUP_OF_EXISTING;
1374
 
1375
+ $preserve_existing = apply_filters('updraft_move_others_preserve_existing', $preserve_existing, $this->been_restored, $this->restore_options, $this->ud_backup_set);
1376
 
1377
+ $new_move_from = apply_filters('updraft_restore_backup_move_from', $move_from, 'others', $this->restore_options, $this->ud_backup_set);
1378
 
1379
  if ($new_move_from != $move_from && 0 === strpos($new_move_from, $move_from)) {
1380
  $new_suffix = substr($new_move_from, strlen($move_from));
1421
 
1422
  // The backup may not actually have /$type, since that is info from the present site
1423
  $move_from = $this->get_first_directory($working_dir_use, array(basename($info['path']), $type));
1424
+ if (false !== $move_from) $move_from = apply_filters('updraft_restore_backup_move_from', $move_from, $type, $this->restore_options, $this->ud_backup_set);
1425
 
1426
  if (false === $move_from) {
1427
  if (!empty($this->ud_foreign) && !apply_filters('updraftplus_foreign_allow_missing_entity', false, $type, $this->ud_foreign)) {
1574
  */
1575
  private function incremental_restore_prune_files($working_dir, $type) {
1576
  // Check file exists again just in case it some how got removed
1577
+ $manifest_file = $working_dir.DIRECTORY_SEPARATOR.'updraftplus-manifest.json';
1578
+ if (file_exists($manifest_file) && filesize($manifest_file) > 0) {
1579
  $entity_manifest = file_get_contents($working_dir.DIRECTORY_SEPARATOR.'updraftplus-manifest.json');
1580
+ $decoded_manifest = json_decode($entity_manifest, true);
1581
+ if (null === $decoded_manifest) {
1582
+ // 2.16.0 could fail to put a comma after the first 'files' item
1583
+ $entity_manifest = preg_replace('/files":(.*)""/', 'files":$1","', $entity_manifest);
1584
+ $decoded_manifest = json_decode($entity_manifest, true);
1585
+ if (null === $decoded_manifest) return new WP_Error('decode_manifest_failed', 'Failed to JSON-decode the manifest file');
1586
+ global $updraftplus;
1587
+ $updraftplus->log('Manifest file had invalid JSON, but it was successfully patched');
1588
+ }
1589
  $base_path = trailingslashit(WP_CONTENT_DIR);
1590
  $path = $base_path.$type;
1591
+ return $this->incremental_restore_scan_dir($base_path, $path, 1, $decoded_manifest);
1592
  } else {
1593
  return new WP_Error('manifest_not_found', $this->strings['manifest_not_found']);
1594
  }
1607
 
1608
  global $wp_filesystem;
1609
 
1610
+ $directory_level = $entity_manifest['listed_levels'];
1611
  $entity_directories = $entity_manifest['contents']['directories'];
1612
  $entity_files = $entity_manifest['contents']['files'];
1613
 
1614
+ if (!isset($directory_level) || !isset($entity_directories) || !isset($entity_files)) return new WP_Error('read_manifest_failed', $this->strings['read_manifest_failed']);
1615
 
1616
  $directory_files = $wp_filesystem->dirlist($path);
1617
 
1620
  if ($wp_filesystem->is_dir($path . DIRECTORY_SEPARATOR . $file)) {
1621
  $directory = $path . DIRECTORY_SEPARATOR . $file;
1622
  // Check if we should go deeper in the file path, if not then check if this directory exists in the manifest, if not then remove it.
1623
+ if ($current_level + 1 < $directory_level) {
1624
  $incremental_restore_prune = $this->incremental_restore_scan_dir($base_path, $directory, $current_level + 1, $entity_manifest);
1625
  if (is_wp_error($incremental_restore_prune)) return $incremental_restore_prune;
1626
  } else {
1756
 
1757
  ENDHERE;
1758
  $multisite = 0;
1759
+ $timestamp = $this->ud_backup_set['timestamp'];
1760
  if (!empty($_REQUEST['updraft_restorer_backup_info'])) {
1761
 
1762
  $backup_info = UpdraftPlus_Manipulation_Functions::wp_unslash($_REQUEST['updraft_restorer_backup_info']);
1896
  /**
1897
  * Returns an octal string (but not an octal number)
1898
  *
1899
+ * @param String $file The file to get the permissions for
1900
+ * @param WP_Filesystem|Boolean $wpfs WP_Filesystem object, at least support the getchmod() method
1901
+ *
1902
+ * @return String
1903
  */
1904
  private function get_current_chmod($file, $wpfs = false) {
1905
  if (false == $wpfs) {
1941
  * "If needed" means, "If the permissions are not already more permissive than this". i.e. This will not tighten permissions from what the user had before (we trust them)
1942
  * $chmod should be an octal - i.e. the same as you'd pass to chmod()
1943
  *
1944
+ * @param String $dir a WP_Filesystem path
1945
+ * @param String $chmod specific chmod
1946
+ * @param Boolean $recursive indicate if recursive chmod is needed
1947
+ * @param Boolean $wpfs indicate whether to use wpfs access methods
1948
+ * @param Boolean $suppress suppress PHP error/warning output
1949
+ *
1950
+ * @return Boolean - whether the operation was successfully carried out
1951
  */
1952
  private function chmod_if_needed($dir, $chmod, $recursive = false, $wpfs = false, $suppress = true) {
1953
 
1961
 
1962
  $old_chmod = $this->get_current_chmod($dir, $wpfs);
1963
 
1964
+ // Sanity check
1965
+ if (strlen($old_chmod) < 3) return false;
1966
 
1967
  $new_chmod = $this->calculate_additive_chmod_oct($old_chmod, $chmod);
1968
 
2047
 
2048
  }
2049
 
2050
+ /**
2051
+ * WordPress options filter
2052
+ *
2053
+ * @param String $val - pre-filter value
2054
+ *
2055
+ * @return String - filtered value
2056
+ */
2057
  public function option_filter_permalink_structure($val) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
2058
  global $updraftplus;
2059
  return $updraftplus->option_filter_get('permalink_structure');
2060
  }
2061
 
2062
+ /**
2063
+ * WordPress options filter
2064
+ *
2065
+ * @param String $val - pre-filter value
2066
+ *
2067
+ * @return String - filtered value
2068
+ */
2069
  public function option_filter_page_on_front($val) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
2070
  global $updraftplus;
2071
  return $updraftplus->option_filter_get('page_on_front');
2072
  }
2073
 
2074
+ /**
2075
+ * WordPress options filter
2076
+ *
2077
+ * @param String $val - pre-filter value
2078
+ *
2079
+ * @return String - filtered value
2080
+ */
2081
  public function option_filter_rewrite_rules($val) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
2082
  global $updraftplus;
2083
  return $updraftplus->option_filter_get('rewrite_rules');
2122
 
2123
  if (!file_exists($working_dir_localpath.'/'.$db_basename)) {
2124
  $separatedb = empty($plugins[$this->ud_foreign]['separatedb']) ? false : true;
2125
+ $filtered_db_name = apply_filters('updraftplus_foreign_dbfilename', false, $this->ud_foreign, $this->ud_backup_set, $working_dir_localpath, $separatedb);
2126
  if (is_string($filtered_db_name)) $db_basename = $filtered_db_name;
2127
  }
2128
  }
2657
  }
2658
 
2659
  // Rescan storage, but only if there was remote storage and a database; otherwise just re-scan locally
2660
+ if (!empty($this->ud_backup_set['db']) && !empty($this->ud_backup_set['service']) && ('none' !== $this->ud_backup_set['service'] && 'email' !== $this->ud_backup_set['service'] && array('') !== $this->ud_backup_set['service'] && array('none') !== $this->ud_backup_set['service'] && array('email') !== $this->ud_backup_set['service'])) {
2661
+ $only_add_this_file = array('file' => $this->ud_backup_set['db']);
2662
  UpdraftPlus_Backup_History::rebuild(true, $only_add_this_file);
2663
  } else {
2664
  UpdraftPlus_Backup_History::rebuild();
2974
  global $updraftplus_addons_migrator;
2975
  if (!empty($updraftplus_addons_migrator->new_blogid)) switch_to_blog($updraftplus_addons_migrator->new_blogid);
2976
 
2977
+ $filter_these = array('permalink_structure', 'rewrite_rules', 'page_on_front');
2978
+
2979
+ foreach ($filter_these as $opt) {
2980
  add_filter('pre_option_'.$opt, array($this, 'option_filter_'.$opt));
2981
  }
2982
 
2988
  if (function_exists('save_mod_rewrite_rules')) save_mod_rewrite_rules();
2989
  if (function_exists('iis7_save_url_rewrite_rules')) iis7_save_url_rewrite_rules();
2990
 
2991
+ foreach ($filter_these as $opt) {
2992
  remove_filter('pre_option_'.$opt, array($this, 'option_filter_'.$opt));
2993
  }
2994
 
2996
 
2997
  }
2998
 
2999
+ /**
3000
+ * WordPress options filter
3001
+ *
3002
+ * @param String $val - pre-filter value
3003
+ *
3004
+ * @return String - filtered value
3005
+ */
3006
+ public function option_filter_template($val) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
3007
+ global $updraftplus;
3008
+ return $updraftplus->option_filter_get('template');
3009
+ }
3010
+
3011
+ /**
3012
+ * WordPress options filter
3013
+ *
3014
+ * @param String $val - pre-filter value
3015
+ *
3016
+ * @return String - filtered value
3017
+ */
3018
+ public function option_filter_stylesheet($val) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
3019
+ global $updraftplus;
3020
+ return $updraftplus->option_filter_get('stylesheet');
3021
+ }
3022
+
3023
+ /**
3024
+ * WordPress options filter
3025
+ *
3026
+ * @param String $val - pre-filter value
3027
+ *
3028
+ * @return String - filtered value
3029
+ */
3030
+ public function option_filter_template_root($val) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
3031
+ global $updraftplus;
3032
+ return $updraftplus->option_filter_get('template_root');
3033
+ }
3034
+
3035
+ /**
3036
+ * WordPress options filter
3037
+ *
3038
+ * @param String $val - pre-filter value
3039
+ *
3040
+ * @return String - filtered value
3041
+ */
3042
+ public function option_filter_stylesheet_root($val) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Filter use
3043
+ global $updraftplus;
3044
+ return $updraftplus->option_filter_get('stylesheet_root');
3045
+ }
3046
+
3047
  private function restored_table($table, $import_table_prefix, $old_table_prefix) {
3048
 
3049
  $table_without_prefix = substr($table, strlen($import_table_prefix));
templates/wp-admin/advanced/lock-admin.php CHANGED
@@ -15,7 +15,7 @@ if (!class_exists('UpdraftPlus_Addon_LockAdmin') || (defined('UPDRAFTPLUS_NOADMI
15
 
16
  } else {
17
 
18
- ?><a href="<?php apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/updraftplus-premium/");?>">
19
  <em><?php _e('For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium.', 'updraftplus'); ?></em>
20
  </a><?php
21
 
15
 
16
  } else {
17
 
18
+ ?><a href="<?php apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/updraftplus-premium/");?>" target="_blank">
19
  <em><?php _e('For the ability to lock access to UpdraftPlus settings with a password, upgrade to UpdraftPlus Premium.', 'updraftplus'); ?></em>
20
  </a><?php
21
 
templates/wp-admin/advanced/search-replace.php CHANGED
@@ -5,7 +5,7 @@
5
  <div class="advanced_tools search_replace">
6
  <p class="updraftplus-search-replace-advert">
7
  <h3><?php echo __('Search / replace database', 'updraftplus'); ?></h3>
8
- <a href="<?php apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/updraftplus-premium/");?>">
9
  <em><?php _e('For the ability to migrate websites, upgrade to UpdraftPlus Premium.', 'updraftplus'); ?></em>
10
  </a>
11
  </p>
5
  <div class="advanced_tools search_replace">
6
  <p class="updraftplus-search-replace-advert">
7
  <h3><?php echo __('Search / replace database', 'updraftplus'); ?></h3>
8
+ <a href="<?php apply_filters("updraftplus_com_link", "https://updraftplus.com/shop/updraftplus-premium/");?>" target="_blank">
9
  <em><?php _e('For the ability to migrate websites, upgrade to UpdraftPlus Premium.', 'updraftplus'); ?></em>
10
  </a>
11
  </p>
templates/wp-admin/notices/thanks-for-using-main-dash.php CHANGED
@@ -9,28 +9,28 @@
9
  echo '<p>'.__('Super-charge and secure your WordPress site with our other top plugins:', 'updraftplus').'</p>';
10
  ?>
11
  <p>
12
- <?php echo '<strong><a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/updraftplus-premium/").'">'.__('UpdraftPlus Premium', 'updraftplus').'</a>: </strong>'.__("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.", 'updraftplus');
13
- echo ' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/comparison-updraftplus-free-updraftplus-premium/").'">'.__('Compare with the free version', 'updraftplus').'</a> / <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/updraftplus-premium/").'">'.__('Go to the shop.', 'updraftplus').'</a>';
14
  ?>
15
  </p>
16
  <p>
17
- <?php echo '<strong><a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/updraftcentral/").'">'.__('UpdraftCentral', 'updraftplus').'</a> </strong>'.__('is a highly efficient way to manage, update and backup multiple websites from one place.', 'updraftplus'); ?>
18
  </p>
19
  <p>
20
- <?php echo '<strong><a href="https://www.metaslider.com">MetaSlider</a>: </strong>'.__('Add style and flare easily with beautifully-designed sliders on the #1 WP slider plugin', 'updraftplus'); ?>
21
  </p>
22
  <p>
23
- <?php echo '<strong><a href="https://getwpo.com">WP-Optimize</a>: </strong>'.__('Auto-clean your WordPress database so that it runs at maximum efficiency. 800,000 users!', 'updraftplus'); ?>
24
  </p>
25
  <p>
26
- <?php echo '<strong><a href="https://getkeyy.com/">Keyy: </a></strong>'.__('Simple and secure login with a wave of your phone.', 'updraftplus'); ?>
27
  </p>
28
  <p>
29
- <?php echo '<strong><a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/newsletter-signup").'">'.__('Free Newsletter', 'updraftplus').'</a>: </strong>'.__('UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time.', 'updraftplus'); ?>
30
  </p>
31
  <p>
32
  <?php echo '<strong>'.__('More quality plugins', 'updraftplus').' :</strong>';?>
33
- <a href="https://www.simbahosting.co.uk/s3/shop/"><?php echo __('Premium WooCommerce plugins', 'updraftplus').'</a> | <a href="https://wordpress.org/plugins/two-factor-authentication/">'.__('Free two-factor security plugin', 'updraftplus');?></a>
34
  </p>
35
  <div style="float:right;"><a href="#>" onclick="jQuery('#updraft-dashnotice').slideUp(); jQuery.post(ajaxurl, {action: 'updraft_ajax', subaction: 'dismissdashnotice', nonce: '<?php echo wp_create_nonce('updraftplus-credentialtest-nonce');?>' });"><?php printf(__('Dismiss (for %s months)', 'updraftplus'), 12); ?></a></div>
36
  <p>&nbsp;</p>
9
  echo '<p>'.__('Super-charge and secure your WordPress site with our other top plugins:', 'updraftplus').'</p>';
10
  ?>
11
  <p>
12
+ <?php echo '<strong><a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/updraftplus-premium/").'" target="_blank">'.__('UpdraftPlus Premium', 'updraftplus').'</a>: </strong>'.__("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.", 'updraftplus');
13
+ echo ' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/comparison-updraftplus-free-updraftplus-premium/").'" target="_blank">'.__('Compare with the free version', 'updraftplus').'</a> / <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/updraftplus-premium/").'" target="_blank">'.__('Go to the shop.', 'updraftplus').'</a>';
14
  ?>
15
  </p>
16
  <p>
17
+ <?php echo '<strong><a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/updraftcentral/").'" target="_blank">'.__('UpdraftCentral', 'updraftplus').'</a> </strong>'.__('is a highly efficient way to manage, update and backup multiple websites from one place.', 'updraftplus'); ?>
18
  </p>
19
  <p>
20
+ <?php echo '<strong><a href="https://www.metaslider.com" target="_blank">MetaSlider</a>: </strong>'.__('Add style and flare easily with beautifully-designed sliders on the #1 WP slider plugin', 'updraftplus'); ?>
21
  </p>
22
  <p>
23
+ <?php echo '<strong><a href="https://getwpo.com" target="_blank">WP-Optimize</a>: </strong>'.__('Auto-clean your WordPress database so that it runs at maximum efficiency. 800,000 users!', 'updraftplus'); ?>
24
  </p>
25
  <p>
26
+ <?php echo '<strong><a href="https://getkeyy.com/" target="_blank">Keyy: </a></strong>'.__('Simple and secure login with a wave of your phone.', 'updraftplus'); ?>
27
  </p>
28
  <p>
29
+ <?php echo '<strong><a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/newsletter-signup").'" target="_blank">'.__('Free Newsletter', 'updraftplus').'</a>: </strong>'.__('UpdraftPlus news, high-quality training materials for WordPress developers and site-owners, and general WordPress news. You can de-subscribe at any time.', 'updraftplus'); ?>
30
  </p>
31
  <p>
32
  <?php echo '<strong>'.__('More quality plugins', 'updraftplus').' :</strong>';?>
33
+ <a href="https://www.simbahosting.co.uk/s3/shop/" target="_blank"><?php echo __('Premium WooCommerce plugins', 'updraftplus').'</a> | <a href="https://wordpress.org/plugins/two-factor-authentication/" target="_blank">'.__('Free two-factor security plugin', 'updraftplus');?></a>
34
  </p>
35
  <div style="float:right;"><a href="#>" onclick="jQuery('#updraft-dashnotice').slideUp(); jQuery.post(ajaxurl, {action: 'updraft_ajax', subaction: 'dismissdashnotice', nonce: '<?php echo wp_create_nonce('updraftplus-credentialtest-nonce');?>' });"><?php printf(__('Dismiss (for %s months)', 'updraftplus'), 12); ?></a></div>
36
  <p>&nbsp;</p>
templates/wp-admin/settings/backupnow-modal.php CHANGED
@@ -14,7 +14,7 @@
14
  </p>
15
 
16
  <div class="incremental-free-only">
17
- <p><?php echo sprintf(__('Incremental backups are a feature of %s (upgrade by following this link).', 'updraftplus'), '<a href="'.$updraftplus->get_url('premium').'" target="_blank">UpdraftPlus Premium</a>'); ?>
18
  </a>
19
  <br>
20
  <a href="https://updraftplus.com/tell-me-more-about-incremental-backups/" target="_blank"><?php _e('Find out more about incremental backups here.', 'updraftplus'); ?></a></p>
14
  </p>
15
 
16
  <div class="incremental-free-only">
17
+ <p><?php echo sprintf(__('Incremental backups are a feature of %s (upgrade by following this link).', 'updraftplus'), '<a href="'.$updraftplus->get_url('premium').'" target="_blank">UpdraftPlus Premium').'</a>'; ?>
18
  </a>
19
  <br>
20
  <a href="https://updraftplus.com/tell-me-more-about-incremental-backups/" target="_blank"><?php _e('Find out more about incremental backups here.', 'updraftplus'); ?></a></p>
templates/wp-admin/settings/delete-and-restore-modals.php CHANGED
@@ -51,7 +51,7 @@
51
 
52
  // The 'off' check is for badly configured setups - http://wordpress.org/support/topic/plugin-wp-super-cache-warning-php-safe-mode-enabled-but-safe-mode-is-off
53
  if ($updraftplus->detect_safe_mode()) {
54
- echo "<p><em>".__("Your web server has PHP's so-called safe_mode active.", 'updraftplus').' '.__('This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time', 'updraftplus').' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/faqs/i-want-to-restore-but-have-either-cannot-or-have-failed-to-do-so-from-the-wp-admin-console/").'">'.__('or to restore manually', 'updraftplus').'.</a></em></p><br>';
55
  }
56
 
57
  $backupable_entities = $updraftplus->get_backupable_file_entities(true, true);
51
 
52
  // The 'off' check is for badly configured setups - http://wordpress.org/support/topic/plugin-wp-super-cache-warning-php-safe-mode-enabled-but-safe-mode-is-off
53
  if ($updraftplus->detect_safe_mode()) {
54
+ echo "<p><em>".__("Your web server has PHP's so-called safe_mode active.", 'updraftplus').' '.__('This makes time-outs much more likely. You are recommended to turn safe_mode off, or to restore only one entity at a time', 'updraftplus').' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/faqs/i-want-to-restore-but-have-either-cannot-or-have-failed-to-do-so-from-the-wp-admin-console/").'" target="_blank">'.__('or to restore manually', 'updraftplus').'.</a></em></p><br>';
55
  }
56
 
57
  $backupable_entities = $updraftplus->get_backupable_file_entities(true, true);
templates/wp-admin/settings/downloading-and-restoring.php CHANGED
@@ -24,7 +24,7 @@ if (!empty($options['include_header'])) echo '<h2>'.__('Existing Backups', 'updr
24
  <div class="download-backups form-table">
25
  <?php if (!empty($options['include_whitespace_warning'])) { ?>
26
  <p class="ud-whitespace-warning updraft-hidden" style="display:none;">
27
- <?php echo '<strong>'.__('Warning', 'updraftplus').':</strong> '.__('Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here.', 'updraftplus').' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/problems-with-extra-white-space/").'">'.__('Follow this link for more information', 'updraftplus').'</a>';?>
28
  </p>
29
  <?php }
30
  $bom_warning = $updraftplus_admin->get_bom_warning_text();
24
  <div class="download-backups form-table">
25
  <?php if (!empty($options['include_whitespace_warning'])) { ?>
26
  <p class="ud-whitespace-warning updraft-hidden" style="display:none;">
27
+ <?php echo '<strong>'.__('Warning', 'updraftplus').':</strong> '.__('Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here.', 'updraftplus').' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/problems-with-extra-white-space/").'" target="_blank">'.__('Follow this link for more information', 'updraftplus').'</a>';?>
28
  </p>
29
  <?php }
30
  $bom_warning = $updraftplus_admin->get_bom_warning_text();
templates/wp-admin/settings/form-contents.php CHANGED
@@ -84,7 +84,7 @@ foreach ($default_options as $k => $v) {
84
  <th></th>
85
  <td><div>
86
  <?php
87
- echo apply_filters('updraftplus_fixtime_ftinfo', '<p>'.__('To fix the time at which a backup should take place,', 'updraftplus').' ('.__('e.g. if your server is busy at day and you want to run overnight', 'updraftplus').'), '.__('to take incremental backups', 'updraftplus').', '.__('or to configure more complex schedules', 'updraftplus').', <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/updraftplus-premium/").'">'.htmlspecialchars(__('use UpdraftPlus Premium', 'updraftplus')).'</a></p>');
88
  ?>
89
  </div></td>
90
  </tr>
@@ -122,7 +122,7 @@ foreach ($default_options as $k => $v) {
122
  <?php
123
  if (false === apply_filters('updraftplus_storage_printoptions', false, $active_service)) {
124
  echo '</div>';
125
- echo '<p><a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/morestorage/").'">'.htmlspecialchars(__('You can send a backup to more than one destination with an add-on.', 'updraftplus')).'</a></p>';
126
  }
127
  ?>
128
 
@@ -144,7 +144,7 @@ foreach ($default_options as $k => $v) {
144
  <th><?php _e('Include in files backup', 'updraftplus');?>:</th>
145
  <td>
146
  <?php echo $updraftplus_admin->files_selector_widgetry('', true, true); ?>
147
- <p><?php echo apply_filters('updraftplus_admin_directories_description', __('The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org.', 'updraftplus').' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/").'">'.htmlspecialchars(__('See also the "More Files" add-on from our shop.', 'updraftplus')).'</a>'); ?></p>
148
  </td>
149
  </tr>
150
  </table>
@@ -158,7 +158,7 @@ foreach ($default_options as $k => $v) {
158
 
159
  <td>
160
  <?php
161
- echo apply_filters('updraft_database_encryption_config', '<a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/landing/updraftplus-premium").'">'.__("Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup.", 'updraftplus').'</a> '.__('It can also backup external databases.', 'updraftplus'));
162
  ?>
163
  </td>
164
  </tr>
@@ -212,7 +212,7 @@ foreach ($default_options as $k => $v) {
212
  }
213
 
214
  if (!$wp_optimize_file) {
215
- ?><br><a href="https://wordpress.org/plugins/wp-optimize/"><?php _e('Recommended: optimize your database with WP-Optimize.', 'updraftplus');?></a>
216
  <?php
217
  }
218
  ?>
@@ -259,7 +259,7 @@ foreach ($default_options as $k => $v) {
259
  ?>
260
  <label for="updraft_email" class="updraft_checkbox"><input type="checkbox" id="updraft_email" name="updraft_email" value="<?php esc_attr_e(get_bloginfo('admin_email')); ?>"<?php if (!empty($updraft_email)) echo ' checked="checked"';?> > <?php echo __("Check this box to have a basic report sent to", 'updraftplus').' <a href="'.admin_url('options-general.php').'">'.__("your site's admin address", 'updraftplus').'</a> ('.htmlspecialchars(get_bloginfo('admin_email')).")."; ?></label>
261
  <?php
262
- if (!class_exists('UpdraftPlus_Addon_Reporting')) echo '<a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/reporting/").'">'.__('For more reporting features, use the Reporting add-on.', 'updraftplus').'</a>';
263
  ?>
264
  </td>
265
  </tr>
@@ -342,12 +342,12 @@ foreach ($default_options as $k => $v) {
342
 
343
  <tr class="expertmode updraft-hidden" style="display:none;">
344
  <th><?php _e('Disable SSL entirely where possible', 'updraftplus');?>:</th>
345
- <td><input data-updraft_settings_test="nossl" type="checkbox" id="updraft_ssl_nossl" name="updraft_ssl_nossl" value="1" <?php if (UpdraftPlus_Options::get_updraft_option('updraft_ssl_nossl')) echo 'checked="checked"'; ?>> <br><label for="updraft_ssl_nossl"><?php _e('Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect.', 'updraftplus');?> <a href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/faqs/i-get-ssl-certificate-errors-when-backing-up-andor-restoring/");?>"><?php _e('See this FAQ also.', 'updraftplus');?></a></label></td>
346
  </tr>
347
 
348
  <tr class="expertmode updraft-hidden" style="display:none;">
349
  <th><?php _e('Automatic updates', 'updraftplus');?>:</th>
350
- <td><label><input type="checkbox" id="updraft_auto_updates" data-updraft_settings_test="updraft_auto_updates" name="updraft_auto_updates" value="1" <?php if (UpdraftPlus_Options::get_updraft_option('updraft_auto_updates')) echo 'checked="checked"'; ?>><br /><?php _e('Ask WordPress to automatically update UpdraftPlus when it finds an available update.', 'updraftplus');?></label><p><a href="https://wordpress.org/plugins/stops-core-theme-and-plugin-updates/"><?php _e('Read more about Easy Updates Manager', 'updraftplus'); ?></a></p></td>
351
  </tr>
352
 
353
  <?php do_action('updraftplus_configprint_expertoptions'); ?>
84
  <th></th>
85
  <td><div>
86
  <?php
87
+ echo apply_filters('updraftplus_fixtime_ftinfo', '<p>'.__('To fix the time at which a backup should take place,', 'updraftplus').' ('.__('e.g. if your server is busy at day and you want to run overnight', 'updraftplus').'), '.__('to take incremental backups', 'updraftplus').', '.__('or to configure more complex schedules', 'updraftplus').', <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/updraftplus-premium/").'" target="_blank">'.htmlspecialchars(__('use UpdraftPlus Premium', 'updraftplus')).'</a></p>');
88
  ?>
89
  </div></td>
90
  </tr>
122
  <?php
123
  if (false === apply_filters('updraftplus_storage_printoptions', false, $active_service)) {
124
  echo '</div>';
125
+ echo '<p><a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/morestorage/").'" target="_blank">'.htmlspecialchars(__('You can send a backup to more than one destination with an add-on.', 'updraftplus')).'</a></p>';
126
  }
127
  ?>
128
 
144
  <th><?php _e('Include in files backup', 'updraftplus');?>:</th>
145
  <td>
146
  <?php echo $updraftplus_admin->files_selector_widgetry('', true, true); ?>
147
+ <p><?php echo apply_filters('updraftplus_admin_directories_description', __('The above directories are everything, except for WordPress core itself which you can download afresh from WordPress.org.', 'updraftplus').' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/").'" target="_blank">'.htmlspecialchars(__('See also the "More Files" add-on from our shop.', 'updraftplus')).'</a>'); ?></p>
148
  </td>
149
  </tr>
150
  </table>
158
 
159
  <td>
160
  <?php
161
+ echo apply_filters('updraft_database_encryption_config', '<a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/landing/updraftplus-premium").'" target="_blank">'.__("Don't want to be spied on? UpdraftPlus Premium can encrypt your database backup.", 'updraftplus').'</a> '.__('It can also backup external databases.', 'updraftplus'));
162
  ?>
163
  </td>
164
  </tr>
212
  }
213
 
214
  if (!$wp_optimize_file) {
215
+ ?><br><a href="https://wordpress.org/plugins/wp-optimize/" target="_blank"><?php _e('Recommended: optimize your database with WP-Optimize.', 'updraftplus');?></a>
216
  <?php
217
  }
218
  ?>
259
  ?>
260
  <label for="updraft_email" class="updraft_checkbox"><input type="checkbox" id="updraft_email" name="updraft_email" value="<?php esc_attr_e(get_bloginfo('admin_email')); ?>"<?php if (!empty($updraft_email)) echo ' checked="checked"';?> > <?php echo __("Check this box to have a basic report sent to", 'updraftplus').' <a href="'.admin_url('options-general.php').'">'.__("your site's admin address", 'updraftplus').'</a> ('.htmlspecialchars(get_bloginfo('admin_email')).")."; ?></label>
261
  <?php
262
+ if (!class_exists('UpdraftPlus_Addon_Reporting')) echo '<a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/reporting/").'" target="_blank">'.__('For more reporting features, use the Reporting add-on.', 'updraftplus').'</a>';
263
  ?>
264
  </td>
265
  </tr>
342
 
343
  <tr class="expertmode updraft-hidden" style="display:none;">
344
  <th><?php _e('Disable SSL entirely where possible', 'updraftplus');?>:</th>
345
+ <td><input data-updraft_settings_test="nossl" type="checkbox" id="updraft_ssl_nossl" name="updraft_ssl_nossl" value="1" <?php if (UpdraftPlus_Options::get_updraft_option('updraft_ssl_nossl')) echo 'checked="checked"'; ?>> <br><label for="updraft_ssl_nossl"><?php _e('Choosing this option lowers your security by stopping UpdraftPlus from using SSL for authentication and encrypted transport at all, where possible. Note that some cloud storage providers do not allow this (e.g. Dropbox), so with those providers this setting will have no effect.', 'updraftplus');?> <a href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/faqs/i-get-ssl-certificate-errors-when-backing-up-andor-restoring/");?>" target="_blank"><?php _e('See this FAQ also.', 'updraftplus');?></a></label></td>
346
  </tr>
347
 
348
  <tr class="expertmode updraft-hidden" style="display:none;">
349
  <th><?php _e('Automatic updates', 'updraftplus');?>:</th>
350
+ <td><label><input type="checkbox" id="updraft_auto_updates" data-updraft_settings_test="updraft_auto_updates" name="updraft_auto_updates" value="1" <?php if (UpdraftPlus_Options::get_updraft_option('updraft_auto_updates')) echo 'checked="checked"'; ?>><br /><?php _e('Ask WordPress to automatically update UpdraftPlus when it finds an available update.', 'updraftplus');?></label><p><a href="https://wordpress.org/plugins/stops-core-theme-and-plugin-updates/" target="_blank"><?php _e('Read more about Easy Updates Manager', 'updraftplus'); ?></a></p></td>
351
  </tr>
352
 
353
  <?php do_action('updraftplus_configprint_expertoptions'); ?>
templates/wp-admin/settings/header.php CHANGED
@@ -4,24 +4,24 @@
4
 
5
  <h1><?php echo $updraftplus->plugin_title; ?></h1>
6
  <div class="updraftplus-top-menu">
7
- <a href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/");?>">UpdraftPlus.Com</a> |
8
  <?php
9
  if (!defined('UPDRAFTPLUS_NOADS_B')) {
10
  ?>
11
- <a href="<?php echo apply_filters('updraftplus_com_link', 'https://updraftplus.com/shop/updraftplus-premium/');?>"><?php _e("Premium", 'updraftplus'); ?></a> |
12
  <?php
13
  }
14
  ?>
15
- <a href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/news/");?>"><?php _e('News', 'updraftplus');?></a> |
16
- <a href="https://twitter.com/updraftplus"><?php _e('Twitter', 'updraftplus');?></a> |
17
- <a href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/support/");?>"><?php _e("Support", 'updraftplus');?></a> |
18
  <?php
19
  if (!is_file(UPDRAFTPLUS_DIR.'/udaddons/updraftplus-addons.php')) {
20
  ?>
21
- <a href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/newsletter-signup");?>"><?php _e("Newsletter sign-up", 'updraftplus'); ?></a> |
22
  <?php
23
  }
24
  ?>
25
- <a href="https://david.dw-perspective.org.uk"><?php _e("Lead developer's homepage", 'updraftplus');?></a> |
26
- <a href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/support/frequently-asked-questions/");?>"><?php _e('FAQs', 'updraftplus'); ?></a> | <a href="https://www.simbahosting.co.uk/s3/shop/"><?php _e('More plugins', 'updraftplus');?></a> - <?php _e('Version', 'updraftplus');?>: <?php echo $updraftplus->version; ?>
27
  </div>
4
 
5
  <h1><?php echo $updraftplus->plugin_title; ?></h1>
6
  <div class="updraftplus-top-menu">
7
+ <a href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/");?>" target="_blank">UpdraftPlus.Com</a> |
8
  <?php
9
  if (!defined('UPDRAFTPLUS_NOADS_B')) {
10
  ?>
11
+ <a href="<?php echo apply_filters('updraftplus_com_link', 'https://updraftplus.com/shop/updraftplus-premium/');?>" target="_blank"><?php _e("Premium", 'updraftplus'); ?></a> |
12
  <?php
13
  }
14
  ?>
15
+ <a href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/news/");?>" target="_blank"><?php _e('News', 'updraftplus');?></a> |
16
+ <a href="https://twitter.com/updraftplus" target="_blank"><?php _e('Twitter', 'updraftplus');?></a> |
17
+ <a href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/support/");?>" target="_blank"><?php _e("Support", 'updraftplus');?></a> |
18
  <?php
19
  if (!is_file(UPDRAFTPLUS_DIR.'/udaddons/updraftplus-addons.php')) {
20
  ?>
21
+ <a href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/newsletter-signup");?>" target="_blank"><?php _e("Newsletter sign-up", 'updraftplus'); ?></a> |
22
  <?php
23
  }
24
  ?>
25
+ <a href="https://david.dw-perspective.org.uk" target="_blank"><?php _e("Lead developer's homepage", 'updraftplus');?></a> |
26
+ <a href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/support/frequently-asked-questions/");?>" target="_blank"><?php _e('FAQs', 'updraftplus'); ?></a> | <a href="https://www.simbahosting.co.uk/s3/shop/" target="_blank"><?php _e('More plugins', 'updraftplus');?></a> - <?php _e('Version', 'updraftplus');?>: <?php echo $updraftplus->version; ?>
27
  </div>
templates/wp-admin/settings/migrator-no-migrator.php CHANGED
@@ -14,7 +14,7 @@
14
  </p>
15
 
16
  <p>
17
- <a href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/landing/migrator/");?>"><?php _e('More information here.', 'updraftplus'); ?></a>
18
  </p>
19
  </div>
20
 
14
  </p>
15
 
16
  <p>
17
+ <a href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/landing/migrator/");?>" target="_blank"><?php _e('More information here.', 'updraftplus'); ?></a>
18
  </p>
19
  </div>
20
 
templates/wp-admin/settings/tab-addons.php CHANGED
@@ -20,7 +20,7 @@ $premv = UPDRAFTPLUS_URL.'/images/updraft_premv.png';
20
  <li><a target="_blank" href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/ask-a-pre-sales-question/");?>"><?php _e('Ask a pre-sales question', 'updraftplus');?></a></li>
21
  <li><a target="_blank" href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/support/");?>"><?php _e('Support', 'updraftplus');?></a></li>
22
  <li><a href="#other-plugins"><?php _e('Other great plugins', 'updraftplus');?></a></li>
23
- <li><a href="https://www.simbahosting.co.uk/s3/shop/"><?php _e('WooCommerce plugins', 'updraftplus');?></a></li>
24
  </ul>
25
  </div>
26
  <a target="_blank" class="button button-primary button-hero" href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/updraftplus-premium/");?>"><?php _e('Get it here', 'updraftplus');?></a>
@@ -53,7 +53,7 @@ $premv = UPDRAFTPLUS_URL.'/images/updraft_premv.png';
53
  <span class="installed updraft-yes"><span class="dashicons dashicons-yes" aria-label="<?php esc_attr_e('Yes', 'updraftplus');?>"></span> <?php _e('Installed', 'updraftplus');?></span>
54
  </td>
55
  <td>
56
- <a class="button button-primary" href="<?php esc_attr_e(apply_filters('updraftplus_com_link', 'https://updraftplus.com/shop/updraftplus-premium/'));?>"><?php _e('Upgrade now', 'updraftplus');?></a>
57
  </td>
58
  </tr>
59
  <tr>
@@ -260,7 +260,7 @@ $premv = UPDRAFTPLUS_URL.'/images/updraft_premv.png';
260
  <h4><?php _e('UpdraftVault storage', 'updraftplus');?></h4>
261
  <p>
262
  <?php _e('UpdraftPlus has its own embedded storage option, providing a zero-hassle way to download, store and manage all your backups from one place.', 'updraftplus');?>
263
- <a href="<?php esc_attr_e(apply_filters('updraftplus_com_link', 'https://updraftplus.com/landing/updraftvault'));?>"><?php _e('Premium / Find out more', 'updraftplus');?></a>
264
  </p>
265
 
266
  </td>
@@ -277,7 +277,7 @@ $premv = UPDRAFTPLUS_URL.'/images/updraft_premv.png';
277
  <span class="installed updraft-yes"><span class="dashicons dashicons-yes" aria-label="<?php esc_attr_e('Yes', 'updraftplus');?>"></span> <?php _e('Installed', 'updraftplus');?></span>
278
  </td>
279
  <td>
280
- <p><a class="button button-primary" href="<?php esc_attr_e(apply_filters('updraftplus_com_link', 'https://updraftplus.com/shop/updraftplus-premium/'));?>"><?php _e('Upgrade now', 'updraftplus');?></a></p>
281
  </td>
282
  </tr>
283
  </tbody>
20
  <li><a target="_blank" href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/ask-a-pre-sales-question/");?>"><?php _e('Ask a pre-sales question', 'updraftplus');?></a></li>
21
  <li><a target="_blank" href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/support/");?>"><?php _e('Support', 'updraftplus');?></a></li>
22
  <li><a href="#other-plugins"><?php _e('Other great plugins', 'updraftplus');?></a></li>
23
+ <li><a target="_blank" href="https://www.simbahosting.co.uk/s3/shop/"><?php _e('WooCommerce plugins', 'updraftplus');?></a></li>
24
  </ul>
25
  </div>
26
  <a target="_blank" class="button button-primary button-hero" href="<?php echo apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/updraftplus-premium/");?>"><?php _e('Get it here', 'updraftplus');?></a>
53
  <span class="installed updraft-yes"><span class="dashicons dashicons-yes" aria-label="<?php esc_attr_e('Yes', 'updraftplus');?>"></span> <?php _e('Installed', 'updraftplus');?></span>
54
  </td>
55
  <td>
56
+ <a class="button button-primary" href="<?php esc_attr_e(apply_filters('updraftplus_com_link', 'https://updraftplus.com/shop/updraftplus-premium/'));?>" target="_blank"><?php _e('Upgrade now', 'updraftplus');?></a>
57
  </td>
58
  </tr>
59
  <tr>
260
  <h4><?php _e('UpdraftVault storage', 'updraftplus');?></h4>
261
  <p>
262
  <?php _e('UpdraftPlus has its own embedded storage option, providing a zero-hassle way to download, store and manage all your backups from one place.', 'updraftplus');?>
263
+ <a href="<?php esc_attr_e(apply_filters('updraftplus_com_link', 'https://updraftplus.com/landing/updraftvault'));?>" target="_blank"><?php _e('Premium / Find out more', 'updraftplus');?></a>
264
  </p>
265
 
266
  </td>
277
  <span class="installed updraft-yes"><span class="dashicons dashicons-yes" aria-label="<?php esc_attr_e('Yes', 'updraftplus');?>"></span> <?php _e('Installed', 'updraftplus');?></span>
278
  </td>
279
  <td>
280
+ <p><a class="button button-primary" href="<?php esc_attr_e(apply_filters('updraftplus_com_link', 'https://updraftplus.com/shop/updraftplus-premium/'));?>" target="_blank"><?php _e('Upgrade now', 'updraftplus');?></a></p>
281
  </td>
282
  </tr>
283
  </tbody>
templates/wp-admin/settings/tab-backups.php CHANGED
@@ -24,7 +24,7 @@ if (!empty($options['include_header'])) echo '<h2>'.__('Existing Backups', 'updr
24
  <div class="download-backups form-table">
25
  <?php if (!empty($options['include_whitespace_warning'])) { ?>
26
  <p class="ud-whitespace-warning updraft-hidden" style="display:none;">
27
- <?php echo '<strong>'.__('Warning', 'updraftplus').':</strong> '.__('Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here.', 'updraftplus').' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/problems-with-extra-white-space/").'">'.__('Follow this link for more information', 'updraftplus').'</a>';?>
28
  </p>
29
  <?php }
30
  $bom_warning = $updraftplus_admin->get_bom_warning_text();
24
  <div class="download-backups form-table">
25
  <?php if (!empty($options['include_whitespace_warning'])) { ?>
26
  <p class="ud-whitespace-warning updraft-hidden" style="display:none;">
27
+ <?php echo '<strong>'.__('Warning', 'updraftplus').':</strong> '.__('Your WordPress installation has a problem with outputting extra whitespace. This can corrupt backups that you download from here.', 'updraftplus').' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/problems-with-extra-white-space/").'" target="_blank">'.__('Follow this link for more information', 'updraftplus').'</a>';?>
28
  </p>
29
  <?php }
30
  $bom_warning = $updraftplus_admin->get_bom_warning_text();
templates/wp-admin/settings/take-backup.php CHANGED
@@ -93,7 +93,7 @@
93
  <table>
94
  <tr>
95
  <td>
96
- <p class="multisite-advert-width"><?php echo __('Do you need WordPress Multisite support?', 'updraftplus').' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/updraftplus-premium/").'">'. __('Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on.', 'updraftplus');?></a>.</p>
97
  </td>
98
  </tr>
99
  </table>
93
  <table>
94
  <tr>
95
  <td>
96
+ <p class="multisite-advert-width"><?php echo __('Do you need WordPress Multisite support?', 'updraftplus').' <a href="'.apply_filters('updraftplus_com_link', "https://updraftplus.com/shop/updraftplus-premium/").'" target="_blank">'. __('Please check out UpdraftPlus Premium, or the stand-alone Multisite add-on.', 'updraftplus');?></a>.</p>
97
  </td>
98
  </tr>
99
  </table>
updraftplus.php CHANGED
@@ -5,7 +5,7 @@ Plugin Name: UpdraftPlus - Backup/Restore
5
  Plugin URI: https://updraftplus.com
6
  Description: Backup and restore: take backups locally, or backup to Amazon S3, Dropbox, Google Drive, Rackspace, (S)FTP, WebDAV & email, on automatic schedules.
7
  Author: UpdraftPlus.Com, DavidAnderson
8
- Version: 1.16.0
9
  Donate link: https://david.dw-perspective.org.uk/donate
10
  License: GPLv3 or later
11
  Text Domain: updraftplus
5
  Plugin URI: https://updraftplus.com
6
  Description: Backup and restore: take backups locally, or backup to Amazon S3, Dropbox, Google Drive, Rackspace, (S)FTP, WebDAV & email, on automatic schedules.
7
  Author: UpdraftPlus.Com, DavidAnderson
8
+ Version: 1.16.4
9
  Donate link: https://david.dw-perspective.org.uk/donate
10
  License: GPLv3 or later
11
  Text Domain: updraftplus
vendor/composer/installed.json CHANGED
@@ -708,23 +708,23 @@
708
  },
709
  {
710
  "name": "symfony/process",
711
- "version": "v3.4.20",
712
- "version_normalized": "3.4.20.0",
713
  "source": {
714
  "type": "git",
715
  "url": "https://github.com/symfony/process.git",
716
- "reference": "abb46b909dd6ba0b50e10d4c10ffe6ee96dd70f2"
717
  },
718
  "dist": {
719
  "type": "zip",
720
- "url": "https://api.github.com/repos/symfony/process/zipball/abb46b909dd6ba0b50e10d4c10ffe6ee96dd70f2",
721
- "reference": "abb46b909dd6ba0b50e10d4c10ffe6ee96dd70f2",
722
  "shasum": ""
723
  },
724
  "require": {
725
  "php": "^5.5.9|>=7.0.8"
726
  },
727
- "time": "2018-11-20T16:10:26+00:00",
728
  "type": "library",
729
  "extra": {
730
  "branch-alias": {
708
  },
709
  {
710
  "name": "symfony/process",
711
+ "version": "v3.4.21",
712
+ "version_normalized": "3.4.21.0",
713
  "source": {
714
  "type": "git",
715
  "url": "https://github.com/symfony/process.git",
716
+ "reference": "0d41dd7d95ed179aed6a13393b0f4f97bfa2d25c"
717
  },
718
  "dist": {
719
  "type": "zip",
720
+ "url": "https://api.github.com/repos/symfony/process/zipball/0d41dd7d95ed179aed6a13393b0f4f97bfa2d25c",
721
+ "reference": "0d41dd7d95ed179aed6a13393b0f4f97bfa2d25c",
722
  "shasum": ""
723
  },
724
  "require": {
725
  "php": "^5.5.9|>=7.0.8"
726
  },
727
+ "time": "2019-01-02T21:24:08+00:00",
728
  "type": "library",
729
  "extra": {
730
  "branch-alias": {
vendor/symfony/process/ExecutableFinder.php CHANGED
@@ -42,11 +42,11 @@ class ExecutableFinder
42
  /**
43
  * Finds an executable by name.
44
  *
45
- * @param string $name The executable name (without the extension)
46
- * @param string $default The default to return if no executable is found
47
- * @param array $extraDirs Additional dirs to check into
48
  *
49
- * @return string The executable path or default value
50
  */
51
  public function find($name, $default = null, array $extraDirs = array())
52
  {
42
  /**
43
  * Finds an executable by name.
44
  *
45
+ * @param string $name The executable name (without the extension)
46
+ * @param string|null $default The default to return if no executable is found
47
+ * @param array $extraDirs Additional dirs to check into
48
  *
49
+ * @return string|null The executable path or default value
50
  */
51
  public function find($name, $default = null, array $extraDirs = array())
52
  {
vendor/symfony/process/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2004-2018 Fabien Potencier
2
 
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
  of this software and associated documentation files (the "Software"), to deal
1
+ Copyright (c) 2004-2019 Fabien Potencier
2
 
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
  of this software and associated documentation files (the "Software"), to deal
vendor/symfony/process/Tests/ExecutableFinderTest.php CHANGED
@@ -65,6 +65,21 @@ class ExecutableFinderTest extends TestCase
65
  $this->assertEquals($expected, $result);
66
  }
67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  public function testFindWithExtraDirs()
69
  {
70
  if (ini_get('open_basedir')) {
65
  $this->assertEquals($expected, $result);
66
  }
67
 
68
+ public function testFindWithNullAsDefault()
69
+ {
70
+ if (ini_get('open_basedir')) {
71
+ $this->markTestSkipped('Cannot test when open_basedir is set');
72
+ }
73
+
74
+ $this->setPath('');
75
+
76
+ $finder = new ExecutableFinder();
77
+
78
+ $result = $finder->find('foo');
79
+
80
+ $this->assertNull($result);
81
+ }
82
+
83
  public function testFindWithExtraDirs()
84
  {
85
  if (ini_get('open_basedir')) {