Version Description
- New: Add Amazon S3 as backup cloud storage option for backup upload #1665
- Fix: Fatal error due to missing BackupScheduler class in Free version #1688
- Fix: Can not recursive scan file system if there is a symlink in root directory linking to the root directory itself. #1688
- Fix: Can not download backup files. Incorrect backup download link if wp-content folder is symlinked to another folder outside the wp root folder #1697
- Fix: Error on downloading backup in IIS due to section in parent web.config that overwrites the WP STAGING generated web.config in backup folder #1699
- Fix: PHP Fatal error while cloning if php iconv extension is not active. Continue cloning even if punycode related code doesn't work due to missing extensions #1702
- Enh: Remove duplicated mbstring class #1702
Download this release
Release Info
Developer | ReneHermi |
Plugin | WP Staging – DB & File Duplicator & Migration |
Version | 2.9.11 |
Comparing to | |
See all releases |
Code changes from version 2.9.10 to 2.9.11
- Backend/Administrator.php +1 -1
- Backend/Modules/Jobs/Files.php +0 -34
- Backend/views/_main/footer.php +1 -0
- Backend/views/backup/listing-backups-no-results.php +1 -1
- Backend/views/backup/listing.php +3 -0
- Backend/views/backup/modal/upload.php +2 -1
- Backend/views/notices/analytics-consent-failed.php +2 -2
- Backend/views/settings/main-settings.php +3 -3
- Backend/views/settings/tabs/general.php +96 -119
- Backend/views/settings/tabs/remote-storages.php +1 -1
- Backend/views/settings/tabs/storages/amazons3-settings.php +76 -0
- Backend/views/settings/tabs/storages/googledrive-settings.php +7 -4
- Backend/views/tools/index.php +2 -2
- Backend/views/tools/tabs/import_export.php +8 -8
- Core/DTO/Settings.php +2 -2
- Core/Utils/IISWebConfig.php +2 -0
- Framework/Adapter/Directory.php +24 -6
- Framework/Analytics/WithAnalyticsSiteInfo.php +2 -1
- Framework/Assets/Assets.php +4 -3
- Framework/SiteInfo.php +61 -3
- Framework/Utils/ThirdParty/Punycode.php +5 -11
- Framework/Utils/Urls.php +22 -5
- Framework/Utils/WpDefaultDirectories.php +7 -51
- assets/css/dist/wpstg-admin.css +98 -10
- assets/css/dist/wpstg-admin.css.map +1 -1
- assets/css/dist/wpstg-admin.min.css +1 -1
- assets/css/dist/wpstg-admin.min.css.map +1 -1
- bootstrap.php +1 -1
- constantsFree.php +1 -1
- languages/wp-staging-de_DE.po +9 -9
- languages/wp-staging-fr_FR.po +10 -10
- opcacheBootstrap.php +1 -1
- readme.txt +76 -33
- vendor_wpstg/autoload/files.php +3 -0
- vendor_wpstg/autoload/src.php +285 -1
- vendor_wpstg/autoload/vendor.php +285 -0
- vendor_wpstg/aws/aws-crt-php/NOTICE +1 -0
- vendor_wpstg/aws/aws-crt-php/builder.json +37 -0
- vendor_wpstg/aws/aws-crt-php/config.m4 +30 -0
- vendor_wpstg/aws/aws-crt-php/config.w32 +13 -0
- vendor_wpstg/aws/aws-crt-php/ext/awscrt.c +17 -0
- vendor_wpstg/aws/aws-crt-php/ext/awscrt.stub.php +212 -0
- vendor_wpstg/aws/aws-crt-php/ext/awscrt_arginfo.h +413 -0
- vendor_wpstg/aws/aws-crt-php/ext/crc.c +32 -0
- vendor_wpstg/aws/aws-crt-php/ext/credentials.c +154 -0
- vendor_wpstg/aws/aws-crt-php/ext/crt.c +314 -0
- vendor_wpstg/aws/aws-crt-php/ext/event_loop.c +48 -0
- vendor_wpstg/aws/aws-crt-php/ext/http.c +36 -0
- vendor_wpstg/aws/aws-crt-php/ext/logging.c +65 -0
- vendor_wpstg/aws/aws-crt-php/ext/php_aws_crt.h +171 -0
- vendor_wpstg/aws/aws-crt-php/ext/php_util.c +33 -0
- vendor_wpstg/aws/aws-crt-php/ext/signing.c +374 -0
- vendor_wpstg/aws/aws-crt-php/ext/stream.c +148 -0
- vendor_wpstg/aws/aws-crt-php/format-check.sh +24 -0
- vendor_wpstg/aws/aws-crt-php/gen_api.php +22 -0
- vendor_wpstg/aws/aws-crt-php/gen_stub.php +1641 -0
- vendor_wpstg/aws/aws-crt-php/package.xml-template_post +19 -0
- vendor_wpstg/aws/aws-crt-php/package.xml-template_pre +24 -0
- vendor_wpstg/aws/aws-crt-php/php-win.ini +2 -0
- vendor_wpstg/aws/aws-crt-php/php.ini +1 -0
- vendor_wpstg/aws/aws-crt-php/prepare_package_xml.sh +144 -0
- vendor_wpstg/aws/aws-crt-php/prepare_release.sh +31 -0
- vendor_wpstg/aws/aws-crt-php/run_tests +18 -0
- vendor_wpstg/aws/aws-crt-php/run_tests.bat +4 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/AwsCredentials.php +61 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/CredentialsProvider.php +24 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/Signable.php +44 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SignatureType.php +17 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SignedBodyHeaderType.php +13 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/Signing.php +23 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SigningAlgorithm.php +13 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SigningConfigAWS.php +50 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SigningResult.php +34 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/StaticCredentialsProvider.php +35 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/CRT.php +356 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/HTTP/Headers.php +51 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/HTTP/Message.php +94 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/HTTP/Request.php +33 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/HTTP/Response.php +29 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/IO/EventLoopGroup.php +38 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/IO/InputStream.php +49 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Internal/Encoding.php +40 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Internal/Extension.php +31 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Log.php +49 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/NativeResource.php +42 -0
- vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Options.php +80 -0
- vendor_wpstg/aws/aws-sdk-php/NOTICE +17 -0
- vendor_wpstg/aws/aws-sdk-php/src/AbstractConfigurationProvider.php +133 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/AbstractModel.php +70 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/ApiProvider.php +212 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/DateTimeResult.php +109 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/DocModel.php +102 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/AbstractErrorParser.php +70 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/JsonParserTrait.php +26 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/JsonRpcErrorParser.php +36 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/RestJsonErrorParser.php +43 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/XmlErrorParser.php +82 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/ListShape.php +30 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/MapShape.php +43 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Operation.php +87 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/AbstractParser.php +35 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/AbstractRestParser.php +140 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/Crc32ValidatingParser.php +38 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/DecodingEventStreamIterator.php +246 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/EventParsingIterator.php +86 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/Exception/ParserException.php +49 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/JsonParser.php +57 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/JsonRpcParser.php +36 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/MetadataParserTrait.php +71 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/PayloadParserTrait.php +47 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/QueryParser.php +46 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/RestJsonParser.php +39 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/RestXmlParser.php +33 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/XmlParser.php +125 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/Ec2ParamBuilder.php +32 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/JsonBody.php +86 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/JsonRpcSerializer.php +49 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/QueryParamBuilder.php +112 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/QuerySerializer.php +44 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/RestJsonSerializer.php +34 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/RestSerializer.php +200 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/RestXmlSerializer.php +42 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/XmlBody.php +148 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Service.php +357 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Shape.php +49 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/ShapeMap.php +59 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/StructureShape.php +68 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/TimestampShape.php +45 -0
- vendor_wpstg/aws/aws-sdk-php/src/Api/Validator.php +245 -0
- vendor_wpstg/aws/aws-sdk-php/src/Arn/AccessPointArn.php +55 -0
- vendor_wpstg/aws/aws-sdk-php/src/Arn/AccessPointArnInterface.php +11 -0
- vendor_wpstg/aws/aws-sdk-php/src/Arn/Arn.php +140 -0
- vendor_wpstg/aws/aws-sdk-php/src/Arn/ArnInterface.php +30 -0
- vendor_wpstg/aws/aws-sdk-php/src/Arn/ArnParser.php +66 -0
- vendor_wpstg/aws/aws-sdk-php/src/Arn/Exception/InvalidArnException.php +10 -0
- vendor_wpstg/aws/aws-sdk-php/src/Arn/ObjectLambdaAccessPointArn.php +35 -0
- vendor_wpstg/aws/aws-sdk-php/src/Arn/ResourceTypeAndIdTrait.php +25 -0
- vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/AccessPointArn.php +26 -0
- vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/BucketArnInterface.php +12 -0
- vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/MultiRegionAccessPointArn.php +35 -0
- vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/OutpostsAccessPointArn.php +77 -0
- vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/OutpostsArnInterface.php +12 -0
- vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/OutpostsBucketArn.php +71 -0
- vendor_wpstg/aws/aws-sdk-php/src/AwsClient.php +378 -0
Backend/Administrator.php
CHANGED
@@ -349,7 +349,7 @@ class Administrator
|
|
349 |
add_submenu_page(
|
350 |
"wpstg_clone",
|
351 |
__("WP Staging Tools", "wp-staging"),
|
352 |
-
__("
|
353 |
"manage_options",
|
354 |
"wpstg-tools",
|
355 |
[$this, "getToolsPage"]
|
349 |
add_submenu_page(
|
350 |
"wpstg_clone",
|
351 |
__("WP Staging Tools", "wp-staging"),
|
352 |
+
__("System Info", "wp-staging"),
|
353 |
"manage_options",
|
354 |
"wpstg-tools",
|
355 |
[$this, "getToolsPage"]
|
Backend/Modules/Jobs/Files.php
CHANGED
@@ -11,7 +11,6 @@ use WPStaging\Framework\Filesystem\FileObject;
|
|
11 |
use WPStaging\Framework\Filesystem\Filesystem;
|
12 |
use WPStaging\Framework\Filesystem\Permissions;
|
13 |
use WPStaging\Framework\Filesystem\WpUploadsFolderSymlinker;
|
14 |
-
use WPStaging\Framework\Utils\WpDefaultDirectories;
|
15 |
|
16 |
/**
|
17 |
* Class Files
|
@@ -408,39 +407,6 @@ class Files extends JobExecutable
|
|
408 |
return true;
|
409 |
}
|
410 |
|
411 |
-
/**
|
412 |
-
* Get wp-content and wp-content/uploads destination dir
|
413 |
-
* Necessary if these folders were customized and changed from the default ones.
|
414 |
-
*
|
415 |
-
* @return string
|
416 |
-
*/
|
417 |
-
protected function getWpContentPath($file)
|
418 |
-
{
|
419 |
-
// Get upload directory information
|
420 |
-
$uploads = wp_upload_dir();
|
421 |
-
|
422 |
-
// Get absolute path to wordpress uploads directory e.g srv/www/htdocs/sitename/wp-content/uploads
|
423 |
-
$uploadsAbsPath = trailingslashit($uploads['basedir']);
|
424 |
-
|
425 |
-
// Get relative path to the uploads folder, e.g assets or wp-content/uploads
|
426 |
-
$uploadsRelPath = (new WpDefaultDirectories())->getRelativeUploadPath();
|
427 |
-
|
428 |
-
// Get absolute path to wp-content directory e.g srv/www/htdocs/sitename/wp-content
|
429 |
-
$wpContentDir = trailingslashit(WP_CONTENT_DIR);
|
430 |
-
|
431 |
-
// Check if there is a custom uploads directory, then do a search $ replace. Do this only if custom upload path is not identical to WP_CONTENT_DIR
|
432 |
-
if ($uploadsAbsPath != $wpContentDir) {
|
433 |
-
$file = str_replace($uploadsAbsPath, ABSPATH . $uploadsRelPath, $file, $count);
|
434 |
-
}
|
435 |
-
// If there is no custom upload directory do a search & replace of the custom wp-content directory
|
436 |
-
if (empty($count) || $count === 0) {
|
437 |
-
$file = str_replace($wpContentDir, ABSPATH . 'wp-content/', $file);
|
438 |
-
}
|
439 |
-
|
440 |
-
|
441 |
-
return $file;
|
442 |
-
}
|
443 |
-
|
444 |
/**
|
445 |
* Set directory permissions
|
446 |
* @param string $file
|
11 |
use WPStaging\Framework\Filesystem\Filesystem;
|
12 |
use WPStaging\Framework\Filesystem\Permissions;
|
13 |
use WPStaging\Framework\Filesystem\WpUploadsFolderSymlinker;
|
|
|
14 |
|
15 |
/**
|
16 |
* Class Files
|
407 |
return true;
|
408 |
}
|
409 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
410 |
/**
|
411 |
* Set directory permissions
|
412 |
* @param string $file
|
Backend/views/_main/footer.php
CHANGED
@@ -4,6 +4,7 @@
|
|
4 |
<div id='wpstg-footer'>
|
5 |
<strong class="wpstg-footer--title"><?php _e("Knowledgebase", "wp-staging") ?></strong>
|
6 |
<ul>
|
|
|
7 |
<li><a href="https://wp-staging.com/docs/staging-site-redirects-live-site/" target="_blank" rel="external"><?php _e("Can not login to staging site", "wp-staging") ?></a></li>
|
8 |
<li><a href="https://wp-staging.com/docs/staging-site-redirects-live-site/" target="_blank" rel="external"><?php _e("Staging site redirects to production site", "wp-staging") ?></a></li>
|
9 |
<li><a href="https://wp-staging.com/docs/fix-white-or-blank-page-after-pushing-fatal-error-500/" target="_blank" rel="external"><?php _e("Staging site returns blank white page", "wp-staging") ?></a></li>
|
4 |
<div id='wpstg-footer'>
|
5 |
<strong class="wpstg-footer--title"><?php _e("Knowledgebase", "wp-staging") ?></strong>
|
6 |
<ul>
|
7 |
+
<li><a href="https://wp-staging.com/docs/how-to-migrate-your-wordpress-site-to-a-new-host/" target="_blank" rel="external"><?php _e("Migrate Website to Another Server or Domain", "wp-staging") ?></a></li>
|
8 |
<li><a href="https://wp-staging.com/docs/staging-site-redirects-live-site/" target="_blank" rel="external"><?php _e("Can not login to staging site", "wp-staging") ?></a></li>
|
9 |
<li><a href="https://wp-staging.com/docs/staging-site-redirects-live-site/" target="_blank" rel="external"><?php _e("Staging site redirects to production site", "wp-staging") ?></a></li>
|
10 |
<li><a href="https://wp-staging.com/docs/fix-white-or-blank-page-after-pushing-fatal-error-500/" target="_blank" rel="external"><?php _e("Staging site returns blank white page", "wp-staging") ?></a></li>
|
Backend/views/backup/listing-backups-no-results.php
CHANGED
@@ -12,7 +12,7 @@
|
|
12 |
<?php if ($isValidLicenseKey) : ?>
|
13 |
<?php _e('No Backups found. Create your first Backup above!', 'wp-staging'); ?>
|
14 |
<?php else :?>
|
15 |
-
<strong id="wpstg-invalid-license-message" class="wpstg--red"><?php echo sprintf(__('Please<a href="%s">
|
16 |
<?php endif; ?>
|
17 |
</div>
|
18 |
</li>
|
12 |
<?php if ($isValidLicenseKey) : ?>
|
13 |
<?php _e('No Backups found. Create your first Backup above!', 'wp-staging'); ?>
|
14 |
<?php else :?>
|
15 |
+
<strong id="wpstg-invalid-license-message" class="wpstg--red"><?php echo sprintf(__('Please<a href="%s">enter your license key</a> to create and restore your backup files.', 'wp-staging'), admin_url() . 'admin.php?page=wpstg-license'); ?></strong>
|
16 |
<?php endif; ?>
|
17 |
</div>
|
18 |
</li>
|
Backend/views/backup/listing.php
CHANGED
@@ -50,6 +50,9 @@ if ($cronMessage !== '') { ?>
|
|
50 |
<div class="text"><?php esc_html_e('There is a backup work in progress...', 'wp-staging'); ?></div>
|
51 |
</div>
|
52 |
<?php endif; ?>
|
|
|
|
|
|
|
53 |
|
54 |
<div id="wpstg-step-1">
|
55 |
<button id="wpstg-new-backup" class="wpstg-next-step-link wpstg-blue-primary wpstg-button" <?php echo $disabledProperty; ?> <?php echo $disabledPropertyCreateBackup ?>>
|
50 |
<div class="text"><?php esc_html_e('There is a backup work in progress...', 'wp-staging'); ?></div>
|
51 |
</div>
|
52 |
<?php endif; ?>
|
53 |
+
<div id="wpstg-did-you-know" style="margin-bottom:12px">
|
54 |
+
<strong><?php echo sprintf(__('Did you know? You can upload backup files to another website to transfer it. <a href="%s" target="_blank">Read more</a>', 'wp-staging'), 'https://wp-staging.com/docs/how-to-migrate-your-wordpress-site-to-a-new-host/'); ?></strong>
|
55 |
+
</div>
|
56 |
|
57 |
<div id="wpstg-step-1">
|
58 |
<button id="wpstg-new-backup" class="wpstg-next-step-link wpstg-blue-primary wpstg-button" <?php echo $disabledProperty; ?> <?php echo $disabledPropertyCreateBackup ?>>
|
Backend/views/backup/modal/upload.php
CHANGED
@@ -67,7 +67,8 @@ $uploadDirectory = str_replace(wp_normalize_path(ABSPATH), '', WPStaging::make(B
|
|
67 |
</div>
|
68 |
</div>
|
69 |
<p class="wpstg-backup-direct-upload-notice">
|
70 |
-
<?php
|
|
|
71 |
<strong><?php echo esc_html($uploadDirectory) ?></strong>
|
72 |
</p>
|
73 |
</div>
|
67 |
</div>
|
68 |
</div>
|
69 |
<p class="wpstg-backup-direct-upload-notice">
|
70 |
+
<?php _e('<strong>Did you know?</strong>', 'wp-staging') ?><br>
|
71 |
+
<?php esc_html_e('You can upload backups directly to the directory:', 'wp-staging') ?><br>
|
72 |
<strong><?php echo esc_html($uploadDirectory) ?></strong>
|
73 |
</p>
|
74 |
</div>
|
Backend/views/notices/analytics-consent-failed.php
CHANGED
@@ -6,7 +6,7 @@
|
|
6 |
?>
|
7 |
<div class="notice notice-warning">
|
8 |
<p><strong><?php echo esc_html__('WP STAGING - Communication with WP STAGING server failed', 'wp-staging') ?></strong></p>
|
9 |
-
<p><?php echo esc_html__('We could not reach WP STAGING servers, so
|
10 |
-
<p><?php echo esc_html__('No action is necessary on your part. You can always re-enable WP STAGING usage information sending in the Settings.', 'wp-staging') ?></p>
|
11 |
<p><?php echo esc_html__('This can be caused by a firewall, WordPress blocking external requests, a security plugin, or WP STAGING servers might be down.', 'wp-staging') ?></p>
|
|
|
12 |
</div>
|
6 |
?>
|
7 |
<div class="notice notice-warning">
|
8 |
<p><strong><?php echo esc_html__('WP STAGING - Communication with WP STAGING server failed', 'wp-staging') ?></strong></p>
|
9 |
+
<p><?php echo esc_html__('We could not reach WP STAGING servers, so sending usage information has been disabled .', 'wp-staging') ?></p>
|
|
|
10 |
<p><?php echo esc_html__('This can be caused by a firewall, WordPress blocking external requests, a security plugin, or WP STAGING servers might be down.', 'wp-staging') ?></p>
|
11 |
+
<p><?php echo esc_html__('No action is necessary on your part. You can always re-enable WP STAGING usage information sending on the page WP STAGING > Settings.', 'wp-staging') ?></p>
|
12 |
</div>
|
Backend/views/settings/main-settings.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
<?php require_once(WPSTG_PLUGIN_DIR . 'Backend/views/_main/header.php'); ?>
|
4 |
|
5 |
<div class="wpstg-tabs-container" id="wpstg-settings">
|
6 |
-
<ul class="nav-tab-wrapper">
|
7 |
<?php
|
8 |
$tabs = \WPStaging\Core\WPStaging::getInstance()->get("tabs")->get();
|
9 |
$activeTab = (isset($_GET["tab"]) && array_key_exists($_GET["tab"], $tabs)) ? $_GET["tab"] : "general";
|
@@ -19,12 +19,12 @@
|
|
19 |
)
|
20 |
);
|
21 |
|
22 |
-
$activeClass = ($activeTab === $id) ? " nav-tab-active" : '';
|
23 |
?>
|
24 |
<li>
|
25 |
<a href="<?php
|
26 |
echo $url ?>" title="<?php
|
27 |
-
echo esc_attr($name) ?>" class="nav-tab<?php
|
28 |
echo $activeClass ?>">
|
29 |
<?php
|
30 |
echo esc_html($name) ?>
|
3 |
<?php require_once(WPSTG_PLUGIN_DIR . 'Backend/views/_main/header.php'); ?>
|
4 |
|
5 |
<div class="wpstg-tabs-container" id="wpstg-settings">
|
6 |
+
<ul class="wpstg-nav-tab-wrapper">
|
7 |
<?php
|
8 |
$tabs = \WPStaging\Core\WPStaging::getInstance()->get("tabs")->get();
|
9 |
$activeTab = (isset($_GET["tab"]) && array_key_exists($_GET["tab"], $tabs)) ? $_GET["tab"] : "general";
|
19 |
)
|
20 |
);
|
21 |
|
22 |
+
$activeClass = ($activeTab === $id) ? " wpstg-nav-tab-active" : '';
|
23 |
?>
|
24 |
<li>
|
25 |
<a href="<?php
|
26 |
echo $url ?>" title="<?php
|
27 |
+
echo esc_attr($name) ?>" class="wpstg-nav-tab<?php
|
28 |
echo $activeClass ?>">
|
29 |
<?php
|
30 |
echo esc_html($name) ?>
|
Backend/views/settings/tabs/general.php
CHANGED
@@ -15,12 +15,11 @@
|
|
15 |
continue;
|
16 |
}
|
17 |
?>
|
18 |
-
<div id="<?php
|
19 |
-
echo $id ?>__wpstg_header">
|
20 |
<table class="wpstg-form-table">
|
21 |
<thead>
|
22 |
-
<tr class="row">
|
23 |
-
<th class="row th" colspan="2">
|
24 |
<div class="col-title">
|
25 |
<strong><?php
|
26 |
echo $name ?></strong>
|
@@ -31,8 +30,8 @@
|
|
31 |
</thead>
|
32 |
|
33 |
<tbody>
|
34 |
-
<tr class="row">
|
35 |
-
<td class="row th">
|
36 |
<div class="col-title">
|
37 |
<?php
|
38 |
echo $form->label("wpstg_settings[queryLimit]")
|
@@ -40,9 +39,9 @@
|
|
40 |
<span class="description">
|
41 |
<?php
|
42 |
_e(
|
43 |
-
"Number of DB rows, that are
|
44 |
The higher the value the faster the database copy process.
|
45 |
-
To find out the highest possible values try a high value like
|
46 |
until you get no more errors during copying process.",
|
47 |
"wp-staging"
|
48 |
); ?>
|
@@ -56,8 +55,8 @@
|
|
56 |
echo $form->render("wpstg_settings[queryLimit]") ?>
|
57 |
</td>
|
58 |
</tr>
|
59 |
-
<tr class="row">
|
60 |
-
<td class="row th">
|
61 |
<div class="col-title">
|
62 |
<?php
|
63 |
echo $form->label("wpstg_settings[querySRLimit]")
|
@@ -65,7 +64,7 @@
|
|
65 |
<span class="description">
|
66 |
<?php
|
67 |
_e(
|
68 |
-
"Number of DB rows, that are processed within one
|
69 |
The higher the value the faster the database search & replace process.
|
70 |
This is a high memory consumptive process. If you get timeouts lower this value!",
|
71 |
"wp-staging"
|
@@ -81,8 +80,8 @@
|
|
81 |
</td>
|
82 |
</tr>
|
83 |
|
84 |
-
<tr class="row">
|
85 |
-
<td class="row th">
|
86 |
<div class="col-title">
|
87 |
<?php
|
88 |
echo $form->label("wpstg_settings[fileLimit]")
|
@@ -90,7 +89,7 @@
|
|
90 |
<span class="description">
|
91 |
<?php
|
92 |
_e(
|
93 |
-
"Number of files to copy that will be copied within one
|
94 |
The higher the value the faster the file copy process.
|
95 |
To find out the highest possible values try a high value like 500 or more. If you get timeout issues, lower it
|
96 |
until you get no more errors during copying process.",
|
@@ -100,7 +99,7 @@
|
|
100 |
<br>
|
101 |
<?php
|
102 |
_e(
|
103 |
-
"<strong>Important:</strong> If CPU Load Priority is <strong>Low</strong
|
104 |
"wp-staging"
|
105 |
); ?>
|
106 |
<br>
|
@@ -115,8 +114,8 @@
|
|
115 |
</td>
|
116 |
</tr>
|
117 |
|
118 |
-
<tr class="row">
|
119 |
-
<td class="row th">
|
120 |
<div class="col-title">
|
121 |
<?php
|
122 |
echo $form->label("wpstg_settings[maxFileSize]") ?>
|
@@ -137,8 +136,8 @@
|
|
137 |
echo $form->render("wpstg_settings[maxFileSize]") ?>
|
138 |
</td>
|
139 |
</tr>
|
140 |
-
<tr class="row">
|
141 |
-
<td class="row th">
|
142 |
<div class="col-title">
|
143 |
<?php
|
144 |
echo $form->label("wpstg_settings[batchSize]") ?>
|
@@ -164,8 +163,8 @@
|
|
164 |
</td>
|
165 |
</tr>
|
166 |
|
167 |
-
<tr class="row">
|
168 |
-
<td class="row th">
|
169 |
<div class="col-title">
|
170 |
<?php
|
171 |
echo $form->label("wpstg_settings[cpuLoad]") ?>
|
@@ -188,32 +187,11 @@
|
|
188 |
echo $form->render("wpstg_settings[cpuLoad]") ?>
|
189 |
</td>
|
190 |
</tr>
|
191 |
-
<tr class="row">
|
192 |
-
<td class="row th">
|
193 |
-
<div class="col-title">
|
194 |
-
<?php
|
195 |
-
echo $form->label("wpstg_settings[delayRequests]") ?>
|
196 |
-
<span class="description">
|
197 |
-
<?php
|
198 |
-
_e(
|
199 |
-
"If your server uses rate limits it blocks requests and WP Staging can be interrupted. You can resolve that by adding one or more seconds of delay between the processing requests. ",
|
200 |
-
"wp-staging"
|
201 |
-
); ?>
|
202 |
-
<br>
|
203 |
-
<strong>Default: </strong> 0s
|
204 |
-
</span>
|
205 |
-
</div>
|
206 |
-
</td>
|
207 |
-
<td>
|
208 |
-
<?php
|
209 |
-
echo $form->render("wpstg_settings[delayRequests]") ?>
|
210 |
-
</td>
|
211 |
-
</tr>
|
212 |
<?php
|
213 |
if (!defined('WPSTGPRO_VERSION')) {
|
214 |
?>
|
215 |
-
<tr class="row">
|
216 |
-
<td class="row th">
|
217 |
<div class="col-title">
|
218 |
<?php
|
219 |
echo $form->label("wpstg_settings[disableAdminLogin]") ?>
|
@@ -234,8 +212,8 @@
|
|
234 |
<?php
|
235 |
if (defined('WPSTGPRO_VERSION')) {
|
236 |
?>
|
237 |
-
<tr class="row">
|
238 |
-
<td class="row th">
|
239 |
<div class="col-title">
|
240 |
<?php
|
241 |
echo $form->label("wpstg_settings[keepPermalinks]") ?>
|
@@ -243,7 +221,7 @@
|
|
243 |
<?php
|
244 |
echo sprintf(
|
245 |
__(
|
246 |
-
'
|
247 |
'wp-staging'
|
248 |
),
|
249 |
'https://wp-staging.com/docs/activate-permalinks-staging-site/'
|
@@ -259,16 +237,15 @@
|
|
259 |
<?php
|
260 |
}
|
261 |
?>
|
262 |
-
<tr class="row">
|
263 |
-
<td class="row th">
|
264 |
<div class="col-title">
|
265 |
<?php
|
266 |
echo $form->label("wpstg_settings[debugMode]") ?>
|
267 |
<span class="description">
|
268 |
<?php
|
269 |
_e(
|
270 |
-
"
|
271 |
-
in <strong>wp-content/uploads/wp-staging/logs/logfile.log</strong>.
|
272 |
<strong>Do NOT activate this until we ask you to do so!</strong>",
|
273 |
"wp-staging"
|
274 |
); ?>
|
@@ -280,15 +257,15 @@
|
|
280 |
echo $form->render("wpstg_settings[debugMode]") ?>
|
281 |
</td>
|
282 |
</tr>
|
283 |
-
<tr class="row">
|
284 |
-
<td class="row th">
|
285 |
<div class="col-title">
|
286 |
<?php
|
287 |
echo $form->label("wpstg_settings[optimizer]") ?>
|
288 |
<span class="description">
|
289 |
<?php
|
290 |
_e(
|
291 |
-
"The Optimizer is a mu plugin
|
292 |
"wp-staging"
|
293 |
); ?>
|
294 |
</span>
|
@@ -299,16 +276,15 @@
|
|
299 |
echo $form->render("wpstg_settings[optimizer]") ?>
|
300 |
</td>
|
301 |
</tr>
|
302 |
-
|
303 |
-
|
304 |
-
<td class="row th">
|
305 |
<div class="col-title">
|
306 |
<?php
|
307 |
echo $form->label("wpstg_settings[unInstallOnDelete]") ?>
|
308 |
<span class="description">
|
309 |
<?php
|
310 |
_e(
|
311 |
-
"Check this box if you like
|
312 |
This will not remove staging sites files or database tables.",
|
313 |
"wp-staging"
|
314 |
); ?>
|
@@ -321,8 +297,8 @@
|
|
321 |
</td>
|
322 |
</tr>
|
323 |
|
324 |
-
<tr class="row">
|
325 |
-
<td class="row th">
|
326 |
<div class="col-title">
|
327 |
<?php
|
328 |
echo $form->label("wpstg_settings[checkDirectorySize]") ?>
|
@@ -345,8 +321,8 @@
|
|
345 |
<?php
|
346 |
if (defined('WPSTGPRO_VERSION')) {
|
347 |
?>
|
348 |
-
<tr class="row">
|
349 |
-
<td class="row th">
|
350 |
<div class="col-title">
|
351 |
<?php
|
352 |
echo $form->label("wpstg_settings[userRoles][]") ?>
|
@@ -364,8 +340,8 @@
|
|
364 |
echo $form->render("wpstg_settings[userRoles][]") ?>
|
365 |
</td>
|
366 |
</tr>
|
367 |
-
<tr class="row">
|
368 |
-
<td class="row th">
|
369 |
<div class="col-title">
|
370 |
<?php
|
371 |
echo $form->label("wpstg_settings[usersWithStagingAccess]") ?>
|
@@ -383,17 +359,12 @@
|
|
383 |
echo $form->render("wpstg_settings[usersWithStagingAccess]") ?>
|
384 |
</td>
|
385 |
</tr>
|
386 |
-
<tr class="row">
|
387 |
-
<td class="row th">
|
388 |
<div class="col-title">
|
389 |
<?php
|
390 |
echo $form->label("wpstg_settings[adminBarColor]") ?>
|
391 |
<span class="description">
|
392 |
-
<?php
|
393 |
-
_e(
|
394 |
-
'Specify the color of staging site admin bar.</strong>',
|
395 |
-
'wp-staging'
|
396 |
-
); ?>
|
397 |
</span>
|
398 |
</div>
|
399 |
</td>
|
@@ -402,16 +373,17 @@
|
|
402 |
echo $form->render("wpstg_settings[adminBarColor]") ?>
|
403 |
</td>
|
404 |
</tr>
|
405 |
-
<tr class="row">
|
406 |
-
<td class="row th">
|
407 |
<div class="col-title">
|
408 |
<strong><?php echo __('Send Usage Information', 'wp-staging') ?></strong>
|
409 |
<span class="description">
|
410 |
<?php
|
411 |
_e(
|
412 |
-
'
|
413 |
'wp-staging'
|
414 |
);
|
|
|
415 |
echo wp_kses_post(__(sprintf('<i>See the data we collect <a href="%s" target="_blank">here</a></i>', 'https://wp-staging.com/what-data-do-we-collect/')), 'wp-staging');
|
416 |
?>
|
417 |
</span>
|
@@ -419,10 +391,10 @@
|
|
419 |
</td>
|
420 |
<td>
|
421 |
<?php
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
?>
|
427 |
<div style="font-weight:<?php echo $isAllowed ? 'bold' : ''; ?>"><a href="<?php echo esc_url($analytics->getConsentLink(true)) ?>"><?php echo esc_html__('Yes, send usage information. I\'d like to help improving this plugin.', 'wp-staging') ?></a></div>
|
428 |
<div style="margin-top:10px;font-weight:<?php echo $isDisallowed ? 'bold' : ''; ?>"><a href="<?php echo esc_url($analytics->getConsentLink(false)) ?>"><?php echo esc_html__('No, Don\'t send any usage information.', 'wp-staging') ?></a></div>
|
@@ -431,6 +403,50 @@
|
|
431 |
</td>
|
432 |
</tr>
|
433 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
434 |
}
|
435 |
?>
|
436 |
</tbody>
|
@@ -438,47 +454,8 @@
|
|
438 |
</div>
|
439 |
<?php
|
440 |
endforeach;
|
441 |
-
|
442 |
-
|
443 |
-
<div class="wpstg-settings-row">
|
444 |
-
<b class="wpstg-settings-title"><?php _e('Send Email Error Report', 'wp-staging') ?></b>
|
445 |
-
<div class="wpstg-settings-form-group">
|
446 |
-
<p class="wpstg-settings-message">
|
447 |
-
<?php _e('If a scheduled backup fails, send an email error report.', 'wp-staging') ?>
|
448 |
-
</p>
|
449 |
-
<input type="checkbox" id="wpstg-send-schedules-error-report" name="wpstg_settings[schedulesErrorReport]" class="wpstg-checkbox wpstg-settings-field" value="true" <?php echo get_option(WPStaging\Pro\Backup\BackupScheduler::BACKUP_SCHEDULE_ERROR_REPORT_OPTION) === 'true' ? 'checked' : '' ?> />
|
450 |
-
</div>
|
451 |
-
</div>
|
452 |
-
<div class="wpstg-settings-row">
|
453 |
-
<b class="wpstg-settings-title"><?php _e('Report Email Address', 'wp-staging') ?></b>
|
454 |
-
<div class="wpstg-settings-form-group">
|
455 |
-
<p class="wpstg-settings-message">
|
456 |
-
<?php _e('The email address to which the backup error report will be sent.', 'wp-staging') ?>
|
457 |
-
</p>
|
458 |
-
<input type="text" id="wpstg-send-schedules-report-email" name="wpstg_settings[schedulesReportEmail]" class="wpstg-checkbox wpstg-settings-field" value="<?php echo get_option(WPStaging\Pro\Backup\BackupScheduler::BACKUP_SCHEDULE_REPORT_EMAIL_OPTION) ?>" />
|
459 |
-
</div>
|
460 |
-
</div>
|
461 |
-
<?php
|
462 |
-
endif;
|
463 |
-
// show this option only on the staging site
|
464 |
-
if ($this->siteInfo->isStagingSite()) :
|
465 |
-
?>
|
466 |
-
<div class="wpstg-settings-row">
|
467 |
-
<b class="wpstg-settings-title"><?php _e('Allow Cloning (Staging Site Only)', 'wp-staging') ?></b>
|
468 |
-
<div class="wpstg-settings-form-group">
|
469 |
-
<p class="wpstg-settings-message">
|
470 |
-
<?php _e('Check this box to make this staging site cloneable.', 'wp-staging') ?>
|
471 |
-
<?php echo sprintf(__("If you would like to know more about cloning staging sites check out <a href='%s' target='_new'>this article</a>.", 'wp-staging'), 'https://wp-staging.com/docs/cloning-a-staging-site-testing-push-method/'); ?>
|
472 |
-
</p>
|
473 |
-
<input type="checkbox" id="wpstg-is-staging-cloneable" name="wpstg_settings[isStagingSiteCloneable]" class="wpstg-checkbox wpstg-settings-field" value="true" <?php echo $this->siteInfo->isCloneable() ? 'checked' : '' ?> />
|
474 |
-
</div>
|
475 |
-
</div>
|
476 |
-
<?php
|
477 |
-
endif;
|
478 |
-
// Show submit button any tab but add-ons
|
479 |
-
if ($activeTab !== "add-ons") {
|
480 |
-
submit_button();
|
481 |
-
}
|
482 |
unset($tabs);
|
483 |
?>
|
484 |
</form>
|
15 |
continue;
|
16 |
}
|
17 |
?>
|
18 |
+
<div id="<?php echo $id ?>__wpstg_header">
|
|
|
19 |
<table class="wpstg-form-table">
|
20 |
<thead>
|
21 |
+
<tr class="wpstg-settings-row">
|
22 |
+
<th class="wpstg-settings-row th" colspan="2">
|
23 |
<div class="col-title">
|
24 |
<strong><?php
|
25 |
echo $name ?></strong>
|
30 |
</thead>
|
31 |
|
32 |
<tbody>
|
33 |
+
<tr class="wpstg-settings-row">
|
34 |
+
<td class="wpstg-settings-row th">
|
35 |
<div class="col-title">
|
36 |
<?php
|
37 |
echo $form->label("wpstg_settings[queryLimit]")
|
39 |
<span class="description">
|
40 |
<?php
|
41 |
_e(
|
42 |
+
"Number of DB rows, that are queried within one request.
|
43 |
The higher the value the faster the database copy process.
|
44 |
+
To find out the highest possible values try a high value like 10.000 or more. If you get timeout issues, lower it
|
45 |
until you get no more errors during copying process.",
|
46 |
"wp-staging"
|
47 |
); ?>
|
55 |
echo $form->render("wpstg_settings[queryLimit]") ?>
|
56 |
</td>
|
57 |
</tr>
|
58 |
+
<tr class="wpstg-settings-row">
|
59 |
+
<td class="wpstg-settings-row th">
|
60 |
<div class="col-title">
|
61 |
<?php
|
62 |
echo $form->label("wpstg_settings[querySRLimit]")
|
64 |
<span class="description">
|
65 |
<?php
|
66 |
_e(
|
67 |
+
"Number of DB rows, that are processed within one request.
|
68 |
The higher the value the faster the database search & replace process.
|
69 |
This is a high memory consumptive process. If you get timeouts lower this value!",
|
70 |
"wp-staging"
|
80 |
</td>
|
81 |
</tr>
|
82 |
|
83 |
+
<tr class="wpstg-settings-row">
|
84 |
+
<td class="wpstg-settings-row th">
|
85 |
<div class="col-title">
|
86 |
<?php
|
87 |
echo $form->label("wpstg_settings[fileLimit]")
|
89 |
<span class="description">
|
90 |
<?php
|
91 |
_e(
|
92 |
+
"Number of files to copy that will be copied within one request.
|
93 |
The higher the value the faster the file copy process.
|
94 |
To find out the highest possible values try a high value like 500 or more. If you get timeout issues, lower it
|
95 |
until you get no more errors during copying process.",
|
99 |
<br>
|
100 |
<?php
|
101 |
_e(
|
102 |
+
"<strong>Important:</strong> If CPU Load Priority is <strong>Low</strong>, set a file copy limit value of 50 or higher! Otherwise file copying process takes a lot of time.",
|
103 |
"wp-staging"
|
104 |
); ?>
|
105 |
<br>
|
114 |
</td>
|
115 |
</tr>
|
116 |
|
117 |
+
<tr class="wpstg-settings-row">
|
118 |
+
<td class="wpstg-settings-row th">
|
119 |
<div class="col-title">
|
120 |
<?php
|
121 |
echo $form->label("wpstg_settings[maxFileSize]") ?>
|
136 |
echo $form->render("wpstg_settings[maxFileSize]") ?>
|
137 |
</td>
|
138 |
</tr>
|
139 |
+
<tr class="wpstg-settings-row">
|
140 |
+
<td class="wpstg-settings-row th">
|
141 |
<div class="col-title">
|
142 |
<?php
|
143 |
echo $form->label("wpstg_settings[batchSize]") ?>
|
163 |
</td>
|
164 |
</tr>
|
165 |
|
166 |
+
<tr class="wpstg-settings-row">
|
167 |
+
<td class="wpstg-settings-row th">
|
168 |
<div class="col-title">
|
169 |
<?php
|
170 |
echo $form->label("wpstg_settings[cpuLoad]") ?>
|
187 |
echo $form->render("wpstg_settings[cpuLoad]") ?>
|
188 |
</td>
|
189 |
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
190 |
<?php
|
191 |
if (!defined('WPSTGPRO_VERSION')) {
|
192 |
?>
|
193 |
+
<tr class="wpstg-settings-row">
|
194 |
+
<td class="wpstg-settings-row th">
|
195 |
<div class="col-title">
|
196 |
<?php
|
197 |
echo $form->label("wpstg_settings[disableAdminLogin]") ?>
|
212 |
<?php
|
213 |
if (defined('WPSTGPRO_VERSION')) {
|
214 |
?>
|
215 |
+
<tr class="wpstg-settings-row">
|
216 |
+
<td class="wpstg-settings-row th">
|
217 |
<div class="col-title">
|
218 |
<?php
|
219 |
echo $form->label("wpstg_settings[keepPermalinks]") ?>
|
221 |
<?php
|
222 |
echo sprintf(
|
223 |
__(
|
224 |
+
'Use on the staging site the same permalink structure and do not set permalinks to plain structure. <br/>Read more: <a href="%1$s" target="_blank">Permalink Settings</a> ',
|
225 |
'wp-staging'
|
226 |
),
|
227 |
'https://wp-staging.com/docs/activate-permalinks-staging-site/'
|
237 |
<?php
|
238 |
}
|
239 |
?>
|
240 |
+
<tr class="wpstg-settings-row">
|
241 |
+
<td class="wpstg-settings-row th">
|
242 |
<div class="col-title">
|
243 |
<?php
|
244 |
echo $form->label("wpstg_settings[debugMode]") ?>
|
245 |
<span class="description">
|
246 |
<?php
|
247 |
_e(
|
248 |
+
"Enable an extended debug mode that creates additional log entries in wp-content/uploads/wp-staging/logs/logfile.log.
|
|
|
249 |
<strong>Do NOT activate this until we ask you to do so!</strong>",
|
250 |
"wp-staging"
|
251 |
); ?>
|
257 |
echo $form->render("wpstg_settings[debugMode]") ?>
|
258 |
</td>
|
259 |
</tr>
|
260 |
+
<tr class="wpstg-settings-row">
|
261 |
+
<td class="wpstg-settings-row th">
|
262 |
<div class="col-title">
|
263 |
<?php
|
264 |
echo $form->label("wpstg_settings[optimizer]") ?>
|
265 |
<span class="description">
|
266 |
<?php
|
267 |
_e(
|
268 |
+
"The Optimizer is a mu plugin that disables all other plugins during WP STAGING processing. This lowers memory consumption and speeds up processing. This should always be enabled!",
|
269 |
"wp-staging"
|
270 |
); ?>
|
271 |
</span>
|
276 |
echo $form->render("wpstg_settings[optimizer]") ?>
|
277 |
</td>
|
278 |
</tr>
|
279 |
+
<tr class="wpstg-settings-row">
|
280 |
+
<td class="wpstg-settings-row th">
|
|
|
281 |
<div class="col-title">
|
282 |
<?php
|
283 |
echo $form->label("wpstg_settings[unInstallOnDelete]") ?>
|
284 |
<span class="description">
|
285 |
<?php
|
286 |
_e(
|
287 |
+
"Check this box if you like to remove all data when the plugin is deleted.
|
288 |
This will not remove staging sites files or database tables.",
|
289 |
"wp-staging"
|
290 |
); ?>
|
297 |
</td>
|
298 |
</tr>
|
299 |
|
300 |
+
<tr class="wpstg-settings-row">
|
301 |
+
<td class="wpstg-settings-row th">
|
302 |
<div class="col-title">
|
303 |
<?php
|
304 |
echo $form->label("wpstg_settings[checkDirectorySize]") ?>
|
321 |
<?php
|
322 |
if (defined('WPSTGPRO_VERSION')) {
|
323 |
?>
|
324 |
+
<tr class="wpstg-settings-row">
|
325 |
+
<td class="wpstg-settings-row th">
|
326 |
<div class="col-title">
|
327 |
<?php
|
328 |
echo $form->label("wpstg_settings[userRoles][]") ?>
|
340 |
echo $form->render("wpstg_settings[userRoles][]") ?>
|
341 |
</td>
|
342 |
</tr>
|
343 |
+
<tr class="wpstg-settings-row">
|
344 |
+
<td class="wpstg-settings-row th">
|
345 |
<div class="col-title">
|
346 |
<?php
|
347 |
echo $form->label("wpstg_settings[usersWithStagingAccess]") ?>
|
359 |
echo $form->render("wpstg_settings[usersWithStagingAccess]") ?>
|
360 |
</td>
|
361 |
</tr>
|
362 |
+
<tr class="wpstg-settings-row">
|
363 |
+
<td class="wpstg-settings-row th">
|
364 |
<div class="col-title">
|
365 |
<?php
|
366 |
echo $form->label("wpstg_settings[adminBarColor]") ?>
|
367 |
<span class="description">
|
|
|
|
|
|
|
|
|
|
|
368 |
</span>
|
369 |
</div>
|
370 |
</td>
|
373 |
echo $form->render("wpstg_settings[adminBarColor]") ?>
|
374 |
</td>
|
375 |
</tr>
|
376 |
+
<tr class="wpstg-settings-row">
|
377 |
+
<td class="wpstg-settings-row th">
|
378 |
<div class="col-title">
|
379 |
<strong><?php echo __('Send Usage Information', 'wp-staging') ?></strong>
|
380 |
<span class="description">
|
381 |
<?php
|
382 |
_e(
|
383 |
+
'Send usage information to wp-staging.com.',
|
384 |
'wp-staging'
|
385 |
);
|
386 |
+
echo '<br>';
|
387 |
echo wp_kses_post(__(sprintf('<i>See the data we collect <a href="%s" target="_blank">here</a></i>', 'https://wp-staging.com/what-data-do-we-collect/')), 'wp-staging');
|
388 |
?>
|
389 |
</span>
|
391 |
</td>
|
392 |
<td>
|
393 |
<?php
|
394 |
+
$analytics = WPStaging\Core\WPStaging::make(\WPStaging\Framework\Analytics\AnalyticsConsent::class);
|
395 |
+
$analyticsAllowed = $analytics->hasUserConsent();
|
396 |
+
$isAllowed = $analyticsAllowed;
|
397 |
+
$isDisallowed = !$analyticsAllowed && !is_null($analyticsAllowed); // "null" means didn't answer, "false" means declined
|
398 |
?>
|
399 |
<div style="font-weight:<?php echo $isAllowed ? 'bold' : ''; ?>"><a href="<?php echo esc_url($analytics->getConsentLink(true)) ?>"><?php echo esc_html__('Yes, send usage information. I\'d like to help improving this plugin.', 'wp-staging') ?></a></div>
|
400 |
<div style="margin-top:10px;font-weight:<?php echo $isDisallowed ? 'bold' : ''; ?>"><a href="<?php echo esc_url($analytics->getConsentLink(false)) ?>"><?php echo esc_html__('No, Don\'t send any usage information.', 'wp-staging') ?></a></div>
|
403 |
</td>
|
404 |
</tr>
|
405 |
<?php
|
406 |
+
if (WPStaging\Core\WPStaging::isPro()) :
|
407 |
+
?>
|
408 |
+
<tr class="wpstg-settings-row">
|
409 |
+
<td class="wpstg-settings-row th">
|
410 |
+
<b class="wpstg-settings-title"><?php _e('Send Email Error Report', 'wp-staging') ?></b>
|
411 |
+
<p class="wpstg-settings-message">
|
412 |
+
<?php _e('If a scheduled backup fails, send an email.', 'wp-staging') ?>
|
413 |
+
</p>
|
414 |
+
</td>
|
415 |
+
<td>
|
416 |
+
<input type="checkbox" id="wpstg-send-schedules-error-report" name="wpstg_settings[schedulesErrorReport]" class="wpstg-checkbox wpstg-settings-field" value="true" <?php echo get_option(WPStaging\Pro\Backup\BackupScheduler::BACKUP_SCHEDULE_ERROR_REPORT_OPTION) === 'true' ? 'checked' : '' ?> />
|
417 |
+
</td>
|
418 |
+
</tr>
|
419 |
+
<tr class="wpstg-settings-row">
|
420 |
+
<td>
|
421 |
+
<b class="wpstg-settings-title"><?php _e('Email Address', 'wp-staging') ?></b>
|
422 |
+
<p class="wpstg-settings-message">
|
423 |
+
<?php _e('Send emails to this address', 'wp-staging') ?>
|
424 |
+
</p>
|
425 |
+
</td>
|
426 |
+
<td>
|
427 |
+
<input type="text" id="wpstg-send-schedules-report-email" name="wpstg_settings[schedulesReportEmail]" class="wpstg-checkbox wpstg-settings-field" value="<?php echo get_option(WPStaging\Pro\Backup\BackupScheduler::BACKUP_SCHEDULE_REPORT_EMAIL_OPTION) ?>"/>
|
428 |
+
</td>
|
429 |
+
</tr>
|
430 |
+
<?php
|
431 |
+
endif;
|
432 |
+
// show this option only on the staging site
|
433 |
+
if ($this->siteInfo->isStagingSite()) :
|
434 |
+
?>
|
435 |
+
<tr>
|
436 |
+
<td>
|
437 |
+
<b class="wpstg-settings-title"><?php _e('Allow Cloning (Staging Site Only)', 'wp-staging') ?></b>
|
438 |
+
<p class="wpstg-settings-message">
|
439 |
+
<?php _e('Check this box to make this staging site cloneable.', 'wp-staging') ?>
|
440 |
+
<?php echo sprintf(__("If you would like to know more about cloning staging sites check out <a href='%s' target='_new'>this article</a>.", 'wp-staging'), 'https://wp-staging.com/docs/cloning-a-staging-site-testing-push-method/'); ?>
|
441 |
+
</p>
|
442 |
+
</td>
|
443 |
+
<td>
|
444 |
+
<input type="checkbox" id="wpstg-is-staging-cloneable" name="wpstg_settings[isStagingSiteCloneable]" class="wpstg-checkbox wpstg-settings-field" value="true" <?php echo $this->siteInfo->isCloneable() ? 'checked' : '' ?> />
|
445 |
+
</td>
|
446 |
+
</tr>
|
447 |
+
|
448 |
+
<?php
|
449 |
+
endif;
|
450 |
}
|
451 |
?>
|
452 |
</tbody>
|
454 |
</div>
|
455 |
<?php
|
456 |
endforeach;
|
457 |
+
|
458 |
+
submit_button();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
459 |
unset($tabs);
|
460 |
?>
|
461 |
</form>
|
Backend/views/settings/tabs/remote-storages.php
CHANGED
@@ -15,7 +15,7 @@ if (isset($_REQUEST['sub'])) {
|
|
15 |
$providerId = $storage['id'];
|
16 |
}
|
17 |
?>
|
18 |
-
<a class="wpstg-storage-provider <?php echo $isActive ? 'wpstg-storage-provider-active' : '' ?> href="<?php echo $isActive ? 'javascript:void(0);' : $storage['settingsPath']; ?>">
|
19 |
<?php echo $storage['name']; ?>
|
20 |
</a>
|
21 |
<?php endforeach; ?>
|
15 |
$providerId = $storage['id'];
|
16 |
}
|
17 |
?>
|
18 |
+
<a class="wpstg-storage-provider <?php echo $isActive ? 'wpstg-storage-provider-active' : '' ?>" href="<?php echo $isActive ? 'javascript:void(0);' : $storage['settingsPath']; ?>">
|
19 |
<?php echo $storage['name']; ?>
|
20 |
</a>
|
21 |
<?php endforeach; ?>
|
Backend/views/settings/tabs/storages/amazons3-settings.php
ADDED
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @var string $providerId
|
4 |
+
*/
|
5 |
+
?>
|
6 |
+
<fieldset>
|
7 |
+
<?php
|
8 |
+
/** @var \WPStaging\Pro\Backup\Storage\Storages\Amazon\S3 */
|
9 |
+
$amazonS3Storage = \WPStaging\Core\WPStaging::make(\WPStaging\Pro\Backup\Storage\Storages\Amazon\S3::class);
|
10 |
+
$isStorageAuthenticated = $amazonS3Storage->isAuthenticated();
|
11 |
+
$options = $amazonS3Storage->getOptions();
|
12 |
+
$accessKey = empty($options['accessKey']) ? '' : $options['accessKey'];
|
13 |
+
$secretKey = empty($options['secretKey']) ? '' : $options['secretKey'];
|
14 |
+
$region = empty($options['region']) ? '' : $options['region'];
|
15 |
+
$maxBackupsToKeep = empty($options['maxBackupsToKeep']) ? 2 : $options['maxBackupsToKeep'];
|
16 |
+
$location = empty($options['location']) ? '' : $options['location'];
|
17 |
+
?>
|
18 |
+
<p>
|
19 |
+
<strong class="wpstg-fs-14"><?php _e('Amazon S3', 'wp-staging'); ?></strong>
|
20 |
+
<br/>
|
21 |
+
<br/>
|
22 |
+
<?php echo __('Upload backup files to your personal Amazon S3 account.', 'wp-staging'); ?>
|
23 |
+
<br>
|
24 |
+
<?php echo sprintf(__('None of your backup data is sent to any other party! <a href="%s" target="_blank">Our privacy policy</a>.', 'wp-staging'), 'https://wp-staging.com/privacy-policy/#'); ?>
|
25 |
+
<br/>
|
26 |
+
</p>
|
27 |
+
<div class="wpstg-form-group">
|
28 |
+
<form class="wpstg-provider-settings-form" id="wpstg-provider-settings-form" method="post">
|
29 |
+
<div id="wpstg-provider-test-connection-fields">
|
30 |
+
<strong><?php _e('API Keys', 'wp-staging') ?></strong>
|
31 |
+
|
32 |
+
<input type="hidden" name="provider" value="<?php echo $providerId; ?>" />
|
33 |
+
|
34 |
+
<p>
|
35 |
+
<?php echo sprintf(__('<a href="%s" target="_blank">How to create Amazon API keys and S3 bucket</a>.', 'wp-staging'), 'https://wp-staging.com/docs/how-to-backup-website-to-amazon-s3-bucket/'); ?>
|
36 |
+
</p>
|
37 |
+
|
38 |
+
<fieldset class="wpstg-fieldset">
|
39 |
+
<label><?php _e('Access Key', 'wp-staging') ?></label>
|
40 |
+
<input class="wpstg-form-control" type="text" name="access_key" value="<?php echo $accessKey; ?>" />
|
41 |
+
</fieldset>
|
42 |
+
|
43 |
+
<fieldset class="wpstg-fieldset">
|
44 |
+
<label><?php _e('Secret Key', 'wp-staging') ?></label>
|
45 |
+
<input class="wpstg-form-control" type="text" name="secret_key" value="<?php echo $secretKey; ?>" />
|
46 |
+
</fieldset>
|
47 |
+
|
48 |
+
<fieldset class="wpstg-fieldset">
|
49 |
+
<label><?php _e('Region', 'wp-staging') ?></label>
|
50 |
+
<input class="wpstg-form-control" type="text" name="region" value="<?php echo $region; ?>" />
|
51 |
+
</fieldset>
|
52 |
+
</div>
|
53 |
+
<button type="button" id="wpstg-btn-provider-test-connection" class="wpstg-link-btn wpstg-blue-primary"><?php _e("Test Connection", "wp-staging") ?></button>
|
54 |
+
|
55 |
+
<hr/>
|
56 |
+
<strong><?php _e('Upload Settings', 'wp-staging') ?></strong>
|
57 |
+
<fieldset class="wpstg-fieldset">
|
58 |
+
<label><?php _e('Max Backups to Keep', 'wp-staging') ?></label>
|
59 |
+
<input class="wpstg-form-control" type="number" name="max_backups_to_keep" value="<?php echo $maxBackupsToKeep; ?>" style="max-width: 60px" />
|
60 |
+
<p><?php _e("Leave empty or zero for no limit", 'wp-staging') ?></p>
|
61 |
+
</fieldset>
|
62 |
+
|
63 |
+
<fieldset class="wpstg-fieldset">
|
64 |
+
<label><?php _e('Amazon S3 Bucket Location', 'wp-staging') ?></label>
|
65 |
+
<span>s3:</span><input class="wpstg-form-control" type="text" name="location" value="<?php echo $location; ?>" />
|
66 |
+
<p>
|
67 |
+
<?php echo sprintf(__("Create the bucket beforhand in your Amazon S3 account and add it here! %s To add a subdirectory you can write <code>s3:[bucket-name]/[directory-name]</code>. <br>The directory will be created by WP STAGING automatically during backup upload. ", 'wp-staging'), '<br>'); ?>
|
68 |
+
</p>
|
69 |
+
</fieldset>
|
70 |
+
|
71 |
+
<hr/>
|
72 |
+
|
73 |
+
<button type="button" id="wpstg-btn-save-provider-settings" class="wpstg-link-btn wpstg-blue-primary"><?php _e("Save Settings", "wp-staging") ?></button>
|
74 |
+
</form>
|
75 |
+
</div>
|
76 |
+
</fieldset>
|
Backend/views/settings/tabs/storages/googledrive-settings.php
CHANGED
@@ -27,7 +27,9 @@
|
|
27 |
<p>
|
28 |
<strong class="wpstg-fs-14"> <?php _e('Google Drive', 'wp-staging'); ?></strong>
|
29 |
<br/>
|
30 |
-
|
|
|
|
|
31 |
</p>
|
32 |
<div class="wpstg-form-group">
|
33 |
<?php
|
@@ -35,12 +37,13 @@
|
|
35 |
?>
|
36 |
<strong class="wpstg-mr-10px">
|
37 |
<?php
|
38 |
-
_e('You are authenticated to Google.', 'wp-staging');
|
39 |
?>
|
40 |
</strong>
|
|
|
41 |
<form class="wpstg-provider-revoke-form" id="wpstg-provider-revoke-form" method="post">
|
42 |
<input type="hidden" name="provider" value="<?php echo $providerId; ?>" />
|
43 |
-
<button type="button" id="wpstg-btn-provider-revoke" class="wpstg-link-btn wpstg-btn-danger"><?php _e("Logout", "wp-staging") ?></button>
|
44 |
</form>
|
45 |
<br/>
|
46 |
<?php
|
@@ -93,7 +96,7 @@
|
|
93 |
<fieldset class="wpstg-fieldset">
|
94 |
<label><?php _e('Max Backups to Keep', 'wp-staging') ?></label>
|
95 |
<input class="wpstg-form-control" type="number" name="max_backups_to_keep" value="<?php echo $maxBackupsToKeep; ?>" style="max-width: 60px" />
|
96 |
-
<p><?php _e("
|
97 |
</fieldset>
|
98 |
|
99 |
<fieldset class="wpstg-fieldset">
|
27 |
<p>
|
28 |
<strong class="wpstg-fs-14"> <?php _e('Google Drive', 'wp-staging'); ?></strong>
|
29 |
<br/>
|
30 |
+
<?php echo __('Upload backup files to your personal Google Drive account.', 'wp-staging'); ?>
|
31 |
+
<br>
|
32 |
+
<?php echo sprintf(__('None of your backup data is sent to any other party! <a href="%s" target="_blank">Our privacy policy</a>.', 'wp-staging'), 'https://wp-staging.com/privacy-policy/#Google_Drive'); ?>
|
33 |
</p>
|
34 |
<div class="wpstg-form-group">
|
35 |
<?php
|
37 |
?>
|
38 |
<strong class="wpstg-mr-10px">
|
39 |
<?php
|
40 |
+
_e('You are authenticated to Google Drive.', 'wp-staging');
|
41 |
?>
|
42 |
</strong>
|
43 |
+
<br>
|
44 |
<form class="wpstg-provider-revoke-form" id="wpstg-provider-revoke-form" method="post">
|
45 |
<input type="hidden" name="provider" value="<?php echo $providerId; ?>" />
|
46 |
+
<button type="button" id="wpstg-btn-provider-revoke" class="wpstg-link-btn wpstg-btn-danger"><?php _e("Logout from Google", "wp-staging") ?></button>
|
47 |
</form>
|
48 |
<br/>
|
49 |
<?php
|
96 |
<fieldset class="wpstg-fieldset">
|
97 |
<label><?php _e('Max Backups to Keep', 'wp-staging') ?></label>
|
98 |
<input class="wpstg-form-control" type="number" name="max_backups_to_keep" value="<?php echo $maxBackupsToKeep; ?>" style="max-width: 60px" />
|
99 |
+
<p><?php _e("Leave empty or zero for no limit", 'wp-staging') ?></p>
|
100 |
</fieldset>
|
101 |
|
102 |
<fieldset class="wpstg-fieldset">
|
Backend/views/tools/index.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<?php require_once(WPSTG_PLUGIN_DIR . 'Backend/views/_main/header.php'); ?>
|
3 |
|
4 |
<div class="wpstg-tabs-container" id="wpstg-tools">
|
5 |
-
<ul class="nav-tab-wrapper">
|
6 |
<?php
|
7 |
$tabs = \WPStaging\Core\WPStaging::getInstance()->get("tabs")->get();
|
8 |
$activeTab = (isset($_GET["tab"]) && array_key_exists($_GET["tab"], $tabs)) ? $_GET["tab"] : "system_info";
|
@@ -14,7 +14,7 @@
|
|
14 |
"tab" => $id
|
15 |
]));
|
16 |
|
17 |
-
$activeClass = ($activeTab === $id) ? " nav-tab-active" : '';
|
18 |
?>
|
19 |
<li>
|
20 |
<a href="<?php echo $url?>" title="<?php echo esc_attr($name)?>" class="nav-tab<?php echo $activeClass?>">
|
2 |
<?php require_once(WPSTG_PLUGIN_DIR . 'Backend/views/_main/header.php'); ?>
|
3 |
|
4 |
<div class="wpstg-tabs-container" id="wpstg-tools">
|
5 |
+
<ul class="wpstg-nav-tab-wrapper">
|
6 |
<?php
|
7 |
$tabs = \WPStaging\Core\WPStaging::getInstance()->get("tabs")->get();
|
8 |
$activeTab = (isset($_GET["tab"]) && array_key_exists($_GET["tab"], $tabs)) ? $_GET["tab"] : "system_info";
|
14 |
"tab" => $id
|
15 |
]));
|
16 |
|
17 |
+
$activeClass = ($activeTab === $id) ? " wpstg-nav-tab-active" : '';
|
18 |
?>
|
19 |
<li>
|
20 |
<a href="<?php echo $url?>" title="<?php echo esc_attr($name)?>" class="nav-tab<?php echo $activeClass?>">
|
Backend/views/tools/tabs/import_export.php
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
<!-- Export -->
|
2 |
-
<div
|
3 |
-
<
|
4 |
-
<
|
5 |
<?php _e("Export Settings", "wp-staging")?>
|
6 |
-
</
|
7 |
-
</
|
8 |
|
9 |
<div class="inside">
|
10 |
<p>
|
@@ -27,11 +27,11 @@
|
|
27 |
<!-- /Export -->
|
28 |
|
29 |
<!-- Import -->
|
30 |
-
<div class="
|
31 |
<h3>
|
32 |
-
<
|
33 |
<?php _e("Import Settings", "wp-staging")?>
|
34 |
-
</
|
35 |
</h3>
|
36 |
|
37 |
<div class="inside">
|
1 |
<!-- Export -->
|
2 |
+
<div>
|
3 |
+
<p>
|
4 |
+
<strong class="wpstg-fs-14">
|
5 |
<?php _e("Export Settings", "wp-staging")?>
|
6 |
+
</strong>
|
7 |
+
</p>
|
8 |
|
9 |
<div class="inside">
|
10 |
<p>
|
27 |
<!-- /Export -->
|
28 |
|
29 |
<!-- Import -->
|
30 |
+
<div class="">
|
31 |
<h3>
|
32 |
+
<strong class="wpstg-fs-14">
|
33 |
<?php _e("Import Settings", "wp-staging")?>
|
34 |
+
</strong>
|
35 |
</h3>
|
36 |
|
37 |
<div class="inside">
|
Core/DTO/Settings.php
CHANGED
@@ -216,10 +216,10 @@ class Settings
|
|
216 |
/**
|
217 |
* @return int
|
218 |
*/
|
219 |
-
public function getDelayRequests()
|
220 |
{
|
221 |
return $this->delayRequests;
|
222 |
-
}
|
223 |
|
224 |
/**
|
225 |
* @param string $cpuLoad
|
216 |
/**
|
217 |
* @return int
|
218 |
*/
|
219 |
+
/* public function getDelayRequests()
|
220 |
{
|
221 |
return $this->delayRequests;
|
222 |
+
}*/
|
223 |
|
224 |
/**
|
225 |
* @param string $cpuLoad
|
Core/Utils/IISWebConfig.php
CHANGED
@@ -40,11 +40,13 @@ class IISWebConfig
|
|
40 |
'<configuration>',
|
41 |
'<system.webServer>',
|
42 |
'<staticContent>',
|
|
|
43 |
'<mimeMap fileExtension=".log" mimeType="application/octet-stream" />',
|
44 |
'<mimeMap fileExtension=".wpstg" mimeType="application/octet-stream" />',
|
45 |
'</staticContent>',
|
46 |
'<defaultDocument>',
|
47 |
'<files>',
|
|
|
48 |
'<add value="index.php" />',
|
49 |
'</files>',
|
50 |
'</defaultDocument>',
|
40 |
'<configuration>',
|
41 |
'<system.webServer>',
|
42 |
'<staticContent>',
|
43 |
+
'<clear/>',
|
44 |
'<mimeMap fileExtension=".log" mimeType="application/octet-stream" />',
|
45 |
'<mimeMap fileExtension=".wpstg" mimeType="application/octet-stream" />',
|
46 |
'</staticContent>',
|
47 |
'<defaultDocument>',
|
48 |
'<files>',
|
49 |
+
'<clear/>',
|
50 |
'<add value="index.php" />',
|
51 |
'</files>',
|
52 |
'</defaultDocument>',
|
Framework/Adapter/Directory.php
CHANGED
@@ -3,24 +3,28 @@
|
|
3 |
namespace WPStaging\Framework\Adapter;
|
4 |
|
5 |
use WPStaging\Framework\Filesystem\Filesystem;
|
6 |
-
use WPStaging\Pro\Backup\Job\Jobs\JobImport;
|
7 |
use WPStaging\Framework\Utils\Strings;
|
|
|
|
|
8 |
|
9 |
class Directory
|
10 |
{
|
11 |
/** @var string The directory that holds the uploads, usually wp-content/uploads */
|
12 |
protected $uploadDir;
|
13 |
|
14 |
-
/** @var string The directory that holds the
|
15 |
protected $cacheDirectory;
|
16 |
|
17 |
-
/** @var string The directory that holds the
|
18 |
protected $tmpDirectory;
|
19 |
|
20 |
-
/** @var string The directory that holds the
|
21 |
protected $logDirectory;
|
22 |
|
23 |
-
/** @var string The directory that holds the
|
|
|
|
|
|
|
24 |
protected $pluginUploadsDirectory;
|
25 |
|
26 |
/** @var string The directory that holds the plugins, usually wp-content/plugins */
|
@@ -106,6 +110,20 @@ class Directory
|
|
106 |
return $this->logDirectory;
|
107 |
}
|
108 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
/**
|
110 |
* @return string
|
111 |
*/
|
@@ -134,7 +152,7 @@ class Directory
|
|
134 |
|
135 |
// Get absolute path to wordpress uploads directory e.g /var/www/wp-content/uploads/
|
136 |
// Default is ABSPATH . 'wp-content/uploads', but it can be customized by the db option upload_path or the constant UPLOADS
|
137 |
-
$uploadDir = wp_upload_dir(null, false,
|
138 |
|
139 |
$this->uploadDir = trim(trailingslashit(wp_normalize_path($uploadDir)));
|
140 |
|
3 |
namespace WPStaging\Framework\Adapter;
|
4 |
|
5 |
use WPStaging\Framework\Filesystem\Filesystem;
|
|
|
6 |
use WPStaging\Framework\Utils\Strings;
|
7 |
+
use WPStaging\Pro\Backup\Job\Jobs\JobImport;
|
8 |
+
use WPStaging\Pro\Backup\Service\Compressor;
|
9 |
|
10 |
class Directory
|
11 |
{
|
12 |
/** @var string The directory that holds the uploads, usually wp-content/uploads */
|
13 |
protected $uploadDir;
|
14 |
|
15 |
+
/** @var string The directory that holds the WP STAGING cache directory, usually wp-content/uploads/wp-staging/cache */
|
16 |
protected $cacheDirectory;
|
17 |
|
18 |
+
/** @var string The directory that holds the WP STAGING tmp directory, usually wp-content/uploads/wp-staging/tmp */
|
19 |
protected $tmpDirectory;
|
20 |
|
21 |
+
/** @var string The directory that holds the WP STAGING logs directory, usually wp-content/uploads/wp-staging/logs */
|
22 |
protected $logDirectory;
|
23 |
|
24 |
+
/** @var string The directory that holds the WP STAGING backup directory, usually wp-content/uploads/wp-staging/backups */
|
25 |
+
protected $backupDirectory;
|
26 |
+
|
27 |
+
/** @var string The directory that holds the WP STAGING data directory, usually wp-content/uploads/wp-staging */
|
28 |
protected $pluginUploadsDirectory;
|
29 |
|
30 |
/** @var string The directory that holds the plugins, usually wp-content/plugins */
|
110 |
return $this->logDirectory;
|
111 |
}
|
112 |
|
113 |
+
/**
|
114 |
+
* @return string
|
115 |
+
*/
|
116 |
+
public function getBackupDirectory()
|
117 |
+
{
|
118 |
+
if (isset($this->backupDirectory)) {
|
119 |
+
return $this->backupDirectory;
|
120 |
+
}
|
121 |
+
|
122 |
+
$this->backupDirectory = trailingslashit(wp_normalize_path($this->getPluginUploadsDirectory() . Compressor::BACKUP_DIR_NAME));
|
123 |
+
|
124 |
+
return $this->backupDirectory;
|
125 |
+
}
|
126 |
+
|
127 |
/**
|
128 |
* @return string
|
129 |
*/
|
152 |
|
153 |
// Get absolute path to wordpress uploads directory e.g /var/www/wp-content/uploads/
|
154 |
// Default is ABSPATH . 'wp-content/uploads', but it can be customized by the db option upload_path or the constant UPLOADS
|
155 |
+
$uploadDir = wp_upload_dir(null, false, false)['basedir'];
|
156 |
|
157 |
$this->uploadDir = trim(trailingslashit(wp_normalize_path($uploadDir)));
|
158 |
|
Framework/Analytics/WithAnalyticsSiteInfo.php
CHANGED
@@ -69,7 +69,8 @@ trait WithAnalyticsSiteInfo
|
|
69 |
// WP STAGING Settings that are null by default, if they are not present, they are evaluated as FALSY/EMPTY:
|
70 |
'keep_permalinks' => !empty($wpstgSettings['keepPermalinks']) ? $wpstgSettings['keepPermalinks'] : false,
|
71 |
'disable_admin_login' => !empty($wpstgSettings['disableAdminLogin']) ? $wpstgSettings['disableAdminLogin'] : false,
|
72 |
-
'delay_between_requests' => !empty($wpstgSettings['delayRequests']) ? $wpstgSettings['delayRequests'] : 0,
|
|
|
73 |
'debug_mode' => !empty($wpstgSettings['debugMode']) ? $wpstgSettings['debugMode'] : false,
|
74 |
'remove_data_on_uninstall' => !empty($wpstgSettings['unInstallOnDelete']) ? $wpstgSettings['unInstallOnDelete'] : false,
|
75 |
'check_directory_size' => !empty($wpstgSettings['checkDirectorySize']) ? $wpstgSettings['checkDirectorySize'] : false,
|
69 |
// WP STAGING Settings that are null by default, if they are not present, they are evaluated as FALSY/EMPTY:
|
70 |
'keep_permalinks' => !empty($wpstgSettings['keepPermalinks']) ? $wpstgSettings['keepPermalinks'] : false,
|
71 |
'disable_admin_login' => !empty($wpstgSettings['disableAdminLogin']) ? $wpstgSettings['disableAdminLogin'] : false,
|
72 |
+
//'delay_between_requests' => !empty($wpstgSettings['delayRequests']) ? $wpstgSettings['delayRequests'] : 0,
|
73 |
+
'delay_between_requests' => 0,
|
74 |
'debug_mode' => !empty($wpstgSettings['debugMode']) ? $wpstgSettings['debugMode'] : false,
|
75 |
'remove_data_on_uninstall' => !empty($wpstgSettings['unInstallOnDelete']) ? $wpstgSettings['unInstallOnDelete'] : false,
|
76 |
'check_directory_size' => !empty($wpstgSettings['checkDirectorySize']) ? $wpstgSettings['checkDirectorySize'] : false,
|
Framework/Assets/Assets.php
CHANGED
@@ -248,7 +248,8 @@ class Assets
|
|
248 |
);
|
249 |
|
250 |
wp_localize_script("wpstg-admin-script", "wpstg", [
|
251 |
-
"delayReq" => $this->getDelay(),
|
|
|
252 |
// TODO: move directorySeparator to consts?
|
253 |
"settings" => (object)[
|
254 |
"directorySeparator" => ScanConst::DIRECTORIES_SEPARATOR
|
@@ -372,7 +373,7 @@ class Assets
|
|
372 |
/**
|
373 |
* @return int
|
374 |
*/
|
375 |
-
public function getDelay()
|
376 |
{
|
377 |
switch ($this->settings->getDelayRequests()) {
|
378 |
case "0":
|
@@ -400,7 +401,7 @@ class Assets
|
|
400 |
}
|
401 |
|
402 |
return $delay;
|
403 |
-
}
|
404 |
|
405 |
/**
|
406 |
* @return string
|
248 |
);
|
249 |
|
250 |
wp_localize_script("wpstg-admin-script", "wpstg", [
|
251 |
+
//"delayReq" => $this->getDelay(),
|
252 |
+
"delayReq" => 0,
|
253 |
// TODO: move directorySeparator to consts?
|
254 |
"settings" => (object)[
|
255 |
"directorySeparator" => ScanConst::DIRECTORIES_SEPARATOR
|
373 |
/**
|
374 |
* @return int
|
375 |
*/
|
376 |
+
/* public function getDelay()
|
377 |
{
|
378 |
switch ($this->settings->getDelayRequests()) {
|
379 |
case "0":
|
401 |
}
|
402 |
|
403 |
return $delay;
|
404 |
+
}*/
|
405 |
|
406 |
/**
|
407 |
* @return string
|
Framework/SiteInfo.php
CHANGED
@@ -2,6 +2,7 @@
|
|
2 |
|
3 |
namespace WPStaging\Framework;
|
4 |
|
|
|
5 |
use WPStaging\Framework\Staging\CloneOptions;
|
6 |
use WPStaging\Framework\Utils\ThirdParty\Punycode;
|
7 |
|
@@ -49,6 +50,11 @@ class SiteInfo
|
|
49 |
*/
|
50 |
private $punycode;
|
51 |
|
|
|
|
|
|
|
|
|
|
|
52 |
public function __construct()
|
53 |
{
|
54 |
// TODO: inject using DI
|
@@ -103,10 +109,21 @@ class SiteInfo
|
|
103 |
$siteurl = preg_replace('#^https?://#', '', rtrim(get_option('siteurl'), '/'));
|
104 |
$home = preg_replace('#^https?://#', '', rtrim(get_option('home'), '/'));
|
105 |
|
106 |
-
// convert unicode(idn) to punycode(ascii) domain
|
107 |
// turn exämple.com to xn--exmple-cua.com
|
108 |
-
$
|
109 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
110 |
|
111 |
if ($home === $siteurl) {
|
112 |
return false;
|
@@ -182,4 +199,45 @@ class SiteInfo
|
|
182 |
{
|
183 |
return defined('WPB_VC_VERSION');
|
184 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
185 |
}
|
2 |
|
3 |
namespace WPStaging\Framework;
|
4 |
|
5 |
+
use Exception;
|
6 |
use WPStaging\Framework\Staging\CloneOptions;
|
7 |
use WPStaging\Framework\Utils\ThirdParty\Punycode;
|
8 |
|
50 |
*/
|
51 |
private $punycode;
|
52 |
|
53 |
+
/**
|
54 |
+
* @var array
|
55 |
+
*/
|
56 |
+
private $errors = [];
|
57 |
+
|
58 |
public function __construct()
|
59 |
{
|
60 |
// TODO: inject using DI
|
109 |
$siteurl = preg_replace('#^https?://#', '', rtrim(get_option('siteurl'), '/'));
|
110 |
$home = preg_replace('#^https?://#', '', rtrim(get_option('home'), '/'));
|
111 |
|
112 |
+
// convert unicode(idn) to punycode(ascii) domain if possible
|
113 |
// turn exämple.com to xn--exmple-cua.com
|
114 |
+
$result = $this->punycodeEncode($home);
|
115 |
+
if ($result !== false) {
|
116 |
+
$home = $result;
|
117 |
+
} else {
|
118 |
+
$this->errors[] = __('Unable to detect punycode characters in home URL', 'wp-staging');
|
119 |
+
}
|
120 |
+
|
121 |
+
$result = $this->punycodeEncode($siteurl);
|
122 |
+
if ($result !== false) {
|
123 |
+
$siteurl = $result;
|
124 |
+
} else {
|
125 |
+
$this->errors[] = __('Unable to detect punycode characters in site URL', 'wp-staging');
|
126 |
+
}
|
127 |
|
128 |
if ($home === $siteurl) {
|
129 |
return false;
|
199 |
{
|
200 |
return defined('WPB_VC_VERSION');
|
201 |
}
|
202 |
+
|
203 |
+
/**
|
204 |
+
* @param string $url
|
205 |
+
* @return string|false
|
206 |
+
*/
|
207 |
+
public function punycodeEncode($url)
|
208 |
+
{
|
209 |
+
// Get punycode encode if idn extension loaded
|
210 |
+
if (extension_loaded('idn') && is_callable('idn_to_ascii')) {
|
211 |
+
return idn_to_ascii($url, 0, INTL_IDNA_VARIANT_UTS46);
|
212 |
+
}
|
213 |
+
|
214 |
+
// Get punycode with idn polyfill If mb_string extension and Normalizer class available
|
215 |
+
try {
|
216 |
+
if (extension_loaded('mbstring') && class_exists('Normalizer') && is_callable('mb_chr')) {
|
217 |
+
return idn_to_ascii($url, 0, INTL_IDNA_VARIANT_UTS46);
|
218 |
+
}
|
219 |
+
} catch (Exception $ex) {
|
220 |
+
}
|
221 |
+
|
222 |
+
// Get punycode with mbstring extension if mbstring extension loaded
|
223 |
+
// Otherwise get with mbstring polyfill if iconv extension loaded
|
224 |
+
if (extension_loaded('mbstring') || extension_loaded('iconv')) {
|
225 |
+
return $this->punycode->encode($url);
|
226 |
+
}
|
227 |
+
|
228 |
+
return false;
|
229 |
+
}
|
230 |
+
|
231 |
+
public function clearErrors()
|
232 |
+
{
|
233 |
+
$this->errors = [];
|
234 |
+
}
|
235 |
+
|
236 |
+
/**
|
237 |
+
* @return array
|
238 |
+
*/
|
239 |
+
public function getErrors()
|
240 |
+
{
|
241 |
+
return $this->errors;
|
242 |
+
}
|
243 |
}
|
Framework/Utils/ThirdParty/Punycode.php
CHANGED
@@ -4,7 +4,6 @@ namespace WPStaging\Framework\Utils\ThirdParty;
|
|
4 |
|
5 |
use WPStaging\Framework\Exceptions\DomainOutOfBoundsException;
|
6 |
use WPStaging\Framework\Exceptions\LabelOutOfBoundsException;
|
7 |
-
use WPStaging\Framework\Utils\Mbstring;
|
8 |
|
9 |
/**
|
10 |
* This is a port of TrueBV\Punycode.
|
@@ -66,10 +65,6 @@ class Punycode
|
|
66 |
*/
|
67 |
protected $encoding;
|
68 |
|
69 |
-
/** @var object */
|
70 |
-
private $mbstring;
|
71 |
-
|
72 |
-
|
73 |
/**
|
74 |
* Constructor
|
75 |
*
|
@@ -78,7 +73,6 @@ class Punycode
|
|
78 |
public function __construct($encoding = 'UTF-8')
|
79 |
{
|
80 |
$this->encoding = $encoding;
|
81 |
-
$this->mbstring = new Mbstring();
|
82 |
}
|
83 |
|
84 |
/**
|
@@ -89,7 +83,7 @@ class Punycode
|
|
89 |
*/
|
90 |
public function encode($input)
|
91 |
{
|
92 |
-
$input =
|
93 |
$parts = explode('.', $input);
|
94 |
foreach ($parts as &$part) {
|
95 |
$length = strlen($part);
|
@@ -137,7 +131,7 @@ class Punycode
|
|
137 |
sort($codePoints['nonBasic']);
|
138 |
|
139 |
$i = 0;
|
140 |
-
$length =
|
141 |
while ($h < $length) {
|
142 |
$m = $codePoints['nonBasic'][$i++];
|
143 |
$delta = $delta + ($m - $n) * ($h + 1);
|
@@ -252,7 +246,7 @@ class Punycode
|
|
252 |
$bias = $this->adapt($i - $oldi, ++$outputLength, ($oldi === 0));
|
253 |
$n = $n + (int) ($i / $outputLength);
|
254 |
$i = $i % ($outputLength);
|
255 |
-
$output =
|
256 |
|
257 |
$i++;
|
258 |
}
|
@@ -318,9 +312,9 @@ class Punycode
|
|
318 |
'nonBasic' => [],
|
319 |
];
|
320 |
|
321 |
-
$length =
|
322 |
for ($i = 0; $i < $length; $i++) {
|
323 |
-
$char =
|
324 |
$code = $this->charToCodePoint($char);
|
325 |
if ($code < 128) {
|
326 |
$codePoints['all'][] = $codePoints['basic'][] = $code;
|
4 |
|
5 |
use WPStaging\Framework\Exceptions\DomainOutOfBoundsException;
|
6 |
use WPStaging\Framework\Exceptions\LabelOutOfBoundsException;
|
|
|
7 |
|
8 |
/**
|
9 |
* This is a port of TrueBV\Punycode.
|
65 |
*/
|
66 |
protected $encoding;
|
67 |
|
|
|
|
|
|
|
|
|
68 |
/**
|
69 |
* Constructor
|
70 |
*
|
73 |
public function __construct($encoding = 'UTF-8')
|
74 |
{
|
75 |
$this->encoding = $encoding;
|
|
|
76 |
}
|
77 |
|
78 |
/**
|
83 |
*/
|
84 |
public function encode($input)
|
85 |
{
|
86 |
+
$input = mb_strtolower($input, $this->encoding);
|
87 |
$parts = explode('.', $input);
|
88 |
foreach ($parts as &$part) {
|
89 |
$length = strlen($part);
|
131 |
sort($codePoints['nonBasic']);
|
132 |
|
133 |
$i = 0;
|
134 |
+
$length = mb_strlen($input, $this->encoding);
|
135 |
while ($h < $length) {
|
136 |
$m = $codePoints['nonBasic'][$i++];
|
137 |
$delta = $delta + ($m - $n) * ($h + 1);
|
246 |
$bias = $this->adapt($i - $oldi, ++$outputLength, ($oldi === 0));
|
247 |
$n = $n + (int) ($i / $outputLength);
|
248 |
$i = $i % ($outputLength);
|
249 |
+
$output = mb_substr($output, 0, $i, $this->encoding) . $this->codePointToChar($n) . mb_substr($output, $i, $outputLength - 1, $this->encoding);
|
250 |
|
251 |
$i++;
|
252 |
}
|
312 |
'nonBasic' => [],
|
313 |
];
|
314 |
|
315 |
+
$length = mb_strlen($input, $this->encoding);
|
316 |
for ($i = 0; $i < $length; $i++) {
|
317 |
+
$char = mb_substr($input, $i, 1, $this->encoding);
|
318 |
$code = $this->charToCodePoint($char);
|
319 |
if ($code < 128) {
|
320 |
$codePoints['all'][] = $codePoints['basic'][] = $code;
|
Framework/Utils/Urls.php
CHANGED
@@ -2,6 +2,8 @@
|
|
2 |
|
3 |
namespace WPStaging\Framework\Utils;
|
4 |
|
|
|
|
|
5 |
class Urls
|
6 |
{
|
7 |
|
@@ -38,7 +40,6 @@ class Urls
|
|
38 |
|
39 |
/**
|
40 |
* Return WordPress home url without scheme e.h. host.com or www.host.com
|
41 |
-
* @param string $str
|
42 |
* @return string
|
43 |
*/
|
44 |
public function getHomeUrlWithoutScheme()
|
@@ -72,9 +73,7 @@ class Urls
|
|
72 |
}
|
73 |
}
|
74 |
|
75 |
-
|
76 |
-
|
77 |
-
return $url;
|
78 |
}
|
79 |
|
80 |
/**
|
@@ -89,7 +88,6 @@ class Urls
|
|
89 |
|
90 |
/**
|
91 |
* Return base URL (domain) without scheme e.g. blog.domain.com or domain.com
|
92 |
-
* @param string $str
|
93 |
* @return string
|
94 |
*/
|
95 |
public function getBaseUrlWithoutScheme()
|
@@ -116,4 +114,23 @@ class Urls
|
|
116 |
$result = parse_url($siteurl);
|
117 |
return $result['scheme'] . "://" . $result['host'];
|
118 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
}
|
2 |
|
3 |
namespace WPStaging\Framework\Utils;
|
4 |
|
5 |
+
use WPStaging\Pro\Backup\Service\Compressor;
|
6 |
+
|
7 |
class Urls
|
8 |
{
|
9 |
|
40 |
|
41 |
/**
|
42 |
* Return WordPress home url without scheme e.h. host.com or www.host.com
|
|
|
43 |
* @return string
|
44 |
*/
|
45 |
public function getHomeUrlWithoutScheme()
|
73 |
}
|
74 |
}
|
75 |
|
76 |
+
return set_url_scheme($url, $scheme);
|
|
|
|
|
77 |
}
|
78 |
|
79 |
/**
|
88 |
|
89 |
/**
|
90 |
* Return base URL (domain) without scheme e.g. blog.domain.com or domain.com
|
|
|
91 |
* @return string
|
92 |
*/
|
93 |
public function getBaseUrlWithoutScheme()
|
114 |
$result = parse_url($siteurl);
|
115 |
return $result['scheme'] . "://" . $result['host'];
|
116 |
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Get url of the uploads directory, e.g. http://example.com/wp-content/uploads
|
120 |
+
* @return string
|
121 |
+
*/
|
122 |
+
public function getUploadsUrl()
|
123 |
+
{
|
124 |
+
$upload_dir = wp_upload_dir(null, false, false);
|
125 |
+
return trailingslashit($upload_dir['baseurl']);
|
126 |
+
}
|
127 |
+
|
128 |
+
/**
|
129 |
+
* Get url of the wp staging backup directory, e.g. http://example.com/wp-content/uploads/backup
|
130 |
+
* @return string
|
131 |
+
*/
|
132 |
+
public function getBackupUrl()
|
133 |
+
{
|
134 |
+
return $this->getUploadsUrl() . WPSTG_PLUGIN_DOMAIN . '/' . Compressor::BACKUP_DIR_NAME . '/';
|
135 |
+
}
|
136 |
}
|
Framework/Utils/WpDefaultDirectories.php
CHANGED
@@ -6,29 +6,15 @@ namespace WPStaging\Framework\Utils;
|
|
6 |
|
7 |
use DirectoryIterator;
|
8 |
use WPStaging\Framework\Filesystem\Scanning\ScanConst;
|
9 |
-
use WPStaging\Framework\Utils\SlashMode;
|
10 |
|
11 |
// TODO PHP7.1; constant visibility
|
12 |
class WpDefaultDirectories
|
13 |
{
|
14 |
-
const WP_ADMIN = 'wp-admin';
|
15 |
-
const WP_INCLUDES = 'wp-includes';
|
16 |
-
const WP_CONTENT = 'wp-content';
|
17 |
-
const SITES = 'sites';
|
18 |
-
const MULTI_OLD_UPLOADS_DIR = 'blogs.dir';
|
19 |
-
const MULTI_UPLOADS_DIR = 'sites';
|
20 |
-
|
21 |
/**
|
22 |
* @var Strings
|
23 |
*/
|
24 |
private $strUtils;
|
25 |
|
26 |
-
/**
|
27 |
-
* WordPress core directories: wp-admin, wp-includes, wp-content
|
28 |
-
* @var array
|
29 |
-
*/
|
30 |
-
private $coreDirectories;
|
31 |
-
|
32 |
/**
|
33 |
* Sanitized ABSPATH for comparing against windows iterator
|
34 |
* @var string
|
@@ -37,7 +23,7 @@ class WpDefaultDirectories
|
|
37 |
|
38 |
/**
|
39 |
* refresh cache of upload path
|
40 |
-
* @var
|
41 |
*/
|
42 |
private $refreshUploadPathCache = false;
|
43 |
|
@@ -49,7 +35,7 @@ class WpDefaultDirectories
|
|
49 |
}
|
50 |
|
51 |
/**
|
52 |
-
* @param
|
53 |
*/
|
54 |
public function shouldRefreshUploadPathCache($shouldRefresh = true)
|
55 |
{
|
@@ -92,7 +78,7 @@ class WpDefaultDirectories
|
|
92 |
// Could have been customized by populating the db option upload_path or the constant UPLOADS in wp-config
|
93 |
// If both are defined WordPress will uses the value of the UPLOADS constant
|
94 |
// First two parameters in wp_upload_dir are default parameter and last parameter is to refresh the cache
|
95 |
-
// Setting the 3rd
|
96 |
$uploads = wp_upload_dir(null, true, $this->refreshUploadPathCache);
|
97 |
|
98 |
// Adding slashes at before and end of absolute path to WordPress uploads directory
|
@@ -101,36 +87,6 @@ class WpDefaultDirectories
|
|
101 |
return $this->strUtils->sanitizeDirectorySeparator($uploadsAbsPath);
|
102 |
}
|
103 |
|
104 |
-
/**
|
105 |
-
* Get site specific absolute WP uploads path e.g.
|
106 |
-
* Multisites: /var/www/htdocs/example.com/wp-content/uploads/sites/1 or /var/www/htdocs/example.com/wp-content/blogs.dir/1/files
|
107 |
-
* Single sites: /var/www/htdocs/example.com/wp-content/uploads
|
108 |
-
* This is compatible to old WordPress multisite version which contained blogs.dir
|
109 |
-
* @return string
|
110 |
-
*/
|
111 |
-
public function getSiteUploadsPath()
|
112 |
-
{
|
113 |
-
$uploads = wp_upload_dir(null, false);
|
114 |
-
$baseDir = $this->strUtils->sanitizeDirectorySeparator($uploads['basedir']);
|
115 |
-
|
116 |
-
// If multisite (and if not the main site in a post-MU network)
|
117 |
-
if (is_multisite() && !( is_main_network() && is_main_site() && defined('MULTISITE') )) {
|
118 |
-
// blogs.dir is used on WP 3.5 and lower
|
119 |
-
if (strpos($baseDir, 'blogs.dir') !== false) {
|
120 |
-
// remove this piece from the basedir: /blogs.dir/2/files
|
121 |
-
$uploadDir = wpstg_replace_first_match('/blogs.dir/' . get_current_blog_id() . '/files', null, $baseDir);
|
122 |
-
$dir = $this->strUtils->sanitizeDirectorySeparator($uploadDir . '/blogs.dir');
|
123 |
-
} else {
|
124 |
-
// remove this piece from the basedir: /sites/2
|
125 |
-
$uploadDir = wpstg_replace_first_match('/sites/' . get_current_blog_id(), null, $baseDir);
|
126 |
-
$dir = $this->strUtils->sanitizeDirectorySeparator($uploadDir . '/sites');
|
127 |
-
}
|
128 |
-
|
129 |
-
return $dir;
|
130 |
-
}
|
131 |
-
return $baseDir;
|
132 |
-
}
|
133 |
-
|
134 |
/**
|
135 |
* Get the relative path of wp content directory
|
136 |
* @param int $mode Optional. Slash Mode. Default SlashMode::NO_SLASH.
|
@@ -206,7 +162,7 @@ class WpDefaultDirectories
|
|
206 |
*/
|
207 |
public function getWpCoreDirectories()
|
208 |
{
|
209 |
-
$
|
210 |
|
211 |
$directories = new DirectoryIterator(ABSPATH);
|
212 |
foreach ($directories as $directory) {
|
@@ -231,10 +187,10 @@ class WpDefaultDirectories
|
|
231 |
}
|
232 |
|
233 |
$path = untrailingslashit($this->strUtils->sanitizeDirectorySeparator($path));
|
234 |
-
$
|
235 |
}
|
236 |
|
237 |
-
return $
|
238 |
}
|
239 |
|
240 |
/**
|
@@ -247,7 +203,7 @@ class WpDefaultDirectories
|
|
247 |
*/
|
248 |
public function getExcludedDirectories($directoriesRequest)
|
249 |
{
|
250 |
-
if ((empty($directoriesRequest)
|
251 |
return [];
|
252 |
}
|
253 |
|
6 |
|
7 |
use DirectoryIterator;
|
8 |
use WPStaging\Framework\Filesystem\Scanning\ScanConst;
|
|
|
9 |
|
10 |
// TODO PHP7.1; constant visibility
|
11 |
class WpDefaultDirectories
|
12 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
/**
|
14 |
* @var Strings
|
15 |
*/
|
16 |
private $strUtils;
|
17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
/**
|
19 |
* Sanitized ABSPATH for comparing against windows iterator
|
20 |
* @var string
|
23 |
|
24 |
/**
|
25 |
* refresh cache of upload path
|
26 |
+
* @var bool default false
|
27 |
*/
|
28 |
private $refreshUploadPathCache = false;
|
29 |
|
35 |
}
|
36 |
|
37 |
/**
|
38 |
+
* @param bool $shouldRefresh
|
39 |
*/
|
40 |
public function shouldRefreshUploadPathCache($shouldRefresh = true)
|
41 |
{
|
78 |
// Could have been customized by populating the db option upload_path or the constant UPLOADS in wp-config
|
79 |
// If both are defined WordPress will uses the value of the UPLOADS constant
|
80 |
// First two parameters in wp_upload_dir are default parameter and last parameter is to refresh the cache
|
81 |
+
// Setting the 3rd parameter to true will refresh the cache and return the latest value. Set to true for tests
|
82 |
$uploads = wp_upload_dir(null, true, $this->refreshUploadPathCache);
|
83 |
|
84 |
// Adding slashes at before and end of absolute path to WordPress uploads directory
|
87 |
return $this->strUtils->sanitizeDirectorySeparator($uploadsAbsPath);
|
88 |
}
|
89 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
/**
|
91 |
* Get the relative path of wp content directory
|
92 |
* @param int $mode Optional. Slash Mode. Default SlashMode::NO_SLASH.
|
162 |
*/
|
163 |
public function getWpCoreDirectories()
|
164 |
{
|
165 |
+
$coreDirectories = [];
|
166 |
|
167 |
$directories = new DirectoryIterator(ABSPATH);
|
168 |
foreach ($directories as $directory) {
|
187 |
}
|
188 |
|
189 |
$path = untrailingslashit($this->strUtils->sanitizeDirectorySeparator($path));
|
190 |
+
$coreDirectories[] = $path;
|
191 |
}
|
192 |
|
193 |
+
return $coreDirectories;
|
194 |
}
|
195 |
|
196 |
/**
|
203 |
*/
|
204 |
public function getExcludedDirectories($directoriesRequest)
|
205 |
{
|
206 |
+
if ((empty($directoriesRequest))) {
|
207 |
return [];
|
208 |
}
|
209 |
|
assets/css/dist/wpstg-admin.css
CHANGED
@@ -790,7 +790,9 @@ body.wp-staging-pro_page_wpstg-license {
|
|
790 |
font-weight: 400;
|
791 |
line-height: 1.6em;
|
792 |
font-size: 19px;
|
|
|
793 |
border-bottom: 1px solid #DFDFDF;
|
|
|
794 |
clear: both;
|
795 |
padding-top: 10px;
|
796 |
}
|
@@ -848,6 +850,7 @@ body.wp-staging-pro_page_wpstg-license {
|
|
848 |
|
849 |
.wpstg-form-table td:first-child {
|
850 |
width: 30%;
|
|
|
851 |
}
|
852 |
|
853 |
.wpstg-share-button-container {
|
@@ -1042,7 +1045,9 @@ body.wp-staging-pro_page_wpstg-license {
|
|
1042 |
font-size: 13px;
|
1043 |
height: 28px;
|
1044 |
margin: 0;
|
|
|
1045 |
padding: 0 10px 1px;
|
|
|
1046 |
cursor: pointer;
|
1047 |
border-width: 1px;
|
1048 |
border-style: solid;
|
@@ -1053,7 +1058,13 @@ body.wp-staging-pro_page_wpstg-license {
|
|
1053 |
background: #25a1f0;
|
1054 |
border-color: #2188c9;
|
1055 |
color: #fff;
|
|
|
1056 |
text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;
|
|
|
|
|
|
|
|
|
|
|
1057 |
}
|
1058 |
|
1059 |
a.wpstg-blue-primary {
|
@@ -2737,7 +2748,7 @@ body.toplevel_page_wpstg_clone .wpstg--swal2-container.wpstg--swal2-backdrop-sho
|
|
2737 |
}
|
2738 |
|
2739 |
.wpstg-swal-popup .wpstg--swal2-actions > button:hover {
|
2740 |
-
box-shadow: 0 1px 3px 0 rgba(0 0 0 .1);
|
2741 |
}
|
2742 |
|
2743 |
.wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel:hover {
|
@@ -3390,33 +3401,39 @@ div#wpstg-backup-locked {
|
|
3390 |
}
|
3391 |
|
3392 |
.wpstg-storages-postbox {
|
3393 |
-
|
3394 |
-
padding: 16px 8px;
|
3395 |
margin-top: 8px;
|
3396 |
margin-bottom: 8px;
|
3397 |
background-color: white;
|
3398 |
-
border:1px solid #cccccc;
|
3399 |
}
|
3400 |
|
3401 |
.wpstg-storages-postbox a {
|
3402 |
padding: 8px;
|
3403 |
margin-right: 8px;
|
3404 |
text-decoration: none;
|
|
|
|
|
|
|
|
|
|
|
|
|
3405 |
}
|
3406 |
|
3407 |
.wpstg-storage-postbox {
|
3408 |
padding: 4px 16px;
|
3409 |
background-color: white;
|
3410 |
-
border-bottom:1px solid #cccccc;
|
3411 |
-
border-left:1px solid #cccccc;
|
3412 |
-
border-right:1px solid #cccccc;
|
3413 |
}
|
3414 |
|
3415 |
.wpstg-storages-postbox a.wpstg-storage-provider-active {
|
3416 |
-
background: #
|
3417 |
color: white;
|
3418 |
font-weight: 700;
|
3419 |
cursor: default;
|
|
|
|
|
|
|
|
|
|
|
3420 |
}
|
3421 |
|
3422 |
.wpstg-storages-postbox a.wpstg-storage-provider-disabled {
|
@@ -3452,7 +3469,7 @@ div#wpstg-backup-locked {
|
|
3452 |
|
3453 |
.wpstg-provider-settings-form fieldset p {
|
3454 |
margin: 0;
|
3455 |
-
padding:
|
3456 |
font-size: 12px;
|
3457 |
}
|
3458 |
|
@@ -3475,7 +3492,7 @@ div#wpstg-backup-locked {
|
|
3475 |
align-items: center;
|
3476 |
border-width: 0;
|
3477 |
outline: none;
|
3478 |
-
border-radius:
|
3479 |
box-shadow: 0 1px 3px rgba(0, 0, 0, .6);
|
3480 |
color: #555;
|
3481 |
transition: background-color .3s;
|
@@ -3519,6 +3536,77 @@ div#wpstg-backup-locked {
|
|
3519 |
border-radius: 2px;
|
3520 |
}
|
3521 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3522 |
#wpstg--js--translations {
|
3523 |
text-decoration: underline;
|
3524 |
}
|
790 |
font-weight: 400;
|
791 |
line-height: 1.6em;
|
792 |
font-size: 19px;
|
793 |
+
/*
|
794 |
border-bottom: 1px solid #DFDFDF;
|
795 |
+
*/
|
796 |
clear: both;
|
797 |
padding-top: 10px;
|
798 |
}
|
850 |
|
851 |
.wpstg-form-table td:first-child {
|
852 |
width: 30%;
|
853 |
+
padding-right: 20px;
|
854 |
}
|
855 |
|
856 |
.wpstg-share-button-container {
|
1045 |
font-size: 13px;
|
1046 |
height: 28px;
|
1047 |
margin: 0;
|
1048 |
+
/*
|
1049 |
padding: 0 10px 1px;
|
1050 |
+
*/
|
1051 |
cursor: pointer;
|
1052 |
border-width: 1px;
|
1053 |
border-style: solid;
|
1058 |
background: #25a1f0;
|
1059 |
border-color: #2188c9;
|
1060 |
color: #fff;
|
1061 |
+
/*
|
1062 |
text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;
|
1063 |
+
*/
|
1064 |
+
}
|
1065 |
+
|
1066 |
+
.wpstg-blue-primary:hover {
|
1067 |
+
background: #127fc6;
|
1068 |
}
|
1069 |
|
1070 |
a.wpstg-blue-primary {
|
2748 |
}
|
2749 |
|
2750 |
.wpstg-swal-popup .wpstg--swal2-actions > button:hover {
|
2751 |
+
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .1);
|
2752 |
}
|
2753 |
|
2754 |
.wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel:hover {
|
3401 |
}
|
3402 |
|
3403 |
.wpstg-storages-postbox {
|
3404 |
+
padding: 13px 16px;
|
|
|
3405 |
margin-top: 8px;
|
3406 |
margin-bottom: 8px;
|
3407 |
background-color: white;
|
|
|
3408 |
}
|
3409 |
|
3410 |
.wpstg-storages-postbox a {
|
3411 |
padding: 8px;
|
3412 |
margin-right: 8px;
|
3413 |
text-decoration: none;
|
3414 |
+
font-weight: bold;
|
3415 |
+
color: #3c434a;
|
3416 |
+
}
|
3417 |
+
|
3418 |
+
.wpstg-storages-postbox a:hover {
|
3419 |
+
color: #b70b72;
|
3420 |
}
|
3421 |
|
3422 |
.wpstg-storage-postbox {
|
3423 |
padding: 4px 16px;
|
3424 |
background-color: white;
|
|
|
|
|
|
|
3425 |
}
|
3426 |
|
3427 |
.wpstg-storages-postbox a.wpstg-storage-provider-active {
|
3428 |
+
background: #b70b72;
|
3429 |
color: white;
|
3430 |
font-weight: 700;
|
3431 |
cursor: default;
|
3432 |
+
border-radius:3px;
|
3433 |
+
}
|
3434 |
+
|
3435 |
+
.wpstg-storages-postbox a.wpstg-storage-provider-active:hover {
|
3436 |
+
background: #a10a64;
|
3437 |
}
|
3438 |
|
3439 |
.wpstg-storages-postbox a.wpstg-storage-provider-disabled {
|
3469 |
|
3470 |
.wpstg-provider-settings-form fieldset p {
|
3471 |
margin: 0;
|
3472 |
+
padding: 5px;
|
3473 |
font-size: 12px;
|
3474 |
}
|
3475 |
|
3492 |
align-items: center;
|
3493 |
border-width: 0;
|
3494 |
outline: none;
|
3495 |
+
border-radius: 3px;
|
3496 |
box-shadow: 0 1px 3px rgba(0, 0, 0, .6);
|
3497 |
color: #555;
|
3498 |
transition: background-color .3s;
|
3536 |
border-radius: 2px;
|
3537 |
}
|
3538 |
|
3539 |
+
.wpstg-metabox-holder{
|
3540 |
+
border-radius: 8px;
|
3541 |
+
background: #fff;
|
3542 |
+
padding: 20px;
|
3543 |
+
margin-left: 16px;
|
3544 |
+
min-height: 600px;
|
3545 |
+
margin-right: 32px;
|
3546 |
+
margin-top: 60px;
|
3547 |
+
-webkit-box-shadow: 0 0 1px rgb(0 0 0 / 13%), 0 1px 3px rgb(0 0 0 / 10%);
|
3548 |
+
box-shadow: 0 0 1px rgb(0 0 0 / 13%), 0 1px 3px rgb(0 0 0 / 10%);
|
3549 |
+
}
|
3550 |
+
|
3551 |
+
@media only screen and (max-width: 680px) {
|
3552 |
+
.wpstg-metabox-holder {
|
3553 |
+
padding: 0px;
|
3554 |
+
padding-top: 5px;
|
3555 |
+
margin-left: 0;
|
3556 |
+
margin-right: 5px;
|
3557 |
+
}
|
3558 |
+
|
3559 |
+
#wpstg-tab-container .wpstg-settings-panel {
|
3560 |
+
padding: 0;
|
3561 |
+
overflow: auto;
|
3562 |
+
}
|
3563 |
+
|
3564 |
+
.wpstg-form-table td:first-child {
|
3565 |
+
width: 50%;
|
3566 |
+
}
|
3567 |
+
}
|
3568 |
+
|
3569 |
+
.wpstg-nav-tab {
|
3570 |
+
float: left;
|
3571 |
+
border: 1px solid #ffffff;
|
3572 |
+
border-bottom: none;
|
3573 |
+
margin-left: 0.5em;
|
3574 |
+
padding: 5px 10px;
|
3575 |
+
font-size: 14px;
|
3576 |
+
line-height: 1.71428571;
|
3577 |
+
font-weight: 600;
|
3578 |
+
background: #dcdcde;
|
3579 |
+
color: #3c434a;
|
3580 |
+
text-decoration: none;
|
3581 |
+
white-space: nowrap;
|
3582 |
+
}
|
3583 |
+
|
3584 |
+
.wpstg-nav-tab-active, .wpstg-nav-tab-active:focus, .wpstg-nav-tab-active:focus:active, .wpstg-nav-tab-active:hover {
|
3585 |
+
border-bottom: 1px solid #f0f0f1;
|
3586 |
+
background: #f3f5f7;
|
3587 |
+
color: #b70b72;
|
3588 |
+
-webkit-box-shadow: -4px -13px 14px -12px rgb(0 0 0 / 16%);
|
3589 |
+
box-shadow: -4px -13px 14px -12px rgb(0 0 0 / 16%);
|
3590 |
+
}
|
3591 |
+
|
3592 |
+
.wpstg-nav-tab-active {
|
3593 |
+
margin-bottom: -1px;
|
3594 |
+
}
|
3595 |
+
|
3596 |
+
.wpstg-nav-tab-wrapper {
|
3597 |
+
/*
|
3598 |
+
border-bottom: 1px solid #c3c4c7;
|
3599 |
+
*/
|
3600 |
+
margin: 0;
|
3601 |
+
padding-top: 9px;
|
3602 |
+
padding-bottom: 0;
|
3603 |
+
line-height: inherit;
|
3604 |
+
}
|
3605 |
+
|
3606 |
+
.wpstg-nav-tab-wrapper li{
|
3607 |
+
margin-bottom: 0px;
|
3608 |
+
}
|
3609 |
+
|
3610 |
#wpstg--js--translations {
|
3611 |
text-decoration: underline;
|
3612 |
}
|
assets/css/dist/wpstg-admin.css.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"sources":["wpstg-admin.css"],"names":[],"mappings":"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","file":"wpstg-admin.css","sourcesContent":["/**\n * WPSTG Admin CSS\n *\n * @package WPSTG\n * @subpackage Admin CSS\n * @copyright Copyright (c) 2021, René Hermenau\n * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License\n*/\n\n/* Font Faces */\n\n/* roboto-regular - latin */\n@font-face {\nfont-family: 'Roboto';\nfont-style: normal;\nfont-weight: 400;\nsrc: url('../../fonts/roboto-v29-latin-regular.eot'); /* IE9 Compat Modes */\nsrc: local(''),\n url('../../fonts/roboto-v29-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n url('../../fonts/roboto-v29-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */\n url('../../fonts/roboto-v29-latin-regular.woff') format('woff'), /* Modern Browsers */\n url('../../fonts/roboto-v29-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */\n url('../../fonts/roboto-v29-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */\n}\n\n/* Colors */\n\n.wpstg--violet {\n color: #9d37ae;\n}\n\n.wpstg-border--violet {\n border: 1px solid #9d37ae;\n}\n\n.wpstg--red {\n color: #E01E5A;\n}\n\n.wpstg-cta--red {\n color: #fe008f;\n}\n\n.wpstg--blue {\n color: #24a1f0;\n}\n\n.wpstg--darkblue {\n color: #0e86d9;\n}\n\n.wpstg--green {\n color: #83c11f;\n}\n\n.wpstg--grey {\n color: #3e3e3e;\n}\n\n.wpstg--darkgrey {\n color: #1b1b1b;\n}\n\n.wpstg--filter--svg {\n filter: invert(24%) sepia(11%) saturate(558%) hue-rotate(169deg) brightness(97%) contrast(91%);\n}\n\n/* CSS for Tabs */\n\nbody.wp-staging-pro_page_wpstg_backup,\nbody.toplevel_page_wpstg_clone,\nbody.wp-staging-pro_page_wpstg-settings,\nbody.wp-staging-pro_page_wpstg-tools,\nbody.wp-staging-pro_page_wpstg-license {\n background-color: #f3f5f7;\n}\n\n#wpstg-tab-container ul {\n list-style: none;\n margin: 0;\n padding: 0;\n background: #f1f1f1;\n float: left;\n}\n\n#wpstg-tab-container ul li:first-child.selected-tab {\n border-top: none;\n}\n\n#wpstg-tab-container ul li a.selected-tab {\n font-weight: bold;\n text-decoration: none;\n}\n\n#wpstg-tab-container .row {\n padding-top: 10px;\n padding-bottom: 12px;\n}\n\n.wpstg-tabs-container .nav-tab-wrapper {\n padding: 0;\n}\n\n#wpstg-tab-container .row label strong,\n#wpstg-tab-container .row strong {\n font-weight: bold;\n}\n\n.wpstg-tabs a {\n padding: 5px;\n}\n\n#wpstg-tab-container > ul > li.wpstg-tabs.active {\n background-color: white;\n}\n\n#wpstg_settingsgeneral_header .row:nth-child(3),\n#wpstg_settingsgeneral_header .row:nth-child(4) {\n display: none;\n}\n\n#wpstg-tab-container .wpstg-settings-panel {\n padding: 0 20px 20px 20px;\n overflow: auto;\n}\n\n#wpstg-tab-container .wpstg-form-table th {\n vertical-align: top;\n text-align: left;\n padding: 20px 10px 20px 0;\n line-height: 1.3;\n font-weight: bold;\n font-size: 14px;\n color: #484848;\n width: 30%;\n}\n\n#wpstg-tab-container .wpstg-form-table tr {\n border-bottom: 1px solid #E7E7E7;\n}\n\n#wpstg-tab-container span.description {\n display: block;\n font-weight: 400;\n font-style: normal;\n font-size: 13px;\n margin-top: 7px;\n color: #484848;\n}\n\n#wpstg-tab-container .col-title {\n color: #484848;\n}\n\n@media only screen and (max-width: 680px) {\n #wpstg-tab-container ul {\n float: none;\n }\n\n #wpstg-tab-container .wpstg-form-table tr > th {\n width: 100%;\n }\n\n #wpstg-tab-container span.description {\n font-size: 14px;\n }\n\n #wpstg-tab-container .wpstg-form-table tr > th,\n #wpstg-tab-container .wpstg-form-table tr > td {\n padding: 10px;\n }\n}\n\n#wpstg-tab-container ul li {\n margin-bottom: 0;\n}\n\n#wpstg-tab-container ul li a {\n display: block;\n padding: 10px 4px 10px 14px;\n border-width: 1px 0;\n border-style: solid;\n border-top-color: white;\n border-bottom-color: #e7e7e7;\n text-decoration: none;\n color: #0097DF;\n font-weight: bold;\n}\n\n#wpstg-tab-container ul li a:hover {\n background-color: #e5e5e5;\n color: #777777;\n}\n\n.wpstg-logo {\n display: block;\n font-size: 16px;\n padding-top: 20px;\n width: 220px;\n float: left;\n}\n\n.wpstg-logo img {\n max-width: 212px;\n}\n\n.wpstg-version {\n display: block;\n padding-top: 40px;\n color: #9b9b9b;\n}\n\n.wpstg_admin .nav-tab {\n color: #3C3C3C;\n}\n\n#wpstg-tab-container table tbody tr:nth-child(1) > th > div {\n font-size: 20px;\n}\n\n/* Cloning workflow */\n\n#wpstg-clonepage-wrapper {\n margin-bottom: 20px;\n width: 98%;\n}\n\n@media screen and (min-width: 1090px) {\n #wpstg-clonepage-wrapper {\n float: left;\n margin-bottom: 20px;\n }\n}\n\n#wpstg-steps {\n margin-top: 0px;\n margin-left: 20px;\n}\n\n#wpstg-steps li {\n color: #444;\n line-height: 20px;\n padding-right: 10px;\n float: left;\n}\n\n.wpstg-step-num {\n border: 1px solid #3e3e3e;\n border-radius: 3px;\n display: inline-block;\n width: 20px;\n height: 20px;\n text-align: center;\n margin-right: 5px;\n}\n\n.wpstg-current-step {\n font-weight: bold;\n}\n\n.wpstg-current-step .wpstg-step-num {\n background: #3e3e3e;\n color: #eee;\n}\n\n.wpstg-box {\n margin: 10px 0;\n padding: 10px;\n position: relative;\n overflow: hidden;\n transition: border-color .2s ease-in-out;\n}\n\n.wpstg-clone {\n margin-bottom: 10px;\n padding: 16px;\n position: relative;\n transition: border-color .2s ease-in-out;\n background-color: #ffffff;\n color: #3e3e3e;\n border-radius: 3px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .1);\n}\n\n.wpstg-clone.active {\n border-color: #1d94cf;\n}\n\n.wpstg-clone-header {\n display: flex;\n align-items: center;\n}\n\n.wpstg-clone-title {\n display: inline-block;\n margin-right: 8px;\n font-size: 15px;\n max-width: 300px;\n text-decoration: none;\n font-weight: bold;\n color: #3e3e3e;\n}\n\n.wpstg-clone-title:hover {\n color: #111111;\n}\n\n.wpstg-clone-labels {\n display: inline-block;\n}\n\n\n.wpstg-clone-labels .wpstg-clone-label {\n display: inline-block;\n padding: 1px 4px;\n margin-right: 4px;\n font-size: 11px;\n border-radius: 3px;\n background: #8bc34a;\n color: #fff;\n}\n\n.wpstg-clone-actions {\n margin-left: auto;\n display: flex;\n margin-top: 5px;\n}\n\n.wpstg-dropdown {\n position: relative;\n}\n\n.wpstg-clone-actions .wpstg-dropdown-toggler {\n text-decoration: none;\n background: #25a1f0;\n padding: 6px 10px;\n border-radius: 2px;\n font-size: 14px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .2);\n color: #ffffff;\n}\n\n.wpstg-clone-actions .wpstg-dropdown-toggler:hover {\n background: #002648;\n color: white;\n}\n\n.wpstg-dropdown {\n position: relative;\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu {\n background: #fff;\n display: none;\n flex-direction: column;\n position: absolute;\n right: 0;\n top: calc(100% + 4px);\n padding: 8px;\n border-radius: 2px;\n width: 100px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .2);\n z-index: 1000;\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu.wpstg-menu-dropup {\n top: auto;\n bottom: 100%;\n transform: translate3d(0px, -3px, 0px);\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu.shown {\n display: flex;\n}\n\n.wpstg-clone-action,\n.wpstg-dropdown-action {\n color: #3e3e3e;\n padding: 6px 8px;\n border-radius: 3px;\n text-decoration: none;\n position: relative;\n transition: color .2s ease-in-out;\n border-bottom: 1px solid #f3f3f3;\n}\n\n.wpstg-clone-action:hover,\n.wpstg-dropdown-action:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.wpstg-dropdown-action {\n color: #3e3e3e;\n background: transparent;\n border: 0 solid black;\n outline: none;\n box-shadow: none;\n}\n\n.wpstg-remove-clone:hover {\n color: #E01E5A;\n}\n\n.wpstg-clone-action:last-child {\n border: none;\n}\n\n.wpstg-clone:hover .wpstg-clone-action {\n display: inline-block;\n}\n\n#wpstg-show-error-details:focus,\n#wpstg-workflow .wpstg-clone-action {\n outline: none;\n box-shadow: none;\n}\n\n.wpstg-link-btn {\n background: #45a1c9;\n color: #fff;\n display: inline-block;\n padding: 5px 10px;\n text-decoration: none;\n vertical-align: baseline;\n transition: all .2s ease-in-out;\n}\n\n.wpstg-link-btn:hover,\n.wpstg-link-btn:focus {\n color: #fff;\n outline: none;\n box-shadow: none;\n}\n\n#wpstg-workflow .wpstg-link-btn:active {\n vertical-align: baseline;\n}\n\n.wpstg-link-btn[disabled] {\n background: #777 !important;\n border-color: #555 !important;\n pointer-events: none;\n}\n\n#wpstg-cancel-cloning,\n#wpstg-cancel-cloning-update {\n margin-top: 5px;\n}\n\n#wpstg-cancel-cloning.success,\n#wpstg-cancel-cloning.success {\n background: #64dd58;\n border-color: #54bd4a;\n}\n\n#wpstg-error-wrapper,\n#wpstg-error-details {\n display: none;\n padding-top: 10px;\n font-size: 13px;\n clear: both;\n}\n\n#wpstg-show-error-details {\n display: inline-block;\n margin-left: 5px;\n color: #555;\n text-decoration: none;\n transition: color .2s ease-in-out;\n}\n\n#wpstg-show-error-details:hover {\n color: #1d94cf;\n}\n\n#wpstg-error-details {\n border-left: 5px solid #E01E5A;\n padding: 10px;\n width: 500px;\n}\n\n#wpstg-try-again {\n display: none;\n}\n\n#wpstg-home-link {\n float: right;\n}\n\n.wpstg-loader {\n content: url('../../img/loading.gif');\n display: none;\n}\n\n.wpstg-loader.wpstg-finished {\n display: block;\n content: \"Finished\";\n background-color: #00c89a;\n color: white;\n padding: 2px 10px;\n margin-top: 0;\n border-radius: 3px;\n}\n\n#wpstg-workflow {\n max-width: 800px;\n position: relative;\n clear: both;\n padding-top: 20px;\n float: left;\n min-width: 500px;\n min-height: 380px;\n padding-right: 20px;\n padding-bottom: 20px;\n}\n\n#wpstg-sidebar {\n float: left;\n max-width: 400px;\n display: block;\n margin-left: 10px;\n}\n\n#wpstg-workflow.loading::after,\n#wpstg-removing-clone.loading::after {\n background: rgba(255, 255, 255, .7);\n content: 'Loading... may take a while for huge websites';\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n padding-top: 100px;\n text-align: center;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 99;\n}\n\n#wpstg-removing-clone.loading::after {\n content: 'REMOVING' !important;\n}\n\n#wpstg-existing-clones,\n#wpstg-removing-clone {\n position: relative;\n}\n\n#wpstg-existing-clones h3 {\n color: #3e3e3e;\n}\n\n#wpstg-removing-clone .wpstg-tab-section {\n display: block;\n}\n\n.wpstg-progress-bar {\n max-width: 900px;\n height: 27px;\n padding: 0;\n background-color: #d6d8d7;\n}\n\n.wpstg-progress {\n float: left;\n background: #3fa5ee;\n width: 0;\n height: 100%;\n transition: width .6s ease;\n color: white;\n line-height: 25px;\n text-align: center;\n overflow: hidden;\n}\n\n.wpstg-progress-files {\n background: #16b4f0;\n width: 0;\n height: 100%;\n transition: width .6s ease;\n color: white;\n line-height: 25px;\n text-align: center;\n}\n\n#wpstg-new-clone-id.wpstg-error-input,\n#wpstg-clone-path.wpstg-error-input {\n border: 1px solid #E01E5A;\n box-shadow: 0 0 2px rgba(255, 66, 53, .8);\n}\n\n#wpstg-new-clone-id {\n width: 450px;\n max-width: 100%;\n margin-left: 15px;\n}\n\n#wpstg-new-clone {\n background: #25a1f0;\n border-color: #2188c9;\n}\n\n#wpstg-new-clone:hover {\n background: #259be6;\n border-color: #2188c9;\n}\n\n#wpstg-clone-path {\n margin-left: 10px;\n width: 350px;\n}\n\n.wpstg-error-msg {\n color: #E01E5A;\n}\n\n#wpstg-clone-id-error {\n display: block;\n background-color: #f0f8ff;\n padding: 10px;\n margin: 20px;\n}\n\n#wpstg-start-cloning + .wpstg-error-msg {\n display: block;\n margin-top: 5px;\n}\n\n.wpstg-size-info {\n color: #999;\n font-weight: normal;\n position: relative;\n left: 2px;\n}\n\n.wpstg-db-table .wpstg-size-info {\n top: 2px;\n}\n\n.wpstg-db-table:hover {\n background-color: #f0f8ff;\n}\n\n#wpstg-workflow #wpstg-start-cloning {\n margin-left: 5px;\n vertical-align: baseline;\n}\n\n\n/* Tabs */\n\n.wpstg-tabs-wrapper {\n max-width: 640px;\n margin: 10px 0;\n}\n\n#wpstg-path-wrapper {\n border-bottom: 2px dashed #ccc;\n padding-bottom: 10px;\n margin-bottom: 10px;\n}\n\n.wpstg-tab-section {\n border-bottom: 1px solid #ddd;\n border-right: none;\n border-left: none;\n display: none;\n width: calc(100% - 72px);\n padding: 0px 36px;\n}\n\n.wpstg-tab-section::after {\n display: block;\n content: '';\n clear: both;\n}\n\n.wpstg-tab-header {\n border-bottom: 1px solid #ddd;\n border-right: none;\n border-left: none;\n color: #444;\n font-size: 16px;\n font-weight: bold;\n display: block;\n padding: 10px;;\n text-decoration: none;\n}\n\n.wpstg-tab-triangle {\n display: inline-block;\n margin-right: 12px;\n animation: transform 0.5s;\n width: 0;\n height: 0;\n margin-top: -3px;\n vertical-align: middle;\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n border-left: 10px solid;\n transition: transform 0.2s;\n cursor: pointer;\n}\n\n.wpstg-tab-triangle.wpstg-no-icon {\n margin-right: 2px;\n width: auto;\n height: auto;\n vertical-align: auto;\n border-top: 0px solid;\n border-bottom: 0px solid;\n border-left: 0px solid;\n}\n\n.wpstg-tab-triangle.wpstg-rotate-90 {\n transform: rotate(90deg);\n}\n\n.wpstg-tab-header:focus {\n color: #444;\n outline: none;\n box-shadow: none;\n}\n\n#wpstg-large-files {\n display: none;\n border: 1px dashed #ccc;\n padding: 10px 10px 10px;\n margin-top: 20px;\n position: relative;\n font-size: 12px;\n}\n\n#wpstg-large-files h3 {\n background: #fff;\n margin: 0;\n padding: 0 5px;\n position: absolute;\n top: -10px;\n left: 5px;\n}\n\n.wpstg-subdir {\n display: none;\n margin-left: 20px;\n}\n\n.wpstg-subdir.wpstg-push {\n display: block;\n margin-left: 20px;\n}\n\n.wpstg-dir a.disabled {\n color: #888;\n cursor: default;\n text-decoration: none;\n}\n\n.wpstg-check-subdirs {\n display: inline-block;\n margin-left: 10px;\n}\n\n.wpstg-notice-alert {\n display: block;\n background-color: #E01E5A;\n padding: 20px;\n max-width: 600px;\n margin-top: 10px;\n color: white;\n}\n\n.wpstg-notice--white {\n display: block;\n background-color: #ffffff;\n padding: 20px;\n max-width: 600px;\n margin-top: 10px;\n}\n\n.wpstg-notice-alert a {\n color: white;\n}\n\n.wpstg-notice-alert h3 {\n color: white;\n}\n\n.wpstg-header {\n font-weight: 400;\n line-height: 1.6em;\n font-size: 19px;\n border-bottom: 1px solid #DFDFDF;\n clear: both;\n padding-top: 10px;\n}\n\n#wpstg-clone-label {\n font-size: 14px;\n font-weight: bold;\n}\n\n.wpstg-log-details {\n height: 300px;\n overflow: scroll;\n max-width: 650px;\n font-family: monospace;\n font-size: 12px;\n line-height: 15px;\n border: 1px solid #FFF;\n background-color: black;\n color: #c0c0c0;\n padding: 3px;\n white-space: nowrap;\n margin-top: 15px;\n}\n\n#wpstg-finished-result {\n display: none;\n}\n\n#wpstg-remove-cloning {\n background: #ff3428;\n border-color: #e72f24;\n margin-top: 5px;\n}\n\n#wpstg-success-notice {\n padding: 10px;\n background-color: white;\n max-width: 900px;\n border: 1px solid #ccc;\n margin-top: 20px;\n}\n\n.wpstg_beta_notice {\n margin-bottom: 20px;\n}\n\n.wpstg-sysinfo {\n width: 700px;\n height: 700px;\n}\n\n.wpstg-form-table .col-title label {\n font-weight: 600;\n}\n\n.wpstg-form-table td:first-child {\n width: 30%;\n}\n\n.wpstg-share-button-container {\n margin: 5px 0;\n}\n\n.wpstg-share-button-container p {\n margin: 0 0 10px 0;\n}\n\n.wpstg-share-button {\n display: inline-block;\n}\n\n.wpstg-share-button a {\n text-decoration: none;\n}\n\n.wpstg-share-button .wpstg-share {\n font-family: sans-serif;\n font-weight: bold;\n text-decoration: none;\n text-align: center;\n}\n\n.wpstg-share-button .wpstg-share {\n -webkit-border-radius: 2px;\n -moz-border-radius: 2px;\n border-radius: 2px;\n color: #FFF;\n display: inline;\n font-size: 12px;\n padding: 4px 8px;\n}\n\n.wpstg-share-button-twitter .wpstg-share {\n background-color: #00ABF0;\n}\n\n.wpstg-share-button-facebook .wpstg-share {\n background-color: #3b5998;\n}\n\n.wpstg-share-button-googleplus .wpstg-share {\n background-color: #F53424;\n}\n\n.wpstg-share-button-twitter .share:active,\n.wpstg-share-button-facebook .share:active,\n.wpstg-share-button-googleplus .share:active {\n background-color: #353535;\n}\n\n#wpstg-check-space {\n margin-left: 8px;\n}\n\n#wpstg-welcome li {\n font-size: 18px;\n line-height: 29px;\n position: relative;\n padding-left: 23px;\n list-style: none !important;\n}\n\n#wpstg-welcome {\n margin-top: 20px;\n margin-right: 20px;\n background-color: white;\n}\n\n.wpstg-heading-pro {\n font-weight: bold;\n}\n\n.wpstg-h2 {\n margin-top: 0;\n margin-bottom: 1.2rem;\n font-size: 30px;\n line-height: 2.5rem;\n}\n\n#wpstg-welcome li:before {\n width: 1em;\n height: 100%;\n background: url(data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%2377B227%22%20d%3D%22M1671%20566q0%2040%2D28%2068l%2D724%20724%2D136%20136q%2D28%2028%2D68%2028t%2D68%2D28l%2D136%2D136%2D362%2D362q%2D28%2D28%2D28%2D68t28%2D68l136%2D136q28%2D28%2068%2D28t68%2028l294%20295%20656%2D657q28%2D28%2068%2D28t68%2028l136%20136q28%2028%2028%2068z%22%2F%3E%3C%2Fsvg%3E) left .4em no-repeat;\n background-size: contain;\n content: \"\";\n position: absolute;\n top: -2px;\n left: 0;\n color: #77b227;\n}\n\n.wpstg-h1 {\n margin-bottom: 1.35rem;\n font-size: 2.5em;\n line-height: 3.68rem;\n letter-spacing: normal;\n}\n\n.wpstg--swal2-content {\n color: #3e3e3e;\n}\n\n.wpstg--swal2-content h1 {\n color: #444;\n}\n\n#wpstg-welcome h2 {\n margin: 0 0 15px;\n}\n\n#wpstg-welcome .wpstg-footer {\n clear: both;\n margin-top: 20px;\n font-style: italic;\n}\n\n#wpstg-footer {\n clear: both;\n margin-top: 20px;\n margin-right: 10px;\n padding-top: 50px;\n}\n\n#wpstg-footer a {\n text-decoration: none;\n}\n\n#wpstg-footer li {\n margin-bottom: 2px;\n list-style: circle;\n}\n\n#wpstg-footer ul {\n margin-left: 15px;\n margin-top: 0px;\n}\n\n.wpstg-footer--title {\n margin-left: 15px;\n}\n\n.wpstg-staging-info {\n margin-top: 8px;\n color: #3e3e3e;\n font-size: 12px;\n}\n\n.wpstg-staging-info a {\n color: #3e3e3e;\n}\n\n.wpstg-staging-info li {\n margin-bottom: 2px;\n}\n\n.wpstg-bold {\n font-weight: 600;\n}\n\n#wpstg-processing-status {\n margin-top: 5px;\n font-size: 13px;\n font-weight: 400;\n float: left;\n}\n\n#wpstg-processing-timer {\n margin-top: 5px;\n font-size: 13px;\n font-weight: 400;\n float: right;\n}\n\n#wpstg-report-issue-button {\n margin-left: 30px;\n border: 1px solid #E01E5A;\n color: #E01E5A;\n background-color: white;\n}\n\n#wpstg-report-issue-button:hover {\n background-color: #dc2b62;\n color: #fff;\n}\n\n.wpstg-blue-primary {\n display: inline-block;\n text-decoration: none;\n font-size: 13px;\n height: 28px;\n margin: 0;\n padding: 0 10px 1px;\n cursor: pointer;\n border-width: 1px;\n border-style: solid;\n -webkit-appearance: none;\n border-radius: 3px;\n white-space: nowrap;\n box-sizing: border-box;\n background: #25a1f0;\n border-color: #2188c9;\n color: #fff;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n}\n\na.wpstg-blue-primary {\n padding: 5px 10px;\n height: auto;\n}\n\n.wpstg-blue-primary:hover {\n background-color: #259be6;\n}\n\n.wpstg-report-issue-form {\n position: absolute;\n z-index: 999;\n width: 300px;\n background-color: #fff;\n padding: 15px 15px 10px;\n border: 1px solid #e8e8e8;\n border-radius: 3px;\n box-shadow: 0 1px 0 0 #fff inset;\n display: none;\n right: 0;\n top: 35px;\n}\n\n@media (max-width: 600px) {\n .wpstg-report-issue-form {\n position: relative;\n }\n}\n\n.wpstg-report-show {\n display: block;\n}\n\n.wpstg-field input[type=text],\n.wpstg-field textarea {\n width: 100%;\n font-weight: 400;\n line-height: 1.4;\n margin-bottom: 4px;\n}\n\n.wpstg-report-email,\n.wpstg-report-hosting-provider {\n width: 100%;\n font-weight: 400;\n font-size: .8rem;\n height: 2.3rem;\n line-height: 2.3rem;\n border-radius: 3px;\n margin-bottom: 4px;\n padding: 0 10px;\n}\n\n.wpstg-report-description {\n border-radius: 3px;\n font-size: .8rem;\n padding: 6px 10px;\n resize: none;\n}\n\n.wpstg-report-privacy-policy {\n font-size: 12px;\n margin-bottom: 15px;\n}\n\n#wpstg-report-cancel {\n float: right;\n margin-right: 5px;\n font-weight: bold;\n}\n\n#wpstg-success-button {\n font-weight: bold;\n}\n\n.wpstg-message {\n box-sizing: border-box;\n -moz-box-sizing: border-box;\n background-color: #f5e0de;\n border-radius: 3px;\n color: rgba(0, 0, 0, .6);\n height: auto;\n margin: 10px 0;\n min-height: 18px;\n padding: 6px 10px;\n position: relative;\n}\n\n.wpstg-message.wpstg-error-message {\n background-color: #f5e0de;\n color: #b65147;\n font-size: 12px;\n}\n\n.wpstg-message.wpstg-success-message {\n background-color: #d7f8e0;\n color: #515151;\n}\n\n.wpstg-message p {\n margin: 3px 0;\n font-size: 13px;\n}\n\n.wpstg-warning {\n display: block;\n padding: 10px;\n background-color: #ffb804;\n color: #ffffff;\n margin: 10px 10px 10px 0;\n}\n\n.wpstg-warning a {\n color: #ffffff;\n font-weight: bold;\n text-decoration: underline;\n}\n\n.wpstg-error {\n display: block;\n padding: 10px !important;\n background-color: #E01E5A !important;\n color: #ffffff;\n margin: 10px 10px 10px 0 !important;\n border-color: transparent !important;\n border-left-color: transparent !important;\n box-shadow: none !important;\n}\n\n.wpstg-error a {\n color: #ffffff;\n font-weight: bold;\n text-decoration: underline;\n}\n\n#wpstg-resume-cloning {\n display: none;\n}\n\n#wpstg-external-db th {\n text-align: left;\n width: 120px;\n}\n\n#wpstg-db-connect {\n font-weight: normal;\n}\n\n#wpstg-db-status {\n display: block;\n margin-top: 5px;\n padding: 5px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n text-decoration: none;\n text-align: center;\n}\n\n.wpstg-text-field > #wpstg-db-status {\n margin-top: 8px;\n margin-left: 150px;\n min-width: 300px;\n}\n\n.wpstg-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n\n.wpstg-failed {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n\n#wpstg_select_tables_cloning {\n height: 600px;\n font-size: 13px;\n}\n\n#wpstg_select_tables_pushing {\n height: 400px;\n font-size: 13px;\n}\n\n#wpstg-update-notify {\n background-color: #E01E5A;\n font-size: 14px;\n color: #ffffff;\n line-height: normal;\n padding: 10px;\n}\n\n#wpstg-update-notify a {\n color: #ffffff;\n font-weight: bold;\n}\n\n.wpstg-pointer {\n cursor: pointer;\n}\n\n.wpstg--tab--header {\n background-color: white;\n /* margin-bottom: 10px; */\n /* padding: 16px; */\n position: relative;\n transition: border-color .2s ease-in-out;\n background-color: #ffffff;\n color: #3e3e3e;\n border-radius: 2px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .02);\n}\n\n.wpstg--tab--header ul {\n display: flex;\n}\n\n.wpstg--tab--header ul li {\n margin-right: 1em;\n margin-bottom: 0px;\n}\n\n.wpstg--tab--header ul li:last-child {\n margin-right: 0;\n}\n\n.wpstg--tab--header a {\n min-width: 150px;\n text-align: center;\n cursor: pointer;\n display: inline-block;\n padding: 1em 1.25em;\n padding-bottom: 9px;\n color: #c4c4c4;\n font-size: 18px;\n /*\n border: solid 1px;\n */\n}\n\n.wpstg--tab--header a.wpstg--tab--active {\n border-bottom: .4em solid #25A1F0;\n color: #25A1F0;\n}\n\n.wpstg--tab--header a:hover {\n background-color: #fefefe;\n border-bottom: 0.4em solid #25A1F0;\n color: #25A1F0;\n}\n\n.wpstg--tab--content {\n display: none;\n}\n\n.wpstg--tab--active {\n display: block;\n}\n\n.wpstg--text--strong,\n.wpstg--text--strong * {\n font-weight: bold !important;\n}\n\n.wpstg--text--danger {\n color: #a94442;\n}\n\n.wpstg--tooltip {\n position: relative;\n display: inline-block;\n margin-left: 5px;\n}\n\n.wpstg--tooltip.wpstg--tooltip-normal {\n margin-left: 0;\n border-bottom: 0;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext {\n visibility: hidden;\n width: 300px;\n background-color: #ffffff;\n color: #505050;\n text-align: left;\n padding: 12px;\n border-radius: 3px;\n position: absolute;\n z-index: 1;\n -webkit-box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n -moz-box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n font-weight: normal;\n}\n\n.wpstg--tooltiptext-backups {\n width: 120px;\n top: 100%;\n left: -150%;\n margin-left: -56px;\n margin-top: 4px;\n}\n\n.wpstg--tooltip.wpstg--exclude-rules--tooltip {\n border-bottom: 0px solid transparent;\n}\n\n.wpstg--tooltip.wpstg--exclude-rules--tooltip > .wpstg--tooltiptext {\n margin-top: 0px;\n margin-left: -150px;\n}\n\n/**\nTooltip top arrow\n */\n\n.wpstg--tooltip .wpstg--tooltiptext-backups::after {\n content: \" \";\n position: absolute;\n bottom: 100%;\n /* At the top of the tooltip */\n left: 50%;\n margin-left: 25px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent white transparent;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow {\n margin-top: 6px;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow::after {\n content: \" \";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -18px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent white transparent;\n}\n\n.wpstg--snaphot-restore-table tr {\n line-height: 12px;\n}\n\n.wpstg-float-left {\n float: left;\n}\n\n.wpstg-beta-notice {\n background-color: #b0e8b0;\n border-radius: 3px;\n padding: 7px;\n margin-bottom: 20px;\n}\n\n#wpstg-backup-name {\n font-size: 1.875em;\n font-weight: 600;\n}\n\n#wpstg_select_tables_cloning option:checked,\n#wpstg_select_tables_pushing option:checked {\n /* Cannot use background color here because Chrome and Firefox ignore it even if set to !important */\n -webkit-appearance: menulist-button;\n background-image: linear-gradient(0deg, #1e90ff 0%, #1e90ff 100%);\n}\n\n.wpstg--btn--cancel {\n background: #ff3428;\n border-color: #e72f24;\n color: #fff;\n height: auto;\n line-height: normal;\n font-size: 16px;\n padding: .5em;\n margin-bottom: 1.5em;\n}\n\n.wpstg--btn--cancel:hover {\n background: #ff3428;\n border-color: #e72f24;\n}\n\n.wpstg--process--content > .wpstg--swal2-html-container {\n padding: 4em 2em !important;\n}\n\n.wpstg--modal--process--logs,\n.wpstg--modal--error--logs {\n background: #ffffff;\n border: 1px solid #a8a8a8;\n border-radius: 3px;\n height: 300px;\n margin-top: 1em;\n display: none;\n padding-top: 10px;\n padding-left: 10px;\n overflow: auto;\n text-align: justify;\n}\n\n.wpstg--modal--error--logs {\n height: auto;\n max-height: 300px;\n}\n\n.wpstg--modal--process--logs p {\n font-size: 12px;\n white-space: nowrap;\n}\n\n.wpstg--modal--process--logs p.wpstg--modal--process--msg--info {\n color: #222222;\n}\n\n.wpstg--modal--process--logs p.wpstg--modal--process--msg--debug {\n color: #757575;\n}\n\n.wpstg--modal--process--title {\n color: #565656;\n margin: .25em 0;\n}\n\n.wpstg--modal--process--subtitle {\n margin: .5em 0;\n color: #565656;\n}\n\n.wpstg--modal--error--logs > p {\n text-align: left;\n font-size: 14px;\n color: #222222;\n}\n\n.wpstg--modal--process--logs p,\n.wpstg--modal--error--logs p {\n margin: 0px;\n margin-bottom: 2px;\n}\n\n.wpstg--modal--process--msg--error {\n color: #E01E5A;\n}\n\n.wpstg--modal--process--msg--critical {\n color: #E01E5A;\n}\n\n.wpstg--modal--process--msg--warning {\n color: darkorange;\n}\n\n.wpstg--modal--process--msg-found {\n font-size: 16px;\n color: #E01E5A;\n font-weight: bold;\n}\n\n.wpstg--modal--delete {\n text-align: left;\n margin-top: 8px;\n color: #565656;\n}\n\n.wpstg-swal-popup .wpstg--swal2-cancel.wpstg--btn--cancel {\n margin-bottom: 0;\n text-shadow: none !important;\n}\n\n.wpstg-swal-popup .wpstg-loader {\n display: inline-block !important;\n}\n\n.wpstg--modal--process--generic-problem {\n display: none;\n border-left: 5px solid #E01E5A;\n margin: .5em 0;\n}\n\n.wpstg--modal--process--logs--tail {\n font-size: 16px;\n color: #565656;\n background: none;\n border: none;\n cursor: pointer;\n text-decoration: underline;\n}\n\n.wpstg--modal--backup--import--upload--title {\n color: #3e3e3e;\n}\n\n.wpstg--modal--backup--import--configure,\n.wpstg--modal--backup--import--upload--status,\n.wpstg--modal--backup--import--upload--container input[type=\"file\"] {\n display: none;\n}\n\n#wpstg--backups--import--file-list {\n font-size: 14px;\n font-weight: bold;\n}\n\n#wpstg--backups--import--file-list-empty {\n color: #E01E5A;\n}\n\n.wpstg--modal--backup--import--filesystem label {\n font-size: 14px;\n}\n\n.wpstg--modal--backup--import--filesystem button {\n margin-bottom: 20px;\n}\n\n.wpstg--modal--backup--import--upload {\n position: relative;\n min-height: 30px;\n}\n\n.wpstg--modal--backup--import--upload {\n color: #505050;\n}\n\n.wpstg--modal--backup--import--upload--container {\n position: relative;\n border-radius: 10px;\n margin: .5em;\n padding: 1em .5em;\n border: 3.5px dashed #dedede;\n transition: background-color 0.3s ease, color 0.3s ease;\n background-color: #f4fbff;\n min-height: 130px;\n}\n\n.wpstg--modal--backup--import--upload--container.wpstg--has-dragover span.wpstg--drop {\n display: inline-flex;\n}\n\n.wpstg--modal--backup--import--upload--container input[type='file'] {\n display: none;\n}\n\n.wpstg--modal--backup--import--upload--container img {\n margin-top: 10px;\n width: 4em;\n align-self: center;\n border: none;\n}\n\n.wpstg--modal--backup--import--upload--container span {\n margin-top: 1em;\n}\n\n.wpstg--backup--import--options > button {\n margin-top: 1em;\n padding: 1em;\n align-self: center;\n width: 185px;\n height: auto;\n line-height: normal;\n}\n\n.wpstg--backup--import--options {\n position: relative;\n display: flex;\n justify-content: center;\n}\n\n.wpstg--backup--import--options ul {\n display: none;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul {\n padding: 0;\n margin: 54px 0 0 0;\n display: block;\n position: absolute;\n width: 185px;\n background: #25a1f0;\n box-sizing: border-box;\n border-radius: 0 0 3px 3px;\n border-width: 1px;\n border-color: #2188c9;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li {\n border-bottom: .1em solid #25a1f0;\n margin: 0;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li:hover {\n background-color: #25a1f0;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li:last-child {\n border-bottom: none;\n}\n\n.wpstg--backup--import--options ul li button {\n cursor: pointer;\n background: none;\n border: none;\n margin: 0;\n width: 100%;\n color: white;\n height: 40px;\n line-height: 40px;\n}\n\n.wpstg--backup--import--options ul li button:hover {\n background-color: #259be6;\n}\n\n.wpstg--modal--backup--import--search-replace--info {\n margin: 1em 0;\n display: flex;\n flex-direction: row;\n}\n\n.wpstg--modal--backup--import--info p {\n text-align: left;\n margin: 0;\n}\n\n.wpstg--modal--backup--import--search-replace--wrapper button {\n align-self: center;\n}\n\n.wpstg--import--advanced-options--button {\n border: 0;\n border-radius: 3px;\n font-size: 18px;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n cursor: pointer;\n}\n\n.wpstg--modal--backup--import--search-replace--new {\n color: white;\n background-color: #25a1f0;\n}\n\n.wpstg--modal--backup--import--search-replace--remove {\n color: white;\n background-color: #25a1f0;\n width: 22px;\n height: 22px;\n margin-left: 5px;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group:first-child button {\n display: none;\n}\n\n.wpstg--modal--backup--import--search-replace--input--container {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group {\n width: 100%;\n border-bottom: 6px solid #f1f1f1;\n margin-bottom: 10px;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group input {\n min-width: 250px;\n width: calc(50% - 4px - 11px - 5px); /* -4px is half of the padding; -11px is half of the button; -5 is the margin left of the button */\n display: inline-block;\n line-height: 10px;\n border: 1px solid #dedede;\n border-radius: 3px;\n color: #666;\n padding: 8px;\n margin-bottom: 12px;\n}\n\n.wpstg--modal--import--upload--process {\n display: none;\n position: relative;\n height: 30px;\n margin-top: 20px;\n margin-bottom: 20px;\n width: 100%;\n top: 0;\n left: 0;\n text-indent: 1em;\n white-space: nowrap;\n overflow: hidden;\n color: #333333;\n justify-content: center;\n align-items: center;\n}\n\n.wpstg--modal--import--upload--progress {\n position: absolute;\n background: #98d452;\n color: white;\n height: 100%;\n border-radius: 4px;\n left: 0;\n top: 0;\n}\n\n.wpstg--modal--import--upload--progress--title {\n z-index: 9;\n}\n\n.wpstg-fieldset:disabled {\n opacity: 0.8;\n border-top: 1px solid white;\n margin-top: 20px;\n}\n\n.wpstg-fieldset {\n padding-left: 20px;\n}\n\n.wpstg-fs-14 {\n font-size: 14px;\n}\n\n.wpstg-dark-alert {\n font-weight: bold;\n background-color: #0e86d9;\n padding: 15px;\n margin-top: 0px;\n color: white;\n}\n\n.wpstg-dark-alert .wpstg-button--cta-red {\n margin-left:10px;\n}\n\n.wpstg-form-group {\n display: block;\n width: 100%;\n margin-bottom: 8px;\n align-items: center;\n}\n\n.wpstg-form-group > label {\n display: block;\n font-weight: 700;\n}\n\n.wpstg-text-field > input {\n width: 300px;\n display: block;\n line-height: 1.5;\n}\n\n.wpstg-code-segment {\n display: block;\n}\n\n.wpstg-text-field > .wpstg-code-segment {\n margin-top: 4px;\n min-width: 300px;\n}\n\n.wpstg-form-group > .wpstg-checkbox {\n min-width: 100%;\n width: 100%;\n position: relative;\n}\n\n.wpstg-form-group > .wpstg-checkbox > input[type='checkbox'] {\n left: 150px;\n}\n\n.wpstg-rounded {\n border-radius: 3px;\n}\n\n.wpstg-white-border {\n border: 1px solid white !important;\n}\n\n.wpstg-ml-4 {\n margin-left: 4px;\n}\n\n#wpstg-confirm-backup-restore-data {\n margin: 40px;\n text-align: left;\n}\n\n#wpstg-advanced-settings hr {\n margin: 20px 0;\n}\n\n.wpstg-form-row {\n display: block;\n}\n\n.wpstg-form-row label,\n.wpstg-form-row input {\n display: table-cell;\n padding-left: 5px;\n padding-right: 5px;\n margin-top: 3px;\n margin-bottom: 3px;\n}\n\n.wpstg-form-row input {\n width: 400px;\n}\n\n.wpstg-form-row label {\n font-weight: bold;\n width: 1px;\n white-space: nowrap;\n}\n\n#wpstg-db-connect-output #wpstg-db-status {\n width: 390px;\n}\n\n.wpstg-fs-14 {\n font-size: 14px;\n}\n\n.wpstg-code-segment {\n display: block;\n}\n\n.wpstg-form-group > .wpstg-checkbox {\n min-width: 100%;\n width: 100%;\n}\n\n.wpstg-form-group > .wpstg-checkbox > input[type='checkbox'] {\n margin-left: 10px;\n}\n\n@media only screen and (max-width: 768px) {\n .wpstg-form-group > label {\n min-width: auto;\n width: auto;\n }\n\n .wpstg-text-field > input {\n width: 100%;\n }\n\n .wpstg-text-field > .wpstg-code-segment {\n margin-left: 0;\n min-width: 100%;\n }\n\n .wpstg-tab-section {\n width: calc(100vw - 60px);\n max-width: 450px;\n }\n}\n\n.wpstg-rounded {\n border-radius: 3px;\n}\n\n.wpstg-white-border {\n border: 1px solid white !important;\n}\n\n.wpstg-m-0 {\n margin: 0;\n}\n\n.wpstg-mt-10px {\n margin-top: 10px !important;\n}\n\n.wpstg-mr-10px {\n margin-right: 10px !important;\n}\n\n.wpstg-my-10px {\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n}\n\n.wpstg-w-100 {\n width: 100%;\n}\n\n.wpstg-box-shadow {\n box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);\n}\n\n.wpstg-float-left {\n float: left;\n}\n\n.wpstg-bold-text {\n font-weight: bold;\n}\n\n.wpstg-warning.notice {\n border-left: 4px solid #ffba00;\n}\n\n.wpstg-confirmation-label {\n background-color: #5b9dd9;\n color: #fff;\n padding: 2px;\n border-radius: 3px;\n}\n\n.wpstg-my-6px {\n margin-bottom: 6px;\n margin-top: 6px;\n}\n\n.wpstg-mb-10px {\n margin-bottom: 10px;\n}\n\n.wpstg-clear-both {\n clear: both;\n}\n\n.wpstg-font-italic {\n font-style: italic;\n}\n\n.wpstg-mt-20px {\n margin-top: 20px;\n}\n\n.wpstg-welcome-container {\n border: 2px solid white;\n padding: 20px;\n margin-bottom: 20px;\n}\n\n.wpstg-ml-30px {\n margin-left: 30px;\n}\n\n.wpstg-text-center {\n text-align: center;\n}\n\n.wpstg-feedback-link {\n text-decoration: none;\n}\n\n.wpstg-feedback-span {\n display: block;\n margin-bottom: 3px;\n}\n\n#wpstg-confirm-backup-restore-data {\n margin: 40px;\n text-align: left;\n}\n\n#wpstg-confirm-backup-restore-wrapper {\n margin: 30px;\n margin-top: 0;\n}\n\n#wpstg-confirm-backup-restore-wrapper h3 {\n color: #E01E5A;\n}\n\n#wpstg-progress-db,\n#wpstg-progress-backup {\n background-color: #3fa5ee;\n}\n\n#wpstg-progress-sr,\n#wpstg-progress-files.wpstg-pro {\n background-color: #3c9ee4;\n}\n\n#wpstg-progress-dirs,\n#wpstg-progress-data {\n background-color: #3a96d7;\n}\n\n#wpstg-progress-files:not(.wpstg-pro),\n#wpstg-progress-finishing {\n background-color: #378cc9;\n}\n\n.wpstg-issue-resubmit-confirmation.wpstg--swal2-container,\n.wpstg-swal2-container.wpstg--swal2-container {\n z-index: 10500;\n}\n\n.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-actions,\n.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-header {\n display: none;\n}\n\nbody.toplevel_page_wpstg_backup .wpstg--swal2-container .wpstg--swal2-content,\nbody.toplevel_page_wpstg_clone .wpstg--swal2-container .wpstg--swal2-content {\n z-index: 2;\n}\n\n.toplevel_page_wpstg_clone #swal2-content h2 {\n color: #3e3e3e;\n}\n\n.toplevel_page_wpstg_clone #swal2-content {\n line-height: 1.5em;\n}\n\ndiv#exportUploadsWithoutDatabaseWarning {\n font-style: italic;\n font-size: 0.9rem;\n margin: 10px;\n padding: 10px;\n border: 1px solid #e3e3e3;\n border-radius: 5px;\n text-align: center;\n background-color: #fafafa;\n}\n\n.wpstg-advanced-options-dropdown-wrapper {\n display: none; /* ENABLE WHEN WE HAVE ADVANCED OPTIONS FOR EXPORTING */\n margin-top: 20px;\n}\n\n.wpstg--modal--backup--import--search-replace--wrapper {\n text-align: left;\n margin-top: 20px;\n}\n\n.wpstg--modal--backup--import--search-replace--new--wrapper {\n text-align: center;\n}\n\n.wpstg-import-backup-contains li {\n display: inline-block;\n margin-bottom:0px;\n}\n\n.wpstg-import-backup-contains li .wpstg-backups-contains {\n border-radius: 3px;\n color: #979797;\n background-color: #f4f4f4 !important;\n width: 18px;\n height: 18px;\n font-size: 17px;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains {\n padding: 2px;\n background-color: white;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains > .wpstg--dashicons {\n filter: invert(35%);\n}\n\n.wpstg-import-backup-contains .wpstg--tooltiptext {\n width: 80px;\n font-size: 13px;\n padding: 5px;\n left: -25px;\n text-align: center;\n}\n\n.wpstg-import-backup-contains-title {\n display: inline-block;\n}\n\nul.wpstg-import-backup-contains {\n display: inline-block;\n}\n\n.wpstg-import-backup-name {\n display: inline-block;\n font-weight: bold;\n}\n\n.wpstg-backup-more-info-toggle {\n font-size: x-small;\n display: inline-block;\n font-style: italic;\n cursor: pointer;\n}\n\n.wpstg-backup-more-info-toggle::selection {\n background: none;\n}\n\nul.wpstg-import-backup-more-info {\n font-size: 14px;\n text-align: left;\n margin-bottom: 30px;\n margin-top: 10px;\n background-color: #f6f6f6;\n border: 1px solid #878787;\n border-radius: 3px;\n padding: 7px;\n cursor: pointer;\n}\n\nul.wpstg-import-backup-more-info:hover {\n background-color: #def2ff;\n border: 1px solid #25a1f0;\n}\n\nul.wpstg-import-backup-more-info li {\n height: 20px;\n}\n\n.wpstg-backup-list {\n max-width: 800px;\n}\n\n.wpstg-backup-list h3 {\n color:#3e3e3e;\n}\n\n.wpstg-backup-list ul ul {\n margin-block-start: 1em;\n margin-block-end: 1em;\n}\n\n.wpstg-push-confirmation-message {\n text-align: justify;\n font-size: 15px;\n}\n\n.wpstg-settings-row {\n padding-top: 10px;\n padding-bottom: 10px;\n}\n\n.wpstg-settings-title {\n font-weight: 600;\n}\n\n.wpstg-settings-form-group {\n display: flex;\n align-items: center;\n}\n\n.wpstg-settings-form-group > .wpstg-settings-message {\n width: 30%;\n padding: 0;\n margin: 7px 0 0;\n}\n\n/**\n * WP STAGING EXCLUSION RULES TABLE LAYOUT\n */\n\n.wpstg-excluded-filters-container {\n padding: 0;\n margin-top: 10px;\n margin-bottom: 10px;\n max-width: 100%;\n width: 100%;\n}\n\n.wpstg-excluded-filters-container > table {\n width: 100%;\n border-collapse: collapse;\n border-color: transparent;\n}\n\n.wpstg-excluded-filters-container td {\n padding-top: 4px;\n padding-bottom: 4px;\n height: 20px;\n}\n\n.wpstg-excluded-filters-container h4 {\n margin: 0;\n}\n\n.wpstg-exclude-filters-foot {\n display: flex;\n justify-content: flex-start;\n padding: 0;\n}\n\n/**\n * WP STAGING EXCLUSION RULE DROPDOWN STYLE\n */\n\n\n.wpstg-exclude-filter-dropdown > button:hover {\n background: #135e96;;\n border: 1px solid #135e96;;\n}\n\n.wpstg-exclude-filter-dropdown > .wpstg-dropdown-menu {\n width: 128px;\n}\n\n.wpstg-remove-exclude-rule {\n color: #fff !important;\n background-color: #e01e5a;\n border: 1px solid #e01e5a;\n width: 20px;\n height: 20px;\n border-radius: 10px;\n font-size: 24px;\n padding: 0;\n display: inline-flex;\n justify-content: center;\n outline: none;\n box-shadow: none;\n font-weight: 400;\n line-height: 0.7;\n margin-top: 5px;\n cursor: pointer;\n}\n\n.wpstg-remove-exclude-rule:hover {\n background-color: #E01E5A;\n border-color: #E01E5A;\n}\n\n.wpstg-code-block {\n margin-top: 4px;\n font-size: 1.2em;\n background: #f8f8f8;\n border-radius: 2px;\n}\n\n.wpstg-rule-info {\n background: #f8f8f8 !important;\n}\n\ncode.wpstg-code {\n display: inline-block;\n font-size: 11px;\n border: 1px solid #aaa;\n background: #fff;\n padding: 2px 4px;\n margin-bottom: 1px;\n color: #E01E5A;\n}\n\n.wpstg-exclusion-rule-info {\n color: #fff !important;\n background-color: #ffc107;\n border: 1px solid #ffc107;\n width: 14px;\n height: 14px;\n border-radius: 7px;\n font-size: 14px;\n padding: 0;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n outline: none;\n box-shadow: none;\n font-weight: 400;\n vertical-align: middle;\n}\n\n.wpstg-exclusion-rule-info:hover {\n background-color: #ffba0c;\n border: 1px solid #ffba0c;\n}\n\n/**\n * WP STAGING INPUTS EXCLUSION RULES\n */\n\n.wpstg-exclude-rule-input {\n font-size: 12px !important;\n padding: 2px 6px;\n box-shadow: none;\n outline: none !important;\n display: inline-block;\n font-weight: 400;\n line-height: 1.5;\n color: #222;\n border-radius: 0 !important;\n background-color: #fff;\n border: 1px solid #bbb;\n min-height: 24px !important;\n margin-top: 4px;\n margin-left: 4px;\n vertical-align: baseline !important;\n transition: all 0.3s cubic-bezier(.25, .8, .25, 1);\n width: 135px;\n}\n\n.wpstg-excluded-filters-container tbody > tr:last-child .wpstg-exclude-rule-input {\n margin-bottom: 4px;\n}\n\n.wpstg-exclude-rule-input:hover {\n border: 1px solid #999;\n}\n\n.wpstg-exclude-rule-input:focus {\n border: 1px solid #25A0F1 !important;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24) !important;\n}\n\n.wpstg-file-size-exclude-select,\n.wpstg-path-exclude-select {\n width: 135px;\n}\n\n.wpstg-file-size-exclude-select-small {\n width: 52px;\n}\n\n.wpstg-file-size-exclude-input {\n width: 75px;\n}\n\n.wpstg-staging-option-title {\n margin: 15px 0 0;\n}\n\n.wpstg-swal-push-container.wpstg--swal2-container {\n z-index: 9995;\n}\n\n#wpstg-scanning-files {\n padding-bottom: 5px;\n}\n\n#wpstg-scanning-files.wpstg-tab-section, #wpstg-scanning-db.wpstg-tab-section {\n padding-top: 10px;\n}\n\n.wpstg-reset-excludes-container {\n margin: 10px 0;\n}\n\n.wpstg-swal2-ajax-loader {\n width: 100%;\n height: 150px;\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n@keyframes wpstg-loading-icon-anim {\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.wpstg-swal2-ajax-loader > img {\n width: 64px;\n height: 64px;\n animation: wpstg-loading-icon-anim 1s infinite linear;\n -webkit-animation: wpstg-loading-icon-anim 1s infinite linear;\n}\n\n.wpstg-swal2-container .wpstg-tab-section {\n width: auto !important;\n}\n\n#wpstg-no-staging-site-results {\n margin-top: 10px;\n max-width: 375px;\n}\n\nli#wpstg-backup-no-results {\n max-width: 500px;\n}\n\nli#wpstg-backup-no-results div, #wpstg-no-staging-site-results div {\n display: inline-block;\n text-align: center;\n}\n\nli#wpstg-backup-no-results .wpstg--dashicons, #wpstg-no-staging-site-results .wpstg--dashicons {\n filter: invert(50%);\n position: absolute;\n margin-top: 1px;\n}\n\nli#wpstg-backup-no-results .no-backups-found-text, #wpstg-no-staging-site-results .no-staging-site-found-text {\n color: #5d5d5d;\n margin-left: 20px;\n}\n\n@media only screen and (max-width: 680px) {\n li#wpstg-backup-no-results div, #wpstg-no-staging-site-results div {\n width: 100%;\n }\n}\n\n#wpstg--modal--backup--download-inner p.wpstg-download-modal-text {\n font-size: 16px;\n color: #565656;\n}\n\n#wpstg--modal--backup--download-inner h2 {\n color: #565656;\n}\n\n.wpstg-backup-restore-contains-database,\n.wpstg-backup-restore-contains-files {\n display: none;\n}\n\n.wpstg-green-button {\n background: #8bc34a;\n border: 1px solid #78a93f;\n color: white;\n text-shadow: 0 -1px 1px #78a93f, 1px 0 1px #78a93f, 0 1px 1px #40c921, -1px 0 1px #78a93f;\n}\n\n.wpstg-green-button:hover {\n background: #78a93f;\n}\n\n.wpstg-is-dir-loading {\n position: absolute;\n margin-top: -2px;\n margin-left: 8px;\n display: none;\n}\n\n.wpstg-ml-8px {\n margin-left: 8px;\n}\n\n.wpstg-mb-8px {\n margin-bottom: 8px;\n}\n\n\n.wpstg-btn-danger {\n background-color: #E01E5A;\n border: 1px solid #E01E5A;\n color: white;\n text-shadow: none;\n}\n\n.wpstg-btn-danger:hover {\n background: #c0194d;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);\n}\n\n.wpstg-swal2-container.wpstg-swal2-loading > .wpstg--swal2-modal {\n height: 200px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container:not(.wpstg-swal2-loading) > .wpstg--swal2-modal {\n max-width: 480px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-header {\n display: none;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-content {\n height: auto;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-tabs-wrapper {\n overflow-y: auto;\n height: auto !important;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content {\n font-size: 13px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-dir {\n margin-bottom: 4px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-subdir {\n margin-top: 4px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open .wpstg--swal2-modal {\n height: calc(100vh - 70px);\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-tabs-wrapper {\n height: calc(100vh - 350px) !important;\n}\n\n.wpstg--swal2-actions.wpstg--modal--actions > button {\n margin-left: 4px;\n margin-right: 4px;\n text-transform: uppercase;\n text-shadow: initial;\n font-weight: 500;\n min-width: 80px;\n}\n\n.wpstg-swal-popup {\n max-width: 1200px !important;\n}\n\n.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-title {\n color: #a8a8a8;\n}\n\n.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-content {\n margin-top: 8px;\n color: #a8a8a8;\n}\n\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step.wpstg--swal2-active-progress-step,\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step,\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line {\n background: #25a1f0;\n}\n\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line {\n width: 2.75em;\n}\n\n.wpstg--dashicons {\n width: 16px;\n height: 16px;\n}\n\n.wpstg--dashicons.wpstg-dashicons-grey {\n filter: invert(20%);\n}\n\n.wpstg--dashicons.wpstg-dashicons-19 {\n width: 19px;\n height: 19px;\n}\n\n.wpstg--dashicons.wpstg-dashicons-21 {\n width: 21px;\n height: 21px;\n}\n\n#wpstg--tab--backup #wpstg-step-1 {\n display: flex;\n align-items: center;\n}\n\n.wpstg-advanced-options .wpstg--tooltip,\n#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip {\n border-bottom: 0 solid transparent;\n display: inline-flex;\n align-items: center;\n}\n\n.wpstg-advanced-options-site .wpstg--tooltip img.wpstg--dashicons {\n filter: invert(17%) sepia(0%) saturate(1%) hue-rotate(195deg) brightness(97%) contrast(77%);\n}\n\n#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip {\n border-bottom: 0 solid transparent;\n display: flex;\n align-items: center;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext-backups::after {\n left: calc(20% + 2px);\n}\n\n.wpstg-listing-single-backup .wpstg--dashicons {\n width: 17px;\n height: 17px;\n}\n\n.wpstg-100-width {\n width: 100px;\n}\n\n.wpstg-caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px solid;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n transition: transform 0.2s;\n cursor: pointer;\n}\n\n.wpstg-caret.wpstg-caret-up {\n transform: rotate(-180deg);\n}\n\n.wpstg-advanced-options-site label {\n font-size: 16px;\n display: block;\n margin: .5em 0;\n}\n\n#wpstg-confirm-backup-restore-data {\n font-size: 18px;\n margin: 0;\n margin-top: 30px;\n}\n\n/* Sweetalert WP STAGING Theme */\n\nbody.toplevel_page_wpstg_backup .wpstg--swal2-container.wpstg--swal2-backdrop-show,\nbody.toplevel_page_wpstg_clone .wpstg--swal2-container.wpstg--swal2-backdrop-show {\n background: rgba(0, 0, 0, .6);\n z-index: 9995;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup {\n border-radius: 8px;\n z-index: 9999;\n padding: 24px;\n color: #3e3e3e;\n font-family: Verdana, Geneva, Tahoma, sans-serif;\n}\n\n.wpstg-swal-popup .wpstg--swal2-title {\n font-size: 22px;\n color: #3e3e3e;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-title {\n align-self: flex-start; /* For an actual Swal title */\n text-align: left; /* Manually adding this class to a non flex display */\n margin-bottom: 0;\n}\n\n.wpstg-swal-popup .wpstg--swal2-close {\n top: 8px;\n right: 8px;\n z-index: 5;\n}\n\n.wpstg-swal-popup .wpstg--swal2-close:focus {\n outline: none;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions {\n justify-content: flex-end;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button {\n border-radius: 4px;\n font-weight: 900;\n border: 0;\n font-size: 15px;\n padding: 10px 12px;\n text-transform: capitalize;\n line-height: normal;\n height: 40px;\n min-width: 100px;\n text-shadow: none;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions > button {\n margin-left: 8px;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel {\n border: 1px solid rgba(29, 28, 29, 0.3);\n background: #fff;\n color: rgb(29, 28, 29);\n font-weight: 500;\n width: 100px;\n text-shadow: none;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button:hover {\n box-shadow: 0 1px 3px 0 rgba(0 0 0 .1);\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel:hover {\n background: rgba(28, 29, 28, .04);\n}\n\n#wpstg-backup-name-input {\n height: 44px;\n font-size: 18px;\n}\n\n.wpstg-restore-finished-container .wpstg--swal2-title {\n color: #565656 !important;\n}\n\n/*#wpstg-restore-success {\n color: #565656;\n}*/\n\n.wpstg-restore-finished-container .wpstg--swal2-content {\n margin-top: 20px;\n color: #a8a8a8;\n}\n\n/* WP Staging Implementation of Windows Style Linear Loader */\n\n.wpstg-linear-loader > span[class*=\"wpstg-linear-loader-item\"] {\n height: 6px;\n width: 6px;\n background: #333;\n display: inline-block;\n margin: 12px 2px;\n border-radius: 100%;\n animation: wpstg_linear_loader 3s infinite;\n animation-timing-function: cubic-bezier(0.030, 0.615, 0.995, 0.415);\n animation-fill-mode: both;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(1) {\n animation-delay: 1s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(2) {\n animation-delay: 0.8s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(3) {\n animation-delay: 0.6s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(4) {\n animation-delay: 0.4s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(5) {\n animation-delay: 0.2s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(6) {\n animation-delay: 0s;\n}\n\n@keyframes wpstg_linear_loader {\n 0% {\n transform: translateX(-30px);\n opacity: 0;\n }\n 25% {\n opacity: 1;\n }\n 50% {\n transform: translateX(30px);\n opacity: 0;\n }\n 100% {\n opacity: 0;\n }\n}\n\n/* END - Windows Style Linear Loader */\n\n.wpstg--modal--backup--import--upload--content {\n padding: .75em;\n margin: 1em auto;\n}\n\n.wpstg--modal--backup--import--upload--content .wpstg-linear-loader {\n display: none;\n}\n\n#wpstg-multisite-disabled .wpstg-clone {\n width: 355px;\n}\n\n#wpstg-free-version-backups .wpstg-clone {\n text-align: center;\n}\n\n#wpstg-free-version-backups .wpstg-clone p {\n font-size: 16px;\n}\n\n.wpstg-staging-info li .backup-notes {\n word-break: break-word;\n}\n\n.wpstg--modal--import--upload--progress--title small {\n font-weight: normal;\n}\n\n#wpstg-report-issue-wrapper {\n position: relative;\n}\n\n#wpstg-report-issue-wrapper .arrow-up {\n width: 0;\n height: 0;\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n border-bottom: 8px solid white;\n position: absolute;\n top: -8px;\n right: 40px;\n}\n\n.notice {\n margin: 10px 20px 0 2px;\n}\n\n.wpstg--notice {\n box-shadow: 0 1px 1px rgba(0, 0, 0, .04);\n margin: 20px 20px 20px 0px;\n padding: 1px 12px;\n}\n\n.wpstg--error a:hover {\n color: #eeeeee;\n}\n\n.wpstg--error, .wpstg--error a {\n background: #E01E5A;\n color: white;\n}\n\n/**\n * Buttons\n */\n\n.wpstg-button {\n display: inline-block;\n border-radius: 2px;\n cursor: pointer;\n padding: 2px 10px 2px 10px;\n text-transform: uppercase;\n font-weight: 500;\n outline: 0;\n transition: background-color .1s ease-in;\n text-decoration: none;\n}\n\n.wpstg-button.wpstg-save {\n background-color: #1687A7;\n color: white;\n}\n\n.wpstg-button.wpstg-save:hover {\n background-color: #276678;\n}\n\n\n.wpstg-button.wpstg-button-light {\n background-color: #f8f8f8;\n border: 1px solid #eee;\n color: #333;\n animation: background-color 0.3s;\n}\n\n.wpstg-button.wpstg-button-light:hover {\n background-color: #e0e0e0;\n border: 1px solid #e0e0e0;\n}\n\n.wpstg-buttons .spinner {\n float: none;\n margin: 0 0 0 5px;\n}\n\n.wpstg-button.danger {\n display: inline-block;\n text-decoration: none;\n text-align: center;\n text-transform: inherit;\n background-color: #E01E5A;\n color: white;\n border-radius: 2px;\n border-color: transparent;\n}\n\n.wpstg-button.danger:hover {\n background-color: #c0194d;\n}\n\n.wpstg-button--big {\n display: inline-block;\n padding: 10px;\n min-width: 170px;\n font-size: 16px;\n text-decoration: none;\n text-align: center;\n margin-top: 20px;\n color: white;\n border-radius: 3px;\n}\n\n.wpstg-button--primary {\n display: inline-block;\n text-decoration: none;\n font-size: 13px;\n line-height: 2.15384615;\n min-height: 30px;\n margin: 0;\n padding: 0 10px;\n cursor: pointer;\n border: 1px solid rgba(29, 28, 29, 0.3);\n -webkit-appearance: none;\n border-radius: 2px;\n white-space: nowrap;\n box-sizing: border-box;\n color: #171717;\n}\n\n.wpstg-button--primary:hover {\n background: rgba(28, 29, 28, .04);\n color: black;\n}\n\n.wpstg-button--secondary {\n display: inline-block;\n background-color: transparent;\n color: #95a5a6;\n border-radius: 2px;\n border: 1px solid rgba(29, 28, 29, 0.3);\n cursor: pointer;\n padding: 4px 10px 2px 10px;\n font-weight: 500;\n outline: 0;\n transition: background-color .1s ease-in;\n text-decoration: none;\n}\n\n.wpstg-button--red {\n background-color: #E01E5A;\n border-color: #E01E5A;\n color: white;\n}\n\n.wpstg-button--red:hover {\n background-color: #d02358;\n border-color: #e0255f;\n color: white;\n}\n\n.wpstg-button--cta-red {\n background-color: #fe008f;\n border-color: #E01E5A;\n color: white;\n}\n\n.wpstg-button--cta-red:hover {\n background-color: #f31391;\n border-color: #e0255f;\n color: white;\n}\n\n.wpstg-button--blue {\n background-color: #25A0F1;\n border-color: #25A0F1;\n color: white;\n}\n\n.wpstg-button--blue:hover {\n background-color: #259be6;\n border-color: #259be6;\n color: white;\n}\n\n#wpstg-button-backup-upgrade {\n font-size: 16px;\n}\n\n.wpstg-staging-status {\n color: #E01E5A;\n}\n\n#wpstg-push-changes,\n#wpstg-start-updating,\n#wpstg-save-clone-data {\n margin-left: 5px;\n}\n\ninput.wpstg-textbox {\n border: 1px solid #aaa;\n border-radius: .25rem;\n padding: 0.25rem 0.5rem;\n font-size: 14px;\n}\n\ninput.wpstg-textbox:focus {\n outline: 0;\n border-color: #259be6;\n -webkit-box-shadow: 0 0 0 0.1rem rgba(221, 221, 221, .35);\n box-shadow: 0 0 0 0.1rem rgba(221, 221, 221, .35);\n}\n\ninput.wpstg-textbox::placeholder {\n color: #888;\n}\n\n.wpstg--advance-settings--checkbox {\n display: flex;\n align-items: center;\n}\n\n.wpstg--advance-settings--checkbox > label {\n font-size: 14px;\n font-weight: bolder;\n width: 165px;\n display: inline-block;\n}\n\n.wpstg--advance-settings--checkbox > .wpstg--tooltip {\n margin-top: 5px;\n margin-left: 5px;\n position: relative;\n display: inline-block;\n border-bottom: 0px solid transparent;\n}\n\n.wpstg--advance-settings--checkbox > .wpstg--tooltip > .wpstg--tooltiptext {\n top: 18px;\n left: -150px;\n}\n\n\ndiv#wpstg-restore-wait {\n display: none;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n text-align: center;\n height: 100vh;\n width: 100vw;\n position: fixed;\n top: 0;\n left: 0;\n background: white;\n z-index: 99999;\n}\n\ndiv#wpstg-restore-wait .wpstg-title {\n font-weight: bold;\n}\n\ndiv#wpstg-restore-wait div {\n font-size: 16px;\n margin-top: 12px;\n}\n\n.resumable-browse {\n cursor: pointer;\n}\n\n.resumable-browse a {\n text-decoration: underline;\n}\n\n.wpstg-upload-text {\n font-weight: 600;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover {\n transition: background-color 0.7s;\n background-color: #94dc96;\n color: #FFF;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover * {\n pointer-events: none; /* Avoids flickering when dragging to drop a file */\n}\n\n.wpstg--modal--backup--import--upload--container.dragover .wpstg-upload-text {\n display: none;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover .wpstg-dragover-text {\n display: block;\n}\n\n.wpstg--modal--backup--import--upload--container .wpstg-dragover-text {\n display: none;\n}\n\n#wpstg-invalid-license-message, #wpstg-invalid-license-message a {\n font-weight: 500;\n color: #E01E5A;\n margin-left: 6px;\n}\n\n#wpstg-sidebar--banner {\n max-width: 200px;\n}\n\n@media screen and (max-width: 1234px) {\n .wpstg-h2 {\n font-size: 24px;\n }\n\n #wpstg-welcome li {\n font-size: 14px;\n }\n}\n\n.wpstg-exclamation {\n color: #ffffff;\n border-radius: 100%;\n background-color: #E01E5A;\n width: 20px;\n height: 20px;\n text-align: center;\n font-weight: bold;\n display: inline-block;\n margin: 6px;\n}\n\n.wpstg--tab--contents {\n padding-top: 1px;\n}\n\n.wpstg-swal-show.wpstg--swal2-show {\n -webkit-animation: wpstg-swal-show 0.2s !important;\n animation: wpstg-swal-show 0.2s !important;\n}\n\n@-webkit-keyframes wpstg-swal-show {\n 0% {\n transform: scale(0.3);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes wpstg-swal-show {\n 0% {\n transform: scale(0.3);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n.wpstg-tab-item--vert-center {\n display: flex;\n align-items: center;\n}\n\n.wpstg-db-comparison-modal {\n padding-left: 10px;\n padding-right: 10px;\n}\n\n.wpstg-db-comparison-table {\n font-size: 13px;\n width: 100%;\n}\n\n.wpstg-db-comparison-table tbody td {\n padding-top: 6px;\n}\n\n.wpstg-db-comparison-table tr > td:first-child,\n.wpstg-db-comparison-table tr > th:first-child {\n text-align: left;\n}\n\n.wpstg-css-tick {\n display: inline-block;\n transform: rotate(45deg);\n height: 12px;\n width: 6px;\n border-bottom: 3px solid #78b13f;\n border-right: 3px solid #78b13f;\n}\n\n.wpstg-css-cross {\n position: relative;\n top: -8px;\n left: -2px;\n width: 16px;\n height: 16px;\n}\n\n.wpstg-css-cross:before, .wpstg-css-cross:after {\n position: absolute;\n content: ' ';\n height: 17px;\n width: 3px;\n background-color: #E01E5A;\n}\n\n.wpstg-css-cross:before {\n transform: rotate(45deg);\n}\n\n.wpstg-css-cross:after {\n transform: rotate(-45deg);\n}\n\n.wpstg-selection-preview {\n font-size: 12px;\n margin-left: 20px;\n color: #3216;\n}\n\n.wpstg-selection-preview.danger {\n color: #E01E5A;\n}\n\n.wpstg--backup-automated {\n margin-bottom: -5px;\n}\n\n.wpstg--dismiss-schedule {\n cursor: pointer;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup {\n vertical-align: middle;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li {\n padding:2px;\n}\n\n.wpstg--modal--backup--manage--schedules--content table {\n margin: 0 auto;\n width: 100%;\n}\n\n.wpstg--modal--backup--manage--schedules--title {\n text-align: left;\n margin-bottom: 10px;\n margin-top: 0px;\n}\n\n.wpstg--modal--backup--import--upload--title {\n text-align: center;\n}\n\n#wpstg--modal--backup--manage--schedules--content {\n text-align: left;\n}\n\n#wpstg--modal--backup--manage--schedules--content thead {\n font-weight: bold;\n}\n\n#wpstg--modal--backup--manage--schedules--content .wpstg--tooltip.wpstg--dismiss-schedule {\n border-bottom: none;\n}\n\n.wpstg--tooltip.wpstg--dismiss-schedule img.wpstg--dashicons {\n filter: invert(18%) sepia(57%) saturate(6238%) hue-rotate(332deg) brightness(93%) contrast(88%);\n}\n\n#wpstg--modal--backup--manage--schedules--content td {\n padding-right: 25px;\n padding-top: 10px;\n}\n\n#wpstg--modal--backup--manage--schedules--content ul {\n margin-top: 0;\n margin-bottom: 0;\n}\n\n#wpstg--modal--backup--manage--schedules--content ul li:first-child .wpstg--tooltip {\n margin-left:0;\n}\n\n.wpstg-button:disabled {\n background-color: #dddddd;\n text-shadow: none;\n color: #b3b3b3;\n border: 1px solid #cfcfcf;\n cursor: not-allowed;\n}\n\n#wpstg-backup-runs-info {\n margin: 0px;\n margin-top: 20px;\n padding:0px;\n font-size:12px;\n}\n\n#wpstg-backup-runs-info li {\n margin: 0px;\n}\n\ndiv#wpstg-backup-locked {\n width: 100%;\n max-width: calc(800px - 30px);\n padding: 15px;\n background: white;\n margin-bottom: 10px;\n display: flex;\n align-items: center;\n}\n\n#wpstg-backup-locked .icon {\n display: inline-block;\n height: 20px;\n}\n\n#wpstg-backup-locked .icon img {\n animation: wpstg-loading-icon-anim 2s infinite;;\n}\n\n#wpstg-backup-locked .text {\n display: inline-block;\n margin-left: 15px;\n}\n\n#backup-schedule-current-time {\n font-size: 12px;\n}\n\n.wpstg-backup-scheduling-options label {\n margin-top:17px;\n}\n\n.wpstg-backup-scheduling-options .wpstg-storage-option {\n display: block;\n margin: .5em 0;\n font-size: 15px;\n}\n\n.wpstg-storage-option>span:not(.wpstg-storage-settings) {\n width: 150px;\n display: inline-block;\n}\n\n.wpstg-storages-postbox {\n display:none;\n padding: 16px 8px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: white;\n border:1px solid #cccccc;\n}\n\n.wpstg-storages-postbox a {\n padding: 8px;\n margin-right: 8px;\n text-decoration: none;\n}\n\n.wpstg-storage-postbox {\n padding: 4px 16px;\n background-color: white;\n border-bottom:1px solid #cccccc;\n border-left:1px solid #cccccc;\n border-right:1px solid #cccccc;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-active {\n background: #25a1f0;\n color: white;\n font-weight: 700;\n cursor: default;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-disabled {\n color: #999;\n cursor: not-allowed;\n}\n\n.wpstg-provider-revoke-form {\n display: inline;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.wpstg-provider-settings-form {\n margin-top: 10px;\n}\n\n.wpstg-provider-settings-form strong {\n display: block;\n margin: 8px 0;\n}\n\n.wpstg-provider-settings-form p {\n margin: 0;\n margin-bottom: 8px;\n}\n\n.wpstg-provider-settings-form fieldset {\n margin: 0;\n padding: 0;\n margin-bottom: 16px;\n}\n\n.wpstg-provider-settings-form fieldset p {\n margin: 0;\n padding: 0;\n font-size: 12px;\n}\n\n.wpstg-provider-settings-form fieldset label {\n display: block;\n margin-bottom: 2px;\n}\n\n.wpstg-provider-settings-form fieldset input {\n font-size: 12px;\n}\n\n.wpstg-provider-settings-form .wpstg-link-btn.wpstg-blue-primary {\n text-shadow: none;\n}\n\n.wpstg-btn-google {\n font-family: Roboto;\n display: inline-flex;\n align-items: center;\n border-width: 0;\n outline: none;\n border-radius: 2px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, .6);\n color: #555;\n transition: background-color .3s;\n padding: 8px;\n padding-right: 16px;\n height: 40px;\n line-height: 40px;\n font-size: 14px;\n box-sizing: border-box;\n text-decoration: none;\n font-weight: bold;\n margin-right: 10px;\n}\n\n.wpstg-btn-google img {\n width: 18px;\n height: 18px;\n margin-right: 12px;\n margin-left:5px;\n}\n\n#wpstg-custom-google-credentials {\n margin-top: 20px;\n}\n\n.wpstg-fieldset .wpstg-with-icon {\n display: inline-flex;\n align-items: center; \n}\n\n.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon {\n margin-left: 8px;\n}\n\n.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon img {\n width: 16px;\n height: 16px;\n}\n\n#wpstg-btn-provider-revoke {\n border-radius: 2px;\n}\n\n#wpstg--js--translations {\n text-decoration: underline;\n}\n"]}
|
1 |
+
{"version":3,"sources":["wpstg-admin.css"],"names":[],"mappings":"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","file":"wpstg-admin.css","sourcesContent":["/**\n * WPSTG Admin CSS\n *\n * @package WPSTG\n * @subpackage Admin CSS\n * @copyright Copyright (c) 2021, René Hermenau\n * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License\n*/\n\n/* Font Faces */\n\n/* roboto-regular - latin */\n@font-face {\nfont-family: 'Roboto';\nfont-style: normal;\nfont-weight: 400;\nsrc: url('../../fonts/roboto-v29-latin-regular.eot'); /* IE9 Compat Modes */\nsrc: local(''),\n url('../../fonts/roboto-v29-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n url('../../fonts/roboto-v29-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */\n url('../../fonts/roboto-v29-latin-regular.woff') format('woff'), /* Modern Browsers */\n url('../../fonts/roboto-v29-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */\n url('../../fonts/roboto-v29-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */\n}\n\n/* Colors */\n\n.wpstg--violet {\n color: #9d37ae;\n}\n\n.wpstg-border--violet {\n border: 1px solid #9d37ae;\n}\n\n.wpstg--red {\n color: #E01E5A;\n}\n\n.wpstg-cta--red {\n color: #fe008f;\n}\n\n.wpstg--blue {\n color: #24a1f0;\n}\n\n.wpstg--darkblue {\n color: #0e86d9;\n}\n\n.wpstg--green {\n color: #83c11f;\n}\n\n.wpstg--grey {\n color: #3e3e3e;\n}\n\n.wpstg--darkgrey {\n color: #1b1b1b;\n}\n\n.wpstg--filter--svg {\n filter: invert(24%) sepia(11%) saturate(558%) hue-rotate(169deg) brightness(97%) contrast(91%);\n}\n\n/* CSS for Tabs */\n\nbody.wp-staging-pro_page_wpstg_backup,\nbody.toplevel_page_wpstg_clone,\nbody.wp-staging-pro_page_wpstg-settings,\nbody.wp-staging-pro_page_wpstg-tools,\nbody.wp-staging-pro_page_wpstg-license {\n background-color: #f3f5f7;\n}\n\n#wpstg-tab-container ul {\n list-style: none;\n margin: 0;\n padding: 0;\n background: #f1f1f1;\n float: left;\n}\n\n#wpstg-tab-container ul li:first-child.selected-tab {\n border-top: none;\n}\n\n#wpstg-tab-container ul li a.selected-tab {\n font-weight: bold;\n text-decoration: none;\n}\n\n#wpstg-tab-container .row {\n padding-top: 10px;\n padding-bottom: 12px;\n}\n\n.wpstg-tabs-container .nav-tab-wrapper {\n padding: 0;\n}\n\n#wpstg-tab-container .row label strong,\n#wpstg-tab-container .row strong {\n font-weight: bold;\n}\n\n.wpstg-tabs a {\n padding: 5px;\n}\n\n#wpstg-tab-container > ul > li.wpstg-tabs.active {\n background-color: white;\n}\n\n#wpstg_settingsgeneral_header .row:nth-child(3),\n#wpstg_settingsgeneral_header .row:nth-child(4) {\n display: none;\n}\n\n#wpstg-tab-container .wpstg-settings-panel {\n padding: 0 20px 20px 20px;\n overflow: auto;\n}\n\n#wpstg-tab-container .wpstg-form-table th {\n vertical-align: top;\n text-align: left;\n padding: 20px 10px 20px 0;\n line-height: 1.3;\n font-weight: bold;\n font-size: 14px;\n color: #484848;\n width: 30%;\n}\n\n#wpstg-tab-container .wpstg-form-table tr {\n border-bottom: 1px solid #E7E7E7;\n}\n\n#wpstg-tab-container span.description {\n display: block;\n font-weight: 400;\n font-style: normal;\n font-size: 13px;\n margin-top: 7px;\n color: #484848;\n}\n\n#wpstg-tab-container .col-title {\n color: #484848;\n}\n\n@media only screen and (max-width: 680px) {\n #wpstg-tab-container ul {\n float: none;\n }\n\n #wpstg-tab-container .wpstg-form-table tr > th {\n width: 100%;\n }\n\n #wpstg-tab-container span.description {\n font-size: 14px;\n }\n\n #wpstg-tab-container .wpstg-form-table tr > th,\n #wpstg-tab-container .wpstg-form-table tr > td {\n padding: 10px;\n }\n}\n\n#wpstg-tab-container ul li {\n margin-bottom: 0;\n}\n\n#wpstg-tab-container ul li a {\n display: block;\n padding: 10px 4px 10px 14px;\n border-width: 1px 0;\n border-style: solid;\n border-top-color: white;\n border-bottom-color: #e7e7e7;\n text-decoration: none;\n color: #0097DF;\n font-weight: bold;\n}\n\n#wpstg-tab-container ul li a:hover {\n background-color: #e5e5e5;\n color: #777777;\n}\n\n.wpstg-logo {\n display: block;\n font-size: 16px;\n padding-top: 20px;\n width: 220px;\n float: left;\n}\n\n.wpstg-logo img {\n max-width: 212px;\n}\n\n.wpstg-version {\n display: block;\n padding-top: 40px;\n color: #9b9b9b;\n}\n\n.wpstg_admin .nav-tab {\n color: #3C3C3C;\n}\n\n#wpstg-tab-container table tbody tr:nth-child(1) > th > div {\n font-size: 20px;\n}\n\n/* Cloning workflow */\n\n#wpstg-clonepage-wrapper {\n margin-bottom: 20px;\n width: 98%;\n}\n\n@media screen and (min-width: 1090px) {\n #wpstg-clonepage-wrapper {\n float: left;\n margin-bottom: 20px;\n }\n}\n\n#wpstg-steps {\n margin-top: 0px;\n margin-left: 20px;\n}\n\n#wpstg-steps li {\n color: #444;\n line-height: 20px;\n padding-right: 10px;\n float: left;\n}\n\n.wpstg-step-num {\n border: 1px solid #3e3e3e;\n border-radius: 3px;\n display: inline-block;\n width: 20px;\n height: 20px;\n text-align: center;\n margin-right: 5px;\n}\n\n.wpstg-current-step {\n font-weight: bold;\n}\n\n.wpstg-current-step .wpstg-step-num {\n background: #3e3e3e;\n color: #eee;\n}\n\n.wpstg-box {\n margin: 10px 0;\n padding: 10px;\n position: relative;\n overflow: hidden;\n transition: border-color .2s ease-in-out;\n}\n\n.wpstg-clone {\n margin-bottom: 10px;\n padding: 16px;\n position: relative;\n transition: border-color .2s ease-in-out;\n background-color: #ffffff;\n color: #3e3e3e;\n border-radius: 3px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .1);\n}\n\n.wpstg-clone.active {\n border-color: #1d94cf;\n}\n\n.wpstg-clone-header {\n display: flex;\n align-items: center;\n}\n\n.wpstg-clone-title {\n display: inline-block;\n margin-right: 8px;\n font-size: 15px;\n max-width: 300px;\n text-decoration: none;\n font-weight: bold;\n color: #3e3e3e;\n}\n\n.wpstg-clone-title:hover {\n color: #111111;\n}\n\n.wpstg-clone-labels {\n display: inline-block;\n}\n\n\n.wpstg-clone-labels .wpstg-clone-label {\n display: inline-block;\n padding: 1px 4px;\n margin-right: 4px;\n font-size: 11px;\n border-radius: 3px;\n background: #8bc34a;\n color: #fff;\n}\n\n.wpstg-clone-actions {\n margin-left: auto;\n display: flex;\n margin-top: 5px;\n}\n\n.wpstg-dropdown {\n position: relative;\n}\n\n.wpstg-clone-actions .wpstg-dropdown-toggler {\n text-decoration: none;\n background: #25a1f0;\n padding: 6px 10px;\n border-radius: 2px;\n font-size: 14px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .2);\n color: #ffffff;\n}\n\n.wpstg-clone-actions .wpstg-dropdown-toggler:hover {\n background: #002648;\n color: white;\n}\n\n.wpstg-dropdown {\n position: relative;\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu {\n background: #fff;\n display: none;\n flex-direction: column;\n position: absolute;\n right: 0;\n top: calc(100% + 4px);\n padding: 8px;\n border-radius: 2px;\n width: 100px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .2);\n z-index: 1000;\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu.wpstg-menu-dropup {\n top: auto;\n bottom: 100%;\n transform: translate3d(0px, -3px, 0px);\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu.shown {\n display: flex;\n}\n\n.wpstg-clone-action,\n.wpstg-dropdown-action {\n color: #3e3e3e;\n padding: 6px 8px;\n border-radius: 3px;\n text-decoration: none;\n position: relative;\n transition: color .2s ease-in-out;\n border-bottom: 1px solid #f3f3f3;\n}\n\n.wpstg-clone-action:hover,\n.wpstg-dropdown-action:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.wpstg-dropdown-action {\n color: #3e3e3e;\n background: transparent;\n border: 0 solid black;\n outline: none;\n box-shadow: none;\n}\n\n.wpstg-remove-clone:hover {\n color: #E01E5A;\n}\n\n.wpstg-clone-action:last-child {\n border: none;\n}\n\n.wpstg-clone:hover .wpstg-clone-action {\n display: inline-block;\n}\n\n#wpstg-show-error-details:focus,\n#wpstg-workflow .wpstg-clone-action {\n outline: none;\n box-shadow: none;\n}\n\n.wpstg-link-btn {\n background: #45a1c9;\n color: #fff;\n display: inline-block;\n padding: 5px 10px;\n text-decoration: none;\n vertical-align: baseline;\n transition: all .2s ease-in-out;\n}\n\n.wpstg-link-btn:hover,\n.wpstg-link-btn:focus {\n color: #fff;\n outline: none;\n box-shadow: none;\n}\n\n#wpstg-workflow .wpstg-link-btn:active {\n vertical-align: baseline;\n}\n\n.wpstg-link-btn[disabled] {\n background: #777 !important;\n border-color: #555 !important;\n pointer-events: none;\n}\n\n#wpstg-cancel-cloning,\n#wpstg-cancel-cloning-update {\n margin-top: 5px;\n}\n\n#wpstg-cancel-cloning.success,\n#wpstg-cancel-cloning.success {\n background: #64dd58;\n border-color: #54bd4a;\n}\n\n#wpstg-error-wrapper,\n#wpstg-error-details {\n display: none;\n padding-top: 10px;\n font-size: 13px;\n clear: both;\n}\n\n#wpstg-show-error-details {\n display: inline-block;\n margin-left: 5px;\n color: #555;\n text-decoration: none;\n transition: color .2s ease-in-out;\n}\n\n#wpstg-show-error-details:hover {\n color: #1d94cf;\n}\n\n#wpstg-error-details {\n border-left: 5px solid #E01E5A;\n padding: 10px;\n width: 500px;\n}\n\n#wpstg-try-again {\n display: none;\n}\n\n#wpstg-home-link {\n float: right;\n}\n\n.wpstg-loader {\n content: url('../../img/loading.gif');\n display: none;\n}\n\n.wpstg-loader.wpstg-finished {\n display: block;\n content: \"Finished\";\n background-color: #00c89a;\n color: white;\n padding: 2px 10px;\n margin-top: 0;\n border-radius: 3px;\n}\n\n#wpstg-workflow {\n max-width: 800px;\n position: relative;\n clear: both;\n padding-top: 20px;\n float: left;\n min-width: 500px;\n min-height: 380px;\n padding-right: 20px;\n padding-bottom: 20px;\n}\n\n#wpstg-sidebar {\n float: left;\n max-width: 400px;\n display: block;\n margin-left: 10px;\n}\n\n#wpstg-workflow.loading::after,\n#wpstg-removing-clone.loading::after {\n background: rgba(255, 255, 255, .7);\n content: 'Loading... may take a while for huge websites';\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n padding-top: 100px;\n text-align: center;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 99;\n}\n\n#wpstg-removing-clone.loading::after {\n content: 'REMOVING' !important;\n}\n\n#wpstg-existing-clones,\n#wpstg-removing-clone {\n position: relative;\n}\n\n#wpstg-existing-clones h3 {\n color: #3e3e3e;\n}\n\n#wpstg-removing-clone .wpstg-tab-section {\n display: block;\n}\n\n.wpstg-progress-bar {\n max-width: 900px;\n height: 27px;\n padding: 0;\n background-color: #d6d8d7;\n}\n\n.wpstg-progress {\n float: left;\n background: #3fa5ee;\n width: 0;\n height: 100%;\n transition: width .6s ease;\n color: white;\n line-height: 25px;\n text-align: center;\n overflow: hidden;\n}\n\n.wpstg-progress-files {\n background: #16b4f0;\n width: 0;\n height: 100%;\n transition: width .6s ease;\n color: white;\n line-height: 25px;\n text-align: center;\n}\n\n#wpstg-new-clone-id.wpstg-error-input,\n#wpstg-clone-path.wpstg-error-input {\n border: 1px solid #E01E5A;\n box-shadow: 0 0 2px rgba(255, 66, 53, .8);\n}\n\n#wpstg-new-clone-id {\n width: 450px;\n max-width: 100%;\n margin-left: 15px;\n}\n\n#wpstg-new-clone {\n background: #25a1f0;\n border-color: #2188c9;\n}\n\n#wpstg-new-clone:hover {\n background: #259be6;\n border-color: #2188c9;\n}\n\n#wpstg-clone-path {\n margin-left: 10px;\n width: 350px;\n}\n\n.wpstg-error-msg {\n color: #E01E5A;\n}\n\n#wpstg-clone-id-error {\n display: block;\n background-color: #f0f8ff;\n padding: 10px;\n margin: 20px;\n}\n\n#wpstg-start-cloning + .wpstg-error-msg {\n display: block;\n margin-top: 5px;\n}\n\n.wpstg-size-info {\n color: #999;\n font-weight: normal;\n position: relative;\n left: 2px;\n}\n\n.wpstg-db-table .wpstg-size-info {\n top: 2px;\n}\n\n.wpstg-db-table:hover {\n background-color: #f0f8ff;\n}\n\n#wpstg-workflow #wpstg-start-cloning {\n margin-left: 5px;\n vertical-align: baseline;\n}\n\n\n/* Tabs */\n\n.wpstg-tabs-wrapper {\n max-width: 640px;\n margin: 10px 0;\n}\n\n#wpstg-path-wrapper {\n border-bottom: 2px dashed #ccc;\n padding-bottom: 10px;\n margin-bottom: 10px;\n}\n\n.wpstg-tab-section {\n border-bottom: 1px solid #ddd;\n border-right: none;\n border-left: none;\n display: none;\n width: calc(100% - 72px);\n padding: 0px 36px;\n}\n\n.wpstg-tab-section::after {\n display: block;\n content: '';\n clear: both;\n}\n\n.wpstg-tab-header {\n border-bottom: 1px solid #ddd;\n border-right: none;\n border-left: none;\n color: #444;\n font-size: 16px;\n font-weight: bold;\n display: block;\n padding: 10px;;\n text-decoration: none;\n}\n\n.wpstg-tab-triangle {\n display: inline-block;\n margin-right: 12px;\n animation: transform 0.5s;\n width: 0;\n height: 0;\n margin-top: -3px;\n vertical-align: middle;\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n border-left: 10px solid;\n transition: transform 0.2s;\n cursor: pointer;\n}\n\n.wpstg-tab-triangle.wpstg-no-icon {\n margin-right: 2px;\n width: auto;\n height: auto;\n vertical-align: auto;\n border-top: 0px solid;\n border-bottom: 0px solid;\n border-left: 0px solid;\n}\n\n.wpstg-tab-triangle.wpstg-rotate-90 {\n transform: rotate(90deg);\n}\n\n.wpstg-tab-header:focus {\n color: #444;\n outline: none;\n box-shadow: none;\n}\n\n#wpstg-large-files {\n display: none;\n border: 1px dashed #ccc;\n padding: 10px 10px 10px;\n margin-top: 20px;\n position: relative;\n font-size: 12px;\n}\n\n#wpstg-large-files h3 {\n background: #fff;\n margin: 0;\n padding: 0 5px;\n position: absolute;\n top: -10px;\n left: 5px;\n}\n\n.wpstg-subdir {\n display: none;\n margin-left: 20px;\n}\n\n.wpstg-subdir.wpstg-push {\n display: block;\n margin-left: 20px;\n}\n\n.wpstg-dir a.disabled {\n color: #888;\n cursor: default;\n text-decoration: none;\n}\n\n.wpstg-check-subdirs {\n display: inline-block;\n margin-left: 10px;\n}\n\n.wpstg-notice-alert {\n display: block;\n background-color: #E01E5A;\n padding: 20px;\n max-width: 600px;\n margin-top: 10px;\n color: white;\n}\n\n.wpstg-notice--white {\n display: block;\n background-color: #ffffff;\n padding: 20px;\n max-width: 600px;\n margin-top: 10px;\n}\n\n.wpstg-notice-alert a {\n color: white;\n}\n\n.wpstg-notice-alert h3 {\n color: white;\n}\n\n.wpstg-header {\n font-weight: 400;\n line-height: 1.6em;\n font-size: 19px;\n /*\n border-bottom: 1px solid #DFDFDF;\n */\n clear: both;\n padding-top: 10px;\n}\n\n#wpstg-clone-label {\n font-size: 14px;\n font-weight: bold;\n}\n\n.wpstg-log-details {\n height: 300px;\n overflow: scroll;\n max-width: 650px;\n font-family: monospace;\n font-size: 12px;\n line-height: 15px;\n border: 1px solid #FFF;\n background-color: black;\n color: #c0c0c0;\n padding: 3px;\n white-space: nowrap;\n margin-top: 15px;\n}\n\n#wpstg-finished-result {\n display: none;\n}\n\n#wpstg-remove-cloning {\n background: #ff3428;\n border-color: #e72f24;\n margin-top: 5px;\n}\n\n#wpstg-success-notice {\n padding: 10px;\n background-color: white;\n max-width: 900px;\n border: 1px solid #ccc;\n margin-top: 20px;\n}\n\n.wpstg_beta_notice {\n margin-bottom: 20px;\n}\n\n.wpstg-sysinfo {\n width: 700px;\n height: 700px;\n}\n\n.wpstg-form-table .col-title label {\n font-weight: 600;\n}\n\n.wpstg-form-table td:first-child {\n width: 30%;\n padding-right: 20px;\n}\n\n.wpstg-share-button-container {\n margin: 5px 0;\n}\n\n.wpstg-share-button-container p {\n margin: 0 0 10px 0;\n}\n\n.wpstg-share-button {\n display: inline-block;\n}\n\n.wpstg-share-button a {\n text-decoration: none;\n}\n\n.wpstg-share-button .wpstg-share {\n font-family: sans-serif;\n font-weight: bold;\n text-decoration: none;\n text-align: center;\n}\n\n.wpstg-share-button .wpstg-share {\n -webkit-border-radius: 2px;\n -moz-border-radius: 2px;\n border-radius: 2px;\n color: #FFF;\n display: inline;\n font-size: 12px;\n padding: 4px 8px;\n}\n\n.wpstg-share-button-twitter .wpstg-share {\n background-color: #00ABF0;\n}\n\n.wpstg-share-button-facebook .wpstg-share {\n background-color: #3b5998;\n}\n\n.wpstg-share-button-googleplus .wpstg-share {\n background-color: #F53424;\n}\n\n.wpstg-share-button-twitter .share:active,\n.wpstg-share-button-facebook .share:active,\n.wpstg-share-button-googleplus .share:active {\n background-color: #353535;\n}\n\n#wpstg-check-space {\n margin-left: 8px;\n}\n\n#wpstg-welcome li {\n font-size: 18px;\n line-height: 29px;\n position: relative;\n padding-left: 23px;\n list-style: none !important;\n}\n\n#wpstg-welcome {\n margin-top: 20px;\n margin-right: 20px;\n background-color: white;\n}\n\n.wpstg-heading-pro {\n font-weight: bold;\n}\n\n.wpstg-h2 {\n margin-top: 0;\n margin-bottom: 1.2rem;\n font-size: 30px;\n line-height: 2.5rem;\n}\n\n#wpstg-welcome li:before {\n width: 1em;\n height: 100%;\n background: url(data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%2377B227%22%20d%3D%22M1671%20566q0%2040%2D28%2068l%2D724%20724%2D136%20136q%2D28%2028%2D68%2028t%2D68%2D28l%2D136%2D136%2D362%2D362q%2D28%2D28%2D28%2D68t28%2D68l136%2D136q28%2D28%2068%2D28t68%2028l294%20295%20656%2D657q28%2D28%2068%2D28t68%2028l136%20136q28%2028%2028%2068z%22%2F%3E%3C%2Fsvg%3E) left .4em no-repeat;\n background-size: contain;\n content: \"\";\n position: absolute;\n top: -2px;\n left: 0;\n color: #77b227;\n}\n\n.wpstg-h1 {\n margin-bottom: 1.35rem;\n font-size: 2.5em;\n line-height: 3.68rem;\n letter-spacing: normal;\n}\n\n.wpstg--swal2-content {\n color: #3e3e3e;\n}\n\n.wpstg--swal2-content h1 {\n color: #444;\n}\n\n#wpstg-welcome h2 {\n margin: 0 0 15px;\n}\n\n#wpstg-welcome .wpstg-footer {\n clear: both;\n margin-top: 20px;\n font-style: italic;\n}\n\n#wpstg-footer {\n clear: both;\n margin-top: 20px;\n margin-right: 10px;\n padding-top: 50px;\n}\n\n#wpstg-footer a {\n text-decoration: none;\n}\n\n#wpstg-footer li {\n margin-bottom: 2px;\n list-style: circle;\n}\n\n#wpstg-footer ul {\n margin-left: 15px;\n margin-top: 0px;\n}\n\n.wpstg-footer--title {\n margin-left: 15px;\n}\n\n.wpstg-staging-info {\n margin-top: 8px;\n color: #3e3e3e;\n font-size: 12px;\n}\n\n.wpstg-staging-info a {\n color: #3e3e3e;\n}\n\n.wpstg-staging-info li {\n margin-bottom: 2px;\n}\n\n.wpstg-bold {\n font-weight: 600;\n}\n\n#wpstg-processing-status {\n margin-top: 5px;\n font-size: 13px;\n font-weight: 400;\n float: left;\n}\n\n#wpstg-processing-timer {\n margin-top: 5px;\n font-size: 13px;\n font-weight: 400;\n float: right;\n}\n\n#wpstg-report-issue-button {\n margin-left: 30px;\n border: 1px solid #E01E5A;\n color: #E01E5A;\n background-color: white;\n}\n\n#wpstg-report-issue-button:hover {\n background-color: #dc2b62;\n color: #fff;\n}\n\n.wpstg-blue-primary {\n display: inline-block;\n text-decoration: none;\n font-size: 13px;\n height: 28px;\n margin: 0;\n /*\n padding: 0 10px 1px;\n */\n cursor: pointer;\n border-width: 1px;\n border-style: solid;\n -webkit-appearance: none;\n border-radius: 3px;\n white-space: nowrap;\n box-sizing: border-box;\n background: #25a1f0;\n border-color: #2188c9;\n color: #fff;\n /*\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n */\n}\n\n.wpstg-blue-primary:hover {\n background: #127fc6;\n}\n\na.wpstg-blue-primary {\n padding: 5px 10px;\n height: auto;\n}\n\n.wpstg-blue-primary:hover {\n background-color: #259be6;\n}\n\n.wpstg-report-issue-form {\n position: absolute;\n z-index: 999;\n width: 300px;\n background-color: #fff;\n padding: 15px 15px 10px;\n border: 1px solid #e8e8e8;\n border-radius: 3px;\n box-shadow: 0 1px 0 0 #fff inset;\n display: none;\n right: 0;\n top: 35px;\n}\n\n@media (max-width: 600px) {\n .wpstg-report-issue-form {\n position: relative;\n }\n}\n\n.wpstg-report-show {\n display: block;\n}\n\n.wpstg-field input[type=text],\n.wpstg-field textarea {\n width: 100%;\n font-weight: 400;\n line-height: 1.4;\n margin-bottom: 4px;\n}\n\n.wpstg-report-email,\n.wpstg-report-hosting-provider {\n width: 100%;\n font-weight: 400;\n font-size: .8rem;\n height: 2.3rem;\n line-height: 2.3rem;\n border-radius: 3px;\n margin-bottom: 4px;\n padding: 0 10px;\n}\n\n.wpstg-report-description {\n border-radius: 3px;\n font-size: .8rem;\n padding: 6px 10px;\n resize: none;\n}\n\n.wpstg-report-privacy-policy {\n font-size: 12px;\n margin-bottom: 15px;\n}\n\n#wpstg-report-cancel {\n float: right;\n margin-right: 5px;\n font-weight: bold;\n}\n\n#wpstg-success-button {\n font-weight: bold;\n}\n\n.wpstg-message {\n box-sizing: border-box;\n -moz-box-sizing: border-box;\n background-color: #f5e0de;\n border-radius: 3px;\n color: rgba(0, 0, 0, .6);\n height: auto;\n margin: 10px 0;\n min-height: 18px;\n padding: 6px 10px;\n position: relative;\n}\n\n.wpstg-message.wpstg-error-message {\n background-color: #f5e0de;\n color: #b65147;\n font-size: 12px;\n}\n\n.wpstg-message.wpstg-success-message {\n background-color: #d7f8e0;\n color: #515151;\n}\n\n.wpstg-message p {\n margin: 3px 0;\n font-size: 13px;\n}\n\n.wpstg-warning {\n display: block;\n padding: 10px;\n background-color: #ffb804;\n color: #ffffff;\n margin: 10px 10px 10px 0;\n}\n\n.wpstg-warning a {\n color: #ffffff;\n font-weight: bold;\n text-decoration: underline;\n}\n\n.wpstg-error {\n display: block;\n padding: 10px !important;\n background-color: #E01E5A !important;\n color: #ffffff;\n margin: 10px 10px 10px 0 !important;\n border-color: transparent !important;\n border-left-color: transparent !important;\n box-shadow: none !important;\n}\n\n.wpstg-error a {\n color: #ffffff;\n font-weight: bold;\n text-decoration: underline;\n}\n\n#wpstg-resume-cloning {\n display: none;\n}\n\n#wpstg-external-db th {\n text-align: left;\n width: 120px;\n}\n\n#wpstg-db-connect {\n font-weight: normal;\n}\n\n#wpstg-db-status {\n display: block;\n margin-top: 5px;\n padding: 5px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n text-decoration: none;\n text-align: center;\n}\n\n.wpstg-text-field > #wpstg-db-status {\n margin-top: 8px;\n margin-left: 150px;\n min-width: 300px;\n}\n\n.wpstg-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n\n.wpstg-failed {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n\n#wpstg_select_tables_cloning {\n height: 600px;\n font-size: 13px;\n}\n\n#wpstg_select_tables_pushing {\n height: 400px;\n font-size: 13px;\n}\n\n#wpstg-update-notify {\n background-color: #E01E5A;\n font-size: 14px;\n color: #ffffff;\n line-height: normal;\n padding: 10px;\n}\n\n#wpstg-update-notify a {\n color: #ffffff;\n font-weight: bold;\n}\n\n.wpstg-pointer {\n cursor: pointer;\n}\n\n.wpstg--tab--header {\n background-color: white;\n /* margin-bottom: 10px; */\n /* padding: 16px; */\n position: relative;\n transition: border-color .2s ease-in-out;\n background-color: #ffffff;\n color: #3e3e3e;\n border-radius: 2px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .02);\n}\n\n.wpstg--tab--header ul {\n display: flex;\n}\n\n.wpstg--tab--header ul li {\n margin-right: 1em;\n margin-bottom: 0px;\n}\n\n.wpstg--tab--header ul li:last-child {\n margin-right: 0;\n}\n\n.wpstg--tab--header a {\n min-width: 150px;\n text-align: center;\n cursor: pointer;\n display: inline-block;\n padding: 1em 1.25em;\n padding-bottom: 9px;\n color: #c4c4c4;\n font-size: 18px;\n /*\n border: solid 1px;\n */\n}\n\n.wpstg--tab--header a.wpstg--tab--active {\n border-bottom: .4em solid #25A1F0;\n color: #25A1F0;\n}\n\n.wpstg--tab--header a:hover {\n background-color: #fefefe;\n border-bottom: 0.4em solid #25A1F0;\n color: #25A1F0;\n}\n\n.wpstg--tab--content {\n display: none;\n}\n\n.wpstg--tab--active {\n display: block;\n}\n\n.wpstg--text--strong,\n.wpstg--text--strong * {\n font-weight: bold !important;\n}\n\n.wpstg--text--danger {\n color: #a94442;\n}\n\n.wpstg--tooltip {\n position: relative;\n display: inline-block;\n margin-left: 5px;\n}\n\n.wpstg--tooltip.wpstg--tooltip-normal {\n margin-left: 0;\n border-bottom: 0;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext {\n visibility: hidden;\n width: 300px;\n background-color: #ffffff;\n color: #505050;\n text-align: left;\n padding: 12px;\n border-radius: 3px;\n position: absolute;\n z-index: 1;\n -webkit-box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n -moz-box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n font-weight: normal;\n}\n\n.wpstg--tooltiptext-backups {\n width: 120px;\n top: 100%;\n left: -150%;\n margin-left: -56px;\n margin-top: 4px;\n}\n\n.wpstg--tooltip.wpstg--exclude-rules--tooltip {\n border-bottom: 0px solid transparent;\n}\n\n.wpstg--tooltip.wpstg--exclude-rules--tooltip > .wpstg--tooltiptext {\n margin-top: 0px;\n margin-left: -150px;\n}\n\n/**\nTooltip top arrow\n */\n\n.wpstg--tooltip .wpstg--tooltiptext-backups::after {\n content: \" \";\n position: absolute;\n bottom: 100%;\n /* At the top of the tooltip */\n left: 50%;\n margin-left: 25px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent white transparent;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow {\n margin-top: 6px;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow::after {\n content: \" \";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -18px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent white transparent;\n}\n\n.wpstg--snaphot-restore-table tr {\n line-height: 12px;\n}\n\n.wpstg-float-left {\n float: left;\n}\n\n.wpstg-beta-notice {\n background-color: #b0e8b0;\n border-radius: 3px;\n padding: 7px;\n margin-bottom: 20px;\n}\n\n#wpstg-backup-name {\n font-size: 1.875em;\n font-weight: 600;\n}\n\n#wpstg_select_tables_cloning option:checked,\n#wpstg_select_tables_pushing option:checked {\n /* Cannot use background color here because Chrome and Firefox ignore it even if set to !important */\n -webkit-appearance: menulist-button;\n background-image: linear-gradient(0deg, #1e90ff 0%, #1e90ff 100%);\n}\n\n.wpstg--btn--cancel {\n background: #ff3428;\n border-color: #e72f24;\n color: #fff;\n height: auto;\n line-height: normal;\n font-size: 16px;\n padding: .5em;\n margin-bottom: 1.5em;\n}\n\n.wpstg--btn--cancel:hover {\n background: #ff3428;\n border-color: #e72f24;\n}\n\n.wpstg--process--content > .wpstg--swal2-html-container {\n padding: 4em 2em !important;\n}\n\n.wpstg--modal--process--logs,\n.wpstg--modal--error--logs {\n background: #ffffff;\n border: 1px solid #a8a8a8;\n border-radius: 3px;\n height: 300px;\n margin-top: 1em;\n display: none;\n padding-top: 10px;\n padding-left: 10px;\n overflow: auto;\n text-align: justify;\n}\n\n.wpstg--modal--error--logs {\n height: auto;\n max-height: 300px;\n}\n\n.wpstg--modal--process--logs p {\n font-size: 12px;\n white-space: nowrap;\n}\n\n.wpstg--modal--process--logs p.wpstg--modal--process--msg--info {\n color: #222222;\n}\n\n.wpstg--modal--process--logs p.wpstg--modal--process--msg--debug {\n color: #757575;\n}\n\n.wpstg--modal--process--title {\n color: #565656;\n margin: .25em 0;\n}\n\n.wpstg--modal--process--subtitle {\n margin: .5em 0;\n color: #565656;\n}\n\n.wpstg--modal--error--logs > p {\n text-align: left;\n font-size: 14px;\n color: #222222;\n}\n\n.wpstg--modal--process--logs p,\n.wpstg--modal--error--logs p {\n margin: 0px;\n margin-bottom: 2px;\n}\n\n.wpstg--modal--process--msg--error {\n color: #E01E5A;\n}\n\n.wpstg--modal--process--msg--critical {\n color: #E01E5A;\n}\n\n.wpstg--modal--process--msg--warning {\n color: darkorange;\n}\n\n.wpstg--modal--process--msg-found {\n font-size: 16px;\n color: #E01E5A;\n font-weight: bold;\n}\n\n.wpstg--modal--delete {\n text-align: left;\n margin-top: 8px;\n color: #565656;\n}\n\n.wpstg-swal-popup .wpstg--swal2-cancel.wpstg--btn--cancel {\n margin-bottom: 0;\n text-shadow: none !important;\n}\n\n.wpstg-swal-popup .wpstg-loader {\n display: inline-block !important;\n}\n\n.wpstg--modal--process--generic-problem {\n display: none;\n border-left: 5px solid #E01E5A;\n margin: .5em 0;\n}\n\n.wpstg--modal--process--logs--tail {\n font-size: 16px;\n color: #565656;\n background: none;\n border: none;\n cursor: pointer;\n text-decoration: underline;\n}\n\n.wpstg--modal--backup--import--upload--title {\n color: #3e3e3e;\n}\n\n.wpstg--modal--backup--import--configure,\n.wpstg--modal--backup--import--upload--status,\n.wpstg--modal--backup--import--upload--container input[type=\"file\"] {\n display: none;\n}\n\n#wpstg--backups--import--file-list {\n font-size: 14px;\n font-weight: bold;\n}\n\n#wpstg--backups--import--file-list-empty {\n color: #E01E5A;\n}\n\n.wpstg--modal--backup--import--filesystem label {\n font-size: 14px;\n}\n\n.wpstg--modal--backup--import--filesystem button {\n margin-bottom: 20px;\n}\n\n.wpstg--modal--backup--import--upload {\n position: relative;\n min-height: 30px;\n}\n\n.wpstg--modal--backup--import--upload {\n color: #505050;\n}\n\n.wpstg--modal--backup--import--upload--container {\n position: relative;\n border-radius: 10px;\n margin: .5em;\n padding: 1em .5em;\n border: 3.5px dashed #dedede;\n transition: background-color 0.3s ease, color 0.3s ease;\n background-color: #f4fbff;\n min-height: 130px;\n}\n\n.wpstg--modal--backup--import--upload--container.wpstg--has-dragover span.wpstg--drop {\n display: inline-flex;\n}\n\n.wpstg--modal--backup--import--upload--container input[type='file'] {\n display: none;\n}\n\n.wpstg--modal--backup--import--upload--container img {\n margin-top: 10px;\n width: 4em;\n align-self: center;\n border: none;\n}\n\n.wpstg--modal--backup--import--upload--container span {\n margin-top: 1em;\n}\n\n.wpstg--backup--import--options > button {\n margin-top: 1em;\n padding: 1em;\n align-self: center;\n width: 185px;\n height: auto;\n line-height: normal;\n}\n\n.wpstg--backup--import--options {\n position: relative;\n display: flex;\n justify-content: center;\n}\n\n.wpstg--backup--import--options ul {\n display: none;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul {\n padding: 0;\n margin: 54px 0 0 0;\n display: block;\n position: absolute;\n width: 185px;\n background: #25a1f0;\n box-sizing: border-box;\n border-radius: 0 0 3px 3px;\n border-width: 1px;\n border-color: #2188c9;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li {\n border-bottom: .1em solid #25a1f0;\n margin: 0;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li:hover {\n background-color: #25a1f0;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li:last-child {\n border-bottom: none;\n}\n\n.wpstg--backup--import--options ul li button {\n cursor: pointer;\n background: none;\n border: none;\n margin: 0;\n width: 100%;\n color: white;\n height: 40px;\n line-height: 40px;\n}\n\n.wpstg--backup--import--options ul li button:hover {\n background-color: #259be6;\n}\n\n.wpstg--modal--backup--import--search-replace--info {\n margin: 1em 0;\n display: flex;\n flex-direction: row;\n}\n\n.wpstg--modal--backup--import--info p {\n text-align: left;\n margin: 0;\n}\n\n.wpstg--modal--backup--import--search-replace--wrapper button {\n align-self: center;\n}\n\n.wpstg--import--advanced-options--button {\n border: 0;\n border-radius: 3px;\n font-size: 18px;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n cursor: pointer;\n}\n\n.wpstg--modal--backup--import--search-replace--new {\n color: white;\n background-color: #25a1f0;\n}\n\n.wpstg--modal--backup--import--search-replace--remove {\n color: white;\n background-color: #25a1f0;\n width: 22px;\n height: 22px;\n margin-left: 5px;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group:first-child button {\n display: none;\n}\n\n.wpstg--modal--backup--import--search-replace--input--container {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group {\n width: 100%;\n border-bottom: 6px solid #f1f1f1;\n margin-bottom: 10px;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group input {\n min-width: 250px;\n width: calc(50% - 4px - 11px - 5px); /* -4px is half of the padding; -11px is half of the button; -5 is the margin left of the button */\n display: inline-block;\n line-height: 10px;\n border: 1px solid #dedede;\n border-radius: 3px;\n color: #666;\n padding: 8px;\n margin-bottom: 12px;\n}\n\n.wpstg--modal--import--upload--process {\n display: none;\n position: relative;\n height: 30px;\n margin-top: 20px;\n margin-bottom: 20px;\n width: 100%;\n top: 0;\n left: 0;\n text-indent: 1em;\n white-space: nowrap;\n overflow: hidden;\n color: #333333;\n justify-content: center;\n align-items: center;\n}\n\n.wpstg--modal--import--upload--progress {\n position: absolute;\n background: #98d452;\n color: white;\n height: 100%;\n border-radius: 4px;\n left: 0;\n top: 0;\n}\n\n.wpstg--modal--import--upload--progress--title {\n z-index: 9;\n}\n\n.wpstg-fieldset:disabled {\n opacity: 0.8;\n border-top: 1px solid white;\n margin-top: 20px;\n}\n\n.wpstg-fieldset {\n padding-left: 20px;\n}\n\n.wpstg-fs-14 {\n font-size: 14px;\n}\n\n.wpstg-dark-alert {\n font-weight: bold;\n background-color: #0e86d9;\n padding: 15px;\n margin-top: 0px;\n color: white;\n}\n\n.wpstg-dark-alert .wpstg-button--cta-red {\n margin-left:10px;\n}\n\n.wpstg-form-group {\n display: block;\n width: 100%;\n margin-bottom: 8px;\n align-items: center;\n}\n\n.wpstg-form-group > label {\n display: block;\n font-weight: 700;\n}\n\n.wpstg-text-field > input {\n width: 300px;\n display: block;\n line-height: 1.5;\n}\n\n.wpstg-code-segment {\n display: block;\n}\n\n.wpstg-text-field > .wpstg-code-segment {\n margin-top: 4px;\n min-width: 300px;\n}\n\n.wpstg-form-group > .wpstg-checkbox {\n min-width: 100%;\n width: 100%;\n position: relative;\n}\n\n.wpstg-form-group > .wpstg-checkbox > input[type='checkbox'] {\n left: 150px;\n}\n\n.wpstg-rounded {\n border-radius: 3px;\n}\n\n.wpstg-white-border {\n border: 1px solid white !important;\n}\n\n.wpstg-ml-4 {\n margin-left: 4px;\n}\n\n#wpstg-confirm-backup-restore-data {\n margin: 40px;\n text-align: left;\n}\n\n#wpstg-advanced-settings hr {\n margin: 20px 0;\n}\n\n.wpstg-form-row {\n display: block;\n}\n\n.wpstg-form-row label,\n.wpstg-form-row input {\n display: table-cell;\n padding-left: 5px;\n padding-right: 5px;\n margin-top: 3px;\n margin-bottom: 3px;\n}\n\n.wpstg-form-row input {\n width: 400px;\n}\n\n.wpstg-form-row label {\n font-weight: bold;\n width: 1px;\n white-space: nowrap;\n}\n\n#wpstg-db-connect-output #wpstg-db-status {\n width: 390px;\n}\n\n.wpstg-fs-14 {\n font-size: 14px;\n}\n\n.wpstg-code-segment {\n display: block;\n}\n\n.wpstg-form-group > .wpstg-checkbox {\n min-width: 100%;\n width: 100%;\n}\n\n.wpstg-form-group > .wpstg-checkbox > input[type='checkbox'] {\n margin-left: 10px;\n}\n\n@media only screen and (max-width: 768px) {\n .wpstg-form-group > label {\n min-width: auto;\n width: auto;\n }\n\n .wpstg-text-field > input {\n width: 100%;\n }\n\n .wpstg-text-field > .wpstg-code-segment {\n margin-left: 0;\n min-width: 100%;\n }\n\n .wpstg-tab-section {\n width: calc(100vw - 60px);\n max-width: 450px;\n }\n}\n\n.wpstg-rounded {\n border-radius: 3px;\n}\n\n.wpstg-white-border {\n border: 1px solid white !important;\n}\n\n.wpstg-m-0 {\n margin: 0;\n}\n\n.wpstg-mt-10px {\n margin-top: 10px !important;\n}\n\n.wpstg-mr-10px {\n margin-right: 10px !important;\n}\n\n.wpstg-my-10px {\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n}\n\n.wpstg-w-100 {\n width: 100%;\n}\n\n.wpstg-box-shadow {\n box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);\n}\n\n.wpstg-float-left {\n float: left;\n}\n\n.wpstg-bold-text {\n font-weight: bold;\n}\n\n.wpstg-warning.notice {\n border-left: 4px solid #ffba00;\n}\n\n.wpstg-confirmation-label {\n background-color: #5b9dd9;\n color: #fff;\n padding: 2px;\n border-radius: 3px;\n}\n\n.wpstg-my-6px {\n margin-bottom: 6px;\n margin-top: 6px;\n}\n\n.wpstg-mb-10px {\n margin-bottom: 10px;\n}\n\n.wpstg-clear-both {\n clear: both;\n}\n\n.wpstg-font-italic {\n font-style: italic;\n}\n\n.wpstg-mt-20px {\n margin-top: 20px;\n}\n\n.wpstg-welcome-container {\n border: 2px solid white;\n padding: 20px;\n margin-bottom: 20px;\n}\n\n.wpstg-ml-30px {\n margin-left: 30px;\n}\n\n.wpstg-text-center {\n text-align: center;\n}\n\n.wpstg-feedback-link {\n text-decoration: none;\n}\n\n.wpstg-feedback-span {\n display: block;\n margin-bottom: 3px;\n}\n\n#wpstg-confirm-backup-restore-data {\n margin: 40px;\n text-align: left;\n}\n\n#wpstg-confirm-backup-restore-wrapper {\n margin: 30px;\n margin-top: 0;\n}\n\n#wpstg-confirm-backup-restore-wrapper h3 {\n color: #E01E5A;\n}\n\n#wpstg-progress-db,\n#wpstg-progress-backup {\n background-color: #3fa5ee;\n}\n\n#wpstg-progress-sr,\n#wpstg-progress-files.wpstg-pro {\n background-color: #3c9ee4;\n}\n\n#wpstg-progress-dirs,\n#wpstg-progress-data {\n background-color: #3a96d7;\n}\n\n#wpstg-progress-files:not(.wpstg-pro),\n#wpstg-progress-finishing {\n background-color: #378cc9;\n}\n\n.wpstg-issue-resubmit-confirmation.wpstg--swal2-container,\n.wpstg-swal2-container.wpstg--swal2-container {\n z-index: 10500;\n}\n\n.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-actions,\n.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-header {\n display: none;\n}\n\nbody.toplevel_page_wpstg_backup .wpstg--swal2-container .wpstg--swal2-content,\nbody.toplevel_page_wpstg_clone .wpstg--swal2-container .wpstg--swal2-content {\n z-index: 2;\n}\n\n.toplevel_page_wpstg_clone #swal2-content h2 {\n color: #3e3e3e;\n}\n\n.toplevel_page_wpstg_clone #swal2-content {\n line-height: 1.5em;\n}\n\ndiv#exportUploadsWithoutDatabaseWarning {\n font-style: italic;\n font-size: 0.9rem;\n margin: 10px;\n padding: 10px;\n border: 1px solid #e3e3e3;\n border-radius: 5px;\n text-align: center;\n background-color: #fafafa;\n}\n\n.wpstg-advanced-options-dropdown-wrapper {\n display: none; /* ENABLE WHEN WE HAVE ADVANCED OPTIONS FOR EXPORTING */\n margin-top: 20px;\n}\n\n.wpstg--modal--backup--import--search-replace--wrapper {\n text-align: left;\n margin-top: 20px;\n}\n\n.wpstg--modal--backup--import--search-replace--new--wrapper {\n text-align: center;\n}\n\n.wpstg-import-backup-contains li {\n display: inline-block;\n margin-bottom:0px;\n}\n\n.wpstg-import-backup-contains li .wpstg-backups-contains {\n border-radius: 3px;\n color: #979797;\n background-color: #f4f4f4 !important;\n width: 18px;\n height: 18px;\n font-size: 17px;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains {\n padding: 2px;\n background-color: white;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains > .wpstg--dashicons {\n filter: invert(35%);\n}\n\n.wpstg-import-backup-contains .wpstg--tooltiptext {\n width: 80px;\n font-size: 13px;\n padding: 5px;\n left: -25px;\n text-align: center;\n}\n\n.wpstg-import-backup-contains-title {\n display: inline-block;\n}\n\nul.wpstg-import-backup-contains {\n display: inline-block;\n}\n\n.wpstg-import-backup-name {\n display: inline-block;\n font-weight: bold;\n}\n\n.wpstg-backup-more-info-toggle {\n font-size: x-small;\n display: inline-block;\n font-style: italic;\n cursor: pointer;\n}\n\n.wpstg-backup-more-info-toggle::selection {\n background: none;\n}\n\nul.wpstg-import-backup-more-info {\n font-size: 14px;\n text-align: left;\n margin-bottom: 30px;\n margin-top: 10px;\n background-color: #f6f6f6;\n border: 1px solid #878787;\n border-radius: 3px;\n padding: 7px;\n cursor: pointer;\n}\n\nul.wpstg-import-backup-more-info:hover {\n background-color: #def2ff;\n border: 1px solid #25a1f0;\n}\n\nul.wpstg-import-backup-more-info li {\n height: 20px;\n}\n\n.wpstg-backup-list {\n max-width: 800px;\n}\n\n.wpstg-backup-list h3 {\n color:#3e3e3e;\n}\n\n.wpstg-backup-list ul ul {\n margin-block-start: 1em;\n margin-block-end: 1em;\n}\n\n.wpstg-push-confirmation-message {\n text-align: justify;\n font-size: 15px;\n}\n\n.wpstg-settings-row {\n padding-top: 10px;\n padding-bottom: 10px;\n}\n\n.wpstg-settings-title {\n font-weight: 600;\n}\n\n.wpstg-settings-form-group {\n display: flex;\n align-items: center;\n}\n\n.wpstg-settings-form-group > .wpstg-settings-message {\n width: 30%;\n padding: 0;\n margin: 7px 0 0;\n}\n\n/**\n * WP STAGING EXCLUSION RULES TABLE LAYOUT\n */\n\n.wpstg-excluded-filters-container {\n padding: 0;\n margin-top: 10px;\n margin-bottom: 10px;\n max-width: 100%;\n width: 100%;\n}\n\n.wpstg-excluded-filters-container > table {\n width: 100%;\n border-collapse: collapse;\n border-color: transparent;\n}\n\n.wpstg-excluded-filters-container td {\n padding-top: 4px;\n padding-bottom: 4px;\n height: 20px;\n}\n\n.wpstg-excluded-filters-container h4 {\n margin: 0;\n}\n\n.wpstg-exclude-filters-foot {\n display: flex;\n justify-content: flex-start;\n padding: 0;\n}\n\n/**\n * WP STAGING EXCLUSION RULE DROPDOWN STYLE\n */\n\n\n.wpstg-exclude-filter-dropdown > button:hover {\n background: #135e96;;\n border: 1px solid #135e96;;\n}\n\n.wpstg-exclude-filter-dropdown > .wpstg-dropdown-menu {\n width: 128px;\n}\n\n.wpstg-remove-exclude-rule {\n color: #fff !important;\n background-color: #e01e5a;\n border: 1px solid #e01e5a;\n width: 20px;\n height: 20px;\n border-radius: 10px;\n font-size: 24px;\n padding: 0;\n display: inline-flex;\n justify-content: center;\n outline: none;\n box-shadow: none;\n font-weight: 400;\n line-height: 0.7;\n margin-top: 5px;\n cursor: pointer;\n}\n\n.wpstg-remove-exclude-rule:hover {\n background-color: #E01E5A;\n border-color: #E01E5A;\n}\n\n.wpstg-code-block {\n margin-top: 4px;\n font-size: 1.2em;\n background: #f8f8f8;\n border-radius: 2px;\n}\n\n.wpstg-rule-info {\n background: #f8f8f8 !important;\n}\n\ncode.wpstg-code {\n display: inline-block;\n font-size: 11px;\n border: 1px solid #aaa;\n background: #fff;\n padding: 2px 4px;\n margin-bottom: 1px;\n color: #E01E5A;\n}\n\n.wpstg-exclusion-rule-info {\n color: #fff !important;\n background-color: #ffc107;\n border: 1px solid #ffc107;\n width: 14px;\n height: 14px;\n border-radius: 7px;\n font-size: 14px;\n padding: 0;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n outline: none;\n box-shadow: none;\n font-weight: 400;\n vertical-align: middle;\n}\n\n.wpstg-exclusion-rule-info:hover {\n background-color: #ffba0c;\n border: 1px solid #ffba0c;\n}\n\n/**\n * WP STAGING INPUTS EXCLUSION RULES\n */\n\n.wpstg-exclude-rule-input {\n font-size: 12px !important;\n padding: 2px 6px;\n box-shadow: none;\n outline: none !important;\n display: inline-block;\n font-weight: 400;\n line-height: 1.5;\n color: #222;\n border-radius: 0 !important;\n background-color: #fff;\n border: 1px solid #bbb;\n min-height: 24px !important;\n margin-top: 4px;\n margin-left: 4px;\n vertical-align: baseline !important;\n transition: all 0.3s cubic-bezier(.25, .8, .25, 1);\n width: 135px;\n}\n\n.wpstg-excluded-filters-container tbody > tr:last-child .wpstg-exclude-rule-input {\n margin-bottom: 4px;\n}\n\n.wpstg-exclude-rule-input:hover {\n border: 1px solid #999;\n}\n\n.wpstg-exclude-rule-input:focus {\n border: 1px solid #25A0F1 !important;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24) !important;\n}\n\n.wpstg-file-size-exclude-select,\n.wpstg-path-exclude-select {\n width: 135px;\n}\n\n.wpstg-file-size-exclude-select-small {\n width: 52px;\n}\n\n.wpstg-file-size-exclude-input {\n width: 75px;\n}\n\n.wpstg-staging-option-title {\n margin: 15px 0 0;\n}\n\n.wpstg-swal-push-container.wpstg--swal2-container {\n z-index: 9995;\n}\n\n#wpstg-scanning-files {\n padding-bottom: 5px;\n}\n\n#wpstg-scanning-files.wpstg-tab-section, #wpstg-scanning-db.wpstg-tab-section {\n padding-top: 10px;\n}\n\n.wpstg-reset-excludes-container {\n margin: 10px 0;\n}\n\n.wpstg-swal2-ajax-loader {\n width: 100%;\n height: 150px;\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n@keyframes wpstg-loading-icon-anim {\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.wpstg-swal2-ajax-loader > img {\n width: 64px;\n height: 64px;\n animation: wpstg-loading-icon-anim 1s infinite linear;\n -webkit-animation: wpstg-loading-icon-anim 1s infinite linear;\n}\n\n.wpstg-swal2-container .wpstg-tab-section {\n width: auto !important;\n}\n\n#wpstg-no-staging-site-results {\n margin-top: 10px;\n max-width: 375px;\n}\n\nli#wpstg-backup-no-results {\n max-width: 500px;\n}\n\nli#wpstg-backup-no-results div, #wpstg-no-staging-site-results div {\n display: inline-block;\n text-align: center;\n}\n\nli#wpstg-backup-no-results .wpstg--dashicons, #wpstg-no-staging-site-results .wpstg--dashicons {\n filter: invert(50%);\n position: absolute;\n margin-top: 1px;\n}\n\nli#wpstg-backup-no-results .no-backups-found-text, #wpstg-no-staging-site-results .no-staging-site-found-text {\n color: #5d5d5d;\n margin-left: 20px;\n}\n\n@media only screen and (max-width: 680px) {\n li#wpstg-backup-no-results div, #wpstg-no-staging-site-results div {\n width: 100%;\n }\n}\n\n#wpstg--modal--backup--download-inner p.wpstg-download-modal-text {\n font-size: 16px;\n color: #565656;\n}\n\n#wpstg--modal--backup--download-inner h2 {\n color: #565656;\n}\n\n.wpstg-backup-restore-contains-database,\n.wpstg-backup-restore-contains-files {\n display: none;\n}\n\n.wpstg-green-button {\n background: #8bc34a;\n border: 1px solid #78a93f;\n color: white;\n text-shadow: 0 -1px 1px #78a93f, 1px 0 1px #78a93f, 0 1px 1px #40c921, -1px 0 1px #78a93f;\n}\n\n.wpstg-green-button:hover {\n background: #78a93f;\n}\n\n.wpstg-is-dir-loading {\n position: absolute;\n margin-top: -2px;\n margin-left: 8px;\n display: none;\n}\n\n.wpstg-ml-8px {\n margin-left: 8px;\n}\n\n.wpstg-mb-8px {\n margin-bottom: 8px;\n}\n\n\n.wpstg-btn-danger {\n background-color: #E01E5A;\n border: 1px solid #E01E5A;\n color: white;\n text-shadow: none;\n}\n\n.wpstg-btn-danger:hover {\n background: #c0194d;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);\n}\n\n.wpstg-swal2-container.wpstg-swal2-loading > .wpstg--swal2-modal {\n height: 200px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container:not(.wpstg-swal2-loading) > .wpstg--swal2-modal {\n max-width: 480px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-header {\n display: none;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-content {\n height: auto;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-tabs-wrapper {\n overflow-y: auto;\n height: auto !important;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content {\n font-size: 13px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-dir {\n margin-bottom: 4px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-subdir {\n margin-top: 4px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open .wpstg--swal2-modal {\n height: calc(100vh - 70px);\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-tabs-wrapper {\n height: calc(100vh - 350px) !important;\n}\n\n.wpstg--swal2-actions.wpstg--modal--actions > button {\n margin-left: 4px;\n margin-right: 4px;\n text-transform: uppercase;\n text-shadow: initial;\n font-weight: 500;\n min-width: 80px;\n}\n\n.wpstg-swal-popup {\n max-width: 1200px !important;\n}\n\n.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-title {\n color: #a8a8a8;\n}\n\n.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-content {\n margin-top: 8px;\n color: #a8a8a8;\n}\n\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step.wpstg--swal2-active-progress-step,\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step,\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line {\n background: #25a1f0;\n}\n\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line {\n width: 2.75em;\n}\n\n.wpstg--dashicons {\n width: 16px;\n height: 16px;\n}\n\n.wpstg--dashicons.wpstg-dashicons-grey {\n filter: invert(20%);\n}\n\n.wpstg--dashicons.wpstg-dashicons-19 {\n width: 19px;\n height: 19px;\n}\n\n.wpstg--dashicons.wpstg-dashicons-21 {\n width: 21px;\n height: 21px;\n}\n\n#wpstg--tab--backup #wpstg-step-1 {\n display: flex;\n align-items: center;\n}\n\n.wpstg-advanced-options .wpstg--tooltip,\n#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip {\n border-bottom: 0 solid transparent;\n display: inline-flex;\n align-items: center;\n}\n\n.wpstg-advanced-options-site .wpstg--tooltip img.wpstg--dashicons {\n filter: invert(17%) sepia(0%) saturate(1%) hue-rotate(195deg) brightness(97%) contrast(77%);\n}\n\n#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip {\n border-bottom: 0 solid transparent;\n display: flex;\n align-items: center;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext-backups::after {\n left: calc(20% + 2px);\n}\n\n.wpstg-listing-single-backup .wpstg--dashicons {\n width: 17px;\n height: 17px;\n}\n\n.wpstg-100-width {\n width: 100px;\n}\n\n.wpstg-caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px solid;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n transition: transform 0.2s;\n cursor: pointer;\n}\n\n.wpstg-caret.wpstg-caret-up {\n transform: rotate(-180deg);\n}\n\n.wpstg-advanced-options-site label {\n font-size: 16px;\n display: block;\n margin: .5em 0;\n}\n\n#wpstg-confirm-backup-restore-data {\n font-size: 18px;\n margin: 0;\n margin-top: 30px;\n}\n\n/* Sweetalert WP STAGING Theme */\n\nbody.toplevel_page_wpstg_backup .wpstg--swal2-container.wpstg--swal2-backdrop-show,\nbody.toplevel_page_wpstg_clone .wpstg--swal2-container.wpstg--swal2-backdrop-show {\n background: rgba(0, 0, 0, .6);\n z-index: 9995;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup {\n border-radius: 8px;\n z-index: 9999;\n padding: 24px;\n color: #3e3e3e;\n font-family: Verdana, Geneva, Tahoma, sans-serif;\n}\n\n.wpstg-swal-popup .wpstg--swal2-title {\n font-size: 22px;\n color: #3e3e3e;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-title {\n align-self: flex-start; /* For an actual Swal title */\n text-align: left; /* Manually adding this class to a non flex display */\n margin-bottom: 0;\n}\n\n.wpstg-swal-popup .wpstg--swal2-close {\n top: 8px;\n right: 8px;\n z-index: 5;\n}\n\n.wpstg-swal-popup .wpstg--swal2-close:focus {\n outline: none;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions {\n justify-content: flex-end;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button {\n border-radius: 4px;\n font-weight: 900;\n border: 0;\n font-size: 15px;\n padding: 10px 12px;\n text-transform: capitalize;\n line-height: normal;\n height: 40px;\n min-width: 100px;\n text-shadow: none;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions > button {\n margin-left: 8px;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel {\n border: 1px solid rgba(29, 28, 29, 0.3);\n background: #fff;\n color: rgb(29, 28, 29);\n font-weight: 500;\n width: 100px;\n text-shadow: none;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button:hover {\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .1);\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel:hover {\n background: rgba(28, 29, 28, .04);\n}\n\n#wpstg-backup-name-input {\n height: 44px;\n font-size: 18px;\n}\n\n.wpstg-restore-finished-container .wpstg--swal2-title {\n color: #565656 !important;\n}\n\n/*#wpstg-restore-success {\n color: #565656;\n}*/\n\n.wpstg-restore-finished-container .wpstg--swal2-content {\n margin-top: 20px;\n color: #a8a8a8;\n}\n\n/* WP Staging Implementation of Windows Style Linear Loader */\n\n.wpstg-linear-loader > span[class*=\"wpstg-linear-loader-item\"] {\n height: 6px;\n width: 6px;\n background: #333;\n display: inline-block;\n margin: 12px 2px;\n border-radius: 100%;\n animation: wpstg_linear_loader 3s infinite;\n animation-timing-function: cubic-bezier(0.030, 0.615, 0.995, 0.415);\n animation-fill-mode: both;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(1) {\n animation-delay: 1s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(2) {\n animation-delay: 0.8s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(3) {\n animation-delay: 0.6s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(4) {\n animation-delay: 0.4s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(5) {\n animation-delay: 0.2s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(6) {\n animation-delay: 0s;\n}\n\n@keyframes wpstg_linear_loader {\n 0% {\n transform: translateX(-30px);\n opacity: 0;\n }\n 25% {\n opacity: 1;\n }\n 50% {\n transform: translateX(30px);\n opacity: 0;\n }\n 100% {\n opacity: 0;\n }\n}\n\n/* END - Windows Style Linear Loader */\n\n.wpstg--modal--backup--import--upload--content {\n padding: .75em;\n margin: 1em auto;\n}\n\n.wpstg--modal--backup--import--upload--content .wpstg-linear-loader {\n display: none;\n}\n\n#wpstg-multisite-disabled .wpstg-clone {\n width: 355px;\n}\n\n#wpstg-free-version-backups .wpstg-clone {\n text-align: center;\n}\n\n#wpstg-free-version-backups .wpstg-clone p {\n font-size: 16px;\n}\n\n.wpstg-staging-info li .backup-notes {\n word-break: break-word;\n}\n\n.wpstg--modal--import--upload--progress--title small {\n font-weight: normal;\n}\n\n#wpstg-report-issue-wrapper {\n position: relative;\n}\n\n#wpstg-report-issue-wrapper .arrow-up {\n width: 0;\n height: 0;\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n border-bottom: 8px solid white;\n position: absolute;\n top: -8px;\n right: 40px;\n}\n\n.notice {\n margin: 10px 20px 0 2px;\n}\n\n.wpstg--notice {\n box-shadow: 0 1px 1px rgba(0, 0, 0, .04);\n margin: 20px 20px 20px 0px;\n padding: 1px 12px;\n}\n\n.wpstg--error a:hover {\n color: #eeeeee;\n}\n\n.wpstg--error, .wpstg--error a {\n background: #E01E5A;\n color: white;\n}\n\n/**\n * Buttons\n */\n\n.wpstg-button {\n display: inline-block;\n border-radius: 2px;\n cursor: pointer;\n padding: 2px 10px 2px 10px;\n text-transform: uppercase;\n font-weight: 500;\n outline: 0;\n transition: background-color .1s ease-in;\n text-decoration: none;\n}\n\n.wpstg-button.wpstg-save {\n background-color: #1687A7;\n color: white;\n}\n\n.wpstg-button.wpstg-save:hover {\n background-color: #276678;\n}\n\n\n.wpstg-button.wpstg-button-light {\n background-color: #f8f8f8;\n border: 1px solid #eee;\n color: #333;\n animation: background-color 0.3s;\n}\n\n.wpstg-button.wpstg-button-light:hover {\n background-color: #e0e0e0;\n border: 1px solid #e0e0e0;\n}\n\n.wpstg-buttons .spinner {\n float: none;\n margin: 0 0 0 5px;\n}\n\n.wpstg-button.danger {\n display: inline-block;\n text-decoration: none;\n text-align: center;\n text-transform: inherit;\n background-color: #E01E5A;\n color: white;\n border-radius: 2px;\n border-color: transparent;\n}\n\n.wpstg-button.danger:hover {\n background-color: #c0194d;\n}\n\n.wpstg-button--big {\n display: inline-block;\n padding: 10px;\n min-width: 170px;\n font-size: 16px;\n text-decoration: none;\n text-align: center;\n margin-top: 20px;\n color: white;\n border-radius: 3px;\n}\n\n.wpstg-button--primary {\n display: inline-block;\n text-decoration: none;\n font-size: 13px;\n line-height: 2.15384615;\n min-height: 30px;\n margin: 0;\n padding: 0 10px;\n cursor: pointer;\n border: 1px solid rgba(29, 28, 29, 0.3);\n -webkit-appearance: none;\n border-radius: 2px;\n white-space: nowrap;\n box-sizing: border-box;\n color: #171717;\n}\n\n.wpstg-button--primary:hover {\n background: rgba(28, 29, 28, .04);\n color: black;\n}\n\n.wpstg-button--secondary {\n display: inline-block;\n background-color: transparent;\n color: #95a5a6;\n border-radius: 2px;\n border: 1px solid rgba(29, 28, 29, 0.3);\n cursor: pointer;\n padding: 4px 10px 2px 10px;\n font-weight: 500;\n outline: 0;\n transition: background-color .1s ease-in;\n text-decoration: none;\n}\n\n.wpstg-button--red {\n background-color: #E01E5A;\n border-color: #E01E5A;\n color: white;\n}\n\n.wpstg-button--red:hover {\n background-color: #d02358;\n border-color: #e0255f;\n color: white;\n}\n\n.wpstg-button--cta-red {\n background-color: #fe008f;\n border-color: #E01E5A;\n color: white;\n}\n\n.wpstg-button--cta-red:hover {\n background-color: #f31391;\n border-color: #e0255f;\n color: white;\n}\n\n.wpstg-button--blue {\n background-color: #25A0F1;\n border-color: #25A0F1;\n color: white;\n}\n\n.wpstg-button--blue:hover {\n background-color: #259be6;\n border-color: #259be6;\n color: white;\n}\n\n#wpstg-button-backup-upgrade {\n font-size: 16px;\n}\n\n.wpstg-staging-status {\n color: #E01E5A;\n}\n\n#wpstg-push-changes,\n#wpstg-start-updating,\n#wpstg-save-clone-data {\n margin-left: 5px;\n}\n\ninput.wpstg-textbox {\n border: 1px solid #aaa;\n border-radius: .25rem;\n padding: 0.25rem 0.5rem;\n font-size: 14px;\n}\n\ninput.wpstg-textbox:focus {\n outline: 0;\n border-color: #259be6;\n -webkit-box-shadow: 0 0 0 0.1rem rgba(221, 221, 221, .35);\n box-shadow: 0 0 0 0.1rem rgba(221, 221, 221, .35);\n}\n\ninput.wpstg-textbox::placeholder {\n color: #888;\n}\n\n.wpstg--advance-settings--checkbox {\n display: flex;\n align-items: center;\n}\n\n.wpstg--advance-settings--checkbox > label {\n font-size: 14px;\n font-weight: bolder;\n width: 165px;\n display: inline-block;\n}\n\n.wpstg--advance-settings--checkbox > .wpstg--tooltip {\n margin-top: 5px;\n margin-left: 5px;\n position: relative;\n display: inline-block;\n border-bottom: 0px solid transparent;\n}\n\n.wpstg--advance-settings--checkbox > .wpstg--tooltip > .wpstg--tooltiptext {\n top: 18px;\n left: -150px;\n}\n\n\ndiv#wpstg-restore-wait {\n display: none;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n text-align: center;\n height: 100vh;\n width: 100vw;\n position: fixed;\n top: 0;\n left: 0;\n background: white;\n z-index: 99999;\n}\n\ndiv#wpstg-restore-wait .wpstg-title {\n font-weight: bold;\n}\n\ndiv#wpstg-restore-wait div {\n font-size: 16px;\n margin-top: 12px;\n}\n\n.resumable-browse {\n cursor: pointer;\n}\n\n.resumable-browse a {\n text-decoration: underline;\n}\n\n.wpstg-upload-text {\n font-weight: 600;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover {\n transition: background-color 0.7s;\n background-color: #94dc96;\n color: #FFF;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover * {\n pointer-events: none; /* Avoids flickering when dragging to drop a file */\n}\n\n.wpstg--modal--backup--import--upload--container.dragover .wpstg-upload-text {\n display: none;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover .wpstg-dragover-text {\n display: block;\n}\n\n.wpstg--modal--backup--import--upload--container .wpstg-dragover-text {\n display: none;\n}\n\n#wpstg-invalid-license-message, #wpstg-invalid-license-message a {\n font-weight: 500;\n color: #E01E5A;\n margin-left: 6px;\n}\n\n#wpstg-sidebar--banner {\n max-width: 200px;\n}\n\n@media screen and (max-width: 1234px) {\n .wpstg-h2 {\n font-size: 24px;\n }\n\n #wpstg-welcome li {\n font-size: 14px;\n }\n}\n\n.wpstg-exclamation {\n color: #ffffff;\n border-radius: 100%;\n background-color: #E01E5A;\n width: 20px;\n height: 20px;\n text-align: center;\n font-weight: bold;\n display: inline-block;\n margin: 6px;\n}\n\n.wpstg--tab--contents {\n padding-top: 1px;\n}\n\n.wpstg-swal-show.wpstg--swal2-show {\n -webkit-animation: wpstg-swal-show 0.2s !important;\n animation: wpstg-swal-show 0.2s !important;\n}\n\n@-webkit-keyframes wpstg-swal-show {\n 0% {\n transform: scale(0.3);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes wpstg-swal-show {\n 0% {\n transform: scale(0.3);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n.wpstg-tab-item--vert-center {\n display: flex;\n align-items: center;\n}\n\n.wpstg-db-comparison-modal {\n padding-left: 10px;\n padding-right: 10px;\n}\n\n.wpstg-db-comparison-table {\n font-size: 13px;\n width: 100%;\n}\n\n.wpstg-db-comparison-table tbody td {\n padding-top: 6px;\n}\n\n.wpstg-db-comparison-table tr > td:first-child,\n.wpstg-db-comparison-table tr > th:first-child {\n text-align: left;\n}\n\n.wpstg-css-tick {\n display: inline-block;\n transform: rotate(45deg);\n height: 12px;\n width: 6px;\n border-bottom: 3px solid #78b13f;\n border-right: 3px solid #78b13f;\n}\n\n.wpstg-css-cross {\n position: relative;\n top: -8px;\n left: -2px;\n width: 16px;\n height: 16px;\n}\n\n.wpstg-css-cross:before, .wpstg-css-cross:after {\n position: absolute;\n content: ' ';\n height: 17px;\n width: 3px;\n background-color: #E01E5A;\n}\n\n.wpstg-css-cross:before {\n transform: rotate(45deg);\n}\n\n.wpstg-css-cross:after {\n transform: rotate(-45deg);\n}\n\n.wpstg-selection-preview {\n font-size: 12px;\n margin-left: 20px;\n color: #3216;\n}\n\n.wpstg-selection-preview.danger {\n color: #E01E5A;\n}\n\n.wpstg--backup-automated {\n margin-bottom: -5px;\n}\n\n.wpstg--dismiss-schedule {\n cursor: pointer;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup {\n vertical-align: middle;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li {\n padding:2px;\n}\n\n.wpstg--modal--backup--manage--schedules--content table {\n margin: 0 auto;\n width: 100%;\n}\n\n.wpstg--modal--backup--manage--schedules--title {\n text-align: left;\n margin-bottom: 10px;\n margin-top: 0px;\n}\n\n.wpstg--modal--backup--import--upload--title {\n text-align: center;\n}\n\n#wpstg--modal--backup--manage--schedules--content {\n text-align: left;\n}\n\n#wpstg--modal--backup--manage--schedules--content thead {\n font-weight: bold;\n}\n\n#wpstg--modal--backup--manage--schedules--content .wpstg--tooltip.wpstg--dismiss-schedule {\n border-bottom: none;\n}\n\n.wpstg--tooltip.wpstg--dismiss-schedule img.wpstg--dashicons {\n filter: invert(18%) sepia(57%) saturate(6238%) hue-rotate(332deg) brightness(93%) contrast(88%);\n}\n\n#wpstg--modal--backup--manage--schedules--content td {\n padding-right: 25px;\n padding-top: 10px;\n}\n\n#wpstg--modal--backup--manage--schedules--content ul {\n margin-top: 0;\n margin-bottom: 0;\n}\n\n#wpstg--modal--backup--manage--schedules--content ul li:first-child .wpstg--tooltip {\n margin-left:0;\n}\n\n.wpstg-button:disabled {\n background-color: #dddddd;\n text-shadow: none;\n color: #b3b3b3;\n border: 1px solid #cfcfcf;\n cursor: not-allowed;\n}\n\n#wpstg-backup-runs-info {\n margin: 0px;\n margin-top: 20px;\n padding:0px;\n font-size:12px;\n}\n\n#wpstg-backup-runs-info li {\n margin: 0px;\n}\n\ndiv#wpstg-backup-locked {\n width: 100%;\n max-width: calc(800px - 30px);\n padding: 15px;\n background: white;\n margin-bottom: 10px;\n display: flex;\n align-items: center;\n}\n\n#wpstg-backup-locked .icon {\n display: inline-block;\n height: 20px;\n}\n\n#wpstg-backup-locked .icon img {\n animation: wpstg-loading-icon-anim 2s infinite;;\n}\n\n#wpstg-backup-locked .text {\n display: inline-block;\n margin-left: 15px;\n}\n\n#backup-schedule-current-time {\n font-size: 12px;\n}\n\n.wpstg-backup-scheduling-options label {\n margin-top:17px;\n}\n\n.wpstg-backup-scheduling-options .wpstg-storage-option {\n display: block;\n margin: .5em 0;\n font-size: 15px;\n}\n\n.wpstg-storage-option>span:not(.wpstg-storage-settings) {\n width: 150px;\n display: inline-block;\n}\n\n.wpstg-storages-postbox {\n padding: 13px 16px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: white;\n}\n\n.wpstg-storages-postbox a {\n padding: 8px;\n margin-right: 8px;\n text-decoration: none;\n font-weight: bold;\n color: #3c434a;\n}\n\n.wpstg-storages-postbox a:hover {\n color: #b70b72;\n}\n\n.wpstg-storage-postbox {\n padding: 4px 16px;\n background-color: white;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-active {\n background: #b70b72;\n color: white;\n font-weight: 700;\n cursor: default;\n border-radius:3px;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-active:hover {\n background: #a10a64;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-disabled {\n color: #999;\n cursor: not-allowed;\n}\n\n.wpstg-provider-revoke-form {\n display: inline;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.wpstg-provider-settings-form {\n margin-top: 10px;\n}\n\n.wpstg-provider-settings-form strong {\n display: block;\n margin: 8px 0;\n}\n\n.wpstg-provider-settings-form p {\n margin: 0;\n margin-bottom: 8px;\n}\n\n.wpstg-provider-settings-form fieldset {\n margin: 0;\n padding: 0;\n margin-bottom: 16px;\n}\n\n.wpstg-provider-settings-form fieldset p {\n margin: 0;\n padding: 5px;\n font-size: 12px;\n}\n\n.wpstg-provider-settings-form fieldset label {\n display: block;\n margin-bottom: 2px;\n}\n\n.wpstg-provider-settings-form fieldset input {\n font-size: 12px;\n}\n\n.wpstg-provider-settings-form .wpstg-link-btn.wpstg-blue-primary {\n text-shadow: none;\n}\n\n.wpstg-btn-google {\n font-family: Roboto;\n display: inline-flex;\n align-items: center;\n border-width: 0;\n outline: none;\n border-radius: 3px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, .6);\n color: #555;\n transition: background-color .3s;\n padding: 8px;\n padding-right: 16px;\n height: 40px;\n line-height: 40px;\n font-size: 14px;\n box-sizing: border-box;\n text-decoration: none;\n font-weight: bold;\n margin-right: 10px;\n}\n\n.wpstg-btn-google img {\n width: 18px;\n height: 18px;\n margin-right: 12px;\n margin-left:5px;\n}\n\n#wpstg-custom-google-credentials {\n margin-top: 20px;\n}\n\n.wpstg-fieldset .wpstg-with-icon {\n display: inline-flex;\n align-items: center; \n}\n\n.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon {\n margin-left: 8px;\n}\n\n.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon img {\n width: 16px;\n height: 16px;\n}\n\n#wpstg-btn-provider-revoke {\n border-radius: 2px;\n}\n\n.wpstg-metabox-holder{\n border-radius: 8px;\n background: #fff;\n padding: 20px;\n margin-left: 16px;\n min-height: 600px;\n margin-right: 32px;\n margin-top: 60px;\n -webkit-box-shadow: 0 0 1px rgb(0 0 0 / 13%), 0 1px 3px rgb(0 0 0 / 10%);\n box-shadow: 0 0 1px rgb(0 0 0 / 13%), 0 1px 3px rgb(0 0 0 / 10%);\n}\n\n@media only screen and (max-width: 680px) {\n .wpstg-metabox-holder {\n padding: 0px;\n padding-top: 5px;\n margin-left: 0;\n margin-right: 5px;\n }\n\n #wpstg-tab-container .wpstg-settings-panel {\n padding: 0;\n overflow: auto;\n }\n\n .wpstg-form-table td:first-child {\n width: 50%;\n }\n}\n\n.wpstg-nav-tab {\n float: left;\n border: 1px solid #ffffff;\n border-bottom: none;\n margin-left: 0.5em;\n padding: 5px 10px;\n font-size: 14px;\n line-height: 1.71428571;\n font-weight: 600;\n background: #dcdcde;\n color: #3c434a;\n text-decoration: none;\n white-space: nowrap;\n}\n\n.wpstg-nav-tab-active, .wpstg-nav-tab-active:focus, .wpstg-nav-tab-active:focus:active, .wpstg-nav-tab-active:hover {\n border-bottom: 1px solid #f0f0f1;\n background: #f3f5f7;\n color: #b70b72;\n -webkit-box-shadow: -4px -13px 14px -12px rgb(0 0 0 / 16%);\n box-shadow: -4px -13px 14px -12px rgb(0 0 0 / 16%);\n}\n\n.wpstg-nav-tab-active {\n margin-bottom: -1px;\n}\n\n.wpstg-nav-tab-wrapper {\n /*\n border-bottom: 1px solid #c3c4c7;\n */\n margin: 0;\n padding-top: 9px;\n padding-bottom: 0;\n line-height: inherit;\n}\n\n.wpstg-nav-tab-wrapper li{\n margin-bottom: 0px;\n}\n\n#wpstg--js--translations {\n text-decoration: underline;\n}\n"]}
|
assets/css/dist/wpstg-admin.min.css
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../../fonts/roboto-v29-latin-regular.eot);src:local(""),url(../../fonts/roboto-v29-latin-regular.eot?#iefix) format("embedded-opentype"),url(../../fonts/roboto-v29-latin-regular.woff2) format("woff2"),url(../../fonts/roboto-v29-latin-regular.woff) format("woff"),url(../../fonts/roboto-v29-latin-regular.ttf) format("truetype"),url(../../fonts/roboto-v29-latin-regular.svg#Roboto) format("svg")}.wpstg--violet{color:#9d37ae}.wpstg-border--violet{border:1px solid #9d37ae}.wpstg--red{color:#e01e5a}.wpstg-cta--red{color:#fe008f}.wpstg--blue{color:#24a1f0}.wpstg--darkblue{color:#0e86d9}.wpstg--green{color:#83c11f}.wpstg--grey{color:#3e3e3e}.wpstg--darkgrey{color:#1b1b1b}.wpstg--filter--svg{filter:invert(24%) sepia(11%) saturate(558%) hue-rotate(169deg) brightness(97%) contrast(91%)}body.toplevel_page_wpstg_clone,body.wp-staging-pro_page_wpstg-license,body.wp-staging-pro_page_wpstg-settings,body.wp-staging-pro_page_wpstg-tools,body.wp-staging-pro_page_wpstg_backup{background-color:#f3f5f7}#wpstg-tab-container ul{background:#f1f1f1;float:left;list-style:none;margin:0;padding:0}#wpstg-tab-container ul li:first-child.selected-tab{border-top:none}#wpstg-tab-container ul li a.selected-tab{font-weight:700;text-decoration:none}#wpstg-tab-container .row{padding-bottom:12px;padding-top:10px}.wpstg-tabs-container .nav-tab-wrapper{padding:0}#wpstg-tab-container .row label strong,#wpstg-tab-container .row strong{font-weight:700}.wpstg-tabs a{padding:5px}#wpstg-tab-container>ul>li.wpstg-tabs.active{background-color:#fff}#wpstg_settingsgeneral_header .row:nth-child(3),#wpstg_settingsgeneral_header .row:nth-child(4){display:none}#wpstg-tab-container .wpstg-settings-panel{overflow:auto;padding:0 20px 20px}#wpstg-tab-container .wpstg-form-table th{color:#484848;font-size:14px;font-weight:700;line-height:1.3;padding:20px 10px 20px 0;text-align:left;vertical-align:top;width:30%}#wpstg-tab-container .wpstg-form-table tr{border-bottom:1px solid #e7e7e7}#wpstg-tab-container span.description{color:#484848;display:block;font-size:13px;font-style:normal;font-weight:400;margin-top:7px}#wpstg-tab-container .col-title{color:#484848}@media only screen and (max-width:680px){#wpstg-tab-container ul{float:none}#wpstg-tab-container .wpstg-form-table tr>th{width:100%}#wpstg-tab-container span.description{font-size:14px}#wpstg-tab-container .wpstg-form-table tr>td,#wpstg-tab-container .wpstg-form-table tr>th{padding:10px}}#wpstg-tab-container ul li{margin-bottom:0}#wpstg-tab-container ul li a{border-bottom:1px solid #e7e7e7;border-left-style:solid;border-left-width:0;border-right-style:solid;border-right-width:0;border-top:1px solid #fff;color:#0097df;display:block;font-weight:700;padding:10px 4px 10px 14px;text-decoration:none}#wpstg-tab-container ul li a:hover{background-color:#e5e5e5;color:#777}.wpstg-logo{display:block;float:left;font-size:16px;padding-top:20px;width:220px}.wpstg-logo img{max-width:212px}.wpstg-version{color:#9b9b9b;display:block;padding-top:40px}.wpstg_admin .nav-tab{color:#3c3c3c}#wpstg-tab-container table tbody tr:first-child>th>div{font-size:20px}#wpstg-clonepage-wrapper{margin-bottom:20px;width:98%}@media screen and (min-width:1090px){#wpstg-clonepage-wrapper{float:left;margin-bottom:20px}}#wpstg-steps{margin-left:20px;margin-top:0}#wpstg-steps li{color:#444;float:left;line-height:20px;padding-right:10px}.wpstg-step-num{border:1px solid #3e3e3e;border-radius:3px;display:inline-block;height:20px;margin-right:5px;text-align:center;width:20px}.wpstg-current-step{font-weight:700}.wpstg-current-step .wpstg-step-num{background:#3e3e3e;color:#eee}.wpstg-box{margin:10px 0;overflow:hidden;padding:10px}.wpstg-box,.wpstg-clone{position:relative;transition:border-color .2s ease-in-out}.wpstg-clone{background-color:#fff;border-radius:3px;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.1);color:#3e3e3e;margin-bottom:10px;padding:16px}.wpstg-clone.active{border-color:#1d94cf}.wpstg-clone-header{align-items:center;display:flex}.wpstg-clone-title{color:#3e3e3e;display:inline-block;font-size:15px;font-weight:700;margin-right:8px;max-width:300px;text-decoration:none}.wpstg-clone-title:hover{color:#111}.wpstg-clone-labels{display:inline-block}.wpstg-clone-labels .wpstg-clone-label{background:#8bc34a;border-radius:3px;color:#fff;display:inline-block;font-size:11px;margin-right:4px;padding:1px 4px}.wpstg-clone-actions{display:flex;margin-left:auto;margin-top:5px}.wpstg-clone-actions .wpstg-dropdown-toggler{background:#25a1f0;border-radius:2px;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.2);color:#fff;font-size:14px;padding:6px 10px;text-decoration:none}.wpstg-clone-actions .wpstg-dropdown-toggler:hover{background:#002648;color:#fff}.wpstg-dropdown{position:relative}.wpstg-dropdown>.wpstg-dropdown-menu{background:#fff;border-radius:2px;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.2);display:none;flex-direction:column;padding:8px;position:absolute;right:0;top:calc(100% + 4px);width:100px;z-index:1000}.wpstg-dropdown>.wpstg-dropdown-menu.wpstg-menu-dropup{bottom:100%;top:auto;transform:translate3d(0,-3px,0)}.wpstg-dropdown>.wpstg-dropdown-menu.shown{display:flex}.wpstg-clone-action,.wpstg-dropdown-action{border-bottom:1px solid #f3f3f3;border-radius:3px;color:#3e3e3e;padding:6px 8px;position:relative;text-decoration:none;transition:color .2s ease-in-out}.wpstg-clone-action:hover,.wpstg-dropdown-action:hover{background:rgba(0,0,0,.05)}.wpstg-dropdown-action{background:transparent;border:0 solid #000;box-shadow:none;color:#3e3e3e;outline:none}.wpstg-remove-clone:hover{color:#e01e5a}.wpstg-clone-action:last-child{border:none}.wpstg-clone:hover .wpstg-clone-action{display:inline-block}#wpstg-show-error-details:focus,#wpstg-workflow .wpstg-clone-action{box-shadow:none;outline:none}.wpstg-link-btn{background:#45a1c9;color:#fff;display:inline-block;padding:5px 10px;text-decoration:none;transition:all .2s ease-in-out;vertical-align:baseline}.wpstg-link-btn:focus,.wpstg-link-btn:hover{box-shadow:none;color:#fff;outline:none}#wpstg-workflow .wpstg-link-btn:active{vertical-align:baseline}.wpstg-link-btn[disabled]{background:#777!important;border-color:#555!important;pointer-events:none}#wpstg-cancel-cloning,#wpstg-cancel-cloning-update{margin-top:5px}#wpstg-cancel-cloning.success{background:#64dd58;border-color:#54bd4a}#wpstg-error-details,#wpstg-error-wrapper{clear:both;display:none;font-size:13px;padding-top:10px}#wpstg-show-error-details{color:#555;display:inline-block;margin-left:5px;text-decoration:none;transition:color .2s ease-in-out}#wpstg-show-error-details:hover{color:#1d94cf}#wpstg-error-details{border-left:5px solid #e01e5a;padding:10px;width:500px}#wpstg-try-again{display:none}#wpstg-home-link{float:right}.wpstg-loader{content:url(../../img/loading.gif);display:none}.wpstg-loader.wpstg-finished{background-color:#00c89a;border-radius:3px;color:#fff;content:"Finished";display:block;margin-top:0;padding:2px 10px}#wpstg-workflow{clear:both;float:left;max-width:800px;min-height:380px;min-width:500px;padding-bottom:20px;padding-right:20px;padding-top:20px;position:relative}#wpstg-sidebar{display:block;float:left;margin-left:10px;max-width:400px}#wpstg-removing-clone.loading:after,#wpstg-workflow.loading:after{background:hsla(0,0%,100%,.7);content:"Loading... may take a while for huge websites";display:block;font-size:20px;height:100%;left:0;padding-top:100px;position:absolute;text-align:center;top:0;width:100%;z-index:99}#wpstg-removing-clone.loading:after{content:"REMOVING"!important}#wpstg-existing-clones,#wpstg-removing-clone{position:relative}#wpstg-existing-clones h3{color:#3e3e3e}#wpstg-removing-clone .wpstg-tab-section{display:block}.wpstg-progress-bar{background-color:#d6d8d7;height:27px;max-width:900px;padding:0}.wpstg-progress{background:#3fa5ee;float:left;overflow:hidden}.wpstg-progress,.wpstg-progress-files{color:#fff;height:100%;line-height:25px;text-align:center;transition:width .6s ease;width:0}.wpstg-progress-files{background:#16b4f0}#wpstg-clone-path.wpstg-error-input,#wpstg-new-clone-id.wpstg-error-input{border:1px solid #e01e5a;box-shadow:0 0 2px rgba(255,66,53,.8)}#wpstg-new-clone-id{margin-left:15px;max-width:100%;width:450px}#wpstg-new-clone{background:#25a1f0;border-color:#2188c9}#wpstg-new-clone:hover{background:#259be6;border-color:#2188c9}#wpstg-clone-path{margin-left:10px;width:350px}.wpstg-error-msg{color:#e01e5a}#wpstg-clone-id-error{background-color:#f0f8ff;display:block;margin:20px;padding:10px}#wpstg-start-cloning+.wpstg-error-msg{display:block;margin-top:5px}.wpstg-size-info{color:#999;font-weight:400;left:2px;position:relative}.wpstg-db-table .wpstg-size-info{top:2px}.wpstg-db-table:hover{background-color:#f0f8ff}#wpstg-workflow #wpstg-start-cloning{margin-left:5px;vertical-align:baseline}.wpstg-tabs-wrapper{margin:10px 0;max-width:640px}#wpstg-path-wrapper{border-bottom:2px dashed #ccc;margin-bottom:10px;padding-bottom:10px}.wpstg-tab-section{border-bottom:1px solid #ddd;border-left:none;border-right:none;display:none;padding:0 36px;width:calc(100% - 72px)}.wpstg-tab-section:after{clear:both;content:"";display:block}.wpstg-tab-header{border-bottom:1px solid #ddd;border-left:none;border-right:none;color:#444;display:block;font-size:16px;font-weight:700;padding:10px;text-decoration:none}.wpstg-tab-triangle{animation:transform .5s;border-bottom:5px solid transparent;border-left:10px solid;border-top:5px solid transparent;cursor:pointer;display:inline-block;height:0;margin-right:12px;margin-top:-3px;transition:transform .2s;vertical-align:middle;width:0}.wpstg-tab-triangle.wpstg-no-icon{border-bottom:0 solid;border-left:0 solid;border-top:0 solid;height:auto;margin-right:2px;vertical-align:auto;width:auto}.wpstg-tab-triangle.wpstg-rotate-90{transform:rotate(90deg)}.wpstg-tab-header:focus{box-shadow:none;color:#444;outline:none}#wpstg-large-files{border:1px dashed #ccc;display:none;font-size:12px;margin-top:20px;padding:10px;position:relative}#wpstg-large-files h3{background:#fff;left:5px;margin:0;padding:0 5px;position:absolute;top:-10px}.wpstg-subdir{display:none;margin-left:20px}.wpstg-subdir.wpstg-push{display:block;margin-left:20px}.wpstg-dir a.disabled{color:#888;cursor:default;text-decoration:none}.wpstg-check-subdirs{display:inline-block;margin-left:10px}.wpstg-notice-alert{background-color:#e01e5a;color:#fff}.wpstg-notice--white,.wpstg-notice-alert{display:block;margin-top:10px;max-width:600px;padding:20px}.wpstg-notice--white{background-color:#fff}.wpstg-notice-alert a,.wpstg-notice-alert h3{color:#fff}.wpstg-header{border-bottom:1px solid #dfdfdf;clear:both;font-size:19px;font-weight:400;line-height:1.6em;padding-top:10px}#wpstg-clone-label{font-size:14px;font-weight:700}.wpstg-log-details{background-color:#000;border:1px solid #fff;color:silver;font-family:monospace;font-size:12px;height:300px;line-height:15px;margin-top:15px;max-width:650px;overflow:scroll;padding:3px;white-space:nowrap}#wpstg-finished-result{display:none}#wpstg-remove-cloning{background:#ff3428;border-color:#e72f24;margin-top:5px}#wpstg-success-notice{background-color:#fff;border:1px solid #ccc;margin-top:20px;max-width:900px;padding:10px}.wpstg_beta_notice{margin-bottom:20px}.wpstg-sysinfo{height:700px;width:700px}.wpstg-form-table .col-title label{font-weight:600}.wpstg-form-table td:first-child{width:30%}.wpstg-share-button-container{margin:5px 0}.wpstg-share-button-container p{margin:0 0 10px}.wpstg-share-button{display:inline-block}.wpstg-share-button a{text-decoration:none}.wpstg-share-button .wpstg-share{-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;color:#fff;display:inline;font-family:sans-serif;font-size:12px;font-weight:700;padding:4px 8px;text-align:center;text-decoration:none}.wpstg-share-button-twitter .wpstg-share{background-color:#00abf0}.wpstg-share-button-facebook .wpstg-share{background-color:#3b5998}.wpstg-share-button-googleplus .wpstg-share{background-color:#f53424}.wpstg-share-button-facebook .share:active,.wpstg-share-button-googleplus .share:active,.wpstg-share-button-twitter .share:active{background-color:#353535}#wpstg-check-space{margin-left:8px}#wpstg-welcome li{font-size:18px;line-height:29px;list-style:none!important;padding-left:23px;position:relative}#wpstg-welcome{background-color:#fff;margin-right:20px;margin-top:20px}.wpstg-heading-pro{font-weight:700}.wpstg-h2{font-size:30px;line-height:2.5rem;margin-bottom:1.2rem;margin-top:0}#wpstg-welcome li:before{background:url(data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%2377B227%22%20d%3D%22M1671%20566q0%2040%2D28%2068l%2D724%20724%2D136%20136q%2D28%2028%2D68%2028t%2D68%2D28l%2D136%2D136%2D362%2D362q%2D28%2D28%2D28%2D68t28%2D68l136%2D136q28%2D28%2068%2D28t68%2028l294%20295%20656%2D657q28%2D28%2068%2D28t68%2028l136%20136q28%2028%2028%2068z%22%2F%3E%3C%2Fsvg%3E) left .4em no-repeat;background-size:contain;color:#77b227;content:"";height:100%;left:0;position:absolute;top:-2px;width:1em}.wpstg-h1{font-size:2.5em;letter-spacing:normal;line-height:3.68rem;margin-bottom:1.35rem}.wpstg--swal2-content{color:#3e3e3e}.wpstg--swal2-content h1{color:#444}#wpstg-welcome h2{margin:0 0 15px}#wpstg-welcome .wpstg-footer{clear:both;font-style:italic;margin-top:20px}#wpstg-footer{clear:both;margin-right:10px;margin-top:20px;padding-top:50px}#wpstg-footer a{text-decoration:none}#wpstg-footer li{list-style:circle;margin-bottom:2px}#wpstg-footer ul{margin-left:15px;margin-top:0}.wpstg-footer--title{margin-left:15px}.wpstg-staging-info{color:#3e3e3e;font-size:12px;margin-top:8px}.wpstg-staging-info a{color:#3e3e3e}.wpstg-staging-info li{margin-bottom:2px}.wpstg-bold{font-weight:600}#wpstg-processing-status{float:left;font-size:13px;font-weight:400;margin-top:5px}#wpstg-processing-timer{float:right;font-size:13px;font-weight:400;margin-top:5px}#wpstg-report-issue-button{background-color:#fff;border:1px solid #e01e5a;color:#e01e5a;margin-left:30px}#wpstg-report-issue-button:hover{background-color:#dc2b62;color:#fff}.wpstg-blue-primary{-webkit-appearance:none;background:#25a1f0;border:1px solid #2188c9;border-radius:3px;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-size:13px;height:28px;margin:0;padding:0 10px 1px;text-decoration:none;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799;white-space:nowrap}a.wpstg-blue-primary{height:auto;padding:5px 10px}.wpstg-blue-primary:hover{background-color:#259be6}.wpstg-report-issue-form{background-color:#fff;border:1px solid #e8e8e8;border-radius:3px;box-shadow:inset 0 1px 0 0 #fff;display:none;padding:15px 15px 10px;position:absolute;right:0;top:35px;width:300px;z-index:999}@media (max-width:600px){.wpstg-report-issue-form{position:relative}}.wpstg-report-show{display:block}.wpstg-field input[type=text],.wpstg-field textarea{font-weight:400;line-height:1.4;margin-bottom:4px;width:100%}.wpstg-report-email,.wpstg-report-hosting-provider{border-radius:3px;font-size:.8rem;font-weight:400;height:2.3rem;line-height:2.3rem;margin-bottom:4px;padding:0 10px;width:100%}.wpstg-report-description{border-radius:3px;font-size:.8rem;padding:6px 10px;resize:none}.wpstg-report-privacy-policy{font-size:12px;margin-bottom:15px}#wpstg-report-cancel{float:right;font-weight:700;margin-right:5px}#wpstg-success-button{font-weight:700}.wpstg-message{background-color:#f5e0de;border-radius:3px;box-sizing:border-box;-moz-box-sizing:border-box;color:rgba(0,0,0,.6);height:auto;margin:10px 0;min-height:18px;padding:6px 10px;position:relative}.wpstg-message.wpstg-error-message{background-color:#f5e0de;color:#b65147;font-size:12px}.wpstg-message.wpstg-success-message{background-color:#d7f8e0;color:#515151}.wpstg-message p{font-size:13px;margin:3px 0}.wpstg-warning{background-color:#ffb804;color:#fff;display:block;margin:10px 10px 10px 0;padding:10px}.wpstg-warning a{color:#fff;font-weight:700;text-decoration:underline}.wpstg-error{background-color:#e01e5a!important;border-color:transparent!important;box-shadow:none!important;color:#fff;display:block;margin:10px 10px 10px 0!important;padding:10px!important}.wpstg-error a{color:#fff;font-weight:700;text-decoration:underline}#wpstg-resume-cloning{display:none}#wpstg-external-db th{text-align:left;width:120px}#wpstg-db-connect{font-weight:400}#wpstg-db-status{border:1px solid transparent;border-radius:4px;display:block;margin-bottom:20px;margin-top:5px;padding:5px;text-align:center;text-decoration:none}.wpstg-text-field>#wpstg-db-status{margin-left:150px;margin-top:8px;min-width:300px}.wpstg-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.wpstg-failed{background-color:#f2dede;border-color:#ebccd1;color:#a94442}#wpstg_select_tables_cloning{font-size:13px;height:600px}#wpstg_select_tables_pushing{font-size:13px;height:400px}#wpstg-update-notify{background-color:#e01e5a;color:#fff;font-size:14px;line-height:normal;padding:10px}#wpstg-update-notify a{color:#fff;font-weight:700}.wpstg-pointer{cursor:pointer}.wpstg--tab--header{background-color:#fff;border-radius:2px;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.02);color:#3e3e3e;position:relative;transition:border-color .2s ease-in-out}.wpstg--tab--header ul{display:flex}.wpstg--tab--header ul li{margin-bottom:0;margin-right:1em}.wpstg--tab--header ul li:last-child{margin-right:0}.wpstg--tab--header a{color:#c4c4c4;cursor:pointer;display:inline-block;font-size:18px;min-width:150px;padding:1em 1.25em 9px;text-align:center}.wpstg--tab--header a.wpstg--tab--active,.wpstg--tab--header a:hover{border-bottom:.4em solid #25a1f0;color:#25a1f0}.wpstg--tab--header a:hover{background-color:#fefefe}.wpstg--tab--content{display:none}.wpstg--tab--active{display:block}.wpstg--text--strong,.wpstg--text--strong *{font-weight:700!important}.wpstg--text--danger{color:#a94442}.wpstg--tooltip{display:inline-block;margin-left:5px;position:relative}.wpstg--tooltip.wpstg--tooltip-normal{border-bottom:0;margin-left:0}.wpstg--tooltip .wpstg--tooltiptext{background-color:#fff;border-radius:3px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.16);-moz-box-shadow:0 1px 4px rgba(0,0,0,.16);box-shadow:0 1px 4px rgba(0,0,0,.16);color:#505050;font-weight:400;padding:12px;position:absolute;text-align:left;visibility:hidden;width:300px;z-index:1}.wpstg--tooltiptext-backups{left:-150%;margin-left:-56px;margin-top:4px;top:100%;width:120px}.wpstg--tooltip.wpstg--exclude-rules--tooltip{border-bottom:0 solid transparent}.wpstg--tooltip.wpstg--exclude-rules--tooltip>.wpstg--tooltiptext{margin-left:-150px;margin-top:0}.wpstg--tooltip .wpstg--tooltiptext-backups:after{border:5px solid transparent;border-bottom-color:#fff;bottom:100%;content:" ";left:50%;margin-left:25px;position:absolute}.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow{margin-top:6px}.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow:after{border:5px solid transparent;border-bottom-color:#fff;bottom:100%;content:" ";left:50%;margin-left:-18px;position:absolute}.wpstg--snaphot-restore-table tr{line-height:12px}.wpstg-beta-notice{background-color:#b0e8b0;border-radius:3px;margin-bottom:20px;padding:7px}#wpstg-backup-name{font-size:1.875em;font-weight:600}#wpstg_select_tables_cloning option:checked,#wpstg_select_tables_pushing option:checked{-webkit-appearance:menulist-button;background-image:linear-gradient(0deg,#1e90ff,#1e90ff)}.wpstg--btn--cancel{color:#fff;font-size:16px;height:auto;line-height:normal;margin-bottom:1.5em;padding:.5em}.wpstg--btn--cancel,.wpstg--btn--cancel:hover{background:#ff3428;border-color:#e72f24}.wpstg--process--content>.wpstg--swal2-html-container{padding:4em 2em!important}.wpstg--modal--error--logs,.wpstg--modal--process--logs{background:#fff;border:1px solid #a8a8a8;border-radius:3px;display:none;height:300px;margin-top:1em;overflow:auto;padding-left:10px;padding-top:10px;text-align:justify}.wpstg--modal--error--logs{height:auto;max-height:300px}.wpstg--modal--process--logs p{font-size:12px;white-space:nowrap}.wpstg--modal--process--logs p.wpstg--modal--process--msg--info{color:#222}.wpstg--modal--process--logs p.wpstg--modal--process--msg--debug{color:#757575}.wpstg--modal--process--title{color:#565656;margin:.25em 0}.wpstg--modal--process--subtitle{color:#565656;margin:.5em 0}.wpstg--modal--error--logs>p{color:#222;font-size:14px;text-align:left}.wpstg--modal--error--logs p,.wpstg--modal--process--logs p{margin:0 0 2px}.wpstg--modal--process--msg--critical,.wpstg--modal--process--msg--error{color:#e01e5a}.wpstg--modal--process--msg--warning{color:#ff8c00}.wpstg--modal--process--msg-found{color:#e01e5a;font-size:16px;font-weight:700}.wpstg--modal--delete{color:#565656;margin-top:8px;text-align:left}.wpstg-swal-popup .wpstg--swal2-cancel.wpstg--btn--cancel{margin-bottom:0;text-shadow:none!important}.wpstg-swal-popup .wpstg-loader{display:inline-block!important}.wpstg--modal--process--generic-problem{border-left:5px solid #e01e5a;display:none;margin:.5em 0}.wpstg--modal--process--logs--tail{background:none;border:none;color:#565656;cursor:pointer;font-size:16px;text-decoration:underline}.wpstg--modal--backup--import--upload--title{color:#3e3e3e}.wpstg--modal--backup--import--configure,.wpstg--modal--backup--import--upload--container input[type=file],.wpstg--modal--backup--import--upload--status{display:none}#wpstg--backups--import--file-list{font-size:14px;font-weight:700}#wpstg--backups--import--file-list-empty{color:#e01e5a}.wpstg--modal--backup--import--filesystem label{font-size:14px}.wpstg--modal--backup--import--filesystem button{margin-bottom:20px}.wpstg--modal--backup--import--upload{color:#505050;min-height:30px;position:relative}.wpstg--modal--backup--import--upload--container{background-color:#f4fbff;border:3.5px dashed #dedede;border-radius:10px;margin:.5em;min-height:130px;padding:1em .5em;position:relative;transition:background-color .3s ease,color .3s ease}.wpstg--modal--backup--import--upload--container.wpstg--has-dragover span.wpstg--drop{display:inline-flex}.wpstg--modal--backup--import--upload--container input[type=file]{display:none}.wpstg--modal--backup--import--upload--container img{align-self:center;border:none;margin-top:10px;width:4em}.wpstg--modal--backup--import--upload--container span{margin-top:1em}.wpstg--backup--import--options>button{align-self:center;height:auto;line-height:normal;margin-top:1em;padding:1em;width:185px}.wpstg--backup--import--options{display:flex;justify-content:center;position:relative}.wpstg--backup--import--options ul{display:none}.wpstg--backup--import--options.wpstg--show-options ul{background:#25a1f0;border-color:#2188c9;border-radius:0 0 3px 3px;border-width:1px;box-sizing:border-box;display:block;margin:54px 0 0;padding:0;position:absolute;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799;width:185px}.wpstg--backup--import--options.wpstg--show-options ul li{border-bottom:.1em solid #25a1f0;margin:0}.wpstg--backup--import--options.wpstg--show-options ul li:hover{background-color:#25a1f0}.wpstg--backup--import--options.wpstg--show-options ul li:last-child{border-bottom:none}.wpstg--backup--import--options ul li button{background:none;border:none;color:#fff;cursor:pointer;height:40px;line-height:40px;margin:0;width:100%}.wpstg--backup--import--options ul li button:hover{background-color:#259be6}.wpstg--modal--backup--import--search-replace--info{display:flex;flex-direction:row;margin:1em 0}.wpstg--modal--backup--import--info p{margin:0;text-align:left}.wpstg--modal--backup--import--search-replace--wrapper button{align-self:center}.wpstg--import--advanced-options--button{border:0;border-radius:3px;cursor:pointer;font-size:18px;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.wpstg--modal--backup--import--search-replace--new{background-color:#25a1f0;color:#fff}.wpstg--modal--backup--import--search-replace--remove{background-color:#25a1f0;color:#fff;height:22px;margin-left:5px;width:22px}.wpstg--modal--backup--import--search-replace--input-group:first-child button{display:none}.wpstg--modal--backup--import--search-replace--input--container{display:flex;flex:1;flex-direction:column}.wpstg--modal--backup--import--search-replace--input-group{border-bottom:6px solid #f1f1f1;margin-bottom:10px;width:100%}.wpstg--modal--backup--import--search-replace--input-group input{border:1px solid #dedede;border-radius:3px;color:#666;display:inline-block;line-height:10px;margin-bottom:12px;min-width:250px;padding:8px;width:calc(50% - 20px)}.wpstg--modal--import--upload--process{align-items:center;color:#333;display:none;height:30px;justify-content:center;left:0;margin-bottom:20px;margin-top:20px;overflow:hidden;position:relative;text-indent:1em;top:0;white-space:nowrap;width:100%}.wpstg--modal--import--upload--progress{background:#98d452;border-radius:4px;color:#fff;height:100%;left:0;position:absolute;top:0}.wpstg--modal--import--upload--progress--title{z-index:9}.wpstg-fieldset:disabled{border-top:1px solid #fff;margin-top:20px;opacity:.8}.wpstg-fieldset{padding-left:20px}.wpstg-dark-alert{background-color:#0e86d9;color:#fff;font-weight:700;margin-top:0;padding:15px}.wpstg-dark-alert .wpstg-button--cta-red{margin-left:10px}.wpstg-form-group{align-items:center;display:block;margin-bottom:8px;width:100%}.wpstg-form-group>label{display:block;font-weight:700}.wpstg-text-field>input{display:block;line-height:1.5;width:300px}.wpstg-text-field>.wpstg-code-segment{margin-top:4px;min-width:300px}.wpstg-form-group>.wpstg-checkbox{position:relative}.wpstg-form-group>.wpstg-checkbox>input[type=checkbox]{left:150px}.wpstg-ml-4{margin-left:4px}#wpstg-advanced-settings hr{margin:20px 0}.wpstg-form-row{display:block}.wpstg-form-row input,.wpstg-form-row label{display:table-cell;margin-bottom:3px;margin-top:3px;padding-left:5px;padding-right:5px}.wpstg-form-row input{width:400px}.wpstg-form-row label{font-weight:700;white-space:nowrap;width:1px}#wpstg-db-connect-output #wpstg-db-status{width:390px}.wpstg-fs-14{font-size:14px}.wpstg-code-segment{display:block}.wpstg-form-group>.wpstg-checkbox{min-width:100%;width:100%}.wpstg-form-group>.wpstg-checkbox>input[type=checkbox]{margin-left:10px}@media only screen and (max-width:768px){.wpstg-form-group>label{min-width:auto;width:auto}.wpstg-text-field>input{width:100%}.wpstg-text-field>.wpstg-code-segment{margin-left:0;min-width:100%}.wpstg-tab-section{max-width:450px;width:calc(100vw - 60px)}}.wpstg-rounded{border-radius:3px}.wpstg-white-border{border:1px solid #fff!important}.wpstg-m-0{margin:0}.wpstg-mt-10px{margin-top:10px!important}.wpstg-mr-10px{margin-right:10px!important}.wpstg-my-10px{margin-bottom:10px!important;margin-top:10px!important}.wpstg-w-100{width:100%}.wpstg-box-shadow{box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.wpstg-float-left{float:left}.wpstg-bold-text{font-weight:700}.wpstg-warning.notice{border-left:4px solid #ffba00}.wpstg-confirmation-label{background-color:#5b9dd9;border-radius:3px;color:#fff;padding:2px}.wpstg-my-6px{margin-bottom:6px;margin-top:6px}.wpstg-mb-10px{margin-bottom:10px}.wpstg-clear-both{clear:both}.wpstg-font-italic{font-style:italic}.wpstg-mt-20px{margin-top:20px}.wpstg-welcome-container{border:2px solid #fff;margin-bottom:20px;padding:20px}.wpstg-ml-30px{margin-left:30px}.wpstg-text-center{text-align:center}.wpstg-feedback-link{text-decoration:none}.wpstg-feedback-span{display:block;margin-bottom:3px}#wpstg-confirm-backup-restore-data{margin:40px;text-align:left}#wpstg-confirm-backup-restore-wrapper{margin:0 30px 30px}#wpstg-confirm-backup-restore-wrapper h3{color:#e01e5a}#wpstg-progress-backup,#wpstg-progress-db{background-color:#3fa5ee}#wpstg-progress-files.wpstg-pro,#wpstg-progress-sr{background-color:#3c9ee4}#wpstg-progress-data,#wpstg-progress-dirs{background-color:#3a96d7}#wpstg-progress-files:not(.wpstg-pro),#wpstg-progress-finishing{background-color:#378cc9}.wpstg-issue-resubmit-confirmation.wpstg--swal2-container,.wpstg-swal2-container.wpstg--swal2-container{z-index:10500}.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-actions,.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-header{display:none}body.toplevel_page_wpstg_backup .wpstg--swal2-container .wpstg--swal2-content,body.toplevel_page_wpstg_clone .wpstg--swal2-container .wpstg--swal2-content{z-index:2}.toplevel_page_wpstg_clone #swal2-content h2{color:#3e3e3e}.toplevel_page_wpstg_clone #swal2-content{line-height:1.5em}div#exportUploadsWithoutDatabaseWarning{background-color:#fafafa;border:1px solid #e3e3e3;border-radius:5px;font-size:.9rem;font-style:italic;margin:10px;padding:10px;text-align:center}.wpstg-advanced-options-dropdown-wrapper{display:none;margin-top:20px}.wpstg--modal--backup--import--search-replace--wrapper{margin-top:20px;text-align:left}.wpstg--modal--backup--import--search-replace--new--wrapper{text-align:center}.wpstg-import-backup-contains li{display:inline-block;margin-bottom:0}.wpstg-import-backup-contains li .wpstg-backups-contains{background-color:#f4f4f4!important;border-radius:3px;color:#979797;font-size:17px;height:18px;width:18px}.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains{background-color:#fff;padding:2px}.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains>.wpstg--dashicons{filter:invert(35%)}.wpstg-import-backup-contains .wpstg--tooltiptext{font-size:13px;left:-25px;padding:5px;text-align:center;width:80px}.wpstg-import-backup-contains-title,ul.wpstg-import-backup-contains{display:inline-block}.wpstg-import-backup-name{display:inline-block;font-weight:700}.wpstg-backup-more-info-toggle{cursor:pointer;display:inline-block;font-size:x-small;font-style:italic}.wpstg-backup-more-info-toggle::selection{background:none}ul.wpstg-import-backup-more-info{background-color:#f6f6f6;border:1px solid #878787;border-radius:3px;cursor:pointer;font-size:14px;margin-bottom:30px;margin-top:10px;padding:7px;text-align:left}ul.wpstg-import-backup-more-info:hover{background-color:#def2ff;border:1px solid #25a1f0}ul.wpstg-import-backup-more-info li{height:20px}.wpstg-backup-list{max-width:800px}.wpstg-backup-list h3{color:#3e3e3e}.wpstg-backup-list ul ul{margin-block-end:1em;margin-block-start:1em}.wpstg-push-confirmation-message{font-size:15px;text-align:justify}.wpstg-settings-row{padding-bottom:10px;padding-top:10px}.wpstg-settings-title{font-weight:600}.wpstg-settings-form-group{align-items:center;display:flex}.wpstg-settings-form-group>.wpstg-settings-message{margin:7px 0 0;padding:0;width:30%}.wpstg-excluded-filters-container{margin-bottom:10px;margin-top:10px;max-width:100%;padding:0;width:100%}.wpstg-excluded-filters-container>table{border-collapse:collapse;border-color:transparent;width:100%}.wpstg-excluded-filters-container td{height:20px;padding-bottom:4px;padding-top:4px}.wpstg-excluded-filters-container h4{margin:0}.wpstg-exclude-filters-foot{display:flex;justify-content:flex-start;padding:0}.wpstg-exclude-filter-dropdown>button:hover{background:#135e96;border:1px solid #135e96}.wpstg-exclude-filter-dropdown>.wpstg-dropdown-menu{width:128px}.wpstg-remove-exclude-rule{background-color:#e01e5a;border:1px solid #e01e5a;border-radius:10px;box-shadow:none;color:#fff!important;cursor:pointer;display:inline-flex;font-size:24px;font-weight:400;height:20px;justify-content:center;line-height:.7;margin-top:5px;outline:none;padding:0;width:20px}.wpstg-remove-exclude-rule:hover{background-color:#e01e5a;border-color:#e01e5a}.wpstg-code-block{background:#f8f8f8;border-radius:2px;font-size:1.2em;margin-top:4px}.wpstg-rule-info{background:#f8f8f8!important}code.wpstg-code{background:#fff;border:1px solid #aaa;color:#e01e5a;display:inline-block;font-size:11px;margin-bottom:1px;padding:2px 4px}.wpstg-exclusion-rule-info{align-items:center;background-color:#ffc107;border:1px solid #ffc107;border-radius:7px;box-shadow:none;color:#fff!important;display:inline-flex;font-size:14px;font-weight:400;height:14px;justify-content:center;outline:none;padding:0;vertical-align:middle;width:14px}.wpstg-exclusion-rule-info:hover{background-color:#ffba0c;border:1px solid #ffba0c}.wpstg-exclude-rule-input{background-color:#fff;border:1px solid #bbb;border-radius:0!important;box-shadow:none;color:#222;display:inline-block;font-size:12px!important;font-weight:400;line-height:1.5;margin-left:4px;margin-top:4px;min-height:24px!important;outline:none!important;padding:2px 6px;transition:all .3s cubic-bezier(.25,.8,.25,1);vertical-align:baseline!important;width:135px}.wpstg-excluded-filters-container tbody>tr:last-child .wpstg-exclude-rule-input{margin-bottom:4px}.wpstg-exclude-rule-input:hover{border:1px solid #999}.wpstg-exclude-rule-input:focus{border:1px solid #25a0f1!important;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)!important}.wpstg-file-size-exclude-select,.wpstg-path-exclude-select{width:135px}.wpstg-file-size-exclude-select-small{width:52px}.wpstg-file-size-exclude-input{width:75px}.wpstg-staging-option-title{margin:15px 0 0}.wpstg-swal-push-container.wpstg--swal2-container{z-index:9995}#wpstg-scanning-files{padding-bottom:5px}#wpstg-scanning-db.wpstg-tab-section,#wpstg-scanning-files.wpstg-tab-section{padding-top:10px}.wpstg-reset-excludes-container{margin:10px 0}.wpstg-swal2-ajax-loader{align-items:center;display:flex;height:150px;justify-content:center;overflow:hidden;width:100%}@keyframes wpstg-loading-icon-anim{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.wpstg-swal2-ajax-loader>img{animation:wpstg-loading-icon-anim 1s linear infinite;-webkit-animation:wpstg-loading-icon-anim 1s linear infinite;height:64px;width:64px}.wpstg-swal2-container .wpstg-tab-section{width:auto!important}#wpstg-no-staging-site-results{margin-top:10px;max-width:375px}li#wpstg-backup-no-results{max-width:500px}#wpstg-no-staging-site-results div,li#wpstg-backup-no-results div{display:inline-block;text-align:center}#wpstg-no-staging-site-results .wpstg--dashicons,li#wpstg-backup-no-results .wpstg--dashicons{filter:invert(50%);margin-top:1px;position:absolute}#wpstg-no-staging-site-results .no-staging-site-found-text,li#wpstg-backup-no-results .no-backups-found-text{color:#5d5d5d;margin-left:20px}@media only screen and (max-width:680px){#wpstg-no-staging-site-results div,li#wpstg-backup-no-results div{width:100%}}#wpstg--modal--backup--download-inner p.wpstg-download-modal-text{color:#565656;font-size:16px}#wpstg--modal--backup--download-inner h2{color:#565656}.wpstg-backup-restore-contains-database,.wpstg-backup-restore-contains-files{display:none}.wpstg-green-button{background:#8bc34a;border:1px solid #78a93f;color:#fff;text-shadow:0 -1px 1px #78a93f,1px 0 1px #78a93f,0 1px 1px #40c921,-1px 0 1px #78a93f}.wpstg-green-button:hover{background:#78a93f}.wpstg-is-dir-loading{display:none;margin-left:8px;margin-top:-2px;position:absolute}.wpstg-ml-8px{margin-left:8px}.wpstg-mb-8px{margin-bottom:8px}.wpstg-btn-danger{background-color:#e01e5a;border:1px solid #e01e5a;color:#fff;text-shadow:none}.wpstg-btn-danger:hover{background:#c0194d;box-shadow:0 1px 4px rgba(0,0,0,.3)}.wpstg-swal2-container.wpstg-swal2-loading>.wpstg--swal2-modal{height:200px}.wpstg-reset-confirmation.wpstg-swal2-container:not(.wpstg-swal2-loading)>.wpstg--swal2-modal{max-width:480px}.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-header{display:none}.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-content{height:auto}.wpstg-reset-confirmation.wpstg-swal2-container>.wpstg--swal2-modal>.wpstg--swal2-content .wpstg-tabs-wrapper{height:auto!important;overflow-y:auto}.wpstg-reset-confirmation.wpstg-swal2-container>.wpstg--swal2-modal>.wpstg--swal2-content{font-size:13px}.wpstg-reset-confirmation.wpstg-swal2-container>.wpstg--swal2-modal>.wpstg--swal2-content .wpstg-dir{margin-bottom:4px}.wpstg-reset-confirmation.wpstg-swal2-container>.wpstg--swal2-modal>.wpstg--swal2-content .wpstg-subdir{margin-top:4px}.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open .wpstg--swal2-modal{height:calc(100vh - 70px)}.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open>.wpstg--swal2-modal>.wpstg--swal2-content .wpstg-tabs-wrapper{height:calc(100vh - 350px)!important}.wpstg--swal2-actions.wpstg--modal--actions>button{font-weight:500;margin-left:4px;margin-right:4px;min-width:80px;text-shadow:none;text-transform:uppercase}.wpstg-swal-popup{max-width:1200px!important}.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-title{color:#a8a8a8}.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-content{color:#a8a8a8;margin-top:8px}.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step,.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line,.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step.wpstg--swal2-active-progress-step{background:#25a1f0}.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line{width:2.75em}.wpstg--dashicons{height:16px;width:16px}.wpstg--dashicons.wpstg-dashicons-grey{filter:invert(20%)}.wpstg--dashicons.wpstg-dashicons-19{height:19px;width:19px}.wpstg--dashicons.wpstg-dashicons-21{height:21px;width:21px}#wpstg--tab--backup #wpstg-step-1{align-items:center;display:flex}#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip,.wpstg-advanced-options .wpstg--tooltip{align-items:center;border-bottom:0 solid transparent;display:inline-flex}.wpstg-advanced-options-site .wpstg--tooltip img.wpstg--dashicons{filter:invert(17%) sepia(0) saturate(1%) hue-rotate(195deg) brightness(97%) contrast(77%)}#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip{align-items:center;border-bottom:0 solid transparent;display:flex}.wpstg--tooltip .wpstg--tooltiptext-backups:after{left:calc(20% + 2px)}.wpstg-listing-single-backup .wpstg--dashicons{height:17px;width:17px}.wpstg-100-width{width:100px}.wpstg-caret{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid;cursor:pointer;display:inline-block;height:0;margin-left:2px;transition:transform .2s;vertical-align:middle;width:0}.wpstg-caret.wpstg-caret-up{transform:rotate(-180deg)}.wpstg-advanced-options-site label{display:block;font-size:16px;margin:.5em 0}#wpstg-confirm-backup-restore-data{font-size:18px;margin:30px 0 0}body.toplevel_page_wpstg_backup .wpstg--swal2-container.wpstg--swal2-backdrop-show,body.toplevel_page_wpstg_clone .wpstg--swal2-container.wpstg--swal2-backdrop-show{background:rgba(0,0,0,.6);z-index:9995}.wpstg-swal-popup.wpstg--swal2-popup{border-radius:8px;color:#3e3e3e;font-family:Verdana,Geneva,Tahoma,sans-serif;padding:24px;z-index:9999}.wpstg-swal-popup .wpstg--swal2-title{color:#3e3e3e;font-size:22px}.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-title{align-self:flex-start;margin-bottom:0;text-align:left}.wpstg-swal-popup .wpstg--swal2-close{right:8px;top:8px;z-index:5}.wpstg-swal-popup .wpstg--swal2-close:focus{outline:none}.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions{justify-content:flex-end}.wpstg-swal-popup .wpstg--swal2-actions>button{border:0;border-radius:4px;font-size:15px;font-weight:900;height:40px;line-height:normal;min-width:100px;padding:10px 12px;text-shadow:none;text-transform:capitalize}.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions>button{margin-left:8px}.wpstg-swal-popup .wpstg--swal2-actions>button.wpstg--swal2-cancel{background:#fff;border:1px solid rgba(29,28,29,.3);color:#1d1c1d;font-weight:500;text-shadow:none;width:100px}.wpstg-swal-popup .wpstg--swal2-actions>button:hover{box-shadow:0 1px 3px 0 rgba(0 0 0 .1)}.wpstg-swal-popup .wpstg--swal2-actions>button.wpstg--swal2-cancel:hover{background:rgba(28,29,28,.04)}#wpstg-backup-name-input{font-size:18px;height:44px}.wpstg-restore-finished-container .wpstg--swal2-title{color:#565656!important}.wpstg-restore-finished-container .wpstg--swal2-content{color:#a8a8a8;margin-top:20px}.wpstg-linear-loader>span[class*=wpstg-linear-loader-item]{animation:wpstg_linear_loader 3s infinite;animation-fill-mode:both;animation-timing-function:cubic-bezier(.03,.615,.995,.415);background:#333;border-radius:100%;display:inline-block;height:6px;margin:12px 2px;width:6px}.wpstg-linear-loader>span.wpstg-linear-loader-item:first-child{animation-delay:1s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(2){animation-delay:.8s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(3){animation-delay:.6s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(4){animation-delay:.4s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(5){animation-delay:.2s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(6){animation-delay:0s}@keyframes wpstg_linear_loader{0%{opacity:0;transform:translateX(-30px)}25%{opacity:1}50%{opacity:0;transform:translateX(30px)}to{opacity:0}}.wpstg--modal--backup--import--upload--content{margin:1em auto;padding:.75em}.wpstg--modal--backup--import--upload--content .wpstg-linear-loader{display:none}#wpstg-multisite-disabled .wpstg-clone{width:355px}#wpstg-free-version-backups .wpstg-clone{text-align:center}#wpstg-free-version-backups .wpstg-clone p{font-size:16px}.wpstg-staging-info li .backup-notes{word-break:break-word}.wpstg--modal--import--upload--progress--title small{font-weight:400}#wpstg-report-issue-wrapper{position:relative}#wpstg-report-issue-wrapper .arrow-up{border-bottom:8px solid #fff;border-left:8px solid transparent;border-right:8px solid transparent;height:0;position:absolute;right:40px;top:-8px;width:0}.notice{margin:10px 20px 0 2px}.wpstg--notice{box-shadow:0 1px 1px rgba(0,0,0,.04);margin:20px 20px 20px 0;padding:1px 12px}.wpstg--error a:hover{color:#eee}.wpstg--error,.wpstg--error a{background:#e01e5a;color:#fff}.wpstg-button{border-radius:2px;cursor:pointer;display:inline-block;font-weight:500;outline:0;padding:2px 10px;text-decoration:none;text-transform:uppercase;transition:background-color .1s ease-in}.wpstg-button.wpstg-save{background-color:#1687a7;color:#fff}.wpstg-button.wpstg-save:hover{background-color:#276678}.wpstg-button.wpstg-button-light{animation:background-color .3s;background-color:#f8f8f8;border:1px solid #eee;color:#333}.wpstg-button.wpstg-button-light:hover{background-color:#e0e0e0;border:1px solid #e0e0e0}.wpstg-buttons .spinner{float:none;margin:0 0 0 5px}.wpstg-button.danger{background-color:#e01e5a;border-color:transparent;border-radius:2px;color:#fff;display:inline-block;text-align:center;text-decoration:none;text-transform:inherit}.wpstg-button.danger:hover{background-color:#c0194d}.wpstg-button--big{border-radius:3px;color:#fff;display:inline-block;font-size:16px;margin-top:20px;min-width:170px;padding:10px;text-align:center;text-decoration:none}.wpstg-button--primary{-webkit-appearance:none;border:1px solid rgba(29,28,29,.3);border-radius:2px;box-sizing:border-box;color:#171717;cursor:pointer;display:inline-block;font-size:13px;line-height:2.15384615;margin:0;min-height:30px;padding:0 10px;text-decoration:none;white-space:nowrap}.wpstg-button--primary:hover{background:rgba(28,29,28,.04);color:#000}.wpstg-button--secondary{background-color:transparent;border:1px solid rgba(29,28,29,.3);border-radius:2px;color:#95a5a6;cursor:pointer;display:inline-block;font-weight:500;outline:0;padding:4px 10px 2px;text-decoration:none;transition:background-color .1s ease-in}.wpstg-button--red{background-color:#e01e5a;border-color:#e01e5a;color:#fff}.wpstg-button--red:hover{background-color:#d02358;border-color:#e0255f;color:#fff}.wpstg-button--cta-red{background-color:#fe008f;border-color:#e01e5a;color:#fff}.wpstg-button--cta-red:hover{background-color:#f31391;border-color:#e0255f;color:#fff}.wpstg-button--blue{background-color:#25a0f1;border-color:#25a0f1;color:#fff}.wpstg-button--blue:hover{background-color:#259be6;border-color:#259be6;color:#fff}#wpstg-button-backup-upgrade{font-size:16px}.wpstg-staging-status{color:#e01e5a}#wpstg-push-changes,#wpstg-save-clone-data,#wpstg-start-updating{margin-left:5px}input.wpstg-textbox{border:1px solid #aaa;border-radius:.25rem;font-size:14px;padding:.25rem .5rem}input.wpstg-textbox:focus{border-color:#259be6;-webkit-box-shadow:0 0 0 .1rem hsla(0,0%,86.7%,.35);box-shadow:0 0 0 .1rem hsla(0,0%,86.7%,.35);outline:0}input.wpstg-textbox::placeholder{color:#888}.wpstg--advance-settings--checkbox{align-items:center;display:flex}.wpstg--advance-settings--checkbox>label{display:inline-block;font-size:14px;font-weight:bolder;width:165px}.wpstg--advance-settings--checkbox>.wpstg--tooltip{border-bottom:0 solid transparent;display:inline-block;margin-left:5px;margin-top:5px;position:relative}.wpstg--advance-settings--checkbox>.wpstg--tooltip>.wpstg--tooltiptext{left:-150px;top:18px}div#wpstg-restore-wait{align-items:center;background:#fff;display:none;flex-direction:column;height:100vh;justify-content:center;left:0;position:fixed;text-align:center;top:0;width:100vw;z-index:99999}div#wpstg-restore-wait .wpstg-title{font-weight:700}div#wpstg-restore-wait div{font-size:16px;margin-top:12px}.resumable-browse{cursor:pointer}.resumable-browse a{text-decoration:underline}.wpstg-upload-text{font-weight:600}.wpstg--modal--backup--import--upload--container.dragover{background-color:#94dc96;color:#fff;transition:background-color .7s}.wpstg--modal--backup--import--upload--container.dragover *{pointer-events:none}.wpstg--modal--backup--import--upload--container.dragover .wpstg-upload-text{display:none}.wpstg--modal--backup--import--upload--container.dragover .wpstg-dragover-text{display:block}.wpstg--modal--backup--import--upload--container .wpstg-dragover-text{display:none}#wpstg-invalid-license-message,#wpstg-invalid-license-message a{color:#e01e5a;font-weight:500;margin-left:6px}#wpstg-sidebar--banner{max-width:200px}@media screen and (max-width:1234px){.wpstg-h2{font-size:24px}#wpstg-welcome li{font-size:14px}}.wpstg-exclamation{background-color:#e01e5a;border-radius:100%;color:#fff;display:inline-block;font-weight:700;height:20px;margin:6px;text-align:center;width:20px}.wpstg--tab--contents{padding-top:1px}.wpstg-swal-show.wpstg--swal2-show{-webkit-animation:wpstg-swal-show .2s!important;animation:wpstg-swal-show .2s!important}@-webkit-keyframes wpstg-swal-show{0%{transform:scale(.3)}to{transform:scale(1)}}@keyframes wpstg-swal-show{0%{transform:scale(.3)}to{transform:scale(1)}}.wpstg-tab-item--vert-center{align-items:center;display:flex}.wpstg-db-comparison-modal{padding-left:10px;padding-right:10px}.wpstg-db-comparison-table{font-size:13px;width:100%}.wpstg-db-comparison-table tbody td{padding-top:6px}.wpstg-db-comparison-table tr>td:first-child,.wpstg-db-comparison-table tr>th:first-child{text-align:left}.wpstg-css-tick{border-bottom:3px solid #78b13f;border-right:3px solid #78b13f;display:inline-block;height:12px;transform:rotate(45deg);width:6px}.wpstg-css-cross{height:16px;left:-2px;position:relative;top:-8px;width:16px}.wpstg-css-cross:after,.wpstg-css-cross:before{background-color:#e01e5a;content:" ";height:17px;position:absolute;width:3px}.wpstg-css-cross:before{transform:rotate(45deg)}.wpstg-css-cross:after{transform:rotate(-45deg)}.wpstg-selection-preview{color:rgba(51,34,17,.4);font-size:12px;margin-left:20px}.wpstg-selection-preview.danger{color:#e01e5a}.wpstg--backup-automated{margin-bottom:-5px}.wpstg--dismiss-schedule{cursor:pointer}.wpstg-import-backup-contains.wpstg-listing-single-backup{vertical-align:middle}.wpstg-import-backup-contains.wpstg-listing-single-backup li{padding:2px}.wpstg--modal--backup--manage--schedules--content table{margin:0 auto;width:100%}.wpstg--modal--backup--manage--schedules--title{margin-bottom:10px;margin-top:0;text-align:left}.wpstg--modal--backup--import--upload--title{text-align:center}#wpstg--modal--backup--manage--schedules--content{text-align:left}#wpstg--modal--backup--manage--schedules--content thead{font-weight:700}#wpstg--modal--backup--manage--schedules--content .wpstg--tooltip.wpstg--dismiss-schedule{border-bottom:none}.wpstg--tooltip.wpstg--dismiss-schedule img.wpstg--dashicons{filter:invert(18%) sepia(57%) saturate(6238%) hue-rotate(332deg) brightness(93%) contrast(88%)}#wpstg--modal--backup--manage--schedules--content td{padding-right:25px;padding-top:10px}#wpstg--modal--backup--manage--schedules--content ul{margin-bottom:0;margin-top:0}#wpstg--modal--backup--manage--schedules--content ul li:first-child .wpstg--tooltip{margin-left:0}.wpstg-button:disabled{background-color:#ddd;border:1px solid #cfcfcf;color:#b3b3b3;cursor:not-allowed;text-shadow:none}#wpstg-backup-runs-info{font-size:12px;margin:20px 0 0;padding:0}#wpstg-backup-runs-info li{margin:0}div#wpstg-backup-locked{align-items:center;background:#fff;display:flex;margin-bottom:10px;max-width:770px;padding:15px;width:100%}#wpstg-backup-locked .icon{display:inline-block;height:20px}#wpstg-backup-locked .icon img{animation:wpstg-loading-icon-anim 2s infinite}#wpstg-backup-locked .text{display:inline-block;margin-left:15px}#backup-schedule-current-time{font-size:12px}.wpstg-backup-scheduling-options label{margin-top:17px}.wpstg-backup-scheduling-options .wpstg-storage-option{display:block;font-size:15px;margin:.5em 0}.wpstg-storage-option>span:not(.wpstg-storage-settings){display:inline-block;width:150px}.wpstg-storages-postbox{background-color:#fff;border:1px solid #ccc;display:none;margin-bottom:8px;margin-top:8px;padding:16px 8px}.wpstg-storages-postbox a{margin-right:8px;padding:8px;text-decoration:none}.wpstg-storage-postbox{background-color:#fff;border-bottom:1px solid #ccc;border-left:1px solid #ccc;border-right:1px solid #ccc;padding:4px 16px}.wpstg-storages-postbox a.wpstg-storage-provider-active{background:#25a1f0;color:#fff;cursor:default;font-weight:700}.wpstg-storages-postbox a.wpstg-storage-provider-disabled{color:#999;cursor:not-allowed}.wpstg-provider-revoke-form{display:inline;margin-bottom:12px;margin-top:12px}.wpstg-provider-settings-form{margin-top:10px}.wpstg-provider-settings-form strong{display:block;margin:8px 0}.wpstg-provider-settings-form p{margin:0 0 8px}.wpstg-provider-settings-form fieldset{margin:0 0 16px;padding:0}.wpstg-provider-settings-form fieldset p{font-size:12px;margin:0;padding:0}.wpstg-provider-settings-form fieldset label{display:block;margin-bottom:2px}.wpstg-provider-settings-form fieldset input{font-size:12px}.wpstg-provider-settings-form .wpstg-link-btn.wpstg-blue-primary{text-shadow:none}.wpstg-btn-google{align-items:center;border-radius:2px;border-width:0;box-shadow:0 1px 3px rgba(0,0,0,.6);box-sizing:border-box;color:#555;display:inline-flex;font-family:Roboto;font-size:14px;font-weight:700;height:40px;line-height:40px;margin-right:10px;outline:none;padding:8px 16px 8px 8px;text-decoration:none;transition:background-color .3s}.wpstg-btn-google img{height:18px;margin-left:5px;margin-right:12px;width:18px}#wpstg-custom-google-credentials{margin-top:20px}.wpstg-fieldset .wpstg-with-icon{align-items:center;display:inline-flex}.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon{margin-left:8px}.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon img{height:16px;width:16px}#wpstg-btn-provider-revoke{border-radius:2px}#wpstg--js--translations{text-decoration:underline}
|
2 |
/*# sourceMappingURL=wpstg-admin.min.css.map */
|
1 |
+
@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../../fonts/roboto-v29-latin-regular.eot);src:local(""),url(../../fonts/roboto-v29-latin-regular.eot?#iefix) format("embedded-opentype"),url(../../fonts/roboto-v29-latin-regular.woff2) format("woff2"),url(../../fonts/roboto-v29-latin-regular.woff) format("woff"),url(../../fonts/roboto-v29-latin-regular.ttf) format("truetype"),url(../../fonts/roboto-v29-latin-regular.svg#Roboto) format("svg")}.wpstg--violet{color:#9d37ae}.wpstg-border--violet{border:1px solid #9d37ae}.wpstg--red{color:#e01e5a}.wpstg-cta--red{color:#fe008f}.wpstg--blue{color:#24a1f0}.wpstg--darkblue{color:#0e86d9}.wpstg--green{color:#83c11f}.wpstg--grey{color:#3e3e3e}.wpstg--darkgrey{color:#1b1b1b}.wpstg--filter--svg{filter:invert(24%) sepia(11%) saturate(558%) hue-rotate(169deg) brightness(97%) contrast(91%)}body.toplevel_page_wpstg_clone,body.wp-staging-pro_page_wpstg-license,body.wp-staging-pro_page_wpstg-settings,body.wp-staging-pro_page_wpstg-tools,body.wp-staging-pro_page_wpstg_backup{background-color:#f3f5f7}#wpstg-tab-container ul{background:#f1f1f1;float:left;list-style:none;margin:0;padding:0}#wpstg-tab-container ul li:first-child.selected-tab{border-top:none}#wpstg-tab-container ul li a.selected-tab{font-weight:700;text-decoration:none}#wpstg-tab-container .row{padding-bottom:12px;padding-top:10px}.wpstg-tabs-container .nav-tab-wrapper{padding:0}#wpstg-tab-container .row label strong,#wpstg-tab-container .row strong{font-weight:700}.wpstg-tabs a{padding:5px}#wpstg-tab-container>ul>li.wpstg-tabs.active{background-color:#fff}#wpstg_settingsgeneral_header .row:nth-child(3),#wpstg_settingsgeneral_header .row:nth-child(4){display:none}#wpstg-tab-container .wpstg-settings-panel{overflow:auto;padding:0 20px 20px}#wpstg-tab-container .wpstg-form-table th{color:#484848;font-size:14px;font-weight:700;line-height:1.3;padding:20px 10px 20px 0;text-align:left;vertical-align:top;width:30%}#wpstg-tab-container .wpstg-form-table tr{border-bottom:1px solid #e7e7e7}#wpstg-tab-container span.description{color:#484848;display:block;font-size:13px;font-style:normal;font-weight:400;margin-top:7px}#wpstg-tab-container .col-title{color:#484848}@media only screen and (max-width:680px){#wpstg-tab-container ul{float:none}#wpstg-tab-container .wpstg-form-table tr>th{width:100%}#wpstg-tab-container span.description{font-size:14px}#wpstg-tab-container .wpstg-form-table tr>td,#wpstg-tab-container .wpstg-form-table tr>th{padding:10px}}#wpstg-tab-container ul li{margin-bottom:0}#wpstg-tab-container ul li a{border-bottom:1px solid #e7e7e7;border-left-style:solid;border-left-width:0;border-right-style:solid;border-right-width:0;border-top:1px solid #fff;color:#0097df;display:block;font-weight:700;padding:10px 4px 10px 14px;text-decoration:none}#wpstg-tab-container ul li a:hover{background-color:#e5e5e5;color:#777}.wpstg-logo{display:block;float:left;font-size:16px;padding-top:20px;width:220px}.wpstg-logo img{max-width:212px}.wpstg-version{color:#9b9b9b;display:block;padding-top:40px}.wpstg_admin .nav-tab{color:#3c3c3c}#wpstg-tab-container table tbody tr:first-child>th>div{font-size:20px}#wpstg-clonepage-wrapper{margin-bottom:20px;width:98%}@media screen and (min-width:1090px){#wpstg-clonepage-wrapper{float:left;margin-bottom:20px}}#wpstg-steps{margin-left:20px;margin-top:0}#wpstg-steps li{color:#444;float:left;line-height:20px;padding-right:10px}.wpstg-step-num{border:1px solid #3e3e3e;border-radius:3px;display:inline-block;height:20px;margin-right:5px;text-align:center;width:20px}.wpstg-current-step{font-weight:700}.wpstg-current-step .wpstg-step-num{background:#3e3e3e;color:#eee}.wpstg-box{margin:10px 0;overflow:hidden;padding:10px}.wpstg-box,.wpstg-clone{position:relative;transition:border-color .2s ease-in-out}.wpstg-clone{background-color:#fff;border-radius:3px;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.1);color:#3e3e3e;margin-bottom:10px;padding:16px}.wpstg-clone.active{border-color:#1d94cf}.wpstg-clone-header{align-items:center;display:flex}.wpstg-clone-title{color:#3e3e3e;display:inline-block;font-size:15px;font-weight:700;margin-right:8px;max-width:300px;text-decoration:none}.wpstg-clone-title:hover{color:#111}.wpstg-clone-labels{display:inline-block}.wpstg-clone-labels .wpstg-clone-label{background:#8bc34a;border-radius:3px;color:#fff;display:inline-block;font-size:11px;margin-right:4px;padding:1px 4px}.wpstg-clone-actions{display:flex;margin-left:auto;margin-top:5px}.wpstg-clone-actions .wpstg-dropdown-toggler{background:#25a1f0;border-radius:2px;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.2);color:#fff;font-size:14px;padding:6px 10px;text-decoration:none}.wpstg-clone-actions .wpstg-dropdown-toggler:hover{background:#002648;color:#fff}.wpstg-dropdown{position:relative}.wpstg-dropdown>.wpstg-dropdown-menu{background:#fff;border-radius:2px;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.2);display:none;flex-direction:column;padding:8px;position:absolute;right:0;top:calc(100% + 4px);width:100px;z-index:1000}.wpstg-dropdown>.wpstg-dropdown-menu.wpstg-menu-dropup{bottom:100%;top:auto;transform:translate3d(0,-3px,0)}.wpstg-dropdown>.wpstg-dropdown-menu.shown{display:flex}.wpstg-clone-action,.wpstg-dropdown-action{border-bottom:1px solid #f3f3f3;border-radius:3px;color:#3e3e3e;padding:6px 8px;position:relative;text-decoration:none;transition:color .2s ease-in-out}.wpstg-clone-action:hover,.wpstg-dropdown-action:hover{background:rgba(0,0,0,.05)}.wpstg-dropdown-action{background:transparent;border:0 solid #000;box-shadow:none;color:#3e3e3e;outline:none}.wpstg-remove-clone:hover{color:#e01e5a}.wpstg-clone-action:last-child{border:none}.wpstg-clone:hover .wpstg-clone-action{display:inline-block}#wpstg-show-error-details:focus,#wpstg-workflow .wpstg-clone-action{box-shadow:none;outline:none}.wpstg-link-btn{background:#45a1c9;color:#fff;display:inline-block;padding:5px 10px;text-decoration:none;transition:all .2s ease-in-out;vertical-align:baseline}.wpstg-link-btn:focus,.wpstg-link-btn:hover{box-shadow:none;color:#fff;outline:none}#wpstg-workflow .wpstg-link-btn:active{vertical-align:baseline}.wpstg-link-btn[disabled]{background:#777!important;border-color:#555!important;pointer-events:none}#wpstg-cancel-cloning,#wpstg-cancel-cloning-update{margin-top:5px}#wpstg-cancel-cloning.success{background:#64dd58;border-color:#54bd4a}#wpstg-error-details,#wpstg-error-wrapper{clear:both;display:none;font-size:13px;padding-top:10px}#wpstg-show-error-details{color:#555;display:inline-block;margin-left:5px;text-decoration:none;transition:color .2s ease-in-out}#wpstg-show-error-details:hover{color:#1d94cf}#wpstg-error-details{border-left:5px solid #e01e5a;padding:10px;width:500px}#wpstg-try-again{display:none}#wpstg-home-link{float:right}.wpstg-loader{content:url(../../img/loading.gif);display:none}.wpstg-loader.wpstg-finished{background-color:#00c89a;border-radius:3px;color:#fff;content:"Finished";display:block;margin-top:0;padding:2px 10px}#wpstg-workflow{clear:both;float:left;max-width:800px;min-height:380px;min-width:500px;padding-bottom:20px;padding-right:20px;padding-top:20px;position:relative}#wpstg-sidebar{display:block;float:left;margin-left:10px;max-width:400px}#wpstg-removing-clone.loading:after,#wpstg-workflow.loading:after{background:hsla(0,0%,100%,.7);content:"Loading... may take a while for huge websites";display:block;font-size:20px;height:100%;left:0;padding-top:100px;position:absolute;text-align:center;top:0;width:100%;z-index:99}#wpstg-removing-clone.loading:after{content:"REMOVING"!important}#wpstg-existing-clones,#wpstg-removing-clone{position:relative}#wpstg-existing-clones h3{color:#3e3e3e}#wpstg-removing-clone .wpstg-tab-section{display:block}.wpstg-progress-bar{background-color:#d6d8d7;height:27px;max-width:900px;padding:0}.wpstg-progress{background:#3fa5ee;float:left;overflow:hidden}.wpstg-progress,.wpstg-progress-files{color:#fff;height:100%;line-height:25px;text-align:center;transition:width .6s ease;width:0}.wpstg-progress-files{background:#16b4f0}#wpstg-clone-path.wpstg-error-input,#wpstg-new-clone-id.wpstg-error-input{border:1px solid #e01e5a;box-shadow:0 0 2px rgba(255,66,53,.8)}#wpstg-new-clone-id{margin-left:15px;max-width:100%;width:450px}#wpstg-new-clone{background:#25a1f0;border-color:#2188c9}#wpstg-new-clone:hover{background:#259be6;border-color:#2188c9}#wpstg-clone-path{margin-left:10px;width:350px}.wpstg-error-msg{color:#e01e5a}#wpstg-clone-id-error{background-color:#f0f8ff;display:block;margin:20px;padding:10px}#wpstg-start-cloning+.wpstg-error-msg{display:block;margin-top:5px}.wpstg-size-info{color:#999;font-weight:400;left:2px;position:relative}.wpstg-db-table .wpstg-size-info{top:2px}.wpstg-db-table:hover{background-color:#f0f8ff}#wpstg-workflow #wpstg-start-cloning{margin-left:5px;vertical-align:baseline}.wpstg-tabs-wrapper{margin:10px 0;max-width:640px}#wpstg-path-wrapper{border-bottom:2px dashed #ccc;margin-bottom:10px;padding-bottom:10px}.wpstg-tab-section{border-bottom:1px solid #ddd;border-left:none;border-right:none;display:none;padding:0 36px;width:calc(100% - 72px)}.wpstg-tab-section:after{clear:both;content:"";display:block}.wpstg-tab-header{border-bottom:1px solid #ddd;border-left:none;border-right:none;color:#444;display:block;font-size:16px;font-weight:700;padding:10px;text-decoration:none}.wpstg-tab-triangle{animation:transform .5s;border-bottom:5px solid transparent;border-left:10px solid;border-top:5px solid transparent;cursor:pointer;display:inline-block;height:0;margin-right:12px;margin-top:-3px;transition:transform .2s;vertical-align:middle;width:0}.wpstg-tab-triangle.wpstg-no-icon{border-bottom:0 solid;border-left:0 solid;border-top:0 solid;height:auto;margin-right:2px;vertical-align:auto;width:auto}.wpstg-tab-triangle.wpstg-rotate-90{transform:rotate(90deg)}.wpstg-tab-header:focus{box-shadow:none;color:#444;outline:none}#wpstg-large-files{border:1px dashed #ccc;display:none;font-size:12px;margin-top:20px;padding:10px;position:relative}#wpstg-large-files h3{background:#fff;left:5px;margin:0;padding:0 5px;position:absolute;top:-10px}.wpstg-subdir{display:none;margin-left:20px}.wpstg-subdir.wpstg-push{display:block;margin-left:20px}.wpstg-dir a.disabled{color:#888;cursor:default;text-decoration:none}.wpstg-check-subdirs{display:inline-block;margin-left:10px}.wpstg-notice-alert{background-color:#e01e5a;color:#fff}.wpstg-notice--white,.wpstg-notice-alert{display:block;margin-top:10px;max-width:600px;padding:20px}.wpstg-notice--white{background-color:#fff}.wpstg-notice-alert a,.wpstg-notice-alert h3{color:#fff}.wpstg-header{clear:both;font-size:19px;font-weight:400;line-height:1.6em;padding-top:10px}#wpstg-clone-label{font-size:14px;font-weight:700}.wpstg-log-details{background-color:#000;border:1px solid #fff;color:silver;font-family:monospace;font-size:12px;height:300px;line-height:15px;margin-top:15px;max-width:650px;overflow:scroll;padding:3px;white-space:nowrap}#wpstg-finished-result{display:none}#wpstg-remove-cloning{background:#ff3428;border-color:#e72f24;margin-top:5px}#wpstg-success-notice{background-color:#fff;border:1px solid #ccc;margin-top:20px;max-width:900px;padding:10px}.wpstg_beta_notice{margin-bottom:20px}.wpstg-sysinfo{height:700px;width:700px}.wpstg-form-table .col-title label{font-weight:600}.wpstg-form-table td:first-child{padding-right:20px;width:30%}.wpstg-share-button-container{margin:5px 0}.wpstg-share-button-container p{margin:0 0 10px}.wpstg-share-button{display:inline-block}.wpstg-share-button a{text-decoration:none}.wpstg-share-button .wpstg-share{-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;color:#fff;display:inline;font-family:sans-serif;font-size:12px;font-weight:700;padding:4px 8px;text-align:center;text-decoration:none}.wpstg-share-button-twitter .wpstg-share{background-color:#00abf0}.wpstg-share-button-facebook .wpstg-share{background-color:#3b5998}.wpstg-share-button-googleplus .wpstg-share{background-color:#f53424}.wpstg-share-button-facebook .share:active,.wpstg-share-button-googleplus .share:active,.wpstg-share-button-twitter .share:active{background-color:#353535}#wpstg-check-space{margin-left:8px}#wpstg-welcome li{font-size:18px;line-height:29px;list-style:none!important;padding-left:23px;position:relative}#wpstg-welcome{background-color:#fff;margin-right:20px;margin-top:20px}.wpstg-heading-pro{font-weight:700}.wpstg-h2{font-size:30px;line-height:2.5rem;margin-bottom:1.2rem;margin-top:0}#wpstg-welcome li:before{background:url(data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%2377B227%22%20d%3D%22M1671%20566q0%2040%2D28%2068l%2D724%20724%2D136%20136q%2D28%2028%2D68%2028t%2D68%2D28l%2D136%2D136%2D362%2D362q%2D28%2D28%2D28%2D68t28%2D68l136%2D136q28%2D28%2068%2D28t68%2028l294%20295%20656%2D657q28%2D28%2068%2D28t68%2028l136%20136q28%2028%2028%2068z%22%2F%3E%3C%2Fsvg%3E) left .4em no-repeat;background-size:contain;color:#77b227;content:"";height:100%;left:0;position:absolute;top:-2px;width:1em}.wpstg-h1{font-size:2.5em;letter-spacing:normal;line-height:3.68rem;margin-bottom:1.35rem}.wpstg--swal2-content{color:#3e3e3e}.wpstg--swal2-content h1{color:#444}#wpstg-welcome h2{margin:0 0 15px}#wpstg-welcome .wpstg-footer{clear:both;font-style:italic;margin-top:20px}#wpstg-footer{clear:both;margin-right:10px;margin-top:20px;padding-top:50px}#wpstg-footer a{text-decoration:none}#wpstg-footer li{list-style:circle;margin-bottom:2px}#wpstg-footer ul{margin-left:15px;margin-top:0}.wpstg-footer--title{margin-left:15px}.wpstg-staging-info{color:#3e3e3e;font-size:12px;margin-top:8px}.wpstg-staging-info a{color:#3e3e3e}.wpstg-staging-info li{margin-bottom:2px}.wpstg-bold{font-weight:600}#wpstg-processing-status{float:left;font-size:13px;font-weight:400;margin-top:5px}#wpstg-processing-timer{float:right;font-size:13px;font-weight:400;margin-top:5px}#wpstg-report-issue-button{background-color:#fff;border:1px solid #e01e5a;color:#e01e5a;margin-left:30px}#wpstg-report-issue-button:hover{background-color:#dc2b62;color:#fff}.wpstg-blue-primary{-webkit-appearance:none;background:#25a1f0;border:1px solid #2188c9;border-radius:3px;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-size:13px;height:28px;margin:0;text-decoration:none;white-space:nowrap}.wpstg-blue-primary:hover{background:#127fc6}a.wpstg-blue-primary{height:auto;padding:5px 10px}.wpstg-blue-primary:hover{background-color:#259be6}.wpstg-report-issue-form{background-color:#fff;border:1px solid #e8e8e8;border-radius:3px;box-shadow:inset 0 1px 0 0 #fff;display:none;padding:15px 15px 10px;position:absolute;right:0;top:35px;width:300px;z-index:999}@media (max-width:600px){.wpstg-report-issue-form{position:relative}}.wpstg-report-show{display:block}.wpstg-field input[type=text],.wpstg-field textarea{font-weight:400;line-height:1.4;margin-bottom:4px;width:100%}.wpstg-report-email,.wpstg-report-hosting-provider{border-radius:3px;font-size:.8rem;font-weight:400;height:2.3rem;line-height:2.3rem;margin-bottom:4px;padding:0 10px;width:100%}.wpstg-report-description{border-radius:3px;font-size:.8rem;padding:6px 10px;resize:none}.wpstg-report-privacy-policy{font-size:12px;margin-bottom:15px}#wpstg-report-cancel{float:right;font-weight:700;margin-right:5px}#wpstg-success-button{font-weight:700}.wpstg-message{background-color:#f5e0de;border-radius:3px;box-sizing:border-box;-moz-box-sizing:border-box;color:rgba(0,0,0,.6);height:auto;margin:10px 0;min-height:18px;padding:6px 10px;position:relative}.wpstg-message.wpstg-error-message{background-color:#f5e0de;color:#b65147;font-size:12px}.wpstg-message.wpstg-success-message{background-color:#d7f8e0;color:#515151}.wpstg-message p{font-size:13px;margin:3px 0}.wpstg-warning{background-color:#ffb804;color:#fff;display:block;margin:10px 10px 10px 0;padding:10px}.wpstg-warning a{color:#fff;font-weight:700;text-decoration:underline}.wpstg-error{background-color:#e01e5a!important;border-color:transparent!important;box-shadow:none!important;color:#fff;display:block;margin:10px 10px 10px 0!important;padding:10px!important}.wpstg-error a{color:#fff;font-weight:700;text-decoration:underline}#wpstg-resume-cloning{display:none}#wpstg-external-db th{text-align:left;width:120px}#wpstg-db-connect{font-weight:400}#wpstg-db-status{border:1px solid transparent;border-radius:4px;display:block;margin-bottom:20px;margin-top:5px;padding:5px;text-align:center;text-decoration:none}.wpstg-text-field>#wpstg-db-status{margin-left:150px;margin-top:8px;min-width:300px}.wpstg-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.wpstg-failed{background-color:#f2dede;border-color:#ebccd1;color:#a94442}#wpstg_select_tables_cloning{font-size:13px;height:600px}#wpstg_select_tables_pushing{font-size:13px;height:400px}#wpstg-update-notify{background-color:#e01e5a;color:#fff;font-size:14px;line-height:normal;padding:10px}#wpstg-update-notify a{color:#fff;font-weight:700}.wpstg-pointer{cursor:pointer}.wpstg--tab--header{background-color:#fff;border-radius:2px;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.02);color:#3e3e3e;position:relative;transition:border-color .2s ease-in-out}.wpstg--tab--header ul{display:flex}.wpstg--tab--header ul li{margin-bottom:0;margin-right:1em}.wpstg--tab--header ul li:last-child{margin-right:0}.wpstg--tab--header a{color:#c4c4c4;cursor:pointer;display:inline-block;font-size:18px;min-width:150px;padding:1em 1.25em 9px;text-align:center}.wpstg--tab--header a.wpstg--tab--active,.wpstg--tab--header a:hover{border-bottom:.4em solid #25a1f0;color:#25a1f0}.wpstg--tab--header a:hover{background-color:#fefefe}.wpstg--tab--content{display:none}.wpstg--tab--active{display:block}.wpstg--text--strong,.wpstg--text--strong *{font-weight:700!important}.wpstg--text--danger{color:#a94442}.wpstg--tooltip{display:inline-block;margin-left:5px;position:relative}.wpstg--tooltip.wpstg--tooltip-normal{border-bottom:0;margin-left:0}.wpstg--tooltip .wpstg--tooltiptext{background-color:#fff;border-radius:3px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.16);-moz-box-shadow:0 1px 4px rgba(0,0,0,.16);box-shadow:0 1px 4px rgba(0,0,0,.16);color:#505050;font-weight:400;padding:12px;position:absolute;text-align:left;visibility:hidden;width:300px;z-index:1}.wpstg--tooltiptext-backups{left:-150%;margin-left:-56px;margin-top:4px;top:100%;width:120px}.wpstg--tooltip.wpstg--exclude-rules--tooltip{border-bottom:0 solid transparent}.wpstg--tooltip.wpstg--exclude-rules--tooltip>.wpstg--tooltiptext{margin-left:-150px;margin-top:0}.wpstg--tooltip .wpstg--tooltiptext-backups:after{border:5px solid transparent;border-bottom-color:#fff;bottom:100%;content:" ";left:50%;margin-left:25px;position:absolute}.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow{margin-top:6px}.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow:after{border:5px solid transparent;border-bottom-color:#fff;bottom:100%;content:" ";left:50%;margin-left:-18px;position:absolute}.wpstg--snaphot-restore-table tr{line-height:12px}.wpstg-beta-notice{background-color:#b0e8b0;border-radius:3px;margin-bottom:20px;padding:7px}#wpstg-backup-name{font-size:1.875em;font-weight:600}#wpstg_select_tables_cloning option:checked,#wpstg_select_tables_pushing option:checked{-webkit-appearance:menulist-button;background-image:linear-gradient(0deg,#1e90ff,#1e90ff)}.wpstg--btn--cancel{color:#fff;font-size:16px;height:auto;line-height:normal;margin-bottom:1.5em;padding:.5em}.wpstg--btn--cancel,.wpstg--btn--cancel:hover{background:#ff3428;border-color:#e72f24}.wpstg--process--content>.wpstg--swal2-html-container{padding:4em 2em!important}.wpstg--modal--error--logs,.wpstg--modal--process--logs{background:#fff;border:1px solid #a8a8a8;border-radius:3px;display:none;height:300px;margin-top:1em;overflow:auto;padding-left:10px;padding-top:10px;text-align:justify}.wpstg--modal--error--logs{height:auto;max-height:300px}.wpstg--modal--process--logs p{font-size:12px;white-space:nowrap}.wpstg--modal--process--logs p.wpstg--modal--process--msg--info{color:#222}.wpstg--modal--process--logs p.wpstg--modal--process--msg--debug{color:#757575}.wpstg--modal--process--title{color:#565656;margin:.25em 0}.wpstg--modal--process--subtitle{color:#565656;margin:.5em 0}.wpstg--modal--error--logs>p{color:#222;font-size:14px;text-align:left}.wpstg--modal--error--logs p,.wpstg--modal--process--logs p{margin:0 0 2px}.wpstg--modal--process--msg--critical,.wpstg--modal--process--msg--error{color:#e01e5a}.wpstg--modal--process--msg--warning{color:#ff8c00}.wpstg--modal--process--msg-found{color:#e01e5a;font-size:16px;font-weight:700}.wpstg--modal--delete{color:#565656;margin-top:8px;text-align:left}.wpstg-swal-popup .wpstg--swal2-cancel.wpstg--btn--cancel{margin-bottom:0;text-shadow:none!important}.wpstg-swal-popup .wpstg-loader{display:inline-block!important}.wpstg--modal--process--generic-problem{border-left:5px solid #e01e5a;display:none;margin:.5em 0}.wpstg--modal--process--logs--tail{background:none;border:none;color:#565656;cursor:pointer;font-size:16px;text-decoration:underline}.wpstg--modal--backup--import--upload--title{color:#3e3e3e}.wpstg--modal--backup--import--configure,.wpstg--modal--backup--import--upload--container input[type=file],.wpstg--modal--backup--import--upload--status{display:none}#wpstg--backups--import--file-list{font-size:14px;font-weight:700}#wpstg--backups--import--file-list-empty{color:#e01e5a}.wpstg--modal--backup--import--filesystem label{font-size:14px}.wpstg--modal--backup--import--filesystem button{margin-bottom:20px}.wpstg--modal--backup--import--upload{color:#505050;min-height:30px;position:relative}.wpstg--modal--backup--import--upload--container{background-color:#f4fbff;border:3.5px dashed #dedede;border-radius:10px;margin:.5em;min-height:130px;padding:1em .5em;position:relative;transition:background-color .3s ease,color .3s ease}.wpstg--modal--backup--import--upload--container.wpstg--has-dragover span.wpstg--drop{display:inline-flex}.wpstg--modal--backup--import--upload--container input[type=file]{display:none}.wpstg--modal--backup--import--upload--container img{align-self:center;border:none;margin-top:10px;width:4em}.wpstg--modal--backup--import--upload--container span{margin-top:1em}.wpstg--backup--import--options>button{align-self:center;height:auto;line-height:normal;margin-top:1em;padding:1em;width:185px}.wpstg--backup--import--options{display:flex;justify-content:center;position:relative}.wpstg--backup--import--options ul{display:none}.wpstg--backup--import--options.wpstg--show-options ul{background:#25a1f0;border-color:#2188c9;border-radius:0 0 3px 3px;border-width:1px;box-sizing:border-box;display:block;margin:54px 0 0;padding:0;position:absolute;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799;width:185px}.wpstg--backup--import--options.wpstg--show-options ul li{border-bottom:.1em solid #25a1f0;margin:0}.wpstg--backup--import--options.wpstg--show-options ul li:hover{background-color:#25a1f0}.wpstg--backup--import--options.wpstg--show-options ul li:last-child{border-bottom:none}.wpstg--backup--import--options ul li button{background:none;border:none;color:#fff;cursor:pointer;height:40px;line-height:40px;margin:0;width:100%}.wpstg--backup--import--options ul li button:hover{background-color:#259be6}.wpstg--modal--backup--import--search-replace--info{display:flex;flex-direction:row;margin:1em 0}.wpstg--modal--backup--import--info p{margin:0;text-align:left}.wpstg--modal--backup--import--search-replace--wrapper button{align-self:center}.wpstg--import--advanced-options--button{border:0;border-radius:3px;cursor:pointer;font-size:18px;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.wpstg--modal--backup--import--search-replace--new{background-color:#25a1f0;color:#fff}.wpstg--modal--backup--import--search-replace--remove{background-color:#25a1f0;color:#fff;height:22px;margin-left:5px;width:22px}.wpstg--modal--backup--import--search-replace--input-group:first-child button{display:none}.wpstg--modal--backup--import--search-replace--input--container{display:flex;flex:1;flex-direction:column}.wpstg--modal--backup--import--search-replace--input-group{border-bottom:6px solid #f1f1f1;margin-bottom:10px;width:100%}.wpstg--modal--backup--import--search-replace--input-group input{border:1px solid #dedede;border-radius:3px;color:#666;display:inline-block;line-height:10px;margin-bottom:12px;min-width:250px;padding:8px;width:calc(50% - 20px)}.wpstg--modal--import--upload--process{align-items:center;color:#333;display:none;height:30px;justify-content:center;left:0;margin-bottom:20px;margin-top:20px;overflow:hidden;position:relative;text-indent:1em;top:0;white-space:nowrap;width:100%}.wpstg--modal--import--upload--progress{background:#98d452;border-radius:4px;color:#fff;height:100%;left:0;position:absolute;top:0}.wpstg--modal--import--upload--progress--title{z-index:9}.wpstg-fieldset:disabled{border-top:1px solid #fff;margin-top:20px;opacity:.8}.wpstg-fieldset{padding-left:20px}.wpstg-dark-alert{background-color:#0e86d9;color:#fff;font-weight:700;margin-top:0;padding:15px}.wpstg-dark-alert .wpstg-button--cta-red{margin-left:10px}.wpstg-form-group{align-items:center;display:block;margin-bottom:8px;width:100%}.wpstg-form-group>label{display:block;font-weight:700}.wpstg-text-field>input{display:block;line-height:1.5;width:300px}.wpstg-text-field>.wpstg-code-segment{margin-top:4px;min-width:300px}.wpstg-form-group>.wpstg-checkbox{position:relative}.wpstg-form-group>.wpstg-checkbox>input[type=checkbox]{left:150px}.wpstg-ml-4{margin-left:4px}#wpstg-advanced-settings hr{margin:20px 0}.wpstg-form-row{display:block}.wpstg-form-row input,.wpstg-form-row label{display:table-cell;margin-bottom:3px;margin-top:3px;padding-left:5px;padding-right:5px}.wpstg-form-row input{width:400px}.wpstg-form-row label{font-weight:700;white-space:nowrap;width:1px}#wpstg-db-connect-output #wpstg-db-status{width:390px}.wpstg-fs-14{font-size:14px}.wpstg-code-segment{display:block}.wpstg-form-group>.wpstg-checkbox{min-width:100%;width:100%}.wpstg-form-group>.wpstg-checkbox>input[type=checkbox]{margin-left:10px}@media only screen and (max-width:768px){.wpstg-form-group>label{min-width:auto;width:auto}.wpstg-text-field>input{width:100%}.wpstg-text-field>.wpstg-code-segment{margin-left:0;min-width:100%}.wpstg-tab-section{max-width:450px;width:calc(100vw - 60px)}}.wpstg-rounded{border-radius:3px}.wpstg-white-border{border:1px solid #fff!important}.wpstg-m-0{margin:0}.wpstg-mt-10px{margin-top:10px!important}.wpstg-mr-10px{margin-right:10px!important}.wpstg-my-10px{margin-bottom:10px!important;margin-top:10px!important}.wpstg-w-100{width:100%}.wpstg-box-shadow{box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.wpstg-float-left{float:left}.wpstg-bold-text{font-weight:700}.wpstg-warning.notice{border-left:4px solid #ffba00}.wpstg-confirmation-label{background-color:#5b9dd9;border-radius:3px;color:#fff;padding:2px}.wpstg-my-6px{margin-bottom:6px;margin-top:6px}.wpstg-mb-10px{margin-bottom:10px}.wpstg-clear-both{clear:both}.wpstg-font-italic{font-style:italic}.wpstg-mt-20px{margin-top:20px}.wpstg-welcome-container{border:2px solid #fff;margin-bottom:20px;padding:20px}.wpstg-ml-30px{margin-left:30px}.wpstg-text-center{text-align:center}.wpstg-feedback-link{text-decoration:none}.wpstg-feedback-span{display:block;margin-bottom:3px}#wpstg-confirm-backup-restore-data{margin:40px;text-align:left}#wpstg-confirm-backup-restore-wrapper{margin:0 30px 30px}#wpstg-confirm-backup-restore-wrapper h3{color:#e01e5a}#wpstg-progress-backup,#wpstg-progress-db{background-color:#3fa5ee}#wpstg-progress-files.wpstg-pro,#wpstg-progress-sr{background-color:#3c9ee4}#wpstg-progress-data,#wpstg-progress-dirs{background-color:#3a96d7}#wpstg-progress-files:not(.wpstg-pro),#wpstg-progress-finishing{background-color:#378cc9}.wpstg-issue-resubmit-confirmation.wpstg--swal2-container,.wpstg-swal2-container.wpstg--swal2-container{z-index:10500}.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-actions,.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-header{display:none}body.toplevel_page_wpstg_backup .wpstg--swal2-container .wpstg--swal2-content,body.toplevel_page_wpstg_clone .wpstg--swal2-container .wpstg--swal2-content{z-index:2}.toplevel_page_wpstg_clone #swal2-content h2{color:#3e3e3e}.toplevel_page_wpstg_clone #swal2-content{line-height:1.5em}div#exportUploadsWithoutDatabaseWarning{background-color:#fafafa;border:1px solid #e3e3e3;border-radius:5px;font-size:.9rem;font-style:italic;margin:10px;padding:10px;text-align:center}.wpstg-advanced-options-dropdown-wrapper{display:none;margin-top:20px}.wpstg--modal--backup--import--search-replace--wrapper{margin-top:20px;text-align:left}.wpstg--modal--backup--import--search-replace--new--wrapper{text-align:center}.wpstg-import-backup-contains li{display:inline-block;margin-bottom:0}.wpstg-import-backup-contains li .wpstg-backups-contains{background-color:#f4f4f4!important;border-radius:3px;color:#979797;font-size:17px;height:18px;width:18px}.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains{background-color:#fff;padding:2px}.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains>.wpstg--dashicons{filter:invert(35%)}.wpstg-import-backup-contains .wpstg--tooltiptext{font-size:13px;left:-25px;padding:5px;text-align:center;width:80px}.wpstg-import-backup-contains-title,ul.wpstg-import-backup-contains{display:inline-block}.wpstg-import-backup-name{display:inline-block;font-weight:700}.wpstg-backup-more-info-toggle{cursor:pointer;display:inline-block;font-size:x-small;font-style:italic}.wpstg-backup-more-info-toggle::selection{background:none}ul.wpstg-import-backup-more-info{background-color:#f6f6f6;border:1px solid #878787;border-radius:3px;cursor:pointer;font-size:14px;margin-bottom:30px;margin-top:10px;padding:7px;text-align:left}ul.wpstg-import-backup-more-info:hover{background-color:#def2ff;border:1px solid #25a1f0}ul.wpstg-import-backup-more-info li{height:20px}.wpstg-backup-list{max-width:800px}.wpstg-backup-list h3{color:#3e3e3e}.wpstg-backup-list ul ul{margin-block-end:1em;margin-block-start:1em}.wpstg-push-confirmation-message{font-size:15px;text-align:justify}.wpstg-settings-row{padding-bottom:10px;padding-top:10px}.wpstg-settings-title{font-weight:600}.wpstg-settings-form-group{align-items:center;display:flex}.wpstg-settings-form-group>.wpstg-settings-message{margin:7px 0 0;padding:0;width:30%}.wpstg-excluded-filters-container{margin-bottom:10px;margin-top:10px;max-width:100%;padding:0;width:100%}.wpstg-excluded-filters-container>table{border-collapse:collapse;border-color:transparent;width:100%}.wpstg-excluded-filters-container td{height:20px;padding-bottom:4px;padding-top:4px}.wpstg-excluded-filters-container h4{margin:0}.wpstg-exclude-filters-foot{display:flex;justify-content:flex-start;padding:0}.wpstg-exclude-filter-dropdown>button:hover{background:#135e96;border:1px solid #135e96}.wpstg-exclude-filter-dropdown>.wpstg-dropdown-menu{width:128px}.wpstg-remove-exclude-rule{background-color:#e01e5a;border:1px solid #e01e5a;border-radius:10px;box-shadow:none;color:#fff!important;cursor:pointer;display:inline-flex;font-size:24px;font-weight:400;height:20px;justify-content:center;line-height:.7;margin-top:5px;outline:none;padding:0;width:20px}.wpstg-remove-exclude-rule:hover{background-color:#e01e5a;border-color:#e01e5a}.wpstg-code-block{background:#f8f8f8;border-radius:2px;font-size:1.2em;margin-top:4px}.wpstg-rule-info{background:#f8f8f8!important}code.wpstg-code{background:#fff;border:1px solid #aaa;color:#e01e5a;display:inline-block;font-size:11px;margin-bottom:1px;padding:2px 4px}.wpstg-exclusion-rule-info{align-items:center;background-color:#ffc107;border:1px solid #ffc107;border-radius:7px;box-shadow:none;color:#fff!important;display:inline-flex;font-size:14px;font-weight:400;height:14px;justify-content:center;outline:none;padding:0;vertical-align:middle;width:14px}.wpstg-exclusion-rule-info:hover{background-color:#ffba0c;border:1px solid #ffba0c}.wpstg-exclude-rule-input{background-color:#fff;border:1px solid #bbb;border-radius:0!important;box-shadow:none;color:#222;display:inline-block;font-size:12px!important;font-weight:400;line-height:1.5;margin-left:4px;margin-top:4px;min-height:24px!important;outline:none!important;padding:2px 6px;transition:all .3s cubic-bezier(.25,.8,.25,1);vertical-align:baseline!important;width:135px}.wpstg-excluded-filters-container tbody>tr:last-child .wpstg-exclude-rule-input{margin-bottom:4px}.wpstg-exclude-rule-input:hover{border:1px solid #999}.wpstg-exclude-rule-input:focus{border:1px solid #25a0f1!important;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)!important}.wpstg-file-size-exclude-select,.wpstg-path-exclude-select{width:135px}.wpstg-file-size-exclude-select-small{width:52px}.wpstg-file-size-exclude-input{width:75px}.wpstg-staging-option-title{margin:15px 0 0}.wpstg-swal-push-container.wpstg--swal2-container{z-index:9995}#wpstg-scanning-files{padding-bottom:5px}#wpstg-scanning-db.wpstg-tab-section,#wpstg-scanning-files.wpstg-tab-section{padding-top:10px}.wpstg-reset-excludes-container{margin:10px 0}.wpstg-swal2-ajax-loader{align-items:center;display:flex;height:150px;justify-content:center;overflow:hidden;width:100%}@keyframes wpstg-loading-icon-anim{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.wpstg-swal2-ajax-loader>img{animation:wpstg-loading-icon-anim 1s linear infinite;-webkit-animation:wpstg-loading-icon-anim 1s linear infinite;height:64px;width:64px}.wpstg-swal2-container .wpstg-tab-section{width:auto!important}#wpstg-no-staging-site-results{margin-top:10px;max-width:375px}li#wpstg-backup-no-results{max-width:500px}#wpstg-no-staging-site-results div,li#wpstg-backup-no-results div{display:inline-block;text-align:center}#wpstg-no-staging-site-results .wpstg--dashicons,li#wpstg-backup-no-results .wpstg--dashicons{filter:invert(50%);margin-top:1px;position:absolute}#wpstg-no-staging-site-results .no-staging-site-found-text,li#wpstg-backup-no-results .no-backups-found-text{color:#5d5d5d;margin-left:20px}@media only screen and (max-width:680px){#wpstg-no-staging-site-results div,li#wpstg-backup-no-results div{width:100%}}#wpstg--modal--backup--download-inner p.wpstg-download-modal-text{color:#565656;font-size:16px}#wpstg--modal--backup--download-inner h2{color:#565656}.wpstg-backup-restore-contains-database,.wpstg-backup-restore-contains-files{display:none}.wpstg-green-button{background:#8bc34a;border:1px solid #78a93f;color:#fff;text-shadow:0 -1px 1px #78a93f,1px 0 1px #78a93f,0 1px 1px #40c921,-1px 0 1px #78a93f}.wpstg-green-button:hover{background:#78a93f}.wpstg-is-dir-loading{display:none;margin-left:8px;margin-top:-2px;position:absolute}.wpstg-ml-8px{margin-left:8px}.wpstg-mb-8px{margin-bottom:8px}.wpstg-btn-danger{background-color:#e01e5a;border:1px solid #e01e5a;color:#fff;text-shadow:none}.wpstg-btn-danger:hover{background:#c0194d;box-shadow:0 1px 4px rgba(0,0,0,.3)}.wpstg-swal2-container.wpstg-swal2-loading>.wpstg--swal2-modal{height:200px}.wpstg-reset-confirmation.wpstg-swal2-container:not(.wpstg-swal2-loading)>.wpstg--swal2-modal{max-width:480px}.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-header{display:none}.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-content{height:auto}.wpstg-reset-confirmation.wpstg-swal2-container>.wpstg--swal2-modal>.wpstg--swal2-content .wpstg-tabs-wrapper{height:auto!important;overflow-y:auto}.wpstg-reset-confirmation.wpstg-swal2-container>.wpstg--swal2-modal>.wpstg--swal2-content{font-size:13px}.wpstg-reset-confirmation.wpstg-swal2-container>.wpstg--swal2-modal>.wpstg--swal2-content .wpstg-dir{margin-bottom:4px}.wpstg-reset-confirmation.wpstg-swal2-container>.wpstg--swal2-modal>.wpstg--swal2-content .wpstg-subdir{margin-top:4px}.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open .wpstg--swal2-modal{height:calc(100vh - 70px)}.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open>.wpstg--swal2-modal>.wpstg--swal2-content .wpstg-tabs-wrapper{height:calc(100vh - 350px)!important}.wpstg--swal2-actions.wpstg--modal--actions>button{font-weight:500;margin-left:4px;margin-right:4px;min-width:80px;text-shadow:none;text-transform:uppercase}.wpstg-swal-popup{max-width:1200px!important}.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-title{color:#a8a8a8}.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-content{color:#a8a8a8;margin-top:8px}.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step,.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line,.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step.wpstg--swal2-active-progress-step{background:#25a1f0}.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line{width:2.75em}.wpstg--dashicons{height:16px;width:16px}.wpstg--dashicons.wpstg-dashicons-grey{filter:invert(20%)}.wpstg--dashicons.wpstg-dashicons-19{height:19px;width:19px}.wpstg--dashicons.wpstg-dashicons-21{height:21px;width:21px}#wpstg--tab--backup #wpstg-step-1{align-items:center;display:flex}#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip,.wpstg-advanced-options .wpstg--tooltip{align-items:center;border-bottom:0 solid transparent;display:inline-flex}.wpstg-advanced-options-site .wpstg--tooltip img.wpstg--dashicons{filter:invert(17%) sepia(0) saturate(1%) hue-rotate(195deg) brightness(97%) contrast(77%)}#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip{align-items:center;border-bottom:0 solid transparent;display:flex}.wpstg--tooltip .wpstg--tooltiptext-backups:after{left:calc(20% + 2px)}.wpstg-listing-single-backup .wpstg--dashicons{height:17px;width:17px}.wpstg-100-width{width:100px}.wpstg-caret{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid;cursor:pointer;display:inline-block;height:0;margin-left:2px;transition:transform .2s;vertical-align:middle;width:0}.wpstg-caret.wpstg-caret-up{transform:rotate(-180deg)}.wpstg-advanced-options-site label{display:block;font-size:16px;margin:.5em 0}#wpstg-confirm-backup-restore-data{font-size:18px;margin:30px 0 0}body.toplevel_page_wpstg_backup .wpstg--swal2-container.wpstg--swal2-backdrop-show,body.toplevel_page_wpstg_clone .wpstg--swal2-container.wpstg--swal2-backdrop-show{background:rgba(0,0,0,.6);z-index:9995}.wpstg-swal-popup.wpstg--swal2-popup{border-radius:8px;color:#3e3e3e;font-family:Verdana,Geneva,Tahoma,sans-serif;padding:24px;z-index:9999}.wpstg-swal-popup .wpstg--swal2-title{color:#3e3e3e;font-size:22px}.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-title{align-self:flex-start;margin-bottom:0;text-align:left}.wpstg-swal-popup .wpstg--swal2-close{right:8px;top:8px;z-index:5}.wpstg-swal-popup .wpstg--swal2-close:focus{outline:none}.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions{justify-content:flex-end}.wpstg-swal-popup .wpstg--swal2-actions>button{border:0;border-radius:4px;font-size:15px;font-weight:900;height:40px;line-height:normal;min-width:100px;padding:10px 12px;text-shadow:none;text-transform:capitalize}.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions>button{margin-left:8px}.wpstg-swal-popup .wpstg--swal2-actions>button.wpstg--swal2-cancel{background:#fff;border:1px solid rgba(29,28,29,.3);color:#1d1c1d;font-weight:500;text-shadow:none;width:100px}.wpstg-swal-popup .wpstg--swal2-actions>button:hover{box-shadow:0 1px 3px 0 rgba(0,0,0,.1)}.wpstg-swal-popup .wpstg--swal2-actions>button.wpstg--swal2-cancel:hover{background:rgba(28,29,28,.04)}#wpstg-backup-name-input{font-size:18px;height:44px}.wpstg-restore-finished-container .wpstg--swal2-title{color:#565656!important}.wpstg-restore-finished-container .wpstg--swal2-content{color:#a8a8a8;margin-top:20px}.wpstg-linear-loader>span[class*=wpstg-linear-loader-item]{animation:wpstg_linear_loader 3s infinite;animation-fill-mode:both;animation-timing-function:cubic-bezier(.03,.615,.995,.415);background:#333;border-radius:100%;display:inline-block;height:6px;margin:12px 2px;width:6px}.wpstg-linear-loader>span.wpstg-linear-loader-item:first-child{animation-delay:1s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(2){animation-delay:.8s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(3){animation-delay:.6s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(4){animation-delay:.4s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(5){animation-delay:.2s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(6){animation-delay:0s}@keyframes wpstg_linear_loader{0%{opacity:0;transform:translateX(-30px)}25%{opacity:1}50%{opacity:0;transform:translateX(30px)}to{opacity:0}}.wpstg--modal--backup--import--upload--content{margin:1em auto;padding:.75em}.wpstg--modal--backup--import--upload--content .wpstg-linear-loader{display:none}#wpstg-multisite-disabled .wpstg-clone{width:355px}#wpstg-free-version-backups .wpstg-clone{text-align:center}#wpstg-free-version-backups .wpstg-clone p{font-size:16px}.wpstg-staging-info li .backup-notes{word-break:break-word}.wpstg--modal--import--upload--progress--title small{font-weight:400}#wpstg-report-issue-wrapper{position:relative}#wpstg-report-issue-wrapper .arrow-up{border-bottom:8px solid #fff;border-left:8px solid transparent;border-right:8px solid transparent;height:0;position:absolute;right:40px;top:-8px;width:0}.notice{margin:10px 20px 0 2px}.wpstg--notice{box-shadow:0 1px 1px rgba(0,0,0,.04);margin:20px 20px 20px 0;padding:1px 12px}.wpstg--error a:hover{color:#eee}.wpstg--error,.wpstg--error a{background:#e01e5a;color:#fff}.wpstg-button{border-radius:2px;cursor:pointer;display:inline-block;font-weight:500;outline:0;padding:2px 10px;text-decoration:none;text-transform:uppercase;transition:background-color .1s ease-in}.wpstg-button.wpstg-save{background-color:#1687a7;color:#fff}.wpstg-button.wpstg-save:hover{background-color:#276678}.wpstg-button.wpstg-button-light{animation:background-color .3s;background-color:#f8f8f8;border:1px solid #eee;color:#333}.wpstg-button.wpstg-button-light:hover{background-color:#e0e0e0;border:1px solid #e0e0e0}.wpstg-buttons .spinner{float:none;margin:0 0 0 5px}.wpstg-button.danger{background-color:#e01e5a;border-color:transparent;border-radius:2px;color:#fff;display:inline-block;text-align:center;text-decoration:none;text-transform:inherit}.wpstg-button.danger:hover{background-color:#c0194d}.wpstg-button--big{border-radius:3px;color:#fff;display:inline-block;font-size:16px;margin-top:20px;min-width:170px;padding:10px;text-align:center;text-decoration:none}.wpstg-button--primary{-webkit-appearance:none;border:1px solid rgba(29,28,29,.3);border-radius:2px;box-sizing:border-box;color:#171717;cursor:pointer;display:inline-block;font-size:13px;line-height:2.15384615;margin:0;min-height:30px;padding:0 10px;text-decoration:none;white-space:nowrap}.wpstg-button--primary:hover{background:rgba(28,29,28,.04);color:#000}.wpstg-button--secondary{background-color:transparent;border:1px solid rgba(29,28,29,.3);border-radius:2px;color:#95a5a6;cursor:pointer;display:inline-block;font-weight:500;outline:0;padding:4px 10px 2px;text-decoration:none;transition:background-color .1s ease-in}.wpstg-button--red{background-color:#e01e5a;border-color:#e01e5a;color:#fff}.wpstg-button--red:hover{background-color:#d02358;border-color:#e0255f;color:#fff}.wpstg-button--cta-red{background-color:#fe008f;border-color:#e01e5a;color:#fff}.wpstg-button--cta-red:hover{background-color:#f31391;border-color:#e0255f;color:#fff}.wpstg-button--blue{background-color:#25a0f1;border-color:#25a0f1;color:#fff}.wpstg-button--blue:hover{background-color:#259be6;border-color:#259be6;color:#fff}#wpstg-button-backup-upgrade{font-size:16px}.wpstg-staging-status{color:#e01e5a}#wpstg-push-changes,#wpstg-save-clone-data,#wpstg-start-updating{margin-left:5px}input.wpstg-textbox{border:1px solid #aaa;border-radius:.25rem;font-size:14px;padding:.25rem .5rem}input.wpstg-textbox:focus{border-color:#259be6;-webkit-box-shadow:0 0 0 .1rem hsla(0,0%,86.7%,.35);box-shadow:0 0 0 .1rem hsla(0,0%,86.7%,.35);outline:0}input.wpstg-textbox::placeholder{color:#888}.wpstg--advance-settings--checkbox{align-items:center;display:flex}.wpstg--advance-settings--checkbox>label{display:inline-block;font-size:14px;font-weight:bolder;width:165px}.wpstg--advance-settings--checkbox>.wpstg--tooltip{border-bottom:0 solid transparent;display:inline-block;margin-left:5px;margin-top:5px;position:relative}.wpstg--advance-settings--checkbox>.wpstg--tooltip>.wpstg--tooltiptext{left:-150px;top:18px}div#wpstg-restore-wait{align-items:center;background:#fff;display:none;flex-direction:column;height:100vh;justify-content:center;left:0;position:fixed;text-align:center;top:0;width:100vw;z-index:99999}div#wpstg-restore-wait .wpstg-title{font-weight:700}div#wpstg-restore-wait div{font-size:16px;margin-top:12px}.resumable-browse{cursor:pointer}.resumable-browse a{text-decoration:underline}.wpstg-upload-text{font-weight:600}.wpstg--modal--backup--import--upload--container.dragover{background-color:#94dc96;color:#fff;transition:background-color .7s}.wpstg--modal--backup--import--upload--container.dragover *{pointer-events:none}.wpstg--modal--backup--import--upload--container.dragover .wpstg-upload-text{display:none}.wpstg--modal--backup--import--upload--container.dragover .wpstg-dragover-text{display:block}.wpstg--modal--backup--import--upload--container .wpstg-dragover-text{display:none}#wpstg-invalid-license-message,#wpstg-invalid-license-message a{color:#e01e5a;font-weight:500;margin-left:6px}#wpstg-sidebar--banner{max-width:200px}@media screen and (max-width:1234px){.wpstg-h2{font-size:24px}#wpstg-welcome li{font-size:14px}}.wpstg-exclamation{background-color:#e01e5a;border-radius:100%;color:#fff;display:inline-block;font-weight:700;height:20px;margin:6px;text-align:center;width:20px}.wpstg--tab--contents{padding-top:1px}.wpstg-swal-show.wpstg--swal2-show{-webkit-animation:wpstg-swal-show .2s!important;animation:wpstg-swal-show .2s!important}@-webkit-keyframes wpstg-swal-show{0%{transform:scale(.3)}to{transform:scale(1)}}@keyframes wpstg-swal-show{0%{transform:scale(.3)}to{transform:scale(1)}}.wpstg-tab-item--vert-center{align-items:center;display:flex}.wpstg-db-comparison-modal{padding-left:10px;padding-right:10px}.wpstg-db-comparison-table{font-size:13px;width:100%}.wpstg-db-comparison-table tbody td{padding-top:6px}.wpstg-db-comparison-table tr>td:first-child,.wpstg-db-comparison-table tr>th:first-child{text-align:left}.wpstg-css-tick{border-bottom:3px solid #78b13f;border-right:3px solid #78b13f;display:inline-block;height:12px;transform:rotate(45deg);width:6px}.wpstg-css-cross{height:16px;left:-2px;position:relative;top:-8px;width:16px}.wpstg-css-cross:after,.wpstg-css-cross:before{background-color:#e01e5a;content:" ";height:17px;position:absolute;width:3px}.wpstg-css-cross:before{transform:rotate(45deg)}.wpstg-css-cross:after{transform:rotate(-45deg)}.wpstg-selection-preview{color:rgba(51,34,17,.4);font-size:12px;margin-left:20px}.wpstg-selection-preview.danger{color:#e01e5a}.wpstg--backup-automated{margin-bottom:-5px}.wpstg--dismiss-schedule{cursor:pointer}.wpstg-import-backup-contains.wpstg-listing-single-backup{vertical-align:middle}.wpstg-import-backup-contains.wpstg-listing-single-backup li{padding:2px}.wpstg--modal--backup--manage--schedules--content table{margin:0 auto;width:100%}.wpstg--modal--backup--manage--schedules--title{margin-bottom:10px;margin-top:0;text-align:left}.wpstg--modal--backup--import--upload--title{text-align:center}#wpstg--modal--backup--manage--schedules--content{text-align:left}#wpstg--modal--backup--manage--schedules--content thead{font-weight:700}#wpstg--modal--backup--manage--schedules--content .wpstg--tooltip.wpstg--dismiss-schedule{border-bottom:none}.wpstg--tooltip.wpstg--dismiss-schedule img.wpstg--dashicons{filter:invert(18%) sepia(57%) saturate(6238%) hue-rotate(332deg) brightness(93%) contrast(88%)}#wpstg--modal--backup--manage--schedules--content td{padding-right:25px;padding-top:10px}#wpstg--modal--backup--manage--schedules--content ul{margin-bottom:0;margin-top:0}#wpstg--modal--backup--manage--schedules--content ul li:first-child .wpstg--tooltip{margin-left:0}.wpstg-button:disabled{background-color:#ddd;border:1px solid #cfcfcf;color:#b3b3b3;cursor:not-allowed;text-shadow:none}#wpstg-backup-runs-info{font-size:12px;margin:20px 0 0;padding:0}#wpstg-backup-runs-info li{margin:0}div#wpstg-backup-locked{align-items:center;background:#fff;display:flex;margin-bottom:10px;max-width:770px;padding:15px;width:100%}#wpstg-backup-locked .icon{display:inline-block;height:20px}#wpstg-backup-locked .icon img{animation:wpstg-loading-icon-anim 2s infinite}#wpstg-backup-locked .text{display:inline-block;margin-left:15px}#backup-schedule-current-time{font-size:12px}.wpstg-backup-scheduling-options label{margin-top:17px}.wpstg-backup-scheduling-options .wpstg-storage-option{display:block;font-size:15px;margin:.5em 0}.wpstg-storage-option>span:not(.wpstg-storage-settings){display:inline-block;width:150px}.wpstg-storages-postbox{background-color:#fff;margin-bottom:8px;margin-top:8px;padding:13px 16px}.wpstg-storages-postbox a{color:#3c434a;font-weight:700;margin-right:8px;padding:8px;text-decoration:none}.wpstg-storages-postbox a:hover{color:#b70b72}.wpstg-storage-postbox{background-color:#fff;padding:4px 16px}.wpstg-storages-postbox a.wpstg-storage-provider-active{background:#b70b72;border-radius:3px;color:#fff;cursor:default;font-weight:700}.wpstg-storages-postbox a.wpstg-storage-provider-active:hover{background:#a10a64}.wpstg-storages-postbox a.wpstg-storage-provider-disabled{color:#999;cursor:not-allowed}.wpstg-provider-revoke-form{display:inline;margin-bottom:12px;margin-top:12px}.wpstg-provider-settings-form{margin-top:10px}.wpstg-provider-settings-form strong{display:block;margin:8px 0}.wpstg-provider-settings-form p{margin:0 0 8px}.wpstg-provider-settings-form fieldset{margin:0 0 16px;padding:0}.wpstg-provider-settings-form fieldset p{font-size:12px;margin:0;padding:5px}.wpstg-provider-settings-form fieldset label{display:block;margin-bottom:2px}.wpstg-provider-settings-form fieldset input{font-size:12px}.wpstg-provider-settings-form .wpstg-link-btn.wpstg-blue-primary{text-shadow:none}.wpstg-btn-google{align-items:center;border-radius:3px;border-width:0;box-shadow:0 1px 3px rgba(0,0,0,.6);box-sizing:border-box;color:#555;display:inline-flex;font-family:Roboto;font-size:14px;font-weight:700;height:40px;line-height:40px;margin-right:10px;outline:none;padding:8px 16px 8px 8px;text-decoration:none;transition:background-color .3s}.wpstg-btn-google img{height:18px;margin-left:5px;margin-right:12px;width:18px}#wpstg-custom-google-credentials{margin-top:20px}.wpstg-fieldset .wpstg-with-icon{align-items:center;display:inline-flex}.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon{margin-left:8px}.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon img{height:16px;width:16px}#wpstg-btn-provider-revoke{border-radius:2px}.wpstg-metabox-holder{background:#fff;border-radius:8px;-webkit-box-shadow:0 0 1px rgb(0 0 0/13%),0 1px 3px rgb(0 0 0/10%);box-shadow:0 0 1px rgb(0 0 0/13%),0 1px 3px rgb(0 0 0/10%);margin-left:16px;margin-right:32px;margin-top:60px;min-height:600px;padding:20px}@media only screen and (max-width:680px){.wpstg-metabox-holder{margin-left:0;margin-right:5px;padding:5px 0 0}#wpstg-tab-container .wpstg-settings-panel{overflow:auto;padding:0}.wpstg-form-table td:first-child{width:50%}}.wpstg-nav-tab{background:#dcdcde;border:1px solid #fff;border-bottom:none;color:#3c434a;float:left;font-size:14px;font-weight:600;line-height:1.71428571;margin-left:.5em;padding:5px 10px;text-decoration:none;white-space:nowrap}.wpstg-nav-tab-active,.wpstg-nav-tab-active:focus,.wpstg-nav-tab-active:focus:active,.wpstg-nav-tab-active:hover{background:#f3f5f7;border-bottom:1px solid #f0f0f1;-webkit-box-shadow:-4px -13px 14px -12px rgb(0 0 0/16%);box-shadow:-4px -13px 14px -12px rgb(0 0 0/16%);color:#b70b72}.wpstg-nav-tab-active{margin-bottom:-1px}.wpstg-nav-tab-wrapper{line-height:inherit;margin:0;padding-bottom:0;padding-top:9px}.wpstg-nav-tab-wrapper li{margin-bottom:0}#wpstg--js--translations{text-decoration:underline}
|
2 |
/*# sourceMappingURL=wpstg-admin.min.css.map */
|
assets/css/dist/wpstg-admin.min.css.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"sources":["wpstg-admin.css"],"names":[],"mappings":"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","file":"wpstg-admin.min.css","sourcesContent":["/**\n * WPSTG Admin CSS\n *\n * @package WPSTG\n * @subpackage Admin CSS\n * @copyright Copyright (c) 2021, René Hermenau\n * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License\n*/\n\n/* Font Faces */\n\n/* roboto-regular - latin */\n@font-face {\nfont-family: 'Roboto';\nfont-style: normal;\nfont-weight: 400;\nsrc: url('../../fonts/roboto-v29-latin-regular.eot'); /* IE9 Compat Modes */\nsrc: local(''),\n url('../../fonts/roboto-v29-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n url('../../fonts/roboto-v29-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */\n url('../../fonts/roboto-v29-latin-regular.woff') format('woff'), /* Modern Browsers */\n url('../../fonts/roboto-v29-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */\n url('../../fonts/roboto-v29-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */\n}\n\n/* Colors */\n\n.wpstg--violet {\n color: #9d37ae;\n}\n\n.wpstg-border--violet {\n border: 1px solid #9d37ae;\n}\n\n.wpstg--red {\n color: #E01E5A;\n}\n\n.wpstg-cta--red {\n color: #fe008f;\n}\n\n.wpstg--blue {\n color: #24a1f0;\n}\n\n.wpstg--darkblue {\n color: #0e86d9;\n}\n\n.wpstg--green {\n color: #83c11f;\n}\n\n.wpstg--grey {\n color: #3e3e3e;\n}\n\n.wpstg--darkgrey {\n color: #1b1b1b;\n}\n\n.wpstg--filter--svg {\n filter: invert(24%) sepia(11%) saturate(558%) hue-rotate(169deg) brightness(97%) contrast(91%);\n}\n\n/* CSS for Tabs */\n\nbody.wp-staging-pro_page_wpstg_backup,\nbody.toplevel_page_wpstg_clone,\nbody.wp-staging-pro_page_wpstg-settings,\nbody.wp-staging-pro_page_wpstg-tools,\nbody.wp-staging-pro_page_wpstg-license {\n background-color: #f3f5f7;\n}\n\n#wpstg-tab-container ul {\n list-style: none;\n margin: 0;\n padding: 0;\n background: #f1f1f1;\n float: left;\n}\n\n#wpstg-tab-container ul li:first-child.selected-tab {\n border-top: none;\n}\n\n#wpstg-tab-container ul li a.selected-tab {\n font-weight: bold;\n text-decoration: none;\n}\n\n#wpstg-tab-container .row {\n padding-top: 10px;\n padding-bottom: 12px;\n}\n\n.wpstg-tabs-container .nav-tab-wrapper {\n padding: 0;\n}\n\n#wpstg-tab-container .row label strong,\n#wpstg-tab-container .row strong {\n font-weight: bold;\n}\n\n.wpstg-tabs a {\n padding: 5px;\n}\n\n#wpstg-tab-container > ul > li.wpstg-tabs.active {\n background-color: white;\n}\n\n#wpstg_settingsgeneral_header .row:nth-child(3),\n#wpstg_settingsgeneral_header .row:nth-child(4) {\n display: none;\n}\n\n#wpstg-tab-container .wpstg-settings-panel {\n padding: 0 20px 20px 20px;\n overflow: auto;\n}\n\n#wpstg-tab-container .wpstg-form-table th {\n vertical-align: top;\n text-align: left;\n padding: 20px 10px 20px 0;\n line-height: 1.3;\n font-weight: bold;\n font-size: 14px;\n color: #484848;\n width: 30%;\n}\n\n#wpstg-tab-container .wpstg-form-table tr {\n border-bottom: 1px solid #E7E7E7;\n}\n\n#wpstg-tab-container span.description {\n display: block;\n font-weight: 400;\n font-style: normal;\n font-size: 13px;\n margin-top: 7px;\n color: #484848;\n}\n\n#wpstg-tab-container .col-title {\n color: #484848;\n}\n\n@media only screen and (max-width: 680px) {\n #wpstg-tab-container ul {\n float: none;\n }\n\n #wpstg-tab-container .wpstg-form-table tr > th {\n width: 100%;\n }\n\n #wpstg-tab-container span.description {\n font-size: 14px;\n }\n\n #wpstg-tab-container .wpstg-form-table tr > th,\n #wpstg-tab-container .wpstg-form-table tr > td {\n padding: 10px;\n }\n}\n\n#wpstg-tab-container ul li {\n margin-bottom: 0;\n}\n\n#wpstg-tab-container ul li a {\n display: block;\n padding: 10px 4px 10px 14px;\n border-width: 1px 0;\n border-style: solid;\n border-top-color: white;\n border-bottom-color: #e7e7e7;\n text-decoration: none;\n color: #0097DF;\n font-weight: bold;\n}\n\n#wpstg-tab-container ul li a:hover {\n background-color: #e5e5e5;\n color: #777777;\n}\n\n.wpstg-logo {\n display: block;\n font-size: 16px;\n padding-top: 20px;\n width: 220px;\n float: left;\n}\n\n.wpstg-logo img {\n max-width: 212px;\n}\n\n.wpstg-version {\n display: block;\n padding-top: 40px;\n color: #9b9b9b;\n}\n\n.wpstg_admin .nav-tab {\n color: #3C3C3C;\n}\n\n#wpstg-tab-container table tbody tr:nth-child(1) > th > div {\n font-size: 20px;\n}\n\n/* Cloning workflow */\n\n#wpstg-clonepage-wrapper {\n margin-bottom: 20px;\n width: 98%;\n}\n\n@media screen and (min-width: 1090px) {\n #wpstg-clonepage-wrapper {\n float: left;\n margin-bottom: 20px;\n }\n}\n\n#wpstg-steps {\n margin-top: 0px;\n margin-left: 20px;\n}\n\n#wpstg-steps li {\n color: #444;\n line-height: 20px;\n padding-right: 10px;\n float: left;\n}\n\n.wpstg-step-num {\n border: 1px solid #3e3e3e;\n border-radius: 3px;\n display: inline-block;\n width: 20px;\n height: 20px;\n text-align: center;\n margin-right: 5px;\n}\n\n.wpstg-current-step {\n font-weight: bold;\n}\n\n.wpstg-current-step .wpstg-step-num {\n background: #3e3e3e;\n color: #eee;\n}\n\n.wpstg-box {\n margin: 10px 0;\n padding: 10px;\n position: relative;\n overflow: hidden;\n transition: border-color .2s ease-in-out;\n}\n\n.wpstg-clone {\n margin-bottom: 10px;\n padding: 16px;\n position: relative;\n transition: border-color .2s ease-in-out;\n background-color: #ffffff;\n color: #3e3e3e;\n border-radius: 3px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .1);\n}\n\n.wpstg-clone.active {\n border-color: #1d94cf;\n}\n\n.wpstg-clone-header {\n display: flex;\n align-items: center;\n}\n\n.wpstg-clone-title {\n display: inline-block;\n margin-right: 8px;\n font-size: 15px;\n max-width: 300px;\n text-decoration: none;\n font-weight: bold;\n color: #3e3e3e;\n}\n\n.wpstg-clone-title:hover {\n color: #111111;\n}\n\n.wpstg-clone-labels {\n display: inline-block;\n}\n\n\n.wpstg-clone-labels .wpstg-clone-label {\n display: inline-block;\n padding: 1px 4px;\n margin-right: 4px;\n font-size: 11px;\n border-radius: 3px;\n background: #8bc34a;\n color: #fff;\n}\n\n.wpstg-clone-actions {\n margin-left: auto;\n display: flex;\n margin-top: 5px;\n}\n\n.wpstg-dropdown {\n position: relative;\n}\n\n.wpstg-clone-actions .wpstg-dropdown-toggler {\n text-decoration: none;\n background: #25a1f0;\n padding: 6px 10px;\n border-radius: 2px;\n font-size: 14px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .2);\n color: #ffffff;\n}\n\n.wpstg-clone-actions .wpstg-dropdown-toggler:hover {\n background: #002648;\n color: white;\n}\n\n.wpstg-dropdown {\n position: relative;\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu {\n background: #fff;\n display: none;\n flex-direction: column;\n position: absolute;\n right: 0;\n top: calc(100% + 4px);\n padding: 8px;\n border-radius: 2px;\n width: 100px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .2);\n z-index: 1000;\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu.wpstg-menu-dropup {\n top: auto;\n bottom: 100%;\n transform: translate3d(0px, -3px, 0px);\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu.shown {\n display: flex;\n}\n\n.wpstg-clone-action,\n.wpstg-dropdown-action {\n color: #3e3e3e;\n padding: 6px 8px;\n border-radius: 3px;\n text-decoration: none;\n position: relative;\n transition: color .2s ease-in-out;\n border-bottom: 1px solid #f3f3f3;\n}\n\n.wpstg-clone-action:hover,\n.wpstg-dropdown-action:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.wpstg-dropdown-action {\n color: #3e3e3e;\n background: transparent;\n border: 0 solid black;\n outline: none;\n box-shadow: none;\n}\n\n.wpstg-remove-clone:hover {\n color: #E01E5A;\n}\n\n.wpstg-clone-action:last-child {\n border: none;\n}\n\n.wpstg-clone:hover .wpstg-clone-action {\n display: inline-block;\n}\n\n#wpstg-show-error-details:focus,\n#wpstg-workflow .wpstg-clone-action {\n outline: none;\n box-shadow: none;\n}\n\n.wpstg-link-btn {\n background: #45a1c9;\n color: #fff;\n display: inline-block;\n padding: 5px 10px;\n text-decoration: none;\n vertical-align: baseline;\n transition: all .2s ease-in-out;\n}\n\n.wpstg-link-btn:hover,\n.wpstg-link-btn:focus {\n color: #fff;\n outline: none;\n box-shadow: none;\n}\n\n#wpstg-workflow .wpstg-link-btn:active {\n vertical-align: baseline;\n}\n\n.wpstg-link-btn[disabled] {\n background: #777 !important;\n border-color: #555 !important;\n pointer-events: none;\n}\n\n#wpstg-cancel-cloning,\n#wpstg-cancel-cloning-update {\n margin-top: 5px;\n}\n\n#wpstg-cancel-cloning.success,\n#wpstg-cancel-cloning.success {\n background: #64dd58;\n border-color: #54bd4a;\n}\n\n#wpstg-error-wrapper,\n#wpstg-error-details {\n display: none;\n padding-top: 10px;\n font-size: 13px;\n clear: both;\n}\n\n#wpstg-show-error-details {\n display: inline-block;\n margin-left: 5px;\n color: #555;\n text-decoration: none;\n transition: color .2s ease-in-out;\n}\n\n#wpstg-show-error-details:hover {\n color: #1d94cf;\n}\n\n#wpstg-error-details {\n border-left: 5px solid #E01E5A;\n padding: 10px;\n width: 500px;\n}\n\n#wpstg-try-again {\n display: none;\n}\n\n#wpstg-home-link {\n float: right;\n}\n\n.wpstg-loader {\n content: url('../../img/loading.gif');\n display: none;\n}\n\n.wpstg-loader.wpstg-finished {\n display: block;\n content: \"Finished\";\n background-color: #00c89a;\n color: white;\n padding: 2px 10px;\n margin-top: 0;\n border-radius: 3px;\n}\n\n#wpstg-workflow {\n max-width: 800px;\n position: relative;\n clear: both;\n padding-top: 20px;\n float: left;\n min-width: 500px;\n min-height: 380px;\n padding-right: 20px;\n padding-bottom: 20px;\n}\n\n#wpstg-sidebar {\n float: left;\n max-width: 400px;\n display: block;\n margin-left: 10px;\n}\n\n#wpstg-workflow.loading::after,\n#wpstg-removing-clone.loading::after {\n background: rgba(255, 255, 255, .7);\n content: 'Loading... may take a while for huge websites';\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n padding-top: 100px;\n text-align: center;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 99;\n}\n\n#wpstg-removing-clone.loading::after {\n content: 'REMOVING' !important;\n}\n\n#wpstg-existing-clones,\n#wpstg-removing-clone {\n position: relative;\n}\n\n#wpstg-existing-clones h3 {\n color: #3e3e3e;\n}\n\n#wpstg-removing-clone .wpstg-tab-section {\n display: block;\n}\n\n.wpstg-progress-bar {\n max-width: 900px;\n height: 27px;\n padding: 0;\n background-color: #d6d8d7;\n}\n\n.wpstg-progress {\n float: left;\n background: #3fa5ee;\n width: 0;\n height: 100%;\n transition: width .6s ease;\n color: white;\n line-height: 25px;\n text-align: center;\n overflow: hidden;\n}\n\n.wpstg-progress-files {\n background: #16b4f0;\n width: 0;\n height: 100%;\n transition: width .6s ease;\n color: white;\n line-height: 25px;\n text-align: center;\n}\n\n#wpstg-new-clone-id.wpstg-error-input,\n#wpstg-clone-path.wpstg-error-input {\n border: 1px solid #E01E5A;\n box-shadow: 0 0 2px rgba(255, 66, 53, .8);\n}\n\n#wpstg-new-clone-id {\n width: 450px;\n max-width: 100%;\n margin-left: 15px;\n}\n\n#wpstg-new-clone {\n background: #25a1f0;\n border-color: #2188c9;\n}\n\n#wpstg-new-clone:hover {\n background: #259be6;\n border-color: #2188c9;\n}\n\n#wpstg-clone-path {\n margin-left: 10px;\n width: 350px;\n}\n\n.wpstg-error-msg {\n color: #E01E5A;\n}\n\n#wpstg-clone-id-error {\n display: block;\n background-color: #f0f8ff;\n padding: 10px;\n margin: 20px;\n}\n\n#wpstg-start-cloning + .wpstg-error-msg {\n display: block;\n margin-top: 5px;\n}\n\n.wpstg-size-info {\n color: #999;\n font-weight: normal;\n position: relative;\n left: 2px;\n}\n\n.wpstg-db-table .wpstg-size-info {\n top: 2px;\n}\n\n.wpstg-db-table:hover {\n background-color: #f0f8ff;\n}\n\n#wpstg-workflow #wpstg-start-cloning {\n margin-left: 5px;\n vertical-align: baseline;\n}\n\n\n/* Tabs */\n\n.wpstg-tabs-wrapper {\n max-width: 640px;\n margin: 10px 0;\n}\n\n#wpstg-path-wrapper {\n border-bottom: 2px dashed #ccc;\n padding-bottom: 10px;\n margin-bottom: 10px;\n}\n\n.wpstg-tab-section {\n border-bottom: 1px solid #ddd;\n border-right: none;\n border-left: none;\n display: none;\n width: calc(100% - 72px);\n padding: 0px 36px;\n}\n\n.wpstg-tab-section::after {\n display: block;\n content: '';\n clear: both;\n}\n\n.wpstg-tab-header {\n border-bottom: 1px solid #ddd;\n border-right: none;\n border-left: none;\n color: #444;\n font-size: 16px;\n font-weight: bold;\n display: block;\n padding: 10px;;\n text-decoration: none;\n}\n\n.wpstg-tab-triangle {\n display: inline-block;\n margin-right: 12px;\n animation: transform 0.5s;\n width: 0;\n height: 0;\n margin-top: -3px;\n vertical-align: middle;\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n border-left: 10px solid;\n transition: transform 0.2s;\n cursor: pointer;\n}\n\n.wpstg-tab-triangle.wpstg-no-icon {\n margin-right: 2px;\n width: auto;\n height: auto;\n vertical-align: auto;\n border-top: 0px solid;\n border-bottom: 0px solid;\n border-left: 0px solid;\n}\n\n.wpstg-tab-triangle.wpstg-rotate-90 {\n transform: rotate(90deg);\n}\n\n.wpstg-tab-header:focus {\n color: #444;\n outline: none;\n box-shadow: none;\n}\n\n#wpstg-large-files {\n display: none;\n border: 1px dashed #ccc;\n padding: 10px 10px 10px;\n margin-top: 20px;\n position: relative;\n font-size: 12px;\n}\n\n#wpstg-large-files h3 {\n background: #fff;\n margin: 0;\n padding: 0 5px;\n position: absolute;\n top: -10px;\n left: 5px;\n}\n\n.wpstg-subdir {\n display: none;\n margin-left: 20px;\n}\n\n.wpstg-subdir.wpstg-push {\n display: block;\n margin-left: 20px;\n}\n\n.wpstg-dir a.disabled {\n color: #888;\n cursor: default;\n text-decoration: none;\n}\n\n.wpstg-check-subdirs {\n display: inline-block;\n margin-left: 10px;\n}\n\n.wpstg-notice-alert {\n display: block;\n background-color: #E01E5A;\n padding: 20px;\n max-width: 600px;\n margin-top: 10px;\n color: white;\n}\n\n.wpstg-notice--white {\n display: block;\n background-color: #ffffff;\n padding: 20px;\n max-width: 600px;\n margin-top: 10px;\n}\n\n.wpstg-notice-alert a {\n color: white;\n}\n\n.wpstg-notice-alert h3 {\n color: white;\n}\n\n.wpstg-header {\n font-weight: 400;\n line-height: 1.6em;\n font-size: 19px;\n border-bottom: 1px solid #DFDFDF;\n clear: both;\n padding-top: 10px;\n}\n\n#wpstg-clone-label {\n font-size: 14px;\n font-weight: bold;\n}\n\n.wpstg-log-details {\n height: 300px;\n overflow: scroll;\n max-width: 650px;\n font-family: monospace;\n font-size: 12px;\n line-height: 15px;\n border: 1px solid #FFF;\n background-color: black;\n color: #c0c0c0;\n padding: 3px;\n white-space: nowrap;\n margin-top: 15px;\n}\n\n#wpstg-finished-result {\n display: none;\n}\n\n#wpstg-remove-cloning {\n background: #ff3428;\n border-color: #e72f24;\n margin-top: 5px;\n}\n\n#wpstg-success-notice {\n padding: 10px;\n background-color: white;\n max-width: 900px;\n border: 1px solid #ccc;\n margin-top: 20px;\n}\n\n.wpstg_beta_notice {\n margin-bottom: 20px;\n}\n\n.wpstg-sysinfo {\n width: 700px;\n height: 700px;\n}\n\n.wpstg-form-table .col-title label {\n font-weight: 600;\n}\n\n.wpstg-form-table td:first-child {\n width: 30%;\n}\n\n.wpstg-share-button-container {\n margin: 5px 0;\n}\n\n.wpstg-share-button-container p {\n margin: 0 0 10px 0;\n}\n\n.wpstg-share-button {\n display: inline-block;\n}\n\n.wpstg-share-button a {\n text-decoration: none;\n}\n\n.wpstg-share-button .wpstg-share {\n font-family: sans-serif;\n font-weight: bold;\n text-decoration: none;\n text-align: center;\n}\n\n.wpstg-share-button .wpstg-share {\n -webkit-border-radius: 2px;\n -moz-border-radius: 2px;\n border-radius: 2px;\n color: #FFF;\n display: inline;\n font-size: 12px;\n padding: 4px 8px;\n}\n\n.wpstg-share-button-twitter .wpstg-share {\n background-color: #00ABF0;\n}\n\n.wpstg-share-button-facebook .wpstg-share {\n background-color: #3b5998;\n}\n\n.wpstg-share-button-googleplus .wpstg-share {\n background-color: #F53424;\n}\n\n.wpstg-share-button-twitter .share:active,\n.wpstg-share-button-facebook .share:active,\n.wpstg-share-button-googleplus .share:active {\n background-color: #353535;\n}\n\n#wpstg-check-space {\n margin-left: 8px;\n}\n\n#wpstg-welcome li {\n font-size: 18px;\n line-height: 29px;\n position: relative;\n padding-left: 23px;\n list-style: none !important;\n}\n\n#wpstg-welcome {\n margin-top: 20px;\n margin-right: 20px;\n background-color: white;\n}\n\n.wpstg-heading-pro {\n font-weight: bold;\n}\n\n.wpstg-h2 {\n margin-top: 0;\n margin-bottom: 1.2rem;\n font-size: 30px;\n line-height: 2.5rem;\n}\n\n#wpstg-welcome li:before {\n width: 1em;\n height: 100%;\n background: url(data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%2377B227%22%20d%3D%22M1671%20566q0%2040%2D28%2068l%2D724%20724%2D136%20136q%2D28%2028%2D68%2028t%2D68%2D28l%2D136%2D136%2D362%2D362q%2D28%2D28%2D28%2D68t28%2D68l136%2D136q28%2D28%2068%2D28t68%2028l294%20295%20656%2D657q28%2D28%2068%2D28t68%2028l136%20136q28%2028%2028%2068z%22%2F%3E%3C%2Fsvg%3E) left .4em no-repeat;\n background-size: contain;\n content: \"\";\n position: absolute;\n top: -2px;\n left: 0;\n color: #77b227;\n}\n\n.wpstg-h1 {\n margin-bottom: 1.35rem;\n font-size: 2.5em;\n line-height: 3.68rem;\n letter-spacing: normal;\n}\n\n.wpstg--swal2-content {\n color: #3e3e3e;\n}\n\n.wpstg--swal2-content h1 {\n color: #444;\n}\n\n#wpstg-welcome h2 {\n margin: 0 0 15px;\n}\n\n#wpstg-welcome .wpstg-footer {\n clear: both;\n margin-top: 20px;\n font-style: italic;\n}\n\n#wpstg-footer {\n clear: both;\n margin-top: 20px;\n margin-right: 10px;\n padding-top: 50px;\n}\n\n#wpstg-footer a {\n text-decoration: none;\n}\n\n#wpstg-footer li {\n margin-bottom: 2px;\n list-style: circle;\n}\n\n#wpstg-footer ul {\n margin-left: 15px;\n margin-top: 0px;\n}\n\n.wpstg-footer--title {\n margin-left: 15px;\n}\n\n.wpstg-staging-info {\n margin-top: 8px;\n color: #3e3e3e;\n font-size: 12px;\n}\n\n.wpstg-staging-info a {\n color: #3e3e3e;\n}\n\n.wpstg-staging-info li {\n margin-bottom: 2px;\n}\n\n.wpstg-bold {\n font-weight: 600;\n}\n\n#wpstg-processing-status {\n margin-top: 5px;\n font-size: 13px;\n font-weight: 400;\n float: left;\n}\n\n#wpstg-processing-timer {\n margin-top: 5px;\n font-size: 13px;\n font-weight: 400;\n float: right;\n}\n\n#wpstg-report-issue-button {\n margin-left: 30px;\n border: 1px solid #E01E5A;\n color: #E01E5A;\n background-color: white;\n}\n\n#wpstg-report-issue-button:hover {\n background-color: #dc2b62;\n color: #fff;\n}\n\n.wpstg-blue-primary {\n display: inline-block;\n text-decoration: none;\n font-size: 13px;\n height: 28px;\n margin: 0;\n padding: 0 10px 1px;\n cursor: pointer;\n border-width: 1px;\n border-style: solid;\n -webkit-appearance: none;\n border-radius: 3px;\n white-space: nowrap;\n box-sizing: border-box;\n background: #25a1f0;\n border-color: #2188c9;\n color: #fff;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n}\n\na.wpstg-blue-primary {\n padding: 5px 10px;\n height: auto;\n}\n\n.wpstg-blue-primary:hover {\n background-color: #259be6;\n}\n\n.wpstg-report-issue-form {\n position: absolute;\n z-index: 999;\n width: 300px;\n background-color: #fff;\n padding: 15px 15px 10px;\n border: 1px solid #e8e8e8;\n border-radius: 3px;\n box-shadow: 0 1px 0 0 #fff inset;\n display: none;\n right: 0;\n top: 35px;\n}\n\n@media (max-width: 600px) {\n .wpstg-report-issue-form {\n position: relative;\n }\n}\n\n.wpstg-report-show {\n display: block;\n}\n\n.wpstg-field input[type=text],\n.wpstg-field textarea {\n width: 100%;\n font-weight: 400;\n line-height: 1.4;\n margin-bottom: 4px;\n}\n\n.wpstg-report-email,\n.wpstg-report-hosting-provider {\n width: 100%;\n font-weight: 400;\n font-size: .8rem;\n height: 2.3rem;\n line-height: 2.3rem;\n border-radius: 3px;\n margin-bottom: 4px;\n padding: 0 10px;\n}\n\n.wpstg-report-description {\n border-radius: 3px;\n font-size: .8rem;\n padding: 6px 10px;\n resize: none;\n}\n\n.wpstg-report-privacy-policy {\n font-size: 12px;\n margin-bottom: 15px;\n}\n\n#wpstg-report-cancel {\n float: right;\n margin-right: 5px;\n font-weight: bold;\n}\n\n#wpstg-success-button {\n font-weight: bold;\n}\n\n.wpstg-message {\n box-sizing: border-box;\n -moz-box-sizing: border-box;\n background-color: #f5e0de;\n border-radius: 3px;\n color: rgba(0, 0, 0, .6);\n height: auto;\n margin: 10px 0;\n min-height: 18px;\n padding: 6px 10px;\n position: relative;\n}\n\n.wpstg-message.wpstg-error-message {\n background-color: #f5e0de;\n color: #b65147;\n font-size: 12px;\n}\n\n.wpstg-message.wpstg-success-message {\n background-color: #d7f8e0;\n color: #515151;\n}\n\n.wpstg-message p {\n margin: 3px 0;\n font-size: 13px;\n}\n\n.wpstg-warning {\n display: block;\n padding: 10px;\n background-color: #ffb804;\n color: #ffffff;\n margin: 10px 10px 10px 0;\n}\n\n.wpstg-warning a {\n color: #ffffff;\n font-weight: bold;\n text-decoration: underline;\n}\n\n.wpstg-error {\n display: block;\n padding: 10px !important;\n background-color: #E01E5A !important;\n color: #ffffff;\n margin: 10px 10px 10px 0 !important;\n border-color: transparent !important;\n border-left-color: transparent !important;\n box-shadow: none !important;\n}\n\n.wpstg-error a {\n color: #ffffff;\n font-weight: bold;\n text-decoration: underline;\n}\n\n#wpstg-resume-cloning {\n display: none;\n}\n\n#wpstg-external-db th {\n text-align: left;\n width: 120px;\n}\n\n#wpstg-db-connect {\n font-weight: normal;\n}\n\n#wpstg-db-status {\n display: block;\n margin-top: 5px;\n padding: 5px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n text-decoration: none;\n text-align: center;\n}\n\n.wpstg-text-field > #wpstg-db-status {\n margin-top: 8px;\n margin-left: 150px;\n min-width: 300px;\n}\n\n.wpstg-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n\n.wpstg-failed {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n\n#wpstg_select_tables_cloning {\n height: 600px;\n font-size: 13px;\n}\n\n#wpstg_select_tables_pushing {\n height: 400px;\n font-size: 13px;\n}\n\n#wpstg-update-notify {\n background-color: #E01E5A;\n font-size: 14px;\n color: #ffffff;\n line-height: normal;\n padding: 10px;\n}\n\n#wpstg-update-notify a {\n color: #ffffff;\n font-weight: bold;\n}\n\n.wpstg-pointer {\n cursor: pointer;\n}\n\n.wpstg--tab--header {\n background-color: white;\n /* margin-bottom: 10px; */\n /* padding: 16px; */\n position: relative;\n transition: border-color .2s ease-in-out;\n background-color: #ffffff;\n color: #3e3e3e;\n border-radius: 2px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .02);\n}\n\n.wpstg--tab--header ul {\n display: flex;\n}\n\n.wpstg--tab--header ul li {\n margin-right: 1em;\n margin-bottom: 0px;\n}\n\n.wpstg--tab--header ul li:last-child {\n margin-right: 0;\n}\n\n.wpstg--tab--header a {\n min-width: 150px;\n text-align: center;\n cursor: pointer;\n display: inline-block;\n padding: 1em 1.25em;\n padding-bottom: 9px;\n color: #c4c4c4;\n font-size: 18px;\n /*\n border: solid 1px;\n */\n}\n\n.wpstg--tab--header a.wpstg--tab--active {\n border-bottom: .4em solid #25A1F0;\n color: #25A1F0;\n}\n\n.wpstg--tab--header a:hover {\n background-color: #fefefe;\n border-bottom: 0.4em solid #25A1F0;\n color: #25A1F0;\n}\n\n.wpstg--tab--content {\n display: none;\n}\n\n.wpstg--tab--active {\n display: block;\n}\n\n.wpstg--text--strong,\n.wpstg--text--strong * {\n font-weight: bold !important;\n}\n\n.wpstg--text--danger {\n color: #a94442;\n}\n\n.wpstg--tooltip {\n position: relative;\n display: inline-block;\n margin-left: 5px;\n}\n\n.wpstg--tooltip.wpstg--tooltip-normal {\n margin-left: 0;\n border-bottom: 0;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext {\n visibility: hidden;\n width: 300px;\n background-color: #ffffff;\n color: #505050;\n text-align: left;\n padding: 12px;\n border-radius: 3px;\n position: absolute;\n z-index: 1;\n -webkit-box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n -moz-box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n font-weight: normal;\n}\n\n.wpstg--tooltiptext-backups {\n width: 120px;\n top: 100%;\n left: -150%;\n margin-left: -56px;\n margin-top: 4px;\n}\n\n.wpstg--tooltip.wpstg--exclude-rules--tooltip {\n border-bottom: 0px solid transparent;\n}\n\n.wpstg--tooltip.wpstg--exclude-rules--tooltip > .wpstg--tooltiptext {\n margin-top: 0px;\n margin-left: -150px;\n}\n\n/**\nTooltip top arrow\n */\n\n.wpstg--tooltip .wpstg--tooltiptext-backups::after {\n content: \" \";\n position: absolute;\n bottom: 100%;\n /* At the top of the tooltip */\n left: 50%;\n margin-left: 25px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent white transparent;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow {\n margin-top: 6px;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow::after {\n content: \" \";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -18px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent white transparent;\n}\n\n.wpstg--snaphot-restore-table tr {\n line-height: 12px;\n}\n\n.wpstg-float-left {\n float: left;\n}\n\n.wpstg-beta-notice {\n background-color: #b0e8b0;\n border-radius: 3px;\n padding: 7px;\n margin-bottom: 20px;\n}\n\n#wpstg-backup-name {\n font-size: 1.875em;\n font-weight: 600;\n}\n\n#wpstg_select_tables_cloning option:checked,\n#wpstg_select_tables_pushing option:checked {\n /* Cannot use background color here because Chrome and Firefox ignore it even if set to !important */\n -webkit-appearance: menulist-button;\n background-image: linear-gradient(0deg, #1e90ff 0%, #1e90ff 100%);\n}\n\n.wpstg--btn--cancel {\n background: #ff3428;\n border-color: #e72f24;\n color: #fff;\n height: auto;\n line-height: normal;\n font-size: 16px;\n padding: .5em;\n margin-bottom: 1.5em;\n}\n\n.wpstg--btn--cancel:hover {\n background: #ff3428;\n border-color: #e72f24;\n}\n\n.wpstg--process--content > .wpstg--swal2-html-container {\n padding: 4em 2em !important;\n}\n\n.wpstg--modal--process--logs,\n.wpstg--modal--error--logs {\n background: #ffffff;\n border: 1px solid #a8a8a8;\n border-radius: 3px;\n height: 300px;\n margin-top: 1em;\n display: none;\n padding-top: 10px;\n padding-left: 10px;\n overflow: auto;\n text-align: justify;\n}\n\n.wpstg--modal--error--logs {\n height: auto;\n max-height: 300px;\n}\n\n.wpstg--modal--process--logs p {\n font-size: 12px;\n white-space: nowrap;\n}\n\n.wpstg--modal--process--logs p.wpstg--modal--process--msg--info {\n color: #222222;\n}\n\n.wpstg--modal--process--logs p.wpstg--modal--process--msg--debug {\n color: #757575;\n}\n\n.wpstg--modal--process--title {\n color: #565656;\n margin: .25em 0;\n}\n\n.wpstg--modal--process--subtitle {\n margin: .5em 0;\n color: #565656;\n}\n\n.wpstg--modal--error--logs > p {\n text-align: left;\n font-size: 14px;\n color: #222222;\n}\n\n.wpstg--modal--process--logs p,\n.wpstg--modal--error--logs p {\n margin: 0px;\n margin-bottom: 2px;\n}\n\n.wpstg--modal--process--msg--error {\n color: #E01E5A;\n}\n\n.wpstg--modal--process--msg--critical {\n color: #E01E5A;\n}\n\n.wpstg--modal--process--msg--warning {\n color: darkorange;\n}\n\n.wpstg--modal--process--msg-found {\n font-size: 16px;\n color: #E01E5A;\n font-weight: bold;\n}\n\n.wpstg--modal--delete {\n text-align: left;\n margin-top: 8px;\n color: #565656;\n}\n\n.wpstg-swal-popup .wpstg--swal2-cancel.wpstg--btn--cancel {\n margin-bottom: 0;\n text-shadow: none !important;\n}\n\n.wpstg-swal-popup .wpstg-loader {\n display: inline-block !important;\n}\n\n.wpstg--modal--process--generic-problem {\n display: none;\n border-left: 5px solid #E01E5A;\n margin: .5em 0;\n}\n\n.wpstg--modal--process--logs--tail {\n font-size: 16px;\n color: #565656;\n background: none;\n border: none;\n cursor: pointer;\n text-decoration: underline;\n}\n\n.wpstg--modal--backup--import--upload--title {\n color: #3e3e3e;\n}\n\n.wpstg--modal--backup--import--configure,\n.wpstg--modal--backup--import--upload--status,\n.wpstg--modal--backup--import--upload--container input[type=\"file\"] {\n display: none;\n}\n\n#wpstg--backups--import--file-list {\n font-size: 14px;\n font-weight: bold;\n}\n\n#wpstg--backups--import--file-list-empty {\n color: #E01E5A;\n}\n\n.wpstg--modal--backup--import--filesystem label {\n font-size: 14px;\n}\n\n.wpstg--modal--backup--import--filesystem button {\n margin-bottom: 20px;\n}\n\n.wpstg--modal--backup--import--upload {\n position: relative;\n min-height: 30px;\n}\n\n.wpstg--modal--backup--import--upload {\n color: #505050;\n}\n\n.wpstg--modal--backup--import--upload--container {\n position: relative;\n border-radius: 10px;\n margin: .5em;\n padding: 1em .5em;\n border: 3.5px dashed #dedede;\n transition: background-color 0.3s ease, color 0.3s ease;\n background-color: #f4fbff;\n min-height: 130px;\n}\n\n.wpstg--modal--backup--import--upload--container.wpstg--has-dragover span.wpstg--drop {\n display: inline-flex;\n}\n\n.wpstg--modal--backup--import--upload--container input[type='file'] {\n display: none;\n}\n\n.wpstg--modal--backup--import--upload--container img {\n margin-top: 10px;\n width: 4em;\n align-self: center;\n border: none;\n}\n\n.wpstg--modal--backup--import--upload--container span {\n margin-top: 1em;\n}\n\n.wpstg--backup--import--options > button {\n margin-top: 1em;\n padding: 1em;\n align-self: center;\n width: 185px;\n height: auto;\n line-height: normal;\n}\n\n.wpstg--backup--import--options {\n position: relative;\n display: flex;\n justify-content: center;\n}\n\n.wpstg--backup--import--options ul {\n display: none;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul {\n padding: 0;\n margin: 54px 0 0 0;\n display: block;\n position: absolute;\n width: 185px;\n background: #25a1f0;\n box-sizing: border-box;\n border-radius: 0 0 3px 3px;\n border-width: 1px;\n border-color: #2188c9;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li {\n border-bottom: .1em solid #25a1f0;\n margin: 0;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li:hover {\n background-color: #25a1f0;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li:last-child {\n border-bottom: none;\n}\n\n.wpstg--backup--import--options ul li button {\n cursor: pointer;\n background: none;\n border: none;\n margin: 0;\n width: 100%;\n color: white;\n height: 40px;\n line-height: 40px;\n}\n\n.wpstg--backup--import--options ul li button:hover {\n background-color: #259be6;\n}\n\n.wpstg--modal--backup--import--search-replace--info {\n margin: 1em 0;\n display: flex;\n flex-direction: row;\n}\n\n.wpstg--modal--backup--import--info p {\n text-align: left;\n margin: 0;\n}\n\n.wpstg--modal--backup--import--search-replace--wrapper button {\n align-self: center;\n}\n\n.wpstg--import--advanced-options--button {\n border: 0;\n border-radius: 3px;\n font-size: 18px;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n cursor: pointer;\n}\n\n.wpstg--modal--backup--import--search-replace--new {\n color: white;\n background-color: #25a1f0;\n}\n\n.wpstg--modal--backup--import--search-replace--remove {\n color: white;\n background-color: #25a1f0;\n width: 22px;\n height: 22px;\n margin-left: 5px;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group:first-child button {\n display: none;\n}\n\n.wpstg--modal--backup--import--search-replace--input--container {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group {\n width: 100%;\n border-bottom: 6px solid #f1f1f1;\n margin-bottom: 10px;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group input {\n min-width: 250px;\n width: calc(50% - 4px - 11px - 5px); /* -4px is half of the padding; -11px is half of the button; -5 is the margin left of the button */\n display: inline-block;\n line-height: 10px;\n border: 1px solid #dedede;\n border-radius: 3px;\n color: #666;\n padding: 8px;\n margin-bottom: 12px;\n}\n\n.wpstg--modal--import--upload--process {\n display: none;\n position: relative;\n height: 30px;\n margin-top: 20px;\n margin-bottom: 20px;\n width: 100%;\n top: 0;\n left: 0;\n text-indent: 1em;\n white-space: nowrap;\n overflow: hidden;\n color: #333333;\n justify-content: center;\n align-items: center;\n}\n\n.wpstg--modal--import--upload--progress {\n position: absolute;\n background: #98d452;\n color: white;\n height: 100%;\n border-radius: 4px;\n left: 0;\n top: 0;\n}\n\n.wpstg--modal--import--upload--progress--title {\n z-index: 9;\n}\n\n.wpstg-fieldset:disabled {\n opacity: 0.8;\n border-top: 1px solid white;\n margin-top: 20px;\n}\n\n.wpstg-fieldset {\n padding-left: 20px;\n}\n\n.wpstg-fs-14 {\n font-size: 14px;\n}\n\n.wpstg-dark-alert {\n font-weight: bold;\n background-color: #0e86d9;\n padding: 15px;\n margin-top: 0px;\n color: white;\n}\n\n.wpstg-dark-alert .wpstg-button--cta-red {\n margin-left:10px;\n}\n\n.wpstg-form-group {\n display: block;\n width: 100%;\n margin-bottom: 8px;\n align-items: center;\n}\n\n.wpstg-form-group > label {\n display: block;\n font-weight: 700;\n}\n\n.wpstg-text-field > input {\n width: 300px;\n display: block;\n line-height: 1.5;\n}\n\n.wpstg-code-segment {\n display: block;\n}\n\n.wpstg-text-field > .wpstg-code-segment {\n margin-top: 4px;\n min-width: 300px;\n}\n\n.wpstg-form-group > .wpstg-checkbox {\n min-width: 100%;\n width: 100%;\n position: relative;\n}\n\n.wpstg-form-group > .wpstg-checkbox > input[type='checkbox'] {\n left: 150px;\n}\n\n.wpstg-rounded {\n border-radius: 3px;\n}\n\n.wpstg-white-border {\n border: 1px solid white !important;\n}\n\n.wpstg-ml-4 {\n margin-left: 4px;\n}\n\n#wpstg-confirm-backup-restore-data {\n margin: 40px;\n text-align: left;\n}\n\n#wpstg-advanced-settings hr {\n margin: 20px 0;\n}\n\n.wpstg-form-row {\n display: block;\n}\n\n.wpstg-form-row label,\n.wpstg-form-row input {\n display: table-cell;\n padding-left: 5px;\n padding-right: 5px;\n margin-top: 3px;\n margin-bottom: 3px;\n}\n\n.wpstg-form-row input {\n width: 400px;\n}\n\n.wpstg-form-row label {\n font-weight: bold;\n width: 1px;\n white-space: nowrap;\n}\n\n#wpstg-db-connect-output #wpstg-db-status {\n width: 390px;\n}\n\n.wpstg-fs-14 {\n font-size: 14px;\n}\n\n.wpstg-code-segment {\n display: block;\n}\n\n.wpstg-form-group > .wpstg-checkbox {\n min-width: 100%;\n width: 100%;\n}\n\n.wpstg-form-group > .wpstg-checkbox > input[type='checkbox'] {\n margin-left: 10px;\n}\n\n@media only screen and (max-width: 768px) {\n .wpstg-form-group > label {\n min-width: auto;\n width: auto;\n }\n\n .wpstg-text-field > input {\n width: 100%;\n }\n\n .wpstg-text-field > .wpstg-code-segment {\n margin-left: 0;\n min-width: 100%;\n }\n\n .wpstg-tab-section {\n width: calc(100vw - 60px);\n max-width: 450px;\n }\n}\n\n.wpstg-rounded {\n border-radius: 3px;\n}\n\n.wpstg-white-border {\n border: 1px solid white !important;\n}\n\n.wpstg-m-0 {\n margin: 0;\n}\n\n.wpstg-mt-10px {\n margin-top: 10px !important;\n}\n\n.wpstg-mr-10px {\n margin-right: 10px !important;\n}\n\n.wpstg-my-10px {\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n}\n\n.wpstg-w-100 {\n width: 100%;\n}\n\n.wpstg-box-shadow {\n box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);\n}\n\n.wpstg-float-left {\n float: left;\n}\n\n.wpstg-bold-text {\n font-weight: bold;\n}\n\n.wpstg-warning.notice {\n border-left: 4px solid #ffba00;\n}\n\n.wpstg-confirmation-label {\n background-color: #5b9dd9;\n color: #fff;\n padding: 2px;\n border-radius: 3px;\n}\n\n.wpstg-my-6px {\n margin-bottom: 6px;\n margin-top: 6px;\n}\n\n.wpstg-mb-10px {\n margin-bottom: 10px;\n}\n\n.wpstg-clear-both {\n clear: both;\n}\n\n.wpstg-font-italic {\n font-style: italic;\n}\n\n.wpstg-mt-20px {\n margin-top: 20px;\n}\n\n.wpstg-welcome-container {\n border: 2px solid white;\n padding: 20px;\n margin-bottom: 20px;\n}\n\n.wpstg-ml-30px {\n margin-left: 30px;\n}\n\n.wpstg-text-center {\n text-align: center;\n}\n\n.wpstg-feedback-link {\n text-decoration: none;\n}\n\n.wpstg-feedback-span {\n display: block;\n margin-bottom: 3px;\n}\n\n#wpstg-confirm-backup-restore-data {\n margin: 40px;\n text-align: left;\n}\n\n#wpstg-confirm-backup-restore-wrapper {\n margin: 30px;\n margin-top: 0;\n}\n\n#wpstg-confirm-backup-restore-wrapper h3 {\n color: #E01E5A;\n}\n\n#wpstg-progress-db,\n#wpstg-progress-backup {\n background-color: #3fa5ee;\n}\n\n#wpstg-progress-sr,\n#wpstg-progress-files.wpstg-pro {\n background-color: #3c9ee4;\n}\n\n#wpstg-progress-dirs,\n#wpstg-progress-data {\n background-color: #3a96d7;\n}\n\n#wpstg-progress-files:not(.wpstg-pro),\n#wpstg-progress-finishing {\n background-color: #378cc9;\n}\n\n.wpstg-issue-resubmit-confirmation.wpstg--swal2-container,\n.wpstg-swal2-container.wpstg--swal2-container {\n z-index: 10500;\n}\n\n.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-actions,\n.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-header {\n display: none;\n}\n\nbody.toplevel_page_wpstg_backup .wpstg--swal2-container .wpstg--swal2-content,\nbody.toplevel_page_wpstg_clone .wpstg--swal2-container .wpstg--swal2-content {\n z-index: 2;\n}\n\n.toplevel_page_wpstg_clone #swal2-content h2 {\n color: #3e3e3e;\n}\n\n.toplevel_page_wpstg_clone #swal2-content {\n line-height: 1.5em;\n}\n\ndiv#exportUploadsWithoutDatabaseWarning {\n font-style: italic;\n font-size: 0.9rem;\n margin: 10px;\n padding: 10px;\n border: 1px solid #e3e3e3;\n border-radius: 5px;\n text-align: center;\n background-color: #fafafa;\n}\n\n.wpstg-advanced-options-dropdown-wrapper {\n display: none; /* ENABLE WHEN WE HAVE ADVANCED OPTIONS FOR EXPORTING */\n margin-top: 20px;\n}\n\n.wpstg--modal--backup--import--search-replace--wrapper {\n text-align: left;\n margin-top: 20px;\n}\n\n.wpstg--modal--backup--import--search-replace--new--wrapper {\n text-align: center;\n}\n\n.wpstg-import-backup-contains li {\n display: inline-block;\n margin-bottom:0px;\n}\n\n.wpstg-import-backup-contains li .wpstg-backups-contains {\n border-radius: 3px;\n color: #979797;\n background-color: #f4f4f4 !important;\n width: 18px;\n height: 18px;\n font-size: 17px;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains {\n padding: 2px;\n background-color: white;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains > .wpstg--dashicons {\n filter: invert(35%);\n}\n\n.wpstg-import-backup-contains .wpstg--tooltiptext {\n width: 80px;\n font-size: 13px;\n padding: 5px;\n left: -25px;\n text-align: center;\n}\n\n.wpstg-import-backup-contains-title {\n display: inline-block;\n}\n\nul.wpstg-import-backup-contains {\n display: inline-block;\n}\n\n.wpstg-import-backup-name {\n display: inline-block;\n font-weight: bold;\n}\n\n.wpstg-backup-more-info-toggle {\n font-size: x-small;\n display: inline-block;\n font-style: italic;\n cursor: pointer;\n}\n\n.wpstg-backup-more-info-toggle::selection {\n background: none;\n}\n\nul.wpstg-import-backup-more-info {\n font-size: 14px;\n text-align: left;\n margin-bottom: 30px;\n margin-top: 10px;\n background-color: #f6f6f6;\n border: 1px solid #878787;\n border-radius: 3px;\n padding: 7px;\n cursor: pointer;\n}\n\nul.wpstg-import-backup-more-info:hover {\n background-color: #def2ff;\n border: 1px solid #25a1f0;\n}\n\nul.wpstg-import-backup-more-info li {\n height: 20px;\n}\n\n.wpstg-backup-list {\n max-width: 800px;\n}\n\n.wpstg-backup-list h3 {\n color:#3e3e3e;\n}\n\n.wpstg-backup-list ul ul {\n margin-block-start: 1em;\n margin-block-end: 1em;\n}\n\n.wpstg-push-confirmation-message {\n text-align: justify;\n font-size: 15px;\n}\n\n.wpstg-settings-row {\n padding-top: 10px;\n padding-bottom: 10px;\n}\n\n.wpstg-settings-title {\n font-weight: 600;\n}\n\n.wpstg-settings-form-group {\n display: flex;\n align-items: center;\n}\n\n.wpstg-settings-form-group > .wpstg-settings-message {\n width: 30%;\n padding: 0;\n margin: 7px 0 0;\n}\n\n/**\n * WP STAGING EXCLUSION RULES TABLE LAYOUT\n */\n\n.wpstg-excluded-filters-container {\n padding: 0;\n margin-top: 10px;\n margin-bottom: 10px;\n max-width: 100%;\n width: 100%;\n}\n\n.wpstg-excluded-filters-container > table {\n width: 100%;\n border-collapse: collapse;\n border-color: transparent;\n}\n\n.wpstg-excluded-filters-container td {\n padding-top: 4px;\n padding-bottom: 4px;\n height: 20px;\n}\n\n.wpstg-excluded-filters-container h4 {\n margin: 0;\n}\n\n.wpstg-exclude-filters-foot {\n display: flex;\n justify-content: flex-start;\n padding: 0;\n}\n\n/**\n * WP STAGING EXCLUSION RULE DROPDOWN STYLE\n */\n\n\n.wpstg-exclude-filter-dropdown > button:hover {\n background: #135e96;;\n border: 1px solid #135e96;;\n}\n\n.wpstg-exclude-filter-dropdown > .wpstg-dropdown-menu {\n width: 128px;\n}\n\n.wpstg-remove-exclude-rule {\n color: #fff !important;\n background-color: #e01e5a;\n border: 1px solid #e01e5a;\n width: 20px;\n height: 20px;\n border-radius: 10px;\n font-size: 24px;\n padding: 0;\n display: inline-flex;\n justify-content: center;\n outline: none;\n box-shadow: none;\n font-weight: 400;\n line-height: 0.7;\n margin-top: 5px;\n cursor: pointer;\n}\n\n.wpstg-remove-exclude-rule:hover {\n background-color: #E01E5A;\n border-color: #E01E5A;\n}\n\n.wpstg-code-block {\n margin-top: 4px;\n font-size: 1.2em;\n background: #f8f8f8;\n border-radius: 2px;\n}\n\n.wpstg-rule-info {\n background: #f8f8f8 !important;\n}\n\ncode.wpstg-code {\n display: inline-block;\n font-size: 11px;\n border: 1px solid #aaa;\n background: #fff;\n padding: 2px 4px;\n margin-bottom: 1px;\n color: #E01E5A;\n}\n\n.wpstg-exclusion-rule-info {\n color: #fff !important;\n background-color: #ffc107;\n border: 1px solid #ffc107;\n width: 14px;\n height: 14px;\n border-radius: 7px;\n font-size: 14px;\n padding: 0;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n outline: none;\n box-shadow: none;\n font-weight: 400;\n vertical-align: middle;\n}\n\n.wpstg-exclusion-rule-info:hover {\n background-color: #ffba0c;\n border: 1px solid #ffba0c;\n}\n\n/**\n * WP STAGING INPUTS EXCLUSION RULES\n */\n\n.wpstg-exclude-rule-input {\n font-size: 12px !important;\n padding: 2px 6px;\n box-shadow: none;\n outline: none !important;\n display: inline-block;\n font-weight: 400;\n line-height: 1.5;\n color: #222;\n border-radius: 0 !important;\n background-color: #fff;\n border: 1px solid #bbb;\n min-height: 24px !important;\n margin-top: 4px;\n margin-left: 4px;\n vertical-align: baseline !important;\n transition: all 0.3s cubic-bezier(.25, .8, .25, 1);\n width: 135px;\n}\n\n.wpstg-excluded-filters-container tbody > tr:last-child .wpstg-exclude-rule-input {\n margin-bottom: 4px;\n}\n\n.wpstg-exclude-rule-input:hover {\n border: 1px solid #999;\n}\n\n.wpstg-exclude-rule-input:focus {\n border: 1px solid #25A0F1 !important;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24) !important;\n}\n\n.wpstg-file-size-exclude-select,\n.wpstg-path-exclude-select {\n width: 135px;\n}\n\n.wpstg-file-size-exclude-select-small {\n width: 52px;\n}\n\n.wpstg-file-size-exclude-input {\n width: 75px;\n}\n\n.wpstg-staging-option-title {\n margin: 15px 0 0;\n}\n\n.wpstg-swal-push-container.wpstg--swal2-container {\n z-index: 9995;\n}\n\n#wpstg-scanning-files {\n padding-bottom: 5px;\n}\n\n#wpstg-scanning-files.wpstg-tab-section, #wpstg-scanning-db.wpstg-tab-section {\n padding-top: 10px;\n}\n\n.wpstg-reset-excludes-container {\n margin: 10px 0;\n}\n\n.wpstg-swal2-ajax-loader {\n width: 100%;\n height: 150px;\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n@keyframes wpstg-loading-icon-anim {\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.wpstg-swal2-ajax-loader > img {\n width: 64px;\n height: 64px;\n animation: wpstg-loading-icon-anim 1s infinite linear;\n -webkit-animation: wpstg-loading-icon-anim 1s infinite linear;\n}\n\n.wpstg-swal2-container .wpstg-tab-section {\n width: auto !important;\n}\n\n#wpstg-no-staging-site-results {\n margin-top: 10px;\n max-width: 375px;\n}\n\nli#wpstg-backup-no-results {\n max-width: 500px;\n}\n\nli#wpstg-backup-no-results div, #wpstg-no-staging-site-results div {\n display: inline-block;\n text-align: center;\n}\n\nli#wpstg-backup-no-results .wpstg--dashicons, #wpstg-no-staging-site-results .wpstg--dashicons {\n filter: invert(50%);\n position: absolute;\n margin-top: 1px;\n}\n\nli#wpstg-backup-no-results .no-backups-found-text, #wpstg-no-staging-site-results .no-staging-site-found-text {\n color: #5d5d5d;\n margin-left: 20px;\n}\n\n@media only screen and (max-width: 680px) {\n li#wpstg-backup-no-results div, #wpstg-no-staging-site-results div {\n width: 100%;\n }\n}\n\n#wpstg--modal--backup--download-inner p.wpstg-download-modal-text {\n font-size: 16px;\n color: #565656;\n}\n\n#wpstg--modal--backup--download-inner h2 {\n color: #565656;\n}\n\n.wpstg-backup-restore-contains-database,\n.wpstg-backup-restore-contains-files {\n display: none;\n}\n\n.wpstg-green-button {\n background: #8bc34a;\n border: 1px solid #78a93f;\n color: white;\n text-shadow: 0 -1px 1px #78a93f, 1px 0 1px #78a93f, 0 1px 1px #40c921, -1px 0 1px #78a93f;\n}\n\n.wpstg-green-button:hover {\n background: #78a93f;\n}\n\n.wpstg-is-dir-loading {\n position: absolute;\n margin-top: -2px;\n margin-left: 8px;\n display: none;\n}\n\n.wpstg-ml-8px {\n margin-left: 8px;\n}\n\n.wpstg-mb-8px {\n margin-bottom: 8px;\n}\n\n\n.wpstg-btn-danger {\n background-color: #E01E5A;\n border: 1px solid #E01E5A;\n color: white;\n text-shadow: none;\n}\n\n.wpstg-btn-danger:hover {\n background: #c0194d;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);\n}\n\n.wpstg-swal2-container.wpstg-swal2-loading > .wpstg--swal2-modal {\n height: 200px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container:not(.wpstg-swal2-loading) > .wpstg--swal2-modal {\n max-width: 480px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-header {\n display: none;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-content {\n height: auto;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-tabs-wrapper {\n overflow-y: auto;\n height: auto !important;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content {\n font-size: 13px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-dir {\n margin-bottom: 4px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-subdir {\n margin-top: 4px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open .wpstg--swal2-modal {\n height: calc(100vh - 70px);\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-tabs-wrapper {\n height: calc(100vh - 350px) !important;\n}\n\n.wpstg--swal2-actions.wpstg--modal--actions > button {\n margin-left: 4px;\n margin-right: 4px;\n text-transform: uppercase;\n text-shadow: initial;\n font-weight: 500;\n min-width: 80px;\n}\n\n.wpstg-swal-popup {\n max-width: 1200px !important;\n}\n\n.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-title {\n color: #a8a8a8;\n}\n\n.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-content {\n margin-top: 8px;\n color: #a8a8a8;\n}\n\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step.wpstg--swal2-active-progress-step,\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step,\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line {\n background: #25a1f0;\n}\n\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line {\n width: 2.75em;\n}\n\n.wpstg--dashicons {\n width: 16px;\n height: 16px;\n}\n\n.wpstg--dashicons.wpstg-dashicons-grey {\n filter: invert(20%);\n}\n\n.wpstg--dashicons.wpstg-dashicons-19 {\n width: 19px;\n height: 19px;\n}\n\n.wpstg--dashicons.wpstg-dashicons-21 {\n width: 21px;\n height: 21px;\n}\n\n#wpstg--tab--backup #wpstg-step-1 {\n display: flex;\n align-items: center;\n}\n\n.wpstg-advanced-options .wpstg--tooltip,\n#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip {\n border-bottom: 0 solid transparent;\n display: inline-flex;\n align-items: center;\n}\n\n.wpstg-advanced-options-site .wpstg--tooltip img.wpstg--dashicons {\n filter: invert(17%) sepia(0%) saturate(1%) hue-rotate(195deg) brightness(97%) contrast(77%);\n}\n\n#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip {\n border-bottom: 0 solid transparent;\n display: flex;\n align-items: center;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext-backups::after {\n left: calc(20% + 2px);\n}\n\n.wpstg-listing-single-backup .wpstg--dashicons {\n width: 17px;\n height: 17px;\n}\n\n.wpstg-100-width {\n width: 100px;\n}\n\n.wpstg-caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px solid;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n transition: transform 0.2s;\n cursor: pointer;\n}\n\n.wpstg-caret.wpstg-caret-up {\n transform: rotate(-180deg);\n}\n\n.wpstg-advanced-options-site label {\n font-size: 16px;\n display: block;\n margin: .5em 0;\n}\n\n#wpstg-confirm-backup-restore-data {\n font-size: 18px;\n margin: 0;\n margin-top: 30px;\n}\n\n/* Sweetalert WP STAGING Theme */\n\nbody.toplevel_page_wpstg_backup .wpstg--swal2-container.wpstg--swal2-backdrop-show,\nbody.toplevel_page_wpstg_clone .wpstg--swal2-container.wpstg--swal2-backdrop-show {\n background: rgba(0, 0, 0, .6);\n z-index: 9995;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup {\n border-radius: 8px;\n z-index: 9999;\n padding: 24px;\n color: #3e3e3e;\n font-family: Verdana, Geneva, Tahoma, sans-serif;\n}\n\n.wpstg-swal-popup .wpstg--swal2-title {\n font-size: 22px;\n color: #3e3e3e;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-title {\n align-self: flex-start; /* For an actual Swal title */\n text-align: left; /* Manually adding this class to a non flex display */\n margin-bottom: 0;\n}\n\n.wpstg-swal-popup .wpstg--swal2-close {\n top: 8px;\n right: 8px;\n z-index: 5;\n}\n\n.wpstg-swal-popup .wpstg--swal2-close:focus {\n outline: none;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions {\n justify-content: flex-end;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button {\n border-radius: 4px;\n font-weight: 900;\n border: 0;\n font-size: 15px;\n padding: 10px 12px;\n text-transform: capitalize;\n line-height: normal;\n height: 40px;\n min-width: 100px;\n text-shadow: none;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions > button {\n margin-left: 8px;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel {\n border: 1px solid rgba(29, 28, 29, 0.3);\n background: #fff;\n color: rgb(29, 28, 29);\n font-weight: 500;\n width: 100px;\n text-shadow: none;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button:hover {\n box-shadow: 0 1px 3px 0 rgba(0 0 0 .1);\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel:hover {\n background: rgba(28, 29, 28, .04);\n}\n\n#wpstg-backup-name-input {\n height: 44px;\n font-size: 18px;\n}\n\n.wpstg-restore-finished-container .wpstg--swal2-title {\n color: #565656 !important;\n}\n\n/*#wpstg-restore-success {\n color: #565656;\n}*/\n\n.wpstg-restore-finished-container .wpstg--swal2-content {\n margin-top: 20px;\n color: #a8a8a8;\n}\n\n/* WP Staging Implementation of Windows Style Linear Loader */\n\n.wpstg-linear-loader > span[class*=\"wpstg-linear-loader-item\"] {\n height: 6px;\n width: 6px;\n background: #333;\n display: inline-block;\n margin: 12px 2px;\n border-radius: 100%;\n animation: wpstg_linear_loader 3s infinite;\n animation-timing-function: cubic-bezier(0.030, 0.615, 0.995, 0.415);\n animation-fill-mode: both;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(1) {\n animation-delay: 1s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(2) {\n animation-delay: 0.8s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(3) {\n animation-delay: 0.6s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(4) {\n animation-delay: 0.4s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(5) {\n animation-delay: 0.2s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(6) {\n animation-delay: 0s;\n}\n\n@keyframes wpstg_linear_loader {\n 0% {\n transform: translateX(-30px);\n opacity: 0;\n }\n 25% {\n opacity: 1;\n }\n 50% {\n transform: translateX(30px);\n opacity: 0;\n }\n 100% {\n opacity: 0;\n }\n}\n\n/* END - Windows Style Linear Loader */\n\n.wpstg--modal--backup--import--upload--content {\n padding: .75em;\n margin: 1em auto;\n}\n\n.wpstg--modal--backup--import--upload--content .wpstg-linear-loader {\n display: none;\n}\n\n#wpstg-multisite-disabled .wpstg-clone {\n width: 355px;\n}\n\n#wpstg-free-version-backups .wpstg-clone {\n text-align: center;\n}\n\n#wpstg-free-version-backups .wpstg-clone p {\n font-size: 16px;\n}\n\n.wpstg-staging-info li .backup-notes {\n word-break: break-word;\n}\n\n.wpstg--modal--import--upload--progress--title small {\n font-weight: normal;\n}\n\n#wpstg-report-issue-wrapper {\n position: relative;\n}\n\n#wpstg-report-issue-wrapper .arrow-up {\n width: 0;\n height: 0;\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n border-bottom: 8px solid white;\n position: absolute;\n top: -8px;\n right: 40px;\n}\n\n.notice {\n margin: 10px 20px 0 2px;\n}\n\n.wpstg--notice {\n box-shadow: 0 1px 1px rgba(0, 0, 0, .04);\n margin: 20px 20px 20px 0px;\n padding: 1px 12px;\n}\n\n.wpstg--error a:hover {\n color: #eeeeee;\n}\n\n.wpstg--error, .wpstg--error a {\n background: #E01E5A;\n color: white;\n}\n\n/**\n * Buttons\n */\n\n.wpstg-button {\n display: inline-block;\n border-radius: 2px;\n cursor: pointer;\n padding: 2px 10px 2px 10px;\n text-transform: uppercase;\n font-weight: 500;\n outline: 0;\n transition: background-color .1s ease-in;\n text-decoration: none;\n}\n\n.wpstg-button.wpstg-save {\n background-color: #1687A7;\n color: white;\n}\n\n.wpstg-button.wpstg-save:hover {\n background-color: #276678;\n}\n\n\n.wpstg-button.wpstg-button-light {\n background-color: #f8f8f8;\n border: 1px solid #eee;\n color: #333;\n animation: background-color 0.3s;\n}\n\n.wpstg-button.wpstg-button-light:hover {\n background-color: #e0e0e0;\n border: 1px solid #e0e0e0;\n}\n\n.wpstg-buttons .spinner {\n float: none;\n margin: 0 0 0 5px;\n}\n\n.wpstg-button.danger {\n display: inline-block;\n text-decoration: none;\n text-align: center;\n text-transform: inherit;\n background-color: #E01E5A;\n color: white;\n border-radius: 2px;\n border-color: transparent;\n}\n\n.wpstg-button.danger:hover {\n background-color: #c0194d;\n}\n\n.wpstg-button--big {\n display: inline-block;\n padding: 10px;\n min-width: 170px;\n font-size: 16px;\n text-decoration: none;\n text-align: center;\n margin-top: 20px;\n color: white;\n border-radius: 3px;\n}\n\n.wpstg-button--primary {\n display: inline-block;\n text-decoration: none;\n font-size: 13px;\n line-height: 2.15384615;\n min-height: 30px;\n margin: 0;\n padding: 0 10px;\n cursor: pointer;\n border: 1px solid rgba(29, 28, 29, 0.3);\n -webkit-appearance: none;\n border-radius: 2px;\n white-space: nowrap;\n box-sizing: border-box;\n color: #171717;\n}\n\n.wpstg-button--primary:hover {\n background: rgba(28, 29, 28, .04);\n color: black;\n}\n\n.wpstg-button--secondary {\n display: inline-block;\n background-color: transparent;\n color: #95a5a6;\n border-radius: 2px;\n border: 1px solid rgba(29, 28, 29, 0.3);\n cursor: pointer;\n padding: 4px 10px 2px 10px;\n font-weight: 500;\n outline: 0;\n transition: background-color .1s ease-in;\n text-decoration: none;\n}\n\n.wpstg-button--red {\n background-color: #E01E5A;\n border-color: #E01E5A;\n color: white;\n}\n\n.wpstg-button--red:hover {\n background-color: #d02358;\n border-color: #e0255f;\n color: white;\n}\n\n.wpstg-button--cta-red {\n background-color: #fe008f;\n border-color: #E01E5A;\n color: white;\n}\n\n.wpstg-button--cta-red:hover {\n background-color: #f31391;\n border-color: #e0255f;\n color: white;\n}\n\n.wpstg-button--blue {\n background-color: #25A0F1;\n border-color: #25A0F1;\n color: white;\n}\n\n.wpstg-button--blue:hover {\n background-color: #259be6;\n border-color: #259be6;\n color: white;\n}\n\n#wpstg-button-backup-upgrade {\n font-size: 16px;\n}\n\n.wpstg-staging-status {\n color: #E01E5A;\n}\n\n#wpstg-push-changes,\n#wpstg-start-updating,\n#wpstg-save-clone-data {\n margin-left: 5px;\n}\n\ninput.wpstg-textbox {\n border: 1px solid #aaa;\n border-radius: .25rem;\n padding: 0.25rem 0.5rem;\n font-size: 14px;\n}\n\ninput.wpstg-textbox:focus {\n outline: 0;\n border-color: #259be6;\n -webkit-box-shadow: 0 0 0 0.1rem rgba(221, 221, 221, .35);\n box-shadow: 0 0 0 0.1rem rgba(221, 221, 221, .35);\n}\n\ninput.wpstg-textbox::placeholder {\n color: #888;\n}\n\n.wpstg--advance-settings--checkbox {\n display: flex;\n align-items: center;\n}\n\n.wpstg--advance-settings--checkbox > label {\n font-size: 14px;\n font-weight: bolder;\n width: 165px;\n display: inline-block;\n}\n\n.wpstg--advance-settings--checkbox > .wpstg--tooltip {\n margin-top: 5px;\n margin-left: 5px;\n position: relative;\n display: inline-block;\n border-bottom: 0px solid transparent;\n}\n\n.wpstg--advance-settings--checkbox > .wpstg--tooltip > .wpstg--tooltiptext {\n top: 18px;\n left: -150px;\n}\n\n\ndiv#wpstg-restore-wait {\n display: none;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n text-align: center;\n height: 100vh;\n width: 100vw;\n position: fixed;\n top: 0;\n left: 0;\n background: white;\n z-index: 99999;\n}\n\ndiv#wpstg-restore-wait .wpstg-title {\n font-weight: bold;\n}\n\ndiv#wpstg-restore-wait div {\n font-size: 16px;\n margin-top: 12px;\n}\n\n.resumable-browse {\n cursor: pointer;\n}\n\n.resumable-browse a {\n text-decoration: underline;\n}\n\n.wpstg-upload-text {\n font-weight: 600;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover {\n transition: background-color 0.7s;\n background-color: #94dc96;\n color: #FFF;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover * {\n pointer-events: none; /* Avoids flickering when dragging to drop a file */\n}\n\n.wpstg--modal--backup--import--upload--container.dragover .wpstg-upload-text {\n display: none;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover .wpstg-dragover-text {\n display: block;\n}\n\n.wpstg--modal--backup--import--upload--container .wpstg-dragover-text {\n display: none;\n}\n\n#wpstg-invalid-license-message, #wpstg-invalid-license-message a {\n font-weight: 500;\n color: #E01E5A;\n margin-left: 6px;\n}\n\n#wpstg-sidebar--banner {\n max-width: 200px;\n}\n\n@media screen and (max-width: 1234px) {\n .wpstg-h2 {\n font-size: 24px;\n }\n\n #wpstg-welcome li {\n font-size: 14px;\n }\n}\n\n.wpstg-exclamation {\n color: #ffffff;\n border-radius: 100%;\n background-color: #E01E5A;\n width: 20px;\n height: 20px;\n text-align: center;\n font-weight: bold;\n display: inline-block;\n margin: 6px;\n}\n\n.wpstg--tab--contents {\n padding-top: 1px;\n}\n\n.wpstg-swal-show.wpstg--swal2-show {\n -webkit-animation: wpstg-swal-show 0.2s !important;\n animation: wpstg-swal-show 0.2s !important;\n}\n\n@-webkit-keyframes wpstg-swal-show {\n 0% {\n transform: scale(0.3);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes wpstg-swal-show {\n 0% {\n transform: scale(0.3);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n.wpstg-tab-item--vert-center {\n display: flex;\n align-items: center;\n}\n\n.wpstg-db-comparison-modal {\n padding-left: 10px;\n padding-right: 10px;\n}\n\n.wpstg-db-comparison-table {\n font-size: 13px;\n width: 100%;\n}\n\n.wpstg-db-comparison-table tbody td {\n padding-top: 6px;\n}\n\n.wpstg-db-comparison-table tr > td:first-child,\n.wpstg-db-comparison-table tr > th:first-child {\n text-align: left;\n}\n\n.wpstg-css-tick {\n display: inline-block;\n transform: rotate(45deg);\n height: 12px;\n width: 6px;\n border-bottom: 3px solid #78b13f;\n border-right: 3px solid #78b13f;\n}\n\n.wpstg-css-cross {\n position: relative;\n top: -8px;\n left: -2px;\n width: 16px;\n height: 16px;\n}\n\n.wpstg-css-cross:before, .wpstg-css-cross:after {\n position: absolute;\n content: ' ';\n height: 17px;\n width: 3px;\n background-color: #E01E5A;\n}\n\n.wpstg-css-cross:before {\n transform: rotate(45deg);\n}\n\n.wpstg-css-cross:after {\n transform: rotate(-45deg);\n}\n\n.wpstg-selection-preview {\n font-size: 12px;\n margin-left: 20px;\n color: #3216;\n}\n\n.wpstg-selection-preview.danger {\n color: #E01E5A;\n}\n\n.wpstg--backup-automated {\n margin-bottom: -5px;\n}\n\n.wpstg--dismiss-schedule {\n cursor: pointer;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup {\n vertical-align: middle;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li {\n padding:2px;\n}\n\n.wpstg--modal--backup--manage--schedules--content table {\n margin: 0 auto;\n width: 100%;\n}\n\n.wpstg--modal--backup--manage--schedules--title {\n text-align: left;\n margin-bottom: 10px;\n margin-top: 0px;\n}\n\n.wpstg--modal--backup--import--upload--title {\n text-align: center;\n}\n\n#wpstg--modal--backup--manage--schedules--content {\n text-align: left;\n}\n\n#wpstg--modal--backup--manage--schedules--content thead {\n font-weight: bold;\n}\n\n#wpstg--modal--backup--manage--schedules--content .wpstg--tooltip.wpstg--dismiss-schedule {\n border-bottom: none;\n}\n\n.wpstg--tooltip.wpstg--dismiss-schedule img.wpstg--dashicons {\n filter: invert(18%) sepia(57%) saturate(6238%) hue-rotate(332deg) brightness(93%) contrast(88%);\n}\n\n#wpstg--modal--backup--manage--schedules--content td {\n padding-right: 25px;\n padding-top: 10px;\n}\n\n#wpstg--modal--backup--manage--schedules--content ul {\n margin-top: 0;\n margin-bottom: 0;\n}\n\n#wpstg--modal--backup--manage--schedules--content ul li:first-child .wpstg--tooltip {\n margin-left:0;\n}\n\n.wpstg-button:disabled {\n background-color: #dddddd;\n text-shadow: none;\n color: #b3b3b3;\n border: 1px solid #cfcfcf;\n cursor: not-allowed;\n}\n\n#wpstg-backup-runs-info {\n margin: 0px;\n margin-top: 20px;\n padding:0px;\n font-size:12px;\n}\n\n#wpstg-backup-runs-info li {\n margin: 0px;\n}\n\ndiv#wpstg-backup-locked {\n width: 100%;\n max-width: calc(800px - 30px);\n padding: 15px;\n background: white;\n margin-bottom: 10px;\n display: flex;\n align-items: center;\n}\n\n#wpstg-backup-locked .icon {\n display: inline-block;\n height: 20px;\n}\n\n#wpstg-backup-locked .icon img {\n animation: wpstg-loading-icon-anim 2s infinite;;\n}\n\n#wpstg-backup-locked .text {\n display: inline-block;\n margin-left: 15px;\n}\n\n#backup-schedule-current-time {\n font-size: 12px;\n}\n\n.wpstg-backup-scheduling-options label {\n margin-top:17px;\n}\n\n.wpstg-backup-scheduling-options .wpstg-storage-option {\n display: block;\n margin: .5em 0;\n font-size: 15px;\n}\n\n.wpstg-storage-option>span:not(.wpstg-storage-settings) {\n width: 150px;\n display: inline-block;\n}\n\n.wpstg-storages-postbox {\n display:none;\n padding: 16px 8px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: white;\n border:1px solid #cccccc;\n}\n\n.wpstg-storages-postbox a {\n padding: 8px;\n margin-right: 8px;\n text-decoration: none;\n}\n\n.wpstg-storage-postbox {\n padding: 4px 16px;\n background-color: white;\n border-bottom:1px solid #cccccc;\n border-left:1px solid #cccccc;\n border-right:1px solid #cccccc;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-active {\n background: #25a1f0;\n color: white;\n font-weight: 700;\n cursor: default;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-disabled {\n color: #999;\n cursor: not-allowed;\n}\n\n.wpstg-provider-revoke-form {\n display: inline;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.wpstg-provider-settings-form {\n margin-top: 10px;\n}\n\n.wpstg-provider-settings-form strong {\n display: block;\n margin: 8px 0;\n}\n\n.wpstg-provider-settings-form p {\n margin: 0;\n margin-bottom: 8px;\n}\n\n.wpstg-provider-settings-form fieldset {\n margin: 0;\n padding: 0;\n margin-bottom: 16px;\n}\n\n.wpstg-provider-settings-form fieldset p {\n margin: 0;\n padding: 0;\n font-size: 12px;\n}\n\n.wpstg-provider-settings-form fieldset label {\n display: block;\n margin-bottom: 2px;\n}\n\n.wpstg-provider-settings-form fieldset input {\n font-size: 12px;\n}\n\n.wpstg-provider-settings-form .wpstg-link-btn.wpstg-blue-primary {\n text-shadow: none;\n}\n\n.wpstg-btn-google {\n font-family: Roboto;\n display: inline-flex;\n align-items: center;\n border-width: 0;\n outline: none;\n border-radius: 2px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, .6);\n color: #555;\n transition: background-color .3s;\n padding: 8px;\n padding-right: 16px;\n height: 40px;\n line-height: 40px;\n font-size: 14px;\n box-sizing: border-box;\n text-decoration: none;\n font-weight: bold;\n margin-right: 10px;\n}\n\n.wpstg-btn-google img {\n width: 18px;\n height: 18px;\n margin-right: 12px;\n margin-left:5px;\n}\n\n#wpstg-custom-google-credentials {\n margin-top: 20px;\n}\n\n.wpstg-fieldset .wpstg-with-icon {\n display: inline-flex;\n align-items: center; \n}\n\n.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon {\n margin-left: 8px;\n}\n\n.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon img {\n width: 16px;\n height: 16px;\n}\n\n#wpstg-btn-provider-revoke {\n border-radius: 2px;\n}\n\n#wpstg--js--translations {\n text-decoration: underline;\n}\n"]}
|
1 |
+
{"version":3,"sources":["wpstg-admin.css"],"names":[],"mappings":"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","file":"wpstg-admin.min.css","sourcesContent":["/**\n * WPSTG Admin CSS\n *\n * @package WPSTG\n * @subpackage Admin CSS\n * @copyright Copyright (c) 2021, René Hermenau\n * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License\n*/\n\n/* Font Faces */\n\n/* roboto-regular - latin */\n@font-face {\nfont-family: 'Roboto';\nfont-style: normal;\nfont-weight: 400;\nsrc: url('../../fonts/roboto-v29-latin-regular.eot'); /* IE9 Compat Modes */\nsrc: local(''),\n url('../../fonts/roboto-v29-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n url('../../fonts/roboto-v29-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */\n url('../../fonts/roboto-v29-latin-regular.woff') format('woff'), /* Modern Browsers */\n url('../../fonts/roboto-v29-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */\n url('../../fonts/roboto-v29-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */\n}\n\n/* Colors */\n\n.wpstg--violet {\n color: #9d37ae;\n}\n\n.wpstg-border--violet {\n border: 1px solid #9d37ae;\n}\n\n.wpstg--red {\n color: #E01E5A;\n}\n\n.wpstg-cta--red {\n color: #fe008f;\n}\n\n.wpstg--blue {\n color: #24a1f0;\n}\n\n.wpstg--darkblue {\n color: #0e86d9;\n}\n\n.wpstg--green {\n color: #83c11f;\n}\n\n.wpstg--grey {\n color: #3e3e3e;\n}\n\n.wpstg--darkgrey {\n color: #1b1b1b;\n}\n\n.wpstg--filter--svg {\n filter: invert(24%) sepia(11%) saturate(558%) hue-rotate(169deg) brightness(97%) contrast(91%);\n}\n\n/* CSS for Tabs */\n\nbody.wp-staging-pro_page_wpstg_backup,\nbody.toplevel_page_wpstg_clone,\nbody.wp-staging-pro_page_wpstg-settings,\nbody.wp-staging-pro_page_wpstg-tools,\nbody.wp-staging-pro_page_wpstg-license {\n background-color: #f3f5f7;\n}\n\n#wpstg-tab-container ul {\n list-style: none;\n margin: 0;\n padding: 0;\n background: #f1f1f1;\n float: left;\n}\n\n#wpstg-tab-container ul li:first-child.selected-tab {\n border-top: none;\n}\n\n#wpstg-tab-container ul li a.selected-tab {\n font-weight: bold;\n text-decoration: none;\n}\n\n#wpstg-tab-container .row {\n padding-top: 10px;\n padding-bottom: 12px;\n}\n\n.wpstg-tabs-container .nav-tab-wrapper {\n padding: 0;\n}\n\n#wpstg-tab-container .row label strong,\n#wpstg-tab-container .row strong {\n font-weight: bold;\n}\n\n.wpstg-tabs a {\n padding: 5px;\n}\n\n#wpstg-tab-container > ul > li.wpstg-tabs.active {\n background-color: white;\n}\n\n#wpstg_settingsgeneral_header .row:nth-child(3),\n#wpstg_settingsgeneral_header .row:nth-child(4) {\n display: none;\n}\n\n#wpstg-tab-container .wpstg-settings-panel {\n padding: 0 20px 20px 20px;\n overflow: auto;\n}\n\n#wpstg-tab-container .wpstg-form-table th {\n vertical-align: top;\n text-align: left;\n padding: 20px 10px 20px 0;\n line-height: 1.3;\n font-weight: bold;\n font-size: 14px;\n color: #484848;\n width: 30%;\n}\n\n#wpstg-tab-container .wpstg-form-table tr {\n border-bottom: 1px solid #E7E7E7;\n}\n\n#wpstg-tab-container span.description {\n display: block;\n font-weight: 400;\n font-style: normal;\n font-size: 13px;\n margin-top: 7px;\n color: #484848;\n}\n\n#wpstg-tab-container .col-title {\n color: #484848;\n}\n\n@media only screen and (max-width: 680px) {\n #wpstg-tab-container ul {\n float: none;\n }\n\n #wpstg-tab-container .wpstg-form-table tr > th {\n width: 100%;\n }\n\n #wpstg-tab-container span.description {\n font-size: 14px;\n }\n\n #wpstg-tab-container .wpstg-form-table tr > th,\n #wpstg-tab-container .wpstg-form-table tr > td {\n padding: 10px;\n }\n}\n\n#wpstg-tab-container ul li {\n margin-bottom: 0;\n}\n\n#wpstg-tab-container ul li a {\n display: block;\n padding: 10px 4px 10px 14px;\n border-width: 1px 0;\n border-style: solid;\n border-top-color: white;\n border-bottom-color: #e7e7e7;\n text-decoration: none;\n color: #0097DF;\n font-weight: bold;\n}\n\n#wpstg-tab-container ul li a:hover {\n background-color: #e5e5e5;\n color: #777777;\n}\n\n.wpstg-logo {\n display: block;\n font-size: 16px;\n padding-top: 20px;\n width: 220px;\n float: left;\n}\n\n.wpstg-logo img {\n max-width: 212px;\n}\n\n.wpstg-version {\n display: block;\n padding-top: 40px;\n color: #9b9b9b;\n}\n\n.wpstg_admin .nav-tab {\n color: #3C3C3C;\n}\n\n#wpstg-tab-container table tbody tr:nth-child(1) > th > div {\n font-size: 20px;\n}\n\n/* Cloning workflow */\n\n#wpstg-clonepage-wrapper {\n margin-bottom: 20px;\n width: 98%;\n}\n\n@media screen and (min-width: 1090px) {\n #wpstg-clonepage-wrapper {\n float: left;\n margin-bottom: 20px;\n }\n}\n\n#wpstg-steps {\n margin-top: 0px;\n margin-left: 20px;\n}\n\n#wpstg-steps li {\n color: #444;\n line-height: 20px;\n padding-right: 10px;\n float: left;\n}\n\n.wpstg-step-num {\n border: 1px solid #3e3e3e;\n border-radius: 3px;\n display: inline-block;\n width: 20px;\n height: 20px;\n text-align: center;\n margin-right: 5px;\n}\n\n.wpstg-current-step {\n font-weight: bold;\n}\n\n.wpstg-current-step .wpstg-step-num {\n background: #3e3e3e;\n color: #eee;\n}\n\n.wpstg-box {\n margin: 10px 0;\n padding: 10px;\n position: relative;\n overflow: hidden;\n transition: border-color .2s ease-in-out;\n}\n\n.wpstg-clone {\n margin-bottom: 10px;\n padding: 16px;\n position: relative;\n transition: border-color .2s ease-in-out;\n background-color: #ffffff;\n color: #3e3e3e;\n border-radius: 3px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .1);\n}\n\n.wpstg-clone.active {\n border-color: #1d94cf;\n}\n\n.wpstg-clone-header {\n display: flex;\n align-items: center;\n}\n\n.wpstg-clone-title {\n display: inline-block;\n margin-right: 8px;\n font-size: 15px;\n max-width: 300px;\n text-decoration: none;\n font-weight: bold;\n color: #3e3e3e;\n}\n\n.wpstg-clone-title:hover {\n color: #111111;\n}\n\n.wpstg-clone-labels {\n display: inline-block;\n}\n\n\n.wpstg-clone-labels .wpstg-clone-label {\n display: inline-block;\n padding: 1px 4px;\n margin-right: 4px;\n font-size: 11px;\n border-radius: 3px;\n background: #8bc34a;\n color: #fff;\n}\n\n.wpstg-clone-actions {\n margin-left: auto;\n display: flex;\n margin-top: 5px;\n}\n\n.wpstg-dropdown {\n position: relative;\n}\n\n.wpstg-clone-actions .wpstg-dropdown-toggler {\n text-decoration: none;\n background: #25a1f0;\n padding: 6px 10px;\n border-radius: 2px;\n font-size: 14px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .2);\n color: #ffffff;\n}\n\n.wpstg-clone-actions .wpstg-dropdown-toggler:hover {\n background: #002648;\n color: white;\n}\n\n.wpstg-dropdown {\n position: relative;\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu {\n background: #fff;\n display: none;\n flex-direction: column;\n position: absolute;\n right: 0;\n top: calc(100% + 4px);\n padding: 8px;\n border-radius: 2px;\n width: 100px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .2);\n z-index: 1000;\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu.wpstg-menu-dropup {\n top: auto;\n bottom: 100%;\n transform: translate3d(0px, -3px, 0px);\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu.shown {\n display: flex;\n}\n\n.wpstg-clone-action,\n.wpstg-dropdown-action {\n color: #3e3e3e;\n padding: 6px 8px;\n border-radius: 3px;\n text-decoration: none;\n position: relative;\n transition: color .2s ease-in-out;\n border-bottom: 1px solid #f3f3f3;\n}\n\n.wpstg-clone-action:hover,\n.wpstg-dropdown-action:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.wpstg-dropdown-action {\n color: #3e3e3e;\n background: transparent;\n border: 0 solid black;\n outline: none;\n box-shadow: none;\n}\n\n.wpstg-remove-clone:hover {\n color: #E01E5A;\n}\n\n.wpstg-clone-action:last-child {\n border: none;\n}\n\n.wpstg-clone:hover .wpstg-clone-action {\n display: inline-block;\n}\n\n#wpstg-show-error-details:focus,\n#wpstg-workflow .wpstg-clone-action {\n outline: none;\n box-shadow: none;\n}\n\n.wpstg-link-btn {\n background: #45a1c9;\n color: #fff;\n display: inline-block;\n padding: 5px 10px;\n text-decoration: none;\n vertical-align: baseline;\n transition: all .2s ease-in-out;\n}\n\n.wpstg-link-btn:hover,\n.wpstg-link-btn:focus {\n color: #fff;\n outline: none;\n box-shadow: none;\n}\n\n#wpstg-workflow .wpstg-link-btn:active {\n vertical-align: baseline;\n}\n\n.wpstg-link-btn[disabled] {\n background: #777 !important;\n border-color: #555 !important;\n pointer-events: none;\n}\n\n#wpstg-cancel-cloning,\n#wpstg-cancel-cloning-update {\n margin-top: 5px;\n}\n\n#wpstg-cancel-cloning.success,\n#wpstg-cancel-cloning.success {\n background: #64dd58;\n border-color: #54bd4a;\n}\n\n#wpstg-error-wrapper,\n#wpstg-error-details {\n display: none;\n padding-top: 10px;\n font-size: 13px;\n clear: both;\n}\n\n#wpstg-show-error-details {\n display: inline-block;\n margin-left: 5px;\n color: #555;\n text-decoration: none;\n transition: color .2s ease-in-out;\n}\n\n#wpstg-show-error-details:hover {\n color: #1d94cf;\n}\n\n#wpstg-error-details {\n border-left: 5px solid #E01E5A;\n padding: 10px;\n width: 500px;\n}\n\n#wpstg-try-again {\n display: none;\n}\n\n#wpstg-home-link {\n float: right;\n}\n\n.wpstg-loader {\n content: url('../../img/loading.gif');\n display: none;\n}\n\n.wpstg-loader.wpstg-finished {\n display: block;\n content: \"Finished\";\n background-color: #00c89a;\n color: white;\n padding: 2px 10px;\n margin-top: 0;\n border-radius: 3px;\n}\n\n#wpstg-workflow {\n max-width: 800px;\n position: relative;\n clear: both;\n padding-top: 20px;\n float: left;\n min-width: 500px;\n min-height: 380px;\n padding-right: 20px;\n padding-bottom: 20px;\n}\n\n#wpstg-sidebar {\n float: left;\n max-width: 400px;\n display: block;\n margin-left: 10px;\n}\n\n#wpstg-workflow.loading::after,\n#wpstg-removing-clone.loading::after {\n background: rgba(255, 255, 255, .7);\n content: 'Loading... may take a while for huge websites';\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n padding-top: 100px;\n text-align: center;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 99;\n}\n\n#wpstg-removing-clone.loading::after {\n content: 'REMOVING' !important;\n}\n\n#wpstg-existing-clones,\n#wpstg-removing-clone {\n position: relative;\n}\n\n#wpstg-existing-clones h3 {\n color: #3e3e3e;\n}\n\n#wpstg-removing-clone .wpstg-tab-section {\n display: block;\n}\n\n.wpstg-progress-bar {\n max-width: 900px;\n height: 27px;\n padding: 0;\n background-color: #d6d8d7;\n}\n\n.wpstg-progress {\n float: left;\n background: #3fa5ee;\n width: 0;\n height: 100%;\n transition: width .6s ease;\n color: white;\n line-height: 25px;\n text-align: center;\n overflow: hidden;\n}\n\n.wpstg-progress-files {\n background: #16b4f0;\n width: 0;\n height: 100%;\n transition: width .6s ease;\n color: white;\n line-height: 25px;\n text-align: center;\n}\n\n#wpstg-new-clone-id.wpstg-error-input,\n#wpstg-clone-path.wpstg-error-input {\n border: 1px solid #E01E5A;\n box-shadow: 0 0 2px rgba(255, 66, 53, .8);\n}\n\n#wpstg-new-clone-id {\n width: 450px;\n max-width: 100%;\n margin-left: 15px;\n}\n\n#wpstg-new-clone {\n background: #25a1f0;\n border-color: #2188c9;\n}\n\n#wpstg-new-clone:hover {\n background: #259be6;\n border-color: #2188c9;\n}\n\n#wpstg-clone-path {\n margin-left: 10px;\n width: 350px;\n}\n\n.wpstg-error-msg {\n color: #E01E5A;\n}\n\n#wpstg-clone-id-error {\n display: block;\n background-color: #f0f8ff;\n padding: 10px;\n margin: 20px;\n}\n\n#wpstg-start-cloning + .wpstg-error-msg {\n display: block;\n margin-top: 5px;\n}\n\n.wpstg-size-info {\n color: #999;\n font-weight: normal;\n position: relative;\n left: 2px;\n}\n\n.wpstg-db-table .wpstg-size-info {\n top: 2px;\n}\n\n.wpstg-db-table:hover {\n background-color: #f0f8ff;\n}\n\n#wpstg-workflow #wpstg-start-cloning {\n margin-left: 5px;\n vertical-align: baseline;\n}\n\n\n/* Tabs */\n\n.wpstg-tabs-wrapper {\n max-width: 640px;\n margin: 10px 0;\n}\n\n#wpstg-path-wrapper {\n border-bottom: 2px dashed #ccc;\n padding-bottom: 10px;\n margin-bottom: 10px;\n}\n\n.wpstg-tab-section {\n border-bottom: 1px solid #ddd;\n border-right: none;\n border-left: none;\n display: none;\n width: calc(100% - 72px);\n padding: 0px 36px;\n}\n\n.wpstg-tab-section::after {\n display: block;\n content: '';\n clear: both;\n}\n\n.wpstg-tab-header {\n border-bottom: 1px solid #ddd;\n border-right: none;\n border-left: none;\n color: #444;\n font-size: 16px;\n font-weight: bold;\n display: block;\n padding: 10px;;\n text-decoration: none;\n}\n\n.wpstg-tab-triangle {\n display: inline-block;\n margin-right: 12px;\n animation: transform 0.5s;\n width: 0;\n height: 0;\n margin-top: -3px;\n vertical-align: middle;\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n border-left: 10px solid;\n transition: transform 0.2s;\n cursor: pointer;\n}\n\n.wpstg-tab-triangle.wpstg-no-icon {\n margin-right: 2px;\n width: auto;\n height: auto;\n vertical-align: auto;\n border-top: 0px solid;\n border-bottom: 0px solid;\n border-left: 0px solid;\n}\n\n.wpstg-tab-triangle.wpstg-rotate-90 {\n transform: rotate(90deg);\n}\n\n.wpstg-tab-header:focus {\n color: #444;\n outline: none;\n box-shadow: none;\n}\n\n#wpstg-large-files {\n display: none;\n border: 1px dashed #ccc;\n padding: 10px 10px 10px;\n margin-top: 20px;\n position: relative;\n font-size: 12px;\n}\n\n#wpstg-large-files h3 {\n background: #fff;\n margin: 0;\n padding: 0 5px;\n position: absolute;\n top: -10px;\n left: 5px;\n}\n\n.wpstg-subdir {\n display: none;\n margin-left: 20px;\n}\n\n.wpstg-subdir.wpstg-push {\n display: block;\n margin-left: 20px;\n}\n\n.wpstg-dir a.disabled {\n color: #888;\n cursor: default;\n text-decoration: none;\n}\n\n.wpstg-check-subdirs {\n display: inline-block;\n margin-left: 10px;\n}\n\n.wpstg-notice-alert {\n display: block;\n background-color: #E01E5A;\n padding: 20px;\n max-width: 600px;\n margin-top: 10px;\n color: white;\n}\n\n.wpstg-notice--white {\n display: block;\n background-color: #ffffff;\n padding: 20px;\n max-width: 600px;\n margin-top: 10px;\n}\n\n.wpstg-notice-alert a {\n color: white;\n}\n\n.wpstg-notice-alert h3 {\n color: white;\n}\n\n.wpstg-header {\n font-weight: 400;\n line-height: 1.6em;\n font-size: 19px;\n /*\n border-bottom: 1px solid #DFDFDF;\n */\n clear: both;\n padding-top: 10px;\n}\n\n#wpstg-clone-label {\n font-size: 14px;\n font-weight: bold;\n}\n\n.wpstg-log-details {\n height: 300px;\n overflow: scroll;\n max-width: 650px;\n font-family: monospace;\n font-size: 12px;\n line-height: 15px;\n border: 1px solid #FFF;\n background-color: black;\n color: #c0c0c0;\n padding: 3px;\n white-space: nowrap;\n margin-top: 15px;\n}\n\n#wpstg-finished-result {\n display: none;\n}\n\n#wpstg-remove-cloning {\n background: #ff3428;\n border-color: #e72f24;\n margin-top: 5px;\n}\n\n#wpstg-success-notice {\n padding: 10px;\n background-color: white;\n max-width: 900px;\n border: 1px solid #ccc;\n margin-top: 20px;\n}\n\n.wpstg_beta_notice {\n margin-bottom: 20px;\n}\n\n.wpstg-sysinfo {\n width: 700px;\n height: 700px;\n}\n\n.wpstg-form-table .col-title label {\n font-weight: 600;\n}\n\n.wpstg-form-table td:first-child {\n width: 30%;\n padding-right: 20px;\n}\n\n.wpstg-share-button-container {\n margin: 5px 0;\n}\n\n.wpstg-share-button-container p {\n margin: 0 0 10px 0;\n}\n\n.wpstg-share-button {\n display: inline-block;\n}\n\n.wpstg-share-button a {\n text-decoration: none;\n}\n\n.wpstg-share-button .wpstg-share {\n font-family: sans-serif;\n font-weight: bold;\n text-decoration: none;\n text-align: center;\n}\n\n.wpstg-share-button .wpstg-share {\n -webkit-border-radius: 2px;\n -moz-border-radius: 2px;\n border-radius: 2px;\n color: #FFF;\n display: inline;\n font-size: 12px;\n padding: 4px 8px;\n}\n\n.wpstg-share-button-twitter .wpstg-share {\n background-color: #00ABF0;\n}\n\n.wpstg-share-button-facebook .wpstg-share {\n background-color: #3b5998;\n}\n\n.wpstg-share-button-googleplus .wpstg-share {\n background-color: #F53424;\n}\n\n.wpstg-share-button-twitter .share:active,\n.wpstg-share-button-facebook .share:active,\n.wpstg-share-button-googleplus .share:active {\n background-color: #353535;\n}\n\n#wpstg-check-space {\n margin-left: 8px;\n}\n\n#wpstg-welcome li {\n font-size: 18px;\n line-height: 29px;\n position: relative;\n padding-left: 23px;\n list-style: none !important;\n}\n\n#wpstg-welcome {\n margin-top: 20px;\n margin-right: 20px;\n background-color: white;\n}\n\n.wpstg-heading-pro {\n font-weight: bold;\n}\n\n.wpstg-h2 {\n margin-top: 0;\n margin-bottom: 1.2rem;\n font-size: 30px;\n line-height: 2.5rem;\n}\n\n#wpstg-welcome li:before {\n width: 1em;\n height: 100%;\n background: url(data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%2377B227%22%20d%3D%22M1671%20566q0%2040%2D28%2068l%2D724%20724%2D136%20136q%2D28%2028%2D68%2028t%2D68%2D28l%2D136%2D136%2D362%2D362q%2D28%2D28%2D28%2D68t28%2D68l136%2D136q28%2D28%2068%2D28t68%2028l294%20295%20656%2D657q28%2D28%2068%2D28t68%2028l136%20136q28%2028%2028%2068z%22%2F%3E%3C%2Fsvg%3E) left .4em no-repeat;\n background-size: contain;\n content: \"\";\n position: absolute;\n top: -2px;\n left: 0;\n color: #77b227;\n}\n\n.wpstg-h1 {\n margin-bottom: 1.35rem;\n font-size: 2.5em;\n line-height: 3.68rem;\n letter-spacing: normal;\n}\n\n.wpstg--swal2-content {\n color: #3e3e3e;\n}\n\n.wpstg--swal2-content h1 {\n color: #444;\n}\n\n#wpstg-welcome h2 {\n margin: 0 0 15px;\n}\n\n#wpstg-welcome .wpstg-footer {\n clear: both;\n margin-top: 20px;\n font-style: italic;\n}\n\n#wpstg-footer {\n clear: both;\n margin-top: 20px;\n margin-right: 10px;\n padding-top: 50px;\n}\n\n#wpstg-footer a {\n text-decoration: none;\n}\n\n#wpstg-footer li {\n margin-bottom: 2px;\n list-style: circle;\n}\n\n#wpstg-footer ul {\n margin-left: 15px;\n margin-top: 0px;\n}\n\n.wpstg-footer--title {\n margin-left: 15px;\n}\n\n.wpstg-staging-info {\n margin-top: 8px;\n color: #3e3e3e;\n font-size: 12px;\n}\n\n.wpstg-staging-info a {\n color: #3e3e3e;\n}\n\n.wpstg-staging-info li {\n margin-bottom: 2px;\n}\n\n.wpstg-bold {\n font-weight: 600;\n}\n\n#wpstg-processing-status {\n margin-top: 5px;\n font-size: 13px;\n font-weight: 400;\n float: left;\n}\n\n#wpstg-processing-timer {\n margin-top: 5px;\n font-size: 13px;\n font-weight: 400;\n float: right;\n}\n\n#wpstg-report-issue-button {\n margin-left: 30px;\n border: 1px solid #E01E5A;\n color: #E01E5A;\n background-color: white;\n}\n\n#wpstg-report-issue-button:hover {\n background-color: #dc2b62;\n color: #fff;\n}\n\n.wpstg-blue-primary {\n display: inline-block;\n text-decoration: none;\n font-size: 13px;\n height: 28px;\n margin: 0;\n /*\n padding: 0 10px 1px;\n */\n cursor: pointer;\n border-width: 1px;\n border-style: solid;\n -webkit-appearance: none;\n border-radius: 3px;\n white-space: nowrap;\n box-sizing: border-box;\n background: #25a1f0;\n border-color: #2188c9;\n color: #fff;\n /*\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n */\n}\n\n.wpstg-blue-primary:hover {\n background: #127fc6;\n}\n\na.wpstg-blue-primary {\n padding: 5px 10px;\n height: auto;\n}\n\n.wpstg-blue-primary:hover {\n background-color: #259be6;\n}\n\n.wpstg-report-issue-form {\n position: absolute;\n z-index: 999;\n width: 300px;\n background-color: #fff;\n padding: 15px 15px 10px;\n border: 1px solid #e8e8e8;\n border-radius: 3px;\n box-shadow: 0 1px 0 0 #fff inset;\n display: none;\n right: 0;\n top: 35px;\n}\n\n@media (max-width: 600px) {\n .wpstg-report-issue-form {\n position: relative;\n }\n}\n\n.wpstg-report-show {\n display: block;\n}\n\n.wpstg-field input[type=text],\n.wpstg-field textarea {\n width: 100%;\n font-weight: 400;\n line-height: 1.4;\n margin-bottom: 4px;\n}\n\n.wpstg-report-email,\n.wpstg-report-hosting-provider {\n width: 100%;\n font-weight: 400;\n font-size: .8rem;\n height: 2.3rem;\n line-height: 2.3rem;\n border-radius: 3px;\n margin-bottom: 4px;\n padding: 0 10px;\n}\n\n.wpstg-report-description {\n border-radius: 3px;\n font-size: .8rem;\n padding: 6px 10px;\n resize: none;\n}\n\n.wpstg-report-privacy-policy {\n font-size: 12px;\n margin-bottom: 15px;\n}\n\n#wpstg-report-cancel {\n float: right;\n margin-right: 5px;\n font-weight: bold;\n}\n\n#wpstg-success-button {\n font-weight: bold;\n}\n\n.wpstg-message {\n box-sizing: border-box;\n -moz-box-sizing: border-box;\n background-color: #f5e0de;\n border-radius: 3px;\n color: rgba(0, 0, 0, .6);\n height: auto;\n margin: 10px 0;\n min-height: 18px;\n padding: 6px 10px;\n position: relative;\n}\n\n.wpstg-message.wpstg-error-message {\n background-color: #f5e0de;\n color: #b65147;\n font-size: 12px;\n}\n\n.wpstg-message.wpstg-success-message {\n background-color: #d7f8e0;\n color: #515151;\n}\n\n.wpstg-message p {\n margin: 3px 0;\n font-size: 13px;\n}\n\n.wpstg-warning {\n display: block;\n padding: 10px;\n background-color: #ffb804;\n color: #ffffff;\n margin: 10px 10px 10px 0;\n}\n\n.wpstg-warning a {\n color: #ffffff;\n font-weight: bold;\n text-decoration: underline;\n}\n\n.wpstg-error {\n display: block;\n padding: 10px !important;\n background-color: #E01E5A !important;\n color: #ffffff;\n margin: 10px 10px 10px 0 !important;\n border-color: transparent !important;\n border-left-color: transparent !important;\n box-shadow: none !important;\n}\n\n.wpstg-error a {\n color: #ffffff;\n font-weight: bold;\n text-decoration: underline;\n}\n\n#wpstg-resume-cloning {\n display: none;\n}\n\n#wpstg-external-db th {\n text-align: left;\n width: 120px;\n}\n\n#wpstg-db-connect {\n font-weight: normal;\n}\n\n#wpstg-db-status {\n display: block;\n margin-top: 5px;\n padding: 5px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n text-decoration: none;\n text-align: center;\n}\n\n.wpstg-text-field > #wpstg-db-status {\n margin-top: 8px;\n margin-left: 150px;\n min-width: 300px;\n}\n\n.wpstg-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n\n.wpstg-failed {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n\n#wpstg_select_tables_cloning {\n height: 600px;\n font-size: 13px;\n}\n\n#wpstg_select_tables_pushing {\n height: 400px;\n font-size: 13px;\n}\n\n#wpstg-update-notify {\n background-color: #E01E5A;\n font-size: 14px;\n color: #ffffff;\n line-height: normal;\n padding: 10px;\n}\n\n#wpstg-update-notify a {\n color: #ffffff;\n font-weight: bold;\n}\n\n.wpstg-pointer {\n cursor: pointer;\n}\n\n.wpstg--tab--header {\n background-color: white;\n /* margin-bottom: 10px; */\n /* padding: 16px; */\n position: relative;\n transition: border-color .2s ease-in-out;\n background-color: #ffffff;\n color: #3e3e3e;\n border-radius: 2px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .02);\n}\n\n.wpstg--tab--header ul {\n display: flex;\n}\n\n.wpstg--tab--header ul li {\n margin-right: 1em;\n margin-bottom: 0px;\n}\n\n.wpstg--tab--header ul li:last-child {\n margin-right: 0;\n}\n\n.wpstg--tab--header a {\n min-width: 150px;\n text-align: center;\n cursor: pointer;\n display: inline-block;\n padding: 1em 1.25em;\n padding-bottom: 9px;\n color: #c4c4c4;\n font-size: 18px;\n /*\n border: solid 1px;\n */\n}\n\n.wpstg--tab--header a.wpstg--tab--active {\n border-bottom: .4em solid #25A1F0;\n color: #25A1F0;\n}\n\n.wpstg--tab--header a:hover {\n background-color: #fefefe;\n border-bottom: 0.4em solid #25A1F0;\n color: #25A1F0;\n}\n\n.wpstg--tab--content {\n display: none;\n}\n\n.wpstg--tab--active {\n display: block;\n}\n\n.wpstg--text--strong,\n.wpstg--text--strong * {\n font-weight: bold !important;\n}\n\n.wpstg--text--danger {\n color: #a94442;\n}\n\n.wpstg--tooltip {\n position: relative;\n display: inline-block;\n margin-left: 5px;\n}\n\n.wpstg--tooltip.wpstg--tooltip-normal {\n margin-left: 0;\n border-bottom: 0;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext {\n visibility: hidden;\n width: 300px;\n background-color: #ffffff;\n color: #505050;\n text-align: left;\n padding: 12px;\n border-radius: 3px;\n position: absolute;\n z-index: 1;\n -webkit-box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n -moz-box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n font-weight: normal;\n}\n\n.wpstg--tooltiptext-backups {\n width: 120px;\n top: 100%;\n left: -150%;\n margin-left: -56px;\n margin-top: 4px;\n}\n\n.wpstg--tooltip.wpstg--exclude-rules--tooltip {\n border-bottom: 0px solid transparent;\n}\n\n.wpstg--tooltip.wpstg--exclude-rules--tooltip > .wpstg--tooltiptext {\n margin-top: 0px;\n margin-left: -150px;\n}\n\n/**\nTooltip top arrow\n */\n\n.wpstg--tooltip .wpstg--tooltiptext-backups::after {\n content: \" \";\n position: absolute;\n bottom: 100%;\n /* At the top of the tooltip */\n left: 50%;\n margin-left: 25px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent white transparent;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow {\n margin-top: 6px;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow::after {\n content: \" \";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -18px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent white transparent;\n}\n\n.wpstg--snaphot-restore-table tr {\n line-height: 12px;\n}\n\n.wpstg-float-left {\n float: left;\n}\n\n.wpstg-beta-notice {\n background-color: #b0e8b0;\n border-radius: 3px;\n padding: 7px;\n margin-bottom: 20px;\n}\n\n#wpstg-backup-name {\n font-size: 1.875em;\n font-weight: 600;\n}\n\n#wpstg_select_tables_cloning option:checked,\n#wpstg_select_tables_pushing option:checked {\n /* Cannot use background color here because Chrome and Firefox ignore it even if set to !important */\n -webkit-appearance: menulist-button;\n background-image: linear-gradient(0deg, #1e90ff 0%, #1e90ff 100%);\n}\n\n.wpstg--btn--cancel {\n background: #ff3428;\n border-color: #e72f24;\n color: #fff;\n height: auto;\n line-height: normal;\n font-size: 16px;\n padding: .5em;\n margin-bottom: 1.5em;\n}\n\n.wpstg--btn--cancel:hover {\n background: #ff3428;\n border-color: #e72f24;\n}\n\n.wpstg--process--content > .wpstg--swal2-html-container {\n padding: 4em 2em !important;\n}\n\n.wpstg--modal--process--logs,\n.wpstg--modal--error--logs {\n background: #ffffff;\n border: 1px solid #a8a8a8;\n border-radius: 3px;\n height: 300px;\n margin-top: 1em;\n display: none;\n padding-top: 10px;\n padding-left: 10px;\n overflow: auto;\n text-align: justify;\n}\n\n.wpstg--modal--error--logs {\n height: auto;\n max-height: 300px;\n}\n\n.wpstg--modal--process--logs p {\n font-size: 12px;\n white-space: nowrap;\n}\n\n.wpstg--modal--process--logs p.wpstg--modal--process--msg--info {\n color: #222222;\n}\n\n.wpstg--modal--process--logs p.wpstg--modal--process--msg--debug {\n color: #757575;\n}\n\n.wpstg--modal--process--title {\n color: #565656;\n margin: .25em 0;\n}\n\n.wpstg--modal--process--subtitle {\n margin: .5em 0;\n color: #565656;\n}\n\n.wpstg--modal--error--logs > p {\n text-align: left;\n font-size: 14px;\n color: #222222;\n}\n\n.wpstg--modal--process--logs p,\n.wpstg--modal--error--logs p {\n margin: 0px;\n margin-bottom: 2px;\n}\n\n.wpstg--modal--process--msg--error {\n color: #E01E5A;\n}\n\n.wpstg--modal--process--msg--critical {\n color: #E01E5A;\n}\n\n.wpstg--modal--process--msg--warning {\n color: darkorange;\n}\n\n.wpstg--modal--process--msg-found {\n font-size: 16px;\n color: #E01E5A;\n font-weight: bold;\n}\n\n.wpstg--modal--delete {\n text-align: left;\n margin-top: 8px;\n color: #565656;\n}\n\n.wpstg-swal-popup .wpstg--swal2-cancel.wpstg--btn--cancel {\n margin-bottom: 0;\n text-shadow: none !important;\n}\n\n.wpstg-swal-popup .wpstg-loader {\n display: inline-block !important;\n}\n\n.wpstg--modal--process--generic-problem {\n display: none;\n border-left: 5px solid #E01E5A;\n margin: .5em 0;\n}\n\n.wpstg--modal--process--logs--tail {\n font-size: 16px;\n color: #565656;\n background: none;\n border: none;\n cursor: pointer;\n text-decoration: underline;\n}\n\n.wpstg--modal--backup--import--upload--title {\n color: #3e3e3e;\n}\n\n.wpstg--modal--backup--import--configure,\n.wpstg--modal--backup--import--upload--status,\n.wpstg--modal--backup--import--upload--container input[type=\"file\"] {\n display: none;\n}\n\n#wpstg--backups--import--file-list {\n font-size: 14px;\n font-weight: bold;\n}\n\n#wpstg--backups--import--file-list-empty {\n color: #E01E5A;\n}\n\n.wpstg--modal--backup--import--filesystem label {\n font-size: 14px;\n}\n\n.wpstg--modal--backup--import--filesystem button {\n margin-bottom: 20px;\n}\n\n.wpstg--modal--backup--import--upload {\n position: relative;\n min-height: 30px;\n}\n\n.wpstg--modal--backup--import--upload {\n color: #505050;\n}\n\n.wpstg--modal--backup--import--upload--container {\n position: relative;\n border-radius: 10px;\n margin: .5em;\n padding: 1em .5em;\n border: 3.5px dashed #dedede;\n transition: background-color 0.3s ease, color 0.3s ease;\n background-color: #f4fbff;\n min-height: 130px;\n}\n\n.wpstg--modal--backup--import--upload--container.wpstg--has-dragover span.wpstg--drop {\n display: inline-flex;\n}\n\n.wpstg--modal--backup--import--upload--container input[type='file'] {\n display: none;\n}\n\n.wpstg--modal--backup--import--upload--container img {\n margin-top: 10px;\n width: 4em;\n align-self: center;\n border: none;\n}\n\n.wpstg--modal--backup--import--upload--container span {\n margin-top: 1em;\n}\n\n.wpstg--backup--import--options > button {\n margin-top: 1em;\n padding: 1em;\n align-self: center;\n width: 185px;\n height: auto;\n line-height: normal;\n}\n\n.wpstg--backup--import--options {\n position: relative;\n display: flex;\n justify-content: center;\n}\n\n.wpstg--backup--import--options ul {\n display: none;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul {\n padding: 0;\n margin: 54px 0 0 0;\n display: block;\n position: absolute;\n width: 185px;\n background: #25a1f0;\n box-sizing: border-box;\n border-radius: 0 0 3px 3px;\n border-width: 1px;\n border-color: #2188c9;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li {\n border-bottom: .1em solid #25a1f0;\n margin: 0;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li:hover {\n background-color: #25a1f0;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li:last-child {\n border-bottom: none;\n}\n\n.wpstg--backup--import--options ul li button {\n cursor: pointer;\n background: none;\n border: none;\n margin: 0;\n width: 100%;\n color: white;\n height: 40px;\n line-height: 40px;\n}\n\n.wpstg--backup--import--options ul li button:hover {\n background-color: #259be6;\n}\n\n.wpstg--modal--backup--import--search-replace--info {\n margin: 1em 0;\n display: flex;\n flex-direction: row;\n}\n\n.wpstg--modal--backup--import--info p {\n text-align: left;\n margin: 0;\n}\n\n.wpstg--modal--backup--import--search-replace--wrapper button {\n align-self: center;\n}\n\n.wpstg--import--advanced-options--button {\n border: 0;\n border-radius: 3px;\n font-size: 18px;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n cursor: pointer;\n}\n\n.wpstg--modal--backup--import--search-replace--new {\n color: white;\n background-color: #25a1f0;\n}\n\n.wpstg--modal--backup--import--search-replace--remove {\n color: white;\n background-color: #25a1f0;\n width: 22px;\n height: 22px;\n margin-left: 5px;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group:first-child button {\n display: none;\n}\n\n.wpstg--modal--backup--import--search-replace--input--container {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group {\n width: 100%;\n border-bottom: 6px solid #f1f1f1;\n margin-bottom: 10px;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group input {\n min-width: 250px;\n width: calc(50% - 4px - 11px - 5px); /* -4px is half of the padding; -11px is half of the button; -5 is the margin left of the button */\n display: inline-block;\n line-height: 10px;\n border: 1px solid #dedede;\n border-radius: 3px;\n color: #666;\n padding: 8px;\n margin-bottom: 12px;\n}\n\n.wpstg--modal--import--upload--process {\n display: none;\n position: relative;\n height: 30px;\n margin-top: 20px;\n margin-bottom: 20px;\n width: 100%;\n top: 0;\n left: 0;\n text-indent: 1em;\n white-space: nowrap;\n overflow: hidden;\n color: #333333;\n justify-content: center;\n align-items: center;\n}\n\n.wpstg--modal--import--upload--progress {\n position: absolute;\n background: #98d452;\n color: white;\n height: 100%;\n border-radius: 4px;\n left: 0;\n top: 0;\n}\n\n.wpstg--modal--import--upload--progress--title {\n z-index: 9;\n}\n\n.wpstg-fieldset:disabled {\n opacity: 0.8;\n border-top: 1px solid white;\n margin-top: 20px;\n}\n\n.wpstg-fieldset {\n padding-left: 20px;\n}\n\n.wpstg-fs-14 {\n font-size: 14px;\n}\n\n.wpstg-dark-alert {\n font-weight: bold;\n background-color: #0e86d9;\n padding: 15px;\n margin-top: 0px;\n color: white;\n}\n\n.wpstg-dark-alert .wpstg-button--cta-red {\n margin-left:10px;\n}\n\n.wpstg-form-group {\n display: block;\n width: 100%;\n margin-bottom: 8px;\n align-items: center;\n}\n\n.wpstg-form-group > label {\n display: block;\n font-weight: 700;\n}\n\n.wpstg-text-field > input {\n width: 300px;\n display: block;\n line-height: 1.5;\n}\n\n.wpstg-code-segment {\n display: block;\n}\n\n.wpstg-text-field > .wpstg-code-segment {\n margin-top: 4px;\n min-width: 300px;\n}\n\n.wpstg-form-group > .wpstg-checkbox {\n min-width: 100%;\n width: 100%;\n position: relative;\n}\n\n.wpstg-form-group > .wpstg-checkbox > input[type='checkbox'] {\n left: 150px;\n}\n\n.wpstg-rounded {\n border-radius: 3px;\n}\n\n.wpstg-white-border {\n border: 1px solid white !important;\n}\n\n.wpstg-ml-4 {\n margin-left: 4px;\n}\n\n#wpstg-confirm-backup-restore-data {\n margin: 40px;\n text-align: left;\n}\n\n#wpstg-advanced-settings hr {\n margin: 20px 0;\n}\n\n.wpstg-form-row {\n display: block;\n}\n\n.wpstg-form-row label,\n.wpstg-form-row input {\n display: table-cell;\n padding-left: 5px;\n padding-right: 5px;\n margin-top: 3px;\n margin-bottom: 3px;\n}\n\n.wpstg-form-row input {\n width: 400px;\n}\n\n.wpstg-form-row label {\n font-weight: bold;\n width: 1px;\n white-space: nowrap;\n}\n\n#wpstg-db-connect-output #wpstg-db-status {\n width: 390px;\n}\n\n.wpstg-fs-14 {\n font-size: 14px;\n}\n\n.wpstg-code-segment {\n display: block;\n}\n\n.wpstg-form-group > .wpstg-checkbox {\n min-width: 100%;\n width: 100%;\n}\n\n.wpstg-form-group > .wpstg-checkbox > input[type='checkbox'] {\n margin-left: 10px;\n}\n\n@media only screen and (max-width: 768px) {\n .wpstg-form-group > label {\n min-width: auto;\n width: auto;\n }\n\n .wpstg-text-field > input {\n width: 100%;\n }\n\n .wpstg-text-field > .wpstg-code-segment {\n margin-left: 0;\n min-width: 100%;\n }\n\n .wpstg-tab-section {\n width: calc(100vw - 60px);\n max-width: 450px;\n }\n}\n\n.wpstg-rounded {\n border-radius: 3px;\n}\n\n.wpstg-white-border {\n border: 1px solid white !important;\n}\n\n.wpstg-m-0 {\n margin: 0;\n}\n\n.wpstg-mt-10px {\n margin-top: 10px !important;\n}\n\n.wpstg-mr-10px {\n margin-right: 10px !important;\n}\n\n.wpstg-my-10px {\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n}\n\n.wpstg-w-100 {\n width: 100%;\n}\n\n.wpstg-box-shadow {\n box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);\n}\n\n.wpstg-float-left {\n float: left;\n}\n\n.wpstg-bold-text {\n font-weight: bold;\n}\n\n.wpstg-warning.notice {\n border-left: 4px solid #ffba00;\n}\n\n.wpstg-confirmation-label {\n background-color: #5b9dd9;\n color: #fff;\n padding: 2px;\n border-radius: 3px;\n}\n\n.wpstg-my-6px {\n margin-bottom: 6px;\n margin-top: 6px;\n}\n\n.wpstg-mb-10px {\n margin-bottom: 10px;\n}\n\n.wpstg-clear-both {\n clear: both;\n}\n\n.wpstg-font-italic {\n font-style: italic;\n}\n\n.wpstg-mt-20px {\n margin-top: 20px;\n}\n\n.wpstg-welcome-container {\n border: 2px solid white;\n padding: 20px;\n margin-bottom: 20px;\n}\n\n.wpstg-ml-30px {\n margin-left: 30px;\n}\n\n.wpstg-text-center {\n text-align: center;\n}\n\n.wpstg-feedback-link {\n text-decoration: none;\n}\n\n.wpstg-feedback-span {\n display: block;\n margin-bottom: 3px;\n}\n\n#wpstg-confirm-backup-restore-data {\n margin: 40px;\n text-align: left;\n}\n\n#wpstg-confirm-backup-restore-wrapper {\n margin: 30px;\n margin-top: 0;\n}\n\n#wpstg-confirm-backup-restore-wrapper h3 {\n color: #E01E5A;\n}\n\n#wpstg-progress-db,\n#wpstg-progress-backup {\n background-color: #3fa5ee;\n}\n\n#wpstg-progress-sr,\n#wpstg-progress-files.wpstg-pro {\n background-color: #3c9ee4;\n}\n\n#wpstg-progress-dirs,\n#wpstg-progress-data {\n background-color: #3a96d7;\n}\n\n#wpstg-progress-files:not(.wpstg-pro),\n#wpstg-progress-finishing {\n background-color: #378cc9;\n}\n\n.wpstg-issue-resubmit-confirmation.wpstg--swal2-container,\n.wpstg-swal2-container.wpstg--swal2-container {\n z-index: 10500;\n}\n\n.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-actions,\n.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-header {\n display: none;\n}\n\nbody.toplevel_page_wpstg_backup .wpstg--swal2-container .wpstg--swal2-content,\nbody.toplevel_page_wpstg_clone .wpstg--swal2-container .wpstg--swal2-content {\n z-index: 2;\n}\n\n.toplevel_page_wpstg_clone #swal2-content h2 {\n color: #3e3e3e;\n}\n\n.toplevel_page_wpstg_clone #swal2-content {\n line-height: 1.5em;\n}\n\ndiv#exportUploadsWithoutDatabaseWarning {\n font-style: italic;\n font-size: 0.9rem;\n margin: 10px;\n padding: 10px;\n border: 1px solid #e3e3e3;\n border-radius: 5px;\n text-align: center;\n background-color: #fafafa;\n}\n\n.wpstg-advanced-options-dropdown-wrapper {\n display: none; /* ENABLE WHEN WE HAVE ADVANCED OPTIONS FOR EXPORTING */\n margin-top: 20px;\n}\n\n.wpstg--modal--backup--import--search-replace--wrapper {\n text-align: left;\n margin-top: 20px;\n}\n\n.wpstg--modal--backup--import--search-replace--new--wrapper {\n text-align: center;\n}\n\n.wpstg-import-backup-contains li {\n display: inline-block;\n margin-bottom:0px;\n}\n\n.wpstg-import-backup-contains li .wpstg-backups-contains {\n border-radius: 3px;\n color: #979797;\n background-color: #f4f4f4 !important;\n width: 18px;\n height: 18px;\n font-size: 17px;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains {\n padding: 2px;\n background-color: white;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains > .wpstg--dashicons {\n filter: invert(35%);\n}\n\n.wpstg-import-backup-contains .wpstg--tooltiptext {\n width: 80px;\n font-size: 13px;\n padding: 5px;\n left: -25px;\n text-align: center;\n}\n\n.wpstg-import-backup-contains-title {\n display: inline-block;\n}\n\nul.wpstg-import-backup-contains {\n display: inline-block;\n}\n\n.wpstg-import-backup-name {\n display: inline-block;\n font-weight: bold;\n}\n\n.wpstg-backup-more-info-toggle {\n font-size: x-small;\n display: inline-block;\n font-style: italic;\n cursor: pointer;\n}\n\n.wpstg-backup-more-info-toggle::selection {\n background: none;\n}\n\nul.wpstg-import-backup-more-info {\n font-size: 14px;\n text-align: left;\n margin-bottom: 30px;\n margin-top: 10px;\n background-color: #f6f6f6;\n border: 1px solid #878787;\n border-radius: 3px;\n padding: 7px;\n cursor: pointer;\n}\n\nul.wpstg-import-backup-more-info:hover {\n background-color: #def2ff;\n border: 1px solid #25a1f0;\n}\n\nul.wpstg-import-backup-more-info li {\n height: 20px;\n}\n\n.wpstg-backup-list {\n max-width: 800px;\n}\n\n.wpstg-backup-list h3 {\n color:#3e3e3e;\n}\n\n.wpstg-backup-list ul ul {\n margin-block-start: 1em;\n margin-block-end: 1em;\n}\n\n.wpstg-push-confirmation-message {\n text-align: justify;\n font-size: 15px;\n}\n\n.wpstg-settings-row {\n padding-top: 10px;\n padding-bottom: 10px;\n}\n\n.wpstg-settings-title {\n font-weight: 600;\n}\n\n.wpstg-settings-form-group {\n display: flex;\n align-items: center;\n}\n\n.wpstg-settings-form-group > .wpstg-settings-message {\n width: 30%;\n padding: 0;\n margin: 7px 0 0;\n}\n\n/**\n * WP STAGING EXCLUSION RULES TABLE LAYOUT\n */\n\n.wpstg-excluded-filters-container {\n padding: 0;\n margin-top: 10px;\n margin-bottom: 10px;\n max-width: 100%;\n width: 100%;\n}\n\n.wpstg-excluded-filters-container > table {\n width: 100%;\n border-collapse: collapse;\n border-color: transparent;\n}\n\n.wpstg-excluded-filters-container td {\n padding-top: 4px;\n padding-bottom: 4px;\n height: 20px;\n}\n\n.wpstg-excluded-filters-container h4 {\n margin: 0;\n}\n\n.wpstg-exclude-filters-foot {\n display: flex;\n justify-content: flex-start;\n padding: 0;\n}\n\n/**\n * WP STAGING EXCLUSION RULE DROPDOWN STYLE\n */\n\n\n.wpstg-exclude-filter-dropdown > button:hover {\n background: #135e96;;\n border: 1px solid #135e96;;\n}\n\n.wpstg-exclude-filter-dropdown > .wpstg-dropdown-menu {\n width: 128px;\n}\n\n.wpstg-remove-exclude-rule {\n color: #fff !important;\n background-color: #e01e5a;\n border: 1px solid #e01e5a;\n width: 20px;\n height: 20px;\n border-radius: 10px;\n font-size: 24px;\n padding: 0;\n display: inline-flex;\n justify-content: center;\n outline: none;\n box-shadow: none;\n font-weight: 400;\n line-height: 0.7;\n margin-top: 5px;\n cursor: pointer;\n}\n\n.wpstg-remove-exclude-rule:hover {\n background-color: #E01E5A;\n border-color: #E01E5A;\n}\n\n.wpstg-code-block {\n margin-top: 4px;\n font-size: 1.2em;\n background: #f8f8f8;\n border-radius: 2px;\n}\n\n.wpstg-rule-info {\n background: #f8f8f8 !important;\n}\n\ncode.wpstg-code {\n display: inline-block;\n font-size: 11px;\n border: 1px solid #aaa;\n background: #fff;\n padding: 2px 4px;\n margin-bottom: 1px;\n color: #E01E5A;\n}\n\n.wpstg-exclusion-rule-info {\n color: #fff !important;\n background-color: #ffc107;\n border: 1px solid #ffc107;\n width: 14px;\n height: 14px;\n border-radius: 7px;\n font-size: 14px;\n padding: 0;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n outline: none;\n box-shadow: none;\n font-weight: 400;\n vertical-align: middle;\n}\n\n.wpstg-exclusion-rule-info:hover {\n background-color: #ffba0c;\n border: 1px solid #ffba0c;\n}\n\n/**\n * WP STAGING INPUTS EXCLUSION RULES\n */\n\n.wpstg-exclude-rule-input {\n font-size: 12px !important;\n padding: 2px 6px;\n box-shadow: none;\n outline: none !important;\n display: inline-block;\n font-weight: 400;\n line-height: 1.5;\n color: #222;\n border-radius: 0 !important;\n background-color: #fff;\n border: 1px solid #bbb;\n min-height: 24px !important;\n margin-top: 4px;\n margin-left: 4px;\n vertical-align: baseline !important;\n transition: all 0.3s cubic-bezier(.25, .8, .25, 1);\n width: 135px;\n}\n\n.wpstg-excluded-filters-container tbody > tr:last-child .wpstg-exclude-rule-input {\n margin-bottom: 4px;\n}\n\n.wpstg-exclude-rule-input:hover {\n border: 1px solid #999;\n}\n\n.wpstg-exclude-rule-input:focus {\n border: 1px solid #25A0F1 !important;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24) !important;\n}\n\n.wpstg-file-size-exclude-select,\n.wpstg-path-exclude-select {\n width: 135px;\n}\n\n.wpstg-file-size-exclude-select-small {\n width: 52px;\n}\n\n.wpstg-file-size-exclude-input {\n width: 75px;\n}\n\n.wpstg-staging-option-title {\n margin: 15px 0 0;\n}\n\n.wpstg-swal-push-container.wpstg--swal2-container {\n z-index: 9995;\n}\n\n#wpstg-scanning-files {\n padding-bottom: 5px;\n}\n\n#wpstg-scanning-files.wpstg-tab-section, #wpstg-scanning-db.wpstg-tab-section {\n padding-top: 10px;\n}\n\n.wpstg-reset-excludes-container {\n margin: 10px 0;\n}\n\n.wpstg-swal2-ajax-loader {\n width: 100%;\n height: 150px;\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n@keyframes wpstg-loading-icon-anim {\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.wpstg-swal2-ajax-loader > img {\n width: 64px;\n height: 64px;\n animation: wpstg-loading-icon-anim 1s infinite linear;\n -webkit-animation: wpstg-loading-icon-anim 1s infinite linear;\n}\n\n.wpstg-swal2-container .wpstg-tab-section {\n width: auto !important;\n}\n\n#wpstg-no-staging-site-results {\n margin-top: 10px;\n max-width: 375px;\n}\n\nli#wpstg-backup-no-results {\n max-width: 500px;\n}\n\nli#wpstg-backup-no-results div, #wpstg-no-staging-site-results div {\n display: inline-block;\n text-align: center;\n}\n\nli#wpstg-backup-no-results .wpstg--dashicons, #wpstg-no-staging-site-results .wpstg--dashicons {\n filter: invert(50%);\n position: absolute;\n margin-top: 1px;\n}\n\nli#wpstg-backup-no-results .no-backups-found-text, #wpstg-no-staging-site-results .no-staging-site-found-text {\n color: #5d5d5d;\n margin-left: 20px;\n}\n\n@media only screen and (max-width: 680px) {\n li#wpstg-backup-no-results div, #wpstg-no-staging-site-results div {\n width: 100%;\n }\n}\n\n#wpstg--modal--backup--download-inner p.wpstg-download-modal-text {\n font-size: 16px;\n color: #565656;\n}\n\n#wpstg--modal--backup--download-inner h2 {\n color: #565656;\n}\n\n.wpstg-backup-restore-contains-database,\n.wpstg-backup-restore-contains-files {\n display: none;\n}\n\n.wpstg-green-button {\n background: #8bc34a;\n border: 1px solid #78a93f;\n color: white;\n text-shadow: 0 -1px 1px #78a93f, 1px 0 1px #78a93f, 0 1px 1px #40c921, -1px 0 1px #78a93f;\n}\n\n.wpstg-green-button:hover {\n background: #78a93f;\n}\n\n.wpstg-is-dir-loading {\n position: absolute;\n margin-top: -2px;\n margin-left: 8px;\n display: none;\n}\n\n.wpstg-ml-8px {\n margin-left: 8px;\n}\n\n.wpstg-mb-8px {\n margin-bottom: 8px;\n}\n\n\n.wpstg-btn-danger {\n background-color: #E01E5A;\n border: 1px solid #E01E5A;\n color: white;\n text-shadow: none;\n}\n\n.wpstg-btn-danger:hover {\n background: #c0194d;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);\n}\n\n.wpstg-swal2-container.wpstg-swal2-loading > .wpstg--swal2-modal {\n height: 200px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container:not(.wpstg-swal2-loading) > .wpstg--swal2-modal {\n max-width: 480px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-header {\n display: none;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-content {\n height: auto;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-tabs-wrapper {\n overflow-y: auto;\n height: auto !important;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content {\n font-size: 13px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-dir {\n margin-bottom: 4px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-subdir {\n margin-top: 4px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open .wpstg--swal2-modal {\n height: calc(100vh - 70px);\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-tabs-wrapper {\n height: calc(100vh - 350px) !important;\n}\n\n.wpstg--swal2-actions.wpstg--modal--actions > button {\n margin-left: 4px;\n margin-right: 4px;\n text-transform: uppercase;\n text-shadow: initial;\n font-weight: 500;\n min-width: 80px;\n}\n\n.wpstg-swal-popup {\n max-width: 1200px !important;\n}\n\n.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-title {\n color: #a8a8a8;\n}\n\n.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-content {\n margin-top: 8px;\n color: #a8a8a8;\n}\n\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step.wpstg--swal2-active-progress-step,\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step,\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line {\n background: #25a1f0;\n}\n\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line {\n width: 2.75em;\n}\n\n.wpstg--dashicons {\n width: 16px;\n height: 16px;\n}\n\n.wpstg--dashicons.wpstg-dashicons-grey {\n filter: invert(20%);\n}\n\n.wpstg--dashicons.wpstg-dashicons-19 {\n width: 19px;\n height: 19px;\n}\n\n.wpstg--dashicons.wpstg-dashicons-21 {\n width: 21px;\n height: 21px;\n}\n\n#wpstg--tab--backup #wpstg-step-1 {\n display: flex;\n align-items: center;\n}\n\n.wpstg-advanced-options .wpstg--tooltip,\n#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip {\n border-bottom: 0 solid transparent;\n display: inline-flex;\n align-items: center;\n}\n\n.wpstg-advanced-options-site .wpstg--tooltip img.wpstg--dashicons {\n filter: invert(17%) sepia(0%) saturate(1%) hue-rotate(195deg) brightness(97%) contrast(77%);\n}\n\n#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip {\n border-bottom: 0 solid transparent;\n display: flex;\n align-items: center;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext-backups::after {\n left: calc(20% + 2px);\n}\n\n.wpstg-listing-single-backup .wpstg--dashicons {\n width: 17px;\n height: 17px;\n}\n\n.wpstg-100-width {\n width: 100px;\n}\n\n.wpstg-caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px solid;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n transition: transform 0.2s;\n cursor: pointer;\n}\n\n.wpstg-caret.wpstg-caret-up {\n transform: rotate(-180deg);\n}\n\n.wpstg-advanced-options-site label {\n font-size: 16px;\n display: block;\n margin: .5em 0;\n}\n\n#wpstg-confirm-backup-restore-data {\n font-size: 18px;\n margin: 0;\n margin-top: 30px;\n}\n\n/* Sweetalert WP STAGING Theme */\n\nbody.toplevel_page_wpstg_backup .wpstg--swal2-container.wpstg--swal2-backdrop-show,\nbody.toplevel_page_wpstg_clone .wpstg--swal2-container.wpstg--swal2-backdrop-show {\n background: rgba(0, 0, 0, .6);\n z-index: 9995;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup {\n border-radius: 8px;\n z-index: 9999;\n padding: 24px;\n color: #3e3e3e;\n font-family: Verdana, Geneva, Tahoma, sans-serif;\n}\n\n.wpstg-swal-popup .wpstg--swal2-title {\n font-size: 22px;\n color: #3e3e3e;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-title {\n align-self: flex-start; /* For an actual Swal title */\n text-align: left; /* Manually adding this class to a non flex display */\n margin-bottom: 0;\n}\n\n.wpstg-swal-popup .wpstg--swal2-close {\n top: 8px;\n right: 8px;\n z-index: 5;\n}\n\n.wpstg-swal-popup .wpstg--swal2-close:focus {\n outline: none;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions {\n justify-content: flex-end;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button {\n border-radius: 4px;\n font-weight: 900;\n border: 0;\n font-size: 15px;\n padding: 10px 12px;\n text-transform: capitalize;\n line-height: normal;\n height: 40px;\n min-width: 100px;\n text-shadow: none;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions > button {\n margin-left: 8px;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel {\n border: 1px solid rgba(29, 28, 29, 0.3);\n background: #fff;\n color: rgb(29, 28, 29);\n font-weight: 500;\n width: 100px;\n text-shadow: none;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button:hover {\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .1);\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel:hover {\n background: rgba(28, 29, 28, .04);\n}\n\n#wpstg-backup-name-input {\n height: 44px;\n font-size: 18px;\n}\n\n.wpstg-restore-finished-container .wpstg--swal2-title {\n color: #565656 !important;\n}\n\n/*#wpstg-restore-success {\n color: #565656;\n}*/\n\n.wpstg-restore-finished-container .wpstg--swal2-content {\n margin-top: 20px;\n color: #a8a8a8;\n}\n\n/* WP Staging Implementation of Windows Style Linear Loader */\n\n.wpstg-linear-loader > span[class*=\"wpstg-linear-loader-item\"] {\n height: 6px;\n width: 6px;\n background: #333;\n display: inline-block;\n margin: 12px 2px;\n border-radius: 100%;\n animation: wpstg_linear_loader 3s infinite;\n animation-timing-function: cubic-bezier(0.030, 0.615, 0.995, 0.415);\n animation-fill-mode: both;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(1) {\n animation-delay: 1s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(2) {\n animation-delay: 0.8s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(3) {\n animation-delay: 0.6s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(4) {\n animation-delay: 0.4s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(5) {\n animation-delay: 0.2s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(6) {\n animation-delay: 0s;\n}\n\n@keyframes wpstg_linear_loader {\n 0% {\n transform: translateX(-30px);\n opacity: 0;\n }\n 25% {\n opacity: 1;\n }\n 50% {\n transform: translateX(30px);\n opacity: 0;\n }\n 100% {\n opacity: 0;\n }\n}\n\n/* END - Windows Style Linear Loader */\n\n.wpstg--modal--backup--import--upload--content {\n padding: .75em;\n margin: 1em auto;\n}\n\n.wpstg--modal--backup--import--upload--content .wpstg-linear-loader {\n display: none;\n}\n\n#wpstg-multisite-disabled .wpstg-clone {\n width: 355px;\n}\n\n#wpstg-free-version-backups .wpstg-clone {\n text-align: center;\n}\n\n#wpstg-free-version-backups .wpstg-clone p {\n font-size: 16px;\n}\n\n.wpstg-staging-info li .backup-notes {\n word-break: break-word;\n}\n\n.wpstg--modal--import--upload--progress--title small {\n font-weight: normal;\n}\n\n#wpstg-report-issue-wrapper {\n position: relative;\n}\n\n#wpstg-report-issue-wrapper .arrow-up {\n width: 0;\n height: 0;\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n border-bottom: 8px solid white;\n position: absolute;\n top: -8px;\n right: 40px;\n}\n\n.notice {\n margin: 10px 20px 0 2px;\n}\n\n.wpstg--notice {\n box-shadow: 0 1px 1px rgba(0, 0, 0, .04);\n margin: 20px 20px 20px 0px;\n padding: 1px 12px;\n}\n\n.wpstg--error a:hover {\n color: #eeeeee;\n}\n\n.wpstg--error, .wpstg--error a {\n background: #E01E5A;\n color: white;\n}\n\n/**\n * Buttons\n */\n\n.wpstg-button {\n display: inline-block;\n border-radius: 2px;\n cursor: pointer;\n padding: 2px 10px 2px 10px;\n text-transform: uppercase;\n font-weight: 500;\n outline: 0;\n transition: background-color .1s ease-in;\n text-decoration: none;\n}\n\n.wpstg-button.wpstg-save {\n background-color: #1687A7;\n color: white;\n}\n\n.wpstg-button.wpstg-save:hover {\n background-color: #276678;\n}\n\n\n.wpstg-button.wpstg-button-light {\n background-color: #f8f8f8;\n border: 1px solid #eee;\n color: #333;\n animation: background-color 0.3s;\n}\n\n.wpstg-button.wpstg-button-light:hover {\n background-color: #e0e0e0;\n border: 1px solid #e0e0e0;\n}\n\n.wpstg-buttons .spinner {\n float: none;\n margin: 0 0 0 5px;\n}\n\n.wpstg-button.danger {\n display: inline-block;\n text-decoration: none;\n text-align: center;\n text-transform: inherit;\n background-color: #E01E5A;\n color: white;\n border-radius: 2px;\n border-color: transparent;\n}\n\n.wpstg-button.danger:hover {\n background-color: #c0194d;\n}\n\n.wpstg-button--big {\n display: inline-block;\n padding: 10px;\n min-width: 170px;\n font-size: 16px;\n text-decoration: none;\n text-align: center;\n margin-top: 20px;\n color: white;\n border-radius: 3px;\n}\n\n.wpstg-button--primary {\n display: inline-block;\n text-decoration: none;\n font-size: 13px;\n line-height: 2.15384615;\n min-height: 30px;\n margin: 0;\n padding: 0 10px;\n cursor: pointer;\n border: 1px solid rgba(29, 28, 29, 0.3);\n -webkit-appearance: none;\n border-radius: 2px;\n white-space: nowrap;\n box-sizing: border-box;\n color: #171717;\n}\n\n.wpstg-button--primary:hover {\n background: rgba(28, 29, 28, .04);\n color: black;\n}\n\n.wpstg-button--secondary {\n display: inline-block;\n background-color: transparent;\n color: #95a5a6;\n border-radius: 2px;\n border: 1px solid rgba(29, 28, 29, 0.3);\n cursor: pointer;\n padding: 4px 10px 2px 10px;\n font-weight: 500;\n outline: 0;\n transition: background-color .1s ease-in;\n text-decoration: none;\n}\n\n.wpstg-button--red {\n background-color: #E01E5A;\n border-color: #E01E5A;\n color: white;\n}\n\n.wpstg-button--red:hover {\n background-color: #d02358;\n border-color: #e0255f;\n color: white;\n}\n\n.wpstg-button--cta-red {\n background-color: #fe008f;\n border-color: #E01E5A;\n color: white;\n}\n\n.wpstg-button--cta-red:hover {\n background-color: #f31391;\n border-color: #e0255f;\n color: white;\n}\n\n.wpstg-button--blue {\n background-color: #25A0F1;\n border-color: #25A0F1;\n color: white;\n}\n\n.wpstg-button--blue:hover {\n background-color: #259be6;\n border-color: #259be6;\n color: white;\n}\n\n#wpstg-button-backup-upgrade {\n font-size: 16px;\n}\n\n.wpstg-staging-status {\n color: #E01E5A;\n}\n\n#wpstg-push-changes,\n#wpstg-start-updating,\n#wpstg-save-clone-data {\n margin-left: 5px;\n}\n\ninput.wpstg-textbox {\n border: 1px solid #aaa;\n border-radius: .25rem;\n padding: 0.25rem 0.5rem;\n font-size: 14px;\n}\n\ninput.wpstg-textbox:focus {\n outline: 0;\n border-color: #259be6;\n -webkit-box-shadow: 0 0 0 0.1rem rgba(221, 221, 221, .35);\n box-shadow: 0 0 0 0.1rem rgba(221, 221, 221, .35);\n}\n\ninput.wpstg-textbox::placeholder {\n color: #888;\n}\n\n.wpstg--advance-settings--checkbox {\n display: flex;\n align-items: center;\n}\n\n.wpstg--advance-settings--checkbox > label {\n font-size: 14px;\n font-weight: bolder;\n width: 165px;\n display: inline-block;\n}\n\n.wpstg--advance-settings--checkbox > .wpstg--tooltip {\n margin-top: 5px;\n margin-left: 5px;\n position: relative;\n display: inline-block;\n border-bottom: 0px solid transparent;\n}\n\n.wpstg--advance-settings--checkbox > .wpstg--tooltip > .wpstg--tooltiptext {\n top: 18px;\n left: -150px;\n}\n\n\ndiv#wpstg-restore-wait {\n display: none;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n text-align: center;\n height: 100vh;\n width: 100vw;\n position: fixed;\n top: 0;\n left: 0;\n background: white;\n z-index: 99999;\n}\n\ndiv#wpstg-restore-wait .wpstg-title {\n font-weight: bold;\n}\n\ndiv#wpstg-restore-wait div {\n font-size: 16px;\n margin-top: 12px;\n}\n\n.resumable-browse {\n cursor: pointer;\n}\n\n.resumable-browse a {\n text-decoration: underline;\n}\n\n.wpstg-upload-text {\n font-weight: 600;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover {\n transition: background-color 0.7s;\n background-color: #94dc96;\n color: #FFF;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover * {\n pointer-events: none; /* Avoids flickering when dragging to drop a file */\n}\n\n.wpstg--modal--backup--import--upload--container.dragover .wpstg-upload-text {\n display: none;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover .wpstg-dragover-text {\n display: block;\n}\n\n.wpstg--modal--backup--import--upload--container .wpstg-dragover-text {\n display: none;\n}\n\n#wpstg-invalid-license-message, #wpstg-invalid-license-message a {\n font-weight: 500;\n color: #E01E5A;\n margin-left: 6px;\n}\n\n#wpstg-sidebar--banner {\n max-width: 200px;\n}\n\n@media screen and (max-width: 1234px) {\n .wpstg-h2 {\n font-size: 24px;\n }\n\n #wpstg-welcome li {\n font-size: 14px;\n }\n}\n\n.wpstg-exclamation {\n color: #ffffff;\n border-radius: 100%;\n background-color: #E01E5A;\n width: 20px;\n height: 20px;\n text-align: center;\n font-weight: bold;\n display: inline-block;\n margin: 6px;\n}\n\n.wpstg--tab--contents {\n padding-top: 1px;\n}\n\n.wpstg-swal-show.wpstg--swal2-show {\n -webkit-animation: wpstg-swal-show 0.2s !important;\n animation: wpstg-swal-show 0.2s !important;\n}\n\n@-webkit-keyframes wpstg-swal-show {\n 0% {\n transform: scale(0.3);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes wpstg-swal-show {\n 0% {\n transform: scale(0.3);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n.wpstg-tab-item--vert-center {\n display: flex;\n align-items: center;\n}\n\n.wpstg-db-comparison-modal {\n padding-left: 10px;\n padding-right: 10px;\n}\n\n.wpstg-db-comparison-table {\n font-size: 13px;\n width: 100%;\n}\n\n.wpstg-db-comparison-table tbody td {\n padding-top: 6px;\n}\n\n.wpstg-db-comparison-table tr > td:first-child,\n.wpstg-db-comparison-table tr > th:first-child {\n text-align: left;\n}\n\n.wpstg-css-tick {\n display: inline-block;\n transform: rotate(45deg);\n height: 12px;\n width: 6px;\n border-bottom: 3px solid #78b13f;\n border-right: 3px solid #78b13f;\n}\n\n.wpstg-css-cross {\n position: relative;\n top: -8px;\n left: -2px;\n width: 16px;\n height: 16px;\n}\n\n.wpstg-css-cross:before, .wpstg-css-cross:after {\n position: absolute;\n content: ' ';\n height: 17px;\n width: 3px;\n background-color: #E01E5A;\n}\n\n.wpstg-css-cross:before {\n transform: rotate(45deg);\n}\n\n.wpstg-css-cross:after {\n transform: rotate(-45deg);\n}\n\n.wpstg-selection-preview {\n font-size: 12px;\n margin-left: 20px;\n color: #3216;\n}\n\n.wpstg-selection-preview.danger {\n color: #E01E5A;\n}\n\n.wpstg--backup-automated {\n margin-bottom: -5px;\n}\n\n.wpstg--dismiss-schedule {\n cursor: pointer;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup {\n vertical-align: middle;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li {\n padding:2px;\n}\n\n.wpstg--modal--backup--manage--schedules--content table {\n margin: 0 auto;\n width: 100%;\n}\n\n.wpstg--modal--backup--manage--schedules--title {\n text-align: left;\n margin-bottom: 10px;\n margin-top: 0px;\n}\n\n.wpstg--modal--backup--import--upload--title {\n text-align: center;\n}\n\n#wpstg--modal--backup--manage--schedules--content {\n text-align: left;\n}\n\n#wpstg--modal--backup--manage--schedules--content thead {\n font-weight: bold;\n}\n\n#wpstg--modal--backup--manage--schedules--content .wpstg--tooltip.wpstg--dismiss-schedule {\n border-bottom: none;\n}\n\n.wpstg--tooltip.wpstg--dismiss-schedule img.wpstg--dashicons {\n filter: invert(18%) sepia(57%) saturate(6238%) hue-rotate(332deg) brightness(93%) contrast(88%);\n}\n\n#wpstg--modal--backup--manage--schedules--content td {\n padding-right: 25px;\n padding-top: 10px;\n}\n\n#wpstg--modal--backup--manage--schedules--content ul {\n margin-top: 0;\n margin-bottom: 0;\n}\n\n#wpstg--modal--backup--manage--schedules--content ul li:first-child .wpstg--tooltip {\n margin-left:0;\n}\n\n.wpstg-button:disabled {\n background-color: #dddddd;\n text-shadow: none;\n color: #b3b3b3;\n border: 1px solid #cfcfcf;\n cursor: not-allowed;\n}\n\n#wpstg-backup-runs-info {\n margin: 0px;\n margin-top: 20px;\n padding:0px;\n font-size:12px;\n}\n\n#wpstg-backup-runs-info li {\n margin: 0px;\n}\n\ndiv#wpstg-backup-locked {\n width: 100%;\n max-width: calc(800px - 30px);\n padding: 15px;\n background: white;\n margin-bottom: 10px;\n display: flex;\n align-items: center;\n}\n\n#wpstg-backup-locked .icon {\n display: inline-block;\n height: 20px;\n}\n\n#wpstg-backup-locked .icon img {\n animation: wpstg-loading-icon-anim 2s infinite;;\n}\n\n#wpstg-backup-locked .text {\n display: inline-block;\n margin-left: 15px;\n}\n\n#backup-schedule-current-time {\n font-size: 12px;\n}\n\n.wpstg-backup-scheduling-options label {\n margin-top:17px;\n}\n\n.wpstg-backup-scheduling-options .wpstg-storage-option {\n display: block;\n margin: .5em 0;\n font-size: 15px;\n}\n\n.wpstg-storage-option>span:not(.wpstg-storage-settings) {\n width: 150px;\n display: inline-block;\n}\n\n.wpstg-storages-postbox {\n padding: 13px 16px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: white;\n}\n\n.wpstg-storages-postbox a {\n padding: 8px;\n margin-right: 8px;\n text-decoration: none;\n font-weight: bold;\n color: #3c434a;\n}\n\n.wpstg-storages-postbox a:hover {\n color: #b70b72;\n}\n\n.wpstg-storage-postbox {\n padding: 4px 16px;\n background-color: white;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-active {\n background: #b70b72;\n color: white;\n font-weight: 700;\n cursor: default;\n border-radius:3px;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-active:hover {\n background: #a10a64;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-disabled {\n color: #999;\n cursor: not-allowed;\n}\n\n.wpstg-provider-revoke-form {\n display: inline;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.wpstg-provider-settings-form {\n margin-top: 10px;\n}\n\n.wpstg-provider-settings-form strong {\n display: block;\n margin: 8px 0;\n}\n\n.wpstg-provider-settings-form p {\n margin: 0;\n margin-bottom: 8px;\n}\n\n.wpstg-provider-settings-form fieldset {\n margin: 0;\n padding: 0;\n margin-bottom: 16px;\n}\n\n.wpstg-provider-settings-form fieldset p {\n margin: 0;\n padding: 5px;\n font-size: 12px;\n}\n\n.wpstg-provider-settings-form fieldset label {\n display: block;\n margin-bottom: 2px;\n}\n\n.wpstg-provider-settings-form fieldset input {\n font-size: 12px;\n}\n\n.wpstg-provider-settings-form .wpstg-link-btn.wpstg-blue-primary {\n text-shadow: none;\n}\n\n.wpstg-btn-google {\n font-family: Roboto;\n display: inline-flex;\n align-items: center;\n border-width: 0;\n outline: none;\n border-radius: 3px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, .6);\n color: #555;\n transition: background-color .3s;\n padding: 8px;\n padding-right: 16px;\n height: 40px;\n line-height: 40px;\n font-size: 14px;\n box-sizing: border-box;\n text-decoration: none;\n font-weight: bold;\n margin-right: 10px;\n}\n\n.wpstg-btn-google img {\n width: 18px;\n height: 18px;\n margin-right: 12px;\n margin-left:5px;\n}\n\n#wpstg-custom-google-credentials {\n margin-top: 20px;\n}\n\n.wpstg-fieldset .wpstg-with-icon {\n display: inline-flex;\n align-items: center; \n}\n\n.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon {\n margin-left: 8px;\n}\n\n.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon img {\n width: 16px;\n height: 16px;\n}\n\n#wpstg-btn-provider-revoke {\n border-radius: 2px;\n}\n\n.wpstg-metabox-holder{\n border-radius: 8px;\n background: #fff;\n padding: 20px;\n margin-left: 16px;\n min-height: 600px;\n margin-right: 32px;\n margin-top: 60px;\n -webkit-box-shadow: 0 0 1px rgb(0 0 0 / 13%), 0 1px 3px rgb(0 0 0 / 10%);\n box-shadow: 0 0 1px rgb(0 0 0 / 13%), 0 1px 3px rgb(0 0 0 / 10%);\n}\n\n@media only screen and (max-width: 680px) {\n .wpstg-metabox-holder {\n padding: 0px;\n padding-top: 5px;\n margin-left: 0;\n margin-right: 5px;\n }\n\n #wpstg-tab-container .wpstg-settings-panel {\n padding: 0;\n overflow: auto;\n }\n\n .wpstg-form-table td:first-child {\n width: 50%;\n }\n}\n\n.wpstg-nav-tab {\n float: left;\n border: 1px solid #ffffff;\n border-bottom: none;\n margin-left: 0.5em;\n padding: 5px 10px;\n font-size: 14px;\n line-height: 1.71428571;\n font-weight: 600;\n background: #dcdcde;\n color: #3c434a;\n text-decoration: none;\n white-space: nowrap;\n}\n\n.wpstg-nav-tab-active, .wpstg-nav-tab-active:focus, .wpstg-nav-tab-active:focus:active, .wpstg-nav-tab-active:hover {\n border-bottom: 1px solid #f0f0f1;\n background: #f3f5f7;\n color: #b70b72;\n -webkit-box-shadow: -4px -13px 14px -12px rgb(0 0 0 / 16%);\n box-shadow: -4px -13px 14px -12px rgb(0 0 0 / 16%);\n}\n\n.wpstg-nav-tab-active {\n margin-bottom: -1px;\n}\n\n.wpstg-nav-tab-wrapper {\n /*\n border-bottom: 1px solid #c3c4c7;\n */\n margin: 0;\n padding-top: 9px;\n padding-bottom: 0;\n line-height: inherit;\n}\n\n.wpstg-nav-tab-wrapper li{\n margin-bottom: 0px;\n}\n\n#wpstg--js--translations {\n text-decoration: underline;\n}\n"]}
|
bootstrap.php
CHANGED
@@ -42,7 +42,7 @@ if (!defined('WPSTG_PLUGIN_SLUG')) {
|
|
42 |
define('WPSTG_PLUGIN_SLUG', basename(dirname($pluginFilePath)));
|
43 |
}
|
44 |
|
45 |
-
// An identifier that is the same both for
|
46 |
if (!defined('WPSTG_PLUGIN_DOMAIN')) {
|
47 |
define('WPSTG_PLUGIN_DOMAIN', 'wp-staging');
|
48 |
}
|
42 |
define('WPSTG_PLUGIN_SLUG', basename(dirname($pluginFilePath)));
|
43 |
}
|
44 |
|
45 |
+
// An identifier that is the same both for WP STAGING Free and WP STAGING | PRO
|
46 |
if (!defined('WPSTG_PLUGIN_DOMAIN')) {
|
47 |
define('WPSTG_PLUGIN_DOMAIN', 'wp-staging');
|
48 |
}
|
constantsFree.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// WP STAGING version number
|
4 |
if (!defined('WPSTG_VERSION')) {
|
5 |
-
define('WPSTG_VERSION', '2.9.
|
6 |
}
|
7 |
|
8 |
// Compatible up to WordPress Version
|
2 |
|
3 |
// WP STAGING version number
|
4 |
if (!defined('WPSTG_VERSION')) {
|
5 |
+
define('WPSTG_VERSION', '2.9.11');
|
6 |
}
|
7 |
|
8 |
// Compatible up to WordPress Version
|
languages/wp-staging-de_DE.po
CHANGED
@@ -123,18 +123,18 @@ msgstr "Lasse WP Staging die Ordnergrösse bei jedem Scan Prozess überprüfen<b
|
|
123 |
|
124 |
#: Backend/views/settings/main-settings.php:275
|
125 |
msgid ""
|
126 |
-
"Check this box if you like
|
127 |
" This will not remove staging sites files or database tables."
|
128 |
msgstr "Lösche alle Einstellungen beim Löschen des Plugins"
|
129 |
|
130 |
#: Backend/views/settings/main-settings.php:261
|
131 |
-
msgid "The Optimizer is a mu plugin
|
132 |
msgstr "Der Optimizer ist ein mu Plugin welches alle anderen Plugins während des Klonvorgangs deaktiviert. Gewöhnlich macht das den Klonvorgang sehr viel zuverlässiger. Deaktiviere diese Option wenn etwas nicht funktioniert."
|
133 |
|
134 |
#: Backend/views/settings/main-settings.php:246
|
135 |
msgid ""
|
136 |
-
"
|
137 |
-
" in
|
138 |
" Please enable this when we ask you to do so."
|
139 |
msgstr "Dieser Modus schreibt zusätzliche Einträge in die Logdatei <strong>wp-content/uploads/wp-staging/logs/logfile.log</strong> Bitte aktiviere diesen Modus wenn Du ein Support Ticket eröffnest und wir Dich darum bitten."
|
140 |
|
@@ -163,12 +163,12 @@ msgid ""
|
|
163 |
msgstr "Maximale Dateigrösse welche noch kopiert wird. Alle Dateien größer als dieser Wert werden übersprungen. Hinweis: Erhöhe diese Option nur wenn Du einen guten Grund dazu hast. Dateien größer als ein einige Megabyte sind in 99% aller Fälle Log und Backup Dateien welche für eine Staging Seite nicht notwendig sind."
|
164 |
|
165 |
#: Backend/views/settings/main-settings.php:142
|
166 |
-
msgid "<strong>Important:</strong> If CPU Load Priority is <strong>Low</strong
|
167 |
msgstr "<strong>Achtung</strong> Wenn die CPU Load Priority <strong>Low</strong> ist, setze das Datei Kopierlimit auf 10 oder höher! Andernfalls wird der Kopiervorgang sehr langsam sein."
|
168 |
|
169 |
#: Backend/views/settings/main-settings.php:136
|
170 |
msgid ""
|
171 |
-
"Number of files to copy that will be copied within one
|
172 |
" The higher the value the faster the file copy process.\n"
|
173 |
" To find out the highest possible values try a high value like 500 or more. If you get timeout issues, lower it\n"
|
174 |
" until you get no more errors during copying process."
|
@@ -176,16 +176,16 @@ msgstr "Anzahl der Dateien, die mit einer Ajax Abfrage kopiert werden. Je höher
|
|
176 |
|
177 |
#: Backend/views/settings/main-settings.php:116
|
178 |
msgid ""
|
179 |
-
"Number of DB rows, that are processed within one
|
180 |
" The higher the value the faster the database search & replace process.\n"
|
181 |
" This is a high memory consumptive process. If you get timeouts lower this value!"
|
182 |
msgstr "Anzahl der Datenbankeinträge, welche gleichzeitig verarbeitet werden. Je größer der Wert, desto schneller ist der Suchen & Ersetzen Prozess. Zu große Werte können zu Timeouts durch hohen Speicherverbrauch führen!"
|
183 |
|
184 |
#: Backend/views/settings/main-settings.php:96
|
185 |
msgid ""
|
186 |
-
"Number of DB rows, that are
|
187 |
" The higher the value the faster the database copy process.\n"
|
188 |
-
" To find out the highest possible values try a high value like
|
189 |
" until you get no more errors during copying process."
|
190 |
msgstr "Anzahl der Datenbank Einträge, die zugleich kopiert werden. Je höher der Wert, desto schneller wird die Datenbank kopiert. Zu hohe Werte können allerdings zu Timeouts führen."
|
191 |
|
123 |
|
124 |
#: Backend/views/settings/main-settings.php:275
|
125 |
msgid ""
|
126 |
+
"Check this box if you like to remove all data when the plugin is deleted.\n"
|
127 |
" This will not remove staging sites files or database tables."
|
128 |
msgstr "Lösche alle Einstellungen beim Löschen des Plugins"
|
129 |
|
130 |
#: Backend/views/settings/main-settings.php:261
|
131 |
+
msgid "The Optimizer is a mu plugin that disables all other plugins during WP STAGING processing. This lowers memory consumption and speed up the cloning process more reliable. If you experience issues, disable the Optimizer."
|
132 |
msgstr "Der Optimizer ist ein mu Plugin welches alle anderen Plugins während des Klonvorgangs deaktiviert. Gewöhnlich macht das den Klonvorgang sehr viel zuverlässiger. Deaktiviere diese Option wenn etwas nicht funktioniert."
|
133 |
|
134 |
#: Backend/views/settings/main-settings.php:246
|
135 |
msgid ""
|
136 |
+
"Enable an extended debug mode that creates additional log entries\n"
|
137 |
+
" in wp-content/uploads/wp-staging/logs/[filename].log.\n"
|
138 |
" Please enable this when we ask you to do so."
|
139 |
msgstr "Dieser Modus schreibt zusätzliche Einträge in die Logdatei <strong>wp-content/uploads/wp-staging/logs/logfile.log</strong> Bitte aktiviere diesen Modus wenn Du ein Support Ticket eröffnest und wir Dich darum bitten."
|
140 |
|
163 |
msgstr "Maximale Dateigrösse welche noch kopiert wird. Alle Dateien größer als dieser Wert werden übersprungen. Hinweis: Erhöhe diese Option nur wenn Du einen guten Grund dazu hast. Dateien größer als ein einige Megabyte sind in 99% aller Fälle Log und Backup Dateien welche für eine Staging Seite nicht notwendig sind."
|
164 |
|
165 |
#: Backend/views/settings/main-settings.php:142
|
166 |
+
msgid "<strong>Important:</strong> If CPU Load Priority is <strong>Low</strong>, set a file copy limit value of 10 or higher! Otherwise file copying process takes a lot of time."
|
167 |
msgstr "<strong>Achtung</strong> Wenn die CPU Load Priority <strong>Low</strong> ist, setze das Datei Kopierlimit auf 10 oder höher! Andernfalls wird der Kopiervorgang sehr langsam sein."
|
168 |
|
169 |
#: Backend/views/settings/main-settings.php:136
|
170 |
msgid ""
|
171 |
+
"Number of files to copy that will be copied within one request.\n"
|
172 |
" The higher the value the faster the file copy process.\n"
|
173 |
" To find out the highest possible values try a high value like 500 or more. If you get timeout issues, lower it\n"
|
174 |
" until you get no more errors during copying process."
|
176 |
|
177 |
#: Backend/views/settings/main-settings.php:116
|
178 |
msgid ""
|
179 |
+
"Number of DB rows, that are processed within one request.\n"
|
180 |
" The higher the value the faster the database search & replace process.\n"
|
181 |
" This is a high memory consumptive process. If you get timeouts lower this value!"
|
182 |
msgstr "Anzahl der Datenbankeinträge, welche gleichzeitig verarbeitet werden. Je größer der Wert, desto schneller ist der Suchen & Ersetzen Prozess. Zu große Werte können zu Timeouts durch hohen Speicherverbrauch führen!"
|
183 |
|
184 |
#: Backend/views/settings/main-settings.php:96
|
185 |
msgid ""
|
186 |
+
"Number of DB rows, that are queried within one request.\n"
|
187 |
" The higher the value the faster the database copy process.\n"
|
188 |
+
" To find out the highest possible values try a high value like 10.000 or more. If you get timeout issues, lower it\n"
|
189 |
" until you get no more errors during copying process."
|
190 |
msgstr "Anzahl der Datenbank Einträge, die zugleich kopiert werden. Je höher der Wert, desto schneller wird die Datenbank kopiert. Zu hohe Werte können allerdings zu Timeouts führen."
|
191 |
|
languages/wp-staging-fr_FR.po
CHANGED
@@ -176,7 +176,7 @@ msgid "This staging site is located in another database and needs to be edited w
|
|
176 |
msgstr "Ce site intermédiaire est situé dans un autre espace de travail et doit être édité avec <a href='https://wp-staging.com' target='_blank'>WP Staging Pro</a>"
|
177 |
|
178 |
#: apps/Backend/views/settings/main-settings.php:214
|
179 |
-
msgid "If your server uses rate limits it blocks requests and WP
|
180 |
msgstr "Si votre serveur utilise des limites de débit, il bloque les demandes et WP Staging peut être interrompu. Vous pouvez résoudre ce problème en ajoutant une ou plusieurs secondes de délai entre les demandes de traitement. "
|
181 |
|
182 |
#: apps/Backend/views/clone/ajax/scan.php:117
|
@@ -344,20 +344,20 @@ msgstr "Cochez cette case si vous voulez que WP Staging vérifie les tailles de
|
|
344 |
|
345 |
#: apps/Backend/views/settings/main-settings.php:272
|
346 |
msgid ""
|
347 |
-
"Check this box if you like
|
348 |
" This will not remove staging sites files or database tables."
|
349 |
msgstr ""
|
350 |
"Cochez cette case si vous voulez que WP Staging supprime complètement toutes ses données lorsque le plugin est supprimé.\n"
|
351 |
" Cela ne supprimera pas les fichiers sauvegarde ni des tables dans la base de données."
|
352 |
|
353 |
#: apps/Backend/views/settings/main-settings.php:258
|
354 |
-
msgid "The Optimizer is a mu plugin
|
355 |
msgstr "L’optimiseur est une extension mu qui désactive toutes les autres extensions lors du traitement de WP Staging. Cela rend généralement le processus de clonage plus fiable. Si vous rencontrez des problèmes, désactivez l’optimiseur."
|
356 |
|
357 |
#: apps/Backend/views/settings/main-settings.php:243
|
358 |
msgid ""
|
359 |
-
"
|
360 |
-
" in
|
361 |
" Please enable this when we ask you to do so."
|
362 |
msgstr ""
|
363 |
"Cela permettra d'activer le mode de débogage étendu qui va créer des enregistrements supplémentaires\n"
|
@@ -401,12 +401,12 @@ msgstr ""
|
|
401 |
" Remarque : Augmentez cette option seulement si vous avez une bonne raison. Les fichiers de plus grands en taille sont en général des fichiers log et / ou sauvegardes qui ne sont pas nécessaires sur un site mise en scène."
|
402 |
|
403 |
#: apps/Backend/views/settings/main-settings.php:142
|
404 |
-
msgid "<strong>Important:</strong> If CPU Load Priority is <strong>Low</strong
|
405 |
msgstr "<strong>Important :</strong> Si la priorité de chargement CPU est <strong>basse</strong> définir une valeur limite de copie de fichier à 50 ou plus ! Sinon, le processus de copie de fichier prendra beaucoup de temps."
|
406 |
|
407 |
#: apps/Backend/views/settings/main-settings.php:136
|
408 |
msgid ""
|
409 |
-
"Number of files to copy that will be copied within one
|
410 |
" The higher the value the faster the file copy process.\n"
|
411 |
" To find out the highest possible values try a high value like 500 or more. If you get timeout issues, lower it\n"
|
412 |
" until you get no more errors during copying process."
|
@@ -418,7 +418,7 @@ msgstr ""
|
|
418 |
|
419 |
#: apps/Backend/views/settings/main-settings.php:116
|
420 |
msgid ""
|
421 |
-
"Number of DB rows, that are processed within one
|
422 |
" The higher the value the faster the database search & replace process.\n"
|
423 |
" This is a high memory consumptive process. If you get timeouts lower this value!"
|
424 |
msgstr ""
|
@@ -428,9 +428,9 @@ msgstr ""
|
|
428 |
|
429 |
#: apps/Backend/views/settings/main-settings.php:96
|
430 |
msgid ""
|
431 |
-
"Number of DB rows, that are
|
432 |
" The higher the value the faster the database copy process.\n"
|
433 |
-
" To find out the highest possible values try a high value like
|
434 |
" until you get no more errors during copying process."
|
435 |
msgstr ""
|
436 |
"Nombre de lignes dans la base de données qui sont copiées dans une requête Ajax.\n"
|
176 |
msgstr "Ce site intermédiaire est situé dans un autre espace de travail et doit être édité avec <a href='https://wp-staging.com' target='_blank'>WP Staging Pro</a>"
|
177 |
|
178 |
#: apps/Backend/views/settings/main-settings.php:214
|
179 |
+
msgid "If your server uses rate limits it blocks requests and WP STAGING can be interrupted. You can resolve that by adding one or more seconds of delay between the processing requests. "
|
180 |
msgstr "Si votre serveur utilise des limites de débit, il bloque les demandes et WP Staging peut être interrompu. Vous pouvez résoudre ce problème en ajoutant une ou plusieurs secondes de délai entre les demandes de traitement. "
|
181 |
|
182 |
#: apps/Backend/views/clone/ajax/scan.php:117
|
344 |
|
345 |
#: apps/Backend/views/settings/main-settings.php:272
|
346 |
msgid ""
|
347 |
+
"Check this box if you like to remove all data when the plugin is deleted.\n"
|
348 |
" This will not remove staging sites files or database tables."
|
349 |
msgstr ""
|
350 |
"Cochez cette case si vous voulez que WP Staging supprime complètement toutes ses données lorsque le plugin est supprimé.\n"
|
351 |
" Cela ne supprimera pas les fichiers sauvegarde ni des tables dans la base de données."
|
352 |
|
353 |
#: apps/Backend/views/settings/main-settings.php:258
|
354 |
+
msgid "The Optimizer is a mu plugin that disables all other plugins during WP STAGING processing. This lowers memory consumption and speed up the cloning process more reliable. If you experience issues, disable the Optimizer."
|
355 |
msgstr "L’optimiseur est une extension mu qui désactive toutes les autres extensions lors du traitement de WP Staging. Cela rend généralement le processus de clonage plus fiable. Si vous rencontrez des problèmes, désactivez l’optimiseur."
|
356 |
|
357 |
#: apps/Backend/views/settings/main-settings.php:243
|
358 |
msgid ""
|
359 |
+
"Enable an extended debug mode that creates additional log entries\n"
|
360 |
+
" in wp-content/uploads/wp-staging/logs/logfile.log.\n"
|
361 |
" Please enable this when we ask you to do so."
|
362 |
msgstr ""
|
363 |
"Cela permettra d'activer le mode de débogage étendu qui va créer des enregistrements supplémentaires\n"
|
401 |
" Remarque : Augmentez cette option seulement si vous avez une bonne raison. Les fichiers de plus grands en taille sont en général des fichiers log et / ou sauvegardes qui ne sont pas nécessaires sur un site mise en scène."
|
402 |
|
403 |
#: apps/Backend/views/settings/main-settings.php:142
|
404 |
+
msgid "<strong>Important:</strong> If CPU Load Priority is <strong>Low</strong>, set a file copy limit value of 50 or higher! Otherwise file copying process takes a lot of time."
|
405 |
msgstr "<strong>Important :</strong> Si la priorité de chargement CPU est <strong>basse</strong> définir une valeur limite de copie de fichier à 50 ou plus ! Sinon, le processus de copie de fichier prendra beaucoup de temps."
|
406 |
|
407 |
#: apps/Backend/views/settings/main-settings.php:136
|
408 |
msgid ""
|
409 |
+
"Number of files to copy that will be copied within one request.\n"
|
410 |
" The higher the value the faster the file copy process.\n"
|
411 |
" To find out the highest possible values try a high value like 500 or more. If you get timeout issues, lower it\n"
|
412 |
" until you get no more errors during copying process."
|
418 |
|
419 |
#: apps/Backend/views/settings/main-settings.php:116
|
420 |
msgid ""
|
421 |
+
"Number of DB rows, that are processed within one request.\n"
|
422 |
" The higher the value the faster the database search & replace process.\n"
|
423 |
" This is a high memory consumptive process. If you get timeouts lower this value!"
|
424 |
msgstr ""
|
428 |
|
429 |
#: apps/Backend/views/settings/main-settings.php:96
|
430 |
msgid ""
|
431 |
+
"Number of DB rows, that are queried within one request.\n"
|
432 |
" The higher the value the faster the database copy process.\n"
|
433 |
+
" To find out the highest possible values try a high value like 10.000 or more. If you get timeout issues, lower it\n"
|
434 |
" until you get no more errors during copying process."
|
435 |
msgstr ""
|
436 |
"Nombre de lignes dans la base de données qui sont copiées dans une requête Ajax.\n"
|
opcacheBootstrap.php
CHANGED
@@ -45,7 +45,7 @@ if (!$canInvalidate) {
|
|
45 |
*
|
46 |
* We use the "Version" from the headers of the main file of the plugin to compare.
|
47 |
*/
|
48 |
-
$runtimeVersionDifferentFromBuildVersion = get_file_data($pluginFilePath, ['Version' => 'Version'])['Version'] !== '2.9.
|
49 |
$lastCheckHappenedAfterInterval = current_time('timestamp') > (int)get_site_transient('wpstg.bootstrap.opcache.lastCleared') + 5 * MINUTE_IN_SECONDS;
|
50 |
|
51 |
$shouldClearOpCache = apply_filters('wpstg.bootstrap.opcache.shouldClear', $runtimeVersionDifferentFromBuildVersion && $lastCheckHappenedAfterInterval);
|
45 |
*
|
46 |
* We use the "Version" from the headers of the main file of the plugin to compare.
|
47 |
*/
|
48 |
+
$runtimeVersionDifferentFromBuildVersion = get_file_data($pluginFilePath, ['Version' => 'Version'])['Version'] !== '2.9.11';
|
49 |
$lastCheckHappenedAfterInterval = current_time('timestamp') > (int)get_site_transient('wpstg.bootstrap.opcache.lastCleared') + 5 * MINUTE_IN_SECONDS;
|
50 |
|
51 |
$shouldClearOpCache = apply_filters('wpstg.bootstrap.opcache.shouldClear', $runtimeVersionDifferentFromBuildVersion && $lastCheckHappenedAfterInterval);
|
readme.txt
CHANGED
@@ -1,42 +1,40 @@
|
|
1 |
-
===
|
2 |
|
3 |
Author URL: https://wp-staging.com/backup-wordpress
|
4 |
Plugin URL: https://wordpress.org/plugins/wp-staging
|
5 |
-
Contributors: ReneHermi,
|
6 |
Donate link: https://wp-staging.com/backup-wordpress
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
-
Tags: backup, backup plugin, database backup, wordpress backup plugin, migrate
|
10 |
Requires at least: 3.6+
|
11 |
-
Tested up to: 5.9
|
12 |
-
Stable tag: 2.9.
|
13 |
Requires PHP: 5.6
|
14 |
|
15 |
-
Backup & Duplicator Plugin - Clone, move, duplicate & migrate websites to staging, backup, and development sites for authorized users only.
|
16 |
|
17 |
== Description ==
|
18 |
|
19 |
<h3>Staging, Backup, Cloning & Migration of WordPress Sites</h3>
|
20 |
-
WP STAGING is a professional all in one duplicator, staging, and backup plugin
|
21 |
(Cloning and backup time depends on the size of your website)
|
22 |
<br /><br />
|
23 |
-
Visit [https://wp-staging.com/backup-wordpress](https://wp-staging.com/backup-wordpress "https://wp-staging.com/backup-wordpress") for more details.
|
24 |
-
<br /><br />
|
25 |
This backup and staging tool creates a clone of your website into a subfolder or subdomain (Pro) of your main WordPress installation. The cloned site includes an entire copy of your database.
|
26 |
<br /> <br />
|
27 |
-
For pushing & migrating plugins and themes to the live site, and
|
28 |
<br /><br />
|
29 |
-
WP STAGING runs all the time-consumptive database
|
30 |
<br /><br />
|
31 |
This staging and backup plugin can clone your website even if it runs on a weak shared hosting server.
|
32 |
<br /><br />
|
33 |
-
WP STAGING can
|
34 |
|
35 |
[youtube https://www.youtube.com/watch?v=vkv52s36Yvg]
|
36 |
|
37 |
-
|
38 |
|
39 |
-
* Clones the entire production site into a
|
40 |
* Easy to use! Create a clone / backup site by clicking one button
|
41 |
* No Software as a Service - No account needed! All your data stays on your server. Your data belongs to you only.
|
42 |
* No server timeouts on huge websites or small and weak servers
|
@@ -50,9 +48,9 @@ WP STAGING can help you prevent your website from being broken or unavailable be
|
|
50 |
* Every release passes thousands of unit and acceptance tests to make the plugin extremely robust, reliable and fast on an enterprise code quality level
|
51 |
* Fast and professional support team
|
52 |
|
53 |
-
== WP STAGING | PRO BACKUP AND CLONING WORDPRESS FEATURES ==
|
54 |
|
55 |
-
|
56 |
|
57 |
* Migration - Migrate and transfer WordPress to another host or domain
|
58 |
* High Performance - Backup and clone an entire website, even with millions of database rows faster and less resource-intensive than with other plugins
|
@@ -70,7 +68,7 @@ Note: These backup & cloning features are Premium. You need WP STAGING | PRO to
|
|
70 |
* Mail notifications - Be notified if a backup can not be created
|
71 |
* Backup of WordPress multisites
|
72 |
* Backup to Google Drive
|
73 |
-
* Backup to Amazon S3
|
74 |
* Backup to (s)FTP (Released soon)
|
75 |
* Backup to Dropbox (Released soon)
|
76 |
* Specify custom backup folder destination for backup cloud storage providers
|
@@ -81,22 +79,22 @@ Note: These backup & cloning features are Premium. You need WP STAGING | PRO to
|
|
81 |
== Backup, Restore & Migration ==
|
82 |
|
83 |
<strong>How to Backup and Restore WordPress</strong>
|
84 |
-
https://wp-staging.com/docs/how-to-backup-and-restore-your-wordpress-website/
|
85 |
|
86 |
<strong>Backup & Transfer WordPress Site to Another Host</strong>
|
87 |
-
https://wp-staging.com/docs/how-to-migrate-your-wordpress-site-to-a-new-host/
|
88 |
|
89 |
<strong>All Backup Guides</strong>
|
90 |
-
https://wp-staging.com/docs/category/backup-restore/
|
91 |
|
92 |
-
<strong>
|
93 |
-
https://wp-staging.com/docs/category/working-with-wp-staging/
|
94 |
|
95 |
<strong>FAQ for Backup & Cloning</strong>
|
96 |
-
https://wp-staging.com/docs/category/frequently-asked-questions/
|
97 |
|
98 |
<strong>Troubleshooting Backup & Cloning</strong>
|
99 |
-
https://wp-staging.com/docs/category/troubleshooting/
|
100 |
|
101 |
<strong>Change your workflow of updating themes and plugins:</strong>
|
102 |
|
@@ -123,7 +121,7 @@ That is where WP STAGING comes into play... Site cloning, backup, and staging si
|
|
123 |
= Why should I use a Backup & Staging Website? =
|
124 |
|
125 |
Plugin updates and theme customizations should be tested on a staging / backup platform before applying them on the production website.
|
126 |
-
Usually, it's
|
127 |
|
128 |
So, before you update a plugin or install a new one, it is highly recommended to check out the modifications on a clone / backup of your production website.
|
129 |
That ensures that any modifications work on your production website without throwing unexpected errors or preventing your site from loading, better known as the "WordPress blank page error."
|
@@ -147,7 +145,7 @@ You can even use it as some kind of backup in case something happens to your pro
|
|
147 |
|
148 |
So instead of offering our backup feature free of charge, we think it's time to provide a full-fledged premium backup solution with enterprise code quality affordable for everyone.
|
149 |
|
150 |
-
[Video: How we run automated tests
|
151 |
|
152 |
= What is the difference between WP STAGING backup and other backup plugins? =
|
153 |
|
@@ -195,7 +193,32 @@ Permalinks are disabled on the staging / backup site after first time cloning /
|
|
195 |
= How to use a Backup file to Migrate WordPress to another Host or Domain
|
196 |
The pro version of WP STAGING can backup your whole WordPress website. (In the future, we are implementing a basic free version of our sophisticated backup feature into this free version as well)
|
197 |
With this backup function, you can backup and copy your entire WordPress website to another domain, new host, or new server very easily, and often faster and more reliable than with any other existing backup plugins.
|
198 |
-
Have a look at [https://wp-staging.com/docs/how-to-migrate-your-wordpress-site-to-a-new-host/](this article),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
199 |
|
200 |
= Can I give you some feedback for WP STAGING Backup & Cloning? =
|
201 |
This plugin has been created in thousands of hours and works even with the smallest shared web hosting package.
|
@@ -203,14 +226,16 @@ We also use an enterprise-level approved testing coding environment to ensure th
|
|
203 |
If you are a developer, you will probably like to hear that we use Codeception and PHPUnit for our backup software.
|
204 |
|
205 |
As there are infinite variations of possible server constellations, it still can happen that something does not work for you 100%. In that case,
|
206 |
-
please open a [support request](https://wp-staging.com/support/ "
|
|
|
|
|
207 |
|
208 |
-
|
209 |
-
* WordPress 3.8
|
210 |
-
*
|
211 |
* No extra libraries required
|
212 |
-
*
|
213 |
-
* Custom backup format is much faster and smaller than tar or zip compression
|
214 |
* Backup & cloning works in low memory & shared hosting environments
|
215 |
|
216 |
== SUPPORT ==
|
@@ -234,6 +259,15 @@ WP STAGING BACKUP & CLONING TECHNICAL REQUIREMENTS & INFORMATION
|
|
234 |
|
235 |
== Changelog ==
|
236 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
237 |
= 2.9.10 =
|
238 |
* Fix: Fatal error on missing Backup Scheduler class in Free version #1688
|
239 |
* Fix: Fix recursive scanning if there is symlink in root directory linking to root directory itself #1688
|
@@ -502,6 +536,15 @@ WP STAGING Backup & Cloning | Full changelog:
|
|
502 |
|
503 |
== Upgrade Notice ==
|
504 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
505 |
* New: Support up to WordPress 5.9.3
|
506 |
* New: Added upgrade routine for backup created with version 4.1.9 and 4.2.0 to fix backup metadata info #1647
|
507 |
* Fix: Backup creation is blocked by mod_security if access tokens contain 0x string #1651
|
1 |
+
=== Backup Duplicator & Migration - WP STAGING ===
|
2 |
|
3 |
Author URL: https://wp-staging.com/backup-wordpress
|
4 |
Plugin URL: https://wordpress.org/plugins/wp-staging
|
5 |
+
Contributors: WP-Staging, wpstagingbackup, ReneHermi, lucatume, alaasalama, fayyazfayzi
|
6 |
Donate link: https://wp-staging.com/backup-wordpress
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
+
Tags: backup, backup plugin, database backup, wordpress backup plugin, migrate, backup wordpress, backups
|
10 |
Requires at least: 3.6+
|
11 |
+
Tested up to: 5.9.3
|
12 |
+
Stable tag: 2.9.11
|
13 |
Requires PHP: 5.6
|
14 |
|
15 |
+
Backup & Duplicator Plugin - Clone, backup, move, duplicate & migrate websites to staging, backup, and development sites for authorized users only.
|
16 |
|
17 |
== Description ==
|
18 |
|
19 |
<h3>Staging, Backup, Cloning & Migration of WordPress Sites</h3>
|
20 |
+
WP STAGING is a professional all in one <strong>duplicator, staging, and backup plugin</strong>. Create an exact copy and backup of your website in seconds. Perfect for staging, backup, or development purposes.
|
21 |
(Cloning and backup time depends on the size of your website)
|
22 |
<br /><br />
|
|
|
|
|
23 |
This backup and staging tool creates a clone of your website into a subfolder or subdomain (Pro) of your main WordPress installation. The cloned site includes an entire copy of your database.
|
24 |
<br /> <br />
|
25 |
+
For pushing & migrating plugins and themes to the live site, creating a backup and upload a backup to cloud providers, check out [WP STAGING | PRO](https://wp-staging.com/backup-wordpress "WP STAGING - Backup & Cloning")
|
26 |
<br /><br />
|
27 |
+
WP STAGING runs all the time-consumptive operations for database and file cloning and backup operations in the background. This tool does <strong>automatically a search & replacement</strong> of all links and paths.
|
28 |
<br /><br />
|
29 |
This staging and backup plugin can clone your website even if it runs on a weak shared hosting server.
|
30 |
<br /><br />
|
31 |
+
<strong>WP STAGING can prevent your website from breaking or going offline due to installing untested plugins!</strong>
|
32 |
|
33 |
[youtube https://www.youtube.com/watch?v=vkv52s36Yvg]
|
34 |
|
35 |
+
== WP STAGING | FREE BACKUP AND CLONING WORDPRESS FEATURES ==
|
36 |
|
37 |
+
* Clones the entire production site into a subdirectory like example.com/staging-site.
|
38 |
* Easy to use! Create a clone / backup site by clicking one button
|
39 |
* No Software as a Service - No account needed! All your data stays on your server. Your data belongs to you only.
|
40 |
* No server timeouts on huge websites or small and weak servers
|
48 |
* Every release passes thousands of unit and acceptance tests to make the plugin extremely robust, reliable and fast on an enterprise code quality level
|
49 |
* Fast and professional support team
|
50 |
|
51 |
+
== WP STAGING | PRO - BACKUP AND CLONING WORDPRESS FEATURES ==
|
52 |
|
53 |
+
The backup & cloning features below are Premium. You need WP STAGING | PRO to use those features. [More about WP STAGING | PRO](https://wp-staging.com/backup-wordpress)!
|
54 |
|
55 |
* Migration - Migrate and transfer WordPress to another host or domain
|
56 |
* High Performance - Backup and clone an entire website, even with millions of database rows faster and less resource-intensive than with other plugins
|
68 |
* Mail notifications - Be notified if a backup can not be created
|
69 |
* Backup of WordPress multisites
|
70 |
* Backup to Google Drive
|
71 |
+
* Backup to Amazon S3
|
72 |
* Backup to (s)FTP (Released soon)
|
73 |
* Backup to Dropbox (Released soon)
|
74 |
* Specify custom backup folder destination for backup cloud storage providers
|
79 |
== Backup, Restore & Migration ==
|
80 |
|
81 |
<strong>How to Backup and Restore WordPress</strong>
|
82 |
+
[https://wp-staging.com/docs/how-to-backup-and-restore-your-wordpress-website/](https://wp-staging.com/docs/how-to-backup-and-restore-your-wordpress-website/ "Backup and Restore WordPress")
|
83 |
|
84 |
<strong>Backup & Transfer WordPress Site to Another Host</strong>
|
85 |
+
[https://wp-staging.com/docs/how-to-migrate-your-wordpress-site-to-a-new-host/](https://wp-staging.com/docs/how-to-migrate-your-wordpress-site-to-a-new-host/ "Backup and Transfer WordPress to new host")
|
86 |
|
87 |
<strong>All Backup Guides</strong>
|
88 |
+
[https://wp-staging.com/docs/category/backup-restore/](https://wp-staging.com/docs/category/backup-restore/ "All Backup Guides")
|
89 |
|
90 |
+
<strong>Working with Staging Sites </strong>
|
91 |
+
[https://wp-staging.com/docs/category/working-with-wp-staging/](https://wp-staging.com/docs/category/working-with-wp-staging/ "Working with Staging Sites")
|
92 |
|
93 |
<strong>FAQ for Backup & Cloning</strong>
|
94 |
+
[https://wp-staging.com/docs/category/frequently-asked-questions/](https://wp-staging.com/docs/category/frequently-asked-questions/ "Backup & Cloning FAQ")
|
95 |
|
96 |
<strong>Troubleshooting Backup & Cloning</strong>
|
97 |
+
[https://wp-staging.com/docs/category/troubleshooting/](https://wp-staging.com/docs/category/troubleshooting/ "Troubleshooting Backup & Cloning")
|
98 |
|
99 |
<strong>Change your workflow of updating themes and plugins:</strong>
|
100 |
|
121 |
= Why should I use a Backup & Staging Website? =
|
122 |
|
123 |
Plugin updates and theme customizations should be tested on a staging / backup platform before applying them on the production website.
|
124 |
+
Usually, it's recommended having the staging / backup platform on an identical server like the production server. You can only catch all possible errors during testing with the same hardware and software environment for your test & backup website.
|
125 |
|
126 |
So, before you update a plugin or install a new one, it is highly recommended to check out the modifications on a clone / backup of your production website.
|
127 |
That ensures that any modifications work on your production website without throwing unexpected errors or preventing your site from loading, better known as the "WordPress blank page error."
|
145 |
|
146 |
So instead of offering our backup feature free of charge, we think it's time to provide a full-fledged premium backup solution with enterprise code quality affordable for everyone.
|
147 |
|
148 |
+
[Video: How we run automated tests on WP STAGING](https://www.youtube.com/watch?v=Tf9C9Pgu7Bs)
|
149 |
|
150 |
= What is the difference between WP STAGING backup and other backup plugins? =
|
151 |
|
193 |
= How to use a Backup file to Migrate WordPress to another Host or Domain
|
194 |
The pro version of WP STAGING can backup your whole WordPress website. (In the future, we are implementing a basic free version of our sophisticated backup feature into this free version as well)
|
195 |
With this backup function, you can backup and copy your entire WordPress website to another domain, new host, or new server very easily, and often faster and more reliable than with any other existing backup plugins.
|
196 |
+
Have a look at [https://wp-staging.com/docs/how-to-migrate-your-wordpress-site-to-a-new-host/](this article), that introduces the backup feature.
|
197 |
+
|
198 |
+
= Is There a Translation of WP STAGING in my Language? =
|
199 |
+
|
200 |
+
We have translated WP STAGING into five languages nearly completely:
|
201 |
+
|
202 |
+
English: [WP STAGING Backup & Duplicator WordPress Plugin. Backup & Migrate WordPress websites.](https://es.wordpress.org/plugins/wp-staging/)
|
203 |
+
French: [Plugin WordPress de sauvegarde et de duplication WP STAGING. Sauvegarder et migrer les sites Web WordPress.](https://es.wordpress.org/plugins/wp-staging/)
|
204 |
+
German: [WP STAGING Backup & Duplicator WordPress Plugin. Migrate WordPress Webseiten.](https://es.wordpress.org/plugins/wp-staging/)
|
205 |
+
Spanish: [WP STAGING Complemento de copia de seguridad y duplicador de WordPress. Copia de seguridad y migración de sitios web de WordPress.](https://es.wordpress.org/plugins/wp-staging/)
|
206 |
+
|
207 |
+
The following languages have been partially translated. You can help us with the translation:
|
208 |
+
|
209 |
+
Croatian: [WP STAGING Backup & Duplicator WordPress dodatak. Izradite sigurnosnu kopiju i migrirajte WordPress web stranice.](https://hr.wordpress.org/plugins/wp-staging/)
|
210 |
+
Dutch: [WP STAGING Back-up & Duplicator WordPress-plug-in. Back-up en migratie van WordPress-websites.](https://nl.wordpress.org/plugins/wp-staging/)
|
211 |
+
Finnish: [WP STAGING Backup & Duplicator WordPress-laajennus. Varmuuskopioi ja siirrä WordPress-verkkosivustoja.](https://fi.wordpress.org/plugins/wp-staging/)
|
212 |
+
Greek: [WP STAGING Πρόσθετο WordPress Backup & Duplicator. Δημιουργία αντιγράφων ασφαλείας και μετεγκατάσταση ιστοσελίδων WordPress.](https://el.wordpress.org/plugins/wp-staging/)
|
213 |
+
Hungarian: [WP STAGING Backup & Duplicator WordPress beépülő modul. WordPress-webhelyek biztonsági mentése és migrálása.](https://hu.wordpress.org/plugins/wp-staging/)
|
214 |
+
Indonesian: [WP Staging Backup & Duplikator Plugin WordPress. Cadangkan & Migrasi situs web WordPress.](https://id.wordpress.org/plugins/wp-staging/)
|
215 |
+
Italian: [WP STAGING Plugin WordPress per backup e duplicatori. Backup e migrazione di siti Web WordPress.](https://it.wordpress.org/plugins/wp-staging/)
|
216 |
+
Persian: [WP STAGING پشتیبان گیری و افزونه وردپرس Duplicator. پشتیبان گیری و مهاجرت از وب سایت های وردپرسی.](https://fa.wordpress.org/plugins/wp-staging/)
|
217 |
+
Polish: [WP STAGING Wtyczka WordPress do tworzenia kopii zapasowych i powielania. Twórz kopie zapasowe i migruj witryny WordPress.](https://pl.wordpress.org/plugins/wp-staging/)
|
218 |
+
Portuguese (Brazil): [WP STAGING Backup & Duplicador Plugin WordPress. Backup e migração de sites WordPress.](https://br.wordpress.org/plugins/wp-staging/)
|
219 |
+
Russian: [Плагин WP STAGING Backup & Duplicator для WordPress. Резервное копирование и перенос сайтов WordPress.](https://ru.wordpress.org/plugins/wp-staging/)
|
220 |
+
Turkish: [WP STAGING Yedekleme ve Çoğaltıcı WordPress Eklentisi. WordPress web sitelerini yedekleyin ve taşıyın.](https://tr.wordpress.org/plugins/wp-staging/)
|
221 |
+
Vietnamese: [WP STAGING Backup & Duplicator WordPress Plugin. Sao lưu và di chuyển các trang web WordPress.](https://vi.wordpress.org/plugins/wp-staging/)
|
222 |
|
223 |
= Can I give you some feedback for WP STAGING Backup & Cloning? =
|
224 |
This plugin has been created in thousands of hours and works even with the smallest shared web hosting package.
|
226 |
If you are a developer, you will probably like to hear that we use Codeception and PHPUnit for our backup software.
|
227 |
|
228 |
As there are infinite variations of possible server constellations, it still can happen that something does not work for you 100%. In that case,
|
229 |
+
please open a [support request](https://wp-staging.com/support/ "Support Request") and describe your issue.
|
230 |
+
|
231 |
+
== WP STAGING BACKUP & CLONING TECHNICAL REQUIREMENTS & INFORMATION ==
|
232 |
|
233 |
+
* Works on latest version of WordPress
|
234 |
+
* Minimum Supported WordPress Version 3.8
|
235 |
+
* Cloning and Backup work on all webhosts
|
236 |
* No extra libraries required
|
237 |
+
* Backup & cloning supports huge websites
|
238 |
+
* Custom backup format is much faster and smaller than any tar or zip compression
|
239 |
* Backup & cloning works in low memory & shared hosting environments
|
240 |
|
241 |
== SUPPORT ==
|
259 |
|
260 |
== Changelog ==
|
261 |
|
262 |
+
= 2.9.11 =
|
263 |
+
* New: Add Amazon S3 as backup cloud storage option for backup upload #1665
|
264 |
+
* Fix: Fatal error due to missing BackupScheduler class in Free version #1688
|
265 |
+
* Fix: Can not recursive scan file system if there is a symlink in root directory linking to the root directory itself. #1688
|
266 |
+
* Fix: Can not download backup files. Incorrect backup download link if wp-content folder is symlinked to another folder outside the wp root folder #1697
|
267 |
+
* Fix: Error on downloading backup in IIS due to section in parent web.config that overwrites the WP STAGING generated web.config in backup folder #1699
|
268 |
+
* Fix: PHP Fatal error while cloning if php iconv extension is not active. Continue cloning even if punycode related code doesn't work due to missing extensions #1702
|
269 |
+
* Enh: Remove duplicated mbstring class #1702
|
270 |
+
|
271 |
= 2.9.10 =
|
272 |
* Fix: Fatal error on missing Backup Scheduler class in Free version #1688
|
273 |
* Fix: Fix recursive scanning if there is symlink in root directory linking to root directory itself #1688
|
536 |
|
537 |
== Upgrade Notice ==
|
538 |
|
539 |
+
= 2.9.11 =
|
540 |
+
* New: Add Amazon S3 as backup cloud storage option for backup upload #1665
|
541 |
+
* Enh: Remove duplicate mbstring related code #1702
|
542 |
+
* Fix: Fatal error due to missing BackupScheduler class in Free version #1688
|
543 |
+
* Fix: Can not recursive scan file system if there is a symlink in root directory linking to the root directory itself. #1688
|
544 |
+
* Fix: Can not download backup files. Incorrect backup download link if wp-content folder is symlinked to another folder outside the wp root folder #1697
|
545 |
+
* Fix: Error on downloading backup in IIS due to section in parent web.config that overwrites the WP STAGING generated web.config in backup folder #1699
|
546 |
+
* Fix: Improve punycode related code. Keep cloning even if unable to use punycode related code doesn't work due to missing extensions #1702
|
547 |
+
|
548 |
* New: Support up to WordPress 5.9.3
|
549 |
* New: Added upgrade routine for backup created with version 4.1.9 and 4.2.0 to fix backup metadata info #1647
|
550 |
* Fix: Backup creation is blocked by mod_security if access tokens contain 0x string #1651
|
vendor_wpstg/autoload/files.php
CHANGED
@@ -15,7 +15,10 @@ return array(
|
|
15 |
'25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
|
16 |
'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
|
17 |
'37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
|
|
|
|
|
18 |
'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
|
|
|
19 |
'1f87db08236948d07391152dccb70f04' => $vendorDir . '/google/apiclient-services/autoload.php',
|
20 |
'a8d3953fd9959404dd22d3dfcd0a79f0' => $vendorDir . '/google/apiclient/src/aliases.php',
|
21 |
);
|
15 |
'25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
|
16 |
'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
|
17 |
'37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
|
18 |
+
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
|
19 |
+
'b067bc7112e384b61c701452d53a14a8' => $vendorDir . '/mtdowling/jmespath.php/src/JmesPath.php',
|
20 |
'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
|
21 |
+
'8a9dc1de0ca7e01f3e08231539562f61' => $vendorDir . '/aws/aws-sdk-php/src/functions.php',
|
22 |
'1f87db08236948d07391152dccb70f04' => $vendorDir . '/google/apiclient-services/autoload.php',
|
23 |
'a8d3953fd9959404dd22d3dfcd0a79f0' => $vendorDir . '/google/apiclient/src/aliases.php',
|
24 |
);
|
vendor_wpstg/autoload/src.php
CHANGED
@@ -6,8 +6,281 @@ $vendorDir = dirname(dirname(__FILE__));
|
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
'ArithmeticError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
|
10 |
'AssertionError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
|
12 |
'DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
|
13 |
'Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php',
|
@@ -304,6 +577,17 @@ return array(
|
|
304 |
'GuzzleHttp\\TransferStats' => $vendorDir . '/guzzlehttp/guzzle/src/TransferStats.php',
|
305 |
'GuzzleHttp\\UriTemplate' => $vendorDir . '/guzzlehttp/guzzle/src/UriTemplate.php',
|
306 |
'GuzzleHttp\\Utils' => $vendorDir . '/guzzlehttp/guzzle/src/Utils.php',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
307 |
'Monolog\\ErrorHandler' => $vendorDir . '/monolog/monolog/src/Monolog/ErrorHandler.php',
|
308 |
'Monolog\\Formatter\\ChromePHPFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php',
|
309 |
'Monolog\\Formatter\\ElasticaFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php',
|
@@ -431,6 +715,7 @@ return array(
|
|
431 |
'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\DisallowedRanges' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php',
|
432 |
'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\Regex' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/Regex.php',
|
433 |
'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Normalizer.php',
|
|
|
434 |
'Symfony\\Polyfill\\Php70\\Php70' => $vendorDir . '/symfony/polyfill-php70/Php70.php',
|
435 |
'Symfony\\Polyfill\\Php72\\Php72' => $vendorDir . '/symfony/polyfill-php72/Php72.php',
|
436 |
'TypeError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
|
@@ -667,7 +952,6 @@ return array(
|
|
667 |
'WPStaging\\Framework\\Utils\\Cache\\BufferedCache' => $baseDir . '/Framework/Utils/Cache/BufferedCache.php',
|
668 |
'WPStaging\\Framework\\Utils\\Cache\\Cache' => $baseDir . '/Framework/Utils/Cache/Cache.php',
|
669 |
'WPStaging\\Framework\\Utils\\Math' => $baseDir . '/Framework/Utils/Math.php',
|
670 |
-
'WPStaging\\Framework\\Utils\\Mbstring' => $baseDir . '/Framework/Utils/Mbstring.php',
|
671 |
'WPStaging\\Framework\\Utils\\SlashMode' => $baseDir . '/Framework/Utils/SlashMode.php',
|
672 |
'WPStaging\\Framework\\Utils\\Strings' => $baseDir . '/Framework/Utils/Strings.php',
|
673 |
'WPStaging\\Framework\\Utils\\ThirdParty\\Glob' => $baseDir . '/Framework/Utils/ThirdParty/Glob.php',
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
9 |
+
'AWS\\CRT\\Auth\\AwsCredentials' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/AwsCredentials.php',
|
10 |
+
'AWS\\CRT\\Auth\\CredentialsProvider' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/CredentialsProvider.php',
|
11 |
+
'AWS\\CRT\\Auth\\Signable' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/Signable.php',
|
12 |
+
'AWS\\CRT\\Auth\\SignatureType' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SignatureType.php',
|
13 |
+
'AWS\\CRT\\Auth\\SignedBodyHeaderType' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SignedBodyHeaderType.php',
|
14 |
+
'AWS\\CRT\\Auth\\Signing' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/Signing.php',
|
15 |
+
'AWS\\CRT\\Auth\\SigningAlgorithm' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SigningAlgorithm.php',
|
16 |
+
'AWS\\CRT\\Auth\\SigningConfigAWS' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SigningConfigAWS.php',
|
17 |
+
'AWS\\CRT\\Auth\\SigningResult' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SigningResult.php',
|
18 |
+
'AWS\\CRT\\Auth\\StaticCredentialsProvider' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/StaticCredentialsProvider.php',
|
19 |
+
'AWS\\CRT\\CRT' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/CRT.php',
|
20 |
+
'AWS\\CRT\\HTTP\\Headers' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/HTTP/Headers.php',
|
21 |
+
'AWS\\CRT\\HTTP\\Message' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/HTTP/Message.php',
|
22 |
+
'AWS\\CRT\\HTTP\\Request' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/HTTP/Request.php',
|
23 |
+
'AWS\\CRT\\HTTP\\Response' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/HTTP/Response.php',
|
24 |
+
'AWS\\CRT\\IO\\EventLoopGroup' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/IO/EventLoopGroup.php',
|
25 |
+
'AWS\\CRT\\IO\\InputStream' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/IO/InputStream.php',
|
26 |
+
'AWS\\CRT\\Internal\\Encoding' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Internal/Encoding.php',
|
27 |
+
'AWS\\CRT\\Internal\\Extension' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Internal/Extension.php',
|
28 |
+
'AWS\\CRT\\Log' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Log.php',
|
29 |
+
'AWS\\CRT\\NativeResource' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/NativeResource.php',
|
30 |
+
'AWS\\CRT\\OptionValue' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Options.php',
|
31 |
+
'AWS\\CRT\\Options' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Options.php',
|
32 |
'ArithmeticError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
|
33 |
'AssertionError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
|
34 |
+
'Aws\\AbstractConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/AbstractConfigurationProvider.php',
|
35 |
+
'Aws\\Api\\AbstractModel' => $vendorDir . '/aws/aws-sdk-php/src/Api/AbstractModel.php',
|
36 |
+
'Aws\\Api\\ApiProvider' => $vendorDir . '/aws/aws-sdk-php/src/Api/ApiProvider.php',
|
37 |
+
'Aws\\Api\\DateTimeResult' => $vendorDir . '/aws/aws-sdk-php/src/Api/DateTimeResult.php',
|
38 |
+
'Aws\\Api\\DocModel' => $vendorDir . '/aws/aws-sdk-php/src/Api/DocModel.php',
|
39 |
+
'Aws\\Api\\ErrorParser\\AbstractErrorParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/AbstractErrorParser.php',
|
40 |
+
'Aws\\Api\\ErrorParser\\JsonParserTrait' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/JsonParserTrait.php',
|
41 |
+
'Aws\\Api\\ErrorParser\\JsonRpcErrorParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/JsonRpcErrorParser.php',
|
42 |
+
'Aws\\Api\\ErrorParser\\RestJsonErrorParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/RestJsonErrorParser.php',
|
43 |
+
'Aws\\Api\\ErrorParser\\XmlErrorParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/XmlErrorParser.php',
|
44 |
+
'Aws\\Api\\ListShape' => $vendorDir . '/aws/aws-sdk-php/src/Api/ListShape.php',
|
45 |
+
'Aws\\Api\\MapShape' => $vendorDir . '/aws/aws-sdk-php/src/Api/MapShape.php',
|
46 |
+
'Aws\\Api\\Operation' => $vendorDir . '/aws/aws-sdk-php/src/Api/Operation.php',
|
47 |
+
'Aws\\Api\\Parser\\AbstractParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/AbstractParser.php',
|
48 |
+
'Aws\\Api\\Parser\\AbstractRestParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/AbstractRestParser.php',
|
49 |
+
'Aws\\Api\\Parser\\Crc32ValidatingParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/Crc32ValidatingParser.php',
|
50 |
+
'Aws\\Api\\Parser\\DecodingEventStreamIterator' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/DecodingEventStreamIterator.php',
|
51 |
+
'Aws\\Api\\Parser\\EventParsingIterator' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/EventParsingIterator.php',
|
52 |
+
'Aws\\Api\\Parser\\Exception\\ParserException' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/Exception/ParserException.php',
|
53 |
+
'Aws\\Api\\Parser\\JsonParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/JsonParser.php',
|
54 |
+
'Aws\\Api\\Parser\\JsonRpcParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/JsonRpcParser.php',
|
55 |
+
'Aws\\Api\\Parser\\MetadataParserTrait' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/MetadataParserTrait.php',
|
56 |
+
'Aws\\Api\\Parser\\PayloadParserTrait' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/PayloadParserTrait.php',
|
57 |
+
'Aws\\Api\\Parser\\QueryParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/QueryParser.php',
|
58 |
+
'Aws\\Api\\Parser\\RestJsonParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/RestJsonParser.php',
|
59 |
+
'Aws\\Api\\Parser\\RestXmlParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/RestXmlParser.php',
|
60 |
+
'Aws\\Api\\Parser\\XmlParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/XmlParser.php',
|
61 |
+
'Aws\\Api\\Serializer\\Ec2ParamBuilder' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/Ec2ParamBuilder.php',
|
62 |
+
'Aws\\Api\\Serializer\\JsonBody' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/JsonBody.php',
|
63 |
+
'Aws\\Api\\Serializer\\JsonRpcSerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/JsonRpcSerializer.php',
|
64 |
+
'Aws\\Api\\Serializer\\QueryParamBuilder' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/QueryParamBuilder.php',
|
65 |
+
'Aws\\Api\\Serializer\\QuerySerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/QuerySerializer.php',
|
66 |
+
'Aws\\Api\\Serializer\\RestJsonSerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/RestJsonSerializer.php',
|
67 |
+
'Aws\\Api\\Serializer\\RestSerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/RestSerializer.php',
|
68 |
+
'Aws\\Api\\Serializer\\RestXmlSerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/RestXmlSerializer.php',
|
69 |
+
'Aws\\Api\\Serializer\\XmlBody' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/XmlBody.php',
|
70 |
+
'Aws\\Api\\Service' => $vendorDir . '/aws/aws-sdk-php/src/Api/Service.php',
|
71 |
+
'Aws\\Api\\Shape' => $vendorDir . '/aws/aws-sdk-php/src/Api/Shape.php',
|
72 |
+
'Aws\\Api\\ShapeMap' => $vendorDir . '/aws/aws-sdk-php/src/Api/ShapeMap.php',
|
73 |
+
'Aws\\Api\\StructureShape' => $vendorDir . '/aws/aws-sdk-php/src/Api/StructureShape.php',
|
74 |
+
'Aws\\Api\\TimestampShape' => $vendorDir . '/aws/aws-sdk-php/src/Api/TimestampShape.php',
|
75 |
+
'Aws\\Api\\Validator' => $vendorDir . '/aws/aws-sdk-php/src/Api/Validator.php',
|
76 |
+
'Aws\\Arn\\AccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/AccessPointArn.php',
|
77 |
+
'Aws\\Arn\\AccessPointArnInterface' => $vendorDir . '/aws/aws-sdk-php/src/Arn/AccessPointArnInterface.php',
|
78 |
+
'Aws\\Arn\\Arn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/Arn.php',
|
79 |
+
'Aws\\Arn\\ArnInterface' => $vendorDir . '/aws/aws-sdk-php/src/Arn/ArnInterface.php',
|
80 |
+
'Aws\\Arn\\ArnParser' => $vendorDir . '/aws/aws-sdk-php/src/Arn/ArnParser.php',
|
81 |
+
'Aws\\Arn\\Exception\\InvalidArnException' => $vendorDir . '/aws/aws-sdk-php/src/Arn/Exception/InvalidArnException.php',
|
82 |
+
'Aws\\Arn\\ObjectLambdaAccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/ObjectLambdaAccessPointArn.php',
|
83 |
+
'Aws\\Arn\\ResourceTypeAndIdTrait' => $vendorDir . '/aws/aws-sdk-php/src/Arn/ResourceTypeAndIdTrait.php',
|
84 |
+
'Aws\\Arn\\S3\\AccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/AccessPointArn.php',
|
85 |
+
'Aws\\Arn\\S3\\BucketArnInterface' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/BucketArnInterface.php',
|
86 |
+
'Aws\\Arn\\S3\\MultiRegionAccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/MultiRegionAccessPointArn.php',
|
87 |
+
'Aws\\Arn\\S3\\OutpostsAccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/OutpostsAccessPointArn.php',
|
88 |
+
'Aws\\Arn\\S3\\OutpostsArnInterface' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/OutpostsArnInterface.php',
|
89 |
+
'Aws\\Arn\\S3\\OutpostsBucketArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/OutpostsBucketArn.php',
|
90 |
+
'Aws\\AwsClient' => $vendorDir . '/aws/aws-sdk-php/src/AwsClient.php',
|
91 |
+
'Aws\\AwsClientInterface' => $vendorDir . '/aws/aws-sdk-php/src/AwsClientInterface.php',
|
92 |
+
'Aws\\AwsClientTrait' => $vendorDir . '/aws/aws-sdk-php/src/AwsClientTrait.php',
|
93 |
+
'Aws\\CacheInterface' => $vendorDir . '/aws/aws-sdk-php/src/CacheInterface.php',
|
94 |
+
'Aws\\ClientResolver' => $vendorDir . '/aws/aws-sdk-php/src/ClientResolver.php',
|
95 |
+
'Aws\\ClientSideMonitoring\\AbstractMonitoringMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/AbstractMonitoringMiddleware.php',
|
96 |
+
'Aws\\ClientSideMonitoring\\ApiCallAttemptMonitoringMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/ApiCallAttemptMonitoringMiddleware.php',
|
97 |
+
'Aws\\ClientSideMonitoring\\ApiCallMonitoringMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/ApiCallMonitoringMiddleware.php',
|
98 |
+
'Aws\\ClientSideMonitoring\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/Configuration.php',
|
99 |
+
'Aws\\ClientSideMonitoring\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/ConfigurationInterface.php',
|
100 |
+
'Aws\\ClientSideMonitoring\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/ConfigurationProvider.php',
|
101 |
+
'Aws\\ClientSideMonitoring\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/Exception/ConfigurationException.php',
|
102 |
+
'Aws\\ClientSideMonitoring\\MonitoringMiddlewareInterface' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/MonitoringMiddlewareInterface.php',
|
103 |
+
'Aws\\CloudFront\\CloudFrontClient' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/CloudFrontClient.php',
|
104 |
+
'Aws\\CloudFront\\CookieSigner' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/CookieSigner.php',
|
105 |
+
'Aws\\CloudFront\\Exception\\CloudFrontException' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/Exception/CloudFrontException.php',
|
106 |
+
'Aws\\CloudFront\\Signer' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/Signer.php',
|
107 |
+
'Aws\\CloudFront\\UrlSigner' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/UrlSigner.php',
|
108 |
+
'Aws\\Command' => $vendorDir . '/aws/aws-sdk-php/src/Command.php',
|
109 |
+
'Aws\\CommandInterface' => $vendorDir . '/aws/aws-sdk-php/src/CommandInterface.php',
|
110 |
+
'Aws\\CommandPool' => $vendorDir . '/aws/aws-sdk-php/src/CommandPool.php',
|
111 |
+
'Aws\\ConfigurationProviderInterface' => $vendorDir . '/aws/aws-sdk-php/src/ConfigurationProviderInterface.php',
|
112 |
+
'Aws\\Credentials\\AssumeRoleCredentialProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/AssumeRoleCredentialProvider.php',
|
113 |
+
'Aws\\Credentials\\AssumeRoleWithWebIdentityCredentialProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/AssumeRoleWithWebIdentityCredentialProvider.php',
|
114 |
+
'Aws\\Credentials\\CredentialProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/CredentialProvider.php',
|
115 |
+
'Aws\\Credentials\\Credentials' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/Credentials.php',
|
116 |
+
'Aws\\Credentials\\CredentialsInterface' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/CredentialsInterface.php',
|
117 |
+
'Aws\\Credentials\\EcsCredentialProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/EcsCredentialProvider.php',
|
118 |
+
'Aws\\Credentials\\InstanceProfileProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/InstanceProfileProvider.php',
|
119 |
+
'Aws\\Crypto\\AbstractCryptoClient' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AbstractCryptoClient.php',
|
120 |
+
'Aws\\Crypto\\AbstractCryptoClientV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AbstractCryptoClientV2.php',
|
121 |
+
'Aws\\Crypto\\AesDecryptingStream' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesDecryptingStream.php',
|
122 |
+
'Aws\\Crypto\\AesEncryptingStream' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesEncryptingStream.php',
|
123 |
+
'Aws\\Crypto\\AesGcmDecryptingStream' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesGcmDecryptingStream.php',
|
124 |
+
'Aws\\Crypto\\AesGcmEncryptingStream' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesGcmEncryptingStream.php',
|
125 |
+
'Aws\\Crypto\\AesStreamInterface' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesStreamInterface.php',
|
126 |
+
'Aws\\Crypto\\AesStreamInterfaceV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesStreamInterfaceV2.php',
|
127 |
+
'Aws\\Crypto\\Cipher\\Cbc' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Cipher/Cbc.php',
|
128 |
+
'Aws\\Crypto\\Cipher\\CipherBuilderTrait' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Cipher/CipherBuilderTrait.php',
|
129 |
+
'Aws\\Crypto\\Cipher\\CipherMethod' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Cipher/CipherMethod.php',
|
130 |
+
'Aws\\Crypto\\DecryptionTrait' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/DecryptionTrait.php',
|
131 |
+
'Aws\\Crypto\\DecryptionTraitV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/DecryptionTraitV2.php',
|
132 |
+
'Aws\\Crypto\\EncryptionTrait' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/EncryptionTrait.php',
|
133 |
+
'Aws\\Crypto\\EncryptionTraitV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/EncryptionTraitV2.php',
|
134 |
+
'Aws\\Crypto\\KmsMaterialsProvider' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/KmsMaterialsProvider.php',
|
135 |
+
'Aws\\Crypto\\KmsMaterialsProviderV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/KmsMaterialsProviderV2.php',
|
136 |
+
'Aws\\Crypto\\MaterialsProvider' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MaterialsProvider.php',
|
137 |
+
'Aws\\Crypto\\MaterialsProviderInterface' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MaterialsProviderInterface.php',
|
138 |
+
'Aws\\Crypto\\MaterialsProviderInterfaceV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MaterialsProviderInterfaceV2.php',
|
139 |
+
'Aws\\Crypto\\MaterialsProviderV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MaterialsProviderV2.php',
|
140 |
+
'Aws\\Crypto\\MetadataEnvelope' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MetadataEnvelope.php',
|
141 |
+
'Aws\\Crypto\\MetadataStrategyInterface' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MetadataStrategyInterface.php',
|
142 |
+
'Aws\\Crypto\\Polyfill\\AesGcm' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/AesGcm.php',
|
143 |
+
'Aws\\Crypto\\Polyfill\\ByteArray' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/ByteArray.php',
|
144 |
+
'Aws\\Crypto\\Polyfill\\Gmac' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/Gmac.php',
|
145 |
+
'Aws\\Crypto\\Polyfill\\Key' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/Key.php',
|
146 |
+
'Aws\\Crypto\\Polyfill\\NeedsTrait' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/NeedsTrait.php',
|
147 |
+
'Aws\\DefaultsMode\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/DefaultsMode/Configuration.php',
|
148 |
+
'Aws\\DefaultsMode\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/DefaultsMode/ConfigurationInterface.php',
|
149 |
+
'Aws\\DefaultsMode\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/DefaultsMode/ConfigurationProvider.php',
|
150 |
+
'Aws\\DefaultsMode\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/DefaultsMode/Exception/ConfigurationException.php',
|
151 |
+
'Aws\\DoctrineCacheAdapter' => $vendorDir . '/aws/aws-sdk-php/src/DoctrineCacheAdapter.php',
|
152 |
+
'Aws\\EndpointDiscovery\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/Configuration.php',
|
153 |
+
'Aws\\EndpointDiscovery\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/ConfigurationInterface.php',
|
154 |
+
'Aws\\EndpointDiscovery\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/ConfigurationProvider.php',
|
155 |
+
'Aws\\EndpointDiscovery\\EndpointDiscoveryMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/EndpointDiscoveryMiddleware.php',
|
156 |
+
'Aws\\EndpointDiscovery\\EndpointList' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/EndpointList.php',
|
157 |
+
'Aws\\EndpointDiscovery\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/Exception/ConfigurationException.php',
|
158 |
+
'Aws\\EndpointParameterMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/EndpointParameterMiddleware.php',
|
159 |
+
'Aws\\Endpoint\\EndpointProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/EndpointProvider.php',
|
160 |
+
'Aws\\Endpoint\\Partition' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/Partition.php',
|
161 |
+
'Aws\\Endpoint\\PartitionEndpointProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/PartitionEndpointProvider.php',
|
162 |
+
'Aws\\Endpoint\\PartitionInterface' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/PartitionInterface.php',
|
163 |
+
'Aws\\Endpoint\\PatternEndpointProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/PatternEndpointProvider.php',
|
164 |
+
'Aws\\Endpoint\\UseDualstackEndpoint\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseDualstackEndpoint/Configuration.php',
|
165 |
+
'Aws\\Endpoint\\UseDualstackEndpoint\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseDualstackEndpoint/ConfigurationInterface.php',
|
166 |
+
'Aws\\Endpoint\\UseDualstackEndpoint\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseDualstackEndpoint/ConfigurationProvider.php',
|
167 |
+
'Aws\\Endpoint\\UseDualstackEndpoint\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseDualstackEndpoint/Exception/ConfigurationException.php',
|
168 |
+
'Aws\\Endpoint\\UseFipsEndpoint\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseFipsEndpoint/Configuration.php',
|
169 |
+
'Aws\\Endpoint\\UseFipsEndpoint\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseFipsEndpoint/ConfigurationInterface.php',
|
170 |
+
'Aws\\Endpoint\\UseFipsEndpoint\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseFipsEndpoint/ConfigurationProvider.php',
|
171 |
+
'Aws\\Endpoint\\UseFipsEndpoint\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseFipsEndpoint/Exception/ConfigurationException.php',
|
172 |
+
'Aws\\Exception\\AwsException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/AwsException.php',
|
173 |
+
'Aws\\Exception\\CommonRuntimeException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CommonRuntimeException.php',
|
174 |
+
'Aws\\Exception\\CouldNotCreateChecksumException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CouldNotCreateChecksumException.php',
|
175 |
+
'Aws\\Exception\\CredentialsException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CredentialsException.php',
|
176 |
+
'Aws\\Exception\\CryptoException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CryptoException.php',
|
177 |
+
'Aws\\Exception\\CryptoPolyfillException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CryptoPolyfillException.php',
|
178 |
+
'Aws\\Exception\\EventStreamDataException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/EventStreamDataException.php',
|
179 |
+
'Aws\\Exception\\IncalculablePayloadException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/IncalculablePayloadException.php',
|
180 |
+
'Aws\\Exception\\InvalidJsonException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/InvalidJsonException.php',
|
181 |
+
'Aws\\Exception\\InvalidRegionException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/InvalidRegionException.php',
|
182 |
+
'Aws\\Exception\\MultipartUploadException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/MultipartUploadException.php',
|
183 |
+
'Aws\\Exception\\UnresolvedApiException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/UnresolvedApiException.php',
|
184 |
+
'Aws\\Exception\\UnresolvedEndpointException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/UnresolvedEndpointException.php',
|
185 |
+
'Aws\\Exception\\UnresolvedSignatureException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/UnresolvedSignatureException.php',
|
186 |
+
'Aws\\HandlerList' => $vendorDir . '/aws/aws-sdk-php/src/HandlerList.php',
|
187 |
+
'Aws\\Handler\\GuzzleV5\\GuzzleHandler' => $vendorDir . '/aws/aws-sdk-php/src/Handler/GuzzleV5/GuzzleHandler.php',
|
188 |
+
'Aws\\Handler\\GuzzleV5\\GuzzleStream' => $vendorDir . '/aws/aws-sdk-php/src/Handler/GuzzleV5/GuzzleStream.php',
|
189 |
+
'Aws\\Handler\\GuzzleV5\\PsrStream' => $vendorDir . '/aws/aws-sdk-php/src/Handler/GuzzleV5/PsrStream.php',
|
190 |
+
'Aws\\Handler\\GuzzleV6\\GuzzleHandler' => $vendorDir . '/aws/aws-sdk-php/src/Handler/GuzzleV6/GuzzleHandler.php',
|
191 |
+
'Aws\\HasDataTrait' => $vendorDir . '/aws/aws-sdk-php/src/HasDataTrait.php',
|
192 |
+
'Aws\\HasMonitoringEventsTrait' => $vendorDir . '/aws/aws-sdk-php/src/HasMonitoringEventsTrait.php',
|
193 |
+
'Aws\\HashInterface' => $vendorDir . '/aws/aws-sdk-php/src/HashInterface.php',
|
194 |
+
'Aws\\HashingStream' => $vendorDir . '/aws/aws-sdk-php/src/HashingStream.php',
|
195 |
+
'Aws\\History' => $vendorDir . '/aws/aws-sdk-php/src/History.php',
|
196 |
+
'Aws\\IdempotencyTokenMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/IdempotencyTokenMiddleware.php',
|
197 |
+
'Aws\\InputValidationMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/InputValidationMiddleware.php',
|
198 |
+
'Aws\\JsonCompiler' => $vendorDir . '/aws/aws-sdk-php/src/JsonCompiler.php',
|
199 |
+
'Aws\\LruArrayCache' => $vendorDir . '/aws/aws-sdk-php/src/LruArrayCache.php',
|
200 |
+
'Aws\\Middleware' => $vendorDir . '/aws/aws-sdk-php/src/Middleware.php',
|
201 |
+
'Aws\\MockHandler' => $vendorDir . '/aws/aws-sdk-php/src/MockHandler.php',
|
202 |
+
'Aws\\MonitoringEventsInterface' => $vendorDir . '/aws/aws-sdk-php/src/MonitoringEventsInterface.php',
|
203 |
+
'Aws\\MultiRegionClient' => $vendorDir . '/aws/aws-sdk-php/src/MultiRegionClient.php',
|
204 |
+
'Aws\\Multipart\\AbstractUploadManager' => $vendorDir . '/aws/aws-sdk-php/src/Multipart/AbstractUploadManager.php',
|
205 |
+
'Aws\\Multipart\\AbstractUploader' => $vendorDir . '/aws/aws-sdk-php/src/Multipart/AbstractUploader.php',
|
206 |
+
'Aws\\Multipart\\UploadState' => $vendorDir . '/aws/aws-sdk-php/src/Multipart/UploadState.php',
|
207 |
+
'Aws\\PhpHash' => $vendorDir . '/aws/aws-sdk-php/src/PhpHash.php',
|
208 |
+
'Aws\\PresignUrlMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/PresignUrlMiddleware.php',
|
209 |
+
'Aws\\Psr16CacheAdapter' => $vendorDir . '/aws/aws-sdk-php/src/Psr16CacheAdapter.php',
|
210 |
+
'Aws\\PsrCacheAdapter' => $vendorDir . '/aws/aws-sdk-php/src/PsrCacheAdapter.php',
|
211 |
+
'Aws\\ResponseContainerInterface' => $vendorDir . '/aws/aws-sdk-php/src/ResponseContainerInterface.php',
|
212 |
+
'Aws\\Result' => $vendorDir . '/aws/aws-sdk-php/src/Result.php',
|
213 |
+
'Aws\\ResultInterface' => $vendorDir . '/aws/aws-sdk-php/src/ResultInterface.php',
|
214 |
+
'Aws\\ResultPaginator' => $vendorDir . '/aws/aws-sdk-php/src/ResultPaginator.php',
|
215 |
+
'Aws\\RetryMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/RetryMiddleware.php',
|
216 |
+
'Aws\\RetryMiddlewareV2' => $vendorDir . '/aws/aws-sdk-php/src/RetryMiddlewareV2.php',
|
217 |
+
'Aws\\Retry\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/Retry/Configuration.php',
|
218 |
+
'Aws\\Retry\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/Retry/ConfigurationInterface.php',
|
219 |
+
'Aws\\Retry\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/Retry/ConfigurationProvider.php',
|
220 |
+
'Aws\\Retry\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/Retry/Exception/ConfigurationException.php',
|
221 |
+
'Aws\\Retry\\QuotaManager' => $vendorDir . '/aws/aws-sdk-php/src/Retry/QuotaManager.php',
|
222 |
+
'Aws\\Retry\\RateLimiter' => $vendorDir . '/aws/aws-sdk-php/src/Retry/RateLimiter.php',
|
223 |
+
'Aws\\Retry\\RetryHelperTrait' => $vendorDir . '/aws/aws-sdk-php/src/Retry/RetryHelperTrait.php',
|
224 |
+
'Aws\\S3\\AmbiguousSuccessParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/AmbiguousSuccessParser.php',
|
225 |
+
'Aws\\S3\\ApplyChecksumMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/ApplyChecksumMiddleware.php',
|
226 |
+
'Aws\\S3\\BatchDelete' => $vendorDir . '/aws/aws-sdk-php/src/S3/BatchDelete.php',
|
227 |
+
'Aws\\S3\\BucketEndpointArnMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/BucketEndpointArnMiddleware.php',
|
228 |
+
'Aws\\S3\\BucketEndpointMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/BucketEndpointMiddleware.php',
|
229 |
+
'Aws\\S3\\CalculatesChecksumTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/CalculatesChecksumTrait.php',
|
230 |
+
'Aws\\S3\\Crypto\\CryptoParamsTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/CryptoParamsTrait.php',
|
231 |
+
'Aws\\S3\\Crypto\\CryptoParamsTraitV2' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/CryptoParamsTraitV2.php',
|
232 |
+
'Aws\\S3\\Crypto\\HeadersMetadataStrategy' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/HeadersMetadataStrategy.php',
|
233 |
+
'Aws\\S3\\Crypto\\InstructionFileMetadataStrategy' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/InstructionFileMetadataStrategy.php',
|
234 |
+
'Aws\\S3\\Crypto\\S3EncryptionClient' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/S3EncryptionClient.php',
|
235 |
+
'Aws\\S3\\Crypto\\S3EncryptionClientV2' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/S3EncryptionClientV2.php',
|
236 |
+
'Aws\\S3\\Crypto\\S3EncryptionMultipartUploader' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/S3EncryptionMultipartUploader.php',
|
237 |
+
'Aws\\S3\\Crypto\\S3EncryptionMultipartUploaderV2' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/S3EncryptionMultipartUploaderV2.php',
|
238 |
+
'Aws\\S3\\Crypto\\UserAgentTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/UserAgentTrait.php',
|
239 |
+
'Aws\\S3\\EndpointRegionHelperTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/EndpointRegionHelperTrait.php',
|
240 |
+
'Aws\\S3\\Exception\\DeleteMultipleObjectsException' => $vendorDir . '/aws/aws-sdk-php/src/S3/Exception/DeleteMultipleObjectsException.php',
|
241 |
+
'Aws\\S3\\Exception\\PermanentRedirectException' => $vendorDir . '/aws/aws-sdk-php/src/S3/Exception/PermanentRedirectException.php',
|
242 |
+
'Aws\\S3\\Exception\\S3Exception' => $vendorDir . '/aws/aws-sdk-php/src/S3/Exception/S3Exception.php',
|
243 |
+
'Aws\\S3\\Exception\\S3MultipartUploadException' => $vendorDir . '/aws/aws-sdk-php/src/S3/Exception/S3MultipartUploadException.php',
|
244 |
+
'Aws\\S3\\GetBucketLocationParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/GetBucketLocationParser.php',
|
245 |
+
'Aws\\S3\\MultipartCopy' => $vendorDir . '/aws/aws-sdk-php/src/S3/MultipartCopy.php',
|
246 |
+
'Aws\\S3\\MultipartUploader' => $vendorDir . '/aws/aws-sdk-php/src/S3/MultipartUploader.php',
|
247 |
+
'Aws\\S3\\MultipartUploadingTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/MultipartUploadingTrait.php',
|
248 |
+
'Aws\\S3\\ObjectCopier' => $vendorDir . '/aws/aws-sdk-php/src/S3/ObjectCopier.php',
|
249 |
+
'Aws\\S3\\ObjectUploader' => $vendorDir . '/aws/aws-sdk-php/src/S3/ObjectUploader.php',
|
250 |
+
'Aws\\S3\\PermanentRedirectMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/PermanentRedirectMiddleware.php',
|
251 |
+
'Aws\\S3\\PostObject' => $vendorDir . '/aws/aws-sdk-php/src/S3/PostObject.php',
|
252 |
+
'Aws\\S3\\PostObjectV4' => $vendorDir . '/aws/aws-sdk-php/src/S3/PostObjectV4.php',
|
253 |
+
'Aws\\S3\\PutObjectUrlMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/PutObjectUrlMiddleware.php',
|
254 |
+
'Aws\\S3\\RegionalEndpoint\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/S3/RegionalEndpoint/Configuration.php',
|
255 |
+
'Aws\\S3\\RegionalEndpoint\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/S3/RegionalEndpoint/ConfigurationInterface.php',
|
256 |
+
'Aws\\S3\\RegionalEndpoint\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/S3/RegionalEndpoint/ConfigurationProvider.php',
|
257 |
+
'Aws\\S3\\RegionalEndpoint\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/S3/RegionalEndpoint/Exception/ConfigurationException.php',
|
258 |
+
'Aws\\S3\\RetryableMalformedResponseParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/RetryableMalformedResponseParser.php',
|
259 |
+
'Aws\\S3\\S3Client' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3Client.php',
|
260 |
+
'Aws\\S3\\S3ClientInterface' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3ClientInterface.php',
|
261 |
+
'Aws\\S3\\S3ClientTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3ClientTrait.php',
|
262 |
+
'Aws\\S3\\S3EndpointMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3EndpointMiddleware.php',
|
263 |
+
'Aws\\S3\\S3MultiRegionClient' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3MultiRegionClient.php',
|
264 |
+
'Aws\\S3\\S3UriParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3UriParser.php',
|
265 |
+
'Aws\\S3\\SSECMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/SSECMiddleware.php',
|
266 |
+
'Aws\\S3\\StreamWrapper' => $vendorDir . '/aws/aws-sdk-php/src/S3/StreamWrapper.php',
|
267 |
+
'Aws\\S3\\Transfer' => $vendorDir . '/aws/aws-sdk-php/src/S3/Transfer.php',
|
268 |
+
'Aws\\S3\\UseArnRegion\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/S3/UseArnRegion/Configuration.php',
|
269 |
+
'Aws\\S3\\UseArnRegion\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/S3/UseArnRegion/ConfigurationInterface.php',
|
270 |
+
'Aws\\S3\\UseArnRegion\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/S3/UseArnRegion/ConfigurationProvider.php',
|
271 |
+
'Aws\\S3\\UseArnRegion\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/S3/UseArnRegion/Exception/ConfigurationException.php',
|
272 |
+
'Aws\\S3\\ValidateResponseChecksumParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/ValidateResponseChecksumParser.php',
|
273 |
+
'Aws\\Sdk' => $vendorDir . '/aws/aws-sdk-php/src/Sdk.php',
|
274 |
+
'Aws\\Signature\\AnonymousSignature' => $vendorDir . '/aws/aws-sdk-php/src/Signature/AnonymousSignature.php',
|
275 |
+
'Aws\\Signature\\S3SignatureV4' => $vendorDir . '/aws/aws-sdk-php/src/Signature/S3SignatureV4.php',
|
276 |
+
'Aws\\Signature\\SignatureInterface' => $vendorDir . '/aws/aws-sdk-php/src/Signature/SignatureInterface.php',
|
277 |
+
'Aws\\Signature\\SignatureProvider' => $vendorDir . '/aws/aws-sdk-php/src/Signature/SignatureProvider.php',
|
278 |
+
'Aws\\Signature\\SignatureTrait' => $vendorDir . '/aws/aws-sdk-php/src/Signature/SignatureTrait.php',
|
279 |
+
'Aws\\Signature\\SignatureV4' => $vendorDir . '/aws/aws-sdk-php/src/Signature/SignatureV4.php',
|
280 |
+
'Aws\\StreamRequestPayloadMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/StreamRequestPayloadMiddleware.php',
|
281 |
+
'Aws\\TraceMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/TraceMiddleware.php',
|
282 |
+
'Aws\\Waiter' => $vendorDir . '/aws/aws-sdk-php/src/Waiter.php',
|
283 |
+
'Aws\\WrappedHttpHandler' => $vendorDir . '/aws/aws-sdk-php/src/WrappedHttpHandler.php',
|
284 |
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
|
285 |
'DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
|
286 |
'Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php',
|
577 |
'GuzzleHttp\\TransferStats' => $vendorDir . '/guzzlehttp/guzzle/src/TransferStats.php',
|
578 |
'GuzzleHttp\\UriTemplate' => $vendorDir . '/guzzlehttp/guzzle/src/UriTemplate.php',
|
579 |
'GuzzleHttp\\Utils' => $vendorDir . '/guzzlehttp/guzzle/src/Utils.php',
|
580 |
+
'JmesPath\\AstRuntime' => $vendorDir . '/mtdowling/jmespath.php/src/AstRuntime.php',
|
581 |
+
'JmesPath\\CompilerRuntime' => $vendorDir . '/mtdowling/jmespath.php/src/CompilerRuntime.php',
|
582 |
+
'JmesPath\\DebugRuntime' => $vendorDir . '/mtdowling/jmespath.php/src/DebugRuntime.php',
|
583 |
+
'JmesPath\\Env' => $vendorDir . '/mtdowling/jmespath.php/src/Env.php',
|
584 |
+
'JmesPath\\FnDispatcher' => $vendorDir . '/mtdowling/jmespath.php/src/FnDispatcher.php',
|
585 |
+
'JmesPath\\Lexer' => $vendorDir . '/mtdowling/jmespath.php/src/Lexer.php',
|
586 |
+
'JmesPath\\Parser' => $vendorDir . '/mtdowling/jmespath.php/src/Parser.php',
|
587 |
+
'JmesPath\\SyntaxErrorException' => $vendorDir . '/mtdowling/jmespath.php/src/SyntaxErrorException.php',
|
588 |
+
'JmesPath\\TreeCompiler' => $vendorDir . '/mtdowling/jmespath.php/src/TreeCompiler.php',
|
589 |
+
'JmesPath\\TreeInterpreter' => $vendorDir . '/mtdowling/jmespath.php/src/TreeInterpreter.php',
|
590 |
+
'JmesPath\\Utils' => $vendorDir . '/mtdowling/jmespath.php/src/Utils.php',
|
591 |
'Monolog\\ErrorHandler' => $vendorDir . '/monolog/monolog/src/Monolog/ErrorHandler.php',
|
592 |
'Monolog\\Formatter\\ChromePHPFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php',
|
593 |
'Monolog\\Formatter\\ElasticaFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php',
|
715 |
'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\DisallowedRanges' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php',
|
716 |
'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\Regex' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/Regex.php',
|
717 |
'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Normalizer.php',
|
718 |
+
'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php',
|
719 |
'Symfony\\Polyfill\\Php70\\Php70' => $vendorDir . '/symfony/polyfill-php70/Php70.php',
|
720 |
'Symfony\\Polyfill\\Php72\\Php72' => $vendorDir . '/symfony/polyfill-php72/Php72.php',
|
721 |
'TypeError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
|
952 |
'WPStaging\\Framework\\Utils\\Cache\\BufferedCache' => $baseDir . '/Framework/Utils/Cache/BufferedCache.php',
|
953 |
'WPStaging\\Framework\\Utils\\Cache\\Cache' => $baseDir . '/Framework/Utils/Cache/Cache.php',
|
954 |
'WPStaging\\Framework\\Utils\\Math' => $baseDir . '/Framework/Utils/Math.php',
|
|
|
955 |
'WPStaging\\Framework\\Utils\\SlashMode' => $baseDir . '/Framework/Utils/SlashMode.php',
|
956 |
'WPStaging\\Framework\\Utils\\Strings' => $baseDir . '/Framework/Utils/Strings.php',
|
957 |
'WPStaging\\Framework\\Utils\\ThirdParty\\Glob' => $baseDir . '/Framework/Utils/ThirdParty/Glob.php',
|
vendor_wpstg/autoload/vendor.php
CHANGED
@@ -7,8 +7,281 @@ $baseDir = dirname($vendorDir);
|
|
7 |
|
8 |
return array(
|
9 |
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
'WPStaging\\Vendor\\ArithmeticError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
|
11 |
'WPStaging\\Vendor\\AssertionError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
'WPStaging\\Vendor\\DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
|
13 |
'WPStaging\\Vendor\\Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php',
|
14 |
'WPStaging\\Vendor\\Firebase\\JWT\\BeforeValidException' => $vendorDir . '/firebase/php-jwt/src/BeforeValidException.php',
|
@@ -283,6 +556,17 @@ return array(
|
|
283 |
'WPStaging\\Vendor\\GuzzleHttp\\TransferStats' => $vendorDir . '/guzzlehttp/guzzle/src/TransferStats.php',
|
284 |
'WPStaging\\Vendor\\GuzzleHttp\\UriTemplate' => $vendorDir . '/guzzlehttp/guzzle/src/UriTemplate.php',
|
285 |
'WPStaging\\Vendor\\GuzzleHttp\\Utils' => $vendorDir . '/guzzlehttp/guzzle/src/Utils.php',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
286 |
'WPStaging\\Vendor\\Monolog\\ErrorHandler' => $vendorDir . '/monolog/monolog/src/Monolog/ErrorHandler.php',
|
287 |
'WPStaging\\Vendor\\Monolog\\Formatter\\ChromePHPFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php',
|
288 |
'WPStaging\\Vendor\\Monolog\\Formatter\\ElasticaFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php',
|
@@ -410,6 +694,7 @@ return array(
|
|
410 |
'WPStaging\\Vendor\\Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\DisallowedRanges' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php',
|
411 |
'WPStaging\\Vendor\\Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\Regex' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/Regex.php',
|
412 |
'WPStaging\\Vendor\\Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Normalizer.php',
|
|
|
413 |
'WPStaging\\Vendor\\Symfony\\Polyfill\\Php70\\Php70' => $vendorDir . '/symfony/polyfill-php70/Php70.php',
|
414 |
'WPStaging\\Vendor\\Symfony\\Polyfill\\Php72\\Php72' => $vendorDir . '/symfony/polyfill-php72/Php72.php',
|
415 |
'WPStaging\\Vendor\\TypeError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
|
7 |
|
8 |
return array(
|
9 |
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
|
10 |
+
'WPStaging\\Vendor\\AWS\\CRT\\Auth\\AwsCredentials' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/AwsCredentials.php',
|
11 |
+
'WPStaging\\Vendor\\AWS\\CRT\\Auth\\CredentialsProvider' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/CredentialsProvider.php',
|
12 |
+
'WPStaging\\Vendor\\AWS\\CRT\\Auth\\Signable' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/Signable.php',
|
13 |
+
'WPStaging\\Vendor\\AWS\\CRT\\Auth\\SignatureType' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SignatureType.php',
|
14 |
+
'WPStaging\\Vendor\\AWS\\CRT\\Auth\\SignedBodyHeaderType' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SignedBodyHeaderType.php',
|
15 |
+
'WPStaging\\Vendor\\AWS\\CRT\\Auth\\Signing' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/Signing.php',
|
16 |
+
'WPStaging\\Vendor\\AWS\\CRT\\Auth\\SigningAlgorithm' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SigningAlgorithm.php',
|
17 |
+
'WPStaging\\Vendor\\AWS\\CRT\\Auth\\SigningConfigAWS' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SigningConfigAWS.php',
|
18 |
+
'WPStaging\\Vendor\\AWS\\CRT\\Auth\\SigningResult' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SigningResult.php',
|
19 |
+
'WPStaging\\Vendor\\AWS\\CRT\\Auth\\StaticCredentialsProvider' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/StaticCredentialsProvider.php',
|
20 |
+
'WPStaging\\Vendor\\AWS\\CRT\\CRT' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/CRT.php',
|
21 |
+
'WPStaging\\Vendor\\AWS\\CRT\\HTTP\\Headers' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/HTTP/Headers.php',
|
22 |
+
'WPStaging\\Vendor\\AWS\\CRT\\HTTP\\Message' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/HTTP/Message.php',
|
23 |
+
'WPStaging\\Vendor\\AWS\\CRT\\HTTP\\Request' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/HTTP/Request.php',
|
24 |
+
'WPStaging\\Vendor\\AWS\\CRT\\HTTP\\Response' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/HTTP/Response.php',
|
25 |
+
'WPStaging\\Vendor\\AWS\\CRT\\IO\\EventLoopGroup' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/IO/EventLoopGroup.php',
|
26 |
+
'WPStaging\\Vendor\\AWS\\CRT\\IO\\InputStream' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/IO/InputStream.php',
|
27 |
+
'WPStaging\\Vendor\\AWS\\CRT\\Internal\\Encoding' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Internal/Encoding.php',
|
28 |
+
'WPStaging\\Vendor\\AWS\\CRT\\Internal\\Extension' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Internal/Extension.php',
|
29 |
+
'WPStaging\\Vendor\\AWS\\CRT\\Log' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Log.php',
|
30 |
+
'WPStaging\\Vendor\\AWS\\CRT\\NativeResource' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/NativeResource.php',
|
31 |
+
'WPStaging\\Vendor\\AWS\\CRT\\OptionValue' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Options.php',
|
32 |
+
'WPStaging\\Vendor\\AWS\\CRT\\Options' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Options.php',
|
33 |
'WPStaging\\Vendor\\ArithmeticError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
|
34 |
'WPStaging\\Vendor\\AssertionError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
|
35 |
+
'WPStaging\\Vendor\\Aws\\AbstractConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/AbstractConfigurationProvider.php',
|
36 |
+
'WPStaging\\Vendor\\Aws\\Api\\AbstractModel' => $vendorDir . '/aws/aws-sdk-php/src/Api/AbstractModel.php',
|
37 |
+
'WPStaging\\Vendor\\Aws\\Api\\ApiProvider' => $vendorDir . '/aws/aws-sdk-php/src/Api/ApiProvider.php',
|
38 |
+
'WPStaging\\Vendor\\Aws\\Api\\DateTimeResult' => $vendorDir . '/aws/aws-sdk-php/src/Api/DateTimeResult.php',
|
39 |
+
'WPStaging\\Vendor\\Aws\\Api\\DocModel' => $vendorDir . '/aws/aws-sdk-php/src/Api/DocModel.php',
|
40 |
+
'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\AbstractErrorParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/AbstractErrorParser.php',
|
41 |
+
'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\JsonParserTrait' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/JsonParserTrait.php',
|
42 |
+
'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\JsonRpcErrorParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/JsonRpcErrorParser.php',
|
43 |
+
'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\RestJsonErrorParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/RestJsonErrorParser.php',
|
44 |
+
'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\XmlErrorParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/XmlErrorParser.php',
|
45 |
+
'WPStaging\\Vendor\\Aws\\Api\\ListShape' => $vendorDir . '/aws/aws-sdk-php/src/Api/ListShape.php',
|
46 |
+
'WPStaging\\Vendor\\Aws\\Api\\MapShape' => $vendorDir . '/aws/aws-sdk-php/src/Api/MapShape.php',
|
47 |
+
'WPStaging\\Vendor\\Aws\\Api\\Operation' => $vendorDir . '/aws/aws-sdk-php/src/Api/Operation.php',
|
48 |
+
'WPStaging\\Vendor\\Aws\\Api\\Parser\\AbstractParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/AbstractParser.php',
|
49 |
+
'WPStaging\\Vendor\\Aws\\Api\\Parser\\AbstractRestParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/AbstractRestParser.php',
|
50 |
+
'WPStaging\\Vendor\\Aws\\Api\\Parser\\Crc32ValidatingParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/Crc32ValidatingParser.php',
|
51 |
+
'WPStaging\\Vendor\\Aws\\Api\\Parser\\DecodingEventStreamIterator' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/DecodingEventStreamIterator.php',
|
52 |
+
'WPStaging\\Vendor\\Aws\\Api\\Parser\\EventParsingIterator' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/EventParsingIterator.php',
|
53 |
+
'WPStaging\\Vendor\\Aws\\Api\\Parser\\Exception\\ParserException' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/Exception/ParserException.php',
|
54 |
+
'WPStaging\\Vendor\\Aws\\Api\\Parser\\JsonParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/JsonParser.php',
|
55 |
+
'WPStaging\\Vendor\\Aws\\Api\\Parser\\JsonRpcParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/JsonRpcParser.php',
|
56 |
+
'WPStaging\\Vendor\\Aws\\Api\\Parser\\MetadataParserTrait' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/MetadataParserTrait.php',
|
57 |
+
'WPStaging\\Vendor\\Aws\\Api\\Parser\\PayloadParserTrait' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/PayloadParserTrait.php',
|
58 |
+
'WPStaging\\Vendor\\Aws\\Api\\Parser\\QueryParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/QueryParser.php',
|
59 |
+
'WPStaging\\Vendor\\Aws\\Api\\Parser\\RestJsonParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/RestJsonParser.php',
|
60 |
+
'WPStaging\\Vendor\\Aws\\Api\\Parser\\RestXmlParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/RestXmlParser.php',
|
61 |
+
'WPStaging\\Vendor\\Aws\\Api\\Parser\\XmlParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/XmlParser.php',
|
62 |
+
'WPStaging\\Vendor\\Aws\\Api\\Serializer\\Ec2ParamBuilder' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/Ec2ParamBuilder.php',
|
63 |
+
'WPStaging\\Vendor\\Aws\\Api\\Serializer\\JsonBody' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/JsonBody.php',
|
64 |
+
'WPStaging\\Vendor\\Aws\\Api\\Serializer\\JsonRpcSerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/JsonRpcSerializer.php',
|
65 |
+
'WPStaging\\Vendor\\Aws\\Api\\Serializer\\QueryParamBuilder' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/QueryParamBuilder.php',
|
66 |
+
'WPStaging\\Vendor\\Aws\\Api\\Serializer\\QuerySerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/QuerySerializer.php',
|
67 |
+
'WPStaging\\Vendor\\Aws\\Api\\Serializer\\RestJsonSerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/RestJsonSerializer.php',
|
68 |
+
'WPStaging\\Vendor\\Aws\\Api\\Serializer\\RestSerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/RestSerializer.php',
|
69 |
+
'WPStaging\\Vendor\\Aws\\Api\\Serializer\\RestXmlSerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/RestXmlSerializer.php',
|
70 |
+
'WPStaging\\Vendor\\Aws\\Api\\Serializer\\XmlBody' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/XmlBody.php',
|
71 |
+
'WPStaging\\Vendor\\Aws\\Api\\Service' => $vendorDir . '/aws/aws-sdk-php/src/Api/Service.php',
|
72 |
+
'WPStaging\\Vendor\\Aws\\Api\\Shape' => $vendorDir . '/aws/aws-sdk-php/src/Api/Shape.php',
|
73 |
+
'WPStaging\\Vendor\\Aws\\Api\\ShapeMap' => $vendorDir . '/aws/aws-sdk-php/src/Api/ShapeMap.php',
|
74 |
+
'WPStaging\\Vendor\\Aws\\Api\\StructureShape' => $vendorDir . '/aws/aws-sdk-php/src/Api/StructureShape.php',
|
75 |
+
'WPStaging\\Vendor\\Aws\\Api\\TimestampShape' => $vendorDir . '/aws/aws-sdk-php/src/Api/TimestampShape.php',
|
76 |
+
'WPStaging\\Vendor\\Aws\\Api\\Validator' => $vendorDir . '/aws/aws-sdk-php/src/Api/Validator.php',
|
77 |
+
'WPStaging\\Vendor\\Aws\\Arn\\AccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/AccessPointArn.php',
|
78 |
+
'WPStaging\\Vendor\\Aws\\Arn\\AccessPointArnInterface' => $vendorDir . '/aws/aws-sdk-php/src/Arn/AccessPointArnInterface.php',
|
79 |
+
'WPStaging\\Vendor\\Aws\\Arn\\Arn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/Arn.php',
|
80 |
+
'WPStaging\\Vendor\\Aws\\Arn\\ArnInterface' => $vendorDir . '/aws/aws-sdk-php/src/Arn/ArnInterface.php',
|
81 |
+
'WPStaging\\Vendor\\Aws\\Arn\\ArnParser' => $vendorDir . '/aws/aws-sdk-php/src/Arn/ArnParser.php',
|
82 |
+
'WPStaging\\Vendor\\Aws\\Arn\\Exception\\InvalidArnException' => $vendorDir . '/aws/aws-sdk-php/src/Arn/Exception/InvalidArnException.php',
|
83 |
+
'WPStaging\\Vendor\\Aws\\Arn\\ObjectLambdaAccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/ObjectLambdaAccessPointArn.php',
|
84 |
+
'WPStaging\\Vendor\\Aws\\Arn\\ResourceTypeAndIdTrait' => $vendorDir . '/aws/aws-sdk-php/src/Arn/ResourceTypeAndIdTrait.php',
|
85 |
+
'WPStaging\\Vendor\\Aws\\Arn\\S3\\AccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/AccessPointArn.php',
|
86 |
+
'WPStaging\\Vendor\\Aws\\Arn\\S3\\BucketArnInterface' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/BucketArnInterface.php',
|
87 |
+
'WPStaging\\Vendor\\Aws\\Arn\\S3\\MultiRegionAccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/MultiRegionAccessPointArn.php',
|
88 |
+
'WPStaging\\Vendor\\Aws\\Arn\\S3\\OutpostsAccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/OutpostsAccessPointArn.php',
|
89 |
+
'WPStaging\\Vendor\\Aws\\Arn\\S3\\OutpostsArnInterface' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/OutpostsArnInterface.php',
|
90 |
+
'WPStaging\\Vendor\\Aws\\Arn\\S3\\OutpostsBucketArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/OutpostsBucketArn.php',
|
91 |
+
'WPStaging\\Vendor\\Aws\\AwsClient' => $vendorDir . '/aws/aws-sdk-php/src/AwsClient.php',
|
92 |
+
'WPStaging\\Vendor\\Aws\\AwsClientInterface' => $vendorDir . '/aws/aws-sdk-php/src/AwsClientInterface.php',
|
93 |
+
'WPStaging\\Vendor\\Aws\\AwsClientTrait' => $vendorDir . '/aws/aws-sdk-php/src/AwsClientTrait.php',
|
94 |
+
'WPStaging\\Vendor\\Aws\\CacheInterface' => $vendorDir . '/aws/aws-sdk-php/src/CacheInterface.php',
|
95 |
+
'WPStaging\\Vendor\\Aws\\ClientResolver' => $vendorDir . '/aws/aws-sdk-php/src/ClientResolver.php',
|
96 |
+
'WPStaging\\Vendor\\Aws\\ClientSideMonitoring\\AbstractMonitoringMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/AbstractMonitoringMiddleware.php',
|
97 |
+
'WPStaging\\Vendor\\Aws\\ClientSideMonitoring\\ApiCallAttemptMonitoringMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/ApiCallAttemptMonitoringMiddleware.php',
|
98 |
+
'WPStaging\\Vendor\\Aws\\ClientSideMonitoring\\ApiCallMonitoringMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/ApiCallMonitoringMiddleware.php',
|
99 |
+
'WPStaging\\Vendor\\Aws\\ClientSideMonitoring\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/Configuration.php',
|
100 |
+
'WPStaging\\Vendor\\Aws\\ClientSideMonitoring\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/ConfigurationInterface.php',
|
101 |
+
'WPStaging\\Vendor\\Aws\\ClientSideMonitoring\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/ConfigurationProvider.php',
|
102 |
+
'WPStaging\\Vendor\\Aws\\ClientSideMonitoring\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/Exception/ConfigurationException.php',
|
103 |
+
'WPStaging\\Vendor\\Aws\\ClientSideMonitoring\\MonitoringMiddlewareInterface' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/MonitoringMiddlewareInterface.php',
|
104 |
+
'WPStaging\\Vendor\\Aws\\CloudFront\\CloudFrontClient' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/CloudFrontClient.php',
|
105 |
+
'WPStaging\\Vendor\\Aws\\CloudFront\\CookieSigner' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/CookieSigner.php',
|
106 |
+
'WPStaging\\Vendor\\Aws\\CloudFront\\Exception\\CloudFrontException' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/Exception/CloudFrontException.php',
|
107 |
+
'WPStaging\\Vendor\\Aws\\CloudFront\\Signer' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/Signer.php',
|
108 |
+
'WPStaging\\Vendor\\Aws\\CloudFront\\UrlSigner' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/UrlSigner.php',
|
109 |
+
'WPStaging\\Vendor\\Aws\\Command' => $vendorDir . '/aws/aws-sdk-php/src/Command.php',
|
110 |
+
'WPStaging\\Vendor\\Aws\\CommandInterface' => $vendorDir . '/aws/aws-sdk-php/src/CommandInterface.php',
|
111 |
+
'WPStaging\\Vendor\\Aws\\CommandPool' => $vendorDir . '/aws/aws-sdk-php/src/CommandPool.php',
|
112 |
+
'WPStaging\\Vendor\\Aws\\ConfigurationProviderInterface' => $vendorDir . '/aws/aws-sdk-php/src/ConfigurationProviderInterface.php',
|
113 |
+
'WPStaging\\Vendor\\Aws\\Credentials\\AssumeRoleCredentialProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/AssumeRoleCredentialProvider.php',
|
114 |
+
'WPStaging\\Vendor\\Aws\\Credentials\\AssumeRoleWithWebIdentityCredentialProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/AssumeRoleWithWebIdentityCredentialProvider.php',
|
115 |
+
'WPStaging\\Vendor\\Aws\\Credentials\\CredentialProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/CredentialProvider.php',
|
116 |
+
'WPStaging\\Vendor\\Aws\\Credentials\\Credentials' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/Credentials.php',
|
117 |
+
'WPStaging\\Vendor\\Aws\\Credentials\\CredentialsInterface' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/CredentialsInterface.php',
|
118 |
+
'WPStaging\\Vendor\\Aws\\Credentials\\EcsCredentialProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/EcsCredentialProvider.php',
|
119 |
+
'WPStaging\\Vendor\\Aws\\Credentials\\InstanceProfileProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/InstanceProfileProvider.php',
|
120 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\AbstractCryptoClient' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AbstractCryptoClient.php',
|
121 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\AbstractCryptoClientV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AbstractCryptoClientV2.php',
|
122 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\AesDecryptingStream' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesDecryptingStream.php',
|
123 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\AesEncryptingStream' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesEncryptingStream.php',
|
124 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\AesGcmDecryptingStream' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesGcmDecryptingStream.php',
|
125 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\AesGcmEncryptingStream' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesGcmEncryptingStream.php',
|
126 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\AesStreamInterface' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesStreamInterface.php',
|
127 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\AesStreamInterfaceV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesStreamInterfaceV2.php',
|
128 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\Cipher\\Cbc' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Cipher/Cbc.php',
|
129 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\Cipher\\CipherBuilderTrait' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Cipher/CipherBuilderTrait.php',
|
130 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\Cipher\\CipherMethod' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Cipher/CipherMethod.php',
|
131 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\DecryptionTrait' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/DecryptionTrait.php',
|
132 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\DecryptionTraitV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/DecryptionTraitV2.php',
|
133 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\EncryptionTrait' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/EncryptionTrait.php',
|
134 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\EncryptionTraitV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/EncryptionTraitV2.php',
|
135 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\KmsMaterialsProvider' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/KmsMaterialsProvider.php',
|
136 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\KmsMaterialsProviderV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/KmsMaterialsProviderV2.php',
|
137 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\MaterialsProvider' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MaterialsProvider.php',
|
138 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\MaterialsProviderInterface' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MaterialsProviderInterface.php',
|
139 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\MaterialsProviderInterfaceV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MaterialsProviderInterfaceV2.php',
|
140 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\MaterialsProviderV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MaterialsProviderV2.php',
|
141 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\MetadataEnvelope' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MetadataEnvelope.php',
|
142 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\MetadataStrategyInterface' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MetadataStrategyInterface.php',
|
143 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\Polyfill\\AesGcm' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/AesGcm.php',
|
144 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\Polyfill\\ByteArray' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/ByteArray.php',
|
145 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\Polyfill\\Gmac' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/Gmac.php',
|
146 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\Polyfill\\Key' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/Key.php',
|
147 |
+
'WPStaging\\Vendor\\Aws\\Crypto\\Polyfill\\NeedsTrait' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/NeedsTrait.php',
|
148 |
+
'WPStaging\\Vendor\\Aws\\DefaultsMode\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/DefaultsMode/Configuration.php',
|
149 |
+
'WPStaging\\Vendor\\Aws\\DefaultsMode\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/DefaultsMode/ConfigurationInterface.php',
|
150 |
+
'WPStaging\\Vendor\\Aws\\DefaultsMode\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/DefaultsMode/ConfigurationProvider.php',
|
151 |
+
'WPStaging\\Vendor\\Aws\\DefaultsMode\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/DefaultsMode/Exception/ConfigurationException.php',
|
152 |
+
'WPStaging\\Vendor\\Aws\\DoctrineCacheAdapter' => $vendorDir . '/aws/aws-sdk-php/src/DoctrineCacheAdapter.php',
|
153 |
+
'WPStaging\\Vendor\\Aws\\EndpointDiscovery\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/Configuration.php',
|
154 |
+
'WPStaging\\Vendor\\Aws\\EndpointDiscovery\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/ConfigurationInterface.php',
|
155 |
+
'WPStaging\\Vendor\\Aws\\EndpointDiscovery\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/ConfigurationProvider.php',
|
156 |
+
'WPStaging\\Vendor\\Aws\\EndpointDiscovery\\EndpointDiscoveryMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/EndpointDiscoveryMiddleware.php',
|
157 |
+
'WPStaging\\Vendor\\Aws\\EndpointDiscovery\\EndpointList' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/EndpointList.php',
|
158 |
+
'WPStaging\\Vendor\\Aws\\EndpointDiscovery\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/Exception/ConfigurationException.php',
|
159 |
+
'WPStaging\\Vendor\\Aws\\EndpointParameterMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/EndpointParameterMiddleware.php',
|
160 |
+
'WPStaging\\Vendor\\Aws\\Endpoint\\EndpointProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/EndpointProvider.php',
|
161 |
+
'WPStaging\\Vendor\\Aws\\Endpoint\\Partition' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/Partition.php',
|
162 |
+
'WPStaging\\Vendor\\Aws\\Endpoint\\PartitionEndpointProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/PartitionEndpointProvider.php',
|
163 |
+
'WPStaging\\Vendor\\Aws\\Endpoint\\PartitionInterface' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/PartitionInterface.php',
|
164 |
+
'WPStaging\\Vendor\\Aws\\Endpoint\\PatternEndpointProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/PatternEndpointProvider.php',
|
165 |
+
'WPStaging\\Vendor\\Aws\\Endpoint\\UseDualstackEndpoint\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseDualstackEndpoint/Configuration.php',
|
166 |
+
'WPStaging\\Vendor\\Aws\\Endpoint\\UseDualstackEndpoint\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseDualstackEndpoint/ConfigurationInterface.php',
|
167 |
+
'WPStaging\\Vendor\\Aws\\Endpoint\\UseDualstackEndpoint\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseDualstackEndpoint/ConfigurationProvider.php',
|
168 |
+
'WPStaging\\Vendor\\Aws\\Endpoint\\UseDualstackEndpoint\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseDualstackEndpoint/Exception/ConfigurationException.php',
|
169 |
+
'WPStaging\\Vendor\\Aws\\Endpoint\\UseFipsEndpoint\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseFipsEndpoint/Configuration.php',
|
170 |
+
'WPStaging\\Vendor\\Aws\\Endpoint\\UseFipsEndpoint\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseFipsEndpoint/ConfigurationInterface.php',
|
171 |
+
'WPStaging\\Vendor\\Aws\\Endpoint\\UseFipsEndpoint\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseFipsEndpoint/ConfigurationProvider.php',
|
172 |
+
'WPStaging\\Vendor\\Aws\\Endpoint\\UseFipsEndpoint\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseFipsEndpoint/Exception/ConfigurationException.php',
|
173 |
+
'WPStaging\\Vendor\\Aws\\Exception\\AwsException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/AwsException.php',
|
174 |
+
'WPStaging\\Vendor\\Aws\\Exception\\CommonRuntimeException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CommonRuntimeException.php',
|
175 |
+
'WPStaging\\Vendor\\Aws\\Exception\\CouldNotCreateChecksumException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CouldNotCreateChecksumException.php',
|
176 |
+
'WPStaging\\Vendor\\Aws\\Exception\\CredentialsException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CredentialsException.php',
|
177 |
+
'WPStaging\\Vendor\\Aws\\Exception\\CryptoException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CryptoException.php',
|
178 |
+
'WPStaging\\Vendor\\Aws\\Exception\\CryptoPolyfillException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CryptoPolyfillException.php',
|
179 |
+
'WPStaging\\Vendor\\Aws\\Exception\\EventStreamDataException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/EventStreamDataException.php',
|
180 |
+
'WPStaging\\Vendor\\Aws\\Exception\\IncalculablePayloadException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/IncalculablePayloadException.php',
|
181 |
+
'WPStaging\\Vendor\\Aws\\Exception\\InvalidJsonException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/InvalidJsonException.php',
|
182 |
+
'WPStaging\\Vendor\\Aws\\Exception\\InvalidRegionException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/InvalidRegionException.php',
|
183 |
+
'WPStaging\\Vendor\\Aws\\Exception\\MultipartUploadException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/MultipartUploadException.php',
|
184 |
+
'WPStaging\\Vendor\\Aws\\Exception\\UnresolvedApiException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/UnresolvedApiException.php',
|
185 |
+
'WPStaging\\Vendor\\Aws\\Exception\\UnresolvedEndpointException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/UnresolvedEndpointException.php',
|
186 |
+
'WPStaging\\Vendor\\Aws\\Exception\\UnresolvedSignatureException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/UnresolvedSignatureException.php',
|
187 |
+
'WPStaging\\Vendor\\Aws\\HandlerList' => $vendorDir . '/aws/aws-sdk-php/src/HandlerList.php',
|
188 |
+
'WPStaging\\Vendor\\Aws\\Handler\\GuzzleV5\\GuzzleHandler' => $vendorDir . '/aws/aws-sdk-php/src/Handler/GuzzleV5/GuzzleHandler.php',
|
189 |
+
'WPStaging\\Vendor\\Aws\\Handler\\GuzzleV5\\GuzzleStream' => $vendorDir . '/aws/aws-sdk-php/src/Handler/GuzzleV5/GuzzleStream.php',
|
190 |
+
'WPStaging\\Vendor\\Aws\\Handler\\GuzzleV5\\PsrStream' => $vendorDir . '/aws/aws-sdk-php/src/Handler/GuzzleV5/PsrStream.php',
|
191 |
+
'WPStaging\\Vendor\\Aws\\Handler\\GuzzleV6\\GuzzleHandler' => $vendorDir . '/aws/aws-sdk-php/src/Handler/GuzzleV6/GuzzleHandler.php',
|
192 |
+
'WPStaging\\Vendor\\Aws\\HasDataTrait' => $vendorDir . '/aws/aws-sdk-php/src/HasDataTrait.php',
|
193 |
+
'WPStaging\\Vendor\\Aws\\HasMonitoringEventsTrait' => $vendorDir . '/aws/aws-sdk-php/src/HasMonitoringEventsTrait.php',
|
194 |
+
'WPStaging\\Vendor\\Aws\\HashInterface' => $vendorDir . '/aws/aws-sdk-php/src/HashInterface.php',
|
195 |
+
'WPStaging\\Vendor\\Aws\\HashingStream' => $vendorDir . '/aws/aws-sdk-php/src/HashingStream.php',
|
196 |
+
'WPStaging\\Vendor\\Aws\\History' => $vendorDir . '/aws/aws-sdk-php/src/History.php',
|
197 |
+
'WPStaging\\Vendor\\Aws\\IdempotencyTokenMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/IdempotencyTokenMiddleware.php',
|
198 |
+
'WPStaging\\Vendor\\Aws\\InputValidationMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/InputValidationMiddleware.php',
|
199 |
+
'WPStaging\\Vendor\\Aws\\JsonCompiler' => $vendorDir . '/aws/aws-sdk-php/src/JsonCompiler.php',
|
200 |
+
'WPStaging\\Vendor\\Aws\\LruArrayCache' => $vendorDir . '/aws/aws-sdk-php/src/LruArrayCache.php',
|
201 |
+
'WPStaging\\Vendor\\Aws\\Middleware' => $vendorDir . '/aws/aws-sdk-php/src/Middleware.php',
|
202 |
+
'WPStaging\\Vendor\\Aws\\MockHandler' => $vendorDir . '/aws/aws-sdk-php/src/MockHandler.php',
|
203 |
+
'WPStaging\\Vendor\\Aws\\MonitoringEventsInterface' => $vendorDir . '/aws/aws-sdk-php/src/MonitoringEventsInterface.php',
|
204 |
+
'WPStaging\\Vendor\\Aws\\MultiRegionClient' => $vendorDir . '/aws/aws-sdk-php/src/MultiRegionClient.php',
|
205 |
+
'WPStaging\\Vendor\\Aws\\Multipart\\AbstractUploadManager' => $vendorDir . '/aws/aws-sdk-php/src/Multipart/AbstractUploadManager.php',
|
206 |
+
'WPStaging\\Vendor\\Aws\\Multipart\\AbstractUploader' => $vendorDir . '/aws/aws-sdk-php/src/Multipart/AbstractUploader.php',
|
207 |
+
'WPStaging\\Vendor\\Aws\\Multipart\\UploadState' => $vendorDir . '/aws/aws-sdk-php/src/Multipart/UploadState.php',
|
208 |
+
'WPStaging\\Vendor\\Aws\\PhpHash' => $vendorDir . '/aws/aws-sdk-php/src/PhpHash.php',
|
209 |
+
'WPStaging\\Vendor\\Aws\\PresignUrlMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/PresignUrlMiddleware.php',
|
210 |
+
'WPStaging\\Vendor\\Aws\\Psr16CacheAdapter' => $vendorDir . '/aws/aws-sdk-php/src/Psr16CacheAdapter.php',
|
211 |
+
'WPStaging\\Vendor\\Aws\\PsrCacheAdapter' => $vendorDir . '/aws/aws-sdk-php/src/PsrCacheAdapter.php',
|
212 |
+
'WPStaging\\Vendor\\Aws\\ResponseContainerInterface' => $vendorDir . '/aws/aws-sdk-php/src/ResponseContainerInterface.php',
|
213 |
+
'WPStaging\\Vendor\\Aws\\Result' => $vendorDir . '/aws/aws-sdk-php/src/Result.php',
|
214 |
+
'WPStaging\\Vendor\\Aws\\ResultInterface' => $vendorDir . '/aws/aws-sdk-php/src/ResultInterface.php',
|
215 |
+
'WPStaging\\Vendor\\Aws\\ResultPaginator' => $vendorDir . '/aws/aws-sdk-php/src/ResultPaginator.php',
|
216 |
+
'WPStaging\\Vendor\\Aws\\RetryMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/RetryMiddleware.php',
|
217 |
+
'WPStaging\\Vendor\\Aws\\RetryMiddlewareV2' => $vendorDir . '/aws/aws-sdk-php/src/RetryMiddlewareV2.php',
|
218 |
+
'WPStaging\\Vendor\\Aws\\Retry\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/Retry/Configuration.php',
|
219 |
+
'WPStaging\\Vendor\\Aws\\Retry\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/Retry/ConfigurationInterface.php',
|
220 |
+
'WPStaging\\Vendor\\Aws\\Retry\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/Retry/ConfigurationProvider.php',
|
221 |
+
'WPStaging\\Vendor\\Aws\\Retry\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/Retry/Exception/ConfigurationException.php',
|
222 |
+
'WPStaging\\Vendor\\Aws\\Retry\\QuotaManager' => $vendorDir . '/aws/aws-sdk-php/src/Retry/QuotaManager.php',
|
223 |
+
'WPStaging\\Vendor\\Aws\\Retry\\RateLimiter' => $vendorDir . '/aws/aws-sdk-php/src/Retry/RateLimiter.php',
|
224 |
+
'WPStaging\\Vendor\\Aws\\Retry\\RetryHelperTrait' => $vendorDir . '/aws/aws-sdk-php/src/Retry/RetryHelperTrait.php',
|
225 |
+
'WPStaging\\Vendor\\Aws\\S3\\AmbiguousSuccessParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/AmbiguousSuccessParser.php',
|
226 |
+
'WPStaging\\Vendor\\Aws\\S3\\ApplyChecksumMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/ApplyChecksumMiddleware.php',
|
227 |
+
'WPStaging\\Vendor\\Aws\\S3\\BatchDelete' => $vendorDir . '/aws/aws-sdk-php/src/S3/BatchDelete.php',
|
228 |
+
'WPStaging\\Vendor\\Aws\\S3\\BucketEndpointArnMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/BucketEndpointArnMiddleware.php',
|
229 |
+
'WPStaging\\Vendor\\Aws\\S3\\BucketEndpointMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/BucketEndpointMiddleware.php',
|
230 |
+
'WPStaging\\Vendor\\Aws\\S3\\CalculatesChecksumTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/CalculatesChecksumTrait.php',
|
231 |
+
'WPStaging\\Vendor\\Aws\\S3\\Crypto\\CryptoParamsTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/CryptoParamsTrait.php',
|
232 |
+
'WPStaging\\Vendor\\Aws\\S3\\Crypto\\CryptoParamsTraitV2' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/CryptoParamsTraitV2.php',
|
233 |
+
'WPStaging\\Vendor\\Aws\\S3\\Crypto\\HeadersMetadataStrategy' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/HeadersMetadataStrategy.php',
|
234 |
+
'WPStaging\\Vendor\\Aws\\S3\\Crypto\\InstructionFileMetadataStrategy' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/InstructionFileMetadataStrategy.php',
|
235 |
+
'WPStaging\\Vendor\\Aws\\S3\\Crypto\\S3EncryptionClient' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/S3EncryptionClient.php',
|
236 |
+
'WPStaging\\Vendor\\Aws\\S3\\Crypto\\S3EncryptionClientV2' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/S3EncryptionClientV2.php',
|
237 |
+
'WPStaging\\Vendor\\Aws\\S3\\Crypto\\S3EncryptionMultipartUploader' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/S3EncryptionMultipartUploader.php',
|
238 |
+
'WPStaging\\Vendor\\Aws\\S3\\Crypto\\S3EncryptionMultipartUploaderV2' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/S3EncryptionMultipartUploaderV2.php',
|
239 |
+
'WPStaging\\Vendor\\Aws\\S3\\Crypto\\UserAgentTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/UserAgentTrait.php',
|
240 |
+
'WPStaging\\Vendor\\Aws\\S3\\EndpointRegionHelperTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/EndpointRegionHelperTrait.php',
|
241 |
+
'WPStaging\\Vendor\\Aws\\S3\\Exception\\DeleteMultipleObjectsException' => $vendorDir . '/aws/aws-sdk-php/src/S3/Exception/DeleteMultipleObjectsException.php',
|
242 |
+
'WPStaging\\Vendor\\Aws\\S3\\Exception\\PermanentRedirectException' => $vendorDir . '/aws/aws-sdk-php/src/S3/Exception/PermanentRedirectException.php',
|
243 |
+
'WPStaging\\Vendor\\Aws\\S3\\Exception\\S3Exception' => $vendorDir . '/aws/aws-sdk-php/src/S3/Exception/S3Exception.php',
|
244 |
+
'WPStaging\\Vendor\\Aws\\S3\\Exception\\S3MultipartUploadException' => $vendorDir . '/aws/aws-sdk-php/src/S3/Exception/S3MultipartUploadException.php',
|
245 |
+
'WPStaging\\Vendor\\Aws\\S3\\GetBucketLocationParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/GetBucketLocationParser.php',
|
246 |
+
'WPStaging\\Vendor\\Aws\\S3\\MultipartCopy' => $vendorDir . '/aws/aws-sdk-php/src/S3/MultipartCopy.php',
|
247 |
+
'WPStaging\\Vendor\\Aws\\S3\\MultipartUploader' => $vendorDir . '/aws/aws-sdk-php/src/S3/MultipartUploader.php',
|
248 |
+
'WPStaging\\Vendor\\Aws\\S3\\MultipartUploadingTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/MultipartUploadingTrait.php',
|
249 |
+
'WPStaging\\Vendor\\Aws\\S3\\ObjectCopier' => $vendorDir . '/aws/aws-sdk-php/src/S3/ObjectCopier.php',
|
250 |
+
'WPStaging\\Vendor\\Aws\\S3\\ObjectUploader' => $vendorDir . '/aws/aws-sdk-php/src/S3/ObjectUploader.php',
|
251 |
+
'WPStaging\\Vendor\\Aws\\S3\\PermanentRedirectMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/PermanentRedirectMiddleware.php',
|
252 |
+
'WPStaging\\Vendor\\Aws\\S3\\PostObject' => $vendorDir . '/aws/aws-sdk-php/src/S3/PostObject.php',
|
253 |
+
'WPStaging\\Vendor\\Aws\\S3\\PostObjectV4' => $vendorDir . '/aws/aws-sdk-php/src/S3/PostObjectV4.php',
|
254 |
+
'WPStaging\\Vendor\\Aws\\S3\\PutObjectUrlMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/PutObjectUrlMiddleware.php',
|
255 |
+
'WPStaging\\Vendor\\Aws\\S3\\RegionalEndpoint\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/S3/RegionalEndpoint/Configuration.php',
|
256 |
+
'WPStaging\\Vendor\\Aws\\S3\\RegionalEndpoint\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/S3/RegionalEndpoint/ConfigurationInterface.php',
|
257 |
+
'WPStaging\\Vendor\\Aws\\S3\\RegionalEndpoint\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/S3/RegionalEndpoint/ConfigurationProvider.php',
|
258 |
+
'WPStaging\\Vendor\\Aws\\S3\\RegionalEndpoint\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/S3/RegionalEndpoint/Exception/ConfigurationException.php',
|
259 |
+
'WPStaging\\Vendor\\Aws\\S3\\RetryableMalformedResponseParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/RetryableMalformedResponseParser.php',
|
260 |
+
'WPStaging\\Vendor\\Aws\\S3\\S3Client' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3Client.php',
|
261 |
+
'WPStaging\\Vendor\\Aws\\S3\\S3ClientInterface' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3ClientInterface.php',
|
262 |
+
'WPStaging\\Vendor\\Aws\\S3\\S3ClientTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3ClientTrait.php',
|
263 |
+
'WPStaging\\Vendor\\Aws\\S3\\S3EndpointMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3EndpointMiddleware.php',
|
264 |
+
'WPStaging\\Vendor\\Aws\\S3\\S3MultiRegionClient' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3MultiRegionClient.php',
|
265 |
+
'WPStaging\\Vendor\\Aws\\S3\\S3UriParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3UriParser.php',
|
266 |
+
'WPStaging\\Vendor\\Aws\\S3\\SSECMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/SSECMiddleware.php',
|
267 |
+
'WPStaging\\Vendor\\Aws\\S3\\StreamWrapper' => $vendorDir . '/aws/aws-sdk-php/src/S3/StreamWrapper.php',
|
268 |
+
'WPStaging\\Vendor\\Aws\\S3\\Transfer' => $vendorDir . '/aws/aws-sdk-php/src/S3/Transfer.php',
|
269 |
+
'WPStaging\\Vendor\\Aws\\S3\\UseArnRegion\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/S3/UseArnRegion/Configuration.php',
|
270 |
+
'WPStaging\\Vendor\\Aws\\S3\\UseArnRegion\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/S3/UseArnRegion/ConfigurationInterface.php',
|
271 |
+
'WPStaging\\Vendor\\Aws\\S3\\UseArnRegion\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/S3/UseArnRegion/ConfigurationProvider.php',
|
272 |
+
'WPStaging\\Vendor\\Aws\\S3\\UseArnRegion\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/S3/UseArnRegion/Exception/ConfigurationException.php',
|
273 |
+
'WPStaging\\Vendor\\Aws\\S3\\ValidateResponseChecksumParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/ValidateResponseChecksumParser.php',
|
274 |
+
'WPStaging\\Vendor\\Aws\\Sdk' => $vendorDir . '/aws/aws-sdk-php/src/Sdk.php',
|
275 |
+
'WPStaging\\Vendor\\Aws\\Signature\\AnonymousSignature' => $vendorDir . '/aws/aws-sdk-php/src/Signature/AnonymousSignature.php',
|
276 |
+
'WPStaging\\Vendor\\Aws\\Signature\\S3SignatureV4' => $vendorDir . '/aws/aws-sdk-php/src/Signature/S3SignatureV4.php',
|
277 |
+
'WPStaging\\Vendor\\Aws\\Signature\\SignatureInterface' => $vendorDir . '/aws/aws-sdk-php/src/Signature/SignatureInterface.php',
|
278 |
+
'WPStaging\\Vendor\\Aws\\Signature\\SignatureProvider' => $vendorDir . '/aws/aws-sdk-php/src/Signature/SignatureProvider.php',
|
279 |
+
'WPStaging\\Vendor\\Aws\\Signature\\SignatureTrait' => $vendorDir . '/aws/aws-sdk-php/src/Signature/SignatureTrait.php',
|
280 |
+
'WPStaging\\Vendor\\Aws\\Signature\\SignatureV4' => $vendorDir . '/aws/aws-sdk-php/src/Signature/SignatureV4.php',
|
281 |
+
'WPStaging\\Vendor\\Aws\\StreamRequestPayloadMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/StreamRequestPayloadMiddleware.php',
|
282 |
+
'WPStaging\\Vendor\\Aws\\TraceMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/TraceMiddleware.php',
|
283 |
+
'WPStaging\\Vendor\\Aws\\Waiter' => $vendorDir . '/aws/aws-sdk-php/src/Waiter.php',
|
284 |
+
'WPStaging\\Vendor\\Aws\\WrappedHttpHandler' => $vendorDir . '/aws/aws-sdk-php/src/WrappedHttpHandler.php',
|
285 |
'WPStaging\\Vendor\\DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
|
286 |
'WPStaging\\Vendor\\Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php',
|
287 |
'WPStaging\\Vendor\\Firebase\\JWT\\BeforeValidException' => $vendorDir . '/firebase/php-jwt/src/BeforeValidException.php',
|
556 |
'WPStaging\\Vendor\\GuzzleHttp\\TransferStats' => $vendorDir . '/guzzlehttp/guzzle/src/TransferStats.php',
|
557 |
'WPStaging\\Vendor\\GuzzleHttp\\UriTemplate' => $vendorDir . '/guzzlehttp/guzzle/src/UriTemplate.php',
|
558 |
'WPStaging\\Vendor\\GuzzleHttp\\Utils' => $vendorDir . '/guzzlehttp/guzzle/src/Utils.php',
|
559 |
+
'WPStaging\\Vendor\\JmesPath\\AstRuntime' => $vendorDir . '/mtdowling/jmespath.php/src/AstRuntime.php',
|
560 |
+
'WPStaging\\Vendor\\JmesPath\\CompilerRuntime' => $vendorDir . '/mtdowling/jmespath.php/src/CompilerRuntime.php',
|
561 |
+
'WPStaging\\Vendor\\JmesPath\\DebugRuntime' => $vendorDir . '/mtdowling/jmespath.php/src/DebugRuntime.php',
|
562 |
+
'WPStaging\\Vendor\\JmesPath\\Env' => $vendorDir . '/mtdowling/jmespath.php/src/Env.php',
|
563 |
+
'WPStaging\\Vendor\\JmesPath\\FnDispatcher' => $vendorDir . '/mtdowling/jmespath.php/src/FnDispatcher.php',
|
564 |
+
'WPStaging\\Vendor\\JmesPath\\Lexer' => $vendorDir . '/mtdowling/jmespath.php/src/Lexer.php',
|
565 |
+
'WPStaging\\Vendor\\JmesPath\\Parser' => $vendorDir . '/mtdowling/jmespath.php/src/Parser.php',
|
566 |
+
'WPStaging\\Vendor\\JmesPath\\SyntaxErrorException' => $vendorDir . '/mtdowling/jmespath.php/src/SyntaxErrorException.php',
|
567 |
+
'WPStaging\\Vendor\\JmesPath\\TreeCompiler' => $vendorDir . '/mtdowling/jmespath.php/src/TreeCompiler.php',
|
568 |
+
'WPStaging\\Vendor\\JmesPath\\TreeInterpreter' => $vendorDir . '/mtdowling/jmespath.php/src/TreeInterpreter.php',
|
569 |
+
'WPStaging\\Vendor\\JmesPath\\Utils' => $vendorDir . '/mtdowling/jmespath.php/src/Utils.php',
|
570 |
'WPStaging\\Vendor\\Monolog\\ErrorHandler' => $vendorDir . '/monolog/monolog/src/Monolog/ErrorHandler.php',
|
571 |
'WPStaging\\Vendor\\Monolog\\Formatter\\ChromePHPFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php',
|
572 |
'WPStaging\\Vendor\\Monolog\\Formatter\\ElasticaFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php',
|
694 |
'WPStaging\\Vendor\\Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\DisallowedRanges' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php',
|
695 |
'WPStaging\\Vendor\\Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\Regex' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/Regex.php',
|
696 |
'WPStaging\\Vendor\\Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Normalizer.php',
|
697 |
+
'WPStaging\\Vendor\\Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php',
|
698 |
'WPStaging\\Vendor\\Symfony\\Polyfill\\Php70\\Php70' => $vendorDir . '/symfony/polyfill-php70/Php70.php',
|
699 |
'WPStaging\\Vendor\\Symfony\\Polyfill\\Php72\\Php72' => $vendorDir . '/symfony/polyfill-php72/Php72.php',
|
700 |
'WPStaging\\Vendor\\TypeError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
|
vendor_wpstg/aws/aws-crt-php/NOTICE
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
vendor_wpstg/aws/aws-crt-php/builder.json
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "aws-crt-php",
|
3 |
+
"hosts": {
|
4 |
+
"ubuntu": {
|
5 |
+
"pkg_setup": [
|
6 |
+
"add-apt-repository -y ppa:ondrej/php"
|
7 |
+
],
|
8 |
+
"packages": [
|
9 |
+
"autotools-dev",
|
10 |
+
"autoconf",
|
11 |
+
"libtool",
|
12 |
+
"clang",
|
13 |
+
"php5.6-dev"
|
14 |
+
]
|
15 |
+
},
|
16 |
+
"al2": {
|
17 |
+
"packages": [
|
18 |
+
"autoconf",
|
19 |
+
"automake",
|
20 |
+
"libtool",
|
21 |
+
"clang",
|
22 |
+
"php-devel"
|
23 |
+
]
|
24 |
+
}
|
25 |
+
},
|
26 |
+
"build_steps": [
|
27 |
+
["phpize"],
|
28 |
+
["./configure"],
|
29 |
+
["make"]
|
30 |
+
],
|
31 |
+
"test_env": {
|
32 |
+
"NO_INTERACTION": "1"
|
33 |
+
},
|
34 |
+
"test_steps": [
|
35 |
+
["./run_tests"]
|
36 |
+
]
|
37 |
+
}
|
vendor_wpstg/aws/aws-crt-php/config.m4
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
dnl
|
2 |
+
dnl * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
3 |
+
dnl * SPDX-License-Identifier: Apache-2.0.
|
4 |
+
dnl
|
5 |
+
|
6 |
+
PHP_ARG_WITH(awscrt, for AWS Common Runtime support,
|
7 |
+
[ --with-awscrt Include awscrt support])
|
8 |
+
|
9 |
+
if test "$PHP_AWSCRT" != "no"; then
|
10 |
+
# force lib paths to be absolute, or PHP will mangle them
|
11 |
+
cwd=`pwd`
|
12 |
+
# Enable s2n and libcrypto for non-darwin UNIX
|
13 |
+
if uname -a | grep -i darwin > /dev/null 2>&1; then
|
14 |
+
platform_tls_libs=""
|
15 |
+
else
|
16 |
+
platform_tls_libs="-ls2n -lcrypto"
|
17 |
+
fi
|
18 |
+
CRT_LIBPATHS="-L${cwd}/build/install/lib -L${cwd}/build/install/lib64"
|
19 |
+
CRT_LIBS="-laws-crt-ffi -laws-c-auth -laws-c-http -laws-c-io -laws-c-cal -laws-c-compression -laws-checksums -laws-c-common ${platform_tls_libs}"
|
20 |
+
PHP_ADD_INCLUDE(${cwd}/build/install/include)
|
21 |
+
PHP_EVAL_LIBLINE([$CRT_LIBPATHS $CRT_LIBS], AWSCRT_SHARED_LIBADD)
|
22 |
+
|
23 |
+
# Shoves the linker line into the Makefile
|
24 |
+
PHP_SUBST(AWSCRT_SHARED_LIBADD)
|
25 |
+
|
26 |
+
# Sources for the PHP extension itself
|
27 |
+
AWSCRT_SOURCES=ext/awscrt.c
|
28 |
+
PHP_NEW_EXTENSION(awscrt, $AWSCRT_SOURCES, $ext_shared)
|
29 |
+
PHP_ADD_MAKEFILE_FRAGMENT
|
30 |
+
fi
|
vendor_wpstg/aws/aws-crt-php/config.w32
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// vim:ft=javascript
|
2 |
+
|
3 |
+
ARG_ENABLE("awscrt", "Include AWS Common Runtime support", "yes");
|
4 |
+
|
5 |
+
if (PHP_AWSCRT != "no") {
|
6 |
+
ADD_MAKEFILE_FRAGMENT();
|
7 |
+
DEFINE('CFLAGS_AWSCRT', '/I ' + configure_module_dirname + '\\build\\install\\include');
|
8 |
+
DEFINE('LIBS_AWSCRT', '/LIBPATH:' + configure_module_dirname + '\\build\\install\\lib ' +
|
9 |
+
'aws-crt-ffi.lib aws-c-auth.lib aws-c-http.lib aws-c-io.lib aws-c-cal.lib aws-c-compression.lib aws-c-common.lib ' +
|
10 |
+
'ncrypt.lib Secur32.lib Crypt32.lib Shlwapi.lib');
|
11 |
+
DEFINE('AWSCRT_DIR', configure_module_dirname);
|
12 |
+
EXTENSION("awscrt", "ext\\awscrt.c", PHP_AWSCRT_SHARED);
|
13 |
+
}
|
vendor_wpstg/aws/aws-crt-php/ext/awscrt.c
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
3 |
+
* SPDX-License-Identifier: Apache-2.0.
|
4 |
+
*/
|
5 |
+
|
6 |
+
/* This is a unity-build style source file, as PHP's build system is simplest with 1 source file per extension */
|
7 |
+
|
8 |
+
#include "credentials.c"
|
9 |
+
#include "crt.c"
|
10 |
+
#include "event_loop.c"
|
11 |
+
#include "http.c"
|
12 |
+
#include "signing.c"
|
13 |
+
#include "stream.c"
|
14 |
+
// #include "hash.c"
|
15 |
+
#include "crc.c"
|
16 |
+
#include "logging.c"
|
17 |
+
#include "php_util.c"
|
vendor_wpstg/aws/aws-crt-php/ext/awscrt.stub.php
ADDED
@@ -0,0 +1,212 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* @generate-class-entries
|
7 |
+
* @generate-function-entries
|
8 |
+
*/
|
9 |
+
function aws_crt_last_error() : int
|
10 |
+
{
|
11 |
+
}
|
12 |
+
function aws_crt_error_name(int $error_code) : string
|
13 |
+
{
|
14 |
+
}
|
15 |
+
function aws_crt_error_str(int $error_code) : string
|
16 |
+
{
|
17 |
+
}
|
18 |
+
function aws_crt_error_debug_str(int $error_code) : string
|
19 |
+
{
|
20 |
+
}
|
21 |
+
function aws_crt_log_to_stdout() : void
|
22 |
+
{
|
23 |
+
}
|
24 |
+
function aws_crt_log_to_stderr() : void
|
25 |
+
{
|
26 |
+
}
|
27 |
+
function aws_crt_log_to_file(string $filename) : void
|
28 |
+
{
|
29 |
+
}
|
30 |
+
function aws_crt_log_to_stream(object $stream) : void
|
31 |
+
{
|
32 |
+
}
|
33 |
+
function aws_crt_log_stop() : void
|
34 |
+
{
|
35 |
+
}
|
36 |
+
function aws_crt_log_set_level(int $level) : void
|
37 |
+
{
|
38 |
+
}
|
39 |
+
function aws_crt_log_message(string $message) : void
|
40 |
+
{
|
41 |
+
}
|
42 |
+
function aws_crt_event_loop_group_options_new() : int
|
43 |
+
{
|
44 |
+
}
|
45 |
+
function aws_crt_event_loop_group_options_release(int $elg_options) : void
|
46 |
+
{
|
47 |
+
}
|
48 |
+
function aws_crt_event_loop_group_options_set_max_threads(int $elg_options, int $max_threads) : void
|
49 |
+
{
|
50 |
+
}
|
51 |
+
function aws_crt_event_loop_group_new(object $options) : object
|
52 |
+
{
|
53 |
+
}
|
54 |
+
function aws_crt_event_loop_group_release(object $event_loop_group) : void
|
55 |
+
{
|
56 |
+
}
|
57 |
+
function aws_crt_input_stream_options_new() : object
|
58 |
+
{
|
59 |
+
}
|
60 |
+
function aws_crt_input_stream_options_release(object $options) : void
|
61 |
+
{
|
62 |
+
}
|
63 |
+
function aws_crt_input_stream_options_set_user_data(object $options, object $user_data) : void
|
64 |
+
{
|
65 |
+
}
|
66 |
+
function aws_crt_input_stream_new(object $options) : object
|
67 |
+
{
|
68 |
+
}
|
69 |
+
function aws_crt_input_stream_release(int $stream) : void
|
70 |
+
{
|
71 |
+
}
|
72 |
+
function aws_crt_input_stream_seek(int $stream, int $offset, int $basis) : int
|
73 |
+
{
|
74 |
+
}
|
75 |
+
function aws_crt_input_stream_read(int $stream, int $length) : string
|
76 |
+
{
|
77 |
+
}
|
78 |
+
function aws_crt_input_stream_eof(int $stream) : bool
|
79 |
+
{
|
80 |
+
}
|
81 |
+
function aws_crt_input_stream_get_length(int $stream) : int
|
82 |
+
{
|
83 |
+
}
|
84 |
+
function aws_crt_http_message_new_from_blob(string $blob) : int
|
85 |
+
{
|
86 |
+
}
|
87 |
+
function aws_crt_http_message_to_blob(int $message) : string
|
88 |
+
{
|
89 |
+
}
|
90 |
+
function aws_crt_http_message_release(int $message) : void
|
91 |
+
{
|
92 |
+
}
|
93 |
+
function aws_crt_credentials_options_new() : object
|
94 |
+
{
|
95 |
+
}
|
96 |
+
function aws_crt_credentials_options_release(object $options) : void
|
97 |
+
{
|
98 |
+
}
|
99 |
+
function aws_crt_credentials_options_set_access_key_id(object $options, string $access_key_id) : void
|
100 |
+
{
|
101 |
+
}
|
102 |
+
function aws_crt_credentials_options_set_secret_access_key(object $options, string $secret_access_key) : void
|
103 |
+
{
|
104 |
+
}
|
105 |
+
function aws_crt_credentials_options_set_session_token(object $options, string $session_token) : void
|
106 |
+
{
|
107 |
+
}
|
108 |
+
function aws_crt_credentials_options_set_expiration_timepoint_seconds(object $options, int $expiration_timepoint_seconds) : void
|
109 |
+
{
|
110 |
+
}
|
111 |
+
function aws_crt_credentials_new(object $options) : object
|
112 |
+
{
|
113 |
+
}
|
114 |
+
function aws_crt_credentials_release(object $credentials) : void
|
115 |
+
{
|
116 |
+
}
|
117 |
+
function aws_crt_credentials_provider_release(int $credentials) : void
|
118 |
+
{
|
119 |
+
}
|
120 |
+
function aws_crt_credentials_provider_static_options_new() : object
|
121 |
+
{
|
122 |
+
}
|
123 |
+
function aws_crt_credentials_provider_static_options_release(object $options) : void
|
124 |
+
{
|
125 |
+
}
|
126 |
+
function aws_crt_credentials_provider_static_options_set_access_key_id(object $options, string $access_key_id) : void
|
127 |
+
{
|
128 |
+
}
|
129 |
+
function aws_crt_credentials_provider_static_options_set_secret_access_key(object $options, string $secret_access_key) : void
|
130 |
+
{
|
131 |
+
}
|
132 |
+
function aws_crt_credentials_provider_static_options_set_session_token(object $options, string $session_token) : void
|
133 |
+
{
|
134 |
+
}
|
135 |
+
function aws_crt_credentials_provider_static_new(object $options) : object
|
136 |
+
{
|
137 |
+
}
|
138 |
+
function aws_crt_signing_config_aws_new() : int
|
139 |
+
{
|
140 |
+
}
|
141 |
+
function aws_crt_signing_config_aws_release(int $config) : void
|
142 |
+
{
|
143 |
+
}
|
144 |
+
function aws_crt_signing_config_aws_set_algorithm(int $config, int $algorithm) : void
|
145 |
+
{
|
146 |
+
}
|
147 |
+
function aws_crt_signing_config_aws_set_signature_type(int $config, int $signature_type) : void
|
148 |
+
{
|
149 |
+
}
|
150 |
+
function aws_crt_signing_config_aws_set_credentials_provider(int $config, int $credentials_provider) : void
|
151 |
+
{
|
152 |
+
}
|
153 |
+
function aws_crt_signing_config_aws_set_region(int $config, string $region) : void
|
154 |
+
{
|
155 |
+
}
|
156 |
+
function aws_crt_signing_config_aws_set_service(int $config, string $service) : void
|
157 |
+
{
|
158 |
+
}
|
159 |
+
function aws_crt_signing_config_aws_set_use_double_uri_encode(int $config, bool $use_double_uri_encode) : void
|
160 |
+
{
|
161 |
+
}
|
162 |
+
function aws_crt_signing_config_aws_set_should_normalize_uri_path(int $config, bool $should_normalize_uri_path) : void
|
163 |
+
{
|
164 |
+
}
|
165 |
+
function aws_crt_signing_config_aws_set_omit_session_token(int $config, bool $omit_session_token) : void
|
166 |
+
{
|
167 |
+
}
|
168 |
+
function aws_crt_signing_config_aws_set_signed_body_value(int $config, string $signed_body_value) : void
|
169 |
+
{
|
170 |
+
}
|
171 |
+
function aws_crt_signing_config_aws_set_signed_body_header_type(int $config, int $signed_body_header_type) : void
|
172 |
+
{
|
173 |
+
}
|
174 |
+
function aws_crt_signing_config_aws_set_expiration_in_seconds(int $config, int $expiration_in_seconds) : void
|
175 |
+
{
|
176 |
+
}
|
177 |
+
function aws_crt_signing_config_aws_set_date(int $config, int $timestamp) : void
|
178 |
+
{
|
179 |
+
}
|
180 |
+
function aws_crt_signing_config_aws_set_should_sign_header_fn(int $config, object $should_sign_header) : void
|
181 |
+
{
|
182 |
+
}
|
183 |
+
function aws_crt_signable_new_from_http_request(int $http_message) : int
|
184 |
+
{
|
185 |
+
}
|
186 |
+
function aws_crt_signable_new_from_chunk(int $input_stream, string $previous_signature) : int
|
187 |
+
{
|
188 |
+
}
|
189 |
+
function aws_crt_signable_new_from_canonical_request(string $request) : int
|
190 |
+
{
|
191 |
+
}
|
192 |
+
function aws_crt_signable_release(int $signable) : void
|
193 |
+
{
|
194 |
+
}
|
195 |
+
function aws_crt_signing_result_release(int $signing_result) : void
|
196 |
+
{
|
197 |
+
}
|
198 |
+
function aws_crt_signing_result_apply_to_http_request(object $signing_result, object $http_request) : void
|
199 |
+
{
|
200 |
+
}
|
201 |
+
function aws_crt_sign_request_aws(int $signable, int $signing_config, object $on_complete, object $user_data) : int
|
202 |
+
{
|
203 |
+
}
|
204 |
+
function aws_crt_test_verify_sigv4a_signing(int $signable, int $signing_config, string $expected_canonical_request, string $signature, string $ecc_key_pub_x, string $ecc_key_pub_y) : bool
|
205 |
+
{
|
206 |
+
}
|
207 |
+
function aws_crt_crc32(string $input, int $prev) : int
|
208 |
+
{
|
209 |
+
}
|
210 |
+
function aws_crt_crc32c(string $input, int $prev) : int
|
211 |
+
{
|
212 |
+
}
|
vendor_wpstg/aws/aws-crt-php/ext/awscrt_arginfo.h
ADDED
@@ -0,0 +1,413 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* This is a generated file, edit the .stub.php file instead.
|
2 |
+
* Stub hash: 344f9d59b85697b80bb6808ac7d5eb7c1d07c03f */
|
3 |
+
|
4 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_last_error, 0, 0, 0)
|
5 |
+
ZEND_END_ARG_INFO()
|
6 |
+
|
7 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_error_name, 0, 0, 1)
|
8 |
+
ZEND_ARG_INFO(0, error_code)
|
9 |
+
ZEND_END_ARG_INFO()
|
10 |
+
|
11 |
+
#define arginfo_aws_crt_error_str arginfo_aws_crt_error_name
|
12 |
+
|
13 |
+
#define arginfo_aws_crt_error_debug_str arginfo_aws_crt_error_name
|
14 |
+
|
15 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_log_to_stdout, 0, 0, 0)
|
16 |
+
ZEND_END_ARG_INFO()
|
17 |
+
|
18 |
+
#define arginfo_aws_crt_log_to_stderr arginfo_aws_crt_log_to_stdout
|
19 |
+
|
20 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_log_to_file, 0, 0, 1)
|
21 |
+
ZEND_ARG_INFO(0, filename)
|
22 |
+
ZEND_END_ARG_INFO()
|
23 |
+
|
24 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_log_to_stream, 0, 0, 1)
|
25 |
+
ZEND_ARG_INFO(0, stream)
|
26 |
+
ZEND_END_ARG_INFO()
|
27 |
+
|
28 |
+
#define arginfo_aws_crt_log_stop arginfo_aws_crt_log_to_stdout
|
29 |
+
|
30 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_log_set_level, 0, 0, 1)
|
31 |
+
ZEND_ARG_INFO(0, level)
|
32 |
+
ZEND_END_ARG_INFO()
|
33 |
+
|
34 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_log_message, 0, 0, 1)
|
35 |
+
ZEND_ARG_INFO(0, message)
|
36 |
+
ZEND_END_ARG_INFO()
|
37 |
+
|
38 |
+
#define arginfo_aws_crt_event_loop_group_options_new arginfo_aws_crt_last_error
|
39 |
+
|
40 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_event_loop_group_options_release, 0, 0, 1)
|
41 |
+
ZEND_ARG_INFO(0, elg_options)
|
42 |
+
ZEND_END_ARG_INFO()
|
43 |
+
|
44 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_event_loop_group_options_set_max_threads, 0, 0, 2)
|
45 |
+
ZEND_ARG_INFO(0, elg_options)
|
46 |
+
ZEND_ARG_INFO(0, max_threads)
|
47 |
+
ZEND_END_ARG_INFO()
|
48 |
+
|
49 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_event_loop_group_new, 0, 0, 1)
|
50 |
+
ZEND_ARG_INFO(0, options)
|
51 |
+
ZEND_END_ARG_INFO()
|
52 |
+
|
53 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_event_loop_group_release, 0, 0, 1)
|
54 |
+
ZEND_ARG_INFO(0, event_loop_group)
|
55 |
+
ZEND_END_ARG_INFO()
|
56 |
+
|
57 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_options_new, 0, 0, 0)
|
58 |
+
ZEND_END_ARG_INFO()
|
59 |
+
|
60 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_options_release, 0, 0, 1)
|
61 |
+
ZEND_ARG_INFO(0, options)
|
62 |
+
ZEND_END_ARG_INFO()
|
63 |
+
|
64 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_options_set_user_data, 0, 0, 2)
|
65 |
+
ZEND_ARG_INFO(0, options)
|
66 |
+
ZEND_ARG_INFO(0, user_data)
|
67 |
+
ZEND_END_ARG_INFO()
|
68 |
+
|
69 |
+
#define arginfo_aws_crt_input_stream_new arginfo_aws_crt_event_loop_group_new
|
70 |
+
|
71 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_release, 0, 0, 1)
|
72 |
+
ZEND_ARG_INFO(0, stream)
|
73 |
+
ZEND_END_ARG_INFO()
|
74 |
+
|
75 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_seek, 0, 0, 3)
|
76 |
+
ZEND_ARG_INFO(0, stream)
|
77 |
+
ZEND_ARG_INFO(0, offset)
|
78 |
+
ZEND_ARG_INFO(0, basis)
|
79 |
+
ZEND_END_ARG_INFO()
|
80 |
+
|
81 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_read, 0, 0, 2)
|
82 |
+
ZEND_ARG_INFO(0, stream)
|
83 |
+
ZEND_ARG_INFO(0, length)
|
84 |
+
ZEND_END_ARG_INFO()
|
85 |
+
|
86 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_eof, 0, 0, 1)
|
87 |
+
ZEND_ARG_INFO(0, stream)
|
88 |
+
ZEND_END_ARG_INFO()
|
89 |
+
|
90 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_get_length, 0, 0, 1)
|
91 |
+
ZEND_ARG_INFO(0, stream)
|
92 |
+
ZEND_END_ARG_INFO()
|
93 |
+
|
94 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_http_message_new_from_blob, 0, 0, 1)
|
95 |
+
ZEND_ARG_INFO(0, blob)
|
96 |
+
ZEND_END_ARG_INFO()
|
97 |
+
|
98 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_http_message_to_blob, 0, 0, 1)
|
99 |
+
ZEND_ARG_INFO(0, message)
|
100 |
+
ZEND_END_ARG_INFO()
|
101 |
+
|
102 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_http_message_release, 0, 0, 1)
|
103 |
+
ZEND_ARG_INFO(0, message)
|
104 |
+
ZEND_END_ARG_INFO()
|
105 |
+
|
106 |
+
#define arginfo_aws_crt_credentials_options_new arginfo_aws_crt_input_stream_options_new
|
107 |
+
|
108 |
+
#define arginfo_aws_crt_credentials_options_release arginfo_aws_crt_input_stream_options_release
|
109 |
+
|
110 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_credentials_options_set_access_key_id, 0, 0, 2)
|
111 |
+
ZEND_ARG_INFO(0, options)
|
112 |
+
ZEND_ARG_INFO(0, access_key_id)
|
113 |
+
ZEND_END_ARG_INFO()
|
114 |
+
|
115 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_credentials_options_set_secret_access_key, 0, 0, 2)
|
116 |
+
ZEND_ARG_INFO(0, options)
|
117 |
+
ZEND_ARG_INFO(0, secret_access_key)
|
118 |
+
ZEND_END_ARG_INFO()
|
119 |
+
|
120 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_credentials_options_set_session_token, 0, 0, 2)
|
121 |
+
ZEND_ARG_INFO(0, options)
|
122 |
+
ZEND_ARG_INFO(0, session_token)
|
123 |
+
ZEND_END_ARG_INFO()
|
124 |
+
|
125 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_credentials_options_set_expiration_timepoint_seconds, 0, 0, 2)
|
126 |
+
ZEND_ARG_INFO(0, options)
|
127 |
+
ZEND_ARG_INFO(0, expiration_timepoint_seconds)
|
128 |
+
ZEND_END_ARG_INFO()
|
129 |
+
|
130 |
+
#define arginfo_aws_crt_credentials_new arginfo_aws_crt_event_loop_group_new
|
131 |
+
|
132 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_credentials_release, 0, 0, 1)
|
133 |
+
ZEND_ARG_INFO(0, credentials)
|
134 |
+
ZEND_END_ARG_INFO()
|
135 |
+
|
136 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_credentials_provider_release, 0, 0, 1)
|
137 |
+
ZEND_ARG_INFO(0, credentials)
|
138 |
+
ZEND_END_ARG_INFO()
|
139 |
+
|
140 |
+
#define arginfo_aws_crt_credentials_provider_static_options_new arginfo_aws_crt_input_stream_options_new
|
141 |
+
|
142 |
+
#define arginfo_aws_crt_credentials_provider_static_options_release arginfo_aws_crt_input_stream_options_release
|
143 |
+
|
144 |
+
#define arginfo_aws_crt_credentials_provider_static_options_set_access_key_id arginfo_aws_crt_credentials_options_set_access_key_id
|
145 |
+
|
146 |
+
#define arginfo_aws_crt_credentials_provider_static_options_set_secret_access_key arginfo_aws_crt_credentials_options_set_secret_access_key
|
147 |
+
|
148 |
+
#define arginfo_aws_crt_credentials_provider_static_options_set_session_token arginfo_aws_crt_credentials_options_set_session_token
|
149 |
+
|
150 |
+
#define arginfo_aws_crt_credentials_provider_static_new arginfo_aws_crt_event_loop_group_new
|
151 |
+
|
152 |
+
#define arginfo_aws_crt_signing_config_aws_new arginfo_aws_crt_last_error
|
153 |
+
|
154 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_release, 0, 0, 1)
|
155 |
+
ZEND_ARG_INFO(0, config)
|
156 |
+
ZEND_END_ARG_INFO()
|
157 |
+
|
158 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_algorithm, 0, 0, 2)
|
159 |
+
ZEND_ARG_INFO(0, config)
|
160 |
+
ZEND_ARG_INFO(0, algorithm)
|
161 |
+
ZEND_END_ARG_INFO()
|
162 |
+
|
163 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_signature_type, 0, 0, 2)
|
164 |
+
ZEND_ARG_INFO(0, config)
|
165 |
+
ZEND_ARG_INFO(0, signature_type)
|
166 |
+
ZEND_END_ARG_INFO()
|
167 |
+
|
168 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_credentials_provider, 0, 0, 2)
|
169 |
+
ZEND_ARG_INFO(0, config)
|
170 |
+
ZEND_ARG_INFO(0, credentials_provider)
|
171 |
+
ZEND_END_ARG_INFO()
|
172 |
+
|
173 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_region, 0, 0, 2)
|
174 |
+
ZEND_ARG_INFO(0, config)
|
175 |
+
ZEND_ARG_INFO(0, region)
|
176 |
+
ZEND_END_ARG_INFO()
|
177 |
+
|
178 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_service, 0, 0, 2)
|
179 |
+
ZEND_ARG_INFO(0, config)
|
180 |
+
ZEND_ARG_INFO(0, service)
|
181 |
+
ZEND_END_ARG_INFO()
|
182 |
+
|
183 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_use_double_uri_encode, 0, 0, 2)
|
184 |
+
ZEND_ARG_INFO(0, config)
|
185 |
+
ZEND_ARG_INFO(0, use_double_uri_encode)
|
186 |
+
ZEND_END_ARG_INFO()
|
187 |
+
|
188 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_should_normalize_uri_path, 0, 0, 2)
|
189 |
+
ZEND_ARG_INFO(0, config)
|
190 |
+
ZEND_ARG_INFO(0, should_normalize_uri_path)
|
191 |
+
ZEND_END_ARG_INFO()
|
192 |
+
|
193 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_omit_session_token, 0, 0, 2)
|
194 |
+
ZEND_ARG_INFO(0, config)
|
195 |
+
ZEND_ARG_INFO(0, omit_session_token)
|
196 |
+
ZEND_END_ARG_INFO()
|
197 |
+
|
198 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_signed_body_value, 0, 0, 2)
|
199 |
+
ZEND_ARG_INFO(0, config)
|
200 |
+
ZEND_ARG_INFO(0, signed_body_value)
|
201 |
+
ZEND_END_ARG_INFO()
|
202 |
+
|
203 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_signed_body_header_type, 0, 0, 2)
|
204 |
+
ZEND_ARG_INFO(0, config)
|
205 |
+
ZEND_ARG_INFO(0, signed_body_header_type)
|
206 |
+
ZEND_END_ARG_INFO()
|
207 |
+
|
208 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_expiration_in_seconds, 0, 0, 2)
|
209 |
+
ZEND_ARG_INFO(0, config)
|
210 |
+
ZEND_ARG_INFO(0, expiration_in_seconds)
|
211 |
+
ZEND_END_ARG_INFO()
|
212 |
+
|
213 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_date, 0, 0, 2)
|
214 |
+
ZEND_ARG_INFO(0, config)
|
215 |
+
ZEND_ARG_INFO(0, timestamp)
|
216 |
+
ZEND_END_ARG_INFO()
|
217 |
+
|
218 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_should_sign_header_fn, 0, 0, 2)
|
219 |
+
ZEND_ARG_INFO(0, config)
|
220 |
+
ZEND_ARG_INFO(0, should_sign_header)
|
221 |
+
ZEND_END_ARG_INFO()
|
222 |
+
|
223 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signable_new_from_http_request, 0, 0, 1)
|
224 |
+
ZEND_ARG_INFO(0, http_message)
|
225 |
+
ZEND_END_ARG_INFO()
|
226 |
+
|
227 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signable_new_from_chunk, 0, 0, 2)
|
228 |
+
ZEND_ARG_INFO(0, input_stream)
|
229 |
+
ZEND_ARG_INFO(0, previous_signature)
|
230 |
+
ZEND_END_ARG_INFO()
|
231 |
+
|
232 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signable_new_from_canonical_request, 0, 0, 1)
|
233 |
+
ZEND_ARG_INFO(0, request)
|
234 |
+
ZEND_END_ARG_INFO()
|
235 |
+
|
236 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signable_release, 0, 0, 1)
|
237 |
+
ZEND_ARG_INFO(0, signable)
|
238 |
+
ZEND_END_ARG_INFO()
|
239 |
+
|
240 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_result_release, 0, 0, 1)
|
241 |
+
ZEND_ARG_INFO(0, signing_result)
|
242 |
+
ZEND_END_ARG_INFO()
|
243 |
+
|
244 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_result_apply_to_http_request, 0, 0, 2)
|
245 |
+
ZEND_ARG_INFO(0, signing_result)
|
246 |
+
ZEND_ARG_INFO(0, http_request)
|
247 |
+
ZEND_END_ARG_INFO()
|
248 |
+
|
249 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_sign_request_aws, 0, 0, 4)
|
250 |
+
ZEND_ARG_INFO(0, signable)
|
251 |
+
ZEND_ARG_INFO(0, signing_config)
|
252 |
+
ZEND_ARG_INFO(0, on_complete)
|
253 |
+
ZEND_ARG_INFO(0, user_data)
|
254 |
+
ZEND_END_ARG_INFO()
|
255 |
+
|
256 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_test_verify_sigv4a_signing, 0, 0, 6)
|
257 |
+
ZEND_ARG_INFO(0, signable)
|
258 |
+
ZEND_ARG_INFO(0, signing_config)
|
259 |
+
ZEND_ARG_INFO(0, expected_canonical_request)
|
260 |
+
ZEND_ARG_INFO(0, signature)
|
261 |
+
ZEND_ARG_INFO(0, ecc_key_pub_x)
|
262 |
+
ZEND_ARG_INFO(0, ecc_key_pub_y)
|
263 |
+
ZEND_END_ARG_INFO()
|
264 |
+
|
265 |
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_crc32, 0, 0, 2)
|
266 |
+
ZEND_ARG_INFO(0, input)
|
267 |
+
ZEND_ARG_INFO(0, prev)
|
268 |
+
ZEND_END_ARG_INFO()
|
269 |
+
|
270 |
+
#define arginfo_aws_crt_crc32c arginfo_aws_crt_crc32
|
271 |
+
|
272 |
+
|
273 |
+
ZEND_FUNCTION(aws_crt_last_error);
|
274 |
+
ZEND_FUNCTION(aws_crt_error_name);
|
275 |
+
ZEND_FUNCTION(aws_crt_error_str);
|
276 |
+
ZEND_FUNCTION(aws_crt_error_debug_str);
|
277 |
+
ZEND_FUNCTION(aws_crt_log_to_stdout);
|
278 |
+
ZEND_FUNCTION(aws_crt_log_to_stderr);
|
279 |
+
ZEND_FUNCTION(aws_crt_log_to_file);
|
280 |
+
ZEND_FUNCTION(aws_crt_log_to_stream);
|
281 |
+
ZEND_FUNCTION(aws_crt_log_stop);
|
282 |
+
ZEND_FUNCTION(aws_crt_log_set_level);
|
283 |
+
ZEND_FUNCTION(aws_crt_log_message);
|
284 |
+
ZEND_FUNCTION(aws_crt_event_loop_group_options_new);
|
285 |
+
ZEND_FUNCTION(aws_crt_event_loop_group_options_release);
|
286 |
+
ZEND_FUNCTION(aws_crt_event_loop_group_options_set_max_threads);
|
287 |
+
ZEND_FUNCTION(aws_crt_event_loop_group_new);
|
288 |
+
ZEND_FUNCTION(aws_crt_event_loop_group_release);
|
289 |
+
ZEND_FUNCTION(aws_crt_input_stream_options_new);
|
290 |
+
ZEND_FUNCTION(aws_crt_input_stream_options_release);
|
291 |
+
ZEND_FUNCTION(aws_crt_input_stream_options_set_user_data);
|
292 |
+
ZEND_FUNCTION(aws_crt_input_stream_new);
|
293 |
+
ZEND_FUNCTION(aws_crt_input_stream_release);
|
294 |
+
ZEND_FUNCTION(aws_crt_input_stream_seek);
|
295 |
+
ZEND_FUNCTION(aws_crt_input_stream_read);
|
296 |
+
ZEND_FUNCTION(aws_crt_input_stream_eof);
|
297 |
+
ZEND_FUNCTION(aws_crt_input_stream_get_length);
|
298 |
+
ZEND_FUNCTION(aws_crt_http_message_new_from_blob);
|
299 |
+
ZEND_FUNCTION(aws_crt_http_message_to_blob);
|
300 |
+
ZEND_FUNCTION(aws_crt_http_message_release);
|
301 |
+
ZEND_FUNCTION(aws_crt_credentials_options_new);
|
302 |
+
ZEND_FUNCTION(aws_crt_credentials_options_release);
|
303 |
+
ZEND_FUNCTION(aws_crt_credentials_options_set_access_key_id);
|
304 |
+
ZEND_FUNCTION(aws_crt_credentials_options_set_secret_access_key);
|
305 |
+
ZEND_FUNCTION(aws_crt_credentials_options_set_session_token);
|
306 |
+
ZEND_FUNCTION(aws_crt_credentials_options_set_expiration_timepoint_seconds);
|
307 |
+
ZEND_FUNCTION(aws_crt_credentials_new);
|
308 |
+
ZEND_FUNCTION(aws_crt_credentials_release);
|
309 |
+
ZEND_FUNCTION(aws_crt_credentials_provider_release);
|
310 |
+
ZEND_FUNCTION(aws_crt_credentials_provider_static_options_new);
|
311 |
+
ZEND_FUNCTION(aws_crt_credentials_provider_static_options_release);
|
312 |
+
ZEND_FUNCTION(aws_crt_credentials_provider_static_options_set_access_key_id);
|
313 |
+
ZEND_FUNCTION(aws_crt_credentials_provider_static_options_set_secret_access_key);
|
314 |
+
ZEND_FUNCTION(aws_crt_credentials_provider_static_options_set_session_token);
|
315 |
+
ZEND_FUNCTION(aws_crt_credentials_provider_static_new);
|
316 |
+
ZEND_FUNCTION(aws_crt_signing_config_aws_new);
|
317 |
+
ZEND_FUNCTION(aws_crt_signing_config_aws_release);
|
318 |
+
ZEND_FUNCTION(aws_crt_signing_config_aws_set_algorithm);
|
319 |
+
ZEND_FUNCTION(aws_crt_signing_config_aws_set_signature_type);
|
320 |
+
ZEND_FUNCTION(aws_crt_signing_config_aws_set_credentials_provider);
|
321 |
+
ZEND_FUNCTION(aws_crt_signing_config_aws_set_region);
|
322 |
+
ZEND_FUNCTION(aws_crt_signing_config_aws_set_service);
|
323 |
+
ZEND_FUNCTION(aws_crt_signing_config_aws_set_use_double_uri_encode);
|
324 |
+
ZEND_FUNCTION(aws_crt_signing_config_aws_set_should_normalize_uri_path);
|
325 |
+
ZEND_FUNCTION(aws_crt_signing_config_aws_set_omit_session_token);
|
326 |
+
ZEND_FUNCTION(aws_crt_signing_config_aws_set_signed_body_value);
|
327 |
+
ZEND_FUNCTION(aws_crt_signing_config_aws_set_signed_body_header_type);
|
328 |
+
ZEND_FUNCTION(aws_crt_signing_config_aws_set_expiration_in_seconds);
|
329 |
+
ZEND_FUNCTION(aws_crt_signing_config_aws_set_date);
|
330 |
+
ZEND_FUNCTION(aws_crt_signing_config_aws_set_should_sign_header_fn);
|
331 |
+
ZEND_FUNCTION(aws_crt_signable_new_from_http_request);
|
332 |
+
ZEND_FUNCTION(aws_crt_signable_new_from_chunk);
|
333 |
+
ZEND_FUNCTION(aws_crt_signable_new_from_canonical_request);
|
334 |
+
ZEND_FUNCTION(aws_crt_signable_release);
|
335 |
+
ZEND_FUNCTION(aws_crt_signing_result_release);
|
336 |
+
ZEND_FUNCTION(aws_crt_signing_result_apply_to_http_request);
|
337 |
+
ZEND_FUNCTION(aws_crt_sign_request_aws);
|
338 |
+
ZEND_FUNCTION(aws_crt_test_verify_sigv4a_signing);
|
339 |
+
ZEND_FUNCTION(aws_crt_crc32);
|
340 |
+
ZEND_FUNCTION(aws_crt_crc32c);
|
341 |
+
|
342 |
+
|
343 |
+
static const zend_function_entry ext_functions[] = {
|
344 |
+
ZEND_FE(aws_crt_last_error, arginfo_aws_crt_last_error)
|
345 |
+
ZEND_FE(aws_crt_error_name, arginfo_aws_crt_error_name)
|
346 |
+
ZEND_FE(aws_crt_error_str, arginfo_aws_crt_error_str)
|
347 |
+
ZEND_FE(aws_crt_error_debug_str, arginfo_aws_crt_error_debug_str)
|
348 |
+
ZEND_FE(aws_crt_log_to_stdout, arginfo_aws_crt_log_to_stdout)
|
349 |
+
ZEND_FE(aws_crt_log_to_stderr, arginfo_aws_crt_log_to_stderr)
|
350 |
+
ZEND_FE(aws_crt_log_to_file, arginfo_aws_crt_log_to_file)
|
351 |
+
ZEND_FE(aws_crt_log_to_stream, arginfo_aws_crt_log_to_stream)
|
352 |
+
ZEND_FE(aws_crt_log_stop, arginfo_aws_crt_log_stop)
|
353 |
+
ZEND_FE(aws_crt_log_set_level, arginfo_aws_crt_log_set_level)
|
354 |
+
ZEND_FE(aws_crt_log_message, arginfo_aws_crt_log_message)
|
355 |
+
ZEND_FE(aws_crt_event_loop_group_options_new, arginfo_aws_crt_event_loop_group_options_new)
|
356 |
+
ZEND_FE(aws_crt_event_loop_group_options_release, arginfo_aws_crt_event_loop_group_options_release)
|
357 |
+
ZEND_FE(aws_crt_event_loop_group_options_set_max_threads, arginfo_aws_crt_event_loop_group_options_set_max_threads)
|
358 |
+
ZEND_FE(aws_crt_event_loop_group_new, arginfo_aws_crt_event_loop_group_new)
|
359 |
+
ZEND_FE(aws_crt_event_loop_group_release, arginfo_aws_crt_event_loop_group_release)
|
360 |
+
ZEND_FE(aws_crt_input_stream_options_new, arginfo_aws_crt_input_stream_options_new)
|
361 |
+
ZEND_FE(aws_crt_input_stream_options_release, arginfo_aws_crt_input_stream_options_release)
|
362 |
+
ZEND_FE(aws_crt_input_stream_options_set_user_data, arginfo_aws_crt_input_stream_options_set_user_data)
|
363 |
+
ZEND_FE(aws_crt_input_stream_new, arginfo_aws_crt_input_stream_new)
|
364 |
+
ZEND_FE(aws_crt_input_stream_release, arginfo_aws_crt_input_stream_release)
|
365 |
+
ZEND_FE(aws_crt_input_stream_seek, arginfo_aws_crt_input_stream_seek)
|
366 |
+
ZEND_FE(aws_crt_input_stream_read, arginfo_aws_crt_input_stream_read)
|
367 |
+
ZEND_FE(aws_crt_input_stream_eof, arginfo_aws_crt_input_stream_eof)
|
368 |
+
ZEND_FE(aws_crt_input_stream_get_length, arginfo_aws_crt_input_stream_get_length)
|
369 |
+
ZEND_FE(aws_crt_http_message_new_from_blob, arginfo_aws_crt_http_message_new_from_blob)
|
370 |
+
ZEND_FE(aws_crt_http_message_to_blob, arginfo_aws_crt_http_message_to_blob)
|
371 |
+
ZEND_FE(aws_crt_http_message_release, arginfo_aws_crt_http_message_release)
|
372 |
+
ZEND_FE(aws_crt_credentials_options_new, arginfo_aws_crt_credentials_options_new)
|
373 |
+
ZEND_FE(aws_crt_credentials_options_release, arginfo_aws_crt_credentials_options_release)
|
374 |
+
ZEND_FE(aws_crt_credentials_options_set_access_key_id, arginfo_aws_crt_credentials_options_set_access_key_id)
|
375 |
+
ZEND_FE(aws_crt_credentials_options_set_secret_access_key, arginfo_aws_crt_credentials_options_set_secret_access_key)
|
376 |
+
ZEND_FE(aws_crt_credentials_options_set_session_token, arginfo_aws_crt_credentials_options_set_session_token)
|
377 |
+
ZEND_FE(aws_crt_credentials_options_set_expiration_timepoint_seconds, arginfo_aws_crt_credentials_options_set_expiration_timepoint_seconds)
|
378 |
+
ZEND_FE(aws_crt_credentials_new, arginfo_aws_crt_credentials_new)
|
379 |
+
ZEND_FE(aws_crt_credentials_release, arginfo_aws_crt_credentials_release)
|
380 |
+
ZEND_FE(aws_crt_credentials_provider_release, arginfo_aws_crt_credentials_provider_release)
|
381 |
+
ZEND_FE(aws_crt_credentials_provider_static_options_new, arginfo_aws_crt_credentials_provider_static_options_new)
|
382 |
+
ZEND_FE(aws_crt_credentials_provider_static_options_release, arginfo_aws_crt_credentials_provider_static_options_release)
|
383 |
+
ZEND_FE(aws_crt_credentials_provider_static_options_set_access_key_id, arginfo_aws_crt_credentials_provider_static_options_set_access_key_id)
|
384 |
+
ZEND_FE(aws_crt_credentials_provider_static_options_set_secret_access_key, arginfo_aws_crt_credentials_provider_static_options_set_secret_access_key)
|
385 |
+
ZEND_FE(aws_crt_credentials_provider_static_options_set_session_token, arginfo_aws_crt_credentials_provider_static_options_set_session_token)
|
386 |
+
ZEND_FE(aws_crt_credentials_provider_static_new, arginfo_aws_crt_credentials_provider_static_new)
|
387 |
+
ZEND_FE(aws_crt_signing_config_aws_new, arginfo_aws_crt_signing_config_aws_new)
|
388 |
+
ZEND_FE(aws_crt_signing_config_aws_release, arginfo_aws_crt_signing_config_aws_release)
|
389 |
+
ZEND_FE(aws_crt_signing_config_aws_set_algorithm, arginfo_aws_crt_signing_config_aws_set_algorithm)
|
390 |
+
ZEND_FE(aws_crt_signing_config_aws_set_signature_type, arginfo_aws_crt_signing_config_aws_set_signature_type)
|
391 |
+
ZEND_FE(aws_crt_signing_config_aws_set_credentials_provider, arginfo_aws_crt_signing_config_aws_set_credentials_provider)
|
392 |
+
ZEND_FE(aws_crt_signing_config_aws_set_region, arginfo_aws_crt_signing_config_aws_set_region)
|
393 |
+
ZEND_FE(aws_crt_signing_config_aws_set_service, arginfo_aws_crt_signing_config_aws_set_service)
|
394 |
+
ZEND_FE(aws_crt_signing_config_aws_set_use_double_uri_encode, arginfo_aws_crt_signing_config_aws_set_use_double_uri_encode)
|
395 |
+
ZEND_FE(aws_crt_signing_config_aws_set_should_normalize_uri_path, arginfo_aws_crt_signing_config_aws_set_should_normalize_uri_path)
|
396 |
+
ZEND_FE(aws_crt_signing_config_aws_set_omit_session_token, arginfo_aws_crt_signing_config_aws_set_omit_session_token)
|
397 |
+
ZEND_FE(aws_crt_signing_config_aws_set_signed_body_value, arginfo_aws_crt_signing_config_aws_set_signed_body_value)
|
398 |
+
ZEND_FE(aws_crt_signing_config_aws_set_signed_body_header_type, arginfo_aws_crt_signing_config_aws_set_signed_body_header_type)
|
399 |
+
ZEND_FE(aws_crt_signing_config_aws_set_expiration_in_seconds, arginfo_aws_crt_signing_config_aws_set_expiration_in_seconds)
|
400 |
+
ZEND_FE(aws_crt_signing_config_aws_set_date, arginfo_aws_crt_signing_config_aws_set_date)
|
401 |
+
ZEND_FE(aws_crt_signing_config_aws_set_should_sign_header_fn, arginfo_aws_crt_signing_config_aws_set_should_sign_header_fn)
|
402 |
+
ZEND_FE(aws_crt_signable_new_from_http_request, arginfo_aws_crt_signable_new_from_http_request)
|
403 |
+
ZEND_FE(aws_crt_signable_new_from_chunk, arginfo_aws_crt_signable_new_from_chunk)
|
404 |
+
ZEND_FE(aws_crt_signable_new_from_canonical_request, arginfo_aws_crt_signable_new_from_canonical_request)
|
405 |
+
ZEND_FE(aws_crt_signable_release, arginfo_aws_crt_signable_release)
|
406 |
+
ZEND_FE(aws_crt_signing_result_release, arginfo_aws_crt_signing_result_release)
|
407 |
+
ZEND_FE(aws_crt_signing_result_apply_to_http_request, arginfo_aws_crt_signing_result_apply_to_http_request)
|
408 |
+
ZEND_FE(aws_crt_sign_request_aws, arginfo_aws_crt_sign_request_aws)
|
409 |
+
ZEND_FE(aws_crt_test_verify_sigv4a_signing, arginfo_aws_crt_test_verify_sigv4a_signing)
|
410 |
+
ZEND_FE(aws_crt_crc32, arginfo_aws_crt_crc32)
|
411 |
+
ZEND_FE(aws_crt_crc32c, arginfo_aws_crt_crc32c)
|
412 |
+
ZEND_FE_END
|
413 |
+
};
|
vendor_wpstg/aws/aws-crt-php/ext/crc.c
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
3 |
+
* SPDX-License-Identifier: Apache-2.0.
|
4 |
+
*/
|
5 |
+
|
6 |
+
#include "php_aws_crt.h"
|
7 |
+
|
8 |
+
PHP_FUNCTION(aws_crt_crc32) {
|
9 |
+
zend_ulong prev = 0;
|
10 |
+
const char *input = NULL;
|
11 |
+
size_t len = 0;
|
12 |
+
|
13 |
+
aws_php_parse_parameters("sl", &input, &len, &prev);
|
14 |
+
|
15 |
+
if (prev > UINT32_MAX) {
|
16 |
+
aws_php_throw_exception("previous crc cannot be larger than UINT32_MAX");
|
17 |
+
}
|
18 |
+
RETURN_LONG((zend_ulong)aws_crt_crc32((const uint8_t *)input, len, prev));
|
19 |
+
}
|
20 |
+
|
21 |
+
PHP_FUNCTION(aws_crt_crc32c) {
|
22 |
+
zend_ulong prev = 0;
|
23 |
+
const char *input = NULL;
|
24 |
+
size_t len = 0;
|
25 |
+
|
26 |
+
aws_php_parse_parameters("sl", &input, &len, &prev);
|
27 |
+
|
28 |
+
if (prev > UINT32_MAX) {
|
29 |
+
aws_php_throw_exception("previous crc cannot be larger than UINT32_MAX");
|
30 |
+
}
|
31 |
+
RETURN_LONG((zend_ulong)aws_crt_crc32c((const uint8_t *)input, len, prev));
|
32 |
+
}
|
vendor_wpstg/aws/aws-crt-php/ext/credentials.c
ADDED
@@ -0,0 +1,154 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
3 |
+
* SPDX-License-Identifier: Apache-2.0.
|
4 |
+
*/
|
5 |
+
|
6 |
+
#include "php_aws_crt.h"
|
7 |
+
|
8 |
+
PHP_FUNCTION(aws_crt_credentials_options_new) {
|
9 |
+
aws_crt_credentials_options *options = aws_crt_credentials_options_new();
|
10 |
+
RETURN_LONG((zend_ulong)options);
|
11 |
+
}
|
12 |
+
|
13 |
+
PHP_FUNCTION(aws_crt_credentials_options_release) {
|
14 |
+
zend_ulong php_options = 0;
|
15 |
+
|
16 |
+
aws_php_parse_parameters("l", &php_options);
|
17 |
+
|
18 |
+
aws_crt_credentials_options *options = (void *)php_options;
|
19 |
+
aws_crt_credentials_options_release(options);
|
20 |
+
}
|
21 |
+
|
22 |
+
PHP_FUNCTION(aws_crt_credentials_options_set_access_key_id) {
|
23 |
+
zend_ulong php_options = 0;
|
24 |
+
const char *access_key_id = NULL;
|
25 |
+
size_t access_key_id_len = 0;
|
26 |
+
|
27 |
+
aws_php_parse_parameters("ls", &php_options, &access_key_id, &access_key_id_len);
|
28 |
+
|
29 |
+
aws_crt_credentials_options *options = (void *)php_options;
|
30 |
+
aws_crt_credentials_options_set_access_key_id(options, (uint8_t *)access_key_id, access_key_id_len);
|
31 |
+
}
|
32 |
+
|
33 |
+
PHP_FUNCTION(aws_crt_credentials_options_set_secret_access_key) {
|
34 |
+
zend_ulong php_options = 0;
|
35 |
+
const char *secret_access_key = NULL;
|
36 |
+
size_t secret_access_key_len = 0;
|
37 |
+
|
38 |
+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "ls", &php_options, &secret_access_key, &secret_access_key_len) ==
|
39 |
+
FAILURE) {
|
40 |
+
RETURN_NULL();
|
41 |
+
}
|
42 |
+
|
43 |
+
aws_crt_credentials_options *options = (void *)php_options;
|
44 |
+
aws_crt_credentials_options_set_secret_access_key(options, (uint8_t *)secret_access_key, secret_access_key_len);
|
45 |
+
}
|
46 |
+
|
47 |
+
PHP_FUNCTION(aws_crt_credentials_options_set_session_token) {
|
48 |
+
zend_ulong php_options = 0;
|
49 |
+
const char *session_token = NULL;
|
50 |
+
size_t session_token_len = 0;
|
51 |
+
|
52 |
+
aws_php_parse_parameters("ls", &php_options, &session_token, &session_token_len);
|
53 |
+
|
54 |
+
aws_crt_credentials_options *options = (void *)php_options;
|
55 |
+
aws_crt_credentials_options_set_session_token(options, (uint8_t *)session_token, session_token_len);
|
56 |
+
}
|
57 |
+
|
58 |
+
PHP_FUNCTION(aws_crt_credentials_options_set_expiration_timepoint_seconds) {
|
59 |
+
zend_ulong php_options = 0;
|
60 |
+
zend_ulong expiration_timepoint_seconds = 0;
|
61 |
+
aws_php_parse_parameters("ll", &php_options, &expiration_timepoint_seconds);
|
62 |
+
|
63 |
+
aws_crt_credentials_options *options = (void *)php_options;
|
64 |
+
aws_crt_credentials_options_set_expiration_timepoint_seconds(options, expiration_timepoint_seconds);
|
65 |
+
}
|
66 |
+
|
67 |
+
PHP_FUNCTION(aws_crt_credentials_new) {
|
68 |
+
zend_ulong php_options = 0;
|
69 |
+
|
70 |
+
aws_php_parse_parameters("l", &php_options);
|
71 |
+
|
72 |
+
aws_crt_credentials_options *options = (void *)php_options;
|
73 |
+
aws_crt_credentials *credentials = aws_crt_credentials_new(options);
|
74 |
+
RETURN_LONG((zend_ulong)credentials);
|
75 |
+
}
|
76 |
+
|
77 |
+
PHP_FUNCTION(aws_crt_credentials_release) {
|
78 |
+
zend_ulong php_credentials = 0;
|
79 |
+
|
80 |
+
aws_php_parse_parameters("l", &php_credentials);
|
81 |
+
|
82 |
+
aws_crt_credentials *credentials = (void *)php_credentials;
|
83 |
+
aws_crt_credentials_release(credentials);
|
84 |
+
}
|
85 |
+
|
86 |
+
PHP_FUNCTION(aws_crt_credentials_provider_release) {
|
87 |
+
zend_ulong php_creds_provider = 0;
|
88 |
+
|
89 |
+
aws_php_parse_parameters("l", &php_creds_provider);
|
90 |
+
|
91 |
+
aws_crt_credentials_provider *provider = (void *)php_creds_provider;
|
92 |
+
aws_crt_credentials_provider_release(provider);
|
93 |
+
}
|
94 |
+
|
95 |
+
PHP_FUNCTION(aws_crt_credentials_provider_static_options_new) {
|
96 |
+
aws_crt_credentials_provider_static_options *options = aws_crt_credentials_provider_static_options_new();
|
97 |
+
RETURN_LONG((zend_ulong)options);
|
98 |
+
}
|
99 |
+
|
100 |
+
PHP_FUNCTION(aws_crt_credentials_provider_static_options_release) {
|
101 |
+
zend_ulong php_options = 0;
|
102 |
+
|
103 |
+
aws_php_parse_parameters("l", &php_options);
|
104 |
+
|
105 |
+
aws_crt_credentials_provider_static_options *options = (void *)php_options;
|
106 |
+
aws_crt_credentials_provider_static_options_release(options);
|
107 |
+
}
|
108 |
+
|
109 |
+
PHP_FUNCTION(aws_crt_credentials_provider_static_options_set_access_key_id) {
|
110 |
+
zend_ulong php_options = 0;
|
111 |
+
const char *access_key_id = NULL;
|
112 |
+
size_t access_key_id_len = 0;
|
113 |
+
|
114 |
+
aws_php_parse_parameters("ls", &php_options, &access_key_id, &access_key_id_len);
|
115 |
+
|
116 |
+
aws_crt_credentials_provider_static_options *options = (void *)php_options;
|
117 |
+
aws_crt_credentials_provider_static_options_set_access_key_id(options, (uint8_t *)access_key_id, access_key_id_len);
|
118 |
+
}
|
119 |
+
|
120 |
+
PHP_FUNCTION(aws_crt_credentials_provider_static_options_set_secret_access_key) {
|
121 |
+
zend_ulong php_options = 0;
|
122 |
+
const char *secret_access_key = NULL;
|
123 |
+
size_t secret_access_key_len = 0;
|
124 |
+
|
125 |
+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "ls", &php_options, &secret_access_key, &secret_access_key_len) ==
|
126 |
+
FAILURE) {
|
127 |
+
RETURN_NULL();
|
128 |
+
}
|
129 |
+
|
130 |
+
aws_crt_credentials_provider_static_options *options = (void *)php_options;
|
131 |
+
aws_crt_credentials_provider_static_options_set_secret_access_key(
|
132 |
+
options, (uint8_t *)secret_access_key, secret_access_key_len);
|
133 |
+
}
|
134 |
+
|
135 |
+
PHP_FUNCTION(aws_crt_credentials_provider_static_options_set_session_token) {
|
136 |
+
zend_ulong php_options = 0;
|
137 |
+
const char *session_token = NULL;
|
138 |
+
size_t session_token_len = 0;
|
139 |
+
|
140 |
+
aws_php_parse_parameters("ls", &php_options, &session_token, &session_token_len);
|
141 |
+
|
142 |
+
aws_crt_credentials_provider_static_options *options = (void *)php_options;
|
143 |
+
aws_crt_credentials_provider_static_options_set_session_token(options, (uint8_t *)session_token, session_token_len);
|
144 |
+
}
|
145 |
+
|
146 |
+
PHP_FUNCTION(aws_crt_credentials_provider_static_new) {
|
147 |
+
zend_ulong php_options = 0;
|
148 |
+
|
149 |
+
aws_php_parse_parameters("l", &php_options);
|
150 |
+
|
151 |
+
aws_crt_credentials_provider_static_options *options = (void *)php_options;
|
152 |
+
aws_crt_credentials_provider *provider = aws_crt_credentials_provider_static_new(options);
|
153 |
+
RETURN_LONG((zend_ulong)provider);
|
154 |
+
}
|
vendor_wpstg/aws/aws-crt-php/ext/crt.c
ADDED
@@ -0,0 +1,314 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
/**
|
3 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
4 |
+
* SPDX-License-Identifier: Apache-2.0.
|
5 |
+
*/
|
6 |
+
|
7 |
+
#include "php_aws_crt.h"
|
8 |
+
|
9 |
+
/* Helpful references for this extension:
|
10 |
+
* zend_parse_parameters and friends -
|
11 |
+
* https://git.php.net/?p=php-src.git;a=blob;f=docs/parameter-parsing-api.md;h=c962fc6ee58cc756aaac9e65759b7d5ea5c18fc4;hb=HEAD
|
12 |
+
* https://git.php.net/?p=php-src.git;a=blob;f=docs/self-contained-extensions.md;h=47f4c636baca8ca195118e2cc234ac7fd2842c1b;hb=HEAD
|
13 |
+
* Threads:
|
14 |
+
* http://blog.jpauli.tech/2017-01-12-threads-and-php-html/
|
15 |
+
* Examples:
|
16 |
+
* Curl extension: https://github.com/php/php-src/blob/PHP-5.6/ext/curl/interface.c
|
17 |
+
* libuv extension: https://github.com/amphp/ext-uv/blob/master/php_uv.c
|
18 |
+
*/
|
19 |
+
|
20 |
+
zval aws_php_invoke_callback(zval *callback, const char *arg_types, ...) {
|
21 |
+
|
22 |
+
char *error = NULL;
|
23 |
+
zend_fcall_info fci = {0};
|
24 |
+
zend_fcall_info_cache fcc = empty_fcall_info_cache;
|
25 |
+
if (zend_fcall_info_init(callback, IS_CALLABLE_CHECK_SYNTAX_ONLY, &fci, &fcc, NULL, &error) == FAILURE) {
|
26 |
+
aws_php_throw_exception("Unable to initialize callback from callable via zend_fcall_info_init: %s", error);
|
27 |
+
}
|
28 |
+
|
29 |
+
/* Allocate the stack frame of zval arguments and fill them in */
|
30 |
+
const size_t num_args = strlen(arg_types);
|
31 |
+
zval *stack = alloca(sizeof(zval) * num_args);
|
32 |
+
int arg_idx = 0;
|
33 |
+
va_list va;
|
34 |
+
va_start(va, arg_types);
|
35 |
+
while (arg_idx < num_args) {
|
36 |
+
const char arg_type = arg_types[arg_idx];
|
37 |
+
switch (arg_type) {
|
38 |
+
/* zval types */
|
39 |
+
case 'a':
|
40 |
+
case 'A':
|
41 |
+
case 'n':
|
42 |
+
case 'o':
|
43 |
+
case 'r':
|
44 |
+
case 'z': {
|
45 |
+
zval *zval_val = va_arg(va, zval *);
|
46 |
+
ZVAL_ZVAL(&stack[arg_idx], zval_val, 0, 0);
|
47 |
+
break;
|
48 |
+
}
|
49 |
+
/* buffers/strings (char *, size_t) */
|
50 |
+
case 'p':
|
51 |
+
case 's': {
|
52 |
+
const char *buf = va_arg(va, const char *);
|
53 |
+
const size_t len = va_arg(va, size_t);
|
54 |
+
aws_php_zval_stringl(&stack[arg_idx], buf, len);
|
55 |
+
break;
|
56 |
+
}
|
57 |
+
/* other primitives */
|
58 |
+
case 'b': {
|
59 |
+
zend_bool bool_val = va_arg(va, int);
|
60 |
+
ZVAL_BOOL(&stack[arg_idx], bool_val);
|
61 |
+
break;
|
62 |
+
}
|
63 |
+
case 'd': {
|
64 |
+
double double_val = va_arg(va, double);
|
65 |
+
ZVAL_DOUBLE(&stack[arg_idx], double_val);
|
66 |
+
break;
|
67 |
+
}
|
68 |
+
case 'l': {
|
69 |
+
zend_ulong long_val = va_arg(va, zend_ulong);
|
70 |
+
ZVAL_LONG(&stack[arg_idx], long_val);
|
71 |
+
break;
|
72 |
+
}
|
73 |
+
/* strings (zend_string), not supported in PHP 5.6, therefore not supported */
|
74 |
+
case 'P':
|
75 |
+
case 'S':
|
76 |
+
/* unsupported */
|
77 |
+
case 'C':
|
78 |
+
case 'f':
|
79 |
+
case 'h':
|
80 |
+
case 'H':
|
81 |
+
case 'O':
|
82 |
+
aws_php_throw_exception("Unsupported argument type to aws_php_invoke_callback: %c", arg_type);
|
83 |
+
break;
|
84 |
+
default:
|
85 |
+
aws_php_throw_exception("Unsupported argument type to aws_php_invoke_callback: %c", arg_type);
|
86 |
+
break;
|
87 |
+
}
|
88 |
+
++arg_idx;
|
89 |
+
}
|
90 |
+
va_end(va);
|
91 |
+
|
92 |
+
/* set up the stack for the call */
|
93 |
+
#if AWS_PHP_AT_LEAST_7
|
94 |
+
zend_fcall_info_argp(&fci, num_args, stack);
|
95 |
+
#else
|
96 |
+
/* PHP5.6 may mutate the arguments due to coercion */
|
97 |
+
zval **arg_ptrs = alloca(sizeof(zval *) * num_args);
|
98 |
+
zval ***args = alloca(sizeof(zval **) * num_args);
|
99 |
+
for (int arg_idx = 0; arg_idx < num_args; ++arg_idx) {
|
100 |
+
arg_ptrs[arg_idx] = &stack[arg_idx];
|
101 |
+
args[arg_idx] = &arg_ptrs[arg_idx];
|
102 |
+
}
|
103 |
+
fci.param_count = num_args;
|
104 |
+
fci.params = args;
|
105 |
+
#endif
|
106 |
+
|
107 |
+
zval retval;
|
108 |
+
/* PHP5 allocates its own return value, 7+ uses an existing one we provide */
|
109 |
+
#if !AWS_PHP_AT_LEAST_7
|
110 |
+
zval *retval5 = NULL;
|
111 |
+
fci.retval_ptr_ptr = &retval5;
|
112 |
+
#else
|
113 |
+
fci.retval = &retval;
|
114 |
+
#endif
|
115 |
+
|
116 |
+
if (zend_call_function(&fci, &fcc) == FAILURE) {
|
117 |
+
aws_php_throw_exception("zend_call_function failed in aws_php_invoke_callback");
|
118 |
+
}
|
119 |
+
|
120 |
+
#if !AWS_PHP_AT_LEAST_7
|
121 |
+
/* initialize the local retval from the retval in retval_ptr_ptr above */
|
122 |
+
if (retval5) {
|
123 |
+
ZVAL_ZVAL(&retval, retval5, 1, 1);
|
124 |
+
}
|
125 |
+
#endif
|
126 |
+
|
127 |
+
/* Clean up arguments */
|
128 |
+
#if AWS_PHP_AT_LEAST_7
|
129 |
+
zend_fcall_info_args_clear(&fci, 1);
|
130 |
+
#endif
|
131 |
+
|
132 |
+
return retval;
|
133 |
+
}
|
134 |
+
|
135 |
+
void aws_php_zval_stringl(zval *val, const char *str, size_t len) {
|
136 |
+
AWS_FATAL_ASSERT(val != NULL);
|
137 |
+
#if AWS_PHP_AT_LEAST_7
|
138 |
+
ZVAL_STRINGL(val, str, len);
|
139 |
+
#else
|
140 |
+
ZVAL_STRINGL(val, str, len, 1);
|
141 |
+
#endif
|
142 |
+
}
|
143 |
+
|
144 |
+
aws_php_thread_queue s_aws_php_main_thread_queue;
|
145 |
+
|
146 |
+
bool aws_php_is_main_thread(void) {
|
147 |
+
return s_aws_php_main_thread_queue.thread_id == aws_thread_current_thread_id();
|
148 |
+
}
|
149 |
+
|
150 |
+
void aws_php_thread_queue_init(aws_php_thread_queue *queue) {
|
151 |
+
aws_mutex_init(&queue->mutex);
|
152 |
+
memset(queue->queue, 0, sizeof(aws_php_task) * AWS_PHP_THREAD_QUEUE_MAX_DEPTH);
|
153 |
+
queue->write_slot = 0;
|
154 |
+
queue->thread_id = aws_thread_current_thread_id();
|
155 |
+
}
|
156 |
+
|
157 |
+
void aws_php_thread_queue_clean_up(aws_php_thread_queue *queue) {
|
158 |
+
assert(queue->write_slot == 0 && "aws_php_thread_queue cannot be cleaned up while queue is not empty");
|
159 |
+
aws_mutex_clean_up(&queue->mutex);
|
160 |
+
}
|
161 |
+
|
162 |
+
void aws_php_thread_queue_push(aws_php_thread_queue *queue, aws_php_task task) {
|
163 |
+
aws_mutex_lock(&queue->mutex);
|
164 |
+
assert(queue->write_slot < AWS_PHP_THREAD_QUEUE_MAX_DEPTH && "thread queue is full");
|
165 |
+
queue->queue[queue->write_slot++] = task;
|
166 |
+
aws_mutex_unlock(&queue->mutex);
|
167 |
+
}
|
168 |
+
|
169 |
+
bool aws_php_thread_queue_drain(aws_php_thread_queue *queue) {
|
170 |
+
assert(
|
171 |
+
queue->thread_id == aws_thread_current_thread_id() &&
|
172 |
+
"thread queue cannot be drained from a thread other than its home");
|
173 |
+
aws_php_task drain_queue[AWS_PHP_THREAD_QUEUE_MAX_DEPTH];
|
174 |
+
aws_mutex_lock(&queue->mutex);
|
175 |
+
/* copy any queued tasks into the drain queue, then reset the queue */
|
176 |
+
memcpy(drain_queue, queue->queue, sizeof(aws_php_task) * AWS_PHP_THREAD_QUEUE_MAX_DEPTH);
|
177 |
+
memset(queue->queue, 0, sizeof(aws_php_task) * AWS_PHP_THREAD_QUEUE_MAX_DEPTH);
|
178 |
+
queue->write_slot = 0;
|
179 |
+
aws_mutex_unlock(&queue->mutex);
|
180 |
+
|
181 |
+
bool did_work = false;
|
182 |
+
for (int idx = 0; idx < AWS_PHP_THREAD_QUEUE_MAX_DEPTH; ++idx) {
|
183 |
+
aws_php_task *task = &drain_queue[idx];
|
184 |
+
if (!task->callback) {
|
185 |
+
break;
|
186 |
+
}
|
187 |
+
did_work = true;
|
188 |
+
task->callback(task->data);
|
189 |
+
if (task->dtor) {
|
190 |
+
task->dtor(task->data);
|
191 |
+
}
|
192 |
+
}
|
193 |
+
|
194 |
+
return did_work;
|
195 |
+
}
|
196 |
+
|
197 |
+
/* called on main thread after delivery */
|
198 |
+
static void s_thread_queue_complete_promise(void *data) {
|
199 |
+
struct aws_promise *promise = data;
|
200 |
+
aws_promise_complete(promise, NULL, NULL);
|
201 |
+
}
|
202 |
+
|
203 |
+
/* called from worker thread to wait for the main thread to execute any queued work in PHP */
|
204 |
+
void aws_php_thread_queue_yield(aws_php_thread_queue *queue) {
|
205 |
+
/* If on the main thread, then just drain the queue */
|
206 |
+
if (aws_php_is_main_thread()) {
|
207 |
+
aws_php_thread_queue_drain(queue);
|
208 |
+
} else {
|
209 |
+
/* push a task onto the end of the queue, we will return once this task completes our promise */
|
210 |
+
struct aws_promise *queue_drained = aws_promise_new(aws_crt_default_allocator());
|
211 |
+
aws_php_task queue_drained_task = {
|
212 |
+
.callback = s_thread_queue_complete_promise,
|
213 |
+
.data = queue_drained,
|
214 |
+
};
|
215 |
+
aws_php_thread_queue_push(queue, queue_drained_task);
|
216 |
+
aws_promise_wait(queue_drained);
|
217 |
+
aws_promise_release(queue_drained);
|
218 |
+
}
|
219 |
+
}
|
220 |
+
|
221 |
+
/* called from PHP thread to wait on async queued jobs, one of which should complete the promise */
|
222 |
+
void aws_php_thread_queue_wait(aws_php_thread_queue *queue, struct aws_promise *promise) {
|
223 |
+
while (!aws_promise_is_complete(promise)) {
|
224 |
+
aws_php_thread_queue_drain(queue);
|
225 |
+
}
|
226 |
+
}
|
227 |
+
|
228 |
+
ZEND_DECLARE_MODULE_GLOBALS(awscrt);
|
229 |
+
|
230 |
+
PHP_INI_BEGIN()
|
231 |
+
STD_PHP_INI_ENTRY(
|
232 |
+
"awscrt.log_level",
|
233 |
+
"",
|
234 |
+
PHP_INI_ALL,
|
235 |
+
OnUpdateLongGEZero,
|
236 |
+
log_level,
|
237 |
+
zend_awscrt_globals,
|
238 |
+
awscrt_globals)
|
239 |
+
PHP_INI_END()
|
240 |
+
|
241 |
+
static PHP_MINIT_FUNCTION(awscrt) {
|
242 |
+
REGISTER_INI_ENTRIES();
|
243 |
+
|
244 |
+
/* prevent s2n from initializing/de-initializing OpenSSL/libcrypto */
|
245 |
+
aws_crt_crypto_share();
|
246 |
+
aws_crt_init();
|
247 |
+
aws_php_thread_queue_init(&s_aws_php_main_thread_queue);
|
248 |
+
return SUCCESS;
|
249 |
+
}
|
250 |
+
|
251 |
+
static PHP_MSHUTDOWN_FUNCTION(awscrt) {
|
252 |
+
UNREGISTER_INI_ENTRIES();
|
253 |
+
aws_php_thread_queue_clean_up(&s_aws_php_main_thread_queue);
|
254 |
+
aws_crt_thread_join_all(0);
|
255 |
+
aws_crt_clean_up();
|
256 |
+
return SUCCESS;
|
257 |
+
}
|
258 |
+
|
259 |
+
static PHP_GINIT_FUNCTION(awscrt) {
|
260 |
+
#if defined(COMPILE_DL_ASTKIT) && defined(ZTS)
|
261 |
+
ZEND_TSRMLS_CACHE_UPDATE();
|
262 |
+
#endif
|
263 |
+
awscrt_globals->log_level = 0;
|
264 |
+
}
|
265 |
+
|
266 |
+
zend_module_entry awscrt_module_entry = {
|
267 |
+
STANDARD_MODULE_HEADER,
|
268 |
+
"awscrt",
|
269 |
+
ext_functions, /* functions */
|
270 |
+
PHP_MINIT(awscrt),
|
271 |
+
PHP_MSHUTDOWN(awscrt),
|
272 |
+
NULL, /* RINIT */
|
273 |
+
NULL, /* RSHUTDOWN */
|
274 |
+
NULL, /* MINFO */
|
275 |
+
NO_VERSION_YET,
|
276 |
+
PHP_MODULE_GLOBALS(awscrt),
|
277 |
+
PHP_GINIT(awscrt),
|
278 |
+
NULL, /* GSHUTDOWN */
|
279 |
+
NULL, /* RPOSTSHUTDOWN */
|
280 |
+
STANDARD_MODULE_PROPERTIES_EX,
|
281 |
+
};
|
282 |
+
|
283 |
+
#ifdef COMPILE_DL_AWSCRT
|
284 |
+
ZEND_GET_MODULE(awscrt)
|
285 |
+
#endif
|
286 |
+
|
287 |
+
/* aws_crt_last_error() */
|
288 |
+
PHP_FUNCTION(aws_crt_last_error) {
|
289 |
+
RETURN_LONG(aws_crt_last_error());
|
290 |
+
}
|
291 |
+
|
292 |
+
/* aws_crt_error_str(int error_code) */
|
293 |
+
PHP_FUNCTION(aws_crt_error_str) {
|
294 |
+
zend_ulong error_code = 0;
|
295 |
+
aws_php_parse_parameters("l", &error_code);
|
296 |
+
|
297 |
+
XRETURN_STRING(aws_crt_error_str(error_code));
|
298 |
+
}
|
299 |
+
|
300 |
+
/* aws_crt_error_name(int error_code) */
|
301 |
+
PHP_FUNCTION(aws_crt_error_name) {
|
302 |
+
zend_ulong error_code = 0;
|
303 |
+
aws_php_parse_parameters("l", &error_code);
|
304 |
+
|
305 |
+
XRETURN_STRING(aws_crt_error_name(error_code));
|
306 |
+
}
|
307 |
+
|
308 |
+
/* aws_crt_error_debug_str(int error_code) */
|
309 |
+
PHP_FUNCTION(aws_crt_error_debug_str) {
|
310 |
+
zend_ulong error_code = 0;
|
311 |
+
aws_php_parse_parameters("l", &error_code);
|
312 |
+
|
313 |
+
XRETURN_STRING(aws_crt_error_debug_str(error_code));
|
314 |
+
}
|
vendor_wpstg/aws/aws-crt-php/ext/event_loop.c
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
3 |
+
* SPDX-License-Identifier: Apache-2.0.
|
4 |
+
*/
|
5 |
+
|
6 |
+
#include "php_aws_crt.h"
|
7 |
+
|
8 |
+
PHP_FUNCTION(aws_crt_event_loop_group_options_new) {
|
9 |
+
aws_php_parse_parameters_none();
|
10 |
+
aws_crt_event_loop_group_options *options = aws_crt_event_loop_group_options_new();
|
11 |
+
RETURN_LONG((zend_ulong)options);
|
12 |
+
}
|
13 |
+
|
14 |
+
PHP_FUNCTION(aws_crt_event_loop_group_options_release) {
|
15 |
+
zend_ulong php_options = 0;
|
16 |
+
aws_php_parse_parameters("l", &php_options);
|
17 |
+
|
18 |
+
aws_crt_event_loop_group_options *options = (void *)php_options;
|
19 |
+
aws_crt_event_loop_group_options_release(options);
|
20 |
+
}
|
21 |
+
|
22 |
+
PHP_FUNCTION(aws_crt_event_loop_group_options_set_max_threads) {
|
23 |
+
zend_ulong php_options = 0;
|
24 |
+
zend_ulong num_threads = 0;
|
25 |
+
aws_php_parse_parameters("ll", &php_options, &num_threads);
|
26 |
+
|
27 |
+
aws_crt_event_loop_group_options *options = (void *)php_options;
|
28 |
+
aws_crt_event_loop_group_options_set_max_threads(options, num_threads);
|
29 |
+
}
|
30 |
+
|
31 |
+
PHP_FUNCTION(aws_crt_event_loop_group_new) {
|
32 |
+
zend_ulong php_options = 0;
|
33 |
+
|
34 |
+
aws_php_parse_parameters("l", &php_options);
|
35 |
+
|
36 |
+
aws_crt_event_loop_group_options *options = (void *)php_options;
|
37 |
+
aws_crt_event_loop_group *elg = aws_crt_event_loop_group_new(options);
|
38 |
+
RETURN_LONG((zend_ulong)elg);
|
39 |
+
}
|
40 |
+
|
41 |
+
PHP_FUNCTION(aws_crt_event_loop_group_release) {
|
42 |
+
zend_ulong php_elg = 0;
|
43 |
+
|
44 |
+
aws_php_parse_parameters("l", &php_elg);
|
45 |
+
|
46 |
+
aws_crt_event_loop_group *elg = (void *)php_elg;
|
47 |
+
aws_crt_event_loop_group_release(elg);
|
48 |
+
}
|
vendor_wpstg/aws/aws-crt-php/ext/http.c
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
3 |
+
* SPDX-License-Identifier: Apache-2.0.
|
4 |
+
*/
|
5 |
+
|
6 |
+
#include "php_aws_crt.h"
|
7 |
+
|
8 |
+
PHP_FUNCTION(aws_crt_http_message_new_from_blob) {
|
9 |
+
const char *blob = NULL;
|
10 |
+
size_t blob_len = 0;
|
11 |
+
|
12 |
+
aws_php_parse_parameters("s", &blob, &blob_len);
|
13 |
+
|
14 |
+
aws_crt_http_message *message = aws_crt_http_message_new_from_blob((uint8_t *)blob, blob_len);
|
15 |
+
RETURN_LONG((zend_ulong)message);
|
16 |
+
}
|
17 |
+
|
18 |
+
PHP_FUNCTION(aws_crt_http_message_to_blob) {
|
19 |
+
zend_ulong php_msg = 0;
|
20 |
+
|
21 |
+
aws_php_parse_parameters("l", &php_msg);
|
22 |
+
|
23 |
+
aws_crt_http_message *message = (void *)php_msg;
|
24 |
+
aws_crt_buf blob;
|
25 |
+
aws_crt_http_message_to_blob(message, &blob);
|
26 |
+
XRETURN_STRINGL((const char *)blob.blob, blob.length);
|
27 |
+
}
|
28 |
+
|
29 |
+
PHP_FUNCTION(aws_crt_http_message_release) {
|
30 |
+
zend_ulong php_msg = 0;
|
31 |
+
|
32 |
+
aws_php_parse_parameters("l", &php_msg);
|
33 |
+
|
34 |
+
aws_crt_http_message *message = (void *)php_msg;
|
35 |
+
aws_crt_http_message_release(message);
|
36 |
+
}
|
vendor_wpstg/aws/aws-crt-php/ext/logging.c
ADDED
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
3 |
+
* SPDX-License-Identifier: Apache-2.0.
|
4 |
+
*/
|
5 |
+
|
6 |
+
#include "php_aws_crt.h"
|
7 |
+
|
8 |
+
PHP_FUNCTION(aws_crt_log_to_stdout) {
|
9 |
+
aws_php_parse_parameters_none();
|
10 |
+
aws_crt_log_to_stdout();
|
11 |
+
}
|
12 |
+
|
13 |
+
PHP_FUNCTION(aws_crt_log_to_stderr) {
|
14 |
+
aws_php_parse_parameters_none();
|
15 |
+
aws_crt_log_to_stderr();
|
16 |
+
}
|
17 |
+
|
18 |
+
PHP_FUNCTION(aws_crt_log_to_file) {
|
19 |
+
const char *filename = NULL;
|
20 |
+
size_t filename_len = 0;
|
21 |
+
/* read the filename as a path, which guarantees no NUL bytes */
|
22 |
+
aws_php_parse_parameters("p", &filename, &filename_len);
|
23 |
+
aws_crt_log_to_file(filename);
|
24 |
+
}
|
25 |
+
|
26 |
+
static void php_crt_log(const char *message, size_t len, void *user_data) {
|
27 |
+
php_stream *stream = user_data;
|
28 |
+
php_stream_write(stream, message, len);
|
29 |
+
php_stream_flush(stream);
|
30 |
+
}
|
31 |
+
|
32 |
+
PHP_FUNCTION(aws_crt_log_to_stream) {
|
33 |
+
zval *php_log_stream = NULL;
|
34 |
+
aws_php_parse_parameters("r", &php_log_stream);
|
35 |
+
|
36 |
+
if (php_log_stream) {
|
37 |
+
php_stream *stream = NULL;
|
38 |
+
Z_ADDREF(*php_log_stream);
|
39 |
+
AWS_PHP_STREAM_FROM_ZVAL(stream, php_log_stream);
|
40 |
+
aws_crt_log_to_callback((aws_crt_log_callback *)php_crt_log, stream);
|
41 |
+
} else {
|
42 |
+
aws_crt_log_to_callback(NULL, NULL);
|
43 |
+
}
|
44 |
+
}
|
45 |
+
|
46 |
+
PHP_FUNCTION(aws_crt_log_set_level) {
|
47 |
+
zend_ulong log_level = 0;
|
48 |
+
aws_php_parse_parameters("l", &log_level);
|
49 |
+
aws_crt_log_set_level((aws_crt_log_level)log_level);
|
50 |
+
}
|
51 |
+
|
52 |
+
PHP_FUNCTION(aws_crt_log_stop) {
|
53 |
+
aws_php_parse_parameters_none();
|
54 |
+
aws_crt_log_stop();
|
55 |
+
}
|
56 |
+
|
57 |
+
PHP_FUNCTION(aws_crt_log_message) {
|
58 |
+
zend_ulong log_level = 0;
|
59 |
+
const char *message = NULL;
|
60 |
+
size_t message_len = 0;
|
61 |
+
|
62 |
+
aws_php_parse_parameters("ls", &log_level, &message, &message_len);
|
63 |
+
|
64 |
+
aws_crt_log_message((aws_crt_log_level)log_level, (const uint8_t *)message, message_len);
|
65 |
+
}
|
vendor_wpstg/aws/aws-crt-php/ext/php_aws_crt.h
ADDED
@@ -0,0 +1,171 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
#ifndef PHP_AWS_CRT_H
|
3 |
+
#define PHP_AWS_CRT_H
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
7 |
+
* SPDX-License-Identifier: Apache-2.0.
|
8 |
+
*/
|
9 |
+
|
10 |
+
#ifdef HAVE_CONFIG_H
|
11 |
+
# include "config.h"
|
12 |
+
#endif
|
13 |
+
|
14 |
+
#include "php.h"
|
15 |
+
|
16 |
+
#include "Zend/zend_extensions.h" /* for ZEND_EXTENSION_API_NO */
|
17 |
+
|
18 |
+
#include <aws/common/common.h>
|
19 |
+
#include <aws/common/mutex.h>
|
20 |
+
#include <aws/common/promise.h>
|
21 |
+
#include <aws/common/thread.h>
|
22 |
+
|
23 |
+
/* ZEND_EXTENSION_API_NO from each branch of the PHP source */
|
24 |
+
#define AWS_PHP_EXTENSION_API_5_5 220121212
|
25 |
+
#define AWS_PHP_EXTENSION_API_5_6 220131226
|
26 |
+
#define AWS_PHP_EXTENSION_API_7_0 320151012
|
27 |
+
#define AWS_PHP_EXTENSION_API_7_1 320160303
|
28 |
+
#define AWS_PHP_EXTENSION_API_7_2 320170718
|
29 |
+
#define AWS_PHP_EXTENSION_API_7_3 320180731
|
30 |
+
#define AWS_PHP_EXTENSION_API_7_4 320190902
|
31 |
+
#define AWS_PHP_EXTENSION_API_8_0 420200930
|
32 |
+
|
33 |
+
#if ZEND_EXTENSION_API_NO < AWS_PHP_EXTENSION_API_5_5
|
34 |
+
# error "PHP >= 5.5 is required"
|
35 |
+
#endif
|
36 |
+
|
37 |
+
#define AWS_PHP_AT_LEAST_7 (ZEND_EXTENSION_API_NO >= AWS_PHP_EXTENSION_API_7_0)
|
38 |
+
#define AWS_PHP_AT_LEAST_7_2 (ZEND_EXTENSION_API_NO >= AWS_PHP_EXTENSION_API_7_2)
|
39 |
+
|
40 |
+
ZEND_BEGIN_MODULE_GLOBALS(awscrt)
|
41 |
+
long log_level;
|
42 |
+
ZEND_END_MODULE_GLOBALS(awscrt)
|
43 |
+
|
44 |
+
ZEND_EXTERN_MODULE_GLOBALS(awscrt)
|
45 |
+
|
46 |
+
#define AWSCRT_GLOBAL(v) ZEND_MODULE_GLOBALS_ACCESSOR(awscrt, v)
|
47 |
+
|
48 |
+
#if AWS_PHP_AT_LEAST_7
|
49 |
+
/* PHP 7 takes a zval*, PHP5 takes a zval** */
|
50 |
+
# define AWS_PHP_STREAM_FROM_ZVAL(s, z) php_stream_from_zval(s, z)
|
51 |
+
#define XRETURN_STRINGL RETURN_STRINGL
|
52 |
+
#define XRETURN_STRING RETURN_STRING
|
53 |
+
#define XRETVAL_STRINGL RETVAL_STRINGL
|
54 |
+
#define XRETVAL_STRING RETVAL_STRING
|
55 |
+
#else /* PHP 5.5-5.6 */
|
56 |
+
# define AWS_PHP_STREAM_FROM_ZVAL(s, z) php_stream_from_zval(s, &z)
|
57 |
+
#define XRETURN_STRINGL(s, l) RETURN_STRINGL(s, l, 1)
|
58 |
+
#define XRETURN_STRING(s) RETURN_STRING(s, 1)
|
59 |
+
#define XRETVAL_STRINGL(s, l) RETVAL_STRINGL(s, l, 1)
|
60 |
+
#define XRETVAL_STRING(s) RETVAL_STRING(s, 1)
|
61 |
+
#endif /* PHP 5.x */
|
62 |
+
|
63 |
+
#include "api.h"
|
64 |
+
#include "awscrt_arginfo.h"
|
65 |
+
|
66 |
+
/* Utility macros borrowed from common */
|
67 |
+
#define GLUE(x, y) x y
|
68 |
+
|
69 |
+
#define RETURN_ARG_COUNT(_1_, _2_, _3_, _4_, _5_, count, ...) count
|
70 |
+
#define EXPAND_ARGS(args) RETURN_ARG_COUNT args
|
71 |
+
#define COUNT_ARGS_MAX5(...) EXPAND_ARGS((__VA_ARGS__, 5, 4, 3, 2, 1, 0))
|
72 |
+
|
73 |
+
#define OVERLOAD_MACRO2(name, count) name##count
|
74 |
+
#define OVERLOAD_MACRO1(name, count) OVERLOAD_MACRO2(name, count)
|
75 |
+
#define OVERLOAD_MACRO(name, count) OVERLOAD_MACRO1(name, count)
|
76 |
+
|
77 |
+
#define CALL_OVERLOAD(name, ...) GLUE(OVERLOAD_MACRO(name, COUNT_ARGS_MAX5(__VA_ARGS__)), (__VA_ARGS__))
|
78 |
+
|
79 |
+
#define VARIABLE_LENGTH_ARRAY(type, name, length) type *name = alloca(sizeof(type) * (length))
|
80 |
+
|
81 |
+
/*
|
82 |
+
* PHP utility APIs for this extension
|
83 |
+
*/
|
84 |
+
/*
|
85 |
+
* Exception throwing mechanism, will never return
|
86 |
+
*/
|
87 |
+
#define aws_php_throw_exception(...) CALL_OVERLOAD(_AWS_PHP_THROW_EXCEPTION, __VA_ARGS__);
|
88 |
+
#define _AWS_PHP_THROW_EXCEPTION5(format, ...) zend_error_noreturn(E_ERROR, format, __VA_ARGS__)
|
89 |
+
#define _AWS_PHP_THROW_EXCEPTION4(format, ...) zend_error_noreturn(E_ERROR, format, __VA_ARGS__)
|
90 |
+
#define _AWS_PHP_THROW_EXCEPTION3(format, ...) zend_error_noreturn(E_ERROR, format, __VA_ARGS__)
|
91 |
+
#define _AWS_PHP_THROW_EXCEPTION2(format, ...) zend_error_noreturn(E_ERROR, format, __VA_ARGS__)
|
92 |
+
#define _AWS_PHP_THROW_EXCEPTION1(format) zend_error_noreturn(E_ERROR, format)
|
93 |
+
|
94 |
+
/**
|
95 |
+
* throws an exception resulting from argument parsing, notes the current function name in the exception
|
96 |
+
*/
|
97 |
+
#define aws_php_argparse_fail() \
|
98 |
+
do { \
|
99 |
+
aws_php_throw_exception("Failed to parse arguments to %s", __func__); \
|
100 |
+
} while (0)
|
101 |
+
|
102 |
+
/**
|
103 |
+
* calls zend_parse_parameters() with the arguments and throws an exception if parsing fails
|
104 |
+
*/
|
105 |
+
#define aws_php_parse_parameters(type_spec, ...) \
|
106 |
+
do { \
|
107 |
+
if (zend_parse_parameters(ZEND_NUM_ARGS(), type_spec, __VA_ARGS__) == FAILURE) { \
|
108 |
+
aws_php_argparse_fail(); \
|
109 |
+
} \
|
110 |
+
} while (0)
|
111 |
+
|
112 |
+
/**
|
113 |
+
* calls zend_parse_parameters_none() and throws an exception if parsing fails
|
114 |
+
*/
|
115 |
+
#define aws_php_parse_parameters_none() \
|
116 |
+
do { \
|
117 |
+
if (zend_parse_parameters_none() == FAILURE) { \
|
118 |
+
aws_php_argparse_fail(); \
|
119 |
+
} \
|
120 |
+
} while (0)
|
121 |
+
|
122 |
+
/* PHP/Zend utility functions to work across PHP versions */
|
123 |
+
zval *aws_php_zval_new(void);
|
124 |
+
void aws_php_zval_dtor(void *zval_ptr);
|
125 |
+
bool aws_php_zval_as_bool(zval *z);
|
126 |
+
void aws_php_zval_copy(zval *dest, zval *src);
|
127 |
+
/**
|
128 |
+
* Replacement for ZVAL_STRINGL that is PHP version agnostic
|
129 |
+
*/
|
130 |
+
void aws_php_zval_stringl(zval *val, const char *str, size_t len);
|
131 |
+
|
132 |
+
/* Thread queue functions for managing PHP's optional threading situation */
|
133 |
+
typedef struct _aws_php_task {
|
134 |
+
void (*callback)(void *); /* task function */
|
135 |
+
void (*dtor)(void *); /* deletes task_data, if non-null */
|
136 |
+
void *data;
|
137 |
+
} aws_php_task;
|
138 |
+
|
139 |
+
/* maximum number of queued callbacks to execute at once. Since this is to support single-threaded usage,
|
140 |
+
* this can be a fairly small number, as how many callbacks could we reasonably be stacking up?! */
|
141 |
+
#define AWS_PHP_THREAD_QUEUE_MAX_DEPTH 32
|
142 |
+
|
143 |
+
typedef struct _aws_php_thread_queue {
|
144 |
+
struct aws_mutex mutex;
|
145 |
+
aws_php_task queue[AWS_PHP_THREAD_QUEUE_MAX_DEPTH];
|
146 |
+
size_t write_slot;
|
147 |
+
aws_thread_id_t thread_id;
|
148 |
+
} aws_php_thread_queue;
|
149 |
+
|
150 |
+
extern aws_php_thread_queue s_aws_php_main_thread_queue;
|
151 |
+
bool aws_php_is_main_thread(void);
|
152 |
+
|
153 |
+
void aws_php_thread_queue_init(aws_php_thread_queue *queue);
|
154 |
+
void aws_php_thread_queue_clean_up(aws_php_thread_queue *queue);
|
155 |
+
void aws_php_thread_queue_push(aws_php_thread_queue *queue, aws_php_task task);
|
156 |
+
bool aws_php_thread_queue_drain(aws_php_thread_queue *queue);
|
157 |
+
|
158 |
+
/* called from worker thread to wait for the main thread to execute any queued work in PHP */
|
159 |
+
void aws_php_thread_queue_yield(aws_php_thread_queue *queue);
|
160 |
+
|
161 |
+
/* called from PHP thread to wait on async queued jobs, one of which MUST complete the promise */
|
162 |
+
void aws_php_thread_queue_wait(aws_php_thread_queue *queue, struct aws_promise *promise);
|
163 |
+
|
164 |
+
/**
|
165 |
+
* generic dispatch mechanism to call a callback provided as a zval with arguments
|
166 |
+
* that are converted to zvals based on the arg_types format string
|
167 |
+
* Uses the same format string as zend_parse_parameters
|
168 |
+
*/
|
169 |
+
zval aws_php_invoke_callback(zval *callback, const char *arg_types, ...);
|
170 |
+
|
171 |
+
#endif /* PHP_AWS_CRT_H */
|
vendor_wpstg/aws/aws-crt-php/ext/php_util.c
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
/**
|
3 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
4 |
+
* SPDX-License-Identifier: Apache-2.0.
|
5 |
+
*/
|
6 |
+
|
7 |
+
#include "php_aws_crt.h"
|
8 |
+
|
9 |
+
zval *aws_php_zval_new(void) {
|
10 |
+
return emalloc(sizeof(zval));
|
11 |
+
}
|
12 |
+
|
13 |
+
void aws_php_zval_dtor(void *zval_ptr) {
|
14 |
+
zval *z = zval_ptr;
|
15 |
+
zval_dtor(z);
|
16 |
+
efree(z);
|
17 |
+
}
|
18 |
+
|
19 |
+
bool aws_php_zval_as_bool(zval *z) {
|
20 |
+
#if AWS_PHP_AT_LEAST_7
|
21 |
+
return (Z_TYPE_P(z) == IS_TRUE);
|
22 |
+
#else
|
23 |
+
return (Z_TYPE_P(z) == IS_BOOL && Z_LVAL_P(z) != 0);
|
24 |
+
#endif
|
25 |
+
}
|
26 |
+
|
27 |
+
void aws_php_zval_copy(zval *dest, zval *src) {
|
28 |
+
#if AWS_PHP_AT_LEAST_7
|
29 |
+
ZVAL_COPY(dest, src);
|
30 |
+
#else
|
31 |
+
ZVAL_COPY_VALUE(dest, src);
|
32 |
+
#endif
|
33 |
+
}
|
vendor_wpstg/aws/aws-crt-php/ext/signing.c
ADDED
@@ -0,0 +1,374 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
3 |
+
* SPDX-License-Identifier: Apache-2.0.
|
4 |
+
*/
|
5 |
+
|
6 |
+
#include "php_aws_crt.h"
|
7 |
+
|
8 |
+
PHP_FUNCTION(aws_crt_signing_config_aws_new) {
|
9 |
+
if (zend_parse_parameters_none() == FAILURE) {
|
10 |
+
RETURN_NULL();
|
11 |
+
}
|
12 |
+
|
13 |
+
aws_crt_signing_config_aws *signing_config = aws_crt_signing_config_aws_new();
|
14 |
+
RETURN_LONG((zend_ulong)signing_config);
|
15 |
+
}
|
16 |
+
|
17 |
+
PHP_FUNCTION(aws_crt_signing_config_aws_release) {
|
18 |
+
zend_ulong php_signing_config = 0;
|
19 |
+
|
20 |
+
aws_php_parse_parameters("l", &php_signing_config);
|
21 |
+
|
22 |
+
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
23 |
+
aws_crt_signing_config_aws_release(signing_config);
|
24 |
+
}
|
25 |
+
|
26 |
+
PHP_FUNCTION(aws_crt_signing_config_aws_set_algorithm) {
|
27 |
+
zend_ulong php_signing_config = 0;
|
28 |
+
zend_ulong php_algorithm = 0;
|
29 |
+
|
30 |
+
aws_php_parse_parameters("ll", &php_signing_config, &php_algorithm);
|
31 |
+
|
32 |
+
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
33 |
+
aws_crt_signing_algorithm algorithm = php_algorithm;
|
34 |
+
aws_crt_signing_config_aws_set_algorithm(signing_config, algorithm);
|
35 |
+
}
|
36 |
+
|
37 |
+
PHP_FUNCTION(aws_crt_signing_config_aws_set_signature_type) {
|
38 |
+
zend_ulong php_signing_config = 0;
|
39 |
+
zend_ulong php_signature_type = 0;
|
40 |
+
|
41 |
+
aws_php_parse_parameters("ll", &php_signing_config, &php_signature_type);
|
42 |
+
|
43 |
+
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
44 |
+
aws_crt_signature_type signature_type = php_signature_type;
|
45 |
+
aws_crt_signing_config_aws_set_signature_type(signing_config, signature_type);
|
46 |
+
}
|
47 |
+
|
48 |
+
PHP_FUNCTION(aws_crt_signing_config_aws_set_credentials_provider) {
|
49 |
+
zend_ulong php_signing_config = 0;
|
50 |
+
zend_ulong php_credentials_provider = 0;
|
51 |
+
|
52 |
+
aws_php_parse_parameters("ll", &php_signing_config, &php_credentials_provider);
|
53 |
+
|
54 |
+
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
55 |
+
aws_crt_credentials_provider *credentials_provider = (void *)php_credentials_provider;
|
56 |
+
aws_crt_signing_config_aws_set_credentials_provider(signing_config, credentials_provider);
|
57 |
+
}
|
58 |
+
|
59 |
+
PHP_FUNCTION(aws_crt_signing_config_aws_set_region) {
|
60 |
+
zend_ulong php_signing_config = 0;
|
61 |
+
const char *region = NULL;
|
62 |
+
size_t region_len = 0;
|
63 |
+
|
64 |
+
aws_php_parse_parameters("ls", &php_signing_config, ®ion, ®ion_len);
|
65 |
+
|
66 |
+
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
67 |
+
aws_crt_signing_config_aws_set_region(signing_config, (uint8_t *)region, region_len);
|
68 |
+
}
|
69 |
+
|
70 |
+
PHP_FUNCTION(aws_crt_signing_config_aws_set_service) {
|
71 |
+
zend_ulong php_signing_config = 0;
|
72 |
+
const char *service = NULL;
|
73 |
+
size_t service_len = 0;
|
74 |
+
|
75 |
+
aws_php_parse_parameters("ls", &php_signing_config, &service, &service_len);
|
76 |
+
|
77 |
+
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
78 |
+
aws_crt_signing_config_aws_set_service(signing_config, (uint8_t *)service, service_len);
|
79 |
+
}
|
80 |
+
|
81 |
+
PHP_FUNCTION(aws_crt_signing_config_aws_set_use_double_uri_encode) {
|
82 |
+
zend_ulong php_signing_config = 0;
|
83 |
+
zend_bool php_use_double_uri_encode = 0;
|
84 |
+
|
85 |
+
aws_php_parse_parameters("lb", &php_signing_config, &php_use_double_uri_encode);
|
86 |
+
|
87 |
+
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
88 |
+
aws_crt_signing_config_aws_set_use_double_uri_encode(signing_config, php_use_double_uri_encode);
|
89 |
+
}
|
90 |
+
|
91 |
+
PHP_FUNCTION(aws_crt_signing_config_aws_set_should_normalize_uri_path) {
|
92 |
+
zend_ulong php_signing_config = 0;
|
93 |
+
zend_bool php_should_normalize_uri_path = 0;
|
94 |
+
|
95 |
+
aws_php_parse_parameters("lb", &php_signing_config, &php_should_normalize_uri_path);
|
96 |
+
|
97 |
+
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
98 |
+
aws_crt_signing_config_aws_set_should_normalize_uri_path(signing_config, php_should_normalize_uri_path);
|
99 |
+
}
|
100 |
+
|
101 |
+
PHP_FUNCTION(aws_crt_signing_config_aws_set_omit_session_token) {
|
102 |
+
zend_ulong php_signing_config = 0;
|
103 |
+
zend_bool php_omit_session_token = 0;
|
104 |
+
|
105 |
+
aws_php_parse_parameters("lb", &php_signing_config, &php_omit_session_token);
|
106 |
+
|
107 |
+
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
108 |
+
aws_crt_signing_config_aws_set_omit_session_token(signing_config, php_omit_session_token);
|
109 |
+
}
|
110 |
+
|
111 |
+
PHP_FUNCTION(aws_crt_signing_config_aws_set_signed_body_value) {
|
112 |
+
zend_ulong php_signing_config = 0;
|
113 |
+
const char *signed_body_value = NULL;
|
114 |
+
size_t signed_body_value_len = 0;
|
115 |
+
|
116 |
+
aws_php_parse_parameters("ls", &php_signing_config, &signed_body_value, &signed_body_value_len);
|
117 |
+
|
118 |
+
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
119 |
+
aws_crt_signing_config_aws_set_signed_body_value(
|
120 |
+
signing_config, (uint8_t *)signed_body_value, signed_body_value_len);
|
121 |
+
}
|
122 |
+
|
123 |
+
PHP_FUNCTION(aws_crt_signing_config_aws_set_signed_body_header_type) {
|
124 |
+
zend_ulong php_signing_config = 0;
|
125 |
+
zend_ulong php_signed_body_header_type = 0;
|
126 |
+
|
127 |
+
aws_php_parse_parameters("ll", &php_signing_config, &php_signed_body_header_type);
|
128 |
+
|
129 |
+
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
130 |
+
aws_crt_signed_body_header_type signed_body_header_type = php_signed_body_header_type;
|
131 |
+
aws_crt_signing_config_aws_set_signed_body_header_type(signing_config, signed_body_header_type);
|
132 |
+
}
|
133 |
+
|
134 |
+
PHP_FUNCTION(aws_crt_signing_config_aws_set_expiration_in_seconds) {
|
135 |
+
zend_ulong php_signing_config = 0;
|
136 |
+
zend_ulong php_expiration_in_seconds = 0;
|
137 |
+
|
138 |
+
aws_php_parse_parameters("ll", &php_signing_config, &php_expiration_in_seconds);
|
139 |
+
|
140 |
+
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
141 |
+
aws_crt_signing_config_aws_set_expiration_in_seconds(signing_config, php_expiration_in_seconds);
|
142 |
+
}
|
143 |
+
|
144 |
+
PHP_FUNCTION(aws_crt_signing_config_aws_set_date) {
|
145 |
+
zend_ulong php_signing_config = 0;
|
146 |
+
zend_ulong php_timestamp = 0;
|
147 |
+
|
148 |
+
aws_php_parse_parameters("ll", &php_signing_config, &php_timestamp);
|
149 |
+
|
150 |
+
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
151 |
+
aws_crt_signing_config_aws_set_date(signing_config, php_timestamp);
|
152 |
+
}
|
153 |
+
|
154 |
+
typedef struct _should_sign_header_data {
|
155 |
+
zval *should_sign_header;
|
156 |
+
zval *header_name;
|
157 |
+
bool result;
|
158 |
+
} should_sign_header_data;
|
159 |
+
|
160 |
+
static void should_sign_header_task(void *data) {
|
161 |
+
should_sign_header_data *task = data;
|
162 |
+
zval result = aws_php_invoke_callback(task->should_sign_header, "z", task->header_name);
|
163 |
+
task->result = aws_php_zval_as_bool(&result);
|
164 |
+
zval_dtor(&result);
|
165 |
+
}
|
166 |
+
|
167 |
+
static bool aws_php_should_sign_header(const char *header_name, size_t header_length, void *user_data) {
|
168 |
+
zval php_header_name;
|
169 |
+
aws_php_zval_stringl(&php_header_name, header_name, header_length);
|
170 |
+
|
171 |
+
should_sign_header_data task_data = {
|
172 |
+
.should_sign_header = user_data,
|
173 |
+
.header_name = &php_header_name,
|
174 |
+
.result = false,
|
175 |
+
};
|
176 |
+
|
177 |
+
aws_php_task task = {
|
178 |
+
.callback = should_sign_header_task,
|
179 |
+
.data = &task_data,
|
180 |
+
};
|
181 |
+
|
182 |
+
aws_php_thread_queue_push(&s_aws_php_main_thread_queue, task);
|
183 |
+
aws_php_thread_queue_yield(&s_aws_php_main_thread_queue);
|
184 |
+
|
185 |
+
zval_dtor(&php_header_name);
|
186 |
+
|
187 |
+
return task_data.result;
|
188 |
+
}
|
189 |
+
|
190 |
+
PHP_FUNCTION(aws_crt_signing_config_aws_set_should_sign_header_fn) {
|
191 |
+
zend_ulong php_signing_config = 0;
|
192 |
+
zval *php_should_sign_header = NULL;
|
193 |
+
|
194 |
+
aws_php_parse_parameters("lz", &php_signing_config, &php_should_sign_header);
|
195 |
+
|
196 |
+
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
197 |
+
|
198 |
+
/* copy/retain PHP callback, add as user data for signing_config resource */
|
199 |
+
zval *should_sign_header = aws_php_zval_new();
|
200 |
+
aws_php_zval_copy(should_sign_header, php_should_sign_header);
|
201 |
+
aws_crt_resource_set_user_data(signing_config, should_sign_header, aws_php_zval_dtor);
|
202 |
+
|
203 |
+
aws_crt_signing_config_aws_set_should_sign_header_fn(
|
204 |
+
signing_config, aws_php_should_sign_header, should_sign_header);
|
205 |
+
}
|
206 |
+
|
207 |
+
PHP_FUNCTION(aws_crt_signable_new_from_http_request) {
|
208 |
+
zend_ulong php_http_message = 0;
|
209 |
+
|
210 |
+
aws_php_parse_parameters("l", &php_http_message);
|
211 |
+
|
212 |
+
const aws_crt_http_message *http_message = (void *)php_http_message;
|
213 |
+
aws_crt_signable *signable = aws_crt_signable_new_from_http_request(http_message);
|
214 |
+
RETURN_LONG((zend_ulong)signable);
|
215 |
+
}
|
216 |
+
|
217 |
+
PHP_FUNCTION(aws_crt_signable_new_from_chunk) {
|
218 |
+
zend_ulong php_input_stream = 0;
|
219 |
+
const char *previous_signature = NULL;
|
220 |
+
size_t previous_signature_len = 0;
|
221 |
+
|
222 |
+
aws_php_parse_parameters("ls", &php_input_stream, &previous_signature, &previous_signature_len);
|
223 |
+
|
224 |
+
aws_crt_input_stream *input_stream = (void *)php_input_stream;
|
225 |
+
aws_crt_signable *signable =
|
226 |
+
aws_crt_signable_new_from_chunk(input_stream, (uint8_t *)previous_signature, previous_signature_len);
|
227 |
+
RETURN_LONG((zend_ulong)signable);
|
228 |
+
}
|
229 |
+
|
230 |
+
PHP_FUNCTION(aws_crt_signable_new_from_canonical_request) {
|
231 |
+
const char *canonical_request = NULL;
|
232 |
+
size_t canonical_request_len = 0;
|
233 |
+
|
234 |
+
aws_crt_signable *signable =
|
235 |
+
aws_crt_signable_new_from_canonical_request((uint8_t *)canonical_request, canonical_request_len);
|
236 |
+
RETURN_LONG((zend_ulong)signable);
|
237 |
+
}
|
238 |
+
|
239 |
+
PHP_FUNCTION(aws_crt_signable_release) {
|
240 |
+
zend_ulong php_signable = 0;
|
241 |
+
|
242 |
+
aws_php_parse_parameters("l", &php_signable);
|
243 |
+
|
244 |
+
aws_crt_signable *signable = (void *)php_signable;
|
245 |
+
aws_crt_signable_release(signable);
|
246 |
+
}
|
247 |
+
|
248 |
+
PHP_FUNCTION(aws_crt_signing_result_release) {
|
249 |
+
zend_ulong php_signing_result = 0;
|
250 |
+
|
251 |
+
aws_php_parse_parameters("l", &php_signing_result);
|
252 |
+
aws_crt_signing_result *result = (void *)php_signing_result;
|
253 |
+
aws_crt_signing_result_release(result);
|
254 |
+
}
|
255 |
+
|
256 |
+
PHP_FUNCTION(aws_crt_signing_result_apply_to_http_request) {
|
257 |
+
zend_ulong php_signing_result = 0;
|
258 |
+
zend_ulong php_http_request = 0;
|
259 |
+
|
260 |
+
aws_php_parse_parameters("ll", &php_signing_result, &php_http_request);
|
261 |
+
aws_crt_signing_result *result = (void *)php_signing_result;
|
262 |
+
aws_crt_http_message *request = (void *)php_http_request;
|
263 |
+
|
264 |
+
if (aws_crt_signing_result_apply_to_http_request(result, request)) {
|
265 |
+
aws_php_throw_exception(
|
266 |
+
"Failed to apply signing result to HTTP request: %s", aws_crt_error_name(aws_crt_last_error()));
|
267 |
+
}
|
268 |
+
}
|
269 |
+
|
270 |
+
typedef struct _signing_state {
|
271 |
+
struct aws_promise *promise;
|
272 |
+
zval *on_complete;
|
273 |
+
aws_crt_signing_result *signing_result;
|
274 |
+
int error_code;
|
275 |
+
} signing_state;
|
276 |
+
|
277 |
+
/* called on main thread to deliver result to php */
|
278 |
+
static void s_sign_aws_complete(void *data) {
|
279 |
+
signing_state *state = data;
|
280 |
+
zval *on_complete = state->on_complete;
|
281 |
+
aws_php_invoke_callback(on_complete, "ll", (zend_ulong)state->signing_result, (zend_ulong)state->error_code);
|
282 |
+
}
|
283 |
+
|
284 |
+
/* called from signing process in aws_sign_request_aws */
|
285 |
+
static void s_on_sign_request_aws_complete(aws_crt_signing_result *result, int error_code, void *user_data) {
|
286 |
+
signing_state *state = user_data;
|
287 |
+
struct aws_promise *promise = state->promise;
|
288 |
+
|
289 |
+
state->signing_result = result;
|
290 |
+
state->error_code = error_code;
|
291 |
+
|
292 |
+
/*
|
293 |
+
* Must execute PHP callback before this function returns, or signing_result will be killed
|
294 |
+
* so the callback is queued back to the main thread and will have run when yield returns
|
295 |
+
*/
|
296 |
+
aws_php_task complete_callback_task = {
|
297 |
+
.callback = s_sign_aws_complete,
|
298 |
+
.data = state,
|
299 |
+
};
|
300 |
+
aws_php_thread_queue_push(&s_aws_php_main_thread_queue, complete_callback_task);
|
301 |
+
aws_php_thread_queue_yield(&s_aws_php_main_thread_queue);
|
302 |
+
|
303 |
+
if (error_code) {
|
304 |
+
aws_promise_fail(promise, error_code);
|
305 |
+
} else {
|
306 |
+
aws_promise_complete(promise, result, NULL);
|
307 |
+
}
|
308 |
+
}
|
309 |
+
|
310 |
+
PHP_FUNCTION(aws_crt_sign_request_aws) {
|
311 |
+
zend_ulong php_signable = 0;
|
312 |
+
zend_ulong php_signing_config = 0;
|
313 |
+
zval *php_on_complete = 0;
|
314 |
+
zend_ulong php_user_data = 0;
|
315 |
+
|
316 |
+
aws_php_parse_parameters("llzl", &php_signable, &php_signing_config, &php_on_complete, &php_user_data);
|
317 |
+
|
318 |
+
aws_crt_signable *signable = (void *)php_signable;
|
319 |
+
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
320 |
+
|
321 |
+
struct aws_promise *promise = aws_promise_new(aws_crt_default_allocator());
|
322 |
+
signing_state state = {
|
323 |
+
.promise = promise,
|
324 |
+
.on_complete = php_on_complete,
|
325 |
+
};
|
326 |
+
int ret = aws_crt_sign_request_aws(signable, signing_config, s_on_sign_request_aws_complete, &state);
|
327 |
+
if (ret != 0) {
|
328 |
+
int last_error = aws_crt_last_error();
|
329 |
+
aws_promise_fail(promise, last_error);
|
330 |
+
aws_php_throw_exception(
|
331 |
+
"aws_crt_sign_request_aws: error starting signing process: %s", aws_crt_error_name(last_error));
|
332 |
+
}
|
333 |
+
|
334 |
+
aws_php_thread_queue_wait(&s_aws_php_main_thread_queue, promise);
|
335 |
+
|
336 |
+
done:
|
337 |
+
aws_promise_release(promise);
|
338 |
+
RETURN_LONG(ret);
|
339 |
+
}
|
340 |
+
|
341 |
+
PHP_FUNCTION(aws_crt_test_verify_sigv4a_signing) {
|
342 |
+
zend_ulong php_signable = 0;
|
343 |
+
zend_ulong php_signing_config = 0;
|
344 |
+
const char *expected_canonical_request = NULL;
|
345 |
+
size_t expected_canonical_request_len = 0;
|
346 |
+
const char *signature = NULL;
|
347 |
+
size_t signature_len = 0;
|
348 |
+
const char *ecc_key_pub_x = NULL;
|
349 |
+
size_t ecc_key_pub_x_len = 0;
|
350 |
+
const char *ecc_key_pub_y = NULL;
|
351 |
+
size_t ecc_key_pub_y_len = 0;
|
352 |
+
|
353 |
+
aws_php_parse_parameters(
|
354 |
+
"llssss",
|
355 |
+
&php_signable,
|
356 |
+
&php_signing_config,
|
357 |
+
&expected_canonical_request,
|
358 |
+
&expected_canonical_request_len,
|
359 |
+
&signature,
|
360 |
+
&signature_len,
|
361 |
+
&ecc_key_pub_x,
|
362 |
+
&ecc_key_pub_x_len,
|
363 |
+
&ecc_key_pub_y,
|
364 |
+
&ecc_key_pub_y_len);
|
365 |
+
|
366 |
+
const aws_crt_signable *signable = (void *)php_signable;
|
367 |
+
const aws_crt_signing_config *signing_config = (void *)php_signing_config;
|
368 |
+
|
369 |
+
bool result = AWS_OP_SUCCESS ==
|
370 |
+
aws_crt_test_verify_sigv4a_signing(
|
371 |
+
signable, signing_config, expected_canonical_request, signature, ecc_key_pub_x, ecc_key_pub_y);
|
372 |
+
|
373 |
+
RETURN_BOOL(result);
|
374 |
+
}
|
vendor_wpstg/aws/aws-crt-php/ext/stream.c
ADDED
@@ -0,0 +1,148 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
3 |
+
* SPDX-License-Identifier: Apache-2.0.
|
4 |
+
*/
|
5 |
+
|
6 |
+
#include "php_aws_crt.h"
|
7 |
+
|
8 |
+
/* PHP streams info:
|
9 |
+
* https://git.php.net/?p=php-src.git;a=blob;f=docs/streams.md;h=0ec3846d68bf70067297d8a6c691d2591c49b48a;hb=HEAD
|
10 |
+
* https://github.com/php/php-src/blob/PHP-5.6.0/main/php_streams.h
|
11 |
+
*/
|
12 |
+
|
13 |
+
PHP_FUNCTION(aws_crt_input_stream_options_new) {
|
14 |
+
if (zend_parse_parameters_none() == FAILURE) {
|
15 |
+
aws_php_argparse_fail();
|
16 |
+
}
|
17 |
+
|
18 |
+
aws_crt_input_stream_options *options = aws_crt_input_stream_options_new();
|
19 |
+
RETURN_LONG((zend_ulong)options);
|
20 |
+
}
|
21 |
+
|
22 |
+
PHP_FUNCTION(aws_crt_input_stream_options_release) {
|
23 |
+
zend_ulong php_options = 0;
|
24 |
+
|
25 |
+
aws_php_parse_parameters("l", &php_options);
|
26 |
+
|
27 |
+
aws_crt_input_stream_options *options = (void *)php_options;
|
28 |
+
aws_crt_input_stream_options_release(options);
|
29 |
+
}
|
30 |
+
|
31 |
+
PHP_FUNCTION(aws_crt_input_stream_options_set_user_data) {
|
32 |
+
zend_ulong php_options = 0;
|
33 |
+
zval *user_data = NULL;
|
34 |
+
|
35 |
+
aws_php_parse_parameters("lz", &php_options, &user_data);
|
36 |
+
|
37 |
+
aws_crt_input_stream_options *options = (void *)php_options;
|
38 |
+
php_stream *stream = NULL;
|
39 |
+
AWS_PHP_STREAM_FROM_ZVAL(stream, user_data);
|
40 |
+
aws_crt_input_stream_options_set_user_data(options, stream);
|
41 |
+
}
|
42 |
+
|
43 |
+
static int s_php_stream_seek(void *user_data, int64_t offset, aws_crt_input_stream_seek_basis basis) {
|
44 |
+
php_stream *stream = user_data;
|
45 |
+
return php_stream_seek(stream, offset, basis);
|
46 |
+
}
|
47 |
+
|
48 |
+
static int s_php_stream_read(void *user_data, uint8_t *dest, size_t dest_length) {
|
49 |
+
php_stream *stream = user_data;
|
50 |
+
return php_stream_read(stream, (char *)dest, dest_length) != 0;
|
51 |
+
}
|
52 |
+
|
53 |
+
static int s_php_stream_get_length(void *user_data, int64_t *out_length) {
|
54 |
+
php_stream *stream = user_data;
|
55 |
+
size_t pos = php_stream_tell(stream);
|
56 |
+
php_stream_seek(stream, 0, SEEK_END);
|
57 |
+
*out_length = php_stream_tell(stream);
|
58 |
+
php_stream_seek(stream, pos, SEEK_SET);
|
59 |
+
return 0;
|
60 |
+
}
|
61 |
+
|
62 |
+
static int s_php_stream_get_status(void *user_data, aws_crt_input_stream_status *out_status) {
|
63 |
+
php_stream *stream = user_data;
|
64 |
+
out_status->is_valid = stream != NULL;
|
65 |
+
/* We would like to use php_stream_eof here, but certain streams (notably php://memory)
|
66 |
+
* are not actually capable of EOF, so we get to do it the hard way */
|
67 |
+
int64_t length = 0;
|
68 |
+
int64_t pos = 0;
|
69 |
+
s_php_stream_get_length(stream, &length);
|
70 |
+
pos = php_stream_tell(stream);
|
71 |
+
out_status->is_end_of_stream = pos == length;
|
72 |
+
return 0;
|
73 |
+
}
|
74 |
+
|
75 |
+
static void s_php_stream_destroy(void *user_data) {
|
76 |
+
(void)user_data;
|
77 |
+
/* no op, stream will be freed by PHP refcount dropping from InputStream::stream */
|
78 |
+
}
|
79 |
+
|
80 |
+
PHP_FUNCTION(aws_crt_input_stream_new) {
|
81 |
+
zend_ulong php_options = 0;
|
82 |
+
|
83 |
+
aws_php_parse_parameters("l", &php_options);
|
84 |
+
|
85 |
+
aws_crt_input_stream_options *options = (void *)php_options;
|
86 |
+
aws_crt_input_stream_options_set_seek(options, s_php_stream_seek);
|
87 |
+
aws_crt_input_stream_options_set_read(options, s_php_stream_read);
|
88 |
+
aws_crt_input_stream_options_set_get_status(options, s_php_stream_get_status);
|
89 |
+
aws_crt_input_stream_options_set_get_length(options, s_php_stream_get_length);
|
90 |
+
aws_crt_input_stream_options_set_destroy(options, s_php_stream_destroy);
|
91 |
+
aws_crt_input_stream *stream = aws_crt_input_stream_new(options);
|
92 |
+
RETURN_LONG((zend_ulong)stream);
|
93 |
+
}
|
94 |
+
|
95 |
+
PHP_FUNCTION(aws_crt_input_stream_release) {
|
96 |
+
zend_ulong php_stream = 0;
|
97 |
+
|
98 |
+
aws_php_parse_parameters("l", &php_stream);
|
99 |
+
|
100 |
+
aws_crt_input_stream *stream = (void *)php_stream;
|
101 |
+
aws_crt_input_stream_release(stream);
|
102 |
+
}
|
103 |
+
|
104 |
+
PHP_FUNCTION(aws_crt_input_stream_seek) {
|
105 |
+
zend_ulong php_stream = 0;
|
106 |
+
zend_ulong offset = 0;
|
107 |
+
zend_ulong basis = 0;
|
108 |
+
|
109 |
+
aws_php_parse_parameters("lll", &php_stream, &offset, &basis);
|
110 |
+
|
111 |
+
aws_crt_input_stream *stream = (void *)php_stream;
|
112 |
+
RETURN_LONG(aws_crt_input_stream_seek(stream, offset, basis));
|
113 |
+
}
|
114 |
+
|
115 |
+
PHP_FUNCTION(aws_crt_input_stream_read) {
|
116 |
+
zend_ulong php_stream = 0;
|
117 |
+
zend_ulong length = 0;
|
118 |
+
|
119 |
+
aws_php_parse_parameters("ll", &php_stream, &length);
|
120 |
+
|
121 |
+
aws_crt_input_stream *stream = (void *)php_stream;
|
122 |
+
uint8_t *buf = emalloc(length);
|
123 |
+
int ret = aws_crt_input_stream_read(stream, buf, length);
|
124 |
+
XRETVAL_STRINGL((const char *)buf, length);
|
125 |
+
efree(buf);
|
126 |
+
}
|
127 |
+
|
128 |
+
PHP_FUNCTION(aws_crt_input_stream_eof) {
|
129 |
+
zend_ulong php_stream = 0;
|
130 |
+
|
131 |
+
aws_php_parse_parameters("l", &php_stream);
|
132 |
+
|
133 |
+
aws_crt_input_stream *stream = (void *)php_stream;
|
134 |
+
aws_crt_input_stream_status status = {0};
|
135 |
+
aws_crt_input_stream_get_status(stream, &status);
|
136 |
+
RETURN_BOOL(status.is_end_of_stream);
|
137 |
+
}
|
138 |
+
|
139 |
+
PHP_FUNCTION(aws_crt_input_stream_get_length) {
|
140 |
+
zend_ulong php_stream = 0;
|
141 |
+
|
142 |
+
aws_php_parse_parameters("l", &php_stream);
|
143 |
+
|
144 |
+
aws_crt_input_stream *stream = (void *)php_stream;
|
145 |
+
int64_t length = 0;
|
146 |
+
aws_crt_input_stream_get_length(stream, &length);
|
147 |
+
RETURN_LONG(length);
|
148 |
+
}
|
vendor_wpstg/aws/aws-crt-php/format-check.sh
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/bin/bash
|
2 |
+
|
3 |
+
if [[ -z $CLANG_FORMAT ]] ; then
|
4 |
+
CLANG_FORMAT=clang-format
|
5 |
+
fi
|
6 |
+
|
7 |
+
if NOT type $CLANG_FORMAT 2> /dev/null ; then
|
8 |
+
echo "No appropriate clang-format found."
|
9 |
+
exit 1
|
10 |
+
fi
|
11 |
+
|
12 |
+
FAIL=0
|
13 |
+
SOURCE_FILES=`find src ext -type f \( -name '*.c' \)`
|
14 |
+
for i in $SOURCE_FILES
|
15 |
+
do
|
16 |
+
$CLANG_FORMAT -output-replacements-xml $i | grep -c "<replacement " > /dev/null
|
17 |
+
if [ $? -ne 1 ]
|
18 |
+
then
|
19 |
+
echo "$i failed clang-format check."
|
20 |
+
FAIL=1
|
21 |
+
fi
|
22 |
+
done
|
23 |
+
|
24 |
+
exit $FAIL
|
vendor_wpstg/aws/aws-crt-php/gen_api.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor;
|
4 |
+
|
5 |
+
$source = "php://stdin";
|
6 |
+
if (isset($argv[1])) {
|
7 |
+
$source = $argv[1];
|
8 |
+
}
|
9 |
+
$input_lines = \file($source);
|
10 |
+
foreach ($input_lines as $line) {
|
11 |
+
// Strip AWS_EXTERN_C_BEGIN/END
|
12 |
+
if (\preg_match('/AWS_EXTERN_C/', $line)) {
|
13 |
+
continue;
|
14 |
+
}
|
15 |
+
// Strip macros/includes
|
16 |
+
if (\preg_match('/^#/', $line)) {
|
17 |
+
continue;
|
18 |
+
}
|
19 |
+
// Strip visibility attributes
|
20 |
+
$line = \str_replace('AWS_CRT_API ', '', $line);
|
21 |
+
echo $line;
|
22 |
+
}
|
vendor_wpstg/aws/aws-crt-php/gen_stub.php
ADDED
@@ -0,0 +1,1641 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/usr/bin/env php
|
2 |
+
<?php
|
3 |
+
declare (strict_types=1);
|
4 |
+
namespace WPStaging\Vendor;
|
5 |
+
|
6 |
+
// This is a copy of the gen_stub.php from the PHP build scripts, modified to
|
7 |
+
// generate macros that we can abstract across versions of PHP
|
8 |
+
use WPStaging\Vendor\PhpParser\Comment\Doc as DocComment;
|
9 |
+
use WPStaging\Vendor\PhpParser\Node;
|
10 |
+
use WPStaging\Vendor\PhpParser\Node\Expr;
|
11 |
+
use WPStaging\Vendor\PhpParser\Node\Name;
|
12 |
+
use WPStaging\Vendor\PhpParser\Node\Stmt;
|
13 |
+
use WPStaging\Vendor\PhpParser\Node\Stmt\Class_;
|
14 |
+
use WPStaging\Vendor\PhpParser\PrettyPrinter\Standard;
|
15 |
+
use WPStaging\Vendor\PhpParser\PrettyPrinterAbstract;
|
16 |
+
\error_reporting(\E_ALL);
|
17 |
+
/**
|
18 |
+
* @return FileInfo[]
|
19 |
+
*/
|
20 |
+
function processDirectory(string $dir, \WPStaging\Vendor\Context $context) : array
|
21 |
+
{
|
22 |
+
$fileInfos = [];
|
23 |
+
$it = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($dir), \RecursiveIteratorIterator::LEAVES_ONLY);
|
24 |
+
foreach ($it as $file) {
|
25 |
+
$pathName = $file->getPathName();
|
26 |
+
if (\preg_match('/\\.stub\\.php$/', $pathName)) {
|
27 |
+
$fileInfo = \WPStaging\Vendor\processStubFile($pathName, $context);
|
28 |
+
if ($fileInfo) {
|
29 |
+
$fileInfos[] = $fileInfo;
|
30 |
+
}
|
31 |
+
}
|
32 |
+
}
|
33 |
+
return $fileInfos;
|
34 |
+
}
|
35 |
+
function processStubFile(string $stubFile, \WPStaging\Vendor\Context $context) : ?\WPStaging\Vendor\FileInfo
|
36 |
+
{
|
37 |
+
try {
|
38 |
+
if (!\file_exists($stubFile)) {
|
39 |
+
throw new \Exception("File {$stubFile} does not exist");
|
40 |
+
}
|
41 |
+
$arginfoFile = \str_replace('.stub.php', '_arginfo.h', $stubFile);
|
42 |
+
$legacyFile = \str_replace('.stub.php', '_legacy_arginfo.h', $stubFile);
|
43 |
+
$stubCode = \file_get_contents($stubFile);
|
44 |
+
$stubHash = \WPStaging\Vendor\computeStubHash($stubCode);
|
45 |
+
$oldStubHash = \WPStaging\Vendor\extractStubHash($arginfoFile);
|
46 |
+
if ($stubHash === $oldStubHash && !$context->forceParse) {
|
47 |
+
/* Stub file did not change, do not regenerate. */
|
48 |
+
return null;
|
49 |
+
}
|
50 |
+
\WPStaging\Vendor\initPhpParser();
|
51 |
+
$fileInfo = \WPStaging\Vendor\parseStubFile($stubCode);
|
52 |
+
$arginfoCode = \WPStaging\Vendor\generateArgInfoCode($fileInfo, $stubHash, $context->minimalArgInfo);
|
53 |
+
if (($context->forceRegeneration || $stubHash !== $oldStubHash) && \file_put_contents($arginfoFile, $arginfoCode)) {
|
54 |
+
echo "Saved {$arginfoFile}\n";
|
55 |
+
}
|
56 |
+
if ($fileInfo->generateLegacyArginfo) {
|
57 |
+
foreach ($fileInfo->getAllFuncInfos() as $funcInfo) {
|
58 |
+
$funcInfo->discardInfoForOldPhpVersions();
|
59 |
+
}
|
60 |
+
$arginfoCode = \WPStaging\Vendor\generateArgInfoCode($fileInfo, $stubHash, $context->minimalArgInfo);
|
61 |
+
if (($context->forceRegeneration || $stubHash !== $oldStubHash) && \file_put_contents($legacyFile, $arginfoCode)) {
|
62 |
+
echo "Saved {$legacyFile}\n";
|
63 |
+
}
|
64 |
+
}
|
65 |
+
return $fileInfo;
|
66 |
+
} catch (\Exception $e) {
|
67 |
+
echo "In {$stubFile}:\n{$e->getMessage()}\n";
|
68 |
+
exit(1);
|
69 |
+
}
|
70 |
+
}
|
71 |
+
function computeStubHash(string $stubCode) : string
|
72 |
+
{
|
73 |
+
return \sha1(\str_replace("\r\n", "\n", $stubCode));
|
74 |
+
}
|
75 |
+
function extractStubHash(string $arginfoFile) : ?string
|
76 |
+
{
|
77 |
+
if (!\file_exists($arginfoFile)) {
|
78 |
+
return null;
|
79 |
+
}
|
80 |
+
$arginfoCode = \file_get_contents($arginfoFile);
|
81 |
+
if (!\preg_match('/\\* Stub hash: ([0-9a-f]+) \\*/', $arginfoCode, $matches)) {
|
82 |
+
return null;
|
83 |
+
}
|
84 |
+
return $matches[1];
|
85 |
+
}
|
86 |
+
class Context
|
87 |
+
{
|
88 |
+
/** @var bool */
|
89 |
+
public $forceParse = \false;
|
90 |
+
/** @var bool */
|
91 |
+
public $forceRegeneration = \false;
|
92 |
+
/** @var bool */
|
93 |
+
public $minimalArgInfo = \false;
|
94 |
+
}
|
95 |
+
class SimpleType
|
96 |
+
{
|
97 |
+
/** @var string */
|
98 |
+
public $name;
|
99 |
+
/** @var bool */
|
100 |
+
public $isBuiltin;
|
101 |
+
public function __construct(string $name, bool $isBuiltin)
|
102 |
+
{
|
103 |
+
$this->name = $name;
|
104 |
+
$this->isBuiltin = $isBuiltin;
|
105 |
+
}
|
106 |
+
public static function fromNode(\WPStaging\Vendor\PhpParser\Node $node) : \WPStaging\Vendor\SimpleType
|
107 |
+
{
|
108 |
+
if ($node instanceof \WPStaging\Vendor\PhpParser\Node\Name) {
|
109 |
+
if ($node->toLowerString() === 'static') {
|
110 |
+
// PHP internally considers "static" a builtin type.
|
111 |
+
return new \WPStaging\Vendor\SimpleType($node->toString(), \true);
|
112 |
+
}
|
113 |
+
\assert($node->isFullyQualified());
|
114 |
+
return new \WPStaging\Vendor\SimpleType($node->toString(), \false);
|
115 |
+
}
|
116 |
+
if ($node instanceof \WPStaging\Vendor\PhpParser\Node\Identifier) {
|
117 |
+
return new \WPStaging\Vendor\SimpleType($node->toString(), \true);
|
118 |
+
}
|
119 |
+
throw new \Exception("Unexpected node type");
|
120 |
+
}
|
121 |
+
public static function fromPhpDoc(string $type) : \WPStaging\Vendor\SimpleType
|
122 |
+
{
|
123 |
+
switch (\strtolower($type)) {
|
124 |
+
case "void":
|
125 |
+
case "null":
|
126 |
+
case "false":
|
127 |
+
case "bool":
|
128 |
+
case "int":
|
129 |
+
case "float":
|
130 |
+
case "string":
|
131 |
+
case "array":
|
132 |
+
case "iterable":
|
133 |
+
case "object":
|
134 |
+
case "resource":
|
135 |
+
case "mixed":
|
136 |
+
case "self":
|
137 |
+
case "static":
|
138 |
+
return new \WPStaging\Vendor\SimpleType(\strtolower($type), \true);
|
139 |
+
}
|
140 |
+
if (\strpos($type, "[]") !== \false) {
|
141 |
+
return new \WPStaging\Vendor\SimpleType("array", \true);
|
142 |
+
}
|
143 |
+
return new \WPStaging\Vendor\SimpleType($type, \false);
|
144 |
+
}
|
145 |
+
public static function null() : \WPStaging\Vendor\SimpleType
|
146 |
+
{
|
147 |
+
return new \WPStaging\Vendor\SimpleType("null", \true);
|
148 |
+
}
|
149 |
+
public static function void() : \WPStaging\Vendor\SimpleType
|
150 |
+
{
|
151 |
+
return new \WPStaging\Vendor\SimpleType("void", \true);
|
152 |
+
}
|
153 |
+
public function isNull() : bool
|
154 |
+
{
|
155 |
+
return $this->isBuiltin && $this->name === 'null';
|
156 |
+
}
|
157 |
+
public function toTypeCode() : string
|
158 |
+
{
|
159 |
+
\assert($this->isBuiltin);
|
160 |
+
switch (\strtolower($this->name)) {
|
161 |
+
case "bool":
|
162 |
+
return "_IS_BOOL";
|
163 |
+
case "int":
|
164 |
+
return "IS_LONG";
|
165 |
+
case "float":
|
166 |
+
return "IS_DOUBLE";
|
167 |
+
case "string":
|
168 |
+
return "IS_STRING";
|
169 |
+
case "array":
|
170 |
+
return "IS_ARRAY";
|
171 |
+
case "object":
|
172 |
+
return "IS_OBJECT";
|
173 |
+
case "void":
|
174 |
+
return "IS_VOID";
|
175 |
+
case "callable":
|
176 |
+
return "IS_CALLABLE";
|
177 |
+
case "iterable":
|
178 |
+
return "IS_ITERABLE";
|
179 |
+
case "mixed":
|
180 |
+
return "IS_MIXED";
|
181 |
+
case "static":
|
182 |
+
return "IS_STATIC";
|
183 |
+
default:
|
184 |
+
throw new \Exception("Not implemented: {$this->name}");
|
185 |
+
}
|
186 |
+
}
|
187 |
+
public function toTypeMask()
|
188 |
+
{
|
189 |
+
\assert($this->isBuiltin);
|
190 |
+
switch (\strtolower($this->name)) {
|
191 |
+
case "null":
|
192 |
+
return "MAY_BE_NULL";
|
193 |
+
case "false":
|
194 |
+
return "MAY_BE_FALSE";
|
195 |
+
case "bool":
|
196 |
+
return "MAY_BE_BOOL";
|
197 |
+
case "int":
|
198 |
+
return "MAY_BE_LONG";
|
199 |
+
case "float":
|
200 |
+
return "MAY_BE_DOUBLE";
|
201 |
+
case "string":
|
202 |
+
return "MAY_BE_STRING";
|
203 |
+
case "array":
|
204 |
+
return "MAY_BE_ARRAY";
|
205 |
+
case "object":
|
206 |
+
return "MAY_BE_OBJECT";
|
207 |
+
case "callable":
|
208 |
+
return "MAY_BE_CALLABLE";
|
209 |
+
case "mixed":
|
210 |
+
return "MAY_BE_ANY";
|
211 |
+
case "static":
|
212 |
+
return "MAY_BE_STATIC";
|
213 |
+
default:
|
214 |
+
throw new \Exception("Not implemented: {$this->name}");
|
215 |
+
}
|
216 |
+
}
|
217 |
+
public function toEscapedName() : string
|
218 |
+
{
|
219 |
+
return \str_replace('\\', '\\\\', $this->name);
|
220 |
+
}
|
221 |
+
public function equals(\WPStaging\Vendor\SimpleType $other)
|
222 |
+
{
|
223 |
+
return $this->name === $other->name && $this->isBuiltin === $other->isBuiltin;
|
224 |
+
}
|
225 |
+
}
|
226 |
+
class Type
|
227 |
+
{
|
228 |
+
/** @var SimpleType[] $types */
|
229 |
+
public $types;
|
230 |
+
public function __construct(array $types)
|
231 |
+
{
|
232 |
+
$this->types = $types;
|
233 |
+
}
|
234 |
+
public static function fromNode(\WPStaging\Vendor\PhpParser\Node $node) : \WPStaging\Vendor\Type
|
235 |
+
{
|
236 |
+
if ($node instanceof \WPStaging\Vendor\PhpParser\Node\UnionType) {
|
237 |
+
return new \WPStaging\Vendor\Type(\array_map(['SimpleType', 'fromNode'], $node->types));
|
238 |
+
}
|
239 |
+
if ($node instanceof \WPStaging\Vendor\PhpParser\Node\NullableType) {
|
240 |
+
return new \WPStaging\Vendor\Type([\WPStaging\Vendor\SimpleType::fromNode($node->type), \WPStaging\Vendor\SimpleType::null()]);
|
241 |
+
}
|
242 |
+
return new \WPStaging\Vendor\Type([\WPStaging\Vendor\SimpleType::fromNode($node)]);
|
243 |
+
}
|
244 |
+
public static function fromPhpDoc(string $phpDocType)
|
245 |
+
{
|
246 |
+
$types = \explode("|", $phpDocType);
|
247 |
+
$simpleTypes = [];
|
248 |
+
foreach ($types as $type) {
|
249 |
+
$simpleTypes[] = \WPStaging\Vendor\SimpleType::fromPhpDoc($type);
|
250 |
+
}
|
251 |
+
return new \WPStaging\Vendor\Type($simpleTypes);
|
252 |
+
}
|
253 |
+
public function isNullable() : bool
|
254 |
+
{
|
255 |
+
foreach ($this->types as $type) {
|
256 |
+
if ($type->isNull()) {
|
257 |
+
return \true;
|
258 |
+
}
|
259 |
+
}
|
260 |
+
return \false;
|
261 |
+
}
|
262 |
+
public function getWithoutNull() : \WPStaging\Vendor\Type
|
263 |
+
{
|
264 |
+
return new \WPStaging\Vendor\Type(\array_filter($this->types, function (\WPStaging\Vendor\SimpleType $type) {
|
265 |
+
return !$type->isNull();
|
266 |
+
}));
|
267 |
+
}
|
268 |
+
public function tryToSimpleType() : ?\WPStaging\Vendor\SimpleType
|
269 |
+
{
|
270 |
+
$withoutNull = $this->getWithoutNull();
|
271 |
+
if (\count($withoutNull->types) === 1) {
|
272 |
+
return $withoutNull->types[0];
|
273 |
+
}
|
274 |
+
return null;
|
275 |
+
}
|
276 |
+
public function toArginfoType() : ?\WPStaging\Vendor\ArginfoType
|
277 |
+
{
|
278 |
+
$classTypes = [];
|
279 |
+
$builtinTypes = [];
|
280 |
+
foreach ($this->types as $type) {
|
281 |
+
if ($type->isBuiltin) {
|
282 |
+
$builtinTypes[] = $type;
|
283 |
+
} else {
|
284 |
+
$classTypes[] = $type;
|
285 |
+
}
|
286 |
+
}
|
287 |
+
return new \WPStaging\Vendor\ArginfoType($classTypes, $builtinTypes);
|
288 |
+
}
|
289 |
+
public static function equals(?\WPStaging\Vendor\Type $a, ?\WPStaging\Vendor\Type $b) : bool
|
290 |
+
{
|
291 |
+
if ($a === null || $b === null) {
|
292 |
+
return $a === $b;
|
293 |
+
}
|
294 |
+
if (\count($a->types) !== \count($b->types)) {
|
295 |
+
return \false;
|
296 |
+
}
|
297 |
+
for ($i = 0; $i < \count($a->types); $i++) {
|
298 |
+
if (!$a->types[$i]->equals($b->types[$i])) {
|
299 |
+
return \false;
|
300 |
+
}
|
301 |
+
}
|
302 |
+
return \true;
|
303 |
+
}
|
304 |
+
public function __toString()
|
305 |
+
{
|
306 |
+
if ($this->types === null) {
|
307 |
+
return 'mixed';
|
308 |
+
}
|
309 |
+
return \implode('|', \array_map(function ($type) {
|
310 |
+
return $type->name;
|
311 |
+
}, $this->types));
|
312 |
+
}
|
313 |
+
}
|
314 |
+
class ArginfoType
|
315 |
+
{
|
316 |
+
/** @var ClassType[] $classTypes */
|
317 |
+
public $classTypes;
|
318 |
+
/** @var SimpleType[] $builtinTypes */
|
319 |
+
private $builtinTypes;
|
320 |
+
public function __construct(array $classTypes, array $builtinTypes)
|
321 |
+
{
|
322 |
+
$this->classTypes = $classTypes;
|
323 |
+
$this->builtinTypes = $builtinTypes;
|
324 |
+
}
|
325 |
+
public function hasClassType() : bool
|
326 |
+
{
|
327 |
+
return !empty($this->classTypes);
|
328 |
+
}
|
329 |
+
public function toClassTypeString() : string
|
330 |
+
{
|
331 |
+
return \implode('|', \array_map(function (\WPStaging\Vendor\SimpleType $type) {
|
332 |
+
return $type->toEscapedName();
|
333 |
+
}, $this->classTypes));
|
334 |
+
}
|
335 |
+
public function toTypeMask() : string
|
336 |
+
{
|
337 |
+
if (empty($this->builtinTypes)) {
|
338 |
+
return '0';
|
339 |
+
}
|
340 |
+
return \implode('|', \array_map(function (\WPStaging\Vendor\SimpleType $type) {
|
341 |
+
return $type->toTypeMask();
|
342 |
+
}, $this->builtinTypes));
|
343 |
+
}
|
344 |
+
}
|
345 |
+
class ArgInfo
|
346 |
+
{
|
347 |
+
const SEND_BY_VAL = 0;
|
348 |
+
const SEND_BY_REF = 1;
|
349 |
+
const SEND_PREFER_REF = 2;
|
350 |
+
/** @var string */
|
351 |
+
public $name;
|
352 |
+
/** @var int */
|
353 |
+
public $sendBy;
|
354 |
+
/** @var bool */
|
355 |
+
public $isVariadic;
|
356 |
+
/** @var Type|null */
|
357 |
+
public $type;
|
358 |
+
/** @var Type|null */
|
359 |
+
public $phpDocType;
|
360 |
+
/** @var string|null */
|
361 |
+
public $defaultValue;
|
362 |
+
public function __construct(string $name, int $sendBy, bool $isVariadic, ?\WPStaging\Vendor\Type $type, ?\WPStaging\Vendor\Type $phpDocType, ?string $defaultValue)
|
363 |
+
{
|
364 |
+
$this->name = $name;
|
365 |
+
$this->sendBy = $sendBy;
|
366 |
+
$this->isVariadic = $isVariadic;
|
367 |
+
$this->type = $type;
|
368 |
+
$this->phpDocType = $phpDocType;
|
369 |
+
$this->defaultValue = $defaultValue;
|
370 |
+
}
|
371 |
+
public function equals(\WPStaging\Vendor\ArgInfo $other) : bool
|
372 |
+
{
|
373 |
+
return $this->name === $other->name && $this->sendBy === $other->sendBy && $this->isVariadic === $other->isVariadic && \WPStaging\Vendor\Type::equals($this->type, $other->type) && $this->defaultValue === $other->defaultValue;
|
374 |
+
}
|
375 |
+
public function getSendByString() : string
|
376 |
+
{
|
377 |
+
switch ($this->sendBy) {
|
378 |
+
case self::SEND_BY_VAL:
|
379 |
+
return "0";
|
380 |
+
case self::SEND_BY_REF:
|
381 |
+
return "1";
|
382 |
+
case self::SEND_PREFER_REF:
|
383 |
+
return "ZEND_SEND_PREFER_REF";
|
384 |
+
}
|
385 |
+
throw new \Exception("Invalid sendBy value");
|
386 |
+
}
|
387 |
+
public function getMethodSynopsisType() : \WPStaging\Vendor\Type
|
388 |
+
{
|
389 |
+
if ($this->type) {
|
390 |
+
return $this->type;
|
391 |
+
}
|
392 |
+
if ($this->phpDocType) {
|
393 |
+
return $this->phpDocType;
|
394 |
+
}
|
395 |
+
throw new \Exception("A parameter must have a type");
|
396 |
+
}
|
397 |
+
public function hasProperDefaultValue() : bool
|
398 |
+
{
|
399 |
+
return $this->defaultValue !== null && $this->defaultValue !== "UNKNOWN";
|
400 |
+
}
|
401 |
+
public function getDefaultValueAsArginfoString() : string
|
402 |
+
{
|
403 |
+
if ($this->hasProperDefaultValue()) {
|
404 |
+
return '"' . \addslashes($this->defaultValue) . '"';
|
405 |
+
}
|
406 |
+
return "NULL";
|
407 |
+
}
|
408 |
+
public function getDefaultValueAsMethodSynopsisString() : ?string
|
409 |
+
{
|
410 |
+
if ($this->defaultValue === null) {
|
411 |
+
return null;
|
412 |
+
}
|
413 |
+
switch ($this->defaultValue) {
|
414 |
+
case 'UNKNOWN':
|
415 |
+
return null;
|
416 |
+
case 'false':
|
417 |
+
case 'true':
|
418 |
+
case 'null':
|
419 |
+
return "&{$this->defaultValue};";
|
420 |
+
}
|
421 |
+
return $this->defaultValue;
|
422 |
+
}
|
423 |
+
}
|
424 |
+
interface FunctionOrMethodName
|
425 |
+
{
|
426 |
+
public function getDeclaration() : string;
|
427 |
+
public function getArgInfoName() : string;
|
428 |
+
public function getMethodSynopsisFilename() : string;
|
429 |
+
public function __toString() : string;
|
430 |
+
public function isMethod() : bool;
|
431 |
+
public function isConstructor() : bool;
|
432 |
+
public function isDestructor() : bool;
|
433 |
+
}
|
434 |
+
class FunctionName implements \WPStaging\Vendor\FunctionOrMethodName
|
435 |
+
{
|
436 |
+
/** @var Name */
|
437 |
+
private $name;
|
438 |
+
public function __construct(\WPStaging\Vendor\PhpParser\Node\Name $name)
|
439 |
+
{
|
440 |
+
$this->name = $name;
|
441 |
+
}
|
442 |
+
public function getNamespace() : ?string
|
443 |
+
{
|
444 |
+
if ($this->name->isQualified()) {
|
445 |
+
return $this->name->slice(0, -1)->toString();
|
446 |
+
}
|
447 |
+
return null;
|
448 |
+
}
|
449 |
+
public function getNonNamespacedName() : string
|
450 |
+
{
|
451 |
+
if ($this->name->isQualified()) {
|
452 |
+
throw new \Exception("Namespaced name not supported here");
|
453 |
+
}
|
454 |
+
return $this->name->toString();
|
455 |
+
}
|
456 |
+
public function getDeclarationName() : string
|
457 |
+
{
|
458 |
+
return $this->name->getLast();
|
459 |
+
}
|
460 |
+
public function getDeclaration() : string
|
461 |
+
{
|
462 |
+
return "ZEND_FUNCTION({$this->getDeclarationName()});\n";
|
463 |
+
}
|
464 |
+
public function getArgInfoName() : string
|
465 |
+
{
|
466 |
+
$underscoreName = \implode('_', $this->name->parts);
|
467 |
+
return "arginfo_{$underscoreName}";
|
468 |
+
}
|
469 |
+
public function getMethodSynopsisFilename() : string
|
470 |
+
{
|
471 |
+
return \implode('_', $this->name->parts);
|
472 |
+
}
|
473 |
+
public function __toString() : string
|
474 |
+
{
|
475 |
+
return $this->name->toString();
|
476 |
+
}
|
477 |
+
public function isMethod() : bool
|
478 |
+
{
|
479 |
+
return \false;
|
480 |
+
}
|
481 |
+
public function isConstructor() : bool
|
482 |
+
{
|
483 |
+
return \false;
|
484 |
+
}
|
485 |
+
public function isDestructor() : bool
|
486 |
+
{
|
487 |
+
return \false;
|
488 |
+
}
|
489 |
+
}
|
490 |
+
class MethodName implements \WPStaging\Vendor\FunctionOrMethodName
|
491 |
+
{
|
492 |
+
/** @var Name */
|
493 |
+
private $className;
|
494 |
+
/** @var string */
|
495 |
+
public $methodName;
|
496 |
+
public function __construct(\WPStaging\Vendor\PhpParser\Node\Name $className, string $methodName)
|
497 |
+
{
|
498 |
+
$this->className = $className;
|
499 |
+
$this->methodName = $methodName;
|
500 |
+
}
|
501 |
+
public function getDeclarationClassName() : string
|
502 |
+
{
|
503 |
+
return \implode('_', $this->className->parts);
|
504 |
+
}
|
505 |
+
public function getDeclaration() : string
|
506 |
+
{
|
507 |
+
return "ZEND_METHOD({$this->getDeclarationClassName()}, {$this->methodName});\n";
|
508 |
+
}
|
509 |
+
public function getArgInfoName() : string
|
510 |
+
{
|
511 |
+
return "arginfo_class_{$this->getDeclarationClassName()}_{$this->methodName}";
|
512 |
+
}
|
513 |
+
public function getMethodSynopsisFilename() : string
|
514 |
+
{
|
515 |
+
return $this->getDeclarationClassName() . "_{$this->methodName}";
|
516 |
+
}
|
517 |
+
public function __toString() : string
|
518 |
+
{
|
519 |
+
return "{$this->className}::{$this->methodName}";
|
520 |
+
}
|
521 |
+
public function isMethod() : bool
|
522 |
+
{
|
523 |
+
return \true;
|
524 |
+
}
|
525 |
+
public function isConstructor() : bool
|
526 |
+
{
|
527 |
+
return $this->methodName === "__construct";
|
528 |
+
}
|
529 |
+
public function isDestructor() : bool
|
530 |
+
{
|
531 |
+
return $this->methodName === "__destruct";
|
532 |
+
}
|
533 |
+
}
|
534 |
+
class ReturnInfo
|
535 |
+
{
|
536 |
+
/** @var bool */
|
537 |
+
public $byRef;
|
538 |
+
/** @var Type|null */
|
539 |
+
public $type;
|
540 |
+
/** @var Type|null */
|
541 |
+
public $phpDocType;
|
542 |
+
public function __construct(bool $byRef, ?\WPStaging\Vendor\Type $type, ?\WPStaging\Vendor\Type $phpDocType)
|
543 |
+
{
|
544 |
+
$this->byRef = $byRef;
|
545 |
+
$this->type = $type;
|
546 |
+
$this->phpDocType = $phpDocType;
|
547 |
+
}
|
548 |
+
public function equals(\WPStaging\Vendor\ReturnInfo $other) : bool
|
549 |
+
{
|
550 |
+
return $this->byRef === $other->byRef && \WPStaging\Vendor\Type::equals($this->type, $other->type);
|
551 |
+
}
|
552 |
+
public function getMethodSynopsisType() : ?\WPStaging\Vendor\Type
|
553 |
+
{
|
554 |
+
return $this->type ?? $this->phpDocType;
|
555 |
+
}
|
556 |
+
}
|
557 |
+
class FuncInfo
|
558 |
+
{
|
559 |
+
/** @var FunctionOrMethodName */
|
560 |
+
public $name;
|
561 |
+
/** @var int */
|
562 |
+
public $classFlags;
|
563 |
+
/** @var int */
|
564 |
+
public $flags;
|
565 |
+
/** @var string|null */
|
566 |
+
public $aliasType;
|
567 |
+
/** @var FunctionName|null */
|
568 |
+
public $alias;
|
569 |
+
/** @var bool */
|
570 |
+
public $isDeprecated;
|
571 |
+
/** @var bool */
|
572 |
+
public $verify;
|
573 |
+
/** @var ArgInfo[] */
|
574 |
+
public $args;
|
575 |
+
/** @var ReturnInfo */
|
576 |
+
public $return;
|
577 |
+
/** @var int */
|
578 |
+
public $numRequiredArgs;
|
579 |
+
/** @var string|null */
|
580 |
+
public $cond;
|
581 |
+
public function __construct(\WPStaging\Vendor\FunctionOrMethodName $name, int $classFlags, int $flags, ?string $aliasType, ?\WPStaging\Vendor\FunctionOrMethodName $alias, bool $isDeprecated, bool $verify, array $args, \WPStaging\Vendor\ReturnInfo $return, int $numRequiredArgs, ?string $cond)
|
582 |
+
{
|
583 |
+
$this->name = $name;
|
584 |
+
$this->classFlags = $classFlags;
|
585 |
+
$this->flags = $flags;
|
586 |
+
$this->aliasType = $aliasType;
|
587 |
+
$this->alias = $alias;
|
588 |
+
$this->isDeprecated = $isDeprecated;
|
589 |
+
$this->verify = $verify;
|
590 |
+
$this->args = $args;
|
591 |
+
$this->return = $return;
|
592 |
+
$this->numRequiredArgs = $numRequiredArgs;
|
593 |
+
$this->cond = $cond;
|
594 |
+
}
|
595 |
+
public function isMethod() : bool
|
596 |
+
{
|
597 |
+
return $this->name->isMethod();
|
598 |
+
}
|
599 |
+
public function isFinalMethod() : bool
|
600 |
+
{
|
601 |
+
return $this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_FINAL || $this->classFlags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_FINAL;
|
602 |
+
}
|
603 |
+
public function isInstanceMethod() : bool
|
604 |
+
{
|
605 |
+
return !($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_STATIC) && $this->isMethod() && !$this->name->isConstructor();
|
606 |
+
}
|
607 |
+
/** @return string[] */
|
608 |
+
public function getModifierNames() : array
|
609 |
+
{
|
610 |
+
if (!$this->isMethod()) {
|
611 |
+
return [];
|
612 |
+
}
|
613 |
+
$result = [];
|
614 |
+
if ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_FINAL) {
|
615 |
+
$result[] = "final";
|
616 |
+
} elseif ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_ABSTRACT && $this->classFlags & ~\WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_ABSTRACT) {
|
617 |
+
$result[] = "abstract";
|
618 |
+
}
|
619 |
+
if ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_PROTECTED) {
|
620 |
+
$result[] = "protected";
|
621 |
+
} elseif ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_PRIVATE) {
|
622 |
+
$result[] = "private";
|
623 |
+
} else {
|
624 |
+
$result[] = "public";
|
625 |
+
}
|
626 |
+
if ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_STATIC) {
|
627 |
+
$result[] = "static";
|
628 |
+
}
|
629 |
+
return $result;
|
630 |
+
}
|
631 |
+
public function hasParamWithUnknownDefaultValue() : bool
|
632 |
+
{
|
633 |
+
foreach ($this->args as $arg) {
|
634 |
+
if ($arg->defaultValue && !$arg->hasProperDefaultValue()) {
|
635 |
+
return \true;
|
636 |
+
}
|
637 |
+
}
|
638 |
+
return \false;
|
639 |
+
}
|
640 |
+
public function equalsApartFromName(\WPStaging\Vendor\FuncInfo $other) : bool
|
641 |
+
{
|
642 |
+
if (\count($this->args) !== \count($other->args)) {
|
643 |
+
return \false;
|
644 |
+
}
|
645 |
+
for ($i = 0; $i < \count($this->args); $i++) {
|
646 |
+
if (!$this->args[$i]->equals($other->args[$i])) {
|
647 |
+
return \false;
|
648 |
+
}
|
649 |
+
}
|
650 |
+
return $this->return->equals($other->return) && $this->numRequiredArgs === $other->numRequiredArgs && $this->cond === $other->cond;
|
651 |
+
}
|
652 |
+
public function getArgInfoName() : string
|
653 |
+
{
|
654 |
+
return $this->name->getArgInfoName();
|
655 |
+
}
|
656 |
+
public function getDeclarationKey() : string
|
657 |
+
{
|
658 |
+
$name = $this->alias ?? $this->name;
|
659 |
+
return "{$name}|{$this->cond}";
|
660 |
+
}
|
661 |
+
public function getDeclaration() : ?string
|
662 |
+
{
|
663 |
+
if ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_ABSTRACT) {
|
664 |
+
return null;
|
665 |
+
}
|
666 |
+
$name = $this->alias ?? $this->name;
|
667 |
+
return $name->getDeclaration();
|
668 |
+
}
|
669 |
+
public function getFunctionEntry() : string
|
670 |
+
{
|
671 |
+
if ($this->name instanceof \WPStaging\Vendor\MethodName) {
|
672 |
+
if ($this->alias) {
|
673 |
+
if ($this->alias instanceof \WPStaging\Vendor\MethodName) {
|
674 |
+
return \sprintf("\tZEND_MALIAS(%s, %s, %s, %s, %s)\n", $this->alias->getDeclarationClassName(), $this->name->methodName, $this->alias->methodName, $this->getArgInfoName(), $this->getFlagsAsArginfoString());
|
675 |
+
} else {
|
676 |
+
if ($this->alias instanceof \WPStaging\Vendor\FunctionName) {
|
677 |
+
return \sprintf("\tZEND_ME_MAPPING(%s, %s, %s, %s)\n", $this->name->methodName, $this->alias->getNonNamespacedName(), $this->getArgInfoName(), $this->getFlagsAsArginfoString());
|
678 |
+
} else {
|
679 |
+
throw new \Error("Cannot happen");
|
680 |
+
}
|
681 |
+
}
|
682 |
+
} else {
|
683 |
+
$declarationClassName = $this->name->getDeclarationClassName();
|
684 |
+
if ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_ABSTRACT) {
|
685 |
+
return \sprintf("\tZEND_ABSTRACT_ME_WITH_FLAGS(%s, %s, %s, %s)\n", $declarationClassName, $this->name->methodName, $this->getArgInfoName(), $this->getFlagsAsArginfoString());
|
686 |
+
}
|
687 |
+
return \sprintf("\tZEND_ME(%s, %s, %s, %s)\n", $declarationClassName, $this->name->methodName, $this->getArgInfoName(), $this->getFlagsAsArginfoString());
|
688 |
+
}
|
689 |
+
} else {
|
690 |
+
if ($this->name instanceof \WPStaging\Vendor\FunctionName) {
|
691 |
+
$namespace = $this->name->getNamespace();
|
692 |
+
$declarationName = $this->name->getDeclarationName();
|
693 |
+
if ($this->alias && $this->isDeprecated) {
|
694 |
+
return \sprintf("\tZEND_DEP_FALIAS(%s, %s, %s)\n", $declarationName, $this->alias->getNonNamespacedName(), $this->getArgInfoName());
|
695 |
+
}
|
696 |
+
if ($this->alias) {
|
697 |
+
return \sprintf("\tZEND_FALIAS(%s, %s, %s)\n", $declarationName, $this->alias->getNonNamespacedName(), $this->getArgInfoName());
|
698 |
+
}
|
699 |
+
if ($this->isDeprecated) {
|
700 |
+
return \sprintf("\tZEND_DEP_FE(%s, %s)\n", $declarationName, $this->getArgInfoName());
|
701 |
+
}
|
702 |
+
if ($namespace) {
|
703 |
+
// Render A\B as "A\\B" in C strings for namespaces
|
704 |
+
return \sprintf("\tZEND_NS_FE(\"%s\", %s, %s)\n", \addslashes($namespace), $declarationName, $this->getArgInfoName());
|
705 |
+
} else {
|
706 |
+
return \sprintf("\tZEND_FE(%s, %s)\n", $declarationName, $this->getArgInfoName());
|
707 |
+
}
|
708 |
+
} else {
|
709 |
+
throw new \Error("Cannot happen");
|
710 |
+
}
|
711 |
+
}
|
712 |
+
}
|
713 |
+
private function getFlagsAsArginfoString() : string
|
714 |
+
{
|
715 |
+
$flags = "ZEND_ACC_PUBLIC";
|
716 |
+
if ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_PROTECTED) {
|
717 |
+
$flags = "ZEND_ACC_PROTECTED";
|
718 |
+
} elseif ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_PRIVATE) {
|
719 |
+
$flags = "ZEND_ACC_PRIVATE";
|
720 |
+
}
|
721 |
+
if ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_STATIC) {
|
722 |
+
$flags .= "|ZEND_ACC_STATIC";
|
723 |
+
}
|
724 |
+
if ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_FINAL) {
|
725 |
+
$flags .= "|ZEND_ACC_FINAL";
|
726 |
+
}
|
727 |
+
if ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_ABSTRACT) {
|
728 |
+
$flags .= "|ZEND_ACC_ABSTRACT";
|
729 |
+
}
|
730 |
+
if ($this->isDeprecated) {
|
731 |
+
$flags .= "|ZEND_ACC_DEPRECATED";
|
732 |
+
}
|
733 |
+
return $flags;
|
734 |
+
}
|
735 |
+
/**
|
736 |
+
* @param FuncInfo[] $funcMap
|
737 |
+
* @param FuncInfo[] $aliasMap
|
738 |
+
* @throws Exception
|
739 |
+
*/
|
740 |
+
public function getMethodSynopsisDocument(array $funcMap, array $aliasMap) : ?string
|
741 |
+
{
|
742 |
+
$doc = new \DOMDocument();
|
743 |
+
$doc->formatOutput = \true;
|
744 |
+
$methodSynopsis = $this->getMethodSynopsisElement($funcMap, $aliasMap, $doc);
|
745 |
+
if (!$methodSynopsis) {
|
746 |
+
return null;
|
747 |
+
}
|
748 |
+
$doc->appendChild($methodSynopsis);
|
749 |
+
return $doc->saveXML();
|
750 |
+
}
|
751 |
+
/**
|
752 |
+
* @param FuncInfo[] $funcMap
|
753 |
+
* @param FuncInfo[] $aliasMap
|
754 |
+
* @throws Exception
|
755 |
+
*/
|
756 |
+
public function getMethodSynopsisElement(array $funcMap, array $aliasMap, \DOMDocument $doc) : ?\DOMElement
|
757 |
+
{
|
758 |
+
if ($this->hasParamWithUnknownDefaultValue()) {
|
759 |
+
return null;
|
760 |
+
}
|
761 |
+
if ($this->name->isConstructor()) {
|
762 |
+
$synopsisType = "constructorsynopsis";
|
763 |
+
} elseif ($this->name->isDestructor()) {
|
764 |
+
$synopsisType = "destructorsynopsis";
|
765 |
+
} else {
|
766 |
+
$synopsisType = "methodsynopsis";
|
767 |
+
}
|
768 |
+
$methodSynopsis = $doc->createElement($synopsisType);
|
769 |
+
$aliasedFunc = $this->aliasType === "alias" && isset($funcMap[$this->alias->__toString()]) ? $funcMap[$this->alias->__toString()] : null;
|
770 |
+
$aliasFunc = $aliasMap[$this->name->__toString()] ?? null;
|
771 |
+
if ($this->aliasType === "alias" && $aliasedFunc !== null && $aliasedFunc->isMethod() !== $this->isMethod() || $aliasFunc !== null && $aliasFunc->isMethod() !== $this->isMethod()) {
|
772 |
+
$role = $doc->createAttribute("role");
|
773 |
+
$role->value = $this->isMethod() ? "oop" : "procedural";
|
774 |
+
$methodSynopsis->appendChild($role);
|
775 |
+
}
|
776 |
+
$methodSynopsis->appendChild(new \DOMText("\n "));
|
777 |
+
foreach ($this->getModifierNames() as $modifierString) {
|
778 |
+
$modifierElement = $doc->createElement('modifier', $modifierString);
|
779 |
+
$methodSynopsis->appendChild($modifierElement);
|
780 |
+
$methodSynopsis->appendChild(new \DOMText(" "));
|
781 |
+
}
|
782 |
+
$returnType = $this->return->getMethodSynopsisType();
|
783 |
+
if ($returnType) {
|
784 |
+
$this->appendMethodSynopsisTypeToElement($doc, $methodSynopsis, $returnType);
|
785 |
+
}
|
786 |
+
$methodname = $doc->createElement('methodname', $this->name->__toString());
|
787 |
+
$methodSynopsis->appendChild($methodname);
|
788 |
+
if (empty($this->args)) {
|
789 |
+
$methodSynopsis->appendChild(new \DOMText("\n "));
|
790 |
+
$void = $doc->createElement('void');
|
791 |
+
$methodSynopsis->appendChild($void);
|
792 |
+
} else {
|
793 |
+
foreach ($this->args as $arg) {
|
794 |
+
$methodSynopsis->appendChild(new \DOMText("\n "));
|
795 |
+
$methodparam = $doc->createElement('methodparam');
|
796 |
+
if ($arg->defaultValue !== null) {
|
797 |
+
$methodparam->setAttribute("choice", "opt");
|
798 |
+
}
|
799 |
+
if ($arg->isVariadic) {
|
800 |
+
$methodparam->setAttribute("rep", "repeat");
|
801 |
+
}
|
802 |
+
$methodSynopsis->appendChild($methodparam);
|
803 |
+
$this->appendMethodSynopsisTypeToElement($doc, $methodparam, $arg->getMethodSynopsisType());
|
804 |
+
$parameter = $doc->createElement('parameter', $arg->name);
|
805 |
+
if ($arg->sendBy !== \WPStaging\Vendor\ArgInfo::SEND_BY_VAL) {
|
806 |
+
$parameter->setAttribute("role", "reference");
|
807 |
+
}
|
808 |
+
$methodparam->appendChild($parameter);
|
809 |
+
$defaultValue = $arg->getDefaultValueAsMethodSynopsisString();
|
810 |
+
if ($defaultValue !== null) {
|
811 |
+
$initializer = $doc->createElement('initializer');
|
812 |
+
if (\preg_match('/^[a-zA-Z_][a-zA-Z_0-9]*$/', $defaultValue)) {
|
813 |
+
$constant = $doc->createElement('constant', $defaultValue);
|
814 |
+
$initializer->appendChild($constant);
|
815 |
+
} else {
|
816 |
+
$initializer->nodeValue = $defaultValue;
|
817 |
+
}
|
818 |
+
$methodparam->appendChild($initializer);
|
819 |
+
}
|
820 |
+
}
|
821 |
+
}
|
822 |
+
$methodSynopsis->appendChild(new \DOMText("\n "));
|
823 |
+
return $methodSynopsis;
|
824 |
+
}
|
825 |
+
public function discardInfoForOldPhpVersions() : void
|
826 |
+
{
|
827 |
+
$this->return->type = null;
|
828 |
+
foreach ($this->args as $arg) {
|
829 |
+
$arg->type = null;
|
830 |
+
$arg->defaultValue = null;
|
831 |
+
}
|
832 |
+
}
|
833 |
+
private function appendMethodSynopsisTypeToElement(\DOMDocument $doc, \DOMElement $elementToAppend, \WPStaging\Vendor\Type $type)
|
834 |
+
{
|
835 |
+
if (\count($type->types) > 1) {
|
836 |
+
$typeElement = $doc->createElement('type');
|
837 |
+
$typeElement->setAttribute("class", "union");
|
838 |
+
foreach ($type->types as $type) {
|
839 |
+
$unionTypeElement = $doc->createElement('type', $type->name);
|
840 |
+
$typeElement->appendChild($unionTypeElement);
|
841 |
+
}
|
842 |
+
} else {
|
843 |
+
$typeElement = $doc->createElement('type', $type->types[0]->name);
|
844 |
+
}
|
845 |
+
$elementToAppend->appendChild($typeElement);
|
846 |
+
}
|
847 |
+
}
|
848 |
+
class ClassInfo
|
849 |
+
{
|
850 |
+
/** @var Name */
|
851 |
+
public $name;
|
852 |
+
/** @var FuncInfo[] */
|
853 |
+
public $funcInfos;
|
854 |
+
public function __construct(\WPStaging\Vendor\PhpParser\Node\Name $name, array $funcInfos)
|
855 |
+
{
|
856 |
+
$this->name = $name;
|
857 |
+
$this->funcInfos = $funcInfos;
|
858 |
+
}
|
859 |
+
}
|
860 |
+
class FileInfo
|
861 |
+
{
|
862 |
+
/** @var FuncInfo[] */
|
863 |
+
public $funcInfos = [];
|
864 |
+
/** @var ClassInfo[] */
|
865 |
+
public $classInfos = [];
|
866 |
+
/** @var bool */
|
867 |
+
public $generateFunctionEntries = \false;
|
868 |
+
/** @var string */
|
869 |
+
public $declarationPrefix = "";
|
870 |
+
/** @var bool */
|
871 |
+
public $generateLegacyArginfo = \false;
|
872 |
+
/**
|
873 |
+
* @return iterable<FuncInfo>
|
874 |
+
*/
|
875 |
+
public function getAllFuncInfos() : iterable
|
876 |
+
{
|
877 |
+
yield from $this->funcInfos;
|
878 |
+
foreach ($this->classInfos as $classInfo) {
|
879 |
+
yield from $classInfo->funcInfos;
|
880 |
+
}
|
881 |
+
}
|
882 |
+
}
|
883 |
+
class DocCommentTag
|
884 |
+
{
|
885 |
+
/** @var string */
|
886 |
+
public $name;
|
887 |
+
/** @var string|null */
|
888 |
+
public $value;
|
889 |
+
public function __construct(string $name, ?string $value)
|
890 |
+
{
|
891 |
+
$this->name = $name;
|
892 |
+
$this->value = $value;
|
893 |
+
}
|
894 |
+
public function getValue() : string
|
895 |
+
{
|
896 |
+
if ($this->value === null) {
|
897 |
+
throw new \Exception("@{$this->name} does not have a value");
|
898 |
+
}
|
899 |
+
return $this->value;
|
900 |
+
}
|
901 |
+
public function getType() : string
|
902 |
+
{
|
903 |
+
$value = $this->getValue();
|
904 |
+
$matches = [];
|
905 |
+
if ($this->name === "param") {
|
906 |
+
\preg_match('/^\\s*([\\w\\|\\\\\\[\\]]+)\\s*\\$\\w+.*$/', $value, $matches);
|
907 |
+
} elseif ($this->name === "return") {
|
908 |
+
\preg_match('/^\\s*([\\w\\|\\\\\\[\\]]+)\\s*$/', $value, $matches);
|
909 |
+
}
|
910 |
+
if (isset($matches[1]) === \false) {
|
911 |
+
throw new \Exception("@{$this->name} doesn't contain a type or has an invalid format \"{$value}\"");
|
912 |
+
}
|
913 |
+
return $matches[1];
|
914 |
+
}
|
915 |
+
public function getVariableName() : string
|
916 |
+
{
|
917 |
+
$value = $this->value;
|
918 |
+
if ($value === null || \strlen($value) === 0) {
|
919 |
+
throw new \Exception("@{$this->name} doesn't have any value");
|
920 |
+
}
|
921 |
+
$matches = [];
|
922 |
+
if ($this->name === "param") {
|
923 |
+
\preg_match('/^\\s*[\\w\\|\\\\\\[\\]]+\\s*\\$(\\w+).*$/', $value, $matches);
|
924 |
+
} elseif ($this->name === "prefer-ref") {
|
925 |
+
\preg_match('/^\\s*\\$(\\w+).*$/', $value, $matches);
|
926 |
+
}
|
927 |
+
if (isset($matches[1]) === \false) {
|
928 |
+
throw new \Exception("@{$this->name} doesn't contain a variable name or has an invalid format \"{$value}\"");
|
929 |
+
}
|
930 |
+
return $matches[1];
|
931 |
+
}
|
932 |
+
}
|
933 |
+
/** @return DocCommentTag[] */
|
934 |
+
function parseDocComment(\WPStaging\Vendor\PhpParser\Comment\Doc $comment) : array
|
935 |
+
{
|
936 |
+
$commentText = \substr($comment->getText(), 2, -2);
|
937 |
+
$tags = [];
|
938 |
+
foreach (\explode("\n", $commentText) as $commentLine) {
|
939 |
+
$regex = '/^\\*\\s*@([a-z-]+)(?:\\s+(.+))?$/';
|
940 |
+
if (\preg_match($regex, \trim($commentLine), $matches)) {
|
941 |
+
$tags[] = new \WPStaging\Vendor\DocCommentTag($matches[1], $matches[2] ?? null);
|
942 |
+
}
|
943 |
+
}
|
944 |
+
return $tags;
|
945 |
+
}
|
946 |
+
function parseFunctionLike(\WPStaging\Vendor\PhpParser\PrettyPrinterAbstract $prettyPrinter, \WPStaging\Vendor\FunctionOrMethodName $name, int $classFlags, int $flags, \WPStaging\Vendor\PhpParser\Node\FunctionLike $func, ?string $cond) : \WPStaging\Vendor\FuncInfo
|
947 |
+
{
|
948 |
+
$comment = $func->getDocComment();
|
949 |
+
$paramMeta = [];
|
950 |
+
$aliasType = null;
|
951 |
+
$alias = null;
|
952 |
+
$isDeprecated = \false;
|
953 |
+
$verify = \true;
|
954 |
+
$docReturnType = null;
|
955 |
+
$docParamTypes = [];
|
956 |
+
if ($comment) {
|
957 |
+
$tags = \WPStaging\Vendor\parseDocComment($comment);
|
958 |
+
foreach ($tags as $tag) {
|
959 |
+
if ($tag->name === 'prefer-ref') {
|
960 |
+
$varName = $tag->getVariableName();
|
961 |
+
if (!isset($paramMeta[$varName])) {
|
962 |
+
$paramMeta[$varName] = [];
|
963 |
+
}
|
964 |
+
$paramMeta[$varName]['preferRef'] = \true;
|
965 |
+
} else {
|
966 |
+
if ($tag->name === 'alias' || $tag->name === 'implementation-alias') {
|
967 |
+
$aliasType = $tag->name;
|
968 |
+
$aliasParts = \explode("::", $tag->getValue());
|
969 |
+
if (\count($aliasParts) === 1) {
|
970 |
+
$alias = new \WPStaging\Vendor\FunctionName(new \WPStaging\Vendor\PhpParser\Node\Name($aliasParts[0]));
|
971 |
+
} else {
|
972 |
+
$alias = new \WPStaging\Vendor\MethodName(new \WPStaging\Vendor\PhpParser\Node\Name($aliasParts[0]), $aliasParts[1]);
|
973 |
+
}
|
974 |
+
} else {
|
975 |
+
if ($tag->name === 'deprecated') {
|
976 |
+
$isDeprecated = \true;
|
977 |
+
} else {
|
978 |
+
if ($tag->name === 'no-verify') {
|
979 |
+
$verify = \false;
|
980 |
+
} else {
|
981 |
+
if ($tag->name === 'return') {
|
982 |
+
$docReturnType = $tag->getType();
|
983 |
+
} else {
|
984 |
+
if ($tag->name === 'param') {
|
985 |
+
$docParamTypes[$tag->getVariableName()] = $tag->getType();
|
986 |
+
}
|
987 |
+
}
|
988 |
+
}
|
989 |
+
}
|
990 |
+
}
|
991 |
+
}
|
992 |
+
}
|
993 |
+
}
|
994 |
+
$varNameSet = [];
|
995 |
+
$args = [];
|
996 |
+
$numRequiredArgs = 0;
|
997 |
+
$foundVariadic = \false;
|
998 |
+
foreach ($func->getParams() as $i => $param) {
|
999 |
+
$varName = $param->var->name;
|
1000 |
+
$preferRef = !empty($paramMeta[$varName]['preferRef']);
|
1001 |
+
unset($paramMeta[$varName]);
|
1002 |
+
if (isset($varNameSet[$varName])) {
|
1003 |
+
throw new \Exception("Duplicate parameter name {$varName} for function {$name}");
|
1004 |
+
}
|
1005 |
+
$varNameSet[$varName] = \true;
|
1006 |
+
if ($preferRef) {
|
1007 |
+
$sendBy = \WPStaging\Vendor\ArgInfo::SEND_PREFER_REF;
|
1008 |
+
} else {
|
1009 |
+
if ($param->byRef) {
|
1010 |
+
$sendBy = \WPStaging\Vendor\ArgInfo::SEND_BY_REF;
|
1011 |
+
} else {
|
1012 |
+
$sendBy = \WPStaging\Vendor\ArgInfo::SEND_BY_VAL;
|
1013 |
+
}
|
1014 |
+
}
|
1015 |
+
if ($foundVariadic) {
|
1016 |
+
throw new \Exception("Error in function {$name}: only the last parameter can be variadic");
|
1017 |
+
}
|
1018 |
+
$type = $param->type ? \WPStaging\Vendor\Type::fromNode($param->type) : null;
|
1019 |
+
if ($type === null && !isset($docParamTypes[$varName])) {
|
1020 |
+
throw new \Exception("Missing parameter type for function {$name}()");
|
1021 |
+
}
|
1022 |
+
if ($param->default instanceof \WPStaging\Vendor\PhpParser\Node\Expr\ConstFetch && $param->default->name->toLowerString() === "null" && $type && !$type->isNullable()) {
|
1023 |
+
$simpleType = $type->tryToSimpleType();
|
1024 |
+
if ($simpleType === null) {
|
1025 |
+
throw new \Exception("Parameter {$varName} of function {$name} has null default, but is not nullable");
|
1026 |
+
}
|
1027 |
+
}
|
1028 |
+
$foundVariadic = $param->variadic;
|
1029 |
+
$args[] = new \WPStaging\Vendor\ArgInfo($varName, $sendBy, $param->variadic, $type, isset($docParamTypes[$varName]) ? \WPStaging\Vendor\Type::fromPhpDoc($docParamTypes[$varName]) : null, $param->default ? $prettyPrinter->prettyPrintExpr($param->default) : null);
|
1030 |
+
if (!$param->default && !$param->variadic) {
|
1031 |
+
$numRequiredArgs = $i + 1;
|
1032 |
+
}
|
1033 |
+
}
|
1034 |
+
foreach (\array_keys($paramMeta) as $var) {
|
1035 |
+
throw new \Exception("Found metadata for invalid param {$var} of function {$name}");
|
1036 |
+
}
|
1037 |
+
$returnType = $func->getReturnType();
|
1038 |
+
if ($returnType === null && $docReturnType === null && !$name->isConstructor() && !$name->isDestructor()) {
|
1039 |
+
throw new \Exception("Missing return type for function {$name}()");
|
1040 |
+
}
|
1041 |
+
$return = new \WPStaging\Vendor\ReturnInfo($func->returnsByRef(), $returnType ? \WPStaging\Vendor\Type::fromNode($returnType) : null, $docReturnType ? \WPStaging\Vendor\Type::fromPhpDoc($docReturnType) : null);
|
1042 |
+
return new \WPStaging\Vendor\FuncInfo($name, $classFlags, $flags, $aliasType, $alias, $isDeprecated, $verify, $args, $return, $numRequiredArgs, $cond);
|
1043 |
+
}
|
1044 |
+
function handlePreprocessorConditions(array &$conds, \WPStaging\Vendor\PhpParser\Node\Stmt $stmt) : ?string
|
1045 |
+
{
|
1046 |
+
foreach ($stmt->getComments() as $comment) {
|
1047 |
+
$text = \trim($comment->getText());
|
1048 |
+
if (\preg_match('/^#\\s*if\\s+(.+)$/', $text, $matches)) {
|
1049 |
+
$conds[] = $matches[1];
|
1050 |
+
} else {
|
1051 |
+
if (\preg_match('/^#\\s*ifdef\\s+(.+)$/', $text, $matches)) {
|
1052 |
+
$conds[] = "defined({$matches[1]})";
|
1053 |
+
} else {
|
1054 |
+
if (\preg_match('/^#\\s*ifndef\\s+(.+)$/', $text, $matches)) {
|
1055 |
+
$conds[] = "!defined({$matches[1]})";
|
1056 |
+
} else {
|
1057 |
+
if (\preg_match('/^#\\s*else$/', $text)) {
|
1058 |
+
if (empty($conds)) {
|
1059 |
+
throw new \Exception("Encountered else without corresponding #if");
|
1060 |
+
}
|
1061 |
+
$cond = \array_pop($conds);
|
1062 |
+
$conds[] = "!({$cond})";
|
1063 |
+
} else {
|
1064 |
+
if (\preg_match('/^#\\s*endif$/', $text)) {
|
1065 |
+
if (empty($conds)) {
|
1066 |
+
throw new \Exception("Encountered #endif without corresponding #if");
|
1067 |
+
}
|
1068 |
+
\array_pop($conds);
|
1069 |
+
} else {
|
1070 |
+
if ($text[0] === '#') {
|
1071 |
+
throw new \Exception("Unrecognized preprocessor directive \"{$text}\"");
|
1072 |
+
}
|
1073 |
+
}
|
1074 |
+
}
|
1075 |
+
}
|
1076 |
+
}
|
1077 |
+
}
|
1078 |
+
}
|
1079 |
+
return empty($conds) ? null : \implode(' && ', $conds);
|
1080 |
+
}
|
1081 |
+
function getFileDocComment(array $stmts) : ?\WPStaging\Vendor\PhpParser\Comment\Doc
|
1082 |
+
{
|
1083 |
+
if (empty($stmts)) {
|
1084 |
+
return null;
|
1085 |
+
}
|
1086 |
+
$comments = $stmts[0]->getComments();
|
1087 |
+
if (empty($comments)) {
|
1088 |
+
return null;
|
1089 |
+
}
|
1090 |
+
if ($comments[0] instanceof \WPStaging\Vendor\PhpParser\Comment\Doc) {
|
1091 |
+
return $comments[0];
|
1092 |
+
}
|
1093 |
+
return null;
|
1094 |
+
}
|
1095 |
+
function handleStatements(\WPStaging\Vendor\FileInfo $fileInfo, array $stmts, \WPStaging\Vendor\PhpParser\PrettyPrinterAbstract $prettyPrinter)
|
1096 |
+
{
|
1097 |
+
$conds = [];
|
1098 |
+
foreach ($stmts as $stmt) {
|
1099 |
+
if ($stmt instanceof \WPStaging\Vendor\PhpParser\Node\Stmt\Nop) {
|
1100 |
+
continue;
|
1101 |
+
}
|
1102 |
+
if ($stmt instanceof \WPStaging\Vendor\PhpParser\Node\Stmt\Namespace_) {
|
1103 |
+
\WPStaging\Vendor\handleStatements($fileInfo, $stmt->stmts, $prettyPrinter);
|
1104 |
+
continue;
|
1105 |
+
}
|
1106 |
+
$cond = \WPStaging\Vendor\handlePreprocessorConditions($conds, $stmt);
|
1107 |
+
if ($stmt instanceof \WPStaging\Vendor\PhpParser\Node\Stmt\Function_) {
|
1108 |
+
$fileInfo->funcInfos[] = \WPStaging\Vendor\parseFunctionLike($prettyPrinter, new \WPStaging\Vendor\FunctionName($stmt->namespacedName), 0, 0, $stmt, $cond);
|
1109 |
+
continue;
|
1110 |
+
}
|
1111 |
+
if ($stmt instanceof \WPStaging\Vendor\PhpParser\Node\Stmt\ClassLike) {
|
1112 |
+
$className = $stmt->namespacedName;
|
1113 |
+
$methodInfos = [];
|
1114 |
+
foreach ($stmt->stmts as $classStmt) {
|
1115 |
+
$cond = \WPStaging\Vendor\handlePreprocessorConditions($conds, $classStmt);
|
1116 |
+
if ($classStmt instanceof \WPStaging\Vendor\PhpParser\Node\Stmt\Nop) {
|
1117 |
+
continue;
|
1118 |
+
}
|
1119 |
+
if (!$classStmt instanceof \WPStaging\Vendor\PhpParser\Node\Stmt\ClassMethod) {
|
1120 |
+
throw new \Exception("Not implemented {$classStmt->getType()}");
|
1121 |
+
}
|
1122 |
+
$classFlags = 0;
|
1123 |
+
if ($stmt instanceof \WPStaging\Vendor\PhpParser\Node\Stmt\Class_) {
|
1124 |
+
$classFlags = $stmt->flags;
|
1125 |
+
}
|
1126 |
+
$flags = $classStmt->flags;
|
1127 |
+
if ($stmt instanceof \WPStaging\Vendor\PhpParser\Node\Stmt\Interface_) {
|
1128 |
+
$flags |= \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_ABSTRACT;
|
1129 |
+
}
|
1130 |
+
if (!($flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::VISIBILITY_MODIFIER_MASK)) {
|
1131 |
+
throw new \Exception("Method visibility modifier is required");
|
1132 |
+
}
|
1133 |
+
$methodInfos[] = \WPStaging\Vendor\parseFunctionLike($prettyPrinter, new \WPStaging\Vendor\MethodName($className, $classStmt->name->toString()), $classFlags, $flags, $classStmt, $cond);
|
1134 |
+
}
|
1135 |
+
$fileInfo->classInfos[] = new \WPStaging\Vendor\ClassInfo($className, $methodInfos);
|
1136 |
+
continue;
|
1137 |
+
}
|
1138 |
+
throw new \Exception("Unexpected node {$stmt->getType()}");
|
1139 |
+
}
|
1140 |
+
}
|
1141 |
+
function parseStubFile(string $code) : \WPStaging\Vendor\FileInfo
|
1142 |
+
{
|
1143 |
+
$lexer = new \WPStaging\Vendor\PhpParser\Lexer();
|
1144 |
+
$parser = new \WPStaging\Vendor\PhpParser\Parser\Php7($lexer);
|
1145 |
+
$nodeTraverser = new \WPStaging\Vendor\PhpParser\NodeTraverser();
|
1146 |
+
$nodeTraverser->addVisitor(new \WPStaging\Vendor\PhpParser\NodeVisitor\NameResolver());
|
1147 |
+
$prettyPrinter = new class extends \WPStaging\Vendor\PhpParser\PrettyPrinter\Standard
|
1148 |
+
{
|
1149 |
+
protected function pName_FullyQualified(\WPStaging\Vendor\PhpParser\Node\Name\FullyQualified $node)
|
1150 |
+
{
|
1151 |
+
return \implode('\\', $node->parts);
|
1152 |
+
}
|
1153 |
+
};
|
1154 |
+
$stmts = $parser->parse($code);
|
1155 |
+
$nodeTraverser->traverse($stmts);
|
1156 |
+
$fileInfo = new \WPStaging\Vendor\FileInfo();
|
1157 |
+
$fileDocComment = \WPStaging\Vendor\getFileDocComment($stmts);
|
1158 |
+
if ($fileDocComment) {
|
1159 |
+
$fileTags = \WPStaging\Vendor\parseDocComment($fileDocComment);
|
1160 |
+
foreach ($fileTags as $tag) {
|
1161 |
+
if ($tag->name === 'generate-function-entries') {
|
1162 |
+
$fileInfo->generateFunctionEntries = \true;
|
1163 |
+
$fileInfo->declarationPrefix = $tag->value ? $tag->value . " " : "";
|
1164 |
+
} else {
|
1165 |
+
if ($tag->name === 'generate-legacy-arginfo') {
|
1166 |
+
$fileInfo->generateLegacyArginfo = \true;
|
1167 |
+
}
|
1168 |
+
}
|
1169 |
+
}
|
1170 |
+
}
|
1171 |
+
\WPStaging\Vendor\handleStatements($fileInfo, $stmts, $prettyPrinter);
|
1172 |
+
return $fileInfo;
|
1173 |
+
}
|
1174 |
+
function funcInfoToCode(\WPStaging\Vendor\FuncInfo $funcInfo, bool $minimal) : string
|
1175 |
+
{
|
1176 |
+
$code = '';
|
1177 |
+
// Generate the minimal, most compatible arginfo across PHP versions
|
1178 |
+
if ($minimal) {
|
1179 |
+
$code .= \sprintf("ZEND_BEGIN_ARG_INFO_EX(%s, 0, %d, %d)\n", $funcInfo->getArgInfoName(), $funcInfo->return->byRef, $funcInfo->numRequiredArgs);
|
1180 |
+
foreach ($funcInfo->args as $argInfo) {
|
1181 |
+
$code .= \sprintf("\tZEND_ARG_INFO(0, %s)\n", $argInfo->name);
|
1182 |
+
}
|
1183 |
+
} else {
|
1184 |
+
$returnType = $funcInfo->return->type;
|
1185 |
+
if ($returnType !== null) {
|
1186 |
+
if (null !== ($simpleReturnType = $returnType->tryToSimpleType())) {
|
1187 |
+
if ($simpleReturnType->isBuiltin) {
|
1188 |
+
$code .= \sprintf("AWS_PHP_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(%s, %d, %d, %s, %d)\n", $funcInfo->getArgInfoName(), $funcInfo->return->byRef, $funcInfo->numRequiredArgs, $simpleReturnType->toTypeCode(), $returnType->isNullable());
|
1189 |
+
} else {
|
1190 |
+
$code .= \sprintf("ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(%s, %d, %d, %s, %d)\n", $funcInfo->getArgInfoName(), $funcInfo->return->byRef, $funcInfo->numRequiredArgs, $simpleReturnType->toEscapedName(), $returnType->isNullable());
|
1191 |
+
}
|
1192 |
+
} else {
|
1193 |
+
$arginfoType = $returnType->toArginfoType();
|
1194 |
+
if ($arginfoType->hasClassType()) {
|
1195 |
+
$code .= \sprintf("ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(%s, %d, %d, %s, %s)\n", $funcInfo->getArgInfoName(), $funcInfo->return->byRef, $funcInfo->numRequiredArgs, $arginfoType->toClassTypeString(), $arginfoType->toTypeMask());
|
1196 |
+
} else {
|
1197 |
+
$code .= \sprintf("ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(%s, %d, %d, %s)\n", $funcInfo->getArgInfoName(), $funcInfo->return->byRef, $funcInfo->numRequiredArgs, $arginfoType->toTypeMask());
|
1198 |
+
}
|
1199 |
+
}
|
1200 |
+
} else {
|
1201 |
+
$code .= \sprintf("ZEND_BEGIN_ARG_INFO_EX(%s, 0, %d, %d)\n", $funcInfo->getArgInfoName(), $funcInfo->return->byRef, $funcInfo->numRequiredArgs);
|
1202 |
+
}
|
1203 |
+
foreach ($funcInfo->args as $argInfo) {
|
1204 |
+
$argKind = $argInfo->isVariadic ? "ARG_VARIADIC" : "ARG";
|
1205 |
+
$argDefaultKind = $argInfo->hasProperDefaultValue() ? "_WITH_DEFAULT_VALUE" : "";
|
1206 |
+
$argType = $argInfo->type;
|
1207 |
+
if ($argType !== null) {
|
1208 |
+
if (null !== ($simpleArgType = $argType->tryToSimpleType())) {
|
1209 |
+
if ($simpleArgType->isBuiltin) {
|
1210 |
+
$code .= \sprintf("\tZEND_%s_TYPE_INFO%s(%s, %s, %s, %d%s)\n", $argKind, $argDefaultKind, $argInfo->getSendByString(), $argInfo->name, $simpleArgType->toTypeCode(), $argType->isNullable(), $argInfo->hasProperDefaultValue() ? ", " . $argInfo->getDefaultValueAsArginfoString() : "");
|
1211 |
+
} else {
|
1212 |
+
$code .= \sprintf("\tZEND_%s_OBJ_INFO%s(%s, %s, %s, %d%s)\n", $argKind, $argDefaultKind, $argInfo->getSendByString(), $argInfo->name, $simpleArgType->toEscapedName(), $argType->isNullable(), $argInfo->hasProperDefaultValue() ? ", " . $argInfo->getDefaultValueAsArginfoString() : "");
|
1213 |
+
}
|
1214 |
+
} else {
|
1215 |
+
$arginfoType = $argType->toArginfoType();
|
1216 |
+
if ($arginfoType->hasClassType()) {
|
1217 |
+
$code .= \sprintf("\tZEND_%s_OBJ_TYPE_MASK(%s, %s, %s, %s, %s)\n", $argKind, $argInfo->getSendByString(), $argInfo->name, $arginfoType->toClassTypeString(), $arginfoType->toTypeMask(), $argInfo->getDefaultValueAsArginfoString());
|
1218 |
+
} else {
|
1219 |
+
$code .= \sprintf("\tZEND_%s_TYPE_MASK(%s, %s, %s, %s)\n", $argKind, $argInfo->getSendByString(), $argInfo->name, $arginfoType->toTypeMask(), $argInfo->getDefaultValueAsArginfoString());
|
1220 |
+
}
|
1221 |
+
}
|
1222 |
+
} else {
|
1223 |
+
$code .= \sprintf("\tZEND_%s_INFO%s(%s, %s%s)\n", $argKind, $argDefaultKind, $argInfo->getSendByString(), $argInfo->name, $argInfo->hasProperDefaultValue() ? ", " . $argInfo->getDefaultValueAsArginfoString() : "");
|
1224 |
+
}
|
1225 |
+
}
|
1226 |
+
}
|
1227 |
+
$code .= "ZEND_END_ARG_INFO()";
|
1228 |
+
return $code . "\n";
|
1229 |
+
}
|
1230 |
+
/** @param FuncInfo[] $generatedFuncInfos */
|
1231 |
+
function findEquivalentFuncInfo(array $generatedFuncInfos, \WPStaging\Vendor\FuncInfo $funcInfo) : ?\WPStaging\Vendor\FuncInfo
|
1232 |
+
{
|
1233 |
+
foreach ($generatedFuncInfos as $generatedFuncInfo) {
|
1234 |
+
if ($generatedFuncInfo->equalsApartFromName($funcInfo)) {
|
1235 |
+
return $generatedFuncInfo;
|
1236 |
+
}
|
1237 |
+
}
|
1238 |
+
return null;
|
1239 |
+
}
|
1240 |
+
/** @param iterable<FuncInfo> $funcInfos */
|
1241 |
+
function generateCodeWithConditions(iterable $funcInfos, string $separator, \Closure $codeGenerator) : string
|
1242 |
+
{
|
1243 |
+
$code = "";
|
1244 |
+
foreach ($funcInfos as $funcInfo) {
|
1245 |
+
$funcCode = $codeGenerator($funcInfo);
|
1246 |
+
if ($funcCode === null) {
|
1247 |
+
continue;
|
1248 |
+
}
|
1249 |
+
$code .= $separator;
|
1250 |
+
if ($funcInfo->cond) {
|
1251 |
+
$code .= "#if {$funcInfo->cond}\n";
|
1252 |
+
$code .= $funcCode;
|
1253 |
+
$code .= "#endif\n";
|
1254 |
+
} else {
|
1255 |
+
$code .= $funcCode;
|
1256 |
+
}
|
1257 |
+
}
|
1258 |
+
return $code;
|
1259 |
+
}
|
1260 |
+
function generateArgInfoCode(\WPStaging\Vendor\FileInfo $fileInfo, string $stubHash, bool $minimal) : string
|
1261 |
+
{
|
1262 |
+
$code = "/* This is a generated file, edit the .stub.php file instead.\n" . " * Stub hash: {$stubHash} */\n";
|
1263 |
+
$generatedFuncInfos = [];
|
1264 |
+
$code .= \WPStaging\Vendor\generateCodeWithConditions($fileInfo->getAllFuncInfos(), "\n", function (\WPStaging\Vendor\FuncInfo $funcInfo) use(&$generatedFuncInfos, $minimal) {
|
1265 |
+
/* If there already is an equivalent arginfo structure, only emit a #define */
|
1266 |
+
if ($generatedFuncInfo = \WPStaging\Vendor\findEquivalentFuncInfo($generatedFuncInfos, $funcInfo)) {
|
1267 |
+
$code = \sprintf("#define %s %s\n", $funcInfo->getArgInfoName(), $generatedFuncInfo->getArgInfoName());
|
1268 |
+
} else {
|
1269 |
+
$code = \WPStaging\Vendor\funcInfoToCode($funcInfo, $minimal);
|
1270 |
+
}
|
1271 |
+
$generatedFuncInfos[] = $funcInfo;
|
1272 |
+
return $code;
|
1273 |
+
});
|
1274 |
+
if ($fileInfo->generateFunctionEntries) {
|
1275 |
+
$code .= "\n\n";
|
1276 |
+
$generatedFunctionDeclarations = [];
|
1277 |
+
$code .= \WPStaging\Vendor\generateCodeWithConditions($fileInfo->getAllFuncInfos(), "", function (\WPStaging\Vendor\FuncInfo $funcInfo) use($fileInfo, &$generatedFunctionDeclarations) {
|
1278 |
+
$key = $funcInfo->getDeclarationKey();
|
1279 |
+
if (isset($generatedFunctionDeclarations[$key])) {
|
1280 |
+
return null;
|
1281 |
+
}
|
1282 |
+
$generatedFunctionDeclarations[$key] = \true;
|
1283 |
+
return $fileInfo->declarationPrefix . $funcInfo->getDeclaration();
|
1284 |
+
});
|
1285 |
+
if (!empty($fileInfo->funcInfos)) {
|
1286 |
+
$code .= \WPStaging\Vendor\generateFunctionEntries(null, $fileInfo->funcInfos);
|
1287 |
+
}
|
1288 |
+
foreach ($fileInfo->classInfos as $classInfo) {
|
1289 |
+
$code .= \WPStaging\Vendor\generateFunctionEntries($classInfo->name, $classInfo->funcInfos);
|
1290 |
+
}
|
1291 |
+
}
|
1292 |
+
return $code;
|
1293 |
+
}
|
1294 |
+
/** @param FuncInfo[] $funcInfos */
|
1295 |
+
function generateFunctionEntries(?\WPStaging\Vendor\PhpParser\Node\Name $className, array $funcInfos) : string
|
1296 |
+
{
|
1297 |
+
$code = "";
|
1298 |
+
$functionEntryName = "ext_functions";
|
1299 |
+
if ($className) {
|
1300 |
+
$underscoreName = \implode("_", $className->parts);
|
1301 |
+
$functionEntryName = "class_{$underscoreName}_methods";
|
1302 |
+
}
|
1303 |
+
$code .= "\n\nstatic const zend_function_entry {$functionEntryName}[] = {\n";
|
1304 |
+
$code .= \WPStaging\Vendor\generateCodeWithConditions($funcInfos, "", function (\WPStaging\Vendor\FuncInfo $funcInfo) {
|
1305 |
+
return $funcInfo->getFunctionEntry();
|
1306 |
+
});
|
1307 |
+
$code .= "\tZEND_FE_END\n";
|
1308 |
+
$code .= "};\n";
|
1309 |
+
return $code;
|
1310 |
+
}
|
1311 |
+
/**
|
1312 |
+
* @param FuncInfo[] $funcMap
|
1313 |
+
* @param FuncInfo[] $aliasMap
|
1314 |
+
* @return array<string, string>
|
1315 |
+
*/
|
1316 |
+
function generateMethodSynopses(array $funcMap, array $aliasMap) : array
|
1317 |
+
{
|
1318 |
+
$result = [];
|
1319 |
+
foreach ($funcMap as $funcInfo) {
|
1320 |
+
$methodSynopsis = $funcInfo->getMethodSynopsisDocument($funcMap, $aliasMap);
|
1321 |
+
if ($methodSynopsis !== null) {
|
1322 |
+
$result[$funcInfo->name->getMethodSynopsisFilename() . ".xml"] = $methodSynopsis;
|
1323 |
+
}
|
1324 |
+
}
|
1325 |
+
return $result;
|
1326 |
+
}
|
1327 |
+
/**
|
1328 |
+
* @param FuncInfo[] $funcMap
|
1329 |
+
* @param FuncInfo[] $aliasMap
|
1330 |
+
* @return array<string, string>
|
1331 |
+
*/
|
1332 |
+
function replaceMethodSynopses(string $targetDirectory, array $funcMap, array $aliasMap) : array
|
1333 |
+
{
|
1334 |
+
$methodSynopses = [];
|
1335 |
+
$it = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($targetDirectory), \RecursiveIteratorIterator::LEAVES_ONLY);
|
1336 |
+
foreach ($it as $file) {
|
1337 |
+
$pathName = $file->getPathName();
|
1338 |
+
if (!\preg_match('/\\.xml$/i', $pathName)) {
|
1339 |
+
continue;
|
1340 |
+
}
|
1341 |
+
$xml = \file_get_contents($pathName);
|
1342 |
+
if ($xml === \false) {
|
1343 |
+
continue;
|
1344 |
+
}
|
1345 |
+
if (\stripos($xml, "<methodsynopsis") === \false && \stripos($xml, "<constructorsynopsis") === \false && \stripos($xml, "<destructorsynopsis") === \false) {
|
1346 |
+
continue;
|
1347 |
+
}
|
1348 |
+
$replacedXml = \preg_replace("/&([A-Za-z0-9._{}%-]+?;)/", "REPLACED-ENTITY-\$1", $xml);
|
1349 |
+
$doc = new \DOMDocument();
|
1350 |
+
$doc->formatOutput = \false;
|
1351 |
+
$doc->preserveWhiteSpace = \true;
|
1352 |
+
$doc->validateOnParse = \true;
|
1353 |
+
$success = $doc->loadXML($replacedXml);
|
1354 |
+
if (!$success) {
|
1355 |
+
echo "Failed opening {$pathName}\n";
|
1356 |
+
continue;
|
1357 |
+
}
|
1358 |
+
$docComparator = new \DOMDocument();
|
1359 |
+
$docComparator->preserveWhiteSpace = \false;
|
1360 |
+
$docComparator->formatOutput = \true;
|
1361 |
+
$methodSynopsisElements = [];
|
1362 |
+
foreach ($doc->getElementsByTagName("constructorsynopsis") as $element) {
|
1363 |
+
$methodSynopsisElements[] = $element;
|
1364 |
+
}
|
1365 |
+
foreach ($doc->getElementsByTagName("destructorsynopsis") as $element) {
|
1366 |
+
$methodSynopsisElements[] = $element;
|
1367 |
+
}
|
1368 |
+
foreach ($doc->getElementsByTagName("methodsynopsis") as $element) {
|
1369 |
+
$methodSynopsisElements[] = $element;
|
1370 |
+
}
|
1371 |
+
foreach ($methodSynopsisElements as $methodSynopsis) {
|
1372 |
+
if (!$methodSynopsis instanceof \DOMElement) {
|
1373 |
+
continue;
|
1374 |
+
}
|
1375 |
+
$list = $methodSynopsis->getElementsByTagName("methodname");
|
1376 |
+
$item = $list->item(0);
|
1377 |
+
if (!$item instanceof \DOMElement) {
|
1378 |
+
continue;
|
1379 |
+
}
|
1380 |
+
$funcName = $item->textContent;
|
1381 |
+
if (!isset($funcMap[$funcName])) {
|
1382 |
+
continue;
|
1383 |
+
}
|
1384 |
+
$funcInfo = $funcMap[$funcName];
|
1385 |
+
$newMethodSynopsis = $funcInfo->getMethodSynopsisElement($funcMap, $aliasMap, $doc);
|
1386 |
+
if ($newMethodSynopsis === null) {
|
1387 |
+
continue;
|
1388 |
+
}
|
1389 |
+
// Retrieve current signature
|
1390 |
+
$params = [];
|
1391 |
+
$list = $methodSynopsis->getElementsByTagName("methodparam");
|
1392 |
+
foreach ($list as $i => $item) {
|
1393 |
+
if (!$item instanceof \DOMElement) {
|
1394 |
+
continue;
|
1395 |
+
}
|
1396 |
+
$paramList = $item->getElementsByTagName("parameter");
|
1397 |
+
if ($paramList->count() !== 1) {
|
1398 |
+
continue;
|
1399 |
+
}
|
1400 |
+
$paramName = $paramList->item(0)->textContent;
|
1401 |
+
$paramTypes = [];
|
1402 |
+
$paramList = $item->getElementsByTagName("type");
|
1403 |
+
foreach ($paramList as $type) {
|
1404 |
+
if (!$type instanceof \DOMElement) {
|
1405 |
+
continue;
|
1406 |
+
}
|
1407 |
+
$paramTypes[] = $type->textContent;
|
1408 |
+
}
|
1409 |
+
$params[$paramName] = ["index" => $i, "type" => $paramTypes];
|
1410 |
+
}
|
1411 |
+
// Check if there is any change - short circuit if there is not any.
|
1412 |
+
$xml1 = $doc->saveXML($methodSynopsis);
|
1413 |
+
$xml1 = \preg_replace("/&([A-Za-z0-9._{}%-]+?;)/", "REPLACED-ENTITY-\$1", $xml1);
|
1414 |
+
$docComparator->loadXML($xml1);
|
1415 |
+
$xml1 = $docComparator->saveXML();
|
1416 |
+
$methodSynopsis->parentNode->replaceChild($newMethodSynopsis, $methodSynopsis);
|
1417 |
+
$xml2 = $doc->saveXML($newMethodSynopsis);
|
1418 |
+
$xml2 = \preg_replace("/&([A-Za-z0-9._{}%-]+?;)/", "REPLACED-ENTITY-\$1", $xml2);
|
1419 |
+
$docComparator->loadXML($xml2);
|
1420 |
+
$xml2 = $docComparator->saveXML();
|
1421 |
+
if ($xml1 === $xml2) {
|
1422 |
+
continue;
|
1423 |
+
}
|
1424 |
+
// Update parameter references
|
1425 |
+
$paramList = $doc->getElementsByTagName("parameter");
|
1426 |
+
/** @var DOMElement $paramElement */
|
1427 |
+
foreach ($paramList as $paramElement) {
|
1428 |
+
if ($paramElement->parentNode && $paramElement->parentNode->nodeName === "methodparam") {
|
1429 |
+
continue;
|
1430 |
+
}
|
1431 |
+
$name = $paramElement->textContent;
|
1432 |
+
if (!isset($params[$name])) {
|
1433 |
+
continue;
|
1434 |
+
}
|
1435 |
+
$index = $params[$name]["index"];
|
1436 |
+
if (!isset($funcInfo->args[$index])) {
|
1437 |
+
continue;
|
1438 |
+
}
|
1439 |
+
$paramElement->textContent = $funcInfo->args[$index]->name;
|
1440 |
+
}
|
1441 |
+
// Return the updated XML
|
1442 |
+
$replacedXml = $doc->saveXML();
|
1443 |
+
$replacedXml = \preg_replace(["/REPLACED-ENTITY-([A-Za-z0-9._{}%-]+?;)/", "/<refentry\\s+xmlns=\"([a-z0-9.:\\/]+)\"\\s+xml:id=\"([a-z0-9._-]+)\"\\s*>/i", "/<refentry\\s+xmlns=\"([a-z0-9.:\\/]+)\"\\s+xmlns:xlink=\"([a-z0-9.:\\/]+)\"\\s+xml:id=\"([a-z0-9._-]+)\"\\s*>/i"], ["&\$1", "<refentry xml:id=\"\$2\" xmlns=\"\$1\">", "<refentry xml:id=\"\$3\" xmlns=\"\$1\" xmlns:xlink=\"\$2\">"], $replacedXml);
|
1444 |
+
$methodSynopses[$pathName] = $replacedXml;
|
1445 |
+
}
|
1446 |
+
}
|
1447 |
+
return $methodSynopses;
|
1448 |
+
}
|
1449 |
+
function installPhpParser(string $version, string $phpParserDir)
|
1450 |
+
{
|
1451 |
+
$lockFile = __DIR__ . "/PHP-Parser-install-lock";
|
1452 |
+
$lockFd = \fopen($lockFile, 'w+');
|
1453 |
+
if (!\flock($lockFd, \LOCK_EX)) {
|
1454 |
+
throw new \Exception("Failed to acquire installation lock");
|
1455 |
+
}
|
1456 |
+
try {
|
1457 |
+
// Check whether a parallel process has already installed PHP-Parser.
|
1458 |
+
if (\is_dir($phpParserDir)) {
|
1459 |
+
return;
|
1460 |
+
}
|
1461 |
+
$cwd = \getcwd();
|
1462 |
+
\chdir(__DIR__);
|
1463 |
+
$tarName = "v{$version}.tar.gz";
|
1464 |
+
\passthru("wget https://github.com/nikic/PHP-Parser/archive/{$tarName}", $exit);
|
1465 |
+
if ($exit !== 0) {
|
1466 |
+
\passthru("curl -LO https://github.com/nikic/PHP-Parser/archive/{$tarName}", $exit);
|
1467 |
+
}
|
1468 |
+
if ($exit !== 0) {
|
1469 |
+
throw new \Exception("Failed to download PHP-Parser tarball");
|
1470 |
+
}
|
1471 |
+
if (!\mkdir($phpParserDir)) {
|
1472 |
+
throw new \Exception("Failed to create directory {$phpParserDir}");
|
1473 |
+
}
|
1474 |
+
\passthru("tar xvzf {$tarName} -C PHP-Parser-{$version} --strip-components 1", $exit);
|
1475 |
+
if ($exit !== 0) {
|
1476 |
+
throw new \Exception("Failed to extract PHP-Parser tarball");
|
1477 |
+
}
|
1478 |
+
\unlink(__DIR__ . "/{$tarName}");
|
1479 |
+
\chdir($cwd);
|
1480 |
+
} finally {
|
1481 |
+
\flock($lockFd, \LOCK_UN);
|
1482 |
+
@\unlink($lockFile);
|
1483 |
+
}
|
1484 |
+
}
|
1485 |
+
function initPhpParser()
|
1486 |
+
{
|
1487 |
+
static $isInitialized = \false;
|
1488 |
+
if ($isInitialized) {
|
1489 |
+
return;
|
1490 |
+
}
|
1491 |
+
if (!\extension_loaded("tokenizer")) {
|
1492 |
+
throw new \Exception("The \"tokenizer\" extension is not available");
|
1493 |
+
}
|
1494 |
+
$isInitialized = \true;
|
1495 |
+
$version = "4.9.0";
|
1496 |
+
$phpParserDir = __DIR__ . "/PHP-Parser-{$version}";
|
1497 |
+
if (!\is_dir($phpParserDir)) {
|
1498 |
+
\WPStaging\Vendor\installPhpParser($version, $phpParserDir);
|
1499 |
+
}
|
1500 |
+
\spl_autoload_register(function (string $class) use($phpParserDir) {
|
1501 |
+
if (\strpos($class, "PhpParser\\") === 0) {
|
1502 |
+
$fileName = $phpParserDir . "/lib/" . \str_replace("\\", "/", $class) . ".php";
|
1503 |
+
require $fileName;
|
1504 |
+
}
|
1505 |
+
});
|
1506 |
+
}
|
1507 |
+
$optind = null;
|
1508 |
+
$options = \getopt("fh", ["force-regeneration", "parameter-stats", "help", "verify", "generate-methodsynopses", "replace-methodsynopses", "minimal-arginfo"], $optind);
|
1509 |
+
$context = new \WPStaging\Vendor\Context();
|
1510 |
+
$printParameterStats = isset($options["parameter-stats"]);
|
1511 |
+
$verify = isset($options["verify"]);
|
1512 |
+
$generateMethodSynopses = isset($options["generate-methodsynopses"]);
|
1513 |
+
$replaceMethodSynopses = isset($options["replace-methodsynopses"]);
|
1514 |
+
$context->forceRegeneration = isset($options["f"]) || isset($options["force-regeneration"]);
|
1515 |
+
$context->forceParse = $context->forceRegeneration || $printParameterStats || $verify || $generateMethodSynopses || $replaceMethodSynopses;
|
1516 |
+
$context->minimalArgInfo = isset($options["minimal-arginfo"]);
|
1517 |
+
$targetMethodSynopses = $argv[$optind + 1] ?? null;
|
1518 |
+
if ($replaceMethodSynopses && $targetMethodSynopses === null) {
|
1519 |
+
die("A target directory must be provided.\n");
|
1520 |
+
}
|
1521 |
+
if (isset($options["h"]) || isset($options["help"])) {
|
1522 |
+
die("\nusage: gen-stub.php [ -f | --force-regeneration ] [ --generate-methodsynopses ] [ --replace-methodsynopses ] [ --parameter-stats ] [ --verify ] [ -h | --help ] [ name.stub.php | directory ] [ directory ]\n\n");
|
1523 |
+
}
|
1524 |
+
$fileInfos = [];
|
1525 |
+
$location = $argv[$optind] ?? ".";
|
1526 |
+
if (\is_file($location)) {
|
1527 |
+
// Generate single file.
|
1528 |
+
$fileInfo = \WPStaging\Vendor\processStubFile($location, $context);
|
1529 |
+
if ($fileInfo) {
|
1530 |
+
$fileInfos[] = $fileInfo;
|
1531 |
+
}
|
1532 |
+
} else {
|
1533 |
+
if (\is_dir($location)) {
|
1534 |
+
$fileInfos = \WPStaging\Vendor\processDirectory($location, $context);
|
1535 |
+
} else {
|
1536 |
+
echo "{$location} is neither a file nor a directory.\n";
|
1537 |
+
exit(1);
|
1538 |
+
}
|
1539 |
+
}
|
1540 |
+
if ($printParameterStats) {
|
1541 |
+
$parameterStats = [];
|
1542 |
+
foreach ($fileInfos as $fileInfo) {
|
1543 |
+
foreach ($fileInfo->getAllFuncInfos() as $funcInfo) {
|
1544 |
+
foreach ($funcInfo->args as $argInfo) {
|
1545 |
+
if (!isset($parameterStats[$argInfo->name])) {
|
1546 |
+
$parameterStats[$argInfo->name] = 0;
|
1547 |
+
}
|
1548 |
+
$parameterStats[$argInfo->name]++;
|
1549 |
+
}
|
1550 |
+
}
|
1551 |
+
}
|
1552 |
+
\arsort($parameterStats);
|
1553 |
+
echo \json_encode($parameterStats, \JSON_PRETTY_PRINT), "\n";
|
1554 |
+
}
|
1555 |
+
/** @var FuncInfo[] $funcMap */
|
1556 |
+
$funcMap = [];
|
1557 |
+
/** @var FuncInfo[] $aliasMap */
|
1558 |
+
$aliasMap = [];
|
1559 |
+
foreach ($fileInfos as $fileInfo) {
|
1560 |
+
foreach ($fileInfo->getAllFuncInfos() as $funcInfo) {
|
1561 |
+
/** @var FuncInfo $funcInfo */
|
1562 |
+
$funcMap[$funcInfo->name->__toString()] = $funcInfo;
|
1563 |
+
if ($funcInfo->aliasType === "alias") {
|
1564 |
+
$aliasMap[$funcInfo->alias->__toString()] = $funcInfo;
|
1565 |
+
}
|
1566 |
+
}
|
1567 |
+
}
|
1568 |
+
if ($verify) {
|
1569 |
+
$errors = [];
|
1570 |
+
foreach ($aliasMap as $aliasFunc) {
|
1571 |
+
if (!isset($funcMap[$aliasFunc->alias->__toString()])) {
|
1572 |
+
$errors[] = "Aliased function {$aliasFunc->alias}() cannot be found";
|
1573 |
+
continue;
|
1574 |
+
}
|
1575 |
+
if (!$aliasFunc->verify) {
|
1576 |
+
continue;
|
1577 |
+
}
|
1578 |
+
$aliasedFunc = $funcMap[$aliasFunc->alias->__toString()];
|
1579 |
+
$aliasedArgs = $aliasedFunc->args;
|
1580 |
+
$aliasArgs = $aliasFunc->args;
|
1581 |
+
if ($aliasFunc->isInstanceMethod() !== $aliasedFunc->isInstanceMethod()) {
|
1582 |
+
if ($aliasFunc->isInstanceMethod()) {
|
1583 |
+
$aliasedArgs = \array_slice($aliasedArgs, 1);
|
1584 |
+
}
|
1585 |
+
if ($aliasedFunc->isInstanceMethod()) {
|
1586 |
+
$aliasArgs = \array_slice($aliasArgs, 1);
|
1587 |
+
}
|
1588 |
+
}
|
1589 |
+
\array_map(function (?\WPStaging\Vendor\ArgInfo $aliasArg, ?\WPStaging\Vendor\ArgInfo $aliasedArg) use($aliasFunc, $aliasedFunc, &$errors) {
|
1590 |
+
if ($aliasArg === null) {
|
1591 |
+
\assert($aliasedArg !== null);
|
1592 |
+
$errors[] = "{$aliasFunc->name}(): Argument \${$aliasedArg->name} of aliased function {$aliasedFunc->name}() is missing";
|
1593 |
+
return null;
|
1594 |
+
}
|
1595 |
+
if ($aliasedArg === null) {
|
1596 |
+
$errors[] = "{$aliasedFunc->name}(): Argument \${$aliasArg->name} of alias function {$aliasFunc->name}() is missing";
|
1597 |
+
return null;
|
1598 |
+
}
|
1599 |
+
if ($aliasArg->name !== $aliasedArg->name) {
|
1600 |
+
$errors[] = "{$aliasFunc->name}(): Argument \${$aliasArg->name} and argument \${$aliasedArg->name} of aliased function {$aliasedFunc->name}() must have the same name";
|
1601 |
+
return null;
|
1602 |
+
}
|
1603 |
+
if ($aliasArg->type != $aliasedArg->type) {
|
1604 |
+
$errors[] = "{$aliasFunc->name}(): Argument \${$aliasArg->name} and argument \${$aliasedArg->name} of aliased function {$aliasedFunc->name}() must have the same type";
|
1605 |
+
}
|
1606 |
+
if ($aliasArg->defaultValue !== $aliasedArg->defaultValue) {
|
1607 |
+
$errors[] = "{$aliasFunc->name}(): Argument \${$aliasArg->name} and argument \${$aliasedArg->name} of aliased function {$aliasedFunc->name}() must have the same default value";
|
1608 |
+
}
|
1609 |
+
}, $aliasArgs, $aliasedArgs);
|
1610 |
+
if ((!$aliasedFunc->isMethod() || $aliasedFunc->isFinalMethod()) && (!$aliasFunc->isMethod() || $aliasFunc->isFinalMethod()) && $aliasFunc->return != $aliasedFunc->return) {
|
1611 |
+
$errors[] = "{$aliasFunc->name}() and {$aliasedFunc->name}() must have the same return type";
|
1612 |
+
}
|
1613 |
+
}
|
1614 |
+
echo \implode("\n", $errors);
|
1615 |
+
if (!empty($errors)) {
|
1616 |
+
echo "\n";
|
1617 |
+
exit(1);
|
1618 |
+
}
|
1619 |
+
}
|
1620 |
+
if ($generateMethodSynopses) {
|
1621 |
+
$methodSynopsesDirectory = \getcwd() . "/methodsynopses";
|
1622 |
+
$methodSynopses = \WPStaging\Vendor\generateMethodSynopses($funcMap, $aliasMap);
|
1623 |
+
if (!empty($methodSynopses)) {
|
1624 |
+
if (!\file_exists($methodSynopsesDirectory)) {
|
1625 |
+
\mkdir($methodSynopsesDirectory);
|
1626 |
+
}
|
1627 |
+
foreach ($methodSynopses as $filename => $content) {
|
1628 |
+
if (\file_put_contents("{$methodSynopsesDirectory}/{$filename}", $content)) {
|
1629 |
+
echo "Saved {$filename}\n";
|
1630 |
+
}
|
1631 |
+
}
|
1632 |
+
}
|
1633 |
+
}
|
1634 |
+
if ($replaceMethodSynopses) {
|
1635 |
+
$methodSynopses = \WPStaging\Vendor\replaceMethodSynopses($targetMethodSynopses, $funcMap, $aliasMap);
|
1636 |
+
foreach ($methodSynopses as $filename => $content) {
|
1637 |
+
if (\file_put_contents($filename, $content)) {
|
1638 |
+
echo "Saved {$filename}\n";
|
1639 |
+
}
|
1640 |
+
}
|
1641 |
+
}
|
vendor_wpstg/aws/aws-crt-php/package.xml-template_post
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
</contents>
|
2 |
+
<dependencies>
|
3 |
+
<required>
|
4 |
+
<php>
|
5 |
+
<min>7.4.0</min>
|
6 |
+
</php>
|
7 |
+
<pearinstaller>
|
8 |
+
<min>1.10.0</min>
|
9 |
+
</pearinstaller>
|
10 |
+
</required>
|
11 |
+
</dependencies>
|
12 |
+
<providesextension>awscrt</providesextension>
|
13 |
+
<extsrcrelease/>
|
14 |
+
<changelog>
|
15 |
+
<release>
|
16 |
+
|
17 |
+
</release>
|
18 |
+
</changelog>
|
19 |
+
</package>
|
vendor_wpstg/aws/aws-crt-php/package.xml-template_pre
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<package packagerversion="1.8.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
|
3 |
+
<name>awscrt</name>
|
4 |
+
<channel>pecl.php.net</channel>
|
5 |
+
<summary>AWS Common Runtime PHP bindings</summary>
|
6 |
+
<description>AWS Common Runtime provides a set of low level tools as network protocols and authentication used by the AWSSDK for PHP to provide high level API to access AWS services.</description>
|
7 |
+
<lead>
|
8 |
+
<name>{{{NAME}}}</name>
|
9 |
+
<user>{{{USER}}}</user>
|
10 |
+
<email>{{{EMAIL}}}</email>
|
11 |
+
<active>yes</active>
|
12 |
+
</lead>
|
13 |
+
<date>{{{TODAY}}}</date>
|
14 |
+
<version>
|
15 |
+
<release>{{{VERSION}}}</release>
|
16 |
+
<api>1.0.0</api>
|
17 |
+
</version>
|
18 |
+
<stability>
|
19 |
+
<release>devel</release>
|
20 |
+
<api>stable</api>
|
21 |
+
</stability>
|
22 |
+
<license uri="https://www.apache.org/licenses/LICENSE-2.0">Apache License Version 2.0</license>
|
23 |
+
<notes>{{{NOTES}}}</notes>
|
24 |
+
<contents>
|
vendor_wpstg/aws/aws-crt-php/php-win.ini
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
extension=php_awscrt.dll
|
2 |
+
extension=php_openssl.dll
|
vendor_wpstg/aws/aws-crt-php/php.ini
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
extension=modules/awscrt.so
|
vendor_wpstg/aws/aws-crt-php/prepare_package_xml.sh
ADDED
@@ -0,0 +1,144 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/bin/zsh
|
2 |
+
zparseopts -A opts -name: -user: -email: -version: -notes:
|
3 |
+
if [[ $# -lt 10 ]]
|
4 |
+
then
|
5 |
+
echo "Usage ${0} --name NAME, --user USER --email EMAIL --version VERSION --notes NOTES"
|
6 |
+
exit 1
|
7 |
+
fi
|
8 |
+
NAME="${opts[--name]}"
|
9 |
+
USER="${opts[--user]}"
|
10 |
+
EMAIL="${opts[--email]}"
|
11 |
+
VERSION="${opts[--version]}"
|
12 |
+
NOTES="${opts[--notes]}"
|
13 |
+
|
14 |
+
TODAY=$(date -u +%Y-%m-%d)
|
15 |
+
|
16 |
+
cat package.xml-template_pre \
|
17 |
+
| sed "s/{{{NAME}}}/$NAME/g" \
|
18 |
+
| sed "s/{{{USER}}}/$USER/g" \
|
19 |
+
| sed "s/{{{EMAIL}}}/$EMAIL/g" \
|
20 |
+
| sed "s/{{{TODAY}}}/$TODAY/g" \
|
21 |
+
| sed "s/{{{VERSION}}}/$VERSION/g" \
|
22 |
+
| sed "s/{{{NOTES}}}/$NOTES/g"
|
23 |
+
|
24 |
+
source_ext='(c|cc|h|cpp|hpp|m4|w32|ini|frag|cmake|inl|in|py|gnu|yaml|def|pl|S|s|errordata|go|lds|num|asm|mod|peg|mk|rs|toml|sh)'
|
25 |
+
doc_ext='(md|json|html|dot|graphml|png|gn|sha1|css|rst|)'
|
26 |
+
|
27 |
+
special_docs='(LICENSE*|NOTICE|changelog.txt|CHANGELOG|THIRD-PARTY|README*|readme|METADATA|CONTRIBUTORS|UPDATING|doc.config)'
|
28 |
+
special_tests='(ci-test.sh|format-check.sh|run_tests*|sanitizer-blacklist.txt|run-clang-tidy.sh|benchmark-build-run.sh|break-tests.sh|generate-coverage.sh|test.xml)'
|
29 |
+
special_src='(gen_api.php|gen_stub.php|CMakeLists.txt|post.sh|postun.sh|Makefile*|build-buildspec.sh|build-deps.sh|objects.txt|go.*|BUILD*|DEPS|install_and_run.sh|codemod.sh|requirements.txt)'
|
30 |
+
skip_files='(package.xml*|prepare_release.sh|codereview.settings|*.o|*.a|*.obj|*.lib|break-tests-android.sh|whitespace.txt|prepare_package_xml.sh|crypto_test_data.cc|*.pdf|*.svg|*.docx|cbmc-proof.txt|codecov*|litani*|*.toml)'
|
31 |
+
|
32 |
+
special_scripts='(awscrt.stub.php)'
|
33 |
+
|
34 |
+
skip_directories='(tests|test|AWSCRTAndroidTestRunner|docker-images|codebuild|fuzz|verfication|third_party|docs|generated-src|aws-lc|aws-crt-sys)'
|
35 |
+
|
36 |
+
process_file() {
|
37 |
+
if (( $# == 0 ))
|
38 |
+
then
|
39 |
+
echo "ERROR: filename not passed"
|
40 |
+
exit 1
|
41 |
+
fi
|
42 |
+
if [[ $1 = $~skip_files ]]
|
43 |
+
then
|
44 |
+
# This file is not part of the release bundle
|
45 |
+
return 0
|
46 |
+
fi
|
47 |
+
|
48 |
+
echo -n '<file name="'"$1"'" role="'
|
49 |
+
# Special cases
|
50 |
+
case ${a} in
|
51 |
+
$~special_scripts)
|
52 |
+
echo -n 'script'
|
53 |
+
;;
|
54 |
+
$~special_docs)
|
55 |
+
echo -n 'doc'
|
56 |
+
;;
|
57 |
+
$~special_tests)
|
58 |
+
echo -n 'test'
|
59 |
+
;;
|
60 |
+
$~special_src)
|
61 |
+
echo -n 'src'
|
62 |
+
;;
|
63 |
+
*)
|
64 |
+
# Extension based cases
|
65 |
+
case ${a:t:e} in
|
66 |
+
$~source_ext)
|
67 |
+
echo -n 'src'
|
68 |
+
;;
|
69 |
+
$~doc_ext)
|
70 |
+
echo -n 'doc'
|
71 |
+
;;
|
72 |
+
php)
|
73 |
+
echo -n 'script'
|
74 |
+
;;
|
75 |
+
*)
|
76 |
+
echo "${a:t:e} - ${a} - FAIL TO RECOGNIZE"
|
77 |
+
exit 1
|
78 |
+
esac
|
79 |
+
esac
|
80 |
+
echo '"/>'
|
81 |
+
return 0
|
82 |
+
}
|
83 |
+
|
84 |
+
|
85 |
+
process_dir() {
|
86 |
+
if (( $# == 0 ))
|
87 |
+
then
|
88 |
+
echo "WARNING: dirname not passed"
|
89 |
+
exit 1
|
90 |
+
fi
|
91 |
+
if [[ "${1}" = $~skip_directories ]]
|
92 |
+
then
|
93 |
+
return 0
|
94 |
+
fi
|
95 |
+
echo '<dir name="'"$1"'">'
|
96 |
+
cd "$1"
|
97 |
+
for a in *
|
98 |
+
do
|
99 |
+
if [[ -f ${a} ]]
|
100 |
+
then process_file "${a}"
|
101 |
+
else process_dir "${a}"
|
102 |
+
fi
|
103 |
+
done
|
104 |
+
# Special cases for compiler features placed in tests directories in and s2n
|
105 |
+
if [[ "${1}" = "s2n" && -d tests ]]
|
106 |
+
then
|
107 |
+
echo '<dir name="tests">'
|
108 |
+
echo '<dir name="features">'
|
109 |
+
cd tests/features
|
110 |
+
for a in *
|
111 |
+
do
|
112 |
+
process_file "${a}"
|
113 |
+
done
|
114 |
+
cd ../..
|
115 |
+
echo '</dir>'
|
116 |
+
echo '</dir>'
|
117 |
+
fi
|
118 |
+
echo '</dir>'
|
119 |
+
cd ..
|
120 |
+
return 0
|
121 |
+
}
|
122 |
+
|
123 |
+
echo '<dir name="/">'
|
124 |
+
for a in *
|
125 |
+
do
|
126 |
+
if [[ ${a} == 'tests' ]]
|
127 |
+
then
|
128 |
+
echo '<dir name="tests">'
|
129 |
+
for b in tests/*
|
130 |
+
do
|
131 |
+
echo '<file name="'$( basename "${b}" )'" role="test" />'
|
132 |
+
done
|
133 |
+
echo '</dir>'
|
134 |
+
continue
|
135 |
+
fi
|
136 |
+
if [[ -f ${a} ]]
|
137 |
+
then process_file "${a}"
|
138 |
+
else process_dir "${a}"
|
139 |
+
fi
|
140 |
+
done
|
141 |
+
echo '</dir>'
|
142 |
+
|
143 |
+
cat package.xml-template_post
|
144 |
+
|
vendor_wpstg/aws/aws-crt-php/prepare_release.sh
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/bin/zsh
|
2 |
+
zparseopts -A opts -name: -user: -email: -version: -notes:
|
3 |
+
if [[ $# -lt 10 ]]; then
|
4 |
+
echo "Usage ${0} --name NAME --user USER --email EMAIL --version VERSION --notes NOTES"
|
5 |
+
exit 1
|
6 |
+
fi
|
7 |
+
PACKAGE='awscrt'
|
8 |
+
NAME="${opts[--name]}"
|
9 |
+
USER="${opts[--user]}"
|
10 |
+
EMAIL="${opts[--email]}"
|
11 |
+
VERSION="${opts[--version]}"
|
12 |
+
NOTES="${opts[--notes]}"
|
13 |
+
|
14 |
+
./prepare_package_xml.sh --name "${NAME}" --user "${USER}" --email "${EMAIL}" --version "${VERSION}" --notes "${NOTES}" >package.xml
|
15 |
+
if [[ $? -ne 0 ]]; then
|
16 |
+
echo "ERROR PROCESSING review package.xml"
|
17 |
+
exit 1
|
18 |
+
fi
|
19 |
+
tidy -xml -m -i package.xml
|
20 |
+
pear package-validate
|
21 |
+
if [[ $? -ne 0 ]]; then
|
22 |
+
echo "ERROR VALIDATING review package.xml"
|
23 |
+
exit 1
|
24 |
+
fi
|
25 |
+
pear package
|
26 |
+
if [[ $? -ne 0 ]]; then
|
27 |
+
echo "ERROR PROCESSING review package.xml"
|
28 |
+
exit 1
|
29 |
+
fi
|
30 |
+
|
31 |
+
echo "Size of ${PACKAGE}-${VERSION}.tgz: " $(du -h "${PACKAGE}-${VERSION}.tgz")
|
vendor_wpstg/aws/aws-crt-php/run_tests
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/usr/bin/env bash
|
2 |
+
|
3 |
+
set -ex
|
4 |
+
|
5 |
+
launcher=
|
6 |
+
if command -v catchsegv; then
|
7 |
+
launcher=catchsegv
|
8 |
+
fi
|
9 |
+
|
10 |
+
if [ -z $PHP_BINARY ]; then
|
11 |
+
PHP_BINARY=$(which php)
|
12 |
+
fi
|
13 |
+
|
14 |
+
if [ ! -d vendor ]; then
|
15 |
+
composer update
|
16 |
+
fi
|
17 |
+
|
18 |
+
$launcher $PHP_BINARY -c php.ini vendor/bin/phpunit tests --debug
|
vendor_wpstg/aws/aws-crt-php/run_tests.bat
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
@echo on
|
3 |
+
|
4 |
+
%PHP_BINARY% -c php-win.ini vendor/bin/phpunit tests --debug
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/AwsCredentials.php
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT\Auth;
|
8 |
+
|
9 |
+
use WPStaging\Vendor\AWS\CRT\NativeResource as NativeResource;
|
10 |
+
use WPStaging\Vendor\AWS\CRT\Options as Options;
|
11 |
+
/**
|
12 |
+
* Represents a set of AWS credentials
|
13 |
+
*
|
14 |
+
* @param array options:
|
15 |
+
* - string access_key_id - AWS Access Key Id
|
16 |
+
* - string secret_access_key - AWS Secret Access Key
|
17 |
+
* - string session_token - Optional STS session token
|
18 |
+
* - int expiration_timepoint_seconds - Optional time to expire these credentials
|
19 |
+
*/
|
20 |
+
final class AwsCredentials extends \WPStaging\Vendor\AWS\CRT\NativeResource
|
21 |
+
{
|
22 |
+
static function defaults()
|
23 |
+
{
|
24 |
+
return ['access_key_id' => '', 'secret_access_key' => '', 'session_token' => '', 'expiration_timepoint_seconds' => 0];
|
25 |
+
}
|
26 |
+
private $access_key_id;
|
27 |
+
private $secret_access_key;
|
28 |
+
private $session_token;
|
29 |
+
private $expiration_timepoint_seconds = 0;
|
30 |
+
public function __get($name)
|
31 |
+
{
|
32 |
+
return $this->{$name};
|
33 |
+
}
|
34 |
+
function __construct(array $options = [])
|
35 |
+
{
|
36 |
+
parent::__construct();
|
37 |
+
$options = new \WPStaging\Vendor\AWS\CRT\Options($options, self::defaults());
|
38 |
+
$this->access_key_id = $options->access_key_id->asString();
|
39 |
+
$this->secret_access_key = $options->secret_access_key->asString();
|
40 |
+
$this->session_token = $options->session_token ? $options->session_token->asString() : null;
|
41 |
+
$this->expiration_timepoint_seconds = $options->expiration_timepoint_seconds->asInt();
|
42 |
+
if (\strlen($this->access_key_id) == 0) {
|
43 |
+
throw new \InvalidArgumentException("access_key_id must be provided");
|
44 |
+
}
|
45 |
+
if (\strlen($this->secret_access_key) == 0) {
|
46 |
+
throw new \InvalidArgumentException("secret_access_key must be provided");
|
47 |
+
}
|
48 |
+
$creds_options = self::$crt->aws_credentials_options_new();
|
49 |
+
self::$crt->aws_credentials_options_set_access_key_id($creds_options, $this->access_key_id);
|
50 |
+
self::$crt->aws_credentials_options_set_secret_access_key($creds_options, $this->secret_access_key);
|
51 |
+
self::$crt->aws_credentials_options_set_session_token($creds_options, $this->session_token);
|
52 |
+
self::$crt->aws_credentials_options_set_expiration_timepoint_seconds($creds_options, $this->expiration_timepoint_seconds);
|
53 |
+
$this->acquire(self::$crt->aws_credentials_new($creds_options));
|
54 |
+
self::$crt->aws_credentials_options_release($creds_options);
|
55 |
+
}
|
56 |
+
function __destruct()
|
57 |
+
{
|
58 |
+
self::$crt->aws_credentials_release($this->release());
|
59 |
+
parent::__destruct();
|
60 |
+
}
|
61 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/CredentialsProvider.php
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT\Auth;
|
8 |
+
|
9 |
+
use WPStaging\Vendor\AWS\CRT\NativeResource as NativeResource;
|
10 |
+
/**
|
11 |
+
* Base class for credentials providers
|
12 |
+
*/
|
13 |
+
abstract class CredentialsProvider extends \WPStaging\Vendor\AWS\CRT\NativeResource
|
14 |
+
{
|
15 |
+
function __construct(array $options = [])
|
16 |
+
{
|
17 |
+
parent::__construct();
|
18 |
+
}
|
19 |
+
function __destruct()
|
20 |
+
{
|
21 |
+
self::$crt->credentials_provider_release($this->release());
|
22 |
+
parent::__destruct();
|
23 |
+
}
|
24 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/Signable.php
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT\Auth;
|
8 |
+
|
9 |
+
use WPStaging\Vendor\AWS\CRT\IO\InputStream;
|
10 |
+
use WPStaging\Vendor\AWS\CRT\NativeResource as NativeResource;
|
11 |
+
class Signable extends \WPStaging\Vendor\AWS\CRT\NativeResource
|
12 |
+
{
|
13 |
+
public static function fromHttpRequest($http_message)
|
14 |
+
{
|
15 |
+
return new \WPStaging\Vendor\AWS\CRT\Auth\Signable(function () use($http_message) {
|
16 |
+
return self::$crt->signable_new_from_http_request($http_message->native);
|
17 |
+
});
|
18 |
+
}
|
19 |
+
public static function fromChunk($chunk_stream, $previous_signature = "")
|
20 |
+
{
|
21 |
+
if (!$chunk_stream instanceof \WPStaging\Vendor\AWS\CRT\IO\InputStream) {
|
22 |
+
$chunk_stream = new \WPStaging\Vendor\AWS\CRT\IO\InputStream($chunk_stream);
|
23 |
+
}
|
24 |
+
return new \WPStaging\Vendor\AWS\CRT\Auth\Signable(function () use($chunk_stream, $previous_signature) {
|
25 |
+
return self::$crt->signable_new_from_chunk($chunk_stream->native, $previous_signature);
|
26 |
+
});
|
27 |
+
}
|
28 |
+
public static function fromCanonicalRequest($canonical_request)
|
29 |
+
{
|
30 |
+
return new \WPStaging\Vendor\AWS\CRT\Auth\Signable(function () use($canonical_request) {
|
31 |
+
return self::$crt->signable_new_from_canonical_request($canonical_request);
|
32 |
+
});
|
33 |
+
}
|
34 |
+
protected function __construct($ctor)
|
35 |
+
{
|
36 |
+
parent::__construct();
|
37 |
+
$this->acquire($ctor());
|
38 |
+
}
|
39 |
+
function __destruct()
|
40 |
+
{
|
41 |
+
self::$crt->signable_release($this->release());
|
42 |
+
parent::__destruct();
|
43 |
+
}
|
44 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SignatureType.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT\Auth;
|
8 |
+
|
9 |
+
class SignatureType
|
10 |
+
{
|
11 |
+
const HTTP_REQUEST_HEADERS = 0;
|
12 |
+
const HTTP_REQUEST_QUERY_PARAMS = 1;
|
13 |
+
const HTTP_REQUEST_CHUNK = 2;
|
14 |
+
const HTTP_REQUEST_EVENT = 3;
|
15 |
+
const CANONICAL_REQUEST_HEADERS = 4;
|
16 |
+
const CANONICAL_REQUEST_QUERY_PARAMS = 5;
|
17 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SignedBodyHeaderType.php
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT\Auth;
|
8 |
+
|
9 |
+
class SignedBodyHeaderType
|
10 |
+
{
|
11 |
+
const NONE = 0;
|
12 |
+
const X_AMZ_CONTENT_SHA256 = 1;
|
13 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/Signing.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT\Auth;
|
8 |
+
|
9 |
+
use WPStaging\Vendor\AWS\CRT\NativeResource;
|
10 |
+
abstract class Signing extends \WPStaging\Vendor\AWS\CRT\NativeResource
|
11 |
+
{
|
12 |
+
static function signRequestAws($signable, $signing_config, $on_complete)
|
13 |
+
{
|
14 |
+
return self::$crt->sign_request_aws($signable->native, $signing_config->native, function ($result, $error_code) use($on_complete) {
|
15 |
+
$signing_result = \WPStaging\Vendor\AWS\CRT\Auth\SigningResult::fromNative($result);
|
16 |
+
$on_complete($signing_result, $error_code);
|
17 |
+
}, null);
|
18 |
+
}
|
19 |
+
static function testVerifySigV4ASigning($signable, $signing_config, $expected_canonical_request, $signature, $ecc_key_pub_x, $ecc_key_pub_y)
|
20 |
+
{
|
21 |
+
return self::$crt->test_verify_sigv4a_signing($signable, $signing_config, $expected_canonical_request, $signature, $ecc_key_pub_x, $ecc_key_pub_y);
|
22 |
+
}
|
23 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SigningAlgorithm.php
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT\Auth;
|
8 |
+
|
9 |
+
class SigningAlgorithm
|
10 |
+
{
|
11 |
+
const SIGv4 = 0;
|
12 |
+
const SIGv4_ASYMMETRIC = 1;
|
13 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SigningConfigAWS.php
ADDED
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT\Auth;
|
8 |
+
|
9 |
+
use WPStaging\Vendor\AWS\CRT\NativeResource as NativeResource;
|
10 |
+
use WPStaging\Vendor\AWS\CRT\Options as Options;
|
11 |
+
class SigningConfigAWS extends \WPStaging\Vendor\AWS\CRT\NativeResource
|
12 |
+
{
|
13 |
+
public static function defaults()
|
14 |
+
{
|
15 |
+
return ['algorithm' => \WPStaging\Vendor\AWS\CRT\Auth\SigningAlgorithm::SIGv4, 'signature_type' => \WPStaging\Vendor\AWS\CRT\Auth\SignatureType::HTTP_REQUEST_HEADERS, 'credentials_provider' => null, 'region' => null, 'service' => null, 'use_double_uri_encode' => \false, 'should_normalize_uri_path' => \false, 'omit_session_token' => \false, 'signed_body_value' => null, 'signed_body_header_type' => \WPStaging\Vendor\AWS\CRT\Auth\SignedBodyHeaderType::NONE, 'expiration_in_seconds' => 0, 'date' => \time(), 'should_sign_header' => null];
|
16 |
+
}
|
17 |
+
private $options;
|
18 |
+
public function __construct(array $options = [])
|
19 |
+
{
|
20 |
+
parent::__construct();
|
21 |
+
$this->options = $options = new \WPStaging\Vendor\AWS\CRT\Options($options, self::defaults());
|
22 |
+
$sc = $this->acquire(self::$crt->signing_config_aws_new());
|
23 |
+
self::$crt->signing_config_aws_set_algorithm($sc, $options->algorithm->asInt());
|
24 |
+
self::$crt->signing_config_aws_set_signature_type($sc, $options->signature_type->asInt());
|
25 |
+
if ($credentials_provider = $options->credentials_provider->asObject()) {
|
26 |
+
self::$crt->signing_config_aws_set_credentials_provider($sc, $credentials_provider->native);
|
27 |
+
}
|
28 |
+
self::$crt->signing_config_aws_set_region($sc, $options->region->asString());
|
29 |
+
self::$crt->signing_config_aws_set_service($sc, $options->service->asString());
|
30 |
+
self::$crt->signing_config_aws_set_use_double_uri_encode($sc, $options->use_double_uri_encode->asBool());
|
31 |
+
self::$crt->signing_config_aws_set_should_normalize_uri_path($sc, $options->should_normalize_uri_path->asBool());
|
32 |
+
self::$crt->signing_config_aws_set_omit_session_token($sc, $options->omit_session_token->asBool());
|
33 |
+
self::$crt->signing_config_aws_set_signed_body_value($sc, $options->signed_body_value->asString());
|
34 |
+
self::$crt->signing_config_aws_set_signed_body_header_type($sc, $options->signed_body_header_type->asInt());
|
35 |
+
self::$crt->signing_config_aws_set_expiration_in_seconds($sc, $options->expiration_in_seconds->asInt());
|
36 |
+
self::$crt->signing_config_aws_set_date($sc, $options->date->asInt());
|
37 |
+
if ($should_sign_header = $options->should_sign_header->asCallable()) {
|
38 |
+
self::$crt->signing_config_aws_set_should_sign_header_fn($sc, $should_sign_header);
|
39 |
+
}
|
40 |
+
}
|
41 |
+
function __destruct()
|
42 |
+
{
|
43 |
+
self::$crt->signing_config_aws_release($this->release());
|
44 |
+
parent::__destruct();
|
45 |
+
}
|
46 |
+
public function __get($name)
|
47 |
+
{
|
48 |
+
return $this->options->get($name);
|
49 |
+
}
|
50 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SigningResult.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT\Auth;
|
8 |
+
|
9 |
+
use WPStaging\Vendor\AWS\CRT\NativeResource;
|
10 |
+
use WPStaging\Vendor\AWS\CRT\HTTP\Request;
|
11 |
+
class SigningResult extends \WPStaging\Vendor\AWS\CRT\NativeResource
|
12 |
+
{
|
13 |
+
protected function __construct($native)
|
14 |
+
{
|
15 |
+
parent::__construct();
|
16 |
+
$this->acquire($native);
|
17 |
+
}
|
18 |
+
function __destruct()
|
19 |
+
{
|
20 |
+
// No destruction necessary, SigningResults are transient, just release
|
21 |
+
$this->release();
|
22 |
+
parent::__destruct();
|
23 |
+
}
|
24 |
+
public static function fromNative($ptr)
|
25 |
+
{
|
26 |
+
return new \WPStaging\Vendor\AWS\CRT\Auth\SigningResult($ptr);
|
27 |
+
}
|
28 |
+
public function applyToHttpRequest(&$http_request)
|
29 |
+
{
|
30 |
+
self::$crt->signing_result_apply_to_http_request($this->native, $http_request->native);
|
31 |
+
// Update http_request from native
|
32 |
+
$http_request = \WPStaging\Vendor\AWS\CRT\HTTP\Request::unmarshall($http_request->toBlob());
|
33 |
+
}
|
34 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/StaticCredentialsProvider.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT\Auth;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Provides a static set of AWS credentials
|
11 |
+
*
|
12 |
+
* @param array options:
|
13 |
+
* - string access_key_id - AWS Access Key Id
|
14 |
+
* - string secret_access_key - AWS Secret Access Key
|
15 |
+
* - string session_token - Optional STS session token
|
16 |
+
*/
|
17 |
+
final class StaticCredentialsProvider extends \WPStaging\Vendor\AWS\CRT\Auth\CredentialsProvider
|
18 |
+
{
|
19 |
+
private $credentials;
|
20 |
+
public function __get($name)
|
21 |
+
{
|
22 |
+
return $this->{$name};
|
23 |
+
}
|
24 |
+
function __construct(array $options = [])
|
25 |
+
{
|
26 |
+
parent::__construct();
|
27 |
+
$this->credentials = new \WPStaging\Vendor\AWS\CRT\Auth\AwsCredentials($options);
|
28 |
+
$provider_options = self::$crt->credentials_provider_static_options_new();
|
29 |
+
self::$crt->credentials_provider_static_options_set_access_key_id($provider_options, $this->credentials->access_key_id);
|
30 |
+
self::$crt->credentials_provider_static_options_set_secret_access_key($provider_options, $this->credentials->secret_access_key);
|
31 |
+
self::$crt->credentials_provider_static_options_set_session_token($provider_options, $this->credentials->session_token);
|
32 |
+
$this->acquire(self::$crt->credentials_provider_static_new($provider_options));
|
33 |
+
self::$crt->credentials_provider_static_options_release($provider_options);
|
34 |
+
}
|
35 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/CRT.php
ADDED
@@ -0,0 +1,356 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT;
|
8 |
+
|
9 |
+
use WPStaging\Vendor\AWS\CRT\Internal\Extension;
|
10 |
+
use RuntimeException;
|
11 |
+
/**
|
12 |
+
* Wrapper for the interface to the CRT. There only ever needs to be one of these, but
|
13 |
+
* additional instances won't cost anything other than their memory.
|
14 |
+
* Creating an instance of any NativeResource will activate the CRT binding. User code
|
15 |
+
* should only need to create one of these if they are only accessing CRT:: static functions.
|
16 |
+
*/
|
17 |
+
final class CRT
|
18 |
+
{
|
19 |
+
private static $impl = null;
|
20 |
+
private static $refcount = 0;
|
21 |
+
function __construct()
|
22 |
+
{
|
23 |
+
if (\is_null(self::$impl)) {
|
24 |
+
try {
|
25 |
+
self::$impl = new \WPStaging\Vendor\AWS\CRT\Internal\Extension();
|
26 |
+
} catch (\RuntimeException $rex) {
|
27 |
+
throw new \RuntimeException("Unable to initialize AWS CRT via awscrt extension: \n{$rex}", -1);
|
28 |
+
}
|
29 |
+
}
|
30 |
+
++self::$refcount;
|
31 |
+
}
|
32 |
+
function __destruct()
|
33 |
+
{
|
34 |
+
if (--self::$refcount == 0) {
|
35 |
+
self::$impl = null;
|
36 |
+
}
|
37 |
+
}
|
38 |
+
/**
|
39 |
+
* @return bool whether or not the CRT is currently loaded
|
40 |
+
*/
|
41 |
+
public static function isLoaded()
|
42 |
+
{
|
43 |
+
return !\is_null(self::$impl);
|
44 |
+
}
|
45 |
+
/**
|
46 |
+
* @return bool whether or not the CRT is available via one of the possible backends
|
47 |
+
*/
|
48 |
+
public static function isAvailable()
|
49 |
+
{
|
50 |
+
try {
|
51 |
+
new \WPStaging\Vendor\AWS\CRT\CRT();
|
52 |
+
return \true;
|
53 |
+
} catch (\RuntimeException $ex) {
|
54 |
+
return \false;
|
55 |
+
}
|
56 |
+
}
|
57 |
+
/**
|
58 |
+
* @return integer last error code reported within the CRT
|
59 |
+
*/
|
60 |
+
public static function last_error()
|
61 |
+
{
|
62 |
+
return self::$impl->aws_crt_last_error();
|
63 |
+
}
|
64 |
+
/**
|
65 |
+
* @param integer $error Error code from the CRT, usually delivered via callback or {@see last_error}
|
66 |
+
* @return string Human-readable description of the provided error code
|
67 |
+
*/
|
68 |
+
public static function error_str($error)
|
69 |
+
{
|
70 |
+
return self::$impl->aws_crt_error_str((int) $error);
|
71 |
+
}
|
72 |
+
/**
|
73 |
+
* @param integer $error Error code from the CRT, usually delivered via callback or {@see last_error}
|
74 |
+
* @return string Name/enum identifier for the provided error code
|
75 |
+
*/
|
76 |
+
public static function error_name($error)
|
77 |
+
{
|
78 |
+
return self::$impl->aws_crt_error_name((int) $error);
|
79 |
+
}
|
80 |
+
public static function log_to_stdout()
|
81 |
+
{
|
82 |
+
return self::$impl->aws_crt_log_to_stdout();
|
83 |
+
}
|
84 |
+
public static function log_to_stderr()
|
85 |
+
{
|
86 |
+
return self::$impl->aws_crt_log_to_stderr();
|
87 |
+
}
|
88 |
+
public static function log_to_file($filename)
|
89 |
+
{
|
90 |
+
return self::$impl->aws_crt_log_to_file($filename);
|
91 |
+
}
|
92 |
+
public static function log_to_stream($stream)
|
93 |
+
{
|
94 |
+
return self::$impl->aws_crt_log_to_stream($stream);
|
95 |
+
}
|
96 |
+
public static function log_set_level($level)
|
97 |
+
{
|
98 |
+
return self::$impl->aws_crt_log_set_level($level);
|
99 |
+
}
|
100 |
+
public static function log_stop()
|
101 |
+
{
|
102 |
+
return self::$impl->aws_crt_log_stop();
|
103 |
+
}
|
104 |
+
public static function log_message($level, $message)
|
105 |
+
{
|
106 |
+
return self::$impl->aws_crt_log_message($level, $message);
|
107 |
+
}
|
108 |
+
/**
|
109 |
+
* @return object Pointer to native event_loop_group_options
|
110 |
+
*/
|
111 |
+
function event_loop_group_options_new()
|
112 |
+
{
|
113 |
+
return self::$impl->aws_crt_event_loop_group_options_new();
|
114 |
+
}
|
115 |
+
/**
|
116 |
+
* @param object $elg_options Pointer to native event_loop_group_options
|
117 |
+
*/
|
118 |
+
function event_loop_group_options_release($elg_options)
|
119 |
+
{
|
120 |
+
self::$impl->aws_crt_event_loop_group_options_release($elg_options);
|
121 |
+
}
|
122 |
+
/**
|
123 |
+
* @param object $elg_options Pointer to native event_loop_group_options
|
124 |
+
* @param integer $max_threads Maximum number of threads to allow the event loop group to use, default: 0/1 per CPU core
|
125 |
+
*/
|
126 |
+
function event_loop_group_options_set_max_threads($elg_options, $max_threads)
|
127 |
+
{
|
128 |
+
self::$impl->aws_crt_event_loop_group_options_set_max_threads($elg_options, (int) $max_threads);
|
129 |
+
}
|
130 |
+
/**
|
131 |
+
* @param object Pointer to event_loop_group_options, {@see event_loop_group_options_new}
|
132 |
+
* @return object Pointer to the new event loop group
|
133 |
+
*/
|
134 |
+
function event_loop_group_new($options)
|
135 |
+
{
|
136 |
+
return self::$impl->aws_crt_event_loop_group_new($options);
|
137 |
+
}
|
138 |
+
/**
|
139 |
+
* @param object $elg Pointer to the event loop group to release
|
140 |
+
*/
|
141 |
+
function event_loop_group_release($elg)
|
142 |
+
{
|
143 |
+
self::$impl->aws_crt_event_loop_group_release($elg);
|
144 |
+
}
|
145 |
+
/**
|
146 |
+
* return object Pointer to native AWS credentials options
|
147 |
+
*/
|
148 |
+
function aws_credentials_options_new()
|
149 |
+
{
|
150 |
+
return self::$impl->aws_crt_credentials_options_new();
|
151 |
+
}
|
152 |
+
function aws_credentials_options_release($options)
|
153 |
+
{
|
154 |
+
self::$impl->aws_crt_credentials_options_release($options);
|
155 |
+
}
|
156 |
+
function aws_credentials_options_set_access_key_id($options, $access_key_id)
|
157 |
+
{
|
158 |
+
self::$impl->aws_crt_credentials_options_set_access_key_id($options, $access_key_id);
|
159 |
+
}
|
160 |
+
function aws_credentials_options_set_secret_access_key($options, $secret_access_key)
|
161 |
+
{
|
162 |
+
self::$impl->aws_crt_credentials_options_set_secret_access_key($options, $secret_access_key);
|
163 |
+
}
|
164 |
+
function aws_credentials_options_set_session_token($options, $session_token)
|
165 |
+
{
|
166 |
+
self::$impl->aws_crt_credentials_options_set_session_token($options, $session_token);
|
167 |
+
}
|
168 |
+
function aws_credentials_options_set_expiration_timepoint_seconds($options, $expiration_timepoint_seconds)
|
169 |
+
{
|
170 |
+
self::$impl->aws_crt_credentials_options_set_expiration_timepoint_seconds($options, $expiration_timepoint_seconds);
|
171 |
+
}
|
172 |
+
function aws_credentials_new($options)
|
173 |
+
{
|
174 |
+
return self::$impl->aws_crt_credentials_new($options);
|
175 |
+
}
|
176 |
+
function aws_credentials_release($credentials)
|
177 |
+
{
|
178 |
+
self::$impl->aws_crt_credentials_release($credentials);
|
179 |
+
}
|
180 |
+
function credentials_provider_release($provider)
|
181 |
+
{
|
182 |
+
self::$impl->aws_crt_credentials_provider_release($provider);
|
183 |
+
}
|
184 |
+
function credentials_provider_static_options_new()
|
185 |
+
{
|
186 |
+
return self::$impl->aws_crt_credentials_provider_static_options_new();
|
187 |
+
}
|
188 |
+
function credentials_provider_static_options_release($options)
|
189 |
+
{
|
190 |
+
self::$impl->aws_crt_credentials_provider_static_options_release($options);
|
191 |
+
}
|
192 |
+
function credentials_provider_static_options_set_access_key_id($options, $access_key_id)
|
193 |
+
{
|
194 |
+
self::$impl->aws_crt_credentials_provider_static_options_set_access_key_id($options, $access_key_id);
|
195 |
+
}
|
196 |
+
function credentials_provider_static_options_set_secret_access_key($options, $secret_access_key)
|
197 |
+
{
|
198 |
+
self::$impl->aws_crt_credentials_provider_static_options_set_secret_access_key($options, $secret_access_key);
|
199 |
+
}
|
200 |
+
function credentials_provider_static_options_set_session_token($options, $session_token)
|
201 |
+
{
|
202 |
+
self::$impl->aws_crt_credentials_provider_static_options_set_session_token($options, $session_token);
|
203 |
+
}
|
204 |
+
function credentials_provider_static_new($options)
|
205 |
+
{
|
206 |
+
return self::$impl->aws_crt_credentials_provider_static_new($options);
|
207 |
+
}
|
208 |
+
function input_stream_options_new()
|
209 |
+
{
|
210 |
+
return self::$impl->aws_crt_input_stream_options_new();
|
211 |
+
}
|
212 |
+
function input_stream_options_release($options)
|
213 |
+
{
|
214 |
+
self::$impl->aws_crt_input_stream_options_release($options);
|
215 |
+
}
|
216 |
+
function input_stream_options_set_user_data($options, $user_data)
|
217 |
+
{
|
218 |
+
self::$impl->aws_crt_input_stream_options_set_user_data($options, $user_data);
|
219 |
+
}
|
220 |
+
function input_stream_new($options)
|
221 |
+
{
|
222 |
+
return self::$impl->aws_crt_input_stream_new($options);
|
223 |
+
}
|
224 |
+
function input_stream_release($stream)
|
225 |
+
{
|
226 |
+
self::$impl->aws_crt_input_stream_release($stream);
|
227 |
+
}
|
228 |
+
function input_stream_seek($stream, $offset, $basis)
|
229 |
+
{
|
230 |
+
return self::$impl->aws_crt_input_stream_seek($stream, $offset, $basis);
|
231 |
+
}
|
232 |
+
function input_stream_read($stream, $length)
|
233 |
+
{
|
234 |
+
return self::$impl->aws_crt_input_stream_read($stream, $length);
|
235 |
+
}
|
236 |
+
function input_stream_eof($stream)
|
237 |
+
{
|
238 |
+
return self::$impl->aws_crt_input_stream_eof($stream);
|
239 |
+
}
|
240 |
+
function input_stream_get_length($stream)
|
241 |
+
{
|
242 |
+
return self::$impl->aws_crt_input_stream_get_length($stream);
|
243 |
+
}
|
244 |
+
function http_message_new_from_blob($blob)
|
245 |
+
{
|
246 |
+
return self::$impl->aws_crt_http_message_new_from_blob($blob);
|
247 |
+
}
|
248 |
+
function http_message_to_blob($message)
|
249 |
+
{
|
250 |
+
return self::$impl->aws_crt_http_message_to_blob($message);
|
251 |
+
}
|
252 |
+
function http_message_release($message)
|
253 |
+
{
|
254 |
+
self::$impl->aws_crt_http_message_release($message);
|
255 |
+
}
|
256 |
+
function signing_config_aws_new()
|
257 |
+
{
|
258 |
+
return self::$impl->aws_crt_signing_config_aws_new();
|
259 |
+
}
|
260 |
+
function signing_config_aws_release($signing_config)
|
261 |
+
{
|
262 |
+
return self::$impl->aws_crt_signing_config_aws_release($signing_config);
|
263 |
+
}
|
264 |
+
function signing_config_aws_set_algorithm($signing_config, $algorithm)
|
265 |
+
{
|
266 |
+
self::$impl->aws_crt_signing_config_aws_set_algorithm($signing_config, (int) $algorithm);
|
267 |
+
}
|
268 |
+
function signing_config_aws_set_signature_type($signing_config, $signature_type)
|
269 |
+
{
|
270 |
+
self::$impl->aws_crt_signing_config_aws_set_signature_type($signing_config, (int) $signature_type);
|
271 |
+
}
|
272 |
+
function signing_config_aws_set_credentials_provider($signing_config, $credentials_provider)
|
273 |
+
{
|
274 |
+
self::$impl->aws_crt_signing_config_aws_set_credentials_provider($signing_config, $credentials_provider);
|
275 |
+
}
|
276 |
+
function signing_config_aws_set_region($signing_config, $region)
|
277 |
+
{
|
278 |
+
self::$impl->aws_crt_signing_config_aws_set_region($signing_config, $region);
|
279 |
+
}
|
280 |
+
function signing_config_aws_set_service($signing_config, $service)
|
281 |
+
{
|
282 |
+
self::$impl->aws_crt_signing_config_aws_set_service($signing_config, $service);
|
283 |
+
}
|
284 |
+
function signing_config_aws_set_use_double_uri_encode($signing_config, $use_double_uri_encode)
|
285 |
+
{
|
286 |
+
self::$impl->aws_crt_signing_config_aws_set_use_double_uri_encode($signing_config, $use_double_uri_encode);
|
287 |
+
}
|
288 |
+
function signing_config_aws_set_should_normalize_uri_path($signing_config, $should_normalize_uri_path)
|
289 |
+
{
|
290 |
+
self::$impl->aws_crt_signing_config_aws_set_should_normalize_uri_path($signing_config, $should_normalize_uri_path);
|
291 |
+
}
|
292 |
+
function signing_config_aws_set_omit_session_token($signing_config, $omit_session_token)
|
293 |
+
{
|
294 |
+
self::$impl->aws_crt_signing_config_aws_set_omit_session_token($signing_config, $omit_session_token);
|
295 |
+
}
|
296 |
+
function signing_config_aws_set_signed_body_value($signing_config, $signed_body_value)
|
297 |
+
{
|
298 |
+
self::$impl->aws_crt_signing_config_aws_set_signed_body_value($signing_config, $signed_body_value);
|
299 |
+
}
|
300 |
+
function signing_config_aws_set_signed_body_header_type($signing_config, $signed_body_header_type)
|
301 |
+
{
|
302 |
+
self::$impl->aws_crt_signing_config_aws_set_signed_body_header_type($signing_config, $signed_body_header_type);
|
303 |
+
}
|
304 |
+
function signing_config_aws_set_expiration_in_seconds($signing_config, $expiration_in_seconds)
|
305 |
+
{
|
306 |
+
self::$impl->aws_crt_signing_config_aws_set_expiration_in_seconds($signing_config, $expiration_in_seconds);
|
307 |
+
}
|
308 |
+
function signing_config_aws_set_date($signing_config, $timestamp)
|
309 |
+
{
|
310 |
+
self::$impl->aws_crt_signing_config_aws_set_date($signing_config, $timestamp);
|
311 |
+
}
|
312 |
+
function signing_config_aws_set_should_sign_header_fn($signing_config, $should_sign_header_fn)
|
313 |
+
{
|
314 |
+
self::$impl->aws_crt_signing_config_aws_set_should_sign_header_fn($signing_config, $should_sign_header_fn);
|
315 |
+
}
|
316 |
+
function signable_new_from_http_request($http_message)
|
317 |
+
{
|
318 |
+
return self::$impl->aws_crt_signable_new_from_http_request($http_message);
|
319 |
+
}
|
320 |
+
function signable_new_from_chunk($chunk_stream, $previous_signature)
|
321 |
+
{
|
322 |
+
return self::$impl->aws_crt_signable_new_from_chunk($chunk_stream, $previous_signature);
|
323 |
+
}
|
324 |
+
function signable_new_from_canonical_request($canonical_request)
|
325 |
+
{
|
326 |
+
return self::$impl->aws_crt_signable_new_from_canonical_request($canonical_request);
|
327 |
+
}
|
328 |
+
function signable_release($signable)
|
329 |
+
{
|
330 |
+
self::$impl->aws_crt_signable_release($signable);
|
331 |
+
}
|
332 |
+
function signing_result_release($signing_result)
|
333 |
+
{
|
334 |
+
self::$impl->aws_crt_signing_result_release($signing_result);
|
335 |
+
}
|
336 |
+
function signing_result_apply_to_http_request($signing_result, $http_message)
|
337 |
+
{
|
338 |
+
return self::$impl->aws_crt_signing_result_apply_to_http_request($signing_result, $http_message);
|
339 |
+
}
|
340 |
+
function sign_request_aws($signable, $signing_config, $on_complete, $user_data)
|
341 |
+
{
|
342 |
+
return self::$impl->aws_crt_sign_request_aws($signable, $signing_config, $on_complete, $user_data);
|
343 |
+
}
|
344 |
+
function test_verify_sigv4a_signing($signable, $signing_config, $expected_canonical_request, $signature, $ecc_key_pub_x, $ecc_key_pub_y)
|
345 |
+
{
|
346 |
+
return self::$impl->aws_crt_test_verify_sigv4a_signing($signable, $signing_config, $expected_canonical_request, $signature, $ecc_key_pub_x, $ecc_key_pub_y);
|
347 |
+
}
|
348 |
+
public static function crc32($input, $previous = 0)
|
349 |
+
{
|
350 |
+
return self::$impl->aws_crt_crc32($input, $previous);
|
351 |
+
}
|
352 |
+
public static function crc32c($input, $previous = 0)
|
353 |
+
{
|
354 |
+
return self::$impl->aws_crt_crc32c($input, $previous);
|
355 |
+
}
|
356 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/HTTP/Headers.php
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT\HTTP;
|
8 |
+
|
9 |
+
use WPStaging\Vendor\AWS\CRT\Internal\Encoding;
|
10 |
+
final class Headers
|
11 |
+
{
|
12 |
+
private $headers;
|
13 |
+
public function __construct($headers = [])
|
14 |
+
{
|
15 |
+
$this->headers = $headers;
|
16 |
+
}
|
17 |
+
public static function marshall($headers)
|
18 |
+
{
|
19 |
+
$buf = "";
|
20 |
+
foreach ($headers->headers as $header => $value) {
|
21 |
+
$buf .= \WPStaging\Vendor\AWS\CRT\Internal\Encoding::encodeString($header);
|
22 |
+
$buf .= \WPStaging\Vendor\AWS\CRT\Internal\Encoding::encodeString($value);
|
23 |
+
}
|
24 |
+
return $buf;
|
25 |
+
}
|
26 |
+
public static function unmarshall($buf)
|
27 |
+
{
|
28 |
+
$strings = \WPStaging\Vendor\AWS\CRT\Internal\Encoding::readStrings($buf);
|
29 |
+
$headers = [];
|
30 |
+
for ($idx = 0; $idx < \count($strings);) {
|
31 |
+
$headers[$strings[$idx++]] = $strings[$idx++];
|
32 |
+
}
|
33 |
+
return new \WPStaging\Vendor\AWS\CRT\HTTP\Headers($headers);
|
34 |
+
}
|
35 |
+
public function count()
|
36 |
+
{
|
37 |
+
return \count($this->headers);
|
38 |
+
}
|
39 |
+
public function get($header)
|
40 |
+
{
|
41 |
+
return isset($this->headers[$header]) ? $this->headers[$header] : null;
|
42 |
+
}
|
43 |
+
public function set($header, $value)
|
44 |
+
{
|
45 |
+
$this->headers[$header] = $value;
|
46 |
+
}
|
47 |
+
public function toArray()
|
48 |
+
{
|
49 |
+
return $this->headers;
|
50 |
+
}
|
51 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/HTTP/Message.php
ADDED
@@ -0,0 +1,94 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT\HTTP;
|
8 |
+
|
9 |
+
use WPStaging\Vendor\AWS\CRT\NativeResource;
|
10 |
+
use WPStaging\Vendor\AWS\CRT\Internal\Encoding;
|
11 |
+
abstract class Message extends \WPStaging\Vendor\AWS\CRT\NativeResource
|
12 |
+
{
|
13 |
+
private $method;
|
14 |
+
private $path;
|
15 |
+
private $query;
|
16 |
+
private $headers;
|
17 |
+
public function __construct($method, $path, $query = [], $headers = [])
|
18 |
+
{
|
19 |
+
parent::__construct();
|
20 |
+
$this->method = $method;
|
21 |
+
$this->path = $path;
|
22 |
+
$this->query = $query;
|
23 |
+
$this->headers = new \WPStaging\Vendor\AWS\CRT\HTTP\Headers($headers);
|
24 |
+
$this->acquire(self::$crt->http_message_new_from_blob(self::marshall($this)));
|
25 |
+
}
|
26 |
+
public function __destruct()
|
27 |
+
{
|
28 |
+
self::$crt->http_message_release($this->release());
|
29 |
+
parent::__destruct();
|
30 |
+
}
|
31 |
+
public function toBlob()
|
32 |
+
{
|
33 |
+
return self::$crt->http_message_to_blob($this->native);
|
34 |
+
}
|
35 |
+
protected static function marshall($msg)
|
36 |
+
{
|
37 |
+
$buf = "";
|
38 |
+
$buf .= \WPStaging\Vendor\AWS\CRT\Internal\Encoding::encodeString($msg->method);
|
39 |
+
$buf .= \WPStaging\Vendor\AWS\CRT\Internal\Encoding::encodeString($msg->pathAndQuery());
|
40 |
+
$buf .= \WPStaging\Vendor\AWS\CRT\HTTP\Headers::marshall($msg->headers);
|
41 |
+
return $buf;
|
42 |
+
}
|
43 |
+
protected static function _unmarshall($buf, $class = \WPStaging\Vendor\AWS\CRT\HTTP\Message::class)
|
44 |
+
{
|
45 |
+
$method = \WPStaging\Vendor\AWS\CRT\Internal\Encoding::readString($buf);
|
46 |
+
$path_and_query = \WPStaging\Vendor\AWS\CRT\Internal\Encoding::readString($buf);
|
47 |
+
$parts = \explode("?", $path_and_query, 2);
|
48 |
+
$path = isset($parts[0]) ? $parts[0] : "";
|
49 |
+
$query = isset($parts[1]) ? $parts[1] : "";
|
50 |
+
$headers = \WPStaging\Vendor\AWS\CRT\HTTP\Headers::unmarshall($buf);
|
51 |
+
// Turn query params back into a dictionary
|
52 |
+
if (\strlen($query)) {
|
53 |
+
$query = \rawurldecode($query);
|
54 |
+
$query = \explode("&", $query);
|
55 |
+
$query = \array_reduce($query, function ($params, $pair) {
|
56 |
+
list($param, $value) = \explode("=", $pair, 2);
|
57 |
+
$params[$param] = $value;
|
58 |
+
return $params;
|
59 |
+
}, []);
|
60 |
+
} else {
|
61 |
+
$query = [];
|
62 |
+
}
|
63 |
+
return new $class($method, $path, $query, $headers->toArray());
|
64 |
+
}
|
65 |
+
public function pathAndQuery()
|
66 |
+
{
|
67 |
+
$path = $this->path;
|
68 |
+
$queries = [];
|
69 |
+
foreach ($this->query as $param => $value) {
|
70 |
+
$queries[] = \urlencode($param) . "=" . \urlencode($value);
|
71 |
+
}
|
72 |
+
$query = \implode("&", $queries);
|
73 |
+
if (\strlen($query)) {
|
74 |
+
$path = \implode("?", [$path, $query]);
|
75 |
+
}
|
76 |
+
return $path;
|
77 |
+
}
|
78 |
+
public function method()
|
79 |
+
{
|
80 |
+
return $this->method;
|
81 |
+
}
|
82 |
+
public function path()
|
83 |
+
{
|
84 |
+
return $this->path;
|
85 |
+
}
|
86 |
+
public function query()
|
87 |
+
{
|
88 |
+
return $this->query;
|
89 |
+
}
|
90 |
+
public function headers()
|
91 |
+
{
|
92 |
+
return $this->headers;
|
93 |
+
}
|
94 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/HTTP/Request.php
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT\HTTP;
|
8 |
+
|
9 |
+
use WPStaging\Vendor\AWS\CRT\IO\InputStream;
|
10 |
+
class Request extends \WPStaging\Vendor\AWS\CRT\HTTP\Message
|
11 |
+
{
|
12 |
+
private $body_stream = null;
|
13 |
+
public function __construct($method, $path, $query = [], $headers = [], $body_stream = null)
|
14 |
+
{
|
15 |
+
parent::__construct($method, $path, $query, $headers);
|
16 |
+
if (!\is_null($body_stream) && !$body_stream instanceof \WPStaging\Vendor\AWS\CRT\IO\InputStream) {
|
17 |
+
throw InvalidArgumentException('body_stream must be an instance of ' . \WPStaging\Vendor\AWS\CRT\IO\InputStream::class);
|
18 |
+
}
|
19 |
+
$this->body_stream = $body_stream;
|
20 |
+
}
|
21 |
+
public static function marshall($request)
|
22 |
+
{
|
23 |
+
return parent::marshall($request);
|
24 |
+
}
|
25 |
+
public static function unmarshall($buf)
|
26 |
+
{
|
27 |
+
return parent::_unmarshall($buf, \WPStaging\Vendor\AWS\CRT\HTTP\Request::class);
|
28 |
+
}
|
29 |
+
public function body_stream()
|
30 |
+
{
|
31 |
+
return $this->body_stream;
|
32 |
+
}
|
33 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/HTTP/Response.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT\HTTP;
|
8 |
+
|
9 |
+
class Response extends \WPStaging\Vendor\AWS\CRT\HTTP\Message
|
10 |
+
{
|
11 |
+
private $status_code;
|
12 |
+
public function __construct($method, $path, $query, $headers, $status_code)
|
13 |
+
{
|
14 |
+
parent::__construct($method, $path, $query, $headers);
|
15 |
+
$this->status_code = $status_code;
|
16 |
+
}
|
17 |
+
public static function marshall($response)
|
18 |
+
{
|
19 |
+
return parent::marshall($response);
|
20 |
+
}
|
21 |
+
public static function unmarshall($buf)
|
22 |
+
{
|
23 |
+
return parent::_unmarshall($buf, \WPStaging\Vendor\AWS\CRT\HTTP\Response::class);
|
24 |
+
}
|
25 |
+
public function status_code()
|
26 |
+
{
|
27 |
+
return $this->status_code;
|
28 |
+
}
|
29 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/IO/EventLoopGroup.php
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT\IO;
|
8 |
+
|
9 |
+
use WPStaging\Vendor\AWS\CRT\NativeResource as NativeResource;
|
10 |
+
use WPStaging\Vendor\AWS\CRT\Options as Options;
|
11 |
+
/**
|
12 |
+
* Represents 1 or more event loops (1 per thread) for doing I/O and background tasks.
|
13 |
+
* Typically, every application has one EventLoopGroup.
|
14 |
+
*
|
15 |
+
* @param array options:
|
16 |
+
* - int num_threads - Number of worker threads in the EventLoopGroup. Defaults to 0/1 per logical core.
|
17 |
+
*/
|
18 |
+
final class EventLoopGroup extends \WPStaging\Vendor\AWS\CRT\NativeResource
|
19 |
+
{
|
20 |
+
static function defaults()
|
21 |
+
{
|
22 |
+
return ['max_threads' => 0];
|
23 |
+
}
|
24 |
+
function __construct(array $options = [])
|
25 |
+
{
|
26 |
+
parent::__construct();
|
27 |
+
$options = new \WPStaging\Vendor\AWS\CRT\Options($options, self::defaults());
|
28 |
+
$elg_options = self::$crt->event_loop_group_options_new();
|
29 |
+
self::$crt->event_loop_group_options_set_max_threads($elg_options, $options->getInt('max_threads'));
|
30 |
+
$this->acquire(self::$crt->event_loop_group_new($elg_options));
|
31 |
+
self::$crt->event_loop_group_options_release($elg_options);
|
32 |
+
}
|
33 |
+
function __destruct()
|
34 |
+
{
|
35 |
+
self::$crt->event_loop_group_release($this->release());
|
36 |
+
parent::__destruct();
|
37 |
+
}
|
38 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/IO/InputStream.php
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT\IO;
|
8 |
+
|
9 |
+
use WPStaging\Vendor\AWS\CRT\NativeResource as NativeResource;
|
10 |
+
final class InputStream extends \WPStaging\Vendor\AWS\CRT\NativeResource
|
11 |
+
{
|
12 |
+
private $stream = null;
|
13 |
+
const SEEK_BEGIN = 0;
|
14 |
+
const SEEK_END = 2;
|
15 |
+
public function __construct($stream)
|
16 |
+
{
|
17 |
+
$this->stream = $stream;
|
18 |
+
$options = self::$crt->input_stream_options_new();
|
19 |
+
// The stream implementation in native just converts the PHP stream into
|
20 |
+
// a native php_stream* and executes operations entirely in native
|
21 |
+
self::$crt->input_stream_options_set_user_data($options, $stream);
|
22 |
+
$this->acquire(self::$crt->input_stream_new($options));
|
23 |
+
self::$crt->input_stream_options_release($options);
|
24 |
+
}
|
25 |
+
public function __destruct()
|
26 |
+
{
|
27 |
+
self::$crt->input_stream_release($this->release());
|
28 |
+
parent::__destruct();
|
29 |
+
}
|
30 |
+
public function eof()
|
31 |
+
{
|
32 |
+
return self::$crt->input_stream_eof($this->native);
|
33 |
+
}
|
34 |
+
public function length()
|
35 |
+
{
|
36 |
+
return self::$crt->input_stream_get_length($this->native);
|
37 |
+
}
|
38 |
+
public function read($length = 0)
|
39 |
+
{
|
40 |
+
if ($length == 0) {
|
41 |
+
$length = $this->length();
|
42 |
+
}
|
43 |
+
return self::$crt->input_stream_read($this->native, $length);
|
44 |
+
}
|
45 |
+
public function seek($offset, $basis)
|
46 |
+
{
|
47 |
+
return self::$crt->input_stream_seek($this->native, $offset, $basis);
|
48 |
+
}
|
49 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Internal/Encoding.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT\Internal;
|
8 |
+
|
9 |
+
final class Encoding
|
10 |
+
{
|
11 |
+
public static function readString(&$buffer)
|
12 |
+
{
|
13 |
+
list($len, $str) = self::decodeString($buffer);
|
14 |
+
// Advance by sizeof(length) + strlen(str)
|
15 |
+
$buffer = \substr($buffer, 4 + $len);
|
16 |
+
return $str;
|
17 |
+
}
|
18 |
+
public static function readStrings($buffer)
|
19 |
+
{
|
20 |
+
$strings = [];
|
21 |
+
while (\strlen($buffer)) {
|
22 |
+
$strings[] = self::readString($buffer);
|
23 |
+
}
|
24 |
+
return $strings;
|
25 |
+
}
|
26 |
+
public static function decodeString($buffer)
|
27 |
+
{
|
28 |
+
$len = \unpack("N", $buffer)[1];
|
29 |
+
$buffer = \substr($buffer, 4);
|
30 |
+
$str = \unpack("a{$len}", $buffer)[1];
|
31 |
+
return [$len, $str];
|
32 |
+
}
|
33 |
+
public static function encodeString($str)
|
34 |
+
{
|
35 |
+
if (\is_array($str)) {
|
36 |
+
$str = $str[0];
|
37 |
+
}
|
38 |
+
return \pack("Na*", \strlen($str), $str);
|
39 |
+
}
|
40 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Internal/Extension.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT\Internal;
|
8 |
+
|
9 |
+
use RuntimeException;
|
10 |
+
/**
|
11 |
+
* @internal
|
12 |
+
* Forwards calls on to awscrt PHP extension functions
|
13 |
+
*/
|
14 |
+
final class Extension
|
15 |
+
{
|
16 |
+
function __construct()
|
17 |
+
{
|
18 |
+
if (!\extension_loaded('awscrt')) {
|
19 |
+
throw new \RuntimeException('awscrt extension is not loaded');
|
20 |
+
}
|
21 |
+
}
|
22 |
+
/**
|
23 |
+
* Forwards any call made on this object to the extension function of the
|
24 |
+
* same name with the supplied arguments. Argument type hinting and checking
|
25 |
+
* occurs at the CRT wrapper.
|
26 |
+
*/
|
27 |
+
function __call($name, $args)
|
28 |
+
{
|
29 |
+
return \call_user_func_array($name, $args);
|
30 |
+
}
|
31 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Log.php
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT;
|
8 |
+
|
9 |
+
use WPStaging\Vendor\AWS\CRT\CRT;
|
10 |
+
final class Log
|
11 |
+
{
|
12 |
+
const NONE = 0;
|
13 |
+
const FATAL = 1;
|
14 |
+
const ERROR = 2;
|
15 |
+
const WARN = 3;
|
16 |
+
const INFO = 4;
|
17 |
+
const DEBUG = 5;
|
18 |
+
const TRACE = 6;
|
19 |
+
public static function toStdout()
|
20 |
+
{
|
21 |
+
\WPStaging\Vendor\AWS\CRT\CRT::log_to_stdout();
|
22 |
+
}
|
23 |
+
public static function toStderr()
|
24 |
+
{
|
25 |
+
\WPStaging\Vendor\AWS\CRT\CRT::log_to_stderr();
|
26 |
+
}
|
27 |
+
public static function toFile($filename)
|
28 |
+
{
|
29 |
+
\WPStaging\Vendor\AWS\CRT\CRT::log_to_file($filename);
|
30 |
+
}
|
31 |
+
public static function toStream($stream)
|
32 |
+
{
|
33 |
+
\assert(\get_resource_type($stream) == "stream");
|
34 |
+
\WPStaging\Vendor\AWS\CRT\CRT::log_to_stream($stream);
|
35 |
+
}
|
36 |
+
public static function stop()
|
37 |
+
{
|
38 |
+
\WPStaging\Vendor\AWS\CRT\CRT::log_stop();
|
39 |
+
}
|
40 |
+
public static function setLogLevel($level)
|
41 |
+
{
|
42 |
+
\assert($level >= self::NONE && $level <= self::TRACE);
|
43 |
+
\WPStaging\Vendor\AWS\CRT\CRT::log_set_level($level);
|
44 |
+
}
|
45 |
+
public static function log($level, $message)
|
46 |
+
{
|
47 |
+
\WPStaging\Vendor\AWS\CRT\CRT::log_message($level, $message);
|
48 |
+
}
|
49 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/NativeResource.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT;
|
8 |
+
|
9 |
+
use WPStaging\Vendor\AWS\CRT\CRT as CRT;
|
10 |
+
/**
|
11 |
+
* Base class for all native resources, tracks all outstanding resources
|
12 |
+
* and provides basic leak checking
|
13 |
+
*/
|
14 |
+
abstract class NativeResource
|
15 |
+
{
|
16 |
+
protected static $crt = null;
|
17 |
+
protected static $resources = [];
|
18 |
+
protected $native = null;
|
19 |
+
protected function __construct()
|
20 |
+
{
|
21 |
+
if (\is_null(self::$crt)) {
|
22 |
+
self::$crt = new \WPStaging\Vendor\AWS\CRT\CRT();
|
23 |
+
}
|
24 |
+
self::$resources[\spl_object_hash($this)] = 1;
|
25 |
+
}
|
26 |
+
protected function acquire($handle)
|
27 |
+
{
|
28 |
+
return $this->native = $handle;
|
29 |
+
}
|
30 |
+
protected function release()
|
31 |
+
{
|
32 |
+
$native = $this->native;
|
33 |
+
$this->native = null;
|
34 |
+
return $native;
|
35 |
+
}
|
36 |
+
function __destruct()
|
37 |
+
{
|
38 |
+
// Should have been destroyed and released by derived resource
|
39 |
+
\assert($this->native == null);
|
40 |
+
unset(self::$resources[\spl_object_hash($this)]);
|
41 |
+
}
|
42 |
+
}
|
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Options.php
ADDED
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
5 |
+
* SPDX-License-Identifier: Apache-2.0.
|
6 |
+
*/
|
7 |
+
namespace WPStaging\Vendor\AWS\CRT;
|
8 |
+
|
9 |
+
final class OptionValue
|
10 |
+
{
|
11 |
+
private $value;
|
12 |
+
function __construct($value)
|
13 |
+
{
|
14 |
+
$this->value = $value;
|
15 |
+
}
|
16 |
+
public function asObject()
|
17 |
+
{
|
18 |
+
return $this->value;
|
19 |
+
}
|
20 |
+
public function asMixed()
|
21 |
+
{
|
22 |
+
return $this->value;
|
23 |
+
}
|
24 |
+
public function asInt()
|
25 |
+
{
|
26 |
+
return empty($this->value) ? 0 : (int) $this->value;
|
27 |
+
}
|
28 |
+
public function asBool()
|
29 |
+
{
|
30 |
+
return \boolval($this->value);
|
31 |
+
}
|
32 |
+
public function asString()
|
33 |
+
{
|
34 |
+
return !empty($this->value) ? \strval($this->value) : "";
|
35 |
+
}
|
36 |
+
public function asArray()
|
37 |
+
{
|
38 |
+
return \is_array($this->value) ? $this->value : (!empty($this->value) ? [$this->value] : []);
|
39 |
+
}
|
40 |
+
public function asCallable()
|
41 |
+
{
|
42 |
+
return \is_callable($this->value) ? $this->value : null;
|
43 |
+
}
|
44 |
+
}
|
45 |
+
final class Options
|
46 |
+
{
|
47 |
+
private $options;
|
48 |
+
public function __construct($opts = [], $defaults = [])
|
49 |
+
{
|
50 |
+
$this->options = \array_replace($defaults, empty($opts) ? [] : $opts);
|
51 |
+
}
|
52 |
+
public function __get($name)
|
53 |
+
{
|
54 |
+
return $this->get($name);
|
55 |
+
}
|
56 |
+
public function asArray()
|
57 |
+
{
|
58 |
+
return $this->options;
|
59 |
+
}
|
60 |
+
public function toArray()
|
61 |
+
{
|
62 |
+
return \array_merge_recursive([], $this->options);
|
63 |
+
}
|
64 |
+
public function get($name)
|
65 |
+
{
|
66 |
+
return new \WPStaging\Vendor\AWS\CRT\OptionValue($this->options[$name]);
|
67 |
+
}
|
68 |
+
public function getInt($name)
|
69 |
+
{
|
70 |
+
return $this->get($name)->asInt();
|
71 |
+
}
|
72 |
+
public function getString($name)
|
73 |
+
{
|
74 |
+
return $this->get($name)->asString();
|
75 |
+
}
|
76 |
+
public function getBool($name)
|
77 |
+
{
|
78 |
+
return $this->get($name)->asBool();
|
79 |
+
}
|
80 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/NOTICE
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# AWS SDK for PHP
|
2 |
+
|
3 |
+
<http://aws.amazon.com/php>
|
4 |
+
|
5 |
+
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
6 |
+
|
7 |
+
Licensed under the Apache License, Version 2.0 (the "License").
|
8 |
+
You may not use this file except in compliance with the License.
|
9 |
+
You may obtain a copy of the License at
|
10 |
+
|
11 |
+
http://www.apache.org/licenses/LICENSE-2.0
|
12 |
+
|
13 |
+
Unless required by applicable law or agreed to in writing, software
|
14 |
+
distributed under the License is distributed on an "AS IS" BASIS,
|
15 |
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16 |
+
See the License for the specific language governing permissions and
|
17 |
+
limitations under the License.
|
vendor_wpstg/aws/aws-sdk-php/src/AbstractConfigurationProvider.php
ADDED
@@ -0,0 +1,133 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\GuzzleHttp\Promise;
|
6 |
+
/**
|
7 |
+
* A configuration provider is a function that returns a promise that is
|
8 |
+
* fulfilled with a configuration object. This class provides base functionality
|
9 |
+
* usable by specific configuration provider implementations
|
10 |
+
*/
|
11 |
+
abstract class AbstractConfigurationProvider
|
12 |
+
{
|
13 |
+
const ENV_PROFILE = 'AWS_PROFILE';
|
14 |
+
const ENV_CONFIG_FILE = 'AWS_CONFIG_FILE';
|
15 |
+
public static $cacheKey;
|
16 |
+
protected static $interfaceClass;
|
17 |
+
protected static $exceptionClass;
|
18 |
+
/**
|
19 |
+
* Wraps a config provider and saves provided configuration in an
|
20 |
+
* instance of Aws\CacheInterface. Forwards calls when no config found
|
21 |
+
* in cache and updates cache with the results.
|
22 |
+
*
|
23 |
+
* @param callable $provider Configuration provider function to wrap
|
24 |
+
* @param CacheInterface $cache Cache to store configuration
|
25 |
+
* @param string|null $cacheKey (optional) Cache key to use
|
26 |
+
*
|
27 |
+
* @return callable
|
28 |
+
*/
|
29 |
+
public static function cache(callable $provider, \WPStaging\Vendor\Aws\CacheInterface $cache, $cacheKey = null)
|
30 |
+
{
|
31 |
+
$cacheKey = $cacheKey ?: static::$cacheKey;
|
32 |
+
return function () use($provider, $cache, $cacheKey) {
|
33 |
+
$found = $cache->get($cacheKey);
|
34 |
+
if ($found instanceof static::$interfaceClass) {
|
35 |
+
return \WPStaging\Vendor\GuzzleHttp\Promise\Create::promiseFor($found);
|
36 |
+
}
|
37 |
+
return $provider()->then(function ($config) use($cache, $cacheKey) {
|
38 |
+
$cache->set($cacheKey, $config);
|
39 |
+
return $config;
|
40 |
+
});
|
41 |
+
};
|
42 |
+
}
|
43 |
+
/**
|
44 |
+
* Creates an aggregate configuration provider that invokes the provided
|
45 |
+
* variadic providers one after the other until a provider returns
|
46 |
+
* configuration.
|
47 |
+
*
|
48 |
+
* @return callable
|
49 |
+
*/
|
50 |
+
public static function chain()
|
51 |
+
{
|
52 |
+
$links = \func_get_args();
|
53 |
+
if (empty($links)) {
|
54 |
+
throw new \InvalidArgumentException('No providers in chain');
|
55 |
+
}
|
56 |
+
return function () use($links) {
|
57 |
+
/** @var callable $parent */
|
58 |
+
$parent = \array_shift($links);
|
59 |
+
$promise = $parent();
|
60 |
+
while ($next = \array_shift($links)) {
|
61 |
+
$promise = $promise->otherwise($next);
|
62 |
+
}
|
63 |
+
return $promise;
|
64 |
+
};
|
65 |
+
}
|
66 |
+
/**
|
67 |
+
* Gets the environment's HOME directory if available.
|
68 |
+
*
|
69 |
+
* @return null|string
|
70 |
+
*/
|
71 |
+
protected static function getHomeDir()
|
72 |
+
{
|
73 |
+
// On Linux/Unix-like systems, use the HOME environment variable
|
74 |
+
if ($homeDir = \getenv('HOME')) {
|
75 |
+
return $homeDir;
|
76 |
+
}
|
77 |
+
// Get the HOMEDRIVE and HOMEPATH values for Windows hosts
|
78 |
+
$homeDrive = \getenv('HOMEDRIVE');
|
79 |
+
$homePath = \getenv('HOMEPATH');
|
80 |
+
return $homeDrive && $homePath ? $homeDrive . $homePath : null;
|
81 |
+
}
|
82 |
+
/**
|
83 |
+
* Gets default config file location from environment, falling back to aws
|
84 |
+
* default location
|
85 |
+
*
|
86 |
+
* @return string
|
87 |
+
*/
|
88 |
+
protected static function getDefaultConfigFilename()
|
89 |
+
{
|
90 |
+
if ($filename = \getenv(self::ENV_CONFIG_FILE)) {
|
91 |
+
return $filename;
|
92 |
+
}
|
93 |
+
return self::getHomeDir() . '/.aws/config';
|
94 |
+
}
|
95 |
+
/**
|
96 |
+
* Wraps a config provider and caches previously provided configuration.
|
97 |
+
*
|
98 |
+
* @param callable $provider Config provider function to wrap.
|
99 |
+
*
|
100 |
+
* @return callable
|
101 |
+
*/
|
102 |
+
public static function memoize(callable $provider)
|
103 |
+
{
|
104 |
+
return function () use($provider) {
|
105 |
+
static $result;
|
106 |
+
static $isConstant;
|
107 |
+
// Constant config will be returned constantly.
|
108 |
+
if ($isConstant) {
|
109 |
+
return $result;
|
110 |
+
}
|
111 |
+
// Create the initial promise that will be used as the cached value
|
112 |
+
if (null === $result) {
|
113 |
+
$result = $provider();
|
114 |
+
}
|
115 |
+
// Return config and set flag that provider is already set
|
116 |
+
return $result->then(function ($config) use(&$isConstant) {
|
117 |
+
$isConstant = \true;
|
118 |
+
return $config;
|
119 |
+
});
|
120 |
+
};
|
121 |
+
}
|
122 |
+
/**
|
123 |
+
* Reject promise with standardized exception.
|
124 |
+
*
|
125 |
+
* @param $msg
|
126 |
+
* @return Promise\RejectedPromise
|
127 |
+
*/
|
128 |
+
protected static function reject($msg)
|
129 |
+
{
|
130 |
+
$exceptionClass = static::$exceptionClass;
|
131 |
+
return new \WPStaging\Vendor\GuzzleHttp\Promise\RejectedPromise(new $exceptionClass($msg));
|
132 |
+
}
|
133 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/AbstractModel.php
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Base class that is used by most API shapes
|
7 |
+
*/
|
8 |
+
abstract class AbstractModel implements \ArrayAccess
|
9 |
+
{
|
10 |
+
/** @var array */
|
11 |
+
protected $definition;
|
12 |
+
/** @var ShapeMap */
|
13 |
+
protected $shapeMap;
|
14 |
+
/**
|
15 |
+
* @param array $definition Service description
|
16 |
+
* @param ShapeMap $shapeMap Shapemap used for creating shapes
|
17 |
+
*/
|
18 |
+
public function __construct(array $definition, \WPStaging\Vendor\Aws\Api\ShapeMap $shapeMap)
|
19 |
+
{
|
20 |
+
$this->definition = $definition;
|
21 |
+
$this->shapeMap = $shapeMap;
|
22 |
+
}
|
23 |
+
public function toArray()
|
24 |
+
{
|
25 |
+
return $this->definition;
|
26 |
+
}
|
27 |
+
/**
|
28 |
+
* @return mixed|null
|
29 |
+
*/
|
30 |
+
#[\ReturnTypeWillChange]
|
31 |
+
public function offsetGet($offset)
|
32 |
+
{
|
33 |
+
return isset($this->definition[$offset]) ? $this->definition[$offset] : null;
|
34 |
+
}
|
35 |
+
/**
|
36 |
+
* @return void
|
37 |
+
*/
|
38 |
+
#[\ReturnTypeWillChange]
|
39 |
+
public function offsetSet($offset, $value)
|
40 |
+
{
|
41 |
+
$this->definition[$offset] = $value;
|
42 |
+
}
|
43 |
+
/**
|
44 |
+
* @return bool
|
45 |
+
*/
|
46 |
+
#[\ReturnTypeWillChange]
|
47 |
+
public function offsetExists($offset)
|
48 |
+
{
|
49 |
+
return isset($this->definition[$offset]);
|
50 |
+
}
|
51 |
+
/**
|
52 |
+
* @return void
|
53 |
+
*/
|
54 |
+
#[\ReturnTypeWillChange]
|
55 |
+
public function offsetUnset($offset)
|
56 |
+
{
|
57 |
+
unset($this->definition[$offset]);
|
58 |
+
}
|
59 |
+
protected function shapeAt($key)
|
60 |
+
{
|
61 |
+
if (!isset($this->definition[$key])) {
|
62 |
+
throw new \InvalidArgumentException('Expected shape definition at ' . $key);
|
63 |
+
}
|
64 |
+
return $this->shapeFor($this->definition[$key]);
|
65 |
+
}
|
66 |
+
protected function shapeFor(array $definition)
|
67 |
+
{
|
68 |
+
return isset($definition['shape']) ? $this->shapeMap->resolve($definition) : \WPStaging\Vendor\Aws\Api\Shape::create($definition, $this->shapeMap);
|
69 |
+
}
|
70 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/ApiProvider.php
ADDED
@@ -0,0 +1,212 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Exception\UnresolvedApiException;
|
6 |
+
/**
|
7 |
+
* API providers.
|
8 |
+
*
|
9 |
+
* An API provider is a function that accepts a type, service, and version and
|
10 |
+
* returns an array of API data on success or NULL if no API data can be created
|
11 |
+
* for the provided arguments.
|
12 |
+
*
|
13 |
+
* You can wrap your calls to an API provider with the
|
14 |
+
* {@see ApiProvider::resolve} method to ensure that API data is created. If the
|
15 |
+
* API data is not created, then the resolve() method will throw a
|
16 |
+
* {@see Aws\Exception\UnresolvedApiException}.
|
17 |
+
*
|
18 |
+
* use Aws\Api\ApiProvider;
|
19 |
+
* $provider = ApiProvider::defaultProvider();
|
20 |
+
* // Returns an array or NULL.
|
21 |
+
* $data = $provider('api', 's3', '2006-03-01');
|
22 |
+
* // Returns an array or throws.
|
23 |
+
* $data = ApiProvider::resolve($provider, 'api', 'elasticfood', '2020-01-01');
|
24 |
+
*
|
25 |
+
* You can compose multiple providers into a single provider using
|
26 |
+
* {@see Aws\or_chain}. This method accepts providers as arguments and
|
27 |
+
* returns a new function that will invoke each provider until a non-null value
|
28 |
+
* is returned.
|
29 |
+
*
|
30 |
+
* $a = ApiProvider::filesystem(sys_get_temp_dir() . '/aws-beta-models');
|
31 |
+
* $b = ApiProvider::manifest();
|
32 |
+
*
|
33 |
+
* $c = \Aws\or_chain($a, $b);
|
34 |
+
* $data = $c('api', 'betaservice', '2015-08-08'); // $a handles this.
|
35 |
+
* $data = $c('api', 's3', '2006-03-01'); // $b handles this.
|
36 |
+
* $data = $c('api', 'invalid', '2014-12-15'); // Neither handles this.
|
37 |
+
*/
|
38 |
+
class ApiProvider
|
39 |
+
{
|
40 |
+
/** @var array A map of public API type names to their file suffix. */
|
41 |
+
private static $typeMap = ['api' => 'api-2', 'paginator' => 'paginators-1', 'waiter' => 'waiters-2', 'docs' => 'docs-2'];
|
42 |
+
/** @var array API manifest */
|
43 |
+
private $manifest;
|
44 |
+
/** @var string The directory containing service models. */
|
45 |
+
private $modelsDir;
|
46 |
+
/**
|
47 |
+
* Resolves an API provider and ensures a non-null return value.
|
48 |
+
*
|
49 |
+
* @param callable $provider Provider function to invoke.
|
50 |
+
* @param string $type Type of data ('api', 'waiter', 'paginator').
|
51 |
+
* @param string $service Service name.
|
52 |
+
* @param string $version API version.
|
53 |
+
*
|
54 |
+
* @return array
|
55 |
+
* @throws UnresolvedApiException
|
56 |
+
*/
|
57 |
+
public static function resolve(callable $provider, $type, $service, $version)
|
58 |
+
{
|
59 |
+
// Execute the provider and return the result, if there is one.
|
60 |
+
$result = $provider($type, $service, $version);
|
61 |
+
if (\is_array($result)) {
|
62 |
+
if (!isset($result['metadata']['serviceIdentifier'])) {
|
63 |
+
$result['metadata']['serviceIdentifier'] = $service;
|
64 |
+
}
|
65 |
+
return $result;
|
66 |
+
}
|
67 |
+
// Throw an exception with a message depending on the inputs.
|
68 |
+
if (!isset(self::$typeMap[$type])) {
|
69 |
+
$msg = "The type must be one of: " . \implode(', ', self::$typeMap);
|
70 |
+
} elseif ($service) {
|
71 |
+
$msg = "The {$service} service does not have version: {$version}.";
|
72 |
+
} else {
|
73 |
+
$msg = "You must specify a service name to retrieve its API data.";
|
74 |
+
}
|
75 |
+
throw new \WPStaging\Vendor\Aws\Exception\UnresolvedApiException($msg);
|
76 |
+
}
|
77 |
+
/**
|
78 |
+
* Default SDK API provider.
|
79 |
+
*
|
80 |
+
* This provider loads pre-built manifest data from the `data` directory.
|
81 |
+
*
|
82 |
+
* @return self
|
83 |
+
*/
|
84 |
+
public static function defaultProvider()
|
85 |
+
{
|
86 |
+
return new self(__DIR__ . '/../data', \WPStaging\Vendor\Aws\manifest());
|
87 |
+
}
|
88 |
+
/**
|
89 |
+
* Loads API data after resolving the version to the latest, compatible,
|
90 |
+
* available version based on the provided manifest data.
|
91 |
+
*
|
92 |
+
* Manifest data is essentially an associative array of service names to
|
93 |
+
* associative arrays of API version aliases.
|
94 |
+
*
|
95 |
+
* [
|
96 |
+
* ...
|
97 |
+
* 'ec2' => [
|
98 |
+
* 'latest' => '2014-10-01',
|
99 |
+
* '2014-10-01' => '2014-10-01',
|
100 |
+
* '2014-09-01' => '2014-10-01',
|
101 |
+
* '2014-06-15' => '2014-10-01',
|
102 |
+
* ...
|
103 |
+
* ],
|
104 |
+
* 'ecs' => [...],
|
105 |
+
* 'elasticache' => [...],
|
106 |
+
* ...
|
107 |
+
* ]
|
108 |
+
*
|
109 |
+
* @param string $dir Directory containing service models.
|
110 |
+
* @param array $manifest The API version manifest data.
|
111 |
+
*
|
112 |
+
* @return self
|
113 |
+
*/
|
114 |
+
public static function manifest($dir, array $manifest)
|
115 |
+
{
|
116 |
+
return new self($dir, $manifest);
|
117 |
+
}
|
118 |
+
/**
|
119 |
+
* Loads API data from the specified directory.
|
120 |
+
*
|
121 |
+
* If "latest" is specified as the version, this provider must glob the
|
122 |
+
* directory to find which is the latest available version.
|
123 |
+
*
|
124 |
+
* @param string $dir Directory containing service models.
|
125 |
+
*
|
126 |
+
* @return self
|
127 |
+
* @throws \InvalidArgumentException if the provided `$dir` is invalid.
|
128 |
+
*/
|
129 |
+
public static function filesystem($dir)
|
130 |
+
{
|
131 |
+
return new self($dir);
|
132 |
+
}
|
133 |
+
/**
|
134 |
+
* Retrieves a list of valid versions for the specified service.
|
135 |
+
*
|
136 |
+
* @param string $service Service name
|
137 |
+
*
|
138 |
+
* @return array
|
139 |
+
*/
|
140 |
+
public function getVersions($service)
|
141 |
+
{
|
142 |
+
if (!isset($this->manifest)) {
|
143 |
+
$this->buildVersionsList($service);
|
144 |
+
}
|
145 |
+
if (!isset($this->manifest[$service]['versions'])) {
|
146 |
+
return [];
|
147 |
+
}
|
148 |
+
return \array_values(\array_unique($this->manifest[$service]['versions']));
|
149 |
+
}
|
150 |
+
/**
|
151 |
+
* Execute the provider.
|
152 |
+
*
|
153 |
+
* @param string $type Type of data ('api', 'waiter', 'paginator').
|
154 |
+
* @param string $service Service name.
|
155 |
+
* @param string $version API version.
|
156 |
+
*
|
157 |
+
* @return array|null
|
158 |
+
*/
|
159 |
+
public function __invoke($type, $service, $version)
|
160 |
+
{
|
161 |
+
// Resolve the type or return null.
|
162 |
+
if (isset(self::$typeMap[$type])) {
|
163 |
+
$type = self::$typeMap[$type];
|
164 |
+
} else {
|
165 |
+
return null;
|
166 |
+
}
|
167 |
+
// Resolve the version or return null.
|
168 |
+
if (!isset($this->manifest)) {
|
169 |
+
$this->buildVersionsList($service);
|
170 |
+
}
|
171 |
+
if (!isset($this->manifest[$service]['versions'][$version])) {
|
172 |
+
return null;
|
173 |
+
}
|
174 |
+
$version = $this->manifest[$service]['versions'][$version];
|
175 |
+
$path = "{$this->modelsDir}/{$service}/{$version}/{$type}.json";
|
176 |
+
try {
|
177 |
+
return \WPStaging\Vendor\Aws\load_compiled_json($path);
|
178 |
+
} catch (\InvalidArgumentException $e) {
|
179 |
+
return null;
|
180 |
+
}
|
181 |
+
}
|
182 |
+
/**
|
183 |
+
* @param string $modelsDir Directory containing service models.
|
184 |
+
* @param array $manifest The API version manifest data.
|
185 |
+
*/
|
186 |
+
private function __construct($modelsDir, array $manifest = null)
|
187 |
+
{
|
188 |
+
$this->manifest = $manifest;
|
189 |
+
$this->modelsDir = \rtrim($modelsDir, '/');
|
190 |
+
if (!\is_dir($this->modelsDir)) {
|
191 |
+
throw new \InvalidArgumentException("The specified models directory, {$modelsDir}, was not found.");
|
192 |
+
}
|
193 |
+
}
|
194 |
+
/**
|
195 |
+
* Build the versions list for the specified service by globbing the dir.
|
196 |
+
*/
|
197 |
+
private function buildVersionsList($service)
|
198 |
+
{
|
199 |
+
$dir = "{$this->modelsDir}/{$service}/";
|
200 |
+
if (!\is_dir($dir)) {
|
201 |
+
return;
|
202 |
+
}
|
203 |
+
// Get versions, remove . and .., and sort in descending order.
|
204 |
+
$results = \array_diff(\scandir($dir, \SCANDIR_SORT_DESCENDING), ['..', '.']);
|
205 |
+
if (!$results) {
|
206 |
+
$this->manifest[$service] = ['versions' => []];
|
207 |
+
} else {
|
208 |
+
$this->manifest[$service] = ['versions' => ['latest' => $results[0]]];
|
209 |
+
$this->manifest[$service]['versions'] += \array_combine($results, $results);
|
210 |
+
}
|
211 |
+
}
|
212 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/DateTimeResult.php
ADDED
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException;
|
6 |
+
use DateTime;
|
7 |
+
use DateTimeZone;
|
8 |
+
use Exception;
|
9 |
+
/**
|
10 |
+
* DateTime overrides that make DateTime work more seamlessly as a string,
|
11 |
+
* with JSON documents, and with JMESPath.
|
12 |
+
*/
|
13 |
+
class DateTimeResult extends \DateTime implements \JsonSerializable
|
14 |
+
{
|
15 |
+
/**
|
16 |
+
* Create a new DateTimeResult from a unix timestamp.
|
17 |
+
* The Unix epoch (or Unix time or POSIX time or Unix
|
18 |
+
* timestamp) is the number of seconds that have elapsed since
|
19 |
+
* January 1, 1970 (midnight UTC/GMT).
|
20 |
+
*
|
21 |
+
* @return DateTimeResult
|
22 |
+
* @throws Exception
|
23 |
+
*/
|
24 |
+
public static function fromEpoch($unixTimestamp)
|
25 |
+
{
|
26 |
+
if (!\is_numeric($unixTimestamp)) {
|
27 |
+
throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Invalid timestamp value passed to DateTimeResult::fromEpoch');
|
28 |
+
}
|
29 |
+
// PHP 5.5 does not support sub-second precision
|
30 |
+
if (\PHP_VERSION_ID < 56000) {
|
31 |
+
return new self(\gmdate('c', $unixTimestamp));
|
32 |
+
}
|
33 |
+
$decimalSeparator = isset(\localeconv()['decimal_point']) ? \localeconv()['decimal_point'] : ".";
|
34 |
+
$formatString = "U" . $decimalSeparator . "u";
|
35 |
+
$dateTime = \DateTime::createFromFormat($formatString, \sprintf('%0.6f', $unixTimestamp), new \DateTimeZone('UTC'));
|
36 |
+
if (\false === $dateTime) {
|
37 |
+
throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Invalid timestamp value passed to DateTimeResult::fromEpoch');
|
38 |
+
}
|
39 |
+
return new self($dateTime->format('Y-m-d H:i:s.u'), new \DateTimeZone('UTC'));
|
40 |
+
}
|
41 |
+
/**
|
42 |
+
* @return DateTimeResult
|
43 |
+
*/
|
44 |
+
public static function fromISO8601($iso8601Timestamp)
|
45 |
+
{
|
46 |
+
if (\is_numeric($iso8601Timestamp) || !\is_string($iso8601Timestamp)) {
|
47 |
+
throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Invalid timestamp value passed to DateTimeResult::fromISO8601');
|
48 |
+
}
|
49 |
+
return new \WPStaging\Vendor\Aws\Api\DateTimeResult($iso8601Timestamp);
|
50 |
+
}
|
51 |
+
/**
|
52 |
+
* Create a new DateTimeResult from an unknown timestamp.
|
53 |
+
*
|
54 |
+
* @return DateTimeResult
|
55 |
+
* @throws Exception
|
56 |
+
*/
|
57 |
+
public static function fromTimestamp($timestamp, $expectedFormat = null)
|
58 |
+
{
|
59 |
+
if (empty($timestamp)) {
|
60 |
+
return self::fromEpoch(0);
|
61 |
+
}
|
62 |
+
if (!(\is_string($timestamp) || \is_numeric($timestamp))) {
|
63 |
+
throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Invalid timestamp value passed to DateTimeResult::fromTimestamp');
|
64 |
+
}
|
65 |
+
try {
|
66 |
+
if ($expectedFormat == 'iso8601') {
|
67 |
+
try {
|
68 |
+
return self::fromISO8601($timestamp);
|
69 |
+
} catch (\Exception $exception) {
|
70 |
+
return self::fromEpoch($timestamp);
|
71 |
+
}
|
72 |
+
} else {
|
73 |
+
if ($expectedFormat == 'unixTimestamp') {
|
74 |
+
try {
|
75 |
+
return self::fromEpoch($timestamp);
|
76 |
+
} catch (\Exception $exception) {
|
77 |
+
return self::fromISO8601($timestamp);
|
78 |
+
}
|
79 |
+
} else {
|
80 |
+
if (\WPStaging\Vendor\Aws\is_valid_epoch($timestamp)) {
|
81 |
+
return self::fromEpoch($timestamp);
|
82 |
+
}
|
83 |
+
}
|
84 |
+
}
|
85 |
+
return self::fromISO8601($timestamp);
|
86 |
+
} catch (\Exception $exception) {
|
87 |
+
throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Invalid timestamp value passed to DateTimeResult::fromTimestamp');
|
88 |
+
}
|
89 |
+
}
|
90 |
+
/**
|
91 |
+
* Serialize the DateTimeResult as an ISO 8601 date string.
|
92 |
+
*
|
93 |
+
* @return string
|
94 |
+
*/
|
95 |
+
public function __toString()
|
96 |
+
{
|
97 |
+
return $this->format('c');
|
98 |
+
}
|
99 |
+
/**
|
100 |
+
* Serialize the date as an ISO 8601 date when serializing as JSON.
|
101 |
+
*
|
102 |
+
* @return string
|
103 |
+
*/
|
104 |
+
#[\ReturnTypeWillChange]
|
105 |
+
public function jsonSerialize()
|
106 |
+
{
|
107 |
+
return (string) $this;
|
108 |
+
}
|
109 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/DocModel.php
ADDED
@@ -0,0 +1,102 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Encapsulates the documentation strings for a given service-version and
|
7 |
+
* provides methods for extracting the desired parts related to a service,
|
8 |
+
* operation, error, or shape (i.e., parameter).
|
9 |
+
*/
|
10 |
+
class DocModel
|
11 |
+
{
|
12 |
+
/** @var array */
|
13 |
+
private $docs;
|
14 |
+
/**
|
15 |
+
* @param array $docs
|
16 |
+
*
|
17 |
+
* @throws \RuntimeException
|
18 |
+
*/
|
19 |
+
public function __construct(array $docs)
|
20 |
+
{
|
21 |
+
if (!\extension_loaded('tidy')) {
|
22 |
+
throw new \RuntimeException('The "tidy" PHP extension is required.');
|
23 |
+
}
|
24 |
+
$this->docs = $docs;
|
25 |
+
}
|
26 |
+
/**
|
27 |
+
* Convert the doc model to an array.
|
28 |
+
*
|
29 |
+
* @return array
|
30 |
+
*/
|
31 |
+
public function toArray()
|
32 |
+
{
|
33 |
+
return $this->docs;
|
34 |
+
}
|
35 |
+
/**
|
36 |
+
* Retrieves documentation about the service.
|
37 |
+
*
|
38 |
+
* @return null|string
|
39 |
+
*/
|
40 |
+
public function getServiceDocs()
|
41 |
+
{
|
42 |
+
return isset($this->docs['service']) ? $this->docs['service'] : null;
|
43 |
+
}
|
44 |
+
/**
|
45 |
+
* Retrieves documentation about an operation.
|
46 |
+
*
|
47 |
+
* @param string $operation Name of the operation
|
48 |
+
*
|
49 |
+
* @return null|string
|
50 |
+
*/
|
51 |
+
public function getOperationDocs($operation)
|
52 |
+
{
|
53 |
+
return isset($this->docs['operations'][$operation]) ? $this->docs['operations'][$operation] : null;
|
54 |
+
}
|
55 |
+
/**
|
56 |
+
* Retrieves documentation about an error.
|
57 |
+
*
|
58 |
+
* @param string $error Name of the error
|
59 |
+
*
|
60 |
+
* @return null|string
|
61 |
+
*/
|
62 |
+
public function getErrorDocs($error)
|
63 |
+
{
|
64 |
+
return isset($this->docs['shapes'][$error]['base']) ? $this->docs['shapes'][$error]['base'] : null;
|
65 |
+
}
|
66 |
+
/**
|
67 |
+
* Retrieves documentation about a shape, specific to the context.
|
68 |
+
*
|
69 |
+
* @param string $shapeName Name of the shape.
|
70 |
+
* @param string $parentName Name of the parent/context shape.
|
71 |
+
* @param string $ref Name used by the context to reference the shape.
|
72 |
+
*
|
73 |
+
* @return null|string
|
74 |
+
*/
|
75 |
+
public function getShapeDocs($shapeName, $parentName, $ref)
|
76 |
+
{
|
77 |
+
if (!isset($this->docs['shapes'][$shapeName])) {
|
78 |
+
return '';
|
79 |
+
}
|
80 |
+
$result = '';
|
81 |
+
$d = $this->docs['shapes'][$shapeName];
|
82 |
+
if (isset($d['refs']["{$parentName}\${$ref}"])) {
|
83 |
+
$result = $d['refs']["{$parentName}\${$ref}"];
|
84 |
+
} elseif (isset($d['base'])) {
|
85 |
+
$result = $d['base'];
|
86 |
+
}
|
87 |
+
if (isset($d['append'])) {
|
88 |
+
$result .= $d['append'];
|
89 |
+
}
|
90 |
+
return $this->clean($result);
|
91 |
+
}
|
92 |
+
private function clean($content)
|
93 |
+
{
|
94 |
+
if (!$content) {
|
95 |
+
return '';
|
96 |
+
}
|
97 |
+
$tidy = new \tidy();
|
98 |
+
$tidy->parseString($content, ['indent' => \true, 'doctype' => 'omit', 'output-html' => \true, 'show-body-only' => \true, 'drop-empty-paras' => \true, 'drop-font-tags' => \true, 'drop-proprietary-attributes' => \true, 'hide-comments' => \true, 'logical-emphasis' => \true]);
|
99 |
+
$tidy->cleanRepair();
|
100 |
+
return (string) $content;
|
101 |
+
}
|
102 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/AbstractErrorParser.php
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\ErrorParser;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\Parser\MetadataParserTrait;
|
6 |
+
use WPStaging\Vendor\Aws\Api\Parser\PayloadParserTrait;
|
7 |
+
use WPStaging\Vendor\Aws\Api\Service;
|
8 |
+
use WPStaging\Vendor\Aws\Api\StructureShape;
|
9 |
+
use WPStaging\Vendor\Aws\CommandInterface;
|
10 |
+
use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
|
11 |
+
abstract class AbstractErrorParser
|
12 |
+
{
|
13 |
+
use MetadataParserTrait;
|
14 |
+
use PayloadParserTrait;
|
15 |
+
/**
|
16 |
+
* @var Service
|
17 |
+
*/
|
18 |
+
protected $api;
|
19 |
+
/**
|
20 |
+
* @param Service $api
|
21 |
+
*/
|
22 |
+
public function __construct(\WPStaging\Vendor\Aws\Api\Service $api = null)
|
23 |
+
{
|
24 |
+
$this->api = $api;
|
25 |
+
}
|
26 |
+
protected abstract function payload(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\Api\StructureShape $member);
|
27 |
+
protected function extractPayload(\WPStaging\Vendor\Aws\Api\StructureShape $member, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response)
|
28 |
+
{
|
29 |
+
if ($member instanceof \WPStaging\Vendor\Aws\Api\StructureShape) {
|
30 |
+
// Structure members parse top-level data into a specific key.
|
31 |
+
return $this->payload($response, $member);
|
32 |
+
} else {
|
33 |
+
// Streaming data is just the stream from the response body.
|
34 |
+
return $response->getBody();
|
35 |
+
}
|
36 |
+
}
|
37 |
+
protected function populateShape(array &$data, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\CommandInterface $command = null)
|
38 |
+
{
|
39 |
+
$data['body'] = [];
|
40 |
+
if (!empty($command) && !empty($this->api)) {
|
41 |
+
// If modeled error code is indicated, check for known error shape
|
42 |
+
if (!empty($data['code'])) {
|
43 |
+
$errors = $this->api->getOperation($command->getName())->getErrors();
|
44 |
+
foreach ($errors as $key => $error) {
|
45 |
+
// If error code matches a known error shape, populate the body
|
46 |
+
if ($data['code'] == $error['name'] && $error instanceof \WPStaging\Vendor\Aws\Api\StructureShape) {
|
47 |
+
$modeledError = $error;
|
48 |
+
$data['body'] = $this->extractPayload($modeledError, $response);
|
49 |
+
$data['error_shape'] = $modeledError;
|
50 |
+
foreach ($error->getMembers() as $name => $member) {
|
51 |
+
switch ($member['location']) {
|
52 |
+
case 'header':
|
53 |
+
$this->extractHeader($name, $member, $response, $data['body']);
|
54 |
+
break;
|
55 |
+
case 'headers':
|
56 |
+
$this->extractHeaders($name, $member, $response, $data['body']);
|
57 |
+
break;
|
58 |
+
case 'statusCode':
|
59 |
+
$this->extractStatus($name, $response, $data['body']);
|
60 |
+
break;
|
61 |
+
}
|
62 |
+
}
|
63 |
+
break;
|
64 |
+
}
|
65 |
+
}
|
66 |
+
}
|
67 |
+
}
|
68 |
+
return $data;
|
69 |
+
}
|
70 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/JsonParserTrait.php
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\ErrorParser;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\Parser\PayloadParserTrait;
|
6 |
+
use WPStaging\Vendor\Aws\Api\StructureShape;
|
7 |
+
use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
|
8 |
+
/**
|
9 |
+
* Provides basic JSON error parsing functionality.
|
10 |
+
*/
|
11 |
+
trait JsonParserTrait
|
12 |
+
{
|
13 |
+
use PayloadParserTrait;
|
14 |
+
private function genericHandler(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response)
|
15 |
+
{
|
16 |
+
$code = (string) $response->getStatusCode();
|
17 |
+
return ['request_id' => (string) $response->getHeaderLine('x-amzn-requestid'), 'code' => null, 'message' => null, 'type' => $code[0] == '4' ? 'client' : 'server', 'parsed' => $this->parseJson($response->getBody(), $response)];
|
18 |
+
}
|
19 |
+
protected function payload(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\Api\StructureShape $member)
|
20 |
+
{
|
21 |
+
$jsonBody = $this->parseJson($response->getBody(), $response);
|
22 |
+
if ($jsonBody) {
|
23 |
+
return $this->parser->parse($member, $jsonBody);
|
24 |
+
}
|
25 |
+
}
|
26 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/JsonRpcErrorParser.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\ErrorParser;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\Parser\JsonParser;
|
6 |
+
use WPStaging\Vendor\Aws\Api\Service;
|
7 |
+
use WPStaging\Vendor\Aws\CommandInterface;
|
8 |
+
use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
|
9 |
+
/**
|
10 |
+
* Parsers JSON-RPC errors.
|
11 |
+
*/
|
12 |
+
class JsonRpcErrorParser extends \WPStaging\Vendor\Aws\Api\ErrorParser\AbstractErrorParser
|
13 |
+
{
|
14 |
+
use JsonParserTrait;
|
15 |
+
private $parser;
|
16 |
+
public function __construct(\WPStaging\Vendor\Aws\Api\Service $api = null, \WPStaging\Vendor\Aws\Api\Parser\JsonParser $parser = null)
|
17 |
+
{
|
18 |
+
parent::__construct($api);
|
19 |
+
$this->parser = $parser ?: new \WPStaging\Vendor\Aws\Api\Parser\JsonParser();
|
20 |
+
}
|
21 |
+
public function __invoke(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\CommandInterface $command = null)
|
22 |
+
{
|
23 |
+
$data = $this->genericHandler($response);
|
24 |
+
// Make the casing consistent across services.
|
25 |
+
if ($data['parsed']) {
|
26 |
+
$data['parsed'] = \array_change_key_case($data['parsed']);
|
27 |
+
}
|
28 |
+
if (isset($data['parsed']['__type'])) {
|
29 |
+
$parts = \explode('#', $data['parsed']['__type']);
|
30 |
+
$data['code'] = isset($parts[1]) ? $parts[1] : $parts[0];
|
31 |
+
$data['message'] = isset($data['parsed']['message']) ? $data['parsed']['message'] : null;
|
32 |
+
}
|
33 |
+
$this->populateShape($data, $response, $command);
|
34 |
+
return $data;
|
35 |
+
}
|
36 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/RestJsonErrorParser.php
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\ErrorParser;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\Parser\JsonParser;
|
6 |
+
use WPStaging\Vendor\Aws\Api\Service;
|
7 |
+
use WPStaging\Vendor\Aws\Api\StructureShape;
|
8 |
+
use WPStaging\Vendor\Aws\CommandInterface;
|
9 |
+
use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
|
10 |
+
/**
|
11 |
+
* Parses JSON-REST errors.
|
12 |
+
*/
|
13 |
+
class RestJsonErrorParser extends \WPStaging\Vendor\Aws\Api\ErrorParser\AbstractErrorParser
|
14 |
+
{
|
15 |
+
use JsonParserTrait;
|
16 |
+
private $parser;
|
17 |
+
public function __construct(\WPStaging\Vendor\Aws\Api\Service $api = null, \WPStaging\Vendor\Aws\Api\Parser\JsonParser $parser = null)
|
18 |
+
{
|
19 |
+
parent::__construct($api);
|
20 |
+
$this->parser = $parser ?: new \WPStaging\Vendor\Aws\Api\Parser\JsonParser();
|
21 |
+
}
|
22 |
+
public function __invoke(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\CommandInterface $command = null)
|
23 |
+
{
|
24 |
+
$data = $this->genericHandler($response);
|
25 |
+
// Merge in error data from the JSON body
|
26 |
+
if ($json = $data['parsed']) {
|
27 |
+
$data = \array_replace($data, $json);
|
28 |
+
}
|
29 |
+
// Correct error type from services like Amazon Glacier
|
30 |
+
if (!empty($data['type'])) {
|
31 |
+
$data['type'] = \strtolower($data['type']);
|
32 |
+
}
|
33 |
+
// Retrieve the error code from services like Amazon Elastic Transcoder
|
34 |
+
if ($code = $response->getHeaderLine('x-amzn-errortype')) {
|
35 |
+
$colon = \strpos($code, ':');
|
36 |
+
$data['code'] = $colon ? \substr($code, 0, $colon) : $code;
|
37 |
+
}
|
38 |
+
// Retrieve error message directly
|
39 |
+
$data['message'] = isset($data['parsed']['message']) ? $data['parsed']['message'] : (isset($data['parsed']['Message']) ? $data['parsed']['Message'] : null);
|
40 |
+
$this->populateShape($data, $response, $command);
|
41 |
+
return $data;
|
42 |
+
}
|
43 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/XmlErrorParser.php
ADDED
@@ -0,0 +1,82 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\ErrorParser;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\Parser\PayloadParserTrait;
|
6 |
+
use WPStaging\Vendor\Aws\Api\Parser\XmlParser;
|
7 |
+
use WPStaging\Vendor\Aws\Api\Service;
|
8 |
+
use WPStaging\Vendor\Aws\Api\StructureShape;
|
9 |
+
use WPStaging\Vendor\Aws\CommandInterface;
|
10 |
+
use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
|
11 |
+
/**
|
12 |
+
* Parses XML errors.
|
13 |
+
*/
|
14 |
+
class XmlErrorParser extends \WPStaging\Vendor\Aws\Api\ErrorParser\AbstractErrorParser
|
15 |
+
{
|
16 |
+
use PayloadParserTrait;
|
17 |
+
protected $parser;
|
18 |
+
public function __construct(\WPStaging\Vendor\Aws\Api\Service $api = null, \WPStaging\Vendor\Aws\Api\Parser\XmlParser $parser = null)
|
19 |
+
{
|
20 |
+
parent::__construct($api);
|
21 |
+
$this->parser = $parser ?: new \WPStaging\Vendor\Aws\Api\Parser\XmlParser();
|
22 |
+
}
|
23 |
+
public function __invoke(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\CommandInterface $command = null)
|
24 |
+
{
|
25 |
+
$code = (string) $response->getStatusCode();
|
26 |
+
$data = ['type' => $code[0] == '4' ? 'client' : 'server', 'request_id' => null, 'code' => null, 'message' => null, 'parsed' => null];
|
27 |
+
$body = $response->getBody();
|
28 |
+
if ($body->getSize() > 0) {
|
29 |
+
$this->parseBody($this->parseXml($body, $response), $data);
|
30 |
+
} else {
|
31 |
+
$this->parseHeaders($response, $data);
|
32 |
+
}
|
33 |
+
$this->populateShape($data, $response, $command);
|
34 |
+
return $data;
|
35 |
+
}
|
36 |
+
private function parseHeaders(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, array &$data)
|
37 |
+
{
|
38 |
+
if ($response->getStatusCode() == '404') {
|
39 |
+
$data['code'] = 'NotFound';
|
40 |
+
}
|
41 |
+
$data['message'] = $response->getStatusCode() . ' ' . $response->getReasonPhrase();
|
42 |
+
if ($requestId = $response->getHeaderLine('x-amz-request-id')) {
|
43 |
+
$data['request_id'] = $requestId;
|
44 |
+
$data['message'] .= " (Request-ID: {$requestId})";
|
45 |
+
}
|
46 |
+
}
|
47 |
+
private function parseBody(\SimpleXMLElement $body, array &$data)
|
48 |
+
{
|
49 |
+
$data['parsed'] = $body;
|
50 |
+
$prefix = $this->registerNamespacePrefix($body);
|
51 |
+
if ($tempXml = $body->xpath("//{$prefix}Code[1]")) {
|
52 |
+
$data['code'] = (string) $tempXml[0];
|
53 |
+
}
|
54 |
+
if ($tempXml = $body->xpath("//{$prefix}Message[1]")) {
|
55 |
+
$data['message'] = (string) $tempXml[0];
|
56 |
+
}
|
57 |
+
$tempXml = $body->xpath("//{$prefix}RequestId[1]");
|
58 |
+
if (isset($tempXml[0])) {
|
59 |
+
$data['request_id'] = (string) $tempXml[0];
|
60 |
+
}
|
61 |
+
}
|
62 |
+
protected function registerNamespacePrefix(\SimpleXMLElement $element)
|
63 |
+
{
|
64 |
+
$namespaces = $element->getDocNamespaces();
|
65 |
+
if (!isset($namespaces[''])) {
|
66 |
+
return '';
|
67 |
+
}
|
68 |
+
// Account for the default namespace being defined and PHP not
|
69 |
+
// being able to handle it :(.
|
70 |
+
$element->registerXPathNamespace('ns', $namespaces['']);
|
71 |
+
return 'ns:';
|
72 |
+
}
|
73 |
+
protected function payload(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\Api\StructureShape $member)
|
74 |
+
{
|
75 |
+
$xmlBody = $this->parseXml($response->getBody(), $response);
|
76 |
+
$prefix = $this->registerNamespacePrefix($xmlBody);
|
77 |
+
$errorBody = $xmlBody->xpath("//{$prefix}Error");
|
78 |
+
if (\is_array($errorBody) && !empty($errorBody[0])) {
|
79 |
+
return $this->parser->parse($member, $errorBody[0]);
|
80 |
+
}
|
81 |
+
}
|
82 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/ListShape.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Represents a list shape.
|
7 |
+
*/
|
8 |
+
class ListShape extends \WPStaging\Vendor\Aws\Api\Shape
|
9 |
+
{
|
10 |
+
private $member;
|
11 |
+
public function __construct(array $definition, \WPStaging\Vendor\Aws\Api\ShapeMap $shapeMap)
|
12 |
+
{
|
13 |
+
$definition['type'] = 'list';
|
14 |
+
parent::__construct($definition, $shapeMap);
|
15 |
+
}
|
16 |
+
/**
|
17 |
+
* @return Shape
|
18 |
+
* @throws \RuntimeException if no member is specified
|
19 |
+
*/
|
20 |
+
public function getMember()
|
21 |
+
{
|
22 |
+
if (!$this->member) {
|
23 |
+
if (!isset($this->definition['member'])) {
|
24 |
+
throw new \RuntimeException('No member attribute specified');
|
25 |
+
}
|
26 |
+
$this->member = \WPStaging\Vendor\Aws\Api\Shape::create($this->definition['member'], $this->shapeMap);
|
27 |
+
}
|
28 |
+
return $this->member;
|
29 |
+
}
|
30 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/MapShape.php
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Represents a map shape.
|
7 |
+
*/
|
8 |
+
class MapShape extends \WPStaging\Vendor\Aws\Api\Shape
|
9 |
+
{
|
10 |
+
/** @var Shape */
|
11 |
+
private $value;
|
12 |
+
/** @var Shape */
|
13 |
+
private $key;
|
14 |
+
public function __construct(array $definition, \WPStaging\Vendor\Aws\Api\ShapeMap $shapeMap)
|
15 |
+
{
|
16 |
+
$definition['type'] = 'map';
|
17 |
+
parent::__construct($definition, $shapeMap);
|
18 |
+
}
|
19 |
+
/**
|
20 |
+
* @return Shape
|
21 |
+
* @throws \RuntimeException if no value is specified
|
22 |
+
*/
|
23 |
+
public function getValue()
|
24 |
+
{
|
25 |
+
if (!$this->value) {
|
26 |
+
if (!isset($this->definition['value'])) {
|
27 |
+
throw new \RuntimeException('No value specified');
|
28 |
+
}
|
29 |
+
$this->value = \WPStaging\Vendor\Aws\Api\Shape::create($this->definition['value'], $this->shapeMap);
|
30 |
+
}
|
31 |
+
return $this->value;
|
32 |
+
}
|
33 |
+
/**
|
34 |
+
* @return Shape
|
35 |
+
*/
|
36 |
+
public function getKey()
|
37 |
+
{
|
38 |
+
if (!$this->key) {
|
39 |
+
$this->key = isset($this->definition['key']) ? \WPStaging\Vendor\Aws\Api\Shape::create($this->definition['key'], $this->shapeMap) : new \WPStaging\Vendor\Aws\Api\Shape(['type' => 'string'], $this->shapeMap);
|
40 |
+
}
|
41 |
+
return $this->key;
|
42 |
+
}
|
43 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Operation.php
ADDED
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Represents an API operation.
|
7 |
+
*/
|
8 |
+
class Operation extends \WPStaging\Vendor\Aws\Api\AbstractModel
|
9 |
+
{
|
10 |
+
private $input;
|
11 |
+
private $output;
|
12 |
+
private $errors;
|
13 |
+
public function __construct(array $definition, \WPStaging\Vendor\Aws\Api\ShapeMap $shapeMap)
|
14 |
+
{
|
15 |
+
$definition['type'] = 'structure';
|
16 |
+
if (!isset($definition['http']['method'])) {
|
17 |
+
$definition['http']['method'] = 'POST';
|
18 |
+
}
|
19 |
+
if (!isset($definition['http']['requestUri'])) {
|
20 |
+
$definition['http']['requestUri'] = '/';
|
21 |
+
}
|
22 |
+
parent::__construct($definition, $shapeMap);
|
23 |
+
}
|
24 |
+
/**
|
25 |
+
* Returns an associative array of the HTTP attribute of the operation:
|
26 |
+
*
|
27 |
+
* - method: HTTP method of the operation
|
28 |
+
* - requestUri: URI of the request (can include URI template placeholders)
|
29 |
+
*
|
30 |
+
* @return array
|
31 |
+
*/
|
32 |
+
public function getHttp()
|
33 |
+
{
|
34 |
+
return $this->definition['http'];
|
35 |
+
}
|
36 |
+
/**
|
37 |
+
* Get the input shape of the operation.
|
38 |
+
*
|
39 |
+
* @return StructureShape
|
40 |
+
*/
|
41 |
+
public function getInput()
|
42 |
+
{
|
43 |
+
if (!$this->input) {
|
44 |
+
if ($input = $this['input']) {
|
45 |
+
$this->input = $this->shapeFor($input);
|
46 |
+
} else {
|
47 |
+
$this->input = new \WPStaging\Vendor\Aws\Api\StructureShape([], $this->shapeMap);
|
48 |
+
}
|
49 |
+
}
|
50 |
+
return $this->input;
|
51 |
+
}
|
52 |
+
/**
|
53 |
+
* Get the output shape of the operation.
|
54 |
+
*
|
55 |
+
* @return StructureShape
|
56 |
+
*/
|
57 |
+
public function getOutput()
|
58 |
+
{
|
59 |
+
if (!$this->output) {
|
60 |
+
if ($output = $this['output']) {
|
61 |
+
$this->output = $this->shapeFor($output);
|
62 |
+
} else {
|
63 |
+
$this->output = new \WPStaging\Vendor\Aws\Api\StructureShape([], $this->shapeMap);
|
64 |
+
}
|
65 |
+
}
|
66 |
+
return $this->output;
|
67 |
+
}
|
68 |
+
/**
|
69 |
+
* Get an array of operation error shapes.
|
70 |
+
*
|
71 |
+
* @return Shape[]
|
72 |
+
*/
|
73 |
+
public function getErrors()
|
74 |
+
{
|
75 |
+
if ($this->errors === null) {
|
76 |
+
if ($errors = $this['errors']) {
|
77 |
+
foreach ($errors as $key => $error) {
|
78 |
+
$errors[$key] = $this->shapeFor($error);
|
79 |
+
}
|
80 |
+
$this->errors = $errors;
|
81 |
+
} else {
|
82 |
+
$this->errors = [];
|
83 |
+
}
|
84 |
+
}
|
85 |
+
return $this->errors;
|
86 |
+
}
|
87 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/AbstractParser.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Parser;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\Service;
|
6 |
+
use WPStaging\Vendor\Aws\Api\StructureShape;
|
7 |
+
use WPStaging\Vendor\Aws\CommandInterface;
|
8 |
+
use WPStaging\Vendor\Aws\ResultInterface;
|
9 |
+
use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
|
10 |
+
use WPStaging\Vendor\Psr\Http\Message\StreamInterface;
|
11 |
+
/**
|
12 |
+
* @internal
|
13 |
+
*/
|
14 |
+
abstract class AbstractParser
|
15 |
+
{
|
16 |
+
/** @var \Aws\Api\Service Representation of the service API*/
|
17 |
+
protected $api;
|
18 |
+
/** @var callable */
|
19 |
+
protected $parser;
|
20 |
+
/**
|
21 |
+
* @param Service $api Service description.
|
22 |
+
*/
|
23 |
+
public function __construct(\WPStaging\Vendor\Aws\Api\Service $api)
|
24 |
+
{
|
25 |
+
$this->api = $api;
|
26 |
+
}
|
27 |
+
/**
|
28 |
+
* @param CommandInterface $command Command that was executed.
|
29 |
+
* @param ResponseInterface $response Response that was received.
|
30 |
+
*
|
31 |
+
* @return ResultInterface
|
32 |
+
*/
|
33 |
+
public abstract function __invoke(\WPStaging\Vendor\Aws\CommandInterface $command, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response);
|
34 |
+
public abstract function parseMemberFromStream(\WPStaging\Vendor\Psr\Http\Message\StreamInterface $stream, \WPStaging\Vendor\Aws\Api\StructureShape $member, $response);
|
35 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/AbstractRestParser.php
ADDED
@@ -0,0 +1,140 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Parser;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\DateTimeResult;
|
6 |
+
use WPStaging\Vendor\Aws\Api\Shape;
|
7 |
+
use WPStaging\Vendor\Aws\Api\StructureShape;
|
8 |
+
use WPStaging\Vendor\Aws\Result;
|
9 |
+
use WPStaging\Vendor\Aws\CommandInterface;
|
10 |
+
use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
|
11 |
+
/**
|
12 |
+
* @internal
|
13 |
+
*/
|
14 |
+
abstract class AbstractRestParser extends \WPStaging\Vendor\Aws\Api\Parser\AbstractParser
|
15 |
+
{
|
16 |
+
use PayloadParserTrait;
|
17 |
+
/**
|
18 |
+
* Parses a payload from a response.
|
19 |
+
*
|
20 |
+
* @param ResponseInterface $response Response to parse.
|
21 |
+
* @param StructureShape $member Member to parse
|
22 |
+
* @param array $result Result value
|
23 |
+
*
|
24 |
+
* @return mixed
|
25 |
+
*/
|
26 |
+
protected abstract function payload(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\Api\StructureShape $member, array &$result);
|
27 |
+
public function __invoke(\WPStaging\Vendor\Aws\CommandInterface $command, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response)
|
28 |
+
{
|
29 |
+
$output = $this->api->getOperation($command->getName())->getOutput();
|
30 |
+
$result = [];
|
31 |
+
if ($payload = $output['payload']) {
|
32 |
+
$this->extractPayload($payload, $output, $response, $result);
|
33 |
+
}
|
34 |
+
foreach ($output->getMembers() as $name => $member) {
|
35 |
+
switch ($member['location']) {
|
36 |
+
case 'header':
|
37 |
+
$this->extractHeader($name, $member, $response, $result);
|
38 |
+
break;
|
39 |
+
case 'headers':
|
40 |
+
$this->extractHeaders($name, $member, $response, $result);
|
41 |
+
break;
|
42 |
+
case 'statusCode':
|
43 |
+
$this->extractStatus($name, $response, $result);
|
44 |
+
break;
|
45 |
+
}
|
46 |
+
}
|
47 |
+
if (!$payload && $response->getBody()->getSize() > 0 && \count($output->getMembers()) > 0) {
|
48 |
+
// if no payload was found, then parse the contents of the body
|
49 |
+
$this->payload($response, $output, $result);
|
50 |
+
}
|
51 |
+
return new \WPStaging\Vendor\Aws\Result($result);
|
52 |
+
}
|
53 |
+
private function extractPayload($payload, \WPStaging\Vendor\Aws\Api\StructureShape $output, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, array &$result)
|
54 |
+
{
|
55 |
+
$member = $output->getMember($payload);
|
56 |
+
if (!empty($member['eventstream'])) {
|
57 |
+
$result[$payload] = new \WPStaging\Vendor\Aws\Api\Parser\EventParsingIterator($response->getBody(), $member, $this);
|
58 |
+
} else {
|
59 |
+
if ($member instanceof \WPStaging\Vendor\Aws\Api\StructureShape) {
|
60 |
+
// Structure members parse top-level data into a specific key.
|
61 |
+
$result[$payload] = [];
|
62 |
+
$this->payload($response, $member, $result[$payload]);
|
63 |
+
} else {
|
64 |
+
// Streaming data is just the stream from the response body.
|
65 |
+
$result[$payload] = $response->getBody();
|
66 |
+
}
|
67 |
+
}
|
68 |
+
}
|
69 |
+
/**
|
70 |
+
* Extract a single header from the response into the result.
|
71 |
+
*/
|
72 |
+
private function extractHeader($name, \WPStaging\Vendor\Aws\Api\Shape $shape, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, &$result)
|
73 |
+
{
|
74 |
+
$value = $response->getHeaderLine($shape['locationName'] ?: $name);
|
75 |
+
switch ($shape->getType()) {
|
76 |
+
case 'float':
|
77 |
+
case 'double':
|
78 |
+
$value = (float) $value;
|
79 |
+
break;
|
80 |
+
case 'long':
|
81 |
+
$value = (int) $value;
|
82 |
+
break;
|
83 |
+
case 'boolean':
|
84 |
+
$value = \filter_var($value, \FILTER_VALIDATE_BOOLEAN);
|
85 |
+
break;
|
86 |
+
case 'blob':
|
87 |
+
$value = \base64_decode($value);
|
88 |
+
break;
|
89 |
+
case 'timestamp':
|
90 |
+
try {
|
91 |
+
$value = \WPStaging\Vendor\Aws\Api\DateTimeResult::fromTimestamp($value, !empty($shape['timestampFormat']) ? $shape['timestampFormat'] : null);
|
92 |
+
break;
|
93 |
+
} catch (\Exception $e) {
|
94 |
+
// If the value cannot be parsed, then do not add it to the
|
95 |
+
// output structure.
|
96 |
+
return;
|
97 |
+
}
|
98 |
+
case 'string':
|
99 |
+
try {
|
100 |
+
if ($shape['jsonvalue']) {
|
101 |
+
$value = $this->parseJson(\base64_decode($value), $response);
|
102 |
+
}
|
103 |
+
// If value is not set, do not add to output structure.
|
104 |
+
if (!isset($value)) {
|
105 |
+
return;
|
106 |
+
}
|
107 |
+
break;
|
108 |
+
} catch (\Exception $e) {
|
109 |
+
//If the value cannot be parsed, then do not add it to the
|
110 |
+
//output structure.
|
111 |
+
return;
|
112 |
+
}
|
113 |
+
}
|
114 |
+
$result[$name] = $value;
|
115 |
+
}
|
116 |
+
/**
|
117 |
+
* Extract a map of headers with an optional prefix from the response.
|
118 |
+
*/
|
119 |
+
private function extractHeaders($name, \WPStaging\Vendor\Aws\Api\Shape $shape, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, &$result)
|
120 |
+
{
|
121 |
+
// Check if the headers are prefixed by a location name
|
122 |
+
$result[$name] = [];
|
123 |
+
$prefix = $shape['locationName'];
|
124 |
+
$prefixLen = \strlen($prefix);
|
125 |
+
foreach ($response->getHeaders() as $k => $values) {
|
126 |
+
if (!$prefixLen) {
|
127 |
+
$result[$name][$k] = \implode(', ', $values);
|
128 |
+
} elseif (\stripos($k, $prefix) === 0) {
|
129 |
+
$result[$name][\substr($k, $prefixLen)] = \implode(', ', $values);
|
130 |
+
}
|
131 |
+
}
|
132 |
+
}
|
133 |
+
/**
|
134 |
+
* Places the status code of the response into the result array.
|
135 |
+
*/
|
136 |
+
private function extractStatus($name, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, array &$result)
|
137 |
+
{
|
138 |
+
$result[$name] = (int) $response->getStatusCode();
|
139 |
+
}
|
140 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/Crc32ValidatingParser.php
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Parser;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\StructureShape;
|
6 |
+
use WPStaging\Vendor\Aws\CommandInterface;
|
7 |
+
use WPStaging\Vendor\Aws\Exception\AwsException;
|
8 |
+
use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
|
9 |
+
use WPStaging\Vendor\Psr\Http\Message\StreamInterface;
|
10 |
+
use WPStaging\Vendor\GuzzleHttp\Psr7;
|
11 |
+
/**
|
12 |
+
* @internal Decorates a parser and validates the x-amz-crc32 header.
|
13 |
+
*/
|
14 |
+
class Crc32ValidatingParser extends \WPStaging\Vendor\Aws\Api\Parser\AbstractParser
|
15 |
+
{
|
16 |
+
/**
|
17 |
+
* @param callable $parser Parser to wrap.
|
18 |
+
*/
|
19 |
+
public function __construct(callable $parser)
|
20 |
+
{
|
21 |
+
$this->parser = $parser;
|
22 |
+
}
|
23 |
+
public function __invoke(\WPStaging\Vendor\Aws\CommandInterface $command, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response)
|
24 |
+
{
|
25 |
+
if ($expected = $response->getHeaderLine('x-amz-crc32')) {
|
26 |
+
$hash = \hexdec(\WPStaging\Vendor\GuzzleHttp\Psr7\Utils::hash($response->getBody(), 'crc32b'));
|
27 |
+
if ($expected != $hash) {
|
28 |
+
throw new \WPStaging\Vendor\Aws\Exception\AwsException("crc32 mismatch. Expected {$expected}, found {$hash}.", $command, ['code' => 'ClientChecksumMismatch', 'connection_error' => \true, 'response' => $response]);
|
29 |
+
}
|
30 |
+
}
|
31 |
+
$fn = $this->parser;
|
32 |
+
return $fn($command, $response);
|
33 |
+
}
|
34 |
+
public function parseMemberFromStream(\WPStaging\Vendor\Psr\Http\Message\StreamInterface $stream, \WPStaging\Vendor\Aws\Api\StructureShape $member, $response)
|
35 |
+
{
|
36 |
+
return $this->parser->parseMemberFromStream($stream, $member, $response);
|
37 |
+
}
|
38 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/DecodingEventStreamIterator.php
ADDED
@@ -0,0 +1,246 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Parser;
|
4 |
+
|
5 |
+
use Iterator;
|
6 |
+
use WPStaging\Vendor\Aws\Api\DateTimeResult;
|
7 |
+
use WPStaging\Vendor\GuzzleHttp\Psr7;
|
8 |
+
use WPStaging\Vendor\Psr\Http\Message\StreamInterface;
|
9 |
+
use WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException;
|
10 |
+
/**
|
11 |
+
* @internal Implements a decoder for a binary encoded event stream that will
|
12 |
+
* decode, validate, and provide individual events from the stream.
|
13 |
+
*/
|
14 |
+
class DecodingEventStreamIterator implements \Iterator
|
15 |
+
{
|
16 |
+
const HEADERS = 'headers';
|
17 |
+
const PAYLOAD = 'payload';
|
18 |
+
const LENGTH_TOTAL = 'total_length';
|
19 |
+
const LENGTH_HEADERS = 'headers_length';
|
20 |
+
const CRC_PRELUDE = 'prelude_crc';
|
21 |
+
const BYTES_PRELUDE = 12;
|
22 |
+
const BYTES_TRAILING = 4;
|
23 |
+
private static $preludeFormat = [self::LENGTH_TOTAL => 'decodeUint32', self::LENGTH_HEADERS => 'decodeUint32', self::CRC_PRELUDE => 'decodeUint32'];
|
24 |
+
private static $lengthFormatMap = [1 => 'decodeUint8', 2 => 'decodeUint16', 4 => 'decodeUint32', 8 => 'decodeUint64'];
|
25 |
+
private static $headerTypeMap = [0 => 'decodeBooleanTrue', 1 => 'decodeBooleanFalse', 2 => 'decodeInt8', 3 => 'decodeInt16', 4 => 'decodeInt32', 5 => 'decodeInt64', 6 => 'decodeBytes', 7 => 'decodeString', 8 => 'decodeTimestamp', 9 => 'decodeUuid'];
|
26 |
+
/** @var StreamInterface Stream of eventstream shape to parse. */
|
27 |
+
private $stream;
|
28 |
+
/** @var array Currently parsed event. */
|
29 |
+
private $currentEvent;
|
30 |
+
/** @var int Current in-order event key. */
|
31 |
+
private $key;
|
32 |
+
/** @var resource|\HashContext CRC32 hash context for event validation */
|
33 |
+
private $hashContext;
|
34 |
+
/** @var int $currentPosition */
|
35 |
+
private $currentPosition;
|
36 |
+
/**
|
37 |
+
* DecodingEventStreamIterator constructor.
|
38 |
+
*
|
39 |
+
* @param StreamInterface $stream
|
40 |
+
*/
|
41 |
+
public function __construct(\WPStaging\Vendor\Psr\Http\Message\StreamInterface $stream)
|
42 |
+
{
|
43 |
+
$this->stream = $stream;
|
44 |
+
$this->rewind();
|
45 |
+
}
|
46 |
+
private function parseHeaders($headerBytes)
|
47 |
+
{
|
48 |
+
$headers = [];
|
49 |
+
$bytesRead = 0;
|
50 |
+
while ($bytesRead < $headerBytes) {
|
51 |
+
list($key, $numBytes) = $this->decodeString(1);
|
52 |
+
$bytesRead += $numBytes;
|
53 |
+
list($type, $numBytes) = $this->decodeUint8();
|
54 |
+
$bytesRead += $numBytes;
|
55 |
+
$f = self::$headerTypeMap[$type];
|
56 |
+
list($value, $numBytes) = $this->{$f}();
|
57 |
+
$bytesRead += $numBytes;
|
58 |
+
if (isset($headers[$key])) {
|
59 |
+
throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Duplicate key in event headers.');
|
60 |
+
}
|
61 |
+
$headers[$key] = $value;
|
62 |
+
}
|
63 |
+
return [$headers, $bytesRead];
|
64 |
+
}
|
65 |
+
private function parsePrelude()
|
66 |
+
{
|
67 |
+
$prelude = [];
|
68 |
+
$bytesRead = 0;
|
69 |
+
$calculatedCrc = null;
|
70 |
+
foreach (self::$preludeFormat as $key => $decodeFunction) {
|
71 |
+
if ($key === self::CRC_PRELUDE) {
|
72 |
+
$hashCopy = \hash_copy($this->hashContext);
|
73 |
+
$calculatedCrc = \hash_final($this->hashContext, \true);
|
74 |
+
$this->hashContext = $hashCopy;
|
75 |
+
}
|
76 |
+
list($value, $numBytes) = $this->{$decodeFunction}();
|
77 |
+
$bytesRead += $numBytes;
|
78 |
+
$prelude[$key] = $value;
|
79 |
+
}
|
80 |
+
if (\unpack('N', $calculatedCrc)[1] !== $prelude[self::CRC_PRELUDE]) {
|
81 |
+
throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Prelude checksum mismatch.');
|
82 |
+
}
|
83 |
+
return [$prelude, $bytesRead];
|
84 |
+
}
|
85 |
+
private function parseEvent()
|
86 |
+
{
|
87 |
+
$event = [];
|
88 |
+
if ($this->stream->tell() < $this->stream->getSize()) {
|
89 |
+
$this->hashContext = \hash_init('crc32b');
|
90 |
+
$bytesLeft = $this->stream->getSize() - $this->stream->tell();
|
91 |
+
list($prelude, $numBytes) = $this->parsePrelude();
|
92 |
+
if ($prelude[self::LENGTH_TOTAL] > $bytesLeft) {
|
93 |
+
throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Message length too long.');
|
94 |
+
}
|
95 |
+
$bytesLeft -= $numBytes;
|
96 |
+
if ($prelude[self::LENGTH_HEADERS] > $bytesLeft) {
|
97 |
+
throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Headers length too long.');
|
98 |
+
}
|
99 |
+
list($event[self::HEADERS], $numBytes) = $this->parseHeaders($prelude[self::LENGTH_HEADERS]);
|
100 |
+
$event[self::PAYLOAD] = \WPStaging\Vendor\GuzzleHttp\Psr7\Utils::streamFor($this->readAndHashBytes($prelude[self::LENGTH_TOTAL] - self::BYTES_PRELUDE - $numBytes - self::BYTES_TRAILING));
|
101 |
+
$calculatedCrc = \hash_final($this->hashContext, \true);
|
102 |
+
$messageCrc = $this->stream->read(4);
|
103 |
+
if ($calculatedCrc !== $messageCrc) {
|
104 |
+
throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Message checksum mismatch.');
|
105 |
+
}
|
106 |
+
}
|
107 |
+
return $event;
|
108 |
+
}
|
109 |
+
// Iterator Functionality
|
110 |
+
/**
|
111 |
+
* @return array
|
112 |
+
*/
|
113 |
+
#[\ReturnTypeWillChange]
|
114 |
+
public function current()
|
115 |
+
{
|
116 |
+
return $this->currentEvent;
|
117 |
+
}
|
118 |
+
/**
|
119 |
+
* @return int
|
120 |
+
*/
|
121 |
+
#[\ReturnTypeWillChange]
|
122 |
+
public function key()
|
123 |
+
{
|
124 |
+
return $this->key;
|
125 |
+
}
|
126 |
+
#[\ReturnTypeWillChange]
|
127 |
+
public function next()
|
128 |
+
{
|
129 |
+
$this->currentPosition = $this->stream->tell();
|
130 |
+
if ($this->valid()) {
|
131 |
+
$this->key++;
|
132 |
+
$this->currentEvent = $this->parseEvent();
|
133 |
+
}
|
134 |
+
}
|
135 |
+
#[\ReturnTypeWillChange]
|
136 |
+
public function rewind()
|
137 |
+
{
|
138 |
+
$this->stream->rewind();
|
139 |
+
$this->key = 0;
|
140 |
+
$this->currentPosition = 0;
|
141 |
+
$this->currentEvent = $this->parseEvent();
|
142 |
+
}
|
143 |
+
/**
|
144 |
+
* @return bool
|
145 |
+
*/
|
146 |
+
#[\ReturnTypeWillChange]
|
147 |
+
public function valid()
|
148 |
+
{
|
149 |
+
return $this->currentPosition < $this->stream->getSize();
|
150 |
+
}
|
151 |
+
// Decoding Utilities
|
152 |
+
private function readAndHashBytes($num)
|
153 |
+
{
|
154 |
+
$bytes = $this->stream->read($num);
|
155 |
+
\hash_update($this->hashContext, $bytes);
|
156 |
+
return $bytes;
|
157 |
+
}
|
158 |
+
private function decodeBooleanTrue()
|
159 |
+
{
|
160 |
+
return [\true, 0];
|
161 |
+
}
|
162 |
+
private function decodeBooleanFalse()
|
163 |
+
{
|
164 |
+
return [\false, 0];
|
165 |
+
}
|
166 |
+
private function uintToInt($val, $size)
|
167 |
+
{
|
168 |
+
$signedCap = \pow(2, $size - 1);
|
169 |
+
if ($val > $signedCap) {
|
170 |
+
$val -= 2 * $signedCap;
|
171 |
+
}
|
172 |
+
return $val;
|
173 |
+
}
|
174 |
+
private function decodeInt8()
|
175 |
+
{
|
176 |
+
$val = (int) \unpack('C', $this->readAndHashBytes(1))[1];
|
177 |
+
return [$this->uintToInt($val, 8), 1];
|
178 |
+
}
|
179 |
+
private function decodeUint8()
|
180 |
+
{
|
181 |
+
return [\unpack('C', $this->readAndHashBytes(1))[1], 1];
|
182 |
+
}
|
183 |
+
private function decodeInt16()
|
184 |
+
{
|
185 |
+
$val = (int) \unpack('n', $this->readAndHashBytes(2))[1];
|
186 |
+
return [$this->uintToInt($val, 16), 2];
|
187 |
+
}
|
188 |
+
private function decodeUint16()
|
189 |
+
{
|
190 |
+
return [\unpack('n', $this->readAndHashBytes(2))[1], 2];
|
191 |
+
}
|
192 |
+
private function decodeInt32()
|
193 |
+
{
|
194 |
+
$val = (int) \unpack('N', $this->readAndHashBytes(4))[1];
|
195 |
+
return [$this->uintToInt($val, 32), 4];
|
196 |
+
}
|
197 |
+
private function decodeUint32()
|
198 |
+
{
|
199 |
+
return [\unpack('N', $this->readAndHashBytes(4))[1], 4];
|
200 |
+
}
|
201 |
+
private function decodeInt64()
|
202 |
+
{
|
203 |
+
$val = $this->unpackInt64($this->readAndHashBytes(8))[1];
|
204 |
+
return [$this->uintToInt($val, 64), 8];
|
205 |
+
}
|
206 |
+
private function decodeUint64()
|
207 |
+
{
|
208 |
+
return [$this->unpackInt64($this->readAndHashBytes(8))[1], 8];
|
209 |
+
}
|
210 |
+
private function unpackInt64($bytes)
|
211 |
+
{
|
212 |
+
if (\version_compare(\PHP_VERSION, '5.6.3', '<')) {
|
213 |
+
$d = \unpack('N2', $bytes);
|
214 |
+
return [1 => $d[1] << 32 | $d[2]];
|
215 |
+
}
|
216 |
+
return \unpack('J', $bytes);
|
217 |
+
}
|
218 |
+
private function decodeBytes($lengthBytes = 2)
|
219 |
+
{
|
220 |
+
if (!isset(self::$lengthFormatMap[$lengthBytes])) {
|
221 |
+
throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Undefined variable length format.');
|
222 |
+
}
|
223 |
+
$f = self::$lengthFormatMap[$lengthBytes];
|
224 |
+
list($len, $bytes) = $this->{$f}();
|
225 |
+
return [$this->readAndHashBytes($len), $len + $bytes];
|
226 |
+
}
|
227 |
+
private function decodeString($lengthBytes = 2)
|
228 |
+
{
|
229 |
+
if (!isset(self::$lengthFormatMap[$lengthBytes])) {
|
230 |
+
throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Undefined variable length format.');
|
231 |
+
}
|
232 |
+
$f = self::$lengthFormatMap[$lengthBytes];
|
233 |
+
list($len, $bytes) = $this->{$f}();
|
234 |
+
return [$this->readAndHashBytes($len), $len + $bytes];
|
235 |
+
}
|
236 |
+
private function decodeTimestamp()
|
237 |
+
{
|
238 |
+
list($val, $bytes) = $this->decodeInt64();
|
239 |
+
return [\WPStaging\Vendor\Aws\Api\DateTimeResult::createFromFormat('U.u', $val / 1000), $bytes];
|
240 |
+
}
|
241 |
+
private function decodeUuid()
|
242 |
+
{
|
243 |
+
$val = \unpack('H32', $this->readAndHashBytes(16))[1];
|
244 |
+
return [\substr($val, 0, 8) . '-' . \substr($val, 8, 4) . '-' . \substr($val, 12, 4) . '-' . \substr($val, 16, 4) . '-' . \substr($val, 20, 12), 16];
|
245 |
+
}
|
246 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/EventParsingIterator.php
ADDED
@@ -0,0 +1,86 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Parser;
|
4 |
+
|
5 |
+
use Iterator;
|
6 |
+
use WPStaging\Vendor\Aws\Exception\EventStreamDataException;
|
7 |
+
use WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException;
|
8 |
+
use WPStaging\Vendor\Aws\Api\StructureShape;
|
9 |
+
use WPStaging\Vendor\Psr\Http\Message\StreamInterface;
|
10 |
+
/**
|
11 |
+
* @internal Implements a decoder for a binary encoded event stream that will
|
12 |
+
* decode, validate, and provide individual events from the stream.
|
13 |
+
*/
|
14 |
+
class EventParsingIterator implements \Iterator
|
15 |
+
{
|
16 |
+
/** @var StreamInterface */
|
17 |
+
private $decodingIterator;
|
18 |
+
/** @var StructureShape */
|
19 |
+
private $shape;
|
20 |
+
/** @var AbstractParser */
|
21 |
+
private $parser;
|
22 |
+
public function __construct(\WPStaging\Vendor\Psr\Http\Message\StreamInterface $stream, \WPStaging\Vendor\Aws\Api\StructureShape $shape, \WPStaging\Vendor\Aws\Api\Parser\AbstractParser $parser)
|
23 |
+
{
|
24 |
+
$this->decodingIterator = new \WPStaging\Vendor\Aws\Api\Parser\DecodingEventStreamIterator($stream);
|
25 |
+
$this->shape = $shape;
|
26 |
+
$this->parser = $parser;
|
27 |
+
}
|
28 |
+
#[\ReturnTypeWillChange]
|
29 |
+
public function current()
|
30 |
+
{
|
31 |
+
return $this->parseEvent($this->decodingIterator->current());
|
32 |
+
}
|
33 |
+
#[\ReturnTypeWillChange]
|
34 |
+
public function key()
|
35 |
+
{
|
36 |
+
return $this->decodingIterator->key();
|
37 |
+
}
|
38 |
+
#[\ReturnTypeWillChange]
|
39 |
+
public function next()
|
40 |
+
{
|
41 |
+
$this->decodingIterator->next();
|
42 |
+
}
|
43 |
+
#[\ReturnTypeWillChange]
|
44 |
+
public function rewind()
|
45 |
+
{
|
46 |
+
$this->decodingIterator->rewind();
|
47 |
+
}
|
48 |
+
#[\ReturnTypeWillChange]
|
49 |
+
public function valid()
|
50 |
+
{
|
51 |
+
return $this->decodingIterator->valid();
|
52 |
+
}
|
53 |
+
private function parseEvent(array $event)
|
54 |
+
{
|
55 |
+
if (!empty($event['headers'][':message-type'])) {
|
56 |
+
if ($event['headers'][':message-type'] === 'error') {
|
57 |
+
return $this->parseError($event);
|
58 |
+
}
|
59 |
+
if ($event['headers'][':message-type'] !== 'event') {
|
60 |
+
throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Failed to parse unknown message type.');
|
61 |
+
}
|
62 |
+
}
|
63 |
+
if (empty($event['headers'][':event-type'])) {
|
64 |
+
throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Failed to parse without event type.');
|
65 |
+
}
|
66 |
+
$eventShape = $this->shape->getMember($event['headers'][':event-type']);
|
67 |
+
$parsedEvent = [];
|
68 |
+
foreach ($eventShape['members'] as $shape => $details) {
|
69 |
+
if (!empty($details['eventpayload'])) {
|
70 |
+
$payloadShape = $eventShape->getMember($shape);
|
71 |
+
if ($payloadShape['type'] === 'blob') {
|
72 |
+
$parsedEvent[$shape] = $event['payload'];
|
73 |
+
} else {
|
74 |
+
$parsedEvent[$shape] = $this->parser->parseMemberFromStream($event['payload'], $payloadShape, null);
|
75 |
+
}
|
76 |
+
} else {
|
77 |
+
$parsedEvent[$shape] = $event['headers'][$shape];
|
78 |
+
}
|
79 |
+
}
|
80 |
+
return [$event['headers'][':event-type'] => $parsedEvent];
|
81 |
+
}
|
82 |
+
private function parseError(array $event)
|
83 |
+
{
|
84 |
+
throw new \WPStaging\Vendor\Aws\Exception\EventStreamDataException($event['headers'][':error-code'], $event['headers'][':error-message']);
|
85 |
+
}
|
86 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/Exception/ParserException.php
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Parser\Exception;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\HasMonitoringEventsTrait;
|
6 |
+
use WPStaging\Vendor\Aws\MonitoringEventsInterface;
|
7 |
+
use WPStaging\Vendor\Aws\ResponseContainerInterface;
|
8 |
+
use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
|
9 |
+
class ParserException extends \RuntimeException implements \WPStaging\Vendor\Aws\MonitoringEventsInterface, \WPStaging\Vendor\Aws\ResponseContainerInterface
|
10 |
+
{
|
11 |
+
use HasMonitoringEventsTrait;
|
12 |
+
private $errorCode;
|
13 |
+
private $requestId;
|
14 |
+
private $response;
|
15 |
+
public function __construct($message = '', $code = 0, $previous = null, array $context = [])
|
16 |
+
{
|
17 |
+
$this->errorCode = isset($context['error_code']) ? $context['error_code'] : null;
|
18 |
+
$this->requestId = isset($context['request_id']) ? $context['request_id'] : null;
|
19 |
+
$this->response = isset($context['response']) ? $context['response'] : null;
|
20 |
+
parent::__construct($message, $code, $previous);
|
21 |
+
}
|
22 |
+
/**
|
23 |
+
* Get the error code, if any.
|
24 |
+
*
|
25 |
+
* @return string|null
|
26 |
+
*/
|
27 |
+
public function getErrorCode()
|
28 |
+
{
|
29 |
+
return $this->errorCode;
|
30 |
+
}
|
31 |
+
/**
|
32 |
+
* Get the request ID, if any.
|
33 |
+
*
|
34 |
+
* @return string|null
|
35 |
+
*/
|
36 |
+
public function getRequestId()
|
37 |
+
{
|
38 |
+
return $this->requestId;
|
39 |
+
}
|
40 |
+
/**
|
41 |
+
* Get the received HTTP response if any.
|
42 |
+
*
|
43 |
+
* @return ResponseInterface|null
|
44 |
+
*/
|
45 |
+
public function getResponse()
|
46 |
+
{
|
47 |
+
return $this->response;
|
48 |
+
}
|
49 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/JsonParser.php
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Parser;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\DateTimeResult;
|
6 |
+
use WPStaging\Vendor\Aws\Api\Shape;
|
7 |
+
/**
|
8 |
+
* @internal Implements standard JSON parsing.
|
9 |
+
*/
|
10 |
+
class JsonParser
|
11 |
+
{
|
12 |
+
public function parse(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
|
13 |
+
{
|
14 |
+
if ($value === null) {
|
15 |
+
return $value;
|
16 |
+
}
|
17 |
+
switch ($shape['type']) {
|
18 |
+
case 'structure':
|
19 |
+
if (isset($shape['document']) && $shape['document']) {
|
20 |
+
return $value;
|
21 |
+
}
|
22 |
+
$target = [];
|
23 |
+
foreach ($shape->getMembers() as $name => $member) {
|
24 |
+
$locationName = $member['locationName'] ?: $name;
|
25 |
+
if (isset($value[$locationName])) {
|
26 |
+
$target[$name] = $this->parse($member, $value[$locationName]);
|
27 |
+
}
|
28 |
+
}
|
29 |
+
if (isset($shape['union']) && $shape['union'] && \is_array($value) && empty($target)) {
|
30 |
+
foreach ($value as $key => $val) {
|
31 |
+
$target['Unknown'][$key] = $val;
|
32 |
+
}
|
33 |
+
}
|
34 |
+
return $target;
|
35 |
+
case 'list':
|
36 |
+
$member = $shape->getMember();
|
37 |
+
$target = [];
|
38 |
+
foreach ($value as $v) {
|
39 |
+
$target[] = $this->parse($member, $v);
|
40 |
+
}
|
41 |
+
return $target;
|
42 |
+
case 'map':
|
43 |
+
$values = $shape->getValue();
|
44 |
+
$target = [];
|
45 |
+
foreach ($value as $k => $v) {
|
46 |
+
$target[$k] = $this->parse($values, $v);
|
47 |
+
}
|
48 |
+
return $target;
|
49 |
+
case 'timestamp':
|
50 |
+
return \WPStaging\Vendor\Aws\Api\DateTimeResult::fromTimestamp($value, !empty($shape['timestampFormat']) ? $shape['timestampFormat'] : null);
|
51 |
+
case 'blob':
|
52 |
+
return \base64_decode($value);
|
53 |
+
default:
|
54 |
+
return $value;
|
55 |
+
}
|
56 |
+
}
|
57 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/JsonRpcParser.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Parser;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\StructureShape;
|
6 |
+
use WPStaging\Vendor\Aws\Api\Service;
|
7 |
+
use WPStaging\Vendor\Aws\Result;
|
8 |
+
use WPStaging\Vendor\Aws\CommandInterface;
|
9 |
+
use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
|
10 |
+
use WPStaging\Vendor\Psr\Http\Message\StreamInterface;
|
11 |
+
/**
|
12 |
+
* @internal Implements JSON-RPC parsing (e.g., DynamoDB)
|
13 |
+
*/
|
14 |
+
class JsonRpcParser extends \WPStaging\Vendor\Aws\Api\Parser\AbstractParser
|
15 |
+
{
|
16 |
+
use PayloadParserTrait;
|
17 |
+
/**
|
18 |
+
* @param Service $api Service description
|
19 |
+
* @param JsonParser $parser JSON body builder
|
20 |
+
*/
|
21 |
+
public function __construct(\WPStaging\Vendor\Aws\Api\Service $api, \WPStaging\Vendor\Aws\Api\Parser\JsonParser $parser = null)
|
22 |
+
{
|
23 |
+
parent::__construct($api);
|
24 |
+
$this->parser = $parser ?: new \WPStaging\Vendor\Aws\Api\Parser\JsonParser();
|
25 |
+
}
|
26 |
+
public function __invoke(\WPStaging\Vendor\Aws\CommandInterface $command, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response)
|
27 |
+
{
|
28 |
+
$operation = $this->api->getOperation($command->getName());
|
29 |
+
$result = null === $operation['output'] ? null : $this->parseMemberFromStream($response->getBody(), $operation->getOutput(), $response);
|
30 |
+
return new \WPStaging\Vendor\Aws\Result($result ?: []);
|
31 |
+
}
|
32 |
+
public function parseMemberFromStream(\WPStaging\Vendor\Psr\Http\Message\StreamInterface $stream, \WPStaging\Vendor\Aws\Api\StructureShape $member, $response)
|
33 |
+
{
|
34 |
+
return $this->parser->parse($member, $this->parseJson($stream, $response));
|
35 |
+
}
|
36 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/MetadataParserTrait.php
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Parser;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\DateTimeResult;
|
6 |
+
use WPStaging\Vendor\Aws\Api\Shape;
|
7 |
+
use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
|
8 |
+
trait MetadataParserTrait
|
9 |
+
{
|
10 |
+
/**
|
11 |
+
* Extract a single header from the response into the result.
|
12 |
+
*/
|
13 |
+
protected function extractHeader($name, \WPStaging\Vendor\Aws\Api\Shape $shape, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, &$result)
|
14 |
+
{
|
15 |
+
$value = $response->getHeaderLine($shape['locationName'] ?: $name);
|
16 |
+
switch ($shape->getType()) {
|
17 |
+
case 'float':
|
18 |
+
case 'double':
|
19 |
+
$value = (float) $value;
|
20 |
+
break;
|
21 |
+
case 'long':
|
22 |
+
$value = (int) $value;
|
23 |
+
break;
|
24 |
+
case 'boolean':
|
25 |
+
$value = \filter_var($value, \FILTER_VALIDATE_BOOLEAN);
|
26 |
+
break;
|
27 |
+
case 'blob':
|
28 |
+
$value = \base64_decode($value);
|
29 |
+
break;
|
30 |
+
case 'timestamp':
|
31 |
+
try {
|
32 |
+
$value = \WPStaging\Vendor\Aws\Api\DateTimeResult::fromTimestamp($value, !empty($shape['timestampFormat']) ? $shape['timestampFormat'] : null);
|
33 |
+
break;
|
34 |
+
} catch (\Exception $e) {
|
35 |
+
// If the value cannot be parsed, then do not add it to the
|
36 |
+
// output structure.
|
37 |
+
return;
|
38 |
+
}
|
39 |
+
case 'string':
|
40 |
+
if ($shape['jsonvalue']) {
|
41 |
+
$value = $this->parseJson(\base64_decode($value), $response);
|
42 |
+
}
|
43 |
+
break;
|
44 |
+
}
|
45 |
+
$result[$name] = $value;
|
46 |
+
}
|
47 |
+
/**
|
48 |
+
* Extract a map of headers with an optional prefix from the response.
|
49 |
+
*/
|
50 |
+
protected function extractHeaders($name, \WPStaging\Vendor\Aws\Api\Shape $shape, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, &$result)
|
51 |
+
{
|
52 |
+
// Check if the headers are prefixed by a location name
|
53 |
+
$result[$name] = [];
|
54 |
+
$prefix = $shape['locationName'];
|
55 |
+
$prefixLen = \strlen($prefix);
|
56 |
+
foreach ($response->getHeaders() as $k => $values) {
|
57 |
+
if (!$prefixLen) {
|
58 |
+
$result[$name][$k] = \implode(', ', $values);
|
59 |
+
} elseif (\stripos($k, $prefix) === 0) {
|
60 |
+
$result[$name][\substr($k, $prefixLen)] = \implode(', ', $values);
|
61 |
+
}
|
62 |
+
}
|
63 |
+
}
|
64 |
+
/**
|
65 |
+
* Places the status code of the response into the result array.
|
66 |
+
*/
|
67 |
+
protected function extractStatus($name, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, array &$result)
|
68 |
+
{
|
69 |
+
$result[$name] = (int) $response->getStatusCode();
|
70 |
+
}
|
71 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/PayloadParserTrait.php
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Parser;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException;
|
6 |
+
use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
|
7 |
+
trait PayloadParserTrait
|
8 |
+
{
|
9 |
+
/**
|
10 |
+
* @param string $json
|
11 |
+
*
|
12 |
+
* @throws ParserException
|
13 |
+
*
|
14 |
+
* @return array
|
15 |
+
*/
|
16 |
+
private function parseJson($json, $response)
|
17 |
+
{
|
18 |
+
$jsonPayload = \json_decode($json, \true);
|
19 |
+
if (\JSON_ERROR_NONE !== \json_last_error()) {
|
20 |
+
throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Error parsing JSON: ' . \json_last_error_msg(), 0, null, ['response' => $response]);
|
21 |
+
}
|
22 |
+
return $jsonPayload;
|
23 |
+
}
|
24 |
+
/**
|
25 |
+
* @param string $xml
|
26 |
+
*
|
27 |
+
* @throws ParserException
|
28 |
+
*
|
29 |
+
* @return \SimpleXMLElement
|
30 |
+
*/
|
31 |
+
protected function parseXml($xml, $response)
|
32 |
+
{
|
33 |
+
$priorSetting = \libxml_use_internal_errors(\true);
|
34 |
+
try {
|
35 |
+
\libxml_clear_errors();
|
36 |
+
$xmlPayload = new \SimpleXMLElement($xml);
|
37 |
+
if ($error = \libxml_get_last_error()) {
|
38 |
+
throw new \RuntimeException($error->message);
|
39 |
+
}
|
40 |
+
} catch (\Exception $e) {
|
41 |
+
throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException("Error parsing XML: {$e->getMessage()}", 0, $e, ['response' => $response]);
|
42 |
+
} finally {
|
43 |
+
\libxml_use_internal_errors($priorSetting);
|
44 |
+
}
|
45 |
+
return $xmlPayload;
|
46 |
+
}
|
47 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/QueryParser.php
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Parser;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\Service;
|
6 |
+
use WPStaging\Vendor\Aws\Api\StructureShape;
|
7 |
+
use WPStaging\Vendor\Aws\Result;
|
8 |
+
use WPStaging\Vendor\Aws\CommandInterface;
|
9 |
+
use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
|
10 |
+
use WPStaging\Vendor\Psr\Http\Message\StreamInterface;
|
11 |
+
/**
|
12 |
+
* @internal Parses query (XML) responses (e.g., EC2, SQS, and many others)
|
13 |
+
*/
|
14 |
+
class QueryParser extends \WPStaging\Vendor\Aws\Api\Parser\AbstractParser
|
15 |
+
{
|
16 |
+
use PayloadParserTrait;
|
17 |
+
/** @var bool */
|
18 |
+
private $honorResultWrapper;
|
19 |
+
/**
|
20 |
+
* @param Service $api Service description
|
21 |
+
* @param XmlParser $xmlParser Optional XML parser
|
22 |
+
* @param bool $honorResultWrapper Set to false to disable the peeling
|
23 |
+
* back of result wrappers from the
|
24 |
+
* output structure.
|
25 |
+
*/
|
26 |
+
public function __construct(\WPStaging\Vendor\Aws\Api\Service $api, \WPStaging\Vendor\Aws\Api\Parser\XmlParser $xmlParser = null, $honorResultWrapper = \true)
|
27 |
+
{
|
28 |
+
parent::__construct($api);
|
29 |
+
$this->parser = $xmlParser ?: new \WPStaging\Vendor\Aws\Api\Parser\XmlParser();
|
30 |
+
$this->honorResultWrapper = $honorResultWrapper;
|
31 |
+
}
|
32 |
+
public function __invoke(\WPStaging\Vendor\Aws\CommandInterface $command, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response)
|
33 |
+
{
|
34 |
+
$output = $this->api->getOperation($command->getName())->getOutput();
|
35 |
+
$xml = $this->parseXml($response->getBody(), $response);
|
36 |
+
if ($this->honorResultWrapper && $output['resultWrapper']) {
|
37 |
+
$xml = $xml->{$output['resultWrapper']};
|
38 |
+
}
|
39 |
+
return new \WPStaging\Vendor\Aws\Result($this->parser->parse($output, $xml));
|
40 |
+
}
|
41 |
+
public function parseMemberFromStream(\WPStaging\Vendor\Psr\Http\Message\StreamInterface $stream, \WPStaging\Vendor\Aws\Api\StructureShape $member, $response)
|
42 |
+
{
|
43 |
+
$xml = $this->parseXml($stream, $response);
|
44 |
+
return $this->parser->parse($member, $xml);
|
45 |
+
}
|
46 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/RestJsonParser.php
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Parser;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\Service;
|
6 |
+
use WPStaging\Vendor\Aws\Api\StructureShape;
|
7 |
+
use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
|
8 |
+
use WPStaging\Vendor\Psr\Http\Message\StreamInterface;
|
9 |
+
/**
|
10 |
+
* @internal Implements REST-JSON parsing (e.g., Glacier, Elastic Transcoder)
|
11 |
+
*/
|
12 |
+
class RestJsonParser extends \WPStaging\Vendor\Aws\Api\Parser\AbstractRestParser
|
13 |
+
{
|
14 |
+
use PayloadParserTrait;
|
15 |
+
/**
|
16 |
+
* @param Service $api Service description
|
17 |
+
* @param JsonParser $parser JSON body builder
|
18 |
+
*/
|
19 |
+
public function __construct(\WPStaging\Vendor\Aws\Api\Service $api, \WPStaging\Vendor\Aws\Api\Parser\JsonParser $parser = null)
|
20 |
+
{
|
21 |
+
parent::__construct($api);
|
22 |
+
$this->parser = $parser ?: new \WPStaging\Vendor\Aws\Api\Parser\JsonParser();
|
23 |
+
}
|
24 |
+
protected function payload(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\Api\StructureShape $member, array &$result)
|
25 |
+
{
|
26 |
+
$jsonBody = $this->parseJson($response->getBody(), $response);
|
27 |
+
if ($jsonBody) {
|
28 |
+
$result += $this->parser->parse($member, $jsonBody);
|
29 |
+
}
|
30 |
+
}
|
31 |
+
public function parseMemberFromStream(\WPStaging\Vendor\Psr\Http\Message\StreamInterface $stream, \WPStaging\Vendor\Aws\Api\StructureShape $member, $response)
|
32 |
+
{
|
33 |
+
$jsonBody = $this->parseJson($stream, $response);
|
34 |
+
if ($jsonBody) {
|
35 |
+
return $this->parser->parse($member, $jsonBody);
|
36 |
+
}
|
37 |
+
return [];
|
38 |
+
}
|
39 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/RestXmlParser.php
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Parser;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\StructureShape;
|
6 |
+
use WPStaging\Vendor\Aws\Api\Service;
|
7 |
+
use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
|
8 |
+
use WPStaging\Vendor\Psr\Http\Message\StreamInterface;
|
9 |
+
/**
|
10 |
+
* @internal Implements REST-XML parsing (e.g., S3, CloudFront, etc...)
|
11 |
+
*/
|
12 |
+
class RestXmlParser extends \WPStaging\Vendor\Aws\Api\Parser\AbstractRestParser
|
13 |
+
{
|
14 |
+
use PayloadParserTrait;
|
15 |
+
/**
|
16 |
+
* @param Service $api Service description
|
17 |
+
* @param XmlParser $parser XML body parser
|
18 |
+
*/
|
19 |
+
public function __construct(\WPStaging\Vendor\Aws\Api\Service $api, \WPStaging\Vendor\Aws\Api\Parser\XmlParser $parser = null)
|
20 |
+
{
|
21 |
+
parent::__construct($api);
|
22 |
+
$this->parser = $parser ?: new \WPStaging\Vendor\Aws\Api\Parser\XmlParser();
|
23 |
+
}
|
24 |
+
protected function payload(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\Api\StructureShape $member, array &$result)
|
25 |
+
{
|
26 |
+
$result += $this->parseMemberFromStream($response->getBody(), $member, $response);
|
27 |
+
}
|
28 |
+
public function parseMemberFromStream(\WPStaging\Vendor\Psr\Http\Message\StreamInterface $stream, \WPStaging\Vendor\Aws\Api\StructureShape $member, $response)
|
29 |
+
{
|
30 |
+
$xml = $this->parseXml($stream, $response);
|
31 |
+
return $this->parser->parse($member, $xml);
|
32 |
+
}
|
33 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/XmlParser.php
ADDED
@@ -0,0 +1,125 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Parser;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\DateTimeResult;
|
6 |
+
use WPStaging\Vendor\Aws\Api\ListShape;
|
7 |
+
use WPStaging\Vendor\Aws\Api\MapShape;
|
8 |
+
use WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException;
|
9 |
+
use WPStaging\Vendor\Aws\Api\Shape;
|
10 |
+
use WPStaging\Vendor\Aws\Api\StructureShape;
|
11 |
+
/**
|
12 |
+
* @internal Implements standard XML parsing for REST-XML and Query protocols.
|
13 |
+
*/
|
14 |
+
class XmlParser
|
15 |
+
{
|
16 |
+
public function parse(\WPStaging\Vendor\Aws\Api\StructureShape $shape, \SimpleXMLElement $value)
|
17 |
+
{
|
18 |
+
return $this->dispatch($shape, $value);
|
19 |
+
}
|
20 |
+
private function dispatch($shape, \SimpleXMLElement $value)
|
21 |
+
{
|
22 |
+
static $methods = ['structure' => 'parse_structure', 'list' => 'parse_list', 'map' => 'parse_map', 'blob' => 'parse_blob', 'boolean' => 'parse_boolean', 'integer' => 'parse_integer', 'float' => 'parse_float', 'double' => 'parse_float', 'timestamp' => 'parse_timestamp'];
|
23 |
+
$type = $shape['type'];
|
24 |
+
if (isset($methods[$type])) {
|
25 |
+
return $this->{$methods[$type]}($shape, $value);
|
26 |
+
}
|
27 |
+
return (string) $value;
|
28 |
+
}
|
29 |
+
private function parse_structure(\WPStaging\Vendor\Aws\Api\StructureShape $shape, \SimpleXMLElement $value)
|
30 |
+
{
|
31 |
+
$target = [];
|
32 |
+
foreach ($shape->getMembers() as $name => $member) {
|
33 |
+
// Extract the name of the XML node
|
34 |
+
$node = $this->memberKey($member, $name);
|
35 |
+
if (isset($value->{$node})) {
|
36 |
+
$target[$name] = $this->dispatch($member, $value->{$node});
|
37 |
+
} else {
|
38 |
+
$memberShape = $shape->getMember($name);
|
39 |
+
if (!empty($memberShape['xmlAttribute'])) {
|
40 |
+
$target[$name] = $this->parse_xml_attribute($shape, $memberShape, $value);
|
41 |
+
}
|
42 |
+
}
|
43 |
+
}
|
44 |
+
if (isset($shape['union']) && $shape['union'] && empty($target)) {
|
45 |
+
foreach ($value as $key => $val) {
|
46 |
+
$name = $val->children()->getName();
|
47 |
+
$target['Unknown'][$name] = $val->{$name};
|
48 |
+
}
|
49 |
+
}
|
50 |
+
return $target;
|
51 |
+
}
|
52 |
+
private function memberKey(\WPStaging\Vendor\Aws\Api\Shape $shape, $name)
|
53 |
+
{
|
54 |
+
if (null !== $shape['locationName']) {
|
55 |
+
return $shape['locationName'];
|
56 |
+
}
|
57 |
+
if ($shape instanceof \WPStaging\Vendor\Aws\Api\ListShape && $shape['flattened']) {
|
58 |
+
return $shape->getMember()['locationName'] ?: $name;
|
59 |
+
}
|
60 |
+
return $name;
|
61 |
+
}
|
62 |
+
private function parse_list(\WPStaging\Vendor\Aws\Api\ListShape $shape, \SimpleXMLElement $value)
|
63 |
+
{
|
64 |
+
$target = [];
|
65 |
+
$member = $shape->getMember();
|
66 |
+
if (!$shape['flattened']) {
|
67 |
+
$value = $value->{$member['locationName'] ?: 'member'};
|
68 |
+
}
|
69 |
+
foreach ($value as $v) {
|
70 |
+
$target[] = $this->dispatch($member, $v);
|
71 |
+
}
|
72 |
+
return $target;
|
73 |
+
}
|
74 |
+
private function parse_map(\WPStaging\Vendor\Aws\Api\MapShape $shape, \SimpleXMLElement $value)
|
75 |
+
{
|
76 |
+
$target = [];
|
77 |
+
if (!$shape['flattened']) {
|
78 |
+
$value = $value->entry;
|
79 |
+
}
|
80 |
+
$mapKey = $shape->getKey();
|
81 |
+
$mapValue = $shape->getValue();
|
82 |
+
$keyName = $shape->getKey()['locationName'] ?: 'key';
|
83 |
+
$valueName = $shape->getValue()['locationName'] ?: 'value';
|
84 |
+
foreach ($value as $node) {
|
85 |
+
$key = $this->dispatch($mapKey, $node->{$keyName});
|
86 |
+
$value = $this->dispatch($mapValue, $node->{$valueName});
|
87 |
+
$target[$key] = $value;
|
88 |
+
}
|
89 |
+
return $target;
|
90 |
+
}
|
91 |
+
private function parse_blob(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
|
92 |
+
{
|
93 |
+
return \base64_decode((string) $value);
|
94 |
+
}
|
95 |
+
private function parse_float(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
|
96 |
+
{
|
97 |
+
return (float) (string) $value;
|
98 |
+
}
|
99 |
+
private function parse_integer(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
|
100 |
+
{
|
101 |
+
return (int) (string) $value;
|
102 |
+
}
|
103 |
+
private function parse_boolean(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
|
104 |
+
{
|
105 |
+
return $value == 'true';
|
106 |
+
}
|
107 |
+
private function parse_timestamp(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
|
108 |
+
{
|
109 |
+
if (\is_string($value) || \is_int($value) || \is_object($value) && \method_exists($value, '__toString')) {
|
110 |
+
return \WPStaging\Vendor\Aws\Api\DateTimeResult::fromTimestamp((string) $value, !empty($shape['timestampFormat']) ? $shape['timestampFormat'] : null);
|
111 |
+
}
|
112 |
+
throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Invalid timestamp value passed to XmlParser::parse_timestamp');
|
113 |
+
}
|
114 |
+
private function parse_xml_attribute(\WPStaging\Vendor\Aws\Api\Shape $shape, \WPStaging\Vendor\Aws\Api\Shape $memberShape, $value)
|
115 |
+
{
|
116 |
+
$namespace = $shape['xmlNamespace']['uri'] ? $shape['xmlNamespace']['uri'] : '';
|
117 |
+
$prefix = $shape['xmlNamespace']['prefix'] ? $shape['xmlNamespace']['prefix'] : '';
|
118 |
+
if (!empty($prefix)) {
|
119 |
+
$prefix .= ':';
|
120 |
+
}
|
121 |
+
$key = \str_replace($prefix, '', $memberShape['locationName']);
|
122 |
+
$attributes = $value->attributes($namespace);
|
123 |
+
return isset($attributes[$key]) ? (string) $attributes[$key] : null;
|
124 |
+
}
|
125 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/Ec2ParamBuilder.php
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Serializer;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\Shape;
|
6 |
+
use WPStaging\Vendor\Aws\Api\ListShape;
|
7 |
+
/**
|
8 |
+
* @internal
|
9 |
+
*/
|
10 |
+
class Ec2ParamBuilder extends \WPStaging\Vendor\Aws\Api\Serializer\QueryParamBuilder
|
11 |
+
{
|
12 |
+
protected function queryName(\WPStaging\Vendor\Aws\Api\Shape $shape, $default = null)
|
13 |
+
{
|
14 |
+
return ($shape['queryName'] ?: \ucfirst(@$shape['locationName'] ?: "")) ?: $default;
|
15 |
+
}
|
16 |
+
protected function isFlat(\WPStaging\Vendor\Aws\Api\Shape $shape)
|
17 |
+
{
|
18 |
+
return \false;
|
19 |
+
}
|
20 |
+
protected function format_list(\WPStaging\Vendor\Aws\Api\ListShape $shape, array $value, $prefix, &$query)
|
21 |
+
{
|
22 |
+
// Handle empty list serialization
|
23 |
+
if (!$value) {
|
24 |
+
$query[$prefix] = \false;
|
25 |
+
} else {
|
26 |
+
$items = $shape->getMember();
|
27 |
+
foreach ($value as $k => $v) {
|
28 |
+
$this->format($items, $v, $prefix . '.' . ($k + 1), $query);
|
29 |
+
}
|
30 |
+
}
|
31 |
+
}
|
32 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/JsonBody.php
ADDED
@@ -0,0 +1,86 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Serializer;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\Service;
|
6 |
+
use WPStaging\Vendor\Aws\Api\Shape;
|
7 |
+
use WPStaging\Vendor\Aws\Api\TimestampShape;
|
8 |
+
use WPStaging\Vendor\Aws\Exception\InvalidJsonException;
|
9 |
+
/**
|
10 |
+
* Formats the JSON body of a JSON-REST or JSON-RPC operation.
|
11 |
+
* @internal
|
12 |
+
*/
|
13 |
+
class JsonBody
|
14 |
+
{
|
15 |
+
private $api;
|
16 |
+
public function __construct(\WPStaging\Vendor\Aws\Api\Service $api)
|
17 |
+
{
|
18 |
+
$this->api = $api;
|
19 |
+
}
|
20 |
+
/**
|
21 |
+
* Gets the JSON Content-Type header for a service API
|
22 |
+
*
|
23 |
+
* @param Service $service
|
24 |
+
*
|
25 |
+
* @return string
|
26 |
+
*/
|
27 |
+
public static function getContentType(\WPStaging\Vendor\Aws\Api\Service $service)
|
28 |
+
{
|
29 |
+
return 'application/x-amz-json-' . \number_format($service->getMetadata('jsonVersion'), 1);
|
30 |
+
}
|
31 |
+
/**
|
32 |
+
* Builds the JSON body based on an array of arguments.
|
33 |
+
*
|
34 |
+
* @param Shape $shape Operation being constructed
|
35 |
+
* @param array $args Associative array of arguments
|
36 |
+
*
|
37 |
+
* @return string
|
38 |
+
*/
|
39 |
+
public function build(\WPStaging\Vendor\Aws\Api\Shape $shape, array $args)
|
40 |
+
{
|
41 |
+
$result = \json_encode($this->format($shape, $args));
|
42 |
+
return $result == '[]' ? '{}' : $result;
|
43 |
+
}
|
44 |
+
private function format(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
|
45 |
+
{
|
46 |
+
switch ($shape['type']) {
|
47 |
+
case 'structure':
|
48 |
+
$data = [];
|
49 |
+
if (isset($shape['document']) && $shape['document']) {
|
50 |
+
return $value;
|
51 |
+
}
|
52 |
+
foreach ($value as $k => $v) {
|
53 |
+
if ($v !== null && $shape->hasMember($k)) {
|
54 |
+
$valueShape = $shape->getMember($k);
|
55 |
+
$data[$valueShape['locationName'] ?: $k] = $this->format($valueShape, $v);
|
56 |
+
}
|
57 |
+
}
|
58 |
+
if (empty($data)) {
|
59 |
+
return new \stdClass();
|
60 |
+
}
|
61 |
+
return $data;
|
62 |
+
case 'list':
|
63 |
+
$items = $shape->getMember();
|
64 |
+
foreach ($value as $k => $v) {
|
65 |
+
$value[$k] = $this->format($items, $v);
|
66 |
+
}
|
67 |
+
return $value;
|
68 |
+
case 'map':
|
69 |
+
if (empty($value)) {
|
70 |
+
return new \stdClass();
|
71 |
+
}
|
72 |
+
$values = $shape->getValue();
|
73 |
+
foreach ($value as $k => $v) {
|
74 |
+
$value[$k] = $this->format($values, $v);
|
75 |
+
}
|
76 |
+
return $value;
|
77 |
+
case 'blob':
|
78 |
+
return \base64_encode($value);
|
79 |
+
case 'timestamp':
|
80 |
+
$timestampFormat = !empty($shape['timestampFormat']) ? $shape['timestampFormat'] : 'unixTimestamp';
|
81 |
+
return \WPStaging\Vendor\Aws\Api\TimestampShape::format($value, $timestampFormat);
|
82 |
+
default:
|
83 |
+
return $value;
|
84 |
+
}
|
85 |
+
}
|
86 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/JsonRpcSerializer.php
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Serializer;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\Service;
|
6 |
+
use WPStaging\Vendor\Aws\CommandInterface;
|
7 |
+
use WPStaging\Vendor\GuzzleHttp\Psr7\Request;
|
8 |
+
use WPStaging\Vendor\Psr\Http\Message\RequestInterface;
|
9 |
+
/**
|
10 |
+
* Prepares a JSON-RPC request for transfer.
|
11 |
+
* @internal
|
12 |
+
*/
|
13 |
+
class JsonRpcSerializer
|
14 |
+
{
|
15 |
+
/** @var JsonBody */
|
16 |
+
private $jsonFormatter;
|
17 |
+
/** @var string */
|
18 |
+
private $endpoint;
|
19 |
+
/** @var Service */
|
20 |
+
private $api;
|
21 |
+
/** @var string */
|
22 |
+
private $contentType;
|
23 |
+
/**
|
24 |
+
* @param Service $api Service description
|
25 |
+
* @param string $endpoint Endpoint to connect to
|
26 |
+
* @param JsonBody $jsonFormatter Optional JSON formatter to use
|
27 |
+
*/
|
28 |
+
public function __construct(\WPStaging\Vendor\Aws\Api\Service $api, $endpoint, \WPStaging\Vendor\Aws\Api\Serializer\JsonBody $jsonFormatter = null)
|
29 |
+
{
|
30 |
+
$this->endpoint = $endpoint;
|
31 |
+
$this->api = $api;
|
32 |
+
$this->jsonFormatter = $jsonFormatter ?: new \WPStaging\Vendor\Aws\Api\Serializer\JsonBody($this->api);
|
33 |
+
$this->contentType = \WPStaging\Vendor\Aws\Api\Serializer\JsonBody::getContentType($api);
|
34 |
+
}
|
35 |
+
/**
|
36 |
+
* When invoked with an AWS command, returns a serialization array
|
37 |
+
* containing "method", "uri", "headers", and "body" key value pairs.
|
38 |
+
*
|
39 |
+
* @param CommandInterface $command
|
40 |
+
*
|
41 |
+
* @return RequestInterface
|
42 |
+
*/
|
43 |
+
public function __invoke(\WPStaging\Vendor\Aws\CommandInterface $command)
|
44 |
+
{
|
45 |
+
$name = $command->getName();
|
46 |
+
$operation = $this->api->getOperation($name);
|
47 |
+
return new \WPStaging\Vendor\GuzzleHttp\Psr7\Request($operation['http']['method'], $this->endpoint, ['X-Amz-Target' => $this->api->getMetadata('targetPrefix') . '.' . $name, 'Content-Type' => $this->contentType], $this->jsonFormatter->build($operation->getInput(), $command->toArray()));
|
48 |
+
}
|
49 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/QueryParamBuilder.php
ADDED
@@ -0,0 +1,112 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Serializer;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\StructureShape;
|
6 |
+
use WPStaging\Vendor\Aws\Api\ListShape;
|
7 |
+
use WPStaging\Vendor\Aws\Api\MapShape;
|
8 |
+
use WPStaging\Vendor\Aws\Api\Shape;
|
9 |
+
use WPStaging\Vendor\Aws\Api\TimestampShape;
|
10 |
+
/**
|
11 |
+
* @internal
|
12 |
+
*/
|
13 |
+
class QueryParamBuilder
|
14 |
+
{
|
15 |
+
private $methods;
|
16 |
+
protected function queryName(\WPStaging\Vendor\Aws\Api\Shape $shape, $default = null)
|
17 |
+
{
|
18 |
+
if (null !== $shape['queryName']) {
|
19 |
+
return $shape['queryName'];
|
20 |
+
}
|
21 |
+
if (null !== $shape['locationName']) {
|
22 |
+
return $shape['locationName'];
|
23 |
+
}
|
24 |
+
if ($this->isFlat($shape) && !empty($shape['member']['locationName'])) {
|
25 |
+
return $shape['member']['locationName'];
|
26 |
+
}
|
27 |
+
return $default;
|
28 |
+
}
|
29 |
+
protected function isFlat(\WPStaging\Vendor\Aws\Api\Shape $shape)
|
30 |
+
{
|
31 |
+
return $shape['flattened'] === \true;
|
32 |
+
}
|
33 |
+
public function __invoke(\WPStaging\Vendor\Aws\Api\StructureShape $shape, array $params)
|
34 |
+
{
|
35 |
+
if (!$this->methods) {
|
36 |
+
$this->methods = \array_fill_keys(\get_class_methods($this), \true);
|
37 |
+
}
|
38 |
+
$query = [];
|
39 |
+
$this->format_structure($shape, $params, '', $query);
|
40 |
+
return $query;
|
41 |
+
}
|
42 |
+
protected function format(\WPStaging\Vendor\Aws\Api\Shape $shape, $value, $prefix, array &$query)
|
43 |
+
{
|
44 |
+
$type = 'format_' . $shape['type'];
|
45 |
+
if (isset($this->methods[$type])) {
|
46 |
+
$this->{$type}($shape, $value, $prefix, $query);
|
47 |
+
} else {
|
48 |
+
$query[$prefix] = (string) $value;
|
49 |
+
}
|
50 |
+
}
|
51 |
+
protected function format_structure(\WPStaging\Vendor\Aws\Api\StructureShape $shape, array $value, $prefix, &$query)
|
52 |
+
{
|
53 |
+
if ($prefix) {
|
54 |
+
$prefix .= '.';
|
55 |
+
}
|
56 |
+
foreach ($value as $k => $v) {
|
57 |
+
if ($shape->hasMember($k)) {
|
58 |
+
$member = $shape->getMember($k);
|
59 |
+
$this->format($member, $v, $prefix . $this->queryName($member, $k), $query);
|
60 |
+
}
|
61 |
+
}
|
62 |
+
}
|
63 |
+
protected function format_list(\WPStaging\Vendor\Aws\Api\ListShape $shape, array $value, $prefix, &$query)
|
64 |
+
{
|
65 |
+
// Handle empty list serialization
|
66 |
+
if (!$value) {
|
67 |
+
$query[$prefix] = '';
|
68 |
+
return;
|
69 |
+
}
|
70 |
+
$items = $shape->getMember();
|
71 |
+
if (!$this->isFlat($shape)) {
|
72 |
+
$locationName = $shape->getMember()['locationName'] ?: 'member';
|
73 |
+
$prefix .= ".{$locationName}";
|
74 |
+
} elseif ($name = $this->queryName($items)) {
|
75 |
+
$parts = \explode('.', $prefix);
|
76 |
+
$parts[\count($parts) - 1] = $name;
|
77 |
+
$prefix = \implode('.', $parts);
|
78 |
+
}
|
79 |
+
foreach ($value as $k => $v) {
|
80 |
+
$this->format($items, $v, $prefix . '.' . ($k + 1), $query);
|
81 |
+
}
|
82 |
+
}
|
83 |
+
protected function format_map(\WPStaging\Vendor\Aws\Api\MapShape $shape, array $value, $prefix, array &$query)
|
84 |
+
{
|
85 |
+
$vals = $shape->getValue();
|
86 |
+
$keys = $shape->getKey();
|
87 |
+
if (!$this->isFlat($shape)) {
|
88 |
+
$prefix .= '.entry';
|
89 |
+
}
|
90 |
+
$i = 0;
|
91 |
+
$keyName = '%s.%d.' . $this->queryName($keys, 'key');
|
92 |
+
$valueName = '%s.%s.' . $this->queryName($vals, 'value');
|
93 |
+
foreach ($value as $k => $v) {
|
94 |
+
$i++;
|
95 |
+
$this->format($keys, $k, \sprintf($keyName, $prefix, $i), $query);
|
96 |
+
$this->format($vals, $v, \sprintf($valueName, $prefix, $i), $query);
|
97 |
+
}
|
98 |
+
}
|
99 |
+
protected function format_blob(\WPStaging\Vendor\Aws\Api\Shape $shape, $value, $prefix, array &$query)
|
100 |
+
{
|
101 |
+
$query[$prefix] = \base64_encode($value);
|
102 |
+
}
|
103 |
+
protected function format_timestamp(\WPStaging\Vendor\Aws\Api\TimestampShape $shape, $value, $prefix, array &$query)
|
104 |
+
{
|
105 |
+
$timestampFormat = !empty($shape['timestampFormat']) ? $shape['timestampFormat'] : 'iso8601';
|
106 |
+
$query[$prefix] = \WPStaging\Vendor\Aws\Api\TimestampShape::format($value, $timestampFormat);
|
107 |
+
}
|
108 |
+
protected function format_boolean(\WPStaging\Vendor\Aws\Api\Shape $shape, $value, $prefix, array &$query)
|
109 |
+
{
|
110 |
+
$query[$prefix] = $value ? 'true' : 'false';
|
111 |
+
}
|
112 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/QuerySerializer.php
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Serializer;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\Service;
|
6 |
+
use WPStaging\Vendor\Aws\CommandInterface;
|
7 |
+
use WPStaging\Vendor\GuzzleHttp\Psr7\Request;
|
8 |
+
use WPStaging\Vendor\Psr\Http\Message\RequestInterface;
|
9 |
+
/**
|
10 |
+
* Serializes a query protocol request.
|
11 |
+
* @internal
|
12 |
+
*/
|
13 |
+
class QuerySerializer
|
14 |
+
{
|
15 |
+
private $endpoint;
|
16 |
+
private $api;
|
17 |
+
private $paramBuilder;
|
18 |
+
public function __construct(\WPStaging\Vendor\Aws\Api\Service $api, $endpoint, callable $paramBuilder = null)
|
19 |
+
{
|
20 |
+
$this->api = $api;
|
21 |
+
$this->endpoint = $endpoint;
|
22 |
+
$this->paramBuilder = $paramBuilder ?: new \WPStaging\Vendor\Aws\Api\Serializer\QueryParamBuilder();
|
23 |
+
}
|
24 |
+
/**
|
25 |
+
* When invoked with an AWS command, returns a serialization array
|
26 |
+
* containing "method", "uri", "headers", and "body" key value pairs.
|
27 |
+
*
|
28 |
+
* @param CommandInterface $command
|
29 |
+
*
|
30 |
+
* @return RequestInterface
|
31 |
+
*/
|
32 |
+
public function __invoke(\WPStaging\Vendor\Aws\CommandInterface $command)
|
33 |
+
{
|
34 |
+
$operation = $this->api->getOperation($command->getName());
|
35 |
+
$body = ['Action' => $command->getName(), 'Version' => $this->api->getMetadata('apiVersion')];
|
36 |
+
$params = $command->toArray();
|
37 |
+
// Only build up the parameters when there are parameters to build
|
38 |
+
if ($params) {
|
39 |
+
$body += \call_user_func($this->paramBuilder, $operation->getInput(), $params);
|
40 |
+
}
|
41 |
+
$body = \http_build_query($body, '', '&', \PHP_QUERY_RFC3986);
|
42 |
+
return new \WPStaging\Vendor\GuzzleHttp\Psr7\Request('POST', $this->endpoint, ['Content-Length' => \strlen($body), 'Content-Type' => 'application/x-www-form-urlencoded'], $body);
|
43 |
+
}
|
44 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/RestJsonSerializer.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Serializer;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\Service;
|
6 |
+
use WPStaging\Vendor\Aws\Api\StructureShape;
|
7 |
+
/**
|
8 |
+
* Serializes requests for the REST-JSON protocol.
|
9 |
+
* @internal
|
10 |
+
*/
|
11 |
+
class RestJsonSerializer extends \WPStaging\Vendor\Aws\Api\Serializer\RestSerializer
|
12 |
+
{
|
13 |
+
/** @var JsonBody */
|
14 |
+
private $jsonFormatter;
|
15 |
+
/** @var string */
|
16 |
+
private $contentType;
|
17 |
+
/**
|
18 |
+
* @param Service $api Service API description
|
19 |
+
* @param string $endpoint Endpoint to connect to
|
20 |
+
* @param JsonBody $jsonFormatter Optional JSON formatter to use
|
21 |
+
*/
|
22 |
+
public function __construct(\WPStaging\Vendor\Aws\Api\Service $api, $endpoint, \WPStaging\Vendor\Aws\Api\Serializer\JsonBody $jsonFormatter = null)
|
23 |
+
{
|
24 |
+
parent::__construct($api, $endpoint);
|
25 |
+
$this->contentType = 'application/json';
|
26 |
+
$this->jsonFormatter = $jsonFormatter ?: new \WPStaging\Vendor\Aws\Api\Serializer\JsonBody($api);
|
27 |
+
}
|
28 |
+
protected function payload(\WPStaging\Vendor\Aws\Api\StructureShape $member, array $value, array &$opts)
|
29 |
+
{
|
30 |
+
$body = isset($value) ? (string) $this->jsonFormatter->build($member, $value) : "{}";
|
31 |
+
$opts['headers']['Content-Type'] = $this->contentType;
|
32 |
+
$opts['body'] = $body;
|
33 |
+
}
|
34 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/RestSerializer.php
ADDED
@@ -0,0 +1,200 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Serializer;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\MapShape;
|
6 |
+
use WPStaging\Vendor\Aws\Api\Service;
|
7 |
+
use WPStaging\Vendor\Aws\Api\Operation;
|
8 |
+
use WPStaging\Vendor\Aws\Api\Shape;
|
9 |
+
use WPStaging\Vendor\Aws\Api\StructureShape;
|
10 |
+
use WPStaging\Vendor\Aws\Api\TimestampShape;
|
11 |
+
use WPStaging\Vendor\Aws\CommandInterface;
|
12 |
+
use WPStaging\Vendor\GuzzleHttp\Psr7;
|
13 |
+
use WPStaging\Vendor\GuzzleHttp\Psr7\Uri;
|
14 |
+
use WPStaging\Vendor\GuzzleHttp\Psr7\UriResolver;
|
15 |
+
use WPStaging\Vendor\Psr\Http\Message\RequestInterface;
|
16 |
+
/**
|
17 |
+
* Serializes HTTP locations like header, uri, payload, etc...
|
18 |
+
* @internal
|
19 |
+
*/
|
20 |
+
abstract class RestSerializer
|
21 |
+
{
|
22 |
+
/** @var Service */
|
23 |
+
private $api;
|
24 |
+
/** @var Psr7\Uri */
|
25 |
+
private $endpoint;
|
26 |
+
/**
|
27 |
+
* @param Service $api Service API description
|
28 |
+
* @param string $endpoint Endpoint to connect to
|
29 |
+
*/
|
30 |
+
public function __construct(\WPStaging\Vendor\Aws\Api\Service $api, $endpoint)
|
31 |
+
{
|
32 |
+
$this->api = $api;
|
33 |
+
$this->endpoint = \WPStaging\Vendor\GuzzleHttp\Psr7\Utils::uriFor($endpoint);
|
34 |
+
}
|
35 |
+
/**
|
36 |
+
* @param CommandInterface $command Command to serialized
|
37 |
+
*
|
38 |
+
* @return RequestInterface
|
39 |
+
*/
|
40 |
+
public function __invoke(\WPStaging\Vendor\Aws\CommandInterface $command)
|
41 |
+
{
|
42 |
+
$operation = $this->api->getOperation($command->getName());
|
43 |
+
$args = $command->toArray();
|
44 |
+
$opts = $this->serialize($operation, $args);
|
45 |
+
$uri = $this->buildEndpoint($operation, $args, $opts);
|
46 |
+
return new \WPStaging\Vendor\GuzzleHttp\Psr7\Request($operation['http']['method'], $uri, isset($opts['headers']) ? $opts['headers'] : [], isset($opts['body']) ? $opts['body'] : null);
|
47 |
+
}
|
48 |
+
/**
|
49 |
+
* Modifies a hash of request options for a payload body.
|
50 |
+
*
|
51 |
+
* @param StructureShape $member Member to serialize
|
52 |
+
* @param array $value Value to serialize
|
53 |
+
* @param array $opts Request options to modify.
|
54 |
+
*/
|
55 |
+
protected abstract function payload(\WPStaging\Vendor\Aws\Api\StructureShape $member, array $value, array &$opts);
|
56 |
+
private function serialize(\WPStaging\Vendor\Aws\Api\Operation $operation, array $args)
|
57 |
+
{
|
58 |
+
$opts = [];
|
59 |
+
$input = $operation->getInput();
|
60 |
+
// Apply the payload trait if present
|
61 |
+
if ($payload = $input['payload']) {
|
62 |
+
$this->applyPayload($input, $payload, $args, $opts);
|
63 |
+
}
|
64 |
+
foreach ($args as $name => $value) {
|
65 |
+
if ($input->hasMember($name)) {
|
66 |
+
$member = $input->getMember($name);
|
67 |
+
$location = $member['location'];
|
68 |
+
if (!$payload && !$location) {
|
69 |
+
$bodyMembers[$name] = $value;
|
70 |
+
} elseif ($location == 'header') {
|
71 |
+
$this->applyHeader($name, $member, $value, $opts);
|
72 |
+
} elseif ($location == 'querystring') {
|
73 |
+
$this->applyQuery($name, $member, $value, $opts);
|
74 |
+
} elseif ($location == 'headers') {
|
75 |
+
$this->applyHeaderMap($name, $member, $value, $opts);
|
76 |
+
}
|
77 |
+
}
|
78 |
+
}
|
79 |
+
if (isset($bodyMembers)) {
|
80 |
+
$this->payload($operation->getInput(), $bodyMembers, $opts);
|
81 |
+
} else {
|
82 |
+
if (!isset($opts['body']) && $this->hasPayloadParam($input, $payload)) {
|
83 |
+
$this->payload($operation->getInput(), [], $opts);
|
84 |
+
}
|
85 |
+
}
|
86 |
+
return $opts;
|
87 |
+
}
|
88 |
+
private function applyPayload(\WPStaging\Vendor\Aws\Api\StructureShape $input, $name, array $args, array &$opts)
|
89 |
+
{
|
90 |
+
if (!isset($args[$name])) {
|
91 |
+
return;
|
92 |
+
}
|
93 |
+
$m = $input->getMember($name);
|
94 |
+
if ($m['streaming'] || ($m['type'] == 'string' || $m['type'] == 'blob')) {
|
95 |
+
// Streaming bodies or payloads that are strings are
|
96 |
+
// always just a stream of data.
|
97 |
+
$opts['body'] = \WPStaging\Vendor\GuzzleHttp\Psr7\Utils::streamFor($args[$name]);
|
98 |
+
return;
|
99 |
+
}
|
100 |
+
$this->payload($m, $args[$name], $opts);
|
101 |
+
}
|
102 |
+
private function applyHeader($name, \WPStaging\Vendor\Aws\Api\Shape $member, $value, array &$opts)
|
103 |
+
{
|
104 |
+
if ($member->getType() === 'timestamp') {
|
105 |
+
$timestampFormat = !empty($member['timestampFormat']) ? $member['timestampFormat'] : 'rfc822';
|
106 |
+
$value = \WPStaging\Vendor\Aws\Api\TimestampShape::format($value, $timestampFormat);
|
107 |
+
} elseif ($member->getType() === 'boolean') {
|
108 |
+
$value = $value ? 'true' : 'false';
|
109 |
+
}
|
110 |
+
if ($member['jsonvalue']) {
|
111 |
+
$value = \json_encode($value);
|
112 |
+
if (empty($value) && \JSON_ERROR_NONE !== \json_last_error()) {
|
113 |
+
throw new \InvalidArgumentException('Unable to encode the provided value' . ' with \'json_encode\'. ' . \json_last_error_msg());
|
114 |
+
}
|
115 |
+
$value = \base64_encode($value);
|
116 |
+
}
|
117 |
+
$opts['headers'][$member['locationName'] ?: $name] = $value;
|
118 |
+
}
|
119 |
+
/**
|
120 |
+
* Note: This is currently only present in the Amazon S3 model.
|
121 |
+
*/
|
122 |
+
private function applyHeaderMap($name, \WPStaging\Vendor\Aws\Api\Shape $member, array $value, array &$opts)
|
123 |
+
{
|
124 |
+
$prefix = $member['locationName'];
|
125 |
+
foreach ($value as $k => $v) {
|
126 |
+
$opts['headers'][$prefix . $k] = $v;
|
127 |
+
}
|
128 |
+
}
|
129 |
+
private function applyQuery($name, \WPStaging\Vendor\Aws\Api\Shape $member, $value, array &$opts)
|
130 |
+
{
|
131 |
+
if ($member instanceof \WPStaging\Vendor\Aws\Api\MapShape) {
|
132 |
+
$opts['query'] = isset($opts['query']) && \is_array($opts['query']) ? $opts['query'] + $value : $value;
|
133 |
+
} elseif ($value !== null) {
|
134 |
+
$type = $member->getType();
|
135 |
+
if ($type === 'boolean') {
|
136 |
+
$value = $value ? 'true' : 'false';
|
137 |
+
} elseif ($type === 'timestamp') {
|
138 |
+
$timestampFormat = !empty($member['timestampFormat']) ? $member['timestampFormat'] : 'iso8601';
|
139 |
+
$value = \WPStaging\Vendor\Aws\Api\TimestampShape::format($value, $timestampFormat);
|
140 |
+
}
|
141 |
+
$opts['query'][$member['locationName'] ?: $name] = $value;
|
142 |
+
}
|
143 |
+
}
|
144 |
+
private function buildEndpoint(\WPStaging\Vendor\Aws\Api\Operation $operation, array $args, array $opts)
|
145 |
+
{
|
146 |
+
$varspecs = [];
|
147 |
+
// Create an associative array of varspecs used in expansions
|
148 |
+
foreach ($operation->getInput()->getMembers() as $name => $member) {
|
149 |
+
if ($member['location'] == 'uri') {
|
150 |
+
$varspecs[$member['locationName'] ?: $name] = isset($args[$name]) ? $args[$name] : null;
|
151 |
+
}
|
152 |
+
}
|
153 |
+
$relative = \preg_replace_callback('/\\{([^\\}]+)\\}/', function (array $matches) use($varspecs) {
|
154 |
+
$isGreedy = \substr($matches[1], -1, 1) == '+';
|
155 |
+
$k = $isGreedy ? \substr($matches[1], 0, -1) : $matches[1];
|
156 |
+
if (!isset($varspecs[$k])) {
|
157 |
+
return '';
|
158 |
+
}
|
159 |
+
if ($isGreedy) {
|
160 |
+
return \str_replace('%2F', '/', \rawurlencode($varspecs[$k]));
|
161 |
+
}
|
162 |
+
return \rawurlencode($varspecs[$k]);
|
163 |
+
}, $operation['http']['requestUri']);
|
164 |
+
// Add the query string variables or appending to one if needed.
|
165 |
+
if (!empty($opts['query'])) {
|
166 |
+
$append = \WPStaging\Vendor\GuzzleHttp\Psr7\Query::build($opts['query']);
|
167 |
+
$relative .= \strpos($relative, '?') ? "&{$append}" : "?{$append}";
|
168 |
+
}
|
169 |
+
// If endpoint has path, remove leading '/' to preserve URI resolution.
|
170 |
+
$path = $this->endpoint->getPath();
|
171 |
+
if ($path && $relative[0] === '/') {
|
172 |
+
$relative = \substr($relative, 1);
|
173 |
+
}
|
174 |
+
// Expand path place holders using Amazon's slightly different URI
|
175 |
+
// template syntax.
|
176 |
+
return \WPStaging\Vendor\GuzzleHttp\Psr7\UriResolver::resolve($this->endpoint, new \WPStaging\Vendor\GuzzleHttp\Psr7\Uri($relative));
|
177 |
+
}
|
178 |
+
/**
|
179 |
+
* @param StructureShape $input
|
180 |
+
*/
|
181 |
+
private function hasPayloadParam(\WPStaging\Vendor\Aws\Api\StructureShape $input, $payload)
|
182 |
+
{
|
183 |
+
if ($payload) {
|
184 |
+
$potentiallyEmptyTypes = ['blob', 'string'];
|
185 |
+
if ($this->api->getMetadata('protocol') == 'rest-xml') {
|
186 |
+
$potentiallyEmptyTypes[] = 'structure';
|
187 |
+
}
|
188 |
+
$payloadMember = $input->getMember($payload);
|
189 |
+
if (\in_array($payloadMember['type'], $potentiallyEmptyTypes)) {
|
190 |
+
return \false;
|
191 |
+
}
|
192 |
+
}
|
193 |
+
foreach ($input->getMembers() as $member) {
|
194 |
+
if (!isset($member['location'])) {
|
195 |
+
return \true;
|
196 |
+
}
|
197 |
+
}
|
198 |
+
return \false;
|
199 |
+
}
|
200 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/RestXmlSerializer.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Serializer;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\StructureShape;
|
6 |
+
use WPStaging\Vendor\Aws\Api\Service;
|
7 |
+
/**
|
8 |
+
* @internal
|
9 |
+
*/
|
10 |
+
class RestXmlSerializer extends \WPStaging\Vendor\Aws\Api\Serializer\RestSerializer
|
11 |
+
{
|
12 |
+
/** @var XmlBody */
|
13 |
+
private $xmlBody;
|
14 |
+
/**
|
15 |
+
* @param Service $api Service API description
|
16 |
+
* @param string $endpoint Endpoint to connect to
|
17 |
+
* @param XmlBody $xmlBody Optional XML formatter to use
|
18 |
+
*/
|
19 |
+
public function __construct(\WPStaging\Vendor\Aws\Api\Service $api, $endpoint, \WPStaging\Vendor\Aws\Api\Serializer\XmlBody $xmlBody = null)
|
20 |
+
{
|
21 |
+
parent::__construct($api, $endpoint);
|
22 |
+
$this->xmlBody = $xmlBody ?: new \WPStaging\Vendor\Aws\Api\Serializer\XmlBody($api);
|
23 |
+
}
|
24 |
+
protected function payload(\WPStaging\Vendor\Aws\Api\StructureShape $member, array $value, array &$opts)
|
25 |
+
{
|
26 |
+
$opts['headers']['Content-Type'] = 'application/xml';
|
27 |
+
$opts['body'] = $this->getXmlBody($member, $value);
|
28 |
+
}
|
29 |
+
/**
|
30 |
+
* @param StructureShape $member
|
31 |
+
* @param array $value
|
32 |
+
* @return string
|
33 |
+
*/
|
34 |
+
private function getXmlBody(\WPStaging\Vendor\Aws\Api\StructureShape $member, array $value)
|
35 |
+
{
|
36 |
+
$xmlBody = (string) $this->xmlBody->build($member, $value);
|
37 |
+
$xmlBody = \str_replace("'", "'", $xmlBody);
|
38 |
+
$xmlBody = \str_replace('\\r', " ", $xmlBody);
|
39 |
+
$xmlBody = \str_replace('\\n', " ", $xmlBody);
|
40 |
+
return $xmlBody;
|
41 |
+
}
|
42 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/XmlBody.php
ADDED
@@ -0,0 +1,148 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api\Serializer;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\MapShape;
|
6 |
+
use WPStaging\Vendor\Aws\Api\Service;
|
7 |
+
use WPStaging\Vendor\Aws\Api\Shape;
|
8 |
+
use WPStaging\Vendor\Aws\Api\StructureShape;
|
9 |
+
use WPStaging\Vendor\Aws\Api\ListShape;
|
10 |
+
use WPStaging\Vendor\Aws\Api\TimestampShape;
|
11 |
+
use XMLWriter;
|
12 |
+
/**
|
13 |
+
* @internal Formats the XML body of a REST-XML services.
|
14 |
+
*/
|
15 |
+
class XmlBody
|
16 |
+
{
|
17 |
+
/** @var \Aws\Api\Service */
|
18 |
+
private $api;
|
19 |
+
/**
|
20 |
+
* @param Service $api API being used to create the XML body.
|
21 |
+
*/
|
22 |
+
public function __construct(\WPStaging\Vendor\Aws\Api\Service $api)
|
23 |
+
{
|
24 |
+
$this->api = $api;
|
25 |
+
}
|
26 |
+
/**
|
27 |
+
* Builds the XML body based on an array of arguments.
|
28 |
+
*
|
29 |
+
* @param Shape $shape Operation being constructed
|
30 |
+
* @param array $args Associative array of arguments
|
31 |
+
*
|
32 |
+
* @return string
|
33 |
+
*/
|
34 |
+
public function build(\WPStaging\Vendor\Aws\Api\Shape $shape, array $args)
|
35 |
+
{
|
36 |
+
$xml = new \XMLWriter();
|
37 |
+
$xml->openMemory();
|
38 |
+
$xml->startDocument('1.0', 'UTF-8');
|
39 |
+
$this->format($shape, $shape['locationName'] ?: $shape['name'], $args, $xml);
|
40 |
+
$xml->endDocument();
|
41 |
+
return $xml->outputMemory();
|
42 |
+
}
|
43 |
+
private function startElement(\WPStaging\Vendor\Aws\Api\Shape $shape, $name, \XMLWriter $xml)
|
44 |
+
{
|
45 |
+
$xml->startElement($name);
|
46 |
+
if ($ns = $shape['xmlNamespace']) {
|
47 |
+
$xml->writeAttribute(isset($ns['prefix']) ? "xmlns:{$ns['prefix']}" : 'xmlns', $shape['xmlNamespace']['uri']);
|
48 |
+
}
|
49 |
+
}
|
50 |
+
private function format(\WPStaging\Vendor\Aws\Api\Shape $shape, $name, $value, \XMLWriter $xml)
|
51 |
+
{
|
52 |
+
// Any method mentioned here has a custom serialization handler.
|
53 |
+
static $methods = ['add_structure' => \true, 'add_list' => \true, 'add_blob' => \true, 'add_timestamp' => \true, 'add_boolean' => \true, 'add_map' => \true, 'add_string' => \true];
|
54 |
+
$type = 'add_' . $shape['type'];
|
55 |
+
if (isset($methods[$type])) {
|
56 |
+
$this->{$type}($shape, $name, $value, $xml);
|
57 |
+
} else {
|
58 |
+
$this->defaultShape($shape, $name, $value, $xml);
|
59 |
+
}
|
60 |
+
}
|
61 |
+
private function defaultShape(\WPStaging\Vendor\Aws\Api\Shape $shape, $name, $value, \XMLWriter $xml)
|
62 |
+
{
|
63 |
+
$this->startElement($shape, $name, $xml);
|
64 |
+
$xml->text($value);
|
65 |
+
$xml->endElement();
|
66 |
+
}
|
67 |
+
private function add_structure(\WPStaging\Vendor\Aws\Api\StructureShape $shape, $name, array $value, \XMLWriter $xml)
|
68 |
+
{
|
69 |
+
$this->startElement($shape, $name, $xml);
|
70 |
+
foreach ($this->getStructureMembers($shape, $value) as $k => $definition) {
|
71 |
+
$this->format($definition['member'], $definition['member']['locationName'] ?: $k, $definition['value'], $xml);
|
72 |
+
}
|
73 |
+
$xml->endElement();
|
74 |
+
}
|
75 |
+
private function getStructureMembers(\WPStaging\Vendor\Aws\Api\StructureShape $shape, array $value)
|
76 |
+
{
|
77 |
+
$members = [];
|
78 |
+
foreach ($value as $k => $v) {
|
79 |
+
if ($v !== null && $shape->hasMember($k)) {
|
80 |
+
$definition = ['member' => $shape->getMember($k), 'value' => $v];
|
81 |
+
if ($definition['member']['xmlAttribute']) {
|
82 |
+
// array_unshift_associative
|
83 |
+
$members = [$k => $definition] + $members;
|
84 |
+
} else {
|
85 |
+
$members[$k] = $definition;
|
86 |
+
}
|
87 |
+
}
|
88 |
+
}
|
89 |
+
return $members;
|
90 |
+
}
|
91 |
+
private function add_list(\WPStaging\Vendor\Aws\Api\ListShape $shape, $name, array $value, \XMLWriter $xml)
|
92 |
+
{
|
93 |
+
$items = $shape->getMember();
|
94 |
+
if ($shape['flattened']) {
|
95 |
+
$elementName = $name;
|
96 |
+
} else {
|
97 |
+
$this->startElement($shape, $name, $xml);
|
98 |
+
$elementName = $items['locationName'] ?: 'member';
|
99 |
+
}
|
100 |
+
foreach ($value as $v) {
|
101 |
+
$this->format($items, $elementName, $v, $xml);
|
102 |
+
}
|
103 |
+
if (!$shape['flattened']) {
|
104 |
+
$xml->endElement();
|
105 |
+
}
|
106 |
+
}
|
107 |
+
private function add_map(\WPStaging\Vendor\Aws\Api\MapShape $shape, $name, array $value, \XMLWriter $xml)
|
108 |
+
{
|
109 |
+
$xmlEntry = $shape['flattened'] ? $shape['locationName'] : 'entry';
|
110 |
+
$xmlKey = $shape->getKey()['locationName'] ?: 'key';
|
111 |
+
$xmlValue = $shape->getValue()['locationName'] ?: 'value';
|
112 |
+
$this->startElement($shape, $name, $xml);
|
113 |
+
foreach ($value as $key => $v) {
|
114 |
+
$this->startElement($shape, $xmlEntry, $xml);
|
115 |
+
$this->format($shape->getKey(), $xmlKey, $key, $xml);
|
116 |
+
$this->format($shape->getValue(), $xmlValue, $v, $xml);
|
117 |
+
$xml->endElement();
|
118 |
+
}
|
119 |
+
$xml->endElement();
|
120 |
+
}
|
121 |
+
private function add_blob(\WPStaging\Vendor\Aws\Api\Shape $shape, $name, $value, \XMLWriter $xml)
|
122 |
+
{
|
123 |
+
$this->startElement($shape, $name, $xml);
|
124 |
+
$xml->writeRaw(\base64_encode($value));
|
125 |
+
$xml->endElement();
|
126 |
+
}
|
127 |
+
private function add_timestamp(\WPStaging\Vendor\Aws\Api\TimestampShape $shape, $name, $value, \XMLWriter $xml)
|
128 |
+
{
|
129 |
+
$this->startElement($shape, $name, $xml);
|
130 |
+
$timestampFormat = !empty($shape['timestampFormat']) ? $shape['timestampFormat'] : 'iso8601';
|
131 |
+
$xml->writeRaw(\WPStaging\Vendor\Aws\Api\TimestampShape::format($value, $timestampFormat));
|
132 |
+
$xml->endElement();
|
133 |
+
}
|
134 |
+
private function add_boolean(\WPStaging\Vendor\Aws\Api\Shape $shape, $name, $value, \XMLWriter $xml)
|
135 |
+
{
|
136 |
+
$this->startElement($shape, $name, $xml);
|
137 |
+
$xml->writeRaw($value ? 'true' : 'false');
|
138 |
+
$xml->endElement();
|
139 |
+
}
|
140 |
+
private function add_string(\WPStaging\Vendor\Aws\Api\Shape $shape, $name, $value, \XMLWriter $xml)
|
141 |
+
{
|
142 |
+
if ($shape['xmlAttribute']) {
|
143 |
+
$xml->writeAttribute($shape['locationName'] ?: $name, $value);
|
144 |
+
} else {
|
145 |
+
$this->defaultShape($shape, $name, $value, $xml);
|
146 |
+
}
|
147 |
+
}
|
148 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Service.php
ADDED
@@ -0,0 +1,357 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\Serializer\QuerySerializer;
|
6 |
+
use WPStaging\Vendor\Aws\Api\Serializer\Ec2ParamBuilder;
|
7 |
+
use WPStaging\Vendor\Aws\Api\Parser\QueryParser;
|
8 |
+
/**
|
9 |
+
* Represents a web service API model.
|
10 |
+
*/
|
11 |
+
class Service extends \WPStaging\Vendor\Aws\Api\AbstractModel
|
12 |
+
{
|
13 |
+
/** @var callable */
|
14 |
+
private $apiProvider;
|
15 |
+
/** @var string */
|
16 |
+
private $serviceName;
|
17 |
+
/** @var string */
|
18 |
+
private $apiVersion;
|
19 |
+
/** @var Operation[] */
|
20 |
+
private $operations = [];
|
21 |
+
/** @var array */
|
22 |
+
private $paginators = null;
|
23 |
+
/** @var array */
|
24 |
+
private $waiters = null;
|
25 |
+
/**
|
26 |
+
* @param array $definition
|
27 |
+
* @param callable $provider
|
28 |
+
*
|
29 |
+
* @internal param array $definition Service description
|
30 |
+
*/
|
31 |
+
public function __construct(array $definition, callable $provider)
|
32 |
+
{
|
33 |
+
static $defaults = ['operations' => [], 'shapes' => [], 'metadata' => []], $defaultMeta = ['apiVersion' => null, 'serviceFullName' => null, 'serviceId' => null, 'endpointPrefix' => null, 'signingName' => null, 'signatureVersion' => null, 'protocol' => null, 'uid' => null];
|
34 |
+
$definition += $defaults;
|
35 |
+
$definition['metadata'] += $defaultMeta;
|
36 |
+
$this->definition = $definition;
|
37 |
+
$this->apiProvider = $provider;
|
38 |
+
parent::__construct($definition, new \WPStaging\Vendor\Aws\Api\ShapeMap($definition['shapes']));
|
39 |
+
if (isset($definition['metadata']['serviceIdentifier'])) {
|
40 |
+
$this->serviceName = $this->getServiceName();
|
41 |
+
} else {
|
42 |
+
$this->serviceName = $this->getEndpointPrefix();
|
43 |
+
}
|
44 |
+
$this->apiVersion = $this->getApiVersion();
|
45 |
+
}
|
46 |
+
/**
|
47 |
+
* Creates a request serializer for the provided API object.
|
48 |
+
*
|
49 |
+
* @param Service $api API that contains a protocol.
|
50 |
+
* @param string $endpoint Endpoint to send requests to.
|
51 |
+
*
|
52 |
+
* @return callable
|
53 |
+
* @throws \UnexpectedValueException
|
54 |
+
*/
|
55 |
+
public static function createSerializer(\WPStaging\Vendor\Aws\Api\Service $api, $endpoint)
|
56 |
+
{
|
57 |
+
static $mapping = ['json' => 'WPStaging\\Vendor\\Aws\\Api\\Serializer\\JsonRpcSerializer', 'query' => 'WPStaging\\Vendor\\Aws\\Api\\Serializer\\QuerySerializer', 'rest-json' => 'WPStaging\\Vendor\\Aws\\Api\\Serializer\\RestJsonSerializer', 'rest-xml' => 'WPStaging\\Vendor\\Aws\\Api\\Serializer\\RestXmlSerializer'];
|
58 |
+
$proto = $api->getProtocol();
|
59 |
+
if (isset($mapping[$proto])) {
|
60 |
+
return new $mapping[$proto]($api, $endpoint);
|
61 |
+
}
|
62 |
+
if ($proto == 'ec2') {
|
63 |
+
return new \WPStaging\Vendor\Aws\Api\Serializer\QuerySerializer($api, $endpoint, new \WPStaging\Vendor\Aws\Api\Serializer\Ec2ParamBuilder());
|
64 |
+
}
|
65 |
+
throw new \UnexpectedValueException('Unknown protocol: ' . $api->getProtocol());
|
66 |
+
}
|
67 |
+
/**
|
68 |
+
* Creates an error parser for the given protocol.
|
69 |
+
*
|
70 |
+
* Redundant method signature to preserve backwards compatibility.
|
71 |
+
*
|
72 |
+
* @param string $protocol Protocol to parse (e.g., query, json, etc.)
|
73 |
+
*
|
74 |
+
* @return callable
|
75 |
+
* @throws \UnexpectedValueException
|
76 |
+
*/
|
77 |
+
public static function createErrorParser($protocol, \WPStaging\Vendor\Aws\Api\Service $api = null)
|
78 |
+
{
|
79 |
+
static $mapping = ['json' => 'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\JsonRpcErrorParser', 'query' => 'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\XmlErrorParser', 'rest-json' => 'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\RestJsonErrorParser', 'rest-xml' => 'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\XmlErrorParser', 'ec2' => 'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\XmlErrorParser'];
|
80 |
+
if (isset($mapping[$protocol])) {
|
81 |
+
return new $mapping[$protocol]($api);
|
82 |
+
}
|
83 |
+
throw new \UnexpectedValueException("Unknown protocol: {$protocol}");
|
84 |
+
}
|
85 |
+
/**
|
86 |
+
* Applies the listeners needed to parse client models.
|
87 |
+
*
|
88 |
+
* @param Service $api API to create a parser for
|
89 |
+
* @return callable
|
90 |
+
* @throws \UnexpectedValueException
|
91 |
+
*/
|
92 |
+
public static function createParser(\WPStaging\Vendor\Aws\Api\Service $api)
|
93 |
+
{
|
94 |
+
static $mapping = ['json' => 'WPStaging\\Vendor\\Aws\\Api\\Parser\\JsonRpcParser', 'query' => 'WPStaging\\Vendor\\Aws\\Api\\Parser\\QueryParser', 'rest-json' => 'WPStaging\\Vendor\\Aws\\Api\\Parser\\RestJsonParser', 'rest-xml' => 'WPStaging\\Vendor\\Aws\\Api\\Parser\\RestXmlParser'];
|
95 |
+
$proto = $api->getProtocol();
|
96 |
+
if (isset($mapping[$proto])) {
|
97 |
+
return new $mapping[$proto]($api);
|
98 |
+
}
|
99 |
+
if ($proto == 'ec2') {
|
100 |
+
return new \WPStaging\Vendor\Aws\Api\Parser\QueryParser($api, null, \false);
|
101 |
+
}
|
102 |
+
throw new \UnexpectedValueException('Unknown protocol: ' . $api->getProtocol());
|
103 |
+
}
|
104 |
+
/**
|
105 |
+
* Get the full name of the service
|
106 |
+
*
|
107 |
+
* @return string
|
108 |
+
*/
|
109 |
+
public function getServiceFullName()
|
110 |
+
{
|
111 |
+
return $this->definition['metadata']['serviceFullName'];
|
112 |
+
}
|
113 |
+
/**
|
114 |
+
* Get the service id
|
115 |
+
*
|
116 |
+
* @return string
|
117 |
+
*/
|
118 |
+
public function getServiceId()
|
119 |
+
{
|
120 |
+
return $this->definition['metadata']['serviceId'];
|
121 |
+
}
|
122 |
+
/**
|
123 |
+
* Get the API version of the service
|
124 |
+
*
|
125 |
+
* @return string
|
126 |
+
*/
|
127 |
+
public function getApiVersion()
|
128 |
+
{
|
129 |
+
return $this->definition['metadata']['apiVersion'];
|
130 |
+
}
|
131 |
+
/**
|
132 |
+
* Get the API version of the service
|
133 |
+
*
|
134 |
+
* @return string
|
135 |
+
*/
|
136 |
+
public function getEndpointPrefix()
|
137 |
+
{
|
138 |
+
return $this->definition['metadata']['endpointPrefix'];
|
139 |
+
}
|
140 |
+
/**
|
141 |
+
* Get the signing name used by the service.
|
142 |
+
*
|
143 |
+
* @return string
|
144 |
+
*/
|
145 |
+
public function getSigningName()
|
146 |
+
{
|
147 |
+
return $this->definition['metadata']['signingName'] ?: $this->definition['metadata']['endpointPrefix'];
|
148 |
+
}
|
149 |
+
/**
|
150 |
+
* Get the service name.
|
151 |
+
*
|
152 |
+
* @return string
|
153 |
+
*/
|
154 |
+
public function getServiceName()
|
155 |
+
{
|
156 |
+
return $this->definition['metadata']['serviceIdentifier'];
|
157 |
+
}
|
158 |
+
/**
|
159 |
+
* Get the default signature version of the service.
|
160 |
+
*
|
161 |
+
* Note: this method assumes "v4" when not specified in the model.
|
162 |
+
*
|
163 |
+
* @return string
|
164 |
+
*/
|
165 |
+
public function getSignatureVersion()
|
166 |
+
{
|
167 |
+
return $this->definition['metadata']['signatureVersion'] ?: 'v4';
|
168 |
+
}
|
169 |
+
/**
|
170 |
+
* Get the protocol used by the service.
|
171 |
+
*
|
172 |
+
* @return string
|
173 |
+
*/
|
174 |
+
public function getProtocol()
|
175 |
+
{
|
176 |
+
return $this->definition['metadata']['protocol'];
|
177 |
+
}
|
178 |
+
/**
|
179 |
+
* Get the uid string used by the service
|
180 |
+
*
|
181 |
+
* @return string
|
182 |
+
*/
|
183 |
+
public function getUid()
|
184 |
+
{
|
185 |
+
return $this->definition['metadata']['uid'];
|
186 |
+
}
|
187 |
+
/**
|
188 |
+
* Check if the description has a specific operation by name.
|
189 |
+
*
|
190 |
+
* @param string $name Operation to check by name
|
191 |
+
*
|
192 |
+
* @return bool
|
193 |
+
*/
|
194 |
+
public function hasOperation($name)
|
195 |
+
{
|
196 |
+
return isset($this['operations'][$name]);
|
197 |
+
}
|
198 |
+
/**
|
199 |
+
* Get an operation by name.
|
200 |
+
*
|
201 |
+
* @param string $name Operation to retrieve by name
|
202 |
+
*
|
203 |
+
* @return Operation
|
204 |
+
* @throws \InvalidArgumentException If the operation is not found
|
205 |
+
*/
|
206 |
+
public function getOperation($name)
|
207 |
+
{
|
208 |
+
if (!isset($this->operations[$name])) {
|
209 |
+
if (!isset($this->definition['operations'][$name])) {
|
210 |
+
throw new \InvalidArgumentException("Unknown operation: {$name}");
|
211 |
+
}
|
212 |
+
$this->operations[$name] = new \WPStaging\Vendor\Aws\Api\Operation($this->definition['operations'][$name], $this->shapeMap);
|
213 |
+
}
|
214 |
+
return $this->operations[$name];
|
215 |
+
}
|
216 |
+
/**
|
217 |
+
* Get all of the operations of the description.
|
218 |
+
*
|
219 |
+
* @return Operation[]
|
220 |
+
*/
|
221 |
+
public function getOperations()
|
222 |
+
{
|
223 |
+
$result = [];
|
224 |
+
foreach ($this->definition['operations'] as $name => $definition) {
|
225 |
+
$result[$name] = $this->getOperation($name);
|
226 |
+
}
|
227 |
+
return $result;
|
228 |
+
}
|
229 |
+
/**
|
230 |
+
* Get all of the error shapes of the service
|
231 |
+
*
|
232 |
+
* @return array
|
233 |
+
*/
|
234 |
+
public function getErrorShapes()
|
235 |
+
{
|
236 |
+
$result = [];
|
237 |
+
foreach ($this->definition['shapes'] as $name => $definition) {
|
238 |
+
if (!empty($definition['exception'])) {
|
239 |
+
$definition['name'] = $name;
|
240 |
+
$result[] = new \WPStaging\Vendor\Aws\Api\StructureShape($definition, $this->getShapeMap());
|
241 |
+
}
|
242 |
+
}
|
243 |
+
return $result;
|
244 |
+
}
|
245 |
+
/**
|
246 |
+
* Get all of the service metadata or a specific metadata key value.
|
247 |
+
*
|
248 |
+
* @param string|null $key Key to retrieve or null to retrieve all metadata
|
249 |
+
*
|
250 |
+
* @return mixed Returns the result or null if the key is not found
|
251 |
+
*/
|
252 |
+
public function getMetadata($key = null)
|
253 |
+
{
|
254 |
+
if (!$key) {
|
255 |
+
return $this['metadata'];
|
256 |
+
}
|
257 |
+
if (isset($this->definition['metadata'][$key])) {
|
258 |
+
return $this->definition['metadata'][$key];
|
259 |
+
}
|
260 |
+
return null;
|
261 |
+
}
|
262 |
+
/**
|
263 |
+
* Gets an associative array of available paginator configurations where
|
264 |
+
* the key is the name of the paginator, and the value is the paginator
|
265 |
+
* configuration.
|
266 |
+
*
|
267 |
+
* @return array
|
268 |
+
* @unstable The configuration format of paginators may change in the future
|
269 |
+
*/
|
270 |
+
public function getPaginators()
|
271 |
+
{
|
272 |
+
if (!isset($this->paginators)) {
|
273 |
+
$res = \call_user_func($this->apiProvider, 'paginator', $this->serviceName, $this->apiVersion);
|
274 |
+
$this->paginators = isset($res['pagination']) ? $res['pagination'] : [];
|
275 |
+
}
|
276 |
+
return $this->paginators;
|
277 |
+
}
|
278 |
+
/**
|
279 |
+
* Determines if the service has a paginator by name.
|
280 |
+
*
|
281 |
+
* @param string $name Name of the paginator.
|
282 |
+
*
|
283 |
+
* @return bool
|
284 |
+
*/
|
285 |
+
public function hasPaginator($name)
|
286 |
+
{
|
287 |
+
return isset($this->getPaginators()[$name]);
|
288 |
+
}
|
289 |
+
/**
|
290 |
+
* Retrieve a paginator by name.
|
291 |
+
*
|
292 |
+
* @param string $name Paginator to retrieve by name. This argument is
|
293 |
+
* typically the operation name.
|
294 |
+
* @return array
|
295 |
+
* @throws \UnexpectedValueException if the paginator does not exist.
|
296 |
+
* @unstable The configuration format of paginators may change in the future
|
297 |
+
*/
|
298 |
+
public function getPaginatorConfig($name)
|
299 |
+
{
|
300 |
+
static $defaults = ['input_token' => null, 'output_token' => null, 'limit_key' => null, 'result_key' => null, 'more_results' => null];
|
301 |
+
if ($this->hasPaginator($name)) {
|
302 |
+
return $this->paginators[$name] + $defaults;
|
303 |
+
}
|
304 |
+
throw new \UnexpectedValueException("There is no {$name} " . "paginator defined for the {$this->serviceName} service.");
|
305 |
+
}
|
306 |
+
/**
|
307 |
+
* Gets an associative array of available waiter configurations where the
|
308 |
+
* key is the name of the waiter, and the value is the waiter
|
309 |
+
* configuration.
|
310 |
+
*
|
311 |
+
* @return array
|
312 |
+
*/
|
313 |
+
public function getWaiters()
|
314 |
+
{
|
315 |
+
if (!isset($this->waiters)) {
|
316 |
+
$res = \call_user_func($this->apiProvider, 'waiter', $this->serviceName, $this->apiVersion);
|
317 |
+
$this->waiters = isset($res['waiters']) ? $res['waiters'] : [];
|
318 |
+
}
|
319 |
+
return $this->waiters;
|
320 |
+
}
|
321 |
+
/**
|
322 |
+
* Determines if the service has a waiter by name.
|
323 |
+
*
|
324 |
+
* @param string $name Name of the waiter.
|
325 |
+
*
|
326 |
+
* @return bool
|
327 |
+
*/
|
328 |
+
public function hasWaiter($name)
|
329 |
+
{
|
330 |
+
return isset($this->getWaiters()[$name]);
|
331 |
+
}
|
332 |
+
/**
|
333 |
+
* Get a waiter configuration by name.
|
334 |
+
*
|
335 |
+
* @param string $name Name of the waiter by name.
|
336 |
+
*
|
337 |
+
* @return array
|
338 |
+
* @throws \UnexpectedValueException if the waiter does not exist.
|
339 |
+
*/
|
340 |
+
public function getWaiterConfig($name)
|
341 |
+
{
|
342 |
+
// Error if the waiter is not defined
|
343 |
+
if ($this->hasWaiter($name)) {
|
344 |
+
return $this->waiters[$name];
|
345 |
+
}
|
346 |
+
throw new \UnexpectedValueException("There is no {$name} waiter " . "defined for the {$this->serviceName} service.");
|
347 |
+
}
|
348 |
+
/**
|
349 |
+
* Get the shape map used by the API.
|
350 |
+
*
|
351 |
+
* @return ShapeMap
|
352 |
+
*/
|
353 |
+
public function getShapeMap()
|
354 |
+
{
|
355 |
+
return $this->shapeMap;
|
356 |
+
}
|
357 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Shape.php
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Base class representing a modeled shape.
|
7 |
+
*/
|
8 |
+
class Shape extends \WPStaging\Vendor\Aws\Api\AbstractModel
|
9 |
+
{
|
10 |
+
/**
|
11 |
+
* Get a concrete shape for the given definition.
|
12 |
+
*
|
13 |
+
* @param array $definition
|
14 |
+
* @param ShapeMap $shapeMap
|
15 |
+
*
|
16 |
+
* @return mixed
|
17 |
+
* @throws \RuntimeException if the type is invalid
|
18 |
+
*/
|
19 |
+
public static function create(array $definition, \WPStaging\Vendor\Aws\Api\ShapeMap $shapeMap)
|
20 |
+
{
|
21 |
+
static $map = ['structure' => 'WPStaging\\Vendor\\Aws\\Api\\StructureShape', 'map' => 'WPStaging\\Vendor\\Aws\\Api\\MapShape', 'list' => 'WPStaging\\Vendor\\Aws\\Api\\ListShape', 'timestamp' => 'WPStaging\\Vendor\\Aws\\Api\\TimestampShape', 'integer' => 'WPStaging\\Vendor\\Aws\\Api\\Shape', 'double' => 'WPStaging\\Vendor\\Aws\\Api\\Shape', 'float' => 'WPStaging\\Vendor\\Aws\\Api\\Shape', 'long' => 'WPStaging\\Vendor\\Aws\\Api\\Shape', 'string' => 'WPStaging\\Vendor\\Aws\\Api\\Shape', 'byte' => 'WPStaging\\Vendor\\Aws\\Api\\Shape', 'character' => 'WPStaging\\Vendor\\Aws\\Api\\Shape', 'blob' => 'WPStaging\\Vendor\\Aws\\Api\\Shape', 'boolean' => 'WPStaging\\Vendor\\Aws\\Api\\Shape'];
|
22 |
+
if (isset($definition['shape'])) {
|
23 |
+
return $shapeMap->resolve($definition);
|
24 |
+
}
|
25 |
+
if (!isset($map[$definition['type']])) {
|
26 |
+
throw new \RuntimeException('Invalid type: ' . \print_r($definition, \true));
|
27 |
+
}
|
28 |
+
$type = $map[$definition['type']];
|
29 |
+
return new $type($definition, $shapeMap);
|
30 |
+
}
|
31 |
+
/**
|
32 |
+
* Get the type of the shape
|
33 |
+
*
|
34 |
+
* @return string
|
35 |
+
*/
|
36 |
+
public function getType()
|
37 |
+
{
|
38 |
+
return $this->definition['type'];
|
39 |
+
}
|
40 |
+
/**
|
41 |
+
* Get the name of the shape
|
42 |
+
*
|
43 |
+
* @return string
|
44 |
+
*/
|
45 |
+
public function getName()
|
46 |
+
{
|
47 |
+
return $this->definition['name'];
|
48 |
+
}
|
49 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/ShapeMap.php
ADDED
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Builds shape based on shape references.
|
7 |
+
*/
|
8 |
+
class ShapeMap
|
9 |
+
{
|
10 |
+
/** @var array */
|
11 |
+
private $definitions;
|
12 |
+
/** @var Shape[] */
|
13 |
+
private $simple;
|
14 |
+
/**
|
15 |
+
* @param array $shapeModels Associative array of shape definitions.
|
16 |
+
*/
|
17 |
+
public function __construct(array $shapeModels)
|
18 |
+
{
|
19 |
+
$this->definitions = $shapeModels;
|
20 |
+
}
|
21 |
+
/**
|
22 |
+
* Get an array of shape names.
|
23 |
+
*
|
24 |
+
* @return array
|
25 |
+
*/
|
26 |
+
public function getShapeNames()
|
27 |
+
{
|
28 |
+
return \array_keys($this->definitions);
|
29 |
+
}
|
30 |
+
/**
|
31 |
+
* Resolve a shape reference
|
32 |
+
*
|
33 |
+
* @param array $shapeRef Shape reference shape
|
34 |
+
*
|
35 |
+
* @return Shape
|
36 |
+
* @throws \InvalidArgumentException
|
37 |
+
*/
|
38 |
+
public function resolve(array $shapeRef)
|
39 |
+
{
|
40 |
+
$shape = $shapeRef['shape'];
|
41 |
+
if (!isset($this->definitions[$shape])) {
|
42 |
+
throw new \InvalidArgumentException('Shape not found: ' . $shape);
|
43 |
+
}
|
44 |
+
$isSimple = \count($shapeRef) == 1;
|
45 |
+
if ($isSimple && isset($this->simple[$shape])) {
|
46 |
+
return $this->simple[$shape];
|
47 |
+
}
|
48 |
+
$definition = $shapeRef + $this->definitions[$shape];
|
49 |
+
$definition['name'] = $definition['shape'];
|
50 |
+
if (isset($definition['shape'])) {
|
51 |
+
unset($definition['shape']);
|
52 |
+
}
|
53 |
+
$result = \WPStaging\Vendor\Aws\Api\Shape::create($definition, $this);
|
54 |
+
if ($isSimple) {
|
55 |
+
$this->simple[$shape] = $result;
|
56 |
+
}
|
57 |
+
return $result;
|
58 |
+
}
|
59 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/StructureShape.php
ADDED
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Represents a structure shape and resolve member shape references.
|
7 |
+
*/
|
8 |
+
class StructureShape extends \WPStaging\Vendor\Aws\Api\Shape
|
9 |
+
{
|
10 |
+
/**
|
11 |
+
* @var Shape[]
|
12 |
+
*/
|
13 |
+
private $members;
|
14 |
+
public function __construct(array $definition, \WPStaging\Vendor\Aws\Api\ShapeMap $shapeMap)
|
15 |
+
{
|
16 |
+
$definition['type'] = 'structure';
|
17 |
+
if (!isset($definition['members'])) {
|
18 |
+
$definition['members'] = [];
|
19 |
+
}
|
20 |
+
parent::__construct($definition, $shapeMap);
|
21 |
+
}
|
22 |
+
/**
|
23 |
+
* Gets a list of all members
|
24 |
+
*
|
25 |
+
* @return Shape[]
|
26 |
+
*/
|
27 |
+
public function getMembers()
|
28 |
+
{
|
29 |
+
if (empty($this->members)) {
|
30 |
+
$this->generateMembersHash();
|
31 |
+
}
|
32 |
+
return $this->members;
|
33 |
+
}
|
34 |
+
/**
|
35 |
+
* Check if a specific member exists by name.
|
36 |
+
*
|
37 |
+
* @param string $name Name of the member to check
|
38 |
+
*
|
39 |
+
* @return bool
|
40 |
+
*/
|
41 |
+
public function hasMember($name)
|
42 |
+
{
|
43 |
+
return isset($this->definition['members'][$name]);
|
44 |
+
}
|
45 |
+
/**
|
46 |
+
* Retrieve a member by name.
|
47 |
+
*
|
48 |
+
* @param string $name Name of the member to retrieve
|
49 |
+
*
|
50 |
+
* @return Shape
|
51 |
+
* @throws \InvalidArgumentException if the member is not found.
|
52 |
+
*/
|
53 |
+
public function getMember($name)
|
54 |
+
{
|
55 |
+
$members = $this->getMembers();
|
56 |
+
if (!isset($members[$name])) {
|
57 |
+
throw new \InvalidArgumentException('Unknown member ' . $name);
|
58 |
+
}
|
59 |
+
return $members[$name];
|
60 |
+
}
|
61 |
+
private function generateMembersHash()
|
62 |
+
{
|
63 |
+
$this->members = [];
|
64 |
+
foreach ($this->definition['members'] as $name => $definition) {
|
65 |
+
$this->members[$name] = $this->shapeFor($definition);
|
66 |
+
}
|
67 |
+
}
|
68 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/TimestampShape.php
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Represents a timestamp shape.
|
7 |
+
*/
|
8 |
+
class TimestampShape extends \WPStaging\Vendor\Aws\Api\Shape
|
9 |
+
{
|
10 |
+
public function __construct(array $definition, \WPStaging\Vendor\Aws\Api\ShapeMap $shapeMap)
|
11 |
+
{
|
12 |
+
$definition['type'] = 'timestamp';
|
13 |
+
parent::__construct($definition, $shapeMap);
|
14 |
+
}
|
15 |
+
/**
|
16 |
+
* Formats a timestamp value for a service.
|
17 |
+
*
|
18 |
+
* @param mixed $value Value to format
|
19 |
+
* @param string $format Format used to serialize the value
|
20 |
+
*
|
21 |
+
* @return int|string
|
22 |
+
* @throws \UnexpectedValueException if the format is unknown.
|
23 |
+
* @throws \InvalidArgumentException if the value is an unsupported type.
|
24 |
+
*/
|
25 |
+
public static function format($value, $format)
|
26 |
+
{
|
27 |
+
if ($value instanceof \DateTime) {
|
28 |
+
$value = $value->getTimestamp();
|
29 |
+
} elseif (\is_string($value)) {
|
30 |
+
$value = \strtotime($value);
|
31 |
+
} elseif (!\is_int($value)) {
|
32 |
+
throw new \InvalidArgumentException('Unable to handle the provided' . ' timestamp type: ' . \gettype($value));
|
33 |
+
}
|
34 |
+
switch ($format) {
|
35 |
+
case 'iso8601':
|
36 |
+
return \gmdate('Y-m-d\\TH:i:s\\Z', $value);
|
37 |
+
case 'rfc822':
|
38 |
+
return \gmdate('D, d M Y H:i:s \\G\\M\\T', $value);
|
39 |
+
case 'unixTimestamp':
|
40 |
+
return $value;
|
41 |
+
default:
|
42 |
+
throw new \UnexpectedValueException('Unknown timestamp format: ' . $format);
|
43 |
+
}
|
44 |
+
}
|
45 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Api/Validator.php
ADDED
@@ -0,0 +1,245 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Api;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws;
|
6 |
+
/**
|
7 |
+
* Validates a schema against a hash of input.
|
8 |
+
*/
|
9 |
+
class Validator
|
10 |
+
{
|
11 |
+
private $path = [];
|
12 |
+
private $errors = [];
|
13 |
+
private $constraints = [];
|
14 |
+
private static $defaultConstraints = ['required' => \true, 'min' => \true, 'max' => \false, 'pattern' => \false];
|
15 |
+
/**
|
16 |
+
* @param array $constraints Associative array of constraints to enforce.
|
17 |
+
* Accepts the following keys: "required", "min",
|
18 |
+
* "max", and "pattern". If a key is not
|
19 |
+
* provided, the constraint will assume false.
|
20 |
+
*/
|
21 |
+
public function __construct(array $constraints = null)
|
22 |
+
{
|
23 |
+
static $assumedFalseValues = ['required' => \false, 'min' => \false, 'max' => \false, 'pattern' => \false];
|
24 |
+
$this->constraints = empty($constraints) ? self::$defaultConstraints : $constraints + $assumedFalseValues;
|
25 |
+
}
|
26 |
+
/**
|
27 |
+
* Validates the given input against the schema.
|
28 |
+
*
|
29 |
+
* @param string $name Operation name
|
30 |
+
* @param Shape $shape Shape to validate
|
31 |
+
* @param array $input Input to validate
|
32 |
+
*
|
33 |
+
* @throws \InvalidArgumentException if the input is invalid.
|
34 |
+
*/
|
35 |
+
public function validate($name, \WPStaging\Vendor\Aws\Api\Shape $shape, array $input)
|
36 |
+
{
|
37 |
+
$this->dispatch($shape, $input);
|
38 |
+
if ($this->errors) {
|
39 |
+
$message = \sprintf("Found %d error%s while validating the input provided for the " . "%s operation:\n%s", \count($this->errors), \count($this->errors) > 1 ? 's' : '', $name, \implode("\n", $this->errors));
|
40 |
+
$this->errors = [];
|
41 |
+
throw new \InvalidArgumentException($message);
|
42 |
+
}
|
43 |
+
}
|
44 |
+
private function dispatch(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
|
45 |
+
{
|
46 |
+
static $methods = ['structure' => 'check_structure', 'list' => 'check_list', 'map' => 'check_map', 'blob' => 'check_blob', 'boolean' => 'check_boolean', 'integer' => 'check_numeric', 'float' => 'check_numeric', 'long' => 'check_numeric', 'string' => 'check_string', 'byte' => 'check_string', 'char' => 'check_string'];
|
47 |
+
$type = $shape->getType();
|
48 |
+
if (isset($methods[$type])) {
|
49 |
+
$this->{$methods[$type]}($shape, $value);
|
50 |
+
}
|
51 |
+
}
|
52 |
+
private function check_structure(\WPStaging\Vendor\Aws\Api\StructureShape $shape, $value)
|
53 |
+
{
|
54 |
+
$isDocument = isset($shape['document']) && $shape['document'];
|
55 |
+
$isUnion = isset($shape['union']) && $shape['union'];
|
56 |
+
if ($isDocument) {
|
57 |
+
if (!$this->checkDocumentType($value)) {
|
58 |
+
$this->addError("is not a valid document type");
|
59 |
+
return;
|
60 |
+
}
|
61 |
+
} elseif ($isUnion) {
|
62 |
+
if (!$this->checkUnion($value)) {
|
63 |
+
$this->addError("is a union type and must have exactly one non null value");
|
64 |
+
return;
|
65 |
+
}
|
66 |
+
} elseif (!$this->checkAssociativeArray($value)) {
|
67 |
+
return;
|
68 |
+
}
|
69 |
+
if ($this->constraints['required'] && $shape['required']) {
|
70 |
+
foreach ($shape['required'] as $req) {
|
71 |
+
if (!isset($value[$req])) {
|
72 |
+
$this->path[] = $req;
|
73 |
+
$this->addError('is missing and is a required parameter');
|
74 |
+
\array_pop($this->path);
|
75 |
+
}
|
76 |
+
}
|
77 |
+
}
|
78 |
+
if (!$isDocument) {
|
79 |
+
foreach ($value as $name => $v) {
|
80 |
+
if ($shape->hasMember($name)) {
|
81 |
+
$this->path[] = $name;
|
82 |
+
$this->dispatch($shape->getMember($name), isset($value[$name]) ? $value[$name] : null);
|
83 |
+
\array_pop($this->path);
|
84 |
+
}
|
85 |
+
}
|
86 |
+
}
|
87 |
+
}
|
88 |
+
private function check_list(\WPStaging\Vendor\Aws\Api\ListShape $shape, $value)
|
89 |
+
{
|
90 |
+
if (!\is_array($value)) {
|
91 |
+
$this->addError('must be an array. Found ' . \WPStaging\Vendor\Aws\describe_type($value));
|
92 |
+
return;
|
93 |
+
}
|
94 |
+
$this->validateRange($shape, \count($value), "list element count");
|
95 |
+
$items = $shape->getMember();
|
96 |
+
foreach ($value as $index => $v) {
|
97 |
+
$this->path[] = $index;
|
98 |
+
$this->dispatch($items, $v);
|
99 |
+
\array_pop($this->path);
|
100 |
+
}
|
101 |
+
}
|
102 |
+
private function check_map(\WPStaging\Vendor\Aws\Api\MapShape $shape, $value)
|
103 |
+
{
|
104 |
+
if (!$this->checkAssociativeArray($value)) {
|
105 |
+
return;
|
106 |
+
}
|
107 |
+
$values = $shape->getValue();
|
108 |
+
foreach ($value as $key => $v) {
|
109 |
+
$this->path[] = $key;
|
110 |
+
$this->dispatch($values, $v);
|
111 |
+
\array_pop($this->path);
|
112 |
+
}
|
113 |
+
}
|
114 |
+
private function check_blob(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
|
115 |
+
{
|
116 |
+
static $valid = ['string' => \true, 'integer' => \true, 'double' => \true, 'resource' => \true];
|
117 |
+
$type = \gettype($value);
|
118 |
+
if (!isset($valid[$type])) {
|
119 |
+
if ($type != 'object' || !\method_exists($value, '__toString')) {
|
120 |
+
$this->addError('must be an fopen resource, a ' . 'GuzzleHttp\\Stream\\StreamInterface object, or something ' . 'that can be cast to a string. Found ' . \WPStaging\Vendor\Aws\describe_type($value));
|
121 |
+
}
|
122 |
+
}
|
123 |
+
}
|
124 |
+
private function check_numeric(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
|
125 |
+
{
|
126 |
+
if (!\is_numeric($value)) {
|
127 |
+
$this->addError('must be numeric. Found ' . \WPStaging\Vendor\Aws\describe_type($value));
|
128 |
+
return;
|
129 |
+
}
|
130 |
+
$this->validateRange($shape, $value, "numeric value");
|
131 |
+
}
|
132 |
+
private function check_boolean(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
|
133 |
+
{
|
134 |
+
if (!\is_bool($value)) {
|
135 |
+
$this->addError('must be a boolean. Found ' . \WPStaging\Vendor\Aws\describe_type($value));
|
136 |
+
}
|
137 |
+
}
|
138 |
+
private function check_string(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
|
139 |
+
{
|
140 |
+
if ($shape['jsonvalue']) {
|
141 |
+
if (!self::canJsonEncode($value)) {
|
142 |
+
$this->addError('must be a value encodable with \'json_encode\'.' . ' Found ' . \WPStaging\Vendor\Aws\describe_type($value));
|
143 |
+
}
|
144 |
+
return;
|
145 |
+
}
|
146 |
+
if (!$this->checkCanString($value)) {
|
147 |
+
$this->addError('must be a string or an object that implements ' . '__toString(). Found ' . \WPStaging\Vendor\Aws\describe_type($value));
|
148 |
+
return;
|
149 |
+
}
|
150 |
+
$this->validateRange($shape, \strlen($value), "string length");
|
151 |
+
if ($this->constraints['pattern']) {
|
152 |
+
$pattern = $shape['pattern'];
|
153 |
+
if ($pattern && !\preg_match("/{$pattern}/", $value)) {
|
154 |
+
$this->addError("Pattern /{$pattern}/ failed to match '{$value}'");
|
155 |
+
}
|
156 |
+
}
|
157 |
+
}
|
158 |
+
private function validateRange(\WPStaging\Vendor\Aws\Api\Shape $shape, $length, $descriptor)
|
159 |
+
{
|
160 |
+
if ($this->constraints['min']) {
|
161 |
+
$min = $shape['min'];
|
162 |
+
if ($min && $length < $min) {
|
163 |
+
$this->addError("expected {$descriptor} to be >= {$min}, but " . "found {$descriptor} of {$length}");
|
164 |
+
}
|
165 |
+
}
|
166 |
+
if ($this->constraints['max']) {
|
167 |
+
$max = $shape['max'];
|
168 |
+
if ($max && $length > $max) {
|
169 |
+
$this->addError("expected {$descriptor} to be <= {$max}, but " . "found {$descriptor} of {$length}");
|
170 |
+
}
|
171 |
+
}
|
172 |
+
}
|
173 |
+
private function checkArray($arr)
|
174 |
+
{
|
175 |
+
return $this->isIndexed($arr) || $this->isAssociative($arr);
|
176 |
+
}
|
177 |
+
private function isAssociative($arr)
|
178 |
+
{
|
179 |
+
return \count(\array_filter(\array_keys($arr), "is_string")) == \count($arr);
|
180 |
+
}
|
181 |
+
private function isIndexed(array $arr)
|
182 |
+
{
|
183 |
+
return $arr == \array_values($arr);
|
184 |
+
}
|
185 |
+
private function checkCanString($value)
|
186 |
+
{
|
187 |
+
static $valid = ['string' => \true, 'integer' => \true, 'double' => \true, 'NULL' => \true];
|
188 |
+
$type = \gettype($value);
|
189 |
+
return isset($valid[$type]) || $type == 'object' && \method_exists($value, '__toString');
|
190 |
+
}
|
191 |
+
private function checkAssociativeArray($value)
|
192 |
+
{
|
193 |
+
$isAssociative = \false;
|
194 |
+
if (\is_array($value)) {
|
195 |
+
$expectedIndex = 0;
|
196 |
+
$key = \key($value);
|
197 |
+
do {
|
198 |
+
$isAssociative = $key !== $expectedIndex++;
|
199 |
+
\next($value);
|
200 |
+
$key = \key($value);
|
201 |
+
} while (!$isAssociative && null !== $key);
|
202 |
+
}
|
203 |
+
if (!$isAssociative) {
|
204 |
+
$this->addError('must be an associative array. Found ' . \WPStaging\Vendor\Aws\describe_type($value));
|
205 |
+
return \false;
|
206 |
+
}
|
207 |
+
return \true;
|
208 |
+
}
|
209 |
+
private function checkDocumentType($value)
|
210 |
+
{
|
211 |
+
if (\is_array($value)) {
|
212 |
+
$typeOfFirstKey = \gettype(\key($value));
|
213 |
+
foreach ($value as $key => $val) {
|
214 |
+
if (!$this->checkDocumentType($val) || \gettype($key) != $typeOfFirstKey) {
|
215 |
+
return \false;
|
216 |
+
}
|
217 |
+
}
|
218 |
+
return $this->checkArray($value);
|
219 |
+
}
|
220 |
+
return \is_null($value) || \is_numeric($value) || \is_string($value) || \is_bool($value);
|
221 |
+
}
|
222 |
+
private function checkUnion($value)
|
223 |
+
{
|
224 |
+
if (\is_array($value)) {
|
225 |
+
$nonNullCount = 0;
|
226 |
+
foreach ($value as $key => $val) {
|
227 |
+
if (!\is_null($val) && !(\strpos($key, "@") === 0)) {
|
228 |
+
$nonNullCount++;
|
229 |
+
}
|
230 |
+
}
|
231 |
+
return $nonNullCount == 1;
|
232 |
+
}
|
233 |
+
return !\is_null($value);
|
234 |
+
}
|
235 |
+
private function addError($message)
|
236 |
+
{
|
237 |
+
$this->errors[] = \implode('', \array_map(function ($s) {
|
238 |
+
return "[{$s}]";
|
239 |
+
}, $this->path)) . ' ' . $message;
|
240 |
+
}
|
241 |
+
private function canJsonEncode($data)
|
242 |
+
{
|
243 |
+
return !\is_resource($data);
|
244 |
+
}
|
245 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Arn/AccessPointArn.php
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Arn;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException;
|
6 |
+
/**
|
7 |
+
* @internal
|
8 |
+
*/
|
9 |
+
class AccessPointArn extends \WPStaging\Vendor\Aws\Arn\Arn implements \WPStaging\Vendor\Aws\Arn\AccessPointArnInterface
|
10 |
+
{
|
11 |
+
use ResourceTypeAndIdTrait;
|
12 |
+
/**
|
13 |
+
* AccessPointArn constructor
|
14 |
+
*
|
15 |
+
* @param $data
|
16 |
+
*/
|
17 |
+
public function __construct($data)
|
18 |
+
{
|
19 |
+
parent::__construct($data);
|
20 |
+
static::validate($this->data);
|
21 |
+
}
|
22 |
+
public static function parse($string)
|
23 |
+
{
|
24 |
+
$data = parent::parse($string);
|
25 |
+
$data = self::parseResourceTypeAndId($data);
|
26 |
+
$data['accesspoint_name'] = $data['resource_id'];
|
27 |
+
return $data;
|
28 |
+
}
|
29 |
+
public function getAccesspointName()
|
30 |
+
{
|
31 |
+
return $this->data['accesspoint_name'];
|
32 |
+
}
|
33 |
+
/**
|
34 |
+
* Validation specific to AccessPointArn
|
35 |
+
*
|
36 |
+
* @param array $data
|
37 |
+
*/
|
38 |
+
protected static function validate(array $data)
|
39 |
+
{
|
40 |
+
self::validateRegion($data, 'access point ARN');
|
41 |
+
self::validateAccountId($data, 'access point ARN');
|
42 |
+
if ($data['resource_type'] !== 'accesspoint') {
|
43 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 6th component of an access point ARN" . " represents the resource type and must be 'accesspoint'.");
|
44 |
+
}
|
45 |
+
if (empty($data['resource_id'])) {
|
46 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 7th component of an access point ARN" . " represents the resource ID and must not be empty.");
|
47 |
+
}
|
48 |
+
if (\strpos($data['resource_id'], ':') !== \false) {
|
49 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The resource ID component of an access" . " point ARN must not contain additional components" . " (delimited by ':').");
|
50 |
+
}
|
51 |
+
if (!self::isValidHostLabel($data['resource_id'])) {
|
52 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The resource ID in an access point ARN" . " must be a valid host label value.");
|
53 |
+
}
|
54 |
+
}
|
55 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Arn/AccessPointArnInterface.php
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Arn;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* @internal
|
7 |
+
*/
|
8 |
+
interface AccessPointArnInterface extends \WPStaging\Vendor\Aws\Arn\ArnInterface
|
9 |
+
{
|
10 |
+
public function getAccesspointName();
|
11 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Arn/Arn.php
ADDED
@@ -0,0 +1,140 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Arn;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException;
|
6 |
+
/**
|
7 |
+
* Amazon Resource Names (ARNs) uniquely identify AWS resources. The Arn class
|
8 |
+
* parses and stores a generic ARN object representation that can apply to any
|
9 |
+
* service resource.
|
10 |
+
*
|
11 |
+
* @internal
|
12 |
+
*/
|
13 |
+
class Arn implements \WPStaging\Vendor\Aws\Arn\ArnInterface
|
14 |
+
{
|
15 |
+
protected $data;
|
16 |
+
protected $string;
|
17 |
+
public static function parse($string)
|
18 |
+
{
|
19 |
+
$data = ['arn' => null, 'partition' => null, 'service' => null, 'region' => null, 'account_id' => null, 'resource' => null];
|
20 |
+
$length = \strlen($string);
|
21 |
+
$lastDelim = 0;
|
22 |
+
$numComponents = 0;
|
23 |
+
for ($i = 0; $i < $length; $i++) {
|
24 |
+
if ($numComponents < 5 && $string[$i] === ':') {
|
25 |
+
// Split components between delimiters
|
26 |
+
$data[\key($data)] = \substr($string, $lastDelim, $i - $lastDelim);
|
27 |
+
// Do not include delimiter character itself
|
28 |
+
$lastDelim = $i + 1;
|
29 |
+
\next($data);
|
30 |
+
$numComponents++;
|
31 |
+
}
|
32 |
+
if ($i === $length - 1) {
|
33 |
+
// Put the remainder in the last component.
|
34 |
+
if (\in_array($numComponents, [5])) {
|
35 |
+
$data['resource'] = \substr($string, $lastDelim);
|
36 |
+
} else {
|
37 |
+
// If there are < 5 components, put remainder in current
|
38 |
+
// component.
|
39 |
+
$data[\key($data)] = \substr($string, $lastDelim);
|
40 |
+
}
|
41 |
+
}
|
42 |
+
}
|
43 |
+
return $data;
|
44 |
+
}
|
45 |
+
public function __construct($data)
|
46 |
+
{
|
47 |
+
if (\is_array($data)) {
|
48 |
+
$this->data = $data;
|
49 |
+
} elseif (\is_string($data)) {
|
50 |
+
$this->data = static::parse($data);
|
51 |
+
} else {
|
52 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException('Constructor accepts a string or an' . ' array as an argument.');
|
53 |
+
}
|
54 |
+
static::validate($this->data);
|
55 |
+
}
|
56 |
+
public function __toString()
|
57 |
+
{
|
58 |
+
if (!isset($this->string)) {
|
59 |
+
$components = [$this->getPrefix(), $this->getPartition(), $this->getService(), $this->getRegion(), $this->getAccountId(), $this->getResource()];
|
60 |
+
$this->string = \implode(':', $components);
|
61 |
+
}
|
62 |
+
return $this->string;
|
63 |
+
}
|
64 |
+
public function getPrefix()
|
65 |
+
{
|
66 |
+
return $this->data['arn'];
|
67 |
+
}
|
68 |
+
public function getPartition()
|
69 |
+
{
|
70 |
+
return $this->data['partition'];
|
71 |
+
}
|
72 |
+
public function getService()
|
73 |
+
{
|
74 |
+
return $this->data['service'];
|
75 |
+
}
|
76 |
+
public function getRegion()
|
77 |
+
{
|
78 |
+
return $this->data['region'];
|
79 |
+
}
|
80 |
+
public function getAccountId()
|
81 |
+
{
|
82 |
+
return $this->data['account_id'];
|
83 |
+
}
|
84 |
+
public function getResource()
|
85 |
+
{
|
86 |
+
return $this->data['resource'];
|
87 |
+
}
|
88 |
+
public function toArray()
|
89 |
+
{
|
90 |
+
return $this->data;
|
91 |
+
}
|
92 |
+
/**
|
93 |
+
* Minimally restrictive generic ARN validation
|
94 |
+
*
|
95 |
+
* @param array $data
|
96 |
+
*/
|
97 |
+
protected static function validate(array $data)
|
98 |
+
{
|
99 |
+
if ($data['arn'] !== 'arn') {
|
100 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 1st component of an ARN must be" . " 'arn'.");
|
101 |
+
}
|
102 |
+
if (empty($data['partition'])) {
|
103 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 2nd component of an ARN" . " represents the partition and must not be empty.");
|
104 |
+
}
|
105 |
+
if (empty($data['service'])) {
|
106 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 3rd component of an ARN" . " represents the service and must not be empty.");
|
107 |
+
}
|
108 |
+
if (empty($data['resource'])) {
|
109 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 6th component of an ARN" . " represents the resource information and must not be empty." . " Individual service ARNs may include additional delimiters" . " to further qualify resources.");
|
110 |
+
}
|
111 |
+
}
|
112 |
+
protected static function validateAccountId($data, $arnName)
|
113 |
+
{
|
114 |
+
if (!self::isValidHostLabel($data['account_id'])) {
|
115 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 5th component of a {$arnName}" . " is required, represents the account ID, and" . " must be a valid host label.");
|
116 |
+
}
|
117 |
+
}
|
118 |
+
protected static function validateRegion($data, $arnName)
|
119 |
+
{
|
120 |
+
if (empty($data['region'])) {
|
121 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 4th component of a {$arnName}" . " represents the region and must not be empty.");
|
122 |
+
}
|
123 |
+
}
|
124 |
+
/**
|
125 |
+
* Validates whether a string component is a valid host label
|
126 |
+
*
|
127 |
+
* @param $string
|
128 |
+
* @return bool
|
129 |
+
*/
|
130 |
+
protected static function isValidHostLabel($string)
|
131 |
+
{
|
132 |
+
if (empty($string) || \strlen($string) > 63) {
|
133 |
+
return \false;
|
134 |
+
}
|
135 |
+
if ($value = \preg_match("/^[a-zA-Z0-9-]+\$/", $string)) {
|
136 |
+
return \true;
|
137 |
+
}
|
138 |
+
return \false;
|
139 |
+
}
|
140 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Arn/ArnInterface.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Arn;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Amazon Resource Names (ARNs) uniquely identify AWS resources. Classes
|
7 |
+
* implementing ArnInterface parse and store an ARN object representation.
|
8 |
+
*
|
9 |
+
* Valid ARN formats include:
|
10 |
+
*
|
11 |
+
* arn:partition:service:region:account-id:resource-id
|
12 |
+
* arn:partition:service:region:account-id:resource-type/resource-id
|
13 |
+
* arn:partition:service:region:account-id:resource-type:resource-id
|
14 |
+
*
|
15 |
+
* Some components may be omitted, depending on the service and resource type.
|
16 |
+
*
|
17 |
+
* @internal
|
18 |
+
*/
|
19 |
+
interface ArnInterface
|
20 |
+
{
|
21 |
+
public static function parse($string);
|
22 |
+
public function __toString();
|
23 |
+
public function getPrefix();
|
24 |
+
public function getPartition();
|
25 |
+
public function getService();
|
26 |
+
public function getRegion();
|
27 |
+
public function getAccountId();
|
28 |
+
public function getResource();
|
29 |
+
public function toArray();
|
30 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Arn/ArnParser.php
ADDED
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Arn;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Arn\S3\AccessPointArn as S3AccessPointArn;
|
6 |
+
use WPStaging\Vendor\Aws\Arn\ObjectLambdaAccessPointArn;
|
7 |
+
use WPStaging\Vendor\Aws\Arn\S3\MultiRegionAccessPointArn;
|
8 |
+
use WPStaging\Vendor\Aws\Arn\S3\OutpostsBucketArn;
|
9 |
+
use WPStaging\Vendor\Aws\Arn\S3\RegionalBucketArn;
|
10 |
+
use WPStaging\Vendor\Aws\Arn\S3\OutpostsAccessPointArn;
|
11 |
+
/**
|
12 |
+
* This class provides functionality to parse ARN strings and return a
|
13 |
+
* corresponding ARN object. ARN-parsing logic may be subject to change in the
|
14 |
+
* future, so this should not be relied upon for external customer usage.
|
15 |
+
*
|
16 |
+
* @internal
|
17 |
+
*/
|
18 |
+
class ArnParser
|
19 |
+
{
|
20 |
+
/**
|
21 |
+
* @param $string
|
22 |
+
* @return bool
|
23 |
+
*/
|
24 |
+
public static function isArn($string)
|
25 |
+
{
|
26 |
+
return \strpos($string, 'arn:') === 0;
|
27 |
+
}
|
28 |
+
/**
|
29 |
+
* Parses a string and returns an instance of ArnInterface. Returns a
|
30 |
+
* specific type of Arn object if it has a specific class representation
|
31 |
+
* or a generic Arn object if not.
|
32 |
+
*
|
33 |
+
* @param $string
|
34 |
+
* @return ArnInterface
|
35 |
+
*/
|
36 |
+
public static function parse($string)
|
37 |
+
{
|
38 |
+
$data = \WPStaging\Vendor\Aws\Arn\Arn::parse($string);
|
39 |
+
if ($data['service'] === 's3-object-lambda') {
|
40 |
+
return new \WPStaging\Vendor\Aws\Arn\ObjectLambdaAccessPointArn($string);
|
41 |
+
}
|
42 |
+
$resource = self::explodeResourceComponent($data['resource']);
|
43 |
+
if ($resource[0] === 'outpost') {
|
44 |
+
if (isset($resource[2]) && $resource[2] === 'bucket') {
|
45 |
+
return new \WPStaging\Vendor\Aws\Arn\S3\OutpostsBucketArn($string);
|
46 |
+
}
|
47 |
+
if (isset($resource[2]) && $resource[2] === 'accesspoint') {
|
48 |
+
return new \WPStaging\Vendor\Aws\Arn\S3\OutpostsAccessPointArn($string);
|
49 |
+
}
|
50 |
+
}
|
51 |
+
if (empty($data['region'])) {
|
52 |
+
return new \WPStaging\Vendor\Aws\Arn\S3\MultiRegionAccessPointArn($string);
|
53 |
+
}
|
54 |
+
if ($resource[0] === 'accesspoint') {
|
55 |
+
if ($data['service'] === 's3') {
|
56 |
+
return new \WPStaging\Vendor\Aws\Arn\S3\AccessPointArn($string);
|
57 |
+
}
|
58 |
+
return new \WPStaging\Vendor\Aws\Arn\AccessPointArn($string);
|
59 |
+
}
|
60 |
+
return new \WPStaging\Vendor\Aws\Arn\Arn($data);
|
61 |
+
}
|
62 |
+
private static function explodeResourceComponent($resource)
|
63 |
+
{
|
64 |
+
return \preg_split("/[\\/:]/", $resource);
|
65 |
+
}
|
66 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Arn/Exception/InvalidArnException.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Arn\Exception;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Represents a failed attempt to construct an Arn
|
7 |
+
*/
|
8 |
+
class InvalidArnException extends \RuntimeException
|
9 |
+
{
|
10 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Arn/ObjectLambdaAccessPointArn.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Arn;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* This class represents an S3 Object bucket ARN, which is in the
|
7 |
+
* following format:
|
8 |
+
*
|
9 |
+
* @internal
|
10 |
+
*/
|
11 |
+
class ObjectLambdaAccessPointArn extends \WPStaging\Vendor\Aws\Arn\AccessPointArn
|
12 |
+
{
|
13 |
+
/**
|
14 |
+
* Parses a string into an associative array of components that represent
|
15 |
+
* a ObjectLambdaAccessPointArn
|
16 |
+
*
|
17 |
+
* @param $string
|
18 |
+
* @return array
|
19 |
+
*/
|
20 |
+
public static function parse($string)
|
21 |
+
{
|
22 |
+
$data = parent::parse($string);
|
23 |
+
return parent::parseResourceTypeAndId($data);
|
24 |
+
}
|
25 |
+
/**
|
26 |
+
*
|
27 |
+
* @param array $data
|
28 |
+
*/
|
29 |
+
protected static function validate(array $data)
|
30 |
+
{
|
31 |
+
parent::validate($data);
|
32 |
+
self::validateRegion($data, 'S3 Object Lambda ARN');
|
33 |
+
self::validateAccountId($data, 'S3 Object Lambda ARN');
|
34 |
+
}
|
35 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Arn/ResourceTypeAndIdTrait.php
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Arn;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* @internal
|
7 |
+
*/
|
8 |
+
trait ResourceTypeAndIdTrait
|
9 |
+
{
|
10 |
+
public function getResourceType()
|
11 |
+
{
|
12 |
+
return $this->data['resource_type'];
|
13 |
+
}
|
14 |
+
public function getResourceId()
|
15 |
+
{
|
16 |
+
return $this->data['resource_id'];
|
17 |
+
}
|
18 |
+
protected static function parseResourceTypeAndId(array $data)
|
19 |
+
{
|
20 |
+
$resourceData = \preg_split("/[\\/:]/", $data['resource'], 2);
|
21 |
+
$data['resource_type'] = isset($resourceData[0]) ? $resourceData[0] : null;
|
22 |
+
$data['resource_id'] = isset($resourceData[1]) ? $resourceData[1] : null;
|
23 |
+
return $data;
|
24 |
+
}
|
25 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/AccessPointArn.php
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Arn\S3;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Arn\AccessPointArn as BaseAccessPointArn;
|
6 |
+
use WPStaging\Vendor\Aws\Arn\AccessPointArnInterface;
|
7 |
+
use WPStaging\Vendor\Aws\Arn\ArnInterface;
|
8 |
+
use WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException;
|
9 |
+
/**
|
10 |
+
* @internal
|
11 |
+
*/
|
12 |
+
class AccessPointArn extends \WPStaging\Vendor\Aws\Arn\AccessPointArn implements \WPStaging\Vendor\Aws\Arn\AccessPointArnInterface
|
13 |
+
{
|
14 |
+
/**
|
15 |
+
* Validation specific to AccessPointArn
|
16 |
+
*
|
17 |
+
* @param array $data
|
18 |
+
*/
|
19 |
+
public static function validate(array $data)
|
20 |
+
{
|
21 |
+
parent::validate($data);
|
22 |
+
if ($data['service'] !== 's3') {
|
23 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 3rd component of an S3 access" . " point ARN represents the region and must be 's3'.");
|
24 |
+
}
|
25 |
+
}
|
26 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/BucketArnInterface.php
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Arn\S3;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Arn\ArnInterface;
|
6 |
+
/**
|
7 |
+
* @internal
|
8 |
+
*/
|
9 |
+
interface BucketArnInterface extends \WPStaging\Vendor\Aws\Arn\ArnInterface
|
10 |
+
{
|
11 |
+
public function getBucketName();
|
12 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/MultiRegionAccessPointArn.php
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Arn\S3;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Arn\Arn;
|
6 |
+
use WPStaging\Vendor\Aws\Arn\ResourceTypeAndIdTrait;
|
7 |
+
/**
|
8 |
+
* This class represents an S3 multi-region bucket ARN, which is in the
|
9 |
+
* following format:
|
10 |
+
*
|
11 |
+
* @internal
|
12 |
+
*/
|
13 |
+
class MultiRegionAccessPointArn extends \WPStaging\Vendor\Aws\Arn\S3\AccessPointArn
|
14 |
+
{
|
15 |
+
use ResourceTypeAndIdTrait;
|
16 |
+
/**
|
17 |
+
* Parses a string into an associative array of components that represent
|
18 |
+
* a MultiRegionArn
|
19 |
+
*
|
20 |
+
* @param $string
|
21 |
+
* @return array
|
22 |
+
*/
|
23 |
+
public static function parse($string)
|
24 |
+
{
|
25 |
+
return parent::parse($string);
|
26 |
+
}
|
27 |
+
/**
|
28 |
+
*
|
29 |
+
* @param array $data
|
30 |
+
*/
|
31 |
+
public static function validate(array $data)
|
32 |
+
{
|
33 |
+
\WPStaging\Vendor\Aws\Arn\Arn::validate($data);
|
34 |
+
}
|
35 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/OutpostsAccessPointArn.php
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Arn\S3;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Arn\AccessPointArn as BaseAccessPointArn;
|
6 |
+
use WPStaging\Vendor\Aws\Arn\AccessPointArnInterface;
|
7 |
+
use WPStaging\Vendor\Aws\Arn\Arn;
|
8 |
+
use WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException;
|
9 |
+
/**
|
10 |
+
* This class represents an S3 Outposts access point ARN, which is in the
|
11 |
+
* following format:
|
12 |
+
*
|
13 |
+
* arn:{partition}:s3-outposts:{region}:{accountId}:outpost:{outpostId}:accesspoint:{accesspointName}
|
14 |
+
*
|
15 |
+
* ':' and '/' can be used interchangeably as delimiters for components after
|
16 |
+
* the account ID.
|
17 |
+
*
|
18 |
+
* @internal
|
19 |
+
*/
|
20 |
+
class OutpostsAccessPointArn extends \WPStaging\Vendor\Aws\Arn\AccessPointArn implements \WPStaging\Vendor\Aws\Arn\AccessPointArnInterface, \WPStaging\Vendor\Aws\Arn\S3\OutpostsArnInterface
|
21 |
+
{
|
22 |
+
public static function parse($string)
|
23 |
+
{
|
24 |
+
$data = parent::parse($string);
|
25 |
+
return self::parseOutpostData($data);
|
26 |
+
}
|
27 |
+
public function getOutpostId()
|
28 |
+
{
|
29 |
+
return $this->data['outpost_id'];
|
30 |
+
}
|
31 |
+
public function getAccesspointName()
|
32 |
+
{
|
33 |
+
return $this->data['accesspoint_name'];
|
34 |
+
}
|
35 |
+
private static function parseOutpostData(array $data)
|
36 |
+
{
|
37 |
+
$resourceData = \preg_split("/[\\/:]/", $data['resource_id']);
|
38 |
+
$data['outpost_id'] = isset($resourceData[0]) ? $resourceData[0] : null;
|
39 |
+
$data['accesspoint_type'] = isset($resourceData[1]) ? $resourceData[1] : null;
|
40 |
+
$data['accesspoint_name'] = isset($resourceData[2]) ? $resourceData[2] : null;
|
41 |
+
if (isset($resourceData[3])) {
|
42 |
+
$data['resource_extra'] = \implode(':', \array_slice($resourceData, 3));
|
43 |
+
}
|
44 |
+
return $data;
|
45 |
+
}
|
46 |
+
/**
|
47 |
+
* Validation specific to OutpostsAccessPointArn. Note this uses the base Arn
|
48 |
+
* class validation instead of the direct parent due to it having slightly
|
49 |
+
* differing requirements from its parent.
|
50 |
+
*
|
51 |
+
* @param array $data
|
52 |
+
*/
|
53 |
+
public static function validate(array $data)
|
54 |
+
{
|
55 |
+
\WPStaging\Vendor\Aws\Arn\Arn::validate($data);
|
56 |
+
if ($data['service'] !== 's3-outposts') {
|
57 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 3rd component of an S3 Outposts" . " access point ARN represents the service and must be" . " 's3-outposts'.");
|
58 |
+
}
|
59 |
+
self::validateRegion($data, 'S3 Outposts access point ARN');
|
60 |
+
self::validateAccountId($data, 'S3 Outposts access point ARN');
|
61 |
+
if ($data['resource_type'] !== 'outpost') {
|
62 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 6th component of an S3 Outposts" . " access point ARN represents the resource type and must be" . " 'outpost'.");
|
63 |
+
}
|
64 |
+
if (!self::isValidHostLabel($data['outpost_id'])) {
|
65 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 7th component of an S3 Outposts" . " access point ARN is required, represents the outpost ID, and" . " must be a valid host label.");
|
66 |
+
}
|
67 |
+
if ($data['accesspoint_type'] !== 'accesspoint') {
|
68 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 8th component of an S3 Outposts" . " access point ARN must be 'accesspoint'");
|
69 |
+
}
|
70 |
+
if (!self::isValidHostLabel($data['accesspoint_name'])) {
|
71 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 9th component of an S3 Outposts" . " access point ARN is required, represents the accesspoint name," . " and must be a valid host label.");
|
72 |
+
}
|
73 |
+
if (!empty($data['resource_extra'])) {
|
74 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("An S3 Outposts access point ARN" . " should only have 9 components, delimited by the characters" . " ':' and '/'. '{$data['resource_extra']}' was found after the" . " 9th component.");
|
75 |
+
}
|
76 |
+
}
|
77 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/OutpostsArnInterface.php
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Arn\S3;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Arn\ArnInterface;
|
6 |
+
/**
|
7 |
+
* @internal
|
8 |
+
*/
|
9 |
+
interface OutpostsArnInterface extends \WPStaging\Vendor\Aws\Arn\ArnInterface
|
10 |
+
{
|
11 |
+
public function getOutpostId();
|
12 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/OutpostsBucketArn.php
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws\Arn\S3;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Arn\Arn;
|
6 |
+
use WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException;
|
7 |
+
use WPStaging\Vendor\Aws\Arn\ResourceTypeAndIdTrait;
|
8 |
+
/**
|
9 |
+
* This class represents an S3 Outposts bucket ARN, which is in the
|
10 |
+
* following format:
|
11 |
+
*
|
12 |
+
* @internal
|
13 |
+
*/
|
14 |
+
class OutpostsBucketArn extends \WPStaging\Vendor\Aws\Arn\Arn implements \WPStaging\Vendor\Aws\Arn\S3\BucketArnInterface, \WPStaging\Vendor\Aws\Arn\S3\OutpostsArnInterface
|
15 |
+
{
|
16 |
+
use ResourceTypeAndIdTrait;
|
17 |
+
/**
|
18 |
+
* Parses a string into an associative array of components that represent
|
19 |
+
* a OutpostsBucketArn
|
20 |
+
*
|
21 |
+
* @param $string
|
22 |
+
* @return array
|
23 |
+
*/
|
24 |
+
public static function parse($string)
|
25 |
+
{
|
26 |
+
$data = parent::parse($string);
|
27 |
+
$data = self::parseResourceTypeAndId($data);
|
28 |
+
return self::parseOutpostData($data);
|
29 |
+
}
|
30 |
+
public function getBucketName()
|
31 |
+
{
|
32 |
+
return $this->data['bucket_name'];
|
33 |
+
}
|
34 |
+
public function getOutpostId()
|
35 |
+
{
|
36 |
+
return $this->data['outpost_id'];
|
37 |
+
}
|
38 |
+
private static function parseOutpostData(array $data)
|
39 |
+
{
|
40 |
+
$resourceData = \preg_split("/[\\/:]/", $data['resource_id'], 3);
|
41 |
+
$data['outpost_id'] = isset($resourceData[0]) ? $resourceData[0] : null;
|
42 |
+
$data['bucket_label'] = isset($resourceData[1]) ? $resourceData[1] : null;
|
43 |
+
$data['bucket_name'] = isset($resourceData[2]) ? $resourceData[2] : null;
|
44 |
+
return $data;
|
45 |
+
}
|
46 |
+
/**
|
47 |
+
*
|
48 |
+
* @param array $data
|
49 |
+
*/
|
50 |
+
public static function validate(array $data)
|
51 |
+
{
|
52 |
+
\WPStaging\Vendor\Aws\Arn\Arn::validate($data);
|
53 |
+
if ($data['service'] !== 's3-outposts') {
|
54 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 3rd component of an S3 Outposts" . " bucket ARN represents the service and must be 's3-outposts'.");
|
55 |
+
}
|
56 |
+
self::validateRegion($data, 'S3 Outposts bucket ARN');
|
57 |
+
self::validateAccountId($data, 'S3 Outposts bucket ARN');
|
58 |
+
if ($data['resource_type'] !== 'outpost') {
|
59 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 6th component of an S3 Outposts" . " bucket ARN represents the resource type and must be" . " 'outpost'.");
|
60 |
+
}
|
61 |
+
if (!self::isValidHostLabel($data['outpost_id'])) {
|
62 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 7th component of an S3 Outposts" . " bucket ARN is required, represents the outpost ID, and" . " must be a valid host label.");
|
63 |
+
}
|
64 |
+
if ($data['bucket_label'] !== 'bucket') {
|
65 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 8th component of an S3 Outposts" . " bucket ARN must be 'bucket'");
|
66 |
+
}
|
67 |
+
if (empty($data['bucket_name'])) {
|
68 |
+
throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 9th component of an S3 Outposts" . " bucket ARN represents the bucket name and must not be empty.");
|
69 |
+
}
|
70 |
+
}
|
71 |
+
}
|
vendor_wpstg/aws/aws-sdk-php/src/AwsClient.php
ADDED
@@ -0,0 +1,388 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WPStaging\Vendor\Aws;
|
4 |
+
|
5 |
+
use WPStaging\Vendor\Aws\Api\ApiProvider;
|
6 |
+
use WPStaging\Vendor\Aws\Api\DocModel;
|
7 |
+
use WPStaging\Vendor\Aws\Api\Service;
|
8 |
+
use WPStaging\Vendor\Aws\ClientSideMonitoring\ApiCallAttemptMonitoringMiddleware;
|
9 |
+
use WPStaging\Vendor\Aws\ClientSideMonitoring\ApiCallMonitoringMiddleware;
|
10 |
+
use WPStaging\Vendor\Aws\ClientSideMonitoring\ConfigurationProvider;
|
11 |
+
use WPStaging\Vendor\Aws\EndpointDiscovery\EndpointDiscoveryMiddleware;
|
12 |
+
use WPStaging\Vendor\Aws\Signature\SignatureProvider;
|
13 |
+
use WPStaging\Vendor\GuzzleHttp\Psr7\Uri;
|
14 |
+
/**
|
15 |
+
* Default AWS client implementation
|
16 |
+
*/
|
17 |
+
class AwsClient implements \WPStaging\Vendor\Aws\AwsClientInterface
|
18 |
+
{
|
19 |
+
use AwsClientTrait;
|
20 |
+
/** @var array */
|
21 |
+
private $aliases;
|
22 |
+
/** @var array */
|
23 |
+
private $config;
|
24 |
+
/** @var string */
|
25 |
+
private $region;
|
26 |
+
/** @var string */
|
27 |
+
private $endpoint;
|
28 |
+
/** @var Service */
|
29 |
+
private $api;
|
30 |
+
/** @var callable */
|
31 |
+
private $signatureProvider;
|
32 |
+
/** @var callable */
|
33 |
+
private $credentialProvider;
|
34 |
+
/** @var HandlerList */
|
35 |
+
private $handlerList;
|
36 |
+
/** @var array*/
|
37 |
+
private $defaultRequestOptions;
|
38 |
+
/**
|
39 |
+
* Get an array of client constructor arguments used by the client.
|
40 |
+
*
|
41 |
+
* @return array
|
42 |
+
*/
|
43 |
+
public static function getArguments()
|
44 |
+
{
|
45 |
+
return \WPStaging\Vendor\Aws\ClientResolver::getDefaultArguments();
|
46 |
+
}
|
47 |
+
/**
|
48 |
+
* The client constructor accepts the following options:
|
49 |
+
*
|
50 |
+
* - api_provider: (callable) An optional PHP callable that accepts a
|
51 |
+
* type, service, and version argument, and returns an array of
|
52 |
+
* corresponding configuration data. The type value can be one of api,
|
53 |
+
* waiter, or paginator.
|
54 |
+
* - credentials:
|
55 |
+
* (Aws\Credentials\CredentialsInterface|array|bool|callable) Specifies
|
56 |
+
* the credentials used to sign requests. Provide an
|
57 |
+
* Aws\Credentials\CredentialsInterface object, an associative array of
|
58 |
+
* "key", "secret", and an optional "token" key, `false` to use null
|
59 |
+
* credentials, or a callable credentials provider used to create
|
60 |
+
* credentials or return null. See Aws\Credentials\CredentialProvider for
|
61 |
+
* a list of built-in credentials providers. If no credentials are
|
62 |
+
* provided, the SDK will attempt to load them from the environment.
|
63 |
+
* - csm:
|
64 |
+
* (Aws\ClientSideMonitoring\ConfigurationInterface|array|callable) Specifies
|
65 |
+
* the credentials used to sign requests. Provide an
|
66 |
+
* Aws\ClientSideMonitoring\ConfigurationInterface object, a callable
|
67 |
+
* configuration provider used to create client-side monitoring configuration,
|
68 |
+
* `false` to disable csm, or an associative array with the following keys:
|
69 |
+
* enabled: (bool) Set to true to enable client-side monitoring, defaults
|
70 |
+
* to false; host: (string) the host location to send monitoring events to,
|
71 |
+
* defaults to 127.0.0.1; port: (int) The port used for the host connection,
|
72 |
+
* defaults to 31000; client_id: (string) An identifier for this project
|
73 |
+
* - debug: (bool|array) Set to true to display debug information when
|
74 |
+
* sending requests. Alternatively, you can provide an associative array
|
75 |
+
* with the following keys: logfn: (callable) Function that is invoked
|
76 |
+
* with log messages; stream_size: (int) When the size of a stream is
|
77 |
+
* greater than this number, the stream data will not be logged (set to
|
78 |
+
* "0" to not log any stream data); scrub_auth: (bool) Set to false to
|
79 |
+
* disable the scrubbing of auth data from the logged messages; http:
|
80 |
+
* (bool) Set to false to disable the "debug" feature of lower level HTTP
|
81 |
+
* adapters (e.g., verbose curl output).
|
82 |
+
* - stats: (bool|array) Set to true to gather transfer statistics on
|
83 |
+
* requests sent. Alternatively, you can provide an associative array with
|
84 |
+
* the following keys: retries: (bool) Set to false to disable reporting
|
85 |
+
* on retries attempted; http: (bool) Set to true to enable collecting
|
86 |
+
* statistics from lower level HTTP adapters (e.g., values returned in
|
87 |
+
* GuzzleHttp\TransferStats). HTTP handlers must support an
|
88 |
+
* `http_stats_receiver` option for this to have an effect; timer: (bool)
|
89 |
+
* Set to true to enable a command timer that reports the total wall clock
|
90 |
+
* time spent on an operation in seconds.
|
91 |
+
* - disable_host_prefix_injection: (bool) Set to true to disable host prefix
|
92 |
+
* injection logic for services that use it. This disables the entire
|
93 |
+
* prefix injection, including the portions supplied by user-defined
|
94 |
+
* parameters. Setting this flag will have no effect on services that do
|
95 |
+
* not use host prefix injection.
|
96 |
+
* - endpoint: (string) The full URI of the webservice. This is only
|
97 |
+
* required when connecting to a custom endpoint (e.g., a local version
|
98 |
+
* of S3).
|
99 |
+
* - endpoint_discovery: (Aws\EndpointDiscovery\ConfigurationInterface,
|
100 |
+
* Aws\CacheInterface, array, callable) Settings for endpoint discovery.
|
101 |
+
* Provide an instance of Aws\EndpointDiscovery\ConfigurationInterface,
|
102 |
+
* an instance Aws\CacheInterface, a callable that provides a promise for
|
103 |
+
* a Configuration object, or an associative array with the following
|
104 |
+
* keys: enabled: (bool) Set to true to enable endpoint discovery, false
|
105 |
+
* to explicitly disable it, defaults to false; cache_limit: (int) The
|
106 |
+
* maximum number of keys in the endpoints cache, defaults to 1000.
|
107 |
+
* - endpoint_provider: (callable) An optional PHP callable that
|
108 |
+
* accepts a hash of options including a "service" and "region" key and
|
109 |
+
* returns NULL or a hash of endpoint data, of which the "endpoint" key
|
110 |
+
* is required. See Aws\Endpoint\EndpointProvider for a list of built-in
|
111 |
+
* providers.
|
112 |
+
* - handler: (callable) A handler that accepts a command object,
|
113 |
+
* request object and returns a promise that is fulfilled with an
|
114 |
+
* Aws\ResultInterface object or rejected with an
|
115 |
+
* Aws\Exception\AwsException. A handler does not accept a next handler
|
116 |
+
* as it is terminal and expected to fulfill a command. If no handler is
|
117 |
+
* provided, a default Guzzle handler will be utilized.
|
118 |
+
* - http: (array, default=array(0)) Set to an array of SDK request
|
119 |
+
* options to apply to each request (e.g., proxy, verify, etc.).
|
120 |
+
* - http_handler: (callable) An HTTP handler is a function that
|
121 |
+
* accepts a PSR-7 request object and returns a promise that is fulfilled
|
122 |
+
* with a PSR-7 response object or rejected with an array of exception
|
123 |
+
* data. NOTE: This option supersedes any provided "handler" option.
|
124 |
+
* - idempotency_auto_fill: (bool|callable) Set to false to disable SDK to
|
125 |
+
* populate parameters that enabled 'idempotencyToken' trait with a random
|
126 |
+
* UUID v4 value on your behalf. Using default value 'true' still allows
|
127 |
+
* parameter value to be overwritten when provided. Note: auto-fill only
|
128 |
+
* works when cryptographically secure random bytes generator functions
|
129 |
+
* (random_bytes, openssl_random_pseudo_bytes or mcrypt_create_iv) can be
|
130 |
+
* found. You may also provide a callable source of random bytes.
|
131 |
+
* - profile: (string) Allows you to specify which profile to use when
|
132 |
+
* credentials are created from the AWS credentials file in your HOME
|
133 |
+
* directory. This setting overrides the AWS_PROFILE environment
|
134 |
+
* variable. Note: Specifying "profile" will cause the "credentials" key
|
135 |
+
* to be ignored.
|
136 |
+
* - region: (string, required) Region to connect to. See
|
137 |
+
* http://docs.aws.amazon.com/general/latest/gr/rande.html for a list of
|
138 |
+
* available regions.
|
139 |
+
* - retries: (int, Aws\Retry\ConfigurationInterface, Aws\CacheInterface,
|
140 |
+
* array, callable) Configures the retry mode and maximum number of
|
141 |
+
* allowed retries for a client (pass 0 to disable retries). Provide an
|
142 |
+
* integer for 'legacy' mode with the specified number of retries.
|
143 |
+
* Otherwise provide an instance of Aws\Retry\ConfigurationInterface, an
|
144 |
+
* instance of Aws\CacheInterface, a callable function, or an array with
|
145 |
+
* the following keys: mode: (string) Set to 'legacy', 'standard' (uses
|
146 |
+
* retry quota management), or 'adapative' (an experimental mode that adds
|
147 |
+
* client-side rate limiting to standard mode); max_attempts (int) The
|
148 |
+
* maximum number of attempts for a given request.
|
149 |
+
* - scheme: (string, default=string(5) "https") URI scheme to use when
|
150 |
+
* connecting connect. The SDK will utilize "https" endpoints (i.e.,
|
151 |
+
* utilize SSL/TLS connections) by default. You can attempt to connect to
|
152 |
+
* a service over an unencrypted "http" endpoint by setting ``scheme`` to
|
153 |
+
* "http".
|
154 |
+
* - signature_provider: (callable) A callable that accepts a signature
|
155 |
+
* version name (e.g., "v4"), a service name, and region, and
|
156 |
+
* returns a SignatureInterface object or null. This provider is used to
|
157 |
+
* create signers utilized by the client. See
|
158 |
+
* Aws\Signature\SignatureProvider for a list of built-in providers
|
159 |
+
* - signature_version: (string) A string representing a custom
|
160 |
+
* signature version to use with a service (e.g., v4). Note that
|
161 |
+
* per/operation signature version MAY override this requested signature
|
162 |
+
* version.
|
163 |
+
* - use_aws_shared_config_files: (bool, default=bool(true)) Set to false to
|
164 |
+
* disable checking for shared config file in '~/.aws/config' and
|
165 |
+
* '~/.aws/credentials'. This will override the AWS_CONFIG_FILE
|
166 |
+
* environment variable.
|
167 |
+
* - validate: (bool, default=bool(true)) Set to false to disable
|
168 |
+
* client-side parameter validation.
|
169 |
+
* - version: (string, required) The version of the webservice to
|
170 |
+
* utilize (e.g., 2006-03-01).
|
171 |
+
*
|
172 |
+
* @param array $args Client configuration arguments.
|
173 |
+
*
|
174 |
+
* @throws \InvalidArgumentException if any required options are missing or
|
175 |
+
* the service is not supported.
|
176 |
+
*/
|
177 |
+
public function __construct(array $args)
|
178 |
+
{
|
179 |
+
list($service, $exceptionClass) = $this->parseClass();
|
180 |
+
if (!isset($args['service'])) {
|
181 |
+
$args['service'] = manifest($service)['endpoint'];
|
182 |
+
}
|
183 |
+
if (!isset($args['exception_class'])) {
|
184 |
+
$args['exception_class'] = $exceptionClass;
|
185 |
+
}
|
186 |
+
$this->handlerList = new \WPStaging\Vendor\Aws\HandlerList();
|
187 |
+
$resolver = new \WPStaging\Vendor\Aws\ClientResolver(static::getArguments());
|
188 |
+
$config = $resolver->resolve($args, $this->handlerList);
|
189 |
+
$this->api = $config['api'];
|
190 |
+
$this->signatureProvider = $config['signature_provider'];
|
191 |
+
$this->endpoint = new \WPStaging\Vendor\GuzzleHttp\Psr7\Uri($config['endpoint']);
|
192 |
+
$this->credentialProvider = $config['credentials'];
|
193 |
+
$this->region = isset($config['region']) ? $config['region'] : null;
|
194 |
+
$this->config = $config['config'];
|
195 |
+
$this->defaultRequestOptions = $config['http'];
|
196 |
+
$this->addSignatureMiddleware();
|
197 |
+
$this->addInvocationId();
|
198 |
+
$this->addEndpointParameterMiddleware($args);
|
199 |
+
$this->addEndpointDiscoveryMiddleware($config, $args);
|
200 |
+
$this->loadAliases();
|
201 |
+
$this->addStreamRequestPayload();
|
202 |
+
$this->addRecursionDetection();
|
203 |
+
if (isset($args['with_resolved'])) {
|
204 |
+
$args['with_resolved']($config);
|
205 |
+
}
|
206 |
+
}
|
207 |
+
public function getHandlerList()
|
208 |
+
{
|
209 |
+
return $this->handlerList;
|
210 |
+
}
|
211 |
+
public function getConfig($option = null)
|
212 |
+
{
|
213 |
+
return $option === null ? $this->config : (isset($this->config[$option]) ? $this->config[$option] : null);
|
214 |
+
}
|
215 |
+
public function getCredentials()
|
216 |
+
{
|
217 |
+
$fn = $this->credentialProvider;
|
218 |
+
return $fn();
|
219 |
+
}
|
220 |
+
public function getEndpoint()
|
221 |
+
{
|
222 |
+
return $this->endpoint;
|
223 |
+
}
|
224 |
+
public function getRegion()
|
225 |
+
{
|
226 |
+
return $this->region;
|
227 |
+
}
|
228 |
+
public function getApi()
|
229 |
+
{
|
230 |
+
return $this->api;
|
231 |
+
}
|
232 |
+
public function getCommand($name, array $args = [])
|
233 |
+
{
|
234 |
+
// Fail fast if the command cannot be found in the description.
|
235 |
+
if (!isset($this->getApi()['operations'][$name])) {
|
236 |
+
$name = \ucfirst($name);
|
237 |
+
if (!isset($this->getApi()['operations'][$name])) {
|
238 |
+
throw new \InvalidArgumentException("Operation not found: {$name}");
|
239 |
+
}
|
240 |
+
}
|
241 |
+
if (!isset($args['@http'])) {
|
242 |
+
$args['@http'] = $this->defaultRequestOptions;
|
243 |
+
} else {
|
244 |
+
$args['@http'] += $this->defaultRequestOptions;
|
245 |
+
}
|
246 |
+
return new \WPStaging\Vendor\Aws\Command($name, $args, clone $this->getHandlerList());
|
247 |
+
}
|
248 |
+
public function __sleep()
|
249 |
+
{
|
250 |
+
throw new \RuntimeException('Instances of ' . static::class . ' cannot be serialized');
|
251 |
+
}
|
252 |
+
/**
|
253 |
+
* Get the signature_provider function of the client.
|
254 |
+
*
|
255 |
+
* @return callable
|
256 |
+
*/
|
257 |
+
public final function getSignatureProvider()
|
258 |
+
{
|
259 |
+
return $this->signatureProvider;
|
260 |
+
}
|
261 |
+
/**
|
262 |
+
* Parse the class name and setup the custom exception class of the client
|
263 |
+
* and return the "service" name of the client and "exception_class".
|
264 |
+
*
|
265 |
+
* @return array
|
266 |
+
*/
|
267 |
+
private function parseClass()
|
268 |
+
{
|
269 |
+
$klass = \get_class($this);
|
270 |
+
if ($klass === __CLASS__) {
|
271 |
+
return ['', 'WPStaging\\Vendor\\Aws\\Exception\\AwsException'];
|
272 |
+
}
|
273 |
+
$service = \substr($klass, \strrpos($klass, '\\') + 1, -6);
|
274 |
+
return [\strtolower($service), "Aws\\{$service}\\Exception\\{$service}Exception"];
|
275 |
+
}
|
276 |
+
private function addEndpointParameterMiddleware($args)
|
277 |
+
{
|
278 |
+
if (empty($args['disable_host_prefix_injection'])) {
|
279 |
+
$list = $this->getHandlerList();
|
280 |
+
$list->appendBuild(\WPStaging\Vendor\Aws\EndpointParameterMiddleware::wrap($this->api), 'endpoint_parameter');
|
281 |
+
}
|
282 |
+
}
|
283 |
+
private function addEndpointDiscoveryMiddleware($config, $args)
|
284 |
+
{
|
285 |
+
$list = $this->getHandlerList();
|
286 |
+
if (!isset($args['endpoint'])) {
|
287 |
+
$list->appendBuild(\WPStaging\Vendor\Aws\EndpointDiscovery\EndpointDiscoveryMiddleware::wrap($this, $args, $config['endpoint_discovery']), 'EndpointDiscoveryMiddleware');
|
288 |
+
}
|
289 |
+
}
|
290 |
+
private function addSignatureMiddleware()
|
291 |
+
{
|
292 |
+
$api = $this->getApi();
|
293 |
+
$provider = $this->signatureProvider;
|
294 |
+
$version = $this->config['signature_version'];
|
295 |
+
$name = $this->config['signing_name'];
|
296 |
+
$region = $this->config['signing_region'];
|
297 |
+
$resolver = static function (\WPStaging\Vendor\Aws\CommandInterface $c) use($api, $provider, $name, $region, $version) {
|
298 |
+
if (!empty($c['@context']['signing_region'])) {
|
299 |
+
$region = $c['@context']['signing_region'];
|
300 |
+
}
|
301 |
+
if (!empty($c['@context']['signing_service'])) {
|
302 |
+
$name = $c['@context']['signing_service'];
|
303 |
+
}
|
304 |
+
$authType = $api->getOperation($c->getName())['authtype'];
|
305 |
+
switch ($authType) {
|
306 |
+
case 'none':
|
307 |
+
$version = 'anonymous';
|
308 |
+
break;
|
309 |
+
case 'v4-unsigned-body':
|
310 |
+
$version = 'v4-unsigned-body';
|
311 |
+
break;
|
312 |
+
}
|
313 |
+
if (isset($c['@context']['signature_version'])) {
|
314 |
+
if ($c['@context']['signature_version'] == 'v4a') {
|
315 |
+
$version = 'v4a';
|
316 |
+
}
|
317 |
+
}
|
318 |
+
return \WPStaging\Vendor\Aws\Signature\SignatureProvider::resolve($provider, $version, $name, $region);
|
319 |
+
};
|
320 |
+
$this->handlerList->appendSign(\WPStaging\Vendor\Aws\Middleware::signer($this->credentialProvider, $resolver), 'signer');
|
321 |
+
}
|
322 |
+
private function addInvocationId()
|
323 |
+
{
|
324 |
+
// Add invocation id to each request
|
325 |
+
$this->handlerList->prependSign(\WPStaging\Vendor\Aws\Middleware::invocationId(), 'invocation-id');
|
326 |
+
}
|
327 |
+
private function loadAliases($file = null)
|
328 |
+
{
|
329 |
+
if (!isset($this->aliases)) {
|
330 |
+
if (\is_null($file)) {
|
331 |
+
$file = __DIR__ . '/data/aliases.json';
|
332 |
+
}
|
333 |
+
$aliases = \WPStaging\Vendor\Aws\load_compiled_json($file);
|
334 |
+
$serviceId = $this->api->getServiceId();
|
335 |
+
$version = $this->getApi()->getApiVersion();
|
336 |
+
if (!empty($aliases['operations'][$serviceId][$version])) {
|
337 |
+
$this->aliases = \array_flip($aliases['operations'][$serviceId][$version]);
|
338 |
+
}
|
339 |
+
}
|
340 |
+
}
|
341 |
+
private function addStreamRequestPayload()
|
342 |
+
{
|
343 |
+
$streamRequestPayloadMiddleware = \WPStaging\Vendor\Aws\StreamRequestPayloadMiddleware::wrap($this->api);
|
344 |
+
$this->handlerList->prependSign($streamRequestPayloadMiddleware, 'StreamRequestPayloadMiddleware');
|
345 |
+
}
|
346 |
+
private function addRecursionDetection()
|
347 |
+
{
|
348 |
+
// Add recursion detection header to requests
|
349 |
+
// originating in supported Lambda runtimes
|
350 |
+
$this->handlerList->appendBuild(\WPStaging\Vendor\Aws\Middleware::recursionDetection(), 'recursion-detection');
|
351 |
+
}
|
352 |
+
/**
|
353 |
+
* Returns a service model and doc model with any necessary changes
|
354 |
+
* applied.
|
355 |
+
*
|
356 |
+
* @param array $api Array of service data being documented.
|
357 |
+
* @param array $docs Array of doc model data.
|
358 |
+
*
|
359 |
+
* @return array Tuple containing a [Service, DocModel]
|
360 |
+
*
|
361 |
+
* @internal This should only used to document the service API.
|
362 |
+
* @codeCoverageIgnore
|
363 |
+
*/
|
364 |
+
public static function applyDocFilters(array $api, array $docs)
|
365 |
+
{
|
366 |
+
$aliases = \WPStaging\Vendor\Aws\load_compiled_json(__DIR__ . '/data/aliases.json');
|
367 |
+
$serviceId = $api['metadata']['serviceId'];
|
368 |
+
$version = $api['metadata']['apiVersion'];
|
369 |
+
// Replace names for any operations with SDK aliases
|
370 |
+
if (!empty($aliases['operations'][$serviceId][$version])) {
|
371 |
+
foreach ($aliases['operations'][$serviceId][$version] as $op => $alias) {
|
372 |
+
$api['operations'][$alias] = $api['operations'][$op];
|
373 |
+
$docs['operations'][$alias] = $docs['operations'][$op];
|
374 |
+
unset($api['operations'][$op], $docs['operations'][$op]);
|
375 |
+
}
|
376 |
+
}
|
377 |
+
\ksort($api['operations']);
|
378 |
+
return [new \WPStaging\Vendor\Aws\Api\Service($api, \WPStaging\Vendor\Aws\Api\ApiProvider::defaultProvider()), new \WPStaging\Vendor\
|