WooCommerce PayPal Payments - Version 1.6.0

Version Description

  • Add - Webhook status. #246 #273
  • Add - Show CC gateway in admin payments list. #236
  • Add - Add 3d secure contingency settings. #230
  • Add - Improve logging. #252 #275
  • Add - Do not send payee email. #231
  • Add - Allow customers to see and delete their saved payments in My Account. #274
  • Fix - PayPal Payments generates multiple orders. #244
  • Fix - Saved credit card does not auto fill. #242
  • Fix - Incorrect webhooks registration. #254
  • Fix - Disable funding credit cards affecting hosted fields, unset for GB. #249
  • Fix - REFUND_CAPTURE_CURRENCY_MISMATCH on multicurrency sites. #225
  • Fix - Can't checkout to certain countries with optional postcode. #224
Download this release

Release Info

Developer woothemes
Plugin Icon 128x128 WooCommerce PayPal Payments
Version 1.6.0
Comparing to
See all releases

Code changes from version 1.5.1 to 1.6.0

Files changed (109) hide show
  1. bootstrap.php +56 -0
  2. changelog.txt +14 -0
  3. modules.php +30 -0
  4. modules/ppcp-api-client/services.php +8 -3
  5. modules/ppcp-api-client/src/Endpoint/class-orderendpoint.php +1 -1
  6. modules/ppcp-api-client/src/Endpoint/class-paymenttokenendpoint.php +1 -18
  7. modules/ppcp-api-client/src/Endpoint/class-requesttrait.php +43 -1
  8. modules/ppcp-api-client/src/Endpoint/class-webhookendpoint.php +114 -41
  9. modules/ppcp-api-client/src/Entity/class-cardauthenticationresult.php +1 -1
  10. modules/ppcp-api-client/src/Entity/class-payee.php +3 -3
  11. modules/ppcp-api-client/src/Entity/class-webhook.php +28 -1
  12. modules/ppcp-api-client/src/Entity/class-webhookevent.php +170 -0
  13. modules/ppcp-api-client/src/Factory/class-payeefactory.php +2 -7
  14. modules/ppcp-api-client/src/Factory/class-paymentsourcefactory.php +2 -2
  15. modules/ppcp-api-client/src/Factory/class-purchaseunitfactory.php +15 -0
  16. modules/ppcp-api-client/src/Factory/class-webhookeventfactory.php +74 -0
  17. modules/ppcp-button/assets/css/hosted-fields.css +1 -1
  18. modules/ppcp-button/assets/js/button.js +1 -2
  19. modules/ppcp-button/assets/js/button.js.map +0 -1
  20. modules/ppcp-button/assets/js/hosted-fields.js +1 -2
  21. modules/ppcp-button/assets/js/hosted-fields.js.map +0 -1
  22. modules/ppcp-button/resources/css/hosted-fields.scss +4 -0
  23. modules/ppcp-button/resources/js/modules/ContextBootstrap/CheckoutBootstap.js +33 -3
  24. modules/ppcp-button/resources/js/modules/Renderer/CreditCardRenderer.js +89 -35
  25. modules/ppcp-button/resources/js/modules/Renderer/Renderer.js +9 -1
  26. modules/ppcp-button/services.php +11 -5
  27. modules/ppcp-button/src/Assets/class-smartbutton.php +27 -5
  28. modules/ppcp-button/src/Endpoint/class-approveorderendpoint.php +4 -1
  29. modules/ppcp-button/src/Endpoint/class-changecartendpoint.php +24 -11
  30. modules/ppcp-button/src/Endpoint/class-createorderendpoint.php +35 -7
  31. modules/ppcp-button/src/Endpoint/class-dataclientidendpoint.php +18 -4
  32. modules/ppcp-button/src/Helper/class-threedsecure.php +20 -1
  33. modules/ppcp-onboarding/services.php +3 -1
  34. modules/ppcp-onboarding/src/Endpoint/class-loginsellerendpoint.php +16 -3
  35. modules/ppcp-subscription/services.php +3 -10
  36. modules/ppcp-subscription/src/class-renewalhandler.php +1 -1
  37. modules/ppcp-subscription/src/class-subscriptionmodule.php +4 -4
  38. modules/ppcp-vaulting/assets/js/myaccount-payments.js +1 -0
  39. modules/ppcp-vaulting/extensions.php +12 -0
  40. modules/ppcp-vaulting/module.php +16 -0
  41. modules/ppcp-vaulting/package.json +23 -0
  42. modules/ppcp-vaulting/resources/js/myaccount-payments.js +41 -0
  43. modules/ppcp-vaulting/services.php +42 -0
  44. modules/ppcp-vaulting/src/Assets/class-myaccountpaymentsassets.php +67 -0
  45. modules/ppcp-vaulting/src/Endpoint/class-deletepaymenttokenendpoint.php +95 -0
  46. modules/{ppcp-subscription/src/Repository → ppcp-vaulting/src}/class-paymenttokenrepository.php +23 -16
  47. modules/ppcp-vaulting/src/class-paymenttokensrenderer.php +83 -0
  48. modules/ppcp-vaulting/src/class-vaultingmodule.php +116 -0
  49. modules/ppcp-vaulting/webpack.config.js +22 -0
  50. modules/ppcp-vaulting/yarn.lock +2219 -0
  51. modules/ppcp-wc-gateway/assets/js/gateway-settings.js +1 -2
  52. modules/ppcp-wc-gateway/assets/js/gateway-settings.js.map +0 -1
  53. modules/ppcp-wc-gateway/package.json +5 -5
  54. modules/ppcp-wc-gateway/services.php +109 -17
  55. modules/ppcp-wc-gateway/src/Gateway/class-creditcardgateway.php +86 -11
  56. modules/ppcp-wc-gateway/src/Gateway/class-paypalgateway.php +40 -8
  57. modules/ppcp-wc-gateway/src/Gateway/class-processpaymenttrait.php +20 -0
  58. modules/ppcp-wc-gateway/src/Notice/class-dccwithoutpaypaladminnotice.php +101 -0
  59. modules/ppcp-wc-gateway/src/Processor/class-orderprocessor.php +1 -1
  60. modules/ppcp-wc-gateway/src/Processor/class-refundprocessor.php +1 -1
  61. modules/ppcp-wc-gateway/src/Settings/class-pagematchertrait.php +49 -0
  62. modules/ppcp-wc-gateway/src/Settings/class-sectionsrenderer.php +22 -8
  63. modules/ppcp-wc-gateway/src/Settings/class-settingslistener.php +72 -41
  64. modules/ppcp-wc-gateway/src/Settings/class-settingsrenderer.php +74 -67
  65. modules/ppcp-wc-gateway/src/class-wcgatewaymodule.php +13 -60
  66. modules/ppcp-wc-gateway/webpack.config.js +1 -1
  67. modules/ppcp-wc-gateway/yarn.lock +1222 -3033
  68. modules/ppcp-webhooks/assets/css/status-page.css +1 -0
  69. modules/ppcp-webhooks/assets/js/status-page-style.js +1 -0
  70. modules/ppcp-webhooks/assets/js/status-page.js +1 -0
  71. modules/ppcp-webhooks/extensions.php +58 -1
  72. modules/ppcp-webhooks/package.json +23 -0
  73. modules/ppcp-webhooks/resources/css/status-page.scss +34 -0
  74. modules/ppcp-webhooks/resources/js/status-page.js +148 -0
  75. modules/ppcp-webhooks/services.php +140 -6
  76. modules/ppcp-webhooks/src/Endpoint/class-resubscribeendpoint.php +79 -0
  77. modules/ppcp-webhooks/src/Endpoint/class-simulateendpoint.php +77 -0
  78. modules/ppcp-webhooks/src/Endpoint/class-simulationstateendpoint.php +68 -0
  79. modules/ppcp-webhooks/src/Status/Assets/class-webhooksstatuspageassets.php +110 -0
  80. modules/ppcp-webhooks/src/Status/class-webhooksimulation.php +180 -0
  81. modules/ppcp-webhooks/src/Status/class-webhooksstatuspage.php +18 -0
  82. modules/ppcp-webhooks/src/class-incomingwebhookendpoint.php +80 -34
  83. modules/ppcp-webhooks/src/class-webhookmodule.php +73 -0
  84. modules/ppcp-webhooks/src/class-webhookregistrar.php +16 -1
  85. modules/ppcp-webhooks/webpack.config.js +36 -0
  86. modules/ppcp-webhooks/yarn.lock +2219 -0
  87. readme.txt +15 -1
  88. vendor/autoload.php +1 -1
  89. vendor/composer/ClassLoader.php +102 -11
  90. vendor/composer/InstalledVersions.php +6 -6
  91. vendor/composer/autoload_classmap.php +15 -1
  92. vendor/composer/autoload_real.php +7 -7
  93. vendor/composer/autoload_static.php +19 -5
  94. vendor/composer/installed.json +7 -7
  95. vendor/composer/installed.php +5 -5
  96. vendor/dhii/module-interface/.env.example +0 -6
  97. vendor/dhii/module-interface/CHANGELOG.md +0 -32
  98. vendor/dhii/module-interface/LICENSE +0 -21
  99. vendor/dhii/module-interface/README.md +0 -290
  100. vendor/dhii/module-interface/docker-compose.yml +0 -29
  101. vendor/dhii/module-interface/docker/Dockerfile +0 -39
  102. vendor/dhii/module-interface/phpcs.xml.dist +0 -50
  103. vendor/dhii/module-interface/phpunit.xml.dist +0 -20
  104. vendor/dhii/module-interface/psalm.xml.dist +0 -152
  105. vendor/dhii/module-interface/tests/bootstrap.php +0 -5
  106. vendor/dhii/module-interface/tests/stubs/GetImplementingMockBuilderCapableTrait.php +0 -48
  107. vendor/dhii/module-interface/tests/unit/Exception/ModuleExceptionInterfaceTest.php +0 -64
  108. vendor/dhii/module-interface/tests/unit/ModuleAwareInterfaceTest.php +0 -46
  109. vendor/dhii/module-interface/tests/unit/ModuleInterfaceTest.php +0 -38
bootstrap.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Bootstraps the modular app.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce
6
+ */
7
+
8
+ use Dhii\Container\CachingContainer;
9
+ use Dhii\Container\CompositeCachingServiceProvider;
10
+ use Dhii\Container\CompositeContainer;
11
+ use Dhii\Container\DelegatingContainer;
12
+ use Dhii\Container\ProxyContainer;
13
+ use Dhii\Modular\Module\ModuleInterface;
14
+ use Interop\Container\ServiceProviderInterface;
15
+ use Psr\Container\ContainerInterface;
16
+
17
+ return function (
18
+ string $root_dir,
19
+ ContainerInterface ...$additional_containers
20
+ ): ContainerInterface {
21
+ $modules = ( require "$root_dir/modules.php" )( $root_dir );
22
+
23
+ // Use this filter to add custom module or remove some of existing ones.
24
+ // Modules able to access container, add services and modify existing ones.
25
+ $modules = apply_filters( 'woocommerce_paypal_payments_modules', $modules );
26
+
27
+ $providers = array_map(
28
+ function ( ModuleInterface $module ): ServiceProviderInterface {
29
+ return $module->setup();
30
+ },
31
+ $modules
32
+ );
33
+
34
+ $provider = new CompositeCachingServiceProvider( $providers );
35
+ $proxy_container = new ProxyContainer();
36
+ // TODO: caching does not work currently,
37
+ // may want to consider fixing it later (pass proxy as parent to DelegatingContainer)
38
+ // for now not fixed since we were using this behavior for long time and fixing it now may break things.
39
+ $container = new DelegatingContainer( $provider );
40
+ $app_container = new CachingContainer(
41
+ new CompositeContainer(
42
+ array_merge(
43
+ $additional_containers,
44
+ array( $container )
45
+ )
46
+ )
47
+ );
48
+ $proxy_container->setInnerContainer( $app_container );
49
+
50
+ foreach ( $modules as $module ) {
51
+ /* @var $module ModuleInterface module */
52
+ $module->run( $app_container );
53
+ }
54
+
55
+ return $app_container;
56
+ };
changelog.txt CHANGED
@@ -1,5 +1,19 @@
1
  *** Changelog ***
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  = 1.5.1 - 2021-08-19 =
4
  * Fix - Set 3DS contingencies to "SCA_WHEN_REQUIRED". #178
5
  * Fix - Plugin conflict blocking line item details. #221
1
  *** Changelog ***
2
 
3
+ = 1.6.0 - 2021-09-29 =
4
+ * Add - Webhook status. #246 #273
5
+ * Add - Show CC gateway in admin payments list. #236
6
+ * Add - Add 3d secure contingency settings. #230
7
+ * Add - Improve logging. #252 #275
8
+ * Add - Do not send payee email. #231
9
+ * Add - Allow customers to see and delete their saved payments in My Account. #274
10
+ * Fix - PayPal Payments generates multiple orders. #244
11
+ * Fix - Saved credit card does not auto fill. #242
12
+ * Fix - Incorrect webhooks registration. #254
13
+ * Fix - Disable funding credit cards affecting hosted fields, unset for GB. #249
14
+ * Fix - REFUND_CAPTURE_CURRENCY_MISMATCH on multicurrency sites. #225
15
+ * Fix - Can't checkout to certain countries with optional postcode. #224
16
+
17
  = 1.5.1 - 2021-08-19 =
18
  * Fix - Set 3DS contingencies to "SCA_WHEN_REQUIRED". #178
19
  * Fix - Plugin conflict blocking line item details. #221
modules.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The list of modules.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce
6
+ */
7
+
8
+ use WooCommerce\PayPalCommerce\PluginModule;
9
+
10
+ return function ( string $root_dir ): iterable {
11
+ $modules_dir = "$root_dir/modules";
12
+
13
+ $modules = array(
14
+ new PluginModule(),
15
+ ( require "$modules_dir/woocommerce-logging/module.php" )(),
16
+ ( require "$modules_dir/ppcp-admin-notices/module.php" )(),
17
+ ( require "$modules_dir/ppcp-api-client/module.php" )(),
18
+ ( require "$modules_dir/ppcp-button/module.php" )(),
19
+ ( require "$modules_dir/ppcp-compat/module.php" )(),
20
+ ( require "$modules_dir/ppcp-onboarding/module.php" )(),
21
+ ( require "$modules_dir/ppcp-session/module.php" )(),
22
+ ( require "$modules_dir/ppcp-status-report/module.php" )(),
23
+ ( require "$modules_dir/ppcp-subscription/module.php" )(),
24
+ ( require "$modules_dir/ppcp-wc-gateway/module.php" )(),
25
+ ( require "$modules_dir/ppcp-webhooks/module.php" )(),
26
+ ( require "$modules_dir/ppcp-vaulting/module.php" )(),
27
+ );
28
+
29
+ return $modules;
30
+ };
modules/ppcp-api-client/services.php CHANGED
@@ -35,6 +35,7 @@ use WooCommerce\PayPalCommerce\ApiClient\Factory\PaymentTokenFactory;
35
  use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
36
  use WooCommerce\PayPalCommerce\ApiClient\Factory\SellerStatusFactory;
37
  use WooCommerce\PayPalCommerce\ApiClient\Factory\ShippingFactory;
 
38
  use WooCommerce\PayPalCommerce\ApiClient\Factory\WebhookFactory;
39
  use WooCommerce\PayPalCommerce\ApiClient\Helper\Cache;
40
  use WooCommerce\PayPalCommerce\ApiClient\Helper\DccApplies;
@@ -71,19 +72,19 @@ return array(
71
  return 'WC-';
72
  },
73
  'api.bearer' => static function ( $container ): Bearer {
74
-
75
  $cache = new Cache( 'ppcp-paypal-bearer' );
76
  $key = $container->get( 'api.key' );
77
  $secret = $container->get( 'api.secret' );
78
-
79
  $host = $container->get( 'api.host' );
80
  $logger = $container->get( 'woocommerce.logger.woocommerce' );
 
81
  return new PayPalBearer(
82
  $cache,
83
  $host,
84
  $key,
85
  $secret,
86
- $logger
 
87
  );
88
  },
89
  'api.endpoint.partners' => static function ( $container ) : PartnersEndpoint {
@@ -114,6 +115,7 @@ return array(
114
  $container->get( 'api.host' ),
115
  $container->get( 'api.bearer' ),
116
  $container->get( 'api.factory.webhook' ),
 
117
  $container->get( 'woocommerce.logger.woocommerce' )
118
  );
119
  },
@@ -214,6 +216,9 @@ return array(
214
  'api.factory.webhook' => static function ( $container ): WebhookFactory {
215
  return new WebhookFactory();
216
  },
 
 
 
217
  'api.factory.capture' => static function ( $container ): CaptureFactory {
218
 
219
  $amount_factory = $container->get( 'api.factory.amount' );
35
  use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
36
  use WooCommerce\PayPalCommerce\ApiClient\Factory\SellerStatusFactory;
37
  use WooCommerce\PayPalCommerce\ApiClient\Factory\ShippingFactory;
38
+ use WooCommerce\PayPalCommerce\ApiClient\Factory\WebhookEventFactory;
39
  use WooCommerce\PayPalCommerce\ApiClient\Factory\WebhookFactory;
40
  use WooCommerce\PayPalCommerce\ApiClient\Helper\Cache;
41
  use WooCommerce\PayPalCommerce\ApiClient\Helper\DccApplies;
72
  return 'WC-';
73
  },
74
  'api.bearer' => static function ( $container ): Bearer {
 
75
  $cache = new Cache( 'ppcp-paypal-bearer' );
76
  $key = $container->get( 'api.key' );
77
  $secret = $container->get( 'api.secret' );
 
78
  $host = $container->get( 'api.host' );
79
  $logger = $container->get( 'woocommerce.logger.woocommerce' );
80
+ $settings = $container->get( 'wcgateway.settings' );
81
  return new PayPalBearer(
82
  $cache,
83
  $host,
84
  $key,
85
  $secret,
86
+ $logger,
87
+ $settings
88
  );
89
  },
90
  'api.endpoint.partners' => static function ( $container ) : PartnersEndpoint {
115
  $container->get( 'api.host' ),
116
  $container->get( 'api.bearer' ),
117
  $container->get( 'api.factory.webhook' ),
118
+ $container->get( 'api.factory.webhook-event' ),
119
  $container->get( 'woocommerce.logger.woocommerce' )
120
  );
121
  },
216
  'api.factory.webhook' => static function ( $container ): WebhookFactory {
217
  return new WebhookFactory();
218
  },
219
+ 'api.factory.webhook-event' => static function ( $container ): WebhookEventFactory {
220
+ return new WebhookEventFactory();
221
+ },
222
  'api.factory.capture' => static function ( $container ): CaptureFactory {
223
 
224
  $amount_factory = $container->get( 'api.factory.amount' );
modules/ppcp-api-client/src/Endpoint/class-orderendpoint.php CHANGED
@@ -390,7 +390,7 @@ class OrderEndpoint {
390
  }
391
  $json = json_decode( $response['body'] );
392
  $status_code = (int) wp_remote_retrieve_response_code( $response );
393
- if ( 201 !== $status_code ) {
394
  if ( false !== strpos( $response['body'], ErrorResponse::ORDER_ALREADY_AUTHORIZED ) ) {
395
  return $this->order( $order->id() );
396
  }
390
  }
391
  $json = json_decode( $response['body'] );
392
  $status_code = (int) wp_remote_retrieve_response_code( $response );
393
+ if ( ! in_array( $status_code, array( 200, 201 ), true ) ) {
394
  if ( false !== strpos( $response['body'], ErrorResponse::ORDER_ALREADY_AUTHORIZED ) ) {
395
  return $this->order( $order->id() );
396
  }
modules/ppcp-api-client/src/Endpoint/class-paymenttokenendpoint.php CHANGED
@@ -139,24 +139,7 @@ class PaymentTokenEndpoint {
139
  foreach ( $json->payment_tokens as $token_value ) {
140
  $tokens[] = $this->factory->from_paypal_response( $token_value );
141
  }
142
- if ( empty( $tokens ) ) {
143
- $error = new RuntimeException(
144
- sprintf(
145
- // translators: %d is the customer id.
146
- __( 'No token stored for customer %d.', 'woocommerce-paypal-payments' ),
147
- $id
148
- )
149
- );
150
- $this->logger->log(
151
- 'warning',
152
- $error->getMessage(),
153
- array(
154
- 'args' => $args,
155
- 'response' => $response,
156
- )
157
- );
158
- throw $error;
159
- }
160
  return $tokens;
161
  }
162
 
139
  foreach ( $json->payment_tokens as $token_value ) {
140
  $tokens[] = $this->factory->from_paypal_response( $token_value );
141
  }
142
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  return $tokens;
144
  }
145
 
modules/ppcp-api-client/src/Endpoint/class-requesttrait.php CHANGED
@@ -36,6 +36,48 @@ trait RequestTrait {
36
  $args['headers']['PayPal-Partner-Attribution-Id'] = 'Woo_PPCP';
37
  }
38
 
39
- return wp_remote_get( $url, $args );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  }
41
  }
36
  $args['headers']['PayPal-Partner-Attribution-Id'] = 'Woo_PPCP';
37
  }
38
 
39
+ $response = wp_remote_get( $url, $args );
40
+ $this->logger->debug( $this->request_response_string( $url, $args, $response ) );
41
+ return $response;
42
+ }
43
+
44
+ /**
45
+ * Returns request and response information as string.
46
+ *
47
+ * @param string $url The request URL.
48
+ * @param array $args The request arguments.
49
+ * @param array $response The response.
50
+ * @return string
51
+ */
52
+ private function request_response_string( string $url, array $args, array $response ): string {
53
+ $method = $args['method'] ?? '';
54
+ $output = $method . ' ' . $url . "\n";
55
+ if ( isset( $args['body'] ) ) {
56
+ if ( ! in_array(
57
+ $url,
58
+ array(
59
+ trailingslashit( $this->host ) . 'v1/oauth2/token/',
60
+ trailingslashit( $this->host ) . 'v1/oauth2/token?grant_type=client_credentials',
61
+ ),
62
+ true
63
+ ) ) {
64
+ $output .= 'Request Body: ' . wc_print_r( $args['body'], true ) . "\n";
65
+ }
66
+ }
67
+
68
+ if ( isset( $response['headers']->getAll()['paypal-debug-id'] ) ) {
69
+ $output .= 'Response Debug ID: ' . $response['headers']->getAll()['paypal-debug-id'] . "\n";
70
+ }
71
+ if ( isset( $response['response'] ) ) {
72
+ $output .= 'Response: ' . wc_print_r( $response['response'], true ) . "\n";
73
+
74
+ if ( isset( $response['body'] )
75
+ && isset( $response['response']['code'] )
76
+ && ! in_array( $response['response']['code'], array( 200, 201, 202, 204 ), true ) ) {
77
+ $output .= 'Response Body: ' . wc_print_r( $response['body'], true ) . "\n";
78
+ }
79
+ }
80
+
81
+ return $output;
82
  }
83
  }
modules/ppcp-api-client/src/Endpoint/class-webhookendpoint.php CHANGED
@@ -11,8 +11,10 @@ namespace WooCommerce\PayPalCommerce\ApiClient\Endpoint;
11
 
12
  use WooCommerce\PayPalCommerce\ApiClient\Authentication\Bearer;
13
  use WooCommerce\PayPalCommerce\ApiClient\Entity\Webhook;
 
14
  use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
15
  use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
 
16
  use WooCommerce\PayPalCommerce\ApiClient\Factory\WebhookFactory;
17
  use Psr\Log\LoggerInterface;
18
 
@@ -44,6 +46,13 @@ class WebhookEndpoint {
44
  */
45
  private $webhook_factory;
46
 
 
 
 
 
 
 
 
47
  /**
48
  * The logger.
49
  *
@@ -54,22 +63,25 @@ class WebhookEndpoint {
54
  /**
55
  * WebhookEndpoint constructor.
56
  *
57
- * @param string $host The host.
58
- * @param Bearer $bearer The bearer.
59
- * @param WebhookFactory $webhook_factory The webhook factory.
60
- * @param LoggerInterface $logger The logger.
 
61
  */
62
  public function __construct(
63
  string $host,
64
  Bearer $bearer,
65
  WebhookFactory $webhook_factory,
 
66
  LoggerInterface $logger
67
  ) {
68
 
69
- $this->host = $host;
70
- $this->bearer = $bearer;
71
- $this->webhook_factory = $webhook_factory;
72
- $this->logger = $logger;
 
73
  }
74
 
75
  /**
@@ -79,14 +91,14 @@ class WebhookEndpoint {
79
  *
80
  * @return Webhook
81
  * @throws RuntimeException If the request fails.
 
82
  */
83
  public function create( Webhook $hook ): Webhook {
84
- /**
85
- * An hook, which has an ID has already been created.
86
- */
87
  if ( $hook->id() ) {
88
  return $hook;
89
  }
 
90
  $bearer = $this->bearer->bearer();
91
  $url = trailingslashit( $this->host ) . 'v1/notifications/webhooks';
92
  $args = array(
@@ -100,42 +112,64 @@ class WebhookEndpoint {
100
  $response = $this->request( $url, $args );
101
 
102
  if ( is_wp_error( $response ) ) {
103
- $error = new RuntimeException(
104
  __( 'Not able to create a webhook.', 'woocommerce-paypal-payments' )
105
  );
106
- $this->logger->log(
107
- 'warning',
108
- $error->getMessage(),
109
- array(
110
- 'args' => $args,
111
- 'response' => $response,
112
- )
113
- );
114
- throw $error;
115
  }
116
 
117
  $json = json_decode( $response['body'] );
118
  $status_code = (int) wp_remote_retrieve_response_code( $response );
119
  if ( 201 !== $status_code ) {
120
- $error = new PayPalApiException(
121
  $json,
122
  $status_code
123
  );
124
- $this->logger->log(
125
- 'warning',
126
- $error->getMessage(),
127
- array(
128
- 'args' => $args,
129
- 'response' => $response,
130
- )
131
- );
132
- throw $error;
133
  }
134
 
135
  $hook = $this->webhook_factory->from_paypal_response( $json );
136
  return $hook;
137
  }
138
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  /**
140
  * Deletes a webhook.
141
  *
@@ -160,22 +194,61 @@ class WebhookEndpoint {
160
  $response = $this->request( $url, $args );
161
 
162
  if ( is_wp_error( $response ) ) {
163
- $error = new RuntimeException(
164
  __( 'Not able to delete the webhook.', 'woocommerce-paypal-payments' )
165
  );
166
- $this->logger->log(
167
- 'warning',
168
- $error->getMessage(),
169
- array(
170
- 'args' => $args,
171
- 'response' => $response,
172
- )
173
- );
174
- throw $error;
175
  }
176
  return wp_remote_retrieve_response_code( $response ) === 204;
177
  }
178
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
179
  /**
180
  * Verifies if a webhook event is legitimate.
181
  *
11
 
12
  use WooCommerce\PayPalCommerce\ApiClient\Authentication\Bearer;
13
  use WooCommerce\PayPalCommerce\ApiClient\Entity\Webhook;
14
+ use WooCommerce\PayPalCommerce\ApiClient\Entity\WebhookEvent;
15
  use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
16
  use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
17
+ use WooCommerce\PayPalCommerce\ApiClient\Factory\WebhookEventFactory;
18
  use WooCommerce\PayPalCommerce\ApiClient\Factory\WebhookFactory;
19
  use Psr\Log\LoggerInterface;
20
 
46
  */
47
  private $webhook_factory;
48
 
49
+ /**
50
+ * The webhook event factory.
51
+ *
52
+ * @var WebhookEventFactory
53
+ */
54
+ private $webhook_event_factory;
55
+
56
  /**
57
  * The logger.
58
  *
63
  /**
64
  * WebhookEndpoint constructor.
65
  *
66
+ * @param string $host The host.
67
+ * @param Bearer $bearer The bearer.
68
+ * @param WebhookFactory $webhook_factory The webhook factory.
69
+ * @param WebhookEventFactory $webhook_event_factory The webhook event factory.
70
+ * @param LoggerInterface $logger The logger.
71
  */
72
  public function __construct(
73
  string $host,
74
  Bearer $bearer,
75
  WebhookFactory $webhook_factory,
76
+ WebhookEventFactory $webhook_event_factory,
77
  LoggerInterface $logger
78
  ) {
79
 
80
+ $this->host = $host;
81
+ $this->bearer = $bearer;
82
+ $this->webhook_factory = $webhook_factory;
83
+ $this->webhook_event_factory = $webhook_event_factory;
84
+ $this->logger = $logger;
85
  }
86
 
87
  /**
91
  *
92
  * @return Webhook
93
  * @throws RuntimeException If the request fails.
94
+ * @throws PayPalApiException If the request fails.
95
  */
96
  public function create( Webhook $hook ): Webhook {
97
+ // The hook was already created.
 
 
98
  if ( $hook->id() ) {
99
  return $hook;
100
  }
101
+
102
  $bearer = $this->bearer->bearer();
103
  $url = trailingslashit( $this->host ) . 'v1/notifications/webhooks';
104
  $args = array(
112
  $response = $this->request( $url, $args );
113
 
114
  if ( is_wp_error( $response ) ) {
115
+ throw new RuntimeException(
116
  __( 'Not able to create a webhook.', 'woocommerce-paypal-payments' )
117
  );
 
 
 
 
 
 
 
 
 
118
  }
119
 
120
  $json = json_decode( $response['body'] );
121
  $status_code = (int) wp_remote_retrieve_response_code( $response );
122
  if ( 201 !== $status_code ) {
123
+ throw new PayPalApiException(
124
  $json,
125
  $status_code
126
  );
 
 
 
 
 
 
 
 
 
127
  }
128
 
129
  $hook = $this->webhook_factory->from_paypal_response( $json );
130
  return $hook;
131
  }
132
 
133
+ /**
134
+ * Loads the webhooks list for the current auth token.
135
+ *
136
+ * @return Webhook[]
137
+ * @throws RuntimeException If the request fails.
138
+ * @throws PayPalApiException If the request fails.
139
+ */
140
+ public function list(): array {
141
+ $bearer = $this->bearer->bearer();
142
+ $url = trailingslashit( $this->host ) . 'v1/notifications/webhooks';
143
+ $args = array(
144
+ 'method' => 'GET',
145
+ 'headers' => array(
146
+ 'Authorization' => 'Bearer ' . $bearer->token(),
147
+ 'Content-Type' => 'application/json',
148
+ ),
149
+ );
150
+ $response = $this->request( $url, $args );
151
+
152
+ if ( is_wp_error( $response ) ) {
153
+ throw new RuntimeException(
154
+ __( 'Not able to load webhooks list.', 'woocommerce-paypal-payments' )
155
+ );
156
+ }
157
+
158
+ $json = json_decode( $response['body'] );
159
+ $status_code = (int) wp_remote_retrieve_response_code( $response );
160
+ if ( 200 !== $status_code ) {
161
+ throw new PayPalApiException(
162
+ $json,
163
+ $status_code
164
+ );
165
+ }
166
+
167
+ return array_map(
168
+ array( $this->webhook_factory, 'from_paypal_response' ),
169
+ $json->webhooks
170
+ );
171
+ }
172
+
173
  /**
174
  * Deletes a webhook.
175
  *
194
  $response = $this->request( $url, $args );
195
 
196
  if ( is_wp_error( $response ) ) {
197
+ throw new RuntimeException(
198
  __( 'Not able to delete the webhook.', 'woocommerce-paypal-payments' )
199
  );
 
 
 
 
 
 
 
 
 
200
  }
201
  return wp_remote_retrieve_response_code( $response ) === 204;
202
  }
203
 
204
+ /**
205
+ * Request a simulated webhook to be sent.
206
+ *
207
+ * @param Webhook $hook The webhook subscription to use.
208
+ * @param string $event_type The event type, such as CHECKOUT.ORDER.APPROVED.
209
+ * @param string|null $resource_version The event resource version, such as 2.0.
210
+ *
211
+ * @return WebhookEvent
212
+ * @throws RuntimeException If the request fails.
213
+ * @throws PayPalApiException If the request fails.
214
+ */
215
+ public function simulate( Webhook $hook, string $event_type, ?string $resource_version ): WebhookEvent {
216
+ $bearer = $this->bearer->bearer();
217
+ $url = trailingslashit( $this->host ) . 'v1/notifications/simulate-event';
218
+ $data = array(
219
+ 'webhook_id' => $hook->id(),
220
+ 'event_type' => $event_type,
221
+ );
222
+ if ( $resource_version ) {
223
+ $data['resource_version'] = $resource_version;
224
+ }
225
+ $args = array(
226
+ 'method' => 'POST',
227
+ 'headers' => array(
228
+ 'Authorization' => 'Bearer ' . $bearer->token(),
229
+ 'Content-Type' => 'application/json',
230
+ ),
231
+ 'body' => wp_json_encode( $data ),
232
+ );
233
+ $response = $this->request( $url, $args );
234
+
235
+ if ( is_wp_error( $response ) ) {
236
+ throw new RuntimeException(
237
+ __( 'Not able to simulate webhook.', 'woocommerce-paypal-payments' )
238
+ );
239
+ }
240
+ $json = json_decode( $response['body'] );
241
+ $status_code = (int) wp_remote_retrieve_response_code( $response );
242
+ if ( 202 !== $status_code ) {
243
+ throw new PayPalApiException(
244
+ $json,
245
+ $status_code
246
+ );
247
+ }
248
+
249
+ return $this->webhook_event_factory->from_paypal_response( $json );
250
+ }
251
+
252
  /**
253
  * Verifies if a webhook event is legitimate.
254
  *
modules/ppcp-api-client/src/Entity/class-cardauthenticationresult.php CHANGED
@@ -112,7 +112,7 @@ class CardAuthenticationResult {
112
  $data['liability_shift'] = $this->liability_shift();
113
  $data['three_d_secure'] = array(
114
  'enrollment_status' => $this->enrollment_status(),
115
- 'authentication_result' => $this->authentication_result(),
116
  );
117
  return $data;
118
  }
112
  $data['liability_shift'] = $this->liability_shift();
113
  $data['three_d_secure'] = array(
114
  'enrollment_status' => $this->enrollment_status(),
115
+ 'authentication_status' => $this->authentication_result(),
116
  );
117
  return $data;
118
  }
modules/ppcp-api-client/src/Entity/class-payee.php CHANGED
@@ -68,11 +68,11 @@ class Payee {
68
  * @return array
69
  */
70
  public function to_array(): array {
71
- $data = array(
72
- 'email_address' => $this->email(),
73
- );
74
  if ( $this->merchant_id ) {
75
  $data['merchant_id'] = $this->merchant_id();
 
 
76
  }
77
  return $data;
78
  }
68
  * @return array
69
  */
70
  public function to_array(): array {
71
+ $data = array();
 
 
72
  if ( $this->merchant_id ) {
73
  $data['merchant_id'] = $this->merchant_id();
74
+ } else {
75
+ $data['email_address'] = $this->email();
76
  }
77
  return $data;
78
  }
modules/ppcp-api-client/src/Entity/class-webhook.php CHANGED
@@ -9,6 +9,8 @@ declare(strict_types=1);
9
 
10
  namespace WooCommerce\PayPalCommerce\ApiClient\Entity;
11
 
 
 
12
  /**
13
  * Class Webhook
14
  */
@@ -71,13 +73,38 @@ class Webhook {
71
  /**
72
  * Returns the event types.
73
  *
74
- * @return array
75
  */
76
  public function event_types(): array {
77
 
78
  return $this->event_types;
79
  }
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  /**
82
  * Returns the object as array.
83
  *
9
 
10
  namespace WooCommerce\PayPalCommerce\ApiClient\Entity;
11
 
12
+ use stdClass;
13
+
14
  /**
15
  * Class Webhook
16
  */
73
  /**
74
  * Returns the event types.
75
  *
76
+ * @return stdClass[]
77
  */
78
  public function event_types(): array {
79
 
80
  return $this->event_types;
81
  }
82
 
83
+ /**
84
+ * Returns the human-friendly names of the event types.
85
+ *
86
+ * @return string[]
87
+ */
88
+ public function humanfriendly_event_names(): array {
89
+
90
+ return array_map(
91
+ function ( $event ): string {
92
+ return Webhook::get_humanfriendly_event_name( $event->name );
93
+ },
94
+ $this->event_types
95
+ );
96
+ }
97
+
98
+ /**
99
+ * Converts event names to more human-friendly form.
100
+ *
101
+ * @param string $name The event name like 'CHECKOUT.ORDER.APPROVED'.
102
+ * @return string
103
+ */
104
+ public static function get_humanfriendly_event_name( string $name ): string {
105
+ return strtolower( str_replace( '.', ' ', $name ) );
106
+ }
107
+
108
  /**
109
  * Returns the object as array.
110
  *
modules/ppcp-api-client/src/Entity/class-webhookevent.php ADDED
@@ -0,0 +1,170 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The Webhook event notification object.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce\ApiClient\Entity
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace WooCommerce\PayPalCommerce\ApiClient\Entity;
11
+
12
+ use DateTime;
13
+ use stdClass;
14
+
15
+ /**
16
+ * Class WebhookEvent
17
+ */
18
+ class WebhookEvent {
19
+
20
+ /**
21
+ * The ID of the event notification.
22
+ *
23
+ * @var string
24
+ */
25
+ private $id;
26
+
27
+ /**
28
+ * The date and time when the event notification was created.
29
+ *
30
+ * @var DateTime|null
31
+ */
32
+ private $create_time;
33
+
34
+ /**
35
+ * The name of the resource related to the webhook notification event, such as 'checkout-order'.
36
+ *
37
+ * @var string
38
+ */
39
+ private $resource_type;
40
+
41
+ /**
42
+ * The event version in the webhook notification, such as '1.0'.
43
+ *
44
+ * @var string
45
+ */
46
+ private $event_version;
47
+
48
+ /**
49
+ * The event that triggered the webhook event notification, such as 'CHECKOUT.ORDER.APPROVED'.
50
+ *
51
+ * @var string
52
+ */
53
+ private $event_type;
54
+
55
+ /**
56
+ * A summary description for the event notification.
57
+ *
58
+ * @var string
59
+ */
60
+ private $summary;
61
+
62
+ /**
63
+ * The resource version in the webhook notification, such as '1.0'.
64
+ *
65
+ * @var string
66
+ */
67
+ private $resource_version;
68
+
69
+ /**
70
+ * The resource that triggered the webhook event notification.
71
+ *
72
+ * @var stdClass
73
+ */
74
+ private $resource;
75
+
76
+ /**
77
+ * WebhookEvent constructor.
78
+ *
79
+ * @param string $id The ID of the event notification.
80
+ * @param DateTime|null $create_time The date and time when the event notification was created.
81
+ * @param string $resource_type The name of the resource related to the webhook notification event, such as 'checkout-order'.
82
+ * @param string $event_version The event version in the webhook notification, such as '1.0'.
83
+ * @param string $event_type The event that triggered the webhook event notification, such as 'CHECKOUT.ORDER.APPROVED'.
84
+ * @param string $summary A summary description for the event notification.
85
+ * @param string $resource_version The resource version in the webhook notification, such as '1.0'.
86
+ * @param stdClass $resource The resource that triggered the webhook event notification.
87
+ */
88
+ public function __construct( string $id, ?DateTime $create_time, string $resource_type, string $event_version, string $event_type, string $summary, string $resource_version, stdClass $resource ) {
89
+ $this->id = $id;
90
+ $this->create_time = $create_time;
91
+ $this->resource_type = $resource_type;
92
+ $this->event_version = $event_version;
93
+ $this->event_type = $event_type;
94
+ $this->summary = $summary;
95
+ $this->resource_version = $resource_version;
96
+ $this->resource = $resource;
97
+ }
98
+
99
+ /**
100
+ * The ID of the event notification.
101
+ *
102
+ * @return string
103
+ */
104
+ public function id(): string {
105
+ return $this->id;
106
+ }
107
+
108
+ /**
109
+ * The date and time when the event notification was created.
110
+ *
111
+ * @return DateTime|null
112
+ */
113
+ public function create_time(): ?DateTime {
114
+ return $this->create_time;
115
+ }
116
+
117
+ /**
118
+ * The name of the resource related to the webhook notification event, such as 'checkout-order'.
119
+ *
120
+ * @return string
121
+ */
122
+ public function resource_type(): string {
123
+ return $this->resource_type;
124
+ }
125
+
126
+ /**
127
+ * The event version in the webhook notification, such as '1.0'.
128
+ *
129
+ * @return string
130
+ */
131
+ public function event_version(): string {
132
+ return $this->event_version;
133
+ }
134
+
135
+ /**
136
+ * The event that triggered the webhook event notification, such as 'CHECKOUT.ORDER.APPROVED'.
137
+ *
138
+ * @return string
139
+ */
140
+ public function event_type(): string {
141
+ return $this->event_type;
142
+ }
143
+
144
+ /**
145
+ * A summary description for the event notification.
146
+ *
147
+ * @return string
148
+ */
149
+ public function summary(): string {
150
+ return $this->summary;
151
+ }
152
+
153
+ /**
154
+ * The resource version in the webhook notification, such as '1.0'.
155
+ *
156
+ * @return string
157
+ */
158
+ public function resource_version(): string {
159
+ return $this->resource_version;
160
+ }
161
+
162
+ /**
163
+ * The resource that triggered the webhook event notification.
164
+ *
165
+ * @return stdClass
166
+ */
167
+ public function resource(): stdClass {
168
+ return $this->resource;
169
+ }
170
+ }
modules/ppcp-api-client/src/Factory/class-payeefactory.php CHANGED
@@ -26,13 +26,8 @@ class PayeeFactory {
26
  * @throws RuntimeException When JSON object is malformed.
27
  */
28
  public function from_paypal_response( \stdClass $data ) {
29
- if ( ! isset( $data->email_address ) ) {
30
- throw new RuntimeException(
31
- __( 'No email for payee given.', 'woocommerce-paypal-payments' )
32
- );
33
- }
34
-
35
  $merchant_id = ( isset( $data->merchant_id ) ) ? $data->merchant_id : '';
36
- return new Payee( $data->email_address, $merchant_id );
37
  }
38
  }
26
  * @throws RuntimeException When JSON object is malformed.
27
  */
28
  public function from_paypal_response( \stdClass $data ) {
29
+ $email = ( isset( $data->email_address ) ) ? $data->email_address : '';
 
 
 
 
 
30
  $merchant_id = ( isset( $data->merchant_id ) ) ? $data->merchant_id : '';
31
+ return new Payee( $email, $merchant_id );
32
  }
33
  }
modules/ppcp-api-client/src/Factory/class-paymentsourcefactory.php CHANGED
@@ -37,8 +37,8 @@ class PaymentSourceFactory {
37
  (string) $data->card->authentication_result->liability_shift : '',
38
  isset( $data->card->authentication_result->three_d_secure->enrollment_status ) ?
39
  (string) $data->card->authentication_result->three_d_secure->enrollment_status : '',
40
- isset( $data->card->authentication_result->three_d_secure->authentication_result ) ?
41
- (string) $data->card->authentication_result->three_d_secure->authentication_result : ''
42
  );
43
  }
44
  $card = new PaymentSourceCard(
37
  (string) $data->card->authentication_result->liability_shift : '',
38
  isset( $data->card->authentication_result->three_d_secure->enrollment_status ) ?
39
  (string) $data->card->authentication_result->three_d_secure->enrollment_status : '',
40
+ isset( $data->card->authentication_result->three_d_secure->authentication_status ) ?
41
+ (string) $data->card->authentication_result->three_d_secure->authentication_status : ''
42
  );
43
  }
44
  $card = new PaymentSourceCard(
modules/ppcp-api-client/src/Factory/class-purchaseunitfactory.php CHANGED
@@ -159,6 +159,7 @@ class PurchaseUnitFactory {
159
  if (
160
  2 !== strlen( $shipping->address()->country_code() )
161
  || ( ! $shipping->address()->postal_code() )
 
162
  ) {
163
  $shipping = null;
164
  }
@@ -265,4 +266,18 @@ class PurchaseUnitFactory {
265
  }
266
  return false;
267
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
268
  }
159
  if (
160
  2 !== strlen( $shipping->address()->country_code() )
161
  || ( ! $shipping->address()->postal_code() )
162
+ || $this->country_without_postal_code( $shipping->address()->country_code() )
163
  ) {
164
  $shipping = null;
165
  }
266
  }
267
  return false;
268
  }
269
+
270
+ /**
271
+ * Check if country does not have postal code.
272
+ *
273
+ * @param string $country_code The country code.
274
+ * @return bool Whether country has postal code or not.
275
+ */
276
+ private function country_without_postal_code( string $country_code ): bool {
277
+ $countries = array( 'AE', 'AF', 'AG', 'AI', 'AL', 'AN', 'AO', 'AW', 'BB', 'BF', 'BH', 'BI', 'BJ', 'BM', 'BO', 'BS', 'BT', 'BW', 'BZ', 'CD', 'CF', 'CG', 'CI', 'CK', 'CL', 'CM', 'CO', 'CR', 'CV', 'DJ', 'DM', 'DO', 'EC', 'EG', 'ER', 'ET', 'FJ', 'FK', 'GA', 'GD', 'GH', 'GI', 'GM', 'GN', 'GQ', 'GT', 'GW', 'GY', 'HK', 'HN', 'HT', 'IE', 'IQ', 'IR', 'JM', 'JO', 'KE', 'KH', 'KI', 'KM', 'KN', 'KP', 'KW', 'KY', 'LA', 'LB', 'LC', 'LK', 'LR', 'LS', 'LY', 'ML', 'MM', 'MO', 'MR', 'MS', 'MT', 'MU', 'MW', 'MZ', 'NA', 'NE', 'NG', 'NI', 'NP', 'NR', 'NU', 'OM', 'PA', 'PE', 'PF', 'PY', 'QA', 'RW', 'SA', 'SB', 'SC', 'SD', 'SL', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SY', 'TC', 'TD', 'TG', 'TL', 'TO', 'TT', 'TV', 'TZ', 'UG', 'UY', 'VC', 'VE', 'VG', 'VN', 'VU', 'WS', 'XA', 'XB', 'XC', 'XE', 'XL', 'XM', 'XN', 'XS', 'YE', 'ZM', 'ZW' );
278
+ if ( in_array( $country_code, $countries, true ) ) {
279
+ return true;
280
+ }
281
+ return false;
282
+ }
283
  }
modules/ppcp-api-client/src/Factory/class-webhookeventfactory.php ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Creates WebhookEvent.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce\ApiClient\Factory
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace WooCommerce\PayPalCommerce\ApiClient\Factory;
11
+
12
+ use DateTime;
13
+ use stdClass;
14
+ use WooCommerce\PayPalCommerce\ApiClient\Entity\WebhookEvent;
15
+ use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
16
+
17
+ /**
18
+ * Class WebhookEventFactory
19
+ */
20
+ class WebhookEventFactory {
21
+
22
+ /**
23
+ * Returns a webhook from a given data array.
24
+ *
25
+ * @param array $data The data array.
26
+ *
27
+ * @return WebhookEvent
28
+ */
29
+ public function from_array( array $data ): WebhookEvent {
30
+ return $this->from_paypal_response( (object) $data );
31
+ }
32
+
33
+ /**
34
+ * Returns a Webhook based of a PayPal JSON response.
35
+ *
36
+ * @param stdClass $data The JSON object.
37
+ *
38
+ * @return WebhookEvent
39
+ * @throws RuntimeException When JSON object is malformed.
40
+ */
41
+ public function from_paypal_response( stdClass $data ): WebhookEvent {
42
+ if ( ! isset( $data->id ) ) {
43
+ throw new RuntimeException(
44
+ __( 'ID for webhook event not found.', 'woocommerce-paypal-payments' )
45
+ );
46
+ }
47
+ if ( ! isset( $data->event_type ) ) {
48
+ throw new RuntimeException(
49
+ __( 'Event type for webhook event not found.', 'woocommerce-paypal-payments' )
50
+ );
51
+ }
52
+
53
+ $create_time = ( isset( $data->create_time ) ) ?
54
+ DateTime::createFromFormat( 'Y-m-d\TH:i:sO', $data->create_time )
55
+ : null;
56
+
57
+ // Sometimes the time may be in weird format 2018-12-19T22:20:32.000Z (at least in simulation),
58
+ // we do not care much about time, so just ignore on failure.
59
+ if ( false === $create_time ) {
60
+ $create_time = null;
61
+ }
62
+
63
+ return new WebhookEvent(
64
+ (string) $data->id,
65
+ $create_time,
66
+ (string) $data->resource_type ?? '',
67
+ (string) $data->event_version ?? '',
68
+ (string) $data->event_type,
69
+ (string) $data->summary ?? '',
70
+ (string) $data->resource_version ?? '',
71
+ (object) $data->resource ?? ( new stdClass() )
72
+ );
73
+ }
74
+ }
modules/ppcp-button/assets/css/hosted-fields.css CHANGED
@@ -1 +1 @@
1
- #payment ul.payment_methods li img.ppcp-card-icon{padding:0 0 3px 3px;max-height:25px;display:inline-block}.payments-sdk-contingency-handler{z-index:1000 !important}
1
+ #payment ul.payment_methods li img.ppcp-card-icon{padding:0 0 3px 3px;max-height:25px;display:inline-block}.payments-sdk-contingency-handler{z-index:1000 !important}.ppcp-credit-card-gateway-form-field-disabled{opacity:.5 !important}
modules/ppcp-button/assets/js/button.js CHANGED
@@ -1,2 +1 @@
1
- !function(e){var t={};function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)r.d(n,a,function(t){return e[t]}.bind(null,a));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1)}([,function(e,t,r){"use strict";r.r(t);var n=class{constructor(e){this.genericErrorText=e,this.wrapper=document.querySelector(".woocommerce-notices-wrapper"),this.messagesList=document.querySelector("ul.woocommerce-error")}genericError(){this.wrapper.classList.contains("ppcp-persist")||(this.clear(),this.message(this.genericErrorText))}appendPreparedErrorMessageElement(e){null===this.messagesList&&this.prepareMessagesList(),this.messagesList.replaceWith(e)}message(e,t=!1){if(0===e.length)throw new Error("A new message text must be a non-empty string.");null===this.messagesList&&this.prepareMessagesList(),t?this.wrapper.classList.add("ppcp-persist"):this.wrapper.classList.remove("ppcp-persist");let r=this.prepareMessagesListItem(e);this.messagesList.appendChild(r),jQuery.scroll_to_notices(jQuery(".woocommerce-notices-wrapper"))}prepareMessagesList(){null===this.messagesList&&(this.messagesList=document.createElement("ul"),this.messagesList.setAttribute("class","woocommerce-error"),this.messagesList.setAttribute("role","alert"),this.wrapper.appendChild(this.messagesList))}prepareMessagesListItem(e){const t=document.createElement("li");return t.innerHTML=e,t}sanitize(e){const t=document.createElement("textarea");return t.innerHTML=e,t.value.replace("Error: ","")}clear(){this.wrapper.classList.contains("woocommerce-error")&&(this.wrapper.classList.remove("woocommerce-error"),this.wrapper.innerText="")}};var a=(e,t)=>(r,n)=>fetch(e.config.ajax.approve_order.endpoint,{method:"POST",body:JSON.stringify({nonce:e.config.ajax.approve_order.nonce,order_id:r.orderID})}).then(e=>e.json()).then(r=>{if(!r.success)return t.genericError(),n.restart().catch(e=>{t.genericError()});location.href=e.config.redirect});const s=()=>{const e=PayPalCommerceGateway.payer;if(!e)return null;const t=document.querySelector("#billing_phone")||void 0!==e.phone?{phone_type:"HOME",phone_number:{national_number:document.querySelector("#billing_phone")?document.querySelector("#billing_phone").value:e.phone.phone_number.national_number}}:null,r={email_address:document.querySelector("#billing_email")?document.querySelector("#billing_email").value:e.email_address,name:{surname:document.querySelector("#billing_last_name")?document.querySelector("#billing_last_name").value:e.name.surname,given_name:document.querySelector("#billing_first_name")?document.querySelector("#billing_first_name").value:e.name.given_name},address:{country_code:document.querySelector("#billing_country")?document.querySelector("#billing_country").value:e.address.country_code,address_line_1:document.querySelector("#billing_address_1")?document.querySelector("#billing_address_1").value:e.address.address_line_1,address_line_2:document.querySelector("#billing_address_2")?document.querySelector("#billing_address_2").value:e.address.address_line_2,admin_area_1:document.querySelector("#billing_state")?document.querySelector("#billing_state").value:e.address.admin_area_1,admin_area_2:document.querySelector("#billing_city")?document.querySelector("#billing_city").value:e.address.admin_area_2,postal_code:document.querySelector("#billing_postcode")?document.querySelector("#billing_postcode").value:e.address.postal_code}};return t&&(r.phone=t),r};var o=class{constructor(e,t){this.config=e,this.errorHandler=t}configuration(){return{createOrder:(e,t)=>{const r=s(),n=void 0!==this.config.bn_codes[this.config.context]?this.config.bn_codes[this.config.context]:"";return fetch(this.config.ajax.create_order.endpoint,{method:"POST",body:JSON.stringify({nonce:this.config.ajax.create_order.nonce,purchase_units:[],bn_code:n,payer:r,context:this.config.context})}).then((function(e){return e.json()})).then((function(e){if(!e.success)throw console.error(e),Error(e.data.message);return e.data.id}))},onApprove:a(this,this.errorHandler),onError:e=>{this.errorHandler.genericError()}}}};var i=class{constructor(e,t){this.gateway=e,this.renderer=t,this.actionHandler=null}init(){this.actionHandler=new o(PayPalCommerceGateway,new n(this.gateway.labels.error.generic)),this.render(),jQuery(document.body).on("wc_fragments_loaded wc_fragments_refreshed",()=>{this.render()})}shouldRender(){return null!==document.querySelector(this.gateway.button.mini_cart_wrapper)||null!==document.querySelector(this.gateway.hosted_fields.mini_cart_wrapper)}render(){this.shouldRender()&&this.renderer.render(this.gateway.button.mini_cart_wrapper,this.gateway.hosted_fields.mini_cart_wrapper,this.actionHandler.configuration())}};var c=class{constructor(e,t,r){this.id=e,this.quantity=t,this.variations=r}data(){return{id:this.id,quantity:this.quantity,variations:this.variations}}};var d=class{constructor(e,t){this.endpoint=e,this.nonce=t}update(e,t){return new Promise((r,n)=>{fetch(this.endpoint,{method:"POST",body:JSON.stringify({nonce:this.nonce,products:t})}).then(e=>e.json()).then(t=>{if(!t.success)return void n(t.data);const a=e(t.data);r(a)})})}};var l=class{constructor(e,t,r){this.element=e,this.showCallback=t,this.hideCallback=r,this.observer=null}init(){const e=()=>{this.element.classList.contains("disabled")?this.hideCallback():this.showCallback()};this.observer=new MutationObserver(e),this.observer.observe(this.element,{attributes:!0}),e()}disconnect(){this.observer.disconnect()}};var u=class{constructor(e,t,r,n,a,s){this.config=e,this.updateCart=t,this.showButtonCallback=r,this.hideButtonCallback=n,this.formElement=a,this.errorHandler=s}configuration(){if(this.hasVariations()){new l(this.formElement.querySelector(".single_add_to_cart_button"),this.showButtonCallback,this.hideButtonCallback).init()}return{createOrder:this.createOrder(),onApprove:a(this,this.errorHandler),onError:e=>{this.errorHandler.genericError()}}}createOrder(){var e=null;e=this.isGroupedProduct()?()=>{const e=[];return this.formElement.querySelectorAll('input[type="number"]').forEach(t=>{if(!t.value)return;const r=t.getAttribute("name").match(/quantity\[([\d]*)\]/);if(2!==r.length)return;const n=parseInt(r[1]),a=parseInt(t.value);e.push(new c(n,a,null))}),e}:()=>{const e=document.querySelector('[name="add-to-cart"]').value,t=document.querySelector('[name="quantity"]').value,r=this.variations();return[new c(e,t,r)]};return(t,r)=>{this.errorHandler.clear();return this.updateCart.update(e=>{const t=s(),r=void 0!==this.config.bn_codes[this.config.context]?this.config.bn_codes[this.config.context]:"";return fetch(this.config.ajax.create_order.endpoint,{method:"POST",body:JSON.stringify({nonce:this.config.ajax.create_order.nonce,purchase_units:e,payer:t,bn_code:r,context:this.config.context})}).then((function(e){return e.json()})).then((function(e){if(!e.success)throw console.error(e),Error(e.data.message);return e.data.id}))},e())}}variations(){if(!this.hasVariations())return null;return[...this.formElement.querySelectorAll("[name^='attribute_']")].map(e=>({value:e.value,name:e.name}))}hasVariations(){return this.formElement.classList.contains("variations_form")}isGroupedProduct(){return this.formElement.classList.contains("grouped_form")}};var h=class{constructor(e,t,r){this.gateway=e,this.renderer=t,this.messages=r}init(){this.shouldRender()?this.render():this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)}shouldRender(){return null!==document.querySelector("form.cart")}render(){const e=new u(this.gateway,new d(this.gateway.ajax.change_cart.endpoint,this.gateway.ajax.change_cart.nonce),()=>{this.renderer.showButtons(this.gateway.button.wrapper),this.renderer.showButtons(this.gateway.hosted_fields.wrapper);let e="0";document.querySelector("form.cart ins .woocommerce-Price-amount")?e=document.querySelector("form.cart ins .woocommerce-Price-amount").innerText:document.querySelector("form.cart .woocommerce-Price-amount")&&(e=document.querySelector("form.cart .woocommerce-Price-amount").innerText);const t=parseInt(e.replace(/([^\d,\.\s]*)/g,""));this.messages.renderWithAmount(t)},()=>{this.renderer.hideButtons(this.gateway.button.wrapper),this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)},document.querySelector("form.cart"),new n(this.gateway.labels.error.generic));this.renderer.render(this.gateway.button.wrapper,this.gateway.hosted_fields.wrapper,e.configuration())}};var p=class{constructor(e,t){this.gateway=e,this.renderer=t}init(){this.shouldRender()&&(this.render(),jQuery(document.body).on("updated_cart_totals updated_checkout",()=>{this.render()}))}shouldRender(){return null!==document.querySelector(this.gateway.button.wrapper)||null!==document.querySelector(this.gateway.hosted_fields.wrapper)}render(){const e=new o(PayPalCommerceGateway,new n(this.gateway.labels.error.generic));this.renderer.render(this.gateway.button.wrapper,this.gateway.hosted_fields.wrapper,e.configuration())}};var m=(e,t,r)=>(n,a)=>(r.block(),fetch(e.config.ajax.approve_order.endpoint,{method:"POST",body:JSON.stringify({nonce:e.config.ajax.approve_order.nonce,order_id:n.orderID})}).then(e=>e.json()).then(e=>{if(r.unblock(),!e.success){if(100===e.data.code?t.message(e.data.message):t.genericError(),void 0!==a&&void 0!==a.restart)return a.restart();throw new Error(e.data.message)}document.querySelector("#place_order").click()}));var y=class{constructor(e,t,r){this.config=e,this.errorHandler=t,this.spinner=r}configuration(){const e=this.spinner;return{createOrder:(t,r)=>{const n=s(),a=void 0!==this.config.bn_codes[this.config.context]?this.config.bn_codes[this.config.context]:"",o=this.errorHandler,i="checkout"===this.config.context?"form.checkout":"form#order_review",c=jQuery(i).serialize(),d=!!jQuery("#createaccount").is(":checked");return fetch(this.config.ajax.create_order.endpoint,{method:"POST",body:JSON.stringify({nonce:this.config.ajax.create_order.nonce,payer:n,bn_code:a,context:this.config.context,order_id:this.config.order_id,form:c,createaccount:d})}).then((function(e){return e.json()})).then((function(t){if(!t.success){if(e.unblock(),void 0!==t.messages){const e=new DOMParser;o.appendPreparedErrorMessageElement(e.parseFromString(t.messages,"text/html").querySelector("ul"))}else o.message(t.data.message,!0);return}const r=document.createElement("input");return r.setAttribute("type","hidden"),r.setAttribute("name","ppcp-resume-order"),r.setAttribute("value",t.data.purchase_units[0].custom_id),document.querySelector(i).append(r),t.data.id}))},onApprove:m(this,this.errorHandler,this.spinner),onCancel:()=>{e.unblock()},onError:()=>{this.errorHandler.genericError(),e.unblock()}}}};var g=class{constructor(e,t,r,n){this.gateway=e,this.renderer=t,this.messages=r,this.spinner=n}init(){this.render(),jQuery(document.body).on("updated_checkout",()=>{this.render()}),jQuery(document.body).on("updated_checkout payment_method_selected",()=>{this.switchBetweenPayPalandOrderButton(),this.displayPlaceOrderButtonForSavedCreditCards()}),jQuery("#saved-credit-card").on("change",()=>{this.displayPlaceOrderButtonForSavedCreditCards()}),this.switchBetweenPayPalandOrderButton(),this.displayPlaceOrderButtonForSavedCreditCards()}shouldRender(){return!document.querySelector(this.gateway.button.cancel_wrapper)&&(null!==document.querySelector(this.gateway.button.wrapper)||null!==document.querySelector(this.gateway.hosted_fields.wrapper))}render(){if(!this.shouldRender())return;document.querySelector(this.gateway.hosted_fields.wrapper+">div")&&document.querySelector(this.gateway.hosted_fields.wrapper+">div").setAttribute("style","");const e=new y(PayPalCommerceGateway,new n(this.gateway.labels.error.generic),this.spinner);this.renderer.render(this.gateway.button.wrapper,this.gateway.hosted_fields.wrapper,e.configuration())}switchBetweenPayPalandOrderButton(){jQuery("#saved-credit-card").val(jQuery("#saved-credit-card option:first").val());const e=jQuery('input[name="payment_method"]:checked').val();"ppcp-gateway"!==e&&"ppcp-credit-card-gateway"!==e?(this.renderer.hideButtons(this.gateway.button.wrapper),this.renderer.hideButtons(this.gateway.messages.wrapper),this.renderer.hideButtons(this.gateway.hosted_fields.wrapper),jQuery("#place_order").show()):(jQuery("#place_order").hide(),"ppcp-gateway"===e&&(this.renderer.showButtons(this.gateway.button.wrapper),this.renderer.showButtons(this.gateway.messages.wrapper),this.messages.render(),this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)),"ppcp-credit-card-gateway"===e&&(this.renderer.hideButtons(this.gateway.button.wrapper),this.renderer.hideButtons(this.gateway.messages.wrapper),this.renderer.showButtons(this.gateway.hosted_fields.wrapper)))}displayPlaceOrderButtonForSavedCreditCards(){"ppcp-credit-card-gateway"===jQuery('input[name="payment_method"]:checked').val()&&(jQuery("#saved-credit-card").length&&""!==jQuery("#saved-credit-card").val()?(this.renderer.hideButtons(this.gateway.button.wrapper),this.renderer.hideButtons(this.gateway.messages.wrapper),this.renderer.hideButtons(this.gateway.hosted_fields.wrapper),jQuery("#place_order").show()):(jQuery("#place_order").hide(),this.renderer.hideButtons(this.gateway.button.wrapper),this.renderer.hideButtons(this.gateway.messages.wrapper),this.renderer.showButtons(this.gateway.hosted_fields.wrapper)))}};var w=class{constructor(e,t,r,n){this.gateway=e,this.renderer=t,this.messages=r,this.spinner=n}init(){this.render(),jQuery(document.body).on("updated_checkout",()=>{this.render()}),jQuery(document.body).on("updated_checkout payment_method_selected",()=>{this.switchBetweenPayPalandOrderButton()}),this.switchBetweenPayPalandOrderButton()}shouldRender(){return!document.querySelector(this.gateway.button.cancel_wrapper)&&(null!==document.querySelector(this.gateway.button.wrapper)||null!==document.querySelector(this.gateway.hosted_fields.wrapper))}render(){if(!this.shouldRender())return;document.querySelector(this.gateway.hosted_fields.wrapper+">div")&&document.querySelector(this.gateway.hosted_fields.wrapper+">div").setAttribute("style","");const e=new y(PayPalCommerceGateway,new n(this.gateway.labels.error.generic),this.spinner);this.renderer.render(this.gateway.button.wrapper,this.gateway.hosted_fields.wrapper,e.configuration())}switchBetweenPayPalandOrderButton(){if(new URLSearchParams(window.location.search).has("change_payment_method"))return;const e=jQuery('input[name="payment_method"]:checked').val();"ppcp-gateway"!==e&&"ppcp-credit-card-gateway"!==e?(this.renderer.hideButtons(this.gateway.button.wrapper),this.renderer.hideButtons(this.gateway.messages.wrapper),this.renderer.hideButtons(this.gateway.hosted_fields.wrapper),jQuery("#place_order").show()):(jQuery("#place_order").hide(),"ppcp-gateway"===e&&(this.renderer.showButtons(this.gateway.button.wrapper),this.renderer.showButtons(this.gateway.messages.wrapper),this.messages.render(),this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)),"ppcp-credit-card-gateway"===e&&(this.renderer.hideButtons(this.gateway.button.wrapper),this.renderer.hideButtons(this.gateway.messages.wrapper),this.renderer.showButtons(this.gateway.hosted_fields.wrapper)))}};var f=class{constructor(e,t){this.defaultConfig=t,this.creditCardRenderer=e}render(e,t,r){this.renderButtons(e,r),this.creditCardRenderer.render(t,r)}renderButtons(e,t){if(!document.querySelector(e)||this.isAlreadyRendered(e)||void 0===paypal.Buttons)return;const r=e===this.defaultConfig.button.wrapper?this.defaultConfig.button.style:this.defaultConfig.button.mini_cart_style;paypal.Buttons({style:r,...t}).render(e)}isAlreadyRendered(e){return document.querySelector(e).hasChildNodes()}hideButtons(e){const t=document.querySelector(e);return!!t&&(t.style.display="none",!0)}showButtons(e){const t=document.querySelector(e);return!!t&&(t.style.display="block",!0)}};var _=e=>{const t=window.getComputedStyle(e),r=document.createElement("span");return r.setAttribute("id",e.id),Object.values(t).forEach(e=>{t[e]&&isNaN(e)&&r.style.setProperty(e,""+t[e])}),r};var b=class{constructor(e,t,r){this.defaultConfig=e,this.errorHandler=t,this.spinner=r,this.cardValid=!1,this.formValid=!1}render(e,t){if("checkout"!==this.defaultConfig.context&&"pay-now"!==this.defaultConfig.context||null===e||null===document.querySelector(e))return;if(void 0===paypal.HostedFields||!paypal.HostedFields.isEligible()){const t=document.querySelector(e);return void t.parentNode.removeChild(t)}const r=document.querySelector(".payment_box.payment_method_ppcp-credit-card-gateway"),n=r.style.display;r.style.display="block";const a=document.querySelector("#ppcp-hide-dcc");a&&a.parentNode.removeChild(a);const s=document.querySelector("#ppcp-credit-card-gateway-card-number"),o=window.getComputedStyle(s);let i={};Object.values(o).forEach(e=>{o[e]&&(i[e]=""+o[e])});const c=_(s);s.parentNode.replaceChild(c,s);const d=document.querySelector("#ppcp-credit-card-gateway-card-expiry"),l=_(d);d.parentNode.replaceChild(l,d);const u=document.querySelector("#ppcp-credit-card-gateway-card-cvc"),h=_(u);u.parentNode.replaceChild(h,u),r.style.display=n;const p=".payment_box payment_method_ppcp-credit-card-gateway";this.defaultConfig.enforce_vault&&document.querySelector(p+" .ppcp-credit-card-vault")&&(document.querySelector(p+" .ppcp-credit-card-vault").checked=!0,document.querySelector(p+" .ppcp-credit-card-vault").setAttribute("disabled",!0)),paypal.HostedFields.render({createOrder:t.createOrder,styles:{input:i},fields:{number:{selector:"#ppcp-credit-card-gateway-card-number",placeholder:this.defaultConfig.hosted_fields.labels.credit_card_number},cvv:{selector:"#ppcp-credit-card-gateway-card-cvc",placeholder:this.defaultConfig.hosted_fields.labels.cvv},expirationDate:{selector:"#ppcp-credit-card-gateway-card-expiry",placeholder:this.defaultConfig.hosted_fields.labels.mm_yy}}}).then(r=>{const n=e=>{if(this.spinner.block(),e&&e.preventDefault(),this.errorHandler.clear(),this.formValid&&this.cardValid){const e=!!this.defaultConfig.save_card,n=document.getElementById("ppcp-credit-card-vault")?document.getElementById("ppcp-credit-card-vault").checked:e;r.submit({contingencies:["SCA_WHEN_REQUIRED"],vault:n}).then(e=>(e.orderID=e.orderId,this.spinner.unblock(),t.onApprove(e))).catch(()=>{this.errorHandler.genericError(),this.spinner.unblock()})}else{this.spinner.unblock();const e=this.cardValid?this.defaultConfig.hosted_fields.labels.fields_not_valid:this.defaultConfig.hosted_fields.labels.card_not_supported;this.errorHandler.message(e)}};r.on("inputSubmitRequest",(function(){n(null)})),r.on("cardTypeChange",e=>{if(!e.cards.length)return void(this.cardValid=!1);const t=this.defaultConfig.hosted_fields.valid_cards;this.cardValid=-1!==t.indexOf(e.cards[0].type)}),r.on("validityChange",e=>{const t=Object.keys(e.fields).every((function(t){return e.fields[t].isValid}));this.formValid=t}),document.querySelector(e+" button").addEventListener("click",n)}),document.querySelector("#payment_method_ppcp-credit-card-gateway").addEventListener("click",()=>{document.querySelector("label[for=ppcp-credit-card-gateway-card-number]").click()})}};const v=(e,t)=>{if(!e)return!1;if(e.user!==t)return!1;return!((new Date).getTime()>=1e3*e.expiration)};var S=(e,t)=>{fetch(t.endpoint,{method:"POST",body:JSON.stringify({nonce:t.nonce})}).then(e=>e.json()).then(r=>{var n;v(r,t.user)&&(n=r,sessionStorage.setItem("ppcp-data-client-id",JSON.stringify(n)),e.setAttribute("data-client-token",r.token),document.body.append(e))})};var P=class{constructor(e){this.config=e}render(){this.shouldRender()&&paypal.Messages({amount:this.config.amount,placement:this.config.placement,style:this.config.style}).render(this.config.wrapper)}renderWithAmount(e){if(!this.shouldRender())return;const t=document.createElement("div");t.setAttribute("id",this.config.wrapper.replace("#",""));const r=document.querySelector(this.config.wrapper).nextSibling;document.querySelector(this.config.wrapper).parentElement.removeChild(document.querySelector(this.config.wrapper)),r.parentElement.insertBefore(t,r),paypal.Messages({amount:e,placement:this.config.placement,style:this.config.style}).render(this.config.wrapper)}shouldRender(){return void 0!==paypal.Messages&&void 0!==this.config.wrapper&&!!document.querySelector(this.config.wrapper)}};var q=class{constructor(){this.target="form.woocommerce-checkout"}setTarget(e){this.target=e}block(){jQuery(this.target).block({message:null,overlayCSS:{background:"#fff",opacity:.6}})}unblock(){jQuery(this.target).unblock()}};document.addEventListener("DOMContentLoaded",()=>{const e=document.createElement("script");e.addEventListener("load",e=>{(()=>{const e=new n(PayPalCommerceGateway.labels.error.generic),t=new q,r=new b(PayPalCommerceGateway,e,t),a=new f(r,PayPalCommerceGateway),s=new P(PayPalCommerceGateway.messages),o=PayPalCommerceGateway.context;if(("mini-cart"===o||"product"===o)&&"1"===PayPalCommerceGateway.mini_cart_buttons_enabled){new i(PayPalCommerceGateway,a).init()}if("product"===o&&"1"===PayPalCommerceGateway.single_product_buttons_enabled){new h(PayPalCommerceGateway,a,s).init()}if("cart"===o){new p(PayPalCommerceGateway,a).init()}if("checkout"===o){new g(PayPalCommerceGateway,a,s,t).init()}if("pay-now"===o){new w(PayPalCommerceGateway,a,s,t).init()}"checkout"!==o&&s.render()})()}),e.setAttribute("src",PayPalCommerceGateway.button.url),Object.entries(PayPalCommerceGateway.script_attributes).forEach(t=>{e.setAttribute(t[0],t[1])}),PayPalCommerceGateway.data_client_id.set_attribute?S(e,PayPalCommerceGateway.data_client_id):document.body.append(e)})}]);
2
- //# sourceMappingURL=button.js.map
1
+ (()=>{"use strict";var __webpack_modules__={94:()=>{eval("\n;// CONCATENATED MODULE: ./resources/js/modules/ErrorHandler.js\nclass ErrorHandler {\n constructor(genericErrorText) {\n this.genericErrorText = genericErrorText;\n this.wrapper = document.querySelector('.woocommerce-notices-wrapper');\n this.messagesList = document.querySelector('ul.woocommerce-error');\n }\n\n genericError() {\n if (this.wrapper.classList.contains('ppcp-persist')) {\n return;\n }\n\n this.clear();\n this.message(this.genericErrorText);\n }\n\n appendPreparedErrorMessageElement(errorMessageElement) {\n if (this.messagesList === null) {\n this.prepareMessagesList();\n }\n\n this.messagesList.replaceWith(errorMessageElement);\n }\n\n message(text, persist = false) {\n if (!typeof String || text.length === 0) {\n throw new Error('A new message text must be a non-empty string.');\n }\n\n if (this.messagesList === null) {\n this.prepareMessagesList();\n }\n\n if (persist) {\n this.wrapper.classList.add('ppcp-persist');\n } else {\n this.wrapper.classList.remove('ppcp-persist');\n }\n\n let messageNode = this.prepareMessagesListItem(text);\n this.messagesList.appendChild(messageNode);\n jQuery.scroll_to_notices(jQuery('.woocommerce-notices-wrapper'));\n }\n\n prepareMessagesList() {\n if (this.messagesList === null) {\n this.messagesList = document.createElement('ul');\n this.messagesList.setAttribute('class', 'woocommerce-error');\n this.messagesList.setAttribute('role', 'alert');\n this.wrapper.appendChild(this.messagesList);\n }\n }\n\n prepareMessagesListItem(message) {\n const li = document.createElement('li');\n li.innerHTML = message;\n return li;\n }\n\n sanitize(text) {\n const textarea = document.createElement('textarea');\n textarea.innerHTML = text;\n return textarea.value.replace('Error: ', '');\n }\n\n clear() {\n if (!this.wrapper.classList.contains('woocommerce-error')) {\n return;\n }\n\n this.wrapper.classList.remove('woocommerce-error');\n this.wrapper.innerText = '';\n }\n\n}\n\n/* harmony default export */ const modules_ErrorHandler = (ErrorHandler);\n;// CONCATENATED MODULE: ./resources/js/modules/OnApproveHandler/onApproveForContinue.js\nconst onApprove = (context, errorHandler) => {\n return (data, actions) => {\n return fetch(context.config.ajax.approve_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: context.config.ajax.approve_order.nonce,\n order_id: data.orderID\n })\n }).then(res => {\n return res.json();\n }).then(data => {\n if (!data.success) {\n errorHandler.genericError();\n return actions.restart().catch(err => {\n errorHandler.genericError();\n });\n ;\n }\n\n location.href = context.config.redirect;\n });\n };\n};\n\n/* harmony default export */ const onApproveForContinue = (onApprove);\n;// CONCATENATED MODULE: ./resources/js/modules/Helper/PayerData.js\nconst payerData = () => {\n const payer = PayPalCommerceGateway.payer;\n\n if (!payer) {\n return null;\n }\n\n const phone = document.querySelector('#billing_phone') || typeof payer.phone !== 'undefined' ? {\n phone_type: \"HOME\",\n phone_number: {\n national_number: document.querySelector('#billing_phone') ? document.querySelector('#billing_phone').value : payer.phone.phone_number.national_number\n }\n } : null;\n const payerData = {\n email_address: document.querySelector('#billing_email') ? document.querySelector('#billing_email').value : payer.email_address,\n name: {\n surname: document.querySelector('#billing_last_name') ? document.querySelector('#billing_last_name').value : payer.name.surname,\n given_name: document.querySelector('#billing_first_name') ? document.querySelector('#billing_first_name').value : payer.name.given_name\n },\n address: {\n country_code: document.querySelector('#billing_country') ? document.querySelector('#billing_country').value : payer.address.country_code,\n address_line_1: document.querySelector('#billing_address_1') ? document.querySelector('#billing_address_1').value : payer.address.address_line_1,\n address_line_2: document.querySelector('#billing_address_2') ? document.querySelector('#billing_address_2').value : payer.address.address_line_2,\n admin_area_1: document.querySelector('#billing_state') ? document.querySelector('#billing_state').value : payer.address.admin_area_1,\n admin_area_2: document.querySelector('#billing_city') ? document.querySelector('#billing_city').value : payer.address.admin_area_2,\n postal_code: document.querySelector('#billing_postcode') ? document.querySelector('#billing_postcode').value : payer.address.postal_code\n }\n };\n\n if (phone) {\n payerData.phone = phone;\n }\n\n return payerData;\n};\n;// CONCATENATED MODULE: ./resources/js/modules/ActionHandler/CartActionHandler.js\n\n\n\nclass CartActionHandler {\n constructor(config, errorHandler) {\n this.config = config;\n this.errorHandler = errorHandler;\n }\n\n configuration() {\n const createOrder = (data, actions) => {\n const payer = payerData();\n const bnCode = typeof this.config.bn_codes[this.config.context] !== 'undefined' ? this.config.bn_codes[this.config.context] : '';\n return fetch(this.config.ajax.create_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: this.config.ajax.create_order.nonce,\n purchase_units: [],\n bn_code: bnCode,\n payer,\n context: this.config.context\n })\n }).then(function (res) {\n return res.json();\n }).then(function (data) {\n if (!data.success) {\n console.error(data);\n throw Error(data.data.message);\n }\n\n return data.data.id;\n });\n };\n\n return {\n createOrder,\n onApprove: onApproveForContinue(this, this.errorHandler),\n onError: error => {\n this.errorHandler.genericError();\n }\n };\n }\n\n}\n\n/* harmony default export */ const ActionHandler_CartActionHandler = (CartActionHandler);\n;// CONCATENATED MODULE: ./resources/js/modules/ContextBootstrap/MiniCartBootstap.js\n\n\n\nclass MiniCartBootstap {\n constructor(gateway, renderer) {\n this.gateway = gateway;\n this.renderer = renderer;\n this.actionHandler = null;\n }\n\n init() {\n this.actionHandler = new ActionHandler_CartActionHandler(PayPalCommerceGateway, new modules_ErrorHandler(this.gateway.labels.error.generic));\n this.render();\n jQuery(document.body).on('wc_fragments_loaded wc_fragments_refreshed', () => {\n this.render();\n });\n }\n\n shouldRender() {\n return document.querySelector(this.gateway.button.mini_cart_wrapper) !== null || document.querySelector(this.gateway.hosted_fields.mini_cart_wrapper) !== null;\n }\n\n render() {\n if (!this.shouldRender()) {\n return;\n }\n\n this.renderer.render(this.gateway.button.mini_cart_wrapper, this.gateway.hosted_fields.mini_cart_wrapper, this.actionHandler.configuration());\n }\n\n}\n\n/* harmony default export */ const ContextBootstrap_MiniCartBootstap = (MiniCartBootstap);\n;// CONCATENATED MODULE: ./resources/js/modules/Helper/UpdateCart.js\n\n\nclass UpdateCart {\n constructor(endpoint, nonce) {\n this.endpoint = endpoint;\n this.nonce = nonce;\n }\n /**\n *\n * @param onResolve\n * @param {Product[]} products\n * @returns {Promise<unknown>}\n */\n\n\n update(onResolve, products) {\n return new Promise((resolve, reject) => {\n fetch(this.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: this.nonce,\n products\n })\n }).then(result => {\n return result.json();\n }).then(result => {\n if (!result.success) {\n reject(result.data);\n return;\n }\n\n const resolved = onResolve(result.data);\n resolve(resolved);\n });\n });\n }\n\n}\n\n/* harmony default export */ const Helper_UpdateCart = (UpdateCart);\n;// CONCATENATED MODULE: ./resources/js/modules/Helper/ButtonsToggleListener.js\n/**\n * When you can't add something to the cart, the PayPal buttons should not show.\n * Therefore we listen for changes on the add to cart button and show/hide the buttons accordingly.\n */\nclass ButtonsToggleListener {\n constructor(element, showCallback, hideCallback) {\n this.element = element;\n this.showCallback = showCallback;\n this.hideCallback = hideCallback;\n this.observer = null;\n }\n\n init() {\n const config = {\n attributes: true\n };\n\n const callback = () => {\n if (this.element.classList.contains('disabled')) {\n this.hideCallback();\n return;\n }\n\n this.showCallback();\n };\n\n this.observer = new MutationObserver(callback);\n this.observer.observe(this.element, config);\n callback();\n }\n\n disconnect() {\n this.observer.disconnect();\n }\n\n}\n\n/* harmony default export */ const Helper_ButtonsToggleListener = (ButtonsToggleListener);\n;// CONCATENATED MODULE: ./resources/js/modules/Entity/Product.js\nclass Product {\n constructor(id, quantity, variations) {\n this.id = id;\n this.quantity = quantity;\n this.variations = variations;\n }\n\n data() {\n return {\n id: this.id,\n quantity: this.quantity,\n variations: this.variations\n };\n }\n\n}\n\n/* harmony default export */ const Entity_Product = (Product);\n;// CONCATENATED MODULE: ./resources/js/modules/ActionHandler/SingleProductActionHandler.js\n\n\n\n\n\nclass SingleProductActionHandler {\n constructor(config, updateCart, showButtonCallback, hideButtonCallback, formElement, errorHandler) {\n this.config = config;\n this.updateCart = updateCart;\n this.showButtonCallback = showButtonCallback;\n this.hideButtonCallback = hideButtonCallback;\n this.formElement = formElement;\n this.errorHandler = errorHandler;\n }\n\n configuration() {\n if (this.hasVariations()) {\n const observer = new Helper_ButtonsToggleListener(this.formElement.querySelector('.single_add_to_cart_button'), this.showButtonCallback, this.hideButtonCallback);\n observer.init();\n }\n\n return {\n createOrder: this.createOrder(),\n onApprove: onApproveForContinue(this, this.errorHandler),\n onError: error => {\n this.errorHandler.genericError();\n }\n };\n }\n\n createOrder() {\n var getProducts = null;\n\n if (!this.isGroupedProduct()) {\n getProducts = () => {\n const id = document.querySelector('[name=\"add-to-cart\"]').value;\n const qty = document.querySelector('[name=\"quantity\"]').value;\n const variations = this.variations();\n return [new Entity_Product(id, qty, variations)];\n };\n } else {\n getProducts = () => {\n const products = [];\n this.formElement.querySelectorAll('input[type=\"number\"]').forEach(element => {\n if (!element.value) {\n return;\n }\n\n const elementName = element.getAttribute('name').match(/quantity\\[([\\d]*)\\]/);\n\n if (elementName.length !== 2) {\n return;\n }\n\n const id = parseInt(elementName[1]);\n const quantity = parseInt(element.value);\n products.push(new Entity_Product(id, quantity, null));\n });\n return products;\n };\n }\n\n const createOrder = (data, actions) => {\n this.errorHandler.clear();\n\n const onResolve = purchase_units => {\n const payer = payerData();\n const bnCode = typeof this.config.bn_codes[this.config.context] !== 'undefined' ? this.config.bn_codes[this.config.context] : '';\n return fetch(this.config.ajax.create_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: this.config.ajax.create_order.nonce,\n purchase_units,\n payer,\n bn_code: bnCode,\n context: this.config.context\n })\n }).then(function (res) {\n return res.json();\n }).then(function (data) {\n if (!data.success) {\n console.error(data);\n throw Error(data.data.message);\n }\n\n return data.data.id;\n });\n };\n\n const promise = this.updateCart.update(onResolve, getProducts());\n return promise;\n };\n\n return createOrder;\n }\n\n variations() {\n if (!this.hasVariations()) {\n return null;\n }\n\n const attributes = [...this.formElement.querySelectorAll(\"[name^='attribute_']\")].map(element => {\n return {\n value: element.value,\n name: element.name\n };\n });\n return attributes;\n }\n\n hasVariations() {\n return this.formElement.classList.contains('variations_form');\n }\n\n isGroupedProduct() {\n return this.formElement.classList.contains('grouped_form');\n }\n\n}\n\n/* harmony default export */ const ActionHandler_SingleProductActionHandler = (SingleProductActionHandler);\n;// CONCATENATED MODULE: ./resources/js/modules/ContextBootstrap/SingleProductBootstap.js\n\n\n\n\nclass SingleProductBootstap {\n constructor(gateway, renderer, messages) {\n this.gateway = gateway;\n this.renderer = renderer;\n this.messages = messages;\n }\n\n init() {\n if (!this.shouldRender()) {\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n return;\n }\n\n this.render();\n }\n\n shouldRender() {\n if (document.querySelector('form.cart') === null) {\n return false;\n }\n\n return true;\n }\n\n render() {\n const actionHandler = new ActionHandler_SingleProductActionHandler(this.gateway, new Helper_UpdateCart(this.gateway.ajax.change_cart.endpoint, this.gateway.ajax.change_cart.nonce), () => {\n this.renderer.showButtons(this.gateway.button.wrapper);\n this.renderer.showButtons(this.gateway.hosted_fields.wrapper);\n let priceText = \"0\";\n\n if (document.querySelector('form.cart ins .woocommerce-Price-amount')) {\n priceText = document.querySelector('form.cart ins .woocommerce-Price-amount').innerText;\n } else if (document.querySelector('form.cart .woocommerce-Price-amount')) {\n priceText = document.querySelector('form.cart .woocommerce-Price-amount').innerText;\n }\n\n const amount = parseInt(priceText.replace(/([^\\d,\\.\\s]*)/g, ''));\n this.messages.renderWithAmount(amount);\n }, () => {\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n }, document.querySelector('form.cart'), new modules_ErrorHandler(this.gateway.labels.error.generic));\n this.renderer.render(this.gateway.button.wrapper, this.gateway.hosted_fields.wrapper, actionHandler.configuration());\n }\n\n}\n\n/* harmony default export */ const ContextBootstrap_SingleProductBootstap = (SingleProductBootstap);\n;// CONCATENATED MODULE: ./resources/js/modules/ContextBootstrap/CartBootstap.js\n\n\n\nclass CartBootstrap {\n constructor(gateway, renderer) {\n this.gateway = gateway;\n this.renderer = renderer;\n }\n\n init() {\n if (!this.shouldRender()) {\n return;\n }\n\n this.render();\n jQuery(document.body).on('updated_cart_totals updated_checkout', () => {\n this.render();\n });\n }\n\n shouldRender() {\n return document.querySelector(this.gateway.button.wrapper) !== null || document.querySelector(this.gateway.hosted_fields.wrapper) !== null;\n }\n\n render() {\n const actionHandler = new ActionHandler_CartActionHandler(PayPalCommerceGateway, new modules_ErrorHandler(this.gateway.labels.error.generic));\n this.renderer.render(this.gateway.button.wrapper, this.gateway.hosted_fields.wrapper, actionHandler.configuration());\n }\n\n}\n\n/* harmony default export */ const CartBootstap = (CartBootstrap);\n;// CONCATENATED MODULE: ./resources/js/modules/OnApproveHandler/onApproveForPayNow.js\nconst onApproveForPayNow_onApprove = (context, errorHandler, spinner) => {\n return (data, actions) => {\n spinner.block();\n return fetch(context.config.ajax.approve_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: context.config.ajax.approve_order.nonce,\n order_id: data.orderID\n })\n }).then(res => {\n return res.json();\n }).then(data => {\n spinner.unblock();\n\n if (!data.success) {\n if (data.data.code === 100) {\n errorHandler.message(data.data.message);\n } else {\n errorHandler.genericError();\n }\n\n if (typeof actions !== 'undefined' && typeof actions.restart !== 'undefined') {\n return actions.restart();\n }\n\n throw new Error(data.data.message);\n }\n\n document.querySelector('#place_order').click();\n });\n };\n};\n\n/* harmony default export */ const onApproveForPayNow = (onApproveForPayNow_onApprove);\n;// CONCATENATED MODULE: ./resources/js/modules/ActionHandler/CheckoutActionHandler.js\n\n\n\nclass CheckoutActionHandler {\n constructor(config, errorHandler, spinner) {\n this.config = config;\n this.errorHandler = errorHandler;\n this.spinner = spinner;\n }\n\n configuration() {\n const spinner = this.spinner;\n\n const createOrder = (data, actions) => {\n const payer = payerData();\n const bnCode = typeof this.config.bn_codes[this.config.context] !== 'undefined' ? this.config.bn_codes[this.config.context] : '';\n const errorHandler = this.errorHandler;\n const formSelector = this.config.context === 'checkout' ? 'form.checkout' : 'form#order_review';\n const formValues = jQuery(formSelector).serialize();\n const createaccount = jQuery('#createaccount').is(\":checked\") ? true : false;\n return fetch(this.config.ajax.create_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: this.config.ajax.create_order.nonce,\n payer,\n bn_code: bnCode,\n context: this.config.context,\n order_id: this.config.order_id,\n form: formValues,\n createaccount: createaccount\n })\n }).then(function (res) {\n return res.json();\n }).then(function (data) {\n if (!data.success) {\n spinner.unblock(); //handle both messages sent from Woocommerce (data.messages) and this plugin (data.data.message)\n\n if (typeof data.messages !== 'undefined') {\n const domParser = new DOMParser();\n errorHandler.appendPreparedErrorMessageElement(domParser.parseFromString(data.messages, 'text/html').querySelector('ul'));\n } else {\n errorHandler.message(data.data.message, true);\n }\n\n return;\n }\n\n const input = document.createElement('input');\n input.setAttribute('type', 'hidden');\n input.setAttribute('name', 'ppcp-resume-order');\n input.setAttribute('value', data.data.purchase_units[0].custom_id);\n document.querySelector(formSelector).append(input);\n return data.data.id;\n });\n };\n\n return {\n createOrder,\n onApprove: onApproveForPayNow(this, this.errorHandler, this.spinner),\n onCancel: () => {\n spinner.unblock();\n },\n onError: () => {\n this.errorHandler.genericError();\n spinner.unblock();\n }\n };\n }\n\n}\n\n/* harmony default export */ const ActionHandler_CheckoutActionHandler = (CheckoutActionHandler);\n;// CONCATENATED MODULE: ./resources/js/modules/ContextBootstrap/CheckoutBootstap.js\n\n\n\nclass CheckoutBootstap {\n constructor(gateway, renderer, messages, spinner) {\n this.gateway = gateway;\n this.renderer = renderer;\n this.messages = messages;\n this.spinner = spinner;\n }\n\n init() {\n this.render();\n jQuery(document.body).on('updated_checkout', () => {\n this.render();\n });\n jQuery(document.body).on('updated_checkout payment_method_selected', () => {\n this.switchBetweenPayPalandOrderButton();\n this.displayPlaceOrderButtonForSavedCreditCards();\n });\n jQuery(document).on('hosted_fields_loaded', () => {\n jQuery('#saved-credit-card').on('change', () => {\n this.displayPlaceOrderButtonForSavedCreditCards();\n });\n });\n this.switchBetweenPayPalandOrderButton();\n this.displayPlaceOrderButtonForSavedCreditCards();\n }\n\n shouldRender() {\n if (document.querySelector(this.gateway.button.cancel_wrapper)) {\n return false;\n }\n\n return document.querySelector(this.gateway.button.wrapper) !== null || document.querySelector(this.gateway.hosted_fields.wrapper) !== null;\n }\n\n render() {\n if (!this.shouldRender()) {\n return;\n }\n\n if (document.querySelector(this.gateway.hosted_fields.wrapper + '>div')) {\n document.querySelector(this.gateway.hosted_fields.wrapper + '>div').setAttribute('style', '');\n }\n\n const actionHandler = new ActionHandler_CheckoutActionHandler(PayPalCommerceGateway, new modules_ErrorHandler(this.gateway.labels.error.generic), this.spinner);\n this.renderer.render(this.gateway.button.wrapper, this.gateway.hosted_fields.wrapper, actionHandler.configuration());\n }\n\n switchBetweenPayPalandOrderButton() {\n jQuery('#saved-credit-card').val(jQuery('#saved-credit-card option:first').val());\n const currentPaymentMethod = jQuery('input[name=\"payment_method\"]:checked').val();\n\n if (currentPaymentMethod !== 'ppcp-gateway' && currentPaymentMethod !== 'ppcp-credit-card-gateway') {\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.messages.wrapper);\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n jQuery('#place_order').show();\n } else {\n jQuery('#place_order').hide();\n\n if (currentPaymentMethod === 'ppcp-gateway') {\n this.renderer.showButtons(this.gateway.button.wrapper);\n this.renderer.showButtons(this.gateway.messages.wrapper);\n this.messages.render();\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n }\n\n if (currentPaymentMethod === 'ppcp-credit-card-gateway') {\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.messages.wrapper);\n this.renderer.showButtons(this.gateway.hosted_fields.wrapper);\n }\n }\n }\n\n displayPlaceOrderButtonForSavedCreditCards() {\n const currentPaymentMethod = jQuery('input[name=\"payment_method\"]:checked').val();\n\n if (currentPaymentMethod !== 'ppcp-credit-card-gateway') {\n return;\n }\n\n if (jQuery('#saved-credit-card').length && jQuery('#saved-credit-card').val() !== '') {\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.messages.wrapper);\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n jQuery('#place_order').show();\n this.disableCreditCardFields();\n } else {\n jQuery('#place_order').hide();\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.messages.wrapper);\n this.renderer.showButtons(this.gateway.hosted_fields.wrapper);\n this.enableCreditCardFields();\n }\n }\n\n disableCreditCardFields() {\n jQuery('label[for=\"ppcp-credit-card-gateway-card-number\"]').addClass('ppcp-credit-card-gateway-form-field-disabled');\n jQuery('#ppcp-credit-card-gateway-card-number').addClass('ppcp-credit-card-gateway-form-field-disabled');\n jQuery('label[for=\"ppcp-credit-card-gateway-card-expiry\"]').addClass('ppcp-credit-card-gateway-form-field-disabled');\n jQuery('#ppcp-credit-card-gateway-card-expiry').addClass('ppcp-credit-card-gateway-form-field-disabled');\n jQuery('label[for=\"ppcp-credit-card-gateway-card-cvc\"]').addClass('ppcp-credit-card-gateway-form-field-disabled');\n jQuery('#ppcp-credit-card-gateway-card-cvc').addClass('ppcp-credit-card-gateway-form-field-disabled');\n jQuery('label[for=\"vault\"]').addClass('ppcp-credit-card-gateway-form-field-disabled');\n jQuery('#ppcp-credit-card-vault').addClass('ppcp-credit-card-gateway-form-field-disabled');\n jQuery('#ppcp-credit-card-vault').attr(\"disabled\", true);\n this.renderer.disableCreditCardFields();\n }\n\n enableCreditCardFields() {\n jQuery('label[for=\"ppcp-credit-card-gateway-card-number\"]').removeClass('ppcp-credit-card-gateway-form-field-disabled');\n jQuery('#ppcp-credit-card-gateway-card-number').removeClass('ppcp-credit-card-gateway-form-field-disabled');\n jQuery('label[for=\"ppcp-credit-card-gateway-card-expiry\"]').removeClass('ppcp-credit-card-gateway-form-field-disabled');\n jQuery('#ppcp-credit-card-gateway-card-expiry').removeClass('ppcp-credit-card-gateway-form-field-disabled');\n jQuery('label[for=\"ppcp-credit-card-gateway-card-cvc\"]').removeClass('ppcp-credit-card-gateway-form-field-disabled');\n jQuery('#ppcp-credit-card-gateway-card-cvc').removeClass('ppcp-credit-card-gateway-form-field-disabled');\n jQuery('label[for=\"vault\"]').removeClass('ppcp-credit-card-gateway-form-field-disabled');\n jQuery('#ppcp-credit-card-vault').removeClass('ppcp-credit-card-gateway-form-field-disabled');\n jQuery('#ppcp-credit-card-vault').attr(\"disabled\", false);\n this.renderer.enableCreditCardFields();\n }\n\n}\n\n/* harmony default export */ const ContextBootstrap_CheckoutBootstap = (CheckoutBootstap);\n;// CONCATENATED MODULE: ./resources/js/modules/ContextBootstrap/PayNowBootstrap.js\n\n\n\nclass PayNowBootstrap {\n constructor(gateway, renderer, messages, spinner) {\n this.gateway = gateway;\n this.renderer = renderer;\n this.messages = messages;\n this.spinner = spinner;\n }\n\n init() {\n this.render();\n jQuery(document.body).on('updated_checkout', () => {\n this.render();\n });\n jQuery(document.body).on('updated_checkout payment_method_selected', () => {\n this.switchBetweenPayPalandOrderButton();\n });\n this.switchBetweenPayPalandOrderButton();\n }\n\n shouldRender() {\n if (document.querySelector(this.gateway.button.cancel_wrapper)) {\n return false;\n }\n\n return document.querySelector(this.gateway.button.wrapper) !== null || document.querySelector(this.gateway.hosted_fields.wrapper) !== null;\n }\n\n render() {\n if (!this.shouldRender()) {\n return;\n }\n\n if (document.querySelector(this.gateway.hosted_fields.wrapper + '>div')) {\n document.querySelector(this.gateway.hosted_fields.wrapper + '>div').setAttribute('style', '');\n }\n\n const actionHandler = new ActionHandler_CheckoutActionHandler(PayPalCommerceGateway, new modules_ErrorHandler(this.gateway.labels.error.generic), this.spinner);\n this.renderer.render(this.gateway.button.wrapper, this.gateway.hosted_fields.wrapper, actionHandler.configuration());\n }\n\n switchBetweenPayPalandOrderButton() {\n const urlParams = new URLSearchParams(window.location.search);\n\n if (urlParams.has('change_payment_method')) {\n return;\n }\n\n const currentPaymentMethod = jQuery('input[name=\"payment_method\"]:checked').val();\n\n if (currentPaymentMethod !== 'ppcp-gateway' && currentPaymentMethod !== 'ppcp-credit-card-gateway') {\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.messages.wrapper);\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n jQuery('#place_order').show();\n } else {\n jQuery('#place_order').hide();\n\n if (currentPaymentMethod === 'ppcp-gateway') {\n this.renderer.showButtons(this.gateway.button.wrapper);\n this.renderer.showButtons(this.gateway.messages.wrapper);\n this.messages.render();\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n }\n\n if (currentPaymentMethod === 'ppcp-credit-card-gateway') {\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.messages.wrapper);\n this.renderer.showButtons(this.gateway.hosted_fields.wrapper);\n }\n }\n }\n\n}\n\n/* harmony default export */ const ContextBootstrap_PayNowBootstrap = (PayNowBootstrap);\n;// CONCATENATED MODULE: ./resources/js/modules/Renderer/Renderer.js\nclass Renderer {\n constructor(creditCardRenderer, defaultConfig) {\n this.defaultConfig = defaultConfig;\n this.creditCardRenderer = creditCardRenderer;\n }\n\n render(wrapper, hostedFieldsWrapper, contextConfig) {\n this.renderButtons(wrapper, contextConfig);\n this.creditCardRenderer.render(hostedFieldsWrapper, contextConfig);\n }\n\n renderButtons(wrapper, contextConfig) {\n if (!document.querySelector(wrapper) || this.isAlreadyRendered(wrapper) || 'undefined' === typeof paypal.Buttons) {\n return;\n }\n\n const style = wrapper === this.defaultConfig.button.wrapper ? this.defaultConfig.button.style : this.defaultConfig.button.mini_cart_style;\n paypal.Buttons({\n style,\n ...contextConfig\n }).render(wrapper);\n }\n\n isAlreadyRendered(wrapper) {\n return document.querySelector(wrapper).hasChildNodes();\n }\n\n hideButtons(element) {\n const domElement = document.querySelector(element);\n\n if (!domElement) {\n return false;\n }\n\n domElement.style.display = 'none';\n return true;\n }\n\n showButtons(element) {\n const domElement = document.querySelector(element);\n\n if (!domElement) {\n return false;\n }\n\n domElement.style.display = 'block';\n return true;\n }\n\n disableCreditCardFields() {\n this.creditCardRenderer.disableFields();\n }\n\n enableCreditCardFields() {\n this.creditCardRenderer.enableFields();\n }\n\n}\n\n/* harmony default export */ const Renderer_Renderer = (Renderer);\n;// CONCATENATED MODULE: ./resources/js/modules/Helper/DccInputFactory.js\nconst dccInputFactory = original => {\n const styles = window.getComputedStyle(original);\n const newElement = document.createElement('span');\n newElement.setAttribute('id', original.id);\n Object.values(styles).forEach(prop => {\n if (!styles[prop] || !isNaN(prop)) {\n return;\n }\n\n newElement.style.setProperty(prop, '' + styles[prop]);\n });\n return newElement;\n};\n\n/* harmony default export */ const DccInputFactory = (dccInputFactory);\n;// CONCATENATED MODULE: ./resources/js/modules/Renderer/CreditCardRenderer.js\n\n\nclass CreditCardRenderer {\n constructor(defaultConfig, errorHandler, spinner) {\n this.defaultConfig = defaultConfig;\n this.errorHandler = errorHandler;\n this.spinner = spinner;\n this.cardValid = false;\n this.formValid = false;\n this.currentHostedFieldsInstance = null;\n this.formSubmissionSubscribed = false;\n }\n\n render(wrapper, contextConfig) {\n if (this.defaultConfig.context !== 'checkout' && this.defaultConfig.context !== 'pay-now' || wrapper === null || document.querySelector(wrapper) === null) {\n return;\n }\n\n if (typeof paypal.HostedFields === 'undefined' || !paypal.HostedFields.isEligible()) {\n const wrapperElement = document.querySelector(wrapper);\n wrapperElement.parentNode.removeChild(wrapperElement);\n return;\n }\n\n if (this.currentHostedFieldsInstance) {\n this.currentHostedFieldsInstance.teardown().catch(err => console.error(`Hosted fields teardown error: ${err}`));\n this.currentHostedFieldsInstance = null;\n }\n\n const gateWayBox = document.querySelector('.payment_box.payment_method_ppcp-credit-card-gateway');\n const oldDisplayStyle = gateWayBox.style.display;\n gateWayBox.style.display = 'block';\n const hideDccGateway = document.querySelector('#ppcp-hide-dcc');\n\n if (hideDccGateway) {\n hideDccGateway.parentNode.removeChild(hideDccGateway);\n }\n\n const cardNumberField = document.querySelector('#ppcp-credit-card-gateway-card-number');\n const stylesRaw = window.getComputedStyle(cardNumberField);\n let styles = {};\n Object.values(stylesRaw).forEach(prop => {\n if (!stylesRaw[prop]) {\n return;\n }\n\n styles[prop] = '' + stylesRaw[prop];\n });\n const cardNumber = DccInputFactory(cardNumberField);\n cardNumberField.parentNode.replaceChild(cardNumber, cardNumberField);\n const cardExpiryField = document.querySelector('#ppcp-credit-card-gateway-card-expiry');\n const cardExpiry = DccInputFactory(cardExpiryField);\n cardExpiryField.parentNode.replaceChild(cardExpiry, cardExpiryField);\n const cardCodeField = document.querySelector('#ppcp-credit-card-gateway-card-cvc');\n const cardCode = DccInputFactory(cardCodeField);\n cardCodeField.parentNode.replaceChild(cardCode, cardCodeField);\n gateWayBox.style.display = oldDisplayStyle;\n const formWrapper = '.payment_box payment_method_ppcp-credit-card-gateway';\n\n if (this.defaultConfig.enforce_vault && document.querySelector(formWrapper + ' .ppcp-credit-card-vault')) {\n document.querySelector(formWrapper + ' .ppcp-credit-card-vault').checked = true;\n document.querySelector(formWrapper + ' .ppcp-credit-card-vault').setAttribute('disabled', true);\n }\n\n paypal.HostedFields.render({\n createOrder: contextConfig.createOrder,\n styles: {\n 'input': styles\n },\n fields: {\n number: {\n selector: '#ppcp-credit-card-gateway-card-number',\n placeholder: this.defaultConfig.hosted_fields.labels.credit_card_number\n },\n cvv: {\n selector: '#ppcp-credit-card-gateway-card-cvc',\n placeholder: this.defaultConfig.hosted_fields.labels.cvv\n },\n expirationDate: {\n selector: '#ppcp-credit-card-gateway-card-expiry',\n placeholder: this.defaultConfig.hosted_fields.labels.mm_yy\n }\n }\n }).then(hostedFields => {\n document.dispatchEvent(new CustomEvent(\"hosted_fields_loaded\"));\n this.currentHostedFieldsInstance = hostedFields;\n hostedFields.on('inputSubmitRequest', () => {\n this._submit(contextConfig);\n });\n hostedFields.on('cardTypeChange', event => {\n if (!event.cards.length) {\n this.cardValid = false;\n return;\n }\n\n const validCards = this.defaultConfig.hosted_fields.valid_cards;\n this.cardValid = validCards.indexOf(event.cards[0].type) !== -1;\n });\n hostedFields.on('validityChange', event => {\n const formValid = Object.keys(event.fields).every(function (key) {\n return event.fields[key].isValid;\n });\n this.formValid = formValid;\n });\n\n if (!this.formSubmissionSubscribed) {\n document.querySelector(wrapper + ' button').addEventListener('click', event => {\n event.preventDefault();\n\n this._submit(contextConfig);\n });\n this.formSubmissionSubscribed = true;\n }\n });\n document.querySelector('#payment_method_ppcp-credit-card-gateway').addEventListener('click', () => {\n document.querySelector('label[for=ppcp-credit-card-gateway-card-number]').click();\n });\n }\n\n disableFields() {\n if (this.currentHostedFieldsInstance) {\n this.currentHostedFieldsInstance.setAttribute({\n field: 'number',\n attribute: 'disabled'\n });\n this.currentHostedFieldsInstance.setAttribute({\n field: 'cvv',\n attribute: 'disabled'\n });\n this.currentHostedFieldsInstance.setAttribute({\n field: 'expirationDate',\n attribute: 'disabled'\n });\n }\n }\n\n enableFields() {\n if (this.currentHostedFieldsInstance) {\n this.currentHostedFieldsInstance.removeAttribute({\n field: 'number',\n attribute: 'disabled'\n });\n this.currentHostedFieldsInstance.removeAttribute({\n field: 'cvv',\n attribute: 'disabled'\n });\n this.currentHostedFieldsInstance.removeAttribute({\n field: 'expirationDate',\n attribute: 'disabled'\n });\n }\n }\n\n _submit(contextConfig) {\n this.spinner.block();\n this.errorHandler.clear();\n\n if (this.formValid && this.cardValid) {\n const save_card = this.defaultConfig.save_card ? true : false;\n const vault = document.getElementById('ppcp-credit-card-vault') ? document.getElementById('ppcp-credit-card-vault').checked : save_card;\n const contingency = this.defaultConfig.hosted_fields.contingency;\n const hostedFieldsData = {\n vault: vault\n };\n\n if (contingency !== 'NO_3D_SECURE') {\n hostedFieldsData.contingencies = [contingency];\n }\n\n this.currentHostedFieldsInstance.submit(hostedFieldsData).then(payload => {\n payload.orderID = payload.orderId;\n this.spinner.unblock();\n return contextConfig.onApprove(payload);\n }).catch(err => {\n console.error(err);\n this.spinner.unblock();\n });\n } else {\n this.spinner.unblock();\n const message = !this.cardValid ? this.defaultConfig.hosted_fields.labels.card_not_supported : this.defaultConfig.hosted_fields.labels.fields_not_valid;\n this.errorHandler.message(message);\n }\n }\n\n}\n\n/* harmony default export */ const Renderer_CreditCardRenderer = (CreditCardRenderer);\n;// CONCATENATED MODULE: ./resources/js/modules/DataClientIdAttributeHandler.js\nconst storageKey = 'ppcp-data-client-id';\n\nconst validateToken = (token, user) => {\n if (!token) {\n return false;\n }\n\n if (token.user !== user) {\n return false;\n }\n\n const currentTime = new Date().getTime();\n const isExpired = currentTime >= token.expiration * 1000;\n return !isExpired;\n};\n\nconst storedTokenForUser = user => {\n const token = JSON.parse(sessionStorage.getItem(storageKey));\n\n if (validateToken(token, user)) {\n return token.token;\n }\n\n return null;\n};\n\nconst storeToken = token => {\n sessionStorage.setItem(storageKey, JSON.stringify(token));\n};\n\nconst dataClientIdAttributeHandler = (script, config) => {\n fetch(config.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: config.nonce\n })\n }).then(res => {\n return res.json();\n }).then(data => {\n const isValid = validateToken(data, config.user);\n\n if (!isValid) {\n return;\n }\n\n storeToken(data);\n script.setAttribute('data-client-token', data.token);\n document.body.append(script);\n });\n};\n\n/* harmony default export */ const DataClientIdAttributeHandler = (dataClientIdAttributeHandler);\n;// CONCATENATED MODULE: ./resources/js/modules/Renderer/MessageRenderer.js\nclass MessageRenderer {\n constructor(config) {\n this.config = config;\n }\n\n render() {\n if (!this.shouldRender()) {\n return;\n }\n\n paypal.Messages({\n amount: this.config.amount,\n placement: this.config.placement,\n style: this.config.style\n }).render(this.config.wrapper);\n }\n\n renderWithAmount(amount) {\n if (!this.shouldRender()) {\n return;\n }\n\n const newWrapper = document.createElement('div');\n newWrapper.setAttribute('id', this.config.wrapper.replace('#', ''));\n const sibling = document.querySelector(this.config.wrapper).nextSibling;\n document.querySelector(this.config.wrapper).parentElement.removeChild(document.querySelector(this.config.wrapper));\n sibling.parentElement.insertBefore(newWrapper, sibling);\n paypal.Messages({\n amount,\n placement: this.config.placement,\n style: this.config.style\n }).render(this.config.wrapper);\n }\n\n shouldRender() {\n if (typeof paypal.Messages === 'undefined' || typeof this.config.wrapper === 'undefined') {\n return false;\n }\n\n if (!document.querySelector(this.config.wrapper)) {\n return false;\n }\n\n return true;\n }\n\n}\n\n/* harmony default export */ const Renderer_MessageRenderer = (MessageRenderer);\n;// CONCATENATED MODULE: ./resources/js/modules/Helper/Spinner.js\nclass Spinner {\n constructor() {\n this.target = 'form.woocommerce-checkout';\n }\n\n setTarget(target) {\n this.target = target;\n }\n\n block() {\n jQuery(this.target).block({\n message: null,\n overlayCSS: {\n background: '#fff',\n opacity: 0.6\n }\n });\n }\n\n unblock() {\n jQuery(this.target).unblock();\n }\n\n}\n\n/* harmony default export */ const Helper_Spinner = (Spinner);\n;// CONCATENATED MODULE: ./resources/js/button.js\n\n\n\n\n\n\n\n\n\n\n\n\nconst bootstrap = () => {\n const errorHandler = new modules_ErrorHandler(PayPalCommerceGateway.labels.error.generic);\n const spinner = new Helper_Spinner();\n const creditCardRenderer = new Renderer_CreditCardRenderer(PayPalCommerceGateway, errorHandler, spinner);\n const renderer = new Renderer_Renderer(creditCardRenderer, PayPalCommerceGateway);\n const messageRenderer = new Renderer_MessageRenderer(PayPalCommerceGateway.messages);\n const context = PayPalCommerceGateway.context;\n\n if (context === 'mini-cart' || context === 'product') {\n if (PayPalCommerceGateway.mini_cart_buttons_enabled === '1') {\n const miniCartBootstrap = new ContextBootstrap_MiniCartBootstap(PayPalCommerceGateway, renderer);\n miniCartBootstrap.init();\n }\n }\n\n if (context === 'product' && PayPalCommerceGateway.single_product_buttons_enabled === '1') {\n const singleProductBootstrap = new ContextBootstrap_SingleProductBootstap(PayPalCommerceGateway, renderer, messageRenderer);\n singleProductBootstrap.init();\n }\n\n if (context === 'cart') {\n const cartBootstrap = new CartBootstap(PayPalCommerceGateway, renderer);\n cartBootstrap.init();\n }\n\n if (context === 'checkout') {\n const checkoutBootstap = new ContextBootstrap_CheckoutBootstap(PayPalCommerceGateway, renderer, messageRenderer, spinner);\n checkoutBootstap.init();\n }\n\n if (context === 'pay-now') {\n const payNowBootstrap = new ContextBootstrap_PayNowBootstrap(PayPalCommerceGateway, renderer, messageRenderer, spinner);\n payNowBootstrap.init();\n }\n\n if (context !== 'checkout') {\n messageRenderer.render();\n }\n};\n\ndocument.addEventListener('DOMContentLoaded', () => {\n if (!typeof PayPalCommerceGateway) {\n console.error('PayPal button could not be configured.');\n return;\n }\n\n const script = document.createElement('script');\n script.addEventListener('load', event => {\n bootstrap();\n });\n script.setAttribute('src', PayPalCommerceGateway.button.url);\n Object.entries(PayPalCommerceGateway.script_attributes).forEach(keyValue => {\n script.setAttribute(keyValue[0], keyValue[1]);\n });\n\n if (PayPalCommerceGateway.data_client_id.set_attribute) {\n DataClientIdAttributeHandler(script, PayPalCommerceGateway.data_client_id);\n return;\n }\n\n document.body.append(script);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFBQSxPQUFPLENBQUNDLEtBQVIsQ0FBYyx3Q0FBZDtBQUNBO0FBQ0g7O0FBQ0QsUUFBTWdOLE1BQU0sR0FBR3ZTLFFBQVEsQ0FBQ3dCLGFBQVQsQ0FBdUIsUUFBdkIsQ0FBZjtBQUVBK1EsRUFBQUEsTUFBTSxDQUFDaEMsZ0JBQVAsQ0FBd0IsTUFBeEIsRUFBaUNWLEtBQUQsSUFBVztBQUN2Q3lELElBQUFBLFNBQVM7QUFDWixHQUZEO0FBR0FmLEVBQUFBLE1BQU0sQ0FBQzlRLFlBQVAsQ0FBb0IsS0FBcEIsRUFBMkJxQyxxQkFBcUIsQ0FBQ3NDLE1BQXRCLENBQTZCMk4sR0FBeEQ7QUFDQTVHLEVBQUFBLE1BQU0sQ0FBQzZHLE9BQVAsQ0FBZWxRLHFCQUFxQixDQUFDbVEsaUJBQXJDLEVBQXdEMUwsT0FBeEQsQ0FDSzJMLFFBQUQsSUFBYztBQUNWM0IsSUFBQUEsTUFBTSxDQUFDOVEsWUFBUCxDQUFvQnlTLFFBQVEsQ0FBQyxDQUFELENBQTVCLEVBQWlDQSxRQUFRLENBQUMsQ0FBRCxDQUF6QztBQUNILEdBSEw7O0FBTUEsTUFBSXBRLHFCQUFxQixDQUFDcVEsY0FBdEIsQ0FBcUNDLGFBQXpDLEVBQXdEO0FBQ3BEOUIsSUFBQUEsNEJBQTRCLENBQUNDLE1BQUQsRUFBU3pPLHFCQUFxQixDQUFDcVEsY0FBL0IsQ0FBNUI7QUFDQTtBQUNIOztBQUVEblUsRUFBQUEsUUFBUSxDQUFDNEMsSUFBVCxDQUFjNkgsTUFBZCxDQUFxQjhILE1BQXJCO0FBQ0gsQ0F6QkwiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wcGMtYnV0dG9uLy4vcmVzb3VyY2VzL2pzL21vZHVsZXMvRXJyb3JIYW5kbGVyLmpzP2U2NWEiLCJ3ZWJwYWNrOi8vcHBjLWJ1dHRvbi8uL3Jlc291cmNlcy9qcy9tb2R1bGVzL09uQXBwcm92ZUhhbmRsZXIvb25BcHByb3ZlRm9yQ29udGludWUuanM/YzQ1NCIsIndlYnBhY2s6Ly9wcGMtYnV0dG9uLy4vcmVzb3VyY2VzL2pzL21vZHVsZXMvSGVscGVyL1BheWVyRGF0YS5qcz8yYWYxIiwid2VicGFjazovL3BwYy1idXR0b24vLi9yZXNvdXJjZXMvanMvbW9kdWxlcy9BY3Rpb25IYW5kbGVyL0NhcnRBY3Rpb25IYW5kbGVyLmpzPzgyY2YiLCJ3ZWJwYWNrOi8vcHBjLWJ1dHRvbi8uL3Jlc291cmNlcy9qcy9tb2R1bGVzL0NvbnRleHRCb290c3RyYXAvTWluaUNhcnRCb290c3RhcC5qcz9kNTUyIiwid2VicGFjazovL3BwYy1idXR0b24vLi9yZXNvdXJjZXMvanMvbW9kdWxlcy9IZWxwZXIvVXBkYXRlQ2FydC5qcz9lNDIyIiwid2VicGFjazovL3BwYy1idXR0b24vLi9yZXNvdXJjZXMvanMvbW9kdWxlcy9IZWxwZXIvQnV0dG9uc1RvZ2dsZUxpc3RlbmVyLmpzP2UxOTMiLCJ3ZWJwYWNrOi8vcHBjLWJ1dHRvbi8uL3Jlc291cmNlcy9qcy9tb2R1bGVzL0VudGl0eS9Qcm9kdWN0LmpzPzlmZmYiLCJ3ZWJwYWNrOi8vcHBjLWJ1dHRvbi8uL3Jlc291cmNlcy9qcy9tb2R1bGVzL0FjdGlvbkhhbmRsZXIvU2luZ2xlUHJvZHVjdEFjdGlvbkhhbmRsZXIuanM/ZDliNyIsIndlYnBhY2s6Ly9wcGMtYnV0dG9uLy4vcmVzb3VyY2VzL2pzL21vZHVsZXMvQ29udGV4dEJvb3RzdHJhcC9TaW5nbGVQcm9kdWN0Qm9vdHN0YXAuanM/N2MxOSIsIndlYnBhY2s6Ly9wcGMtYnV0dG9uLy4vcmVzb3VyY2VzL2pzL21vZHVsZXMvQ29udGV4dEJvb3RzdHJhcC9DYXJ0Qm9vdHN0YXAuanM/NWU5NCIsIndlYnBhY2s6Ly9wcGMtYnV0dG9uLy4vcmVzb3VyY2VzL2pzL21vZHVsZXMvT25BcHByb3ZlSGFuZGxlci9vbkFwcHJvdmVGb3JQYXlOb3cuanM/OTMwNSIsIndlYnBhY2s6Ly9wcGMtYnV0dG9uLy4vcmVzb3VyY2VzL2pzL21vZHVsZXMvQWN0aW9uSGFuZGxlci9DaGVja291dEFjdGlvbkhhbmRsZXIuanM/ODUxNSIsIndlYnBhY2s6Ly9wcGMtYnV0dG9uLy4vcmVzb3VyY2VzL2pzL21vZHVsZXMvQ29udGV4dEJvb3RzdHJhcC9DaGVja291dEJvb3RzdGFwLmpzP2M4NTUiLCJ3ZWJwYWNrOi8vcHBjLWJ1dHRvbi8uL3Jlc291cmNlcy9qcy9tb2R1bGVzL0NvbnRleHRCb290c3RyYXAvUGF5Tm93Qm9vdHN0cmFwLmpzP2Q5ZjUiLCJ3ZWJwYWNrOi8vcHBjLWJ1dHRvbi8uL3Jlc291cmNlcy9qcy9tb2R1bGVzL1JlbmRlcmVyL1JlbmRlcmVyLmpzP2ZhOTMiLCJ3ZWJwYWNrOi8vcHBjLWJ1dHRvbi8uL3Jlc291cmNlcy9qcy9tb2R1bGVzL0hlbHBlci9EY2NJbnB1dEZhY3RvcnkuanM/MmEyZiIsIndlYnBhY2s6Ly9wcGMtYnV0dG9uLy4vcmVzb3VyY2VzL2pzL21vZHVsZXMvUmVuZGVyZXIvQ3JlZGl0Q2FyZFJlbmRlcmVyLmpzPzM4N2EiLCJ3ZWJwYWNrOi8vcHBjLWJ1dHRvbi8uL3Jlc291cmNlcy9qcy9tb2R1bGVzL0RhdGFDbGllbnRJZEF0dHJpYnV0ZUhhbmRsZXIuanM/ZWUwYiIsIndlYnBhY2s6Ly9wcGMtYnV0dG9uLy4vcmVzb3VyY2VzL2pzL21vZHVsZXMvUmVuZGVyZXIvTWVzc2FnZVJlbmRlcmVyLmpzP2NkMDIiLCJ3ZWJwYWNrOi8vcHBjLWJ1dHRvbi8uL3Jlc291cmNlcy9qcy9tb2R1bGVzL0hlbHBlci9TcGlubmVyLmpzPzE3MDgiLCJ3ZWJwYWNrOi8vcHBjLWJ1dHRvbi8uL3Jlc291cmNlcy9qcy9idXR0b24uanM/MDYwZiJdLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBFcnJvckhhbmRsZXIge1xuXG4gICAgY29uc3RydWN0b3IoZ2VuZXJpY0Vycm9yVGV4dClcbiAgICB7XG4gICAgICAgIHRoaXMuZ2VuZXJpY0Vycm9yVGV4dCA9IGdlbmVyaWNFcnJvclRleHQ7XG4gICAgICAgIHRoaXMud3JhcHBlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy53b29jb21tZXJjZS1ub3RpY2VzLXdyYXBwZXInKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlc0xpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd1bC53b29jb21tZXJjZS1lcnJvcicpO1xuICAgIH1cblxuICAgIGdlbmVyaWNFcnJvcigpIHtcbiAgICAgICAgaWYgKHRoaXMud3JhcHBlci5jbGFzc0xpc3QuY29udGFpbnMoJ3BwY3AtcGVyc2lzdCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICB0aGlzLm1lc3NhZ2UodGhpcy5nZW5lcmljRXJyb3JUZXh0KVxuICAgIH1cblxuICAgIGFwcGVuZFByZXBhcmVkRXJyb3JNZXNzYWdlRWxlbWVudChlcnJvck1lc3NhZ2VFbGVtZW50KVxuICAgIHtcbiAgICAgICAgaWYodGhpcy5tZXNzYWdlc0xpc3QgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZU1lc3NhZ2VzTGlzdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tZXNzYWdlc0xpc3QucmVwbGFjZVdpdGgoZXJyb3JNZXNzYWdlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgbWVzc2FnZSh0ZXh0LCBwZXJzaXN0ID0gZmFsc2UpXG4gICAge1xuICAgICAgICBpZighIHR5cGVvZiBTdHJpbmcgfHwgdGV4dC5sZW5ndGggPT09IDApe1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBIG5ldyBtZXNzYWdlIHRleHQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZih0aGlzLm1lc3NhZ2VzTGlzdCA9PT0gbnVsbCl7XG4gICAgICAgICAgICB0aGlzLnByZXBhcmVNZXNzYWdlc0xpc3QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwZXJzaXN0KSB7XG4gICAgICAgICAgICB0aGlzLndyYXBwZXIuY2xhc3NMaXN0LmFkZCgncHBjcC1wZXJzaXN0Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLndyYXBwZXIuY2xhc3NMaXN0LnJlbW92ZSgncHBjcC1wZXJzaXN0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbWVzc2FnZU5vZGUgPSB0aGlzLnByZXBhcmVNZXNzYWdlc0xpc3RJdGVtKHRleHQpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VzTGlzdC5hcHBlbmRDaGlsZChtZXNzYWdlTm9kZSk7XG5cbiAgICAgICAgalF1ZXJ5LnNjcm9sbF90b19ub3RpY2VzKGpRdWVyeSgnLndvb2NvbW1lcmNlLW5vdGljZXMtd3JhcHBlcicpKVxuICAgIH1cblxuICAgIHByZXBhcmVNZXNzYWdlc0xpc3QoKVxuICAgIHtcbiAgICAgICAgaWYodGhpcy5tZXNzYWdlc0xpc3QgPT09IG51bGwpe1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0xpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpO1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0xpc3Quc2V0QXR0cmlidXRlKCdjbGFzcycsICd3b29jb21tZXJjZS1lcnJvcicpO1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0xpc3Quc2V0QXR0cmlidXRlKCdyb2xlJywgJ2FsZXJ0Jyk7XG4gICAgICAgICAgICB0aGlzLndyYXBwZXIuYXBwZW5kQ2hpbGQodGhpcy5tZXNzYWdlc0xpc3QpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJlcGFyZU1lc3NhZ2VzTGlzdEl0ZW0obWVzc2FnZSlcbiAgICB7XG4gICAgICAgIGNvbnN0IGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTtcbiAgICAgICAgbGkuaW5uZXJIVE1MID0gbWVzc2FnZTtcblxuICAgICAgICByZXR1cm4gbGk7XG4gICAgfVxuXG4gICAgc2FuaXRpemUodGV4dClcbiAgICB7XG4gICAgICAgIGNvbnN0IHRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcbiAgICAgICAgdGV4dGFyZWEuaW5uZXJIVE1MID0gdGV4dDtcbiAgICAgICAgcmV0dXJuIHRleHRhcmVhLnZhbHVlLnJlcGxhY2UoJ0Vycm9yOiAnLCAnJyk7XG4gICAgfVxuXG4gICAgY2xlYXIoKVxuICAgIHtcbiAgICAgICAgaWYgKCEgdGhpcy53cmFwcGVyLmNsYXNzTGlzdC5jb250YWlucygnd29vY29tbWVyY2UtZXJyb3InKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud3JhcHBlci5jbGFzc0xpc3QucmVtb3ZlKCd3b29jb21tZXJjZS1lcnJvcicpO1xuICAgICAgICB0aGlzLndyYXBwZXIuaW5uZXJUZXh0ID0gJyc7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBFcnJvckhhbmRsZXI7XG4iLCJjb25zdCBvbkFwcHJvdmUgPSAoY29udGV4dCwgZXJyb3JIYW5kbGVyKSA9PiB7XG4gICAgcmV0dXJuIChkYXRhLCBhY3Rpb25zKSA9PiB7XG4gICAgICAgIHJldHVybiBmZXRjaChjb250ZXh0LmNvbmZpZy5hamF4LmFwcHJvdmVfb3JkZXIuZW5kcG9pbnQsIHtcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIG5vbmNlOiBjb250ZXh0LmNvbmZpZy5hamF4LmFwcHJvdmVfb3JkZXIubm9uY2UsXG4gICAgICAgICAgICAgICAgb3JkZXJfaWQ6ZGF0YS5vcmRlcklEXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KS50aGVuKChyZXMpPT57XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oKTtcbiAgICAgICAgfSkudGhlbigoZGF0YSk9PntcbiAgICAgICAgICAgIGlmICghZGF0YS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyLmdlbmVyaWNFcnJvcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY3Rpb25zLnJlc3RhcnQoKS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXIuZ2VuZXJpY0Vycm9yKCk7XG4gICAgICAgICAgICAgICAgfSk7O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IGNvbnRleHQuY29uZmlnLnJlZGlyZWN0O1xuICAgICAgICB9KTtcblxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgb25BcHByb3ZlO1xuIiwiZXhwb3J0IGNvbnN0IHBheWVyRGF0YSA9ICgpID0+IHtcbiAgICBjb25zdCBwYXllciA9IFBheVBhbENvbW1lcmNlR2F0ZXdheS5wYXllcjtcbiAgICBpZiAoISBwYXllcikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBwaG9uZSA9IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYmlsbGluZ19waG9uZScpIHx8IHR5cGVvZiBwYXllci5waG9uZSAhPT0gJ3VuZGVmaW5lZCcpID9cbiAgICB7XG4gICAgICAgIHBob25lX3R5cGU6XCJIT01FXCIsXG4gICAgICAgICAgICBwaG9uZV9udW1iZXI6e1xuICAgICAgICAgICAgbmF0aW9uYWxfbnVtYmVyIDogKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNiaWxsaW5nX3Bob25lJykpID8gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2JpbGxpbmdfcGhvbmUnKS52YWx1ZSA6IHBheWVyLnBob25lLnBob25lX251bWJlci5uYXRpb25hbF9udW1iZXJcbiAgICAgICAgfVxuICAgIH0gOiBudWxsO1xuICAgIGNvbnN0IHBheWVyRGF0YSA9IHtcbiAgICAgICAgZW1haWxfYWRkcmVzczooZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2JpbGxpbmdfZW1haWwnKSkgPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYmlsbGluZ19lbWFpbCcpLnZhbHVlIDogcGF5ZXIuZW1haWxfYWRkcmVzcyxcbiAgICAgICAgbmFtZSA6IHtcbiAgICAgICAgICAgIHN1cm5hbWU6IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYmlsbGluZ19sYXN0X25hbWUnKSkgPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYmlsbGluZ19sYXN0X25hbWUnKS52YWx1ZSA6IHBheWVyLm5hbWUuc3VybmFtZSxcbiAgICAgICAgICAgIGdpdmVuX25hbWU6IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYmlsbGluZ19maXJzdF9uYW1lJykpID8gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2JpbGxpbmdfZmlyc3RfbmFtZScpLnZhbHVlIDogcGF5ZXIubmFtZS5naXZlbl9uYW1lXG4gICAgICAgIH0sXG4gICAgICAgIGFkZHJlc3MgOiB7XG4gICAgICAgICAgICBjb3VudHJ5X2NvZGUgOiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2JpbGxpbmdfY291bnRyeScpKSA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNiaWxsaW5nX2NvdW50cnknKS52YWx1ZSA6IHBheWVyLmFkZHJlc3MuY291bnRyeV9jb2RlLFxuICAgICAgICAgICAgYWRkcmVzc19saW5lXzEgOiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2JpbGxpbmdfYWRkcmVzc18xJykpID8gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2JpbGxpbmdfYWRkcmVzc18xJykudmFsdWUgOiBwYXllci5hZGRyZXNzLmFkZHJlc3NfbGluZV8xLFxuICAgICAgICAgICAgYWRkcmVzc19saW5lXzIgOiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2JpbGxpbmdfYWRkcmVzc18yJykpID8gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2JpbGxpbmdfYWRkcmVzc18yJykudmFsdWUgOiBwYXllci5hZGRyZXNzLmFkZHJlc3NfbGluZV8yLFxuICAgICAgICAgICAgYWRtaW5fYXJlYV8xIDogKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNiaWxsaW5nX3N0YXRlJykpID8gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2JpbGxpbmdfc3RhdGUnKS52YWx1ZSA6IHBheWVyLmFkZHJlc3MuYWRtaW5fYXJlYV8xLFxuICAgICAgICAgICAgYWRtaW5fYXJlYV8yIDogKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNiaWxsaW5nX2NpdHknKSkgPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYmlsbGluZ19jaXR5JykudmFsdWUgOiBwYXllci5hZGRyZXNzLmFkbWluX2FyZWFfMixcbiAgICAgICAgICAgIHBvc3RhbF9jb2RlIDogKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNiaWxsaW5nX3Bvc3Rjb2RlJykpID8gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2JpbGxpbmdfcG9zdGNvZGUnKS52YWx1ZSA6IHBheWVyLmFkZHJlc3MucG9zdGFsX2NvZGVcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAocGhvbmUpIHtcbiAgICAgICAgcGF5ZXJEYXRhLnBob25lID0gcGhvbmU7XG4gICAgfVxuICAgIHJldHVybiBwYXllckRhdGE7XG59XG4iLCJpbXBvcnQgb25BcHByb3ZlIGZyb20gJy4uL09uQXBwcm92ZUhhbmRsZXIvb25BcHByb3ZlRm9yQ29udGludWUuanMnO1xuaW1wb3J0IHtwYXllckRhdGF9IGZyb20gXCIuLi9IZWxwZXIvUGF5ZXJEYXRhXCI7XG5cbmNsYXNzIENhcnRBY3Rpb25IYW5kbGVyIHtcblxuICAgIGNvbnN0cnVjdG9yKGNvbmZpZywgZXJyb3JIYW5kbGVyKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgICAgICB0aGlzLmVycm9ySGFuZGxlciA9IGVycm9ySGFuZGxlcjtcbiAgICB9XG5cbiAgICBjb25maWd1cmF0aW9uKCkge1xuICAgICAgICBjb25zdCBjcmVhdGVPcmRlciA9IChkYXRhLCBhY3Rpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXllciA9IHBheWVyRGF0YSgpO1xuICAgICAgICAgICAgY29uc3QgYm5Db2RlID0gdHlwZW9mIHRoaXMuY29uZmlnLmJuX2NvZGVzW3RoaXMuY29uZmlnLmNvbnRleHRdICE9PSAndW5kZWZpbmVkJyA/XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuYm5fY29kZXNbdGhpcy5jb25maWcuY29udGV4dF0gOiAnJztcbiAgICAgICAgICAgIHJldHVybiBmZXRjaCh0aGlzLmNvbmZpZy5hamF4LmNyZWF0ZV9vcmRlci5lbmRwb2ludCwge1xuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgbm9uY2U6IHRoaXMuY29uZmlnLmFqYXguY3JlYXRlX29yZGVyLm5vbmNlLFxuICAgICAgICAgICAgICAgICAgICBwdXJjaGFzZV91bml0czogW10sXG4gICAgICAgICAgICAgICAgICAgIGJuX2NvZGU6Ym5Db2RlLFxuICAgICAgICAgICAgICAgICAgICBwYXllcixcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDp0aGlzLmNvbmZpZy5jb250ZXh0XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKHJlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXMuanNvbigpO1xuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoZGF0YS5kYXRhLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5kYXRhLmlkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNyZWF0ZU9yZGVyLFxuICAgICAgICAgICAgb25BcHByb3ZlOiBvbkFwcHJvdmUodGhpcywgdGhpcy5lcnJvckhhbmRsZXIpLFxuICAgICAgICAgICAgb25FcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvckhhbmRsZXIuZ2VuZXJpY0Vycm9yKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDYXJ0QWN0aW9uSGFuZGxlcjtcbiIsImltcG9ydCBFcnJvckhhbmRsZXIgZnJvbSAnLi4vRXJyb3JIYW5kbGVyJztcbmltcG9ydCBDYXJ0QWN0aW9uSGFuZGxlciBmcm9tICcuLi9BY3Rpb25IYW5kbGVyL0NhcnRBY3Rpb25IYW5kbGVyJztcblxuY2xhc3MgTWluaUNhcnRCb290c3RhcCB7XG4gICAgY29uc3RydWN0b3IoZ2F0ZXdheSwgcmVuZGVyZXIpIHtcbiAgICAgICAgdGhpcy5nYXRld2F5ID0gZ2F0ZXdheTtcbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyO1xuICAgICAgICB0aGlzLmFjdGlvbkhhbmRsZXIgPSBudWxsO1xuICAgIH1cblxuICAgIGluaXQoKSB7XG5cbiAgICAgICAgdGhpcy5hY3Rpb25IYW5kbGVyID0gbmV3IENhcnRBY3Rpb25IYW5kbGVyKFxuICAgICAgICAgICAgUGF5UGFsQ29tbWVyY2VHYXRld2F5LFxuICAgICAgICAgICAgbmV3IEVycm9ySGFuZGxlcih0aGlzLmdhdGV3YXkubGFiZWxzLmVycm9yLmdlbmVyaWMpLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlbmRlcigpO1xuXG4gICAgICAgIGpRdWVyeShkb2N1bWVudC5ib2R5KS5vbignd2NfZnJhZ21lbnRzX2xvYWRlZCB3Y19mcmFnbWVudHNfcmVmcmVzaGVkJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvdWxkUmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLmdhdGV3YXkuYnV0dG9uLm1pbmlfY2FydF93cmFwcGVyKSAhPT1cbiAgICAgICAgICAgIG51bGwgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLmdhdGV3YXkuaG9zdGVkX2ZpZWxkcy5taW5pX2NhcnRfd3JhcHBlcikgIT09XG4gICAgICAgIG51bGw7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuc2hvdWxkUmVuZGVyKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVuZGVyKFxuICAgICAgICAgICAgdGhpcy5nYXRld2F5LmJ1dHRvbi5taW5pX2NhcnRfd3JhcHBlcixcbiAgICAgICAgICAgIHRoaXMuZ2F0ZXdheS5ob3N0ZWRfZmllbGRzLm1pbmlfY2FydF93cmFwcGVyLFxuICAgICAgICAgICAgdGhpcy5hY3Rpb25IYW5kbGVyLmNvbmZpZ3VyYXRpb24oKVxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWluaUNhcnRCb290c3RhcDsiLCJpbXBvcnQgUHJvZHVjdCBmcm9tIFwiLi4vRW50aXR5L1Byb2R1Y3RcIjtcbmNsYXNzIFVwZGF0ZUNhcnQge1xuXG4gICAgY29uc3RydWN0b3IoZW5kcG9pbnQsIG5vbmNlKVxuICAgIHtcbiAgICAgICAgdGhpcy5lbmRwb2ludCA9IGVuZHBvaW50O1xuICAgICAgICB0aGlzLm5vbmNlID0gbm9uY2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb25SZXNvbHZlXG4gICAgICogQHBhcmFtIHtQcm9kdWN0W119IHByb2R1Y3RzXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dW5rbm93bj59XG4gICAgICovXG4gICAgdXBkYXRlKG9uUmVzb2x2ZSwgcHJvZHVjdHMpXG4gICAge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgZmV0Y2goXG4gICAgICAgICAgICAgICAgdGhpcy5lbmRwb2ludCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBub25jZTogdGhpcy5ub25jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RzLFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkudGhlbihcbiAgICAgICAgICAgICAgICAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5qc29uKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoISByZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QocmVzdWx0LmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkID0gb25SZXNvbHZlKHJlc3VsdC5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNvbHZlZCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBVcGRhdGVDYXJ0OyIsIi8qKlxuICogV2hlbiB5b3UgY2FuJ3QgYWRkIHNvbWV0aGluZyB0byB0aGUgY2FydCwgdGhlIFBheVBhbCBidXR0b25zIHNob3VsZCBub3Qgc2hvdy5cbiAqIFRoZXJlZm9yZSB3ZSBsaXN0ZW4gZm9yIGNoYW5nZXMgb24gdGhlIGFkZCB0byBjYXJ0IGJ1dHRvbiBhbmQgc2hvdy9oaWRlIHRoZSBidXR0b25zIGFjY29yZGluZ2x5LlxuICovXG5cbmNsYXNzIEJ1dHRvbnNUb2dnbGVMaXN0ZW5lciB7XG4gICAgY29uc3RydWN0b3IoZWxlbWVudCwgc2hvd0NhbGxiYWNrLCBoaWRlQ2FsbGJhY2spXG4gICAge1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB0aGlzLnNob3dDYWxsYmFjayA9IHNob3dDYWxsYmFjaztcbiAgICAgICAgdGhpcy5oaWRlQ2FsbGJhY2sgPSBoaWRlQ2FsbGJhY2s7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIgPSBudWxsO1xuICAgIH1cblxuICAgIGluaXQoKVxuICAgIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0geyBhdHRyaWJ1dGVzIDogdHJ1ZSB9O1xuICAgICAgICBjb25zdCBjYWxsYmFjayA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkaXNhYmxlZCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlQ2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNob3dDYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihjYWxsYmFjayk7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsZW1lbnQsIGNvbmZpZyk7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgZGlzY29ubmVjdCgpXG4gICAge1xuICAgICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbnNUb2dnbGVMaXN0ZW5lcjsiLCJjbGFzcyBQcm9kdWN0IHtcblxuICAgIGNvbnN0cnVjdG9yKGlkLCBxdWFudGl0eSwgdmFyaWF0aW9ucykge1xuICAgICAgICB0aGlzLmlkID0gaWQ7XG4gICAgICAgIHRoaXMucXVhbnRpdHkgPSBxdWFudGl0eTtcbiAgICAgICAgdGhpcy52YXJpYXRpb25zID0gdmFyaWF0aW9ucztcbiAgICB9XG5cbiAgICBkYXRhKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWQ6dGhpcy5pZCxcbiAgICAgICAgICAgIHF1YW50aXR5OnRoaXMucXVhbnRpdHksXG4gICAgICAgICAgICB2YXJpYXRpb25zOnRoaXMudmFyaWF0aW9uc1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcm9kdWN0OyIsImltcG9ydCBCdXR0b25zVG9nZ2xlTGlzdGVuZXIgZnJvbSAnLi4vSGVscGVyL0J1dHRvbnNUb2dnbGVMaXN0ZW5lcic7XG5pbXBvcnQgUHJvZHVjdCBmcm9tICcuLi9FbnRpdHkvUHJvZHVjdCc7XG5pbXBvcnQgb25BcHByb3ZlIGZyb20gJy4uL09uQXBwcm92ZUhhbmRsZXIvb25BcHByb3ZlRm9yQ29udGludWUnO1xuaW1wb3J0IHtwYXllckRhdGF9IGZyb20gXCIuLi9IZWxwZXIvUGF5ZXJEYXRhXCI7XG5cbmNsYXNzIFNpbmdsZVByb2R1Y3RBY3Rpb25IYW5kbGVyIHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBjb25maWcsXG4gICAgICAgIHVwZGF0ZUNhcnQsXG4gICAgICAgIHNob3dCdXR0b25DYWxsYmFjayxcbiAgICAgICAgaGlkZUJ1dHRvbkNhbGxiYWNrLFxuICAgICAgICBmb3JtRWxlbWVudCxcbiAgICAgICAgZXJyb3JIYW5kbGVyXG4gICAgKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgICAgICB0aGlzLnVwZGF0ZUNhcnQgPSB1cGRhdGVDYXJ0O1xuICAgICAgICB0aGlzLnNob3dCdXR0b25DYWxsYmFjayA9IHNob3dCdXR0b25DYWxsYmFjaztcbiAgICAgICAgdGhpcy5oaWRlQnV0dG9uQ2FsbGJhY2sgPSBoaWRlQnV0dG9uQ2FsbGJhY2s7XG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnQgPSBmb3JtRWxlbWVudDtcbiAgICAgICAgdGhpcy5lcnJvckhhbmRsZXIgPSBlcnJvckhhbmRsZXI7XG4gICAgfVxuXG4gICAgY29uZmlndXJhdGlvbigpXG4gICAge1xuXG4gICAgICAgIGlmICggdGhpcy5oYXNWYXJpYXRpb25zKCkgKSB7XG4gICAgICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBCdXR0b25zVG9nZ2xlTGlzdGVuZXIoXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2luZ2xlX2FkZF90b19jYXJ0X2J1dHRvbicpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0J1dHRvbkNhbGxiYWNrLFxuICAgICAgICAgICAgICAgIHRoaXMuaGlkZUJ1dHRvbkNhbGxiYWNrXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgb2JzZXJ2ZXIuaW5pdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNyZWF0ZU9yZGVyOiB0aGlzLmNyZWF0ZU9yZGVyKCksXG4gICAgICAgICAgICBvbkFwcHJvdmU6IG9uQXBwcm92ZSh0aGlzLCB0aGlzLmVycm9ySGFuZGxlciksXG4gICAgICAgICAgICBvbkVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9ySGFuZGxlci5nZW5lcmljRXJyb3IoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZU9yZGVyKClcbiAgICB7XG4gICAgICAgIHZhciBnZXRQcm9kdWN0cyA9IG51bGw7XG4gICAgICAgIGlmICghIHRoaXMuaXNHcm91cGVkUHJvZHVjdCgpICkge1xuICAgICAgICAgICAgZ2V0UHJvZHVjdHMgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1cImFkZC10by1jYXJ0XCJdJykudmFsdWU7XG4gICAgICAgICAgICAgICAgY29uc3QgcXR5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9XCJxdWFudGl0eVwiXScpLnZhbHVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhcmlhdGlvbnMgPSB0aGlzLnZhcmlhdGlvbnMoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW25ldyBQcm9kdWN0KGlkLCBxdHksIHZhcmlhdGlvbnMpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdldFByb2R1Y3RzID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb2R1Y3RzID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPVwibnVtYmVyXCJdJykuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoISBlbGVtZW50LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudE5hbWUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnbmFtZScpLm1hdGNoKC9xdWFudGl0eVxcWyhbXFxkXSopXFxdLyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50TmFtZS5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpZCA9IHBhcnNlSW50KGVsZW1lbnROYW1lWzFdKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcXVhbnRpdHkgPSBwYXJzZUludChlbGVtZW50LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdHMucHVzaChuZXcgUHJvZHVjdChpZCwgcXVhbnRpdHksIG51bGwpKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIHJldHVybiBwcm9kdWN0cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjcmVhdGVPcmRlciA9IChkYXRhLCBhY3Rpb25zKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVycm9ySGFuZGxlci5jbGVhcigpO1xuXG4gICAgICAgICAgICBjb25zdCBvblJlc29sdmUgPSAocHVyY2hhc2VfdW5pdHMpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXllciA9IHBheWVyRGF0YSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJuQ29kZSA9IHR5cGVvZiB0aGlzLmNvbmZpZy5ibl9jb2Rlc1t0aGlzLmNvbmZpZy5jb250ZXh0XSAhPT0gJ3VuZGVmaW5lZCcgP1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5ibl9jb2Rlc1t0aGlzLmNvbmZpZy5jb250ZXh0XSA6ICcnO1xuICAgICAgICAgICAgICAgIHJldHVybiBmZXRjaCh0aGlzLmNvbmZpZy5hamF4LmNyZWF0ZV9vcmRlci5lbmRwb2ludCwge1xuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9uY2U6IHRoaXMuY29uZmlnLmFqYXguY3JlYXRlX29yZGVyLm5vbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHVyY2hhc2VfdW5pdHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXllcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGJuX2NvZGU6Ym5Db2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDp0aGlzLmNvbmZpZy5jb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXMuanNvbigpO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihkYXRhLmRhdGEubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEuZGF0YS5pZDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLnVwZGF0ZUNhcnQudXBkYXRlKG9uUmVzb2x2ZSwgZ2V0UHJvZHVjdHMoKSk7XG4gICAgICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZU9yZGVyO1xuICAgIH1cblxuICAgIHZhcmlhdGlvbnMoKVxuICAgIHtcblxuICAgICAgICBpZiAoISB0aGlzLmhhc1ZhcmlhdGlvbnMoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IFsuLi50aGlzLmZvcm1FbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbmFtZV49J2F0dHJpYnV0ZV8nXVwiKV0ubWFwKFxuICAgICAgICAgICAgKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOmVsZW1lbnQudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ZWxlbWVudC5uYW1lXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9XG5cbiAgICBoYXNWYXJpYXRpb25zKClcbiAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1FbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygndmFyaWF0aW9uc19mb3JtJyk7XG4gICAgfVxuXG4gICAgaXNHcm91cGVkUHJvZHVjdCgpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2dyb3VwZWRfZm9ybScpO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IFNpbmdsZVByb2R1Y3RBY3Rpb25IYW5kbGVyO1xuIiwiaW1wb3J0IEVycm9ySGFuZGxlciBmcm9tICcuLi9FcnJvckhhbmRsZXInO1xuaW1wb3J0IFVwZGF0ZUNhcnQgZnJvbSBcIi4uL0hlbHBlci9VcGRhdGVDYXJ0XCI7XG5pbXBvcnQgU2luZ2xlUHJvZHVjdEFjdGlvbkhhbmRsZXIgZnJvbSBcIi4uL0FjdGlvbkhhbmRsZXIvU2luZ2xlUHJvZHVjdEFjdGlvbkhhbmRsZXJcIjtcblxuY2xhc3MgU2luZ2xlUHJvZHVjdEJvb3RzdGFwIHtcbiAgICBjb25zdHJ1Y3RvcihnYXRld2F5LCByZW5kZXJlciwgbWVzc2FnZXMpIHtcbiAgICAgICAgdGhpcy5nYXRld2F5ID0gZ2F0ZXdheTtcbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyO1xuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gbWVzc2FnZXM7XG4gICAgfVxuXG4gICAgaW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNob3VsZFJlbmRlcigpKSB7XG4gICAgICAgICAgIHRoaXMucmVuZGVyZXIuaGlkZUJ1dHRvbnModGhpcy5nYXRld2F5Lmhvc3RlZF9maWVsZHMud3JhcHBlcik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cblxuICAgIHNob3VsZFJlbmRlcigpIHtcbiAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Zvcm0uY2FydCcpID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbkhhbmRsZXIgPSBuZXcgU2luZ2xlUHJvZHVjdEFjdGlvbkhhbmRsZXIoXG4gICAgICAgICAgICB0aGlzLmdhdGV3YXksXG4gICAgICAgICAgICBuZXcgVXBkYXRlQ2FydChcbiAgICAgICAgICAgICAgICB0aGlzLmdhdGV3YXkuYWpheC5jaGFuZ2VfY2FydC5lbmRwb2ludCxcbiAgICAgICAgICAgICAgICB0aGlzLmdhdGV3YXkuYWpheC5jaGFuZ2VfY2FydC5ub25jZSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaG93QnV0dG9ucyh0aGlzLmdhdGV3YXkuYnV0dG9uLndyYXBwZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hvd0J1dHRvbnModGhpcy5nYXRld2F5Lmhvc3RlZF9maWVsZHMud3JhcHBlcik7XG4gICAgICAgICAgICAgICAgbGV0IHByaWNlVGV4dCA9IFwiMFwiO1xuICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdmb3JtLmNhcnQgaW5zIC53b29jb21tZXJjZS1QcmljZS1hbW91bnQnKSkge1xuICAgICAgICAgICAgICAgICAgICBwcmljZVRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdmb3JtLmNhcnQgaW5zIC53b29jb21tZXJjZS1QcmljZS1hbW91bnQnKS5pbm5lclRleHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Zvcm0uY2FydCAud29vY29tbWVyY2UtUHJpY2UtYW1vdW50JykpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJpY2VUZXh0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZm9ybS5jYXJ0IC53b29jb21tZXJjZS1QcmljZS1hbW91bnQnKS5pbm5lclRleHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGFtb3VudCA9IHBhcnNlSW50KHByaWNlVGV4dC5yZXBsYWNlKC8oW15cXGQsXFwuXFxzXSopL2csICcnKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcy5yZW5kZXJXaXRoQW1vdW50KGFtb3VudClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5oaWRlQnV0dG9ucyh0aGlzLmdhdGV3YXkuYnV0dG9uLndyYXBwZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuaGlkZUJ1dHRvbnModGhpcy5nYXRld2F5Lmhvc3RlZF9maWVsZHMud3JhcHBlcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZm9ybS5jYXJ0JyksXG4gICAgICAgICAgICBuZXcgRXJyb3JIYW5kbGVyKHRoaXMuZ2F0ZXdheS5sYWJlbHMuZXJyb3IuZ2VuZXJpYyksXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW5kZXIoXG4gICAgICAgICAgICB0aGlzLmdhdGV3YXkuYnV0dG9uLndyYXBwZXIsXG4gICAgICAgICAgICB0aGlzLmdhdGV3YXkuaG9zdGVkX2ZpZWxkcy53cmFwcGVyLFxuICAgICAgICAgICAgYWN0aW9uSGFuZGxlci5jb25maWd1cmF0aW9uKCksXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTaW5nbGVQcm9kdWN0Qm9vdHN0YXA7IiwiaW1wb3J0IENhcnRBY3Rpb25IYW5kbGVyIGZyb20gJy4uL0FjdGlvbkhhbmRsZXIvQ2FydEFjdGlvbkhhbmRsZXInO1xuaW1wb3J0IEVycm9ySGFuZGxlciBmcm9tICcuLi9FcnJvckhhbmRsZXInO1xuXG5jbGFzcyBDYXJ0Qm9vdHN0cmFwIHtcbiAgICBjb25zdHJ1Y3RvcihnYXRld2F5LCByZW5kZXJlcikge1xuICAgICAgICB0aGlzLmdhdGV3YXkgPSBnYXRld2F5O1xuICAgICAgICB0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXI7XG4gICAgfVxuXG4gICAgaW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNob3VsZFJlbmRlcigpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlbmRlcigpO1xuXG4gICAgICAgIGpRdWVyeShkb2N1bWVudC5ib2R5KS5vbigndXBkYXRlZF9jYXJ0X3RvdGFscyB1cGRhdGVkX2NoZWNrb3V0JywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2hvdWxkUmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLmdhdGV3YXkuYnV0dG9uLndyYXBwZXIpICE9PVxuICAgICAgICAgICAgbnVsbCB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuZ2F0ZXdheS5ob3N0ZWRfZmllbGRzLndyYXBwZXIpICE9PVxuICAgICAgICAgICAgbnVsbDtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbkhhbmRsZXIgPSBuZXcgQ2FydEFjdGlvbkhhbmRsZXIoXG4gICAgICAgICAgICBQYXlQYWxDb21tZXJjZUdhdGV3YXksXG4gICAgICAgICAgICBuZXcgRXJyb3JIYW5kbGVyKHRoaXMuZ2F0ZXdheS5sYWJlbHMuZXJyb3IuZ2VuZXJpYyksXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW5kZXIoXG4gICAgICAgICAgICB0aGlzLmdhdGV3YXkuYnV0dG9uLndyYXBwZXIsXG4gICAgICAgICAgICB0aGlzLmdhdGV3YXkuaG9zdGVkX2ZpZWxkcy53cmFwcGVyLFxuICAgICAgICAgICAgYWN0aW9uSGFuZGxlci5jb25maWd1cmF0aW9uKCksXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDYXJ0Qm9vdHN0cmFwO1xuIiwiY29uc3Qgb25BcHByb3ZlID0gKGNvbnRleHQsIGVycm9ySGFuZGxlciwgc3Bpbm5lcikgPT4ge1xuICAgIHJldHVybiAoZGF0YSwgYWN0aW9ucykgPT4ge1xuICAgICAgICBzcGlubmVyLmJsb2NrKCk7XG4gICAgICAgIHJldHVybiBmZXRjaChjb250ZXh0LmNvbmZpZy5hamF4LmFwcHJvdmVfb3JkZXIuZW5kcG9pbnQsIHtcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIG5vbmNlOiBjb250ZXh0LmNvbmZpZy5hamF4LmFwcHJvdmVfb3JkZXIubm9uY2UsXG4gICAgICAgICAgICAgICAgb3JkZXJfaWQ6ZGF0YS5vcmRlcklEXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KS50aGVuKChyZXMpPT57XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oKTtcbiAgICAgICAgfSkudGhlbigoZGF0YSk9PntcbiAgICAgICAgICAgIHNwaW5uZXIudW5ibG9jaygpO1xuICAgICAgICAgICAgaWYgKCFkYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhLmNvZGUgPT09IDEwMCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXIubWVzc2FnZShkYXRhLmRhdGEubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyLmdlbmVyaWNFcnJvcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFjdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBhY3Rpb25zLnJlc3RhcnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY3Rpb25zLnJlc3RhcnQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGRhdGEuZGF0YS5tZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNwbGFjZV9vcmRlcicpLmNsaWNrKClcbiAgICAgICAgfSk7XG5cbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG9uQXBwcm92ZTtcbiIsImltcG9ydCBvbkFwcHJvdmUgZnJvbSAnLi4vT25BcHByb3ZlSGFuZGxlci9vbkFwcHJvdmVGb3JQYXlOb3cuanMnO1xuaW1wb3J0IHtwYXllckRhdGF9IGZyb20gXCIuLi9IZWxwZXIvUGF5ZXJEYXRhXCI7XG5cbmNsYXNzIENoZWNrb3V0QWN0aW9uSGFuZGxlciB7XG5cbiAgICBjb25zdHJ1Y3Rvcihjb25maWcsIGVycm9ySGFuZGxlciwgc3Bpbm5lcikge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgdGhpcy5lcnJvckhhbmRsZXIgPSBlcnJvckhhbmRsZXI7XG4gICAgICAgIHRoaXMuc3Bpbm5lciA9IHNwaW5uZXI7XG4gICAgfVxuXG4gICAgY29uZmlndXJhdGlvbigpIHtcbiAgICAgICAgY29uc3Qgc3Bpbm5lciA9IHRoaXMuc3Bpbm5lcjtcbiAgICAgICAgY29uc3QgY3JlYXRlT3JkZXIgPSAoZGF0YSwgYWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGF5ZXIgPSBwYXllckRhdGEoKTtcbiAgICAgICAgICAgIGNvbnN0IGJuQ29kZSA9IHR5cGVvZiB0aGlzLmNvbmZpZy5ibl9jb2Rlc1t0aGlzLmNvbmZpZy5jb250ZXh0XSAhPT0gJ3VuZGVmaW5lZCcgP1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmJuX2NvZGVzW3RoaXMuY29uZmlnLmNvbnRleHRdIDogJyc7XG5cbiAgICAgICAgICAgIGNvbnN0IGVycm9ySGFuZGxlciA9IHRoaXMuZXJyb3JIYW5kbGVyO1xuXG4gICAgICAgICAgICBjb25zdCBmb3JtU2VsZWN0b3IgPSB0aGlzLmNvbmZpZy5jb250ZXh0ID09PSAnY2hlY2tvdXQnID8gJ2Zvcm0uY2hlY2tvdXQnIDogJ2Zvcm0jb3JkZXJfcmV2aWV3JztcbiAgICAgICAgICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSBqUXVlcnkoZm9ybVNlbGVjdG9yKS5zZXJpYWxpemUoKTtcblxuICAgICAgICAgICAgY29uc3QgY3JlYXRlYWNjb3VudCA9IGpRdWVyeSgnI2NyZWF0ZWFjY291bnQnKS5pcyhcIjpjaGVja2VkXCIpID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgICAgICAgICByZXR1cm4gZmV0Y2godGhpcy5jb25maWcuYWpheC5jcmVhdGVfb3JkZXIuZW5kcG9pbnQsIHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgIG5vbmNlOiB0aGlzLmNvbmZpZy5hamF4LmNyZWF0ZV9vcmRlci5ub25jZSxcbiAgICAgICAgICAgICAgICAgICAgcGF5ZXIsXG4gICAgICAgICAgICAgICAgICAgIGJuX2NvZGU6Ym5Db2RlLFxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OnRoaXMuY29uZmlnLmNvbnRleHQsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyX2lkOnRoaXMuY29uZmlnLm9yZGVyX2lkLFxuICAgICAgICAgICAgICAgICAgICBmb3JtOmZvcm1WYWx1ZXMsXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWFjY291bnQ6IGNyZWF0ZWFjY291bnRcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcy5qc29uKCk7XG4gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Bpbm5lci51bmJsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgIC8vaGFuZGxlIGJvdGggbWVzc2FnZXMgc2VudCBmcm9tIFdvb2NvbW1lcmNlIChkYXRhLm1lc3NhZ2VzKSBhbmQgdGhpcyBwbHVnaW4gKGRhdGEuZGF0YS5tZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mKGRhdGEubWVzc2FnZXMpICE9PSAndW5kZWZpbmVkJyApXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbVBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ySGFuZGxlci5hcHBlbmRQcmVwYXJlZEVycm9yTWVzc2FnZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tUGFyc2VyLnBhcnNlRnJvbVN0cmluZyhkYXRhLm1lc3NhZ2VzLCAndGV4dC9odG1sJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ3VsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXIubWVzc2FnZShkYXRhLmRhdGEubWVzc2FnZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCduYW1lJywgJ3BwY3AtcmVzdW1lLW9yZGVyJyk7XG4gICAgICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGRhdGEuZGF0YS5wdXJjaGFzZV91bml0c1swXS5jdXN0b21faWQpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZm9ybVNlbGVjdG9yKS5hcHBlbmQoaW5wdXQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLmRhdGEuaWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY3JlYXRlT3JkZXIsXG4gICAgICAgICAgICBvbkFwcHJvdmU6b25BcHByb3ZlKHRoaXMsIHRoaXMuZXJyb3JIYW5kbGVyLCB0aGlzLnNwaW5uZXIpLFxuICAgICAgICAgICAgb25DYW5jZWw6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBzcGlubmVyLnVuYmxvY2soKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvckhhbmRsZXIuZ2VuZXJpY0Vycm9yKCk7XG4gICAgICAgICAgICAgICAgc3Bpbm5lci51bmJsb2NrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrb3V0QWN0aW9uSGFuZGxlcjtcbiIsImltcG9ydCBFcnJvckhhbmRsZXIgZnJvbSAnLi4vRXJyb3JIYW5kbGVyJztcbmltcG9ydCBDaGVja291dEFjdGlvbkhhbmRsZXIgZnJvbSAnLi4vQWN0aW9uSGFuZGxlci9DaGVja291dEFjdGlvbkhhbmRsZXInO1xuXG5jbGFzcyBDaGVja291dEJvb3RzdGFwIHtcbiAgICBjb25zdHJ1Y3RvcihnYXRld2F5LCByZW5kZXJlciwgbWVzc2FnZXMsIHNwaW5uZXIpIHtcbiAgICAgICAgdGhpcy5nYXRld2F5ID0gZ2F0ZXdheTtcbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyO1xuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gbWVzc2FnZXM7XG4gICAgICAgIHRoaXMuc3Bpbm5lciA9IHNwaW5uZXI7XG4gICAgfVxuXG4gICAgaW5pdCgpIHtcblxuICAgICAgICB0aGlzLnJlbmRlcigpO1xuXG4gICAgICAgIGpRdWVyeShkb2N1bWVudC5ib2R5KS5vbigndXBkYXRlZF9jaGVja291dCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKClcbiAgICAgICAgfSk7XG5cbiAgICAgICAgalF1ZXJ5KGRvY3VtZW50LmJvZHkpLlxuICAgICAgICAgIG9uKCd1cGRhdGVkX2NoZWNrb3V0IHBheW1lbnRfbWV0aG9kX3NlbGVjdGVkJywgKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnN3aXRjaEJldHdlZW5QYXlQYWxhbmRPcmRlckJ1dHRvbigpXG4gICAgICAgICAgICAgIHRoaXMuZGlzcGxheVBsYWNlT3JkZXJCdXR0b25Gb3JTYXZlZENyZWRpdENhcmRzKClcblxuICAgICAgICAgIH0pXG5cbiAgICAgICAgalF1ZXJ5KGRvY3VtZW50KS5vbignaG9zdGVkX2ZpZWxkc19sb2FkZWQnLCAoKSA9PiB7XG4gICAgICAgICAgICBqUXVlcnkoJyNzYXZlZC1jcmVkaXQtY2FyZCcpLm9uKCdjaGFuZ2UnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5UGxhY2VPcmRlckJ1dHRvbkZvclNhdmVkQ3JlZGl0Q2FyZHMoKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zd2l0Y2hCZXR3ZWVuUGF5UGFsYW5kT3JkZXJCdXR0b24oKVxuICAgICAgICB0aGlzLmRpc3BsYXlQbGFjZU9yZGVyQnV0dG9uRm9yU2F2ZWRDcmVkaXRDYXJkcygpXG4gICAgfVxuXG4gICAgc2hvdWxkUmVuZGVyKCkge1xuICAgICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLmdhdGV3YXkuYnV0dG9uLmNhbmNlbF93cmFwcGVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5nYXRld2F5LmJ1dHRvbi53cmFwcGVyKSAhPT0gbnVsbCB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuZ2F0ZXdheS5ob3N0ZWRfZmllbGRzLndyYXBwZXIpICE9PSBudWxsO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNob3VsZFJlbmRlcigpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5nYXRld2F5Lmhvc3RlZF9maWVsZHMud3JhcHBlciArICc+ZGl2JykpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5nYXRld2F5Lmhvc3RlZF9maWVsZHMud3JhcHBlciArICc+ZGl2Jykuc2V0QXR0cmlidXRlKCdzdHlsZScsICcnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3Rpb25IYW5kbGVyID0gbmV3IENoZWNrb3V0QWN0aW9uSGFuZGxlcihcbiAgICAgICAgICAgIFBheVBhbENvbW1lcmNlR2F0ZXdheSxcbiAgICAgICAgICAgIG5ldyBFcnJvckhhbmRsZXIodGhpcy5nYXRld2F5LmxhYmVscy5lcnJvci5nZW5lcmljKSxcbiAgICAgICAgICAgIHRoaXMuc3Bpbm5lclxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVuZGVyKFxuICAgICAgICAgICAgdGhpcy5nYXRld2F5LmJ1dHRvbi53cmFwcGVyLFxuICAgICAgICAgICAgdGhpcy5nYXRld2F5Lmhvc3RlZF9maWVsZHMud3JhcHBlcixcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZXIuY29uZmlndXJhdGlvbigpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHN3aXRjaEJldHdlZW5QYXlQYWxhbmRPcmRlckJ1dHRvbigpIHtcbiAgICAgICAgalF1ZXJ5KCcjc2F2ZWQtY3JlZGl0LWNhcmQnKS52YWwoalF1ZXJ5KCcjc2F2ZWQtY3JlZGl0LWNhcmQgb3B0aW9uOmZpcnN0JykudmFsKCkpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYXltZW50TWV0aG9kID0galF1ZXJ5KFxuICAgICAgICAgICAgJ2lucHV0W25hbWU9XCJwYXltZW50X21ldGhvZFwiXTpjaGVja2VkJykudmFsKCk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRQYXltZW50TWV0aG9kICE9PSAncHBjcC1nYXRld2F5JyAmJiBjdXJyZW50UGF5bWVudE1ldGhvZCAhPT0gJ3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheScpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuaGlkZUJ1dHRvbnModGhpcy5nYXRld2F5LmJ1dHRvbi53cmFwcGVyKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuaGlkZUJ1dHRvbnModGhpcy5nYXRld2F5Lm1lc3NhZ2VzLndyYXBwZXIpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5oaWRlQnV0dG9ucyh0aGlzLmdhdGV3YXkuaG9zdGVkX2ZpZWxkcy53cmFwcGVyKTtcbiAgICAgICAgICAgIGpRdWVyeSgnI3BsYWNlX29yZGVyJykuc2hvdygpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgalF1ZXJ5KCcjcGxhY2Vfb3JkZXInKS5oaWRlKCk7XG4gICAgICAgICAgICBpZiAoY3VycmVudFBheW1lbnRNZXRob2QgPT09ICdwcGNwLWdhdGV3YXknKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaG93QnV0dG9ucyh0aGlzLmdhdGV3YXkuYnV0dG9uLndyYXBwZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hvd0J1dHRvbnModGhpcy5nYXRld2F5Lm1lc3NhZ2VzLndyYXBwZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXMucmVuZGVyKClcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmhpZGVCdXR0b25zKHRoaXMuZ2F0ZXdheS5ob3N0ZWRfZmllbGRzLndyYXBwZXIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY3VycmVudFBheW1lbnRNZXRob2QgPT09ICdwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXknKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5oaWRlQnV0dG9ucyh0aGlzLmdhdGV3YXkuYnV0dG9uLndyYXBwZXIpXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5oaWRlQnV0dG9ucyh0aGlzLmdhdGV3YXkubWVzc2FnZXMud3JhcHBlcilcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNob3dCdXR0b25zKHRoaXMuZ2F0ZXdheS5ob3N0ZWRfZmllbGRzLndyYXBwZXIpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNwbGF5UGxhY2VPcmRlckJ1dHRvbkZvclNhdmVkQ3JlZGl0Q2FyZHMoKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYXltZW50TWV0aG9kID0galF1ZXJ5KFxuICAgICAgICAgICdpbnB1dFtuYW1lPVwicGF5bWVudF9tZXRob2RcIl06Y2hlY2tlZCcpLnZhbCgpO1xuICAgICAgICBpZiAoY3VycmVudFBheW1lbnRNZXRob2QgIT09ICdwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXknKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoalF1ZXJ5KCcjc2F2ZWQtY3JlZGl0LWNhcmQnKS5sZW5ndGggJiYgalF1ZXJ5KCcjc2F2ZWQtY3JlZGl0LWNhcmQnKS52YWwoKSAhPT0gJycpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuaGlkZUJ1dHRvbnModGhpcy5nYXRld2F5LmJ1dHRvbi53cmFwcGVyKVxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5oaWRlQnV0dG9ucyh0aGlzLmdhdGV3YXkubWVzc2FnZXMud3JhcHBlcilcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuaGlkZUJ1dHRvbnModGhpcy5nYXRld2F5Lmhvc3RlZF9maWVsZHMud3JhcHBlcilcbiAgICAgICAgICAgIGpRdWVyeSgnI3BsYWNlX29yZGVyJykuc2hvdygpXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVDcmVkaXRDYXJkRmllbGRzKClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGpRdWVyeSgnI3BsYWNlX29yZGVyJykuaGlkZSgpXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmhpZGVCdXR0b25zKHRoaXMuZ2F0ZXdheS5idXR0b24ud3JhcHBlcilcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuaGlkZUJ1dHRvbnModGhpcy5nYXRld2F5Lm1lc3NhZ2VzLndyYXBwZXIpXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNob3dCdXR0b25zKHRoaXMuZ2F0ZXdheS5ob3N0ZWRfZmllbGRzLndyYXBwZXIpXG4gICAgICAgICAgICB0aGlzLmVuYWJsZUNyZWRpdENhcmRGaWVsZHMoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGlzYWJsZUNyZWRpdENhcmRGaWVsZHMoKSB7XG4gICAgICAgIGpRdWVyeSgnbGFiZWxbZm9yPVwicHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWNhcmQtbnVtYmVyXCJdJykuYWRkQ2xhc3MoJ3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1mb3JtLWZpZWxkLWRpc2FibGVkJylcbiAgICAgICAgalF1ZXJ5KCcjcHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWNhcmQtbnVtYmVyJykuYWRkQ2xhc3MoJ3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1mb3JtLWZpZWxkLWRpc2FibGVkJylcbiAgICAgICAgalF1ZXJ5KCdsYWJlbFtmb3I9XCJwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktY2FyZC1leHBpcnlcIl0nKS5hZGRDbGFzcygncHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWZvcm0tZmllbGQtZGlzYWJsZWQnKVxuICAgICAgICBqUXVlcnkoJyNwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktY2FyZC1leHBpcnknKS5hZGRDbGFzcygncHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWZvcm0tZmllbGQtZGlzYWJsZWQnKVxuICAgICAgICBqUXVlcnkoJ2xhYmVsW2Zvcj1cInBwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1jYXJkLWN2Y1wiXScpLmFkZENsYXNzKCdwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktZm9ybS1maWVsZC1kaXNhYmxlZCcpXG4gICAgICAgIGpRdWVyeSgnI3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1jYXJkLWN2YycpLmFkZENsYXNzKCdwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktZm9ybS1maWVsZC1kaXNhYmxlZCcpXG4gICAgICAgIGpRdWVyeSgnbGFiZWxbZm9yPVwidmF1bHRcIl0nKS5hZGRDbGFzcygncHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWZvcm0tZmllbGQtZGlzYWJsZWQnKVxuICAgICAgICBqUXVlcnkoJyNwcGNwLWNyZWRpdC1jYXJkLXZhdWx0JykuYWRkQ2xhc3MoJ3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1mb3JtLWZpZWxkLWRpc2FibGVkJylcbiAgICAgICAgalF1ZXJ5KCcjcHBjcC1jcmVkaXQtY2FyZC12YXVsdCcpLmF0dHIoXCJkaXNhYmxlZFwiLCB0cnVlKVxuICAgICAgICB0aGlzLnJlbmRlcmVyLmRpc2FibGVDcmVkaXRDYXJkRmllbGRzKClcbiAgICB9XG5cbiAgICBlbmFibGVDcmVkaXRDYXJkRmllbGRzKCkge1xuICAgICAgICBqUXVlcnkoJ2xhYmVsW2Zvcj1cInBwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1jYXJkLW51bWJlclwiXScpLnJlbW92ZUNsYXNzKCdwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktZm9ybS1maWVsZC1kaXNhYmxlZCcpXG4gICAgICAgIGpRdWVyeSgnI3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1jYXJkLW51bWJlcicpLnJlbW92ZUNsYXNzKCdwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktZm9ybS1maWVsZC1kaXNhYmxlZCcpXG4gICAgICAgIGpRdWVyeSgnbGFiZWxbZm9yPVwicHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWNhcmQtZXhwaXJ5XCJdJykucmVtb3ZlQ2xhc3MoJ3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1mb3JtLWZpZWxkLWRpc2FibGVkJylcbiAgICAgICAgalF1ZXJ5KCcjcHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWNhcmQtZXhwaXJ5JykucmVtb3ZlQ2xhc3MoJ3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1mb3JtLWZpZWxkLWRpc2FibGVkJylcbiAgICAgICAgalF1ZXJ5KCdsYWJlbFtmb3I9XCJwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktY2FyZC1jdmNcIl0nKS5yZW1vdmVDbGFzcygncHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWZvcm0tZmllbGQtZGlzYWJsZWQnKVxuICAgICAgICBqUXVlcnkoJyNwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktY2FyZC1jdmMnKS5yZW1vdmVDbGFzcygncHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWZvcm0tZmllbGQtZGlzYWJsZWQnKVxuICAgICAgICBqUXVlcnkoJ2xhYmVsW2Zvcj1cInZhdWx0XCJdJykucmVtb3ZlQ2xhc3MoJ3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1mb3JtLWZpZWxkLWRpc2FibGVkJylcbiAgICAgICAgalF1ZXJ5KCcjcHBjcC1jcmVkaXQtY2FyZC12YXVsdCcpLnJlbW92ZUNsYXNzKCdwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktZm9ybS1maWVsZC1kaXNhYmxlZCcpXG4gICAgICAgIGpRdWVyeSgnI3BwY3AtY3JlZGl0LWNhcmQtdmF1bHQnKS5hdHRyKFwiZGlzYWJsZWRcIiwgZmFsc2UpXG4gICAgICAgIHRoaXMucmVuZGVyZXIuZW5hYmxlQ3JlZGl0Q2FyZEZpZWxkcygpXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDaGVja291dEJvb3RzdGFwXG4iLCJpbXBvcnQgRXJyb3JIYW5kbGVyIGZyb20gJy4uL0Vycm9ySGFuZGxlcic7XG5pbXBvcnQgQ2hlY2tvdXRBY3Rpb25IYW5kbGVyIGZyb20gJy4uL0FjdGlvbkhhbmRsZXIvQ2hlY2tvdXRBY3Rpb25IYW5kbGVyJztcblxuY2xhc3MgUGF5Tm93Qm9vdHN0cmFwIHtcbiAgICBjb25zdHJ1Y3RvcihnYXRld2F5LCByZW5kZXJlciwgbWVzc2FnZXMsIHNwaW5uZXIpIHtcbiAgICAgICAgdGhpcy5nYXRld2F5ID0gZ2F0ZXdheTtcbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyO1xuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gbWVzc2FnZXM7XG4gICAgICAgIHRoaXMuc3Bpbm5lciA9IHNwaW5uZXI7XG4gICAgfVxuXG4gICAgaW5pdCgpIHtcblxuICAgICAgICB0aGlzLnJlbmRlcigpO1xuXG4gICAgICAgIGpRdWVyeShkb2N1bWVudC5ib2R5KS5vbigndXBkYXRlZF9jaGVja291dCcsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGpRdWVyeShkb2N1bWVudC5ib2R5KS5cbiAgICAgICAgb24oJ3VwZGF0ZWRfY2hlY2tvdXQgcGF5bWVudF9tZXRob2Rfc2VsZWN0ZWQnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN3aXRjaEJldHdlZW5QYXlQYWxhbmRPcmRlckJ1dHRvbigpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zd2l0Y2hCZXR3ZWVuUGF5UGFsYW5kT3JkZXJCdXR0b24oKTtcbiAgICB9XG5cbiAgICBzaG91bGRSZW5kZXIoKSB7XG4gICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuZ2F0ZXdheS5idXR0b24uY2FuY2VsX3dyYXBwZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLmdhdGV3YXkuYnV0dG9uLndyYXBwZXIpICE9PSBudWxsIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5nYXRld2F5Lmhvc3RlZF9maWVsZHMud3JhcHBlcikgIT09IG51bGw7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuc2hvdWxkUmVuZGVyKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLmdhdGV3YXkuaG9zdGVkX2ZpZWxkcy53cmFwcGVyICsgJz5kaXYnKSkge1xuICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLmdhdGV3YXkuaG9zdGVkX2ZpZWxkcy53cmFwcGVyICsgJz5kaXYnKS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJycpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGlvbkhhbmRsZXIgPSBuZXcgQ2hlY2tvdXRBY3Rpb25IYW5kbGVyKFxuICAgICAgICAgICAgUGF5UGFsQ29tbWVyY2VHYXRld2F5LFxuICAgICAgICAgICAgbmV3IEVycm9ySGFuZGxlcih0aGlzLmdhdGV3YXkubGFiZWxzLmVycm9yLmdlbmVyaWMpLFxuICAgICAgICAgICAgdGhpcy5zcGlubmVyXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW5kZXIoXG4gICAgICAgICAgICB0aGlzLmdhdGV3YXkuYnV0dG9uLndyYXBwZXIsXG4gICAgICAgICAgICB0aGlzLmdhdGV3YXkuaG9zdGVkX2ZpZWxkcy53cmFwcGVyLFxuICAgICAgICAgICAgYWN0aW9uSGFuZGxlci5jb25maWd1cmF0aW9uKCksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc3dpdGNoQmV0d2VlblBheVBhbGFuZE9yZGVyQnV0dG9uKCkge1xuICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpXG4gICAgICAgIGlmICh1cmxQYXJhbXMuaGFzKCdjaGFuZ2VfcGF5bWVudF9tZXRob2QnKSkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50UGF5bWVudE1ldGhvZCA9IGpRdWVyeShcbiAgICAgICAgICAgICdpbnB1dFtuYW1lPVwicGF5bWVudF9tZXRob2RcIl06Y2hlY2tlZCcpLnZhbCgpO1xuXG4gICAgICAgIGlmIChjdXJyZW50UGF5bWVudE1ldGhvZCAhPT0gJ3BwY3AtZ2F0ZXdheScgJiYgY3VycmVudFBheW1lbnRNZXRob2QgIT09ICdwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXknKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmhpZGVCdXR0b25zKHRoaXMuZ2F0ZXdheS5idXR0b24ud3JhcHBlcik7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmhpZGVCdXR0b25zKHRoaXMuZ2F0ZXdheS5tZXNzYWdlcy53cmFwcGVyKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuaGlkZUJ1dHRvbnModGhpcy5nYXRld2F5Lmhvc3RlZF9maWVsZHMud3JhcHBlcik7XG4gICAgICAgICAgICBqUXVlcnkoJyNwbGFjZV9vcmRlcicpLnNob3coKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGpRdWVyeSgnI3BsYWNlX29yZGVyJykuaGlkZSgpO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRQYXltZW50TWV0aG9kID09PSAncHBjcC1nYXRld2F5Jykge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hvd0J1dHRvbnModGhpcy5nYXRld2F5LmJ1dHRvbi53cmFwcGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNob3dCdXR0b25zKHRoaXMuZ2F0ZXdheS5tZXNzYWdlcy53cmFwcGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzLnJlbmRlcigpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuaGlkZUJ1dHRvbnModGhpcy5nYXRld2F5Lmhvc3RlZF9maWVsZHMud3JhcHBlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY3VycmVudFBheW1lbnRNZXRob2QgPT09ICdwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXknKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5oaWRlQnV0dG9ucyh0aGlzLmdhdGV3YXkuYnV0dG9uLndyYXBwZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuaGlkZUJ1dHRvbnModGhpcy5nYXRld2F5Lm1lc3NhZ2VzLndyYXBwZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hvd0J1dHRvbnModGhpcy5nYXRld2F5Lmhvc3RlZF9maWVsZHMud3JhcHBlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBheU5vd0Jvb3RzdHJhcDtcbiIsImNsYXNzIFJlbmRlcmVyIHtcbiAgICBjb25zdHJ1Y3RvcihjcmVkaXRDYXJkUmVuZGVyZXIsIGRlZmF1bHRDb25maWcpIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnID0gZGVmYXVsdENvbmZpZztcbiAgICAgICAgdGhpcy5jcmVkaXRDYXJkUmVuZGVyZXIgPSBjcmVkaXRDYXJkUmVuZGVyZXI7XG4gICAgfVxuXG4gICAgcmVuZGVyKHdyYXBwZXIsIGhvc3RlZEZpZWxkc1dyYXBwZXIsIGNvbnRleHRDb25maWcpIHtcblxuICAgICAgICB0aGlzLnJlbmRlckJ1dHRvbnMod3JhcHBlciwgY29udGV4dENvbmZpZyk7XG4gICAgICAgIHRoaXMuY3JlZGl0Q2FyZFJlbmRlcmVyLnJlbmRlcihob3N0ZWRGaWVsZHNXcmFwcGVyLCBjb250ZXh0Q29uZmlnKTtcbiAgICB9XG5cbiAgICByZW5kZXJCdXR0b25zKHdyYXBwZXIsIGNvbnRleHRDb25maWcpIHtcbiAgICAgICAgaWYgKCEgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih3cmFwcGVyKSB8fCB0aGlzLmlzQWxyZWFkeVJlbmRlcmVkKHdyYXBwZXIpIHx8ICd1bmRlZmluZWQnID09PSB0eXBlb2YgcGF5cGFsLkJ1dHRvbnMgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdHlsZSA9IHdyYXBwZXIgPT09IHRoaXMuZGVmYXVsdENvbmZpZy5idXR0b24ud3JhcHBlciA/IHRoaXMuZGVmYXVsdENvbmZpZy5idXR0b24uc3R5bGUgOiB0aGlzLmRlZmF1bHRDb25maWcuYnV0dG9uLm1pbmlfY2FydF9zdHlsZTtcbiAgICAgICAgcGF5cGFsLkJ1dHRvbnMoe1xuICAgICAgICAgICAgc3R5bGUsXG4gICAgICAgICAgICAuLi5jb250ZXh0Q29uZmlnLFxuICAgICAgICB9KS5yZW5kZXIod3JhcHBlcik7XG4gICAgfVxuXG4gICAgaXNBbHJlYWR5UmVuZGVyZWQod3JhcHBlcikge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih3cmFwcGVyKS5oYXNDaGlsZE5vZGVzKCk7XG4gICAgfVxuXG4gICAgaGlkZUJ1dHRvbnMoZWxlbWVudCkge1xuICAgICAgICBjb25zdCBkb21FbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlbGVtZW50KTtcbiAgICAgICAgaWYgKCEgZG9tRWxlbWVudCApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBkb21FbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHNob3dCdXR0b25zKGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgZG9tRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZWxlbWVudCk7XG4gICAgICAgIGlmICghIGRvbUVsZW1lbnQgKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZG9tRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZGlzYWJsZUNyZWRpdENhcmRGaWVsZHMoKSB7XG4gICAgICAgIHRoaXMuY3JlZGl0Q2FyZFJlbmRlcmVyLmRpc2FibGVGaWVsZHMoKTtcbiAgICB9XG5cbiAgICBlbmFibGVDcmVkaXRDYXJkRmllbGRzKCkge1xuICAgICAgICB0aGlzLmNyZWRpdENhcmRSZW5kZXJlci5lbmFibGVGaWVsZHMoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlbmRlcmVyO1xuIiwiY29uc3QgZGNjSW5wdXRGYWN0b3J5ID0gKG9yaWdpbmFsKSA9PiB7XG4gICAgY29uc3Qgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUob3JpZ2luYWwpO1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgbmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2lkJywgb3JpZ2luYWwuaWQpO1xuICAgIE9iamVjdC52YWx1ZXMoc3R5bGVzKS5mb3JFYWNoKCAocHJvcCkgPT4ge1xuICAgICAgICBpZiAoISBzdHlsZXNbcHJvcF0gfHwgISBpc05hTihwcm9wKSApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBuZXdFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHByb3AsJycgKyBzdHlsZXNbcHJvcF0pO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXdFbGVtZW50O1xufVxuXG5leHBvcnQgZGVmYXVsdCBkY2NJbnB1dEZhY3Rvcnk7IiwiaW1wb3J0IGRjY0lucHV0RmFjdG9yeSBmcm9tIFwiLi4vSGVscGVyL0RjY0lucHV0RmFjdG9yeVwiO1xuXG5jbGFzcyBDcmVkaXRDYXJkUmVuZGVyZXIge1xuXG4gICAgY29uc3RydWN0b3IoZGVmYXVsdENvbmZpZywgZXJyb3JIYW5kbGVyLCBzcGlubmVyKSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IGRlZmF1bHRDb25maWc7XG4gICAgICAgIHRoaXMuZXJyb3JIYW5kbGVyID0gZXJyb3JIYW5kbGVyO1xuICAgICAgICB0aGlzLnNwaW5uZXIgPSBzcGlubmVyO1xuICAgICAgICB0aGlzLmNhcmRWYWxpZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZvcm1WYWxpZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmN1cnJlbnRIb3N0ZWRGaWVsZHNJbnN0YW5jZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZm9ybVN1Ym1pc3Npb25TdWJzY3JpYmVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmVuZGVyKHdyYXBwZXIsIGNvbnRleHRDb25maWcpIHtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLmNvbnRleHQgIT09ICdjaGVja291dCdcbiAgICAgICAgICAgICAgICAmJiB0aGlzLmRlZmF1bHRDb25maWcuY29udGV4dCAhPT0gJ3BheS1ub3cnXG4gICAgICAgICAgICApXG4gICAgICAgICAgICB8fCB3cmFwcGVyID09PSBudWxsXG4gICAgICAgICAgICB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHdyYXBwZXIpID09PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiBwYXlwYWwuSG9zdGVkRmllbGRzID09PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgfHwgISBwYXlwYWwuSG9zdGVkRmllbGRzLmlzRWxpZ2libGUoKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHdyYXBwZXJFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih3cmFwcGVyKTtcbiAgICAgICAgICAgIHdyYXBwZXJFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQod3JhcHBlckVsZW1lbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEhvc3RlZEZpZWxkc0luc3RhbmNlKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRIb3N0ZWRGaWVsZHNJbnN0YW5jZS50ZWFyZG93bigpXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiBjb25zb2xlLmVycm9yKGBIb3N0ZWQgZmllbGRzIHRlYXJkb3duIGVycm9yOiAke2Vycn1gKSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRIb3N0ZWRGaWVsZHNJbnN0YW5jZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBnYXRlV2F5Qm94ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnBheW1lbnRfYm94LnBheW1lbnRfbWV0aG9kX3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheScpO1xuICAgICAgICBjb25zdCBvbGREaXNwbGF5U3R5bGUgPSBnYXRlV2F5Qm94LnN0eWxlLmRpc3BsYXk7XG4gICAgICAgIGdhdGVXYXlCb3guc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG5cbiAgICAgICAgY29uc3QgaGlkZURjY0dhdGV3YXkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjcHBjcC1oaWRlLWRjYycpO1xuICAgICAgICBpZiAoaGlkZURjY0dhdGV3YXkpIHtcbiAgICAgICAgICAgIGhpZGVEY2NHYXRld2F5LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaGlkZURjY0dhdGV3YXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2FyZE51bWJlckZpZWxkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheS1jYXJkLW51bWJlcicpO1xuXG4gICAgICAgIGNvbnN0IHN0eWxlc1JhdyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGNhcmROdW1iZXJGaWVsZCk7XG4gICAgICAgIGxldCBzdHlsZXMgPSB7fTtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhzdHlsZXNSYXcpLmZvckVhY2goIChwcm9wKSA9PiB7XG4gICAgICAgICAgICBpZiAoISBzdHlsZXNSYXdbcHJvcF0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdHlsZXNbcHJvcF0gPSAnJyArIHN0eWxlc1Jhd1twcm9wXTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgY2FyZE51bWJlciA9IGRjY0lucHV0RmFjdG9yeShjYXJkTnVtYmVyRmllbGQpO1xuICAgICAgICBjYXJkTnVtYmVyRmllbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoY2FyZE51bWJlciwgY2FyZE51bWJlckZpZWxkKTtcblxuICAgICAgICBjb25zdCBjYXJkRXhwaXJ5RmllbGQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjcHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWNhcmQtZXhwaXJ5Jyk7XG4gICAgICAgIGNvbnN0IGNhcmRFeHBpcnkgPSBkY2NJbnB1dEZhY3RvcnkoY2FyZEV4cGlyeUZpZWxkKTtcbiAgICAgICAgY2FyZEV4cGlyeUZpZWxkLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGNhcmRFeHBpcnksIGNhcmRFeHBpcnlGaWVsZCk7XG5cbiAgICAgICAgY29uc3QgY2FyZENvZGVGaWVsZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktY2FyZC1jdmMnKTtcbiAgICAgICAgY29uc3QgY2FyZENvZGUgPSBkY2NJbnB1dEZhY3RvcnkoY2FyZENvZGVGaWVsZCk7XG4gICAgICAgIGNhcmRDb2RlRmllbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoY2FyZENvZGUsIGNhcmRDb2RlRmllbGQpO1xuXG4gICAgICAgIGdhdGVXYXlCb3guc3R5bGUuZGlzcGxheSA9IG9sZERpc3BsYXlTdHlsZTtcblxuICAgICAgICBjb25zdCBmb3JtV3JhcHBlciA9ICcucGF5bWVudF9ib3ggcGF5bWVudF9tZXRob2RfcHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5JztcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLmVuZm9yY2VfdmF1bHRcbiAgICAgICAgICAgICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZm9ybVdyYXBwZXIgKyAnIC5wcGNwLWNyZWRpdC1jYXJkLXZhdWx0JylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGZvcm1XcmFwcGVyICsgJyAucHBjcC1jcmVkaXQtY2FyZC12YXVsdCcpLmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihmb3JtV3JhcHBlciArICcgLnBwY3AtY3JlZGl0LWNhcmQtdmF1bHQnKS5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcGF5cGFsLkhvc3RlZEZpZWxkcy5yZW5kZXIoe1xuICAgICAgICAgICAgY3JlYXRlT3JkZXI6IGNvbnRleHRDb25maWcuY3JlYXRlT3JkZXIsXG4gICAgICAgICAgICBzdHlsZXM6IHtcbiAgICAgICAgICAgICAgICAnaW5wdXQnOiBzdHlsZXNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWVsZHM6IHtcbiAgICAgICAgICAgICAgICBudW1iZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6ICcjcHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWNhcmQtbnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMuZGVmYXVsdENvbmZpZy5ob3N0ZWRfZmllbGRzLmxhYmVscy5jcmVkaXRfY2FyZF9udW1iZXIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjdnY6IHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6ICcjcHBjcC1jcmVkaXQtY2FyZC1nYXRld2F5LWNhcmQtY3ZjJyxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMuZGVmYXVsdENvbmZpZy5ob3N0ZWRfZmllbGRzLmxhYmVscy5jdnYsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleHBpcmF0aW9uRGF0ZToge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcjogJyNwcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktY2FyZC1leHBpcnknLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5kZWZhdWx0Q29uZmlnLmhvc3RlZF9maWVsZHMubGFiZWxzLm1tX3l5LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkudGhlbihob3N0ZWRGaWVsZHMgPT4ge1xuICAgICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJob3N0ZWRfZmllbGRzX2xvYWRlZFwiKSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRIb3N0ZWRGaWVsZHNJbnN0YW5jZSA9IGhvc3RlZEZpZWxkcztcblxuICAgICAgICAgICAgaG9zdGVkRmllbGRzLm9uKCdpbnB1dFN1Ym1pdFJlcXVlc3QnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3VibWl0KGNvbnRleHRDb25maWcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBob3N0ZWRGaWVsZHMub24oJ2NhcmRUeXBlQ2hhbmdlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCAhIGV2ZW50LmNhcmRzLmxlbmd0aCApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXJkVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZENhcmRzID0gdGhpcy5kZWZhdWx0Q29uZmlnLmhvc3RlZF9maWVsZHMudmFsaWRfY2FyZHM7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXJkVmFsaWQgPSB2YWxpZENhcmRzLmluZGV4T2YoZXZlbnQuY2FyZHNbMF0udHlwZSkgIT09IC0xO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGhvc3RlZEZpZWxkcy5vbigndmFsaWRpdHlDaGFuZ2UnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtVmFsaWQgPSBPYmplY3Qua2V5cyhldmVudC5maWVsZHMpLmV2ZXJ5KGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmZpZWxkc1trZXldLmlzVmFsaWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICB0aGlzLmZvcm1WYWxpZCA9IGZvcm1WYWxpZDtcblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5mb3JtU3VibWlzc2lvblN1YnNjcmliZWQpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHdyYXBwZXIgKyAnIGJ1dHRvbicpLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICAgICAgICAgICdjbGljaycsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdWJtaXQoY29udGV4dENvbmZpZyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybVN1Ym1pc3Npb25TdWJzY3JpYmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3BheW1lbnRfbWV0aG9kX3BwY3AtY3JlZGl0LWNhcmQtZ2F0ZXdheScpLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICAnY2xpY2snLFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2xhYmVsW2Zvcj1wcGNwLWNyZWRpdC1jYXJkLWdhdGV3YXktY2FyZC1udW1iZXJdJykuY2xpY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgIH1cblxuICAgIGRpc2FibGVGaWVsZHMoKSB7XG4gICAgICAgIGlmKCB0aGlzLmN1cnJlbnRIb3N0ZWRGaWVsZHNJbnN0YW5jZSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50SG9zdGVkRmllbGRzSW5zdGFuY2Uuc2V0QXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiAnZGlzYWJsZWQnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50SG9zdGVkRmllbGRzSW5zdGFuY2Uuc2V0QXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2N2dicsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiAnZGlzYWJsZWQnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50SG9zdGVkRmllbGRzSW5zdGFuY2Uuc2V0QXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2V4cGlyYXRpb25EYXRlJyxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6ICdkaXNhYmxlZCdcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlbmFibGVGaWVsZHMoKSB7XG4gICAgICAgIGlmKCB0aGlzLmN1cnJlbnRIb3N0ZWRGaWVsZHNJbnN0YW5jZSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50SG9zdGVkRmllbGRzSW5zdGFuY2UucmVtb3ZlQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiAnZGlzYWJsZWQnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50SG9zdGVkRmllbGRzSW5zdGFuY2UucmVtb3ZlQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2N2dicsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiAnZGlzYWJsZWQnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50SG9zdGVkRmllbGRzSW5zdGFuY2UucmVtb3ZlQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBmaWVsZDogJ2V4cGlyYXRpb25EYXRlJyxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6ICdkaXNhYmxlZCdcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfc3VibWl0KGNvbnRleHRDb25maWcpIHtcbiAgICAgICAgdGhpcy5zcGlubmVyLmJsb2NrKCk7XG4gICAgICAgIHRoaXMuZXJyb3JIYW5kbGVyLmNsZWFyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZm9ybVZhbGlkICYmIHRoaXMuY2FyZFZhbGlkKSB7XG4gICAgICAgICAgICBjb25zdCBzYXZlX2NhcmQgPSB0aGlzLmRlZmF1bHRDb25maWcuc2F2ZV9jYXJkID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgdmF1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHBjcC1jcmVkaXQtY2FyZC12YXVsdCcpID9cbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHBjcC1jcmVkaXQtY2FyZC12YXVsdCcpLmNoZWNrZWQgOiBzYXZlX2NhcmQ7XG4gICAgICAgICAgICBjb25zdCBjb250aW5nZW5jeSA9IHRoaXMuZGVmYXVsdENvbmZpZy5ob3N0ZWRfZmllbGRzLmNvbnRpbmdlbmN5O1xuICAgICAgICAgICAgY29uc3QgaG9zdGVkRmllbGRzRGF0YSA9IHtcbiAgICAgICAgICAgICAgICB2YXVsdDogdmF1bHRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoY29udGluZ2VuY3kgIT09ICdOT18zRF9TRUNVUkUnKSB7XG4gICAgICAgICAgICAgICAgaG9zdGVkRmllbGRzRGF0YS5jb250aW5nZW5jaWVzID0gW2NvbnRpbmdlbmN5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY3VycmVudEhvc3RlZEZpZWxkc0luc3RhbmNlLnN1Ym1pdChob3N0ZWRGaWVsZHNEYXRhKS50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC5vcmRlcklEID0gcGF5bG9hZC5vcmRlcklkO1xuICAgICAgICAgICAgICAgIHRoaXMuc3Bpbm5lci51bmJsb2NrKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHRDb25maWcub25BcHByb3ZlKHBheWxvYWQpO1xuICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgdGhpcy5zcGlubmVyLnVuYmxvY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zcGlubmVyLnVuYmxvY2soKTtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAhIHRoaXMuY2FyZFZhbGlkID8gdGhpcy5kZWZhdWx0Q29uZmlnLmhvc3RlZF9maWVsZHMubGFiZWxzLmNhcmRfbm90X3N1cHBvcnRlZCA6IHRoaXMuZGVmYXVsdENvbmZpZy5ob3N0ZWRfZmllbGRzLmxhYmVscy5maWVsZHNfbm90X3ZhbGlkO1xuICAgICAgICAgICAgdGhpcy5lcnJvckhhbmRsZXIubWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IENyZWRpdENhcmRSZW5kZXJlcjtcbiIsImNvbnN0IHN0b3JhZ2VLZXkgPSAncHBjcC1kYXRhLWNsaWVudC1pZCc7XG5cbmNvbnN0IHZhbGlkYXRlVG9rZW4gPSAodG9rZW4sIHVzZXIpID0+IHtcbiAgICBpZiAoISB0b2tlbikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0b2tlbi51c2VyICE9PSB1c2VyKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBjb25zdCBpc0V4cGlyZWQgPSBjdXJyZW50VGltZSA+PSB0b2tlbi5leHBpcmF0aW9uICogMTAwMDtcbiAgICByZXR1cm4gISBpc0V4cGlyZWQ7XG59XG5cbmNvbnN0IHN0b3JlZFRva2VuRm9yVXNlciA9ICh1c2VyKSA9PiB7XG4gICAgY29uc3QgdG9rZW4gPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oc3RvcmFnZUtleSkpO1xuICAgIGlmICh2YWxpZGF0ZVRva2VuKHRva2VuLCB1c2VyKSkge1xuICAgICAgICByZXR1cm4gdG9rZW4udG9rZW47XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuXG5jb25zdCBzdG9yZVRva2VuID0gKHRva2VuKSA9PiB7XG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShzdG9yYWdlS2V5LCBKU09OLnN0cmluZ2lmeSh0b2tlbikpO1xufVxuXG5jb25zdCBkYXRhQ2xpZW50SWRBdHRyaWJ1dGVIYW5kbGVyID0gKHNjcmlwdCwgY29uZmlnKSA9PiB7XG4gICAgZmV0Y2goY29uZmlnLmVuZHBvaW50LCB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBub25jZTogY29uZmlnLm5vbmNlXG4gICAgICAgIH0pXG4gICAgfSkudGhlbigocmVzKT0+e1xuICAgICAgICByZXR1cm4gcmVzLmpzb24oKTtcbiAgICB9KS50aGVuKChkYXRhKT0+e1xuICAgICAgICBjb25zdCBpc1ZhbGlkID0gdmFsaWRhdGVUb2tlbihkYXRhLCBjb25maWcudXNlcik7XG4gICAgICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN0b3JlVG9rZW4oZGF0YSk7XG4gICAgICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtY2xpZW50LXRva2VuJywgZGF0YS50b2tlbik7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKHNjcmlwdCk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRhdGFDbGllbnRJZEF0dHJpYnV0ZUhhbmRsZXI7XG4iLCJjbGFzcyBNZXNzYWdlUmVuZGVyZXIge1xuXG4gICAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgaWYgKCEgdGhpcy5zaG91bGRSZW5kZXIoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcGF5cGFsLk1lc3NhZ2VzKHtcbiAgICAgICAgICAgIGFtb3VudDogdGhpcy5jb25maWcuYW1vdW50LFxuICAgICAgICAgICAgcGxhY2VtZW50OiB0aGlzLmNvbmZpZy5wbGFjZW1lbnQsXG4gICAgICAgICAgICBzdHlsZTogdGhpcy5jb25maWcuc3R5bGVcbiAgICAgICAgfSkucmVuZGVyKHRoaXMuY29uZmlnLndyYXBwZXIpO1xuICAgIH1cblxuICAgIHJlbmRlcldpdGhBbW91bnQoYW1vdW50KSB7XG5cbiAgICAgICAgaWYgKCEgdGhpcy5zaG91bGRSZW5kZXIoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3V3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBuZXdXcmFwcGVyLnNldEF0dHJpYnV0ZSgnaWQnLCB0aGlzLmNvbmZpZy53cmFwcGVyLnJlcGxhY2UoJyMnLCAnJykpO1xuXG4gICAgICAgIGNvbnN0IHNpYmxpbmcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuY29uZmlnLndyYXBwZXIpLm5leHRTaWJsaW5nO1xuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuY29uZmlnLndyYXBwZXIpLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLmNvbmZpZy53cmFwcGVyKSk7XG4gICAgICAgIHNpYmxpbmcucGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUobmV3V3JhcHBlciwgc2libGluZyk7XG4gICAgICAgIHBheXBhbC5NZXNzYWdlcyh7XG4gICAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHRoaXMuY29uZmlnLnBsYWNlbWVudCxcbiAgICAgICAgICAgIHN0eWxlOiB0aGlzLmNvbmZpZy5zdHlsZVxuICAgICAgICB9KS5yZW5kZXIodGhpcy5jb25maWcud3JhcHBlcik7XG4gICAgfVxuXG4gICAgc2hvdWxkUmVuZGVyKCkge1xuXG4gICAgICAgIGlmICh0eXBlb2YgcGF5cGFsLk1lc3NhZ2VzID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgdGhpcy5jb25maWcud3JhcHBlciA9PT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLmNvbmZpZy53cmFwcGVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IE1lc3NhZ2VSZW5kZXJlcjsiLCJjbGFzcyBTcGlubmVyIHtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnRhcmdldCA9ICdmb3JtLndvb2NvbW1lcmNlLWNoZWNrb3V0JztcbiAgICB9XG5cbiAgICBzZXRUYXJnZXQodGFyZ2V0KSB7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgIH1cblxuICAgIGJsb2NrKCkge1xuXG4gICAgICAgIGpRdWVyeSggdGhpcy50YXJnZXQgKS5ibG9jayh7XG4gICAgICAgICAgICBtZXNzYWdlOiBudWxsLFxuICAgICAgICAgICAgb3ZlcmxheUNTUzoge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICcjZmZmJyxcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjZcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdW5ibG9jaygpIHtcblxuICAgICAgICBqUXVlcnkoIHRoaXMudGFyZ2V0ICkudW5ibG9jaygpO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU3Bpbm5lcjtcbiIsImltcG9ydCBNaW5pQ2FydEJvb3RzdGFwIGZyb20gJy4vbW9kdWxlcy9Db250ZXh0Qm9vdHN0cmFwL01pbmlDYXJ0Qm9vdHN0YXAnO1xuaW1wb3J0IFNpbmdsZVByb2R1Y3RCb290c3RhcCBmcm9tICcuL21vZHVsZXMvQ29udGV4dEJvb3RzdHJhcC9TaW5nbGVQcm9kdWN0Qm9vdHN0YXAnO1xuaW1wb3J0IENhcnRCb290c3RyYXAgZnJvbSAnLi9tb2R1bGVzL0NvbnRleHRCb290c3RyYXAvQ2FydEJvb3RzdGFwJztcbmltcG9ydCBDaGVja291dEJvb3RzdGFwIGZyb20gJy4vbW9kdWxlcy9Db250ZXh0Qm9vdHN0cmFwL0NoZWNrb3V0Qm9vdHN0YXAnO1xuaW1wb3J0IFBheU5vd0Jvb3RzdHJhcCBmcm9tIFwiLi9tb2R1bGVzL0NvbnRleHRCb290c3RyYXAvUGF5Tm93Qm9vdHN0cmFwXCI7XG5pbXBvcnQgUmVuZGVyZXIgZnJvbSAnLi9tb2R1bGVzL1JlbmRlcmVyL1JlbmRlcmVyJztcbmltcG9ydCBFcnJvckhhbmRsZXIgZnJvbSAnLi9tb2R1bGVzL0Vycm9ySGFuZGxlcic7XG5pbXBvcnQgQ3JlZGl0Q2FyZFJlbmRlcmVyIGZyb20gXCIuL21vZHVsZXMvUmVuZGVyZXIvQ3JlZGl0Q2FyZFJlbmRlcmVyXCI7XG5pbXBvcnQgZGF0YUNsaWVudElkQXR0cmlidXRlSGFuZGxlciBmcm9tIFwiLi9tb2R1bGVzL0RhdGFDbGllbnRJZEF0dHJpYnV0ZUhhbmRsZXJcIjtcbmltcG9ydCBNZXNzYWdlUmVuZGVyZXIgZnJvbSBcIi4vbW9kdWxlcy9SZW5kZXJlci9NZXNzYWdlUmVuZGVyZXJcIjtcbmltcG9ydCBTcGlubmVyIGZyb20gXCIuL21vZHVsZXMvSGVscGVyL1NwaW5uZXJcIjtcblxuY29uc3QgYm9vdHN0cmFwID0gKCkgPT4ge1xuICAgIGNvbnN0IGVycm9ySGFuZGxlciA9IG5ldyBFcnJvckhhbmRsZXIoUGF5UGFsQ29tbWVyY2VHYXRld2F5LmxhYmVscy5lcnJvci5nZW5lcmljKTtcbiAgICBjb25zdCBzcGlubmVyID0gbmV3IFNwaW5uZXIoKTtcbiAgICBjb25zdCBjcmVkaXRDYXJkUmVuZGVyZXIgPSBuZXcgQ3JlZGl0Q2FyZFJlbmRlcmVyKFBheVBhbENvbW1lcmNlR2F0ZXdheSwgZXJyb3JIYW5kbGVyLCBzcGlubmVyKTtcbiAgICBjb25zdCByZW5kZXJlciA9IG5ldyBSZW5kZXJlcihjcmVkaXRDYXJkUmVuZGVyZXIsIFBheVBhbENvbW1lcmNlR2F0ZXdheSk7XG4gICAgY29uc3QgbWVzc2FnZVJlbmRlcmVyID0gbmV3IE1lc3NhZ2VSZW5kZXJlcihQYXlQYWxDb21tZXJjZUdhdGV3YXkubWVzc2FnZXMpO1xuICAgIGNvbnN0IGNvbnRleHQgPSBQYXlQYWxDb21tZXJjZUdhdGV3YXkuY29udGV4dDtcbiAgICBpZiAoY29udGV4dCA9PT0gJ21pbmktY2FydCcgfHwgY29udGV4dCA9PT0gJ3Byb2R1Y3QnKSB7XG4gICAgICAgIGlmIChQYXlQYWxDb21tZXJjZUdhdGV3YXkubWluaV9jYXJ0X2J1dHRvbnNfZW5hYmxlZCA9PT0gJzEnKSB7XG4gICAgICAgICAgICBjb25zdCBtaW5pQ2FydEJvb3RzdHJhcCA9IG5ldyBNaW5pQ2FydEJvb3RzdGFwKFxuICAgICAgICAgICAgICAgIFBheVBhbENvbW1lcmNlR2F0ZXdheSxcbiAgICAgICAgICAgICAgICByZW5kZXJlclxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgbWluaUNhcnRCb290c3RyYXAuaW5pdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvbnRleHQgPT09ICdwcm9kdWN0JyAmJiBQYXlQYWxDb21tZXJjZUdhdGV3YXkuc2luZ2xlX3Byb2R1Y3RfYnV0dG9uc19lbmFibGVkID09PSAnMScpIHtcbiAgICAgICAgY29uc3Qgc2luZ2xlUHJvZHVjdEJvb3RzdHJhcCA9IG5ldyBTaW5nbGVQcm9kdWN0Qm9vdHN0YXAoXG4gICAgICAgICAgICBQYXlQYWxDb21tZXJjZUdhdGV3YXksXG4gICAgICAgICAgICByZW5kZXJlcixcbiAgICAgICAgICAgIG1lc3NhZ2VSZW5kZXJlcixcbiAgICAgICAgKTtcblxuICAgICAgICBzaW5nbGVQcm9kdWN0Qm9vdHN0cmFwLmluaXQoKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dCA9PT0gJ2NhcnQnKSB7XG4gICAgICAgIGNvbnN0IGNhcnRCb290c3RyYXAgPSBuZXcgQ2FydEJvb3RzdHJhcChcbiAgICAgICAgICAgIFBheVBhbENvbW1lcmNlR2F0ZXdheSxcbiAgICAgICAgICAgIHJlbmRlcmVyLFxuICAgICAgICApO1xuXG4gICAgICAgIGNhcnRCb290c3RyYXAuaW5pdCgpO1xuICAgIH1cblxuICAgIGlmIChjb250ZXh0ID09PSAnY2hlY2tvdXQnKSB7XG4gICAgICAgIGNvbnN0IGNoZWNrb3V0Qm9vdHN0YXAgPSBuZXcgQ2hlY2tvdXRCb290c3RhcChcbiAgICAgICAgICAgIFBheVBhbENvbW1lcmNlR2F0ZXdheSxcbiAgICAgICAgICAgIHJlbmRlcmVyLFxuICAgICAgICAgICAgbWVzc2FnZVJlbmRlcmVyLFxuICAgICAgICAgICAgc3Bpbm5lclxuICAgICAgICApO1xuXG4gICAgICAgIGNoZWNrb3V0Qm9vdHN0YXAuaW5pdCgpO1xuICAgIH1cblxuICAgIGlmIChjb250ZXh0ID09PSAncGF5LW5vdycgKSB7XG4gICAgICAgIGNvbnN0IHBheU5vd0Jvb3RzdHJhcCA9IG5ldyBQYXlOb3dCb290c3RyYXAoXG4gICAgICAgICAgICBQYXlQYWxDb21tZXJjZUdhdGV3YXksXG4gICAgICAgICAgICByZW5kZXJlcixcbiAgICAgICAgICAgIG1lc3NhZ2VSZW5kZXJlcixcbiAgICAgICAgICAgIHNwaW5uZXJcbiAgICAgICAgKTtcbiAgICAgICAgcGF5Tm93Qm9vdHN0cmFwLmluaXQoKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dCAhPT0gJ2NoZWNrb3V0Jykge1xuICAgICAgICBtZXNzYWdlUmVuZGVyZXIucmVuZGVyKCk7XG4gICAgfVxufTtcbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgJ0RPTUNvbnRlbnRMb2FkZWQnLFxuICAgICgpID0+IHtcbiAgICAgICAgaWYgKCF0eXBlb2YgKFBheVBhbENvbW1lcmNlR2F0ZXdheSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1BheVBhbCBidXR0b24gY291bGQgbm90IGJlIGNvbmZpZ3VyZWQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG5cbiAgICAgICAgc2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGJvb3RzdHJhcCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZSgnc3JjJywgUGF5UGFsQ29tbWVyY2VHYXRld2F5LmJ1dHRvbi51cmwpO1xuICAgICAgICBPYmplY3QuZW50cmllcyhQYXlQYWxDb21tZXJjZUdhdGV3YXkuc2NyaXB0X2F0dHJpYnV0ZXMpLmZvckVhY2goXG4gICAgICAgICAgICAoa2V5VmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBzY3JpcHQuc2V0QXR0cmlidXRlKGtleVZhbHVlWzBdLCBrZXlWYWx1ZVsxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKFBheVBhbENvbW1lcmNlR2F0ZXdheS5kYXRhX2NsaWVudF9pZC5zZXRfYXR0cmlidXRlKSB7XG4gICAgICAgICAgICBkYXRhQ2xpZW50SWRBdHRyaWJ1dGVIYW5kbGVyKHNjcmlwdCwgUGF5UGFsQ29tbWVyY2VHYXRld2F5LmRhdGFfY2xpZW50X2lkKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKHNjcmlwdCk7XG4gICAgfSxcbik7XG4iXSwibmFtZXMiOlsiRXJyb3JIYW5kbGVyIiwiY29uc3RydWN0b3IiLCJnZW5lcmljRXJyb3JUZXh0Iiwid3JhcHBlciIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsIm1lc3NhZ2VzTGlzdCIsImdlbmVyaWNFcnJvciIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwiY2xlYXIiLCJtZXNzYWdlIiwiYXBwZW5kUHJlcGFyZWRFcnJvck1lc3NhZ2VFbGVtZW50IiwiZXJyb3JNZXNzYWdlRWxlbWVudCIsInByZXBhcmVNZXNzYWdlc0xpc3QiLCJyZXBsYWNlV2l0aCIsInRleHQiLCJwZXJzaXN0IiwiU3RyaW5nIiwibGVuZ3RoIiwiRXJyb3IiLCJhZGQiLCJyZW1vdmUiLCJtZXNzYWdlTm9kZSIsInByZXBhcmVNZXNzYWdlc0xpc3RJdGVtIiwiYXBwZW5kQ2hpbGQiLCJqUXVlcnkiLCJzY3JvbGxfdG9fbm90aWNlcyIsImNyZWF0ZUVsZW1lbnQiLCJzZXRBdHRyaWJ1dGUiLCJsaSIsImlubmVySFRNTCIsInNhbml0aXplIiwidGV4dGFyZWEiLCJ2YWx1ZSIsInJlcGxhY2UiLCJpbm5lclRleHQiLCJvbkFwcHJvdmUiLCJjb250ZXh0IiwiZXJyb3JIYW5kbGVyIiwiZGF0YSIsImFjdGlvbnMiLCJmZXRjaCIsImNvbmZpZyIsImFqYXgiLCJhcHByb3ZlX29yZGVyIiwiZW5kcG9pbnQiLCJtZXRob2QiLCJib2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsIm5vbmNlIiwib3JkZXJfaWQiLCJvcmRlcklEIiwidGhlbiIsInJlcyIsImpzb24iLCJzdWNjZXNzIiwicmVzdGFydCIsImNhdGNoIiwiZXJyIiwibG9jYXRpb24iLCJocmVmIiwicmVkaXJlY3QiLCJwYXllckRhdGEiLCJwYXllciIsIlBheVBhbENvbW1lcmNlR2F0ZXdheSIsInBob25lIiwicGhvbmVfdHlwZSIsInBob25lX251bWJlciIsIm5hdGlvbmFsX251bWJlciIsImVtYWlsX2FkZHJlc3MiLCJuYW1lIiwic3VybmFtZSIsImdpdmVuX25hbWUiLCJhZGRyZXNzIiwiY291bnRyeV9jb2RlIiwiYWRkcmVzc19saW5lXzEiLCJhZGRyZXNzX2xpbmVfMiIsImFkbWluX2FyZWFfMSIsImFkbWluX2FyZWFfMiIsInBvc3RhbF9jb2RlIiwiQ2FydEFjdGlvbkhhbmRsZXIiLCJjb25maWd1cmF0aW9uIiwiY3JlYXRlT3JkZXIiLCJibkNvZGUiLCJibl9jb2RlcyIsImNyZWF0ZV9vcmRlciIsInB1cmNoYXNlX3VuaXRzIiwiYm5fY29kZSIsImNvbnNvbGUiLCJlcnJvciIsImlkIiwib25FcnJvciIsIk1pbmlDYXJ0Qm9vdHN0YXAiLCJnYXRld2F5IiwicmVuZGVyZXIiLCJhY3Rpb25IYW5kbGVyIiwiaW5pdCIsImxhYmVscyIsImdlbmVyaWMiLCJyZW5kZXIiLCJvbiIsInNob3VsZFJlbmRlciIsImJ1dHRvbiIsIm1pbmlfY2FydF93cmFwcGVyIiwiaG9zdGVkX2ZpZWxkcyIsIlByb2R1Y3QiLCJVcGRhdGVDYXJ0IiwidXBkYXRlIiwib25SZXNvbHZlIiwicHJvZHVjdHMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInJlc3VsdCIsInJlc29sdmVkIiwiQnV0dG9uc1RvZ2dsZUxpc3RlbmVyIiwiZWxlbWVudCIsInNob3dDYWxsYmFjayIsImhpZGVDYWxsYmFjayIsIm9ic2VydmVyIiwiYXR0cmlidXRlcyIsImNhbGxiYWNrIiwiTXV0YXRpb25PYnNlcnZlciIsIm9ic2VydmUiLCJkaXNjb25uZWN0IiwicXVhbnRpdHkiLCJ2YXJpYXRpb25zIiwiU2luZ2xlUHJvZHVjdEFjdGlvbkhhbmRsZXIiLCJ1cGRhdGVDYXJ0Iiwic2hvd0J1dHRvbkNhbGxiYWNrIiwiaGlkZUJ1dHRvbkNhbGxiYWNrIiwiZm9ybUVsZW1lbnQiLCJoYXNWYXJpYXRpb25zIiwiZ2V0UHJvZHVjdHMiLCJpc0dyb3VwZWRQcm9kdWN0IiwicXR5IiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJlbGVtZW50TmFtZSIsImdldEF0dHJpYnV0ZSIsIm1hdGNoIiwicGFyc2VJbnQiLCJwdXNoIiwicHJvbWlzZSIsIm1hcCIsIlNpbmdsZVByb2R1Y3RCb290c3RhcCIsIm1lc3NhZ2VzIiwiaGlkZUJ1dHRvbnMiLCJjaGFuZ2VfY2FydCIsInNob3dCdXR0b25zIiwicHJpY2VUZXh0IiwiYW1vdW50IiwicmVuZGVyV2l0aEFtb3VudCIsIkNhcnRCb290c3RyYXAiLCJzcGlubmVyIiwiYmxvY2siLCJ1bmJsb2NrIiwiY29kZSIsImNsaWNrIiwiQ2hlY2tvdXRBY3Rpb25IYW5kbGVyIiwiZm9ybVNlbGVjdG9yIiwiZm9ybVZhbHVlcyIsInNlcmlhbGl6ZSIsImNyZWF0ZWFjY291bnQiLCJpcyIsImZvcm0iLCJkb21QYXJzZXIiLCJET01QYXJzZXIiLCJwYXJzZUZyb21TdHJpbmciLCJpbnB1dCIsImN1c3RvbV9pZCIsImFwcGVuZCIsIm9uQ2FuY2VsIiwiQ2hlY2tvdXRCb290c3RhcCIsInN3aXRjaEJldHdlZW5QYXlQYWxhbmRPcmRlckJ1dHRvbiIsImRpc3BsYXlQbGFjZU9yZGVyQnV0dG9uRm9yU2F2ZWRDcmVkaXRDYXJkcyIsImNhbmNlbF93cmFwcGVyIiwidmFsIiwiY3VycmVudFBheW1lbnRNZXRob2QiLCJzaG93IiwiaGlkZSIsImRpc2FibGVDcmVkaXRDYXJkRmllbGRzIiwiZW5hYmxlQ3JlZGl0Q2FyZEZpZWxkcyIsImFkZENsYXNzIiwiYXR0ciIsInJlbW92ZUNsYXNzIiwiUGF5Tm93Qm9vdHN0cmFwIiwidXJsUGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwid2luZG93Iiwic2VhcmNoIiwiaGFzIiwiUmVuZGVyZXIiLCJjcmVkaXRDYXJkUmVuZGVyZXIiLCJkZWZhdWx0Q29uZmlnIiwiaG9zdGVkRmllbGRzV3JhcHBlciIsImNvbnRleHRDb25maWciLCJyZW5kZXJCdXR0b25zIiwiaXNBbHJlYWR5UmVuZGVyZWQiLCJwYXlwYWwiLCJCdXR0b25zIiwic3R5bGUiLCJtaW5pX2NhcnRfc3R5bGUiLCJoYXNDaGlsZE5vZGVzIiwiZG9tRWxlbWVudCIsImRpc3BsYXkiLCJkaXNhYmxlRmllbGRzIiwiZW5hYmxlRmllbGRzIiwiZGNjSW5wdXRGYWN0b3J5Iiwib3JpZ2luYWwiLCJzdHlsZXMiLCJnZXRDb21wdXRlZFN0eWxlIiwibmV3RWxlbWVudCIsIk9iamVjdCIsInZhbHVlcyIsInByb3AiLCJpc05hTiIsInNldFByb3BlcnR5IiwiQ3JlZGl0Q2FyZFJlbmRlcmVyIiwiY2FyZFZhbGlkIiwiZm9ybVZhbGlkIiwiY3VycmVudEhvc3RlZEZpZWxkc0luc3RhbmNlIiwiZm9ybVN1Ym1pc3Npb25TdWJzY3JpYmVkIiwiSG9zdGVkRmllbGRzIiwiaXNFbGlnaWJsZSIsIndyYXBwZXJFbGVtZW50IiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwidGVhcmRvd24iLCJnYXRlV2F5Qm94Iiwib2xkRGlzcGxheVN0eWxlIiwiaGlkZURjY0dhdGV3YXkiLCJjYXJkTnVtYmVyRmllbGQiLCJzdHlsZXNSYXciLCJjYXJkTnVtYmVyIiwicmVwbGFjZUNoaWxkIiwiY2FyZEV4cGlyeUZpZWxkIiwiY2FyZEV4cGlyeSIsImNhcmRDb2RlRmllbGQiLCJjYXJkQ29kZSIsImZvcm1XcmFwcGVyIiwiZW5mb3JjZV92YXVsdCIsImNoZWNrZWQiLCJmaWVsZHMiLCJudW1iZXIiLCJzZWxlY3RvciIsInBsYWNlaG9sZGVyIiwiY3JlZGl0X2NhcmRfbnVtYmVyIiwiY3Z2IiwiZXhwaXJhdGlvbkRhdGUiLCJtbV95eSIsImhvc3RlZEZpZWxkcyIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsIl9zdWJtaXQiLCJldmVudCIsImNhcmRzIiwidmFsaWRDYXJkcyIsInZhbGlkX2NhcmRzIiwiaW5kZXhPZiIsInR5cGUiLCJrZXlzIiwiZXZlcnkiLCJrZXkiLCJpc1ZhbGlkIiwiYWRkRXZlbnRMaXN0ZW5lciIsInByZXZlbnREZWZhdWx0IiwiZmllbGQiLCJhdHRyaWJ1dGUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJzYXZlX2NhcmQiLCJ2YXVsdCIsImdldEVsZW1lbnRCeUlkIiwiY29udGluZ2VuY3kiLCJob3N0ZWRGaWVsZHNEYXRhIiwiY29udGluZ2VuY2llcyIsInN1Ym1pdCIsInBheWxvYWQiLCJvcmRlcklkIiwiY2FyZF9ub3Rfc3VwcG9ydGVkIiwiZmllbGRzX25vdF92YWxpZCIsInN0b3JhZ2VLZXkiLCJ2YWxpZGF0ZVRva2VuIiwidG9rZW4iLCJ1c2VyIiwiY3VycmVudFRpbWUiLCJEYXRlIiwiZ2V0VGltZSIsImlzRXhwaXJlZCIsImV4cGlyYXRpb24iLCJzdG9yZWRUb2tlbkZvclVzZXIiLCJwYXJzZSIsInNlc3Npb25TdG9yYWdlIiwiZ2V0SXRlbSIsInN0b3JlVG9rZW4iLCJzZXRJdGVtIiwiZGF0YUNsaWVudElkQXR0cmlidXRlSGFuZGxlciIsInNjcmlwdCIsIk1lc3NhZ2VSZW5kZXJlciIsIk1lc3NhZ2VzIiwicGxhY2VtZW50IiwibmV3V3JhcHBlciIsInNpYmxpbmciLCJuZXh0U2libGluZyIsInBhcmVudEVsZW1lbnQiLCJpbnNlcnRCZWZvcmUiLCJTcGlubmVyIiwidGFyZ2V0Iiwic2V0VGFyZ2V0Iiwib3ZlcmxheUNTUyIsImJhY2tncm91bmQiLCJvcGFjaXR5IiwiYm9vdHN0cmFwIiwibWVzc2FnZVJlbmRlcmVyIiwibWluaV9jYXJ0X2J1dHRvbnNfZW5hYmxlZCIsIm1pbmlDYXJ0Qm9vdHN0cmFwIiwic2luZ2xlX3Byb2R1Y3RfYnV0dG9uc19lbmFibGVkIiwic2luZ2xlUHJvZHVjdEJvb3RzdHJhcCIsImNhcnRCb290c3RyYXAiLCJjaGVja291dEJvb3RzdGFwIiwicGF5Tm93Qm9vdHN0cmFwIiwidXJsIiwiZW50cmllcyIsInNjcmlwdF9hdHRyaWJ1dGVzIiwia2V5VmFsdWUiLCJkYXRhX2NsaWVudF9pZCIsInNldF9hdHRyaWJ1dGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///94\n")}},__webpack_exports__={};__webpack_modules__[94]()})();
 
modules/ppcp-button/assets/js/button.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./resources/js/modules/ErrorHandler.js","webpack:///./resources/js/modules/OnApproveHandler/onApproveForContinue.js","webpack:///./resources/js/modules/Helper/PayerData.js","webpack:///./resources/js/modules/ActionHandler/CartActionHandler.js","webpack:///./resources/js/modules/ContextBootstrap/MiniCartBootstap.js","webpack:///./resources/js/modules/Entity/Product.js","webpack:///./resources/js/modules/Helper/UpdateCart.js","webpack:///./resources/js/modules/Helper/ButtonsToggleListener.js","webpack:///./resources/js/modules/ActionHandler/SingleProductActionHandler.js","webpack:///./resources/js/modules/ContextBootstrap/SingleProductBootstap.js","webpack:///./resources/js/modules/ContextBootstrap/CartBootstap.js","webpack:///./resources/js/modules/OnApproveHandler/onApproveForPayNow.js","webpack:///./resources/js/modules/ActionHandler/CheckoutActionHandler.js","webpack:///./resources/js/modules/ContextBootstrap/CheckoutBootstap.js","webpack:///./resources/js/modules/ContextBootstrap/PayNowBootstrap.js","webpack:///./resources/js/modules/Renderer/Renderer.js","webpack:///./resources/js/modules/Helper/DccInputFactory.js","webpack:///./resources/js/modules/Renderer/CreditCardRenderer.js","webpack:///./resources/js/modules/DataClientIdAttributeHandler.js","webpack:///./resources/js/modules/Renderer/MessageRenderer.js","webpack:///./resources/js/modules/Helper/Spinner.js","webpack:///./resources/js/button.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","ErrorHandler","constructor","genericErrorText","this","wrapper","document","querySelector","messagesList","genericError","classList","contains","clear","message","appendPreparedErrorMessageElement","errorMessageElement","prepareMessagesList","replaceWith","text","persist","length","Error","add","remove","messageNode","prepareMessagesListItem","appendChild","jQuery","scroll_to_notices","createElement","setAttribute","li","innerHTML","sanitize","textarea","replace","innerText","onApprove","context","errorHandler","data","actions","fetch","config","ajax","approve_order","endpoint","method","body","JSON","stringify","nonce","order_id","orderID","then","res","json","success","restart","catch","err","location","href","redirect","payerData","payer","PayPalCommerceGateway","phone","phone_type","phone_number","national_number","email_address","surname","given_name","address","country_code","address_line_1","address_line_2","admin_area_1","admin_area_2","postal_code","CartActionHandler","configuration","createOrder","bnCode","bn_codes","create_order","purchase_units","bn_code","console","error","id","onError","MiniCartBootstap","gateway","renderer","actionHandler","init","labels","generic","render","on","shouldRender","button","mini_cart_wrapper","hosted_fields","Product","quantity","variations","UpdateCart","update","onResolve","products","Promise","resolve","reject","result","resolved","ButtonsToggleListener","element","showCallback","hideCallback","observer","callback","MutationObserver","observe","attributes","disconnect","SingleProductActionHandler","updateCart","showButtonCallback","hideButtonCallback","formElement","hasVariations","getProducts","isGroupedProduct","querySelectorAll","forEach","elementName","getAttribute","match","parseInt","push","qty","map","SingleProductBootstap","messages","hideButtons","change_cart","showButtons","priceText","amount","renderWithAmount","CartBootstrap","spinner","block","unblock","code","click","CheckoutActionHandler","formSelector","formValues","serialize","createaccount","is","form","domParser","DOMParser","parseFromString","input","custom_id","append","onCancel","CheckoutBootstap","switchBetweenPayPalandOrderButton","displayPlaceOrderButtonForSavedCreditCards","cancel_wrapper","val","currentPaymentMethod","show","hide","PayNowBootstrap","URLSearchParams","window","search","has","Renderer","creditCardRenderer","defaultConfig","hostedFieldsWrapper","contextConfig","renderButtons","isAlreadyRendered","paypal","Buttons","style","mini_cart_style","hasChildNodes","domElement","display","dccInputFactory","original","styles","getComputedStyle","newElement","values","prop","isNaN","setProperty","CreditCardRenderer","cardValid","formValid","HostedFields","isEligible","wrapperElement","parentNode","removeChild","gateWayBox","oldDisplayStyle","hideDccGateway","cardNumberField","stylesRaw","cardNumber","replaceChild","cardExpiryField","cardExpiry","cardCodeField","cardCode","formWrapper","enforce_vault","checked","fields","number","selector","placeholder","credit_card_number","cvv","expirationDate","mm_yy","hostedFields","submitEvent","event","preventDefault","save_card","vault","getElementById","submit","contingencies","payload","orderId","fields_not_valid","card_not_supported","cards","validCards","valid_cards","indexOf","type","keys","every","isValid","addEventListener","validateToken","token","user","Date","getTime","expiration","dataClientIdAttributeHandler","script","sessionStorage","setItem","MessageRenderer","Messages","placement","newWrapper","sibling","nextSibling","parentElement","insertBefore","Spinner","target","setTarget","overlayCSS","background","opacity","messageRenderer","mini_cart_buttons_enabled","single_product_buttons_enabled","bootstrap","url","entries","script_attributes","keyValue","data_client_id","set_attribute"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,G,uCCCtCC,MAnFf,MAEIC,YAAYC,GAERC,KAAKD,iBAAmBA,EACxBC,KAAKC,QAAUC,SAASC,cAAc,gCACtCH,KAAKI,aAAeF,SAASC,cAAc,wBAG/CE,eACQL,KAAKC,QAAQK,UAAUC,SAAS,kBAGpCP,KAAKQ,QACLR,KAAKS,QAAQT,KAAKD,mBAGtBW,kCAAkCC,GAEL,OAAtBX,KAAKI,cACJJ,KAAKY,sBAGTZ,KAAKI,aAAaS,YAAYF,GAGlCF,QAAQK,EAAMC,GAAU,GAEpB,GAAsC,IAAhBD,EAAKE,OACvB,MAAM,IAAIC,MAAM,kDAGK,OAAtBjB,KAAKI,cACJJ,KAAKY,sBAGLG,EACAf,KAAKC,QAAQK,UAAUY,IAAI,gBAE3BlB,KAAKC,QAAQK,UAAUa,OAAO,gBAGlC,IAAIC,EAAcpB,KAAKqB,wBAAwBP,GAC/Cd,KAAKI,aAAakB,YAAYF,GAE9BG,OAAOC,kBAAkBD,OAAO,iCAGpCX,sBAE6B,OAAtBZ,KAAKI,eACJJ,KAAKI,aAAeF,SAASuB,cAAc,MAC3CzB,KAAKI,aAAasB,aAAa,QAAS,qBACxC1B,KAAKI,aAAasB,aAAa,OAAQ,SACvC1B,KAAKC,QAAQqB,YAAYtB,KAAKI,eAItCiB,wBAAwBZ,GAEpB,MAAMkB,EAAKzB,SAASuB,cAAc,MAGlC,OAFAE,EAAGC,UAAYnB,EAERkB,EAGXE,SAASf,GAEL,MAAMgB,EAAW5B,SAASuB,cAAc,YAExC,OADAK,EAASF,UAAYd,EACdgB,EAAShD,MAAMiD,QAAQ,UAAW,IAG7CvB,QAEUR,KAAKC,QAAQK,UAAUC,SAAS,uBAGtCP,KAAKC,QAAQK,UAAUa,OAAO,qBAC9BnB,KAAKC,QAAQ+B,UAAY,MCxDlBC,MAvBG,CAACC,EAASC,IACjB,CAACC,EAAMC,IACHC,MAAMJ,EAAQK,OAAOC,KAAKC,cAAcC,SAAU,CACrDC,OAAQ,OACRC,KAAMC,KAAKC,UAAU,CACjBC,MAAOb,EAAQK,OAAOC,KAAKC,cAAcM,MACzCC,SAASZ,EAAKa,YAEnBC,KAAMC,GACEA,EAAIC,QACZF,KAAMd,IACL,IAAKA,EAAKiB,QAEN,OADAlB,EAAa9B,eACNgC,EAAQiB,UAAUC,MAAMC,IAC3BrB,EAAa9B,iBAGrBoD,SAASC,KAAOxB,EAAQK,OAAOoB,WCjBpC,MAAMC,EAAY,KACrB,MAAMC,EAAQC,sBAAsBD,MACpC,IAAMA,EACF,OAAO,KAGX,MAAME,EAAS7D,SAASC,cAAc,wBAA4C,IAAhB0D,EAAME,MACxE,CACIC,WAAW,OACPC,aAAa,CACbC,gBAAmBhE,SAASC,cAAc,kBAAqBD,SAASC,cAAc,kBAAkBrB,MAAQ+E,EAAME,MAAME,aAAaC,kBAE7I,KACEN,EAAY,CACdO,cAAejE,SAASC,cAAc,kBAAqBD,SAASC,cAAc,kBAAkBrB,MAAQ+E,EAAMM,cAClH/F,KAAO,CACHgG,QAAUlE,SAASC,cAAc,sBAAyBD,SAASC,cAAc,sBAAsBrB,MAAQ+E,EAAMzF,KAAKgG,QAC1HC,WAAanE,SAASC,cAAc,uBAA0BD,SAASC,cAAc,uBAAuBrB,MAAQ+E,EAAMzF,KAAKiG,YAEnIC,QAAU,CACNC,aAAgBrE,SAASC,cAAc,oBAAuBD,SAASC,cAAc,oBAAoBrB,MAAQ+E,EAAMS,QAAQC,aAC/HC,eAAkBtE,SAASC,cAAc,sBAAyBD,SAASC,cAAc,sBAAsBrB,MAAQ+E,EAAMS,QAAQE,eACrIC,eAAkBvE,SAASC,cAAc,sBAAyBD,SAASC,cAAc,sBAAsBrB,MAAQ+E,EAAMS,QAAQG,eACrIC,aAAgBxE,SAASC,cAAc,kBAAqBD,SAASC,cAAc,kBAAkBrB,MAAQ+E,EAAMS,QAAQI,aAC3HC,aAAgBzE,SAASC,cAAc,iBAAoBD,SAASC,cAAc,iBAAiBrB,MAAQ+E,EAAMS,QAAQK,aACzHC,YAAe1E,SAASC,cAAc,qBAAwBD,SAASC,cAAc,qBAAqBrB,MAAQ+E,EAAMS,QAAQM,cAOxI,OAHIb,IACAH,EAAUG,MAAQA,GAEfH,GCaIiB,MA1Cf,MAEI/E,YAAYyC,EAAQJ,GAChBnC,KAAKuC,OAASA,EACdvC,KAAKmC,aAAeA,EAGxB2C,gBAyBI,MAAO,CACHC,YAzBgB,CAAC3C,EAAMC,KACvB,MAAMwB,EAAQD,IACRoB,OAA8D,IAA9ChF,KAAKuC,OAAO0C,SAASjF,KAAKuC,OAAOL,SACnDlC,KAAKuC,OAAO0C,SAASjF,KAAKuC,OAAOL,SAAW,GAChD,OAAOI,MAAMtC,KAAKuC,OAAOC,KAAK0C,aAAaxC,SAAU,CACjDC,OAAQ,OACRC,KAAMC,KAAKC,UAAU,CACjBC,MAAO/C,KAAKuC,OAAOC,KAAK0C,aAAanC,MACrCoC,eAAgB,GAChBC,QAAQJ,EACRnB,QACA3B,QAAQlC,KAAKuC,OAAOL,YAEzBgB,MAAK,SAASC,GACb,OAAOA,EAAIC,UACZF,MAAK,SAASd,GACb,IAAKA,EAAKiB,QAEN,MADAgC,QAAQC,MAAMlD,GACRnB,MAAMmB,EAAKA,KAAK3B,SAE1B,OAAO2B,EAAKA,KAAKmD,OAMrBtD,UAAWA,EAAUjC,KAAMA,KAAKmC,cAChCqD,QAAUF,IACNtF,KAAKmC,aAAa9B,mBCGnBoF,MAvCf,MACI3F,YAAY4F,EAASC,GACjB3F,KAAK0F,QAAUA,EACf1F,KAAK2F,SAAWA,EAChB3F,KAAK4F,cAAgB,KAGzBC,OAEI7F,KAAK4F,cAAgB,IAAIf,EACrBf,sBACA,IAAIjE,EAAaG,KAAK0F,QAAQI,OAAOR,MAAMS,UAE/C/F,KAAKgG,SAELzE,OAAOrB,SAAS0C,MAAMqD,GAAG,6CAA8C,KACnEjG,KAAKgG,WAIbE,eACI,OACI,OADGhG,SAASC,cAAcH,KAAK0F,QAAQS,OAAOC,oBAElD,OADYlG,SAASC,cAAcH,KAAK0F,QAAQW,cAAcD,mBAIlEJ,SACShG,KAAKkG,gBAIVlG,KAAK2F,SAASK,OACVhG,KAAK0F,QAAQS,OAAOC,kBACpBpG,KAAK0F,QAAQW,cAAcD,kBAC3BpG,KAAK4F,cAAcd,mBCpBhBwB,MAjBf,MAEIxG,YAAYyF,EAAIgB,EAAUC,GACtBxG,KAAKuF,GAAKA,EACVvF,KAAKuG,SAAWA,EAChBvG,KAAKwG,WAAaA,EAGtBpE,OACI,MAAO,CACHmD,GAAGvF,KAAKuF,GACRgB,SAASvG,KAAKuG,SACdC,WAAWxG,KAAKwG,cCgCbC,MA3Cf,MAEI3G,YAAY4C,EAAUK,GAElB/C,KAAK0C,SAAWA,EAChB1C,KAAK+C,MAAQA,EASjB2D,OAAOC,EAAWC,GAEd,OAAO,IAAIC,QAAQ,CAACC,EAASC,KACzBzE,MACItC,KAAK0C,SACL,CACIC,OAAQ,OACRC,KAAMC,KAAKC,UAAU,CACjBC,MAAO/C,KAAK+C,MACZ6D,eAGV1D,KACG8D,GACMA,EAAO5D,QAEhBF,KAAM8D,IACJ,IAAMA,EAAO3D,QAET,YADA0D,EAAOC,EAAO5E,MAId,MAAM6E,EAAWN,EAAUK,EAAO5E,MAClC0E,EAAQG,SCHbC,MA9Bf,MACIpH,YAAYqH,EAASC,EAAcC,GAE/BrH,KAAKmH,QAAUA,EACfnH,KAAKoH,aAAeA,EACpBpH,KAAKqH,aAAeA,EACpBrH,KAAKsH,SAAW,KAGpBzB,OAEI,MACM0B,EAAW,KACTvH,KAAKmH,QAAQ7G,UAAUC,SAAS,YAChCP,KAAKqH,eAGTrH,KAAKoH,gBAETpH,KAAKsH,SAAW,IAAIE,iBAAiBD,GACrCvH,KAAKsH,SAASG,QAAQzH,KAAKmH,QATZ,CAAEO,YAAa,IAU9BH,IAGJI,aAEI3H,KAAKsH,SAASK,eCqGPC,MA/Hf,MAEI9H,YACIyC,EACAsF,EACAC,EACAC,EACAC,EACA7F,GAEAnC,KAAKuC,OAASA,EACdvC,KAAK6H,WAAaA,EAClB7H,KAAK8H,mBAAqBA,EAC1B9H,KAAK+H,mBAAqBA,EAC1B/H,KAAKgI,YAAcA,EACnBhI,KAAKmC,aAAeA,EAGxB2C,gBAGI,GAAK9E,KAAKiI,gBAAkB,CACP,IAAIf,EACjBlH,KAAKgI,YAAY7H,cAAc,8BAC/BH,KAAK8H,mBACL9H,KAAK+H,oBAEAlC,OAGb,MAAO,CACHd,YAAa/E,KAAK+E,cAClB9C,UAAWA,EAAUjC,KAAMA,KAAKmC,cAChCqD,QAAUF,IACNtF,KAAKmC,aAAa9B,iBAK9B0E,cAEI,IAAImD,EAAc,KASdA,EARElI,KAAKmI,mBAQO,KACV,MAAMvB,EAAW,GAajB,OAZA5G,KAAKgI,YAAYI,iBAAiB,wBAAwBC,QAASlB,IAC/D,IAAMA,EAAQrI,MACV,OAEJ,MAAMwJ,EAAcnB,EAAQoB,aAAa,QAAQC,MAAM,uBACvD,GAA2B,IAAvBF,EAAYtH,OACZ,OAEJ,MAAMuE,EAAKkD,SAASH,EAAY,IAC1B/B,EAAWkC,SAAStB,EAAQrI,OAClC8H,EAAS8B,KAAK,IAAIpC,EAAQf,EAAIgB,EAAU,SAErCK,GArBG,KACV,MAAMrB,EAAKrF,SAASC,cAAc,wBAAwBrB,MACpD6J,EAAMzI,SAASC,cAAc,qBAAqBrB,MAClD0H,EAAaxG,KAAKwG,aACxB,MAAO,CAAC,IAAIF,EAAQf,EAAIoD,EAAKnC,KAkDrC,MA9BoB,CAACpE,EAAMC,KACvBrC,KAAKmC,aAAa3B,QA2BlB,OADgBR,KAAK6H,WAAWnB,OAxBbvB,IACf,MAAMtB,EAAQD,IACRoB,OAA8D,IAA9ChF,KAAKuC,OAAO0C,SAASjF,KAAKuC,OAAOL,SACnDlC,KAAKuC,OAAO0C,SAASjF,KAAKuC,OAAOL,SAAW,GAChD,OAAOI,MAAMtC,KAAKuC,OAAOC,KAAK0C,aAAaxC,SAAU,CACjDC,OAAQ,OACRC,KAAMC,KAAKC,UAAU,CACjBC,MAAO/C,KAAKuC,OAAOC,KAAK0C,aAAanC,MACrCoC,iBACAtB,QACAuB,QAAQJ,EACR9C,QAAQlC,KAAKuC,OAAOL,YAEzBgB,MAAK,SAAUC,GACd,OAAOA,EAAIC,UACZF,MAAK,SAAUd,GACd,IAAKA,EAAKiB,QAEN,MADAgC,QAAQC,MAAMlD,GACRnB,MAAMmB,EAAKA,KAAK3B,SAE1B,OAAO2B,EAAKA,KAAKmD,OAIyB2C,MAM1D1B,aAGI,IAAMxG,KAAKiI,gBACP,OAAO,KAUX,MARmB,IAAIjI,KAAKgI,YAAYI,iBAAiB,yBAAyBQ,IAC7EzB,IACM,CACCrI,MAAMqI,EAAQrI,MACdV,KAAK+I,EAAQ/I,QAO7B6J,gBAEI,OAAOjI,KAAKgI,YAAY1H,UAAUC,SAAS,mBAG/C4H,mBAEI,OAAOnI,KAAKgI,YAAY1H,UAAUC,SAAS,kBCjEpCsI,MA5Df,MACI/I,YAAY4F,EAASC,EAAUmD,GAC3B9I,KAAK0F,QAAUA,EACf1F,KAAK2F,SAAWA,EAChB3F,KAAK8I,SAAWA,EAGpBjD,OACS7F,KAAKkG,eAKVlG,KAAKgG,SAJFhG,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQW,cAAcpG,SAO5DiG,eACI,OAA4C,OAAxChG,SAASC,cAAc,aAO/B6F,SACI,MAAMJ,EAAgB,IAAIgC,EACtB5H,KAAK0F,QACL,IAAIe,EACAzG,KAAK0F,QAAQlD,KAAKwG,YAAYtG,SAC9B1C,KAAK0F,QAAQlD,KAAKwG,YAAYjG,OAElC,KACI/C,KAAK2F,SAASsD,YAAYjJ,KAAK0F,QAAQS,OAAOlG,SAC9CD,KAAK2F,SAASsD,YAAYjJ,KAAK0F,QAAQW,cAAcpG,SACrD,IAAIiJ,EAAY,IACZhJ,SAASC,cAAc,2CACvB+I,EAAYhJ,SAASC,cAAc,2CAA2C6B,UAEzE9B,SAASC,cAAc,yCAC5B+I,EAAYhJ,SAASC,cAAc,uCAAuC6B,WAE9E,MAAMmH,EAASV,SAASS,EAAUnH,QAAQ,iBAAkB,KAC5D/B,KAAK8I,SAASM,iBAAiBD,IAEnC,KACInJ,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQS,OAAOlG,SAC9CD,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQW,cAAcpG,UAEzDC,SAASC,cAAc,aACvB,IAAIN,EAAaG,KAAK0F,QAAQI,OAAOR,MAAMS,UAG/C/F,KAAK2F,SAASK,OACVhG,KAAK0F,QAAQS,OAAOlG,QACpBD,KAAK0F,QAAQW,cAAcpG,QAC3B2F,EAAcd,mBClBXuE,MAtCf,MACIvJ,YAAY4F,EAASC,GACjB3F,KAAK0F,QAAUA,EACf1F,KAAK2F,SAAWA,EAGpBE,OACS7F,KAAKkG,iBAIVlG,KAAKgG,SAELzE,OAAOrB,SAAS0C,MAAMqD,GAAG,uCAAwC,KAC7DjG,KAAKgG,YAIbE,eACI,OACI,OADGhG,SAASC,cAAcH,KAAK0F,QAAQS,OAAOlG,UAE9C,OADQC,SAASC,cAAcH,KAAK0F,QAAQW,cAAcpG,SAIlE+F,SACI,MAAMJ,EAAgB,IAAIf,EACtBf,sBACA,IAAIjE,EAAaG,KAAK0F,QAAQI,OAAOR,MAAMS,UAG/C/F,KAAK2F,SAASK,OACVhG,KAAK0F,QAAQS,OAAOlG,QACpBD,KAAK0F,QAAQW,cAAcpG,QAC3B2F,EAAcd,mBCNX7C,MA9BG,CAACC,EAASC,EAAcmH,IAC/B,CAAClH,EAAMC,KACViH,EAAQC,QACDjH,MAAMJ,EAAQK,OAAOC,KAAKC,cAAcC,SAAU,CACrDC,OAAQ,OACRC,KAAMC,KAAKC,UAAU,CACjBC,MAAOb,EAAQK,OAAOC,KAAKC,cAAcM,MACzCC,SAASZ,EAAKa,YAEnBC,KAAMC,GACEA,EAAIC,QACZF,KAAMd,IAEL,GADAkH,EAAQE,WACHpH,EAAKiB,QAAS,CAMf,GALuB,MAAnBjB,EAAKA,KAAKqH,KACVtH,EAAa1B,QAAQ2B,EAAKA,KAAK3B,SAE/B0B,EAAa9B,oBAEM,IAAZgC,QAAsD,IAApBA,EAAQiB,QACjD,OAAOjB,EAAQiB,UAEnB,MAAM,IAAIrC,MAAMmB,EAAKA,KAAK3B,SAE9BP,SAASC,cAAc,gBAAgBuJ,WCqDpCC,MA1Ef,MAEI7J,YAAYyC,EAAQJ,EAAcmH,GAC9BtJ,KAAKuC,OAASA,EACdvC,KAAKmC,aAAeA,EACpBnC,KAAKsJ,QAAUA,EAGnBxE,gBACI,MAAMwE,EAAUtJ,KAAKsJ,QAmDrB,MAAO,CACHvE,YAnDgB,CAAC3C,EAAMC,KACvB,MAAMwB,EAAQD,IACRoB,OAA8D,IAA9ChF,KAAKuC,OAAO0C,SAASjF,KAAKuC,OAAOL,SACnDlC,KAAKuC,OAAO0C,SAASjF,KAAKuC,OAAOL,SAAW,GAE1CC,EAAenC,KAAKmC,aAEpByH,EAAuC,aAAxB5J,KAAKuC,OAAOL,QAAyB,gBAAkB,oBACtE2H,EAAatI,OAAOqI,GAAcE,YAElCC,IAAgBxI,OAAO,kBAAkByI,GAAG,YAElD,OAAO1H,MAAMtC,KAAKuC,OAAOC,KAAK0C,aAAaxC,SAAU,CACjDC,OAAQ,OACRC,KAAMC,KAAKC,UAAU,CACjBC,MAAO/C,KAAKuC,OAAOC,KAAK0C,aAAanC,MACrCc,QACAuB,QAAQJ,EACR9C,QAAQlC,KAAKuC,OAAOL,QACpBc,SAAShD,KAAKuC,OAAOS,SACrBiH,KAAKJ,EACLE,cAAeA,MAEpB7G,MAAK,SAAUC,GACd,OAAOA,EAAIC,UACZF,MAAK,SAAUd,GACd,IAAKA,EAAKiB,QAAS,CAGf,GAFAiG,EAAQE,eAEsB,IAAnBpH,EAAK0G,SAChB,CACI,MAAMoB,EAAY,IAAIC,UACtBhI,EAAazB,kCACTwJ,EAAUE,gBAAgBhI,EAAK0G,SAAU,aACpC3I,cAAc,YAGvBgC,EAAa1B,QAAQ2B,EAAKA,KAAK3B,SAAS,GAG5C,OAEJ,MAAM4J,EAAQnK,SAASuB,cAAc,SAKrC,OAJA4I,EAAM3I,aAAa,OAAQ,UAC3B2I,EAAM3I,aAAa,OAAQ,qBAC3B2I,EAAM3I,aAAa,QAASU,EAAKA,KAAK+C,eAAe,GAAGmF,WACxDpK,SAASC,cAAcyJ,GAAcW,OAAOF,GACrCjI,EAAKA,KAAKmD,OAKrBtD,UAAUA,EAAUjC,KAAMA,KAAKmC,aAAcnC,KAAKsJ,SAClDkB,SAAU,KACNlB,EAAQE,WAEZhE,QAAS,KACLxF,KAAKmC,aAAa9B,eAClBiJ,EAAQE,cCwCTiB,MA5Gf,MACI3K,YAAY4F,EAASC,EAAUmD,EAAUQ,GACrCtJ,KAAK0F,QAAUA,EACf1F,KAAK2F,SAAWA,EAChB3F,KAAK8I,SAAWA,EAChB9I,KAAKsJ,QAAUA,EAGnBzD,OAEI7F,KAAKgG,SAELzE,OAAOrB,SAAS0C,MAAMqD,GAAG,mBAAoB,KACzCjG,KAAKgG,WAGTzE,OAAOrB,SAAS0C,MACdqD,GAAG,2CAA4C,KAC3CjG,KAAK0K,oCACL1K,KAAK2K,+CAIXpJ,OAAO,sBAAsB0E,GAAG,SAAU,KACtCjG,KAAK2K,+CAGT3K,KAAK0K,oCACL1K,KAAK2K,6CAGTzE,eACI,OAAIhG,SAASC,cAAcH,KAAK0F,QAAQS,OAAOyE,kBAIgB,OAAxD1K,SAASC,cAAcH,KAAK0F,QAAQS,OAAOlG,UAAoF,OAA/DC,SAASC,cAAcH,KAAK0F,QAAQW,cAAcpG,UAG7H+F,SACI,IAAKhG,KAAKkG,eACN,OAEAhG,SAASC,cAAcH,KAAK0F,QAAQW,cAAcpG,QAAU,SAC5DC,SAASC,cAAcH,KAAK0F,QAAQW,cAAcpG,QAAU,QAAQyB,aAAa,QAAS,IAE9F,MAAMkE,EAAgB,IAAI+D,EACtB7F,sBACA,IAAIjE,EAAaG,KAAK0F,QAAQI,OAAOR,MAAMS,SAC3C/F,KAAKsJ,SAGTtJ,KAAK2F,SAASK,OACVhG,KAAK0F,QAAQS,OAAOlG,QACpBD,KAAK0F,QAAQW,cAAcpG,QAC3B2F,EAAcd,iBAItB4F,oCACInJ,OAAO,sBAAsBsJ,IAAItJ,OAAO,mCAAmCsJ,OAE3E,MAAMC,EAAuBvJ,OACzB,wCAAwCsJ,MAEf,iBAAzBC,GAAoE,6BAAzBA,GAC3C9K,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQS,OAAOlG,SAC9CD,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQoD,SAAS7I,SAChDD,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQW,cAAcpG,SACrDsB,OAAO,gBAAgBwJ,SAGvBxJ,OAAO,gBAAgByJ,OACM,iBAAzBF,IACA9K,KAAK2F,SAASsD,YAAYjJ,KAAK0F,QAAQS,OAAOlG,SAC9CD,KAAK2F,SAASsD,YAAYjJ,KAAK0F,QAAQoD,SAAS7I,SAChDD,KAAK8I,SAAS9C,SACdhG,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQW,cAAcpG,UAE5B,6BAAzB6K,IACA9K,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQS,OAAOlG,SAC9CD,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQoD,SAAS7I,SAChDD,KAAK2F,SAASsD,YAAYjJ,KAAK0F,QAAQW,cAAcpG,WAKjE0K,6CAGiC,6BAFApJ,OAC3B,wCAAwCsJ,QAKtCtJ,OAAO,sBAAsBP,QAAiD,KAAvCO,OAAO,sBAAsBsJ,OACpE7K,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQS,OAAOlG,SAC9CD,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQoD,SAAS7I,SAChDD,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQW,cAAcpG,SACrDsB,OAAO,gBAAgBwJ,SAEvBxJ,OAAO,gBAAgByJ,OACvBhL,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQS,OAAOlG,SAC9CD,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQoD,SAAS7I,SAChDD,KAAK2F,SAASsD,YAAYjJ,KAAK0F,QAAQW,cAAcpG,aCpBlDgL,MAnFf,MACInL,YAAY4F,EAASC,EAAUmD,EAAUQ,GACrCtJ,KAAK0F,QAAUA,EACf1F,KAAK2F,SAAWA,EAChB3F,KAAK8I,SAAWA,EAChB9I,KAAKsJ,QAAUA,EAGnBzD,OAEI7F,KAAKgG,SAELzE,OAAOrB,SAAS0C,MAAMqD,GAAG,mBAAoB,KACzCjG,KAAKgG,WAGTzE,OAAOrB,SAAS0C,MAChBqD,GAAG,2CAA4C,KAC3CjG,KAAK0K,sCAET1K,KAAK0K,oCAGTxE,eACI,OAAIhG,SAASC,cAAcH,KAAK0F,QAAQS,OAAOyE,kBAIgB,OAAxD1K,SAASC,cAAcH,KAAK0F,QAAQS,OAAOlG,UAAoF,OAA/DC,SAASC,cAAcH,KAAK0F,QAAQW,cAAcpG,UAG7H+F,SACI,IAAKhG,KAAKkG,eACN,OAEAhG,SAASC,cAAcH,KAAK0F,QAAQW,cAAcpG,QAAU,SAC5DC,SAASC,cAAcH,KAAK0F,QAAQW,cAAcpG,QAAU,QAAQyB,aAAa,QAAS,IAE9F,MAAMkE,EAAgB,IAAI+D,EACtB7F,sBACA,IAAIjE,EAAaG,KAAK0F,QAAQI,OAAOR,MAAMS,SAC3C/F,KAAKsJ,SAGTtJ,KAAK2F,SAASK,OACVhG,KAAK0F,QAAQS,OAAOlG,QACpBD,KAAK0F,QAAQW,cAAcpG,QAC3B2F,EAAcd,iBAItB4F,oCAEI,GADkB,IAAIQ,gBAAgBC,OAAO1H,SAAS2H,QACxCC,IAAI,yBACd,OAGJ,MAAMP,EAAuBvJ,OACzB,wCAAwCsJ,MAEf,iBAAzBC,GAAoE,6BAAzBA,GAC3C9K,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQS,OAAOlG,SAC9CD,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQoD,SAAS7I,SAChDD,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQW,cAAcpG,SACrDsB,OAAO,gBAAgBwJ,SAGvBxJ,OAAO,gBAAgByJ,OACM,iBAAzBF,IACA9K,KAAK2F,SAASsD,YAAYjJ,KAAK0F,QAAQS,OAAOlG,SAC9CD,KAAK2F,SAASsD,YAAYjJ,KAAK0F,QAAQoD,SAAS7I,SAChDD,KAAK8I,SAAS9C,SACdhG,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQW,cAAcpG,UAE5B,6BAAzB6K,IACA9K,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQS,OAAOlG,SAC9CD,KAAK2F,SAASoD,YAAY/I,KAAK0F,QAAQoD,SAAS7I,SAChDD,KAAK2F,SAASsD,YAAYjJ,KAAK0F,QAAQW,cAAcpG,aCjCtDqL,MA/Cf,MACIxL,YAAYyL,EAAoBC,GAC5BxL,KAAKwL,cAAgBA,EACrBxL,KAAKuL,mBAAqBA,EAG9BvF,OAAO/F,EAASwL,EAAqBC,GAEjC1L,KAAK2L,cAAc1L,EAASyL,GAC5B1L,KAAKuL,mBAAmBvF,OAAOyF,EAAqBC,GAGxDC,cAAc1L,EAASyL,GACnB,IAAMxL,SAASC,cAAcF,IAAYD,KAAK4L,kBAAkB3L,SAAY,IAAuB4L,OAAOC,QACtG,OAGJ,MAAMC,EAAQ9L,IAAYD,KAAKwL,cAAcrF,OAAOlG,QAAUD,KAAKwL,cAAcrF,OAAO4F,MAAQ/L,KAAKwL,cAAcrF,OAAO6F,gBAC1HH,OAAOC,QAAQ,CACXC,WACGL,IACJ1F,OAAO/F,GAGd2L,kBAAkB3L,GACd,OAAOC,SAASC,cAAcF,GAASgM,gBAG3ClD,YAAY5B,GACR,MAAM+E,EAAahM,SAASC,cAAcgH,GAC1C,QAAM+E,IAGNA,EAAWH,MAAMI,QAAU,QACpB,GAGXlD,YAAY9B,GACR,MAAM+E,EAAahM,SAASC,cAAcgH,GAC1C,QAAM+E,IAGNA,EAAWH,MAAMI,QAAU,SACpB,KC9BAC,MAbUC,IACrB,MAAMC,EAASnB,OAAOoB,iBAAiBF,GACjCG,EAAatM,SAASuB,cAAc,QAQ1C,OAPA+K,EAAW9K,aAAa,KAAM2K,EAAS9G,IACvChH,OAAOkO,OAAOH,GAAQjE,QAAUqE,IACtBJ,EAAOI,IAAWC,MAAMD,IAG9BF,EAAWT,MAAMa,YAAYF,EAAK,GAAKJ,EAAOI,MAE3CF,GCgJIK,MAxJf,MAEI/M,YAAY0L,EAAerJ,EAAcmH,GACrCtJ,KAAKwL,cAAgBA,EACrBxL,KAAKmC,aAAeA,EACpBnC,KAAKsJ,QAAUA,EACftJ,KAAK8M,WAAY,EACjB9M,KAAK+M,WAAY,EAGrB/G,OAAO/F,EAASyL,GAEZ,GAEuC,aAA/B1L,KAAKwL,cAActJ,SACe,YAA/BlC,KAAKwL,cAActJ,SAEX,OAAZjC,GACoC,OAApCC,SAASC,cAAcF,GAE1B,OAEJ,QACmC,IAAxB4L,OAAOmB,eACTnB,OAAOmB,aAAaC,aAC3B,CACE,MAAMC,EAAiBhN,SAASC,cAAcF,GAE9C,YADAiN,EAAeC,WAAWC,YAAYF,GAI1C,MAAMG,EAAanN,SAASC,cAAc,wDACpCmN,EAAkBD,EAAWtB,MAAMI,QACzCkB,EAAWtB,MAAMI,QAAU,QAE3B,MAAMoB,EAAiBrN,SAASC,cAAc,kBAC1CoN,GACAA,EAAeJ,WAAWC,YAAYG,GAG1C,MAAMC,EAAkBtN,SAASC,cAAc,yCAEzCsN,EAAYtC,OAAOoB,iBAAiBiB,GAC1C,IAAIlB,EAAS,GACb/N,OAAOkO,OAAOgB,GAAWpF,QAAUqE,IACzBe,EAAUf,KAGhBJ,EAAOI,GAAQ,GAAKe,EAAUf,MAGlC,MAAMgB,EAAatB,EAAgBoB,GACnCA,EAAgBL,WAAWQ,aAAaD,EAAYF,GAEpD,MAAMI,EAAkB1N,SAASC,cAAc,yCACzC0N,EAAazB,EAAgBwB,GACnCA,EAAgBT,WAAWQ,aAAaE,EAAYD,GAEpD,MAAME,EAAgB5N,SAASC,cAAc,sCACvC4N,EAAW3B,EAAgB0B,GACjCA,EAAcX,WAAWQ,aAAaI,EAAUD,GAEhDT,EAAWtB,MAAMI,QAAUmB,EAE3B,MAAMU,EAAc,uDAEhBhO,KAAKwL,cAAcyC,eAChB/N,SAASC,cAAc6N,EAAc,8BAExC9N,SAASC,cAAc6N,EAAc,4BAA4BE,SAAU,EAC3EhO,SAASC,cAAc6N,EAAc,4BAA4BtM,aAAa,YAAY,IAE9FmK,OAAOmB,aAAahH,OAAO,CACvBjB,YAAa2G,EAAc3G,YAC3BuH,OAAQ,CACJ,MAASA,GAEb6B,OAAQ,CACJC,OAAQ,CACJC,SAAU,wCACVC,YAAatO,KAAKwL,cAAcnF,cAAcP,OAAOyI,oBAEzDC,IAAK,CACDH,SAAU,qCACVC,YAAatO,KAAKwL,cAAcnF,cAAcP,OAAO0I,KAEzDC,eAAgB,CACZJ,SAAU,wCACVC,YAAatO,KAAKwL,cAAcnF,cAAcP,OAAO4I,UAG9DxL,KAAKyL,IACJ,MAAMC,EAAeC,IAOjB,GANA7O,KAAKsJ,QAAQC,QACTsF,GACAA,EAAMC,iBAEV9O,KAAKmC,aAAa3B,QAEdR,KAAK+M,WAAa/M,KAAK8M,UAAW,CAClC,MAAMiC,IAAY/O,KAAKwL,cAAcuD,UAC/BC,EAAQ9O,SAAS+O,eAAe,0BACpC/O,SAAS+O,eAAe,0BAA0Bf,QAAUa,EAC9DJ,EAAaO,OAAO,CAChBC,cAAe,CAAC,qBAChBH,MAAOA,IACR9L,KAAMkM,IACLA,EAAQnM,QAAUmM,EAAQC,QAC1BrP,KAAKsJ,QAAQE,UACNkC,EAAczJ,UAAUmN,KAChC7L,MAAM,KACLvD,KAAKmC,aAAa9B,eAClBL,KAAKsJ,QAAQE,gBAEd,CACHxJ,KAAKsJ,QAAQE,UACb,MAAM/I,EAAYT,KAAK8M,UAAyE9M,KAAKwL,cAAcnF,cAAcP,OAAOwJ,iBAArGtP,KAAKwL,cAAcnF,cAAcP,OAAOyJ,mBAC3EvP,KAAKmC,aAAa1B,QAAQA,KAGlCkO,EAAa1I,GAAG,sBAAsB,WAClC2I,EAAY,SAEhBD,EAAa1I,GAAG,iBAAmB4I,IAC/B,IAAOA,EAAMW,MAAMxO,OAEf,YADAhB,KAAK8M,WAAY,GAGrB,MAAM2C,EAAazP,KAAKwL,cAAcnF,cAAcqJ,YACpD1P,KAAK8M,WAAyD,IAA7C2C,EAAWE,QAAQd,EAAMW,MAAM,GAAGI,QAEvDjB,EAAa1I,GAAG,iBAAmB4I,IAC/B,MAAM9B,EAAYxO,OAAOsR,KAAKhB,EAAMV,QAAQ2B,OAAM,SAAU1Q,GACxD,OAAOyP,EAAMV,OAAO/O,GAAK2Q,WAE9B/P,KAAK+M,UAAYA,IAGpB7M,SAASC,cAAcF,EAAU,WAAW+P,iBACxC,QACApB,KAIR1O,SAASC,cAAc,4CAA4C6P,iBAC/D,QACA,KACI9P,SAASC,cAAc,mDAAmDuJ,YCrJ1F,MAEMuG,EAAgB,CAACC,EAAOC,KAC1B,IAAMD,EACF,OAAO,EAEX,GAAIA,EAAMC,OAASA,EACf,OAAO,EAIX,SAFoB,IAAIC,MAAOC,WACqB,IAAnBH,EAAMI,aAmC5BC,MAnBsB,CAACC,EAAQjO,KAC1CD,MAAMC,EAAOG,SAAU,CACnBC,OAAQ,OACRC,KAAMC,KAAKC,UAAU,CACjBC,MAAOR,EAAOQ,UAEnBG,KAAMC,GACEA,EAAIC,QACZF,KAAMd,IAZO8N,MAaID,EAAc7N,EAAMG,EAAO4N,QAb/BD,EAiBD9N,EAhBfqO,eAAeC,QAvBA,sBAuBoB7N,KAAKC,UAAUoN,IAiB9CM,EAAO9O,aAAa,oBAAqBU,EAAK8N,OAC9ChQ,SAAS0C,KAAK2H,OAAOiG,OCOdG,MAhDf,MAEI7Q,YAAYyC,GACRvC,KAAKuC,OAASA,EAGlByD,SACUhG,KAAKkG,gBAIX2F,OAAO+E,SAAS,CACZzH,OAAQnJ,KAAKuC,OAAO4G,OACpB0H,UAAW7Q,KAAKuC,OAAOsO,UACvB9E,MAAO/L,KAAKuC,OAAOwJ,QACpB/F,OAAOhG,KAAKuC,OAAOtC,SAG1BmJ,iBAAiBD,GAEb,IAAMnJ,KAAKkG,eACP,OAGJ,MAAM4K,EAAa5Q,SAASuB,cAAc,OAC1CqP,EAAWpP,aAAa,KAAM1B,KAAKuC,OAAOtC,QAAQ8B,QAAQ,IAAK,KAE/D,MAAMgP,EAAU7Q,SAASC,cAAcH,KAAKuC,OAAOtC,SAAS+Q,YAC5D9Q,SAASC,cAAcH,KAAKuC,OAAOtC,SAASgR,cAAc7D,YAAYlN,SAASC,cAAcH,KAAKuC,OAAOtC,UACzG8Q,EAAQE,cAAcC,aAAaJ,EAAYC,GAC/ClF,OAAO+E,SAAS,CACZzH,SACA0H,UAAW7Q,KAAKuC,OAAOsO,UACvB9E,MAAO/L,KAAKuC,OAAOwJ,QACpB/F,OAAOhG,KAAKuC,OAAOtC,SAG1BiG,eAEI,YAA+B,IAApB2F,OAAO+E,eAA2D,IAAxB5Q,KAAKuC,OAAOtC,WAG3DC,SAASC,cAAcH,KAAKuC,OAAOtC,WCflCkR,MA3Bf,MAEIrR,cACIE,KAAKoR,OAAS,4BAGlBC,UAAUD,GACNpR,KAAKoR,OAASA,EAGlB7H,QAEIhI,OAAQvB,KAAKoR,QAAS7H,MAAM,CACxB9I,QAAS,KACT6Q,WAAY,CACRC,WAAY,OACZC,QAAS,MAKrBhI,UAEIjI,OAAQvB,KAAKoR,QAAS5H,YCmD9BtJ,SAAS8P,iBACL,mBACA,KAKI,MAAMQ,EAAStQ,SAASuB,cAAc,UAEtC+O,EAAOR,iBAAiB,OAASnB,IAvEvB,MACd,MAAM1M,EAAe,IAAItC,EAAaiE,sBAAsBgC,OAAOR,MAAMS,SACnEuD,EAAU,IAAI6H,EACd5F,EAAqB,IAAIsB,EAAmB/I,sBAAuB3B,EAAcmH,GACjF3D,EAAW,IAAI2F,EAASC,EAAoBzH,uBAC5C2N,EAAkB,IAAId,EAAgB7M,sBAAsBgF,UAC5D5G,EAAU4B,sBAAsB5B,QACtC,IAAgB,cAAZA,GAAuC,YAAZA,IAC6B,MAApD4B,sBAAsB4N,0BAAmC,CAC/B,IAAIjM,EAC1B3B,sBACA6B,GAGcE,OAI1B,GAAgB,YAAZ3D,GAAkF,MAAzD4B,sBAAsB6N,+BAAwC,CACxD,IAAI9I,EAC/B/E,sBACA6B,EACA8L,GAGmB5L,OAG3B,GAAgB,SAAZ3D,EAAoB,CACE,IAAImH,EACtBvF,sBACA6B,GAGUE,OAGlB,GAAgB,aAAZ3D,EAAwB,CACC,IAAIuI,EACzB3G,sBACA6B,EACA8L,EACAnI,GAGazD,OAGrB,GAAgB,YAAZ3D,EAAwB,CACA,IAAI+I,EACxBnH,sBACA6B,EACA8L,EACAnI,GAEYzD,OAGJ,aAAZ3D,GACAuP,EAAgBzL,UAaZ4L,KAEJpB,EAAO9O,aAAa,MAAOoC,sBAAsBqC,OAAO0L,KACxDtT,OAAOuT,QAAQhO,sBAAsBiO,mBAAmB1J,QACnD2J,IACGxB,EAAO9O,aAAasQ,EAAS,GAAIA,EAAS,MAI9ClO,sBAAsBmO,eAAeC,cACrC3B,EAA6BC,EAAQ1M,sBAAsBmO,gBAI/D/R,SAAS0C,KAAK2H,OAAOiG","file":"js/button.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","class ErrorHandler {\n\n constructor(genericErrorText)\n {\n this.genericErrorText = genericErrorText;\n this.wrapper = document.querySelector('.woocommerce-notices-wrapper');\n this.messagesList = document.querySelector('ul.woocommerce-error');\n }\n\n genericError() {\n if (this.wrapper.classList.contains('ppcp-persist')) {\n return;\n }\n this.clear();\n this.message(this.genericErrorText)\n }\n\n appendPreparedErrorMessageElement(errorMessageElement)\n {\n if(this.messagesList === null) {\n this.prepareMessagesList();\n }\n\n this.messagesList.replaceWith(errorMessageElement);\n }\n\n message(text, persist = false)\n {\n if(! typeof String || text.length === 0){\n throw new Error('A new message text must be a non-empty string.');\n }\n\n if(this.messagesList === null){\n this.prepareMessagesList();\n }\n\n if (persist) {\n this.wrapper.classList.add('ppcp-persist');\n } else {\n this.wrapper.classList.remove('ppcp-persist');\n }\n\n let messageNode = this.prepareMessagesListItem(text);\n this.messagesList.appendChild(messageNode);\n\n jQuery.scroll_to_notices(jQuery('.woocommerce-notices-wrapper'))\n }\n\n prepareMessagesList()\n {\n if(this.messagesList === null){\n this.messagesList = document.createElement('ul');\n this.messagesList.setAttribute('class', 'woocommerce-error');\n this.messagesList.setAttribute('role', 'alert');\n this.wrapper.appendChild(this.messagesList);\n }\n }\n\n prepareMessagesListItem(message)\n {\n const li = document.createElement('li');\n li.innerHTML = message;\n\n return li;\n }\n\n sanitize(text)\n {\n const textarea = document.createElement('textarea');\n textarea.innerHTML = text;\n return textarea.value.replace('Error: ', '');\n }\n\n clear()\n {\n if (! this.wrapper.classList.contains('woocommerce-error')) {\n return;\n }\n this.wrapper.classList.remove('woocommerce-error');\n this.wrapper.innerText = '';\n }\n}\n\nexport default ErrorHandler;\n","const onApprove = (context, errorHandler) => {\n return (data, actions) => {\n return fetch(context.config.ajax.approve_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: context.config.ajax.approve_order.nonce,\n order_id:data.orderID\n })\n }).then((res)=>{\n return res.json();\n }).then((data)=>{\n if (!data.success) {\n errorHandler.genericError();\n return actions.restart().catch(err => {\n errorHandler.genericError();\n });;\n }\n location.href = context.config.redirect;\n });\n\n }\n}\n\nexport default onApprove;\n","export const payerData = () => {\n const payer = PayPalCommerceGateway.payer;\n if (! payer) {\n return null;\n }\n\n const phone = (document.querySelector('#billing_phone') || typeof payer.phone !== 'undefined') ?\n {\n phone_type:\"HOME\",\n phone_number:{\n national_number : (document.querySelector('#billing_phone')) ? document.querySelector('#billing_phone').value : payer.phone.phone_number.national_number\n }\n } : null;\n const payerData = {\n email_address:(document.querySelector('#billing_email')) ? document.querySelector('#billing_email').value : payer.email_address,\n name : {\n surname: (document.querySelector('#billing_last_name')) ? document.querySelector('#billing_last_name').value : payer.name.surname,\n given_name: (document.querySelector('#billing_first_name')) ? document.querySelector('#billing_first_name').value : payer.name.given_name\n },\n address : {\n country_code : (document.querySelector('#billing_country')) ? document.querySelector('#billing_country').value : payer.address.country_code,\n address_line_1 : (document.querySelector('#billing_address_1')) ? document.querySelector('#billing_address_1').value : payer.address.address_line_1,\n address_line_2 : (document.querySelector('#billing_address_2')) ? document.querySelector('#billing_address_2').value : payer.address.address_line_2,\n admin_area_1 : (document.querySelector('#billing_state')) ? document.querySelector('#billing_state').value : payer.address.admin_area_1,\n admin_area_2 : (document.querySelector('#billing_city')) ? document.querySelector('#billing_city').value : payer.address.admin_area_2,\n postal_code : (document.querySelector('#billing_postcode')) ? document.querySelector('#billing_postcode').value : payer.address.postal_code\n }\n };\n\n if (phone) {\n payerData.phone = phone;\n }\n return payerData;\n}\n","import onApprove from '../OnApproveHandler/onApproveForContinue.js';\nimport {payerData} from \"../Helper/PayerData\";\n\nclass CartActionHandler {\n\n constructor(config, errorHandler) {\n this.config = config;\n this.errorHandler = errorHandler;\n }\n\n configuration() {\n const createOrder = (data, actions) => {\n const payer = payerData();\n const bnCode = typeof this.config.bn_codes[this.config.context] !== 'undefined' ?\n this.config.bn_codes[this.config.context] : '';\n return fetch(this.config.ajax.create_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: this.config.ajax.create_order.nonce,\n purchase_units: [],\n bn_code:bnCode,\n payer,\n context:this.config.context\n }),\n }).then(function(res) {\n return res.json();\n }).then(function(data) {\n if (!data.success) {\n console.error(data);\n throw Error(data.data.message);\n }\n return data.data.id;\n });\n };\n\n return {\n createOrder,\n onApprove: onApprove(this, this.errorHandler),\n onError: (error) => {\n this.errorHandler.genericError();\n }\n };\n }\n}\n\nexport default CartActionHandler;\n","import ErrorHandler from '../ErrorHandler';\nimport CartActionHandler from '../ActionHandler/CartActionHandler';\n\nclass MiniCartBootstap {\n constructor(gateway, renderer) {\n this.gateway = gateway;\n this.renderer = renderer;\n this.actionHandler = null;\n }\n\n init() {\n\n this.actionHandler = new CartActionHandler(\n PayPalCommerceGateway,\n new ErrorHandler(this.gateway.labels.error.generic),\n );\n this.render();\n\n jQuery(document.body).on('wc_fragments_loaded wc_fragments_refreshed', () => {\n this.render();\n });\n }\n\n shouldRender() {\n return document.querySelector(this.gateway.button.mini_cart_wrapper) !==\n null || document.querySelector(this.gateway.hosted_fields.mini_cart_wrapper) !==\n null;\n }\n\n render() {\n if (!this.shouldRender()) {\n return;\n }\n\n this.renderer.render(\n this.gateway.button.mini_cart_wrapper,\n this.gateway.hosted_fields.mini_cart_wrapper,\n this.actionHandler.configuration()\n );\n }\n}\n\nexport default MiniCartBootstap;","class Product {\n\n constructor(id, quantity, variations) {\n this.id = id;\n this.quantity = quantity;\n this.variations = variations;\n }\n\n data() {\n return {\n id:this.id,\n quantity:this.quantity,\n variations:this.variations\n }\n }\n}\n\nexport default Product;","import Product from \"../Entity/Product\";\nclass UpdateCart {\n\n constructor(endpoint, nonce)\n {\n this.endpoint = endpoint;\n this.nonce = nonce;\n }\n\n /**\n *\n * @param onResolve\n * @param {Product[]} products\n * @returns {Promise<unknown>}\n */\n update(onResolve, products)\n {\n return new Promise((resolve, reject) => {\n fetch(\n this.endpoint,\n {\n method: 'POST',\n body: JSON.stringify({\n nonce: this.nonce,\n products,\n })\n }\n ).then(\n (result) => {\n return result.json();\n }\n ).then((result) => {\n if (! result.success) {\n reject(result.data);\n return;\n }\n\n const resolved = onResolve(result.data);\n resolve(resolved);\n })\n });\n }\n}\n\nexport default UpdateCart;","/**\n * When you can't add something to the cart, the PayPal buttons should not show.\n * Therefore we listen for changes on the add to cart button and show/hide the buttons accordingly.\n */\n\nclass ButtonsToggleListener {\n constructor(element, showCallback, hideCallback)\n {\n this.element = element;\n this.showCallback = showCallback;\n this.hideCallback = hideCallback;\n this.observer = null;\n }\n\n init()\n {\n const config = { attributes : true };\n const callback = () => {\n if (this.element.classList.contains('disabled')) {\n this.hideCallback();\n return;\n }\n this.showCallback();\n }\n this.observer = new MutationObserver(callback);\n this.observer.observe(this.element, config);\n callback();\n }\n\n disconnect()\n {\n this.observer.disconnect();\n }\n}\n\nexport default ButtonsToggleListener;","import ButtonsToggleListener from '../Helper/ButtonsToggleListener';\nimport Product from '../Entity/Product';\nimport onApprove from '../OnApproveHandler/onApproveForContinue';\nimport {payerData} from \"../Helper/PayerData\";\n\nclass SingleProductActionHandler {\n\n constructor(\n config,\n updateCart,\n showButtonCallback,\n hideButtonCallback,\n formElement,\n errorHandler\n ) {\n this.config = config;\n this.updateCart = updateCart;\n this.showButtonCallback = showButtonCallback;\n this.hideButtonCallback = hideButtonCallback;\n this.formElement = formElement;\n this.errorHandler = errorHandler;\n }\n\n configuration()\n {\n\n if ( this.hasVariations() ) {\n const observer = new ButtonsToggleListener(\n this.formElement.querySelector('.single_add_to_cart_button'),\n this.showButtonCallback,\n this.hideButtonCallback\n );\n observer.init();\n }\n\n return {\n createOrder: this.createOrder(),\n onApprove: onApprove(this, this.errorHandler),\n onError: (error) => {\n this.errorHandler.genericError();\n }\n }\n }\n\n createOrder()\n {\n var getProducts = null;\n if (! this.isGroupedProduct() ) {\n getProducts = () => {\n const id = document.querySelector('[name=\"add-to-cart\"]').value;\n const qty = document.querySelector('[name=\"quantity\"]').value;\n const variations = this.variations();\n return [new Product(id, qty, variations)];\n }\n } else {\n getProducts = () => {\n const products = [];\n this.formElement.querySelectorAll('input[type=\"number\"]').forEach((element) => {\n if (! element.value) {\n return;\n }\n const elementName = element.getAttribute('name').match(/quantity\\[([\\d]*)\\]/);\n if (elementName.length !== 2) {\n return;\n }\n const id = parseInt(elementName[1]);\n const quantity = parseInt(element.value);\n products.push(new Product(id, quantity, null));\n })\n return products;\n }\n }\n const createOrder = (data, actions) => {\n this.errorHandler.clear();\n\n const onResolve = (purchase_units) => {\n const payer = payerData();\n const bnCode = typeof this.config.bn_codes[this.config.context] !== 'undefined' ?\n this.config.bn_codes[this.config.context] : '';\n return fetch(this.config.ajax.create_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: this.config.ajax.create_order.nonce,\n purchase_units,\n payer,\n bn_code:bnCode,\n context:this.config.context\n })\n }).then(function (res) {\n return res.json();\n }).then(function (data) {\n if (!data.success) {\n console.error(data);\n throw Error(data.data.message);\n }\n return data.data.id;\n });\n };\n\n const promise = this.updateCart.update(onResolve, getProducts());\n return promise;\n };\n return createOrder;\n }\n\n variations()\n {\n\n if (! this.hasVariations()) {\n return null;\n }\n const attributes = [...this.formElement.querySelectorAll(\"[name^='attribute_']\")].map(\n (element) => {\n return {\n value:element.value,\n name:element.name\n }\n }\n );\n return attributes;\n }\n\n hasVariations()\n {\n return this.formElement.classList.contains('variations_form');\n }\n\n isGroupedProduct()\n {\n return this.formElement.classList.contains('grouped_form');\n }\n}\nexport default SingleProductActionHandler;\n","import ErrorHandler from '../ErrorHandler';\nimport UpdateCart from \"../Helper/UpdateCart\";\nimport SingleProductActionHandler from \"../ActionHandler/SingleProductActionHandler\";\n\nclass SingleProductBootstap {\n constructor(gateway, renderer, messages) {\n this.gateway = gateway;\n this.renderer = renderer;\n this.messages = messages;\n }\n\n init() {\n if (!this.shouldRender()) {\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n return;\n }\n\n this.render();\n }\n\n shouldRender() {\n if (document.querySelector('form.cart') === null) {\n return false;\n }\n\n return true;\n }\n\n render() {\n const actionHandler = new SingleProductActionHandler(\n this.gateway,\n new UpdateCart(\n this.gateway.ajax.change_cart.endpoint,\n this.gateway.ajax.change_cart.nonce,\n ),\n () => {\n this.renderer.showButtons(this.gateway.button.wrapper);\n this.renderer.showButtons(this.gateway.hosted_fields.wrapper);\n let priceText = \"0\";\n if (document.querySelector('form.cart ins .woocommerce-Price-amount')) {\n priceText = document.querySelector('form.cart ins .woocommerce-Price-amount').innerText;\n }\n else if (document.querySelector('form.cart .woocommerce-Price-amount')) {\n priceText = document.querySelector('form.cart .woocommerce-Price-amount').innerText;\n }\n const amount = parseInt(priceText.replace(/([^\\d,\\.\\s]*)/g, ''));\n this.messages.renderWithAmount(amount)\n },\n () => {\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n },\n document.querySelector('form.cart'),\n new ErrorHandler(this.gateway.labels.error.generic),\n );\n\n this.renderer.render(\n this.gateway.button.wrapper,\n this.gateway.hosted_fields.wrapper,\n actionHandler.configuration(),\n );\n }\n}\n\nexport default SingleProductBootstap;","import CartActionHandler from '../ActionHandler/CartActionHandler';\nimport ErrorHandler from '../ErrorHandler';\n\nclass CartBootstrap {\n constructor(gateway, renderer) {\n this.gateway = gateway;\n this.renderer = renderer;\n }\n\n init() {\n if (!this.shouldRender()) {\n return;\n }\n\n this.render();\n\n jQuery(document.body).on('updated_cart_totals updated_checkout', () => {\n this.render();\n });\n }\n\n shouldRender() {\n return document.querySelector(this.gateway.button.wrapper) !==\n null || document.querySelector(this.gateway.hosted_fields.wrapper) !==\n null;\n }\n\n render() {\n const actionHandler = new CartActionHandler(\n PayPalCommerceGateway,\n new ErrorHandler(this.gateway.labels.error.generic),\n );\n\n this.renderer.render(\n this.gateway.button.wrapper,\n this.gateway.hosted_fields.wrapper,\n actionHandler.configuration(),\n );\n }\n}\n\nexport default CartBootstrap;\n","const onApprove = (context, errorHandler, spinner) => {\n return (data, actions) => {\n spinner.block();\n return fetch(context.config.ajax.approve_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: context.config.ajax.approve_order.nonce,\n order_id:data.orderID\n })\n }).then((res)=>{\n return res.json();\n }).then((data)=>{\n spinner.unblock();\n if (!data.success) {\n if (data.data.code === 100) {\n errorHandler.message(data.data.message);\n } else {\n errorHandler.genericError();\n }\n if (typeof actions !== 'undefined' && typeof actions.restart !== 'undefined') {\n return actions.restart();\n }\n throw new Error(data.data.message);\n }\n document.querySelector('#place_order').click()\n });\n\n }\n}\n\nexport default onApprove;\n","import onApprove from '../OnApproveHandler/onApproveForPayNow.js';\nimport {payerData} from \"../Helper/PayerData\";\n\nclass CheckoutActionHandler {\n\n constructor(config, errorHandler, spinner) {\n this.config = config;\n this.errorHandler = errorHandler;\n this.spinner = spinner;\n }\n\n configuration() {\n const spinner = this.spinner;\n const createOrder = (data, actions) => {\n const payer = payerData();\n const bnCode = typeof this.config.bn_codes[this.config.context] !== 'undefined' ?\n this.config.bn_codes[this.config.context] : '';\n\n const errorHandler = this.errorHandler;\n\n const formSelector = this.config.context === 'checkout' ? 'form.checkout' : 'form#order_review';\n const formValues = jQuery(formSelector).serialize();\n\n const createaccount = jQuery('#createaccount').is(\":checked\") ? true : false;\n\n return fetch(this.config.ajax.create_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: this.config.ajax.create_order.nonce,\n payer,\n bn_code:bnCode,\n context:this.config.context,\n order_id:this.config.order_id,\n form:formValues,\n createaccount: createaccount\n })\n }).then(function (res) {\n return res.json();\n }).then(function (data) {\n if (!data.success) {\n spinner.unblock();\n //handle both messages sent from Woocommerce (data.messages) and this plugin (data.data.message)\n if (typeof(data.messages) !== 'undefined' )\n {\n const domParser = new DOMParser();\n errorHandler.appendPreparedErrorMessageElement(\n domParser.parseFromString(data.messages, 'text/html')\n .querySelector('ul')\n );\n } else {\n errorHandler.message(data.data.message, true);\n }\n\n return;\n }\n const input = document.createElement('input');\n input.setAttribute('type', 'hidden');\n input.setAttribute('name', 'ppcp-resume-order');\n input.setAttribute('value', data.data.purchase_units[0].custom_id);\n document.querySelector(formSelector).append(input);\n return data.data.id;\n });\n }\n return {\n createOrder,\n onApprove:onApprove(this, this.errorHandler, this.spinner),\n onCancel: () => {\n spinner.unblock();\n },\n onError: () => {\n this.errorHandler.genericError();\n spinner.unblock();\n }\n }\n }\n}\n\nexport default CheckoutActionHandler;\n","import ErrorHandler from '../ErrorHandler';\nimport CheckoutActionHandler from '../ActionHandler/CheckoutActionHandler';\n\nclass CheckoutBootstap {\n constructor(gateway, renderer, messages, spinner) {\n this.gateway = gateway;\n this.renderer = renderer;\n this.messages = messages;\n this.spinner = spinner;\n }\n\n init() {\n\n this.render();\n\n jQuery(document.body).on('updated_checkout', () => {\n this.render()\n });\n\n jQuery(document.body).\n on('updated_checkout payment_method_selected', () => {\n this.switchBetweenPayPalandOrderButton()\n this.displayPlaceOrderButtonForSavedCreditCards()\n\n })\n\n jQuery('#saved-credit-card').on('change', () => {\n this.displayPlaceOrderButtonForSavedCreditCards()\n })\n\n this.switchBetweenPayPalandOrderButton()\n this.displayPlaceOrderButtonForSavedCreditCards()\n }\n\n shouldRender() {\n if (document.querySelector(this.gateway.button.cancel_wrapper)) {\n return false;\n }\n\n return document.querySelector(this.gateway.button.wrapper) !== null || document.querySelector(this.gateway.hosted_fields.wrapper) !== null;\n }\n\n render() {\n if (!this.shouldRender()) {\n return;\n }\n if (document.querySelector(this.gateway.hosted_fields.wrapper + '>div')) {\n document.querySelector(this.gateway.hosted_fields.wrapper + '>div').setAttribute('style', '');\n }\n const actionHandler = new CheckoutActionHandler(\n PayPalCommerceGateway,\n new ErrorHandler(this.gateway.labels.error.generic),\n this.spinner\n );\n\n this.renderer.render(\n this.gateway.button.wrapper,\n this.gateway.hosted_fields.wrapper,\n actionHandler.configuration(),\n );\n }\n\n switchBetweenPayPalandOrderButton() {\n jQuery('#saved-credit-card').val(jQuery('#saved-credit-card option:first').val());\n\n const currentPaymentMethod = jQuery(\n 'input[name=\"payment_method\"]:checked').val();\n\n if (currentPaymentMethod !== 'ppcp-gateway' && currentPaymentMethod !== 'ppcp-credit-card-gateway') {\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.messages.wrapper);\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n jQuery('#place_order').show();\n }\n else {\n jQuery('#place_order').hide();\n if (currentPaymentMethod === 'ppcp-gateway') {\n this.renderer.showButtons(this.gateway.button.wrapper);\n this.renderer.showButtons(this.gateway.messages.wrapper);\n this.messages.render()\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)\n }\n if (currentPaymentMethod === 'ppcp-credit-card-gateway') {\n this.renderer.hideButtons(this.gateway.button.wrapper)\n this.renderer.hideButtons(this.gateway.messages.wrapper)\n this.renderer.showButtons(this.gateway.hosted_fields.wrapper)\n }\n }\n }\n\n displayPlaceOrderButtonForSavedCreditCards() {\n const currentPaymentMethod = jQuery(\n 'input[name=\"payment_method\"]:checked').val();\n if (currentPaymentMethod !== 'ppcp-credit-card-gateway') {\n return;\n }\n\n if (jQuery('#saved-credit-card').length && jQuery('#saved-credit-card').val() !== '') {\n this.renderer.hideButtons(this.gateway.button.wrapper)\n this.renderer.hideButtons(this.gateway.messages.wrapper)\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)\n jQuery('#place_order').show()\n } else {\n jQuery('#place_order').hide()\n this.renderer.hideButtons(this.gateway.button.wrapper)\n this.renderer.hideButtons(this.gateway.messages.wrapper)\n this.renderer.showButtons(this.gateway.hosted_fields.wrapper)\n }\n }\n}\n\nexport default CheckoutBootstap\n","import ErrorHandler from '../ErrorHandler';\nimport CheckoutActionHandler from '../ActionHandler/CheckoutActionHandler';\n\nclass PayNowBootstrap {\n constructor(gateway, renderer, messages, spinner) {\n this.gateway = gateway;\n this.renderer = renderer;\n this.messages = messages;\n this.spinner = spinner;\n }\n\n init() {\n\n this.render();\n\n jQuery(document.body).on('updated_checkout', () => {\n this.render();\n });\n\n jQuery(document.body).\n on('updated_checkout payment_method_selected', () => {\n this.switchBetweenPayPalandOrderButton();\n });\n this.switchBetweenPayPalandOrderButton();\n }\n\n shouldRender() {\n if (document.querySelector(this.gateway.button.cancel_wrapper)) {\n return false;\n }\n\n return document.querySelector(this.gateway.button.wrapper) !== null || document.querySelector(this.gateway.hosted_fields.wrapper) !== null;\n }\n\n render() {\n if (!this.shouldRender()) {\n return;\n }\n if (document.querySelector(this.gateway.hosted_fields.wrapper + '>div')) {\n document.querySelector(this.gateway.hosted_fields.wrapper + '>div').setAttribute('style', '');\n }\n const actionHandler = new CheckoutActionHandler(\n PayPalCommerceGateway,\n new ErrorHandler(this.gateway.labels.error.generic),\n this.spinner\n );\n\n this.renderer.render(\n this.gateway.button.wrapper,\n this.gateway.hosted_fields.wrapper,\n actionHandler.configuration(),\n );\n }\n\n switchBetweenPayPalandOrderButton() {\n const urlParams = new URLSearchParams(window.location.search)\n if (urlParams.has('change_payment_method')) {\n return\n }\n\n const currentPaymentMethod = jQuery(\n 'input[name=\"payment_method\"]:checked').val();\n\n if (currentPaymentMethod !== 'ppcp-gateway' && currentPaymentMethod !== 'ppcp-credit-card-gateway') {\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.messages.wrapper);\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n jQuery('#place_order').show();\n }\n else {\n jQuery('#place_order').hide();\n if (currentPaymentMethod === 'ppcp-gateway') {\n this.renderer.showButtons(this.gateway.button.wrapper);\n this.renderer.showButtons(this.gateway.messages.wrapper);\n this.messages.render();\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n }\n if (currentPaymentMethod === 'ppcp-credit-card-gateway') {\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.messages.wrapper);\n this.renderer.showButtons(this.gateway.hosted_fields.wrapper);\n }\n }\n }\n}\n\nexport default PayNowBootstrap;\n","class Renderer {\n constructor(creditCardRenderer, defaultConfig) {\n this.defaultConfig = defaultConfig;\n this.creditCardRenderer = creditCardRenderer;\n }\n\n render(wrapper, hostedFieldsWrapper, contextConfig) {\n\n this.renderButtons(wrapper, contextConfig);\n this.creditCardRenderer.render(hostedFieldsWrapper, contextConfig);\n }\n\n renderButtons(wrapper, contextConfig) {\n if (! document.querySelector(wrapper) || this.isAlreadyRendered(wrapper) || 'undefined' === typeof paypal.Buttons ) {\n return;\n }\n\n const style = wrapper === this.defaultConfig.button.wrapper ? this.defaultConfig.button.style : this.defaultConfig.button.mini_cart_style;\n paypal.Buttons({\n style,\n ...contextConfig,\n }).render(wrapper);\n }\n\n isAlreadyRendered(wrapper) {\n return document.querySelector(wrapper).hasChildNodes();\n }\n\n hideButtons(element) {\n const domElement = document.querySelector(element);\n if (! domElement ) {\n return false;\n }\n domElement.style.display = 'none';\n return true;\n }\n\n showButtons(element) {\n const domElement = document.querySelector(element);\n if (! domElement ) {\n return false;\n }\n domElement.style.display = 'block';\n return true;\n }\n}\n\nexport default Renderer;","const dccInputFactory = (original) => {\n const styles = window.getComputedStyle(original);\n const newElement = document.createElement('span');\n newElement.setAttribute('id', original.id);\n Object.values(styles).forEach( (prop) => {\n if (! styles[prop] || ! isNaN(prop) ) {\n return;\n }\n newElement.style.setProperty(prop,'' + styles[prop]);\n });\n return newElement;\n}\n\nexport default dccInputFactory;","import dccInputFactory from \"../Helper/DccInputFactory\";\n\nclass CreditCardRenderer {\n\n constructor(defaultConfig, errorHandler, spinner) {\n this.defaultConfig = defaultConfig;\n this.errorHandler = errorHandler;\n this.spinner = spinner;\n this.cardValid = false;\n this.formValid = false;\n }\n\n render(wrapper, contextConfig) {\n\n if (\n (\n this.defaultConfig.context !== 'checkout'\n && this.defaultConfig.context !== 'pay-now'\n )\n || wrapper === null\n || document.querySelector(wrapper) === null\n ) {\n return;\n }\n if (\n typeof paypal.HostedFields === 'undefined'\n || ! paypal.HostedFields.isEligible()\n ) {\n const wrapperElement = document.querySelector(wrapper);\n wrapperElement.parentNode.removeChild(wrapperElement);\n return;\n }\n\n const gateWayBox = document.querySelector('.payment_box.payment_method_ppcp-credit-card-gateway');\n const oldDisplayStyle = gateWayBox.style.display;\n gateWayBox.style.display = 'block';\n\n const hideDccGateway = document.querySelector('#ppcp-hide-dcc');\n if (hideDccGateway) {\n hideDccGateway.parentNode.removeChild(hideDccGateway);\n }\n\n const cardNumberField = document.querySelector('#ppcp-credit-card-gateway-card-number');\n\n const stylesRaw = window.getComputedStyle(cardNumberField);\n let styles = {};\n Object.values(stylesRaw).forEach( (prop) => {\n if (! stylesRaw[prop]) {\n return;\n }\n styles[prop] = '' + stylesRaw[prop];\n });\n\n const cardNumber = dccInputFactory(cardNumberField);\n cardNumberField.parentNode.replaceChild(cardNumber, cardNumberField);\n\n const cardExpiryField = document.querySelector('#ppcp-credit-card-gateway-card-expiry');\n const cardExpiry = dccInputFactory(cardExpiryField);\n cardExpiryField.parentNode.replaceChild(cardExpiry, cardExpiryField);\n\n const cardCodeField = document.querySelector('#ppcp-credit-card-gateway-card-cvc');\n const cardCode = dccInputFactory(cardCodeField);\n cardCodeField.parentNode.replaceChild(cardCode, cardCodeField);\n\n gateWayBox.style.display = oldDisplayStyle;\n\n const formWrapper = '.payment_box payment_method_ppcp-credit-card-gateway';\n if (\n this.defaultConfig.enforce_vault\n && document.querySelector(formWrapper + ' .ppcp-credit-card-vault')\n ) {\n document.querySelector(formWrapper + ' .ppcp-credit-card-vault').checked = true;\n document.querySelector(formWrapper + ' .ppcp-credit-card-vault').setAttribute('disabled', true);\n }\n paypal.HostedFields.render({\n createOrder: contextConfig.createOrder,\n styles: {\n 'input': styles\n },\n fields: {\n number: {\n selector: '#ppcp-credit-card-gateway-card-number',\n placeholder: this.defaultConfig.hosted_fields.labels.credit_card_number,\n },\n cvv: {\n selector: '#ppcp-credit-card-gateway-card-cvc',\n placeholder: this.defaultConfig.hosted_fields.labels.cvv,\n },\n expirationDate: {\n selector: '#ppcp-credit-card-gateway-card-expiry',\n placeholder: this.defaultConfig.hosted_fields.labels.mm_yy,\n }\n }\n }).then(hostedFields => {\n const submitEvent = (event) => {\n this.spinner.block();\n if (event) {\n event.preventDefault();\n }\n this.errorHandler.clear();\n\n if (this.formValid && this.cardValid) {\n const save_card = this.defaultConfig.save_card ? true : false;\n const vault = document.getElementById('ppcp-credit-card-vault') ?\n document.getElementById('ppcp-credit-card-vault').checked : save_card;\n hostedFields.submit({\n contingencies: ['SCA_WHEN_REQUIRED'],\n vault: vault\n }).then((payload) => {\n payload.orderID = payload.orderId;\n this.spinner.unblock();\n return contextConfig.onApprove(payload);\n }).catch(() => {\n this.errorHandler.genericError();\n this.spinner.unblock();\n });\n } else {\n this.spinner.unblock();\n const message = ! this.cardValid ? this.defaultConfig.hosted_fields.labels.card_not_supported : this.defaultConfig.hosted_fields.labels.fields_not_valid;\n this.errorHandler.message(message);\n }\n }\n hostedFields.on('inputSubmitRequest', function () {\n submitEvent(null);\n });\n hostedFields.on('cardTypeChange', (event) => {\n if ( ! event.cards.length ) {\n this.cardValid = false;\n return;\n }\n const validCards = this.defaultConfig.hosted_fields.valid_cards;\n this.cardValid = validCards.indexOf(event.cards[0].type) !== -1;\n })\n hostedFields.on('validityChange', (event) => {\n const formValid = Object.keys(event.fields).every(function (key) {\n return event.fields[key].isValid;\n });\n this.formValid = formValid;\n\n })\n document.querySelector(wrapper + ' button').addEventListener(\n 'click',\n submitEvent\n );\n });\n\n document.querySelector('#payment_method_ppcp-credit-card-gateway').addEventListener(\n 'click',\n () => {\n document.querySelector('label[for=ppcp-credit-card-gateway-card-number]').click();\n }\n )\n }\n}\nexport default CreditCardRenderer;\n","const storageKey = 'ppcp-data-client-id';\n\nconst validateToken = (token, user) => {\n if (! token) {\n return false;\n }\n if (token.user !== user) {\n return false;\n }\n const currentTime = new Date().getTime();\n const isExpired = currentTime >= token.expiration * 1000;\n return ! isExpired;\n}\n\nconst storedTokenForUser = (user) => {\n const token = JSON.parse(sessionStorage.getItem(storageKey));\n if (validateToken(token, user)) {\n return token.token;\n }\n return null;\n}\n\nconst storeToken = (token) => {\n sessionStorage.setItem(storageKey, JSON.stringify(token));\n}\n\nconst dataClientIdAttributeHandler = (script, config) => {\n fetch(config.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: config.nonce\n })\n }).then((res)=>{\n return res.json();\n }).then((data)=>{\n const isValid = validateToken(data, config.user);\n if (!isValid) {\n return;\n }\n storeToken(data);\n script.setAttribute('data-client-token', data.token);\n document.body.append(script);\n });\n}\n\nexport default dataClientIdAttributeHandler;\n","class MessageRenderer {\n\n constructor(config) {\n this.config = config;\n }\n\n render() {\n if (! this.shouldRender()) {\n return;\n }\n\n paypal.Messages({\n amount: this.config.amount,\n placement: this.config.placement,\n style: this.config.style\n }).render(this.config.wrapper);\n }\n\n renderWithAmount(amount) {\n\n if (! this.shouldRender()) {\n return;\n }\n\n const newWrapper = document.createElement('div');\n newWrapper.setAttribute('id', this.config.wrapper.replace('#', ''));\n\n const sibling = document.querySelector(this.config.wrapper).nextSibling;\n document.querySelector(this.config.wrapper).parentElement.removeChild(document.querySelector(this.config.wrapper));\n sibling.parentElement.insertBefore(newWrapper, sibling);\n paypal.Messages({\n amount,\n placement: this.config.placement,\n style: this.config.style\n }).render(this.config.wrapper);\n }\n\n shouldRender() {\n\n if (typeof paypal.Messages === 'undefined' || typeof this.config.wrapper === 'undefined' ) {\n return false;\n }\n if (! document.querySelector(this.config.wrapper)) {\n return false;\n }\n return true;\n }\n}\nexport default MessageRenderer;","class Spinner {\n\n constructor() {\n this.target = 'form.woocommerce-checkout';\n }\n\n setTarget(target) {\n this.target = target;\n }\n\n block() {\n\n jQuery( this.target ).block({\n message: null,\n overlayCSS: {\n background: '#fff',\n opacity: 0.6\n }\n });\n }\n\n unblock() {\n\n jQuery( this.target ).unblock();\n }\n}\n\nexport default Spinner;\n","import MiniCartBootstap from './modules/ContextBootstrap/MiniCartBootstap';\nimport SingleProductBootstap from './modules/ContextBootstrap/SingleProductBootstap';\nimport CartBootstrap from './modules/ContextBootstrap/CartBootstap';\nimport CheckoutBootstap from './modules/ContextBootstrap/CheckoutBootstap';\nimport PayNowBootstrap from \"./modules/ContextBootstrap/PayNowBootstrap\";\nimport Renderer from './modules/Renderer/Renderer';\nimport ErrorHandler from './modules/ErrorHandler';\nimport CreditCardRenderer from \"./modules/Renderer/CreditCardRenderer\";\nimport dataClientIdAttributeHandler from \"./modules/DataClientIdAttributeHandler\";\nimport MessageRenderer from \"./modules/Renderer/MessageRenderer\";\nimport Spinner from \"./modules/Helper/Spinner\";\n\nconst bootstrap = () => {\n const errorHandler = new ErrorHandler(PayPalCommerceGateway.labels.error.generic);\n const spinner = new Spinner();\n const creditCardRenderer = new CreditCardRenderer(PayPalCommerceGateway, errorHandler, spinner);\n const renderer = new Renderer(creditCardRenderer, PayPalCommerceGateway);\n const messageRenderer = new MessageRenderer(PayPalCommerceGateway.messages);\n const context = PayPalCommerceGateway.context;\n if (context === 'mini-cart' || context === 'product') {\n if (PayPalCommerceGateway.mini_cart_buttons_enabled === '1') {\n const miniCartBootstrap = new MiniCartBootstap(\n PayPalCommerceGateway,\n renderer\n );\n\n miniCartBootstrap.init();\n }\n }\n\n if (context === 'product' && PayPalCommerceGateway.single_product_buttons_enabled === '1') {\n const singleProductBootstrap = new SingleProductBootstap(\n PayPalCommerceGateway,\n renderer,\n messageRenderer,\n );\n\n singleProductBootstrap.init();\n }\n\n if (context === 'cart') {\n const cartBootstrap = new CartBootstrap(\n PayPalCommerceGateway,\n renderer,\n );\n\n cartBootstrap.init();\n }\n\n if (context === 'checkout') {\n const checkoutBootstap = new CheckoutBootstap(\n PayPalCommerceGateway,\n renderer,\n messageRenderer,\n spinner\n );\n\n checkoutBootstap.init();\n }\n\n if (context === 'pay-now' ) {\n const payNowBootstrap = new PayNowBootstrap(\n PayPalCommerceGateway,\n renderer,\n messageRenderer,\n spinner\n );\n payNowBootstrap.init();\n }\n\n if (context !== 'checkout') {\n messageRenderer.render();\n }\n};\ndocument.addEventListener(\n 'DOMContentLoaded',\n () => {\n if (!typeof (PayPalCommerceGateway)) {\n console.error('PayPal button could not be configured.');\n return;\n }\n const script = document.createElement('script');\n\n script.addEventListener('load', (event) => {\n bootstrap();\n });\n script.setAttribute('src', PayPalCommerceGateway.button.url);\n Object.entries(PayPalCommerceGateway.script_attributes).forEach(\n (keyValue) => {\n script.setAttribute(keyValue[0], keyValue[1]);\n }\n );\n\n if (PayPalCommerceGateway.data_client_id.set_attribute) {\n dataClientIdAttributeHandler(script, PayPalCommerceGateway.data_client_id);\n return;\n }\n\n document.body.append(script);\n },\n);\n"],"sourceRoot":""}
 
modules/ppcp-button/assets/js/hosted-fields.js CHANGED
@@ -1,2 +1 @@
1
- !function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){e.exports=r.p+"css/hosted-fields.css"}]);
2
- //# sourceMappingURL=hosted-fields.js.map
1
+ (()=>{"use strict";var __webpack_modules__={555:(__unused_webpack_module,__unused_webpack___webpack_exports__,__webpack_require__)=>{eval('/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + "css/hosted-fields.css");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTU1LmpzIiwibWFwcGluZ3MiOiJBQUFBLHNFQUFlLHFCQUF1QiwwQkFBMEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wcGMtYnV0dG9uLy4vcmVzb3VyY2VzL2Nzcy9ob3N0ZWQtZmllbGRzLnNjc3M/NjRhYiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyArIFwiY3NzL2hvc3RlZC1maWVsZHMuY3NzXCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///555\n')}},__webpack_require__={};__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{var e;__webpack_require__.g.importScripts&&(e=__webpack_require__.g.location+"");var _=__webpack_require__.g.document;if(!e&&_&&(_.currentScript&&(e=_.currentScript.src),!e)){var r=_.getElementsByTagName("script");r.length&&(e=r[r.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),__webpack_require__.p=e+"../"})();var __webpack_exports__={};__webpack_modules__[555](0,__webpack_exports__,__webpack_require__)})();
 
modules/ppcp-button/assets/js/hosted-fields.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./resources/css/hosted-fields.scss"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,G,kBClFrDhC,EAAOD,QAAU,IAA0B","file":"js/hosted-fields.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","module.exports = __webpack_public_path__ + \"css/hosted-fields.css\";"],"sourceRoot":""}
 
modules/ppcp-button/resources/css/hosted-fields.scss CHANGED
@@ -7,3 +7,7 @@
7
  .payments-sdk-contingency-handler {
8
  z-index: 1000 !important;
9
  }
 
 
 
 
7
  .payments-sdk-contingency-handler {
8
  z-index: 1000 !important;
9
  }
10
+
11
+ .ppcp-credit-card-gateway-form-field-disabled {
12
+ opacity: .5 !important;
13
+ }
modules/ppcp-button/resources/js/modules/ContextBootstrap/CheckoutBootstap.js CHANGED
@@ -24,9 +24,11 @@ class CheckoutBootstap {
24
 
25
  })
26
 
27
- jQuery('#saved-credit-card').on('change', () => {
28
- this.displayPlaceOrderButtonForSavedCreditCards()
29
- })
 
 
30
 
31
  this.switchBetweenPayPalandOrderButton()
32
  this.displayPlaceOrderButtonForSavedCreditCards()
@@ -100,13 +102,41 @@ class CheckoutBootstap {
100
  this.renderer.hideButtons(this.gateway.messages.wrapper)
101
  this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)
102
  jQuery('#place_order').show()
 
103
  } else {
104
  jQuery('#place_order').hide()
105
  this.renderer.hideButtons(this.gateway.button.wrapper)
106
  this.renderer.hideButtons(this.gateway.messages.wrapper)
107
  this.renderer.showButtons(this.gateway.hosted_fields.wrapper)
 
108
  }
109
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  }
111
 
112
  export default CheckoutBootstap
24
 
25
  })
26
 
27
+ jQuery(document).on('hosted_fields_loaded', () => {
28
+ jQuery('#saved-credit-card').on('change', () => {
29
+ this.displayPlaceOrderButtonForSavedCreditCards()
30
+ })
31
+ });
32
 
33
  this.switchBetweenPayPalandOrderButton()
34
  this.displayPlaceOrderButtonForSavedCreditCards()
102
  this.renderer.hideButtons(this.gateway.messages.wrapper)
103
  this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)
104
  jQuery('#place_order').show()
105
+ this.disableCreditCardFields()
106
  } else {
107
  jQuery('#place_order').hide()
108
  this.renderer.hideButtons(this.gateway.button.wrapper)
109
  this.renderer.hideButtons(this.gateway.messages.wrapper)
110
  this.renderer.showButtons(this.gateway.hosted_fields.wrapper)
111
+ this.enableCreditCardFields()
112
  }
113
  }
114
+
115
+ disableCreditCardFields() {
116
+ jQuery('label[for="ppcp-credit-card-gateway-card-number"]').addClass('ppcp-credit-card-gateway-form-field-disabled')
117
+ jQuery('#ppcp-credit-card-gateway-card-number').addClass('ppcp-credit-card-gateway-form-field-disabled')
118
+ jQuery('label[for="ppcp-credit-card-gateway-card-expiry"]').addClass('ppcp-credit-card-gateway-form-field-disabled')
119
+ jQuery('#ppcp-credit-card-gateway-card-expiry').addClass('ppcp-credit-card-gateway-form-field-disabled')
120
+ jQuery('label[for="ppcp-credit-card-gateway-card-cvc"]').addClass('ppcp-credit-card-gateway-form-field-disabled')
121
+ jQuery('#ppcp-credit-card-gateway-card-cvc').addClass('ppcp-credit-card-gateway-form-field-disabled')
122
+ jQuery('label[for="vault"]').addClass('ppcp-credit-card-gateway-form-field-disabled')
123
+ jQuery('#ppcp-credit-card-vault').addClass('ppcp-credit-card-gateway-form-field-disabled')
124
+ jQuery('#ppcp-credit-card-vault').attr("disabled", true)
125
+ this.renderer.disableCreditCardFields()
126
+ }
127
+
128
+ enableCreditCardFields() {
129
+ jQuery('label[for="ppcp-credit-card-gateway-card-number"]').removeClass('ppcp-credit-card-gateway-form-field-disabled')
130
+ jQuery('#ppcp-credit-card-gateway-card-number').removeClass('ppcp-credit-card-gateway-form-field-disabled')
131
+ jQuery('label[for="ppcp-credit-card-gateway-card-expiry"]').removeClass('ppcp-credit-card-gateway-form-field-disabled')
132
+ jQuery('#ppcp-credit-card-gateway-card-expiry').removeClass('ppcp-credit-card-gateway-form-field-disabled')
133
+ jQuery('label[for="ppcp-credit-card-gateway-card-cvc"]').removeClass('ppcp-credit-card-gateway-form-field-disabled')
134
+ jQuery('#ppcp-credit-card-gateway-card-cvc').removeClass('ppcp-credit-card-gateway-form-field-disabled')
135
+ jQuery('label[for="vault"]').removeClass('ppcp-credit-card-gateway-form-field-disabled')
136
+ jQuery('#ppcp-credit-card-vault').removeClass('ppcp-credit-card-gateway-form-field-disabled')
137
+ jQuery('#ppcp-credit-card-vault').attr("disabled", false)
138
+ this.renderer.enableCreditCardFields()
139
+ }
140
  }
141
 
142
  export default CheckoutBootstap
modules/ppcp-button/resources/js/modules/Renderer/CreditCardRenderer.js CHANGED
@@ -8,6 +8,8 @@ class CreditCardRenderer {
8
  this.spinner = spinner;
9
  this.cardValid = false;
10
  this.formValid = false;
 
 
11
  }
12
 
13
  render(wrapper, contextConfig) {
@@ -31,6 +33,12 @@ class CreditCardRenderer {
31
  return;
32
  }
33
 
 
 
 
 
 
 
34
  const gateWayBox = document.querySelector('.payment_box.payment_method_ppcp-credit-card-gateway');
35
  const oldDisplayStyle = gateWayBox.style.display;
36
  gateWayBox.style.display = 'block';
@@ -92,36 +100,11 @@ class CreditCardRenderer {
92
  }
93
  }
94
  }).then(hostedFields => {
95
- const submitEvent = (event) => {
96
- this.spinner.block();
97
- if (event) {
98
- event.preventDefault();
99
- }
100
- this.errorHandler.clear();
101
-
102
- if (this.formValid && this.cardValid) {
103
- const save_card = this.defaultConfig.save_card ? true : false;
104
- const vault = document.getElementById('ppcp-credit-card-vault') ?
105
- document.getElementById('ppcp-credit-card-vault').checked : save_card;
106
- hostedFields.submit({
107
- contingencies: ['SCA_WHEN_REQUIRED'],
108
- vault: vault
109
- }).then((payload) => {
110
- payload.orderID = payload.orderId;
111
- this.spinner.unblock();
112
- return contextConfig.onApprove(payload);
113
- }).catch(() => {
114
- this.errorHandler.genericError();
115
- this.spinner.unblock();
116
- });
117
- } else {
118
- this.spinner.unblock();
119
- const message = ! this.cardValid ? this.defaultConfig.hosted_fields.labels.card_not_supported : this.defaultConfig.hosted_fields.labels.fields_not_valid;
120
- this.errorHandler.message(message);
121
- }
122
- }
123
- hostedFields.on('inputSubmitRequest', function () {
124
- submitEvent(null);
125
  });
126
  hostedFields.on('cardTypeChange', (event) => {
127
  if ( ! event.cards.length ) {
@@ -137,11 +120,18 @@ class CreditCardRenderer {
137
  });
138
  this.formValid = formValid;
139
 
140
- })
141
- document.querySelector(wrapper + ' button').addEventListener(
142
- 'click',
143
- submitEvent
144
- );
 
 
 
 
 
 
 
145
  });
146
 
147
  document.querySelector('#payment_method_ppcp-credit-card-gateway').addEventListener(
@@ -151,5 +141,69 @@ class CreditCardRenderer {
151
  }
152
  )
153
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
  }
155
  export default CreditCardRenderer;
8
  this.spinner = spinner;
9
  this.cardValid = false;
10
  this.formValid = false;
11
+ this.currentHostedFieldsInstance = null;
12
+ this.formSubmissionSubscribed = false;
13
  }
14
 
15
  render(wrapper, contextConfig) {
33
  return;
34
  }
35
 
36
+ if (this.currentHostedFieldsInstance) {
37
+ this.currentHostedFieldsInstance.teardown()
38
+ .catch(err => console.error(`Hosted fields teardown error: ${err}`));
39
+ this.currentHostedFieldsInstance = null;
40
+ }
41
+
42
  const gateWayBox = document.querySelector('.payment_box.payment_method_ppcp-credit-card-gateway');
43
  const oldDisplayStyle = gateWayBox.style.display;
44
  gateWayBox.style.display = 'block';
100
  }
101
  }
102
  }).then(hostedFields => {
103
+ document.dispatchEvent(new CustomEvent("hosted_fields_loaded"));
104
+ this.currentHostedFieldsInstance = hostedFields;
105
+
106
+ hostedFields.on('inputSubmitRequest', () => {
107
+ this._submit(contextConfig);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
  });
109
  hostedFields.on('cardTypeChange', (event) => {
110
  if ( ! event.cards.length ) {
120
  });
121
  this.formValid = formValid;
122
 
123
+ });
124
+
125
+ if (!this.formSubmissionSubscribed) {
126
+ document.querySelector(wrapper + ' button').addEventListener(
127
+ 'click',
128
+ event => {
129
+ event.preventDefault();
130
+ this._submit(contextConfig);
131
+ }
132
+ );
133
+ this.formSubmissionSubscribed = true;
134
+ }
135
  });
136
 
137
  document.querySelector('#payment_method_ppcp-credit-card-gateway').addEventListener(
141
  }
142
  )
143
  }
144
+
145
+ disableFields() {
146
+ if( this.currentHostedFieldsInstance) {
147
+ this.currentHostedFieldsInstance.setAttribute({
148
+ field: 'number',
149
+ attribute: 'disabled'
150
+ })
151
+ this.currentHostedFieldsInstance.setAttribute({
152
+ field: 'cvv',
153
+ attribute: 'disabled'
154
+ })
155
+ this.currentHostedFieldsInstance.setAttribute({
156
+ field: 'expirationDate',
157
+ attribute: 'disabled'
158
+ })
159
+ }
160
+ }
161
+
162
+ enableFields() {
163
+ if( this.currentHostedFieldsInstance) {
164
+ this.currentHostedFieldsInstance.removeAttribute({
165
+ field: 'number',
166
+ attribute: 'disabled'
167
+ })
168
+ this.currentHostedFieldsInstance.removeAttribute({
169
+ field: 'cvv',
170
+ attribute: 'disabled'
171
+ })
172
+ this.currentHostedFieldsInstance.removeAttribute({
173
+ field: 'expirationDate',
174
+ attribute: 'disabled'
175
+ })
176
+ }
177
+ }
178
+
179
+ _submit(contextConfig) {
180
+ this.spinner.block();
181
+ this.errorHandler.clear();
182
+
183
+ if (this.formValid && this.cardValid) {
184
+ const save_card = this.defaultConfig.save_card ? true : false;
185
+ const vault = document.getElementById('ppcp-credit-card-vault') ?
186
+ document.getElementById('ppcp-credit-card-vault').checked : save_card;
187
+ const contingency = this.defaultConfig.hosted_fields.contingency;
188
+ const hostedFieldsData = {
189
+ vault: vault
190
+ };
191
+ if (contingency !== 'NO_3D_SECURE') {
192
+ hostedFieldsData.contingencies = [contingency];
193
+ }
194
+ this.currentHostedFieldsInstance.submit(hostedFieldsData).then((payload) => {
195
+ payload.orderID = payload.orderId;
196
+ this.spinner.unblock();
197
+ return contextConfig.onApprove(payload);
198
+ }).catch(err => {
199
+ console.error(err);
200
+ this.spinner.unblock();
201
+ });
202
+ } else {
203
+ this.spinner.unblock();
204
+ const message = ! this.cardValid ? this.defaultConfig.hosted_fields.labels.card_not_supported : this.defaultConfig.hosted_fields.labels.fields_not_valid;
205
+ this.errorHandler.message(message);
206
+ }
207
+ }
208
  }
209
  export default CreditCardRenderer;
modules/ppcp-button/resources/js/modules/Renderer/Renderer.js CHANGED
@@ -43,6 +43,14 @@ class Renderer {
43
  domElement.style.display = 'block';
44
  return true;
45
  }
 
 
 
 
 
 
 
 
46
  }
47
 
48
- export default Renderer;
43
  domElement.style.display = 'block';
44
  return true;
45
  }
46
+
47
+ disableCreditCardFields() {
48
+ this.creditCardRenderer.disableFields();
49
+ }
50
+
51
+ enableCreditCardFields() {
52
+ this.creditCardRenderer.enableFields();
53
+ }
54
  }
55
 
56
+ export default Renderer;
modules/ppcp-button/services.php CHANGED
@@ -67,7 +67,7 @@ return array(
67
  $subscription_helper = $container->get( 'subscription.helper' );
68
  $messages_apply = $container->get( 'button.helper.messages-apply' );
69
  $environment = $container->get( 'onboarding.environment' );
70
- $payment_token_repository = $container->get( 'subscription.repository.payment-token' );
71
  $settings_status = $container->get( 'wcgateway.settings.status' );
72
  return new SmartButton(
73
  $container->get( 'button.url' ),
@@ -102,7 +102,8 @@ return array(
102
  $request_data = $container->get( 'button.request-data' );
103
  $repository = $container->get( 'api.repository.cart' );
104
  $data_store = \WC_Data_Store::load( 'product' );
105
- return new ChangeCartEndpoint( $cart, $shipping, $request_data, $repository, $data_store );
 
106
  },
107
  'button.endpoint.create-order' => static function ( $container ): CreateOrderEndpoint {
108
  $request_data = $container->get( 'button.request-data' );
@@ -113,6 +114,7 @@ return array(
113
  $session_handler = $container->get( 'session.handler' );
114
  $settings = $container->get( 'wcgateway.settings' );
115
  $early_order_handler = $container->get( 'button.helper.early-order-handler' );
 
116
  return new CreateOrderEndpoint(
117
  $request_data,
118
  $cart_repository,
@@ -121,7 +123,8 @@ return array(
121
  $payer_factory,
122
  $session_handler,
123
  $settings,
124
- $early_order_handler
 
125
  );
126
  },
127
  'button.helper.early-order-handler' => static function ( $container ) : EarlyOrderHandler {
@@ -153,13 +156,16 @@ return array(
153
  'button.endpoint.data-client-id' => static function( $container ) : DataClientIdEndpoint {
154
  $request_data = $container->get( 'button.request-data' );
155
  $identity_token = $container->get( 'api.endpoint.identity-token' );
 
156
  return new DataClientIdEndpoint(
157
  $request_data,
158
- $identity_token
 
159
  );
160
  },
161
  'button.helper.three-d-secure' => static function ( $container ): ThreeDSecure {
162
- return new ThreeDSecure();
 
163
  },
164
  'button.helper.messages-apply' => static function ( $container ): MessagesApply {
165
  return new MessagesApply();
67
  $subscription_helper = $container->get( 'subscription.helper' );
68
  $messages_apply = $container->get( 'button.helper.messages-apply' );
69
  $environment = $container->get( 'onboarding.environment' );
70
+ $payment_token_repository = $container->get( 'vaulting.repository.payment-token' );
71
  $settings_status = $container->get( 'wcgateway.settings.status' );
72
  return new SmartButton(
73
  $container->get( 'button.url' ),
102
  $request_data = $container->get( 'button.request-data' );
103
  $repository = $container->get( 'api.repository.cart' );
104
  $data_store = \WC_Data_Store::load( 'product' );
105
+ $logger = $container->get( 'woocommerce.logger.woocommerce' );
106
+ return new ChangeCartEndpoint( $cart, $shipping, $request_data, $repository, $data_store, $logger );
107
  },
108
  'button.endpoint.create-order' => static function ( $container ): CreateOrderEndpoint {
109
  $request_data = $container->get( 'button.request-data' );
114
  $session_handler = $container->get( 'session.handler' );
115
  $settings = $container->get( 'wcgateway.settings' );
116
  $early_order_handler = $container->get( 'button.helper.early-order-handler' );
117
+ $logger = $container->get( 'woocommerce.logger.woocommerce' );
118
  return new CreateOrderEndpoint(
119
  $request_data,
120
  $cart_repository,
123
  $payer_factory,
124
  $session_handler,
125
  $settings,
126
+ $early_order_handler,
127
+ $logger
128
  );
129
  },
130
  'button.helper.early-order-handler' => static function ( $container ) : EarlyOrderHandler {
156
  'button.endpoint.data-client-id' => static function( $container ) : DataClientIdEndpoint {
157
  $request_data = $container->get( 'button.request-data' );
158
  $identity_token = $container->get( 'api.endpoint.identity-token' );
159
+ $logger = $container->get( 'woocommerce.logger.woocommerce' );
160
  return new DataClientIdEndpoint(
161
  $request_data,
162
+ $identity_token,
163
+ $logger
164
  );
165
  },
166
  'button.helper.three-d-secure' => static function ( $container ): ThreeDSecure {
167
+ $logger = $container->get( 'woocommerce.logger.woocommerce' );
168
+ return new ThreeDSecure( $logger );
169
  },
170
  'button.helper.messages-apply' => static function ( $container ): MessagesApply {
171
  return new MessagesApply();
modules/ppcp-button/src/Assets/class-smartbutton.php CHANGED
@@ -20,7 +20,7 @@ use WooCommerce\PayPalCommerce\Button\Helper\MessagesApply;
20
  use WooCommerce\PayPalCommerce\Onboarding\Environment;
21
  use WooCommerce\PayPalCommerce\Session\SessionHandler;
22
  use WooCommerce\PayPalCommerce\Subscription\Helper\SubscriptionHelper;
23
- use WooCommerce\PayPalCommerce\Subscription\Repository\PaymentTokenRepository;
24
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
25
  use Woocommerce\PayPalCommerce\WcGateway\Helper\SettingsStatus;
26
  use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
@@ -601,6 +601,19 @@ class SmartButton implements SmartButtonInterface {
601
  return $this->subscription_helper->cart_contains_subscription();
602
  }
603
 
 
 
 
 
 
 
 
 
 
 
 
 
 
604
  /**
605
  * The localized data for the smart button.
606
  *
@@ -677,6 +690,7 @@ class SmartButton implements SmartButtonInterface {
677
  ),
678
  ),
679
  'valid_cards' => $this->dcc_applies->valid_cards(),
 
680
  ),
681
  'messages' => $this->message_values(),
682
  'labels' => array(
@@ -729,8 +743,7 @@ class SmartButton implements SmartButtonInterface {
729
  'currency' => get_woocommerce_currency(),
730
  'integration-date' => PAYPAL_INTEGRATION_DATE,
731
  'components' => implode( ',', $this->components() ),
732
- 'vault' => $this->can_save_vault_token() ?
733
- 'true' : 'false',
734
  'commit' => is_checkout() ? 'true' : 'false',
735
  'intent' => ( $this->settings->has( 'intent' ) ) ?
736
  $this->settings->get( 'intent' ) : 'capture',
@@ -743,11 +756,20 @@ class SmartButton implements SmartButtonInterface {
743
  ) {
744
  $params['buyer-country'] = WC()->customer->get_billing_country();
745
  }
746
- $disable_funding = $this->settings->has( 'disable_funding' ) ?
747
- $this->settings->get( 'disable_funding' ) : array();
 
 
 
748
  if ( ! is_checkout() ) {
749
  $disable_funding[] = 'card';
750
  }
 
 
 
 
 
 
751
 
752
  if ( count( $disable_funding ) > 0 ) {
753
  $params['disable-funding'] = implode( ',', array_unique( $disable_funding ) );
20
  use WooCommerce\PayPalCommerce\Onboarding\Environment;
21
  use WooCommerce\PayPalCommerce\Session\SessionHandler;
22
  use WooCommerce\PayPalCommerce\Subscription\Helper\SubscriptionHelper;
23
+ use WooCommerce\PayPalCommerce\Vaulting\PaymentTokenRepository;
24
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
25
  use Woocommerce\PayPalCommerce\WcGateway\Helper\SettingsStatus;
26
  use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
601
  return $this->subscription_helper->cart_contains_subscription();
602
  }
603
 
604
+ /**
605
+ * Retrieves the 3D Secure contingency settings.
606
+ *
607
+ * @return string
608
+ */
609
+ private function get_3ds_contingency(): string {
610
+ if ( $this->settings->has( '3d_secure_contingency' ) ) {
611
+ return $this->settings->get( '3d_secure_contingency' );
612
+ }
613
+
614
+ return 'SCA_WHEN_REQUIRED';
615
+ }
616
+
617
  /**
618
  * The localized data for the smart button.
619
  *
690
  ),
691
  ),
692
  'valid_cards' => $this->dcc_applies->valid_cards(),
693
+ 'contingency' => $this->get_3ds_contingency(),
694
  ),
695
  'messages' => $this->message_values(),
696
  'labels' => array(
743
  'currency' => get_woocommerce_currency(),
744
  'integration-date' => PAYPAL_INTEGRATION_DATE,
745
  'components' => implode( ',', $this->components() ),
746
+ 'vault' => $this->can_save_vault_token() ? 'true' : 'false',
 
747
  'commit' => is_checkout() ? 'true' : 'false',
748
  'intent' => ( $this->settings->has( 'intent' ) ) ?
749
  $this->settings->get( 'intent' ) : 'capture',
756
  ) {
757
  $params['buyer-country'] = WC()->customer->get_billing_country();
758
  }
759
+
760
+ $disable_funding = $this->settings->has( 'disable_funding' )
761
+ ? $this->settings->get( 'disable_funding' )
762
+ : array();
763
+
764
  if ( ! is_checkout() ) {
765
  $disable_funding[] = 'card';
766
  }
767
+ if ( is_checkout() && $this->settings->has( 'dcc_enabled' ) && $this->settings->get( 'dcc_enabled' ) ) {
768
+ $key = array_search( 'card', $disable_funding, true );
769
+ if ( false !== $key ) {
770
+ unset( $disable_funding[ $key ] );
771
+ }
772
+ }
773
 
774
  if ( count( $disable_funding ) > 0 ) {
775
  $params['disable-funding'] = implode( ',', array_unique( $disable_funding ) );
modules/ppcp-button/src/Endpoint/class-approveorderendpoint.php CHANGED
@@ -10,6 +10,7 @@ declare(strict_types=1);
10
 
11
  namespace WooCommerce\PayPalCommerce\Button\Endpoint;
12
 
 
13
  use Psr\Log\LoggerInterface;
14
  use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
15
  use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
@@ -195,7 +196,9 @@ class ApproveOrderEndpoint implements EndpointInterface {
195
  $this->session_handler->replace_order( $order );
196
  wp_send_json_success( $order );
197
  return true;
198
- } catch ( \RuntimeException $error ) {
 
 
199
  wp_send_json_error(
200
  array(
201
  'name' => is_a( $error, PayPalApiException::class ) ? $error->name() : '',
10
 
11
  namespace WooCommerce\PayPalCommerce\Button\Endpoint;
12
 
13
+ use Exception;
14
  use Psr\Log\LoggerInterface;
15
  use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
16
  use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
196
  $this->session_handler->replace_order( $order );
197
  wp_send_json_success( $order );
198
  return true;
199
+ } catch ( Exception $error ) {
200
+ $this->logger->error( 'Order approve failed: ' . $error->getMessage() );
201
+
202
  wp_send_json_error(
203
  array(
204
  'name' => is_a( $error, PayPalApiException::class ) ? $error->name() : '',
modules/ppcp-button/src/Endpoint/class-changecartendpoint.php CHANGED
@@ -9,6 +9,8 @@ declare(strict_types=1);
9
 
10
  namespace WooCommerce\PayPalCommerce\Button\Endpoint;
11
 
 
 
12
  use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
13
  use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
14
  use WooCommerce\PayPalCommerce\ApiClient\Repository\CartRepository;
@@ -57,21 +59,30 @@ class ChangeCartEndpoint implements EndpointInterface {
57
  */
58
  private $product_data_store;
59
 
 
 
 
 
 
 
 
60
  /**
61
  * ChangeCartEndpoint constructor.
62
  *
63
- * @param \WC_Cart $cart The current WC cart object.
64
- * @param \WC_Shipping $shipping The current WC shipping object.
65
- * @param RequestData $request_data The request data helper.
66
- * @param CartRepository $repository The repository for the current purchase items.
67
- * @param \WC_Data_Store $product_data_store The data store for products.
 
68
  */
69
  public function __construct(
70
  \WC_Cart $cart,
71
  \WC_Shipping $shipping,
72
  RequestData $request_data,
73
  CartRepository $repository,
74
- \WC_Data_Store $product_data_store
 
75
  ) {
76
 
77
  $this->cart = $cart;
@@ -79,6 +90,7 @@ class ChangeCartEndpoint implements EndpointInterface {
79
  $this->request_data = $request_data;
80
  $this->repository = $repository;
81
  $this->product_data_store = $product_data_store;
 
82
  }
83
 
84
  /**
@@ -94,12 +106,13 @@ class ChangeCartEndpoint implements EndpointInterface {
94
  * Handles the request.
95
  *
96
  * @return bool
97
- * @throws \Exception On error.
98
  */
99
  public function handle_request(): bool {
100
  try {
101
  return $this->handle_data();
102
- } catch ( RuntimeException $error ) {
 
 
103
  wp_send_json_error(
104
  array(
105
  'name' => is_a( $error, PayPalApiException::class ) ? $error->name() : '',
@@ -116,7 +129,7 @@ class ChangeCartEndpoint implements EndpointInterface {
116
  * Handles the request data.
117
  *
118
  * @return bool
119
- * @throws \Exception On error.
120
  */
121
  private function handle_data(): bool {
122
  $data = $this->request_data->read_request( $this->nonce() );
@@ -234,7 +247,7 @@ class ChangeCartEndpoint implements EndpointInterface {
234
  * @param int $quantity The Quantity.
235
  *
236
  * @return bool
237
- * @throws \Exception When product could not be added.
238
  */
239
  private function add_product( \WC_Product $product, int $quantity ): bool {
240
  return false !== $this->cart->add_to_cart( $product->get_id(), $quantity );
@@ -249,7 +262,7 @@ class ChangeCartEndpoint implements EndpointInterface {
249
  * @param array $post_variations The variations.
250
  *
251
  * @return bool
252
- * @throws \Exception When product could not be added.
253
  */
254
  private function add_variable_product(
255
  \WC_Product $product,
9
 
10
  namespace WooCommerce\PayPalCommerce\Button\Endpoint;
11
 
12
+ use Exception;
13
+ use Psr\Log\LoggerInterface;
14
  use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
15
  use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
16
  use WooCommerce\PayPalCommerce\ApiClient\Repository\CartRepository;
59
  */
60
  private $product_data_store;
61
 
62
+ /**
63
+ * The logger.
64
+ *
65
+ * @var LoggerInterface
66
+ */
67
+ protected $logger;
68
+
69
  /**
70
  * ChangeCartEndpoint constructor.
71
  *
72
+ * @param \WC_Cart $cart The current WC cart object.
73
+ * @param \WC_Shipping $shipping The current WC shipping object.
74
+ * @param RequestData $request_data The request data helper.
75
+ * @param CartRepository $repository The repository for the current purchase items.
76
+ * @param \WC_Data_Store $product_data_store The data store for products.
77
+ * @param LoggerInterface $logger The logger.
78
  */
79
  public function __construct(
80
  \WC_Cart $cart,
81
  \WC_Shipping $shipping,
82
  RequestData $request_data,
83
  CartRepository $repository,
84
+ \WC_Data_Store $product_data_store,
85
+ LoggerInterface $logger
86
  ) {
87
 
88
  $this->cart = $cart;
90
  $this->request_data = $request_data;
91
  $this->repository = $repository;
92
  $this->product_data_store = $product_data_store;
93
+ $this->logger = $logger;
94
  }
95
 
96
  /**
106
  * Handles the request.
107
  *
108
  * @return bool
 
109
  */
110
  public function handle_request(): bool {
111
  try {
112
  return $this->handle_data();
113
+ } catch ( Exception $error ) {
114
+ $this->logger->error( 'Cart updating failed: ' . $error->getMessage() );
115
+
116
  wp_send_json_error(
117
  array(
118
  'name' => is_a( $error, PayPalApiException::class ) ? $error->name() : '',
129
  * Handles the request data.
130
  *
131
  * @return bool
132
+ * @throws Exception On error.
133
  */
134
  private function handle_data(): bool {
135
  $data = $this->request_data->read_request( $this->nonce() );
247
  * @param int $quantity The Quantity.
248
  *
249
  * @return bool
250
+ * @throws Exception When product could not be added.
251
  */
252
  private function add_product( \WC_Product $product, int $quantity ): bool {
253
  return false !== $this->cart->add_to_cart( $product->get_id(), $quantity );
262
  * @param array $post_variations The variations.
263
  *
264
  * @return bool
265
+ * @throws Exception When product could not be added.
266
  */
267
  private function add_variable_product(
268
  \WC_Product $product,
modules/ppcp-button/src/Endpoint/class-createorderendpoint.php CHANGED
@@ -9,6 +9,8 @@ declare(strict_types=1);
9
 
10
  namespace WooCommerce\PayPalCommerce\Button\Endpoint;
11
 
 
 
12
  use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
13
  use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
14
  use WooCommerce\PayPalCommerce\ApiClient\Entity\Payer;
@@ -102,6 +104,13 @@ class CreateOrderEndpoint implements EndpointInterface {
102
  */
103
  private $purchase_units;
104
 
 
 
 
 
 
 
 
105
  /**
106
  * CreateOrderEndpoint constructor.
107
  *
@@ -113,6 +122,7 @@ class CreateOrderEndpoint implements EndpointInterface {
113
  * @param SessionHandler $session_handler The SessionHandler object.
114
  * @param Settings $settings The Settings object.
115
  * @param EarlyOrderHandler $early_order_handler The EarlyOrderHandler object.
 
116
  */
117
  public function __construct(
118
  RequestData $request_data,
@@ -122,7 +132,8 @@ class CreateOrderEndpoint implements EndpointInterface {
122
  PayerFactory $payer_factory,
123
  SessionHandler $session_handler,
124
  Settings $settings,
125
- EarlyOrderHandler $early_order_handler
 
126
  ) {
127
 
128
  $this->request_data = $request_data;
@@ -133,6 +144,7 @@ class CreateOrderEndpoint implements EndpointInterface {
133
  $this->session_handler = $session_handler;
134
  $this->settings = $settings;
135
  $this->early_order_handler = $early_order_handler;
 
136
  }
137
 
138
  /**
@@ -190,6 +202,8 @@ class CreateOrderEndpoint implements EndpointInterface {
190
  wp_send_json_success( $order->to_array() );
191
  return true;
192
  } catch ( \RuntimeException $error ) {
 
 
193
  wp_send_json_error(
194
  array(
195
  'name' => is_a( $error, PayPalApiException::class ) ? $error->name() : '',
@@ -198,7 +212,9 @@ class CreateOrderEndpoint implements EndpointInterface {
198
  'details' => is_a( $error, PayPalApiException::class ) ? $error->details() : array(),
199
  )
200
  );
201
- } catch ( \Exception $exception ) {
 
 
202
  wc_add_notice( $exception->getMessage(), 'error' );
203
  }
204
 
@@ -212,11 +228,16 @@ class CreateOrderEndpoint implements EndpointInterface {
212
  * @param \WP_Error $errors The errors, which occurred.
213
  *
214
  * @return array
 
215
  */
216
  public function after_checkout_validation( array $data, \WP_Error $errors ): array {
217
  if ( ! $errors->errors ) {
218
-
219
- $order = $this->create_paypal_order();
 
 
 
 
220
 
221
  /**
222
  * In case we are onboarded and everything is fine with the \WC_Order
@@ -231,6 +252,8 @@ class CreateOrderEndpoint implements EndpointInterface {
231
  return $data;
232
  }
233
 
 
 
234
  wp_send_json_error(
235
  array(
236
  'name' => '',
@@ -336,7 +359,7 @@ class CreateOrderEndpoint implements EndpointInterface {
336
  *
337
  * @param string $form_values The values of the form.
338
  *
339
- * @throws \Exception On Error.
340
  */
341
  private function process_checkout_form( string $form_values ) {
342
  $form_values = explode( '&', $form_values );
@@ -386,7 +409,7 @@ class CreateOrderEndpoint implements EndpointInterface {
386
  *
387
  * @param string $form_values The values of the form.
388
  * @param \WC_Order|null $wc_order WC order to get data from.
389
- * @throws \Exception On Error.
390
  */
391
  private function process_checkout_form_when_creating_account( string $form_values, \WC_Order $wc_order = null ) {
392
  $form_values = explode( '&', $form_values );
@@ -406,7 +429,12 @@ class CreateOrderEndpoint implements EndpointInterface {
406
  'woocommerce_after_checkout_validation',
407
  function ( array $data, \WP_Error $errors ) use ( $wc_order ) {
408
  if ( ! $errors->errors ) {
409
- $order = $this->create_paypal_order( $wc_order );
 
 
 
 
 
410
  wp_send_json_success( $order->to_array() );
411
  return true;
412
  }
9
 
10
  namespace WooCommerce\PayPalCommerce\Button\Endpoint;
11
 
12
+ use Exception;
13
+ use Psr\Log\LoggerInterface;
14
  use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
15
  use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
16
  use WooCommerce\PayPalCommerce\ApiClient\Entity\Payer;
104
  */
105
  private $purchase_units;
106
 
107
+ /**
108
+ * The logger.
109
+ *
110
+ * @var LoggerInterface
111
+ */
112
+ protected $logger;
113
+
114
  /**
115
  * CreateOrderEndpoint constructor.
116
  *
122
  * @param SessionHandler $session_handler The SessionHandler object.
123
  * @param Settings $settings The Settings object.
124
  * @param EarlyOrderHandler $early_order_handler The EarlyOrderHandler object.
125
+ * @param LoggerInterface $logger The logger.
126
  */
127
  public function __construct(
128
  RequestData $request_data,
132
  PayerFactory $payer_factory,
133
  SessionHandler $session_handler,
134
  Settings $settings,
135
+ EarlyOrderHandler $early_order_handler,
136
+ LoggerInterface $logger
137
  ) {
138
 
139
  $this->request_data = $request_data;
144
  $this->session_handler = $session_handler;
145
  $this->settings = $settings;
146
  $this->early_order_handler = $early_order_handler;
147
+ $this->logger = $logger;
148
  }
149
 
150
  /**
202
  wp_send_json_success( $order->to_array() );
203
  return true;
204
  } catch ( \RuntimeException $error ) {
205
+ $this->logger->error( 'Order creation failed: ' . $error->getMessage() );
206
+
207
  wp_send_json_error(
208
  array(
209
  'name' => is_a( $error, PayPalApiException::class ) ? $error->name() : '',
212
  'details' => is_a( $error, PayPalApiException::class ) ? $error->details() : array(),
213
  )
214
  );
215
+ } catch ( Exception $exception ) {
216
+ $this->logger->error( 'Order creation failed: ' . $exception->getMessage() );
217
+
218
  wc_add_notice( $exception->getMessage(), 'error' );
219
  }
220
 
228
  * @param \WP_Error $errors The errors, which occurred.
229
  *
230
  * @return array
231
+ * @throws Exception On Error.
232
  */
233
  public function after_checkout_validation( array $data, \WP_Error $errors ): array {
234
  if ( ! $errors->errors ) {
235
+ try {
236
+ $order = $this->create_paypal_order();
237
+ } catch ( Exception $exception ) {
238
+ $this->logger->error( 'Order creation failed: ' . $exception->getMessage() );
239
+ throw $exception;
240
+ }
241
 
242
  /**
243
  * In case we are onboarded and everything is fine with the \WC_Order
252
  return $data;
253
  }
254
 
255
+ $this->logger->error( 'Checkout validation failed: ' . $errors->get_error_message() );
256
+
257
  wp_send_json_error(
258
  array(
259
  'name' => '',
359
  *
360
  * @param string $form_values The values of the form.
361
  *
362
+ * @throws Exception On Error.
363
  */
364
  private function process_checkout_form( string $form_values ) {
365
  $form_values = explode( '&', $form_values );
409
  *
410
  * @param string $form_values The values of the form.
411
  * @param \WC_Order|null $wc_order WC order to get data from.
412
+ * @throws Exception On Error.
413
  */
414
  private function process_checkout_form_when_creating_account( string $form_values, \WC_Order $wc_order = null ) {
415
  $form_values = explode( '&', $form_values );
429
  'woocommerce_after_checkout_validation',
430
  function ( array $data, \WP_Error $errors ) use ( $wc_order ) {
431
  if ( ! $errors->errors ) {
432
+ try {
433
+ $order = $this->create_paypal_order( $wc_order );
434
+ } catch ( Exception $exception ) {
435
+ $this->logger->error( 'Order creation failed: ' . $exception->getMessage() );
436
+ throw $exception;
437
+ }
438
  wp_send_json_success( $order->to_array() );
439
  return true;
440
  }
modules/ppcp-button/src/Endpoint/class-dataclientidendpoint.php CHANGED
@@ -9,6 +9,8 @@ declare(strict_types=1);
9
 
10
  namespace WooCommerce\PayPalCommerce\Button\Endpoint;
11
 
 
 
12
  use WooCommerce\PayPalCommerce\ApiClient\Endpoint\IdentityToken;
13
  use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
14
  use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
@@ -35,19 +37,29 @@ class DataClientIdEndpoint implements EndpointInterface {
35
  */
36
  private $identity_token;
37
 
 
 
 
 
 
 
 
38
  /**
39
  * DataClientIdEndpoint constructor.
40
  *
41
- * @param RequestData $request_data The Request Data Helper.
42
- * @param IdentityToken $identity_token The Identity Token.
 
43
  */
44
  public function __construct(
45
  RequestData $request_data,
46
- IdentityToken $identity_token
 
47
  ) {
48
 
49
  $this->request_data = $request_data;
50
  $this->identity_token = $identity_token;
 
51
  }
52
 
53
  /**
@@ -77,7 +89,9 @@ class DataClientIdEndpoint implements EndpointInterface {
77
  )
78
  );
79
  return true;
80
- } catch ( RuntimeException $error ) {
 
 
81
  wp_send_json_error(
82
  array(
83
  'name' => is_a( $error, PayPalApiException::class ) ? $error->name() : '',
9
 
10
  namespace WooCommerce\PayPalCommerce\Button\Endpoint;
11
 
12
+ use Exception;
13
+ use Psr\Log\LoggerInterface;
14
  use WooCommerce\PayPalCommerce\ApiClient\Endpoint\IdentityToken;
15
  use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
16
  use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
37
  */
38
  private $identity_token;
39
 
40
+ /**
41
+ * The logger.
42
+ *
43
+ * @var LoggerInterface
44
+ */
45
+ protected $logger;
46
+
47
  /**
48
  * DataClientIdEndpoint constructor.
49
  *
50
+ * @param RequestData $request_data The Request Data Helper.
51
+ * @param IdentityToken $identity_token The Identity Token.
52
+ * @param LoggerInterface $logger The logger.
53
  */
54
  public function __construct(
55
  RequestData $request_data,
56
+ IdentityToken $identity_token,
57
+ LoggerInterface $logger
58
  ) {
59
 
60
  $this->request_data = $request_data;
61
  $this->identity_token = $identity_token;
62
+ $this->logger = $logger;
63
  }
64
 
65
  /**
89
  )
90
  );
91
  return true;
92
+ } catch ( Exception $error ) {
93
+ $this->logger->error( 'Client ID retrieval failed: ' . $error->getMessage() );
94
+
95
  wp_send_json_error(
96
  array(
97
  'name' => is_a( $error, PayPalApiException::class ) ? $error->name() : '',
modules/ppcp-button/src/Helper/class-threedsecure.php CHANGED
@@ -9,6 +9,7 @@ declare(strict_types=1);
9
 
10
  namespace WooCommerce\PayPalCommerce\Button\Helper;
11
 
 
12
  use WooCommerce\PayPalCommerce\ApiClient\Entity\CardAuthenticationResult as AuthResult;
13
  use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
14
 
@@ -17,12 +18,27 @@ use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
17
  */
18
  class ThreeDSecure {
19
 
20
-
21
  const NO_DECISION = 0;
22
  const PROCCEED = 1;
23
  const REJECT = 2;
24
  const RETRY = 3;
25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  /**
27
  * Determine, how we proceed with a given order.
28
  *
@@ -42,7 +58,10 @@ class ThreeDSecure {
42
  if ( ! $order->payment_source()->card()->authentication_result() ) {
43
  return self::NO_DECISION;
44
  }
 
45
  $result = $order->payment_source()->card()->authentication_result();
 
 
46
  if ( $result->liability_shift() === AuthResult::LIABILITY_SHIFT_POSSIBLE ) {
47
  return self::PROCCEED;
48
  }
9
 
10
  namespace WooCommerce\PayPalCommerce\Button\Helper;
11
 
12
+ use Psr\Log\LoggerInterface;
13
  use WooCommerce\PayPalCommerce\ApiClient\Entity\CardAuthenticationResult as AuthResult;
14
  use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
15
 
18
  */
19
  class ThreeDSecure {
20
 
 
21
  const NO_DECISION = 0;
22
  const PROCCEED = 1;
23
  const REJECT = 2;
24
  const RETRY = 3;
25
 
26
+ /**
27
+ * The logger.
28
+ *
29
+ * @var LoggerInterface
30
+ */
31
+ protected $logger;
32
+
33
+ /**
34
+ * ThreeDSecure constructor.
35
+ *
36
+ * @param LoggerInterface $logger The logger.
37
+ */
38
+ public function __construct( LoggerInterface $logger ) {
39
+ $this->logger = $logger;
40
+ }
41
+
42
  /**
43
  * Determine, how we proceed with a given order.
44
  *
58
  if ( ! $order->payment_source()->card()->authentication_result() ) {
59
  return self::NO_DECISION;
60
  }
61
+
62
  $result = $order->payment_source()->card()->authentication_result();
63
+ $this->logger->info( '3DS authentication result: ' . wc_print_r( $result->to_array(), true ) );
64
+
65
  if ( $result->liability_shift() === AuthResult::LIABILITY_SHIFT_POSSIBLE ) {
66
  return self::PROCCEED;
67
  }
modules/ppcp-onboarding/services.php CHANGED
@@ -169,6 +169,7 @@ return array(
169
  $login_seller_sandbox = $container->get( 'api.endpoint.login-seller-sandbox' );
170
  $partner_referrals_data = $container->get( 'api.repository.partner-referrals-data' );
171
  $settings = $container->get( 'wcgateway.settings' );
 
172
 
173
  $cache = new Cache( 'ppcp-paypal-bearer' );
174
  return new LoginSellerEndpoint(
@@ -177,7 +178,8 @@ return array(
177
  $login_seller_sandbox,
178
  $partner_referrals_data,
179
  $settings,
180
- $cache
 
181
  );
182
  },
183
  'api.endpoint.partner-referrals-sandbox' => static function ( $container ) : PartnerReferrals {
169
  $login_seller_sandbox = $container->get( 'api.endpoint.login-seller-sandbox' );
170
  $partner_referrals_data = $container->get( 'api.repository.partner-referrals-data' );
171
  $settings = $container->get( 'wcgateway.settings' );
172
+ $logger = $container->get( 'woocommerce.logger.woocommerce' );
173
 
174
  $cache = new Cache( 'ppcp-paypal-bearer' );
175
  return new LoginSellerEndpoint(
178
  $login_seller_sandbox,
179
  $partner_referrals_data,
180
  $settings,
181
+ $cache,
182
+ $logger
183
  );
184
  },
185
  'api.endpoint.partner-referrals-sandbox' => static function ( $container ) : PartnerReferrals {
modules/ppcp-onboarding/src/Endpoint/class-loginsellerendpoint.php CHANGED
@@ -9,6 +9,8 @@ declare(strict_types=1);
9
 
10
  namespace WooCommerce\PayPalCommerce\Onboarding\Endpoint;
11
 
 
 
12
  use WooCommerce\PayPalCommerce\ApiClient\Authentication\PayPalBearer;
13
  use WooCommerce\PayPalCommerce\ApiClient\Endpoint\LoginSeller;
14
  use WooCommerce\PayPalCommerce\ApiClient\Helper\Cache;
@@ -67,6 +69,13 @@ class LoginSellerEndpoint implements EndpointInterface {
67
  */
68
  private $cache;
69
 
 
 
 
 
 
 
 
70
  /**
71
  * LoginSellerEndpoint constructor.
72
  *
@@ -76,6 +85,7 @@ class LoginSellerEndpoint implements EndpointInterface {
76
  * @param PartnerReferralsData $partner_referrals_data The Partner Referrals Data.
77
  * @param Settings $settings The Settings.
78
  * @param Cache $cache The Cache.
 
79
  */
80
  public function __construct(
81
  RequestData $request_data,
@@ -83,7 +93,8 @@ class LoginSellerEndpoint implements EndpointInterface {
83
  LoginSeller $login_seller_sandbox,
84
  PartnerReferralsData $partner_referrals_data,
85
  Settings $settings,
86
- Cache $cache
 
87
  ) {
88
 
89
  $this->request_data = $request_data;
@@ -92,6 +103,7 @@ class LoginSellerEndpoint implements EndpointInterface {
92
  $this->partner_referrals_data = $partner_referrals_data;
93
  $this->settings = $settings;
94
  $this->cache = $cache;
 
95
  }
96
 
97
  /**
@@ -136,12 +148,13 @@ class LoginSellerEndpoint implements EndpointInterface {
136
  $this->cache->delete( PayPalBearer::CACHE_KEY );
137
  }
138
  wp_schedule_single_event(
139
- time() - 1,
140
  WebhookRegistrar::EVENT_HOOK
141
  );
142
  wp_send_json_success();
143
  return true;
144
- } catch ( \RuntimeException $error ) {
 
145
  wp_send_json_error( $error->getMessage() );
146
  return false;
147
  }
9
 
10
  namespace WooCommerce\PayPalCommerce\Onboarding\Endpoint;
11
 
12
+ use Exception;
13
+ use Psr\Log\LoggerInterface;
14
  use WooCommerce\PayPalCommerce\ApiClient\Authentication\PayPalBearer;
15
  use WooCommerce\PayPalCommerce\ApiClient\Endpoint\LoginSeller;
16
  use WooCommerce\PayPalCommerce\ApiClient\Helper\Cache;
69
  */
70
  private $cache;
71
 
72
+ /**
73
+ * The logger.
74
+ *
75
+ * @var LoggerInterface
76
+ */
77
+ protected $logger;
78
+
79
  /**
80
  * LoginSellerEndpoint constructor.
81
  *
85
  * @param PartnerReferralsData $partner_referrals_data The Partner Referrals Data.
86
  * @param Settings $settings The Settings.
87
  * @param Cache $cache The Cache.
88
+ * @param LoggerInterface $logger The logger.
89
  */
90
  public function __construct(
91
  RequestData $request_data,
93
  LoginSeller $login_seller_sandbox,
94
  PartnerReferralsData $partner_referrals_data,
95
  Settings $settings,
96
+ Cache $cache,
97
+ LoggerInterface $logger
98
  ) {
99
 
100
  $this->request_data = $request_data;
103
  $this->partner_referrals_data = $partner_referrals_data;
104
  $this->settings = $settings;
105
  $this->cache = $cache;
106
+ $this->logger = $logger;
107
  }
108
 
109
  /**
148
  $this->cache->delete( PayPalBearer::CACHE_KEY );
149
  }
150
  wp_schedule_single_event(
151
+ time() + 5,
152
  WebhookRegistrar::EVENT_HOOK
153
  );
154
  wp_send_json_success();
155
  return true;
156
+ } catch ( Exception $error ) {
157
+ $this->logger->error( 'Onboarding completion handling error: ' . $error->getMessage() );
158
  wp_send_json_error( $error->getMessage() );
159
  return false;
160
  }
modules/ppcp-subscription/services.php CHANGED
@@ -10,16 +10,14 @@ declare(strict_types=1);
10
  namespace WooCommerce\PayPalCommerce\Subscription;
11
 
12
  use WooCommerce\PayPalCommerce\Subscription\Helper\SubscriptionHelper;
13
- use WooCommerce\PayPalCommerce\Subscription\Repository\PaymentTokenRepository;
14
- use Psr\Container\ContainerInterface;
15
 
16
  return array(
17
- 'subscription.helper' => static function ( $container ): SubscriptionHelper {
18
  return new SubscriptionHelper();
19
  },
20
- 'subscription.renewal-handler' => static function ( $container ): RenewalHandler {
21
  $logger = $container->get( 'woocommerce.logger.woocommerce' );
22
- $repository = $container->get( 'subscription.repository.payment-token' );
23
  $endpoint = $container->get( 'api.endpoint.order' );
24
  $purchase_unit_factory = $container->get( 'api.factory.purchase-unit' );
25
  $payer_factory = $container->get( 'api.factory.payer' );
@@ -31,9 +29,4 @@ return array(
31
  $payer_factory
32
  );
33
  },
34
- 'subscription.repository.payment-token' => static function ( $container ): PaymentTokenRepository {
35
- $factory = $container->get( 'api.factory.payment-token' );
36
- $endpoint = $container->get( 'api.endpoint.payment-token' );
37
- return new PaymentTokenRepository( $factory, $endpoint );
38
- },
39
  );
10
  namespace WooCommerce\PayPalCommerce\Subscription;
11
 
12
  use WooCommerce\PayPalCommerce\Subscription\Helper\SubscriptionHelper;
 
 
13
 
14
  return array(
15
+ 'subscription.helper' => static function ( $container ): SubscriptionHelper {
16
  return new SubscriptionHelper();
17
  },
18
+ 'subscription.renewal-handler' => static function ( $container ): RenewalHandler {
19
  $logger = $container->get( 'woocommerce.logger.woocommerce' );
20
+ $repository = $container->get( 'vaulting.repository.payment-token' );
21
  $endpoint = $container->get( 'api.endpoint.order' );
22
  $purchase_unit_factory = $container->get( 'api.factory.purchase-unit' );
23
  $payer_factory = $container->get( 'api.factory.payer' );
29
  $payer_factory
30
  );
31
  },
 
 
 
 
 
32
  );
modules/ppcp-subscription/src/class-renewalhandler.php CHANGED
@@ -15,7 +15,7 @@ use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
15
  use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentToken;
16
  use WooCommerce\PayPalCommerce\ApiClient\Factory\PayerFactory;
17
  use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
18
- use WooCommerce\PayPalCommerce\Subscription\Repository\PaymentTokenRepository;
19
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
20
  use Psr\Log\LoggerInterface;
21
 
15
  use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentToken;
16
  use WooCommerce\PayPalCommerce\ApiClient\Factory\PayerFactory;
17
  use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
18
+ use WooCommerce\PayPalCommerce\Vaulting\PaymentTokenRepository;
19
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
20
  use Psr\Log\LoggerInterface;
21
 
modules/ppcp-subscription/src/class-subscriptionmodule.php CHANGED
@@ -14,7 +14,7 @@ use Dhii\Modular\Module\ModuleInterface;
14
  use Psr\Log\LoggerInterface;
15
  use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
16
  use WooCommerce\PayPalCommerce\Subscription\Helper\SubscriptionHelper;
17
- use WooCommerce\PayPalCommerce\Subscription\Repository\PaymentTokenRepository;
18
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
19
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
20
  use Interop\Container\ServiceProviderInterface;
@@ -66,7 +66,7 @@ class SubscriptionModule implements ModuleInterface {
66
  add_action(
67
  'woocommerce_subscription_payment_complete',
68
  function ( $subscription ) use ( $container ) {
69
- $payment_token_repository = $container->get( 'subscription.repository.payment-token' );
70
  $logger = $container->get( 'woocommerce.logger.woocommerce' );
71
 
72
  $this->add_payment_token_id( $subscription, $payment_token_repository, $logger );
@@ -76,7 +76,7 @@ class SubscriptionModule implements ModuleInterface {
76
  add_filter(
77
  'woocommerce_gateway_description',
78
  function ( $description, $id ) use ( $container ) {
79
- $payment_token_repository = $container->get( 'subscription.repository.payment-token' );
80
  $settings = $container->get( 'wcgateway.settings' );
81
  $subscription_helper = $container->get( 'subscription.helper' );
82
 
@@ -89,7 +89,7 @@ class SubscriptionModule implements ModuleInterface {
89
  add_filter(
90
  'woocommerce_credit_card_form_fields',
91
  function ( $default_fields, $id ) use ( $container ) {
92
- $payment_token_repository = $container->get( 'subscription.repository.payment-token' );
93
  $settings = $container->get( 'wcgateway.settings' );
94
  $subscription_helper = $container->get( 'subscription.helper' );
95
 
14
  use Psr\Log\LoggerInterface;
15
  use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
16
  use WooCommerce\PayPalCommerce\Subscription\Helper\SubscriptionHelper;
17
+ use WooCommerce\PayPalCommerce\Vaulting\PaymentTokenRepository;
18
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
19
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
20
  use Interop\Container\ServiceProviderInterface;
66
  add_action(
67
  'woocommerce_subscription_payment_complete',
68
  function ( $subscription ) use ( $container ) {
69
+ $payment_token_repository = $container->get( 'vaulting.repository.payment-token' );
70
  $logger = $container->get( 'woocommerce.logger.woocommerce' );
71
 
72
  $this->add_payment_token_id( $subscription, $payment_token_repository, $logger );
76
  add_filter(
77
  'woocommerce_gateway_description',
78
  function ( $description, $id ) use ( $container ) {
79
+ $payment_token_repository = $container->get( 'vaulting.repository.payment-token' );
80
  $settings = $container->get( 'wcgateway.settings' );
81
  $subscription_helper = $container->get( 'subscription.helper' );
82
 
89
  add_filter(
90
  'woocommerce_credit_card_form_fields',
91
  function ( $default_fields, $id ) use ( $container ) {
92
+ $payment_token_repository = $container->get( 'vaulting.repository.payment-token' );
93
  $settings = $container->get( 'wcgateway.settings' );
94
  $subscription_helper = $container->get( 'subscription.helper' );
95
 
modules/ppcp-vaulting/assets/js/myaccount-payments.js ADDED
@@ -0,0 +1 @@
 
1
+ (()=>{var __webpack_modules__={864:function(){eval("document.addEventListener('DOMContentLoaded', () => {\n jQuery('.ppcp-delete-payment-button').click(async event => {\n event.preventDefault();\n jQuery(this).prop('disabled', true);\n const token = event.target.id;\n const response = await fetch(PayPalCommerceGatewayVaulting.delete.endpoint, {\n method: 'POST',\n headers: {\n 'content-type': 'application/json'\n },\n body: JSON.stringify({\n nonce: PayPalCommerceGatewayVaulting.delete.nonce,\n token\n })\n });\n\n const reportError = error => {\n alert(error);\n };\n\n if (!response.ok) {\n try {\n const result = await response.json();\n reportError(result.data);\n } catch (exc) {\n console.error(exc);\n reportError(response.status);\n }\n }\n\n window.location.reload();\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wcGNwLXZhdWx0aW5nLy4vcmVzb3VyY2VzL2pzL215YWNjb3VudC1wYXltZW50cy5qcz9hMGIzIl0sIm5hbWVzIjpbImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImpRdWVyeSIsImNsaWNrIiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsInByb3AiLCJ0b2tlbiIsInRhcmdldCIsImlkIiwicmVzcG9uc2UiLCJmZXRjaCIsIlBheVBhbENvbW1lcmNlR2F0ZXdheVZhdWx0aW5nIiwiZGVsZXRlIiwiZW5kcG9pbnQiLCJtZXRob2QiLCJoZWFkZXJzIiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJub25jZSIsInJlcG9ydEVycm9yIiwiZXJyb3IiLCJhbGVydCIsIm9rIiwicmVzdWx0IiwianNvbiIsImRhdGEiLCJleGMiLCJjb25zb2xlIiwic3RhdHVzIiwid2luZG93IiwibG9jYXRpb24iLCJyZWxvYWQiXSwibWFwcGluZ3MiOiJBQUFBQSxRQUFRLENBQUNDLGdCQUFULENBQ0ksa0JBREosRUFFSSxNQUFNO0FBQ0ZDLEVBQUFBLE1BQU0sQ0FBQyw2QkFBRCxDQUFOLENBQXNDQyxLQUF0QyxDQUE0QyxNQUFPQyxLQUFQLElBQWlCO0FBQ3pEQSxJQUFBQSxLQUFLLENBQUNDLGNBQU47QUFDQUgsSUFBQUEsTUFBTSxDQUFDLElBQUQsQ0FBTixDQUFhSSxJQUFiLENBQWtCLFVBQWxCLEVBQThCLElBQTlCO0FBQ0EsVUFBTUMsS0FBSyxHQUFHSCxLQUFLLENBQUNJLE1BQU4sQ0FBYUMsRUFBM0I7QUFFQSxVQUFNQyxRQUFRLEdBQUcsTUFBTUMsS0FBSyxDQUN4QkMsNkJBQTZCLENBQUNDLE1BQTlCLENBQXFDQyxRQURiLEVBRXhCO0FBQ0lDLE1BQUFBLE1BQU0sRUFBRSxNQURaO0FBRUlDLE1BQUFBLE9BQU8sRUFBRTtBQUNMLHdCQUFnQjtBQURYLE9BRmI7QUFLSUMsTUFBQUEsSUFBSSxFQUFFQyxJQUFJLENBQUNDLFNBQUwsQ0FDRjtBQUNJQyxRQUFBQSxLQUFLLEVBQUVSLDZCQUE2QixDQUFDQyxNQUE5QixDQUFxQ08sS0FEaEQ7QUFFSWIsUUFBQUE7QUFGSixPQURFO0FBTFYsS0FGd0IsQ0FBNUI7O0FBZ0JBLFVBQU1jLFdBQVcsR0FBR0MsS0FBSyxJQUFJO0FBQ3pCQyxNQUFBQSxLQUFLLENBQUNELEtBQUQsQ0FBTDtBQUNILEtBRkQ7O0FBSUEsUUFBSSxDQUFDWixRQUFRLENBQUNjLEVBQWQsRUFBa0I7QUFDZCxVQUFJO0FBQ0EsY0FBTUMsTUFBTSxHQUFHLE1BQU1mLFFBQVEsQ0FBQ2dCLElBQVQsRUFBckI7QUFDQUwsUUFBQUEsV0FBVyxDQUFDSSxNQUFNLENBQUNFLElBQVIsQ0FBWDtBQUNILE9BSEQsQ0FHRSxPQUFPQyxHQUFQLEVBQVk7QUFDVkMsUUFBQUEsT0FBTyxDQUFDUCxLQUFSLENBQWNNLEdBQWQ7QUFDQVAsUUFBQUEsV0FBVyxDQUFDWCxRQUFRLENBQUNvQixNQUFWLENBQVg7QUFDSDtBQUNKOztBQUVEQyxJQUFBQSxNQUFNLENBQUNDLFFBQVAsQ0FBZ0JDLE1BQWhCO0FBQ0gsR0FwQ0Q7QUFxQ0gsQ0F4Q0wiLCJzb3VyY2VzQ29udGVudCI6WyJkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICdET01Db250ZW50TG9hZGVkJyxcbiAgICAoKSA9PiB7XG4gICAgICAgIGpRdWVyeSgnLnBwY3AtZGVsZXRlLXBheW1lbnQtYnV0dG9uJykuY2xpY2soYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgalF1ZXJ5KHRoaXMpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCB0b2tlbiA9IGV2ZW50LnRhcmdldC5pZDtcblxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChcbiAgICAgICAgICAgICAgICBQYXlQYWxDb21tZXJjZUdhdGV3YXlWYXVsdGluZy5kZWxldGUuZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25jZTogUGF5UGFsQ29tbWVyY2VHYXRld2F5VmF1bHRpbmcuZGVsZXRlLm5vbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgcmVwb3J0RXJyb3IgPSBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgYWxlcnQoZXJyb3IpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgICAgICAgICAgICAgICAgICByZXBvcnRFcnJvcihyZXN1bHQuZGF0YSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXhjKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXhjKTtcbiAgICAgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IocmVzcG9uc2Uuc3RhdHVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4iXSwiZmlsZSI6Ijg2NC5qcyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///864\n")}},__webpack_exports__={};__webpack_modules__[864]()})();
modules/ppcp-vaulting/extensions.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The vaulting module extensions.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce\Vaulting
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace WooCommerce\PayPalCommerce\Vaulting;
11
+
12
+ return array();
modules/ppcp-vaulting/module.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The vaulting module.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce\Vaulting
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace WooCommerce\PayPalCommerce\Vaulting;
11
+
12
+ use Dhii\Modular\Module\ModuleInterface;
13
+
14
+ return static function (): ModuleInterface {
15
+ return new VaultingModule();
16
+ };
modules/ppcp-vaulting/package.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "ppcp-vaulting",
3
+ "version": "1.0.0",
4
+ "license": "GPL-3.0-or-later",
5
+ "main": "resources/js/myaccount-payments.js",
6
+ "devDependencies": {
7
+ "@babel/core": "^7.9.0",
8
+ "@babel/preset-env": "^7.9.5",
9
+ "babel-loader": "^8.1.0",
10
+ "babel-plugin-transform-object-rest-spread": "^6.26.0",
11
+ "cross-env": "^7.0.3",
12
+ "file-loader": "^6.2.0",
13
+ "sass": "^1.42.1",
14
+ "sass-loader": "^12.1.0",
15
+ "webpack": "^5.55.1",
16
+ "webpack-cli": "^4.8.0"
17
+ },
18
+ "scripts": {
19
+ "build": "cross-env BABEL_ENV=default NODE_ENV=production webpack",
20
+ "watch": "cross-env BABEL_ENV=default NODE_ENV=production webpack --watch",
21
+ "dev": "cross-env BABEL_ENV=default webpack --watch"
22
+ }
23
+ }
modules/ppcp-vaulting/resources/js/myaccount-payments.js ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ document.addEventListener(
2
+ 'DOMContentLoaded',
3
+ () => {
4
+ jQuery('.ppcp-delete-payment-button').click(async (event) => {
5
+ event.preventDefault();
6
+ jQuery(this).prop('disabled', true);
7
+ const token = event.target.id;
8
+
9
+ const response = await fetch(
10
+ PayPalCommerceGatewayVaulting.delete.endpoint,
11
+ {
12
+ method: 'POST',
13
+ headers: {
14
+ 'content-type': 'application/json'
15
+ },
16
+ body: JSON.stringify(
17
+ {
18
+ nonce: PayPalCommerceGatewayVaulting.delete.nonce,
19
+ token,
20
+ }
21
+ )
22
+ }
23
+ );
24
+
25
+ const reportError = error => {
26
+ alert(error);
27
+ }
28
+
29
+ if (!response.ok) {
30
+ try {
31
+ const result = await response.json();
32
+ reportError(result.data);
33
+ } catch (exc) {
34
+ console.error(exc);
35
+ reportError(response.status);
36
+ }
37
+ }
38
+
39
+ window.location.reload();
40
+ });
41
+ });
modules/ppcp-vaulting/services.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The vaulting module services.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce\Vaulting
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace WooCommerce\PayPalCommerce\Vaulting;
11
+
12
+ use WooCommerce\PayPalCommerce\Vaulting\Assets\MyAccountPaymentsAssets;
13
+ use WooCommerce\PayPalCommerce\Vaulting\Endpoint\DeletePaymentTokenEndpoint;
14
+
15
+ return array(
16
+ 'vaulting.module-url' => static function ( $container ): string {
17
+ return plugins_url(
18
+ '/modules/ppcp-vaulting/',
19
+ dirname( __FILE__, 3 ) . '/woocommerce-paypal-payments.php'
20
+ );
21
+ },
22
+ 'vaulting.assets.myaccount-payments' => function( $container ) : MyAccountPaymentsAssets {
23
+ return new MyAccountPaymentsAssets(
24
+ $container->get( 'vaulting.module-url' )
25
+ );
26
+ },
27
+ 'vaulting.payment-tokens-renderer' => static function (): PaymentTokensRenderer {
28
+ return new PaymentTokensRenderer();
29
+ },
30
+ 'vaulting.repository.payment-token' => static function ( $container ): PaymentTokenRepository {
31
+ $factory = $container->get( 'api.factory.payment-token' );
32
+ $endpoint = $container->get( 'api.endpoint.payment-token' );
33
+ return new PaymentTokenRepository( $factory, $endpoint );
34
+ },
35
+ 'vaulting.endpoint.delete' => function( $container ) : DeletePaymentTokenEndpoint {
36
+ return new DeletePaymentTokenEndpoint(
37
+ $container->get( 'vaulting.repository.payment-token' ),
38
+ $container->get( 'button.request-data' ),
39
+ $container->get( 'woocommerce.logger.woocommerce' )
40
+ );
41
+ },
42
+ );
modules/ppcp-vaulting/src/Assets/class-myaccountpaymentsassets.php ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Register and configure assets for My account PayPal payments page.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce\Vaulting\Assets
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace WooCommerce\PayPalCommerce\Vaulting\Assets;
11
+
12
+ use WooCommerce\PayPalCommerce\Vaulting\Endpoint\DeletePaymentTokenEndpoint;
13
+
14
+ /**
15
+ * Class MyAccountPaymentsAssets
16
+ */
17
+ class MyAccountPaymentsAssets {
18
+
19
+ /**
20
+ * The URL to the module.
21
+ *
22
+ * @var string
23
+ */
24
+ private $module_url;
25
+
26
+ /**
27
+ * WebhooksStatusPageAssets constructor.
28
+ *
29
+ * @param string $module_url The URL to the module.
30
+ */
31
+ public function __construct(
32
+ string $module_url
33
+ ) {
34
+ $this->module_url = untrailingslashit( $module_url );
35
+ }
36
+
37
+ /**
38
+ * Enqueues the necessary scripts.
39
+ *
40
+ * @return void
41
+ */
42
+ public function enqueue(): void {
43
+ wp_enqueue_script(
44
+ 'ppcp-vaulting-myaccount-payments',
45
+ $this->module_url . '/assets/js/myaccount-payments.js',
46
+ array( 'jquery' ),
47
+ '1',
48
+ true
49
+ );
50
+ }
51
+
52
+ /**
53
+ * Localize script.
54
+ */
55
+ public function localize() {
56
+ wp_localize_script(
57
+ 'ppcp-vaulting-myaccount-payments',
58
+ 'PayPalCommerceGatewayVaulting',
59
+ array(
60
+ 'delete' => array(
61
+ 'endpoint' => home_url( \WC_AJAX::get_endpoint( DeletePaymentTokenEndpoint::ENDPOINT ) ),
62
+ 'nonce' => wp_create_nonce( DeletePaymentTokenEndpoint::nonce() ),
63
+ ),
64
+ )
65
+ );
66
+ }
67
+ }
modules/ppcp-vaulting/src/Endpoint/class-deletepaymenttokenendpoint.php ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The endpoint for deleting payment tokens.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce\Vaulting\Endpoint
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace WooCommerce\PayPalCommerce\Vaulting\Endpoint;
11
+
12
+ use Exception;
13
+ use Psr\Log\LoggerInterface;
14
+ use WooCommerce\PayPalCommerce\Button\Endpoint\RequestData;
15
+ use WooCommerce\PayPalCommerce\Vaulting\PaymentTokenRepository;
16
+
17
+ /**
18
+ * Class DeletePayment
19
+ */
20
+ class DeletePaymentTokenEndpoint {
21
+
22
+ const ENDPOINT = 'ppc-vaulting-delete';
23
+
24
+ /**
25
+ * The repository.
26
+ *
27
+ * @var PaymentTokenRepository
28
+ */
29
+ protected $repository;
30
+
31
+ /**
32
+ * The request data.
33
+ *
34
+ * @var RequestData
35
+ */
36
+ protected $request_data;
37
+
38
+ /**
39
+ * The logger.
40
+ *
41
+ * @var LoggerInterface
42
+ */
43
+ protected $logger;
44
+
45
+ /**
46
+ * DeletePaymentTokenEndpoint constructor.
47
+ *
48
+ * @param PaymentTokenRepository $repository The repository.
49
+ * @param RequestData $request_data The request data.
50
+ * @param LoggerInterface $logger The logger.
51
+ */
52
+ public function __construct( PaymentTokenRepository $repository, RequestData $request_data, LoggerInterface $logger ) {
53
+ $this->repository = $repository;
54
+ $this->request_data = $request_data;
55
+ $this->logger = $logger;
56
+ }
57
+
58
+ /**
59
+ * Returns the nonce for the endpoint.
60
+ *
61
+ * @return string
62
+ */
63
+ public static function nonce(): string {
64
+ return self::ENDPOINT;
65
+ }
66
+
67
+ /**
68
+ * Handles the incoming request.
69
+ */
70
+ public function handle_request() {
71
+ try {
72
+ $data = $this->request_data->read_request( $this->nonce() );
73
+
74
+ $tokens = $this->repository->all_for_user_id( get_current_user_id() );
75
+ if ( $tokens ) {
76
+ foreach ( $tokens as $token ) {
77
+ if ( isset( $data['token'] ) && $token->id() === $data['token'] ) {
78
+ if ( $this->repository->delete_token( get_current_user_id(), $token ) ) {
79
+ wp_send_json_success();
80
+ return true;
81
+ }
82
+
83
+ wp_send_json_error( 'Could not delete payment token.' );
84
+ return false;
85
+ }
86
+ }
87
+ }
88
+ } catch ( Exception $error ) {
89
+ $this->logger->error( 'Failed to delete payment: ' . $error->getMessage() );
90
+ wp_send_json_error( $error->getMessage(), 403 );
91
+ return false;
92
+ }
93
+ }
94
+ }
95
+
modules/{ppcp-subscription/src/Repository → ppcp-vaulting/src}/class-paymenttokenrepository.php RENAMED
@@ -2,12 +2,12 @@
2
  /**
3
  * The payment token repository returns or deletes payment tokens for users.
4
  *
5
- * @package WooCommerce\PayPalCommerce\Subscription\Repository
6
  */
7
 
8
  declare(strict_types=1);
9
 
10
- namespace WooCommerce\PayPalCommerce\Subscription\Repository;
11
 
12
  use WooCommerce\PayPalCommerce\ApiClient\Endpoint\PaymentTokenEndpoint;
13
  use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentToken;
@@ -107,13 +107,8 @@ class PaymentTokenRepository {
107
  * @param PaymentToken[] $tokens The tokens.
108
  * @return bool Whether tokens contains card or not.
109
  */
110
- public function tokens_contains_card( $tokens ): bool {
111
- foreach ( $tokens as $token ) {
112
- if ( isset( $token->source()->card ) ) {
113
- return true;
114
- }
115
- }
116
- return false;
117
  }
118
 
119
  /**
@@ -122,13 +117,8 @@ class PaymentTokenRepository {
122
  * @param PaymentToken[] $tokens The tokens.
123
  * @return bool Whether tokens contains card or not.
124
  */
125
- public function tokens_contains_paypal( $tokens ): bool {
126
- foreach ( $tokens as $token ) {
127
- if ( isset( $token->source()->paypal ) ) {
128
- return true;
129
- }
130
- }
131
- return false;
132
  }
133
 
134
  /**
@@ -145,4 +135,21 @@ class PaymentTokenRepository {
145
  update_user_meta( $id, self::USER_META, $token_array );
146
  return $token;
147
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  }
2
  /**
3
  * The payment token repository returns or deletes payment tokens for users.
4
  *
5
+ * @package WooCommerce\PayPalCommerce\Vaulting
6
  */
7
 
8
  declare(strict_types=1);
9
 
10
+ namespace WooCommerce\PayPalCommerce\Vaulting;
11
 
12
  use WooCommerce\PayPalCommerce\ApiClient\Endpoint\PaymentTokenEndpoint;
13
  use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentToken;
107
  * @param PaymentToken[] $tokens The tokens.
108
  * @return bool Whether tokens contains card or not.
109
  */
110
+ public function tokens_contains_card( array $tokens ): bool {
111
+ return $this->token_contains_source( $tokens, 'card' );
 
 
 
 
 
112
  }
113
 
114
  /**
117
  * @param PaymentToken[] $tokens The tokens.
118
  * @return bool Whether tokens contains card or not.
119
  */
120
+ public function tokens_contains_paypal( array $tokens ): bool {
121
+ return $this->token_contains_source( $tokens, 'paypal' );
 
 
 
 
 
122
  }
123
 
124
  /**
135
  update_user_meta( $id, self::USER_META, $token_array );
136
  return $token;
137
  }
138
+
139
+ /**
140
+ * Checks if tokens has the given source.
141
+ *
142
+ * @param array $tokens Payment tokens.
143
+ * @param string $source_type Payment token source type.
144
+ * @return bool Whether tokens contains source or not.
145
+ */
146
+ private function token_contains_source( array $tokens, string $source_type ): bool {
147
+ foreach ( $tokens as $token ) {
148
+ if ( isset( $token->source()->card ) && 'card' === $source_type || isset( $token->source()->paypal ) && 'paypal' === $source_type ) {
149
+ return true;
150
+ }
151
+ }
152
+
153
+ return false;
154
+ }
155
  }
modules/ppcp-vaulting/src/class-paymenttokensrenderer.php ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The payment tokens renderer.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce\Vaulting
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace WooCommerce\PayPalCommerce\Vaulting;
11
+
12
+ use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentToken;
13
+
14
+ /**
15
+ * Class PaymentTokensRendered
16
+ */
17
+ class PaymentTokensRenderer {
18
+
19
+ /**
20
+ * Render payment tokens.
21
+ *
22
+ * @param PaymentToken[] $tokens The tokens.
23
+ * @return false|string
24
+ */
25
+ public function render( array $tokens ) {
26
+ ob_start();
27
+ ?>
28
+ <table class="shop_table shop_table_responsive">
29
+ <thead>
30
+ <tr>
31
+ <th><?php echo esc_html__( 'Payment sources', 'woocommerce-paypal-payments' ); ?></th>
32
+ <th></th>
33
+ </tr>
34
+ </thead>
35
+ <tbody>
36
+ <?php
37
+ foreach ( $tokens as $token ) {
38
+ $source = $token->source() ?? null;
39
+ if ( $source && isset( $source->card ) ) {
40
+ ?>
41
+ <tr>
42
+ <td><?php echo esc_attr( $source->card->brand ) . ' ...' . esc_attr( $source->card->last_digits ); ?></td>
43
+ <td>
44
+ <a class="ppcp-delete-payment-button" id="<?php echo esc_attr( $token->id() ); ?>" href=""><?php echo esc_html__( 'Delete', 'woocommerce-paypal-payments' ); ?></a>
45
+ </td>
46
+ </tr>
47
+ <?php
48
+ }
49
+ if ( $source && isset( $source->paypal ) ) {
50
+ ?>
51
+ <tr>
52
+ <td><?php echo esc_attr( $source->paypal->payer->email_address ); ?></td>
53
+ <td>
54
+ <a class="ppcp-delete-payment-button" id="<?php echo esc_attr( $token->id() ); ?>" href=""><?php echo esc_html__( 'Delete', 'woocommerce-paypal-payments' ); ?></a>
55
+ </td>
56
+ </tr>
57
+ <?php
58
+ }
59
+ ?>
60
+ <?php
61
+ }
62
+ ?>
63
+ </tbody>
64
+ </table>
65
+ <?php
66
+ return ob_get_clean();
67
+ }
68
+
69
+ /**
70
+ * Render no payments message.
71
+ *
72
+ * @return false|string
73
+ */
74
+ public function render_no_tokens() {
75
+ ob_start();
76
+ ?>
77
+ <div class="woocommerce-Message woocommerce-Message--info woocommerce-info">
78
+ <?php echo esc_html__( 'No payments available yet.', 'woocommerce-paypal-payments' ); ?>
79
+ </div>
80
+ <?php
81
+ return ob_get_clean();
82
+ }
83
+ }
modules/ppcp-vaulting/src/class-vaultingmodule.php ADDED
@@ -0,0 +1,116 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The vaulting module.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce\Vaulting
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace WooCommerce\PayPalCommerce\Vaulting;
11
+
12
+ use Dhii\Container\ServiceProvider;
13
+ use Dhii\Modular\Module\ModuleInterface;
14
+ use Interop\Container\ServiceProviderInterface;
15
+ use Psr\Container\ContainerInterface;
16
+ use WooCommerce\PayPalCommerce\Vaulting\Endpoint\DeletePaymentTokenEndpoint;
17
+
18
+ /**
19
+ * Class StatusReportModule
20
+ */
21
+ class VaultingModule implements ModuleInterface {
22
+
23
+
24
+ /**
25
+ * {@inheritDoc}
26
+ */
27
+ public function setup(): ServiceProviderInterface {
28
+ return new ServiceProvider(
29
+ require __DIR__ . '/../services.php',
30
+ require __DIR__ . '/../extensions.php'
31
+ );
32
+ }
33
+
34
+ /**
35
+ * {@inheritDoc}
36
+ *
37
+ * @param ContainerInterface $container A services container instance.
38
+ */
39
+ public function run( ContainerInterface $container ): void {
40
+
41
+ add_filter(
42
+ 'woocommerce_account_menu_items',
43
+ function( $menu_links ) {
44
+ $menu_links = array_slice( $menu_links, 0, 5, true )
45
+ + array( 'ppcp-paypal-payment-tokens' => 'PayPal payments' )
46
+ + array_slice( $menu_links, 5, null, true );
47
+
48
+ return $menu_links;
49
+ },
50
+ 40
51
+ );
52
+
53
+ add_action(
54
+ 'init',
55
+ function () {
56
+ add_rewrite_endpoint( 'ppcp-paypal-payment-tokens', EP_PAGES );
57
+ }
58
+ );
59
+
60
+ add_action(
61
+ 'woocommerce_account_ppcp-paypal-payment-tokens_endpoint',
62
+ function () use ( $container ) {
63
+ $payment_token_repository = $container->get( 'vaulting.repository.payment-token' );
64
+ $renderer = $container->get( 'vaulting.payment-tokens-renderer' );
65
+
66
+ $tokens = $payment_token_repository->all_for_user_id( get_current_user_id() );
67
+ if ( $tokens ) {
68
+ echo wp_kses_post( $renderer->render( $tokens ) );
69
+ } else {
70
+ echo wp_kses_post( $renderer->render_no_tokens() );
71
+ }
72
+ }
73
+ );
74
+
75
+ $asset_loader = $container->get( 'vaulting.assets.myaccount-payments' );
76
+ add_action(
77
+ 'wp_enqueue_scripts',
78
+ function () use ( $asset_loader ) {
79
+ if ( is_account_page() && $this->is_payments_page() ) {
80
+ $asset_loader->enqueue();
81
+ $asset_loader->localize();
82
+ }
83
+ }
84
+ );
85
+
86
+ add_action(
87
+ 'wc_ajax_' . DeletePaymentTokenEndpoint::ENDPOINT,
88
+ static function () use ( $container ) {
89
+ $endpoint = $container->get( 'vaulting.endpoint.delete' );
90
+ assert( $endpoint instanceof DeletePaymentTokenEndpoint );
91
+
92
+ $endpoint->handle_request();
93
+ }
94
+ );
95
+ }
96
+
97
+ /**
98
+ * {@inheritDoc}
99
+ */
100
+ public function getKey() { }
101
+
102
+ /**
103
+ * Check if is payments page.
104
+ *
105
+ * @return bool Whethen page is payments or not.
106
+ */
107
+ private function is_payments_page(): bool {
108
+ global $wp;
109
+ $request = explode( '/', wp_parse_url( $wp->request, PHP_URL_PATH ) );
110
+ if ( end( $request ) === 'ppcp-paypal-payment-tokens' ) {
111
+ return true;
112
+ }
113
+
114
+ return false;
115
+ }
116
+ }
modules/ppcp-vaulting/webpack.config.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const path = require('path');
2
+ const isProduction = process.env.NODE_ENV === 'production';
3
+
4
+ module.exports = {
5
+ devtool: 'eval-source-map',
6
+ mode: isProduction ? 'production' : 'development',
7
+ target: 'web',
8
+ entry: {
9
+ 'myaccount-payments': path.resolve('./resources/js/myaccount-payments.js'),
10
+ },
11
+ output: {
12
+ path: path.resolve(__dirname, 'assets/'),
13
+ filename: 'js/[name].js',
14
+ },
15
+ module: {
16
+ rules: [{
17
+ test: /\.js?$/,
18
+ exclude: /node_modules/,
19
+ loader: 'babel-loader',
20
+ }]
21
+ }
22
+ };
modules/ppcp-vaulting/yarn.lock ADDED
@@ -0,0 +1,2219 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2
+ # yarn lockfile v1
3
+
4
+
5
+ "@babel/code-frame@^7.14.5":
6
+ version "7.14.5"
7
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb"
8
+ integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==
9
+ dependencies:
10
+ "@babel/highlight" "^7.14.5"
11
+
12
+ "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.15.0":
13
+ version "7.15.0"
14
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176"
15
+ integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==
16
+
17
+ "@babel/core@^7.9.0":
18
+ version "7.15.5"
19
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9"
20
+ integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==
21
+ dependencies:
22
+ "@babel/code-frame" "^7.14.5"
23
+ "@babel/generator" "^7.15.4"
24
+ "@babel/helper-compilation-targets" "^7.15.4"
25
+ "@babel/helper-module-transforms" "^7.15.4"
26
+ "@babel/helpers" "^7.15.4"
27
+ "@babel/parser" "^7.15.5"
28
+ "@babel/template" "^7.15.4"
29
+ "@babel/traverse" "^7.15.4"
30
+ "@babel/types" "^7.15.4"
31
+ convert-source-map "^1.7.0"
32
+ debug "^4.1.0"
33
+ gensync "^1.0.0-beta.2"
34
+ json5 "^2.1.2"
35
+ semver "^6.3.0"
36
+ source-map "^0.5.0"
37
+
38
+ "@babel/generator@^7.15.4":
39
+ version "7.15.4"
40
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0"
41
+ integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==
42
+ dependencies:
43
+ "@babel/types" "^7.15.4"
44
+ jsesc "^2.5.1"
45
+ source-map "^0.5.0"
46
+
47
+ "@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4":
48
+ version "7.15.4"
49
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835"
50
+ integrity sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==
51
+ dependencies:
52
+ "@babel/types" "^7.15.4"
53
+
54
+ "@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5":
55
+ version "7.15.4"
56
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz#21ad815f609b84ee0e3058676c33cf6d1670525f"
57
+ integrity sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==
58
+ dependencies:
59
+ "@babel/helper-explode-assignable-expression" "^7.15.4"
60
+ "@babel/types" "^7.15.4"
61
+
62
+ "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.15.4":
63
+ version "7.15.4"
64
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9"
65
+ integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==
66
+ dependencies:
67
+ "@babel/compat-data" "^7.15.0"
68
+ "@babel/helper-validator-option" "^7.14.5"
69
+ browserslist "^4.16.6"
70
+ semver "^6.3.0"
71
+
72
+ "@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.4":
73
+ version "7.15.4"
74
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz#7f977c17bd12a5fba363cb19bea090394bf37d2e"
75
+ integrity sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==
76
+ dependencies:
77
+ "@babel/helper-annotate-as-pure" "^7.15.4"
78
+ "@babel/helper-function-name" "^7.15.4"
79
+ "@babel/helper-member-expression-to-functions" "^7.15.4"
80
+ "@babel/helper-optimise-call-expression" "^7.15.4"
81
+ "@babel/helper-replace-supers" "^7.15.4"
82
+ "@babel/helper-split-export-declaration" "^7.15.4"
83
+
84
+ "@babel/helper-create-regexp-features-plugin@^7.14.5":
85
+ version "7.14.5"
86
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4"
87
+ integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==
88
+ dependencies:
89
+ "@babel/helper-annotate-as-pure" "^7.14.5"
90
+ regexpu-core "^4.7.1"
91
+
92
+ "@babel/helper-define-polyfill-provider@^0.2.2":
93
+ version "0.2.3"
94
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6"
95
+ integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==
96
+ dependencies:
97
+ "@babel/helper-compilation-targets" "^7.13.0"
98
+ "@babel/helper-module-imports" "^7.12.13"
99
+ "@babel/helper-plugin-utils" "^7.13.0"
100
+ "@babel/traverse" "^7.13.0"
101
+ debug "^4.1.1"
102
+ lodash.debounce "^4.0.8"
103
+ resolve "^1.14.2"
104
+ semver "^6.1.2"
105
+
106
+ "@babel/helper-explode-assignable-expression@^7.15.4":
107
+ version "7.15.4"
108
+ resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz#f9aec9d219f271eaf92b9f561598ca6b2682600c"
109
+ integrity sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==
110
+ dependencies:
111
+ "@babel/types" "^7.15.4"
112
+
113
+ "@babel/helper-function-name@^7.14.5", "@babel/helper-function-name@^7.15.4":
114
+ version "7.15.4"
115
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc"
116
+ integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==
117
+ dependencies:
118
+ "@babel/helper-get-function-arity" "^7.15.4"
119
+ "@babel/template" "^7.15.4"
120
+ "@babel/types" "^7.15.4"
121
+
122
+ "@babel/helper-get-function-arity@^7.15.4":
123
+ version "7.15.4"
124
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b"
125
+ integrity sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==
126
+ dependencies:
127
+ "@babel/types" "^7.15.4"
128
+
129
+ "@babel/helper-hoist-variables@^7.15.4":
130
+ version "7.15.4"
131
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df"
132
+ integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==
133
+ dependencies:
134
+ "@babel/types" "^7.15.4"
135
+
136
+ "@babel/helper-member-expression-to-functions@^7.15.4":
137
+ version "7.15.4"
138
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef"
139
+ integrity sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==
140
+ dependencies:
141
+ "@babel/types" "^7.15.4"
142
+
143
+ "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.15.4":
144
+ version "7.15.4"
145
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f"
146
+ integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==
147
+ dependencies:
148
+ "@babel/types" "^7.15.4"
149
+
150
+ "@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4":
151
+ version "7.15.7"
152
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz#7da80c8cbc1f02655d83f8b79d25866afe50d226"
153
+ integrity sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw==
154
+ dependencies:
155
+ "@babel/helper-module-imports" "^7.15.4"
156
+ "@babel/helper-replace-supers" "^7.15.4"
157
+ "@babel/helper-simple-access" "^7.15.4"
158
+ "@babel/helper-split-export-declaration" "^7.15.4"
159
+ "@babel/helper-validator-identifier" "^7.15.7"
160
+ "@babel/template" "^7.15.4"
161
+ "@babel/traverse" "^7.15.4"
162
+ "@babel/types" "^7.15.6"
163
+
164
+ "@babel/helper-optimise-call-expression@^7.15.4":
165
+ version "7.15.4"
166
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171"
167
+ integrity sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==
168
+ dependencies:
169
+ "@babel/types" "^7.15.4"
170
+
171
+ "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
172
+ version "7.14.5"
173
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9"
174
+ integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==
175
+
176
+ "@babel/helper-remap-async-to-generator@^7.14.5", "@babel/helper-remap-async-to-generator@^7.15.4":
177
+ version "7.15.4"
178
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz#2637c0731e4c90fbf58ac58b50b2b5a192fc970f"
179
+ integrity sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==
180
+ dependencies:
181
+ "@babel/helper-annotate-as-pure" "^7.15.4"
182
+ "@babel/helper-wrap-function" "^7.15.4"
183
+ "@babel/types" "^7.15.4"
184
+
185
+ "@babel/helper-replace-supers@^7.14.5", "@babel/helper-replace-supers@^7.15.4":
186
+ version "7.15.4"
187
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a"
188
+ integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==
189
+ dependencies:
190
+ "@babel/helper-member-expression-to-functions" "^7.15.4"
191
+ "@babel/helper-optimise-call-expression" "^7.15.4"
192
+ "@babel/traverse" "^7.15.4"
193
+ "@babel/types" "^7.15.4"
194
+
195
+ "@babel/helper-simple-access@^7.15.4":
196
+ version "7.15.4"
197
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b"
198
+ integrity sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==
199
+ dependencies:
200
+ "@babel/types" "^7.15.4"
201
+
202
+ "@babel/helper-skip-transparent-expression-wrappers@^7.14.5", "@babel/helper-skip-transparent-expression-wrappers@^7.15.4":
203
+ version "7.15.4"
204
+ resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz#707dbdba1f4ad0fa34f9114fc8197aec7d5da2eb"
205
+ integrity sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==
206
+ dependencies:
207
+ "@babel/types" "^7.15.4"
208
+
209
+ "@babel/helper-split-export-declaration@^7.15.4":
210
+ version "7.15.4"
211
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257"
212
+ integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==
213
+ dependencies:
214
+ "@babel/types" "^7.15.4"
215
+
216
+ "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7":
217
+ version "7.15.7"
218
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389"
219
+ integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==
220
+
221
+ "@babel/helper-validator-option@^7.14.5":
222
+ version "7.14.5"
223
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3"
224
+ integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==
225
+
226
+ "@babel/helper-wrap-function@^7.15.4":
227
+ version "7.15.4"
228
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz#6f754b2446cfaf3d612523e6ab8d79c27c3a3de7"
229
+ integrity sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==
230
+ dependencies:
231
+ "@babel/helper-function-name" "^7.15.4"
232
+ "@babel/template" "^7.15.4"
233
+ "@babel/traverse" "^7.15.4"
234
+ "@babel/types" "^7.15.4"
235
+
236
+ "@babel/helpers@^7.15.4":
237
+ version "7.15.4"
238
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43"
239
+ integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==
240
+ dependencies:
241
+ "@babel/template" "^7.15.4"
242
+ "@babel/traverse" "^7.15.4"
243
+ "@babel/types" "^7.15.4"
244
+
245
+ "@babel/highlight@^7.14.5":
246
+ version "7.14.5"
247
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9"
248
+ integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==
249
+ dependencies:
250
+ "@babel/helper-validator-identifier" "^7.14.5"
251
+ chalk "^2.0.0"
252
+ js-tokens "^4.0.0"
253
+
254
+ "@babel/parser@^7.15.4", "@babel/parser@^7.15.5":
255
+ version "7.15.7"
256
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.7.tgz#0c3ed4a2eb07b165dfa85b3cc45c727334c4edae"
257
+ integrity sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==
258
+
259
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4":
260
+ version "7.15.4"
261
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz#dbdeabb1e80f622d9f0b583efb2999605e0a567e"
262
+ integrity sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==
263
+ dependencies:
264
+ "@babel/helper-plugin-utils" "^7.14.5"
265
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4"
266
+ "@babel/plugin-proposal-optional-chaining" "^7.14.5"
267
+
268
+ "@babel/plugin-proposal-async-generator-functions@^7.15.4":
269
+ version "7.15.4"
270
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.4.tgz#f82aabe96c135d2ceaa917feb9f5fca31635277e"
271
+ integrity sha512-2zt2g5vTXpMC3OmK6uyjvdXptbhBXfA77XGrd3gh93zwG8lZYBLOBImiGBEG0RANu3JqKEACCz5CGk73OJROBw==
272
+ dependencies:
273
+ "@babel/helper-plugin-utils" "^7.14.5"
274
+ "@babel/helper-remap-async-to-generator" "^7.15.4"
275
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
276
+
277
+ "@babel/plugin-proposal-class-properties@^7.14.5":
278
+ version "7.14.5"
279
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e"
280
+ integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==
281
+ dependencies:
282
+ "@babel/helper-create-class-features-plugin" "^7.14.5"
283
+ "@babel/helper-plugin-utils" "^7.14.5"
284
+
285
+ "@babel/plugin-proposal-class-static-block@^7.15.4":
286
+ version "7.15.4"
287
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz#3e7ca6128453c089e8b477a99f970c63fc1cb8d7"
288
+ integrity sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==
289
+ dependencies:
290
+ "@babel/helper-create-class-features-plugin" "^7.15.4"
291
+ "@babel/helper-plugin-utils" "^7.14.5"
292
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
293
+
294
+ "@babel/plugin-proposal-dynamic-import@^7.14.5":
295
+ version "7.14.5"
296
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz#0c6617df461c0c1f8fff3b47cd59772360101d2c"
297
+ integrity sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==
298
+ dependencies:
299
+ "@babel/helper-plugin-utils" "^7.14.5"
300
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
301
+
302
+ "@babel/plugin-proposal-export-namespace-from@^7.14.5":
303
+ version "7.14.5"
304
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz#dbad244310ce6ccd083072167d8cea83a52faf76"
305
+ integrity sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==
306
+ dependencies:
307
+ "@babel/helper-plugin-utils" "^7.14.5"
308
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
309
+
310
+ "@babel/plugin-proposal-json-strings@^7.14.5":
311
+ version "7.14.5"
312
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb"
313
+ integrity sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==
314
+ dependencies:
315
+ "@babel/helper-plugin-utils" "^7.14.5"
316
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
317
+
318
+ "@babel/plugin-proposal-logical-assignment-operators@^7.14.5":
319
+ version "7.14.5"
320
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz#6e6229c2a99b02ab2915f82571e0cc646a40c738"
321
+ integrity sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==
322
+ dependencies:
323
+ "@babel/helper-plugin-utils" "^7.14.5"
324
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
325
+
326
+ "@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5":
327
+ version "7.14.5"
328
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6"
329
+ integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==
330
+ dependencies:
331
+ "@babel/helper-plugin-utils" "^7.14.5"
332
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
333
+
334
+ "@babel/plugin-proposal-numeric-separator@^7.14.5":
335
+ version "7.14.5"
336
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18"
337
+ integrity sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==
338
+ dependencies:
339
+ "@babel/helper-plugin-utils" "^7.14.5"
340
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
341
+
342
+ "@babel/plugin-proposal-object-rest-spread@^7.15.6":
343
+ version "7.15.6"
344
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz#ef68050c8703d07b25af402cb96cf7f34a68ed11"
345
+ integrity sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==
346
+ dependencies:
347
+ "@babel/compat-data" "^7.15.0"
348
+ "@babel/helper-compilation-targets" "^7.15.4"
349
+ "@babel/helper-plugin-utils" "^7.14.5"
350
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
351
+ "@babel/plugin-transform-parameters" "^7.15.4"
352
+
353
+ "@babel/plugin-proposal-optional-catch-binding@^7.14.5":
354
+ version "7.14.5"
355
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c"
356
+ integrity sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==
357
+ dependencies:
358
+ "@babel/helper-plugin-utils" "^7.14.5"
359
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
360
+
361
+ "@babel/plugin-proposal-optional-chaining@^7.14.5":
362
+ version "7.14.5"
363
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603"
364
+ integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==
365
+ dependencies:
366
+ "@babel/helper-plugin-utils" "^7.14.5"
367
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5"
368
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
369
+
370
+ "@babel/plugin-proposal-private-methods@^7.14.5":
371
+ version "7.14.5"
372
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d"
373
+ integrity sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==
374
+ dependencies:
375
+ "@babel/helper-create-class-features-plugin" "^7.14.5"
376
+ "@babel/helper-plugin-utils" "^7.14.5"
377
+
378
+ "@babel/plugin-proposal-private-property-in-object@^7.15.4":
379
+ version "7.15.4"
380
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz#55c5e3b4d0261fd44fe637e3f624cfb0f484e3e5"
381
+ integrity sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==
382
+ dependencies:
383
+ "@babel/helper-annotate-as-pure" "^7.15.4"
384
+ "@babel/helper-create-class-features-plugin" "^7.15.4"
385
+ "@babel/helper-plugin-utils" "^7.14.5"
386
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
387
+
388
+ "@babel/plugin-proposal-unicode-property-regex@^7.14.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
389
+ version "7.14.5"
390
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8"
391
+ integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==
392
+ dependencies:
393
+ "@babel/helper-create-regexp-features-plugin" "^7.14.5"
394
+ "@babel/helper-plugin-utils" "^7.14.5"
395
+
396
+ "@babel/plugin-syntax-async-generators@^7.8.4":
397
+ version "7.8.4"
398
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
399
+ integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
400
+ dependencies:
401
+ "@babel/helper-plugin-utils" "^7.8.0"
402
+
403
+ "@babel/plugin-syntax-class-properties@^7.12.13":
404
+ version "7.12.13"
405
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
406
+ integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
407
+ dependencies:
408
+ "@babel/helper-plugin-utils" "^7.12.13"
409
+
410
+ "@babel/plugin-syntax-class-static-block@^7.14.5":
411
+ version "7.14.5"
412
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406"
413
+ integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==
414
+ dependencies:
415
+ "@babel/helper-plugin-utils" "^7.14.5"
416
+
417
+ "@babel/plugin-syntax-dynamic-import@^7.8.3":
418
+ version "7.8.3"
419
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
420
+ integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
421
+ dependencies:
422
+ "@babel/helper-plugin-utils" "^7.8.0"
423
+
424
+ "@babel/plugin-syntax-export-namespace-from@^7.8.3":
425
+ version "7.8.3"
426
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
427
+ integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
428
+ dependencies:
429
+ "@babel/helper-plugin-utils" "^7.8.3"
430
+
431
+ "@babel/plugin-syntax-json-strings@^7.8.3":
432
+ version "7.8.3"
433
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
434
+ integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
435
+ dependencies:
436
+ "@babel/helper-plugin-utils" "^7.8.0"
437
+
438
+ "@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
439
+ version "7.10.4"
440
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
441
+ integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
442
+ dependencies:
443
+ "@babel/helper-plugin-utils" "^7.10.4"
444
+
445
+ "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
446
+ version "7.8.3"
447
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
448
+ integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
449
+ dependencies:
450
+ "@babel/helper-plugin-utils" "^7.8.0"
451
+
452
+ "@babel/plugin-syntax-numeric-separator@^7.10.4":
453
+ version "7.10.4"
454
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
455
+ integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
456
+ dependencies:
457
+ "@babel/helper-plugin-utils" "^7.10.4"
458
+
459
+ "@babel/plugin-syntax-object-rest-spread@^7.8.3":
460
+ version "7.8.3"
461
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
462
+ integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
463
+ dependencies:
464
+ "@babel/helper-plugin-utils" "^7.8.0"
465
+
466
+ "@babel/plugin-syntax-optional-catch-binding@^7.8.3":
467
+ version "7.8.3"
468
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
469
+ integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
470
+ dependencies:
471
+ "@babel/helper-plugin-utils" "^7.8.0"
472
+
473
+ "@babel/plugin-syntax-optional-chaining@^7.8.3":
474
+ version "7.8.3"
475
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
476
+ integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
477
+ dependencies:
478
+ "@babel/helper-plugin-utils" "^7.8.0"
479
+
480
+ "@babel/plugin-syntax-private-property-in-object@^7.14.5":
481
+ version "7.14.5"
482
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad"
483
+ integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==
484
+ dependencies:
485
+ "@babel/helper-plugin-utils" "^7.14.5"
486
+
487
+ "@babel/plugin-syntax-top-level-await@^7.14.5":
488
+ version "7.14.5"
489
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
490
+ integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
491
+ dependencies:
492
+ "@babel/helper-plugin-utils" "^7.14.5"
493
+
494
+ "@babel/plugin-transform-arrow-functions@^7.14.5":
495
+ version "7.14.5"
496
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a"
497
+ integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==
498
+ dependencies:
499
+ "@babel/helper-plugin-utils" "^7.14.5"
500
+
501
+ "@babel/plugin-transform-async-to-generator@^7.14.5":
502
+ version "7.14.5"
503
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67"
504
+ integrity sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==
505
+ dependencies:
506
+ "@babel/helper-module-imports" "^7.14.5"
507
+ "@babel/helper-plugin-utils" "^7.14.5"
508
+ "@babel/helper-remap-async-to-generator" "^7.14.5"
509
+
510
+ "@babel/plugin-transform-block-scoped-functions@^7.14.5":
511
+ version "7.14.5"
512
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4"
513
+ integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==
514
+ dependencies:
515
+ "@babel/helper-plugin-utils" "^7.14.5"
516
+
517
+ "@babel/plugin-transform-block-scoping@^7.15.3":
518
+ version "7.15.3"
519
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf"
520
+ integrity sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==
521
+ dependencies:
522
+ "@babel/helper-plugin-utils" "^7.14.5"
523
+
524
+ "@babel/plugin-transform-classes@^7.15.4":
525
+ version "7.15.4"
526
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz#50aee17aaf7f332ae44e3bce4c2e10534d5d3bf1"
527
+ integrity sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==
528
+ dependencies:
529
+ "@babel/helper-annotate-as-pure" "^7.15.4"
530
+ "@babel/helper-function-name" "^7.15.4"
531
+ "@babel/helper-optimise-call-expression" "^7.15.4"
532
+ "@babel/helper-plugin-utils" "^7.14.5"
533
+ "@babel/helper-replace-supers" "^7.15.4"
534
+ "@babel/helper-split-export-declaration" "^7.15.4"
535
+ globals "^11.1.0"
536
+
537
+ "@babel/plugin-transform-computed-properties@^7.14.5":
538
+ version "7.14.5"
539
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f"
540
+ integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==
541
+ dependencies:
542
+ "@babel/helper-plugin-utils" "^7.14.5"
543
+
544
+ "@babel/plugin-transform-destructuring@^7.14.7":
545
+ version "7.14.7"
546
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576"
547
+ integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==
548
+ dependencies:
549
+ "@babel/helper-plugin-utils" "^7.14.5"
550
+
551
+ "@babel/plugin-transform-dotall-regex@^7.14.5", "@babel/plugin-transform-dotall-regex@^7.4.4":
552
+ version "7.14.5"
553
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a"
554
+ integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==
555
+ dependencies:
556
+ "@babel/helper-create-regexp-features-plugin" "^7.14.5"
557
+ "@babel/helper-plugin-utils" "^7.14.5"
558
+
559
+ "@babel/plugin-transform-duplicate-keys@^7.14.5":
560
+ version "7.14.5"
561
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954"
562
+ integrity sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==
563
+ dependencies:
564
+ "@babel/helper-plugin-utils" "^7.14.5"
565
+
566
+ "@babel/plugin-transform-exponentiation-operator@^7.14.5":
567
+ version "7.14.5"
568
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493"
569
+ integrity sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==
570
+ dependencies:
571
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5"
572
+ "@babel/helper-plugin-utils" "^7.14.5"
573
+
574
+ "@babel/plugin-transform-for-of@^7.15.4":
575
+ version "7.15.4"
576
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz#25c62cce2718cfb29715f416e75d5263fb36a8c2"
577
+ integrity sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==
578
+ dependencies:
579
+ "@babel/helper-plugin-utils" "^7.14.5"
580
+
581
+ "@babel/plugin-transform-function-name@^7.14.5":
582
+ version "7.14.5"
583
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2"
584
+ integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==
585
+ dependencies:
586
+ "@babel/helper-function-name" "^7.14.5"
587
+ "@babel/helper-plugin-utils" "^7.14.5"
588
+
589
+ "@babel/plugin-transform-literals@^7.14.5":
590
+ version "7.14.5"
591
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78"
592
+ integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==
593
+ dependencies:
594
+ "@babel/helper-plugin-utils" "^7.14.5"
595
+
596
+ "@babel/plugin-transform-member-expression-literals@^7.14.5":
597
+ version "7.14.5"
598
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7"
599
+ integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==
600
+ dependencies:
601
+ "@babel/helper-plugin-utils" "^7.14.5"
602
+
603
+ "@babel/plugin-transform-modules-amd@^7.14.5":
604
+ version "7.14.5"
605
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7"
606
+ integrity sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==
607
+ dependencies:
608
+ "@babel/helper-module-transforms" "^7.14.5"
609
+ "@babel/helper-plugin-utils" "^7.14.5"
610
+ babel-plugin-dynamic-import-node "^2.3.3"
611
+
612
+ "@babel/plugin-transform-modules-commonjs@^7.15.4":
613
+ version "7.15.4"
614
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz#8201101240eabb5a76c08ef61b2954f767b6b4c1"
615
+ integrity sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==
616
+ dependencies:
617
+ "@babel/helper-module-transforms" "^7.15.4"
618
+ "@babel/helper-plugin-utils" "^7.14.5"
619
+ "@babel/helper-simple-access" "^7.15.4"
620
+ babel-plugin-dynamic-import-node "^2.3.3"
621
+
622
+ "@babel/plugin-transform-modules-systemjs@^7.15.4":
623
+ version "7.15.4"
624
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz#b42890c7349a78c827719f1d2d0cd38c7d268132"
625
+ integrity sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==
626
+ dependencies:
627
+ "@babel/helper-hoist-variables" "^7.15.4"
628
+ "@babel/helper-module-transforms" "^7.15.4"
629
+ "@babel/helper-plugin-utils" "^7.14.5"
630
+ "@babel/helper-validator-identifier" "^7.14.9"
631
+ babel-plugin-dynamic-import-node "^2.3.3"
632
+
633
+ "@babel/plugin-transform-modules-umd@^7.14.5":
634
+ version "7.14.5"
635
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0"
636
+ integrity sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==
637
+ dependencies:
638
+ "@babel/helper-module-transforms" "^7.14.5"
639
+ "@babel/helper-plugin-utils" "^7.14.5"
640
+
641
+ "@babel/plugin-transform-named-capturing-groups-regex@^7.14.9":
642
+ version "7.14.9"
643
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz#c68f5c5d12d2ebaba3762e57c2c4f6347a46e7b2"
644
+ integrity sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==
645
+ dependencies:
646
+ "@babel/helper-create-regexp-features-plugin" "^7.14.5"
647
+
648
+ "@babel/plugin-transform-new-target@^7.14.5":
649
+ version "7.14.5"
650
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8"
651
+ integrity sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==
652
+ dependencies:
653
+ "@babel/helper-plugin-utils" "^7.14.5"
654
+
655
+ "@babel/plugin-transform-object-super@^7.14.5":
656
+ version "7.14.5"
657
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45"
658
+ integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==
659
+ dependencies:
660
+ "@babel/helper-plugin-utils" "^7.14.5"
661
+ "@babel/helper-replace-supers" "^7.14.5"
662
+
663
+ "@babel/plugin-transform-parameters@^7.15.4":
664
+ version "7.15.4"
665
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz#5f2285cc3160bf48c8502432716b48504d29ed62"
666
+ integrity sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==
667
+ dependencies:
668
+ "@babel/helper-plugin-utils" "^7.14.5"
669
+
670
+ "@babel/plugin-transform-property-literals@^7.14.5":
671
+ version "7.14.5"
672
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34"
673
+ integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==
674
+ dependencies:
675
+ "@babel/helper-plugin-utils" "^7.14.5"
676
+
677
+ "@babel/plugin-transform-regenerator@^7.14.5":
678
+ version "7.14.5"
679
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz#9676fd5707ed28f522727c5b3c0aa8544440b04f"
680
+ integrity sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==
681
+ dependencies:
682
+ regenerator-transform "^0.14.2"
683
+
684
+ "@babel/plugin-transform-reserved-words@^7.14.5":
685
+ version "7.14.5"
686
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304"
687
+ integrity sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==
688
+ dependencies:
689
+ "@babel/helper-plugin-utils" "^7.14.5"
690
+
691
+ "@babel/plugin-transform-shorthand-properties@^7.14.5":
692
+ version "7.14.5"
693
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58"
694
+ integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==
695
+ dependencies:
696
+ "@babel/helper-plugin-utils" "^7.14.5"
697
+
698
+ "@babel/plugin-transform-spread@^7.14.6":
699
+ version "7.14.6"
700
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz#6bd40e57fe7de94aa904851963b5616652f73144"
701
+ integrity sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag==
702
+ dependencies:
703
+ "@babel/helper-plugin-utils" "^7.14.5"
704
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5"
705
+
706
+ "@babel/plugin-transform-sticky-regex@^7.14.5":
707
+ version "7.14.5"
708
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9"
709
+ integrity sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==
710
+ dependencies:
711
+ "@babel/helper-plugin-utils" "^7.14.5"
712
+
713
+ "@babel/plugin-transform-template-literals@^7.14.5":
714
+ version "7.14.5"
715
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93"
716
+ integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==
717
+ dependencies:
718
+ "@babel/helper-plugin-utils" "^7.14.5"
719
+
720
+ "@babel/plugin-transform-typeof-symbol@^7.14.5":
721
+ version "7.14.5"
722
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4"
723
+ integrity sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==
724
+ dependencies:
725
+ "@babel/helper-plugin-utils" "^7.14.5"
726
+
727
+ "@babel/plugin-transform-unicode-escapes@^7.14.5":
728
+ version "7.14.5"
729
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b"
730
+ integrity sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==
731
+ dependencies:
732
+ "@babel/helper-plugin-utils" "^7.14.5"
733
+
734
+ "@babel/plugin-transform-unicode-regex@^7.14.5":
735
+ version "7.14.5"
736
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e"
737
+ integrity sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==
738
+ dependencies:
739
+ "@babel/helper-create-regexp-features-plugin" "^7.14.5"
740
+ "@babel/helper-plugin-utils" "^7.14.5"
741
+
742
+ "@babel/preset-env@^7.9.5":
743
+ version "7.15.6"
744
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.6.tgz#0f3898db9d63d320f21b17380d8462779de57659"
745
+ integrity sha512-L+6jcGn7EWu7zqaO2uoTDjjMBW+88FXzV8KvrBl2z6MtRNxlsmUNRlZPaNNPUTgqhyC5DHNFk/2Jmra+ublZWw==
746
+ dependencies:
747
+ "@babel/compat-data" "^7.15.0"
748
+ "@babel/helper-compilation-targets" "^7.15.4"
749
+ "@babel/helper-plugin-utils" "^7.14.5"
750
+ "@babel/helper-validator-option" "^7.14.5"
751
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.15.4"
752
+ "@babel/plugin-proposal-async-generator-functions" "^7.15.4"
753
+ "@babel/plugin-proposal-class-properties" "^7.14.5"
754
+ "@babel/plugin-proposal-class-static-block" "^7.15.4"
755
+ "@babel/plugin-proposal-dynamic-import" "^7.14.5"
756
+ "@babel/plugin-proposal-export-namespace-from" "^7.14.5"
757
+ "@babel/plugin-proposal-json-strings" "^7.14.5"
758
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5"
759
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5"
760
+ "@babel/plugin-proposal-numeric-separator" "^7.14.5"
761
+ "@babel/plugin-proposal-object-rest-spread" "^7.15.6"
762
+ "@babel/plugin-proposal-optional-catch-binding" "^7.14.5"
763
+ "@babel/plugin-proposal-optional-chaining" "^7.14.5"
764
+ "@babel/plugin-proposal-private-methods" "^7.14.5"
765
+ "@babel/plugin-proposal-private-property-in-object" "^7.15.4"
766
+ "@babel/plugin-proposal-unicode-property-regex" "^7.14.5"
767
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
768
+ "@babel/plugin-syntax-class-properties" "^7.12.13"
769
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
770
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
771
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
772
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
773
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
774
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
775
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
776
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
777
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
778
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
779
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
780
+ "@babel/plugin-syntax-top-level-await" "^7.14.5"
781
+ "@babel/plugin-transform-arrow-functions" "^7.14.5"
782
+ "@babel/plugin-transform-async-to-generator" "^7.14.5"
783
+ "@babel/plugin-transform-block-scoped-functions" "^7.14.5"
784
+ "@babel/plugin-transform-block-scoping" "^7.15.3"
785
+ "@babel/plugin-transform-classes" "^7.15.4"
786
+ "@babel/plugin-transform-computed-properties" "^7.14.5"
787
+ "@babel/plugin-transform-destructuring" "^7.14.7"
788
+ "@babel/plugin-transform-dotall-regex" "^7.14.5"
789
+ "@babel/plugin-transform-duplicate-keys" "^7.14.5"
790
+ "@babel/plugin-transform-exponentiation-operator" "^7.14.5"
791
+ "@babel/plugin-transform-for-of" "^7.15.4"
792
+ "@babel/plugin-transform-function-name" "^7.14.5"
793
+ "@babel/plugin-transform-literals" "^7.14.5"
794
+ "@babel/plugin-transform-member-expression-literals" "^7.14.5"
795
+ "@babel/plugin-transform-modules-amd" "^7.14.5"
796
+ "@babel/plugin-transform-modules-commonjs" "^7.15.4"
797
+ "@babel/plugin-transform-modules-systemjs" "^7.15.4"
798
+ "@babel/plugin-transform-modules-umd" "^7.14.5"
799
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.9"
800
+ "@babel/plugin-transform-new-target" "^7.14.5"
801
+ "@babel/plugin-transform-object-super" "^7.14.5"
802
+ "@babel/plugin-transform-parameters" "^7.15.4"
803
+ "@babel/plugin-transform-property-literals" "^7.14.5"
804
+ "@babel/plugin-transform-regenerator" "^7.14.5"
805
+ "@babel/plugin-transform-reserved-words" "^7.14.5"
806
+ "@babel/plugin-transform-shorthand-properties" "^7.14.5"
807
+ "@babel/plugin-transform-spread" "^7.14.6"
808
+ "@babel/plugin-transform-sticky-regex" "^7.14.5"
809
+ "@babel/plugin-transform-template-literals" "^7.14.5"
810
+ "@babel/plugin-transform-typeof-symbol" "^7.14.5"
811
+ "@babel/plugin-transform-unicode-escapes" "^7.14.5"
812
+ "@babel/plugin-transform-unicode-regex" "^7.14.5"
813
+ "@babel/preset-modules" "^0.1.4"
814
+ "@babel/types" "^7.15.6"
815
+ babel-plugin-polyfill-corejs2 "^0.2.2"
816
+ babel-plugin-polyfill-corejs3 "^0.2.2"
817
+ babel-plugin-polyfill-regenerator "^0.2.2"
818
+ core-js-compat "^3.16.0"
819
+ semver "^6.3.0"
820
+
821
+ "@babel/preset-modules@^0.1.4":
822
+ version "0.1.4"
823
+ resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e"
824
+ integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==
825
+ dependencies:
826
+ "@babel/helper-plugin-utils" "^7.0.0"
827
+ "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
828
+ "@babel/plugin-transform-dotall-regex" "^7.4.4"
829
+ "@babel/types" "^7.4.4"
830
+ esutils "^2.0.2"
831
+
832
+ "@babel/runtime@^7.8.4":
833
+ version "7.15.4"
834
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a"
835
+ integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==
836
+ dependencies:
837
+ regenerator-runtime "^0.13.4"
838
+
839
+ "@babel/template@^7.15.4":
840
+ version "7.15.4"
841
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194"
842
+ integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==
843
+ dependencies:
844
+ "@babel/code-frame" "^7.14.5"
845
+ "@babel/parser" "^7.15.4"
846
+ "@babel/types" "^7.15.4"
847
+
848
+ "@babel/traverse@^7.13.0", "@babel/traverse@^7.15.4":
849
+ version "7.15.4"
850
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d"
851
+ integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==
852
+ dependencies:
853
+ "@babel/code-frame" "^7.14.5"
854
+ "@babel/generator" "^7.15.4"
855
+ "@babel/helper-function-name" "^7.15.4"
856
+ "@babel/helper-hoist-variables" "^7.15.4"
857
+ "@babel/helper-split-export-declaration" "^7.15.4"
858
+ "@babel/parser" "^7.15.4"
859
+ "@babel/types" "^7.15.4"
860
+ debug "^4.1.0"
861
+ globals "^11.1.0"
862
+
863
+ "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.4.4":
864
+ version "7.15.6"
865
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f"
866
+ integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==
867
+ dependencies:
868
+ "@babel/helper-validator-identifier" "^7.14.9"
869
+ to-fast-properties "^2.0.0"
870
+
871
+ "@discoveryjs/json-ext@^0.5.0":
872
+ version "0.5.5"
873
+ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz#9283c9ce5b289a3c4f61c12757469e59377f81f3"
874
+ integrity sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==
875
+
876
+ "@types/eslint-scope@^3.7.0":
877
+ version "3.7.1"
878
+ resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.1.tgz#8dc390a7b4f9dd9f1284629efce982e41612116e"
879
+ integrity sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==
880
+ dependencies:
881
+ "@types/eslint" "*"
882
+ "@types/estree" "*"
883
+
884
+ "@types/eslint@*":
885
+ version "7.28.0"
886
+ resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.0.tgz#7e41f2481d301c68e14f483fe10b017753ce8d5a"
887
+ integrity sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==
888
+ dependencies:
889
+ "@types/estree" "*"
890
+ "@types/json-schema" "*"
891
+
892
+ "@types/estree@*", "@types/estree@^0.0.50":
893
+ version "0.0.50"
894
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83"
895
+ integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==
896
+
897
+ "@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8":
898
+ version "7.0.9"
899
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
900
+ integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
901
+
902
+ "@types/node@*":
903
+ version "16.10.1"
904
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.1.tgz#f3647623199ca920960006b3dccf633ea905f243"
905
+ integrity sha512-4/Z9DMPKFexZj/Gn3LylFgamNKHm4K3QDi0gz9B26Uk0c8izYf97B5fxfpspMNkWlFupblKM/nV8+NA9Ffvr+w==
906
+
907
+ "@webassemblyjs/ast@1.11.1":
908
+ version "1.11.1"
909
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
910
+ integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==
911
+ dependencies:
912
+ "@webassemblyjs/helper-numbers" "1.11.1"
913
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
914
+
915
+ "@webassemblyjs/floating-point-hex-parser@1.11.1":
916
+ version "1.11.1"
917
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f"
918
+ integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==
919
+
920
+ "@webassemblyjs/helper-api-error@1.11.1":
921
+ version "1.11.1"
922
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16"
923
+ integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==
924
+
925
+ "@webassemblyjs/helper-buffer@1.11.1":
926
+ version "1.11.1"
927
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5"
928
+ integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==
929
+
930
+ "@webassemblyjs/helper-numbers@1.11.1":
931
+ version "1.11.1"
932
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae"
933
+ integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==
934
+ dependencies:
935
+ "@webassemblyjs/floating-point-hex-parser" "1.11.1"
936
+ "@webassemblyjs/helper-api-error" "1.11.1"
937
+ "@xtuc/long" "4.2.2"
938
+
939
+ "@webassemblyjs/helper-wasm-bytecode@1.11.1":
940
+ version "1.11.1"
941
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1"
942
+ integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==
943
+
944
+ "@webassemblyjs/helper-wasm-section@1.11.1":
945
+ version "1.11.1"
946
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a"
947
+ integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==
948
+ dependencies:
949
+ "@webassemblyjs/ast" "1.11.1"
950
+ "@webassemblyjs/helper-buffer" "1.11.1"
951
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
952
+ "@webassemblyjs/wasm-gen" "1.11.1"
953
+
954
+ "@webassemblyjs/ieee754@1.11.1":
955
+ version "1.11.1"
956
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614"
957
+ integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==
958
+ dependencies:
959
+ "@xtuc/ieee754" "^1.2.0"
960
+
961
+ "@webassemblyjs/leb128@1.11.1":
962
+ version "1.11.1"
963
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5"
964
+ integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==
965
+ dependencies:
966
+ "@xtuc/long" "4.2.2"
967
+
968
+ "@webassemblyjs/utf8@1.11.1":
969
+ version "1.11.1"
970
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff"
971
+ integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==
972
+
973
+ "@webassemblyjs/wasm-edit@1.11.1":
974
+ version "1.11.1"
975
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6"
976
+ integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==
977
+ dependencies:
978
+ "@webassemblyjs/ast" "1.11.1"
979
+ "@webassemblyjs/helper-buffer" "1.11.1"
980
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
981
+ "@webassemblyjs/helper-wasm-section" "1.11.1"
982
+ "@webassemblyjs/wasm-gen" "1.11.1"
983
+ "@webassemblyjs/wasm-opt" "1.11.1"
984
+ "@webassemblyjs/wasm-parser" "1.11.1"
985
+ "@webassemblyjs/wast-printer" "1.11.1"
986
+
987
+ "@webassemblyjs/wasm-gen@1.11.1":
988
+ version "1.11.1"
989
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76"
990
+ integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==
991
+ dependencies:
992
+ "@webassemblyjs/ast" "1.11.1"
993
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
994
+ "@webassemblyjs/ieee754" "1.11.1"
995
+ "@webassemblyjs/leb128" "1.11.1"
996
+ "@webassemblyjs/utf8" "1.11.1"
997
+
998
+ "@webassemblyjs/wasm-opt@1.11.1":
999
+ version "1.11.1"
1000
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2"
1001
+ integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==
1002
+ dependencies:
1003
+ "@webassemblyjs/ast" "1.11.1"
1004
+ "@webassemblyjs/helper-buffer" "1.11.1"
1005
+ "@webassemblyjs/wasm-gen" "1.11.1"
1006
+ "@webassemblyjs/wasm-parser" "1.11.1"
1007
+
1008
+ "@webassemblyjs/wasm-parser@1.11.1":
1009
+ version "1.11.1"
1010
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199"
1011
+ integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==
1012
+ dependencies:
1013
+ "@webassemblyjs/ast" "1.11.1"
1014
+ "@webassemblyjs/helper-api-error" "1.11.1"
1015
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
1016
+ "@webassemblyjs/ieee754" "1.11.1"
1017
+ "@webassemblyjs/leb128" "1.11.1"
1018
+ "@webassemblyjs/utf8" "1.11.1"
1019
+
1020
+ "@webassemblyjs/wast-printer@1.11.1":
1021
+ version "1.11.1"
1022
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0"
1023
+ integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==
1024
+ dependencies:
1025
+ "@webassemblyjs/ast" "1.11.1"
1026
+ "@xtuc/long" "4.2.2"
1027
+
1028
+ "@webpack-cli/configtest@^1.0.4":
1029
+ version "1.0.4"
1030
+ resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.4.tgz#f03ce6311c0883a83d04569e2c03c6238316d2aa"
1031
+ integrity sha512-cs3XLy+UcxiP6bj0A6u7MLLuwdXJ1c3Dtc0RkKg+wiI1g/Ti1om8+/2hc2A2B60NbBNAbMgyBMHvyymWm/j4wQ==
1032
+
1033
+ "@webpack-cli/info@^1.3.0":
1034
+ version "1.3.0"
1035
+ resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.3.0.tgz#9d78a31101a960997a4acd41ffd9b9300627fe2b"
1036
+ integrity sha512-ASiVB3t9LOKHs5DyVUcxpraBXDOKubYu/ihHhU+t1UPpxsivg6Od2E2qU4gJCekfEddzRBzHhzA/Acyw/mlK/w==
1037
+ dependencies:
1038
+ envinfo "^7.7.3"
1039
+
1040
+ "@webpack-cli/serve@^1.5.2":
1041
+ version "1.5.2"
1042
+ resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.5.2.tgz#ea584b637ff63c5a477f6f21604b5a205b72c9ec"
1043
+ integrity sha512-vgJ5OLWadI8aKjDlOH3rb+dYyPd2GTZuQC/Tihjct6F9GpXGZINo3Y/IVuZVTM1eDQB+/AOsjPUWH/WySDaXvw==
1044
+
1045
+ "@xtuc/ieee754@^1.2.0":
1046
+ version "1.2.0"
1047
+ resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
1048
+ integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
1049
+
1050
+ "@xtuc/long@4.2.2":
1051
+ version "4.2.2"
1052
+ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
1053
+ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
1054
+
1055
+ acorn-import-assertions@^1.7.6:
1056
+ version "1.7.6"
1057
+ resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz#580e3ffcae6770eebeec76c3b9723201e9d01f78"
1058
+ integrity sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA==
1059
+
1060
+ acorn@^8.4.1:
1061
+ version "8.5.0"
1062
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2"
1063
+ integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==
1064
+
1065
+ ajv-keywords@^3.5.2:
1066
+ version "3.5.2"
1067
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
1068
+ integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
1069
+
1070
+ ajv@^6.12.4, ajv@^6.12.5:
1071
+ version "6.12.6"
1072
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
1073
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
1074
+ dependencies:
1075
+ fast-deep-equal "^3.1.1"
1076
+ fast-json-stable-stringify "^2.0.0"
1077
+ json-schema-traverse "^0.4.1"
1078
+ uri-js "^4.2.2"
1079
+
1080
+ ansi-styles@^3.2.1:
1081
+ version "3.2.1"
1082
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
1083
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
1084
+ dependencies:
1085
+ color-convert "^1.9.0"
1086
+
1087
+ anymatch@~3.1.2:
1088
+ version "3.1.2"
1089
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
1090
+ integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
1091
+ dependencies:
1092
+ normalize-path "^3.0.0"
1093
+ picomatch "^2.0.4"
1094
+
1095
+ babel-loader@^8.1.0:
1096
+ version "8.2.2"
1097
+ resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81"
1098
+ integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==
1099
+ dependencies:
1100
+ find-cache-dir "^3.3.1"
1101
+ loader-utils "^1.4.0"
1102
+ make-dir "^3.1.0"
1103
+ schema-utils "^2.6.5"
1104
+
1105
+ babel-plugin-dynamic-import-node@^2.3.3:
1106
+ version "2.3.3"
1107
+ resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
1108
+ integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
1109
+ dependencies:
1110
+ object.assign "^4.1.0"
1111
+
1112
+ babel-plugin-polyfill-corejs2@^0.2.2:
1113
+ version "0.2.2"
1114
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327"
1115
+ integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==
1116
+ dependencies:
1117
+ "@babel/compat-data" "^7.13.11"
1118
+ "@babel/helper-define-polyfill-provider" "^0.2.2"
1119
+ semver "^6.1.1"
1120
+
1121
+ babel-plugin-polyfill-corejs3@^0.2.2:
1122
+ version "0.2.5"
1123
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz#2779846a16a1652244ae268b1e906ada107faf92"
1124
+ integrity sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==
1125
+ dependencies:
1126
+ "@babel/helper-define-polyfill-provider" "^0.2.2"
1127
+ core-js-compat "^3.16.2"
1128
+
1129
+ babel-plugin-polyfill-regenerator@^0.2.2:
1130
+ version "0.2.2"
1131
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077"
1132
+ integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==
1133
+ dependencies:
1134
+ "@babel/helper-define-polyfill-provider" "^0.2.2"
1135
+
1136
+ babel-plugin-syntax-object-rest-spread@^6.8.0:
1137
+ version "6.13.0"
1138
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
1139
+ integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=
1140
+
1141
+ babel-plugin-transform-object-rest-spread@^6.26.0:
1142
+ version "6.26.0"
1143
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06"
1144
+ integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=
1145
+ dependencies:
1146
+ babel-plugin-syntax-object-rest-spread "^6.8.0"
1147
+ babel-runtime "^6.26.0"
1148
+
1149
+ babel-runtime@^6.26.0:
1150
+ version "6.26.0"
1151
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
1152
+ integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
1153
+ dependencies:
1154
+ core-js "^2.4.0"
1155
+ regenerator-runtime "^0.11.0"
1156
+
1157
+ big.js@^5.2.2:
1158
+ version "5.2.2"
1159
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
1160
+ integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
1161
+
1162
+ binary-extensions@^2.0.0:
1163
+ version "2.2.0"
1164
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
1165
+ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
1166
+
1167
+ braces@~3.0.2:
1168
+ version "3.0.2"
1169
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
1170
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
1171
+ dependencies:
1172
+ fill-range "^7.0.1"
1173
+
1174
+ browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.1:
1175
+ version "4.17.1"
1176
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.1.tgz#a98d104f54af441290b7d592626dd541fa642eb9"
1177
+ integrity sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ==
1178
+ dependencies:
1179
+ caniuse-lite "^1.0.30001259"
1180
+ electron-to-chromium "^1.3.846"
1181
+ escalade "^3.1.1"
1182
+ nanocolors "^0.1.5"
1183
+ node-releases "^1.1.76"
1184
+
1185
+ buffer-from@^1.0.0:
1186
+ version "1.1.2"
1187
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
1188
+ integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
1189
+
1190
+ call-bind@^1.0.0:
1191
+ version "1.0.2"
1192
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
1193
+ integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
1194
+ dependencies:
1195
+ function-bind "^1.1.1"
1196
+ get-intrinsic "^1.0.2"
1197
+
1198
+ caniuse-lite@^1.0.30001259:
1199
+ version "1.0.30001261"
1200
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001261.tgz#96d89813c076ea061209a4e040d8dcf0c66a1d01"
1201
+ integrity sha512-vM8D9Uvp7bHIN0fZ2KQ4wnmYFpJo/Etb4Vwsuc+ka0tfGDHvOPrFm6S/7CCNLSOkAUjenT2HnUPESdOIL91FaA==
1202
+
1203
+ chalk@^2.0.0:
1204
+ version "2.4.2"
1205
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
1206
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
1207
+ dependencies:
1208
+ ansi-styles "^3.2.1"
1209
+ escape-string-regexp "^1.0.5"
1210
+ supports-color "^5.3.0"
1211
+
1212
+ "chokidar@>=3.0.0 <4.0.0":
1213
+ version "3.5.2"
1214
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
1215
+ integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
1216
+ dependencies:
1217
+ anymatch "~3.1.2"
1218
+ braces "~3.0.2"
1219
+ glob-parent "~5.1.2"
1220
+ is-binary-path "~2.1.0"
1221
+ is-glob "~4.0.1"
1222
+ normalize-path "~3.0.0"
1223
+ readdirp "~3.6.0"
1224
+ optionalDependencies:
1225
+ fsevents "~2.3.2"
1226
+
1227
+ chrome-trace-event@^1.0.2:
1228
+ version "1.0.3"
1229
+ resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
1230
+ integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
1231
+
1232
+ clone-deep@^4.0.1:
1233
+ version "4.0.1"
1234
+ resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
1235
+ integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==
1236
+ dependencies:
1237
+ is-plain-object "^2.0.4"
1238
+ kind-of "^6.0.2"
1239
+ shallow-clone "^3.0.0"
1240
+
1241
+ color-convert@^1.9.0:
1242
+ version "1.9.3"
1243
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
1244
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
1245
+ dependencies:
1246
+ color-name "1.1.3"
1247
+
1248
+ color-name@1.1.3:
1249
+ version "1.1.3"
1250
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
1251
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
1252
+
1253
+ colorette@^1.2.1:
1254
+ version "1.4.0"
1255
+ resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40"
1256
+ integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==
1257
+
1258
+ commander@^2.20.0:
1259
+ version "2.20.3"
1260
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
1261
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
1262
+
1263
+ commander@^7.0.0:
1264
+ version "7.2.0"
1265
+ resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
1266
+ integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
1267
+
1268
+ commondir@^1.0.1:
1269
+ version "1.0.1"
1270
+ resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
1271
+ integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
1272
+
1273
+ convert-source-map@^1.7.0:
1274
+ version "1.8.0"
1275
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369"
1276
+ integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==
1277
+ dependencies:
1278
+ safe-buffer "~5.1.1"
1279
+
1280
+ core-js-compat@^3.16.0, core-js-compat@^3.16.2:
1281
+ version "3.18.1"
1282
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.18.1.tgz#01942a0877caf9c6e5007c027183cf0bdae6a191"
1283
+ integrity sha512-XJMYx58zo4W0kLPmIingVZA10+7TuKrMLPt83+EzDmxFJQUMcTVVmQ+n5JP4r6Z14qSzhQBRi3NSWoeVyKKXUg==
1284
+ dependencies:
1285
+ browserslist "^4.17.1"
1286
+ semver "7.0.0"
1287
+
1288
+ core-js@^2.4.0:
1289
+ version "2.6.12"
1290
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
1291
+ integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
1292
+
1293
+ cross-env@^7.0.3:
1294
+ version "7.0.3"
1295
+ resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf"
1296
+ integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==
1297
+ dependencies:
1298
+ cross-spawn "^7.0.1"
1299
+
1300
+ cross-spawn@^7.0.1, cross-spawn@^7.0.3:
1301
+ version "7.0.3"
1302
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
1303
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
1304
+ dependencies:
1305
+ path-key "^3.1.0"
1306
+ shebang-command "^2.0.0"
1307
+ which "^2.0.1"
1308
+
1309
+ debug@^4.1.0, debug@^4.1.1:
1310
+ version "4.3.2"
1311
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
1312
+ integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
1313
+ dependencies:
1314
+ ms "2.1.2"
1315
+
1316
+ define-properties@^1.1.3:
1317
+ version "1.1.3"
1318
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
1319
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
1320
+ dependencies:
1321
+ object-keys "^1.0.12"
1322
+
1323
+ electron-to-chromium@^1.3.846:
1324
+ version "1.3.853"
1325
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.853.tgz#f3ed1d31f092cb3a17af188bca6c6a3ec91c3e82"
1326
+ integrity sha512-W4U8n+U8I5/SUaFcqZgbKRmYZwcyEIQVBDf+j5QQK6xChjXnQD+wj248eGR9X4u+dDmDR//8vIfbu4PrdBBIoQ==
1327
+
1328
+ emojis-list@^3.0.0:
1329
+ version "3.0.0"
1330
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
1331
+ integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
1332
+
1333
+ enhanced-resolve@^5.8.3:
1334
+ version "5.8.3"
1335
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0"
1336
+ integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==
1337
+ dependencies:
1338
+ graceful-fs "^4.2.4"
1339
+ tapable "^2.2.0"
1340
+
1341
+ envinfo@^7.7.3:
1342
+ version "7.8.1"
1343
+ resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475"
1344
+ integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==
1345
+
1346
+ es-module-lexer@^0.9.0:
1347
+ version "0.9.1"
1348
+ resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.1.tgz#f203bf394a630a552d381acf01a17ef08843b140"
1349
+ integrity sha512-17Ed9misDnpyNBJh63g1OhW3qUFecDgGOivI85JeZY/LGhDum8e+cltukbkSK8pcJnXXEkya56sp4vSS1nzoUw==
1350
+
1351
+ escalade@^3.1.1:
1352
+ version "3.1.1"
1353
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
1354
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
1355
+
1356
+ escape-string-regexp@^1.0.5:
1357
+ version "1.0.5"
1358
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
1359
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
1360
+
1361
+ eslint-scope@5.1.1:
1362
+ version "5.1.1"
1363
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
1364
+ integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
1365
+ dependencies:
1366
+ esrecurse "^4.3.0"
1367
+ estraverse "^4.1.1"
1368
+
1369
+ esrecurse@^4.3.0:
1370
+ version "4.3.0"
1371
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
1372
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
1373
+ dependencies:
1374
+ estraverse "^5.2.0"
1375
+
1376
+ estraverse@^4.1.1:
1377
+ version "4.3.0"
1378
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
1379
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
1380
+
1381
+ estraverse@^5.2.0:
1382
+ version "5.2.0"
1383
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
1384
+ integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
1385
+
1386
+ esutils@^2.0.2:
1387
+ version "2.0.3"
1388
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
1389
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
1390
+
1391
+ events@^3.2.0:
1392
+ version "3.3.0"
1393
+ resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
1394
+ integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
1395
+
1396
+ execa@^5.0.0:
1397
+ version "5.1.1"
1398
+ resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
1399
+ integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
1400
+ dependencies:
1401
+ cross-spawn "^7.0.3"
1402
+ get-stream "^6.0.0"
1403
+ human-signals "^2.1.0"
1404
+ is-stream "^2.0.0"
1405
+ merge-stream "^2.0.0"
1406
+ npm-run-path "^4.0.1"
1407
+ onetime "^5.1.2"
1408
+ signal-exit "^3.0.3"
1409
+ strip-final-newline "^2.0.0"
1410
+
1411
+ fast-deep-equal@^3.1.1:
1412
+ version "3.1.3"
1413
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
1414
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
1415
+
1416
+ fast-json-stable-stringify@^2.0.0:
1417
+ version "2.1.0"
1418
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
1419
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
1420
+
1421
+ fastest-levenshtein@^1.0.12:
1422
+ version "1.0.12"
1423
+ resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2"
1424
+ integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==
1425
+
1426
+ file-loader@^6.2.0:
1427
+ version "6.2.0"
1428
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d"
1429
+ integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
1430
+ dependencies:
1431
+ loader-utils "^2.0.0"
1432
+ schema-utils "^3.0.0"
1433
+
1434
+ fill-range@^7.0.1:
1435
+ version "7.0.1"
1436
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
1437
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
1438
+ dependencies:
1439
+ to-regex-range "^5.0.1"
1440
+
1441
+ find-cache-dir@^3.3.1:
1442
+ version "3.3.2"
1443
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b"
1444
+ integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==
1445
+ dependencies:
1446
+ commondir "^1.0.1"
1447
+ make-dir "^3.0.2"
1448
+ pkg-dir "^4.1.0"
1449
+
1450
+ find-up@^4.0.0:
1451
+ version "4.1.0"
1452
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
1453
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
1454
+ dependencies:
1455
+ locate-path "^5.0.0"
1456
+ path-exists "^4.0.0"
1457
+
1458
+ fsevents@~2.3.2:
1459
+ version "2.3.2"
1460
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
1461
+ integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
1462
+
1463
+ function-bind@^1.1.1:
1464
+ version "1.1.1"
1465
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
1466
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
1467
+
1468
+ gensync@^1.0.0-beta.2:
1469
+ version "1.0.0-beta.2"
1470
+ resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
1471
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
1472
+
1473
+ get-intrinsic@^1.0.2:
1474
+ version "1.1.1"
1475
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
1476
+ integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
1477
+ dependencies:
1478
+ function-bind "^1.1.1"
1479
+ has "^1.0.3"
1480
+ has-symbols "^1.0.1"
1481
+
1482
+ get-stream@^6.0.0:
1483
+ version "6.0.1"
1484
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
1485
+ integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
1486
+
1487
+ glob-parent@~5.1.2:
1488
+ version "5.1.2"
1489
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
1490
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
1491
+ dependencies:
1492
+ is-glob "^4.0.1"
1493
+
1494
+ glob-to-regexp@^0.4.1:
1495
+ version "0.4.1"
1496
+ resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
1497
+ integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
1498
+
1499
+ globals@^11.1.0:
1500
+ version "11.12.0"
1501
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
1502
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
1503
+
1504
+ graceful-fs@^4.1.2, graceful-fs@^4.2.4:
1505
+ version "4.2.8"
1506
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
1507
+ integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
1508
+
1509
+ has-flag@^3.0.0:
1510
+ version "3.0.0"
1511
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
1512
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
1513
+
1514
+ has-flag@^4.0.0:
1515
+ version "4.0.0"
1516
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
1517
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
1518
+
1519
+ has-symbols@^1.0.1:
1520
+ version "1.0.2"
1521
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
1522
+ integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
1523
+
1524
+ has@^1.0.3:
1525
+ version "1.0.3"
1526
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
1527
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
1528
+ dependencies:
1529
+ function-bind "^1.1.1"
1530
+
1531
+ human-signals@^2.1.0:
1532
+ version "2.1.0"
1533
+ resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
1534
+ integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
1535
+
1536
+ import-local@^3.0.2:
1537
+ version "3.0.2"
1538
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6"
1539
+ integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==
1540
+ dependencies:
1541
+ pkg-dir "^4.2.0"
1542
+ resolve-cwd "^3.0.0"
1543
+
1544
+ interpret@^2.2.0:
1545
+ version "2.2.0"
1546
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9"
1547
+ integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==
1548
+
1549
+ is-binary-path@~2.1.0:
1550
+ version "2.1.0"
1551
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
1552
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
1553
+ dependencies:
1554
+ binary-extensions "^2.0.0"
1555
+
1556
+ is-core-module@^2.2.0:
1557
+ version "2.7.0"
1558
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.7.0.tgz#3c0ef7d31b4acfc574f80c58409d568a836848e3"
1559
+ integrity sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==
1560
+ dependencies:
1561
+ has "^1.0.3"
1562
+
1563
+ is-extglob@^2.1.1:
1564
+ version "2.1.1"
1565
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
1566
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
1567
+
1568
+ is-glob@^4.0.1, is-glob@~4.0.1:
1569
+ version "4.0.2"
1570
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.2.tgz#859fc2e731e58c902f99fcabccb75a7dd07d29d8"
1571
+ integrity sha512-ZZTOjRcDjuAAAv2cTBQP/lL59ZTArx77+7UzHdWW/XB1mrfp7DEaVpKmZ0XIzx+M7AxfhKcqV+nMetUQmFifwg==
1572
+ dependencies:
1573
+ is-extglob "^2.1.1"
1574
+
1575
+ is-number@^7.0.0:
1576
+ version "7.0.0"
1577
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
1578
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
1579
+
1580
+ is-plain-object@^2.0.4:
1581
+ version "2.0.4"
1582
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
1583
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
1584
+ dependencies:
1585
+ isobject "^3.0.1"
1586
+
1587
+ is-stream@^2.0.0:
1588
+ version "2.0.1"
1589
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
1590
+ integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
1591
+
1592
+ isexe@^2.0.0:
1593
+ version "2.0.0"
1594
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1595
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
1596
+
1597
+ isobject@^3.0.1:
1598
+ version "3.0.1"
1599
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
1600
+ integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
1601
+
1602
+ jest-worker@^27.0.6:
1603
+ version "27.2.3"
1604
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.2.3.tgz#396e83d04ca575230a9bcb255c2b66aec07cb931"
1605
+ integrity sha512-ZwOvv4GCIPviL+Ie4pVguz4N5w/6IGbTaHBYOl3ZcsZZktaL7d8JOU0rmovoED7AJZKA8fvmLbBg8yg80u/tGA==
1606
+ dependencies:
1607
+ "@types/node" "*"
1608
+ merge-stream "^2.0.0"
1609
+ supports-color "^8.0.0"
1610
+
1611
+ js-tokens@^4.0.0:
1612
+ version "4.0.0"
1613
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
1614
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
1615
+
1616
+ jsesc@^2.5.1:
1617
+ version "2.5.2"
1618
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
1619
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
1620
+
1621
+ jsesc@~0.5.0:
1622
+ version "0.5.0"
1623
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
1624
+ integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
1625
+
1626
+ json-parse-better-errors@^1.0.2:
1627
+ version "1.0.2"
1628
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
1629
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
1630
+
1631
+ json-schema-traverse@^0.4.1:
1632
+ version "0.4.1"
1633
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
1634
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
1635
+
1636
+ json5@^1.0.1:
1637
+ version "1.0.1"
1638
+ resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
1639
+ integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
1640
+ dependencies:
1641
+ minimist "^1.2.0"
1642
+
1643
+ json5@^2.1.2:
1644
+ version "2.2.0"
1645
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
1646
+ integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
1647
+ dependencies:
1648
+ minimist "^1.2.5"
1649
+
1650
+ kind-of@^6.0.2:
1651
+ version "6.0.3"
1652
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
1653
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
1654
+
1655
+ klona@^2.0.4:
1656
+ version "2.0.4"
1657
+ resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0"
1658
+ integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==
1659
+
1660
+ loader-runner@^4.2.0:
1661
+ version "4.2.0"
1662
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384"
1663
+ integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==
1664
+
1665
+ loader-utils@^1.4.0:
1666
+ version "1.4.0"
1667
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
1668
+ integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
1669
+ dependencies:
1670
+ big.js "^5.2.2"
1671
+ emojis-list "^3.0.0"
1672
+ json5 "^1.0.1"
1673
+
1674
+ loader-utils@^2.0.0:
1675
+ version "2.0.0"
1676
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0"
1677
+ integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==
1678
+ dependencies:
1679
+ big.js "^5.2.2"
1680
+ emojis-list "^3.0.0"
1681
+ json5 "^2.1.2"
1682
+
1683
+ locate-path@^5.0.0:
1684
+ version "5.0.0"
1685
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
1686
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
1687
+ dependencies:
1688
+ p-locate "^4.1.0"
1689
+
1690
+ lodash.debounce@^4.0.8:
1691
+ version "4.0.8"
1692
+ resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
1693
+ integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
1694
+
1695
+ make-dir@^3.0.2, make-dir@^3.1.0:
1696
+ version "3.1.0"
1697
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
1698
+ integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
1699
+ dependencies:
1700
+ semver "^6.0.0"
1701
+
1702
+ merge-stream@^2.0.0:
1703
+ version "2.0.0"
1704
+ resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
1705
+ integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
1706
+
1707
+ mime-db@1.49.0:
1708
+ version "1.49.0"
1709
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed"
1710
+ integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==
1711
+
1712
+ mime-types@^2.1.27:
1713
+ version "2.1.32"
1714
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5"
1715
+ integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==
1716
+ dependencies:
1717
+ mime-db "1.49.0"
1718
+
1719
+ mimic-fn@^2.1.0:
1720
+ version "2.1.0"
1721
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
1722
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
1723
+
1724
+ minimist@^1.2.0, minimist@^1.2.5:
1725
+ version "1.2.5"
1726
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
1727
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
1728
+
1729
+ ms@2.1.2:
1730
+ version "2.1.2"
1731
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1732
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1733
+
1734
+ nanocolors@^0.1.5:
1735
+ version "0.1.12"
1736
+ resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.12.tgz#8577482c58cbd7b5bb1681db4cf48f11a87fd5f6"
1737
+ integrity sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==
1738
+
1739
+ neo-async@^2.6.2:
1740
+ version "2.6.2"
1741
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
1742
+ integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
1743
+
1744
+ node-releases@^1.1.76:
1745
+ version "1.1.76"
1746
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.76.tgz#df245b062b0cafbd5282ab6792f7dccc2d97f36e"
1747
+ integrity sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==
1748
+
1749
+ normalize-path@^3.0.0, normalize-path@~3.0.0:
1750
+ version "3.0.0"
1751
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
1752
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
1753
+
1754
+ npm-run-path@^4.0.1:
1755
+ version "4.0.1"
1756
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
1757
+ integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
1758
+ dependencies:
1759
+ path-key "^3.0.0"
1760
+
1761
+ object-keys@^1.0.12, object-keys@^1.1.1:
1762
+ version "1.1.1"
1763
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
1764
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
1765
+
1766
+ object.assign@^4.1.0:
1767
+ version "4.1.2"
1768
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
1769
+ integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
1770
+ dependencies:
1771
+ call-bind "^1.0.0"
1772
+ define-properties "^1.1.3"
1773
+ has-symbols "^1.0.1"
1774
+ object-keys "^1.1.1"
1775
+
1776
+ onetime@^5.1.2:
1777
+ version "5.1.2"
1778
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
1779
+ integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
1780
+ dependencies:
1781
+ mimic-fn "^2.1.0"
1782
+
1783
+ p-limit@^2.2.0:
1784
+ version "2.3.0"
1785
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
1786
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
1787
+ dependencies:
1788
+ p-try "^2.0.0"
1789
+
1790
+ p-limit@^3.1.0:
1791
+ version "3.1.0"
1792
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
1793
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
1794
+ dependencies:
1795
+ yocto-queue "^0.1.0"
1796
+
1797
+ p-locate@^4.1.0:
1798
+ version "4.1.0"
1799
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
1800
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
1801
+ dependencies:
1802
+ p-limit "^2.2.0"
1803
+
1804
+ p-try@^2.0.0:
1805
+ version "2.2.0"
1806
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
1807
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
1808
+
1809
+ path-exists@^4.0.0:
1810
+ version "4.0.0"
1811
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
1812
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
1813
+
1814
+ path-key@^3.0.0, path-key@^3.1.0:
1815
+ version "3.1.1"
1816
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
1817
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
1818
+
1819
+ path-parse@^1.0.6:
1820
+ version "1.0.7"
1821
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
1822
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
1823
+
1824
+ picomatch@^2.0.4, picomatch@^2.2.1:
1825
+ version "2.3.0"
1826
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
1827
+ integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
1828
+
1829
+ pkg-dir@^4.1.0, pkg-dir@^4.2.0:
1830
+ version "4.2.0"
1831
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
1832
+ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
1833
+ dependencies:
1834
+ find-up "^4.0.0"
1835
+
1836
+ punycode@^2.1.0:
1837
+ version "2.1.1"
1838
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
1839
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
1840
+
1841
+ randombytes@^2.1.0:
1842
+ version "2.1.0"
1843
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
1844
+ integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
1845
+ dependencies:
1846
+ safe-buffer "^5.1.0"
1847
+
1848
+ readdirp@~3.6.0:
1849
+ version "3.6.0"
1850
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
1851
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
1852
+ dependencies:
1853
+ picomatch "^2.2.1"
1854
+
1855
+ rechoir@^0.7.0:
1856
+ version "0.7.1"
1857
+ resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686"
1858
+ integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==
1859
+ dependencies:
1860
+ resolve "^1.9.0"
1861
+
1862
+ regenerate-unicode-properties@^9.0.0:
1863
+ version "9.0.0"
1864
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326"
1865
+ integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==
1866
+ dependencies:
1867
+ regenerate "^1.4.2"
1868
+
1869
+ regenerate@^1.4.2:
1870
+ version "1.4.2"
1871
+ resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
1872
+ integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
1873
+
1874
+ regenerator-runtime@^0.11.0:
1875
+ version "0.11.1"
1876
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
1877
+ integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
1878
+
1879
+ regenerator-runtime@^0.13.4:
1880
+ version "0.13.9"
1881
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
1882
+ integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
1883
+
1884
+ regenerator-transform@^0.14.2:
1885
+ version "0.14.5"
1886
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4"
1887
+ integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==
1888
+ dependencies:
1889
+ "@babel/runtime" "^7.8.4"
1890
+
1891
+ regexpu-core@^4.7.1:
1892
+ version "4.8.0"
1893
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0"
1894
+ integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==
1895
+ dependencies:
1896
+ regenerate "^1.4.2"
1897
+ regenerate-unicode-properties "^9.0.0"
1898
+ regjsgen "^0.5.2"
1899
+ regjsparser "^0.7.0"
1900
+ unicode-match-property-ecmascript "^2.0.0"
1901
+ unicode-match-property-value-ecmascript "^2.0.0"
1902
+
1903
+ regjsgen@^0.5.2:
1904
+ version "0.5.2"
1905
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
1906
+ integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
1907
+
1908
+ regjsparser@^0.7.0:
1909
+ version "0.7.0"
1910
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968"
1911
+ integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==
1912
+ dependencies:
1913
+ jsesc "~0.5.0"
1914
+
1915
+ resolve-cwd@^3.0.0:
1916
+ version "3.0.0"
1917
+ resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
1918
+ integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
1919
+ dependencies:
1920
+ resolve-from "^5.0.0"
1921
+
1922
+ resolve-from@^5.0.0:
1923
+ version "5.0.0"
1924
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
1925
+ integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
1926
+
1927
+ resolve@^1.14.2, resolve@^1.9.0:
1928
+ version "1.20.0"
1929
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
1930
+ integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
1931
+ dependencies:
1932
+ is-core-module "^2.2.0"
1933
+ path-parse "^1.0.6"
1934
+
1935
+ safe-buffer@^5.1.0:
1936
+ version "5.2.1"
1937
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
1938
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
1939
+
1940
+ safe-buffer@~5.1.1:
1941
+ version "5.1.2"
1942
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
1943
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
1944
+
1945
+ sass-loader@^12.1.0:
1946
+ version "12.1.0"
1947
+ resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.1.0.tgz#b73324622231009da6fba61ab76013256380d201"
1948
+ integrity sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==
1949
+ dependencies:
1950
+ klona "^2.0.4"
1951
+ neo-async "^2.6.2"
1952
+
1953
+ sass@^1.42.1:
1954
+ version "1.42.1"
1955
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.42.1.tgz#5ab17bebc1cb1881ad2e0c9a932c66ad64e441e2"
1956
+ integrity sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg==
1957
+ dependencies:
1958
+ chokidar ">=3.0.0 <4.0.0"
1959
+
1960
+ schema-utils@^2.6.5:
1961
+ version "2.7.1"
1962
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
1963
+ integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
1964
+ dependencies:
1965
+ "@types/json-schema" "^7.0.5"
1966
+ ajv "^6.12.4"
1967
+ ajv-keywords "^3.5.2"
1968
+
1969
+ schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1:
1970
+ version "3.1.1"
1971
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281"
1972
+ integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==
1973
+ dependencies:
1974
+ "@types/json-schema" "^7.0.8"
1975
+ ajv "^6.12.5"
1976
+ ajv-keywords "^3.5.2"
1977
+
1978
+ semver@7.0.0:
1979
+ version "7.0.0"
1980
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
1981
+ integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
1982
+
1983
+ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
1984
+ version "6.3.0"
1985
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
1986
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
1987
+
1988
+ serialize-javascript@^6.0.0:
1989
+ version "6.0.0"
1990
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
1991
+ integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
1992
+ dependencies:
1993
+ randombytes "^2.1.0"
1994
+
1995
+ shallow-clone@^3.0.0:
1996
+ version "3.0.1"
1997
+ resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
1998
+ integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==
1999
+ dependencies:
2000
+ kind-of "^6.0.2"
2001
+
2002
+ shebang-command@^2.0.0:
2003
+ version "2.0.0"
2004
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
2005
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
2006
+ dependencies:
2007
+ shebang-regex "^3.0.0"
2008
+
2009
+ shebang-regex@^3.0.0:
2010
+ version "3.0.0"
2011
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
2012
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
2013
+
2014
+ signal-exit@^3.0.3:
2015
+ version "3.0.4"
2016
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.4.tgz#366a4684d175b9cab2081e3681fda3747b6c51d7"
2017
+ integrity sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q==
2018
+
2019
+ source-map-support@~0.5.20:
2020
+ version "0.5.20"
2021
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9"
2022
+ integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==
2023
+ dependencies:
2024
+ buffer-from "^1.0.0"
2025
+ source-map "^0.6.0"
2026
+
2027
+ source-map@^0.5.0:
2028
+ version "0.5.7"
2029
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
2030
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
2031
+
2032
+ source-map@^0.6.0, source-map@^0.6.1:
2033
+ version "0.6.1"
2034
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
2035
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
2036
+
2037
+ source-map@~0.7.2:
2038
+ version "0.7.3"
2039
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
2040
+ integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
2041
+
2042
+ strip-final-newline@^2.0.0:
2043
+ version "2.0.0"
2044
+ resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
2045
+ integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
2046
+
2047
+ supports-color@^5.3.0:
2048
+ version "5.5.0"
2049
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
2050
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
2051
+ dependencies:
2052
+ has-flag "^3.0.0"
2053
+
2054
+ supports-color@^8.0.0:
2055
+ version "8.1.1"
2056
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
2057
+ integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
2058
+ dependencies:
2059
+ has-flag "^4.0.0"
2060
+
2061
+ tapable@^2.1.1, tapable@^2.2.0:
2062
+ version "2.2.1"
2063
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
2064
+ integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
2065
+
2066
+ terser-webpack-plugin@^5.1.3:
2067
+ version "5.2.4"
2068
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz#ad1be7639b1cbe3ea49fab995cbe7224b31747a1"
2069
+ integrity sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==
2070
+ dependencies:
2071
+ jest-worker "^27.0.6"
2072
+ p-limit "^3.1.0"
2073
+ schema-utils "^3.1.1"
2074
+ serialize-javascript "^6.0.0"
2075
+ source-map "^0.6.1"
2076
+ terser "^5.7.2"
2077
+
2078
+ terser@^5.7.2:
2079
+ version "5.9.0"
2080
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351"
2081
+ integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==
2082
+ dependencies:
2083
+ commander "^2.20.0"
2084
+ source-map "~0.7.2"
2085
+ source-map-support "~0.5.20"
2086
+
2087
+ to-fast-properties@^2.0.0:
2088
+ version "2.0.0"
2089
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
2090
+ integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
2091
+
2092
+ to-regex-range@^5.0.1:
2093
+ version "5.0.1"
2094
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
2095
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
2096
+ dependencies:
2097
+ is-number "^7.0.0"
2098
+
2099
+ unicode-canonical-property-names-ecmascript@^2.0.0:
2100
+ version "2.0.0"
2101
+ resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc"
2102
+ integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==
2103
+
2104
+ unicode-match-property-ecmascript@^2.0.0:
2105
+ version "2.0.0"
2106
+ resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3"
2107
+ integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==
2108
+ dependencies:
2109
+ unicode-canonical-property-names-ecmascript "^2.0.0"
2110
+ unicode-property-aliases-ecmascript "^2.0.0"
2111
+
2112
+ unicode-match-property-value-ecmascript@^2.0.0:
2113
+ version "2.0.0"
2114
+ resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714"
2115
+ integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==
2116
+
2117
+ unicode-property-aliases-ecmascript@^2.0.0:
2118
+ version "2.0.0"
2119
+ resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8"
2120
+ integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==
2121
+
2122
+ uri-js@^4.2.2:
2123
+ version "4.4.1"
2124
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
2125
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
2126
+ dependencies:
2127
+ punycode "^2.1.0"
2128
+
2129
+ v8-compile-cache@^2.2.0:
2130
+ version "2.3.0"
2131
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
2132
+ integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
2133
+
2134
+ watchpack@^2.2.0:
2135
+ version "2.2.0"
2136
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.2.0.tgz#47d78f5415fe550ecd740f99fe2882323a58b1ce"
2137
+ integrity sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==
2138
+ dependencies:
2139
+ glob-to-regexp "^0.4.1"
2140
+ graceful-fs "^4.1.2"
2141
+
2142
+ webpack-cli@^4.8.0:
2143
+ version "4.8.0"
2144
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.8.0.tgz#5fc3c8b9401d3c8a43e2afceacfa8261962338d1"
2145
+ integrity sha512-+iBSWsX16uVna5aAYN6/wjhJy1q/GKk4KjKvfg90/6hykCTSgozbfz5iRgDTSJt/LgSbYxdBX3KBHeobIs+ZEw==
2146
+ dependencies:
2147
+ "@discoveryjs/json-ext" "^0.5.0"
2148
+ "@webpack-cli/configtest" "^1.0.4"
2149
+ "@webpack-cli/info" "^1.3.0"
2150
+ "@webpack-cli/serve" "^1.5.2"
2151
+ colorette "^1.2.1"
2152
+ commander "^7.0.0"
2153
+ execa "^5.0.0"
2154
+ fastest-levenshtein "^1.0.12"
2155
+ import-local "^3.0.2"
2156
+ interpret "^2.2.0"
2157
+ rechoir "^0.7.0"
2158
+ v8-compile-cache "^2.2.0"
2159
+ webpack-merge "^5.7.3"
2160
+
2161
+ webpack-merge@^5.7.3:
2162
+ version "5.8.0"
2163
+ resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61"
2164
+ integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==
2165
+ dependencies:
2166
+ clone-deep "^4.0.1"
2167
+ wildcard "^2.0.0"
2168
+
2169
+ webpack-sources@^3.2.0:
2170
+ version "3.2.1"
2171
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.1.tgz#251a7d9720d75ada1469ca07dbb62f3641a05b6d"
2172
+ integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==
2173
+
2174
+ webpack@^5.55.1:
2175
+ version "5.55.1"
2176
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.55.1.tgz#426ebe54c15fa57f7b242590f65fd182382b5998"
2177
+ integrity sha512-EYp9lwaOOAs+AA/KviNZ7bQiITHm4bXQvyTPewD2+f5YGjv6sfiClm40yeX5FgBMxh5bxcB6LryiFoP09B97Ug==
2178
+ dependencies:
2179
+ "@types/eslint-scope" "^3.7.0"
2180
+ "@types/estree" "^0.0.50"
2181
+ "@webassemblyjs/ast" "1.11.1"
2182
+ "@webassemblyjs/wasm-edit" "1.11.1"
2183
+ "@webassemblyjs/wasm-parser" "1.11.1"
2184
+ acorn "^8.4.1"
2185
+ acorn-import-assertions "^1.7.6"
2186
+ browserslist "^4.14.5"
2187
+ chrome-trace-event "^1.0.2"
2188
+ enhanced-resolve "^5.8.3"
2189
+ es-module-lexer "^0.9.0"
2190
+ eslint-scope "5.1.1"
2191
+ events "^3.2.0"
2192
+ glob-to-regexp "^0.4.1"
2193
+ graceful-fs "^4.2.4"
2194
+ json-parse-better-errors "^1.0.2"
2195
+ loader-runner "^4.2.0"
2196
+ mime-types "^2.1.27"
2197
+ neo-async "^2.6.2"
2198
+ schema-utils "^3.1.0"
2199
+ tapable "^2.1.1"
2200
+ terser-webpack-plugin "^5.1.3"
2201
+ watchpack "^2.2.0"
2202
+ webpack-sources "^3.2.0"
2203
+
2204
+ which@^2.0.1:
2205
+ version "2.0.2"
2206
+ resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
2207
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
2208
+ dependencies:
2209
+ isexe "^2.0.0"
2210
+
2211
+ wildcard@^2.0.0:
2212
+ version "2.0.0"
2213
+ resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
2214
+ integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
2215
+
2216
+ yocto-queue@^0.1.0:
2217
+ version "0.1.0"
2218
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
2219
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
modules/ppcp-wc-gateway/assets/js/gateway-settings.js CHANGED
@@ -1,2 +1 @@
1
- !function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t){document.addEventListener("DOMContentLoaded",()=>{const e=document.querySelectorAll("#ppcp-message_enabled, #ppcp-message_cart_enabled, #ppcp-message_product_enabled"),t=document.querySelectorAll("#ppcp-vault_enabled");function n(e){return Array.prototype.slice.call(e).filter(e=>!e.disabled&&e.checked).length>0}function r(e){e.forEach(e=>e.setAttribute("disabled","true"))}function o(e){e.forEach(e=>e.removeAttribute("disabled"))}function a(){n(e)?r(t):o(t),n(t)?r(e):o(e),"undefined"!=typeof PayPalCommerceGatewaySettings&&"1"===PayPalCommerceGatewaySettings.vaulting_features_available||r(t)}a(),e.forEach(e=>e.addEventListener("change",a)),t.forEach(e=>e.addEventListener("change",a))})}]);
2
- //# sourceMappingURL=gateway-settings.js.map
1
+ (()=>{var __webpack_modules__={795:()=>{eval(";\ndocument.addEventListener('DOMContentLoaded', () => {\n const payLaterMessagingCheckboxes = document.querySelectorAll(\"#ppcp-message_enabled, #ppcp-message_cart_enabled, #ppcp-message_product_enabled\");\n const vaultingCheckboxes = document.querySelectorAll(\"#ppcp-vault_enabled\");\n\n function atLeastOneChecked(checkboxesNodeList) {\n return Array.prototype.slice.call(checkboxesNodeList).filter(node => !node.disabled && node.checked).length > 0;\n }\n\n function disableAll(nodeList) {\n nodeList.forEach(node => node.setAttribute('disabled', 'true'));\n }\n\n function enableAll(nodeList) {\n nodeList.forEach(node => node.removeAttribute('disabled'));\n }\n\n function updateCheckboxes() {\n atLeastOneChecked(payLaterMessagingCheckboxes) ? disableAll(vaultingCheckboxes) : enableAll(vaultingCheckboxes);\n atLeastOneChecked(vaultingCheckboxes) ? disableAll(payLaterMessagingCheckboxes) : enableAll(payLaterMessagingCheckboxes);\n\n if (typeof PayPalCommerceGatewaySettings === 'undefined' || PayPalCommerceGatewaySettings.vaulting_features_available !== '1') {\n disableAll(vaultingCheckboxes);\n }\n }\n\n updateCheckboxes();\n payLaterMessagingCheckboxes.forEach(node => node.addEventListener('change', updateCheckboxes));\n vaultingCheckboxes.forEach(node => node.addEventListener('change', updateCheckboxes));\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wcGNwLXdjLWdhdGV3YXkvLi9yZXNvdXJjZXMvanMvZ2F0ZXdheS1zZXR0aW5ncy5qcz8xODEzIl0sIm5hbWVzIjpbImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInBheUxhdGVyTWVzc2FnaW5nQ2hlY2tib3hlcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJ2YXVsdGluZ0NoZWNrYm94ZXMiLCJhdExlYXN0T25lQ2hlY2tlZCIsImNoZWNrYm94ZXNOb2RlTGlzdCIsIkFycmF5IiwicHJvdG90eXBlIiwic2xpY2UiLCJjYWxsIiwiZmlsdGVyIiwibm9kZSIsImRpc2FibGVkIiwiY2hlY2tlZCIsImxlbmd0aCIsImRpc2FibGVBbGwiLCJub2RlTGlzdCIsImZvckVhY2giLCJzZXRBdHRyaWJ1dGUiLCJlbmFibGVBbGwiLCJyZW1vdmVBdHRyaWJ1dGUiLCJ1cGRhdGVDaGVja2JveGVzIiwiUGF5UGFsQ29tbWVyY2VHYXRld2F5U2V0dGluZ3MiLCJ2YXVsdGluZ19mZWF0dXJlc19hdmFpbGFibGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUNBLFFBQVEsQ0FBQ0MsZ0JBQVQsQ0FDRyxrQkFESCxFQUVHLE1BQU07QUFDRixRQUFNQywyQkFBMkIsR0FBR0YsUUFBUSxDQUFDRyxnQkFBVCxDQUNoQyxrRkFEZ0MsQ0FBcEM7QUFJQSxRQUFNQyxrQkFBa0IsR0FBR0osUUFBUSxDQUFDRyxnQkFBVCxDQUN2QixxQkFEdUIsQ0FBM0I7O0FBSUEsV0FBU0UsaUJBQVQsQ0FBMkJDLGtCQUEzQixFQUErQztBQUMzQyxXQUFPQyxLQUFLLENBQUNDLFNBQU4sQ0FBZ0JDLEtBQWhCLENBQXNCQyxJQUF0QixDQUEyQkosa0JBQTNCLEVBQStDSyxNQUEvQyxDQUFzREMsSUFBSSxJQUFJLENBQUNBLElBQUksQ0FBQ0MsUUFBTixJQUFrQkQsSUFBSSxDQUFDRSxPQUFyRixFQUE4RkMsTUFBOUYsR0FBdUcsQ0FBOUc7QUFDSDs7QUFFRCxXQUFTQyxVQUFULENBQW9CQyxRQUFwQixFQUE2QjtBQUN6QkEsSUFBQUEsUUFBUSxDQUFDQyxPQUFULENBQWlCTixJQUFJLElBQUlBLElBQUksQ0FBQ08sWUFBTCxDQUFrQixVQUFsQixFQUE4QixNQUE5QixDQUF6QjtBQUNIOztBQUVELFdBQVNDLFNBQVQsQ0FBbUJILFFBQW5CLEVBQTRCO0FBQ3hCQSxJQUFBQSxRQUFRLENBQUNDLE9BQVQsQ0FBaUJOLElBQUksSUFBSUEsSUFBSSxDQUFDUyxlQUFMLENBQXFCLFVBQXJCLENBQXpCO0FBQ0g7O0FBRUQsV0FBU0MsZ0JBQVQsR0FBNEI7QUFDeEJqQixJQUFBQSxpQkFBaUIsQ0FBQ0gsMkJBQUQsQ0FBakIsR0FBaURjLFVBQVUsQ0FBQ1osa0JBQUQsQ0FBM0QsR0FBa0ZnQixTQUFTLENBQUNoQixrQkFBRCxDQUEzRjtBQUNBQyxJQUFBQSxpQkFBaUIsQ0FBQ0Qsa0JBQUQsQ0FBakIsR0FBd0NZLFVBQVUsQ0FBQ2QsMkJBQUQsQ0FBbEQsR0FBa0ZrQixTQUFTLENBQUNsQiwyQkFBRCxDQUEzRjs7QUFFQSxRQUFHLE9BQU9xQiw2QkFBUCxLQUF5QyxXQUF6QyxJQUF3REEsNkJBQTZCLENBQUNDLDJCQUE5QixLQUE4RCxHQUF6SCxFQUErSDtBQUMzSFIsTUFBQUEsVUFBVSxDQUFDWixrQkFBRCxDQUFWO0FBQ0g7QUFDSjs7QUFFRGtCLEVBQUFBLGdCQUFnQjtBQUVoQnBCLEVBQUFBLDJCQUEyQixDQUFDZ0IsT0FBNUIsQ0FBb0NOLElBQUksSUFBSUEsSUFBSSxDQUFDWCxnQkFBTCxDQUFzQixRQUF0QixFQUFnQ3FCLGdCQUFoQyxDQUE1QztBQUNBbEIsRUFBQUEsa0JBQWtCLENBQUNjLE9BQW5CLENBQTJCTixJQUFJLElBQUlBLElBQUksQ0FBQ1gsZ0JBQUwsQ0FBc0IsUUFBdEIsRUFBZ0NxQixnQkFBaEMsQ0FBbkM7QUFDSCxDQXBDSiIsInNvdXJjZXNDb250ZW50IjpbIjtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICdET01Db250ZW50TG9hZGVkJyxcbiAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBheUxhdGVyTWVzc2FnaW5nQ2hlY2tib3hlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgICBcIiNwcGNwLW1lc3NhZ2VfZW5hYmxlZCwgI3BwY3AtbWVzc2FnZV9jYXJ0X2VuYWJsZWQsICNwcGNwLW1lc3NhZ2VfcHJvZHVjdF9lbmFibGVkXCJcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbnN0IHZhdWx0aW5nQ2hlY2tib3hlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgICBcIiNwcGNwLXZhdWx0X2VuYWJsZWRcIlxuICAgICAgICApXG5cbiAgICAgICAgZnVuY3Rpb24gYXRMZWFzdE9uZUNoZWNrZWQoY2hlY2tib3hlc05vZGVMaXN0KSB7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoY2hlY2tib3hlc05vZGVMaXN0KS5maWx0ZXIobm9kZSA9PiAhbm9kZS5kaXNhYmxlZCAmJiBub2RlLmNoZWNrZWQpLmxlbmd0aCA+IDBcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGRpc2FibGVBbGwobm9kZUxpc3Qpe1xuICAgICAgICAgICAgbm9kZUxpc3QuZm9yRWFjaChub2RlID0+IG5vZGUuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICd0cnVlJykpXG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBlbmFibGVBbGwobm9kZUxpc3Qpe1xuICAgICAgICAgICAgbm9kZUxpc3QuZm9yRWFjaChub2RlID0+IG5vZGUucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpKVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlQ2hlY2tib3hlcygpIHtcbiAgICAgICAgICAgIGF0TGVhc3RPbmVDaGVja2VkKHBheUxhdGVyTWVzc2FnaW5nQ2hlY2tib3hlcykgPyBkaXNhYmxlQWxsKHZhdWx0aW5nQ2hlY2tib3hlcykgOiBlbmFibGVBbGwodmF1bHRpbmdDaGVja2JveGVzKVxuICAgICAgICAgICAgYXRMZWFzdE9uZUNoZWNrZWQodmF1bHRpbmdDaGVja2JveGVzKSA/IGRpc2FibGVBbGwocGF5TGF0ZXJNZXNzYWdpbmdDaGVja2JveGVzKSA6IGVuYWJsZUFsbChwYXlMYXRlck1lc3NhZ2luZ0NoZWNrYm94ZXMpXG5cbiAgICAgICAgICAgIGlmKHR5cGVvZiBQYXlQYWxDb21tZXJjZUdhdGV3YXlTZXR0aW5ncyA9PT0gJ3VuZGVmaW5lZCcgfHwgUGF5UGFsQ29tbWVyY2VHYXRld2F5U2V0dGluZ3MudmF1bHRpbmdfZmVhdHVyZXNfYXZhaWxhYmxlICE9PSAnMScgKSB7XG4gICAgICAgICAgICAgICAgZGlzYWJsZUFsbCh2YXVsdGluZ0NoZWNrYm94ZXMpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVDaGVja2JveGVzKClcblxuICAgICAgICBwYXlMYXRlck1lc3NhZ2luZ0NoZWNrYm94ZXMuZm9yRWFjaChub2RlID0+IG5vZGUuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdXBkYXRlQ2hlY2tib3hlcykpXG4gICAgICAgIHZhdWx0aW5nQ2hlY2tib3hlcy5mb3JFYWNoKG5vZGUgPT4gbm9kZS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB1cGRhdGVDaGVja2JveGVzKSk7XG4gICAgfVxuKTtcbiJdLCJmaWxlIjoiNzk1LmpzIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///795\n")}},__webpack_exports__={};__webpack_modules__[795]()})();
 
modules/ppcp-wc-gateway/assets/js/gateway-settings.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./resources/js/gateway-settings.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","document","addEventListener","payLaterMessagingCheckboxes","querySelectorAll","vaultingCheckboxes","atLeastOneChecked","checkboxesNodeList","Array","slice","filter","node","disabled","checked","length","disableAll","nodeList","forEach","setAttribute","enableAll","removeAttribute","updateCheckboxes","PayPalCommerceGatewaySettings","vaulting_features_available"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,G,gBClFpDC,SAASC,iBACN,mBACA,KACI,MAAMC,EAA8BF,SAASG,iBACzC,oFAGEC,EAAqBJ,SAASG,iBAChC,uBAGJ,SAASE,EAAkBC,GACvB,OAAOC,MAAMX,UAAUY,MAAMrC,KAAKmC,GAAoBG,OAAOC,IAASA,EAAKC,UAAYD,EAAKE,SAASC,OAAS,EAGlH,SAASC,EAAWC,GAChBA,EAASC,QAAQN,GAAQA,EAAKO,aAAa,WAAY,SAG3D,SAASC,EAAUH,GACfA,EAASC,QAAQN,GAAQA,EAAKS,gBAAgB,aAGlD,SAASC,IACLf,EAAkBH,GAA+BY,EAAWV,GAAsBc,EAAUd,GAC5FC,EAAkBD,GAAsBU,EAAWZ,GAA+BgB,EAAUhB,GAEhD,oBAAlCmB,+BAA+G,MAA9DA,8BAA8BC,6BACrFR,EAAWV,GAInBgB,IAEAlB,EAA4Bc,QAAQN,GAAQA,EAAKT,iBAAiB,SAAUmB,IAC5EhB,EAAmBY,QAAQN,GAAQA,EAAKT,iBAAiB,SAAUmB","file":"js/gateway-settings.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n",";document.addEventListener(\n 'DOMContentLoaded',\n () => {\n const payLaterMessagingCheckboxes = document.querySelectorAll(\n \"#ppcp-message_enabled, #ppcp-message_cart_enabled, #ppcp-message_product_enabled\"\n )\n\n const vaultingCheckboxes = document.querySelectorAll(\n \"#ppcp-vault_enabled\"\n )\n\n function atLeastOneChecked(checkboxesNodeList) {\n return Array.prototype.slice.call(checkboxesNodeList).filter(node => !node.disabled && node.checked).length > 0\n }\n\n function disableAll(nodeList){\n nodeList.forEach(node => node.setAttribute('disabled', 'true'))\n }\n\n function enableAll(nodeList){\n nodeList.forEach(node => node.removeAttribute('disabled'))\n }\n\n function updateCheckboxes() {\n atLeastOneChecked(payLaterMessagingCheckboxes) ? disableAll(vaultingCheckboxes) : enableAll(vaultingCheckboxes)\n atLeastOneChecked(vaultingCheckboxes) ? disableAll(payLaterMessagingCheckboxes) : enableAll(payLaterMessagingCheckboxes)\n\n if(typeof PayPalCommerceGatewaySettings === 'undefined' || PayPalCommerceGatewaySettings.vaulting_features_available !== '1' ) {\n disableAll(vaultingCheckboxes)\n }\n }\n\n updateCheckboxes()\n\n payLaterMessagingCheckboxes.forEach(node => node.addEventListener('change', updateCheckboxes))\n vaultingCheckboxes.forEach(node => node.addEventListener('change', updateCheckboxes));\n }\n);\n"],"sourceRoot":""}
 
modules/ppcp-wc-gateway/package.json CHANGED
@@ -7,11 +7,11 @@
7
  "@babel/core": "^7.9.0",
8
  "@babel/preset-env": "^7.9.5",
9
  "babel-loader": "^8.1.0",
10
- "cross-env": "^5.0.1",
11
- "file-loader": "^4.2.0",
12
- "webpack": "^4.42.1",
13
- "webpack-cli": "^3.1.2",
14
- "babel-plugin-transform-object-rest-spread": "^6.26.0"
15
  },
16
  "scripts": {
17
  "build": "cross-env BABEL_ENV=default NODE_ENV=production webpack",
7
  "@babel/core": "^7.9.0",
8
  "@babel/preset-env": "^7.9.5",
9
  "babel-loader": "^8.1.0",
10
+ "babel-plugin-transform-object-rest-spread": "^6.26.0",
11
+ "cross-env": "^7.0.3",
12
+ "file-loader": "^6.2.0",
13
+ "webpack": "^5.55.0",
14
+ "webpack-cli": "^4.8.0"
15
  },
16
  "scripts": {
17
  "build": "cross-env BABEL_ENV=default NODE_ENV=production webpack",
modules/ppcp-wc-gateway/services.php CHANGED
@@ -5,6 +5,8 @@
5
  * @package WooCommerce\PayPalCommerce\WcGateway
6
  */
7
 
 
 
8
  declare(strict_types=1);
9
 
10
  namespace WooCommerce\PayPalCommerce\WcGateway;
@@ -28,6 +30,7 @@ use Woocommerce\PayPalCommerce\WcGateway\Helper\DccProductStatus;
28
  use Woocommerce\PayPalCommerce\WcGateway\Helper\SettingsStatus;
29
  use WooCommerce\PayPalCommerce\WcGateway\Notice\AuthorizeOrderActionNotice;
30
  use WooCommerce\PayPalCommerce\WcGateway\Notice\ConnectAdminNotice;
 
31
  use WooCommerce\PayPalCommerce\WcGateway\Processor\AuthorizedPaymentsProcessor;
32
  use WooCommerce\PayPalCommerce\WcGateway\Processor\OrderProcessor;
33
  use WooCommerce\PayPalCommerce\WcGateway\Processor\RefundProcessor;
@@ -35,6 +38,7 @@ use WooCommerce\PayPalCommerce\WcGateway\Settings\SectionsRenderer;
35
  use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
36
  use WooCommerce\PayPalCommerce\WcGateway\Settings\SettingsListener;
37
  use WooCommerce\PayPalCommerce\WcGateway\Settings\SettingsRenderer;
 
38
 
39
  return array(
40
  'wcgateway.paypal-gateway' => static function ( $container ): PayPalGateway {
@@ -48,6 +52,7 @@ return array(
48
  $state = $container->get( 'onboarding.state' );
49
  $transaction_url_provider = $container->get( 'wcgateway.transaction-url-provider' );
50
  $subscription_helper = $container->get( 'subscription.helper' );
 
51
  return new PayPalGateway(
52
  $settings_renderer,
53
  $order_processor,
@@ -58,7 +63,8 @@ return array(
58
  $refund_processor,
59
  $state,
60
  $transaction_url_provider,
61
- $subscription_helper
 
62
  );
63
  },
64
  'wcgateway.credit-card-gateway' => static function ( $container ): CreditCardGateway {
@@ -72,11 +78,12 @@ return array(
72
  $refund_processor = $container->get( 'wcgateway.processor.refunds' );
73
  $state = $container->get( 'onboarding.state' );
74
  $transaction_url_provider = $container->get( 'wcgateway.transaction-url-provider' );
75
- $payment_token_repository = $container->get( 'subscription.repository.payment-token' );
76
  $purchase_unit_factory = $container->get( 'api.factory.purchase-unit' );
77
  $payer_factory = $container->get( 'api.factory.payer' );
78
  $order_endpoint = $container->get( 'api.endpoint.order' );
79
  $subscription_helper = $container->get( 'subscription.helper' );
 
80
  return new CreditCardGateway(
81
  $settings_renderer,
82
  $order_processor,
@@ -92,7 +99,8 @@ return array(
92
  $purchase_unit_factory,
93
  $payer_factory,
94
  $order_endpoint,
95
- $subscription_helper
 
96
  );
97
  },
98
  'wcgateway.disabler' => static function ( $container ): DisableGateways {
@@ -100,6 +108,33 @@ return array(
100
  $settings = $container->get( 'wcgateway.settings' );
101
  return new DisableGateways( $session_handler, $settings );
102
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  'wcgateway.settings' => static function ( $container ): Settings {
104
  return new Settings();
105
  },
@@ -108,12 +143,19 @@ return array(
108
  $settings = $container->get( 'wcgateway.settings' );
109
  return new ConnectAdminNotice( $state, $settings );
110
  },
 
 
 
 
 
 
 
111
  'wcgateway.notice.authorize-order-action' =>
112
  static function ( $container ): AuthorizeOrderActionNotice {
113
  return new AuthorizeOrderActionNotice();
114
  },
115
  'wcgateway.settings.sections-renderer' => static function ( $container ): SectionsRenderer {
116
- return new SectionsRenderer();
117
  },
118
  'wcgateway.settings.status' => static function ( $container ): SettingsStatus {
119
  $settings = $container->get( 'wcgateway.settings' );
@@ -127,6 +169,7 @@ return array(
127
  $messages_apply = $container->get( 'button.helper.messages-apply' );
128
  $dcc_product_status = $container->get( 'wcgateway.helper.dcc-product-status' );
129
  $settings_status = $container->get( 'wcgateway.settings.status' );
 
130
  return new SettingsRenderer(
131
  $settings,
132
  $state,
@@ -134,7 +177,8 @@ return array(
134
  $dcc_applies,
135
  $messages_apply,
136
  $dcc_product_status,
137
- $settings_status
 
138
  );
139
  },
140
  'wcgateway.settings.listener' => static function ( $container ): SettingsListener {
@@ -144,7 +188,8 @@ return array(
144
  $state = $container->get( 'onboarding.state' );
145
  $cache = new Cache( 'ppcp-paypal-bearer' );
146
  $bearer = $container->get( 'api.bearer' );
147
- return new SettingsListener( $settings, $fields, $webhook_registrar, $cache, $state, $bearer );
 
148
  },
149
  'wcgateway.order-processor' => static function ( $container ): OrderProcessor {
150
 
@@ -646,7 +691,7 @@ return array(
646
  'label' => sprintf(
647
  // translators: %1$s and %2$s are the opening and closing of HTML <a> tag.
648
  __( 'Enable saved cards and subscription features on your store. To use vaulting features, you must %1$senable vaulting on your account%2$s.', 'woocommerce-paypal-payments' ),
649
- '<a
650
  href="https://docs.woocommerce.com/document/woocommerce-paypal-payments/#enable-vaulting-on-your-live-account"
651
  target="_blank"
652
  >',
@@ -658,7 +703,7 @@ return array(
658
  State::STATE_ONBOARDED,
659
  ),
660
  'requirements' => array(),
661
- 'gateway' => 'all',
662
  ),
663
  'logging_enabled' => array(
664
  'title' => __( 'Logging', 'woocommerce-paypal-payments' ),
@@ -1804,6 +1849,62 @@ return array(
1804
  ),
1805
  'gateway' => 'dcc',
1806
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1807
  );
1808
  if ( ! defined( 'PPCP_FLAG_SUBSCRIPTION' ) || ! PPCP_FLAG_SUBSCRIPTION ) {
1809
  unset( $fields['vault_enabled'] );
@@ -1820,15 +1921,6 @@ return array(
1820
  unset( $fields['ppcp_disconnect_sandbox'] );
1821
  }
1822
 
1823
- /**
1824
- * Disable card for UK.
1825
- */
1826
- $region = wc_get_base_location();
1827
- $country = $region['country'];
1828
- if ( 'GB' === $country ) {
1829
- unset( $fields['disable_funding']['options']['card'] );
1830
- }
1831
-
1832
  /**
1833
  * Depending on your store location, some credit cards can't be used.
1834
  * Here, we filter them out.
5
  * @package WooCommerce\PayPalCommerce\WcGateway
6
  */
7
 
8
+ // phpcs:disable WordPress.Security.NonceVerification.Recommended
9
+
10
  declare(strict_types=1);
11
 
12
  namespace WooCommerce\PayPalCommerce\WcGateway;
30
  use Woocommerce\PayPalCommerce\WcGateway\Helper\SettingsStatus;
31
  use WooCommerce\PayPalCommerce\WcGateway\Notice\AuthorizeOrderActionNotice;
32
  use WooCommerce\PayPalCommerce\WcGateway\Notice\ConnectAdminNotice;
33
+ use WooCommerce\PayPalCommerce\WcGateway\Notice\DccWithoutPayPalAdminNotice;
34
  use WooCommerce\PayPalCommerce\WcGateway\Processor\AuthorizedPaymentsProcessor;
35
  use WooCommerce\PayPalCommerce\WcGateway\Processor\OrderProcessor;
36
  use WooCommerce\PayPalCommerce\WcGateway\Processor\RefundProcessor;
38
  use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
39
  use WooCommerce\PayPalCommerce\WcGateway\Settings\SettingsListener;
40
  use WooCommerce\PayPalCommerce\WcGateway\Settings\SettingsRenderer;
41
+ use WooCommerce\PayPalCommerce\Webhooks\Status\WebhooksStatusPage;
42
 
43
  return array(
44
  'wcgateway.paypal-gateway' => static function ( $container ): PayPalGateway {
52
  $state = $container->get( 'onboarding.state' );
53
  $transaction_url_provider = $container->get( 'wcgateway.transaction-url-provider' );
54
  $subscription_helper = $container->get( 'subscription.helper' );
55
+ $page_id = $container->get( 'wcgateway.current-ppcp-settings-page-id' );
56
  return new PayPalGateway(
57
  $settings_renderer,
58
  $order_processor,
63
  $refund_processor,
64
  $state,
65
  $transaction_url_provider,
66
+ $subscription_helper,
67
+ $page_id
68
  );
69
  },
70
  'wcgateway.credit-card-gateway' => static function ( $container ): CreditCardGateway {
78
  $refund_processor = $container->get( 'wcgateway.processor.refunds' );
79
  $state = $container->get( 'onboarding.state' );
80
  $transaction_url_provider = $container->get( 'wcgateway.transaction-url-provider' );
81
+ $payment_token_repository = $container->get( 'vaulting.repository.payment-token' );
82
  $purchase_unit_factory = $container->get( 'api.factory.purchase-unit' );
83
  $payer_factory = $container->get( 'api.factory.payer' );
84
  $order_endpoint = $container->get( 'api.endpoint.order' );
85
  $subscription_helper = $container->get( 'subscription.helper' );
86
+ $logger = $container->get( 'woocommerce.logger.woocommerce' );
87
  return new CreditCardGateway(
88
  $settings_renderer,
89
  $order_processor,
99
  $purchase_unit_factory,
100
  $payer_factory,
101
  $order_endpoint,
102
+ $subscription_helper,
103
+ $logger
104
  );
105
  },
106
  'wcgateway.disabler' => static function ( $container ): DisableGateways {
108
  $settings = $container->get( 'wcgateway.settings' );
109
  return new DisableGateways( $session_handler, $settings );
110
  },
111
+
112
+ 'wcgateway.is-wc-payments-page' => static function ( $container ): bool {
113
+ $page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : '';
114
+ $tab = isset( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : '';
115
+ return 'wc-settings' === $page && 'checkout' === $tab;
116
+ },
117
+
118
+ 'wcgateway.is-ppcp-settings-page' => static function ( $container ): bool {
119
+ if ( ! $container->get( 'wcgateway.is-wc-payments-page' ) ) {
120
+ return false;
121
+ }
122
+
123
+ $section = isset( $_GET['section'] ) ? sanitize_text_field( wp_unslash( $_GET['section'] ) ) : '';
124
+ return in_array( $section, array( PayPalGateway::ID, CreditCardGateway::ID, WebhooksStatusPage::ID ), true );
125
+ },
126
+
127
+ 'wcgateway.current-ppcp-settings-page-id' => static function ( $container ): string {
128
+ if ( ! $container->get( 'wcgateway.is-ppcp-settings-page' ) ) {
129
+ return '';
130
+ }
131
+
132
+ $section = isset( $_GET['section'] ) ? sanitize_text_field( wp_unslash( $_GET['section'] ) ) : '';
133
+ $ppcp_tab = isset( $_GET[ SectionsRenderer::KEY ] ) ? sanitize_text_field( wp_unslash( $_GET[ SectionsRenderer::KEY ] ) ) : '';
134
+
135
+ return $ppcp_tab ? $ppcp_tab : $section;
136
+ },
137
+
138
  'wcgateway.settings' => static function ( $container ): Settings {
139
  return new Settings();
140
  },
143
  $settings = $container->get( 'wcgateway.settings' );
144
  return new ConnectAdminNotice( $state, $settings );
145
  },
146
+ 'wcgateway.notice.dcc-without-paypal' => static function ( $container ): DccWithoutPayPalAdminNotice {
147
+ $state = $container->get( 'onboarding.state' );
148
+ $settings = $container->get( 'wcgateway.settings' );
149
+ $is_payments_page = $container->get( 'wcgateway.is-wc-payments-page' );
150
+ $is_ppcp_settings_page = $container->get( 'wcgateway.is-ppcp-settings-page' );
151
+ return new DccWithoutPayPalAdminNotice( $state, $settings, $is_payments_page, $is_ppcp_settings_page );
152
+ },
153
  'wcgateway.notice.authorize-order-action' =>
154
  static function ( $container ): AuthorizeOrderActionNotice {
155
  return new AuthorizeOrderActionNotice();
156
  },
157
  'wcgateway.settings.sections-renderer' => static function ( $container ): SectionsRenderer {
158
+ return new SectionsRenderer( $container->get( 'wcgateway.current-ppcp-settings-page-id' ) );
159
  },
160
  'wcgateway.settings.status' => static function ( $container ): SettingsStatus {
161
  $settings = $container->get( 'wcgateway.settings' );
169
  $messages_apply = $container->get( 'button.helper.messages-apply' );
170
  $dcc_product_status = $container->get( 'wcgateway.helper.dcc-product-status' );
171
  $settings_status = $container->get( 'wcgateway.settings.status' );
172
+ $page_id = $container->get( 'wcgateway.current-ppcp-settings-page-id' );
173
  return new SettingsRenderer(
174
  $settings,
175
  $state,
177
  $dcc_applies,
178
  $messages_apply,
179
  $dcc_product_status,
180
+ $settings_status,
181
+ $page_id
182
  );
183
  },
184
  'wcgateway.settings.listener' => static function ( $container ): SettingsListener {
188
  $state = $container->get( 'onboarding.state' );
189
  $cache = new Cache( 'ppcp-paypal-bearer' );
190
  $bearer = $container->get( 'api.bearer' );
191
+ $page_id = $container->get( 'wcgateway.current-ppcp-settings-page-id' );
192
+ return new SettingsListener( $settings, $fields, $webhook_registrar, $cache, $state, $bearer, $page_id );
193
  },
194
  'wcgateway.order-processor' => static function ( $container ): OrderProcessor {
195
 
691
  'label' => sprintf(
692
  // translators: %1$s and %2$s are the opening and closing of HTML <a> tag.
693
  __( 'Enable saved cards and subscription features on your store. To use vaulting features, you must %1$senable vaulting on your account%2$s.', 'woocommerce-paypal-payments' ),
694
+ '<a
695
  href="https://docs.woocommerce.com/document/woocommerce-paypal-payments/#enable-vaulting-on-your-live-account"
696
  target="_blank"
697
  >',
703
  State::STATE_ONBOARDED,
704
  ),
705
  'requirements' => array(),
706
+ 'gateway' => array( 'paypal', 'dcc' ),
707
  ),
708
  'logging_enabled' => array(
709
  'title' => __( 'Logging', 'woocommerce-paypal-payments' ),
1849
  ),
1850
  'gateway' => 'dcc',
1851
  ),
1852
+ '3d_secure_heading' => array(
1853
+ 'heading' => __( '3D Secure', 'woocommerce-paypal-payments' ),
1854
+ 'type' => 'ppcp-heading',
1855
+ 'description' => wp_kses_post(
1856
+ sprintf(
1857
+ // translators: %1$s and %2$s is a link tag.
1858
+ __(
1859
+ '3D Secure benefits cardholders and merchants by providing
1860
+ an additional layer of verification using Verified by Visa,
1861
+ MasterCard SecureCode and American Express SafeKey.
1862
+ %1$sLearn more about 3D Secure.%2$s',
1863
+ 'woocommerce-paypal-payments'
1864
+ ),
1865
+ '<a
1866
+ rel="noreferrer noopener"
1867
+ href="https://woocommerce.com/posts/introducing-strong-customer-authentication-sca/"
1868
+ >',
1869
+ '</a>'
1870
+ )
1871
+ ),
1872
+ 'screens' => array(
1873
+ State::STATE_ONBOARDED,
1874
+ ),
1875
+ 'requirements' => array(
1876
+ 'dcc',
1877
+ ),
1878
+ 'gateway' => 'dcc',
1879
+ ),
1880
+ '3d_secure_contingency' => array(
1881
+ 'title' => __( 'Contingency for 3D Secure', 'woocommerce-paypal-payments' ),
1882
+ 'type' => 'select',
1883
+ 'description' => sprintf(
1884
+ // translators: %1$s and %2$s opening and closing ul tag, %3$s and %4$s opening and closing li tag.
1885
+ __( '%1$s%3$sNo 3D Secure will cause transactions to be denied if 3D Secure is required by the bank of the cardholder.%4$s%3$sSCA_WHEN_REQUIRED returns a 3D Secure contingency when it is a mandate in the region where you operate.%4$s%3$sSCA_ALWAYS triggers 3D Secure for every transaction, regardless of SCA requirements.%4$s%2$s', 'woocommerce-paypal-payments' ),
1886
+ '<ul>',
1887
+ '</ul>',
1888
+ '<li>',
1889
+ '</li>'
1890
+ ),
1891
+ 'class' => array(),
1892
+ 'input_class' => array( 'wc-enhanced-select' ),
1893
+ 'default' => 'SCA_WHEN_REQUIRED',
1894
+ 'desc_tip' => true,
1895
+ 'options' => array(
1896
+ 'NO_3D_SECURE' => __( 'No 3D Secure (transaction will be denied if 3D Secure is required)', 'woocommerce-paypal-payments' ),
1897
+ 'SCA_WHEN_REQUIRED' => __( '3D Secure when required', 'woocommerce-paypal-payments' ),
1898
+ '3D_SECURE' => __( 'Always trigger 3D Secure', 'woocommerce-paypal-payments' ),
1899
+ ),
1900
+ 'screens' => array(
1901
+ State::STATE_ONBOARDED,
1902
+ ),
1903
+ 'requirements' => array(
1904
+ 'dcc',
1905
+ ),
1906
+ 'gateway' => 'dcc',
1907
+ ),
1908
  );
1909
  if ( ! defined( 'PPCP_FLAG_SUBSCRIPTION' ) || ! PPCP_FLAG_SUBSCRIPTION ) {
1910
  unset( $fields['vault_enabled'] );
1921
  unset( $fields['ppcp_disconnect_sandbox'] );
1922
  }
1923
 
 
 
 
 
 
 
 
 
 
1924
  /**
1925
  * Depending on your store location, some credit cards can't be used.
1926
  * Here, we filter them out.
modules/ppcp-wc-gateway/src/Gateway/class-creditcardgateway.php CHANGED
@@ -9,13 +9,14 @@ declare(strict_types=1);
9
 
10
  namespace WooCommerce\PayPalCommerce\WcGateway\Gateway;
11
 
 
12
  use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
13
  use WooCommerce\PayPalCommerce\ApiClient\Factory\PayerFactory;
14
  use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
15
  use WooCommerce\PayPalCommerce\Onboarding\State;
16
  use WooCommerce\PayPalCommerce\Session\SessionHandler;
17
  use WooCommerce\PayPalCommerce\Subscription\Helper\SubscriptionHelper;
18
- use WooCommerce\PayPalCommerce\Subscription\Repository\PaymentTokenRepository;
19
  use WooCommerce\PayPalCommerce\WcGateway\Notice\AuthorizeOrderActionNotice;
20
  use WooCommerce\PayPalCommerce\WcGateway\Processor\AuthorizedPaymentsProcessor;
21
  use WooCommerce\PayPalCommerce\WcGateway\Processor\OrderProcessor;
@@ -46,6 +47,13 @@ class CreditCardGateway extends \WC_Payment_Gateway_CC {
46
  */
47
  protected $subscription_helper;
48
 
 
 
 
 
 
 
 
49
  /**
50
  * The URL to the module.
51
  *
@@ -104,8 +112,9 @@ class CreditCardGateway extends \WC_Payment_Gateway_CC {
104
  * @param PaymentTokenRepository $payment_token_repository The payment token repository.
105
  * @param PurchaseUnitFactory $purchase_unit_factory The purchase unit factory.
106
  * @param PayerFactory $payer_factory The payer factory.
107
- * @param OrderEndpoint $order_endpoint The order endpoint.
108
  * @param SubscriptionHelper $subscription_helper The subscription helper.
 
109
  */
110
  public function __construct(
111
  SettingsRenderer $settings_renderer,
@@ -122,7 +131,8 @@ class CreditCardGateway extends \WC_Payment_Gateway_CC {
122
  PurchaseUnitFactory $purchase_unit_factory,
123
  PayerFactory $payer_factory,
124
  OrderEndpoint $order_endpoint,
125
- SubscriptionHelper $subscription_helper
 
126
  ) {
127
 
128
  $this->id = self::ID;
@@ -190,6 +200,7 @@ class CreditCardGateway extends \WC_Payment_Gateway_CC {
190
  $this->order_endpoint = $order_endpoint;
191
  $this->transaction_url_provider = $transaction_url_provider;
192
  $this->subscription_helper = $subscription_helper;
 
193
  }
194
 
195
  /**
@@ -197,13 +208,7 @@ class CreditCardGateway extends \WC_Payment_Gateway_CC {
197
  */
198
  public function init_form_fields() {
199
  $this->form_fields = array(
200
- 'enabled' => array(
201
- 'title' => __( 'Enable/Disable', 'woocommerce-paypal-payments' ),
202
- 'type' => 'checkbox',
203
- 'label' => __( 'Enable Credit Card Payments', 'woocommerce-paypal-payments' ),
204
- 'default' => 'no',
205
- ),
206
- 'ppcp' => array(
207
  'type' => 'ppcp',
208
  ),
209
  );
@@ -218,6 +223,20 @@ class CreditCardGateway extends \WC_Payment_Gateway_CC {
218
  remove_action( 'gettext', 'replace_credit_card_cvv_label' );
219
  }
220
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
221
  /**
222
  * Replace WooCommerce credit card field label.
223
  *
@@ -314,7 +333,7 @@ class CreditCardGateway extends \WC_Payment_Gateway_CC {
314
  * @return bool
315
  */
316
  public function is_available() : bool {
317
- return $this->config->has( 'dcc_enabled' ) && $this->config->get( 'dcc_enabled' );
318
  }
319
 
320
 
@@ -349,4 +368,60 @@ class CreditCardGateway extends \WC_Payment_Gateway_CC {
349
 
350
  return parent::get_transaction_url( $order );
351
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
352
  }
9
 
10
  namespace WooCommerce\PayPalCommerce\WcGateway\Gateway;
11
 
12
+ use Psr\Log\LoggerInterface;
13
  use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
14
  use WooCommerce\PayPalCommerce\ApiClient\Factory\PayerFactory;
15
  use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
16
  use WooCommerce\PayPalCommerce\Onboarding\State;
17
  use WooCommerce\PayPalCommerce\Session\SessionHandler;
18
  use WooCommerce\PayPalCommerce\Subscription\Helper\SubscriptionHelper;
19
+ use WooCommerce\PayPalCommerce\Vaulting\PaymentTokenRepository;
20
  use WooCommerce\PayPalCommerce\WcGateway\Notice\AuthorizeOrderActionNotice;
21
  use WooCommerce\PayPalCommerce\WcGateway\Processor\AuthorizedPaymentsProcessor;
22
  use WooCommerce\PayPalCommerce\WcGateway\Processor\OrderProcessor;
47
  */
48
  protected $subscription_helper;
49
 
50
+ /**
51
+ * The logger.
52
+ *
53
+ * @var LoggerInterface
54
+ */
55
+ protected $logger;
56
+
57
  /**
58
  * The URL to the module.
59
  *
112
  * @param PaymentTokenRepository $payment_token_repository The payment token repository.
113
  * @param PurchaseUnitFactory $purchase_unit_factory The purchase unit factory.
114
  * @param PayerFactory $payer_factory The payer factory.
115
+ * @param OrderEndpoint $order_endpoint The order endpoint.
116
  * @param SubscriptionHelper $subscription_helper The subscription helper.
117
+ * @param LoggerInterface $logger The logger.
118
  */
119
  public function __construct(
120
  SettingsRenderer $settings_renderer,
131
  PurchaseUnitFactory $purchase_unit_factory,
132
  PayerFactory $payer_factory,
133
  OrderEndpoint $order_endpoint,
134
+ SubscriptionHelper $subscription_helper,
135
+ LoggerInterface $logger
136
  ) {
137
 
138
  $this->id = self::ID;
200
  $this->order_endpoint = $order_endpoint;
201
  $this->transaction_url_provider = $transaction_url_provider;
202
  $this->subscription_helper = $subscription_helper;
203
+ $this->logger = $logger;
204
  }
205
 
206
  /**
208
  */
209
  public function init_form_fields() {
210
  $this->form_fields = array(
211
+ 'ppcp' => array(
 
 
 
 
 
 
212
  'type' => 'ppcp',
213
  ),
214
  );
223
  remove_action( 'gettext', 'replace_credit_card_cvv_label' );
224
  }
225
 
226
+ /**
227
+ * Renders the settings.
228
+ *
229
+ * @return string
230
+ */
231
+ public function generate_ppcp_html(): string {
232
+
233
+ ob_start();
234
+ $this->settings_renderer->render();
235
+ $content = ob_get_contents();
236
+ ob_end_clean();
237
+ return $content;
238
+ }
239
+
240
  /**
241
  * Replace WooCommerce credit card field label.
242
  *
333
  * @return bool
334
  */
335
  public function is_available() : bool {
336
+ return $this->is_enabled();
337
  }
338
 
339
 
368
 
369
  return parent::get_transaction_url( $order );
370
  }
371
+
372
+ /**
373
+ * Initialize settings for WC.
374
+ *
375
+ * @return void
376
+ */
377
+ public function init_settings() {
378
+ parent::init_settings();
379
+
380
+ // looks like in some cases WC uses this field instead of get_option.
381
+ $this->enabled = $this->is_enabled();
382
+ }
383
+
384
+ /**
385
+ * Get the option value for WC.
386
+ *
387
+ * @param string $key The option key.
388
+ * @param mixed $empty_value Value when empty.
389
+ * @return mixed
390
+ */
391
+ public function get_option( $key, $empty_value = null ) {
392
+ if ( 'enabled' === $key ) {
393
+ return $this->is_enabled();
394
+ }
395
+
396
+ return parent::get_option( $key, $empty_value );
397
+ }
398
+
399
+ /**
400
+ * Handle update of WC settings.
401
+ *
402
+ * @param string $key The option key.
403
+ * @param string $value The option value.
404
+ * @return bool was anything saved?
405
+ */
406
+ public function update_option( $key, $value = '' ) {
407
+ $ret = parent::update_option( $key, $value );
408
+
409
+ if ( 'enabled' === $key ) {
410
+ $this->config->set( 'dcc_enabled', 'yes' === $value );
411
+ $this->config->persist();
412
+
413
+ return true;
414
+ }
415
+
416
+ return $ret;
417
+ }
418
+
419
+ /**
420
+ * Returns if the gateway is enabled.
421
+ *
422
+ * @return bool
423
+ */
424
+ private function is_enabled(): bool {
425
+ return $this->config->has( 'dcc_enabled' ) && $this->config->get( 'dcc_enabled' );
426
+ }
427
  }
modules/ppcp-wc-gateway/src/Gateway/class-paypalgateway.php CHANGED
@@ -19,6 +19,7 @@ use WooCommerce\PayPalCommerce\WcGateway\Processor\RefundProcessor;
19
  use WooCommerce\PayPalCommerce\WcGateway\Settings\SectionsRenderer;
20
  use WooCommerce\PayPalCommerce\WcGateway\Settings\SettingsRenderer;
21
  use Psr\Container\ContainerInterface;
 
22
 
23
  /**
24
  * Class PayPalGateway
@@ -103,6 +104,13 @@ class PayPalGateway extends \WC_Payment_Gateway {
103
  */
104
  private $onboarded;
105
 
 
 
 
 
 
 
 
106
  /**
107
  * PayPalGateway constructor.
108
  *
@@ -116,6 +124,7 @@ class PayPalGateway extends \WC_Payment_Gateway {
116
  * @param State $state The state.
117
  * @param TransactionUrlProvider $transaction_url_provider Service providing transaction view URL based on order.
118
  * @param SubscriptionHelper $subscription_helper The subscription helper.
 
119
  */
120
  public function __construct(
121
  SettingsRenderer $settings_renderer,
@@ -127,7 +136,8 @@ class PayPalGateway extends \WC_Payment_Gateway {
127
  RefundProcessor $refund_processor,
128
  State $state,
129
  TransactionUrlProvider $transaction_url_provider,
130
- SubscriptionHelper $subscription_helper
 
131
  ) {
132
 
133
  $this->id = self::ID;
@@ -139,6 +149,7 @@ class PayPalGateway extends \WC_Payment_Gateway {
139
  $this->session_handler = $session_handler;
140
  $this->refund_processor = $refund_processor;
141
  $this->transaction_url_provider = $transaction_url_provider;
 
142
  $this->onboarded = $state->current_state() === State::STATE_ONBOARDED;
143
 
144
  if ( $this->onboarded ) {
@@ -214,7 +225,7 @@ class PayPalGateway extends \WC_Payment_Gateway {
214
  ),
215
  );
216
 
217
- $should_show_enabled_checkbox = ! $this->is_credit_card_tab() && ( $this->config->has( 'merchant_email' ) && $this->config->get( 'merchant_email' ) );
218
  if ( ! $should_show_enabled_checkbox ) {
219
  unset( $this->form_fields['enabled'] );
220
  }
@@ -298,6 +309,9 @@ class PayPalGateway extends \WC_Payment_Gateway {
298
  if ( $this->is_credit_card_tab() ) {
299
  return __( 'PayPal Card Processing', 'woocommerce-paypal-payments' );
300
  }
 
 
 
301
  if ( $this->is_paypal_tab() ) {
302
  return __( 'PayPal Checkout', 'woocommerce-paypal-payments' );
303
  }
@@ -316,6 +330,12 @@ class PayPalGateway extends \WC_Payment_Gateway {
316
  'woocommerce-paypal-payments'
317
  );
318
  }
 
 
 
 
 
 
319
 
320
  return __(
321
  'Accept PayPal, Pay Later and alternative payment types.',
@@ -332,11 +352,20 @@ class PayPalGateway extends \WC_Payment_Gateway {
332
  */
333
  private function is_credit_card_tab() : bool {
334
  return is_admin()
335
- && isset( $_GET[ SectionsRenderer::KEY ] )
336
- && CreditCardGateway::ID === sanitize_text_field( wp_unslash( $_GET[ SectionsRenderer::KEY ] ) );
337
 
338
  }
339
 
 
 
 
 
 
 
 
 
 
 
340
  /**
341
  * Whether we are on the PayPal settings tab.
342
  *
@@ -345,8 +374,7 @@ class PayPalGateway extends \WC_Payment_Gateway {
345
  private function is_paypal_tab() : bool {
346
  return ! $this->is_credit_card_tab()
347
  && is_admin()
348
- && isset( $_GET['section'] )
349
- && self::ID === sanitize_text_field( wp_unslash( $_GET['section'] ) );
350
  }
351
  // phpcs:enable WordPress.Security.NonceVerification.Recommended
352
 
@@ -387,14 +415,18 @@ class PayPalGateway extends \WC_Payment_Gateway {
387
  *
388
  * @param string $key The option key.
389
  * @param string $value The option value.
390
- * @return bool|void
391
  */
392
  public function update_option( $key, $value = '' ) {
393
- parent::update_option( $key, $value );
394
 
395
  if ( 'enabled' === $key ) {
396
  $this->config->set( 'enabled', 'yes' === $value );
397
  $this->config->persist();
 
 
398
  }
 
 
399
  }
400
  }
19
  use WooCommerce\PayPalCommerce\WcGateway\Settings\SectionsRenderer;
20
  use WooCommerce\PayPalCommerce\WcGateway\Settings\SettingsRenderer;
21
  use Psr\Container\ContainerInterface;
22
+ use WooCommerce\PayPalCommerce\Webhooks\Status\WebhooksStatusPage;
23
 
24
  /**
25
  * Class PayPalGateway
104
  */
105
  private $onboarded;
106
 
107
+ /**
108
+ * ID of the current PPCP gateway settings page, or empty if it is not such page.
109
+ *
110
+ * @var string
111
+ */
112
+ protected $page_id;
113
+
114
  /**
115
  * PayPalGateway constructor.
116
  *
124
  * @param State $state The state.
125
  * @param TransactionUrlProvider $transaction_url_provider Service providing transaction view URL based on order.
126
  * @param SubscriptionHelper $subscription_helper The subscription helper.
127
+ * @param string $page_id ID of the current PPCP gateway settings page, or empty if it is not such page.
128
  */
129
  public function __construct(
130
  SettingsRenderer $settings_renderer,
136
  RefundProcessor $refund_processor,
137
  State $state,
138
  TransactionUrlProvider $transaction_url_provider,
139
+ SubscriptionHelper $subscription_helper,
140
+ string $page_id
141
  ) {
142
 
143
  $this->id = self::ID;
149
  $this->session_handler = $session_handler;
150
  $this->refund_processor = $refund_processor;
151
  $this->transaction_url_provider = $transaction_url_provider;
152
+ $this->page_id = $page_id;
153
  $this->onboarded = $state->current_state() === State::STATE_ONBOARDED;
154
 
155
  if ( $this->onboarded ) {
225
  ),
226
  );
227
 
228
+ $should_show_enabled_checkbox = $this->is_paypal_tab() && ( $this->config->has( 'merchant_email' ) && $this->config->get( 'merchant_email' ) );
229
  if ( ! $should_show_enabled_checkbox ) {
230
  unset( $this->form_fields['enabled'] );
231
  }
309
  if ( $this->is_credit_card_tab() ) {
310
  return __( 'PayPal Card Processing', 'woocommerce-paypal-payments' );
311
  }
312
+ if ( $this->is_webhooks_tab() ) {
313
+ return __( 'Webhooks Status', 'woocommerce-paypal-payments' );
314
+ }
315
  if ( $this->is_paypal_tab() ) {
316
  return __( 'PayPal Checkout', 'woocommerce-paypal-payments' );
317
  }
330
  'woocommerce-paypal-payments'
331
  );
332
  }
333
+ if ( $this->is_webhooks_tab() ) {
334
+ return __(
335
+ 'Status of the webhooks subscription.',
336
+ 'woocommerce-paypal-payments'
337
+ );
338
+ }
339
 
340
  return __(
341
  'Accept PayPal, Pay Later and alternative payment types.',
352
  */
353
  private function is_credit_card_tab() : bool {
354
  return is_admin()
355
+ && CreditCardGateway::ID === $this->page_id;
 
356
 
357
  }
358
 
359
+ /**
360
+ * Whether we are on the Webhooks Status tab.
361
+ *
362
+ * @return bool
363
+ */
364
+ private function is_webhooks_tab() : bool {
365
+ return is_admin()
366
+ && WebhooksStatusPage::ID === $this->page_id;
367
+ }
368
+
369
  /**
370
  * Whether we are on the PayPal settings tab.
371
  *
374
  private function is_paypal_tab() : bool {
375
  return ! $this->is_credit_card_tab()
376
  && is_admin()
377
+ && self::ID === $this->page_id;
 
378
  }
379
  // phpcs:enable WordPress.Security.NonceVerification.Recommended
380
 
415
  *
416
  * @param string $key The option key.
417
  * @param string $value The option value.
418
+ * @return bool was anything saved?
419
  */
420
  public function update_option( $key, $value = '' ) {
421
+ $ret = parent::update_option( $key, $value );
422
 
423
  if ( 'enabled' === $key ) {
424
  $this->config->set( 'enabled', 'yes' === $value );
425
  $this->config->persist();
426
+
427
+ return true;
428
  }
429
+
430
+ return $ret;
431
  }
432
  }
modules/ppcp-wc-gateway/src/Gateway/class-processpaymenttrait.php CHANGED
@@ -85,7 +85,27 @@ trait ProcessPaymentTrait {
85
  'redirect' => $this->get_return_url( $wc_order ),
86
  );
87
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  } catch ( RuntimeException $error ) {
 
89
  $this->session_handler->destroy_session_data();
90
  wc_add_notice( $error->getMessage(), 'error' );
91
  return null;
85
  'redirect' => $this->get_return_url( $wc_order ),
86
  );
87
  }
88
+
89
+ if ( $order->status()->is( OrderStatus::COMPLETED ) && $order->intent() === 'AUTHORIZE' ) {
90
+ $this->order_endpoint->authorize( $order );
91
+ $wc_order->update_meta_data( PayPalGateway::CAPTURED_META_KEY, 'false' );
92
+ $wc_order->update_meta_data( PayPalGateway::ORDER_ID_META_KEY, $order->id() );
93
+ $wc_order->update_status(
94
+ 'on-hold',
95
+ __( 'Awaiting payment.', 'woocommerce-paypal-payments' )
96
+ );
97
+
98
+ $this->session_handler->destroy_session_data();
99
+ return array(
100
+ 'result' => 'success',
101
+ 'redirect' => $this->get_return_url( $wc_order ),
102
+ );
103
+ }
104
+
105
+ $this->logger->warning( "Could neither capture nor authorize order {$order->id()} using a saved credit card:" . 'Status: ' . $order->status()->name() . ' Intent: ' . $order->intent() );
106
+
107
  } catch ( RuntimeException $error ) {
108
+ $this->logger->error( $error->getMessage() );
109
  $this->session_handler->destroy_session_data();
110
  wc_add_notice( $error->getMessage(), 'error' );
111
  return null;
modules/ppcp-wc-gateway/src/Notice/class-dccwithoutpaypaladminnotice.php ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Creates the admin message about the DCC gateway being enabled without the PayPal gateway.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce\WcGateway\Notice
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace WooCommerce\PayPalCommerce\WcGateway\Notice;
11
+
12
+ use WooCommerce\PayPalCommerce\AdminNotices\Entity\Message;
13
+ use WooCommerce\PayPalCommerce\Onboarding\State;
14
+ use Psr\Container\ContainerInterface;
15
+
16
+ /**
17
+ * Creates the admin message about the DCC gateway being enabled without the PayPal gateway.
18
+ */
19
+ class DccWithoutPayPalAdminNotice {
20
+
21
+ /**
22
+ * The state.
23
+ *
24
+ * @var State
25
+ */
26
+ private $state;
27
+
28
+ /**
29
+ * The settings.
30
+ *
31
+ * @var ContainerInterface
32
+ */
33
+ private $settings;
34
+
35
+ /**
36
+ * Whether the current page is the WC payment page.
37
+ *
38
+ * @var bool
39
+ */
40
+ private $is_payments_page;
41
+
42
+ /**
43
+ * Whether the current page is the PPCP settings page.
44
+ *
45
+ * @var bool
46
+ */
47
+ private $is_ppcp_settings_page;
48
+
49
+ /**
50
+ * ConnectAdminNotice constructor.
51
+ *
52
+ * @param State $state The state.
53
+ * @param ContainerInterface $settings The settings.
54
+ * @param bool $is_payments_page Whether the current page is the WC payment page.
55
+ * @param bool $is_ppcp_settings_page Whether the current page is the PPCP settings page.
56
+ */
57
+ public function __construct(
58
+ State $state,
59
+ ContainerInterface $settings,
60
+ bool $is_payments_page,
61
+ bool $is_ppcp_settings_page
62
+ ) {
63
+ $this->state = $state;
64
+ $this->settings = $settings;
65
+ $this->is_payments_page = $is_payments_page;
66
+ $this->is_ppcp_settings_page = $is_ppcp_settings_page;
67
+ }
68
+
69
+ /**
70
+ * Returns the message.
71
+ *
72
+ * @return Message|null
73
+ */
74
+ public function message(): ?Message {
75
+ if ( ! $this->should_display() ) {
76
+ return null;
77
+ }
78
+
79
+ $message = sprintf(
80
+ /* translators: %1$s the gateway name. */
81
+ __(
82
+ 'PayPal Card Processing cannot be used without the PayPal gateway. <a href="%1$s">Enable the PayPal Gateway</a>.',
83
+ 'woocommerce-paypal-payments'
84
+ ),
85
+ admin_url( 'admin.php?page=wc-settings&tab=checkout&section=ppcp-gateway' )
86
+ );
87
+ return new Message( $message, 'warning' );
88
+ }
89
+
90
+ /**
91
+ * Whether the message should be displayed.
92
+ *
93
+ * @return bool
94
+ */
95
+ protected function should_display(): bool {
96
+ return State::STATE_ONBOARDED === $this->state->current_state()
97
+ && ( $this->is_payments_page || $this->is_ppcp_settings_page )
98
+ && ( $this->settings->has( 'dcc_enabled' ) && $this->settings->get( 'dcc_enabled' ) )
99
+ && ( ! $this->settings->has( 'enabled' ) || ! $this->settings->get( 'enabled' ) );
100
+ }
101
+ }
modules/ppcp-wc-gateway/src/Processor/class-orderprocessor.php CHANGED
@@ -16,7 +16,7 @@ use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
16
  use WooCommerce\PayPalCommerce\ApiClient\Factory\OrderFactory;
17
  use WooCommerce\PayPalCommerce\Button\Helper\ThreeDSecure;
18
  use WooCommerce\PayPalCommerce\Session\SessionHandler;
19
- use WooCommerce\PayPalCommerce\Subscription\Repository\PaymentTokenRepository;
20
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
21
  use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
22
 
16
  use WooCommerce\PayPalCommerce\ApiClient\Factory\OrderFactory;
17
  use WooCommerce\PayPalCommerce\Button\Helper\ThreeDSecure;
18
  use WooCommerce\PayPalCommerce\Session\SessionHandler;
19
+ use WooCommerce\PayPalCommerce\Vaulting\PaymentTokenRepository;
20
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
21
  use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
22
 
modules/ppcp-wc-gateway/src/Processor/class-refundprocessor.php CHANGED
@@ -88,7 +88,7 @@ class RefundProcessor {
88
  $capture->invoice_id(),
89
  $reason,
90
  new Amount(
91
- new Money( $amount, get_woocommerce_currency() )
92
  )
93
  );
94
  return $this->payments_endpoint->refund( $refund );
88
  $capture->invoice_id(),
89
  $reason,
90
  new Amount(
91
+ new Money( $amount, $wc_order->get_currency() )
92
  )
93
  );
94
  return $this->payments_endpoint->refund( $refund );
modules/ppcp-wc-gateway/src/Settings/class-pagematchertrait.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * PageMatcherTrait.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce\WcGateway\Settings
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace WooCommerce\PayPalCommerce\WcGateway\Settings;
11
+
12
+ use WooCommerce\PayPalCommerce\AdminNotices\Entity\Message;
13
+ use WooCommerce\PayPalCommerce\ApiClient\Helper\DccApplies;
14
+ use WooCommerce\PayPalCommerce\Button\Helper\MessagesApply;
15
+ use WooCommerce\PayPalCommerce\Onboarding\State;
16
+ use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
17
+ use Psr\Container\ContainerInterface;
18
+ use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
19
+ use Woocommerce\PayPalCommerce\WcGateway\Helper\DccProductStatus;
20
+ use Woocommerce\PayPalCommerce\WcGateway\Helper\SettingsStatus;
21
+ use WooCommerce\PayPalCommerce\Webhooks\Status\WebhooksStatusPage;
22
+
23
+ /**
24
+ * Class PageMatcherTrait.
25
+ */
26
+ trait PageMatcherTrait {
27
+
28
+ /**
29
+ * Checks whether the field config matches the current page (can be rendered here).
30
+ *
31
+ * @param array $field_config The field config (from wcgateway.settings.fields).
32
+ * @param string $current_page_id ID of the current PPCP gateway settings page.
33
+ * @return bool
34
+ */
35
+ protected function field_matches_page( array $field_config, string $current_page_id ): bool {
36
+ $allowed_gateways = $field_config['gateway'];
37
+ if ( ! is_array( $allowed_gateways ) ) {
38
+ $allowed_gateways = array( $allowed_gateways );
39
+ }
40
+
41
+ $gateway_page_id_map = array(
42
+ PayPalGateway::ID => 'paypal',
43
+ CreditCardGateway::ID => 'dcc', // TODO: consider using just the gateway ID for PayPal and DCC too.
44
+ WebhooksStatusPage::ID => WebhooksStatusPage::ID,
45
+ );
46
+ return array_key_exists( $current_page_id, $gateway_page_id_map )
47
+ && in_array( $gateway_page_id_map[ $current_page_id ], $allowed_gateways, true );
48
+ }
49
+ }
modules/ppcp-wc-gateway/src/Settings/class-sectionsrenderer.php CHANGED
@@ -11,6 +11,7 @@ namespace WooCommerce\PayPalCommerce\WcGateway\Settings;
11
 
12
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
13
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
 
14
 
15
  /**
16
  * Class SectionsRenderer
@@ -19,15 +20,29 @@ class SectionsRenderer {
19
 
20
  const KEY = 'ppcp-tab';
21
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  /**
23
  * Whether the sections tab should be rendered.
24
  *
25
  * @return bool
26
  */
27
  public function should_render() : bool {
28
-
29
- global $current_section;
30
- return PayPalGateway::ID === $current_section;
31
  }
32
 
33
  /**
@@ -38,11 +53,10 @@ class SectionsRenderer {
38
  return;
39
  }
40
 
41
- //phpcs:ignore WordPress.Security.NonceVerification.Recommended
42
- $current = ! isset( $_GET[ self::KEY ] ) ? PayPalGateway::ID : sanitize_text_field( wp_unslash( $_GET[ self::KEY ] ) );
43
  $sections = array(
44
- PayPalGateway::ID => __( 'PayPal Checkout', 'woocommerce-paypal-payments' ),
45
- CreditCardGateway::ID => __( 'PayPal Card Processing', 'woocommerce-paypal-payments' ),
 
46
  );
47
 
48
  echo '<ul class="subsubsub">';
@@ -51,7 +65,7 @@ class SectionsRenderer {
51
 
52
  foreach ( $sections as $id => $label ) {
53
  $url = admin_url( 'admin.php?page=wc-settings&tab=checkout&section=ppcp-gateway&' . self::KEY . '=' . $id );
54
- echo '<li><a href="' . esc_url( $url ) . '" class="' . ( $current === $id ? 'current' : '' ) . '">' . esc_html( $label ) . '</a> ' . ( end( $array_keys ) === $id ? '' : '|' ) . ' </li>';
55
  }
56
 
57
  echo '</ul><br class="clear" />';
11
 
12
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
13
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
14
+ use WooCommerce\PayPalCommerce\Webhooks\Status\WebhooksStatusPage;
15
 
16
  /**
17
  * Class SectionsRenderer
20
 
21
  const KEY = 'ppcp-tab';
22
 
23
+ /**
24
+ * ID of the current PPCP gateway settings page, or empty if it is not such page.
25
+ *
26
+ * @var string
27
+ */
28
+ protected $page_id;
29
+
30
+ /**
31
+ * SectionsRenderer constructor.
32
+ *
33
+ * @param string $page_id ID of the current PPCP gateway settings page, or empty if it is not such page.
34
+ */
35
+ public function __construct( string $page_id ) {
36
+ $this->page_id = $page_id;
37
+ }
38
+
39
  /**
40
  * Whether the sections tab should be rendered.
41
  *
42
  * @return bool
43
  */
44
  public function should_render() : bool {
45
+ return ! empty( $this->page_id );
 
 
46
  }
47
 
48
  /**
53
  return;
54
  }
55
 
 
 
56
  $sections = array(
57
+ PayPalGateway::ID => __( 'PayPal Checkout', 'woocommerce-paypal-payments' ),
58
+ CreditCardGateway::ID => __( 'PayPal Card Processing', 'woocommerce-paypal-payments' ),
59
+ WebhooksStatusPage::ID => __( 'Webhooks Status', 'woocommerce-paypal-payments' ),
60
  );
61
 
62
  echo '<ul class="subsubsub">';
65
 
66
  foreach ( $sections as $id => $label ) {
67
  $url = admin_url( 'admin.php?page=wc-settings&tab=checkout&section=ppcp-gateway&' . self::KEY . '=' . $id );
68
+ echo '<li><a href="' . esc_url( $url ) . '" class="' . ( $this->page_id === $id ? 'current' : '' ) . '">' . esc_html( $label ) . '</a> ' . ( end( $array_keys ) === $id ? '' : '|' ) . ' </li>';
69
  }
70
 
71
  echo '</ul><br class="clear" />';
modules/ppcp-wc-gateway/src/Settings/class-settingslistener.php CHANGED
@@ -23,8 +23,15 @@ use WooCommerce\PayPalCommerce\Webhooks\WebhookRegistrar;
23
  */
24
  class SettingsListener {
25
 
 
 
26
  const NONCE = 'ppcp-settings';
27
 
 
 
 
 
 
28
  /**
29
  * The Settings.
30
  *
@@ -67,6 +74,13 @@ class SettingsListener {
67
  */
68
  private $bearer;
69
 
 
 
 
 
 
 
 
70
  /**
71
  * SettingsListener constructor.
72
  *
@@ -76,6 +90,7 @@ class SettingsListener {
76
  * @param Cache $cache The Cache.
77
  * @param State $state The state.
78
  * @param Bearer $bearer The bearer.
 
79
  */
80
  public function __construct(
81
  Settings $settings,
@@ -83,7 +98,8 @@ class SettingsListener {
83
  WebhookRegistrar $webhook_registrar,
84
  Cache $cache,
85
  State $state,
86
- Bearer $bearer
 
87
  ) {
88
 
89
  $this->settings = $settings;
@@ -92,6 +108,7 @@ class SettingsListener {
92
  $this->cache = $cache;
93
  $this->state = $state;
94
  $this->bearer = $bearer;
 
95
  }
96
 
97
  /**
@@ -218,18 +235,46 @@ class SettingsListener {
218
 
219
  $settings = $this->read_active_credentials_from_settings( $settings );
220
 
221
- if ( ! isset( $_GET[ SectionsRenderer::KEY ] ) || PayPalGateway::ID === $_GET[ SectionsRenderer::KEY ] ) {
 
 
222
  $settings['enabled'] = isset( $_POST['woocommerce_ppcp-gateway_enabled'] )
223
  && 1 === absint( $_POST['woocommerce_ppcp-gateway_enabled'] );
224
- $this->maybe_register_webhooks( $settings );
 
225
  }
226
  // phpcs:enable phpcs:disable WordPress.Security.NonceVerification.Missing
227
  // phpcs:enable phpcs:disable WordPress.Security.NonceVerification.Missing
228
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  foreach ( $settings as $id => $value ) {
230
  $this->settings->set( $id, $value );
231
  }
232
  $this->settings->persist();
 
 
 
 
 
 
 
 
 
 
 
233
  if ( $this->cache->has( PayPalBearer::CACHE_KEY ) ) {
234
  $this->cache->delete( PayPalBearer::CACHE_KEY );
235
  }
@@ -265,30 +310,36 @@ class SettingsListener {
265
  }
266
 
267
  /**
268
- * Depending on the settings change, we might need to register or unregister the Webhooks at PayPal.
269
- *
270
- * @param array $settings The settings.
271
  *
272
- * @throws \WooCommerce\PayPalCommerce\WcGateway\Exception\NotFoundException If a setting hasn't been found.
 
273
  */
274
- private function maybe_register_webhooks( array $settings ) {
 
 
 
 
275
 
276
- if ( ! $this->settings->has( 'client_id' ) && $settings['client_id'] ) {
277
- $this->settings->set( 'products_dcc_enabled', null );
278
- $this->webhook_registrar->register();
 
 
279
  }
280
- if ( $this->settings->has( 'client_id' ) && $this->settings->get( 'client_id' ) ) {
281
- $current_secret = $this->settings->has( 'client_secret' ) ?
282
- $this->settings->get( 'client_secret' ) : '';
 
 
283
  if (
284
- $settings['client_id'] !== $this->settings->get( 'client_id' )
285
- || $settings['client_secret'] !== $current_secret
286
  ) {
287
- $this->settings->set( 'products_dcc_enabled', null );
288
- $this->webhook_registrar->unregister();
289
- $this->webhook_registrar->register();
290
  }
291
  }
 
292
  }
293
 
294
  /**
@@ -311,20 +362,7 @@ class SettingsListener {
311
  if ( ! in_array( $this->state->current_state(), $config['screens'], true ) ) {
312
  continue;
313
  }
314
- if (
315
- 'dcc' === $config['gateway']
316
- && (
317
- ! isset( $_GET[ SectionsRenderer::KEY ] )
318
- || sanitize_text_field( wp_unslash( $_GET[ SectionsRenderer::KEY ] ) ) !== CreditCardGateway::ID
319
- )
320
- ) {
321
- continue;
322
- }
323
- if (
324
- 'paypal' === $config['gateway']
325
- && isset( $_GET[ SectionsRenderer::KEY ] )
326
- && sanitize_text_field( wp_unslash( $_GET[ SectionsRenderer::KEY ] ) ) !== PayPalGateway::ID
327
- ) {
328
  continue;
329
  }
330
  switch ( $config['type'] ) {
@@ -406,14 +444,7 @@ class SettingsListener {
406
  * phpcs:disable WordPress.Security.NonceVerification.Missing
407
  * phpcs:disable WordPress.Security.NonceVerification.Recommended
408
  */
409
- if (
410
- ! isset( $_REQUEST['section'] )
411
- || ! in_array(
412
- sanitize_text_field( wp_unslash( $_REQUEST['section'] ) ),
413
- array( 'ppcp-gateway', 'ppcp-credit-card-gateway' ),
414
- true
415
- )
416
- ) {
417
  return false;
418
  }
419
 
23
  */
24
  class SettingsListener {
25
 
26
+ use PageMatcherTrait;
27
+
28
  const NONCE = 'ppcp-settings';
29
 
30
+ private const CREDENTIALS_ADDED = 'credentials_added';
31
+ private const CREDENTIALS_REMOVED = 'credentials_removed';
32
+ private const CREDENTIALS_CHANGED = 'credentials_changed';
33
+ private const CREDENTIALS_UNCHANGED = 'credentials_unchanged';
34
+
35
  /**
36
  * The Settings.
37
  *
74
  */
75
  private $bearer;
76
 
77
+ /**
78
+ * ID of the current PPCP gateway settings page, or empty if it is not such page.
79
+ *
80
+ * @var string
81
+ */
82
+ protected $page_id;
83
+
84
  /**
85
  * SettingsListener constructor.
86
  *
90
  * @param Cache $cache The Cache.
91
  * @param State $state The state.
92
  * @param Bearer $bearer The bearer.
93
+ * @param string $page_id ID of the current PPCP gateway settings page, or empty if it is not such page.
94
  */
95
  public function __construct(
96
  Settings $settings,
98
  WebhookRegistrar $webhook_registrar,
99
  Cache $cache,
100
  State $state,
101
+ Bearer $bearer,
102
+ string $page_id
103
  ) {
104
 
105
  $this->settings = $settings;
108
  $this->cache = $cache;
109
  $this->state = $state;
110
  $this->bearer = $bearer;
111
+ $this->page_id = $page_id;
112
  }
113
 
114
  /**
235
 
236
  $settings = $this->read_active_credentials_from_settings( $settings );
237
 
238
+ $credentials_change_status = null; // Cannot detect on Card Processing page.
239
+
240
+ if ( PayPalGateway::ID === $this->page_id ) {
241
  $settings['enabled'] = isset( $_POST['woocommerce_ppcp-gateway_enabled'] )
242
  && 1 === absint( $_POST['woocommerce_ppcp-gateway_enabled'] );
243
+
244
+ $credentials_change_status = $this->determine_credentials_change_status( $settings );
245
  }
246
  // phpcs:enable phpcs:disable WordPress.Security.NonceVerification.Missing
247
  // phpcs:enable phpcs:disable WordPress.Security.NonceVerification.Missing
248
 
249
+ if ( $credentials_change_status ) {
250
+ if ( self::CREDENTIALS_UNCHANGED !== $credentials_change_status ) {
251
+ $this->settings->set( 'products_dcc_enabled', null );
252
+ }
253
+
254
+ if ( in_array(
255
+ $credentials_change_status,
256
+ array( self::CREDENTIALS_REMOVED, self::CREDENTIALS_CHANGED ),
257
+ true
258
+ ) ) {
259
+ $this->webhook_registrar->unregister();
260
+ }
261
+ }
262
+
263
  foreach ( $settings as $id => $value ) {
264
  $this->settings->set( $id, $value );
265
  }
266
  $this->settings->persist();
267
+
268
+ if ( $credentials_change_status ) {
269
+ if ( in_array(
270
+ $credentials_change_status,
271
+ array( self::CREDENTIALS_ADDED, self::CREDENTIALS_CHANGED ),
272
+ true
273
+ ) ) {
274
+ $this->webhook_registrar->register();
275
+ }
276
+ }
277
+
278
  if ( $this->cache->has( PayPalBearer::CACHE_KEY ) ) {
279
  $this->cache->delete( PayPalBearer::CACHE_KEY );
280
  }
310
  }
311
 
312
  /**
313
+ * Checks whether on the credentials changed.
 
 
314
  *
315
+ * @param array $new_settings New settings.
316
+ * @return string One of the CREDENTIALS_ constants.
317
  */
318
+ private function determine_credentials_change_status( array $new_settings ): string {
319
+ $current_id = $this->settings->has( 'client_id' ) ? $this->settings->get( 'client_id' ) : '';
320
+ $current_secret = $this->settings->has( 'client_secret' ) ? $this->settings->get( 'client_secret' ) : '';
321
+ $new_id = $new_settings['client_id'] ?? '';
322
+ $new_secret = $new_settings['client_secret'] ?? '';
323
 
324
+ $had_credentials = $current_id && $current_secret;
325
+ $submitted_credentials = $new_id && $new_secret;
326
+
327
+ if ( ! $had_credentials && $submitted_credentials ) {
328
+ return self::CREDENTIALS_ADDED;
329
  }
330
+ if ( $had_credentials ) {
331
+ if ( ! $submitted_credentials ) {
332
+ return self::CREDENTIALS_REMOVED;
333
+ }
334
+
335
  if (
336
+ $current_id !== $new_id
337
+ || $current_secret !== $new_secret
338
  ) {
339
+ return self::CREDENTIALS_CHANGED;
 
 
340
  }
341
  }
342
+ return self::CREDENTIALS_UNCHANGED;
343
  }
344
 
345
  /**
362
  if ( ! in_array( $this->state->current_state(), $config['screens'], true ) ) {
363
  continue;
364
  }
365
+ if ( ! $this->field_matches_page( $config, $this->page_id ) ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
366
  continue;
367
  }
368
  switch ( $config['type'] ) {
444
  * phpcs:disable WordPress.Security.NonceVerification.Missing
445
  * phpcs:disable WordPress.Security.NonceVerification.Recommended
446
  */
447
+ if ( empty( $this->page_id ) ) {
 
 
 
 
 
 
 
448
  return false;
449
  }
450
 
modules/ppcp-wc-gateway/src/Settings/class-settingsrenderer.php CHANGED
@@ -15,6 +15,7 @@ use WooCommerce\PayPalCommerce\Button\Helper\MessagesApply;
15
  use WooCommerce\PayPalCommerce\Onboarding\State;
16
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
17
  use Psr\Container\ContainerInterface;
 
18
  use Woocommerce\PayPalCommerce\WcGateway\Helper\DccProductStatus;
19
  use Woocommerce\PayPalCommerce\WcGateway\Helper\SettingsStatus;
20
 
@@ -23,6 +24,8 @@ use Woocommerce\PayPalCommerce\WcGateway\Helper\SettingsStatus;
23
  */
24
  class SettingsRenderer {
25
 
 
 
26
  /**
27
  * The Settings status helper.
28
  *
@@ -72,6 +75,13 @@ class SettingsRenderer {
72
  */
73
  private $dcc_product_status;
74
 
 
 
 
 
 
 
 
75
  /**
76
  * SettingsRenderer constructor.
77
  *
@@ -82,6 +92,7 @@ class SettingsRenderer {
82
  * @param MessagesApply $messages_apply Whether messages can be shown.
83
  * @param DccProductStatus $dcc_product_status The product status.
84
  * @param SettingsStatus $settings_status The Settings status helper.
 
85
  */
86
  public function __construct(
87
  ContainerInterface $settings,
@@ -90,7 +101,8 @@ class SettingsRenderer {
90
  DccApplies $dcc_applies,
91
  MessagesApply $messages_apply,
92
  DccProductStatus $dcc_product_status,
93
- SettingsStatus $settings_status
 
94
  ) {
95
 
96
  $this->settings = $settings;
@@ -100,6 +112,7 @@ class SettingsRenderer {
100
  $this->messages_apply = $messages_apply;
101
  $this->dcc_product_status = $dcc_product_status;
102
  $this->settings_status = $settings_status;
 
103
  }
104
 
105
  /**
@@ -166,21 +179,7 @@ class SettingsRenderer {
166
  * @return bool Whether is PayPal checkout screen or not.
167
  */
168
  private function is_paypal_checkout_screen(): bool {
169
- $current_screen = get_current_screen();
170
- //phpcs:disable WordPress.Security.NonceVerification.Recommended
171
- //phpcs:disable WordPress.Security.NonceVerification.Missing
172
- if ( isset( $current_screen->id ) && 'woocommerce_page_wc-settings' === $current_screen->id
173
- && isset( $_GET['section'] ) && 'ppcp-gateway' === $_GET['section'] ) {
174
-
175
- if ( isset( $_GET['ppcp-tab'] ) && 'ppcp-gateway' !== $_GET['ppcp-tab'] ) {
176
- return false;
177
- }
178
-
179
- return true;
180
- }
181
- //phpcs:enable
182
-
183
- return false;
184
  }
185
 
186
  /**
@@ -312,14 +311,66 @@ class SettingsRenderer {
312
  return $html;
313
  }
314
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
315
  /**
316
  * Renders the settings.
317
  */
318
  public function render() {
319
 
320
- //phpcs:disable WordPress.Security.NonceVerification.Recommended
321
- //phpcs:disable WordPress.Security.NonceVerification.Missing
322
- $is_dcc = isset( $_GET[ SectionsRenderer::KEY ] ) && CreditCardGateway::ID === sanitize_text_field( wp_unslash( $_GET[ SectionsRenderer::KEY ] ) );
323
  //phpcs:enable WordPress.Security.NonceVerification.Recommended
324
  //phpcs:enable WordPress.Security.NonceVerification.Missing
325
  $nonce = wp_create_nonce( SettingsListener::NONCE );
@@ -330,10 +381,7 @@ class SettingsRenderer {
330
  if ( ! in_array( $this->state->current_state(), $config['screens'], true ) ) {
331
  continue;
332
  }
333
- if ( $is_dcc && ! in_array( $config['gateway'], array( 'all', 'dcc' ), true ) ) {
334
- continue;
335
- }
336
- if ( ! $is_dcc && ! in_array( $config['gateway'], array( 'all', 'paypal' ), true ) ) {
337
  continue;
338
  }
339
  if (
@@ -354,7 +402,7 @@ class SettingsRenderer {
354
  ) {
355
  continue;
356
  }
357
- $value = $this->settings->has( $field ) ? $this->settings->get( $field ) : null;
358
  $key = 'ppcp[' . $field . ']';
359
  $id = 'ppcp-' . $field;
360
  $config['id'] = $id;
@@ -399,8 +447,6 @@ class SettingsRenderer {
399
  if ( $this->dcc_applies->for_country_currency() ) {
400
  if ( State::STATE_ONBOARDED > $this->state->current_state() ) {
401
  $this->render_dcc_onboarding_info();
402
- } elseif ( State::STATE_ONBOARDED === $this->state->current_state() && $this->dcc_product_status->dcc_is_active() ) {
403
- $this->render_3d_secure_info();
404
  } elseif ( ! $this->dcc_product_status->dcc_is_active() ) {
405
  $this->render_dcc_not_active_yet();
406
  }
@@ -450,45 +496,6 @@ class SettingsRenderer {
450
  <?php
451
  }
452
 
453
- /**
454
- * Renders the 3d secure info text.
455
- */
456
- private function render_3d_secure_info() {
457
- ?>
458
- <tr>
459
- <th><?php esc_html_e( '3D Secure', 'woocommerce-paypal-payments' ); ?></th>
460
- <td>
461
- <p>
462
- <?php
463
- /**
464
- * We still need to provide a docs link.
465
- *
466
- * @todo: Provide link to documentation.
467
- */
468
- echo wp_kses_post(
469
- sprintf(
470
- // translators: %1$s and %2$s is a link tag.
471
- __(
472
- '3D Secure benefits cardholders and merchants by providing
473
- an additional layer of verification using Verified by Visa,
474
- MasterCard SecureCode and American Express SafeKey.
475
- %1$sLearn more about 3D Secure.%2$s',
476
- 'woocommerce-paypal-payments'
477
- ),
478
- '<a
479
- rel="noreferrer noopener"
480
- href="https://woocommerce.com/posts/introducing-strong-customer-authentication-sca/"
481
- >',
482
- '</a>'
483
- )
484
- );
485
- ?>
486
- </p>
487
- </td>
488
- </tr>
489
- <?php
490
- }
491
-
492
  /**
493
  * Renders the DCC onboarding info.
494
  */
@@ -547,8 +554,8 @@ class SettingsRenderer {
547
  return false;
548
  }
549
 
550
- return $this->is_paypal_checkout_screen() && $this->paypal_vaulting_is_enabled()
551
- || $this->is_paypal_checkout_screen() && $this->settings_status->pay_later_messaging_is_enabled();
552
  }
553
  }
554
 
15
  use WooCommerce\PayPalCommerce\Onboarding\State;
16
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
17
  use Psr\Container\ContainerInterface;
18
+ use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
19
  use Woocommerce\PayPalCommerce\WcGateway\Helper\DccProductStatus;
20
  use Woocommerce\PayPalCommerce\WcGateway\Helper\SettingsStatus;
21
 
24
  */
25
  class SettingsRenderer {
26
 
27
+ use PageMatcherTrait;
28
+
29
  /**
30
  * The Settings status helper.
31
  *
75
  */
76
  private $dcc_product_status;
77
 
78
+ /**
79
+ * ID of the current PPCP gateway settings page, or empty if it is not such page.
80
+ *
81
+ * @var string
82
+ */
83
+ protected $page_id;
84
+
85
  /**
86
  * SettingsRenderer constructor.
87
  *
92
  * @param MessagesApply $messages_apply Whether messages can be shown.
93
  * @param DccProductStatus $dcc_product_status The product status.
94
  * @param SettingsStatus $settings_status The Settings status helper.
95
+ * @param string $page_id ID of the current PPCP gateway settings page, or empty if it is not such page.
96
  */
97
  public function __construct(
98
  ContainerInterface $settings,
101
  DccApplies $dcc_applies,
102
  MessagesApply $messages_apply,
103
  DccProductStatus $dcc_product_status,
104
+ SettingsStatus $settings_status,
105
+ string $page_id
106
  ) {
107
 
108
  $this->settings = $settings;
112
  $this->messages_apply = $messages_apply;
113
  $this->dcc_product_status = $dcc_product_status;
114
  $this->settings_status = $settings_status;
115
+ $this->page_id = $page_id;
116
  }
117
 
118
  /**
179
  * @return bool Whether is PayPal checkout screen or not.
180
  */
181
  private function is_paypal_checkout_screen(): bool {
182
+ return PayPalGateway::ID === $this->page_id;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
183
  }
184
 
185
  /**
311
  return $html;
312
  }
313
 
314
+ /**
315
+ * Renders the table row.
316
+ *
317
+ * @param array $data Values of the row cells.
318
+ * @param string $tag HTML tag ('td', 'th').
319
+ * @return string
320
+ */
321
+ public function render_table_row( array $data, string $tag = 'td' ): string {
322
+ $cells = array_map(
323
+ function ( $value ) use ( $tag ): string {
324
+ return "<$tag>" . (string) $value . "</$tag>";
325
+ },
326
+ $data
327
+ );
328
+ return '<tr>' . implode( $cells ) . '</tr>';
329
+ }
330
+
331
+ /**
332
+ * Renders the table field.
333
+ *
334
+ * @param string $field The current field HTML.
335
+ * @param string $key The key.
336
+ * @param array $config The configuration of the field.
337
+ * @param array $value The current value.
338
+ *
339
+ * @return string HTML.
340
+ */
341
+ public function render_table( $field, $key, $config, $value ): string {
342
+ if ( 'ppcp-table' !== $config['type'] ) {
343
+ return $field;
344
+ }
345
+
346
+ $data = $value['data'];
347
+ if ( empty( $data ) ) {
348
+ $empty_placeholder = $value['empty_placeholder'] ?? ( $config['empty_placeholder'] ?? null );
349
+ if ( $empty_placeholder ) {
350
+ return $empty_placeholder;
351
+ }
352
+ }
353
+
354
+ $header_row_html = $this->render_table_row( $value['headers'], 'th' );
355
+ $data_rows_html = implode(
356
+ array_map(
357
+ array( $this, 'render_table_row' ),
358
+ $data
359
+ )
360
+ );
361
+
362
+ return "<table>
363
+ $header_row_html
364
+ $data_rows_html
365
+ </table>";
366
+ }
367
+
368
  /**
369
  * Renders the settings.
370
  */
371
  public function render() {
372
 
373
+ $is_dcc = CreditCardGateway::ID === $this->page_id;
 
 
374
  //phpcs:enable WordPress.Security.NonceVerification.Recommended
375
  //phpcs:enable WordPress.Security.NonceVerification.Missing
376
  $nonce = wp_create_nonce( SettingsListener::NONCE );
381
  if ( ! in_array( $this->state->current_state(), $config['screens'], true ) ) {
382
  continue;
383
  }
384
+ if ( ! $this->field_matches_page( $config, $this->page_id ) ) {
 
 
 
385
  continue;
386
  }
387
  if (
402
  ) {
403
  continue;
404
  }
405
+ $value = $this->settings->has( $field ) ? $this->settings->get( $field ) : ( isset( $config['value'] ) ? $config['value']() : null );
406
  $key = 'ppcp[' . $field . ']';
407
  $id = 'ppcp-' . $field;
408
  $config['id'] = $id;
447
  if ( $this->dcc_applies->for_country_currency() ) {
448
  if ( State::STATE_ONBOARDED > $this->state->current_state() ) {
449
  $this->render_dcc_onboarding_info();
 
 
450
  } elseif ( ! $this->dcc_product_status->dcc_is_active() ) {
451
  $this->render_dcc_not_active_yet();
452
  }
496
  <?php
497
  }
498
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
499
  /**
500
  * Renders the DCC onboarding info.
501
  */
554
  return false;
555
  }
556
 
557
+ return $this->is_paypal_checkout_screen()
558
+ && ( $this->paypal_vaulting_is_enabled() || $this->settings_status->pay_later_messaging_is_enabled() );
559
  }
560
  }
561
 
modules/ppcp-wc-gateway/src/class-wcgatewaymodule.php CHANGED
@@ -24,6 +24,7 @@ use WooCommerce\PayPalCommerce\WcGateway\Endpoint\ReturnUrlEndpoint;
24
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
25
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
26
  use WooCommerce\PayPalCommerce\WcGateway\Notice\ConnectAdminNotice;
 
27
  use WooCommerce\PayPalCommerce\WcGateway\Settings\SectionsRenderer;
28
  use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
29
  use WooCommerce\PayPalCommerce\WcGateway\Settings\SettingsListener;
@@ -58,7 +59,6 @@ class WcGatewayModule implements ModuleInterface {
58
  $this->register_order_functionality( $container );
59
  $this->register_columns( $container );
60
  $this->register_checkout_paypal_address_preset( $container );
61
- $this->ajax_gateway_enabler( $container );
62
 
63
  add_action(
64
  'woocommerce_sections_checkout',
@@ -86,15 +86,19 @@ class WcGatewayModule implements ModuleInterface {
86
  Repository::NOTICES_FILTER,
87
  static function ( $notices ) use ( $container ): array {
88
  $notice = $container->get( 'wcgateway.notice.connect' );
89
- /**
90
- * The Connect Admin Notice object.
91
- *
92
- * @var ConnectAdminNotice $notice
93
- */
94
  $connect_message = $notice->connect_message();
95
  if ( $connect_message ) {
96
  $notices[] = $connect_message;
97
  }
 
 
 
 
 
 
 
 
98
  $authorize_order_action = $container->get( 'wcgateway.notice.authorize-order-action' );
99
  $authorized_message = $authorize_order_action->message();
100
  if ( $authorized_message ) {
@@ -102,11 +106,7 @@ class WcGatewayModule implements ModuleInterface {
102
  }
103
 
104
  $settings_renderer = $container->get( 'wcgateway.settings.render' );
105
- /**
106
- * The settings renderer.
107
- *
108
- * @var SettingsRenderer $settings_renderer
109
- */
110
  $messages = $settings_renderer->messages();
111
  $notices = array_merge( $notices, $messages );
112
 
@@ -149,50 +149,6 @@ class WcGatewayModule implements ModuleInterface {
149
  );
150
  }
151
 
152
- /**
153
- * Adds the functionality to listen to the ajax enable gateway switch.
154
- *
155
- * @param ContainerInterface $container The container.
156
- */
157
- private function ajax_gateway_enabler( ContainerInterface $container ) {
158
- add_action(
159
- 'wp_ajax_woocommerce_toggle_gateway_enabled',
160
- static function () use ( $container ) {
161
- if (
162
- ! current_user_can( 'manage_woocommerce' )
163
- || ! check_ajax_referer(
164
- 'woocommerce-toggle-payment-gateway-enabled',
165
- 'security'
166
- )
167
- || ! isset( $_POST['gateway_id'] )
168
- ) {
169
- return;
170
- }
171
-
172
- /**
173
- * The settings.
174
- *
175
- * @var Settings $settings
176
- */
177
- $settings = $container->get( 'wcgateway.settings' );
178
- $key = PayPalGateway::ID === $_POST['gateway_id'] ? 'enabled' : '';
179
- if ( CreditCardGateway::ID === $_POST['gateway_id'] ) {
180
- $key = 'dcc_enabled';
181
- }
182
- if ( ! $key ) {
183
- return;
184
- }
185
- $enabled = $settings->has( $key ) ? $settings->get( $key ) : false;
186
- if ( ! $enabled ) {
187
- return;
188
- }
189
- $settings->set( $key, false );
190
- $settings->persist();
191
- },
192
- 9
193
- );
194
- }
195
-
196
  /**
197
  * Registers the payment gateways.
198
  *
@@ -206,16 +162,12 @@ class WcGatewayModule implements ModuleInterface {
206
  $methods[] = $container->get( 'wcgateway.paypal-gateway' );
207
  $dcc_applies = $container->get( 'api.helpers.dccapplies' );
208
 
209
- $screen = ! function_exists( 'get_current_screen' ) ? (object) array( 'id' => 'front' ) : get_current_screen();
210
- if ( ! $screen ) {
211
- $screen = (object) array( 'id' => 'front' );
212
- }
213
  /**
214
  * The DCC Applies object.
215
  *
216
  * @var DccApplies $dcc_applies
217
  */
218
- if ( 'woocommerce_page_wc-settings' !== $screen->id && $dcc_applies->for_country_currency() ) {
219
  $methods[] = $container->get( 'wcgateway.credit-card-gateway' );
220
  }
221
  return (array) $methods;
@@ -262,6 +214,7 @@ class WcGatewayModule implements ModuleInterface {
262
  $field = $renderer->render_password( $field, $key, $args, $value );
263
  $field = $renderer->render_text_input( $field, $key, $args, $value );
264
  $field = $renderer->render_heading( $field, $key, $args, $value );
 
265
  return $field;
266
  },
267
  10,
24
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
25
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
26
  use WooCommerce\PayPalCommerce\WcGateway\Notice\ConnectAdminNotice;
27
+ use WooCommerce\PayPalCommerce\WcGateway\Notice\DccWithoutPayPalAdminNotice;
28
  use WooCommerce\PayPalCommerce\WcGateway\Settings\SectionsRenderer;
29
  use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
30
  use WooCommerce\PayPalCommerce\WcGateway\Settings\SettingsListener;
59
  $this->register_order_functionality( $container );
60
  $this->register_columns( $container );
61
  $this->register_checkout_paypal_address_preset( $container );
 
62
 
63
  add_action(
64
  'woocommerce_sections_checkout',
86
  Repository::NOTICES_FILTER,
87
  static function ( $notices ) use ( $container ): array {
88
  $notice = $container->get( 'wcgateway.notice.connect' );
89
+ assert( $notice instanceof ConnectAdminNotice );
 
 
 
 
90
  $connect_message = $notice->connect_message();
91
  if ( $connect_message ) {
92
  $notices[] = $connect_message;
93
  }
94
+
95
+ $dcc_without_paypal_notice = $container->get( 'wcgateway.notice.dcc-without-paypal' );
96
+ assert( $dcc_without_paypal_notice instanceof DccWithoutPayPalAdminNotice );
97
+ $dcc_without_paypal_message = $dcc_without_paypal_notice->message();
98
+ if ( $dcc_without_paypal_message ) {
99
+ $notices[] = $dcc_without_paypal_message;
100
+ }
101
+
102
  $authorize_order_action = $container->get( 'wcgateway.notice.authorize-order-action' );
103
  $authorized_message = $authorize_order_action->message();
104
  if ( $authorized_message ) {
106
  }
107
 
108
  $settings_renderer = $container->get( 'wcgateway.settings.render' );
109
+ assert( $settings_renderer instanceof SettingsRenderer );
 
 
 
 
110
  $messages = $settings_renderer->messages();
111
  $notices = array_merge( $notices, $messages );
112
 
149
  );
150
  }
151
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
  /**
153
  * Registers the payment gateways.
154
  *
162
  $methods[] = $container->get( 'wcgateway.paypal-gateway' );
163
  $dcc_applies = $container->get( 'api.helpers.dccapplies' );
164
 
 
 
 
 
165
  /**
166
  * The DCC Applies object.
167
  *
168
  * @var DccApplies $dcc_applies
169
  */
170
+ if ( $dcc_applies->for_country_currency() ) {
171
  $methods[] = $container->get( 'wcgateway.credit-card-gateway' );
172
  }
173
  return (array) $methods;
214
  $field = $renderer->render_password( $field, $key, $args, $value );
215
  $field = $renderer->render_text_input( $field, $key, $args, $value );
216
  $field = $renderer->render_heading( $field, $key, $args, $value );
217
+ $field = $renderer->render_table( $field, $key, $args, $value );
218
  return $field;
219
  },
220
  10,
modules/ppcp-wc-gateway/webpack.config.js CHANGED
@@ -2,7 +2,7 @@ const path = require('path');
2
  const isProduction = process.env.NODE_ENV === 'production';
3
 
4
  module.exports = {
5
- devtool: 'sourcemap',
6
  mode: isProduction ? 'production' : 'development',
7
  target: 'web',
8
  entry: {
2
  const isProduction = process.env.NODE_ENV === 'production';
3
 
4
  module.exports = {
5
+ devtool: 'eval-source-map',
6
  mode: isProduction ? 'production' : 'development',
7
  target: 'web',
8
  entry: {
modules/ppcp-wc-gateway/yarn.lock CHANGED
@@ -2,97 +2,97 @@
2
  # yarn lockfile v1
3
 
4
 
5
- "@babel/code-frame@^7.12.13":
6
- version "7.12.13"
7
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
8
- integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==
9
  dependencies:
10
- "@babel/highlight" "^7.12.13"
11
 
12
- "@babel/compat-data@^7.13.0", "@babel/compat-data@^7.13.12", "@babel/compat-data@^7.13.8":
13
- version "7.13.12"
14
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.12.tgz#a8a5ccac19c200f9dd49624cac6e19d7be1236a1"
15
- integrity sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==
16
 
17
  "@babel/core@^7.9.0":
18
- version "7.13.13"
19
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.13.tgz#bc44c4a2be2288ec4ddf56b66fc718019c76ac29"
20
- integrity sha512-1xEs9jZAyKIouOoCmpsgk/I26PoKyvzQ2ixdRpRzfbcp1fL+ozw7TUgdDgwonbTovqRaTfRh50IXuw4QrWO0GA==
21
- dependencies:
22
- "@babel/code-frame" "^7.12.13"
23
- "@babel/generator" "^7.13.9"
24
- "@babel/helper-compilation-targets" "^7.13.13"
25
- "@babel/helper-module-transforms" "^7.13.12"
26
- "@babel/helpers" "^7.13.10"
27
- "@babel/parser" "^7.13.13"
28
- "@babel/template" "^7.12.13"
29
- "@babel/traverse" "^7.13.13"
30
- "@babel/types" "^7.13.13"
31
  convert-source-map "^1.7.0"
32
  debug "^4.1.0"
33
  gensync "^1.0.0-beta.2"
34
  json5 "^2.1.2"
35
- lodash "^4.17.19"
36
  semver "^6.3.0"
37
  source-map "^0.5.0"
38
 
39
- "@babel/generator@^7.13.9":
40
- version "7.13.9"
41
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39"
42
- integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==
43
  dependencies:
44
- "@babel/types" "^7.13.0"
45
  jsesc "^2.5.1"
46
  source-map "^0.5.0"
47
 
48
- "@babel/helper-annotate-as-pure@^7.12.13":
49
- version "7.12.13"
50
- resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab"
51
- integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==
52
  dependencies:
53
- "@babel/types" "^7.12.13"
54
 
55
- "@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13":
56
- version "7.12.13"
57
- resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc"
58
- integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==
59
  dependencies:
60
- "@babel/helper-explode-assignable-expression" "^7.12.13"
61
- "@babel/types" "^7.12.13"
62
 
63
- "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.10", "@babel/helper-compilation-targets@^7.13.13", "@babel/helper-compilation-targets@^7.13.8":
64
- version "7.13.13"
65
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz#2b2972a0926474853f41e4adbc69338f520600e5"
66
- integrity sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==
67
  dependencies:
68
- "@babel/compat-data" "^7.13.12"
69
- "@babel/helper-validator-option" "^7.12.17"
70
- browserslist "^4.14.5"
71
  semver "^6.3.0"
72
 
73
- "@babel/helper-create-class-features-plugin@^7.13.0":
74
- version "7.13.11"
75
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz#30d30a005bca2c953f5653fc25091a492177f4f6"
76
- integrity sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==
77
  dependencies:
78
- "@babel/helper-function-name" "^7.12.13"
79
- "@babel/helper-member-expression-to-functions" "^7.13.0"
80
- "@babel/helper-optimise-call-expression" "^7.12.13"
81
- "@babel/helper-replace-supers" "^7.13.0"
82
- "@babel/helper-split-export-declaration" "^7.12.13"
 
83
 
84
- "@babel/helper-create-regexp-features-plugin@^7.12.13":
85
- version "7.12.17"
86
- resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7"
87
- integrity sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==
88
  dependencies:
89
- "@babel/helper-annotate-as-pure" "^7.12.13"
90
  regexpu-core "^4.7.1"
91
 
92
- "@babel/helper-define-polyfill-provider@^0.1.5":
93
- version "0.1.5"
94
- resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz#3c2f91b7971b9fc11fe779c945c014065dea340e"
95
- integrity sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==
96
  dependencies:
97
  "@babel/helper-compilation-targets" "^7.13.0"
98
  "@babel/helper-module-imports" "^7.12.13"
@@ -103,277 +103,295 @@
103
  resolve "^1.14.2"
104
  semver "^6.1.2"
105
 
106
- "@babel/helper-explode-assignable-expression@^7.12.13":
107
- version "7.13.0"
108
- resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f"
109
- integrity sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==
110
- dependencies:
111
- "@babel/types" "^7.13.0"
112
-
113
- "@babel/helper-function-name@^7.12.13":
114
- version "7.12.13"
115
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a"
116
- integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==
117
- dependencies:
118
- "@babel/helper-get-function-arity" "^7.12.13"
119
- "@babel/template" "^7.12.13"
120
- "@babel/types" "^7.12.13"
121
-
122
- "@babel/helper-get-function-arity@^7.12.13":
123
- version "7.12.13"
124
- resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583"
125
- integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==
126
- dependencies:
127
- "@babel/types" "^7.12.13"
128
-
129
- "@babel/helper-hoist-variables@^7.13.0":
130
- version "7.13.0"
131
- resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz#5d5882e855b5c5eda91e0cadc26c6e7a2c8593d8"
132
- integrity sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==
133
- dependencies:
134
- "@babel/traverse" "^7.13.0"
135
- "@babel/types" "^7.13.0"
136
-
137
- "@babel/helper-member-expression-to-functions@^7.13.0", "@babel/helper-member-expression-to-functions@^7.13.12":
138
- version "7.13.12"
139
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72"
140
- integrity sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==
141
- dependencies:
142
- "@babel/types" "^7.13.12"
143
-
144
- "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12":
145
- version "7.13.12"
146
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977"
147
- integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==
148
- dependencies:
149
- "@babel/types" "^7.13.12"
150
-
151
- "@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.13.12":
152
- version "7.13.12"
153
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz#600e58350490828d82282631a1422268e982ba96"
154
- integrity sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==
155
- dependencies:
156
- "@babel/helper-module-imports" "^7.13.12"
157
- "@babel/helper-replace-supers" "^7.13.12"
158
- "@babel/helper-simple-access" "^7.13.12"
159
- "@babel/helper-split-export-declaration" "^7.12.13"
160
- "@babel/helper-validator-identifier" "^7.12.11"
161
- "@babel/template" "^7.12.13"
162
- "@babel/traverse" "^7.13.0"
163
- "@babel/types" "^7.13.12"
164
-
165
- "@babel/helper-optimise-call-expression@^7.12.13":
166
- version "7.12.13"
167
- resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea"
168
- integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==
169
- dependencies:
170
- "@babel/types" "^7.12.13"
171
-
172
- "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
173
- version "7.13.0"
174
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af"
175
- integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==
176
-
177
- "@babel/helper-remap-async-to-generator@^7.13.0":
178
- version "7.13.0"
179
- resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209"
180
- integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==
181
- dependencies:
182
- "@babel/helper-annotate-as-pure" "^7.12.13"
183
- "@babel/helper-wrap-function" "^7.13.0"
184
- "@babel/types" "^7.13.0"
185
-
186
- "@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0", "@babel/helper-replace-supers@^7.13.12":
187
- version "7.13.12"
188
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz#6442f4c1ad912502481a564a7386de0c77ff3804"
189
- integrity sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==
190
- dependencies:
191
- "@babel/helper-member-expression-to-functions" "^7.13.12"
192
- "@babel/helper-optimise-call-expression" "^7.12.13"
193
- "@babel/traverse" "^7.13.0"
194
- "@babel/types" "^7.13.12"
195
-
196
- "@babel/helper-simple-access@^7.12.13", "@babel/helper-simple-access@^7.13.12":
197
- version "7.13.12"
198
- resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6"
199
- integrity sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==
200
- dependencies:
201
- "@babel/types" "^7.13.12"
202
-
203
- "@babel/helper-skip-transparent-expression-wrappers@^7.12.1":
204
- version "7.12.1"
205
- resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf"
206
- integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==
207
- dependencies:
208
- "@babel/types" "^7.12.1"
209
-
210
- "@babel/helper-split-export-declaration@^7.12.13":
211
- version "7.12.13"
212
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05"
213
- integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==
214
  dependencies:
215
- "@babel/types" "^7.12.13"
216
-
217
- "@babel/helper-validator-identifier@^7.12.11":
218
- version "7.12.11"
219
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
220
- integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
221
-
222
- "@babel/helper-validator-option@^7.12.17":
223
- version "7.12.17"
224
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831"
225
- integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==
226
-
227
- "@babel/helper-wrap-function@^7.13.0":
228
- version "7.13.0"
229
- resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4"
230
- integrity sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==
231
  dependencies:
232
- "@babel/helper-function-name" "^7.12.13"
233
- "@babel/template" "^7.12.13"
234
- "@babel/traverse" "^7.13.0"
235
- "@babel/types" "^7.13.0"
236
 
237
- "@babel/helpers@^7.13.10":
238
- version "7.13.10"
239
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.10.tgz#fd8e2ba7488533cdeac45cc158e9ebca5e3c7df8"
240
- integrity sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==
241
  dependencies:
242
- "@babel/template" "^7.12.13"
243
- "@babel/traverse" "^7.13.0"
244
- "@babel/types" "^7.13.0"
 
 
 
 
 
245
 
246
- "@babel/highlight@^7.12.13":
247
- version "7.13.10"
248
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1"
249
- integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==
250
- dependencies:
251
- "@babel/helper-validator-identifier" "^7.12.11"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
252
  chalk "^2.0.0"
253
  js-tokens "^4.0.0"
254
 
255
- "@babel/parser@^7.12.13", "@babel/parser@^7.13.13":
256
- version "7.13.13"
257
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.13.tgz#42f03862f4aed50461e543270916b47dd501f0df"
258
- integrity sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==
259
 
260
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12":
261
- version "7.13.12"
262
- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz#a3484d84d0b549f3fc916b99ee4783f26fabad2a"
263
- integrity sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==
264
  dependencies:
265
- "@babel/helper-plugin-utils" "^7.13.0"
266
- "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
267
- "@babel/plugin-proposal-optional-chaining" "^7.13.12"
268
 
269
- "@babel/plugin-proposal-async-generator-functions@^7.13.8":
270
- version "7.13.8"
271
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz#87aacb574b3bc4b5603f6fe41458d72a5a2ec4b1"
272
- integrity sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==
273
  dependencies:
274
- "@babel/helper-plugin-utils" "^7.13.0"
275
- "@babel/helper-remap-async-to-generator" "^7.13.0"
276
  "@babel/plugin-syntax-async-generators" "^7.8.4"
277
 
278
- "@babel/plugin-proposal-class-properties@^7.13.0":
279
- version "7.13.0"
280
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37"
281
- integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==
282
  dependencies:
283
- "@babel/helper-create-class-features-plugin" "^7.13.0"
284
- "@babel/helper-plugin-utils" "^7.13.0"
285
 
286
- "@babel/plugin-proposal-dynamic-import@^7.13.8":
287
- version "7.13.8"
288
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz#876a1f6966e1dec332e8c9451afda3bebcdf2e1d"
289
- integrity sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==
290
  dependencies:
291
- "@babel/helper-plugin-utils" "^7.13.0"
 
 
 
 
 
 
 
 
 
292
  "@babel/plugin-syntax-dynamic-import" "^7.8.3"
293
 
294
- "@babel/plugin-proposal-export-namespace-from@^7.12.13":
295
- version "7.12.13"
296
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz#393be47a4acd03fa2af6e3cde9b06e33de1b446d"
297
- integrity sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==
298
  dependencies:
299
- "@babel/helper-plugin-utils" "^7.12.13"
300
  "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
301
 
302
- "@babel/plugin-proposal-json-strings@^7.13.8":
303
- version "7.13.8"
304
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz#bf1fb362547075afda3634ed31571c5901afef7b"
305
- integrity sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==
306
  dependencies:
307
- "@babel/helper-plugin-utils" "^7.13.0"
308
  "@babel/plugin-syntax-json-strings" "^7.8.3"
309
 
310
- "@babel/plugin-proposal-logical-assignment-operators@^7.13.8":
311
- version "7.13.8"
312
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz#93fa78d63857c40ce3c8c3315220fd00bfbb4e1a"
313
- integrity sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==
314
  dependencies:
315
- "@babel/helper-plugin-utils" "^7.13.0"
316
  "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
317
 
318
- "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8":
319
- version "7.13.8"
320
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz#3730a31dafd3c10d8ccd10648ed80a2ac5472ef3"
321
- integrity sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==
322
  dependencies:
323
- "@babel/helper-plugin-utils" "^7.13.0"
324
  "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
325
 
326
- "@babel/plugin-proposal-numeric-separator@^7.12.13":
327
- version "7.12.13"
328
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz#bd9da3188e787b5120b4f9d465a8261ce67ed1db"
329
- integrity sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==
330
  dependencies:
331
- "@babel/helper-plugin-utils" "^7.12.13"
332
  "@babel/plugin-syntax-numeric-separator" "^7.10.4"
333
 
334
- "@babel/plugin-proposal-object-rest-spread@^7.13.8":
335
- version "7.13.8"
336
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz#5d210a4d727d6ce3b18f9de82cc99a3964eed60a"
337
- integrity sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==
338
  dependencies:
339
- "@babel/compat-data" "^7.13.8"
340
- "@babel/helper-compilation-targets" "^7.13.8"
341
- "@babel/helper-plugin-utils" "^7.13.0"
342
  "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
343
- "@babel/plugin-transform-parameters" "^7.13.0"
344
 
345
- "@babel/plugin-proposal-optional-catch-binding@^7.13.8":
346
- version "7.13.8"
347
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz#3ad6bd5901506ea996fc31bdcf3ccfa2bed71107"
348
- integrity sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==
349
  dependencies:
350
- "@babel/helper-plugin-utils" "^7.13.0"
351
  "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
352
 
353
- "@babel/plugin-proposal-optional-chaining@^7.13.12":
354
- version "7.13.12"
355
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz#ba9feb601d422e0adea6760c2bd6bbb7bfec4866"
356
- integrity sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==
357
  dependencies:
358
- "@babel/helper-plugin-utils" "^7.13.0"
359
- "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
360
  "@babel/plugin-syntax-optional-chaining" "^7.8.3"
361
 
362
- "@babel/plugin-proposal-private-methods@^7.13.0":
363
- version "7.13.0"
364
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz#04bd4c6d40f6e6bbfa2f57e2d8094bad900ef787"
365
- integrity sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==
366
  dependencies:
367
- "@babel/helper-create-class-features-plugin" "^7.13.0"
368
- "@babel/helper-plugin-utils" "^7.13.0"
369
 
370
- "@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
371
- version "7.12.13"
372
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba"
373
- integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==
374
  dependencies:
375
- "@babel/helper-create-regexp-features-plugin" "^7.12.13"
376
- "@babel/helper-plugin-utils" "^7.12.13"
 
 
 
 
 
 
 
 
 
 
377
 
378
  "@babel/plugin-syntax-async-generators@^7.8.4":
379
  version "7.8.4"
@@ -389,6 +407,13 @@
389
  dependencies:
390
  "@babel/helper-plugin-utils" "^7.12.13"
391
 
 
 
 
 
 
 
 
392
  "@babel/plugin-syntax-dynamic-import@^7.8.3":
393
  version "7.8.3"
394
  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
@@ -452,286 +477,296 @@
452
  dependencies:
453
  "@babel/helper-plugin-utils" "^7.8.0"
454
 
455
- "@babel/plugin-syntax-top-level-await@^7.12.13":
456
- version "7.12.13"
457
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178"
458
- integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==
459
  dependencies:
460
- "@babel/helper-plugin-utils" "^7.12.13"
461
 
462
- "@babel/plugin-transform-arrow-functions@^7.13.0":
463
- version "7.13.0"
464
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae"
465
- integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==
466
  dependencies:
467
- "@babel/helper-plugin-utils" "^7.13.0"
468
 
469
- "@babel/plugin-transform-async-to-generator@^7.13.0":
470
- version "7.13.0"
471
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f"
472
- integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==
473
  dependencies:
474
- "@babel/helper-module-imports" "^7.12.13"
475
- "@babel/helper-plugin-utils" "^7.13.0"
476
- "@babel/helper-remap-async-to-generator" "^7.13.0"
477
 
478
- "@babel/plugin-transform-block-scoped-functions@^7.12.13":
479
- version "7.12.13"
480
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4"
481
- integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==
482
  dependencies:
483
- "@babel/helper-plugin-utils" "^7.12.13"
 
 
484
 
485
- "@babel/plugin-transform-block-scoping@^7.12.13":
486
- version "7.12.13"
487
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61"
488
- integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==
489
  dependencies:
490
- "@babel/helper-plugin-utils" "^7.12.13"
491
 
492
- "@babel/plugin-transform-classes@^7.13.0":
493
- version "7.13.0"
494
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz#0265155075c42918bf4d3a4053134176ad9b533b"
495
- integrity sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==
496
  dependencies:
497
- "@babel/helper-annotate-as-pure" "^7.12.13"
498
- "@babel/helper-function-name" "^7.12.13"
499
- "@babel/helper-optimise-call-expression" "^7.12.13"
500
- "@babel/helper-plugin-utils" "^7.13.0"
501
- "@babel/helper-replace-supers" "^7.13.0"
502
- "@babel/helper-split-export-declaration" "^7.12.13"
 
 
 
 
 
 
 
503
  globals "^11.1.0"
504
 
505
- "@babel/plugin-transform-computed-properties@^7.13.0":
506
- version "7.13.0"
507
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed"
508
- integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==
509
  dependencies:
510
- "@babel/helper-plugin-utils" "^7.13.0"
511
 
512
- "@babel/plugin-transform-destructuring@^7.13.0":
513
- version "7.13.0"
514
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz#c5dce270014d4e1ebb1d806116694c12b7028963"
515
- integrity sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==
516
  dependencies:
517
- "@babel/helper-plugin-utils" "^7.13.0"
518
 
519
- "@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4":
520
- version "7.12.13"
521
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad"
522
- integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==
523
  dependencies:
524
- "@babel/helper-create-regexp-features-plugin" "^7.12.13"
525
- "@babel/helper-plugin-utils" "^7.12.13"
526
 
527
- "@babel/plugin-transform-duplicate-keys@^7.12.13":
528
- version "7.12.13"
529
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de"
530
- integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==
531
  dependencies:
532
- "@babel/helper-plugin-utils" "^7.12.13"
533
 
534
- "@babel/plugin-transform-exponentiation-operator@^7.12.13":
535
- version "7.12.13"
536
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1"
537
- integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==
538
  dependencies:
539
- "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13"
540
- "@babel/helper-plugin-utils" "^7.12.13"
541
 
542
- "@babel/plugin-transform-for-of@^7.13.0":
543
- version "7.13.0"
544
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062"
545
- integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==
546
  dependencies:
547
- "@babel/helper-plugin-utils" "^7.13.0"
548
 
549
- "@babel/plugin-transform-function-name@^7.12.13":
550
- version "7.12.13"
551
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051"
552
- integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==
553
  dependencies:
554
- "@babel/helper-function-name" "^7.12.13"
555
- "@babel/helper-plugin-utils" "^7.12.13"
556
 
557
- "@babel/plugin-transform-literals@^7.12.13":
558
- version "7.12.13"
559
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9"
560
- integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==
561
  dependencies:
562
- "@babel/helper-plugin-utils" "^7.12.13"
563
 
564
- "@babel/plugin-transform-member-expression-literals@^7.12.13":
565
- version "7.12.13"
566
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40"
567
- integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==
568
  dependencies:
569
- "@babel/helper-plugin-utils" "^7.12.13"
570
 
571
- "@babel/plugin-transform-modules-amd@^7.13.0":
572
- version "7.13.0"
573
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz#19f511d60e3d8753cc5a6d4e775d3a5184866cc3"
574
- integrity sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==
575
  dependencies:
576
- "@babel/helper-module-transforms" "^7.13.0"
577
- "@babel/helper-plugin-utils" "^7.13.0"
578
  babel-plugin-dynamic-import-node "^2.3.3"
579
 
580
- "@babel/plugin-transform-modules-commonjs@^7.13.8":
581
- version "7.13.8"
582
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz#7b01ad7c2dcf2275b06fa1781e00d13d420b3e1b"
583
- integrity sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==
584
  dependencies:
585
- "@babel/helper-module-transforms" "^7.13.0"
586
- "@babel/helper-plugin-utils" "^7.13.0"
587
- "@babel/helper-simple-access" "^7.12.13"
588
  babel-plugin-dynamic-import-node "^2.3.3"
589
 
590
- "@babel/plugin-transform-modules-systemjs@^7.13.8":
591
- version "7.13.8"
592
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3"
593
- integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==
594
  dependencies:
595
- "@babel/helper-hoist-variables" "^7.13.0"
596
- "@babel/helper-module-transforms" "^7.13.0"
597
- "@babel/helper-plugin-utils" "^7.13.0"
598
- "@babel/helper-validator-identifier" "^7.12.11"
599
  babel-plugin-dynamic-import-node "^2.3.3"
600
 
601
- "@babel/plugin-transform-modules-umd@^7.13.0":
602
- version "7.13.0"
603
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz#8a3d96a97d199705b9fd021580082af81c06e70b"
604
- integrity sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==
605
  dependencies:
606
- "@babel/helper-module-transforms" "^7.13.0"
607
- "@babel/helper-plugin-utils" "^7.13.0"
608
 
609
- "@babel/plugin-transform-named-capturing-groups-regex@^7.12.13":
610
- version "7.12.13"
611
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9"
612
- integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==
613
  dependencies:
614
- "@babel/helper-create-regexp-features-plugin" "^7.12.13"
615
 
616
- "@babel/plugin-transform-new-target@^7.12.13":
617
- version "7.12.13"
618
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c"
619
- integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==
620
  dependencies:
621
- "@babel/helper-plugin-utils" "^7.12.13"
622
 
623
- "@babel/plugin-transform-object-super@^7.12.13":
624
- version "7.12.13"
625
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7"
626
- integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==
627
  dependencies:
628
- "@babel/helper-plugin-utils" "^7.12.13"
629
- "@babel/helper-replace-supers" "^7.12.13"
630
 
631
- "@babel/plugin-transform-parameters@^7.13.0":
632
- version "7.13.0"
633
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz#8fa7603e3097f9c0b7ca1a4821bc2fb52e9e5007"
634
- integrity sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==
635
  dependencies:
636
- "@babel/helper-plugin-utils" "^7.13.0"
637
 
638
- "@babel/plugin-transform-property-literals@^7.12.13":
639
- version "7.12.13"
640
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81"
641
- integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==
642
  dependencies:
643
- "@babel/helper-plugin-utils" "^7.12.13"
644
 
645
- "@babel/plugin-transform-regenerator@^7.12.13":
646
- version "7.12.13"
647
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz#b628bcc9c85260ac1aeb05b45bde25210194a2f5"
648
- integrity sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==
649
  dependencies:
650
  regenerator-transform "^0.14.2"
651
 
652
- "@babel/plugin-transform-reserved-words@^7.12.13":
653
- version "7.12.13"
654
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695"
655
- integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==
656
  dependencies:
657
- "@babel/helper-plugin-utils" "^7.12.13"
658
 
659
- "@babel/plugin-transform-shorthand-properties@^7.12.13":
660
- version "7.12.13"
661
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad"
662
- integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==
663
  dependencies:
664
- "@babel/helper-plugin-utils" "^7.12.13"
665
 
666
- "@babel/plugin-transform-spread@^7.13.0":
667
- version "7.13.0"
668
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd"
669
- integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==
670
  dependencies:
671
- "@babel/helper-plugin-utils" "^7.13.0"
672
- "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
673
 
674
- "@babel/plugin-transform-sticky-regex@^7.12.13":
675
- version "7.12.13"
676
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f"
677
- integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==
678
  dependencies:
679
- "@babel/helper-plugin-utils" "^7.12.13"
680
 
681
- "@babel/plugin-transform-template-literals@^7.13.0":
682
- version "7.13.0"
683
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d"
684
- integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==
685
  dependencies:
686
- "@babel/helper-plugin-utils" "^7.13.0"
687
 
688
- "@babel/plugin-transform-typeof-symbol@^7.12.13":
689
- version "7.12.13"
690
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f"
691
- integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==
692
  dependencies:
693
- "@babel/helper-plugin-utils" "^7.12.13"
694
 
695
- "@babel/plugin-transform-unicode-escapes@^7.12.13":
696
- version "7.12.13"
697
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74"
698
- integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==
699
  dependencies:
700
- "@babel/helper-plugin-utils" "^7.12.13"
701
 
702
- "@babel/plugin-transform-unicode-regex@^7.12.13":
703
- version "7.12.13"
704
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac"
705
- integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==
706
  dependencies:
707
- "@babel/helper-create-regexp-features-plugin" "^7.12.13"
708
- "@babel/helper-plugin-utils" "^7.12.13"
709
 
710
  "@babel/preset-env@^7.9.5":
711
- version "7.13.12"
712
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.13.12.tgz#6dff470478290582ac282fb77780eadf32480237"
713
- integrity sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==
714
- dependencies:
715
- "@babel/compat-data" "^7.13.12"
716
- "@babel/helper-compilation-targets" "^7.13.10"
717
- "@babel/helper-plugin-utils" "^7.13.0"
718
- "@babel/helper-validator-option" "^7.12.17"
719
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.13.12"
720
- "@babel/plugin-proposal-async-generator-functions" "^7.13.8"
721
- "@babel/plugin-proposal-class-properties" "^7.13.0"
722
- "@babel/plugin-proposal-dynamic-import" "^7.13.8"
723
- "@babel/plugin-proposal-export-namespace-from" "^7.12.13"
724
- "@babel/plugin-proposal-json-strings" "^7.13.8"
725
- "@babel/plugin-proposal-logical-assignment-operators" "^7.13.8"
726
- "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8"
727
- "@babel/plugin-proposal-numeric-separator" "^7.12.13"
728
- "@babel/plugin-proposal-object-rest-spread" "^7.13.8"
729
- "@babel/plugin-proposal-optional-catch-binding" "^7.13.8"
730
- "@babel/plugin-proposal-optional-chaining" "^7.13.12"
731
- "@babel/plugin-proposal-private-methods" "^7.13.0"
732
- "@babel/plugin-proposal-unicode-property-regex" "^7.12.13"
 
 
733
  "@babel/plugin-syntax-async-generators" "^7.8.4"
734
  "@babel/plugin-syntax-class-properties" "^7.12.13"
 
735
  "@babel/plugin-syntax-dynamic-import" "^7.8.3"
736
  "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
737
  "@babel/plugin-syntax-json-strings" "^7.8.3"
@@ -741,45 +776,46 @@
741
  "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
742
  "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
743
  "@babel/plugin-syntax-optional-chaining" "^7.8.3"
744
- "@babel/plugin-syntax-top-level-await" "^7.12.13"
745
- "@babel/plugin-transform-arrow-functions" "^7.13.0"
746
- "@babel/plugin-transform-async-to-generator" "^7.13.0"
747
- "@babel/plugin-transform-block-scoped-functions" "^7.12.13"
748
- "@babel/plugin-transform-block-scoping" "^7.12.13"
749
- "@babel/plugin-transform-classes" "^7.13.0"
750
- "@babel/plugin-transform-computed-properties" "^7.13.0"
751
- "@babel/plugin-transform-destructuring" "^7.13.0"
752
- "@babel/plugin-transform-dotall-regex" "^7.12.13"
753
- "@babel/plugin-transform-duplicate-keys" "^7.12.13"
754
- "@babel/plugin-transform-exponentiation-operator" "^7.12.13"
755
- "@babel/plugin-transform-for-of" "^7.13.0"
756
- "@babel/plugin-transform-function-name" "^7.12.13"
757
- "@babel/plugin-transform-literals" "^7.12.13"
758
- "@babel/plugin-transform-member-expression-literals" "^7.12.13"
759
- "@babel/plugin-transform-modules-amd" "^7.13.0"
760
- "@babel/plugin-transform-modules-commonjs" "^7.13.8"
761
- "@babel/plugin-transform-modules-systemjs" "^7.13.8"
762
- "@babel/plugin-transform-modules-umd" "^7.13.0"
763
- "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13"
764
- "@babel/plugin-transform-new-target" "^7.12.13"
765
- "@babel/plugin-transform-object-super" "^7.12.13"
766
- "@babel/plugin-transform-parameters" "^7.13.0"
767
- "@babel/plugin-transform-property-literals" "^7.12.13"
768
- "@babel/plugin-transform-regenerator" "^7.12.13"
769
- "@babel/plugin-transform-reserved-words" "^7.12.13"
770
- "@babel/plugin-transform-shorthand-properties" "^7.12.13"
771
- "@babel/plugin-transform-spread" "^7.13.0"
772
- "@babel/plugin-transform-sticky-regex" "^7.12.13"
773
- "@babel/plugin-transform-template-literals" "^7.13.0"
774
- "@babel/plugin-transform-typeof-symbol" "^7.12.13"
775
- "@babel/plugin-transform-unicode-escapes" "^7.12.13"
776
- "@babel/plugin-transform-unicode-regex" "^7.12.13"
 
777
  "@babel/preset-modules" "^0.1.4"
778
- "@babel/types" "^7.13.12"
779
- babel-plugin-polyfill-corejs2 "^0.1.4"
780
- babel-plugin-polyfill-corejs3 "^0.1.3"
781
- babel-plugin-polyfill-regenerator "^0.1.2"
782
- core-js-compat "^3.9.0"
783
  semver "^6.3.0"
784
 
785
  "@babel/preset-modules@^0.1.4":
@@ -794,193 +830,217 @@
794
  esutils "^2.0.2"
795
 
796
  "@babel/runtime@^7.8.4":
797
- version "7.13.10"
798
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d"
799
- integrity sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==
800
  dependencies:
801
  regenerator-runtime "^0.13.4"
802
 
803
- "@babel/template@^7.12.13":
804
- version "7.12.13"
805
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327"
806
- integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==
807
- dependencies:
808
- "@babel/code-frame" "^7.12.13"
809
- "@babel/parser" "^7.12.13"
810
- "@babel/types" "^7.12.13"
811
-
812
- "@babel/traverse@^7.13.0", "@babel/traverse@^7.13.13":
813
- version "7.13.13"
814
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.13.tgz#39aa9c21aab69f74d948a486dd28a2dbdbf5114d"
815
- integrity sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==
816
- dependencies:
817
- "@babel/code-frame" "^7.12.13"
818
- "@babel/generator" "^7.13.9"
819
- "@babel/helper-function-name" "^7.12.13"
820
- "@babel/helper-split-export-declaration" "^7.12.13"
821
- "@babel/parser" "^7.13.13"
822
- "@babel/types" "^7.13.13"
 
823
  debug "^4.1.0"
824
  globals "^11.1.0"
825
 
826
- "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.13", "@babel/types@^7.4.4":
827
- version "7.13.13"
828
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.13.tgz#dcd8b815b38f537a3697ce84c8e3cc62197df96f"
829
- integrity sha512-kt+EpC6qDfIaqlP+DIbIJOclYy/A1YXs9dAf/ljbi+39Bcbc073H6jKVpXEr/EoIh5anGn5xq/yRVzKl+uIc9w==
830
  dependencies:
831
- "@babel/helper-validator-identifier" "^7.12.11"
832
- lodash "^4.17.19"
833
  to-fast-properties "^2.0.0"
834
 
835
- "@types/json-schema@^7.0.5":
836
- version "7.0.7"
837
- resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad"
838
- integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==
839
-
840
- "@webassemblyjs/ast@1.9.0":
841
- version "1.9.0"
842
- resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
843
- integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==
844
- dependencies:
845
- "@webassemblyjs/helper-module-context" "1.9.0"
846
- "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
847
- "@webassemblyjs/wast-parser" "1.9.0"
848
-
849
- "@webassemblyjs/floating-point-hex-parser@1.9.0":
850
- version "1.9.0"
851
- resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4"
852
- integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==
853
-
854
- "@webassemblyjs/helper-api-error@1.9.0":
855
- version "1.9.0"
856
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2"
857
- integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==
858
-
859
- "@webassemblyjs/helper-buffer@1.9.0":
860
- version "1.9.0"
861
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00"
862
- integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==
863
-
864
- "@webassemblyjs/helper-code-frame@1.9.0":
865
- version "1.9.0"
866
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27"
867
- integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==
868
- dependencies:
869
- "@webassemblyjs/wast-printer" "1.9.0"
870
-
871
- "@webassemblyjs/helper-fsm@1.9.0":
872
- version "1.9.0"
873
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8"
874
- integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==
875
-
876
- "@webassemblyjs/helper-module-context@1.9.0":
877
- version "1.9.0"
878
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07"
879
- integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==
880
- dependencies:
881
- "@webassemblyjs/ast" "1.9.0"
882
-
883
- "@webassemblyjs/helper-wasm-bytecode@1.9.0":
884
- version "1.9.0"
885
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790"
886
- integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==
887
-
888
- "@webassemblyjs/helper-wasm-section@1.9.0":
889
- version "1.9.0"
890
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346"
891
- integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==
892
- dependencies:
893
- "@webassemblyjs/ast" "1.9.0"
894
- "@webassemblyjs/helper-buffer" "1.9.0"
895
- "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
896
- "@webassemblyjs/wasm-gen" "1.9.0"
897
-
898
- "@webassemblyjs/ieee754@1.9.0":
899
- version "1.9.0"
900
- resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4"
901
- integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
902
  dependencies:
903
  "@xtuc/ieee754" "^1.2.0"
904
 
905
- "@webassemblyjs/leb128@1.9.0":
906
- version "1.9.0"
907
- resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95"
908
- integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==
909
  dependencies:
910
  "@xtuc/long" "4.2.2"
911
 
912
- "@webassemblyjs/utf8@1.9.0":
913
- version "1.9.0"
914
- resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab"
915
- integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==
916
-
917
- "@webassemblyjs/wasm-edit@1.9.0":
918
- version "1.9.0"
919
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf"
920
- integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==
921
- dependencies:
922
- "@webassemblyjs/ast" "1.9.0"
923
- "@webassemblyjs/helper-buffer" "1.9.0"
924
- "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
925
- "@webassemblyjs/helper-wasm-section" "1.9.0"
926
- "@webassemblyjs/wasm-gen" "1.9.0"
927
- "@webassemblyjs/wasm-opt" "1.9.0"
928
- "@webassemblyjs/wasm-parser" "1.9.0"
929
- "@webassemblyjs/wast-printer" "1.9.0"
930
-
931
- "@webassemblyjs/wasm-gen@1.9.0":
932
- version "1.9.0"
933
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c"
934
- integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==
935
- dependencies:
936
- "@webassemblyjs/ast" "1.9.0"
937
- "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
938
- "@webassemblyjs/ieee754" "1.9.0"
939
- "@webassemblyjs/leb128" "1.9.0"
940
- "@webassemblyjs/utf8" "1.9.0"
941
-
942
- "@webassemblyjs/wasm-opt@1.9.0":
943
- version "1.9.0"
944
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61"
945
- integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==
946
- dependencies:
947
- "@webassemblyjs/ast" "1.9.0"
948
- "@webassemblyjs/helper-buffer" "1.9.0"
949
- "@webassemblyjs/wasm-gen" "1.9.0"
950
- "@webassemblyjs/wasm-parser" "1.9.0"
951
-
952
- "@webassemblyjs/wasm-parser@1.9.0":
953
- version "1.9.0"
954
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e"
955
- integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==
956
- dependencies:
957
- "@webassemblyjs/ast" "1.9.0"
958
- "@webassemblyjs/helper-api-error" "1.9.0"
959
- "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
960
- "@webassemblyjs/ieee754" "1.9.0"
961
- "@webassemblyjs/leb128" "1.9.0"
962
- "@webassemblyjs/utf8" "1.9.0"
963
-
964
- "@webassemblyjs/wast-parser@1.9.0":
965
- version "1.9.0"
966
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914"
967
- integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==
968
- dependencies:
969
- "@webassemblyjs/ast" "1.9.0"
970
- "@webassemblyjs/floating-point-hex-parser" "1.9.0"
971
- "@webassemblyjs/helper-api-error" "1.9.0"
972
- "@webassemblyjs/helper-code-frame" "1.9.0"
973
- "@webassemblyjs/helper-fsm" "1.9.0"
974
  "@xtuc/long" "4.2.2"
975
 
976
- "@webassemblyjs/wast-printer@1.9.0":
977
- version "1.9.0"
978
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899"
979
- integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==
 
 
 
 
 
980
  dependencies:
981
- "@webassemblyjs/ast" "1.9.0"
982
- "@webassemblyjs/wast-parser" "1.9.0"
983
- "@xtuc/long" "4.2.2"
 
 
 
984
 
985
  "@xtuc/ieee754@^1.2.0":
986
  version "1.2.0"
@@ -992,22 +1052,22 @@
992
  resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
993
  integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
994
 
995
- acorn@^6.4.1:
996
- version "6.4.2"
997
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
998
- integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
999
 
1000
- ajv-errors@^1.0.0:
1001
- version "1.0.1"
1002
- resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
1003
- integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
1004
 
1005
- ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
1006
  version "3.5.2"
1007
  resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
1008
  integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
1009
 
1010
- ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.4:
1011
  version "6.12.6"
1012
  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
1013
  integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -1017,92 +1077,13 @@ ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.4:
1017
  json-schema-traverse "^0.4.1"
1018
  uri-js "^4.2.2"
1019
 
1020
- ansi-regex@^4.1.0:
1021
- version "4.1.0"
1022
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
1023
- integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
1024
-
1025
- ansi-styles@^3.2.0, ansi-styles@^3.2.1:
1026
  version "3.2.1"
1027
  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
1028
  integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
1029
  dependencies:
1030
  color-convert "^1.9.0"
1031
 
1032
- anymatch@^2.0.0:
1033
- version "2.0.0"
1034
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
1035
- integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
1036
- dependencies:
1037
- micromatch "^3.1.4"
1038
- normalize-path "^2.1.1"
1039
-
1040
- anymatch@~3.1.1:
1041
- version "3.1.1"
1042
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
1043
- integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
1044
- dependencies:
1045
- normalize-path "^3.0.0"
1046
- picomatch "^2.0.4"
1047
-
1048
- aproba@^1.1.1:
1049
- version "1.2.0"
1050
- resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
1051
- integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
1052
-
1053
- arr-diff@^4.0.0:
1054
- version "4.0.0"
1055
- resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
1056
- integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
1057
-
1058
- arr-flatten@^1.1.0:
1059
- version "1.1.0"
1060
- resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
1061
- integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
1062
-
1063
- arr-union@^3.1.0:
1064
- version "3.1.0"
1065
- resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
1066
- integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
1067
-
1068
- array-unique@^0.3.2:
1069
- version "0.3.2"
1070
- resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
1071
- integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
1072
-
1073
- asn1.js@^5.2.0:
1074
- version "5.4.1"
1075
- resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07"
1076
- integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==
1077
- dependencies:
1078
- bn.js "^4.0.0"
1079
- inherits "^2.0.1"
1080
- minimalistic-assert "^1.0.0"
1081
- safer-buffer "^2.1.0"
1082
-
1083
- assert@^1.1.1:
1084
- version "1.5.0"
1085
- resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
1086
- integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==
1087
- dependencies:
1088
- object-assign "^4.1.1"
1089
- util "0.10.3"
1090
-
1091
- assign-symbols@^1.0.0:
1092
- version "1.0.0"
1093
- resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
1094
- integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
1095
-
1096
- async-each@^1.0.1:
1097
- version "1.0.3"
1098
- resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
1099
- integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
1100
-
1101
- atob@^2.1.2:
1102
- version "2.1.2"
1103
- resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
1104
- integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
1105
-
1106
  babel-loader@^8.1.0:
1107
  version "8.2.2"
1108
  resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81"
@@ -1120,29 +1101,29 @@ babel-plugin-dynamic-import-node@^2.3.3:
1120
  dependencies:
1121
  object.assign "^4.1.0"
1122
 
1123
- babel-plugin-polyfill-corejs2@^0.1.4:
1124
- version "0.1.10"
1125
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz#a2c5c245f56c0cac3dbddbf0726a46b24f0f81d1"
1126
- integrity sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==
1127
  dependencies:
1128
- "@babel/compat-data" "^7.13.0"
1129
- "@babel/helper-define-polyfill-provider" "^0.1.5"
1130
  semver "^6.1.1"
1131
 
1132
- babel-plugin-polyfill-corejs3@^0.1.3:
1133
- version "0.1.7"
1134
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz#80449d9d6f2274912e05d9e182b54816904befd0"
1135
- integrity sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==
1136
  dependencies:
1137
- "@babel/helper-define-polyfill-provider" "^0.1.5"
1138
- core-js-compat "^3.8.1"
1139
 
1140
- babel-plugin-polyfill-regenerator@^0.1.2:
1141
- version "0.1.6"
1142
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz#0fe06a026fe0faa628ccc8ba3302da0a6ce02f3f"
1143
- integrity sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==
1144
  dependencies:
1145
- "@babel/helper-define-polyfill-provider" "^0.1.5"
1146
 
1147
  babel-plugin-syntax-object-rest-spread@^6.8.0:
1148
  version "6.13.0"
@@ -1165,233 +1146,26 @@ babel-runtime@^6.26.0:
1165
  core-js "^2.4.0"
1166
  regenerator-runtime "^0.11.0"
1167
 
1168
- balanced-match@^1.0.0:
1169
- version "1.0.0"
1170
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
1171
- integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
1172
-
1173
- base64-js@^1.0.2:
1174
- version "1.5.1"
1175
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
1176
- integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
1177
-
1178
- base@^0.11.1:
1179
- version "0.11.2"
1180
- resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
1181
- integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
1182
- dependencies:
1183
- cache-base "^1.0.1"
1184
- class-utils "^0.3.5"
1185
- component-emitter "^1.2.1"
1186
- define-property "^1.0.0"
1187
- isobject "^3.0.1"
1188
- mixin-deep "^1.2.0"
1189
- pascalcase "^0.1.1"
1190
-
1191
  big.js@^5.2.2:
1192
  version "5.2.2"
1193
  resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
1194
  integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
1195
 
1196
- binary-extensions@^1.0.0:
1197
- version "1.13.1"
1198
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
1199
- integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
1200
-
1201
- binary-extensions@^2.0.0:
1202
- version "2.2.0"
1203
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
1204
- integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
1205
-
1206
- bindings@^1.5.0:
1207
- version "1.5.0"
1208
- resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
1209
- integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
1210
- dependencies:
1211
- file-uri-to-path "1.0.0"
1212
-
1213
- bluebird@^3.5.5:
1214
- version "3.7.2"
1215
- resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
1216
- integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
1217
-
1218
- bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
1219
- version "4.12.0"
1220
- resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
1221
- integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
1222
-
1223
- bn.js@^5.0.0, bn.js@^5.1.1:
1224
- version "5.2.0"
1225
- resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002"
1226
- integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==
1227
-
1228
- brace-expansion@^1.1.7:
1229
- version "1.1.11"
1230
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
1231
- integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
1232
- dependencies:
1233
- balanced-match "^1.0.0"
1234
- concat-map "0.0.1"
1235
-
1236
- braces@^2.3.1, braces@^2.3.2:
1237
- version "2.3.2"
1238
- resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
1239
- integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
1240
- dependencies:
1241
- arr-flatten "^1.1.0"
1242
- array-unique "^0.3.2"
1243
- extend-shallow "^2.0.1"
1244
- fill-range "^4.0.0"
1245
- isobject "^3.0.1"
1246
- repeat-element "^1.1.2"
1247
- snapdragon "^0.8.1"
1248
- snapdragon-node "^2.0.1"
1249
- split-string "^3.0.2"
1250
- to-regex "^3.0.1"
1251
-
1252
- braces@~3.0.2:
1253
- version "3.0.2"
1254
- resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
1255
- integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
1256
- dependencies:
1257
- fill-range "^7.0.1"
1258
-
1259
- brorand@^1.0.1, brorand@^1.1.0:
1260
- version "1.1.0"
1261
- resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
1262
- integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
1263
-
1264
- browserify-aes@^1.0.0, browserify-aes@^1.0.4:
1265
- version "1.2.0"
1266
- resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
1267
- integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
1268
- dependencies:
1269
- buffer-xor "^1.0.3"
1270
- cipher-base "^1.0.0"
1271
- create-hash "^1.1.0"
1272
- evp_bytestokey "^1.0.3"
1273
- inherits "^2.0.1"
1274
- safe-buffer "^5.0.1"
1275
-
1276
- browserify-cipher@^1.0.0:
1277
- version "1.0.1"
1278
- resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
1279
- integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
1280
- dependencies:
1281
- browserify-aes "^1.0.4"
1282
- browserify-des "^1.0.0"
1283
- evp_bytestokey "^1.0.0"
1284
-
1285
- browserify-des@^1.0.0:
1286
- version "1.0.2"
1287
- resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
1288
- integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
1289
  dependencies:
1290
- cipher-base "^1.0.1"
1291
- des.js "^1.0.0"
1292
- inherits "^2.0.1"
1293
- safe-buffer "^5.1.2"
1294
-
1295
- browserify-rsa@^4.0.0, browserify-rsa@^4.0.1:
1296
- version "4.1.0"
1297
- resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d"
1298
- integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==
1299
- dependencies:
1300
- bn.js "^5.0.0"
1301
- randombytes "^2.0.1"
1302
-
1303
- browserify-sign@^4.0.0:
1304
- version "4.2.1"
1305
- resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3"
1306
- integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==
1307
- dependencies:
1308
- bn.js "^5.1.1"
1309
- browserify-rsa "^4.0.1"
1310
- create-hash "^1.2.0"
1311
- create-hmac "^1.1.7"
1312
- elliptic "^6.5.3"
1313
- inherits "^2.0.4"
1314
- parse-asn1 "^5.1.5"
1315
- readable-stream "^3.6.0"
1316
- safe-buffer "^5.2.0"
1317
-
1318
- browserify-zlib@^0.2.0:
1319
- version "0.2.0"
1320
- resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
1321
- integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
1322
- dependencies:
1323
- pako "~1.0.5"
1324
-
1325
- browserslist@^4.14.5, browserslist@^4.16.3:
1326
- version "4.16.3"
1327
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717"
1328
- integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==
1329
- dependencies:
1330
- caniuse-lite "^1.0.30001181"
1331
- colorette "^1.2.1"
1332
- electron-to-chromium "^1.3.649"
1333
  escalade "^3.1.1"
1334
- node-releases "^1.1.70"
 
1335
 
1336
  buffer-from@^1.0.0:
1337
- version "1.1.1"
1338
- resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
1339
- integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
1340
-
1341
- buffer-xor@^1.0.3:
1342
- version "1.0.3"
1343
- resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
1344
- integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
1345
-
1346
- buffer@^4.3.0:
1347
- version "4.9.2"
1348
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
1349
- integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==
1350
- dependencies:
1351
- base64-js "^1.0.2"
1352
- ieee754 "^1.1.4"
1353
- isarray "^1.0.0"
1354
-
1355
- builtin-status-codes@^3.0.0:
1356
- version "3.0.0"
1357
- resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
1358
- integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
1359
-
1360
- cacache@^12.0.2:
1361
- version "12.0.4"
1362
- resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c"
1363
- integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==
1364
- dependencies:
1365
- bluebird "^3.5.5"
1366
- chownr "^1.1.1"
1367
- figgy-pudding "^3.5.1"
1368
- glob "^7.1.4"
1369
- graceful-fs "^4.1.15"
1370
- infer-owner "^1.0.3"
1371
- lru-cache "^5.1.1"
1372
- mississippi "^3.0.0"
1373
- mkdirp "^0.5.1"
1374
- move-concurrently "^1.0.1"
1375
- promise-inflight "^1.0.1"
1376
- rimraf "^2.6.3"
1377
- ssri "^6.0.1"
1378
- unique-filename "^1.1.1"
1379
- y18n "^4.0.0"
1380
-
1381
- cache-base@^1.0.1:
1382
- version "1.0.1"
1383
- resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
1384
- integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
1385
- dependencies:
1386
- collection-visit "^1.0.0"
1387
- component-emitter "^1.2.1"
1388
- get-value "^2.0.6"
1389
- has-value "^1.0.0"
1390
- isobject "^3.0.1"
1391
- set-value "^2.0.0"
1392
- to-object-path "^0.3.0"
1393
- union-value "^1.0.0"
1394
- unset-value "^1.0.0"
1395
 
1396
  call-bind@^1.0.0:
1397
  version "1.0.2"
@@ -1401,17 +1175,12 @@ call-bind@^1.0.0:
1401
  function-bind "^1.1.1"
1402
  get-intrinsic "^1.0.2"
1403
 
1404
- camelcase@^5.0.0:
1405
- version "5.3.1"
1406
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
1407
- integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
1408
 
1409
- caniuse-lite@^1.0.30001181:
1410
- version "1.0.30001204"
1411
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz#256c85709a348ec4d175e847a3b515c66e79f2aa"
1412
- integrity sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ==
1413
-
1414
- chalk@^2.0.0, chalk@^2.4.2:
1415
  version "2.4.2"
1416
  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
1417
  integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -1420,86 +1189,19 @@ chalk@^2.0.0, chalk@^2.4.2:
1420
  escape-string-regexp "^1.0.5"
1421
  supports-color "^5.3.0"
1422
 
1423
- chokidar@^2.1.8:
1424
- version "2.1.8"
1425
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
1426
- integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
1427
- dependencies:
1428
- anymatch "^2.0.0"
1429
- async-each "^1.0.1"
1430
- braces "^2.3.2"
1431
- glob-parent "^3.1.0"
1432
- inherits "^2.0.3"
1433
- is-binary-path "^1.0.0"
1434
- is-glob "^4.0.0"
1435
- normalize-path "^3.0.0"
1436
- path-is-absolute "^1.0.0"
1437
- readdirp "^2.2.1"
1438
- upath "^1.1.1"
1439
- optionalDependencies:
1440
- fsevents "^1.2.7"
1441
-
1442
- chokidar@^3.4.1:
1443
- version "3.5.1"
1444
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a"
1445
- integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==
1446
- dependencies:
1447
- anymatch "~3.1.1"
1448
- braces "~3.0.2"
1449
- glob-parent "~5.1.0"
1450
- is-binary-path "~2.1.0"
1451
- is-glob "~4.0.1"
1452
- normalize-path "~3.0.0"
1453
- readdirp "~3.5.0"
1454
- optionalDependencies:
1455
- fsevents "~2.3.1"
1456
-
1457
- chownr@^1.1.1:
1458
- version "1.1.4"
1459
- resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
1460
- integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
1461
-
1462
  chrome-trace-event@^1.0.2:
1463
- version "1.0.2"
1464
- resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4"
1465
- integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==
1466
- dependencies:
1467
- tslib "^1.9.0"
1468
-
1469
- cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
1470
- version "1.0.4"
1471
- resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
1472
- integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
1473
- dependencies:
1474
- inherits "^2.0.1"
1475
- safe-buffer "^5.0.1"
1476
-
1477
- class-utils@^0.3.5:
1478
- version "0.3.6"
1479
- resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
1480
- integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
1481
- dependencies:
1482
- arr-union "^3.1.0"
1483
- define-property "^0.2.5"
1484
- isobject "^3.0.0"
1485
- static-extend "^0.1.1"
1486
-
1487
- cliui@^5.0.0:
1488
- version "5.0.0"
1489
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
1490
- integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
1491
- dependencies:
1492
- string-width "^3.1.0"
1493
- strip-ansi "^5.2.0"
1494
- wrap-ansi "^5.1.0"
1495
 
1496
- collection-visit@^1.0.0:
1497
- version "1.0.0"
1498
- resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
1499
- integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
1500
  dependencies:
1501
- map-visit "^1.0.0"
1502
- object-visit "^1.0.0"
 
1503
 
1504
  color-convert@^1.9.0:
1505
  version "1.9.3"
@@ -1514,80 +1216,38 @@ color-name@1.1.3:
1514
  integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
1515
 
1516
  colorette@^1.2.1:
1517
- version "1.2.2"
1518
- resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94"
1519
- integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==
1520
 
1521
  commander@^2.20.0:
1522
  version "2.20.3"
1523
  resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
1524
  integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
1525
 
 
 
 
 
 
1526
  commondir@^1.0.1:
1527
  version "1.0.1"
1528
  resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
1529
  integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
1530
 
1531
- component-emitter@^1.2.1:
1532
- version "1.3.0"
1533
- resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
1534
- integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
1535
-
1536
- concat-map@0.0.1:
1537
- version "0.0.1"
1538
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
1539
- integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
1540
-
1541
- concat-stream@^1.5.0:
1542
- version "1.6.2"
1543
- resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
1544
- integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
1545
- dependencies:
1546
- buffer-from "^1.0.0"
1547
- inherits "^2.0.3"
1548
- readable-stream "^2.2.2"
1549
- typedarray "^0.0.6"
1550
-
1551
- console-browserify@^1.1.0:
1552
- version "1.2.0"
1553
- resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
1554
- integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==
1555
-
1556
- constants-browserify@^1.0.0:
1557
- version "1.0.0"
1558
- resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
1559
- integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
1560
-
1561
  convert-source-map@^1.7.0:
1562
- version "1.7.0"
1563
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
1564
- integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
1565
  dependencies:
1566
  safe-buffer "~5.1.1"
1567
 
1568
- copy-concurrently@^1.0.0:
1569
- version "1.0.5"
1570
- resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
1571
- integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
1572
- dependencies:
1573
- aproba "^1.1.1"
1574
- fs-write-stream-atomic "^1.0.8"
1575
- iferr "^0.1.5"
1576
- mkdirp "^0.5.1"
1577
- rimraf "^2.5.4"
1578
- run-queue "^1.0.0"
1579
-
1580
- copy-descriptor@^0.1.0:
1581
- version "0.1.1"
1582
- resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
1583
- integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
1584
-
1585
- core-js-compat@^3.8.1, core-js-compat@^3.9.0:
1586
- version "3.9.1"
1587
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.9.1.tgz#4e572acfe90aff69d76d8c37759d21a5c59bb455"
1588
- integrity sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==
1589
- dependencies:
1590
- browserslist "^4.16.3"
1591
  semver "7.0.0"
1592
 
1593
  core-js@^2.4.0:
@@ -1595,106 +1255,29 @@ core-js@^2.4.0:
1595
  resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
1596
  integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
1597
 
1598
- core-util-is@~1.0.0:
1599
- version "1.0.2"
1600
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
1601
- integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
1602
-
1603
- create-ecdh@^4.0.0:
1604
- version "4.0.4"
1605
- resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e"
1606
- integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==
1607
  dependencies:
1608
- bn.js "^4.1.0"
1609
- elliptic "^6.5.3"
1610
-
1611
- create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
1612
- version "1.2.0"
1613
- resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
1614
- integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
1615
- dependencies:
1616
- cipher-base "^1.0.1"
1617
- inherits "^2.0.1"
1618
- md5.js "^1.3.4"
1619
- ripemd160 "^2.0.1"
1620
- sha.js "^2.4.0"
1621
-
1622
- create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
1623
- version "1.1.7"
1624
- resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
1625
- integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
1626
- dependencies:
1627
- cipher-base "^1.0.3"
1628
- create-hash "^1.1.0"
1629
- inherits "^2.0.1"
1630
- ripemd160 "^2.0.0"
1631
- safe-buffer "^5.0.1"
1632
- sha.js "^2.4.8"
1633
-
1634
- cross-env@^5.0.1:
1635
- version "5.2.1"
1636
- resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.1.tgz#b2c76c1ca7add66dc874d11798466094f551b34d"
1637
- integrity sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==
1638
- dependencies:
1639
- cross-spawn "^6.0.5"
1640
-
1641
- cross-spawn@^6.0.5:
1642
- version "6.0.5"
1643
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
1644
- integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
1645
- dependencies:
1646
- nice-try "^1.0.4"
1647
- path-key "^2.0.1"
1648
- semver "^5.5.0"
1649
- shebang-command "^1.2.0"
1650
- which "^1.2.9"
1651
-
1652
- crypto-browserify@^3.11.0:
1653
- version "3.12.0"
1654
- resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
1655
- integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
1656
- dependencies:
1657
- browserify-cipher "^1.0.0"
1658
- browserify-sign "^4.0.0"
1659
- create-ecdh "^4.0.0"
1660
- create-hash "^1.1.0"
1661
- create-hmac "^1.1.0"
1662
- diffie-hellman "^5.0.0"
1663
- inherits "^2.0.1"
1664
- pbkdf2 "^3.0.3"
1665
- public-encrypt "^4.0.0"
1666
- randombytes "^2.0.0"
1667
- randomfill "^1.0.3"
1668
-
1669
- cyclist@^1.0.1:
1670
- version "1.0.1"
1671
- resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
1672
- integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=
1673
 
1674
- debug@^2.2.0, debug@^2.3.3:
1675
- version "2.6.9"
1676
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
1677
- integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
1678
  dependencies:
1679
- ms "2.0.0"
 
 
1680
 
1681
  debug@^4.1.0, debug@^4.1.1:
1682
- version "4.3.1"
1683
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
1684
- integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
1685
  dependencies:
1686
  ms "2.1.2"
1687
 
1688
- decamelize@^1.2.0:
1689
- version "1.2.0"
1690
- resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
1691
- integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
1692
-
1693
- decode-uri-component@^0.2.0:
1694
- version "0.2.0"
1695
- resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
1696
- integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
1697
-
1698
  define-properties@^1.1.3:
1699
  version "1.1.3"
1700
  resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
@@ -1702,115 +1285,33 @@ define-properties@^1.1.3:
1702
  dependencies:
1703
  object-keys "^1.0.12"
1704
 
1705
- define-property@^0.2.5:
1706
- version "0.2.5"
1707
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
1708
- integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
1709
- dependencies:
1710
- is-descriptor "^0.1.0"
1711
-
1712
- define-property@^1.0.0:
1713
- version "1.0.0"
1714
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
1715
- integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
1716
- dependencies:
1717
- is-descriptor "^1.0.0"
1718
-
1719
- define-property@^2.0.2:
1720
- version "2.0.2"
1721
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
1722
- integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
1723
- dependencies:
1724
- is-descriptor "^1.0.2"
1725
- isobject "^3.0.1"
1726
-
1727
- des.js@^1.0.0:
1728
- version "1.0.1"
1729
- resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843"
1730
- integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==
1731
- dependencies:
1732
- inherits "^2.0.1"
1733
- minimalistic-assert "^1.0.0"
1734
-
1735
- detect-file@^1.0.0:
1736
- version "1.0.0"
1737
- resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
1738
- integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=
1739
-
1740
- diffie-hellman@^5.0.0:
1741
- version "5.0.3"
1742
- resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
1743
- integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
1744
- dependencies:
1745
- bn.js "^4.1.0"
1746
- miller-rabin "^4.0.0"
1747
- randombytes "^2.0.0"
1748
-
1749
- domain-browser@^1.1.1:
1750
- version "1.2.0"
1751
- resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
1752
- integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
1753
-
1754
- duplexify@^3.4.2, duplexify@^3.6.0:
1755
- version "3.7.1"
1756
- resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
1757
- integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
1758
- dependencies:
1759
- end-of-stream "^1.0.0"
1760
- inherits "^2.0.1"
1761
- readable-stream "^2.0.0"
1762
- stream-shift "^1.0.0"
1763
-
1764
- electron-to-chromium@^1.3.649:
1765
- version "1.3.701"
1766
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.701.tgz#5e796ed7ce88cd77bc7bf831cf311ef6b067c389"
1767
- integrity sha512-Zd9ofdIMYHYhG1gvnejQDvC/kqSeXQvtXF0yRURGxgwGqDZm9F9Fm3dYFnm5gyuA7xpXfBlzVLN1sz0FjxpKfw==
1768
-
1769
- elliptic@^6.5.3:
1770
- version "6.5.4"
1771
- resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
1772
- integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
1773
- dependencies:
1774
- bn.js "^4.11.9"
1775
- brorand "^1.1.0"
1776
- hash.js "^1.0.0"
1777
- hmac-drbg "^1.0.1"
1778
- inherits "^2.0.4"
1779
- minimalistic-assert "^1.0.1"
1780
- minimalistic-crypto-utils "^1.0.1"
1781
-
1782
- emoji-regex@^7.0.1:
1783
- version "7.0.3"
1784
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
1785
- integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
1786
 
1787
  emojis-list@^3.0.0:
1788
  version "3.0.0"
1789
  resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
1790
  integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
1791
 
1792
- end-of-stream@^1.0.0, end-of-stream@^1.1.0:
1793
- version "1.4.4"
1794
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
1795
- integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
1796
  dependencies:
1797
- once "^1.4.0"
 
1798
 
1799
- enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0:
1800
- version "4.5.0"
1801
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec"
1802
- integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==
1803
- dependencies:
1804
- graceful-fs "^4.1.2"
1805
- memory-fs "^0.5.0"
1806
- tapable "^1.0.0"
1807
 
1808
- errno@^0.1.3, errno@~0.1.7:
1809
- version "0.1.8"
1810
- resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
1811
- integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
1812
- dependencies:
1813
- prr "~1.0.1"
1814
 
1815
  escalade@^3.1.1:
1816
  version "3.1.1"
@@ -1822,15 +1323,15 @@ escape-string-regexp@^1.0.5:
1822
  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
1823
  integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
1824
 
1825
- eslint-scope@^4.0.3:
1826
- version "4.0.3"
1827
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
1828
- integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
1829
  dependencies:
1830
- esrecurse "^4.1.0"
1831
  estraverse "^4.1.1"
1832
 
1833
- esrecurse@^4.1.0:
1834
  version "4.3.0"
1835
  resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
1836
  integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
@@ -1852,67 +1353,25 @@ esutils@^2.0.2:
1852
  resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
1853
  integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
1854
 
1855
- events@^3.0.0:
1856
  version "3.3.0"
1857
  resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
1858
  integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
1859
 
1860
- evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
1861
- version "1.0.3"
1862
- resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
1863
- integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
1864
- dependencies:
1865
- md5.js "^1.3.4"
1866
- safe-buffer "^5.1.1"
1867
-
1868
- expand-brackets@^2.1.4:
1869
- version "2.1.4"
1870
- resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
1871
- integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
1872
- dependencies:
1873
- debug "^2.3.3"
1874
- define-property "^0.2.5"
1875
- extend-shallow "^2.0.1"
1876
- posix-character-classes "^0.1.0"
1877
- regex-not "^1.0.0"
1878
- snapdragon "^0.8.1"
1879
- to-regex "^3.0.1"
1880
-
1881
- expand-tilde@^2.0.0, expand-tilde@^2.0.2:
1882
- version "2.0.2"
1883
- resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
1884
- integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=
1885
- dependencies:
1886
- homedir-polyfill "^1.0.1"
1887
-
1888
- extend-shallow@^2.0.1:
1889
- version "2.0.1"
1890
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
1891
- integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
1892
- dependencies:
1893
- is-extendable "^0.1.0"
1894
-
1895
- extend-shallow@^3.0.0, extend-shallow@^3.0.2:
1896
- version "3.0.2"
1897
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
1898
- integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
1899
- dependencies:
1900
- assign-symbols "^1.0.0"
1901
- is-extendable "^1.0.1"
1902
-
1903
- extglob@^2.0.4:
1904
- version "2.0.4"
1905
- resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
1906
- integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
1907
- dependencies:
1908
- array-unique "^0.3.2"
1909
- define-property "^1.0.0"
1910
- expand-brackets "^2.1.4"
1911
- extend-shallow "^2.0.1"
1912
- fragment-cache "^0.2.1"
1913
- regex-not "^1.0.0"
1914
- snapdragon "^0.8.1"
1915
- to-regex "^3.0.1"
1916
 
1917
  fast-deep-equal@^3.1.1:
1918
  version "3.1.3"
@@ -1924,66 +1383,28 @@ fast-json-stable-stringify@^2.0.0:
1924
  resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
1925
  integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
1926
 
1927
- figgy-pudding@^3.5.1:
1928
- version "3.5.2"
1929
- resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
1930
- integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
1931
 
1932
- file-loader@^4.2.0:
1933
- version "4.3.0"
1934
- resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af"
1935
- integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==
1936
  dependencies:
1937
- loader-utils "^1.2.3"
1938
- schema-utils "^2.5.0"
1939
-
1940
- file-uri-to-path@1.0.0:
1941
- version "1.0.0"
1942
- resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
1943
- integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
1944
-
1945
- fill-range@^4.0.0:
1946
- version "4.0.0"
1947
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
1948
- integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
1949
- dependencies:
1950
- extend-shallow "^2.0.1"
1951
- is-number "^3.0.0"
1952
- repeat-string "^1.6.1"
1953
- to-regex-range "^2.1.0"
1954
-
1955
- fill-range@^7.0.1:
1956
- version "7.0.1"
1957
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
1958
- integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
1959
- dependencies:
1960
- to-regex-range "^5.0.1"
1961
-
1962
- find-cache-dir@^2.1.0:
1963
- version "2.1.0"
1964
- resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
1965
- integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
1966
- dependencies:
1967
- commondir "^1.0.1"
1968
- make-dir "^2.0.0"
1969
- pkg-dir "^3.0.0"
1970
 
1971
  find-cache-dir@^3.3.1:
1972
- version "3.3.1"
1973
- resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880"
1974
- integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==
1975
  dependencies:
1976
  commondir "^1.0.1"
1977
  make-dir "^3.0.2"
1978
  pkg-dir "^4.1.0"
1979
 
1980
- find-up@^3.0.0:
1981
- version "3.0.0"
1982
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
1983
- integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
1984
- dependencies:
1985
- locate-path "^3.0.0"
1986
-
1987
  find-up@^4.0.0:
1988
  version "4.1.0"
1989
  resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
@@ -1992,72 +1413,6 @@ find-up@^4.0.0:
1992
  locate-path "^5.0.0"
1993
  path-exists "^4.0.0"
1994
 
1995
- findup-sync@^3.0.0:
1996
- version "3.0.0"
1997
- resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1"
1998
- integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==
1999
- dependencies:
2000
- detect-file "^1.0.0"
2001
- is-glob "^4.0.0"
2002
- micromatch "^3.0.4"
2003
- resolve-dir "^1.0.1"
2004
-
2005
- flush-write-stream@^1.0.0:
2006
- version "1.1.1"
2007
- resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
2008
- integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
2009
- dependencies:
2010
- inherits "^2.0.3"
2011
- readable-stream "^2.3.6"
2012
-
2013
- for-in@^1.0.2:
2014
- version "1.0.2"
2015
- resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
2016
- integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
2017
-
2018
- fragment-cache@^0.2.1:
2019
- version "0.2.1"
2020
- resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
2021
- integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
2022
- dependencies:
2023
- map-cache "^0.2.2"
2024
-
2025
- from2@^2.1.0:
2026
- version "2.3.0"
2027
- resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
2028
- integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
2029
- dependencies:
2030
- inherits "^2.0.1"
2031
- readable-stream "^2.0.0"
2032
-
2033
- fs-write-stream-atomic@^1.0.8:
2034
- version "1.0.10"
2035
- resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
2036
- integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=
2037
- dependencies:
2038
- graceful-fs "^4.1.2"
2039
- iferr "^0.1.5"
2040
- imurmurhash "^0.1.4"
2041
- readable-stream "1 || 2"
2042
-
2043
- fs.realpath@^1.0.0:
2044
- version "1.0.0"
2045
- resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
2046
- integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
2047
-
2048
- fsevents@^1.2.7:
2049
- version "1.2.13"
2050
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38"
2051
- integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==
2052
- dependencies:
2053
- bindings "^1.5.0"
2054
- nan "^2.12.1"
2055
-
2056
- fsevents@~2.3.1:
2057
- version "2.3.2"
2058
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
2059
- integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
2060
-
2061
  function-bind@^1.1.1:
2062
  version "1.1.1"
2063
  resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
@@ -2068,11 +1423,6 @@ gensync@^1.0.0-beta.2:
2068
  resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
2069
  integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
2070
 
2071
- get-caller-file@^2.0.1:
2072
- version "2.0.5"
2073
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
2074
- integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
2075
-
2076
  get-intrinsic@^1.0.2:
2077
  version "1.1.1"
2078
  resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
@@ -2082,125 +1432,41 @@ get-intrinsic@^1.0.2:
2082
  has "^1.0.3"
2083
  has-symbols "^1.0.1"
2084
 
2085
- get-value@^2.0.3, get-value@^2.0.6:
2086
- version "2.0.6"
2087
- resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
2088
- integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
2089
-
2090
- glob-parent@^3.1.0:
2091
- version "3.1.0"
2092
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
2093
- integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
2094
- dependencies:
2095
- is-glob "^3.1.0"
2096
- path-dirname "^1.0.0"
2097
-
2098
- glob-parent@~5.1.0:
2099
- version "5.1.2"
2100
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
2101
- integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
2102
- dependencies:
2103
- is-glob "^4.0.1"
2104
-
2105
- glob@^7.1.3, glob@^7.1.4:
2106
- version "7.1.6"
2107
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
2108
- integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
2109
- dependencies:
2110
- fs.realpath "^1.0.0"
2111
- inflight "^1.0.4"
2112
- inherits "2"
2113
- minimatch "^3.0.4"
2114
- once "^1.3.0"
2115
- path-is-absolute "^1.0.0"
2116
-
2117
- global-modules@^1.0.0:
2118
- version "1.0.0"
2119
- resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
2120
- integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==
2121
- dependencies:
2122
- global-prefix "^1.0.1"
2123
- is-windows "^1.0.1"
2124
- resolve-dir "^1.0.0"
2125
-
2126
- global-modules@^2.0.0:
2127
- version "2.0.0"
2128
- resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
2129
- integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==
2130
- dependencies:
2131
- global-prefix "^3.0.0"
2132
-
2133
- global-prefix@^1.0.1:
2134
- version "1.0.2"
2135
- resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
2136
- integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=
2137
- dependencies:
2138
- expand-tilde "^2.0.2"
2139
- homedir-polyfill "^1.0.1"
2140
- ini "^1.3.4"
2141
- is-windows "^1.0.1"
2142
- which "^1.2.14"
2143
 
2144
- global-prefix@^3.0.0:
2145
- version "3.0.0"
2146
- resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
2147
- integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
2148
- dependencies:
2149
- ini "^1.3.5"
2150
- kind-of "^6.0.2"
2151
- which "^1.3.1"
2152
 
2153
  globals@^11.1.0:
2154
  version "11.12.0"
2155
  resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
2156
  integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
2157
 
2158
- graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2:
2159
- version "4.2.6"
2160
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
2161
- integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
2162
 
2163
  has-flag@^3.0.0:
2164
  version "3.0.0"
2165
  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
2166
  integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
2167
 
 
 
 
 
 
2168
  has-symbols@^1.0.1:
2169
  version "1.0.2"
2170
  resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
2171
  integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
2172
 
2173
- has-value@^0.3.1:
2174
- version "0.3.1"
2175
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
2176
- integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
2177
- dependencies:
2178
- get-value "^2.0.3"
2179
- has-values "^0.1.4"
2180
- isobject "^2.0.0"
2181
-
2182
- has-value@^1.0.0:
2183
- version "1.0.0"
2184
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
2185
- integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
2186
- dependencies:
2187
- get-value "^2.0.6"
2188
- has-values "^1.0.0"
2189
- isobject "^3.0.0"
2190
-
2191
- has-values@^0.1.4:
2192
- version "0.1.4"
2193
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
2194
- integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
2195
-
2196
- has-values@^1.0.0:
2197
- version "1.0.0"
2198
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
2199
- integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
2200
- dependencies:
2201
- is-number "^3.0.0"
2202
- kind-of "^4.0.0"
2203
-
2204
  has@^1.0.3:
2205
  version "1.0.3"
2206
  resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
@@ -2208,264 +1474,62 @@ has@^1.0.3:
2208
  dependencies:
2209
  function-bind "^1.1.1"
2210
 
2211
- hash-base@^3.0.0:
2212
- version "3.1.0"
2213
- resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33"
2214
- integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==
2215
- dependencies:
2216
- inherits "^2.0.4"
2217
- readable-stream "^3.6.0"
2218
- safe-buffer "^5.2.0"
2219
-
2220
- hash.js@^1.0.0, hash.js@^1.0.3:
2221
- version "1.1.7"
2222
- resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
2223
- integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
2224
- dependencies:
2225
- inherits "^2.0.3"
2226
- minimalistic-assert "^1.0.1"
2227
-
2228
- hmac-drbg@^1.0.1:
2229
- version "1.0.1"
2230
- resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
2231
- integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
2232
- dependencies:
2233
- hash.js "^1.0.3"
2234
- minimalistic-assert "^1.0.0"
2235
- minimalistic-crypto-utils "^1.0.1"
2236
-
2237
- homedir-polyfill@^1.0.1:
2238
- version "1.0.3"
2239
- resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
2240
- integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
2241
- dependencies:
2242
- parse-passwd "^1.0.0"
2243
-
2244
- https-browserify@^1.0.0:
2245
- version "1.0.0"
2246
- resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
2247
- integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
2248
-
2249
- ieee754@^1.1.4:
2250
- version "1.2.1"
2251
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
2252
- integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
2253
-
2254
- iferr@^0.1.5:
2255
- version "0.1.5"
2256
- resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
2257
- integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
2258
-
2259
- import-local@^2.0.0:
2260
- version "2.0.0"
2261
- resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
2262
- integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
2263
- dependencies:
2264
- pkg-dir "^3.0.0"
2265
- resolve-cwd "^2.0.0"
2266
-
2267
- imurmurhash@^0.1.4:
2268
- version "0.1.4"
2269
- resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
2270
- integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
2271
-
2272
- infer-owner@^1.0.3:
2273
- version "1.0.4"
2274
- resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
2275
- integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
2276
-
2277
- inflight@^1.0.4:
2278
- version "1.0.6"
2279
- resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
2280
- integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
2281
- dependencies:
2282
- once "^1.3.0"
2283
- wrappy "1"
2284
-
2285
- inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
2286
- version "2.0.4"
2287
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
2288
- integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
2289
-
2290
- inherits@2.0.1:
2291
- version "2.0.1"
2292
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
2293
- integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
2294
-
2295
- inherits@2.0.3:
2296
- version "2.0.3"
2297
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
2298
- integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
2299
-
2300
- ini@^1.3.4, ini@^1.3.5:
2301
- version "1.3.8"
2302
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
2303
- integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
2304
-
2305
- interpret@^1.4.0:
2306
- version "1.4.0"
2307
- resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
2308
- integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
2309
-
2310
- is-accessor-descriptor@^0.1.6:
2311
- version "0.1.6"
2312
- resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
2313
- integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
2314
- dependencies:
2315
- kind-of "^3.0.2"
2316
-
2317
- is-accessor-descriptor@^1.0.0:
2318
- version "1.0.0"
2319
- resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
2320
- integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
2321
- dependencies:
2322
- kind-of "^6.0.0"
2323
-
2324
- is-binary-path@^1.0.0:
2325
- version "1.0.1"
2326
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
2327
- integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
2328
- dependencies:
2329
- binary-extensions "^1.0.0"
2330
-
2331
- is-binary-path@~2.1.0:
2332
  version "2.1.0"
2333
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
2334
- integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
 
 
 
 
 
2335
  dependencies:
2336
- binary-extensions "^2.0.0"
 
2337
 
2338
- is-buffer@^1.1.5:
2339
- version "1.1.6"
2340
- resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
2341
- integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
2342
 
2343
  is-core-module@^2.2.0:
2344
- version "2.2.0"
2345
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
2346
- integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
2347
  dependencies:
2348
  has "^1.0.3"
2349
 
2350
- is-data-descriptor@^0.1.4:
2351
- version "0.1.4"
2352
- resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
2353
- integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
2354
- dependencies:
2355
- kind-of "^3.0.2"
2356
-
2357
- is-data-descriptor@^1.0.0:
2358
- version "1.0.0"
2359
- resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
2360
- integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
2361
- dependencies:
2362
- kind-of "^6.0.0"
2363
-
2364
- is-descriptor@^0.1.0:
2365
- version "0.1.6"
2366
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
2367
- integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
2368
- dependencies:
2369
- is-accessor-descriptor "^0.1.6"
2370
- is-data-descriptor "^0.1.4"
2371
- kind-of "^5.0.0"
2372
-
2373
- is-descriptor@^1.0.0, is-descriptor@^1.0.2:
2374
- version "1.0.2"
2375
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
2376
- integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
2377
- dependencies:
2378
- is-accessor-descriptor "^1.0.0"
2379
- is-data-descriptor "^1.0.0"
2380
- kind-of "^6.0.2"
2381
-
2382
- is-extendable@^0.1.0, is-extendable@^0.1.1:
2383
- version "0.1.1"
2384
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
2385
- integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
2386
-
2387
- is-extendable@^1.0.1:
2388
- version "1.0.1"
2389
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
2390
- integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
2391
- dependencies:
2392
- is-plain-object "^2.0.4"
2393
-
2394
- is-extglob@^2.1.0, is-extglob@^2.1.1:
2395
- version "2.1.1"
2396
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
2397
- integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
2398
-
2399
- is-fullwidth-code-point@^2.0.0:
2400
- version "2.0.0"
2401
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
2402
- integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
2403
-
2404
- is-glob@^3.1.0:
2405
- version "3.1.0"
2406
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
2407
- integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
2408
- dependencies:
2409
- is-extglob "^2.1.0"
2410
-
2411
- is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
2412
- version "4.0.1"
2413
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
2414
- integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
2415
- dependencies:
2416
- is-extglob "^2.1.1"
2417
-
2418
- is-number@^3.0.0:
2419
- version "3.0.0"
2420
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
2421
- integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
2422
- dependencies:
2423
- kind-of "^3.0.2"
2424
-
2425
- is-number@^7.0.0:
2426
- version "7.0.0"
2427
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
2428
- integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
2429
-
2430
- is-plain-object@^2.0.3, is-plain-object@^2.0.4:
2431
  version "2.0.4"
2432
  resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
2433
  integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
2434
  dependencies:
2435
  isobject "^3.0.1"
2436
 
2437
- is-windows@^1.0.1, is-windows@^1.0.2:
2438
- version "1.0.2"
2439
- resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
2440
- integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
2441
-
2442
- is-wsl@^1.1.0:
2443
- version "1.1.0"
2444
- resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
2445
- integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
2446
-
2447
- isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
2448
- version "1.0.0"
2449
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
2450
- integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
2451
 
2452
  isexe@^2.0.0:
2453
  version "2.0.0"
2454
  resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
2455
  integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
2456
 
2457
- isobject@^2.0.0:
2458
- version "2.1.0"
2459
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
2460
- integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
2461
- dependencies:
2462
- isarray "1.0.0"
2463
-
2464
- isobject@^3.0.0, isobject@^3.0.1:
2465
  version "3.0.1"
2466
  resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
2467
  integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
2468
 
 
 
 
 
 
 
 
 
 
2469
  js-tokens@^4.0.0:
2470
  version "4.0.0"
2471
  resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@@ -2505,36 +1569,17 @@ json5@^2.1.2:
2505
  dependencies:
2506
  minimist "^1.2.5"
2507
 
2508
- kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
2509
- version "3.2.2"
2510
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
2511
- integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
2512
- dependencies:
2513
- is-buffer "^1.1.5"
2514
-
2515
- kind-of@^4.0.0:
2516
- version "4.0.0"
2517
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
2518
- integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
2519
- dependencies:
2520
- is-buffer "^1.1.5"
2521
-
2522
- kind-of@^5.0.0:
2523
- version "5.1.0"
2524
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
2525
- integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
2526
-
2527
- kind-of@^6.0.0, kind-of@^6.0.2:
2528
  version "6.0.3"
2529
  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
2530
  integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
2531
 
2532
- loader-runner@^2.4.0:
2533
- version "2.4.0"
2534
- resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
2535
- integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
2536
 
2537
- loader-utils@^1.2.3, loader-utils@^1.4.0:
2538
  version "1.4.0"
2539
  resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
2540
  integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
@@ -2543,13 +1588,14 @@ loader-utils@^1.2.3, loader-utils@^1.4.0:
2543
  emojis-list "^3.0.0"
2544
  json5 "^1.0.1"
2545
 
2546
- locate-path@^3.0.0:
2547
- version "3.0.0"
2548
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
2549
- integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
2550
  dependencies:
2551
- p-locate "^3.0.0"
2552
- path-exists "^3.0.0"
 
2553
 
2554
  locate-path@^5.0.0:
2555
  version "5.0.0"
@@ -2563,26 +1609,6 @@ lodash.debounce@^4.0.8:
2563
  resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
2564
  integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
2565
 
2566
- lodash@^4.17.19:
2567
- version "4.17.21"
2568
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
2569
- integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
2570
-
2571
- lru-cache@^5.1.1:
2572
- version "5.1.1"
2573
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
2574
- integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
2575
- dependencies:
2576
- yallist "^3.0.2"
2577
-
2578
- make-dir@^2.0.0:
2579
- version "2.1.0"
2580
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
2581
- integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
2582
- dependencies:
2583
- pify "^4.0.1"
2584
- semver "^5.6.0"
2585
-
2586
  make-dir@^3.0.2, make-dir@^3.1.0:
2587
  version "3.1.0"
2588
  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
@@ -2590,249 +1616,65 @@ make-dir@^3.0.2, make-dir@^3.1.0:
2590
  dependencies:
2591
  semver "^6.0.0"
2592
 
2593
- map-cache@^0.2.2:
2594
- version "0.2.2"
2595
- resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
2596
- integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
2597
-
2598
- map-visit@^1.0.0:
2599
- version "1.0.0"
2600
- resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
2601
- integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
2602
- dependencies:
2603
- object-visit "^1.0.0"
2604
-
2605
- md5.js@^1.3.4:
2606
- version "1.3.5"
2607
- resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
2608
- integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
2609
- dependencies:
2610
- hash-base "^3.0.0"
2611
- inherits "^2.0.1"
2612
- safe-buffer "^5.1.2"
2613
-
2614
- memory-fs@^0.4.1:
2615
- version "0.4.1"
2616
- resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
2617
- integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
2618
- dependencies:
2619
- errno "^0.1.3"
2620
- readable-stream "^2.0.1"
2621
 
2622
- memory-fs@^0.5.0:
2623
- version "0.5.0"
2624
- resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c"
2625
- integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==
2626
- dependencies:
2627
- errno "^0.1.3"
2628
- readable-stream "^2.0.1"
2629
-
2630
- micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4:
2631
- version "3.1.10"
2632
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
2633
- integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
2634
- dependencies:
2635
- arr-diff "^4.0.0"
2636
- array-unique "^0.3.2"
2637
- braces "^2.3.1"
2638
- define-property "^2.0.2"
2639
- extend-shallow "^3.0.2"
2640
- extglob "^2.0.4"
2641
- fragment-cache "^0.2.1"
2642
- kind-of "^6.0.2"
2643
- nanomatch "^1.2.9"
2644
- object.pick "^1.3.0"
2645
- regex-not "^1.0.0"
2646
- snapdragon "^0.8.1"
2647
- to-regex "^3.0.2"
2648
 
2649
- miller-rabin@^4.0.0:
2650
- version "4.0.1"
2651
- resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
2652
- integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
2653
  dependencies:
2654
- bn.js "^4.0.0"
2655
- brorand "^1.0.1"
2656
-
2657
- minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
2658
- version "1.0.1"
2659
- resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
2660
- integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
2661
-
2662
- minimalistic-crypto-utils@^1.0.1:
2663
- version "1.0.1"
2664
- resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
2665
- integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
2666
 
2667
- minimatch@^3.0.4:
2668
- version "3.0.4"
2669
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
2670
- integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
2671
- dependencies:
2672
- brace-expansion "^1.1.7"
2673
 
2674
  minimist@^1.2.0, minimist@^1.2.5:
2675
  version "1.2.5"
2676
  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
2677
  integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
2678
 
2679
- mississippi@^3.0.0:
2680
- version "3.0.0"
2681
- resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
2682
- integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
2683
- dependencies:
2684
- concat-stream "^1.5.0"
2685
- duplexify "^3.4.2"
2686
- end-of-stream "^1.1.0"
2687
- flush-write-stream "^1.0.0"
2688
- from2 "^2.1.0"
2689
- parallel-transform "^1.1.0"
2690
- pump "^3.0.0"
2691
- pumpify "^1.3.3"
2692
- stream-each "^1.1.0"
2693
- through2 "^2.0.0"
2694
-
2695
- mixin-deep@^1.2.0:
2696
- version "1.3.2"
2697
- resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
2698
- integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
2699
- dependencies:
2700
- for-in "^1.0.2"
2701
- is-extendable "^1.0.1"
2702
-
2703
- mkdirp@^0.5.1, mkdirp@^0.5.3:
2704
- version "0.5.5"
2705
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
2706
- integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
2707
- dependencies:
2708
- minimist "^1.2.5"
2709
-
2710
- move-concurrently@^1.0.1:
2711
- version "1.0.1"
2712
- resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
2713
- integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=
2714
- dependencies:
2715
- aproba "^1.1.1"
2716
- copy-concurrently "^1.0.0"
2717
- fs-write-stream-atomic "^1.0.8"
2718
- mkdirp "^0.5.1"
2719
- rimraf "^2.5.4"
2720
- run-queue "^1.0.3"
2721
-
2722
- ms@2.0.0:
2723
- version "2.0.0"
2724
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
2725
- integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
2726
-
2727
  ms@2.1.2:
2728
  version "2.1.2"
2729
  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
2730
  integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
2731
 
2732
- nan@^2.12.1:
2733
- version "2.14.2"
2734
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
2735
- integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
2736
-
2737
- nanomatch@^1.2.9:
2738
- version "1.2.13"
2739
- resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
2740
- integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
2741
- dependencies:
2742
- arr-diff "^4.0.0"
2743
- array-unique "^0.3.2"
2744
- define-property "^2.0.2"
2745
- extend-shallow "^3.0.2"
2746
- fragment-cache "^0.2.1"
2747
- is-windows "^1.0.2"
2748
- kind-of "^6.0.2"
2749
- object.pick "^1.3.0"
2750
- regex-not "^1.0.0"
2751
- snapdragon "^0.8.1"
2752
- to-regex "^3.0.1"
2753
 
2754
- neo-async@^2.5.0, neo-async@^2.6.1:
2755
  version "2.6.2"
2756
  resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
2757
  integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
2758
 
2759
- nice-try@^1.0.4:
2760
- version "1.0.5"
2761
- resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
2762
- integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
2763
-
2764
- node-libs-browser@^2.2.1:
2765
- version "2.2.1"
2766
- resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425"
2767
- integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==
2768
- dependencies:
2769
- assert "^1.1.1"
2770
- browserify-zlib "^0.2.0"
2771
- buffer "^4.3.0"
2772
- console-browserify "^1.1.0"
2773
- constants-browserify "^1.0.0"
2774
- crypto-browserify "^3.11.0"
2775
- domain-browser "^1.1.1"
2776
- events "^3.0.0"
2777
- https-browserify "^1.0.0"
2778
- os-browserify "^0.3.0"
2779
- path-browserify "0.0.1"
2780
- process "^0.11.10"
2781
- punycode "^1.2.4"
2782
- querystring-es3 "^0.2.0"
2783
- readable-stream "^2.3.3"
2784
- stream-browserify "^2.0.1"
2785
- stream-http "^2.7.2"
2786
- string_decoder "^1.0.0"
2787
- timers-browserify "^2.0.4"
2788
- tty-browserify "0.0.0"
2789
- url "^0.11.0"
2790
- util "^0.11.0"
2791
- vm-browserify "^1.0.1"
2792
-
2793
- node-releases@^1.1.70:
2794
- version "1.1.71"
2795
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb"
2796
- integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==
2797
-
2798
- normalize-path@^2.1.1:
2799
- version "2.1.1"
2800
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
2801
- integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
2802
- dependencies:
2803
- remove-trailing-separator "^1.0.1"
2804
-
2805
- normalize-path@^3.0.0, normalize-path@~3.0.0:
2806
- version "3.0.0"
2807
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
2808
- integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
2809
 
2810
- object-assign@^4.1.1:
2811
- version "4.1.1"
2812
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
2813
- integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
2814
-
2815
- object-copy@^0.1.0:
2816
- version "0.1.0"
2817
- resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
2818
- integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
2819
  dependencies:
2820
- copy-descriptor "^0.1.0"
2821
- define-property "^0.2.5"
2822
- kind-of "^3.0.3"
2823
 
2824
  object-keys@^1.0.12, object-keys@^1.1.1:
2825
  version "1.1.1"
2826
  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
2827
  integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
2828
 
2829
- object-visit@^1.0.0:
2830
- version "1.0.1"
2831
- resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
2832
- integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
2833
- dependencies:
2834
- isobject "^3.0.0"
2835
-
2836
  object.assign@^4.1.0:
2837
  version "4.1.2"
2838
  resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
@@ -2843,38 +1685,26 @@ object.assign@^4.1.0:
2843
  has-symbols "^1.0.1"
2844
  object-keys "^1.1.1"
2845
 
2846
- object.pick@^1.3.0:
2847
- version "1.3.0"
2848
- resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
2849
- integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
2850
- dependencies:
2851
- isobject "^3.0.1"
2852
-
2853
- once@^1.3.0, once@^1.3.1, once@^1.4.0:
2854
- version "1.4.0"
2855
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
2856
- integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
2857
  dependencies:
2858
- wrappy "1"
2859
-
2860
- os-browserify@^0.3.0:
2861
- version "0.3.0"
2862
- resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
2863
- integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
2864
 
2865
- p-limit@^2.0.0, p-limit@^2.2.0:
2866
  version "2.3.0"
2867
  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
2868
  integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
2869
  dependencies:
2870
  p-try "^2.0.0"
2871
 
2872
- p-locate@^3.0.0:
2873
- version "3.0.0"
2874
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
2875
- integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
2876
  dependencies:
2877
- p-limit "^2.0.0"
2878
 
2879
  p-locate@^4.1.0:
2880
  version "4.1.0"
@@ -2888,259 +1718,55 @@ p-try@^2.0.0:
2888
  resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
2889
  integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
2890
 
2891
- pako@~1.0.5:
2892
- version "1.0.11"
2893
- resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
2894
- integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
2895
-
2896
- parallel-transform@^1.1.0:
2897
- version "1.2.0"
2898
- resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc"
2899
- integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==
2900
- dependencies:
2901
- cyclist "^1.0.1"
2902
- inherits "^2.0.3"
2903
- readable-stream "^2.1.5"
2904
-
2905
- parse-asn1@^5.0.0, parse-asn1@^5.1.5:
2906
- version "5.1.6"
2907
- resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4"
2908
- integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==
2909
- dependencies:
2910
- asn1.js "^5.2.0"
2911
- browserify-aes "^1.0.0"
2912
- evp_bytestokey "^1.0.0"
2913
- pbkdf2 "^3.0.3"
2914
- safe-buffer "^5.1.1"
2915
-
2916
- parse-passwd@^1.0.0:
2917
- version "1.0.0"
2918
- resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
2919
- integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
2920
-
2921
- pascalcase@^0.1.1:
2922
- version "0.1.1"
2923
- resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
2924
- integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
2925
-
2926
- path-browserify@0.0.1:
2927
- version "0.0.1"
2928
- resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
2929
- integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
2930
-
2931
- path-dirname@^1.0.0:
2932
- version "1.0.2"
2933
- resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
2934
- integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
2935
-
2936
- path-exists@^3.0.0:
2937
- version "3.0.0"
2938
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
2939
- integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
2940
-
2941
  path-exists@^4.0.0:
2942
  version "4.0.0"
2943
  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
2944
  integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
2945
 
2946
- path-is-absolute@^1.0.0:
2947
- version "1.0.1"
2948
- resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
2949
- integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
2950
-
2951
- path-key@^2.0.1:
2952
- version "2.0.1"
2953
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
2954
- integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
2955
-
2956
- path-parse@^1.0.6:
2957
- version "1.0.6"
2958
- resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
2959
- integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
2960
-
2961
- pbkdf2@^3.0.3:
2962
  version "3.1.1"
2963
- resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94"
2964
- integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==
2965
- dependencies:
2966
- create-hash "^1.1.2"
2967
- create-hmac "^1.1.4"
2968
- ripemd160 "^2.0.1"
2969
- safe-buffer "^5.0.1"
2970
- sha.js "^2.4.8"
2971
-
2972
- picomatch@^2.0.4, picomatch@^2.2.1:
2973
- version "2.2.2"
2974
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
2975
- integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
2976
 
2977
- pify@^4.0.1:
2978
- version "4.0.1"
2979
- resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
2980
- integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
2981
-
2982
- pkg-dir@^3.0.0:
2983
- version "3.0.0"
2984
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
2985
- integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
2986
- dependencies:
2987
- find-up "^3.0.0"
2988
 
2989
- pkg-dir@^4.1.0:
2990
  version "4.2.0"
2991
  resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
2992
  integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
2993
  dependencies:
2994
  find-up "^4.0.0"
2995
 
2996
- posix-character-classes@^0.1.0:
2997
- version "0.1.1"
2998
- resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
2999
- integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
3000
-
3001
- process-nextick-args@~2.0.0:
3002
- version "2.0.1"
3003
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
3004
- integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
3005
-
3006
- process@^0.11.10:
3007
- version "0.11.10"
3008
- resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
3009
- integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
3010
-
3011
- promise-inflight@^1.0.1:
3012
- version "1.0.1"
3013
- resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
3014
- integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
3015
-
3016
- prr@~1.0.1:
3017
- version "1.0.1"
3018
- resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
3019
- integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
3020
-
3021
- public-encrypt@^4.0.0:
3022
- version "4.0.3"
3023
- resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
3024
- integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
3025
- dependencies:
3026
- bn.js "^4.1.0"
3027
- browserify-rsa "^4.0.0"
3028
- create-hash "^1.1.0"
3029
- parse-asn1 "^5.0.0"
3030
- randombytes "^2.0.1"
3031
- safe-buffer "^5.1.2"
3032
-
3033
- pump@^2.0.0:
3034
- version "2.0.1"
3035
- resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
3036
- integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
3037
- dependencies:
3038
- end-of-stream "^1.1.0"
3039
- once "^1.3.1"
3040
-
3041
- pump@^3.0.0:
3042
- version "3.0.0"
3043
- resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
3044
- integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
3045
- dependencies:
3046
- end-of-stream "^1.1.0"
3047
- once "^1.3.1"
3048
-
3049
- pumpify@^1.3.3:
3050
- version "1.5.1"
3051
- resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
3052
- integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
3053
- dependencies:
3054
- duplexify "^3.6.0"
3055
- inherits "^2.0.3"
3056
- pump "^2.0.0"
3057
-
3058
- punycode@1.3.2:
3059
- version "1.3.2"
3060
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
3061
- integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
3062
-
3063
- punycode@^1.2.4:
3064
- version "1.4.1"
3065
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
3066
- integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
3067
-
3068
  punycode@^2.1.0:
3069
  version "2.1.1"
3070
  resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
3071
  integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
3072
 
3073
- querystring-es3@^0.2.0:
3074
- version "0.2.1"
3075
- resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
3076
- integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
3077
-
3078
- querystring@0.2.0:
3079
- version "0.2.0"
3080
- resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
3081
- integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
3082
-
3083
- randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
3084
  version "2.1.0"
3085
  resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
3086
  integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
3087
  dependencies:
3088
  safe-buffer "^5.1.0"
3089
 
3090
- randomfill@^1.0.3:
3091
- version "1.0.4"
3092
- resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
3093
- integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
3094
- dependencies:
3095
- randombytes "^2.0.5"
3096
- safe-buffer "^5.1.0"
3097
-
3098
- "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
3099
- version "2.3.7"
3100
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
3101
- integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
3102
  dependencies:
3103
- core-util-is "~1.0.0"
3104
- inherits "~2.0.3"
3105
- isarray "~1.0.0"
3106
- process-nextick-args "~2.0.0"
3107
- safe-buffer "~5.1.1"
3108
- string_decoder "~1.1.1"
3109
- util-deprecate "~1.0.1"
3110
-
3111
- readable-stream@^3.6.0:
3112
- version "3.6.0"
3113
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
3114
- integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
3115
- dependencies:
3116
- inherits "^2.0.3"
3117
- string_decoder "^1.1.1"
3118
- util-deprecate "^1.0.1"
3119
 
3120
- readdirp@^2.2.1:
3121
- version "2.2.1"
3122
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
3123
- integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
3124
  dependencies:
3125
- graceful-fs "^4.1.11"
3126
- micromatch "^3.1.10"
3127
- readable-stream "^2.0.2"
3128
 
3129
- readdirp@~3.5.0:
3130
- version "3.5.0"
3131
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e"
3132
- integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==
3133
- dependencies:
3134
- picomatch "^2.2.1"
3135
-
3136
- regenerate-unicode-properties@^8.2.0:
3137
- version "8.2.0"
3138
- resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec"
3139
- integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==
3140
- dependencies:
3141
- regenerate "^1.4.0"
3142
-
3143
- regenerate@^1.4.0:
3144
  version "1.4.2"
3145
  resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
3146
  integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
@@ -3151,9 +1777,9 @@ regenerator-runtime@^0.11.0:
3151
  integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
3152
 
3153
  regenerator-runtime@^0.13.4:
3154
- version "0.13.7"
3155
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
3156
- integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
3157
 
3158
  regenerator-transform@^0.14.2:
3159
  version "0.14.5"
@@ -3162,89 +1788,43 @@ regenerator-transform@^0.14.2:
3162
  dependencies:
3163
  "@babel/runtime" "^7.8.4"
3164
 
3165
- regex-not@^1.0.0, regex-not@^1.0.2:
3166
- version "1.0.2"
3167
- resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
3168
- integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
3169
  dependencies:
3170
- extend-shallow "^3.0.2"
3171
- safe-regex "^1.1.0"
 
 
 
 
3172
 
3173
- regexpu-core@^4.7.1:
3174
- version "4.7.1"
3175
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6"
3176
- integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==
3177
- dependencies:
3178
- regenerate "^1.4.0"
3179
- regenerate-unicode-properties "^8.2.0"
3180
- regjsgen "^0.5.1"
3181
- regjsparser "^0.6.4"
3182
- unicode-match-property-ecmascript "^1.0.4"
3183
- unicode-match-property-value-ecmascript "^1.2.0"
3184
-
3185
- regjsgen@^0.5.1:
3186
  version "0.5.2"
3187
  resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
3188
  integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
3189
 
3190
- regjsparser@^0.6.4:
3191
- version "0.6.9"
3192
- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.9.tgz#b489eef7c9a2ce43727627011429cf833a7183e6"
3193
- integrity sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==
3194
  dependencies:
3195
  jsesc "~0.5.0"
3196
 
3197
- remove-trailing-separator@^1.0.1:
3198
- version "1.1.0"
3199
- resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
3200
- integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
3201
-
3202
- repeat-element@^1.1.2:
3203
- version "1.1.3"
3204
- resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
3205
- integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
3206
-
3207
- repeat-string@^1.6.1:
3208
- version "1.6.1"
3209
- resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
3210
- integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
3211
-
3212
- require-directory@^2.1.1:
3213
- version "2.1.1"
3214
- resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
3215
- integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
3216
-
3217
- require-main-filename@^2.0.0:
3218
- version "2.0.0"
3219
- resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
3220
- integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
3221
-
3222
- resolve-cwd@^2.0.0:
3223
- version "2.0.0"
3224
- resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
3225
- integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=
3226
- dependencies:
3227
- resolve-from "^3.0.0"
3228
-
3229
- resolve-dir@^1.0.0, resolve-dir@^1.0.1:
3230
- version "1.0.1"
3231
- resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
3232
- integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=
3233
- dependencies:
3234
- expand-tilde "^2.0.0"
3235
- global-modules "^1.0.0"
3236
-
3237
- resolve-from@^3.0.0:
3238
  version "3.0.0"
3239
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
3240
- integrity sha1-six699nWiBvItuZTM17rywoYh0g=
 
 
3241
 
3242
- resolve-url@^0.2.1:
3243
- version "0.2.1"
3244
- resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
3245
- integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
3246
 
3247
- resolve@^1.14.2:
3248
  version "1.20.0"
3249
  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
3250
  integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
@@ -3252,65 +1832,17 @@ resolve@^1.14.2:
3252
  is-core-module "^2.2.0"
3253
  path-parse "^1.0.6"
3254
 
3255
- ret@~0.1.10:
3256
- version "0.1.15"
3257
- resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
3258
- integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
3259
-
3260
- rimraf@^2.5.4, rimraf@^2.6.3:
3261
- version "2.7.1"
3262
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
3263
- integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
3264
- dependencies:
3265
- glob "^7.1.3"
3266
-
3267
- ripemd160@^2.0.0, ripemd160@^2.0.1:
3268
- version "2.0.2"
3269
- resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
3270
- integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
3271
- dependencies:
3272
- hash-base "^3.0.0"
3273
- inherits "^2.0.1"
3274
-
3275
- run-queue@^1.0.0, run-queue@^1.0.3:
3276
- version "1.0.3"
3277
- resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
3278
- integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=
3279
- dependencies:
3280
- aproba "^1.1.1"
3281
-
3282
- safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
3283
  version "5.2.1"
3284
  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
3285
  integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
3286
 
3287
- safe-buffer@~5.1.0, safe-buffer@~5.1.1:
3288
  version "5.1.2"
3289
  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
3290
  integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
3291
 
3292
- safe-regex@^1.1.0:
3293
- version "1.1.0"
3294
- resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
3295
- integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
3296
- dependencies:
3297
- ret "~0.1.10"
3298
-
3299
- safer-buffer@^2.1.0:
3300
- version "2.1.2"
3301
- resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
3302
- integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
3303
-
3304
- schema-utils@^1.0.0:
3305
- version "1.0.0"
3306
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
3307
- integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
3308
- dependencies:
3309
- ajv "^6.1.0"
3310
- ajv-errors "^1.0.0"
3311
- ajv-keywords "^3.1.0"
3312
-
3313
- schema-utils@^2.5.0, schema-utils@^2.6.5:
3314
  version "2.7.1"
3315
  resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
3316
  integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
@@ -3319,220 +1851,83 @@ schema-utils@^2.5.0, schema-utils@^2.6.5:
3319
  ajv "^6.12.4"
3320
  ajv-keywords "^3.5.2"
3321
 
 
 
 
 
 
 
 
 
 
3322
  semver@7.0.0:
3323
  version "7.0.0"
3324
  resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
3325
  integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
3326
 
3327
- semver@^5.5.0, semver@^5.6.0:
3328
- version "5.7.1"
3329
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
3330
- integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
3331
-
3332
  semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
3333
  version "6.3.0"
3334
  resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
3335
  integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
3336
 
3337
- serialize-javascript@^4.0.0:
3338
- version "4.0.0"
3339
- resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa"
3340
- integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==
3341
  dependencies:
3342
  randombytes "^2.1.0"
3343
 
3344
- set-blocking@^2.0.0:
3345
- version "2.0.0"
3346
- resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
3347
- integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
3348
-
3349
- set-value@^2.0.0, set-value@^2.0.1:
3350
- version "2.0.1"
3351
- resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
3352
- integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
3353
- dependencies:
3354
- extend-shallow "^2.0.1"
3355
- is-extendable "^0.1.1"
3356
- is-plain-object "^2.0.3"
3357
- split-string "^3.0.1"
3358
-
3359
- setimmediate@^1.0.4:
3360
- version "1.0.5"
3361
- resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
3362
- integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
3363
-
3364
- sha.js@^2.4.0, sha.js@^2.4.8:
3365
- version "2.4.11"
3366
- resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
3367
- integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
3368
- dependencies:
3369
- inherits "^2.0.1"
3370
- safe-buffer "^5.0.1"
3371
-
3372
- shebang-command@^1.2.0:
3373
- version "1.2.0"
3374
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
3375
- integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
3376
  dependencies:
3377
- shebang-regex "^1.0.0"
3378
-
3379
- shebang-regex@^1.0.0:
3380
- version "1.0.0"
3381
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
3382
- integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
3383
 
3384
- snapdragon-node@^2.0.1:
3385
- version "2.1.1"
3386
- resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
3387
- integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
3388
  dependencies:
3389
- define-property "^1.0.0"
3390
- isobject "^3.0.0"
3391
- snapdragon-util "^3.0.1"
3392
 
3393
- snapdragon-util@^3.0.1:
3394
- version "3.0.1"
3395
- resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
3396
- integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
3397
- dependencies:
3398
- kind-of "^3.2.0"
3399
-
3400
- snapdragon@^0.8.1:
3401
- version "0.8.2"
3402
- resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
3403
- integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
3404
- dependencies:
3405
- base "^0.11.1"
3406
- debug "^2.2.0"
3407
- define-property "^0.2.5"
3408
- extend-shallow "^2.0.1"
3409
- map-cache "^0.2.2"
3410
- source-map "^0.5.6"
3411
- source-map-resolve "^0.5.0"
3412
- use "^3.1.0"
3413
-
3414
- source-list-map@^2.0.0:
3415
- version "2.0.1"
3416
- resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
3417
- integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
3418
 
3419
- source-map-resolve@^0.5.0:
3420
- version "0.5.3"
3421
- resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
3422
- integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
3423
- dependencies:
3424
- atob "^2.1.2"
3425
- decode-uri-component "^0.2.0"
3426
- resolve-url "^0.2.1"
3427
- source-map-url "^0.4.0"
3428
- urix "^0.1.0"
3429
 
3430
- source-map-support@~0.5.12:
3431
- version "0.5.19"
3432
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
3433
- integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
3434
  dependencies:
3435
  buffer-from "^1.0.0"
3436
  source-map "^0.6.0"
3437
 
3438
- source-map-url@^0.4.0:
3439
- version "0.4.1"
3440
- resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56"
3441
- integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==
3442
-
3443
- source-map@^0.5.0, source-map@^0.5.6:
3444
  version "0.5.7"
3445
  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
3446
  integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
3447
 
3448
- source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
3449
  version "0.6.1"
3450
  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
3451
  integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
3452
 
3453
- split-string@^3.0.1, split-string@^3.0.2:
3454
- version "3.1.0"
3455
- resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
3456
- integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
3457
- dependencies:
3458
- extend-shallow "^3.0.0"
3459
 
3460
- ssri@^6.0.1:
3461
- version "6.0.1"
3462
- resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8"
3463
- integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==
3464
- dependencies:
3465
- figgy-pudding "^3.5.1"
3466
-
3467
- static-extend@^0.1.1:
3468
- version "0.1.2"
3469
- resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
3470
- integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
3471
- dependencies:
3472
- define-property "^0.2.5"
3473
- object-copy "^0.1.0"
3474
-
3475
- stream-browserify@^2.0.1:
3476
- version "2.0.2"
3477
- resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
3478
- integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
3479
- dependencies:
3480
- inherits "~2.0.1"
3481
- readable-stream "^2.0.2"
3482
-
3483
- stream-each@^1.1.0:
3484
- version "1.2.3"
3485
- resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
3486
- integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
3487
- dependencies:
3488
- end-of-stream "^1.1.0"
3489
- stream-shift "^1.0.0"
3490
-
3491
- stream-http@^2.7.2:
3492
- version "2.8.3"
3493
- resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
3494
- integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
3495
- dependencies:
3496
- builtin-status-codes "^3.0.0"
3497
- inherits "^2.0.1"
3498
- readable-stream "^2.3.6"
3499
- to-arraybuffer "^1.0.0"
3500
- xtend "^4.0.0"
3501
-
3502
- stream-shift@^1.0.0:
3503
- version "1.0.1"
3504
- resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
3505
- integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
3506
-
3507
- string-width@^3.0.0, string-width@^3.1.0:
3508
- version "3.1.0"
3509
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
3510
- integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
3511
- dependencies:
3512
- emoji-regex "^7.0.1"
3513
- is-fullwidth-code-point "^2.0.0"
3514
- strip-ansi "^5.1.0"
3515
-
3516
- string_decoder@^1.0.0, string_decoder@^1.1.1:
3517
- version "1.3.0"
3518
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
3519
- integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
3520
- dependencies:
3521
- safe-buffer "~5.2.0"
3522
-
3523
- string_decoder@~1.1.1:
3524
- version "1.1.1"
3525
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
3526
- integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
3527
- dependencies:
3528
- safe-buffer "~5.1.0"
3529
-
3530
- strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
3531
- version "5.2.0"
3532
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
3533
- integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
3534
- dependencies:
3535
- ansi-regex "^4.1.0"
3536
 
3537
  supports-color@^5.3.0:
3538
  version "5.5.0"
@@ -3541,173 +1936,66 @@ supports-color@^5.3.0:
3541
  dependencies:
3542
  has-flag "^3.0.0"
3543
 
3544
- supports-color@^6.1.0:
3545
- version "6.1.0"
3546
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
3547
- integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
3548
  dependencies:
3549
- has-flag "^3.0.0"
3550
 
3551
- tapable@^1.0.0, tapable@^1.1.3:
3552
- version "1.1.3"
3553
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
3554
- integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
3555
-
3556
- terser-webpack-plugin@^1.4.3:
3557
- version "1.4.5"
3558
- resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b"
3559
- integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==
3560
- dependencies:
3561
- cacache "^12.0.2"
3562
- find-cache-dir "^2.1.0"
3563
- is-wsl "^1.1.0"
3564
- schema-utils "^1.0.0"
3565
- serialize-javascript "^4.0.0"
3566
  source-map "^0.6.1"
3567
- terser "^4.1.2"
3568
- webpack-sources "^1.4.0"
3569
- worker-farm "^1.7.0"
3570
 
3571
- terser@^4.1.2:
3572
- version "4.8.0"
3573
- resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17"
3574
- integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==
3575
  dependencies:
3576
  commander "^2.20.0"
3577
- source-map "~0.6.1"
3578
- source-map-support "~0.5.12"
3579
-
3580
- through2@^2.0.0:
3581
- version "2.0.5"
3582
- resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
3583
- integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
3584
- dependencies:
3585
- readable-stream "~2.3.6"
3586
- xtend "~4.0.1"
3587
-
3588
- timers-browserify@^2.0.4:
3589
- version "2.0.12"
3590
- resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee"
3591
- integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==
3592
- dependencies:
3593
- setimmediate "^1.0.4"
3594
-
3595
- to-arraybuffer@^1.0.0:
3596
- version "1.0.1"
3597
- resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
3598
- integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
3599
 
3600
  to-fast-properties@^2.0.0:
3601
  version "2.0.0"
3602
  resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
3603
  integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
3604
 
3605
- to-object-path@^0.3.0:
3606
- version "0.3.0"
3607
- resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
3608
- integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
3609
- dependencies:
3610
- kind-of "^3.0.2"
3611
-
3612
- to-regex-range@^2.1.0:
3613
- version "2.1.1"
3614
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
3615
- integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
3616
- dependencies:
3617
- is-number "^3.0.0"
3618
- repeat-string "^1.6.1"
3619
-
3620
- to-regex-range@^5.0.1:
3621
- version "5.0.1"
3622
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
3623
- integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
3624
- dependencies:
3625
- is-number "^7.0.0"
3626
-
3627
- to-regex@^3.0.1, to-regex@^3.0.2:
3628
- version "3.0.2"
3629
- resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
3630
- integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
3631
- dependencies:
3632
- define-property "^2.0.2"
3633
- extend-shallow "^3.0.2"
3634
- regex-not "^1.0.2"
3635
- safe-regex "^1.1.0"
3636
-
3637
- tslib@^1.9.0:
3638
- version "1.14.1"
3639
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
3640
- integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
3641
-
3642
- tty-browserify@0.0.0:
3643
- version "0.0.0"
3644
- resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
3645
- integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
3646
-
3647
- typedarray@^0.0.6:
3648
- version "0.0.6"
3649
- resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
3650
- integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
3651
-
3652
- unicode-canonical-property-names-ecmascript@^1.0.4:
3653
- version "1.0.4"
3654
- resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
3655
- integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==
3656
-
3657
- unicode-match-property-ecmascript@^1.0.4:
3658
- version "1.0.4"
3659
- resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c"
3660
- integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==
3661
- dependencies:
3662
- unicode-canonical-property-names-ecmascript "^1.0.4"
3663
- unicode-property-aliases-ecmascript "^1.0.4"
3664
-
3665
- unicode-match-property-value-ecmascript@^1.2.0:
3666
- version "1.2.0"
3667
- resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531"
3668
- integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==
3669
-
3670
- unicode-property-aliases-ecmascript@^1.0.4:
3671
- version "1.1.0"
3672
- resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4"
3673
- integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==
3674
-
3675
- union-value@^1.0.0:
3676
- version "1.0.1"
3677
- resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
3678
- integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
3679
- dependencies:
3680
- arr-union "^3.1.0"
3681
- get-value "^2.0.6"
3682
- is-extendable "^0.1.1"
3683
- set-value "^2.0.1"
3684
-
3685
- unique-filename@^1.1.1:
3686
- version "1.1.1"
3687
- resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
3688
- integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
3689
- dependencies:
3690
- unique-slug "^2.0.0"
3691
 
3692
- unique-slug@^2.0.0:
3693
- version "2.0.2"
3694
- resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
3695
- integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
3696
  dependencies:
3697
- imurmurhash "^0.1.4"
 
3698
 
3699
- unset-value@^1.0.0:
3700
- version "1.0.0"
3701
- resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
3702
- integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
3703
- dependencies:
3704
- has-value "^0.3.1"
3705
- isobject "^3.0.0"
3706
 
3707
- upath@^1.1.1:
3708
- version "1.2.0"
3709
- resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
3710
- integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
3711
 
3712
  uri-js@^4.2.2:
3713
  version "4.4.1"
@@ -3716,193 +2004,94 @@ uri-js@^4.2.2:
3716
  dependencies:
3717
  punycode "^2.1.0"
3718
 
3719
- urix@^0.1.0:
3720
- version "0.1.0"
3721
- resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
3722
- integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
3723
-
3724
- url@^0.11.0:
3725
- version "0.11.0"
3726
- resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
3727
- integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
3728
- dependencies:
3729
- punycode "1.3.2"
3730
- querystring "0.2.0"
3731
-
3732
- use@^3.1.0:
3733
- version "3.1.1"
3734
- resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
3735
- integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
3736
-
3737
- util-deprecate@^1.0.1, util-deprecate@~1.0.1:
3738
- version "1.0.2"
3739
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
3740
- integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
3741
-
3742
- util@0.10.3:
3743
- version "0.10.3"
3744
- resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
3745
- integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
3746
- dependencies:
3747
- inherits "2.0.1"
3748
-
3749
- util@^0.11.0:
3750
- version "0.11.1"
3751
- resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61"
3752
- integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
3753
- dependencies:
3754
- inherits "2.0.3"
3755
-
3756
- v8-compile-cache@^2.1.1:
3757
  version "2.3.0"
3758
  resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
3759
  integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
3760
 
3761
- vm-browserify@^1.0.1:
3762
- version "1.1.2"
3763
- resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
3764
- integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
3765
-
3766
- watchpack-chokidar2@^2.0.1:
3767
- version "2.0.1"
3768
- resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957"
3769
- integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==
3770
  dependencies:
3771
- chokidar "^2.1.8"
 
3772
 
3773
- watchpack@^1.7.4:
3774
- version "1.7.5"
3775
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453"
3776
- integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==
3777
  dependencies:
3778
- graceful-fs "^4.1.2"
3779
- neo-async "^2.5.0"
3780
- optionalDependencies:
3781
- chokidar "^3.4.1"
3782
- watchpack-chokidar2 "^2.0.1"
3783
-
3784
- webpack-cli@^3.1.2:
3785
- version "3.3.12"
3786
- resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a"
3787
- integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==
3788
- dependencies:
3789
- chalk "^2.4.2"
3790
- cross-spawn "^6.0.5"
3791
- enhanced-resolve "^4.1.1"
3792
- findup-sync "^3.0.0"
3793
- global-modules "^2.0.0"
3794
- import-local "^2.0.0"
3795
- interpret "^1.4.0"
3796
- loader-utils "^1.4.0"
3797
- supports-color "^6.1.0"
3798
- v8-compile-cache "^2.1.1"
3799
- yargs "^13.3.2"
3800
-
3801
- webpack-sources@^1.4.0, webpack-sources@^1.4.1:
3802
- version "1.4.3"
3803
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
3804
- integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
3805
- dependencies:
3806
- source-list-map "^2.0.0"
3807
- source-map "~0.6.1"
3808
-
3809
- webpack@^4.42.1:
3810
- version "4.46.0"
3811
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542"
3812
- integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==
3813
- dependencies:
3814
- "@webassemblyjs/ast" "1.9.0"
3815
- "@webassemblyjs/helper-module-context" "1.9.0"
3816
- "@webassemblyjs/wasm-edit" "1.9.0"
3817
- "@webassemblyjs/wasm-parser" "1.9.0"
3818
- acorn "^6.4.1"
3819
- ajv "^6.10.2"
3820
- ajv-keywords "^3.4.1"
3821
  chrome-trace-event "^1.0.2"
3822
- enhanced-resolve "^4.5.0"
3823
- eslint-scope "^4.0.3"
 
 
 
 
3824
  json-parse-better-errors "^1.0.2"
3825
- loader-runner "^2.4.0"
3826
- loader-utils "^1.2.3"
3827
- memory-fs "^0.4.1"
3828
- micromatch "^3.1.10"
3829
- mkdirp "^0.5.3"
3830
- neo-async "^2.6.1"
3831
- node-libs-browser "^2.2.1"
3832
- schema-utils "^1.0.0"
3833
- tapable "^1.1.3"
3834
- terser-webpack-plugin "^1.4.3"
3835
- watchpack "^1.7.4"
3836
- webpack-sources "^1.4.1"
3837
-
3838
- which-module@^2.0.0:
3839
- version "2.0.0"
3840
- resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
3841
- integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
3842
-
3843
- which@^1.2.14, which@^1.2.9, which@^1.3.1:
3844
- version "1.3.1"
3845
- resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
3846
- integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
3847
  dependencies:
3848
  isexe "^2.0.0"
3849
 
3850
- worker-farm@^1.7.0:
3851
- version "1.7.0"
3852
- resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
3853
- integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
3854
- dependencies:
3855
- errno "~0.1.7"
3856
-
3857
- wrap-ansi@^5.1.0:
3858
- version "5.1.0"
3859
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
3860
- integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
3861
- dependencies:
3862
- ansi-styles "^3.2.0"
3863
- string-width "^3.0.0"
3864
- strip-ansi "^5.0.0"
3865
-
3866
- wrappy@1:
3867
- version "1.0.2"
3868
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
3869
- integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
3870
-
3871
- xtend@^4.0.0, xtend@~4.0.1:
3872
- version "4.0.2"
3873
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
3874
- integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
3875
-
3876
- y18n@^4.0.0:
3877
- version "4.0.1"
3878
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4"
3879
- integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==
3880
 
3881
- yallist@^3.0.2:
3882
- version "3.1.1"
3883
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
3884
- integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
3885
-
3886
- yargs-parser@^13.1.2:
3887
- version "13.1.2"
3888
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
3889
- integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
3890
- dependencies:
3891
- camelcase "^5.0.0"
3892
- decamelize "^1.2.0"
3893
-
3894
- yargs@^13.3.2:
3895
- version "13.3.2"
3896
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"
3897
- integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
3898
- dependencies:
3899
- cliui "^5.0.0"
3900
- find-up "^3.0.0"
3901
- get-caller-file "^2.0.1"
3902
- require-directory "^2.1.1"
3903
- require-main-filename "^2.0.0"
3904
- set-blocking "^2.0.0"
3905
- string-width "^3.0.0"
3906
- which-module "^2.0.0"
3907
- y18n "^4.0.0"
3908
- yargs-parser "^13.1.2"
2
  # yarn lockfile v1
3
 
4
 
5
+ "@babel/code-frame@^7.14.5":
6
+ version "7.14.5"
7
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb"
8
+ integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==
9
  dependencies:
10
+ "@babel/highlight" "^7.14.5"
11
 
12
+ "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.15.0":
13
+ version "7.15.0"
14
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176"
15
+ integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==
16
 
17
  "@babel/core@^7.9.0":
18
+ version "7.15.5"
19
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9"
20
+ integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==
21
+ dependencies:
22
+ "@babel/code-frame" "^7.14.5"
23
+ "@babel/generator" "^7.15.4"
24
+ "@babel/helper-compilation-targets" "^7.15.4"
25
+ "@babel/helper-module-transforms" "^7.15.4"
26
+ "@babel/helpers" "^7.15.4"
27
+ "@babel/parser" "^7.15.5"
28
+ "@babel/template" "^7.15.4"
29
+ "@babel/traverse" "^7.15.4"
30
+ "@babel/types" "^7.15.4"
31
  convert-source-map "^1.7.0"
32
  debug "^4.1.0"
33
  gensync "^1.0.0-beta.2"
34
  json5 "^2.1.2"
 
35
  semver "^6.3.0"
36
  source-map "^0.5.0"
37
 
38
+ "@babel/generator@^7.15.4":
39
+ version "7.15.4"
40
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0"
41
+ integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==
42
  dependencies:
43
+ "@babel/types" "^7.15.4"
44
  jsesc "^2.5.1"
45
  source-map "^0.5.0"
46
 
47
+ "@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4":
48
+ version "7.15.4"
49
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835"
50
+ integrity sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==
51
  dependencies:
52
+ "@babel/types" "^7.15.4"
53
 
54
+ "@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5":
55
+ version "7.15.4"
56
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz#21ad815f609b84ee0e3058676c33cf6d1670525f"
57
+ integrity sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==
58
  dependencies:
59
+ "@babel/helper-explode-assignable-expression" "^7.15.4"
60
+ "@babel/types" "^7.15.4"
61
 
62
+ "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.15.4":
63
+ version "7.15.4"
64
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9"
65
+ integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==
66
  dependencies:
67
+ "@babel/compat-data" "^7.15.0"
68
+ "@babel/helper-validator-option" "^7.14.5"
69
+ browserslist "^4.16.6"
70
  semver "^6.3.0"
71
 
72
+ "@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.4":
73
+ version "7.15.4"
74
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz#7f977c17bd12a5fba363cb19bea090394bf37d2e"
75
+ integrity sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==
76
  dependencies:
77
+ "@babel/helper-annotate-as-pure" "^7.15.4"
78
+ "@babel/helper-function-name" "^7.15.4"
79
+ "@babel/helper-member-expression-to-functions" "^7.15.4"
80
+ "@babel/helper-optimise-call-expression" "^7.15.4"
81
+ "@babel/helper-replace-supers" "^7.15.4"
82
+ "@babel/helper-split-export-declaration" "^7.15.4"
83
 
84
+ "@babel/helper-create-regexp-features-plugin@^7.14.5":
85
+ version "7.14.5"
86
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4"
87
+ integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==
88
  dependencies:
89
+ "@babel/helper-annotate-as-pure" "^7.14.5"
90
  regexpu-core "^4.7.1"
91
 
92
+ "@babel/helper-define-polyfill-provider@^0.2.2":
93
+ version "0.2.3"
94
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6"
95
+ integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==
96
  dependencies:
97
  "@babel/helper-compilation-targets" "^7.13.0"
98
  "@babel/helper-module-imports" "^7.12.13"
103
  resolve "^1.14.2"
104
  semver "^6.1.2"
105
 
106
+ "@babel/helper-explode-assignable-expression@^7.15.4":
107
+ version "7.15.4"
108
+ resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz#f9aec9d219f271eaf92b9f561598ca6b2682600c"
109
+ integrity sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  dependencies:
111
+ "@babel/types" "^7.15.4"
112
+
113
+ "@babel/helper-function-name@^7.14.5", "@babel/helper-function-name@^7.15.4":
114
+ version "7.15.4"
115
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc"
116
+ integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==
 
 
 
 
 
 
 
 
 
 
117
  dependencies:
118
+ "@babel/helper-get-function-arity" "^7.15.4"
119
+ "@babel/template" "^7.15.4"
120
+ "@babel/types" "^7.15.4"
 
121
 
122
+ "@babel/helper-get-function-arity@^7.15.4":
123
+ version "7.15.4"
124
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b"
125
+ integrity sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==
126
  dependencies:
127
+ "@babel/types" "^7.15.4"
128
+
129
+ "@babel/helper-hoist-variables@^7.15.4":
130
+ version "7.15.4"
131
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df"
132
+ integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==
133
+ dependencies:
134
+ "@babel/types" "^7.15.4"
135
 
136
+ "@babel/helper-member-expression-to-functions@^7.15.4":
137
+ version "7.15.4"
138
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef"
139
+ integrity sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==
140
+ dependencies:
141
+ "@babel/types" "^7.15.4"
142
+
143
+ "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.15.4":
144
+ version "7.15.4"
145
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f"
146
+ integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==
147
+ dependencies:
148
+ "@babel/types" "^7.15.4"
149
+
150
+ "@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4":
151
+ version "7.15.7"
152
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz#7da80c8cbc1f02655d83f8b79d25866afe50d226"
153
+ integrity sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw==
154
+ dependencies:
155
+ "@babel/helper-module-imports" "^7.15.4"
156
+ "@babel/helper-replace-supers" "^7.15.4"
157
+ "@babel/helper-simple-access" "^7.15.4"
158
+ "@babel/helper-split-export-declaration" "^7.15.4"
159
+ "@babel/helper-validator-identifier" "^7.15.7"
160
+ "@babel/template" "^7.15.4"
161
+ "@babel/traverse" "^7.15.4"
162
+ "@babel/types" "^7.15.6"
163
+
164
+ "@babel/helper-optimise-call-expression@^7.15.4":
165
+ version "7.15.4"
166
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171"
167
+ integrity sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==
168
+ dependencies:
169
+ "@babel/types" "^7.15.4"
170
+
171
+ "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
172
+ version "7.14.5"
173
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9"
174
+ integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==
175
+
176
+ "@babel/helper-remap-async-to-generator@^7.14.5", "@babel/helper-remap-async-to-generator@^7.15.4":
177
+ version "7.15.4"
178
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz#2637c0731e4c90fbf58ac58b50b2b5a192fc970f"
179
+ integrity sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==
180
+ dependencies:
181
+ "@babel/helper-annotate-as-pure" "^7.15.4"
182
+ "@babel/helper-wrap-function" "^7.15.4"
183
+ "@babel/types" "^7.15.4"
184
+
185
+ "@babel/helper-replace-supers@^7.14.5", "@babel/helper-replace-supers@^7.15.4":
186
+ version "7.15.4"
187
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a"
188
+ integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==
189
+ dependencies:
190
+ "@babel/helper-member-expression-to-functions" "^7.15.4"
191
+ "@babel/helper-optimise-call-expression" "^7.15.4"
192
+ "@babel/traverse" "^7.15.4"
193
+ "@babel/types" "^7.15.4"
194
+
195
+ "@babel/helper-simple-access@^7.15.4":
196
+ version "7.15.4"
197
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b"
198
+ integrity sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==
199
+ dependencies:
200
+ "@babel/types" "^7.15.4"
201
+
202
+ "@babel/helper-skip-transparent-expression-wrappers@^7.14.5", "@babel/helper-skip-transparent-expression-wrappers@^7.15.4":
203
+ version "7.15.4"
204
+ resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz#707dbdba1f4ad0fa34f9114fc8197aec7d5da2eb"
205
+ integrity sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==
206
+ dependencies:
207
+ "@babel/types" "^7.15.4"
208
+
209
+ "@babel/helper-split-export-declaration@^7.15.4":
210
+ version "7.15.4"
211
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257"
212
+ integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==
213
+ dependencies:
214
+ "@babel/types" "^7.15.4"
215
+
216
+ "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7":
217
+ version "7.15.7"
218
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389"
219
+ integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==
220
+
221
+ "@babel/helper-validator-option@^7.14.5":
222
+ version "7.14.5"
223
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3"
224
+ integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==
225
+
226
+ "@babel/helper-wrap-function@^7.15.4":
227
+ version "7.15.4"
228
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz#6f754b2446cfaf3d612523e6ab8d79c27c3a3de7"
229
+ integrity sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==
230
+ dependencies:
231
+ "@babel/helper-function-name" "^7.15.4"
232
+ "@babel/template" "^7.15.4"
233
+ "@babel/traverse" "^7.15.4"
234
+ "@babel/types" "^7.15.4"
235
+
236
+ "@babel/helpers@^7.15.4":
237
+ version "7.15.4"
238
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43"
239
+ integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==
240
+ dependencies:
241
+ "@babel/template" "^7.15.4"
242
+ "@babel/traverse" "^7.15.4"
243
+ "@babel/types" "^7.15.4"
244
+
245
+ "@babel/highlight@^7.14.5":
246
+ version "7.14.5"
247
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9"
248
+ integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==
249
+ dependencies:
250
+ "@babel/helper-validator-identifier" "^7.14.5"
251
  chalk "^2.0.0"
252
  js-tokens "^4.0.0"
253
 
254
+ "@babel/parser@^7.15.4", "@babel/parser@^7.15.5":
255
+ version "7.15.7"
256
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.7.tgz#0c3ed4a2eb07b165dfa85b3cc45c727334c4edae"
257
+ integrity sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==
258
 
259
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4":
260
+ version "7.15.4"
261
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz#dbdeabb1e80f622d9f0b583efb2999605e0a567e"
262
+ integrity sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==
263
  dependencies:
264
+ "@babel/helper-plugin-utils" "^7.14.5"
265
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4"
266
+ "@babel/plugin-proposal-optional-chaining" "^7.14.5"
267
 
268
+ "@babel/plugin-proposal-async-generator-functions@^7.15.4":
269
+ version "7.15.4"
270
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.4.tgz#f82aabe96c135d2ceaa917feb9f5fca31635277e"
271
+ integrity sha512-2zt2g5vTXpMC3OmK6uyjvdXptbhBXfA77XGrd3gh93zwG8lZYBLOBImiGBEG0RANu3JqKEACCz5CGk73OJROBw==
272
  dependencies:
273
+ "@babel/helper-plugin-utils" "^7.14.5"
274
+ "@babel/helper-remap-async-to-generator" "^7.15.4"
275
  "@babel/plugin-syntax-async-generators" "^7.8.4"
276
 
277
+ "@babel/plugin-proposal-class-properties@^7.14.5":
278
+ version "7.14.5"
279
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e"
280
+ integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==
281
  dependencies:
282
+ "@babel/helper-create-class-features-plugin" "^7.14.5"
283
+ "@babel/helper-plugin-utils" "^7.14.5"
284
 
285
+ "@babel/plugin-proposal-class-static-block@^7.15.4":
286
+ version "7.15.4"
287
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz#3e7ca6128453c089e8b477a99f970c63fc1cb8d7"
288
+ integrity sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==
289
  dependencies:
290
+ "@babel/helper-create-class-features-plugin" "^7.15.4"
291
+ "@babel/helper-plugin-utils" "^7.14.5"
292
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
293
+
294
+ "@babel/plugin-proposal-dynamic-import@^7.14.5":
295
+ version "7.14.5"
296
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz#0c6617df461c0c1f8fff3b47cd59772360101d2c"
297
+ integrity sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==
298
+ dependencies:
299
+ "@babel/helper-plugin-utils" "^7.14.5"
300
  "@babel/plugin-syntax-dynamic-import" "^7.8.3"
301
 
302
+ "@babel/plugin-proposal-export-namespace-from@^7.14.5":
303
+ version "7.14.5"
304
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz#dbad244310ce6ccd083072167d8cea83a52faf76"
305
+ integrity sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==
306
  dependencies:
307
+ "@babel/helper-plugin-utils" "^7.14.5"
308
  "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
309
 
310
+ "@babel/plugin-proposal-json-strings@^7.14.5":
311
+ version "7.14.5"
312
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb"
313
+ integrity sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==
314
  dependencies:
315
+ "@babel/helper-plugin-utils" "^7.14.5"
316
  "@babel/plugin-syntax-json-strings" "^7.8.3"
317
 
318
+ "@babel/plugin-proposal-logical-assignment-operators@^7.14.5":
319
+ version "7.14.5"
320
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz#6e6229c2a99b02ab2915f82571e0cc646a40c738"
321
+ integrity sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==
322
  dependencies:
323
+ "@babel/helper-plugin-utils" "^7.14.5"
324
  "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
325
 
326
+ "@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5":
327
+ version "7.14.5"
328
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6"
329
+ integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==
330
  dependencies:
331
+ "@babel/helper-plugin-utils" "^7.14.5"
332
  "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
333
 
334
+ "@babel/plugin-proposal-numeric-separator@^7.14.5":
335
+ version "7.14.5"
336
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18"
337
+ integrity sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==
338
  dependencies:
339
+ "@babel/helper-plugin-utils" "^7.14.5"
340
  "@babel/plugin-syntax-numeric-separator" "^7.10.4"
341
 
342
+ "@babel/plugin-proposal-object-rest-spread@^7.15.6":
343
+ version "7.15.6"
344
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz#ef68050c8703d07b25af402cb96cf7f34a68ed11"
345
+ integrity sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==
346
  dependencies:
347
+ "@babel/compat-data" "^7.15.0"
348
+ "@babel/helper-compilation-targets" "^7.15.4"
349
+ "@babel/helper-plugin-utils" "^7.14.5"
350
  "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
351
+ "@babel/plugin-transform-parameters" "^7.15.4"
352
 
353
+ "@babel/plugin-proposal-optional-catch-binding@^7.14.5":
354
+ version "7.14.5"
355
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c"
356
+ integrity sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==
357
  dependencies:
358
+ "@babel/helper-plugin-utils" "^7.14.5"
359
  "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
360
 
361
+ "@babel/plugin-proposal-optional-chaining@^7.14.5":
362
+ version "7.14.5"
363
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603"
364
+ integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==
365
  dependencies:
366
+ "@babel/helper-plugin-utils" "^7.14.5"
367
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5"
368
  "@babel/plugin-syntax-optional-chaining" "^7.8.3"
369
 
370
+ "@babel/plugin-proposal-private-methods@^7.14.5":
371
+ version "7.14.5"
372
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d"
373
+ integrity sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==
374
  dependencies:
375
+ "@babel/helper-create-class-features-plugin" "^7.14.5"
376
+ "@babel/helper-plugin-utils" "^7.14.5"
377
 
378
+ "@babel/plugin-proposal-private-property-in-object@^7.15.4":
379
+ version "7.15.4"
380
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz#55c5e3b4d0261fd44fe637e3f624cfb0f484e3e5"
381
+ integrity sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==
382
  dependencies:
383
+ "@babel/helper-annotate-as-pure" "^7.15.4"
384
+ "@babel/helper-create-class-features-plugin" "^7.15.4"
385
+ "@babel/helper-plugin-utils" "^7.14.5"
386
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
387
+
388
+ "@babel/plugin-proposal-unicode-property-regex@^7.14.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
389
+ version "7.14.5"
390
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8"
391
+ integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==
392
+ dependencies:
393
+ "@babel/helper-create-regexp-features-plugin" "^7.14.5"
394
+ "@babel/helper-plugin-utils" "^7.14.5"
395
 
396
  "@babel/plugin-syntax-async-generators@^7.8.4":
397
  version "7.8.4"
407
  dependencies:
408
  "@babel/helper-plugin-utils" "^7.12.13"
409
 
410
+ "@babel/plugin-syntax-class-static-block@^7.14.5":
411
+ version "7.14.5"
412
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406"
413
+ integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==
414
+ dependencies:
415
+ "@babel/helper-plugin-utils" "^7.14.5"
416
+
417
  "@babel/plugin-syntax-dynamic-import@^7.8.3":
418
  version "7.8.3"
419
  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
477
  dependencies:
478
  "@babel/helper-plugin-utils" "^7.8.0"
479
 
480
+ "@babel/plugin-syntax-private-property-in-object@^7.14.5":
481
+ version "7.14.5"
482
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad"
483
+ integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==
484
  dependencies:
485
+ "@babel/helper-plugin-utils" "^7.14.5"
486
 
487
+ "@babel/plugin-syntax-top-level-await@^7.14.5":
488
+ version "7.14.5"
489
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
490
+ integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
491
  dependencies:
492
+ "@babel/helper-plugin-utils" "^7.14.5"
493
 
494
+ "@babel/plugin-transform-arrow-functions@^7.14.5":
495
+ version "7.14.5"
496
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a"
497
+ integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==
498
  dependencies:
499
+ "@babel/helper-plugin-utils" "^7.14.5"
 
 
500
 
501
+ "@babel/plugin-transform-async-to-generator@^7.14.5":
502
+ version "7.14.5"
503
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67"
504
+ integrity sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==
505
  dependencies:
506
+ "@babel/helper-module-imports" "^7.14.5"
507
+ "@babel/helper-plugin-utils" "^7.14.5"
508
+ "@babel/helper-remap-async-to-generator" "^7.14.5"
509
 
510
+ "@babel/plugin-transform-block-scoped-functions@^7.14.5":
511
+ version "7.14.5"
512
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4"
513
+ integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==
514
  dependencies:
515
+ "@babel/helper-plugin-utils" "^7.14.5"
516
 
517
+ "@babel/plugin-transform-block-scoping@^7.15.3":
518
+ version "7.15.3"
519
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf"
520
+ integrity sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==
521
  dependencies:
522
+ "@babel/helper-plugin-utils" "^7.14.5"
523
+
524
+ "@babel/plugin-transform-classes@^7.15.4":
525
+ version "7.15.4"
526
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz#50aee17aaf7f332ae44e3bce4c2e10534d5d3bf1"
527
+ integrity sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==
528
+ dependencies:
529
+ "@babel/helper-annotate-as-pure" "^7.15.4"
530
+ "@babel/helper-function-name" "^7.15.4"
531
+ "@babel/helper-optimise-call-expression" "^7.15.4"
532
+ "@babel/helper-plugin-utils" "^7.14.5"
533
+ "@babel/helper-replace-supers" "^7.15.4"
534
+ "@babel/helper-split-export-declaration" "^7.15.4"
535
  globals "^11.1.0"
536
 
537
+ "@babel/plugin-transform-computed-properties@^7.14.5":
538
+ version "7.14.5"
539
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f"
540
+ integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==
541
  dependencies:
542
+ "@babel/helper-plugin-utils" "^7.14.5"
543
 
544
+ "@babel/plugin-transform-destructuring@^7.14.7":
545
+ version "7.14.7"
546
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576"
547
+ integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==
548
  dependencies:
549
+ "@babel/helper-plugin-utils" "^7.14.5"
550
 
551
+ "@babel/plugin-transform-dotall-regex@^7.14.5", "@babel/plugin-transform-dotall-regex@^7.4.4":
552
+ version "7.14.5"
553
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a"
554
+ integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==
555
  dependencies:
556
+ "@babel/helper-create-regexp-features-plugin" "^7.14.5"
557
+ "@babel/helper-plugin-utils" "^7.14.5"
558
 
559
+ "@babel/plugin-transform-duplicate-keys@^7.14.5":
560
+ version "7.14.5"
561
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954"
562
+ integrity sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==
563
  dependencies:
564
+ "@babel/helper-plugin-utils" "^7.14.5"
565
 
566
+ "@babel/plugin-transform-exponentiation-operator@^7.14.5":
567
+ version "7.14.5"
568
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493"
569
+ integrity sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==
570
  dependencies:
571
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5"
572
+ "@babel/helper-plugin-utils" "^7.14.5"
573
 
574
+ "@babel/plugin-transform-for-of@^7.15.4":
575
+ version "7.15.4"
576
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz#25c62cce2718cfb29715f416e75d5263fb36a8c2"
577
+ integrity sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==
578
  dependencies:
579
+ "@babel/helper-plugin-utils" "^7.14.5"
580
 
581
+ "@babel/plugin-transform-function-name@^7.14.5":
582
+ version "7.14.5"
583
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2"
584
+ integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==
585
  dependencies:
586
+ "@babel/helper-function-name" "^7.14.5"
587
+ "@babel/helper-plugin-utils" "^7.14.5"
588
 
589
+ "@babel/plugin-transform-literals@^7.14.5":
590
+ version "7.14.5"
591
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78"
592
+ integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==
593
  dependencies:
594
+ "@babel/helper-plugin-utils" "^7.14.5"
595
 
596
+ "@babel/plugin-transform-member-expression-literals@^7.14.5":
597
+ version "7.14.5"
598
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7"
599
+ integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==
600
  dependencies:
601
+ "@babel/helper-plugin-utils" "^7.14.5"
602
 
603
+ "@babel/plugin-transform-modules-amd@^7.14.5":
604
+ version "7.14.5"
605
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7"
606
+ integrity sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==
607
  dependencies:
608
+ "@babel/helper-module-transforms" "^7.14.5"
609
+ "@babel/helper-plugin-utils" "^7.14.5"
610
  babel-plugin-dynamic-import-node "^2.3.3"
611
 
612
+ "@babel/plugin-transform-modules-commonjs@^7.15.4":
613
+ version "7.15.4"
614
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz#8201101240eabb5a76c08ef61b2954f767b6b4c1"
615
+ integrity sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==
616
  dependencies:
617
+ "@babel/helper-module-transforms" "^7.15.4"
618
+ "@babel/helper-plugin-utils" "^7.14.5"
619
+ "@babel/helper-simple-access" "^7.15.4"
620
  babel-plugin-dynamic-import-node "^2.3.3"
621
 
622
+ "@babel/plugin-transform-modules-systemjs@^7.15.4":
623
+ version "7.15.4"
624
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz#b42890c7349a78c827719f1d2d0cd38c7d268132"
625
+ integrity sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==
626
  dependencies:
627
+ "@babel/helper-hoist-variables" "^7.15.4"
628
+ "@babel/helper-module-transforms" "^7.15.4"
629
+ "@babel/helper-plugin-utils" "^7.14.5"
630
+ "@babel/helper-validator-identifier" "^7.14.9"
631
  babel-plugin-dynamic-import-node "^2.3.3"
632
 
633
+ "@babel/plugin-transform-modules-umd@^7.14.5":
634
+ version "7.14.5"
635
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0"
636
+ integrity sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==
637
  dependencies:
638
+ "@babel/helper-module-transforms" "^7.14.5"
639
+ "@babel/helper-plugin-utils" "^7.14.5"
640
 
641
+ "@babel/plugin-transform-named-capturing-groups-regex@^7.14.9":
642
+ version "7.14.9"
643
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz#c68f5c5d12d2ebaba3762e57c2c4f6347a46e7b2"
644
+ integrity sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==
645
  dependencies:
646
+ "@babel/helper-create-regexp-features-plugin" "^7.14.5"
647
 
648
+ "@babel/plugin-transform-new-target@^7.14.5":
649
+ version "7.14.5"
650
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8"
651
+ integrity sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==
652
  dependencies:
653
+ "@babel/helper-plugin-utils" "^7.14.5"
654
 
655
+ "@babel/plugin-transform-object-super@^7.14.5":
656
+ version "7.14.5"
657
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45"
658
+ integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==
659
  dependencies:
660
+ "@babel/helper-plugin-utils" "^7.14.5"
661
+ "@babel/helper-replace-supers" "^7.14.5"
662
 
663
+ "@babel/plugin-transform-parameters@^7.15.4":
664
+ version "7.15.4"
665
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz#5f2285cc3160bf48c8502432716b48504d29ed62"
666
+ integrity sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==
667
  dependencies:
668
+ "@babel/helper-plugin-utils" "^7.14.5"
669
 
670
+ "@babel/plugin-transform-property-literals@^7.14.5":
671
+ version "7.14.5"
672
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34"
673
+ integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==
674
  dependencies:
675
+ "@babel/helper-plugin-utils" "^7.14.5"
676
 
677
+ "@babel/plugin-transform-regenerator@^7.14.5":
678
+ version "7.14.5"
679
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz#9676fd5707ed28f522727c5b3c0aa8544440b04f"
680
+ integrity sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==
681
  dependencies:
682
  regenerator-transform "^0.14.2"
683
 
684
+ "@babel/plugin-transform-reserved-words@^7.14.5":
685
+ version "7.14.5"
686
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304"
687
+ integrity sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==
688
  dependencies:
689
+ "@babel/helper-plugin-utils" "^7.14.5"
690
 
691
+ "@babel/plugin-transform-shorthand-properties@^7.14.5":
692
+ version "7.14.5"
693
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58"
694
+ integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==
695
  dependencies:
696
+ "@babel/helper-plugin-utils" "^7.14.5"
697
 
698
+ "@babel/plugin-transform-spread@^7.14.6":
699
+ version "7.14.6"
700
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz#6bd40e57fe7de94aa904851963b5616652f73144"
701
+ integrity sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag==
702
  dependencies:
703
+ "@babel/helper-plugin-utils" "^7.14.5"
704
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5"
705
 
706
+ "@babel/plugin-transform-sticky-regex@^7.14.5":
707
+ version "7.14.5"
708
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9"
709
+ integrity sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==
710
  dependencies:
711
+ "@babel/helper-plugin-utils" "^7.14.5"
712
 
713
+ "@babel/plugin-transform-template-literals@^7.14.5":
714
+ version "7.14.5"
715
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93"
716
+ integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==
717
  dependencies:
718
+ "@babel/helper-plugin-utils" "^7.14.5"
719
 
720
+ "@babel/plugin-transform-typeof-symbol@^7.14.5":
721
+ version "7.14.5"
722
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4"
723
+ integrity sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==
724
  dependencies:
725
+ "@babel/helper-plugin-utils" "^7.14.5"
726
 
727
+ "@babel/plugin-transform-unicode-escapes@^7.14.5":
728
+ version "7.14.5"
729
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b"
730
+ integrity sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==
731
  dependencies:
732
+ "@babel/helper-plugin-utils" "^7.14.5"
733
 
734
+ "@babel/plugin-transform-unicode-regex@^7.14.5":
735
+ version "7.14.5"
736
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e"
737
+ integrity sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==
738
  dependencies:
739
+ "@babel/helper-create-regexp-features-plugin" "^7.14.5"
740
+ "@babel/helper-plugin-utils" "^7.14.5"
741
 
742
  "@babel/preset-env@^7.9.5":
743
+ version "7.15.6"
744
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.6.tgz#0f3898db9d63d320f21b17380d8462779de57659"
745
+ integrity sha512-L+6jcGn7EWu7zqaO2uoTDjjMBW+88FXzV8KvrBl2z6MtRNxlsmUNRlZPaNNPUTgqhyC5DHNFk/2Jmra+ublZWw==
746
+ dependencies:
747
+ "@babel/compat-data" "^7.15.0"
748
+ "@babel/helper-compilation-targets" "^7.15.4"
749
+ "@babel/helper-plugin-utils" "^7.14.5"
750
+ "@babel/helper-validator-option" "^7.14.5"
751
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.15.4"
752
+ "@babel/plugin-proposal-async-generator-functions" "^7.15.4"
753
+ "@babel/plugin-proposal-class-properties" "^7.14.5"
754
+ "@babel/plugin-proposal-class-static-block" "^7.15.4"
755
+ "@babel/plugin-proposal-dynamic-import" "^7.14.5"
756
+ "@babel/plugin-proposal-export-namespace-from" "^7.14.5"
757
+ "@babel/plugin-proposal-json-strings" "^7.14.5"
758
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5"
759
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5"
760
+ "@babel/plugin-proposal-numeric-separator" "^7.14.5"
761
+ "@babel/plugin-proposal-object-rest-spread" "^7.15.6"
762
+ "@babel/plugin-proposal-optional-catch-binding" "^7.14.5"
763
+ "@babel/plugin-proposal-optional-chaining" "^7.14.5"
764
+ "@babel/plugin-proposal-private-methods" "^7.14.5"
765
+ "@babel/plugin-proposal-private-property-in-object" "^7.15.4"
766
+ "@babel/plugin-proposal-unicode-property-regex" "^7.14.5"
767
  "@babel/plugin-syntax-async-generators" "^7.8.4"
768
  "@babel/plugin-syntax-class-properties" "^7.12.13"
769
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
770
  "@babel/plugin-syntax-dynamic-import" "^7.8.3"
771
  "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
772
  "@babel/plugin-syntax-json-strings" "^7.8.3"
776
  "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
777
  "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
778
  "@babel/plugin-syntax-optional-chaining" "^7.8.3"
779
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
780
+ "@babel/plugin-syntax-top-level-await" "^7.14.5"
781
+ "@babel/plugin-transform-arrow-functions" "^7.14.5"
782
+ "@babel/plugin-transform-async-to-generator" "^7.14.5"
783
+ "@babel/plugin-transform-block-scoped-functions" "^7.14.5"
784
+ "@babel/plugin-transform-block-scoping" "^7.15.3"
785
+ "@babel/plugin-transform-classes" "^7.15.4"
786
+ "@babel/plugin-transform-computed-properties" "^7.14.5"
787
+ "@babel/plugin-transform-destructuring" "^7.14.7"
788
+ "@babel/plugin-transform-dotall-regex" "^7.14.5"
789
+ "@babel/plugin-transform-duplicate-keys" "^7.14.5"
790
+ "@babel/plugin-transform-exponentiation-operator" "^7.14.5"
791
+ "@babel/plugin-transform-for-of" "^7.15.4"
792
+ "@babel/plugin-transform-function-name" "^7.14.5"
793
+ "@babel/plugin-transform-literals" "^7.14.5"
794
+ "@babel/plugin-transform-member-expression-literals" "^7.14.5"
795
+ "@babel/plugin-transform-modules-amd" "^7.14.5"
796
+ "@babel/plugin-transform-modules-commonjs" "^7.15.4"
797
+ "@babel/plugin-transform-modules-systemjs" "^7.15.4"
798
+ "@babel/plugin-transform-modules-umd" "^7.14.5"
799
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.9"
800
+ "@babel/plugin-transform-new-target" "^7.14.5"
801
+ "@babel/plugin-transform-object-super" "^7.14.5"
802
+ "@babel/plugin-transform-parameters" "^7.15.4"
803
+ "@babel/plugin-transform-property-literals" "^7.14.5"
804
+ "@babel/plugin-transform-regenerator" "^7.14.5"
805
+ "@babel/plugin-transform-reserved-words" "^7.14.5"
806
+ "@babel/plugin-transform-shorthand-properties" "^7.14.5"
807
+ "@babel/plugin-transform-spread" "^7.14.6"
808
+ "@babel/plugin-transform-sticky-regex" "^7.14.5"
809
+ "@babel/plugin-transform-template-literals" "^7.14.5"
810
+ "@babel/plugin-transform-typeof-symbol" "^7.14.5"
811
+ "@babel/plugin-transform-unicode-escapes" "^7.14.5"
812
+ "@babel/plugin-transform-unicode-regex" "^7.14.5"
813
  "@babel/preset-modules" "^0.1.4"
814
+ "@babel/types" "^7.15.6"
815
+ babel-plugin-polyfill-corejs2 "^0.2.2"
816
+ babel-plugin-polyfill-corejs3 "^0.2.2"
817
+ babel-plugin-polyfill-regenerator "^0.2.2"
818
+ core-js-compat "^3.16.0"
819
  semver "^6.3.0"
820
 
821
  "@babel/preset-modules@^0.1.4":
830
  esutils "^2.0.2"
831
 
832
  "@babel/runtime@^7.8.4":
833
+ version "7.15.4"
834
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a"
835
+ integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==
836
  dependencies:
837
  regenerator-runtime "^0.13.4"
838
 
839
+ "@babel/template@^7.15.4":
840
+ version "7.15.4"
841
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194"
842
+ integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==
843
+ dependencies:
844
+ "@babel/code-frame" "^7.14.5"
845
+ "@babel/parser" "^7.15.4"
846
+ "@babel/types" "^7.15.4"
847
+
848
+ "@babel/traverse@^7.13.0", "@babel/traverse@^7.15.4":
849
+ version "7.15.4"
850
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d"
851
+ integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==
852
+ dependencies:
853
+ "@babel/code-frame" "^7.14.5"
854
+ "@babel/generator" "^7.15.4"
855
+ "@babel/helper-function-name" "^7.15.4"
856
+ "@babel/helper-hoist-variables" "^7.15.4"
857
+ "@babel/helper-split-export-declaration" "^7.15.4"
858
+ "@babel/parser" "^7.15.4"
859
+ "@babel/types" "^7.15.4"
860
  debug "^4.1.0"
861
  globals "^11.1.0"
862
 
863
+ "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.4.4":
864
+ version "7.15.6"
865
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f"
866
+ integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==
867
  dependencies:
868
+ "@babel/helper-validator-identifier" "^7.14.9"
 
869
  to-fast-properties "^2.0.0"
870
 
871
+ "@discoveryjs/json-ext@^0.5.0":
872
+ version "0.5.5"
873
+ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz#9283c9ce5b289a3c4f61c12757469e59377f81f3"
874
+ integrity sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==
875
+
876
+ "@types/eslint-scope@^3.7.0":
877
+ version "3.7.1"
878
+ resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.1.tgz#8dc390a7b4f9dd9f1284629efce982e41612116e"
879
+ integrity sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==
880
+ dependencies:
881
+ "@types/eslint" "*"
882
+ "@types/estree" "*"
883
+
884
+ "@types/eslint@*":
885
+ version "7.28.0"
886
+ resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.0.tgz#7e41f2481d301c68e14f483fe10b017753ce8d5a"
887
+ integrity sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==
888
+ dependencies:
889
+ "@types/estree" "*"
890
+ "@types/json-schema" "*"
891
+
892
+ "@types/estree@*", "@types/estree@^0.0.50":
893
+ version "0.0.50"
894
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83"
895
+ integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==
896
+
897
+ "@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8":
898
+ version "7.0.9"
899
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
900
+ integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
901
+
902
+ "@types/node@*":
903
+ version "16.10.1"
904
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.1.tgz#f3647623199ca920960006b3dccf633ea905f243"
905
+ integrity sha512-4/Z9DMPKFexZj/Gn3LylFgamNKHm4K3QDi0gz9B26Uk0c8izYf97B5fxfpspMNkWlFupblKM/nV8+NA9Ffvr+w==
906
+
907
+ "@webassemblyjs/ast@1.11.1":
908
+ version "1.11.1"
909
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
910
+ integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==
911
+ dependencies:
912
+ "@webassemblyjs/helper-numbers" "1.11.1"
913
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
914
+
915
+ "@webassemblyjs/floating-point-hex-parser@1.11.1":
916
+ version "1.11.1"
917
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f"
918
+ integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==
919
+
920
+ "@webassemblyjs/helper-api-error@1.11.1":
921
+ version "1.11.1"
922
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16"
923
+ integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==
924
+
925
+ "@webassemblyjs/helper-buffer@1.11.1":
926
+ version "1.11.1"
927
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5"
928
+ integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==
929
+
930
+ "@webassemblyjs/helper-numbers@1.11.1":
931
+ version "1.11.1"
932
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae"
933
+ integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==
934
+ dependencies:
935
+ "@webassemblyjs/floating-point-hex-parser" "1.11.1"
936
+ "@webassemblyjs/helper-api-error" "1.11.1"
937
+ "@xtuc/long" "4.2.2"
938
+
939
+ "@webassemblyjs/helper-wasm-bytecode@1.11.1":
940
+ version "1.11.1"
941
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1"
942
+ integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==
943
+
944
+ "@webassemblyjs/helper-wasm-section@1.11.1":
945
+ version "1.11.1"
946
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a"
947
+ integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==
948
+ dependencies:
949
+ "@webassemblyjs/ast" "1.11.1"
950
+ "@webassemblyjs/helper-buffer" "1.11.1"
951
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
952
+ "@webassemblyjs/wasm-gen" "1.11.1"
953
+
954
+ "@webassemblyjs/ieee754@1.11.1":
955
+ version "1.11.1"
956
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614"
957
+ integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==
958
  dependencies:
959
  "@xtuc/ieee754" "^1.2.0"
960
 
961
+ "@webassemblyjs/leb128@1.11.1":
962
+ version "1.11.1"
963
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5"
964
+ integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==
965
  dependencies:
966
  "@xtuc/long" "4.2.2"
967
 
968
+ "@webassemblyjs/utf8@1.11.1":
969
+ version "1.11.1"
970
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff"
971
+ integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==
972
+
973
+ "@webassemblyjs/wasm-edit@1.11.1":
974
+ version "1.11.1"
975
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6"
976
+ integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==
977
+ dependencies:
978
+ "@webassemblyjs/ast" "1.11.1"
979
+ "@webassemblyjs/helper-buffer" "1.11.1"
980
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
981
+ "@webassemblyjs/helper-wasm-section" "1.11.1"
982
+ "@webassemblyjs/wasm-gen" "1.11.1"
983
+ "@webassemblyjs/wasm-opt" "1.11.1"
984
+ "@webassemblyjs/wasm-parser" "1.11.1"
985
+ "@webassemblyjs/wast-printer" "1.11.1"
986
+
987
+ "@webassemblyjs/wasm-gen@1.11.1":
988
+ version "1.11.1"
989
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76"
990
+ integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==
991
+ dependencies:
992
+ "@webassemblyjs/ast" "1.11.1"
993
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
994
+ "@webassemblyjs/ieee754" "1.11.1"
995
+ "@webassemblyjs/leb128" "1.11.1"
996
+ "@webassemblyjs/utf8" "1.11.1"
997
+
998
+ "@webassemblyjs/wasm-opt@1.11.1":
999
+ version "1.11.1"
1000
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2"
1001
+ integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==
1002
+ dependencies:
1003
+ "@webassemblyjs/ast" "1.11.1"
1004
+ "@webassemblyjs/helper-buffer" "1.11.1"
1005
+ "@webassemblyjs/wasm-gen" "1.11.1"
1006
+ "@webassemblyjs/wasm-parser" "1.11.1"
1007
+
1008
+ "@webassemblyjs/wasm-parser@1.11.1":
1009
+ version "1.11.1"
1010
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199"
1011
+ integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==
1012
+ dependencies:
1013
+ "@webassemblyjs/ast" "1.11.1"
1014
+ "@webassemblyjs/helper-api-error" "1.11.1"
1015
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
1016
+ "@webassemblyjs/ieee754" "1.11.1"
1017
+ "@webassemblyjs/leb128" "1.11.1"
1018
+ "@webassemblyjs/utf8" "1.11.1"
1019
+
1020
+ "@webassemblyjs/wast-printer@1.11.1":
1021
+ version "1.11.1"
1022
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0"
1023
+ integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==
1024
+ dependencies:
1025
+ "@webassemblyjs/ast" "1.11.1"
 
 
 
 
1026
  "@xtuc/long" "4.2.2"
1027
 
1028
+ "@webpack-cli/configtest@^1.0.4":
1029
+ version "1.0.4"
1030
+ resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.4.tgz#f03ce6311c0883a83d04569e2c03c6238316d2aa"
1031
+ integrity sha512-cs3XLy+UcxiP6bj0A6u7MLLuwdXJ1c3Dtc0RkKg+wiI1g/Ti1om8+/2hc2A2B60NbBNAbMgyBMHvyymWm/j4wQ==
1032
+
1033
+ "@webpack-cli/info@^1.3.0":
1034
+ version "1.3.0"
1035
+ resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.3.0.tgz#9d78a31101a960997a4acd41ffd9b9300627fe2b"
1036
+ integrity sha512-ASiVB3t9LOKHs5DyVUcxpraBXDOKubYu/ihHhU+t1UPpxsivg6Od2E2qU4gJCekfEddzRBzHhzA/Acyw/mlK/w==
1037
  dependencies:
1038
+ envinfo "^7.7.3"
1039
+
1040
+ "@webpack-cli/serve@^1.5.2":
1041
+ version "1.5.2"
1042
+ resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.5.2.tgz#ea584b637ff63c5a477f6f21604b5a205b72c9ec"
1043
+ integrity sha512-vgJ5OLWadI8aKjDlOH3rb+dYyPd2GTZuQC/Tihjct6F9GpXGZINo3Y/IVuZVTM1eDQB+/AOsjPUWH/WySDaXvw==
1044
 
1045
  "@xtuc/ieee754@^1.2.0":
1046
  version "1.2.0"
1052
  resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
1053
  integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
1054
 
1055
+ acorn-import-assertions@^1.7.6:
1056
+ version "1.7.6"
1057
+ resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz#580e3ffcae6770eebeec76c3b9723201e9d01f78"
1058
+ integrity sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA==
1059
 
1060
+ acorn@^8.4.1:
1061
+ version "8.5.0"
1062
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2"
1063
+ integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==
1064
 
1065
+ ajv-keywords@^3.5.2:
1066
  version "3.5.2"
1067
  resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
1068
  integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
1069
 
1070
+ ajv@^6.12.4, ajv@^6.12.5:
1071
  version "6.12.6"
1072
  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
1073
  integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
1077
  json-schema-traverse "^0.4.1"
1078
  uri-js "^4.2.2"
1079
 
1080
+ ansi-styles@^3.2.1:
 
 
 
 
 
1081
  version "3.2.1"
1082
  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
1083
  integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
1084
  dependencies:
1085
  color-convert "^1.9.0"
1086
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1087
  babel-loader@^8.1.0:
1088
  version "8.2.2"
1089
  resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81"
1101
  dependencies:
1102
  object.assign "^4.1.0"
1103
 
1104
+ babel-plugin-polyfill-corejs2@^0.2.2:
1105
+ version "0.2.2"
1106
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327"
1107
+ integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==
1108
  dependencies:
1109
+ "@babel/compat-data" "^7.13.11"
1110
+ "@babel/helper-define-polyfill-provider" "^0.2.2"
1111
  semver "^6.1.1"
1112
 
1113
+ babel-plugin-polyfill-corejs3@^0.2.2:
1114
+ version "0.2.5"
1115
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz#2779846a16a1652244ae268b1e906ada107faf92"
1116
+ integrity sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==
1117
  dependencies:
1118
+ "@babel/helper-define-polyfill-provider" "^0.2.2"
1119
+ core-js-compat "^3.16.2"
1120
 
1121
+ babel-plugin-polyfill-regenerator@^0.2.2:
1122
+ version "0.2.2"
1123
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077"
1124
+ integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==
1125
  dependencies:
1126
+ "@babel/helper-define-polyfill-provider" "^0.2.2"
1127
 
1128
  babel-plugin-syntax-object-rest-spread@^6.8.0:
1129
  version "6.13.0"
1146
  core-js "^2.4.0"
1147
  regenerator-runtime "^0.11.0"
1148
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1149
  big.js@^5.2.2:
1150
  version "5.2.2"
1151
  resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
1152
  integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
1153
 
1154
+ browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.1:
1155
+ version "4.17.1"
1156
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.1.tgz#a98d104f54af441290b7d592626dd541fa642eb9"
1157
+ integrity sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1158
  dependencies:
1159
+ caniuse-lite "^1.0.30001259"
1160
+ electron-to-chromium "^1.3.846"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1161
  escalade "^3.1.1"
1162
+ nanocolors "^0.1.5"
1163
+ node-releases "^1.1.76"
1164
 
1165
  buffer-from@^1.0.0:
1166
+ version "1.1.2"
1167
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
1168
+ integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1169
 
1170
  call-bind@^1.0.0:
1171
  version "1.0.2"
1175
  function-bind "^1.1.1"
1176
  get-intrinsic "^1.0.2"
1177
 
1178
+ caniuse-lite@^1.0.30001259:
1179
+ version "1.0.30001261"
1180
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001261.tgz#96d89813c076ea061209a4e040d8dcf0c66a1d01"
1181
+ integrity sha512-vM8D9Uvp7bHIN0fZ2KQ4wnmYFpJo/Etb4Vwsuc+ka0tfGDHvOPrFm6S/7CCNLSOkAUjenT2HnUPESdOIL91FaA==
1182
 
1183
+ chalk@^2.0.0:
 
 
 
 
 
1184
  version "2.4.2"
1185
  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
1186
  integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
1189
  escape-string-regexp "^1.0.5"
1190
  supports-color "^5.3.0"
1191
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1192
  chrome-trace-event@^1.0.2:
1193
+ version "1.0.3"
1194
+ resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
1195
+ integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1196
 
1197
+ clone-deep@^4.0.1:
1198
+ version "4.0.1"
1199
+ resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
1200
+ integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==
1201
  dependencies:
1202
+ is-plain-object "^2.0.4"
1203
+ kind-of "^6.0.2"
1204
+ shallow-clone "^3.0.0"
1205
 
1206
  color-convert@^1.9.0:
1207
  version "1.9.3"
1216
  integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
1217
 
1218
  colorette@^1.2.1:
1219
+ version "1.4.0"
1220
+ resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40"
1221
+ integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==
1222
 
1223
  commander@^2.20.0:
1224
  version "2.20.3"
1225
  resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
1226
  integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
1227
 
1228
+ commander@^7.0.0:
1229
+ version "7.2.0"
1230
+ resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
1231
+ integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
1232
+
1233
  commondir@^1.0.1:
1234
  version "1.0.1"
1235
  resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
1236
  integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
1237
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1238
  convert-source-map@^1.7.0:
1239
+ version "1.8.0"
1240
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369"
1241
+ integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==
1242
  dependencies:
1243
  safe-buffer "~5.1.1"
1244
 
1245
+ core-js-compat@^3.16.0, core-js-compat@^3.16.2:
1246
+ version "3.18.1"
1247
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.18.1.tgz#01942a0877caf9c6e5007c027183cf0bdae6a191"
1248
+ integrity sha512-XJMYx58zo4W0kLPmIingVZA10+7TuKrMLPt83+EzDmxFJQUMcTVVmQ+n5JP4r6Z14qSzhQBRi3NSWoeVyKKXUg==
1249
+ dependencies:
1250
+ browserslist "^4.17.1"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1251
  semver "7.0.0"
1252
 
1253
  core-js@^2.4.0:
1255
  resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
1256
  integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
1257
 
1258
+ cross-env@^7.0.3:
1259
+ version "7.0.3"
1260
+ resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf"
1261
+ integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==
 
 
 
 
 
1262
  dependencies:
1263
+ cross-spawn "^7.0.1"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1264
 
1265
+ cross-spawn@^7.0.1, cross-spawn@^7.0.3:
1266
+ version "7.0.3"
1267
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
1268
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
1269
  dependencies:
1270
+ path-key "^3.1.0"
1271
+ shebang-command "^2.0.0"
1272
+ which "^2.0.1"
1273
 
1274
  debug@^4.1.0, debug@^4.1.1:
1275
+ version "4.3.2"
1276
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
1277
+ integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
1278
  dependencies:
1279
  ms "2.1.2"
1280
 
 
 
 
 
 
 
 
 
 
 
1281
  define-properties@^1.1.3:
1282
  version "1.1.3"
1283
  resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
1285
  dependencies:
1286
  object-keys "^1.0.12"
1287
 
1288
+ electron-to-chromium@^1.3.846:
1289
+ version "1.3.853"
1290
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.853.tgz#f3ed1d31f092cb3a17af188bca6c6a3ec91c3e82"
1291
+ integrity sha512-W4U8n+U8I5/SUaFcqZgbKRmYZwcyEIQVBDf+j5QQK6xChjXnQD+wj248eGR9X4u+dDmDR//8vIfbu4PrdBBIoQ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1292
 
1293
  emojis-list@^3.0.0:
1294
  version "3.0.0"
1295
  resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
1296
  integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
1297
 
1298
+ enhanced-resolve@^5.8.3:
1299
+ version "5.8.3"
1300
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0"
1301
+ integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==
1302
  dependencies:
1303
+ graceful-fs "^4.2.4"
1304
+ tapable "^2.2.0"
1305
 
1306
+ envinfo@^7.7.3:
1307
+ version "7.8.1"
1308
+ resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475"
1309
+ integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==
 
 
 
 
1310
 
1311
+ es-module-lexer@^0.9.0:
1312
+ version "0.9.1"
1313
+ resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.1.tgz#f203bf394a630a552d381acf01a17ef08843b140"
1314
+ integrity sha512-17Ed9misDnpyNBJh63g1OhW3qUFecDgGOivI85JeZY/LGhDum8e+cltukbkSK8pcJnXXEkya56sp4vSS1nzoUw==
 
 
1315
 
1316
  escalade@^3.1.1:
1317
  version "3.1.1"
1323
  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
1324
  integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
1325
 
1326
+ eslint-scope@5.1.1:
1327
+ version "5.1.1"
1328
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
1329
+ integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
1330
  dependencies:
1331
+ esrecurse "^4.3.0"
1332
  estraverse "^4.1.1"
1333
 
1334
+ esrecurse@^4.3.0:
1335
  version "4.3.0"
1336
  resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
1337
  integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
1353
  resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
1354
  integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
1355
 
1356
+ events@^3.2.0:
1357
  version "3.3.0"
1358
  resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
1359
  integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
1360
 
1361
+ execa@^5.0.0:
1362
+ version "5.1.1"
1363
+ resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
1364
+ integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
1365
+ dependencies:
1366
+ cross-spawn "^7.0.3"
1367
+ get-stream "^6.0.0"
1368
+ human-signals "^2.1.0"
1369
+ is-stream "^2.0.0"
1370
+ merge-stream "^2.0.0"
1371
+ npm-run-path "^4.0.1"
1372
+ onetime "^5.1.2"
1373
+ signal-exit "^3.0.3"
1374
+ strip-final-newline "^2.0.0"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1375
 
1376
  fast-deep-equal@^3.1.1:
1377
  version "3.1.3"
1383
  resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
1384
  integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
1385
 
1386
+ fastest-levenshtein@^1.0.12:
1387
+ version "1.0.12"
1388
+ resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2"
1389
+ integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==
1390
 
1391
+ file-loader@^6.2.0:
1392
+ version "6.2.0"
1393
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d"
1394
+ integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
1395
  dependencies:
1396
+ loader-utils "^2.0.0"
1397
+ schema-utils "^3.0.0"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1398
 
1399
  find-cache-dir@^3.3.1:
1400
+ version "3.3.2"
1401
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b"
1402
+ integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==
1403
  dependencies:
1404
  commondir "^1.0.1"
1405
  make-dir "^3.0.2"
1406
  pkg-dir "^4.1.0"
1407
 
 
 
 
 
 
 
 
1408
  find-up@^4.0.0:
1409
  version "4.1.0"
1410
  resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
1413
  locate-path "^5.0.0"
1414
  path-exists "^4.0.0"
1415
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1416
  function-bind@^1.1.1:
1417
  version "1.1.1"
1418
  resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
1423
  resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
1424
  integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
1425
 
 
 
 
 
 
1426
  get-intrinsic@^1.0.2:
1427
  version "1.1.1"
1428
  resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
1432
  has "^1.0.3"
1433
  has-symbols "^1.0.1"
1434
 
1435
+ get-stream@^6.0.0:
1436
+ version "6.0.1"
1437
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
1438
+ integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1439
 
1440
+ glob-to-regexp@^0.4.1:
1441
+ version "0.4.1"
1442
+ resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
1443
+ integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
 
 
 
 
1444
 
1445
  globals@^11.1.0:
1446
  version "11.12.0"
1447
  resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
1448
  integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
1449
 
1450
+ graceful-fs@^4.1.2, graceful-fs@^4.2.4:
1451
+ version "4.2.8"
1452
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
1453
+ integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
1454
 
1455
  has-flag@^3.0.0:
1456
  version "3.0.0"
1457
  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
1458
  integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
1459
 
1460
+ has-flag@^4.0.0:
1461
+ version "4.0.0"
1462
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
1463
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
1464
+
1465
  has-symbols@^1.0.1:
1466
  version "1.0.2"
1467
  resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
1468
  integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
1469
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1470
  has@^1.0.3:
1471
  version "1.0.3"
1472
  resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
1474
  dependencies:
1475
  function-bind "^1.1.1"
1476
 
1477
+ human-signals@^2.1.0:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1478
  version "2.1.0"
1479
+ resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
1480
+ integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
1481
+
1482
+ import-local@^3.0.2:
1483
+ version "3.0.2"
1484
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6"
1485
+ integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==
1486
  dependencies:
1487
+ pkg-dir "^4.2.0"
1488
+ resolve-cwd "^3.0.0"
1489
 
1490
+ interpret@^2.2.0:
1491
+ version "2.2.0"
1492
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9"
1493
+ integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==
1494
 
1495
  is-core-module@^2.2.0:
1496
+ version "2.7.0"
1497
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.7.0.tgz#3c0ef7d31b4acfc574f80c58409d568a836848e3"
1498
+ integrity sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==
1499
  dependencies:
1500
  has "^1.0.3"
1501
 
1502
+ is-plain-object@^2.0.4:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1503
  version "2.0.4"
1504
  resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
1505
  integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
1506
  dependencies:
1507
  isobject "^3.0.1"
1508
 
1509
+ is-stream@^2.0.0:
1510
+ version "2.0.1"
1511
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
1512
+ integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
 
 
 
 
 
 
 
 
 
 
1513
 
1514
  isexe@^2.0.0:
1515
  version "2.0.0"
1516
  resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1517
  integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
1518
 
1519
+ isobject@^3.0.1:
 
 
 
 
 
 
 
1520
  version "3.0.1"
1521
  resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
1522
  integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
1523
 
1524
+ jest-worker@^27.0.6:
1525
+ version "27.2.3"
1526
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.2.3.tgz#396e83d04ca575230a9bcb255c2b66aec07cb931"
1527
+ integrity sha512-ZwOvv4GCIPviL+Ie4pVguz4N5w/6IGbTaHBYOl3ZcsZZktaL7d8JOU0rmovoED7AJZKA8fvmLbBg8yg80u/tGA==
1528
+ dependencies:
1529
+ "@types/node" "*"
1530
+ merge-stream "^2.0.0"
1531
+ supports-color "^8.0.0"
1532
+
1533
  js-tokens@^4.0.0:
1534
  version "4.0.0"
1535
  resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
1569
  dependencies:
1570
  minimist "^1.2.5"
1571
 
1572
+ kind-of@^6.0.2:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1573
  version "6.0.3"
1574
  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
1575
  integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
1576
 
1577
+ loader-runner@^4.2.0:
1578
+ version "4.2.0"
1579
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384"
1580
+ integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==
1581
 
1582
+ loader-utils@^1.4.0:
1583
  version "1.4.0"
1584
  resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
1585
  integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
1588
  emojis-list "^3.0.0"
1589
  json5 "^1.0.1"
1590
 
1591
+ loader-utils@^2.0.0:
1592
+ version "2.0.0"
1593
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0"
1594
+ integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==
1595
  dependencies:
1596
+ big.js "^5.2.2"
1597
+ emojis-list "^3.0.0"
1598
+ json5 "^2.1.2"
1599
 
1600
  locate-path@^5.0.0:
1601
  version "5.0.0"
1609
  resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
1610
  integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
1611
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1612
  make-dir@^3.0.2, make-dir@^3.1.0:
1613
  version "3.1.0"
1614
  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
1616
  dependencies:
1617
  semver "^6.0.0"
1618
 
1619
+ merge-stream@^2.0.0:
1620
+ version "2.0.0"
1621
+ resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
1622
+ integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1623
 
1624
+ mime-db@1.49.0:
1625
+ version "1.49.0"
1626
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed"
1627
+ integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1628
 
1629
+ mime-types@^2.1.27:
1630
+ version "2.1.32"
1631
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5"
1632
+ integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==
1633
  dependencies:
1634
+ mime-db "1.49.0"
 
 
 
 
 
 
 
 
 
 
 
1635
 
1636
+ mimic-fn@^2.1.0:
1637
+ version "2.1.0"
1638
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
1639
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
 
 
1640
 
1641
  minimist@^1.2.0, minimist@^1.2.5:
1642
  version "1.2.5"
1643
  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
1644
  integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
1645
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1646
  ms@2.1.2:
1647
  version "2.1.2"
1648
  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1649
  integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1650
 
1651
+ nanocolors@^0.1.5:
1652
+ version "0.1.12"
1653
+ resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.12.tgz#8577482c58cbd7b5bb1681db4cf48f11a87fd5f6"
1654
+ integrity sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1655
 
1656
+ neo-async@^2.6.2:
1657
  version "2.6.2"
1658
  resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
1659
  integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
1660
 
1661
+ node-releases@^1.1.76:
1662
+ version "1.1.76"
1663
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.76.tgz#df245b062b0cafbd5282ab6792f7dccc2d97f36e"
1664
+ integrity sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1665
 
1666
+ npm-run-path@^4.0.1:
1667
+ version "4.0.1"
1668
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
1669
+ integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
 
 
 
 
 
1670
  dependencies:
1671
+ path-key "^3.0.0"
 
 
1672
 
1673
  object-keys@^1.0.12, object-keys@^1.1.1:
1674
  version "1.1.1"
1675
  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
1676
  integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
1677
 
 
 
 
 
 
 
 
1678
  object.assign@^4.1.0:
1679
  version "4.1.2"
1680
  resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
1685
  has-symbols "^1.0.1"
1686
  object-keys "^1.1.1"
1687
 
1688
+ onetime@^5.1.2:
1689
+ version "5.1.2"
1690
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
1691
+ integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
 
 
 
 
 
 
 
1692
  dependencies:
1693
+ mimic-fn "^2.1.0"
 
 
 
 
 
1694
 
1695
+ p-limit@^2.2.0:
1696
  version "2.3.0"
1697
  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
1698
  integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
1699
  dependencies:
1700
  p-try "^2.0.0"
1701
 
1702
+ p-limit@^3.1.0:
1703
+ version "3.1.0"
1704
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
1705
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
1706
  dependencies:
1707
+ yocto-queue "^0.1.0"
1708
 
1709
  p-locate@^4.1.0:
1710
  version "4.1.0"
1718
  resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
1719
  integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
1720
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1721
  path-exists@^4.0.0:
1722
  version "4.0.0"
1723
  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
1724
  integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
1725
 
1726
+ path-key@^3.0.0, path-key@^3.1.0:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1727
  version "3.1.1"
1728
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
1729
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
 
 
 
 
 
 
 
 
 
 
 
1730
 
1731
+ path-parse@^1.0.6:
1732
+ version "1.0.7"
1733
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
1734
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
 
 
 
 
 
 
 
1735
 
1736
+ pkg-dir@^4.1.0, pkg-dir@^4.2.0:
1737
  version "4.2.0"
1738
  resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
1739
  integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
1740
  dependencies:
1741
  find-up "^4.0.0"
1742
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1743
  punycode@^2.1.0:
1744
  version "2.1.1"
1745
  resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
1746
  integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
1747
 
1748
+ randombytes@^2.1.0:
 
 
 
 
 
 
 
 
 
 
1749
  version "2.1.0"
1750
  resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
1751
  integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
1752
  dependencies:
1753
  safe-buffer "^5.1.0"
1754
 
1755
+ rechoir@^0.7.0:
1756
+ version "0.7.1"
1757
+ resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686"
1758
+ integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==
 
 
 
 
 
 
 
 
1759
  dependencies:
1760
+ resolve "^1.9.0"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1761
 
1762
+ regenerate-unicode-properties@^9.0.0:
1763
+ version "9.0.0"
1764
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326"
1765
+ integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==
1766
  dependencies:
1767
+ regenerate "^1.4.2"
 
 
1768
 
1769
+ regenerate@^1.4.2:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1770
  version "1.4.2"
1771
  resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
1772
  integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
1777
  integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
1778
 
1779
  regenerator-runtime@^0.13.4:
1780
+ version "0.13.9"
1781
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
1782
+ integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
1783
 
1784
  regenerator-transform@^0.14.2:
1785
  version "0.14.5"
1788
  dependencies:
1789
  "@babel/runtime" "^7.8.4"
1790
 
1791
+ regexpu-core@^4.7.1:
1792
+ version "4.8.0"
1793
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0"
1794
+ integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==
1795
  dependencies:
1796
+ regenerate "^1.4.2"
1797
+ regenerate-unicode-properties "^9.0.0"
1798
+ regjsgen "^0.5.2"
1799
+ regjsparser "^0.7.0"
1800
+ unicode-match-property-ecmascript "^2.0.0"
1801
+ unicode-match-property-value-ecmascript "^2.0.0"
1802
 
1803
+ regjsgen@^0.5.2:
 
 
 
 
 
 
 
 
 
 
 
 
1804
  version "0.5.2"
1805
  resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
1806
  integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
1807
 
1808
+ regjsparser@^0.7.0:
1809
+ version "0.7.0"
1810
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968"
1811
+ integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==
1812
  dependencies:
1813
  jsesc "~0.5.0"
1814
 
1815
+ resolve-cwd@^3.0.0:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1816
  version "3.0.0"
1817
+ resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
1818
+ integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
1819
+ dependencies:
1820
+ resolve-from "^5.0.0"
1821
 
1822
+ resolve-from@^5.0.0:
1823
+ version "5.0.0"
1824
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
1825
+ integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
1826
 
1827
+ resolve@^1.14.2, resolve@^1.9.0:
1828
  version "1.20.0"
1829
  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
1830
  integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
1832
  is-core-module "^2.2.0"
1833
  path-parse "^1.0.6"
1834
 
1835
+ safe-buffer@^5.1.0:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1836
  version "5.2.1"
1837
  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
1838
  integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
1839
 
1840
+ safe-buffer@~5.1.1:
1841
  version "5.1.2"
1842
  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
1843
  integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
1844
 
1845
+ schema-utils@^2.6.5:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1846
  version "2.7.1"
1847
  resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
1848
  integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
1851
  ajv "^6.12.4"
1852
  ajv-keywords "^3.5.2"
1853
 
1854
+ schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1:
1855
+ version "3.1.1"
1856
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281"
1857
+ integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==
1858
+ dependencies:
1859
+ "@types/json-schema" "^7.0.8"
1860
+ ajv "^6.12.5"
1861
+ ajv-keywords "^3.5.2"
1862
+
1863
  semver@7.0.0:
1864
  version "7.0.0"
1865
  resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
1866
  integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
1867
 
 
 
 
 
 
1868
  semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
1869
  version "6.3.0"
1870
  resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
1871
  integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
1872
 
1873
+ serialize-javascript@^6.0.0:
1874
+ version "6.0.0"
1875
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
1876
+ integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
1877
  dependencies:
1878
  randombytes "^2.1.0"
1879
 
1880
+ shallow-clone@^3.0.0:
1881
+ version "3.0.1"
1882
+ resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
1883
+ integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1884
  dependencies:
1885
+ kind-of "^6.0.2"
 
 
 
 
 
1886
 
1887
+ shebang-command@^2.0.0:
1888
+ version "2.0.0"
1889
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
1890
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
1891
  dependencies:
1892
+ shebang-regex "^3.0.0"
 
 
1893
 
1894
+ shebang-regex@^3.0.0:
1895
+ version "3.0.0"
1896
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
1897
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1898
 
1899
+ signal-exit@^3.0.3:
1900
+ version "3.0.4"
1901
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.4.tgz#366a4684d175b9cab2081e3681fda3747b6c51d7"
1902
+ integrity sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q==
 
 
 
 
 
 
1903
 
1904
+ source-map-support@~0.5.20:
1905
+ version "0.5.20"
1906
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9"
1907
+ integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==
1908
  dependencies:
1909
  buffer-from "^1.0.0"
1910
  source-map "^0.6.0"
1911
 
1912
+ source-map@^0.5.0:
 
 
 
 
 
1913
  version "0.5.7"
1914
  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
1915
  integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
1916
 
1917
+ source-map@^0.6.0, source-map@^0.6.1:
1918
  version "0.6.1"
1919
  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
1920
  integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
1921
 
1922
+ source-map@~0.7.2:
1923
+ version "0.7.3"
1924
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
1925
+ integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
 
 
1926
 
1927
+ strip-final-newline@^2.0.0:
1928
+ version "2.0.0"
1929
+ resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
1930
+ integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1931
 
1932
  supports-color@^5.3.0:
1933
  version "5.5.0"
1936
  dependencies:
1937
  has-flag "^3.0.0"
1938
 
1939
+ supports-color@^8.0.0:
1940
+ version "8.1.1"
1941
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
1942
+ integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
1943
  dependencies:
1944
+ has-flag "^4.0.0"
1945
 
1946
+ tapable@^2.1.1, tapable@^2.2.0:
1947
+ version "2.2.1"
1948
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
1949
+ integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
1950
+
1951
+ terser-webpack-plugin@^5.1.3:
1952
+ version "5.2.4"
1953
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz#ad1be7639b1cbe3ea49fab995cbe7224b31747a1"
1954
+ integrity sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==
1955
+ dependencies:
1956
+ jest-worker "^27.0.6"
1957
+ p-limit "^3.1.0"
1958
+ schema-utils "^3.1.1"
1959
+ serialize-javascript "^6.0.0"
 
1960
  source-map "^0.6.1"
1961
+ terser "^5.7.2"
 
 
1962
 
1963
+ terser@^5.7.2:
1964
+ version "5.9.0"
1965
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351"
1966
+ integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==
1967
  dependencies:
1968
  commander "^2.20.0"
1969
+ source-map "~0.7.2"
1970
+ source-map-support "~0.5.20"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1971
 
1972
  to-fast-properties@^2.0.0:
1973
  version "2.0.0"
1974
  resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
1975
  integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
1976
 
1977
+ unicode-canonical-property-names-ecmascript@^2.0.0:
1978
+ version "2.0.0"
1979
+ resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc"
1980
+ integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1981
 
1982
+ unicode-match-property-ecmascript@^2.0.0:
1983
+ version "2.0.0"
1984
+ resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3"
1985
+ integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==
1986
  dependencies:
1987
+ unicode-canonical-property-names-ecmascript "^2.0.0"
1988
+ unicode-property-aliases-ecmascript "^2.0.0"
1989
 
1990
+ unicode-match-property-value-ecmascript@^2.0.0:
1991
+ version "2.0.0"
1992
+ resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714"
1993
+ integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==
 
 
 
1994
 
1995
+ unicode-property-aliases-ecmascript@^2.0.0:
1996
+ version "2.0.0"
1997
+ resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8"
1998
+ integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==
1999
 
2000
  uri-js@^4.2.2:
2001
  version "4.4.1"
2004
  dependencies:
2005
  punycode "^2.1.0"
2006
 
2007
+ v8-compile-cache@^2.2.0:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2008
  version "2.3.0"
2009
  resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
2010
  integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
2011
 
2012
+ watchpack@^2.2.0:
2013
+ version "2.2.0"
2014
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.2.0.tgz#47d78f5415fe550ecd740f99fe2882323a58b1ce"
2015
+ integrity sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==
 
 
 
 
 
2016
  dependencies:
2017
+ glob-to-regexp "^0.4.1"
2018
+ graceful-fs "^4.1.2"
2019
 
2020
+ webpack-cli@^4.8.0:
2021
+ version "4.8.0"
2022
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.8.0.tgz#5fc3c8b9401d3c8a43e2afceacfa8261962338d1"
2023
+ integrity sha512-+iBSWsX16uVna5aAYN6/wjhJy1q/GKk4KjKvfg90/6hykCTSgozbfz5iRgDTSJt/LgSbYxdBX3KBHeobIs+ZEw==
2024
  dependencies:
2025
+ "@discoveryjs/json-ext" "^0.5.0"
2026
+ "@webpack-cli/configtest" "^1.0.4"
2027
+ "@webpack-cli/info" "^1.3.0"
2028
+ "@webpack-cli/serve" "^1.5.2"
2029
+ colorette "^1.2.1"
2030
+ commander "^7.0.0"
2031
+ execa "^5.0.0"
2032
+ fastest-levenshtein "^1.0.12"
2033
+ import-local "^3.0.2"
2034
+ interpret "^2.2.0"
2035
+ rechoir "^0.7.0"
2036
+ v8-compile-cache "^2.2.0"
2037
+ webpack-merge "^5.7.3"
2038
+
2039
+ webpack-merge@^5.7.3:
2040
+ version "5.8.0"
2041
+ resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61"
2042
+ integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==
2043
+ dependencies:
2044
+ clone-deep "^4.0.1"
2045
+ wildcard "^2.0.0"
2046
+
2047
+ webpack-sources@^3.2.0:
2048
+ version "3.2.1"
2049
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.1.tgz#251a7d9720d75ada1469ca07dbb62f3641a05b6d"
2050
+ integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==
2051
+
2052
+ webpack@^5.55.0:
2053
+ version "5.55.0"
2054
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.55.0.tgz#77e4d90c6db6764623f91cb1549cdcda9b9f8a84"
2055
+ integrity sha512-/1LyoAG+4+YRt+RLN3H2cz4dcw8+iO/GwKhL54GQDmqONCi0ZISXZF6aCCrCRDJFK685h+RGLCZd61Y+SEqdWQ==
2056
+ dependencies:
2057
+ "@types/eslint-scope" "^3.7.0"
2058
+ "@types/estree" "^0.0.50"
2059
+ "@webassemblyjs/ast" "1.11.1"
2060
+ "@webassemblyjs/wasm-edit" "1.11.1"
2061
+ "@webassemblyjs/wasm-parser" "1.11.1"
2062
+ acorn "^8.4.1"
2063
+ acorn-import-assertions "^1.7.6"
2064
+ browserslist "^4.14.5"
 
 
 
2065
  chrome-trace-event "^1.0.2"
2066
+ enhanced-resolve "^5.8.3"
2067
+ es-module-lexer "^0.9.0"
2068
+ eslint-scope "5.1.1"
2069
+ events "^3.2.0"
2070
+ glob-to-regexp "^0.4.1"
2071
+ graceful-fs "^4.2.4"
2072
  json-parse-better-errors "^1.0.2"
2073
+ loader-runner "^4.2.0"
2074
+ mime-types "^2.1.27"
2075
+ neo-async "^2.6.2"
2076
+ schema-utils "^3.1.0"
2077
+ tapable "^2.1.1"
2078
+ terser-webpack-plugin "^5.1.3"
2079
+ watchpack "^2.2.0"
2080
+ webpack-sources "^3.2.0"
2081
+
2082
+ which@^2.0.1:
2083
+ version "2.0.2"
2084
+ resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
2085
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
 
 
 
 
 
 
 
 
 
2086
  dependencies:
2087
  isexe "^2.0.0"
2088
 
2089
+ wildcard@^2.0.0:
2090
+ version "2.0.0"
2091
+ resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
2092
+ integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2093
 
2094
+ yocto-queue@^0.1.0:
2095
+ version "0.1.0"
2096
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
2097
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
modules/ppcp-webhooks/assets/css/status-page.css ADDED
@@ -0,0 +1 @@
 
1
+ .ppcp-webhooks-table .error,.ppcp-webhooks-status-text .error{color:red;font-weight:bold}.ppcp-webhooks-table .success,.ppcp-webhooks-status-text .success{color:green;font-weight:bold}.ppcp-webhooks-table table{border-collapse:collapse}.ppcp-webhooks-table table th{border-bottom:1px solid #000}.ppcp-webhooks-table table td,.ppcp-webhooks-table table th{padding:10px 15px}.ppcp-webhooks-table table td:first-child{vertical-align:top;width:450px}.ppcp-webhooks-status-text{padding-top:4px}
modules/ppcp-webhooks/assets/js/status-page-style.js ADDED
@@ -0,0 +1 @@
 
1
+ (()=>{"use strict";var __webpack_modules__={249:(__unused_webpack_module,__unused_webpack___webpack_exports__,__webpack_require__)=>{eval('/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + "css/status-page.css");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQ5LmpzIiwibWFwcGluZ3MiOiJBQUFBLHNFQUFlLHFCQUF1Qix3QkFBd0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wcGNwLXdlYmhvb2tzLy4vcmVzb3VyY2VzL2Nzcy9zdGF0dXMtcGFnZS5zY3NzPzdjOGEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gKyBcImNzcy9zdGF0dXMtcGFnZS5jc3NcIjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///249\n')}},__webpack_require__={};__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{var e;__webpack_require__.g.importScripts&&(e=__webpack_require__.g.location+"");var _=__webpack_require__.g.document;if(!e&&_&&(_.currentScript&&(e=_.currentScript.src),!e)){var r=_.getElementsByTagName("script");r.length&&(e=r[r.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),__webpack_require__.p=e+"../"})();var __webpack_exports__={};__webpack_modules__[249](0,__webpack_exports__,__webpack_require__)})();
modules/ppcp-webhooks/assets/js/status-page.js ADDED
@@ -0,0 +1 @@
 
1
+ (()=>{var __webpack_modules__={281:()=>{eval("document.addEventListener('DOMContentLoaded', () => {\n const resubscribeBtn = jQuery(PayPalCommerceGatewayWebhooksStatus.resubscribe.button);\n resubscribeBtn.click(async () => {\n resubscribeBtn.prop('disabled', true);\n const response = await fetch(PayPalCommerceGatewayWebhooksStatus.resubscribe.endpoint, {\n method: 'POST',\n headers: {\n 'content-type': 'application/json'\n },\n body: JSON.stringify({\n nonce: PayPalCommerceGatewayWebhooksStatus.resubscribe.nonce\n })\n });\n\n const reportError = error => {\n const msg = PayPalCommerceGatewayWebhooksStatus.resubscribe.failureMessage + ' ' + error;\n alert(msg);\n };\n\n if (!response.ok) {\n try {\n const result = await response.json();\n reportError(result.data);\n } catch (exc) {\n console.error(exc);\n reportError(response.status);\n }\n }\n\n window.location.reload();\n });\n\n function sleep(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n\n const simulateBtn = jQuery(PayPalCommerceGatewayWebhooksStatus.simulation.start.button);\n simulateBtn.click(async () => {\n simulateBtn.prop('disabled', true);\n\n try {\n const response = await fetch(PayPalCommerceGatewayWebhooksStatus.simulation.start.endpoint, {\n method: 'POST',\n headers: {\n 'content-type': 'application/json'\n },\n body: JSON.stringify({\n nonce: PayPalCommerceGatewayWebhooksStatus.simulation.start.nonce\n })\n });\n\n const reportError = error => {\n const msg = PayPalCommerceGatewayWebhooksStatus.simulation.start.failureMessage + ' ' + error;\n alert(msg);\n };\n\n if (!response.ok) {\n try {\n const result = await response.json();\n reportError(result.data);\n } catch (exc) {\n console.error(exc);\n reportError(response.status);\n }\n\n return;\n }\n\n const showStatus = html => {\n let statusBlock = simulateBtn.siblings('.ppcp-webhooks-status-text');\n\n if (!statusBlock.length) {\n statusBlock = jQuery('<div class=\"ppcp-webhooks-status-text\"></div>').insertAfter(simulateBtn);\n }\n\n statusBlock.html(html);\n };\n\n simulateBtn.siblings('.description').hide();\n showStatus(PayPalCommerceGatewayWebhooksStatus.simulation.state.waitingMessage + '<span class=\"spinner is-active\" style=\"float: none;\"></span>');\n const delay = 2000;\n const retriesBeforeErrorMessage = 15;\n const maxRetries = 30;\n\n for (let i = 0; i < maxRetries; i++) {\n await sleep(delay);\n const stateResponse = await fetch(PayPalCommerceGatewayWebhooksStatus.simulation.state.endpoint, {\n method: 'GET'\n });\n\n try {\n const result = await stateResponse.json();\n\n if (!stateResponse.ok || !result.success) {\n console.error('Simulation state query failed: ' + result.data);\n continue;\n }\n\n const state = result.data.state;\n\n if (state === PayPalCommerceGatewayWebhooksStatus.simulation.state.successState) {\n showStatus('<span class=\"success\">' + '✔️ ' + PayPalCommerceGatewayWebhooksStatus.simulation.state.successMessage + '</span>');\n return;\n }\n } catch (exc) {\n console.error(exc);\n }\n\n if (i === retriesBeforeErrorMessage) {\n showStatus('<span class=\"error\">' + PayPalCommerceGatewayWebhooksStatus.simulation.state.tooLongDelayMessage + '</span>');\n }\n }\n } finally {\n simulateBtn.prop('disabled', false);\n }\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wcGNwLXdlYmhvb2tzLy4vcmVzb3VyY2VzL2pzL3N0YXR1cy1wYWdlLmpzP2VhZTQiXSwibmFtZXMiOlsiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVzdWJzY3JpYmVCdG4iLCJqUXVlcnkiLCJQYXlQYWxDb21tZXJjZUdhdGV3YXlXZWJob29rc1N0YXR1cyIsInJlc3Vic2NyaWJlIiwiYnV0dG9uIiwiY2xpY2siLCJwcm9wIiwicmVzcG9uc2UiLCJmZXRjaCIsImVuZHBvaW50IiwibWV0aG9kIiwiaGVhZGVycyIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5Iiwibm9uY2UiLCJyZXBvcnRFcnJvciIsImVycm9yIiwibXNnIiwiZmFpbHVyZU1lc3NhZ2UiLCJhbGVydCIsIm9rIiwicmVzdWx0IiwianNvbiIsImRhdGEiLCJleGMiLCJjb25zb2xlIiwic3RhdHVzIiwid2luZG93IiwibG9jYXRpb24iLCJyZWxvYWQiLCJzbGVlcCIsIm1zIiwiUHJvbWlzZSIsInJlc29sdmUiLCJzZXRUaW1lb3V0Iiwic2ltdWxhdGVCdG4iLCJzaW11bGF0aW9uIiwic3RhcnQiLCJzaG93U3RhdHVzIiwiaHRtbCIsInN0YXR1c0Jsb2NrIiwic2libGluZ3MiLCJsZW5ndGgiLCJpbnNlcnRBZnRlciIsImhpZGUiLCJzdGF0ZSIsIndhaXRpbmdNZXNzYWdlIiwiZGVsYXkiLCJyZXRyaWVzQmVmb3JlRXJyb3JNZXNzYWdlIiwibWF4UmV0cmllcyIsImkiLCJzdGF0ZVJlc3BvbnNlIiwic3VjY2VzcyIsInN1Y2Nlc3NTdGF0ZSIsInN1Y2Nlc3NNZXNzYWdlIiwidG9vTG9uZ0RlbGF5TWVzc2FnZSJdLCJtYXBwaW5ncyI6IkFBQUFBLFFBQVEsQ0FBQ0MsZ0JBQVQsQ0FDSSxrQkFESixFQUVJLE1BQU07QUFDRixRQUFNQyxjQUFjLEdBQUdDLE1BQU0sQ0FBQ0MsbUNBQW1DLENBQUNDLFdBQXBDLENBQWdEQyxNQUFqRCxDQUE3QjtBQUVBSixFQUFBQSxj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YUFBYSxDQUFDL0IsRUFBZixJQUFxQixDQUFDQyxNQUFNLENBQUMrQixPQUFqQyxFQUEwQztBQUN0QzNCLFlBQUFBLE9BQU8sQ0FBQ1QsS0FBUixDQUFjLG9DQUFvQ0ssTUFBTSxDQUFDRSxJQUF6RDtBQUNBO0FBQ0g7O0FBRUQsZ0JBQU1zQixLQUFLLEdBQUd4QixNQUFNLENBQUNFLElBQVAsQ0FBWXNCLEtBQTFCOztBQUNBLGNBQUlBLEtBQUssS0FBSzVDLG1DQUFtQyxDQUFDbUMsVUFBcEMsQ0FBK0NTLEtBQS9DLENBQXFEUSxZQUFuRSxFQUFpRjtBQUM3RWYsWUFBQUEsVUFBVSxDQUNOLDJCQUNBLEtBREEsR0FFQXJDLG1DQUFtQyxDQUFDbUMsVUFBcEMsQ0FBK0NTLEtBQS9DLENBQXFEUyxjQUZyRCxHQUdBLFNBSk0sQ0FBVjtBQU1BO0FBQ0g7QUFDSixTQWxCRCxDQWtCRSxPQUFPOUIsR0FBUCxFQUFZO0FBQ1ZDLFVBQUFBLE9BQU8sQ0FBQ1QsS0FBUixDQUFjUSxHQUFkO0FBQ0g7O0FBRUQsWUFBSTBCLENBQUMsS0FBS0YseUJBQVYsRUFBcUM7QUFDakNWLFVBQUFBLFVBQVUsQ0FDTix5QkFDQXJDLG1DQUFtQyxDQUFDbUMsVUFBcEMsQ0FBK0NTLEtBQS9DLENBQXFEVSxtQkFEckQsR0FFQSxTQUhNLENBQVY7QUFLSDtBQUNKO0FBRUosS0E3RkQsU0E2RlU7QUFDTnBCLE1BQUFBLFdBQVcsQ0FBQzlCLElBQVosQ0FBaUIsVUFBakIsRUFBNkIsS0FBN0I7QUFDSDtBQUNKLEdBbkdEO0FBb0dILENBbEpMIiwic291cmNlc0NvbnRlbnQiOlsiZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAnRE9NQ29udGVudExvYWRlZCcsXG4gICAgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1YnNjcmliZUJ0biA9IGpRdWVyeShQYXlQYWxDb21tZXJjZUdhdGV3YXlXZWJob29rc1N0YXR1cy5yZXN1YnNjcmliZS5idXR0b24pO1xuXG4gICAgICAgIHJlc3Vic2NyaWJlQnRuLmNsaWNrKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHJlc3Vic2NyaWJlQnRuLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goXG4gICAgICAgICAgICAgICAgUGF5UGFsQ29tbWVyY2VHYXRld2F5V2ViaG9va3NTdGF0dXMucmVzdWJzY3JpYmUuZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25jZTogUGF5UGFsQ29tbWVyY2VHYXRld2F5V2ViaG9va3NTdGF0dXMucmVzdWJzY3JpYmUubm9uY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCByZXBvcnRFcnJvciA9IGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtc2cgPSBQYXlQYWxDb21tZXJjZUdhdGV3YXlXZWJob29rc1N0YXR1cy5yZXN1YnNjcmliZS5mYWlsdXJlTWVzc2FnZSArICcgJyArIGVycm9yO1xuICAgICAgICAgICAgICAgIGFsZXJ0KG1zZyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKHJlc3VsdC5kYXRhKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChleGMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihleGMpO1xuICAgICAgICAgICAgICAgICAgICByZXBvcnRFcnJvcihyZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmdW5jdGlvbiBzbGVlcChtcykge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2ltdWxhdGVCdG4gPSBqUXVlcnkoUGF5UGFsQ29tbWVyY2VHYXRld2F5V2ViaG9va3NTdGF0dXMuc2ltdWxhdGlvbi5zdGFydC5idXR0b24pO1xuICAgICAgICBzaW11bGF0ZUJ0bi5jbGljayhhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBzaW11bGF0ZUJ0bi5wcm9wKCdkaXNhYmxlZCcsIHRydWUpO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goXG4gICAgICAgICAgICAgICAgICAgIFBheVBhbENvbW1lcmNlR2F0ZXdheVdlYmhvb2tzU3RhdHVzLnNpbXVsYXRpb24uc3RhcnQuZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmNlOiBQYXlQYWxDb21tZXJjZUdhdGV3YXlXZWJob29rc1N0YXR1cy5zaW11bGF0aW9uLnN0YXJ0Lm5vbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZXBvcnRFcnJvciA9IGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbXNnID0gUGF5UGFsQ29tbWVyY2VHYXRld2F5V2ViaG9va3NTdGF0dXMuc2ltdWxhdGlvbi5zdGFydC5mYWlsdXJlTWVzc2FnZSArICcgJyArIGVycm9yO1xuICAgICAgICAgICAgICAgICAgICBhbGVydChtc2cpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXBvcnRFcnJvcihyZXN1bHQuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGV4Yykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihleGMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IocmVzcG9uc2Uuc3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzaG93U3RhdHVzID0gaHRtbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzdGF0dXNCbG9jayA9IHNpbXVsYXRlQnRuLnNpYmxpbmdzKCcucHBjcC13ZWJob29rcy1zdGF0dXMtdGV4dCcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXN0YXR1c0Jsb2NrLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzQmxvY2sgPSBqUXVlcnkoJzxkaXYgY2xhc3M9XCJwcGNwLXdlYmhvb2tzLXN0YXR1cy10ZXh0XCI+PC9kaXY+JykuaW5zZXJ0QWZ0ZXIoc2ltdWxhdGVCdG4pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1c0Jsb2NrLmh0bWwoaHRtbCk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHNpbXVsYXRlQnRuLnNpYmxpbmdzKCcuZGVzY3JpcHRpb24nKS5oaWRlKCk7XG5cbiAgICAgICAgICAgICAgICBzaG93U3RhdHVzKFxuICAgICAgICAgICAgICAgICAgICBQYXlQYWxDb21tZXJjZUdhdGV3YXlXZWJob29rc1N0YXR1cy5zaW11bGF0aW9uLnN0YXRlLndhaXRpbmdNZXNzYWdlICtcbiAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPVwic3Bpbm5lciBpcy1hY3RpdmVcIiBzdHlsZT1cImZsb2F0OiBub25lO1wiPjwvc3Bhbj4nXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGRlbGF5ID0gMjAwMDtcbiAgICAgICAgICAgICAgICBjb25zdCByZXRyaWVzQmVmb3JlRXJyb3JNZXNzYWdlID0gMTU7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF4UmV0cmllcyA9IDMwO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhSZXRyaWVzOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgc2xlZXAoZGVsYXkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRlUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChcbiAgICAgICAgICAgICAgICAgICAgICAgIFBheVBhbENvbW1lcmNlR2F0ZXdheVdlYmhvb2tzU3RhdHVzLnNpbXVsYXRpb24uc3RhdGUuZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc3RhdGVSZXNwb25zZS5qc29uKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RhdGVSZXNwb25zZS5vayB8fCAhcmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdTaW11bGF0aW9uIHN0YXRlIHF1ZXJ5IGZhaWxlZDogJyArIHJlc3VsdC5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSByZXN1bHQuZGF0YS5zdGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PT0gUGF5UGFsQ29tbWVyY2VHYXRld2F5V2ViaG9va3NTdGF0dXMuc2ltdWxhdGlvbi5zdGF0ZS5zdWNjZXNzU3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93U3RhdHVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9XCJzdWNjZXNzXCI+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICfinJTvuI8gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBheVBhbENvbW1lcmNlR2F0ZXdheVdlYmhvb2tzU3RhdHVzLnNpbXVsYXRpb24uc3RhdGUuc3VjY2Vzc01lc3NhZ2UgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9zcGFuPidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXhjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGV4Yyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gcmV0cmllc0JlZm9yZUVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1N0YXR1cyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9XCJlcnJvclwiPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBheVBhbENvbW1lcmNlR2F0ZXdheVdlYmhvb2tzU3RhdHVzLnNpbXVsYXRpb24uc3RhdGUudG9vTG9uZ0RlbGF5TWVzc2FnZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvc3Bhbj4nXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHNpbXVsYXRlQnRuLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4pO1xuIl0sImZpbGUiOiIyODEuanMiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///281\n")}},__webpack_exports__={};__webpack_modules__[281]()})();
modules/ppcp-webhooks/extensions.php CHANGED
@@ -9,4 +9,61 @@ declare(strict_types=1);
9
 
10
  namespace WooCommerce\PayPalCommerce\Webhooks;
11
 
12
- return array();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
 
10
  namespace WooCommerce\PayPalCommerce\Webhooks;
11
 
12
+ use WooCommerce\PayPalCommerce\Onboarding\State;
13
+ use WooCommerce\PayPalCommerce\Webhooks\Status\WebhooksStatusPage;
14
+
15
+ return array(
16
+ 'wcgateway.settings.fields' => static function ( $container, array $fields ): array {
17
+ $status_page_fields = array(
18
+ 'webhooks_list' => array(
19
+ 'title' => __( 'Subscribed webhooks', 'woocommerce-paypal-payments' ),
20
+ 'type' => 'ppcp-table',
21
+ 'screens' => array(
22
+ State::STATE_PROGRESSIVE,
23
+ State::STATE_ONBOARDED,
24
+ ),
25
+ 'requirements' => array(),
26
+ 'gateway' => WebhooksStatusPage::ID,
27
+ 'classes' => array( 'ppcp-webhooks-table' ),
28
+ 'value' => function () use ( $container ) : array {
29
+ return $container->get( 'webhook.status.registered-webhooks-data' );
30
+ },
31
+ ),
32
+ 'webhooks_resubscribe' => array(
33
+ 'title' => __( 'Resubscribe webhooks', 'woocommerce-paypal-payments' ),
34
+ 'type' => 'ppcp-text',
35
+ 'text' => '<button type="button" class="button ppcp-webhooks-resubscribe">' . esc_html__( 'Resubscribe', 'woocommerce-paypal-payments' ) . '</button>',
36
+ 'screens' => array(
37
+ State::STATE_PROGRESSIVE,
38
+ State::STATE_ONBOARDED,
39
+ ),
40
+ 'requirements' => array(),
41
+ 'gateway' => WebhooksStatusPage::ID,
42
+ 'description' => __( 'Click to remove the current webhook subscription and subscribe again, for example, if the website domain or URL structure changed.', 'woocommerce-paypal-payments' ),
43
+ ),
44
+ );
45
+
46
+ $is_registered = $container->get( 'webhook.is-registered' );
47
+ if ( $is_registered ) {
48
+ $status_page_fields = array_merge(
49
+ $status_page_fields,
50
+ array(
51
+ 'webhooks_simulate' => array(
52
+ 'title' => __( 'Webhook simulation', 'woocommerce-paypal-payments' ),
53
+ 'type' => 'ppcp-text',
54
+ 'text' => '<button type="button" class="button ppcp-webhooks-simulate">' . esc_html__( 'Simulate', 'woocommerce-paypal-payments' ) . '</button>',
55
+ 'screens' => array(
56
+ State::STATE_PROGRESSIVE,
57
+ State::STATE_ONBOARDED,
58
+ ),
59
+ 'requirements' => array(),
60
+ 'gateway' => WebhooksStatusPage::ID,
61
+ 'description' => __( 'Click to request a sample webhook payload from PayPal, allowing to check that your server can successfully receive webhooks.', 'woocommerce-paypal-payments' ),
62
+ ),
63
+ )
64
+ );
65
+ }
66
+
67
+ return array_merge( $fields, $status_page_fields );
68
+ },
69
+ );
modules/ppcp-webhooks/package.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "ppcp-webhooks",
3
+ "version": "1.0.0",
4
+ "license": "GPL-3.0-or-later",
5
+ "main": "resources/js/status-page.js",
6
+ "devDependencies": {
7
+ "@babel/core": "^7.9.0",
8
+ "@babel/preset-env": "^7.9.5",
9
+ "babel-loader": "^8.1.0",
10
+ "babel-plugin-transform-object-rest-spread": "^6.26.0",
11
+ "cross-env": "^7.0.3",
12
+ "file-loader": "^6.2.0",
13
+ "sass": "^1.42.1",
14
+ "sass-loader": "^12.1.0",
15
+ "webpack": "^5.55.0",
16
+ "webpack-cli": "^4.8.0"
17
+ },
18
+ "scripts": {
19
+ "build": "cross-env BABEL_ENV=default NODE_ENV=production webpack",
20
+ "watch": "cross-env BABEL_ENV=default NODE_ENV=production webpack --watch",
21
+ "dev": "cross-env BABEL_ENV=default webpack --watch"
22
+ }
23
+ }
modules/ppcp-webhooks/resources/css/status-page.scss ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ppcp-webhooks-table, .ppcp-webhooks-status-text {
2
+ .error {
3
+ color: red;
4
+ font-weight: bold;
5
+ }
6
+
7
+ .success {
8
+ color: green;
9
+ font-weight: bold;
10
+ }
11
+ }
12
+
13
+ .ppcp-webhooks-table {
14
+ table {
15
+ border-collapse: collapse;
16
+
17
+ th {
18
+ border-bottom: 1px solid black;
19
+ }
20
+
21
+ td, th {
22
+ padding: 10px 15px;
23
+ }
24
+
25
+ td:first-child {
26
+ vertical-align: top;
27
+ width: 450px;
28
+ }
29
+ }
30
+ }
31
+
32
+ .ppcp-webhooks-status-text {
33
+ padding-top: 4px;
34
+ }
modules/ppcp-webhooks/resources/js/status-page.js ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ document.addEventListener(
2
+ 'DOMContentLoaded',
3
+ () => {
4
+ const resubscribeBtn = jQuery(PayPalCommerceGatewayWebhooksStatus.resubscribe.button);
5
+
6
+ resubscribeBtn.click(async () => {
7
+ resubscribeBtn.prop('disabled', true);
8
+
9
+ const response = await fetch(
10
+ PayPalCommerceGatewayWebhooksStatus.resubscribe.endpoint,
11
+ {
12
+ method: 'POST',
13
+ headers: {
14
+ 'content-type': 'application/json'
15
+ },
16
+ body: JSON.stringify(
17
+ {
18
+ nonce: PayPalCommerceGatewayWebhooksStatus.resubscribe.nonce,
19
+ }
20
+ )
21
+ }
22
+ );
23
+
24
+ const reportError = error => {
25
+ const msg = PayPalCommerceGatewayWebhooksStatus.resubscribe.failureMessage + ' ' + error;
26
+ alert(msg);
27
+ }
28
+
29
+ if (!response.ok) {
30
+ try {
31
+ const result = await response.json();
32
+ reportError(result.data);
33
+ } catch (exc) {
34
+ console.error(exc);
35
+ reportError(response.status);
36
+ }
37
+ }
38
+
39
+ window.location.reload();
40
+ });
41
+
42
+ function sleep(ms) {
43
+ return new Promise(resolve => setTimeout(resolve, ms));
44
+ }
45
+
46
+ const simulateBtn = jQuery(PayPalCommerceGatewayWebhooksStatus.simulation.start.button);
47
+ simulateBtn.click(async () => {
48
+ simulateBtn.prop('disabled', true);
49
+
50
+ try {
51
+ const response = await fetch(
52
+ PayPalCommerceGatewayWebhooksStatus.simulation.start.endpoint,
53
+ {
54
+ method: 'POST',
55
+ headers: {
56
+ 'content-type': 'application/json'
57
+ },
58
+ body: JSON.stringify(
59
+ {
60
+ nonce: PayPalCommerceGatewayWebhooksStatus.simulation.start.nonce,
61
+ }
62
+ )
63
+ }
64
+ );
65
+
66
+ const reportError = error => {
67
+ const msg = PayPalCommerceGatewayWebhooksStatus.simulation.start.failureMessage + ' ' + error;
68
+ alert(msg);
69
+ };
70
+
71
+ if (!response.ok) {
72
+ try {
73
+ const result = await response.json();
74
+ reportError(result.data);
75
+ } catch (exc) {
76
+ console.error(exc);
77
+ reportError(response.status);
78
+ }
79
+
80
+ return;
81
+ }
82
+
83
+ const showStatus = html => {
84
+ let statusBlock = simulateBtn.siblings('.ppcp-webhooks-status-text');
85
+ if (!statusBlock.length) {
86
+ statusBlock = jQuery('<div class="ppcp-webhooks-status-text"></div>').insertAfter(simulateBtn);
87
+ }
88
+ statusBlock.html(html);
89
+ };
90
+
91
+ simulateBtn.siblings('.description').hide();
92
+
93
+ showStatus(
94
+ PayPalCommerceGatewayWebhooksStatus.simulation.state.waitingMessage +
95
+ '<span class="spinner is-active" style="float: none;"></span>'
96
+ );
97
+
98
+ const delay = 2000;
99
+ const retriesBeforeErrorMessage = 15;
100
+ const maxRetries = 30;
101
+
102
+ for (let i = 0; i < maxRetries; i++) {
103
+ await sleep(delay);
104
+
105
+ const stateResponse = await fetch(
106
+ PayPalCommerceGatewayWebhooksStatus.simulation.state.endpoint,
107
+ {
108
+ method: 'GET',
109
+ }
110
+ );
111
+
112
+ try {
113
+ const result = await stateResponse.json();
114
+
115
+ if (!stateResponse.ok || !result.success) {
116
+ console.error('Simulation state query failed: ' + result.data);
117
+ continue;
118
+ }
119
+
120
+ const state = result.data.state;
121
+ if (state === PayPalCommerceGatewayWebhooksStatus.simulation.state.successState) {
122
+ showStatus(
123
+ '<span class="success">' +
124
+ '✔️ ' +
125
+ PayPalCommerceGatewayWebhooksStatus.simulation.state.successMessage +
126
+ '</span>'
127
+ );
128
+ return;
129
+ }
130
+ } catch (exc) {
131
+ console.error(exc);
132
+ }
133
+
134
+ if (i === retriesBeforeErrorMessage) {
135
+ showStatus(
136
+ '<span class="error">' +
137
+ PayPalCommerceGatewayWebhooksStatus.simulation.state.tooLongDelayMessage +
138
+ '</span>'
139
+ );
140
+ }
141
+ }
142
+
143
+ } finally {
144
+ simulateBtn.prop('disabled', false);
145
+ }
146
+ });
147
+ }
148
+ );
modules/ppcp-webhooks/services.php CHANGED
@@ -9,41 +9,57 @@ declare(strict_types=1);
9
 
10
  namespace WooCommerce\PayPalCommerce\Webhooks;
11
 
 
 
 
 
 
 
 
 
 
12
  use WooCommerce\PayPalCommerce\Webhooks\Handler\CheckoutOrderApproved;
13
  use WooCommerce\PayPalCommerce\Webhooks\Handler\CheckoutOrderCompleted;
14
  use WooCommerce\PayPalCommerce\Webhooks\Handler\PaymentCaptureCompleted;
15
  use WooCommerce\PayPalCommerce\Webhooks\Handler\PaymentCaptureRefunded;
16
  use WooCommerce\PayPalCommerce\Webhooks\Handler\PaymentCaptureReversed;
17
  use Psr\Container\ContainerInterface;
 
18
 
19
  return array(
20
 
21
- 'webhook.registrar' => function( $container ) : WebhookRegistrar {
22
  $factory = $container->get( 'api.factory.webhook' );
23
  $endpoint = $container->get( 'api.endpoint.webhook' );
24
  $rest_endpoint = $container->get( 'webhook.endpoint.controller' );
 
25
  return new WebhookRegistrar(
26
  $factory,
27
  $endpoint,
28
- $rest_endpoint
 
29
  );
30
  },
31
- 'webhook.endpoint.controller' => function( $container ) : IncomingWebhookEndpoint {
32
  $webhook_endpoint = $container->get( 'api.endpoint.webhook' );
33
- $webhook_factory = $container->get( 'api.factory.webhook' );
34
  $handler = $container->get( 'webhook.endpoint.handler' );
35
  $logger = $container->get( 'woocommerce.logger.woocommerce' );
36
  $verify_request = ! defined( 'PAYPAL_WEBHOOK_REQUEST_VERIFICATION' ) || PAYPAL_WEBHOOK_REQUEST_VERIFICATION;
 
 
37
 
38
  return new IncomingWebhookEndpoint(
39
  $webhook_endpoint,
40
- $webhook_factory,
41
  $logger,
42
  $verify_request,
 
 
43
  ... $handler
44
  );
45
  },
46
- 'webhook.endpoint.handler' => function( $container ) : array {
47
  $logger = $container->get( 'woocommerce.logger.woocommerce' );
48
  $prefix = $container->get( 'api.prefix' );
49
  $order_endpoint = $container->get( 'api.endpoint.order' );
@@ -55,4 +71,122 @@ return array(
55
  new PaymentCaptureCompleted( $logger, $prefix ),
56
  );
57
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  );
9
 
10
  namespace WooCommerce\PayPalCommerce\Webhooks;
11
 
12
+ use Exception;
13
+ use Psr\Log\LoggerInterface;
14
+ use WooCommerce\PayPalCommerce\ApiClient\Endpoint\WebhookEndpoint;
15
+ use WooCommerce\PayPalCommerce\ApiClient\Entity\Webhook;
16
+ use WooCommerce\PayPalCommerce\ApiClient\Factory\WebhookFactory;
17
+ use WooCommerce\PayPalCommerce\WcGateway\Assets\WebhooksStatusPageAssets;
18
+ use WooCommerce\PayPalCommerce\Webhooks\Endpoint\ResubscribeEndpoint;
19
+ use WooCommerce\PayPalCommerce\Webhooks\Endpoint\SimulateEndpoint;
20
+ use WooCommerce\PayPalCommerce\Webhooks\Endpoint\SimulationStateEndpoint;
21
  use WooCommerce\PayPalCommerce\Webhooks\Handler\CheckoutOrderApproved;
22
  use WooCommerce\PayPalCommerce\Webhooks\Handler\CheckoutOrderCompleted;
23
  use WooCommerce\PayPalCommerce\Webhooks\Handler\PaymentCaptureCompleted;
24
  use WooCommerce\PayPalCommerce\Webhooks\Handler\PaymentCaptureRefunded;
25
  use WooCommerce\PayPalCommerce\Webhooks\Handler\PaymentCaptureReversed;
26
  use Psr\Container\ContainerInterface;
27
+ use WooCommerce\PayPalCommerce\Webhooks\Status\WebhookSimulation;
28
 
29
  return array(
30
 
31
+ 'webhook.registrar' => function( $container ) : WebhookRegistrar {
32
  $factory = $container->get( 'api.factory.webhook' );
33
  $endpoint = $container->get( 'api.endpoint.webhook' );
34
  $rest_endpoint = $container->get( 'webhook.endpoint.controller' );
35
+ $logger = $container->get( 'woocommerce.logger.woocommerce' );
36
  return new WebhookRegistrar(
37
  $factory,
38
  $endpoint,
39
+ $rest_endpoint,
40
+ $logger
41
  );
42
  },
43
+ 'webhook.endpoint.controller' => function( $container ) : IncomingWebhookEndpoint {
44
  $webhook_endpoint = $container->get( 'api.endpoint.webhook' );
45
+ $webhook = $container->get( 'webhook.current' );
46
  $handler = $container->get( 'webhook.endpoint.handler' );
47
  $logger = $container->get( 'woocommerce.logger.woocommerce' );
48
  $verify_request = ! defined( 'PAYPAL_WEBHOOK_REQUEST_VERIFICATION' ) || PAYPAL_WEBHOOK_REQUEST_VERIFICATION;
49
+ $webhook_event_factory = $container->get( 'api.factory.webhook-event' );
50
+ $simulation = $container->get( 'webhook.status.simulation' );
51
 
52
  return new IncomingWebhookEndpoint(
53
  $webhook_endpoint,
54
+ $webhook,
55
  $logger,
56
  $verify_request,
57
+ $webhook_event_factory,
58
+ $simulation,
59
  ... $handler
60
  );
61
  },
62
+ 'webhook.endpoint.handler' => function( $container ) : array {
63
  $logger = $container->get( 'woocommerce.logger.woocommerce' );
64
  $prefix = $container->get( 'api.prefix' );
65
  $order_endpoint = $container->get( 'api.endpoint.order' );
71
  new PaymentCaptureCompleted( $logger, $prefix ),
72
  );
73
  },
74
+
75
+ 'webhook.current' => function( $container ) : ?Webhook {
76
+ $data = (array) get_option( WebhookRegistrar::KEY, array() );
77
+ if ( empty( $data ) ) {
78
+ return null;
79
+ }
80
+
81
+ $factory = $container->get( 'api.factory.webhook' );
82
+ assert( $factory instanceof WebhookFactory );
83
+
84
+ try {
85
+ return $factory->from_array( $data );
86
+ } catch ( Exception $exception ) {
87
+ $logger = $container->get( 'woocommerce.logger.woocommerce' );
88
+ assert( $logger instanceof LoggerInterface );
89
+ $logger->error( 'Failed to parse the stored webhook data: ' . $exception->getMessage() );
90
+ return null;
91
+ }
92
+ },
93
+
94
+ 'webhook.is-registered' => function( $container ) : bool {
95
+ return $container->get( 'webhook.current' ) !== null;
96
+ },
97
+
98
+ 'webhook.status.registered-webhooks' => function( $container ) : array {
99
+ $endpoint = $container->get( 'api.endpoint.webhook' );
100
+ assert( $endpoint instanceof WebhookEndpoint );
101
+
102
+ return $endpoint->list();
103
+ },
104
+
105
+ 'webhook.status.registered-webhooks-data' => function( $container ) : array {
106
+ $empty_placeholder = __( 'No webhooks found.', 'woocommerce-paypal-payments' );
107
+
108
+ $webhooks = array();
109
+ try {
110
+ $webhooks = $container->get( 'webhook.status.registered-webhooks' );
111
+ } catch ( Exception $exception ) {
112
+ $empty_placeholder = sprintf(
113
+ '<span class="error">%s</span>',
114
+ __( 'Failed to load webhooks.', 'woocommerce-paypal-payments' )
115
+ );
116
+ }
117
+
118
+ return array(
119
+ 'headers' => array(
120
+ __( 'URL', 'woocommerce-paypal-payments' ),
121
+ __( 'Tracked events', 'woocommerce-paypal-payments' ),
122
+ ),
123
+ 'data' => array_map(
124
+ function ( Webhook $webhook ): array {
125
+ return array(
126
+ esc_html( $webhook->url() ),
127
+ implode(
128
+ ',<br/>',
129
+ array_map(
130
+ 'esc_html',
131
+ $webhook->humanfriendly_event_names()
132
+ )
133
+ ),
134
+ );
135
+ },
136
+ $webhooks
137
+ ),
138
+ 'empty_placeholder' => $empty_placeholder,
139
+ );
140
+ },
141
+
142
+ 'webhook.status.simulation' => function( $container ) : WebhookSimulation {
143
+ $webhook_endpoint = $container->get( 'api.endpoint.webhook' );
144
+ $webhook = $container->get( 'webhook.current' );
145
+ return new WebhookSimulation(
146
+ $webhook_endpoint,
147
+ $webhook,
148
+ 'CHECKOUT.ORDER.APPROVED',
149
+ '2.0'
150
+ );
151
+ },
152
+
153
+ 'webhook.status.assets' => function( $container ) : WebhooksStatusPageAssets {
154
+ return new WebhooksStatusPageAssets(
155
+ $container->get( 'webhook.module-url' )
156
+ );
157
+ },
158
+
159
+ 'webhook.endpoint.resubscribe' => static function ( $container ) : ResubscribeEndpoint {
160
+ $registrar = $container->get( 'webhook.registrar' );
161
+ $request_data = $container->get( 'button.request-data' );
162
+
163
+ return new ResubscribeEndpoint(
164
+ $registrar,
165
+ $request_data
166
+ );
167
+ },
168
+
169
+ 'webhook.endpoint.simulate' => static function ( $container ) : SimulateEndpoint {
170
+ $simulation = $container->get( 'webhook.status.simulation' );
171
+ $request_data = $container->get( 'button.request-data' );
172
+
173
+ return new SimulateEndpoint(
174
+ $simulation,
175
+ $request_data
176
+ );
177
+ },
178
+ 'webhook.endpoint.simulation-state' => static function ( $container ) : SimulationStateEndpoint {
179
+ $simulation = $container->get( 'webhook.status.simulation' );
180
+
181
+ return new SimulationStateEndpoint(
182
+ $simulation
183
+ );
184
+ },
185
+
186
+ 'webhook.module-url' => static function ( $container ): string {
187
+ return plugins_url(
188
+ '/modules/ppcp-webhooks/',
189
+ dirname( __FILE__, 3 ) . '/woocommerce-paypal-payments.php'
190
+ );
191
+ },
192
  );
modules/ppcp-webhooks/src/Endpoint/class-resubscribeendpoint.php ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The endpoint for resubscribing webhooks.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce\Webhooks\Endpoint
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace WooCommerce\PayPalCommerce\Webhooks\Endpoint;
11
+
12
+ use Exception;
13
+ use WooCommerce\PayPalCommerce\Button\Endpoint\RequestData;
14
+ use WooCommerce\PayPalCommerce\Webhooks\WebhookRegistrar;
15
+
16
+ /**
17
+ * Class ResubscribeEndpoint
18
+ */
19
+ class ResubscribeEndpoint {
20
+
21
+ const ENDPOINT = 'ppc-webhooks-resubscribe';
22
+
23
+ /**
24
+ * The webhooks registrar.
25
+ *
26
+ * @var WebhookRegistrar
27
+ */
28
+ private $registrar;
29
+
30
+ /**
31
+ * The Request Data helper object.
32
+ *
33
+ * @var RequestData
34
+ */
35
+ private $request_data;
36
+
37
+ /**
38
+ * ResubscribeEndpoint constructor.
39
+ *
40
+ * @param WebhookRegistrar $registrar The webhooks registrar.
41
+ * @param RequestData $request_data The Request Data helper object.
42
+ */
43
+ public function __construct( WebhookRegistrar $registrar, RequestData $request_data ) {
44
+ $this->registrar = $registrar;
45
+ $this->request_data = $request_data;
46
+ }
47
+
48
+ /**
49
+ * Returns the nonce for the endpoint.
50
+ *
51
+ * @return string
52
+ */
53
+ public static function nonce(): string {
54
+ return self::ENDPOINT;
55
+ }
56
+
57
+ /**
58
+ * Handles the incoming request.
59
+ */
60
+ public function handle_request() {
61
+ try {
62
+ // Validate nonce.
63
+ $this->request_data->read_request( $this->nonce() );
64
+
65
+ $this->registrar->unregister();
66
+
67
+ if ( ! $this->registrar->register() ) {
68
+ wp_send_json_error( 'Webhook subscription failed.', 500 );
69
+ return false;
70
+ }
71
+
72
+ wp_send_json_success();
73
+ return true;
74
+ } catch ( Exception $error ) {
75
+ wp_send_json_error( $error->getMessage(), 403 );
76
+ return false;
77
+ }
78
+ }
79
+ }
modules/ppcp-webhooks/src/Endpoint/class-simulateendpoint.php ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The endpoint for starting webhooks simulation.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce\Webhooks\Endpoint
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace WooCommerce\PayPalCommerce\Webhooks\Endpoint;
11
+
12
+ use Exception;
13
+ use WooCommerce\PayPalCommerce\Button\Endpoint\RequestData;
14
+ use WooCommerce\PayPalCommerce\Webhooks\Status\WebhookSimulation;
15
+
16
+ /**
17
+ * Class SimulateEndpoint
18
+ */
19
+ class SimulateEndpoint {
20
+
21
+ const ENDPOINT = 'ppc-webhooks-simulate';
22
+
23
+ /**
24
+ * The simulation handler.
25
+ *
26
+ * @var WebhookSimulation
27
+ */
28
+ private $simulation;
29
+
30
+ /**
31
+ * The Request Data helper object.
32
+ *
33
+ * @var RequestData
34
+ */
35
+ private $request_data;
36
+
37
+ /**
38
+ * SimulateEndpoint constructor.
39
+ *
40
+ * @param WebhookSimulation $simulation The simulation handler.
41
+ * @param RequestData $request_data The Request Data helper object.
42
+ */
43
+ public function __construct(
44
+ WebhookSimulation $simulation,
45
+ RequestData $request_data
46
+ ) {
47
+ $this->simulation = $simulation;
48
+ $this->request_data = $request_data;
49
+ }
50
+
51
+ /**
52
+ * Returns the nonce for the endpoint.
53
+ *
54
+ * @return string
55
+ */
56
+ public static function nonce(): string {
57
+ return self::ENDPOINT;
58
+ }
59
+
60
+ /**
61
+ * Handles the incoming request.
62
+ */
63
+ public function handle_request() {
64
+ try {
65
+ // Validate nonce.
66
+ $this->request_data->read_request( $this->nonce() );
67
+
68
+ $this->simulation->start();
69
+
70
+ wp_send_json_success();
71
+ return true;
72
+ } catch ( Exception $error ) {
73
+ wp_send_json_error( $error->getMessage(), 500 );
74
+ return false;
75
+ }
76
+ }
77
+ }
modules/ppcp-webhooks/src/Endpoint/class-simulationstateendpoint.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The endpoint for getting the current webhooks simulation state.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce\Webhooks\Endpoint
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace WooCommerce\PayPalCommerce\Webhooks\Endpoint;
11
+
12
+ use Exception;
13
+ use WooCommerce\PayPalCommerce\Button\Endpoint\RequestData;
14
+ use WooCommerce\PayPalCommerce\Webhooks\Status\WebhookSimulation;
15
+
16
+ /**
17
+ * Class SimulationStateEndpoint
18
+ */
19
+ class SimulationStateEndpoint {
20
+
21
+ const ENDPOINT = 'ppc-webhooks-simulation-state';
22
+
23
+ /**
24
+ * The simulation handler.
25
+ *
26
+ * @var WebhookSimulation
27
+ */
28
+ private $simulation;
29
+
30
+ /**
31
+ * SimulationStateEndpoint constructor.
32
+ *
33
+ * @param WebhookSimulation $simulation The simulation handler.
34
+ */
35
+ public function __construct(
36
+ WebhookSimulation $simulation
37
+ ) {
38
+ $this->simulation = $simulation;
39
+ }
40
+
41
+ /**
42
+ * Returns the nonce for the endpoint.
43
+ *
44
+ * @return string
45
+ */
46
+ public static function nonce(): string {
47
+ return self::ENDPOINT;
48
+ }
49
+
50
+ /**
51
+ * Handles the incoming request.
52
+ */
53
+ public function handle_request() {
54
+ try {
55
+ $state = $this->simulation->get_state();
56
+
57
+ wp_send_json_success(
58
+ array(
59
+ 'state' => $state,
60
+ )
61
+ );
62
+ return true;
63
+ } catch ( Exception $error ) {
64
+ wp_send_json_error( $error->getMessage(), 500 );
65
+ return false;
66
+ }
67
+ }
68
+ }
modules/ppcp-webhooks/src/Status/Assets/class-webhooksstatuspageassets.php ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Register and configure assets for webhooks status page.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce\Webhooks\Status\Assets
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace WooCommerce\PayPalCommerce\WcGateway\Assets;
11
+
12
+ use WooCommerce\PayPalCommerce\ApiClient\Authentication\Bearer;
13
+ use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
14
+ use WooCommerce\PayPalCommerce\Webhooks\Endpoint\ResubscribeEndpoint;
15
+ use WooCommerce\PayPalCommerce\Webhooks\Endpoint\SimulateEndpoint;
16
+ use WooCommerce\PayPalCommerce\Webhooks\Endpoint\SimulationStateEndpoint;
17
+ use WooCommerce\PayPalCommerce\Webhooks\Status\WebhookSimulation;
18
+
19
+ /**
20
+ * Class WebhooksStatusPageAssets
21
+ */
22
+ class WebhooksStatusPageAssets {
23
+
24
+ /**
25
+ * The URL to the module.
26
+ *
27
+ * @var string
28
+ */
29
+ private $module_url;
30
+
31
+ /**
32
+ * WebhooksStatusPageAssets constructor.
33
+ *
34
+ * @param string $module_url The URL to the module.
35
+ */
36
+ public function __construct(
37
+ string $module_url
38
+ ) {
39
+ $this->module_url = untrailingslashit( $module_url );
40
+ }
41
+
42
+ /**
43
+ * Registers the scripts and styles.
44
+ *
45
+ * @return void
46
+ */
47
+ public function register(): void {
48
+ wp_register_style(
49
+ 'ppcp-webhooks-status-page-style',
50
+ $this->module_url . '/assets/css/status-page.css',
51
+ array(),
52
+ 1
53
+ );
54
+
55
+ wp_register_script(
56
+ 'ppcp-webhooks-status-page',
57
+ $this->module_url . '/assets/js/status-page.js',
58
+ array(),
59
+ 1,
60
+ true
61
+ );
62
+
63
+ wp_localize_script(
64
+ 'ppcp-webhooks-status-page',
65
+ 'PayPalCommerceGatewayWebhooksStatus',
66
+ $this->get_script_data()
67
+ );
68
+ }
69
+
70
+ /**
71
+ * Returns the data for the script.
72
+ *
73
+ * @return array
74
+ */
75
+ public function get_script_data() {
76
+ return array(
77
+ 'resubscribe' => array(
78
+ 'endpoint' => home_url( \WC_AJAX::get_endpoint( ResubscribeEndpoint::ENDPOINT ) ),
79
+ 'nonce' => wp_create_nonce( ResubscribeEndpoint::nonce() ),
80
+ 'button' => '.ppcp-webhooks-resubscribe',
81
+ 'failureMessage' => __( 'Operation failed. Check WooCommerce logs for more details.', 'woocommerce-paypal-payments' ),
82
+ ),
83
+ 'simulation' => array(
84
+ 'start' => array(
85
+ 'endpoint' => home_url( \WC_AJAX::get_endpoint( SimulateEndpoint::ENDPOINT ) ),
86
+ 'nonce' => wp_create_nonce( SimulateEndpoint::nonce() ),
87
+ 'button' => '.ppcp-webhooks-simulate',
88
+ 'failureMessage' => __( 'Operation failed. Check WooCommerce logs for more details.', 'woocommerce-paypal-payments' ),
89
+ ),
90
+ 'state' => array(
91
+ 'endpoint' => home_url( \WC_AJAX::get_endpoint( SimulationStateEndpoint::ENDPOINT ) ),
92
+ 'successState' => WebhookSimulation::STATE_RECEIVED,
93
+ 'waitingMessage' => __( 'Waiting for the webhook to arrive...', 'woocommerce-paypal-payments' ),
94
+ 'successMessage' => __( 'The webhook was received successfully.', 'woocommerce-paypal-payments' ),
95
+ 'tooLongDelayMessage' => __( 'Looks like the webhook cannot be received. Check that your website is accessible from the internet.', 'woocommerce-paypal-payments' ),
96
+ ),
97
+ ),
98
+ );
99
+ }
100
+
101
+ /**
102
+ * Enqueues the necessary scripts.
103
+ *
104
+ * @return void
105
+ */
106
+ public function enqueue(): void {
107
+ wp_enqueue_style( 'ppcp-webhooks-status-page-style' );
108
+ wp_enqueue_script( 'ppcp-webhooks-status-page' );
109
+ }
110
+ }
modules/ppcp-webhooks/src/Status/class-webhooksimulation.php ADDED
@@ -0,0 +1,180 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Handles the webhook simulation.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce\Webhooks\Status
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace WooCommerce\PayPalCommerce\Webhooks\Status;
11
+
12
+ use Exception;
13
+ use UnexpectedValueException;
14
+ use WooCommerce\PayPalCommerce\ApiClient\Endpoint\WebhookEndpoint;
15
+ use WooCommerce\PayPalCommerce\ApiClient\Entity\Webhook;
16
+ use WooCommerce\PayPalCommerce\ApiClient\Entity\WebhookEvent;
17
+
18
+ /**
19
+ * Class WebhookSimulation
20
+ */
21
+ class WebhookSimulation {
22
+
23
+ public const STATE_WAITING = 'waiting';
24
+ public const STATE_RECEIVED = 'received';
25
+
26
+ private const OPTION_ID = 'ppcp-webhook-simulation';
27
+
28
+ /**
29
+ * The webhooks endpoint.
30
+ *
31
+ * @var WebhookEndpoint
32
+ */
33
+ private $webhook_endpoint;
34
+
35
+ /**
36
+ * Our registered webhook.
37
+ *
38
+ * @var Webhook|null
39
+ */
40
+ private $webhook;
41
+
42
+ /**
43
+ * The event type that will be simulated, such as CHECKOUT.ORDER.APPROVED.
44
+ *
45
+ * @var string
46
+ */
47
+ private $event_type;
48
+
49
+ /**
50
+ * The event resource version, such as 2.0.
51
+ *
52
+ * @var string|null
53
+ */
54
+ private $resource_version;
55
+
56
+ /**
57
+ * WebhookSimulation constructor.
58
+ *
59
+ * @param WebhookEndpoint $webhook_endpoint The webhooks endpoint.
60
+ * @param Webhook|null $webhook Our registered webhook.
61
+ * @param string $event_type The event type that will be simulated, such as CHECKOUT.ORDER.APPROVED.
62
+ * @param string|null $resource_version The event resource version, such as 2.0.
63
+ */
64
+ public function __construct(
65
+ WebhookEndpoint $webhook_endpoint,
66
+ ?Webhook $webhook,
67
+ string $event_type,
68
+ ?string $resource_version
69
+ ) {
70
+ $this->webhook_endpoint = $webhook_endpoint;
71
+ $this->webhook = $webhook;
72
+ $this->event_type = $event_type;
73
+ $this->resource_version = $resource_version;
74
+ }
75
+
76
+ /**
77
+ * Starts the simulation by sending request to PayPal and saving the simulation data with STATE_WAITING.
78
+ *
79
+ * @throws Exception If failed to start simulation.
80
+ */
81
+ public function start() {
82
+ if ( ! $this->webhook ) {
83
+ throw new Exception( 'Webhooks not registered' );
84
+ }
85
+
86
+ $event = $this->webhook_endpoint->simulate( $this->webhook, $this->event_type, $this->resource_version );
87
+
88
+ $this->save(
89
+ array(
90
+ 'id' => $event->id(),
91
+ 'state' => self::STATE_WAITING,
92
+ )
93
+ );
94
+ }
95
+
96
+ /**
97
+ * Returns true if the given event matches the expected simulation event.
98
+ *
99
+ * @param WebhookEvent $event The webhook event.
100
+ * @return bool
101
+ */
102
+ public function is_simulation_event( WebhookEvent $event ): bool {
103
+ try {
104
+ $data = $this->load();
105
+
106
+ return isset( $data['id'] ) && $event->id() === $data['id'];
107
+ } catch ( Exception $exception ) {
108
+ return false;
109
+ }
110
+ }
111
+
112
+ /**
113
+ * Sets the simulation state to STATE_RECEIVED if the given event matches the expected simulation event.
114
+ *
115
+ * @param WebhookEvent $event The webhook event.
116
+ *
117
+ * @return bool
118
+ * @throws Exception If failed to save new state.
119
+ */
120
+ public function receive( WebhookEvent $event ): bool {
121
+ if ( ! $this->is_simulation_event( $event ) ) {
122
+ return false;
123
+ }
124
+
125
+ $this->set_state( self::STATE_RECEIVED );
126
+
127
+ return true;
128
+ }
129
+
130
+ /**
131
+ * Returns the current simulation state, one of the STATE_ constants.
132
+ *
133
+ * @return string
134
+ * @throws Exception If failed to load state.
135
+ */
136
+ public function get_state(): string {
137
+ $data = $this->load();
138
+
139
+ return $data['state'];
140
+ }
141
+
142
+ /**
143
+ * Saves the new state.
144
+ *
145
+ * @param string $state One of the STATE_ constants.
146
+ *
147
+ * @throws Exception If failed to load state.
148
+ */
149
+ private function set_state( string $state ): void {
150
+ $data = $this->load();
151
+
152
+ $data['state'] = $state;
153
+
154
+ $this->save( $data );
155
+ }
156
+
157
+ /**
158
+ * Saves the simulation data.
159
+ *
160
+ * @param array $data The simulation data.
161
+ */
162
+ private function save( array $data ): void {
163
+ update_option( self::OPTION_ID, $data );
164
+ }
165
+
166
+ /**
167
+ * Returns the current simulation data.
168
+ *
169
+ * @return array
170
+ * @throws UnexpectedValueException If failed to load.
171
+ */
172
+ private function load(): array {
173
+ $data = get_option( self::OPTION_ID );
174
+ if ( ! $data ) {
175
+ throw new UnexpectedValueException( 'Webhook simulation data not found.' );
176
+ }
177
+
178
+ return $data;
179
+ }
180
+ }
modules/ppcp-webhooks/src/Status/class-webhooksstatuspage.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Status page.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce\Webhooks\Status
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace WooCommerce\PayPalCommerce\Webhooks\Status;
11
+
12
+ /**
13
+ * Class WebhooksStatusPage
14
+ */
15
+ class WebhooksStatusPage {
16
+
17
+ const ID = 'ppcp-webhooks-status-page';
18
+ }
modules/ppcp-webhooks/src/class-incomingwebhookendpoint.php CHANGED
@@ -9,11 +9,15 @@ declare(strict_types=1);
9
 
10
  namespace WooCommerce\PayPalCommerce\Webhooks;
11
 
 
12
  use WooCommerce\PayPalCommerce\ApiClient\Endpoint\WebhookEndpoint;
 
 
13
  use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
14
- use WooCommerce\PayPalCommerce\ApiClient\Factory\WebhookFactory;
15
  use WooCommerce\PayPalCommerce\Webhooks\Handler\RequestHandler;
16
  use Psr\Log\LoggerInterface;
 
17
 
18
  /**
19
  * Class IncomingWebhookEndpoint
@@ -31,11 +35,11 @@ class IncomingWebhookEndpoint {
31
  private $webhook_endpoint;
32
 
33
  /**
34
- * The Webhook Factory.
35
  *
36
- * @var WebhookFactory
37
  */
38
- private $webhook_factory;
39
 
40
  /**
41
  * The Request handlers.
@@ -58,28 +62,48 @@ class IncomingWebhookEndpoint {
58
  */
59
  private $verify_request;
60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  /**
62
  * IncomingWebhookEndpoint constructor.
63
  *
64
- * @param WebhookEndpoint $webhook_endpoint The webhook endpoint.
65
- * @param WebhookFactory $webhook_factory The webhook factory.
66
- * @param LoggerInterface $logger The logger.
67
- * @param bool $verify_request Whether requests need to be verified or not.
68
- * @param RequestHandler ...$handlers The handlers, which process a request in the end.
 
 
69
  */
70
  public function __construct(
71
  WebhookEndpoint $webhook_endpoint,
72
- WebhookFactory $webhook_factory,
73
  LoggerInterface $logger,
74
  bool $verify_request,
 
 
75
  RequestHandler ...$handlers
76
  ) {
77
 
78
- $this->webhook_endpoint = $webhook_endpoint;
79
- $this->webhook_factory = $webhook_factory;
80
- $this->handlers = $handlers;
81
- $this->logger = $logger;
82
- $this->verify_request = $verify_request;
 
 
83
  }
84
 
85
  /**
@@ -110,35 +134,34 @@ class IncomingWebhookEndpoint {
110
  /**
111
  * Verifies the current request.
112
  *
 
 
113
  * @return bool
114
  */
115
- public function verify_request(): bool {
116
  if ( ! $this->verify_request ) {
117
  return true;
118
  }
 
 
 
 
 
 
119
  try {
120
- $data = (array) get_option( WebhookRegistrar::KEY, array() );
121
- $webhook = $this->webhook_factory->from_array( $data );
122
- $result = $this->webhook_endpoint->verify_current_request_for_webhook( $webhook );
 
 
 
 
123
  if ( ! $result ) {
124
- $this->logger->log(
125
- 'error',
126
- __( 'Illegit Webhook request detected.', 'woocommerce-paypal-payments' )
127
- );
128
  }
129
  return $result;
130
  } catch ( RuntimeException $exception ) {
131
- $this->logger->log(
132
- 'error',
133
- sprintf(
134
- // translators: %s is the error message.
135
- __(
136
- 'Illegit Webhook request detected: %s',
137
- 'woocommerce-paypal-payments'
138
- ),
139
- $exception->getMessage()
140
- )
141
- );
142
  return false;
143
  }
144
  }
@@ -151,6 +174,17 @@ class IncomingWebhookEndpoint {
151
  * @return \WP_REST_Response
152
  */
153
  public function handle_request( \WP_REST_Request $request ): \WP_REST_Response {
 
 
 
 
 
 
 
 
 
 
 
154
 
155
  foreach ( $this->handlers as $handler ) {
156
  if ( $handler->responsible_for_request( $request ) ) {
@@ -211,4 +245,16 @@ class IncomingWebhookEndpoint {
211
  }
212
  return array_unique( $event_types );
213
  }
 
 
 
 
 
 
 
 
 
 
 
 
214
  }
9
 
10
  namespace WooCommerce\PayPalCommerce\Webhooks;
11
 
12
+ use phpDocumentor\Reflection\Types\This;
13
  use WooCommerce\PayPalCommerce\ApiClient\Endpoint\WebhookEndpoint;
14
+ use WooCommerce\PayPalCommerce\ApiClient\Entity\Webhook;
15
+ use WooCommerce\PayPalCommerce\ApiClient\Entity\WebhookEvent;
16
  use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
17
+ use WooCommerce\PayPalCommerce\ApiClient\Factory\WebhookEventFactory;
18
  use WooCommerce\PayPalCommerce\Webhooks\Handler\RequestHandler;
19
  use Psr\Log\LoggerInterface;
20
+ use WooCommerce\PayPalCommerce\Webhooks\Status\WebhookSimulation;
21
 
22
  /**
23
  * Class IncomingWebhookEndpoint
35
  private $webhook_endpoint;
36
 
37
  /**
38
+ * Our registered webhook.
39
  *
40
+ * @var Webhook|null
41
  */
42
+ private $webhook;
43
 
44
  /**
45
  * The Request handlers.
62
  */
63
  private $verify_request;
64
 
65
+ /**
66
+ * The webhook event factory.
67
+ *
68
+ * @var WebhookEventFactory
69
+ */
70
+ private $webhook_event_factory;
71
+
72
+ /**
73
+ * The simulation handler.
74
+ *
75
+ * @var WebhookSimulation
76
+ */
77
+ private $simulation;
78
+
79
  /**
80
  * IncomingWebhookEndpoint constructor.
81
  *
82
+ * @param WebhookEndpoint $webhook_endpoint The webhook endpoint.
83
+ * @param Webhook|null $webhook Our registered webhook.
84
+ * @param LoggerInterface $logger The logger.
85
+ * @param bool $verify_request Whether requests need to be verified or not.
86
+ * @param WebhookEventFactory $webhook_event_factory The webhook event factory.
87
+ * @param WebhookSimulation $simulation The simulation handler.
88
+ * @param RequestHandler ...$handlers The handlers, which process a request in the end.
89
  */
90
  public function __construct(
91
  WebhookEndpoint $webhook_endpoint,
92
+ ?Webhook $webhook,
93
  LoggerInterface $logger,
94
  bool $verify_request,
95
+ WebhookEventFactory $webhook_event_factory,
96
+ WebhookSimulation $simulation,
97
  RequestHandler ...$handlers
98
  ) {
99
 
100
+ $this->webhook_endpoint = $webhook_endpoint;
101
+ $this->webhook = $webhook;
102
+ $this->handlers = $handlers;
103
+ $this->logger = $logger;
104
+ $this->verify_request = $verify_request;
105
+ $this->webhook_event_factory = $webhook_event_factory;
106
+ $this->simulation = $simulation;
107
  }
108
 
109
  /**
134
  /**
135
  * Verifies the current request.
136
  *
137
+ * @param \WP_REST_Request $request The request.
138
+ *
139
  * @return bool
140
  */
141
+ public function verify_request( \WP_REST_Request $request ): bool {
142
  if ( ! $this->verify_request ) {
143
  return true;
144
  }
145
+
146
+ if ( ! $this->webhook ) {
147
+ $this->logger->error( 'Failed to retrieve stored webhook data.' );
148
+ return false;
149
+ }
150
+
151
  try {
152
+ $event = $this->event_from_request( $request );
153
+
154
+ if ( $this->simulation->is_simulation_event( $event ) ) {
155
+ return true;
156
+ }
157
+
158
+ $result = $this->webhook_endpoint->verify_current_request_for_webhook( $this->webhook );
159
  if ( ! $result ) {
160
+ $this->logger->error( 'Webhook verification failed.' );
 
 
 
161
  }
162
  return $result;
163
  } catch ( RuntimeException $exception ) {
164
+ $this->logger->error( 'Webhook verification failed: ' . $exception->getMessage() );
 
 
 
 
 
 
 
 
 
 
165
  return false;
166
  }
167
  }
174
  * @return \WP_REST_Response
175
  */
176
  public function handle_request( \WP_REST_Request $request ): \WP_REST_Response {
177
+ $event = $this->event_from_request( $request );
178
+
179
+ if ( $this->simulation->is_simulation_event( $event ) ) {
180
+ $this->logger->info( 'Received simulated webhook.' );
181
+ $this->simulation->receive( $event );
182
+ return rest_ensure_response(
183
+ array(
184
+ 'success' => true,
185
+ )
186
+ );
187
+ }
188
 
189
  foreach ( $this->handlers as $handler ) {
190
  if ( $handler->responsible_for_request( $request ) ) {
245
  }
246
  return array_unique( $event_types );
247
  }
248
+
249
+ /**
250
+ * Creates WebhookEvent from request data.
251
+ *
252
+ * @param \WP_REST_Request $request The request with event data.
253
+ *
254
+ * @return WebhookEvent
255
+ * @throws RuntimeException When failed to create.
256
+ */
257
+ private function event_from_request( \WP_REST_Request $request ): WebhookEvent {
258
+ return $this->webhook_event_factory->from_array( $request->get_params() );
259
+ }
260
  }
modules/ppcp-webhooks/src/class-webhookmodule.php CHANGED
@@ -11,8 +11,15 @@ namespace WooCommerce\PayPalCommerce\Webhooks;
11
 
12
  use Dhii\Container\ServiceProvider;
13
  use Dhii\Modular\Module\ModuleInterface;
 
14
  use Interop\Container\ServiceProviderInterface;
15
  use Psr\Container\ContainerInterface;
 
 
 
 
 
 
16
 
17
  /**
18
  * Class WebhookModule
@@ -37,6 +44,9 @@ class WebhookModule implements ModuleInterface {
37
  * @param ContainerInterface|null $container The Container.
38
  */
39
  public function run( ContainerInterface $container ): void {
 
 
 
40
  add_action(
41
  'rest_api_init',
42
  static function () use ( $container ) {
@@ -75,6 +85,69 @@ class WebhookModule implements ModuleInterface {
75
  $registrar->unregister();
76
  }
77
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  }
79
 
80
  /**
11
 
12
  use Dhii\Container\ServiceProvider;
13
  use Dhii\Modular\Module\ModuleInterface;
14
+ use Exception;
15
  use Interop\Container\ServiceProviderInterface;
16
  use Psr\Container\ContainerInterface;
17
+ use Psr\Log\LoggerInterface;
18
+ use WooCommerce\PayPalCommerce\WcGateway\Assets\WebhooksStatusPageAssets;
19
+ use WooCommerce\PayPalCommerce\Webhooks\Endpoint\ResubscribeEndpoint;
20
+ use WooCommerce\PayPalCommerce\Webhooks\Endpoint\SimulateEndpoint;
21
+ use WooCommerce\PayPalCommerce\Webhooks\Endpoint\SimulationStateEndpoint;
22
+ use WooCommerce\PayPalCommerce\Webhooks\Status\WebhooksStatusPage;
23
 
24
  /**
25
  * Class WebhookModule
44
  * @param ContainerInterface|null $container The Container.
45
  */
46
  public function run( ContainerInterface $container ): void {
47
+ $logger = $container->get( 'woocommerce.logger.woocommerce' );
48
+ assert( $logger instanceof LoggerInterface );
49
+
50
  add_action(
51
  'rest_api_init',
52
  static function () use ( $container ) {
85
  $registrar->unregister();
86
  }
87
  );
88
+
89
+ add_action(
90
+ 'wc_ajax_' . ResubscribeEndpoint::ENDPOINT,
91
+ static function () use ( $container ) {
92
+ $endpoint = $container->get( 'webhook.endpoint.resubscribe' );
93
+ assert( $endpoint instanceof ResubscribeEndpoint );
94
+
95
+ $endpoint->handle_request();
96
+ }
97
+ );
98
+
99
+ add_action(
100
+ 'wc_ajax_' . SimulateEndpoint::ENDPOINT,
101
+ static function () use ( $container ) {
102
+ $endpoint = $container->get( 'webhook.endpoint.simulate' );
103
+ assert( $endpoint instanceof SimulateEndpoint );
104
+
105
+ $endpoint->handle_request();
106
+ }
107
+ );
108
+ add_action(
109
+ 'wc_ajax_' . SimulationStateEndpoint::ENDPOINT,
110
+ static function () use ( $container ) {
111
+ $endpoint = $container->get( 'webhook.endpoint.simulation-state' );
112
+ assert( $endpoint instanceof SimulationStateEndpoint );
113
+
114
+ $endpoint->handle_request();
115
+ }
116
+ );
117
+
118
+ $page_id = $container->get( 'wcgateway.current-ppcp-settings-page-id' );
119
+ if ( WebhooksStatusPage::ID === $page_id ) {
120
+ $GLOBALS['hide_save_button'] = true;
121
+ $asset_loader = $container->get( 'webhook.status.assets' );
122
+ assert( $asset_loader instanceof WebhooksStatusPageAssets );
123
+ add_action(
124
+ 'init',
125
+ array( $asset_loader, 'register' )
126
+ );
127
+ add_action(
128
+ 'admin_enqueue_scripts',
129
+ array( $asset_loader, 'enqueue' )
130
+ );
131
+
132
+ try {
133
+ $webhooks = $container->get( 'webhook.status.registered-webhooks' );
134
+
135
+ if ( empty( $webhooks ) ) {
136
+ $registrar = $container->get( 'webhook.registrar' );
137
+ assert( $registrar instanceof WebhookRegistrar );
138
+
139
+ // Looks like we cannot call rest_url too early.
140
+ add_action(
141
+ 'init',
142
+ function () use ( $registrar ) {
143
+ $registrar->register();
144
+ }
145
+ );
146
+ }
147
+ } catch ( Exception $exception ) {
148
+ $logger->error( 'Failed to load webhooks list: ' . $exception->getMessage() );
149
+ }
150
+ }
151
  }
152
 
153
  /**
modules/ppcp-webhooks/src/class-webhookregistrar.php CHANGED
@@ -9,6 +9,7 @@ declare(strict_types=1);
9
 
10
  namespace WooCommerce\PayPalCommerce\Webhooks;
11
 
 
12
  use WooCommerce\PayPalCommerce\ApiClient\Endpoint\WebhookEndpoint;
13
  use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
14
  use WooCommerce\PayPalCommerce\ApiClient\Factory\WebhookFactory;
@@ -43,22 +44,32 @@ class WebhookRegistrar {
43
  */
44
  private $rest_endpoint;
45
 
 
 
 
 
 
 
 
46
  /**
47
  * WebhookRegistrar constructor.
48
  *
49
  * @param WebhookFactory $webhook_factory The Webhook factory.
50
  * @param WebhookEndpoint $endpoint The Webhook endpoint.
51
  * @param IncomingWebhookEndpoint $rest_endpoint The WordPress Rest API endpoint.
 
52
  */
53
  public function __construct(
54
  WebhookFactory $webhook_factory,
55
  WebhookEndpoint $endpoint,
56
- IncomingWebhookEndpoint $rest_endpoint
 
57
  ) {
58
 
59
  $this->webhook_factory = $webhook_factory;
60
  $this->endpoint = $endpoint;
61
  $this->rest_endpoint = $rest_endpoint;
 
62
  }
63
 
64
  /**
@@ -81,8 +92,10 @@ class WebhookRegistrar {
81
  self::KEY,
82
  $created->to_array()
83
  );
 
84
  return true;
85
  } catch ( RuntimeException $error ) {
 
86
  return false;
87
  }
88
  }
@@ -101,11 +114,13 @@ class WebhookRegistrar {
101
  $webhook = $this->webhook_factory->from_array( $data );
102
  $success = $this->endpoint->delete( $webhook );
103
  } catch ( RuntimeException $error ) {
 
104
  return false;
105
  }
106
 
107
  if ( $success ) {
108
  delete_option( self::KEY );
 
109
  }
110
  return $success;
111
  }
9
 
10
  namespace WooCommerce\PayPalCommerce\Webhooks;
11
 
12
+ use Psr\Log\LoggerInterface;
13
  use WooCommerce\PayPalCommerce\ApiClient\Endpoint\WebhookEndpoint;
14
  use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
15
  use WooCommerce\PayPalCommerce\ApiClient\Factory\WebhookFactory;
44
  */
45
  private $rest_endpoint;
46
 
47
+ /**
48
+ * The logger.
49
+ *
50
+ * @var LoggerInterface
51
+ */
52
+ private $logger;
53
+
54
  /**
55
  * WebhookRegistrar constructor.
56
  *
57
  * @param WebhookFactory $webhook_factory The Webhook factory.
58
  * @param WebhookEndpoint $endpoint The Webhook endpoint.
59
  * @param IncomingWebhookEndpoint $rest_endpoint The WordPress Rest API endpoint.
60
+ * @param LoggerInterface $logger The logger.
61
  */
62
  public function __construct(
63
  WebhookFactory $webhook_factory,
64
  WebhookEndpoint $endpoint,
65
+ IncomingWebhookEndpoint $rest_endpoint,
66
+ LoggerInterface $logger
67
  ) {
68
 
69
  $this->webhook_factory = $webhook_factory;
70
  $this->endpoint = $endpoint;
71
  $this->rest_endpoint = $rest_endpoint;
72
+ $this->logger = $logger;
73
  }
74
 
75
  /**
92
  self::KEY,
93
  $created->to_array()
94
  );
95
+ $this->logger->info( 'Webhooks subscribed.' );
96
  return true;
97
  } catch ( RuntimeException $error ) {
98
+ $this->logger->error( 'Failed to subscribe webhooks: ' . $error->getMessage() );
99
  return false;
100
  }
101
  }
114
  $webhook = $this->webhook_factory->from_array( $data );
115
  $success = $this->endpoint->delete( $webhook );
116
  } catch ( RuntimeException $error ) {
117
+ $this->logger->error( 'Failed to delete webhooks: ' . $error->getMessage() );
118
  return false;
119
  }
120
 
121
  if ( $success ) {
122
  delete_option( self::KEY );
123
+ $this->logger->info( 'Webhooks deleted.' );
124
  }
125
  return $success;
126
  }
modules/ppcp-webhooks/webpack.config.js ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const path = require('path');
2
+ const isProduction = process.env.NODE_ENV === 'production';
3
+
4
+ module.exports = {
5
+ devtool: 'eval-source-map',
6
+ mode: isProduction ? 'production' : 'development',
7
+ target: 'web',
8
+ entry: {
9
+ 'status-page': path.resolve('./resources/js/status-page.js'),
10
+ 'status-page-style': path.resolve('./resources/css/status-page.scss'),
11
+ },
12
+ output: {
13
+ path: path.resolve(__dirname, 'assets/'),
14
+ filename: 'js/[name].js',
15
+ },
16
+ module: {
17
+ rules: [{
18
+ test: /\.js?$/,
19
+ exclude: /node_modules/,
20
+ loader: 'babel-loader',
21
+ },
22
+ {
23
+ test: /\.scss$/,
24
+ exclude: /node_modules/,
25
+ use: [
26
+ {
27
+ loader: 'file-loader',
28
+ options: {
29
+ name: 'css/[name].css',
30
+ }
31
+ },
32
+ {loader:'sass-loader'}
33
+ ]
34
+ }]
35
+ }
36
+ };
modules/ppcp-webhooks/yarn.lock ADDED
@@ -0,0 +1,2219 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2
+ # yarn lockfile v1
3
+
4
+
5
+ "@babel/code-frame@^7.14.5":
6
+ version "7.14.5"
7
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb"
8
+ integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==
9
+ dependencies:
10
+ "@babel/highlight" "^7.14.5"
11
+
12
+ "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.15.0":
13
+ version "7.15.0"
14
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176"
15
+ integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==
16
+
17
+ "@babel/core@^7.9.0":
18
+ version "7.15.5"
19
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9"
20
+ integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==
21
+ dependencies:
22
+ "@babel/code-frame" "^7.14.5"
23
+ "@babel/generator" "^7.15.4"
24
+ "@babel/helper-compilation-targets" "^7.15.4"
25
+ "@babel/helper-module-transforms" "^7.15.4"
26
+ "@babel/helpers" "^7.15.4"
27
+ "@babel/parser" "^7.15.5"
28
+ "@babel/template" "^7.15.4"
29
+ "@babel/traverse" "^7.15.4"
30
+ "@babel/types" "^7.15.4"
31
+ convert-source-map "^1.7.0"
32
+ debug "^4.1.0"
33
+ gensync "^1.0.0-beta.2"
34
+ json5 "^2.1.2"
35
+ semver "^6.3.0"
36
+ source-map "^0.5.0"
37
+
38
+ "@babel/generator@^7.15.4":
39
+ version "7.15.4"
40
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0"
41
+ integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==
42
+ dependencies:
43
+ "@babel/types" "^7.15.4"
44
+ jsesc "^2.5.1"
45
+ source-map "^0.5.0"
46
+
47
+ "@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4":
48
+ version "7.15.4"
49
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835"
50
+ integrity sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==
51
+ dependencies:
52
+ "@babel/types" "^7.15.4"
53
+
54
+ "@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5":
55
+ version "7.15.4"
56
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz#21ad815f609b84ee0e3058676c33cf6d1670525f"
57
+ integrity sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==
58
+ dependencies:
59
+ "@babel/helper-explode-assignable-expression" "^7.15.4"
60
+ "@babel/types" "^7.15.4"
61
+
62
+ "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.15.4":
63
+ version "7.15.4"
64
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9"
65
+ integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==
66
+ dependencies:
67
+ "@babel/compat-data" "^7.15.0"
68
+ "@babel/helper-validator-option" "^7.14.5"
69
+ browserslist "^4.16.6"
70
+ semver "^6.3.0"
71
+
72
+ "@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.4":
73
+ version "7.15.4"
74
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz#7f977c17bd12a5fba363cb19bea090394bf37d2e"
75
+ integrity sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==
76
+ dependencies:
77
+ "@babel/helper-annotate-as-pure" "^7.15.4"
78
+ "@babel/helper-function-name" "^7.15.4"
79
+ "@babel/helper-member-expression-to-functions" "^7.15.4"
80
+ "@babel/helper-optimise-call-expression" "^7.15.4"
81
+ "@babel/helper-replace-supers" "^7.15.4"
82
+ "@babel/helper-split-export-declaration" "^7.15.4"
83
+
84
+ "@babel/helper-create-regexp-features-plugin@^7.14.5":
85
+ version "7.14.5"
86
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4"
87
+ integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==
88
+ dependencies:
89
+ "@babel/helper-annotate-as-pure" "^7.14.5"
90
+ regexpu-core "^4.7.1"
91
+
92
+ "@babel/helper-define-polyfill-provider@^0.2.2":
93
+ version "0.2.3"
94
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6"
95
+ integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==
96
+ dependencies:
97
+ "@babel/helper-compilation-targets" "^7.13.0"
98
+ "@babel/helper-module-imports" "^7.12.13"
99
+ "@babel/helper-plugin-utils" "^7.13.0"
100
+ "@babel/traverse" "^7.13.0"
101
+ debug "^4.1.1"
102
+ lodash.debounce "^4.0.8"
103
+ resolve "^1.14.2"
104
+ semver "^6.1.2"
105
+
106
+ "@babel/helper-explode-assignable-expression@^7.15.4":
107
+ version "7.15.4"
108
+ resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz#f9aec9d219f271eaf92b9f561598ca6b2682600c"
109
+ integrity sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==
110
+ dependencies:
111
+ "@babel/types" "^7.15.4"
112
+
113
+ "@babel/helper-function-name@^7.14.5", "@babel/helper-function-name@^7.15.4":
114
+ version "7.15.4"
115
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc"
116
+ integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==
117
+ dependencies:
118
+ "@babel/helper-get-function-arity" "^7.15.4"
119
+ "@babel/template" "^7.15.4"
120
+ "@babel/types" "^7.15.4"
121
+
122
+ "@babel/helper-get-function-arity@^7.15.4":
123
+ version "7.15.4"
124
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b"
125
+ integrity sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==
126
+ dependencies:
127
+ "@babel/types" "^7.15.4"
128
+
129
+ "@babel/helper-hoist-variables@^7.15.4":
130
+ version "7.15.4"
131
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df"
132
+ integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==
133
+ dependencies:
134
+ "@babel/types" "^7.15.4"
135
+
136
+ "@babel/helper-member-expression-to-functions@^7.15.4":
137
+ version "7.15.4"
138
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef"
139
+ integrity sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==
140
+ dependencies:
141
+ "@babel/types" "^7.15.4"
142
+
143
+ "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.15.4":
144
+ version "7.15.4"
145
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f"
146
+ integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==
147
+ dependencies:
148
+ "@babel/types" "^7.15.4"
149
+
150
+ "@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4":
151
+ version "7.15.7"
152
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz#7da80c8cbc1f02655d83f8b79d25866afe50d226"
153
+ integrity sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw==
154
+ dependencies:
155
+ "@babel/helper-module-imports" "^7.15.4"
156
+ "@babel/helper-replace-supers" "^7.15.4"
157
+ "@babel/helper-simple-access" "^7.15.4"
158
+ "@babel/helper-split-export-declaration" "^7.15.4"
159
+ "@babel/helper-validator-identifier" "^7.15.7"
160
+ "@babel/template" "^7.15.4"
161
+ "@babel/traverse" "^7.15.4"
162
+ "@babel/types" "^7.15.6"
163
+
164
+ "@babel/helper-optimise-call-expression@^7.15.4":
165
+ version "7.15.4"
166
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171"
167
+ integrity sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==
168
+ dependencies:
169
+ "@babel/types" "^7.15.4"
170
+
171
+ "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
172
+ version "7.14.5"
173
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9"
174
+ integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==
175
+
176
+ "@babel/helper-remap-async-to-generator@^7.14.5", "@babel/helper-remap-async-to-generator@^7.15.4":
177
+ version "7.15.4"
178
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz#2637c0731e4c90fbf58ac58b50b2b5a192fc970f"
179
+ integrity sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==
180
+ dependencies:
181
+ "@babel/helper-annotate-as-pure" "^7.15.4"
182
+ "@babel/helper-wrap-function" "^7.15.4"
183
+ "@babel/types" "^7.15.4"
184
+
185
+ "@babel/helper-replace-supers@^7.14.5", "@babel/helper-replace-supers@^7.15.4":
186
+ version "7.15.4"
187
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a"
188
+ integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==
189
+ dependencies:
190
+ "@babel/helper-member-expression-to-functions" "^7.15.4"
191
+ "@babel/helper-optimise-call-expression" "^7.15.4"
192
+ "@babel/traverse" "^7.15.4"
193
+ "@babel/types" "^7.15.4"
194
+
195
+ "@babel/helper-simple-access@^7.15.4":
196
+ version "7.15.4"
197
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b"
198
+ integrity sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==
199
+ dependencies:
200
+ "@babel/types" "^7.15.4"
201
+
202
+ "@babel/helper-skip-transparent-expression-wrappers@^7.14.5", "@babel/helper-skip-transparent-expression-wrappers@^7.15.4":
203
+ version "7.15.4"
204
+ resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz#707dbdba1f4ad0fa34f9114fc8197aec7d5da2eb"
205
+ integrity sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==
206
+ dependencies:
207
+ "@babel/types" "^7.15.4"
208
+
209
+ "@babel/helper-split-export-declaration@^7.15.4":
210
+ version "7.15.4"
211
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257"
212
+ integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==
213
+ dependencies:
214
+ "@babel/types" "^7.15.4"
215
+
216
+ "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7":
217
+ version "7.15.7"
218
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389"
219
+ integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==
220
+
221
+ "@babel/helper-validator-option@^7.14.5":
222
+ version "7.14.5"
223
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3"
224
+ integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==
225
+
226
+ "@babel/helper-wrap-function@^7.15.4":
227
+ version "7.15.4"
228
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz#6f754b2446cfaf3d612523e6ab8d79c27c3a3de7"
229
+ integrity sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==
230
+ dependencies:
231
+ "@babel/helper-function-name" "^7.15.4"
232
+ "@babel/template" "^7.15.4"
233
+ "@babel/traverse" "^7.15.4"
234
+ "@babel/types" "^7.15.4"
235
+
236
+ "@babel/helpers@^7.15.4":
237
+ version "7.15.4"
238
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43"
239
+ integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==
240
+ dependencies:
241
+ "@babel/template" "^7.15.4"
242
+ "@babel/traverse" "^7.15.4"
243
+ "@babel/types" "^7.15.4"
244
+
245
+ "@babel/highlight@^7.14.5":
246
+ version "7.14.5"
247
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9"
248
+ integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==
249
+ dependencies:
250
+ "@babel/helper-validator-identifier" "^7.14.5"
251
+ chalk "^2.0.0"
252
+ js-tokens "^4.0.0"
253
+
254
+ "@babel/parser@^7.15.4", "@babel/parser@^7.15.5":
255
+ version "7.15.7"
256
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.7.tgz#0c3ed4a2eb07b165dfa85b3cc45c727334c4edae"
257
+ integrity sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==
258
+
259
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4":
260
+ version "7.15.4"
261
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz#dbdeabb1e80f622d9f0b583efb2999605e0a567e"
262
+ integrity sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==
263
+ dependencies:
264
+ "@babel/helper-plugin-utils" "^7.14.5"
265
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4"
266
+ "@babel/plugin-proposal-optional-chaining" "^7.14.5"
267
+
268
+ "@babel/plugin-proposal-async-generator-functions@^7.15.4":
269
+ version "7.15.4"
270
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.4.tgz#f82aabe96c135d2ceaa917feb9f5fca31635277e"
271
+ integrity sha512-2zt2g5vTXpMC3OmK6uyjvdXptbhBXfA77XGrd3gh93zwG8lZYBLOBImiGBEG0RANu3JqKEACCz5CGk73OJROBw==
272
+ dependencies:
273
+ "@babel/helper-plugin-utils" "^7.14.5"
274
+ "@babel/helper-remap-async-to-generator" "^7.15.4"
275
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
276
+
277
+ "@babel/plugin-proposal-class-properties@^7.14.5":
278
+ version "7.14.5"
279
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e"
280
+ integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==
281
+ dependencies:
282
+ "@babel/helper-create-class-features-plugin" "^7.14.5"
283
+ "@babel/helper-plugin-utils" "^7.14.5"
284
+
285
+ "@babel/plugin-proposal-class-static-block@^7.15.4":
286
+ version "7.15.4"
287
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz#3e7ca6128453c089e8b477a99f970c63fc1cb8d7"
288
+ integrity sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==
289
+ dependencies:
290
+ "@babel/helper-create-class-features-plugin" "^7.15.4"
291
+ "@babel/helper-plugin-utils" "^7.14.5"
292
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
293
+
294
+ "@babel/plugin-proposal-dynamic-import@^7.14.5":
295
+ version "7.14.5"
296
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz#0c6617df461c0c1f8fff3b47cd59772360101d2c"
297
+ integrity sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==
298
+ dependencies:
299
+ "@babel/helper-plugin-utils" "^7.14.5"
300
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
301
+
302
+ "@babel/plugin-proposal-export-namespace-from@^7.14.5":
303
+ version "7.14.5"
304
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz#dbad244310ce6ccd083072167d8cea83a52faf76"
305
+ integrity sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==
306
+ dependencies:
307
+ "@babel/helper-plugin-utils" "^7.14.5"
308
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
309
+
310
+ "@babel/plugin-proposal-json-strings@^7.14.5":
311
+ version "7.14.5"
312
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb"
313
+ integrity sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==
314
+ dependencies:
315
+ "@babel/helper-plugin-utils" "^7.14.5"
316
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
317
+
318
+ "@babel/plugin-proposal-logical-assignment-operators@^7.14.5":
319
+ version "7.14.5"
320
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz#6e6229c2a99b02ab2915f82571e0cc646a40c738"
321
+ integrity sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==
322
+ dependencies:
323
+ "@babel/helper-plugin-utils" "^7.14.5"
324
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
325
+
326
+ "@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5":
327
+ version "7.14.5"
328
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6"
329
+ integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==
330
+ dependencies:
331
+ "@babel/helper-plugin-utils" "^7.14.5"
332
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
333
+
334
+ "@babel/plugin-proposal-numeric-separator@^7.14.5":
335
+ version "7.14.5"
336
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18"
337
+ integrity sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==
338
+ dependencies:
339
+ "@babel/helper-plugin-utils" "^7.14.5"
340
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
341
+
342
+ "@babel/plugin-proposal-object-rest-spread@^7.15.6":
343
+ version "7.15.6"
344
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz#ef68050c8703d07b25af402cb96cf7f34a68ed11"
345
+ integrity sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==
346
+ dependencies:
347
+ "@babel/compat-data" "^7.15.0"
348
+ "@babel/helper-compilation-targets" "^7.15.4"
349
+ "@babel/helper-plugin-utils" "^7.14.5"
350
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
351
+ "@babel/plugin-transform-parameters" "^7.15.4"
352
+
353
+ "@babel/plugin-proposal-optional-catch-binding@^7.14.5":
354
+ version "7.14.5"
355
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c"
356
+ integrity sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==
357
+ dependencies:
358
+ "@babel/helper-plugin-utils" "^7.14.5"
359
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
360
+
361
+ "@babel/plugin-proposal-optional-chaining@^7.14.5":
362
+ version "7.14.5"
363
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603"
364
+ integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==
365
+ dependencies:
366
+ "@babel/helper-plugin-utils" "^7.14.5"
367
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5"
368
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
369
+
370
+ "@babel/plugin-proposal-private-methods@^7.14.5":
371
+ version "7.14.5"
372
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d"
373
+ integrity sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==
374
+ dependencies:
375
+ "@babel/helper-create-class-features-plugin" "^7.14.5"
376
+ "@babel/helper-plugin-utils" "^7.14.5"
377
+
378
+ "@babel/plugin-proposal-private-property-in-object@^7.15.4":
379
+ version "7.15.4"
380
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz#55c5e3b4d0261fd44fe637e3f624cfb0f484e3e5"
381
+ integrity sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==
382
+ dependencies:
383
+ "@babel/helper-annotate-as-pure" "^7.15.4"
384
+ "@babel/helper-create-class-features-plugin" "^7.15.4"
385
+ "@babel/helper-plugin-utils" "^7.14.5"
386
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
387
+
388
+ "@babel/plugin-proposal-unicode-property-regex@^7.14.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
389
+ version "7.14.5"
390
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8"
391
+ integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==
392
+ dependencies:
393
+ "@babel/helper-create-regexp-features-plugin" "^7.14.5"
394
+ "@babel/helper-plugin-utils" "^7.14.5"
395
+
396
+ "@babel/plugin-syntax-async-generators@^7.8.4":
397
+ version "7.8.4"
398
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
399
+ integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
400
+ dependencies:
401
+ "@babel/helper-plugin-utils" "^7.8.0"
402
+
403
+ "@babel/plugin-syntax-class-properties@^7.12.13":
404
+ version "7.12.13"
405
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
406
+ integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
407
+ dependencies:
408
+ "@babel/helper-plugin-utils" "^7.12.13"
409
+
410
+ "@babel/plugin-syntax-class-static-block@^7.14.5":
411
+ version "7.14.5"
412
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406"
413
+ integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==
414
+ dependencies:
415
+ "@babel/helper-plugin-utils" "^7.14.5"
416
+
417
+ "@babel/plugin-syntax-dynamic-import@^7.8.3":
418
+ version "7.8.3"
419
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
420
+ integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
421
+ dependencies:
422
+ "@babel/helper-plugin-utils" "^7.8.0"
423
+
424
+ "@babel/plugin-syntax-export-namespace-from@^7.8.3":
425
+ version "7.8.3"
426
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
427
+ integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
428
+ dependencies:
429
+ "@babel/helper-plugin-utils" "^7.8.3"
430
+
431
+ "@babel/plugin-syntax-json-strings@^7.8.3":
432
+ version "7.8.3"
433
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
434
+ integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
435
+ dependencies:
436
+ "@babel/helper-plugin-utils" "^7.8.0"
437
+
438
+ "@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
439
+ version "7.10.4"
440
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
441
+ integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
442
+ dependencies:
443
+ "@babel/helper-plugin-utils" "^7.10.4"
444
+
445
+ "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
446
+ version "7.8.3"
447
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
448
+ integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
449
+ dependencies:
450
+ "@babel/helper-plugin-utils" "^7.8.0"
451
+
452
+ "@babel/plugin-syntax-numeric-separator@^7.10.4":
453
+ version "7.10.4"
454
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
455
+ integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
456
+ dependencies:
457
+ "@babel/helper-plugin-utils" "^7.10.4"
458
+
459
+ "@babel/plugin-syntax-object-rest-spread@^7.8.3":
460
+ version "7.8.3"
461
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
462
+ integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
463
+ dependencies:
464
+ "@babel/helper-plugin-utils" "^7.8.0"
465
+
466
+ "@babel/plugin-syntax-optional-catch-binding@^7.8.3":
467
+ version "7.8.3"
468
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
469
+ integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
470
+ dependencies:
471
+ "@babel/helper-plugin-utils" "^7.8.0"
472
+
473
+ "@babel/plugin-syntax-optional-chaining@^7.8.3":
474
+ version "7.8.3"
475
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
476
+ integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
477
+ dependencies:
478
+ "@babel/helper-plugin-utils" "^7.8.0"
479
+
480
+ "@babel/plugin-syntax-private-property-in-object@^7.14.5":
481
+ version "7.14.5"
482
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad"
483
+ integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==
484
+ dependencies:
485
+ "@babel/helper-plugin-utils" "^7.14.5"
486
+
487
+ "@babel/plugin-syntax-top-level-await@^7.14.5":
488
+ version "7.14.5"
489
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
490
+ integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
491
+ dependencies:
492
+ "@babel/helper-plugin-utils" "^7.14.5"
493
+
494
+ "@babel/plugin-transform-arrow-functions@^7.14.5":
495
+ version "7.14.5"
496
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a"
497
+ integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==
498
+ dependencies:
499
+ "@babel/helper-plugin-utils" "^7.14.5"
500
+
501
+ "@babel/plugin-transform-async-to-generator@^7.14.5":
502
+ version "7.14.5"
503
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67"
504
+ integrity sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==
505
+ dependencies:
506
+ "@babel/helper-module-imports" "^7.14.5"
507
+ "@babel/helper-plugin-utils" "^7.14.5"
508
+ "@babel/helper-remap-async-to-generator" "^7.14.5"
509
+
510
+ "@babel/plugin-transform-block-scoped-functions@^7.14.5":
511
+ version "7.14.5"
512
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4"
513
+ integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==
514
+ dependencies:
515
+ "@babel/helper-plugin-utils" "^7.14.5"
516
+
517
+ "@babel/plugin-transform-block-scoping@^7.15.3":
518
+ version "7.15.3"
519
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf"
520
+ integrity sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==
521
+ dependencies:
522
+ "@babel/helper-plugin-utils" "^7.14.5"
523
+
524
+ "@babel/plugin-transform-classes@^7.15.4":
525
+ version "7.15.4"
526
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz#50aee17aaf7f332ae44e3bce4c2e10534d5d3bf1"
527
+ integrity sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==
528
+ dependencies:
529
+ "@babel/helper-annotate-as-pure" "^7.15.4"
530
+ "@babel/helper-function-name" "^7.15.4"
531
+ "@babel/helper-optimise-call-expression" "^7.15.4"
532
+ "@babel/helper-plugin-utils" "^7.14.5"
533
+ "@babel/helper-replace-supers" "^7.15.4"
534
+ "@babel/helper-split-export-declaration" "^7.15.4"
535
+ globals "^11.1.0"
536
+
537
+ "@babel/plugin-transform-computed-properties@^7.14.5":
538
+ version "7.14.5"
539
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f"
540
+ integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==
541
+ dependencies:
542
+ "@babel/helper-plugin-utils" "^7.14.5"
543
+
544
+ "@babel/plugin-transform-destructuring@^7.14.7":
545
+ version "7.14.7"
546
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576"
547
+ integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==
548
+ dependencies:
549
+ "@babel/helper-plugin-utils" "^7.14.5"
550
+
551
+ "@babel/plugin-transform-dotall-regex@^7.14.5", "@babel/plugin-transform-dotall-regex@^7.4.4":
552
+ version "7.14.5"
553
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a"
554
+ integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==
555
+ dependencies:
556
+ "@babel/helper-create-regexp-features-plugin" "^7.14.5"
557
+ "@babel/helper-plugin-utils" "^7.14.5"
558
+
559
+ "@babel/plugin-transform-duplicate-keys@^7.14.5":
560
+ version "7.14.5"
561
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954"
562
+ integrity sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==
563
+ dependencies:
564
+ "@babel/helper-plugin-utils" "^7.14.5"
565
+
566
+ "@babel/plugin-transform-exponentiation-operator@^7.14.5":
567
+ version "7.14.5"
568
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493"
569
+ integrity sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==
570
+ dependencies:
571
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5"
572
+ "@babel/helper-plugin-utils" "^7.14.5"
573
+
574
+ "@babel/plugin-transform-for-of@^7.15.4":
575
+ version "7.15.4"
576
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz#25c62cce2718cfb29715f416e75d5263fb36a8c2"
577
+ integrity sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==
578
+ dependencies:
579
+ "@babel/helper-plugin-utils" "^7.14.5"
580
+
581
+ "@babel/plugin-transform-function-name@^7.14.5":
582
+ version "7.14.5"
583
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2"
584
+ integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==
585
+ dependencies:
586
+ "@babel/helper-function-name" "^7.14.5"
587
+ "@babel/helper-plugin-utils" "^7.14.5"
588
+
589
+ "@babel/plugin-transform-literals@^7.14.5":
590
+ version "7.14.5"
591
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78"
592
+ integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==
593
+ dependencies:
594
+ "@babel/helper-plugin-utils" "^7.14.5"
595
+
596
+ "@babel/plugin-transform-member-expression-literals@^7.14.5":
597
+ version "7.14.5"
598
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7"
599
+ integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==
600
+ dependencies:
601
+ "@babel/helper-plugin-utils" "^7.14.5"
602
+
603
+ "@babel/plugin-transform-modules-amd@^7.14.5":
604
+ version "7.14.5"
605
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7"
606
+ integrity sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==
607
+ dependencies:
608
+ "@babel/helper-module-transforms" "^7.14.5"
609
+ "@babel/helper-plugin-utils" "^7.14.5"
610
+ babel-plugin-dynamic-import-node "^2.3.3"
611
+
612
+ "@babel/plugin-transform-modules-commonjs@^7.15.4":
613
+ version "7.15.4"
614
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz#8201101240eabb5a76c08ef61b2954f767b6b4c1"
615
+ integrity sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==
616
+ dependencies:
617
+ "@babel/helper-module-transforms" "^7.15.4"
618
+ "@babel/helper-plugin-utils" "^7.14.5"
619
+ "@babel/helper-simple-access" "^7.15.4"
620
+ babel-plugin-dynamic-import-node "^2.3.3"
621
+
622
+ "@babel/plugin-transform-modules-systemjs@^7.15.4":
623
+ version "7.15.4"
624
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz#b42890c7349a78c827719f1d2d0cd38c7d268132"
625
+ integrity sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==
626
+ dependencies:
627
+ "@babel/helper-hoist-variables" "^7.15.4"
628
+ "@babel/helper-module-transforms" "^7.15.4"
629
+ "@babel/helper-plugin-utils" "^7.14.5"
630
+ "@babel/helper-validator-identifier" "^7.14.9"
631
+ babel-plugin-dynamic-import-node "^2.3.3"
632
+
633
+ "@babel/plugin-transform-modules-umd@^7.14.5":
634
+ version "7.14.5"
635
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0"
636
+ integrity sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==
637
+ dependencies:
638
+ "@babel/helper-module-transforms" "^7.14.5"
639
+ "@babel/helper-plugin-utils" "^7.14.5"
640
+
641
+ "@babel/plugin-transform-named-capturing-groups-regex@^7.14.9":
642
+ version "7.14.9"
643
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz#c68f5c5d12d2ebaba3762e57c2c4f6347a46e7b2"
644
+ integrity sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==
645
+ dependencies:
646
+ "@babel/helper-create-regexp-features-plugin" "^7.14.5"
647
+
648
+ "@babel/plugin-transform-new-target@^7.14.5":
649
+ version "7.14.5"
650
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8"
651
+ integrity sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==
652
+ dependencies:
653
+ "@babel/helper-plugin-utils" "^7.14.5"
654
+
655
+ "@babel/plugin-transform-object-super@^7.14.5":
656
+ version "7.14.5"
657
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45"
658
+ integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==
659
+ dependencies:
660
+ "@babel/helper-plugin-utils" "^7.14.5"
661
+ "@babel/helper-replace-supers" "^7.14.5"
662
+
663
+ "@babel/plugin-transform-parameters@^7.15.4":
664
+ version "7.15.4"
665
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz#5f2285cc3160bf48c8502432716b48504d29ed62"
666
+ integrity sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==
667
+ dependencies:
668
+ "@babel/helper-plugin-utils" "^7.14.5"
669
+
670
+ "@babel/plugin-transform-property-literals@^7.14.5":
671
+ version "7.14.5"
672
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34"
673
+ integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==
674
+ dependencies:
675
+ "@babel/helper-plugin-utils" "^7.14.5"
676
+
677
+ "@babel/plugin-transform-regenerator@^7.14.5":
678
+ version "7.14.5"
679
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz#9676fd5707ed28f522727c5b3c0aa8544440b04f"
680
+ integrity sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==
681
+ dependencies:
682
+ regenerator-transform "^0.14.2"
683
+
684
+ "@babel/plugin-transform-reserved-words@^7.14.5":
685
+ version "7.14.5"
686
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304"
687
+ integrity sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==
688
+ dependencies:
689
+ "@babel/helper-plugin-utils" "^7.14.5"
690
+
691
+ "@babel/plugin-transform-shorthand-properties@^7.14.5":
692
+ version "7.14.5"
693
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58"
694
+ integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==
695
+ dependencies:
696
+ "@babel/helper-plugin-utils" "^7.14.5"
697
+
698
+ "@babel/plugin-transform-spread@^7.14.6":
699
+ version "7.14.6"
700
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz#6bd40e57fe7de94aa904851963b5616652f73144"
701
+ integrity sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag==
702
+ dependencies:
703
+ "@babel/helper-plugin-utils" "^7.14.5"
704
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5"
705
+
706
+ "@babel/plugin-transform-sticky-regex@^7.14.5":
707
+ version "7.14.5"
708
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9"
709
+ integrity sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==
710
+ dependencies:
711
+ "@babel/helper-plugin-utils" "^7.14.5"
712
+
713
+ "@babel/plugin-transform-template-literals@^7.14.5":
714
+ version "7.14.5"
715
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93"
716
+ integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==
717
+ dependencies:
718
+ "@babel/helper-plugin-utils" "^7.14.5"
719
+
720
+ "@babel/plugin-transform-typeof-symbol@^7.14.5":
721
+ version "7.14.5"
722
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4"
723
+ integrity sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==
724
+ dependencies:
725
+ "@babel/helper-plugin-utils" "^7.14.5"
726
+
727
+ "@babel/plugin-transform-unicode-escapes@^7.14.5":
728
+ version "7.14.5"
729
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b"
730
+ integrity sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==
731
+ dependencies:
732
+ "@babel/helper-plugin-utils" "^7.14.5"
733
+
734
+ "@babel/plugin-transform-unicode-regex@^7.14.5":
735
+ version "7.14.5"
736
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e"
737
+ integrity sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==
738
+ dependencies:
739
+ "@babel/helper-create-regexp-features-plugin" "^7.14.5"
740
+ "@babel/helper-plugin-utils" "^7.14.5"
741
+
742
+ "@babel/preset-env@^7.9.5":
743
+ version "7.15.6"
744
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.6.tgz#0f3898db9d63d320f21b17380d8462779de57659"
745
+ integrity sha512-L+6jcGn7EWu7zqaO2uoTDjjMBW+88FXzV8KvrBl2z6MtRNxlsmUNRlZPaNNPUTgqhyC5DHNFk/2Jmra+ublZWw==
746
+ dependencies:
747
+ "@babel/compat-data" "^7.15.0"
748
+ "@babel/helper-compilation-targets" "^7.15.4"
749
+ "@babel/helper-plugin-utils" "^7.14.5"
750
+ "@babel/helper-validator-option" "^7.14.5"
751
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.15.4"
752
+ "@babel/plugin-proposal-async-generator-functions" "^7.15.4"
753
+ "@babel/plugin-proposal-class-properties" "^7.14.5"
754
+ "@babel/plugin-proposal-class-static-block" "^7.15.4"
755
+ "@babel/plugin-proposal-dynamic-import" "^7.14.5"
756
+ "@babel/plugin-proposal-export-namespace-from" "^7.14.5"
757
+ "@babel/plugin-proposal-json-strings" "^7.14.5"
758
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5"
759
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5"
760
+ "@babel/plugin-proposal-numeric-separator" "^7.14.5"
761
+ "@babel/plugin-proposal-object-rest-spread" "^7.15.6"
762
+ "@babel/plugin-proposal-optional-catch-binding" "^7.14.5"
763
+ "@babel/plugin-proposal-optional-chaining" "^7.14.5"
764
+ "@babel/plugin-proposal-private-methods" "^7.14.5"
765
+ "@babel/plugin-proposal-private-property-in-object" "^7.15.4"
766
+ "@babel/plugin-proposal-unicode-property-regex" "^7.14.5"
767
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
768
+ "@babel/plugin-syntax-class-properties" "^7.12.13"
769
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
770
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
771
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
772
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
773
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
774
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
775
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
776
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
777
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
778
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
779
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
780
+ "@babel/plugin-syntax-top-level-await" "^7.14.5"
781
+ "@babel/plugin-transform-arrow-functions" "^7.14.5"
782
+ "@babel/plugin-transform-async-to-generator" "^7.14.5"
783
+ "@babel/plugin-transform-block-scoped-functions" "^7.14.5"
784
+ "@babel/plugin-transform-block-scoping" "^7.15.3"
785
+ "@babel/plugin-transform-classes" "^7.15.4"
786
+ "@babel/plugin-transform-computed-properties" "^7.14.5"
787
+ "@babel/plugin-transform-destructuring" "^7.14.7"
788
+ "@babel/plugin-transform-dotall-regex" "^7.14.5"
789
+ "@babel/plugin-transform-duplicate-keys" "^7.14.5"
790
+ "@babel/plugin-transform-exponentiation-operator" "^7.14.5"
791
+ "@babel/plugin-transform-for-of" "^7.15.4"
792
+ "@babel/plugin-transform-function-name" "^7.14.5"
793
+ "@babel/plugin-transform-literals" "^7.14.5"
794
+ "@babel/plugin-transform-member-expression-literals" "^7.14.5"
795
+ "@babel/plugin-transform-modules-amd" "^7.14.5"
796
+ "@babel/plugin-transform-modules-commonjs" "^7.15.4"
797
+ "@babel/plugin-transform-modules-systemjs" "^7.15.4"
798
+ "@babel/plugin-transform-modules-umd" "^7.14.5"
799
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.9"
800
+ "@babel/plugin-transform-new-target" "^7.14.5"
801
+ "@babel/plugin-transform-object-super" "^7.14.5"
802
+ "@babel/plugin-transform-parameters" "^7.15.4"
803
+ "@babel/plugin-transform-property-literals" "^7.14.5"
804
+ "@babel/plugin-transform-regenerator" "^7.14.5"
805
+ "@babel/plugin-transform-reserved-words" "^7.14.5"
806
+ "@babel/plugin-transform-shorthand-properties" "^7.14.5"
807
+ "@babel/plugin-transform-spread" "^7.14.6"
808
+ "@babel/plugin-transform-sticky-regex" "^7.14.5"
809
+ "@babel/plugin-transform-template-literals" "^7.14.5"
810
+ "@babel/plugin-transform-typeof-symbol" "^7.14.5"
811
+ "@babel/plugin-transform-unicode-escapes" "^7.14.5"
812
+ "@babel/plugin-transform-unicode-regex" "^7.14.5"
813
+ "@babel/preset-modules" "^0.1.4"
814
+ "@babel/types" "^7.15.6"
815
+ babel-plugin-polyfill-corejs2 "^0.2.2"
816
+ babel-plugin-polyfill-corejs3 "^0.2.2"
817
+ babel-plugin-polyfill-regenerator "^0.2.2"
818
+ core-js-compat "^3.16.0"
819
+ semver "^6.3.0"
820
+
821
+ "@babel/preset-modules@^0.1.4":
822
+ version "0.1.4"
823
+ resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e"
824
+ integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==
825
+ dependencies:
826
+ "@babel/helper-plugin-utils" "^7.0.0"
827
+ "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
828
+ "@babel/plugin-transform-dotall-regex" "^7.4.4"
829
+ "@babel/types" "^7.4.4"
830
+ esutils "^2.0.2"
831
+
832
+ "@babel/runtime@^7.8.4":
833
+ version "7.15.4"
834
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a"
835
+ integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==
836
+ dependencies:
837
+ regenerator-runtime "^0.13.4"
838
+
839
+ "@babel/template@^7.15.4":
840
+ version "7.15.4"
841
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194"
842
+ integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==
843
+ dependencies:
844
+ "@babel/code-frame" "^7.14.5"
845
+ "@babel/parser" "^7.15.4"
846
+ "@babel/types" "^7.15.4"
847
+
848
+ "@babel/traverse@^7.13.0", "@babel/traverse@^7.15.4":
849
+ version "7.15.4"
850
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d"
851
+ integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==
852
+ dependencies:
853
+ "@babel/code-frame" "^7.14.5"
854
+ "@babel/generator" "^7.15.4"
855
+ "@babel/helper-function-name" "^7.15.4"
856
+ "@babel/helper-hoist-variables" "^7.15.4"
857
+ "@babel/helper-split-export-declaration" "^7.15.4"
858
+ "@babel/parser" "^7.15.4"
859
+ "@babel/types" "^7.15.4"
860
+ debug "^4.1.0"
861
+ globals "^11.1.0"
862
+
863
+ "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.4.4":
864
+ version "7.15.6"
865
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f"
866
+ integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==
867
+ dependencies:
868
+ "@babel/helper-validator-identifier" "^7.14.9"
869
+ to-fast-properties "^2.0.0"
870
+
871
+ "@discoveryjs/json-ext@^0.5.0":
872
+ version "0.5.5"
873
+ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz#9283c9ce5b289a3c4f61c12757469e59377f81f3"
874
+ integrity sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==
875
+
876
+ "@types/eslint-scope@^3.7.0":
877
+ version "3.7.1"
878
+ resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.1.tgz#8dc390a7b4f9dd9f1284629efce982e41612116e"
879
+ integrity sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==
880
+ dependencies:
881
+ "@types/eslint" "*"
882
+ "@types/estree" "*"
883
+
884
+ "@types/eslint@*":
885
+ version "7.28.0"
886
+ resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.0.tgz#7e41f2481d301c68e14f483fe10b017753ce8d5a"
887
+ integrity sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==
888
+ dependencies:
889
+ "@types/estree" "*"
890
+ "@types/json-schema" "*"
891
+
892
+ "@types/estree@*", "@types/estree@^0.0.50":
893
+ version "0.0.50"
894
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83"
895
+ integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==
896
+
897
+ "@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8":
898
+ version "7.0.9"
899
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
900
+ integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
901
+
902
+ "@types/node@*":
903
+ version "16.10.1"
904
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.1.tgz#f3647623199ca920960006b3dccf633ea905f243"
905
+ integrity sha512-4/Z9DMPKFexZj/Gn3LylFgamNKHm4K3QDi0gz9B26Uk0c8izYf97B5fxfpspMNkWlFupblKM/nV8+NA9Ffvr+w==
906
+
907
+ "@webassemblyjs/ast@1.11.1":
908
+ version "1.11.1"
909
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
910
+ integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==
911
+ dependencies:
912
+ "@webassemblyjs/helper-numbers" "1.11.1"
913
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
914
+
915
+ "@webassemblyjs/floating-point-hex-parser@1.11.1":
916
+ version "1.11.1"
917
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f"
918
+ integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==
919
+
920
+ "@webassemblyjs/helper-api-error@1.11.1":
921
+ version "1.11.1"
922
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16"
923
+ integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==
924
+
925
+ "@webassemblyjs/helper-buffer@1.11.1":
926
+ version "1.11.1"
927
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5"
928
+ integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==
929
+
930
+ "@webassemblyjs/helper-numbers@1.11.1":
931
+ version "1.11.1"
932
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae"
933
+ integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==
934
+ dependencies:
935
+ "@webassemblyjs/floating-point-hex-parser" "1.11.1"
936
+ "@webassemblyjs/helper-api-error" "1.11.1"
937
+ "@xtuc/long" "4.2.2"
938
+
939
+ "@webassemblyjs/helper-wasm-bytecode@1.11.1":
940
+ version "1.11.1"
941
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1"
942
+ integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==
943
+
944
+ "@webassemblyjs/helper-wasm-section@1.11.1":
945
+ version "1.11.1"
946
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a"
947
+ integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==
948
+ dependencies:
949
+ "@webassemblyjs/ast" "1.11.1"
950
+ "@webassemblyjs/helper-buffer" "1.11.1"
951
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
952
+ "@webassemblyjs/wasm-gen" "1.11.1"
953
+
954
+ "@webassemblyjs/ieee754@1.11.1":
955
+ version "1.11.1"
956
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614"
957
+ integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==
958
+ dependencies:
959
+ "@xtuc/ieee754" "^1.2.0"
960
+
961
+ "@webassemblyjs/leb128@1.11.1":
962
+ version "1.11.1"
963
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5"
964
+ integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==
965
+ dependencies:
966
+ "@xtuc/long" "4.2.2"
967
+
968
+ "@webassemblyjs/utf8@1.11.1":
969
+ version "1.11.1"
970
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff"
971
+ integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==
972
+
973
+ "@webassemblyjs/wasm-edit@1.11.1":
974
+ version "1.11.1"
975
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6"
976
+ integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==
977
+ dependencies:
978
+ "@webassemblyjs/ast" "1.11.1"
979
+ "@webassemblyjs/helper-buffer" "1.11.1"
980
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
981
+ "@webassemblyjs/helper-wasm-section" "1.11.1"
982
+ "@webassemblyjs/wasm-gen" "1.11.1"
983
+ "@webassemblyjs/wasm-opt" "1.11.1"
984
+ "@webassemblyjs/wasm-parser" "1.11.1"
985
+ "@webassemblyjs/wast-printer" "1.11.1"
986
+
987
+ "@webassemblyjs/wasm-gen@1.11.1":
988
+ version "1.11.1"
989
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76"
990
+ integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==
991
+ dependencies:
992
+ "@webassemblyjs/ast" "1.11.1"
993
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
994
+ "@webassemblyjs/ieee754" "1.11.1"
995
+ "@webassemblyjs/leb128" "1.11.1"
996
+ "@webassemblyjs/utf8" "1.11.1"
997
+
998
+ "@webassemblyjs/wasm-opt@1.11.1":
999
+ version "1.11.1"
1000
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2"
1001
+ integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==
1002
+ dependencies:
1003
+ "@webassemblyjs/ast" "1.11.1"
1004
+ "@webassemblyjs/helper-buffer" "1.11.1"
1005
+ "@webassemblyjs/wasm-gen" "1.11.1"
1006
+ "@webassemblyjs/wasm-parser" "1.11.1"
1007
+
1008
+ "@webassemblyjs/wasm-parser@1.11.1":
1009
+ version "1.11.1"
1010
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199"
1011
+ integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==
1012
+ dependencies:
1013
+ "@webassemblyjs/ast" "1.11.1"
1014
+ "@webassemblyjs/helper-api-error" "1.11.1"
1015
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
1016
+ "@webassemblyjs/ieee754" "1.11.1"
1017
+ "@webassemblyjs/leb128" "1.11.1"
1018
+ "@webassemblyjs/utf8" "1.11.1"
1019
+
1020
+ "@webassemblyjs/wast-printer@1.11.1":
1021
+ version "1.11.1"
1022
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0"
1023
+ integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==
1024
+ dependencies:
1025
+ "@webassemblyjs/ast" "1.11.1"
1026
+ "@xtuc/long" "4.2.2"
1027
+
1028
+ "@webpack-cli/configtest@^1.0.4":
1029
+ version "1.0.4"
1030
+ resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.4.tgz#f03ce6311c0883a83d04569e2c03c6238316d2aa"
1031
+ integrity sha512-cs3XLy+UcxiP6bj0A6u7MLLuwdXJ1c3Dtc0RkKg+wiI1g/Ti1om8+/2hc2A2B60NbBNAbMgyBMHvyymWm/j4wQ==
1032
+
1033
+ "@webpack-cli/info@^1.3.0":
1034
+ version "1.3.0"
1035
+ resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.3.0.tgz#9d78a31101a960997a4acd41ffd9b9300627fe2b"
1036
+ integrity sha512-ASiVB3t9LOKHs5DyVUcxpraBXDOKubYu/ihHhU+t1UPpxsivg6Od2E2qU4gJCekfEddzRBzHhzA/Acyw/mlK/w==
1037
+ dependencies:
1038
+ envinfo "^7.7.3"
1039
+
1040
+ "@webpack-cli/serve@^1.5.2":
1041
+ version "1.5.2"
1042
+ resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.5.2.tgz#ea584b637ff63c5a477f6f21604b5a205b72c9ec"
1043
+ integrity sha512-vgJ5OLWadI8aKjDlOH3rb+dYyPd2GTZuQC/Tihjct6F9GpXGZINo3Y/IVuZVTM1eDQB+/AOsjPUWH/WySDaXvw==
1044
+
1045
+ "@xtuc/ieee754@^1.2.0":
1046
+ version "1.2.0"
1047
+ resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
1048
+ integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
1049
+
1050
+ "@xtuc/long@4.2.2":
1051
+ version "4.2.2"
1052
+ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
1053
+ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
1054
+
1055
+ acorn-import-assertions@^1.7.6:
1056
+ version "1.7.6"
1057
+ resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz#580e3ffcae6770eebeec76c3b9723201e9d01f78"
1058
+ integrity sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA==
1059
+
1060
+ acorn@^8.4.1:
1061
+ version "8.5.0"
1062
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2"
1063
+ integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==
1064
+
1065
+ ajv-keywords@^3.5.2:
1066
+ version "3.5.2"
1067
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
1068
+ integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
1069
+
1070
+ ajv@^6.12.4, ajv@^6.12.5:
1071
+ version "6.12.6"
1072
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
1073
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
1074
+ dependencies:
1075
+ fast-deep-equal "^3.1.1"
1076
+ fast-json-stable-stringify "^2.0.0"
1077
+ json-schema-traverse "^0.4.1"
1078
+ uri-js "^4.2.2"
1079
+
1080
+ ansi-styles@^3.2.1:
1081
+ version "3.2.1"
1082
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
1083
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
1084
+ dependencies:
1085
+ color-convert "^1.9.0"
1086
+
1087
+ anymatch@~3.1.2:
1088
+ version "3.1.2"
1089
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
1090
+ integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
1091
+ dependencies:
1092
+ normalize-path "^3.0.0"
1093
+ picomatch "^2.0.4"
1094
+
1095
+ babel-loader@^8.1.0:
1096
+ version "8.2.2"
1097
+ resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81"
1098
+ integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==
1099
+ dependencies:
1100
+ find-cache-dir "^3.3.1"
1101
+ loader-utils "^1.4.0"
1102
+ make-dir "^3.1.0"
1103
+ schema-utils "^2.6.5"
1104
+
1105
+ babel-plugin-dynamic-import-node@^2.3.3:
1106
+ version "2.3.3"
1107
+ resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
1108
+ integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
1109
+ dependencies:
1110
+ object.assign "^4.1.0"
1111
+
1112
+ babel-plugin-polyfill-corejs2@^0.2.2:
1113
+ version "0.2.2"
1114
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327"
1115
+ integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==
1116
+ dependencies:
1117
+ "@babel/compat-data" "^7.13.11"
1118
+ "@babel/helper-define-polyfill-provider" "^0.2.2"
1119
+ semver "^6.1.1"
1120
+
1121
+ babel-plugin-polyfill-corejs3@^0.2.2:
1122
+ version "0.2.5"
1123
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz#2779846a16a1652244ae268b1e906ada107faf92"
1124
+ integrity sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==
1125
+ dependencies:
1126
+ "@babel/helper-define-polyfill-provider" "^0.2.2"
1127
+ core-js-compat "^3.16.2"
1128
+
1129
+ babel-plugin-polyfill-regenerator@^0.2.2:
1130
+ version "0.2.2"
1131
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077"
1132
+ integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==
1133
+ dependencies:
1134
+ "@babel/helper-define-polyfill-provider" "^0.2.2"
1135
+
1136
+ babel-plugin-syntax-object-rest-spread@^6.8.0:
1137
+ version "6.13.0"
1138
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
1139
+ integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=
1140
+
1141
+ babel-plugin-transform-object-rest-spread@^6.26.0:
1142
+ version "6.26.0"
1143
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06"
1144
+ integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=
1145
+ dependencies:
1146
+ babel-plugin-syntax-object-rest-spread "^6.8.0"
1147
+ babel-runtime "^6.26.0"
1148
+
1149
+ babel-runtime@^6.26.0:
1150
+ version "6.26.0"
1151
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
1152
+ integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
1153
+ dependencies:
1154
+ core-js "^2.4.0"
1155
+ regenerator-runtime "^0.11.0"
1156
+
1157
+ big.js@^5.2.2:
1158
+ version "5.2.2"
1159
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
1160
+ integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
1161
+
1162
+ binary-extensions@^2.0.0:
1163
+ version "2.2.0"
1164
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
1165
+ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
1166
+
1167
+ braces@~3.0.2:
1168
+ version "3.0.2"
1169
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
1170
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
1171
+ dependencies:
1172
+ fill-range "^7.0.1"
1173
+
1174
+ browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.1:
1175
+ version "4.17.1"
1176
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.1.tgz#a98d104f54af441290b7d592626dd541fa642eb9"
1177
+ integrity sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ==
1178
+ dependencies:
1179
+ caniuse-lite "^1.0.30001259"
1180
+ electron-to-chromium "^1.3.846"
1181
+ escalade "^3.1.1"
1182
+ nanocolors "^0.1.5"
1183
+ node-releases "^1.1.76"
1184
+
1185
+ buffer-from@^1.0.0:
1186
+ version "1.1.2"
1187
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
1188
+ integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
1189
+
1190
+ call-bind@^1.0.0:
1191
+ version "1.0.2"
1192
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
1193
+ integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
1194
+ dependencies:
1195
+ function-bind "^1.1.1"
1196
+ get-intrinsic "^1.0.2"
1197
+
1198
+ caniuse-lite@^1.0.30001259:
1199
+ version "1.0.30001261"
1200
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001261.tgz#96d89813c076ea061209a4e040d8dcf0c66a1d01"
1201
+ integrity sha512-vM8D9Uvp7bHIN0fZ2KQ4wnmYFpJo/Etb4Vwsuc+ka0tfGDHvOPrFm6S/7CCNLSOkAUjenT2HnUPESdOIL91FaA==
1202
+
1203
+ chalk@^2.0.0:
1204
+ version "2.4.2"
1205
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
1206
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
1207
+ dependencies:
1208
+ ansi-styles "^3.2.1"
1209
+ escape-string-regexp "^1.0.5"
1210
+ supports-color "^5.3.0"
1211
+
1212
+ "chokidar@>=3.0.0 <4.0.0":
1213
+ version "3.5.2"
1214
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
1215
+ integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
1216
+ dependencies:
1217
+ anymatch "~3.1.2"
1218
+ braces "~3.0.2"
1219
+ glob-parent "~5.1.2"
1220
+ is-binary-path "~2.1.0"
1221
+ is-glob "~4.0.1"
1222
+ normalize-path "~3.0.0"
1223
+ readdirp "~3.6.0"
1224
+ optionalDependencies:
1225
+ fsevents "~2.3.2"
1226
+
1227
+ chrome-trace-event@^1.0.2:
1228
+ version "1.0.3"
1229
+ resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
1230
+ integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
1231
+
1232
+ clone-deep@^4.0.1:
1233
+ version "4.0.1"
1234
+ resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
1235
+ integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==
1236
+ dependencies:
1237
+ is-plain-object "^2.0.4"
1238
+ kind-of "^6.0.2"
1239
+ shallow-clone "^3.0.0"
1240
+
1241
+ color-convert@^1.9.0:
1242
+ version "1.9.3"
1243
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
1244
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
1245
+ dependencies:
1246
+ color-name "1.1.3"
1247
+
1248
+ color-name@1.1.3:
1249
+ version "1.1.3"
1250
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
1251
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
1252
+
1253
+ colorette@^1.2.1:
1254
+ version "1.4.0"
1255
+ resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40"
1256
+ integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==
1257
+
1258
+ commander@^2.20.0:
1259
+ version "2.20.3"
1260
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
1261
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
1262
+
1263
+ commander@^7.0.0:
1264
+ version "7.2.0"
1265
+ resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
1266
+ integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
1267
+
1268
+ commondir@^1.0.1:
1269
+ version "1.0.1"
1270
+ resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
1271
+ integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
1272
+
1273
+ convert-source-map@^1.7.0:
1274
+ version "1.8.0"
1275
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369"
1276
+ integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==
1277
+ dependencies:
1278
+ safe-buffer "~5.1.1"
1279
+
1280
+ core-js-compat@^3.16.0, core-js-compat@^3.16.2:
1281
+ version "3.18.1"
1282
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.18.1.tgz#01942a0877caf9c6e5007c027183cf0bdae6a191"
1283
+ integrity sha512-XJMYx58zo4W0kLPmIingVZA10+7TuKrMLPt83+EzDmxFJQUMcTVVmQ+n5JP4r6Z14qSzhQBRi3NSWoeVyKKXUg==
1284
+ dependencies:
1285
+ browserslist "^4.17.1"
1286
+ semver "7.0.0"
1287
+
1288
+ core-js@^2.4.0:
1289
+ version "2.6.12"
1290
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
1291
+ integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
1292
+
1293
+ cross-env@^7.0.3:
1294
+ version "7.0.3"
1295
+ resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf"
1296
+ integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==
1297
+ dependencies:
1298
+ cross-spawn "^7.0.1"
1299
+
1300
+ cross-spawn@^7.0.1, cross-spawn@^7.0.3:
1301
+ version "7.0.3"
1302
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
1303
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
1304
+ dependencies:
1305
+ path-key "^3.1.0"
1306
+ shebang-command "^2.0.0"
1307
+ which "^2.0.1"
1308
+
1309
+ debug@^4.1.0, debug@^4.1.1:
1310
+ version "4.3.2"
1311
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
1312
+ integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
1313
+ dependencies:
1314
+ ms "2.1.2"
1315
+
1316
+ define-properties@^1.1.3:
1317
+ version "1.1.3"
1318
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
1319
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
1320
+ dependencies:
1321
+ object-keys "^1.0.12"
1322
+
1323
+ electron-to-chromium@^1.3.846:
1324
+ version "1.3.853"
1325
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.853.tgz#f3ed1d31f092cb3a17af188bca6c6a3ec91c3e82"
1326
+ integrity sha512-W4U8n+U8I5/SUaFcqZgbKRmYZwcyEIQVBDf+j5QQK6xChjXnQD+wj248eGR9X4u+dDmDR//8vIfbu4PrdBBIoQ==
1327
+
1328
+ emojis-list@^3.0.0:
1329
+ version "3.0.0"
1330
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
1331
+ integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
1332
+
1333
+ enhanced-resolve@^5.8.3:
1334
+ version "5.8.3"
1335
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0"
1336
+ integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==
1337
+ dependencies:
1338
+ graceful-fs "^4.2.4"
1339
+ tapable "^2.2.0"
1340
+
1341
+ envinfo@^7.7.3:
1342
+ version "7.8.1"
1343
+ resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475"
1344
+ integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==
1345
+
1346
+ es-module-lexer@^0.9.0:
1347
+ version "0.9.1"
1348
+ resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.1.tgz#f203bf394a630a552d381acf01a17ef08843b140"
1349
+ integrity sha512-17Ed9misDnpyNBJh63g1OhW3qUFecDgGOivI85JeZY/LGhDum8e+cltukbkSK8pcJnXXEkya56sp4vSS1nzoUw==
1350
+
1351
+ escalade@^3.1.1:
1352
+ version "3.1.1"
1353
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
1354
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
1355
+
1356
+ escape-string-regexp@^1.0.5:
1357
+ version "1.0.5"
1358
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
1359
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
1360
+
1361
+ eslint-scope@5.1.1:
1362
+ version "5.1.1"
1363
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
1364
+ integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
1365
+ dependencies:
1366
+ esrecurse "^4.3.0"
1367
+ estraverse "^4.1.1"
1368
+
1369
+ esrecurse@^4.3.0:
1370
+ version "4.3.0"
1371
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
1372
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
1373
+ dependencies:
1374
+ estraverse "^5.2.0"
1375
+
1376
+ estraverse@^4.1.1:
1377
+ version "4.3.0"
1378
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
1379
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
1380
+
1381
+ estraverse@^5.2.0:
1382
+ version "5.2.0"
1383
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
1384
+ integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
1385
+
1386
+ esutils@^2.0.2:
1387
+ version "2.0.3"
1388
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
1389
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
1390
+
1391
+ events@^3.2.0:
1392
+ version "3.3.0"
1393
+ resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
1394
+ integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
1395
+
1396
+ execa@^5.0.0:
1397
+ version "5.1.1"
1398
+ resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
1399
+ integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
1400
+ dependencies:
1401
+ cross-spawn "^7.0.3"
1402
+ get-stream "^6.0.0"
1403
+ human-signals "^2.1.0"
1404
+ is-stream "^2.0.0"
1405
+ merge-stream "^2.0.0"
1406
+ npm-run-path "^4.0.1"
1407
+ onetime "^5.1.2"
1408
+ signal-exit "^3.0.3"
1409
+ strip-final-newline "^2.0.0"
1410
+
1411
+ fast-deep-equal@^3.1.1:
1412
+ version "3.1.3"
1413
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
1414
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
1415
+
1416
+ fast-json-stable-stringify@^2.0.0:
1417
+ version "2.1.0"
1418
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
1419
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
1420
+
1421
+ fastest-levenshtein@^1.0.12:
1422
+ version "1.0.12"
1423
+ resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2"
1424
+ integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==
1425
+
1426
+ file-loader@^6.2.0:
1427
+ version "6.2.0"
1428
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d"
1429
+ integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
1430
+ dependencies:
1431
+ loader-utils "^2.0.0"
1432
+ schema-utils "^3.0.0"
1433
+
1434
+ fill-range@^7.0.1:
1435
+ version "7.0.1"
1436
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
1437
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
1438
+ dependencies:
1439
+ to-regex-range "^5.0.1"
1440
+
1441
+ find-cache-dir@^3.3.1:
1442
+ version "3.3.2"
1443
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b"
1444
+ integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==
1445
+ dependencies:
1446
+ commondir "^1.0.1"
1447
+ make-dir "^3.0.2"
1448
+ pkg-dir "^4.1.0"
1449
+
1450
+ find-up@^4.0.0:
1451
+ version "4.1.0"
1452
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
1453
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
1454
+ dependencies:
1455
+ locate-path "^5.0.0"
1456
+ path-exists "^4.0.0"
1457
+
1458
+ fsevents@~2.3.2:
1459
+ version "2.3.2"
1460
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
1461
+ integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
1462
+
1463
+ function-bind@^1.1.1:
1464
+ version "1.1.1"
1465
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
1466
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
1467
+
1468
+ gensync@^1.0.0-beta.2:
1469
+ version "1.0.0-beta.2"
1470
+ resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
1471
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
1472
+
1473
+ get-intrinsic@^1.0.2:
1474
+ version "1.1.1"
1475
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
1476
+ integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
1477
+ dependencies:
1478
+ function-bind "^1.1.1"
1479
+ has "^1.0.3"
1480
+ has-symbols "^1.0.1"
1481
+
1482
+ get-stream@^6.0.0:
1483
+ version "6.0.1"
1484
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
1485
+ integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
1486
+
1487
+ glob-parent@~5.1.2:
1488
+ version "5.1.2"
1489
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
1490
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
1491
+ dependencies:
1492
+ is-glob "^4.0.1"
1493
+
1494
+ glob-to-regexp@^0.4.1:
1495
+ version "0.4.1"
1496
+ resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
1497
+ integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
1498
+
1499
+ globals@^11.1.0:
1500
+ version "11.12.0"
1501
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
1502
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
1503
+
1504
+ graceful-fs@^4.1.2, graceful-fs@^4.2.4:
1505
+ version "4.2.8"
1506
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
1507
+ integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
1508
+
1509
+ has-flag@^3.0.0:
1510
+ version "3.0.0"
1511
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
1512
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
1513
+
1514
+ has-flag@^4.0.0:
1515
+ version "4.0.0"
1516
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
1517
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
1518
+
1519
+ has-symbols@^1.0.1:
1520
+ version "1.0.2"
1521
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
1522
+ integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
1523
+
1524
+ has@^1.0.3:
1525
+ version "1.0.3"
1526
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
1527
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
1528
+ dependencies:
1529
+ function-bind "^1.1.1"
1530
+
1531
+ human-signals@^2.1.0:
1532
+ version "2.1.0"
1533
+ resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
1534
+ integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
1535
+
1536
+ import-local@^3.0.2:
1537
+ version "3.0.2"
1538
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6"
1539
+ integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==
1540
+ dependencies:
1541
+ pkg-dir "^4.2.0"
1542
+ resolve-cwd "^3.0.0"
1543
+
1544
+ interpret@^2.2.0:
1545
+ version "2.2.0"
1546
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9"
1547
+ integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==
1548
+
1549
+ is-binary-path@~2.1.0:
1550
+ version "2.1.0"
1551
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
1552
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
1553
+ dependencies:
1554
+ binary-extensions "^2.0.0"
1555
+
1556
+ is-core-module@^2.2.0:
1557
+ version "2.7.0"
1558
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.7.0.tgz#3c0ef7d31b4acfc574f80c58409d568a836848e3"
1559
+ integrity sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==
1560
+ dependencies:
1561
+ has "^1.0.3"
1562
+
1563
+ is-extglob@^2.1.1:
1564
+ version "2.1.1"
1565
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
1566
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
1567
+
1568
+ is-glob@^4.0.1, is-glob@~4.0.1:
1569
+ version "4.0.2"
1570
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.2.tgz#859fc2e731e58c902f99fcabccb75a7dd07d29d8"
1571
+ integrity sha512-ZZTOjRcDjuAAAv2cTBQP/lL59ZTArx77+7UzHdWW/XB1mrfp7DEaVpKmZ0XIzx+M7AxfhKcqV+nMetUQmFifwg==
1572
+ dependencies:
1573
+ is-extglob "^2.1.1"
1574
+
1575
+ is-number@^7.0.0:
1576
+ version "7.0.0"
1577
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
1578
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
1579
+
1580
+ is-plain-object@^2.0.4:
1581
+ version "2.0.4"
1582
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
1583
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
1584
+ dependencies:
1585
+ isobject "^3.0.1"
1586
+
1587
+ is-stream@^2.0.0:
1588
+ version "2.0.1"
1589
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
1590
+ integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
1591
+
1592
+ isexe@^2.0.0:
1593
+ version "2.0.0"
1594
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1595
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
1596
+
1597
+ isobject@^3.0.1:
1598
+ version "3.0.1"
1599
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
1600
+ integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
1601
+
1602
+ jest-worker@^27.0.6:
1603
+ version "27.2.3"
1604
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.2.3.tgz#396e83d04ca575230a9bcb255c2b66aec07cb931"
1605
+ integrity sha512-ZwOvv4GCIPviL+Ie4pVguz4N5w/6IGbTaHBYOl3ZcsZZktaL7d8JOU0rmovoED7AJZKA8fvmLbBg8yg80u/tGA==
1606
+ dependencies:
1607
+ "@types/node" "*"
1608
+ merge-stream "^2.0.0"
1609
+ supports-color "^8.0.0"
1610
+
1611
+ js-tokens@^4.0.0:
1612
+ version "4.0.0"
1613
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
1614
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
1615
+
1616
+ jsesc@^2.5.1:
1617
+ version "2.5.2"
1618
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
1619
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
1620
+
1621
+ jsesc@~0.5.0:
1622
+ version "0.5.0"
1623
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
1624
+ integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
1625
+
1626
+ json-parse-better-errors@^1.0.2:
1627
+ version "1.0.2"
1628
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
1629
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
1630
+
1631
+ json-schema-traverse@^0.4.1:
1632
+ version "0.4.1"
1633
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
1634
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
1635
+
1636
+ json5@^1.0.1:
1637
+ version "1.0.1"
1638
+ resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
1639
+ integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
1640
+ dependencies:
1641
+ minimist "^1.2.0"
1642
+
1643
+ json5@^2.1.2:
1644
+ version "2.2.0"
1645
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
1646
+ integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
1647
+ dependencies:
1648
+ minimist "^1.2.5"
1649
+
1650
+ kind-of@^6.0.2:
1651
+ version "6.0.3"
1652
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
1653
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
1654
+
1655
+ klona@^2.0.4:
1656
+ version "2.0.4"
1657
+ resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0"
1658
+ integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==
1659
+
1660
+ loader-runner@^4.2.0:
1661
+ version "4.2.0"
1662
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384"
1663
+ integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==
1664
+
1665
+ loader-utils@^1.4.0:
1666
+ version "1.4.0"
1667
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
1668
+ integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
1669
+ dependencies:
1670
+ big.js "^5.2.2"
1671
+ emojis-list "^3.0.0"
1672
+ json5 "^1.0.1"
1673
+
1674
+ loader-utils@^2.0.0:
1675
+ version "2.0.0"
1676
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0"
1677
+ integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==
1678
+ dependencies:
1679
+ big.js "^5.2.2"
1680
+ emojis-list "^3.0.0"
1681
+ json5 "^2.1.2"
1682
+
1683
+ locate-path@^5.0.0:
1684
+ version "5.0.0"
1685
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
1686
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
1687
+ dependencies:
1688
+ p-locate "^4.1.0"
1689
+
1690
+ lodash.debounce@^4.0.8:
1691
+ version "4.0.8"
1692
+ resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
1693
+ integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
1694
+
1695
+ make-dir@^3.0.2, make-dir@^3.1.0:
1696
+ version "3.1.0"
1697
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
1698
+ integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
1699
+ dependencies:
1700
+ semver "^6.0.0"
1701
+
1702
+ merge-stream@^2.0.0:
1703
+ version "2.0.0"
1704
+ resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
1705
+ integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
1706
+
1707
+ mime-db@1.49.0:
1708
+ version "1.49.0"
1709
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed"
1710
+ integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==
1711
+
1712
+ mime-types@^2.1.27:
1713
+ version "2.1.32"
1714
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5"
1715
+ integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==
1716
+ dependencies:
1717
+ mime-db "1.49.0"
1718
+
1719
+ mimic-fn@^2.1.0:
1720
+ version "2.1.0"
1721
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
1722
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
1723
+
1724
+ minimist@^1.2.0, minimist@^1.2.5:
1725
+ version "1.2.5"
1726
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
1727
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
1728
+
1729
+ ms@2.1.2:
1730
+ version "2.1.2"
1731
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1732
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1733
+
1734
+ nanocolors@^0.1.5:
1735
+ version "0.1.12"
1736
+ resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.12.tgz#8577482c58cbd7b5bb1681db4cf48f11a87fd5f6"
1737
+ integrity sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==
1738
+
1739
+ neo-async@^2.6.2:
1740
+ version "2.6.2"
1741
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
1742
+ integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
1743
+
1744
+ node-releases@^1.1.76:
1745
+ version "1.1.76"
1746
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.76.tgz#df245b062b0cafbd5282ab6792f7dccc2d97f36e"
1747
+ integrity sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==
1748
+
1749
+ normalize-path@^3.0.0, normalize-path@~3.0.0:
1750
+ version "3.0.0"
1751
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
1752
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
1753
+
1754
+ npm-run-path@^4.0.1:
1755
+ version "4.0.1"
1756
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
1757
+ integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
1758
+ dependencies:
1759
+ path-key "^3.0.0"
1760
+
1761
+ object-keys@^1.0.12, object-keys@^1.1.1:
1762
+ version "1.1.1"
1763
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
1764
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
1765
+
1766
+ object.assign@^4.1.0:
1767
+ version "4.1.2"
1768
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
1769
+ integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
1770
+ dependencies:
1771
+ call-bind "^1.0.0"
1772
+ define-properties "^1.1.3"
1773
+ has-symbols "^1.0.1"
1774
+ object-keys "^1.1.1"
1775
+
1776
+ onetime@^5.1.2:
1777
+ version "5.1.2"
1778
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
1779
+ integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
1780
+ dependencies:
1781
+ mimic-fn "^2.1.0"
1782
+
1783
+ p-limit@^2.2.0:
1784
+ version "2.3.0"
1785
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
1786
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
1787
+ dependencies:
1788
+ p-try "^2.0.0"
1789
+
1790
+ p-limit@^3.1.0:
1791
+ version "3.1.0"
1792
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
1793
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
1794
+ dependencies:
1795
+ yocto-queue "^0.1.0"
1796
+
1797
+ p-locate@^4.1.0:
1798
+ version "4.1.0"
1799
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
1800
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
1801
+ dependencies:
1802
+ p-limit "^2.2.0"
1803
+
1804
+ p-try@^2.0.0:
1805
+ version "2.2.0"
1806
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
1807
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
1808
+
1809
+ path-exists@^4.0.0:
1810
+ version "4.0.0"
1811
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
1812
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
1813
+
1814
+ path-key@^3.0.0, path-key@^3.1.0:
1815
+ version "3.1.1"
1816
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
1817
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
1818
+
1819
+ path-parse@^1.0.6:
1820
+ version "1.0.7"
1821
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
1822
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
1823
+
1824
+ picomatch@^2.0.4, picomatch@^2.2.1:
1825
+ version "2.3.0"
1826
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
1827
+ integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
1828
+
1829
+ pkg-dir@^4.1.0, pkg-dir@^4.2.0:
1830
+ version "4.2.0"
1831
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
1832
+ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
1833
+ dependencies:
1834
+ find-up "^4.0.0"
1835
+
1836
+ punycode@^2.1.0:
1837
+ version "2.1.1"
1838
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
1839
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
1840
+
1841
+ randombytes@^2.1.0:
1842
+ version "2.1.0"
1843
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
1844
+ integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
1845
+ dependencies:
1846
+ safe-buffer "^5.1.0"
1847
+
1848
+ readdirp@~3.6.0:
1849
+ version "3.6.0"
1850
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
1851
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
1852
+ dependencies:
1853
+ picomatch "^2.2.1"
1854
+
1855
+ rechoir@^0.7.0:
1856
+ version "0.7.1"
1857
+ resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686"
1858
+ integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==
1859
+ dependencies:
1860
+ resolve "^1.9.0"
1861
+
1862
+ regenerate-unicode-properties@^9.0.0:
1863
+ version "9.0.0"
1864
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326"
1865
+ integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==
1866
+ dependencies:
1867
+ regenerate "^1.4.2"
1868
+
1869
+ regenerate@^1.4.2:
1870
+ version "1.4.2"
1871
+ resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
1872
+ integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
1873
+
1874
+ regenerator-runtime@^0.11.0:
1875
+ version "0.11.1"
1876
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
1877
+ integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
1878
+
1879
+ regenerator-runtime@^0.13.4:
1880
+ version "0.13.9"
1881
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
1882
+ integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
1883
+
1884
+ regenerator-transform@^0.14.2:
1885
+ version "0.14.5"
1886
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4"
1887
+ integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==
1888
+ dependencies:
1889
+ "@babel/runtime" "^7.8.4"
1890
+
1891
+ regexpu-core@^4.7.1:
1892
+ version "4.8.0"
1893
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0"
1894
+ integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==
1895
+ dependencies:
1896
+ regenerate "^1.4.2"
1897
+ regenerate-unicode-properties "^9.0.0"
1898
+ regjsgen "^0.5.2"
1899
+ regjsparser "^0.7.0"
1900
+ unicode-match-property-ecmascript "^2.0.0"
1901
+ unicode-match-property-value-ecmascript "^2.0.0"
1902
+
1903
+ regjsgen@^0.5.2:
1904
+ version "0.5.2"
1905
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
1906
+ integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
1907
+
1908
+ regjsparser@^0.7.0:
1909
+ version "0.7.0"
1910
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968"
1911
+ integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==
1912
+ dependencies:
1913
+ jsesc "~0.5.0"
1914
+
1915
+ resolve-cwd@^3.0.0:
1916
+ version "3.0.0"
1917
+ resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
1918
+ integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
1919
+ dependencies:
1920
+ resolve-from "^5.0.0"
1921
+
1922
+ resolve-from@^5.0.0:
1923
+ version "5.0.0"
1924
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
1925
+ integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
1926
+
1927
+ resolve@^1.14.2, resolve@^1.9.0:
1928
+ version "1.20.0"
1929
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
1930
+ integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
1931
+ dependencies:
1932
+ is-core-module "^2.2.0"
1933
+ path-parse "^1.0.6"
1934
+
1935
+ safe-buffer@^5.1.0:
1936
+ version "5.2.1"
1937
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
1938
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
1939
+
1940
+ safe-buffer@~5.1.1:
1941
+ version "5.1.2"
1942
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
1943
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
1944
+
1945
+ sass-loader@^12.1.0:
1946
+ version "12.1.0"
1947
+ resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.1.0.tgz#b73324622231009da6fba61ab76013256380d201"
1948
+ integrity sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==
1949
+ dependencies:
1950
+ klona "^2.0.4"
1951
+ neo-async "^2.6.2"
1952
+
1953
+ sass@^1.42.1:
1954
+ version "1.42.1"
1955
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.42.1.tgz#5ab17bebc1cb1881ad2e0c9a932c66ad64e441e2"
1956
+ integrity sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg==
1957
+ dependencies:
1958
+ chokidar ">=3.0.0 <4.0.0"
1959
+
1960
+ schema-utils@^2.6.5:
1961
+ version "2.7.1"
1962
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
1963
+ integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
1964
+ dependencies:
1965
+ "@types/json-schema" "^7.0.5"
1966
+ ajv "^6.12.4"
1967
+ ajv-keywords "^3.5.2"
1968
+
1969
+ schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1:
1970
+ version "3.1.1"
1971
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281"
1972
+ integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==
1973
+ dependencies:
1974
+ "@types/json-schema" "^7.0.8"
1975
+ ajv "^6.12.5"
1976
+ ajv-keywords "^3.5.2"
1977
+
1978
+ semver@7.0.0:
1979
+ version "7.0.0"
1980
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
1981
+ integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
1982
+
1983
+ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
1984
+ version "6.3.0"
1985
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
1986
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
1987
+
1988
+ serialize-javascript@^6.0.0:
1989
+ version "6.0.0"
1990
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
1991
+ integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
1992
+ dependencies:
1993
+ randombytes "^2.1.0"
1994
+
1995
+ shallow-clone@^3.0.0:
1996
+ version "3.0.1"
1997
+ resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
1998
+ integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==
1999
+ dependencies:
2000
+ kind-of "^6.0.2"
2001
+
2002
+ shebang-command@^2.0.0:
2003
+ version "2.0.0"
2004
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
2005
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
2006
+ dependencies:
2007
+ shebang-regex "^3.0.0"
2008
+
2009
+ shebang-regex@^3.0.0:
2010
+ version "3.0.0"
2011
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
2012
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
2013
+
2014
+ signal-exit@^3.0.3:
2015
+ version "3.0.4"
2016
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.4.tgz#366a4684d175b9cab2081e3681fda3747b6c51d7"
2017
+ integrity sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q==
2018
+
2019
+ source-map-support@~0.5.20:
2020
+ version "0.5.20"
2021
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9"
2022
+ integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==
2023
+ dependencies:
2024
+ buffer-from "^1.0.0"
2025
+ source-map "^0.6.0"
2026
+
2027
+ source-map@^0.5.0:
2028
+ version "0.5.7"
2029
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
2030
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
2031
+
2032
+ source-map@^0.6.0, source-map@^0.6.1:
2033
+ version "0.6.1"
2034
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
2035
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
2036
+
2037
+ source-map@~0.7.2:
2038
+ version "0.7.3"
2039
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
2040
+ integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
2041
+
2042
+ strip-final-newline@^2.0.0:
2043
+ version "2.0.0"
2044
+ resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
2045
+ integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
2046
+
2047
+ supports-color@^5.3.0:
2048
+ version "5.5.0"
2049
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
2050
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
2051
+ dependencies:
2052
+ has-flag "^3.0.0"
2053
+
2054
+ supports-color@^8.0.0:
2055
+ version "8.1.1"
2056
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
2057
+ integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
2058
+ dependencies:
2059
+ has-flag "^4.0.0"
2060
+
2061
+ tapable@^2.1.1, tapable@^2.2.0:
2062
+ version "2.2.1"
2063
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
2064
+ integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
2065
+
2066
+ terser-webpack-plugin@^5.1.3:
2067
+ version "5.2.4"
2068
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz#ad1be7639b1cbe3ea49fab995cbe7224b31747a1"
2069
+ integrity sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==
2070
+ dependencies:
2071
+ jest-worker "^27.0.6"
2072
+ p-limit "^3.1.0"
2073
+ schema-utils "^3.1.1"
2074
+ serialize-javascript "^6.0.0"
2075
+ source-map "^0.6.1"
2076
+ terser "^5.7.2"
2077
+
2078
+ terser@^5.7.2:
2079
+ version "5.9.0"
2080
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351"
2081
+ integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==
2082
+ dependencies:
2083
+ commander "^2.20.0"
2084
+ source-map "~0.7.2"
2085
+ source-map-support "~0.5.20"
2086
+
2087
+ to-fast-properties@^2.0.0:
2088
+ version "2.0.0"
2089
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
2090
+ integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
2091
+
2092
+ to-regex-range@^5.0.1:
2093
+ version "5.0.1"
2094
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
2095
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
2096
+ dependencies:
2097
+ is-number "^7.0.0"
2098
+
2099
+ unicode-canonical-property-names-ecmascript@^2.0.0:
2100
+ version "2.0.0"
2101
+ resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc"
2102
+ integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==
2103
+
2104
+ unicode-match-property-ecmascript@^2.0.0:
2105
+ version "2.0.0"
2106
+ resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3"
2107
+ integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==
2108
+ dependencies:
2109
+ unicode-canonical-property-names-ecmascript "^2.0.0"
2110
+ unicode-property-aliases-ecmascript "^2.0.0"
2111
+
2112
+ unicode-match-property-value-ecmascript@^2.0.0:
2113
+ version "2.0.0"
2114
+ resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714"
2115
+ integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==
2116
+
2117
+ unicode-property-aliases-ecmascript@^2.0.0:
2118
+ version "2.0.0"
2119
+ resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8"
2120
+ integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==
2121
+
2122
+ uri-js@^4.2.2:
2123
+ version "4.4.1"
2124
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
2125
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
2126
+ dependencies:
2127
+ punycode "^2.1.0"
2128
+
2129
+ v8-compile-cache@^2.2.0:
2130
+ version "2.3.0"
2131
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
2132
+ integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
2133
+
2134
+ watchpack@^2.2.0:
2135
+ version "2.2.0"
2136
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.2.0.tgz#47d78f5415fe550ecd740f99fe2882323a58b1ce"
2137
+ integrity sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==
2138
+ dependencies:
2139
+ glob-to-regexp "^0.4.1"
2140
+ graceful-fs "^4.1.2"
2141
+
2142
+ webpack-cli@^4.8.0:
2143
+ version "4.8.0"
2144
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.8.0.tgz#5fc3c8b9401d3c8a43e2afceacfa8261962338d1"
2145
+ integrity sha512-+iBSWsX16uVna5aAYN6/wjhJy1q/GKk4KjKvfg90/6hykCTSgozbfz5iRgDTSJt/LgSbYxdBX3KBHeobIs+ZEw==
2146
+ dependencies:
2147
+ "@discoveryjs/json-ext" "^0.5.0"
2148
+ "@webpack-cli/configtest" "^1.0.4"
2149
+ "@webpack-cli/info" "^1.3.0"
2150
+ "@webpack-cli/serve" "^1.5.2"
2151
+ colorette "^1.2.1"
2152
+ commander "^7.0.0"
2153
+ execa "^5.0.0"
2154
+ fastest-levenshtein "^1.0.12"
2155
+ import-local "^3.0.2"
2156
+ interpret "^2.2.0"
2157
+ rechoir "^0.7.0"
2158
+ v8-compile-cache "^2.2.0"
2159
+ webpack-merge "^5.7.3"
2160
+
2161
+ webpack-merge@^5.7.3:
2162
+ version "5.8.0"
2163
+ resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61"
2164
+ integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==
2165
+ dependencies:
2166
+ clone-deep "^4.0.1"
2167
+ wildcard "^2.0.0"
2168
+
2169
+ webpack-sources@^3.2.0:
2170
+ version "3.2.1"
2171
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.1.tgz#251a7d9720d75ada1469ca07dbb62f3641a05b6d"
2172
+ integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==
2173
+
2174
+ webpack@^5.55.0:
2175
+ version "5.55.0"
2176
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.55.0.tgz#77e4d90c6db6764623f91cb1549cdcda9b9f8a84"
2177
+ integrity sha512-/1LyoAG+4+YRt+RLN3H2cz4dcw8+iO/GwKhL54GQDmqONCi0ZISXZF6aCCrCRDJFK685h+RGLCZd61Y+SEqdWQ==
2178
+ dependencies:
2179
+ "@types/eslint-scope" "^3.7.0"
2180
+ "@types/estree" "^0.0.50"
2181
+ "@webassemblyjs/ast" "1.11.1"
2182
+ "@webassemblyjs/wasm-edit" "1.11.1"
2183
+ "@webassemblyjs/wasm-parser" "1.11.1"
2184
+ acorn "^8.4.1"
2185
+ acorn-import-assertions "^1.7.6"
2186
+ browserslist "^4.14.5"
2187
+ chrome-trace-event "^1.0.2"
2188
+ enhanced-resolve "^5.8.3"
2189
+ es-module-lexer "^0.9.0"
2190
+ eslint-scope "5.1.1"
2191
+ events "^3.2.0"
2192
+ glob-to-regexp "^0.4.1"
2193
+ graceful-fs "^4.2.4"
2194
+ json-parse-better-errors "^1.0.2"
2195
+ loader-runner "^4.2.0"
2196
+ mime-types "^2.1.27"
2197
+ neo-async "^2.6.2"
2198
+ schema-utils "^3.1.0"
2199
+ tapable "^2.1.1"
2200
+ terser-webpack-plugin "^5.1.3"
2201
+ watchpack "^2.2.0"
2202
+ webpack-sources "^3.2.0"
2203
+
2204
+ which@^2.0.1:
2205
+ version "2.0.2"
2206
+ resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
2207
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
2208
+ dependencies:
2209
+ isexe "^2.0.0"
2210
+
2211
+ wildcard@^2.0.0:
2212
+ version "2.0.0"
2213
+ resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
2214
+ integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
2215
+
2216
+ yocto-queue@^0.1.0:
2217
+ version "0.1.0"
2218
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
2219
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: woocommerce, paypal, payments, ecommerce, e-commerce, store, sales, sell,
4
  Requires at least: 5.3
5
  Tested up to: 5.8
6
  Requires PHP: 7.1
7
- Stable tag: 1.5.1
8
  License: GPLv2
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -81,6 +81,20 @@ Follow the steps below to connect the plugin to your PayPal account:
81
 
82
  == Changelog ==
83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  = 1.5.1 =
85
  * Fix - Set 3DS contingencies to "SCA_WHEN_REQUIRED". #178
86
  * Fix - Plugin conflict blocking line item details. #221
4
  Requires at least: 5.3
5
  Tested up to: 5.8
6
  Requires PHP: 7.1
7
+ Stable tag: 1.6.0
8
  License: GPLv2
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
81
 
82
  == Changelog ==
83
 
84
+ = 1.6.0 =
85
+ * Add - Webhook status. #246 #273
86
+ * Add - Show CC gateway in admin payments list. #236
87
+ * Add - Add 3d secure contingency settings. #230
88
+ * Add - Improve logging. #252 #275
89
+ * Add - Do not send payee email. #231
90
+ * Add - Allow customers to see and delete their saved payments in My Account. #274
91
+ * Fix - PayPal Payments generates multiple orders. #244
92
+ * Fix - Saved credit card does not auto fill. #242
93
+ * Fix - Incorrect webhooks registration. #254
94
+ * Fix - Disable funding credit cards affecting hosted fields, unset for GB. #249
95
+ * Fix - REFUND_CAPTURE_CURRENCY_MISMATCH on multicurrency sites. #225
96
+ * Fix - Can't checkout to certain countries with optional postcode. #224
97
+
98
  = 1.5.1 =
99
  * Fix - Set 3DS contingencies to "SCA_WHEN_REQUIRED". #178
100
  * Fix - Plugin conflict blocking line item details. #221
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInitfd327382102db5a22440815e53142caa::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit6f3e12b28f1ed670640881dfaf1b748a::getLoader();
vendor/composer/ClassLoader.php CHANGED
@@ -42,30 +42,75 @@ namespace Composer\Autoload;
42
  */
43
  class ClassLoader
44
  {
 
45
  private $vendorDir;
46
 
47
  // PSR-4
 
 
 
 
48
  private $prefixLengthsPsr4 = array();
 
 
 
 
49
  private $prefixDirsPsr4 = array();
 
 
 
 
50
  private $fallbackDirsPsr4 = array();
51
 
52
  // PSR-0
 
 
 
 
53
  private $prefixesPsr0 = array();
 
 
 
 
54
  private $fallbackDirsPsr0 = array();
55
 
 
56
  private $useIncludePath = false;
 
 
 
 
 
57
  private $classMap = array();
 
 
58
  private $classMapAuthoritative = false;
 
 
 
 
 
59
  private $missingClasses = array();
 
 
60
  private $apcuPrefix;
61
 
 
 
 
62
  private static $registeredLoaders = array();
63
 
 
 
 
64
  public function __construct($vendorDir = null)
65
  {
66
  $this->vendorDir = $vendorDir;
67
  }
68
 
 
 
 
69
  public function getPrefixes()
70
  {
71
  if (!empty($this->prefixesPsr0)) {
@@ -75,28 +120,47 @@ class ClassLoader
75
  return array();
76
  }
77
 
 
 
 
 
78
  public function getPrefixesPsr4()
79
  {
80
  return $this->prefixDirsPsr4;
81
  }
82
 
 
 
 
 
83
  public function getFallbackDirs()
84
  {
85
  return $this->fallbackDirsPsr0;
86
  }
87
 
 
 
 
 
88
  public function getFallbackDirsPsr4()
89
  {
90
  return $this->fallbackDirsPsr4;
91
  }
92
 
 
 
 
 
93
  public function getClassMap()
94
  {
95
  return $this->classMap;
96
  }
97
 
98
  /**
99
- * @param array $classMap Class to filename map
 
 
 
100
  */
101
  public function addClassMap(array $classMap)
102
  {
@@ -111,9 +175,11 @@ class ClassLoader
111
  * Registers a set of PSR-0 directories for a given prefix, either
112
  * appending or prepending to the ones previously set for this prefix.
113
  *
114
- * @param string $prefix The prefix
115
- * @param array|string $paths The PSR-0 root directories
116
- * @param bool $prepend Whether to prepend the directories
 
 
117
  */
118
  public function add($prefix, $paths, $prepend = false)
119
  {
@@ -156,11 +222,13 @@ class ClassLoader
156
  * Registers a set of PSR-4 directories for a given namespace, either
157
  * appending or prepending to the ones previously set for this namespace.
158
  *
159
- * @param string $prefix The prefix/namespace, with trailing '\\'
160
- * @param array|string $paths The PSR-4 base directories
161
- * @param bool $prepend Whether to prepend the directories
162
  *
163
  * @throws \InvalidArgumentException
 
 
164
  */
165
  public function addPsr4($prefix, $paths, $prepend = false)
166
  {
@@ -204,8 +272,10 @@ class ClassLoader
204
  * Registers a set of PSR-0 directories for a given prefix,
205
  * replacing any others previously set for this prefix.
206
  *
207
- * @param string $prefix The prefix
208
- * @param array|string $paths The PSR-0 base directories
 
 
209
  */
210
  public function set($prefix, $paths)
211
  {
@@ -220,10 +290,12 @@ class ClassLoader
220
  * Registers a set of PSR-4 directories for a given namespace,
221
  * replacing any others previously set for this namespace.
222
  *
223
- * @param string $prefix The prefix/namespace, with trailing '\\'
224
- * @param array|string $paths The PSR-4 base directories
225
  *
226
  * @throws \InvalidArgumentException
 
 
227
  */
228
  public function setPsr4($prefix, $paths)
229
  {
@@ -243,6 +315,8 @@ class ClassLoader
243
  * Turns on searching the include path for class files.
244
  *
245
  * @param bool $useIncludePath
 
 
246
  */
247
  public function setUseIncludePath($useIncludePath)
248
  {
@@ -265,6 +339,8 @@ class ClassLoader
265
  * that have not been registered with the class map.
266
  *
267
  * @param bool $classMapAuthoritative
 
 
268
  */
269
  public function setClassMapAuthoritative($classMapAuthoritative)
270
  {
@@ -285,6 +361,8 @@ class ClassLoader
285
  * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
286
  *
287
  * @param string|null $apcuPrefix
 
 
288
  */
289
  public function setApcuPrefix($apcuPrefix)
290
  {
@@ -305,6 +383,8 @@ class ClassLoader
305
  * Registers this instance as an autoloader.
306
  *
307
  * @param bool $prepend Whether to prepend the autoloader or not
 
 
308
  */
309
  public function register($prepend = false)
310
  {
@@ -324,6 +404,8 @@ class ClassLoader
324
 
325
  /**
326
  * Unregisters this instance as an autoloader.
 
 
327
  */
328
  public function unregister()
329
  {
@@ -403,6 +485,11 @@ class ClassLoader
403
  return self::$registeredLoaders;
404
  }
405
 
 
 
 
 
 
406
  private function findFileWithExtension($class, $ext)
407
  {
408
  // PSR-4 lookup
@@ -474,6 +561,10 @@ class ClassLoader
474
  * Scope isolated include.
475
  *
476
  * Prevents access to $this/self from included files.
 
 
 
 
477
  */
478
  function includeFile($file)
479
  {
42
  */
43
  class ClassLoader
44
  {
45
+ /** @var ?string */
46
  private $vendorDir;
47
 
48
  // PSR-4
49
+ /**
50
+ * @var array[]
51
+ * @psalm-var array<string, array<string, int>>
52
+ */
53
  private $prefixLengthsPsr4 = array();
54
+ /**
55
+ * @var array[]
56
+ * @psalm-var array<string, array<int, string>>
57
+ */
58
  private $prefixDirsPsr4 = array();
59
+ /**
60
+ * @var array[]
61
+ * @psalm-var array<string, string>
62
+ */
63
  private $fallbackDirsPsr4 = array();
64
 
65
  // PSR-0
66
+ /**
67
+ * @var array[]
68
+ * @psalm-var array<string, array<string, string[]>>
69
+ */
70
  private $prefixesPsr0 = array();
71
+ /**
72
+ * @var array[]
73
+ * @psalm-var array<string, string>
74
+ */
75
  private $fallbackDirsPsr0 = array();
76
 
77
+ /** @var bool */
78
  private $useIncludePath = false;
79
+
80
+ /**
81
+ * @var string[]
82
+ * @psalm-var array<string, string>
83
+ */
84
  private $classMap = array();
85
+
86
+ /** @var bool */
87
  private $classMapAuthoritative = false;
88
+
89
+ /**
90
+ * @var bool[]
91
+ * @psalm-var array<string, bool>
92
+ */
93
  private $missingClasses = array();
94
+
95
+ /** @var ?string */
96
  private $apcuPrefix;
97
 
98
+ /**
99
+ * @var self[]
100
+ */
101
  private static $registeredLoaders = array();
102
 
103
+ /**
104
+ * @param ?string $vendorDir
105
+ */
106
  public function __construct($vendorDir = null)
107
  {
108
  $this->vendorDir = $vendorDir;
109
  }
110
 
111
+ /**
112
+ * @return string[]
113
+ */
114
  public function getPrefixes()
115
  {
116
  if (!empty($this->prefixesPsr0)) {
120
  return array();
121
  }
122
 
123
+ /**
124
+ * @return array[]
125
+ * @psalm-return array<string, array<int, string>>
126
+ */
127
  public function getPrefixesPsr4()
128
  {
129
  return $this->prefixDirsPsr4;
130
  }
131
 
132
+ /**
133
+ * @return array[]
134
+ * @psalm-return array<string, string>
135
+ */
136
  public function getFallbackDirs()
137
  {
138
  return $this->fallbackDirsPsr0;
139
  }
140
 
141
+ /**
142
+ * @return array[]
143
+ * @psalm-return array<string, string>
144
+ */
145
  public function getFallbackDirsPsr4()
146
  {
147
  return $this->fallbackDirsPsr4;
148
  }
149
 
150
+ /**
151
+ * @return string[] Array of classname => path
152
+ * @psalm-var array<string, string>
153
+ */
154
  public function getClassMap()
155
  {
156
  return $this->classMap;
157
  }
158
 
159
  /**
160
+ * @param string[] $classMap Class to filename map
161
+ * @psalm-param array<string, string> $classMap
162
+ *
163
+ * @return void
164
  */
165
  public function addClassMap(array $classMap)
166
  {
175
  * Registers a set of PSR-0 directories for a given prefix, either
176
  * appending or prepending to the ones previously set for this prefix.
177
  *
178
+ * @param string $prefix The prefix
179
+ * @param string[]|string $paths The PSR-0 root directories
180
+ * @param bool $prepend Whether to prepend the directories
181
+ *
182
+ * @return void
183
  */
184
  public function add($prefix, $paths, $prepend = false)
185
  {
222
  * Registers a set of PSR-4 directories for a given namespace, either
223
  * appending or prepending to the ones previously set for this namespace.
224
  *
225
+ * @param string $prefix The prefix/namespace, with trailing '\\'
226
+ * @param string[]|string $paths The PSR-4 base directories
227
+ * @param bool $prepend Whether to prepend the directories
228
  *
229
  * @throws \InvalidArgumentException
230
+ *
231
+ * @return void
232
  */
233
  public function addPsr4($prefix, $paths, $prepend = false)
234
  {
272
  * Registers a set of PSR-0 directories for a given prefix,
273
  * replacing any others previously set for this prefix.
274
  *
275
+ * @param string $prefix The prefix
276
+ * @param string[]|string $paths The PSR-0 base directories
277
+ *
278
+ * @return void
279
  */
280
  public function set($prefix, $paths)
281
  {
290
  * Registers a set of PSR-4 directories for a given namespace,
291
  * replacing any others previously set for this namespace.
292
  *
293
+ * @param string $prefix The prefix/namespace, with trailing '\\'
294
+ * @param string[]|string $paths The PSR-4 base directories
295
  *
296
  * @throws \InvalidArgumentException
297
+ *
298
+ * @return void
299
  */
300
  public function setPsr4($prefix, $paths)
301
  {
315
  * Turns on searching the include path for class files.
316
  *
317
  * @param bool $useIncludePath
318
+ *
319
+ * @return void
320
  */
321
  public function setUseIncludePath($useIncludePath)
322
  {
339
  * that have not been registered with the class map.
340
  *
341
  * @param bool $classMapAuthoritative
342
+ *
343
+ * @return void
344
  */
345
  public function setClassMapAuthoritative($classMapAuthoritative)
346
  {
361
  * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
362
  *
363
  * @param string|null $apcuPrefix
364
+ *
365
+ * @return void
366
  */
367
  public function setApcuPrefix($apcuPrefix)
368
  {
383
  * Registers this instance as an autoloader.
384
  *
385
  * @param bool $prepend Whether to prepend the autoloader or not
386
+ *
387
+ * @return void
388
  */
389
  public function register($prepend = false)
390
  {
404
 
405
  /**
406
  * Unregisters this instance as an autoloader.
407
+ *
408
+ * @return void
409
  */
410
  public function unregister()
411
  {
485
  return self::$registeredLoaders;
486
  }
487
 
488
+ /**
489
+ * @param string $class
490
+ * @param string $ext
491
+ * @return string|false
492
+ */
493
  private function findFileWithExtension($class, $ext)
494
  {
495
  // PSR-4 lookup
561
  * Scope isolated include.
562
  *
563
  * Prevents access to $this/self from included files.
564
+ *
565
+ * @param string $file
566
+ * @return void
567
+ * @private
568
  */
569
  function includeFile($file)
570
  {
vendor/composer/InstalledVersions.php CHANGED
@@ -20,7 +20,7 @@ use Composer\Semver\VersionParser;
20
  *
21
  * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
22
  *
23
- * To require it's presence, you can require `composer-runtime-api ^2.0`
24
  */
25
  class InstalledVersions
26
  {
@@ -228,7 +228,7 @@ class InstalledVersions
228
 
229
  /**
230
  * @return array
231
- * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}
232
  */
233
  public static function getRootPackage()
234
  {
@@ -242,7 +242,7 @@ class InstalledVersions
242
  *
243
  * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
244
  * @return array[]
245
- * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}
246
  */
247
  public static function getRawData()
248
  {
@@ -265,7 +265,7 @@ class InstalledVersions
265
  * Returns the raw data of all installed.php which are currently loaded for custom implementations
266
  *
267
  * @return array[]
268
- * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}>
269
  */
270
  public static function getAllRawData()
271
  {
@@ -288,7 +288,7 @@ class InstalledVersions
288
  * @param array[] $data A vendor/composer/installed.php data set
289
  * @return void
290
  *
291
- * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>} $data
292
  */
293
  public static function reload($data)
294
  {
@@ -298,7 +298,7 @@ class InstalledVersions
298
 
299
  /**
300
  * @return array[]
301
- * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}>
302
  */
303
  private static function getInstalled()
304
  {
20
  *
21
  * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
22
  *
23
+ * To require its presence, you can require `composer-runtime-api ^2.0`
24
  */
25
  class InstalledVersions
26
  {
228
 
229
  /**
230
  * @return array
231
+ * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
232
  */
233
  public static function getRootPackage()
234
  {
242
  *
243
  * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
244
  * @return array[]
245
+ * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}
246
  */
247
  public static function getRawData()
248
  {
265
  * Returns the raw data of all installed.php which are currently loaded for custom implementations
266
  *
267
  * @return array[]
268
+ * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
269
  */
270
  public static function getAllRawData()
271
  {
288
  * @param array[] $data A vendor/composer/installed.php data set
289
  * @return void
290
  *
291
+ * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data
292
  */
293
  public static function reload($data)
294
  {
298
 
299
  /**
300
  * @return array[]
301
+ * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
302
  */
303
  private static function getInstalled()
304
  {
vendor/composer/autoload_classmap.php CHANGED
@@ -58,6 +58,7 @@ return array(
58
  'WooCommerce\\PayPalCommerce\\ApiClient\\Entity\\Shipping' => $baseDir . '/modules/ppcp-api-client/src/Entity/class-shipping.php',
59
  'WooCommerce\\PayPalCommerce\\ApiClient\\Entity\\Token' => $baseDir . '/modules/ppcp-api-client/src/Entity/class-token.php',
60
  'WooCommerce\\PayPalCommerce\\ApiClient\\Entity\\Webhook' => $baseDir . '/modules/ppcp-api-client/src/Entity/class-webhook.php',
 
61
  'WooCommerce\\PayPalCommerce\\ApiClient\\Exception\\NotFoundException' => $baseDir . '/modules/ppcp-api-client/src/Exception/class-notfoundexception.php',
62
  'WooCommerce\\PayPalCommerce\\ApiClient\\Exception\\PayPalApiException' => $baseDir . '/modules/ppcp-api-client/src/Exception/class-paypalapiexception.php',
63
  'WooCommerce\\PayPalCommerce\\ApiClient\\Exception\\RuntimeException' => $baseDir . '/modules/ppcp-api-client/src/Exception/class-runtimeexception.php',
@@ -77,6 +78,7 @@ return array(
77
  'WooCommerce\\PayPalCommerce\\ApiClient\\Factory\\PurchaseUnitFactory' => $baseDir . '/modules/ppcp-api-client/src/Factory/class-purchaseunitfactory.php',
78
  'WooCommerce\\PayPalCommerce\\ApiClient\\Factory\\SellerStatusFactory' => $baseDir . '/modules/ppcp-api-client/src/Factory/class-sellerstatusfactory.php',
79
  'WooCommerce\\PayPalCommerce\\ApiClient\\Factory\\ShippingFactory' => $baseDir . '/modules/ppcp-api-client/src/Factory/class-shippingfactory.php',
 
80
  'WooCommerce\\PayPalCommerce\\ApiClient\\Factory\\WebhookFactory' => $baseDir . '/modules/ppcp-api-client/src/Factory/class-webhookfactory.php',
81
  'WooCommerce\\PayPalCommerce\\ApiClient\\Helper\\Cache' => $baseDir . '/modules/ppcp-api-client/src/Helper/class-cache.php',
82
  'WooCommerce\\PayPalCommerce\\ApiClient\\Helper\\DccApplies' => $baseDir . '/modules/ppcp-api-client/src/Helper/class-dccapplies.php',
@@ -124,12 +126,17 @@ return array(
124
  'WooCommerce\\PayPalCommerce\\StatusReport\\StatusReportModule' => $baseDir . '/modules/ppcp-status-report/src/class-statusreportmodule.php',
125
  'WooCommerce\\PayPalCommerce\\Subscription\\Helper\\SubscriptionHelper' => $baseDir . '/modules/ppcp-subscription/src/Helper/class-subscriptionhelper.php',
126
  'WooCommerce\\PayPalCommerce\\Subscription\\RenewalHandler' => $baseDir . '/modules/ppcp-subscription/src/class-renewalhandler.php',
127
- 'WooCommerce\\PayPalCommerce\\Subscription\\Repository\\PaymentTokenRepository' => $baseDir . '/modules/ppcp-subscription/src/Repository/class-paymenttokenrepository.php',
128
  'WooCommerce\\PayPalCommerce\\Subscription\\SubscriptionModule' => $baseDir . '/modules/ppcp-subscription/src/class-subscriptionmodule.php',
 
 
 
 
 
129
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\OrderTablePaymentStatusColumn' => $baseDir . '/modules/ppcp-wc-gateway/src/Admin/class-ordertablepaymentstatuscolumn.php',
130
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\PaymentStatusOrderDetail' => $baseDir . '/modules/ppcp-wc-gateway/src/Admin/class-paymentstatusorderdetail.php',
131
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\RenderAuthorizeAction' => $baseDir . '/modules/ppcp-wc-gateway/src/Admin/class-renderauthorizeaction.php',
132
  'WooCommerce\\PayPalCommerce\\WcGateway\\Assets\\SettingsPageAssets' => $baseDir . '/modules/ppcp-wc-gateway/src/Assets/class-settingspageassets.php',
 
133
  'WooCommerce\\PayPalCommerce\\WcGateway\\Checkout\\CheckoutPayPalAddressPreset' => $baseDir . '/modules/ppcp-wc-gateway/src/Checkout/class-checkoutpaypaladdresspreset.php',
134
  'WooCommerce\\PayPalCommerce\\WcGateway\\Checkout\\DisableGateways' => $baseDir . '/modules/ppcp-wc-gateway/src/Checkout/class-disablegateways.php',
135
  'WooCommerce\\PayPalCommerce\\WcGateway\\Endpoint\\ReturnUrlEndpoint' => $baseDir . '/modules/ppcp-wc-gateway/src/Endpoint/class-returnurlendpoint.php',
@@ -140,14 +147,19 @@ return array(
140
  'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\TransactionUrlProvider' => $baseDir . '/modules/ppcp-wc-gateway/src/Gateway/class-transactionurlprovider.php',
141
  'WooCommerce\\PayPalCommerce\\WcGateway\\Notice\\AuthorizeOrderActionNotice' => $baseDir . '/modules/ppcp-wc-gateway/src/Notice/class-authorizeorderactionnotice.php',
142
  'WooCommerce\\PayPalCommerce\\WcGateway\\Notice\\ConnectAdminNotice' => $baseDir . '/modules/ppcp-wc-gateway/src/Notice/class-connectadminnotice.php',
 
143
  'WooCommerce\\PayPalCommerce\\WcGateway\\Processor\\AuthorizedPaymentsProcessor' => $baseDir . '/modules/ppcp-wc-gateway/src/Processor/class-authorizedpaymentsprocessor.php',
144
  'WooCommerce\\PayPalCommerce\\WcGateway\\Processor\\OrderProcessor' => $baseDir . '/modules/ppcp-wc-gateway/src/Processor/class-orderprocessor.php',
145
  'WooCommerce\\PayPalCommerce\\WcGateway\\Processor\\RefundProcessor' => $baseDir . '/modules/ppcp-wc-gateway/src/Processor/class-refundprocessor.php',
 
146
  'WooCommerce\\PayPalCommerce\\WcGateway\\Settings\\SectionsRenderer' => $baseDir . '/modules/ppcp-wc-gateway/src/Settings/class-sectionsrenderer.php',
147
  'WooCommerce\\PayPalCommerce\\WcGateway\\Settings\\Settings' => $baseDir . '/modules/ppcp-wc-gateway/src/Settings/class-settings.php',
148
  'WooCommerce\\PayPalCommerce\\WcGateway\\Settings\\SettingsListener' => $baseDir . '/modules/ppcp-wc-gateway/src/Settings/class-settingslistener.php',
149
  'WooCommerce\\PayPalCommerce\\WcGateway\\Settings\\SettingsRenderer' => $baseDir . '/modules/ppcp-wc-gateway/src/Settings/class-settingsrenderer.php',
150
  'WooCommerce\\PayPalCommerce\\WcGateway\\WcGatewayModule' => $baseDir . '/modules/ppcp-wc-gateway/src/class-wcgatewaymodule.php',
 
 
 
151
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\CheckoutOrderApproved' => $baseDir . '/modules/ppcp-webhooks/src/Handler/class-checkoutorderapproved.php',
152
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\CheckoutOrderCompleted' => $baseDir . '/modules/ppcp-webhooks/src/Handler/class-checkoutordercompleted.php',
153
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\PaymentCaptureCompleted' => $baseDir . '/modules/ppcp-webhooks/src/Handler/class-paymentcapturecompleted.php',
@@ -156,6 +168,8 @@ return array(
156
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\PrefixTrait' => $baseDir . '/modules/ppcp-webhooks/src/Handler/class-prefixtrait.php',
157
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\RequestHandler' => $baseDir . '/modules/ppcp-webhooks/src/Handler/class-requesthandler.php',
158
  'WooCommerce\\PayPalCommerce\\Webhooks\\IncomingWebhookEndpoint' => $baseDir . '/modules/ppcp-webhooks/src/class-incomingwebhookendpoint.php',
 
 
159
  'WooCommerce\\PayPalCommerce\\Webhooks\\WebhookModule' => $baseDir . '/modules/ppcp-webhooks/src/class-webhookmodule.php',
160
  'WooCommerce\\PayPalCommerce\\Webhooks\\WebhookRegistrar' => $baseDir . '/modules/ppcp-webhooks/src/class-webhookregistrar.php',
161
  'WooCommerce\\WooCommerce\\Logging\\Logger\\NullLogger' => $baseDir . '/modules/woocommerce-logging/src/Logger/class-nulllogger.php',
58
  'WooCommerce\\PayPalCommerce\\ApiClient\\Entity\\Shipping' => $baseDir . '/modules/ppcp-api-client/src/Entity/class-shipping.php',
59
  'WooCommerce\\PayPalCommerce\\ApiClient\\Entity\\Token' => $baseDir . '/modules/ppcp-api-client/src/Entity/class-token.php',
60
  'WooCommerce\\PayPalCommerce\\ApiClient\\Entity\\Webhook' => $baseDir . '/modules/ppcp-api-client/src/Entity/class-webhook.php',
61
+ 'WooCommerce\\PayPalCommerce\\ApiClient\\Entity\\WebhookEvent' => $baseDir . '/modules/ppcp-api-client/src/Entity/class-webhookevent.php',
62
  'WooCommerce\\PayPalCommerce\\ApiClient\\Exception\\NotFoundException' => $baseDir . '/modules/ppcp-api-client/src/Exception/class-notfoundexception.php',
63
  'WooCommerce\\PayPalCommerce\\ApiClient\\Exception\\PayPalApiException' => $baseDir . '/modules/ppcp-api-client/src/Exception/class-paypalapiexception.php',
64
  'WooCommerce\\PayPalCommerce\\ApiClient\\Exception\\RuntimeException' => $baseDir . '/modules/ppcp-api-client/src/Exception/class-runtimeexception.php',
78
  'WooCommerce\\PayPalCommerce\\ApiClient\\Factory\\PurchaseUnitFactory' => $baseDir . '/modules/ppcp-api-client/src/Factory/class-purchaseunitfactory.php',
79
  'WooCommerce\\PayPalCommerce\\ApiClient\\Factory\\SellerStatusFactory' => $baseDir . '/modules/ppcp-api-client/src/Factory/class-sellerstatusfactory.php',
80
  'WooCommerce\\PayPalCommerce\\ApiClient\\Factory\\ShippingFactory' => $baseDir . '/modules/ppcp-api-client/src/Factory/class-shippingfactory.php',
81
+ 'WooCommerce\\PayPalCommerce\\ApiClient\\Factory\\WebhookEventFactory' => $baseDir . '/modules/ppcp-api-client/src/Factory/class-webhookeventfactory.php',
82
  'WooCommerce\\PayPalCommerce\\ApiClient\\Factory\\WebhookFactory' => $baseDir . '/modules/ppcp-api-client/src/Factory/class-webhookfactory.php',
83
  'WooCommerce\\PayPalCommerce\\ApiClient\\Helper\\Cache' => $baseDir . '/modules/ppcp-api-client/src/Helper/class-cache.php',
84
  'WooCommerce\\PayPalCommerce\\ApiClient\\Helper\\DccApplies' => $baseDir . '/modules/ppcp-api-client/src/Helper/class-dccapplies.php',
126
  'WooCommerce\\PayPalCommerce\\StatusReport\\StatusReportModule' => $baseDir . '/modules/ppcp-status-report/src/class-statusreportmodule.php',
127
  'WooCommerce\\PayPalCommerce\\Subscription\\Helper\\SubscriptionHelper' => $baseDir . '/modules/ppcp-subscription/src/Helper/class-subscriptionhelper.php',
128
  'WooCommerce\\PayPalCommerce\\Subscription\\RenewalHandler' => $baseDir . '/modules/ppcp-subscription/src/class-renewalhandler.php',
 
129
  'WooCommerce\\PayPalCommerce\\Subscription\\SubscriptionModule' => $baseDir . '/modules/ppcp-subscription/src/class-subscriptionmodule.php',
130
+ 'WooCommerce\\PayPalCommerce\\Vaulting\\Assets\\MyAccountPaymentsAssets' => $baseDir . '/modules/ppcp-vaulting/src/Assets/class-myaccountpaymentsassets.php',
131
+ 'WooCommerce\\PayPalCommerce\\Vaulting\\Endpoint\\DeletePaymentTokenEndpoint' => $baseDir . '/modules/ppcp-vaulting/src/Endpoint/class-deletepaymenttokenendpoint.php',
132
+ 'WooCommerce\\PayPalCommerce\\Vaulting\\PaymentTokenRepository' => $baseDir . '/modules/ppcp-vaulting/src/class-paymenttokenrepository.php',
133
+ 'WooCommerce\\PayPalCommerce\\Vaulting\\PaymentTokensRenderer' => $baseDir . '/modules/ppcp-vaulting/src/class-paymenttokensrenderer.php',
134
+ 'WooCommerce\\PayPalCommerce\\Vaulting\\VaultingModule' => $baseDir . '/modules/ppcp-vaulting/src/class-vaultingmodule.php',
135
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\OrderTablePaymentStatusColumn' => $baseDir . '/modules/ppcp-wc-gateway/src/Admin/class-ordertablepaymentstatuscolumn.php',
136
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\PaymentStatusOrderDetail' => $baseDir . '/modules/ppcp-wc-gateway/src/Admin/class-paymentstatusorderdetail.php',
137
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\RenderAuthorizeAction' => $baseDir . '/modules/ppcp-wc-gateway/src/Admin/class-renderauthorizeaction.php',
138
  'WooCommerce\\PayPalCommerce\\WcGateway\\Assets\\SettingsPageAssets' => $baseDir . '/modules/ppcp-wc-gateway/src/Assets/class-settingspageassets.php',
139
+ 'WooCommerce\\PayPalCommerce\\WcGateway\\Assets\\WebhooksStatusPageAssets' => $baseDir . '/modules/ppcp-webhooks/src/Status/Assets/class-webhooksstatuspageassets.php',
140
  'WooCommerce\\PayPalCommerce\\WcGateway\\Checkout\\CheckoutPayPalAddressPreset' => $baseDir . '/modules/ppcp-wc-gateway/src/Checkout/class-checkoutpaypaladdresspreset.php',
141
  'WooCommerce\\PayPalCommerce\\WcGateway\\Checkout\\DisableGateways' => $baseDir . '/modules/ppcp-wc-gateway/src/Checkout/class-disablegateways.php',
142
  'WooCommerce\\PayPalCommerce\\WcGateway\\Endpoint\\ReturnUrlEndpoint' => $baseDir . '/modules/ppcp-wc-gateway/src/Endpoint/class-returnurlendpoint.php',
147
  'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\TransactionUrlProvider' => $baseDir . '/modules/ppcp-wc-gateway/src/Gateway/class-transactionurlprovider.php',
148
  'WooCommerce\\PayPalCommerce\\WcGateway\\Notice\\AuthorizeOrderActionNotice' => $baseDir . '/modules/ppcp-wc-gateway/src/Notice/class-authorizeorderactionnotice.php',
149
  'WooCommerce\\PayPalCommerce\\WcGateway\\Notice\\ConnectAdminNotice' => $baseDir . '/modules/ppcp-wc-gateway/src/Notice/class-connectadminnotice.php',
150
+ 'WooCommerce\\PayPalCommerce\\WcGateway\\Notice\\DccWithoutPayPalAdminNotice' => $baseDir . '/modules/ppcp-wc-gateway/src/Notice/class-dccwithoutpaypaladminnotice.php',
151
  'WooCommerce\\PayPalCommerce\\WcGateway\\Processor\\AuthorizedPaymentsProcessor' => $baseDir . '/modules/ppcp-wc-gateway/src/Processor/class-authorizedpaymentsprocessor.php',
152
  'WooCommerce\\PayPalCommerce\\WcGateway\\Processor\\OrderProcessor' => $baseDir . '/modules/ppcp-wc-gateway/src/Processor/class-orderprocessor.php',
153
  'WooCommerce\\PayPalCommerce\\WcGateway\\Processor\\RefundProcessor' => $baseDir . '/modules/ppcp-wc-gateway/src/Processor/class-refundprocessor.php',
154
+ 'WooCommerce\\PayPalCommerce\\WcGateway\\Settings\\PageMatcherTrait' => $baseDir . '/modules/ppcp-wc-gateway/src/Settings/class-pagematchertrait.php',
155
  'WooCommerce\\PayPalCommerce\\WcGateway\\Settings\\SectionsRenderer' => $baseDir . '/modules/ppcp-wc-gateway/src/Settings/class-sectionsrenderer.php',
156
  'WooCommerce\\PayPalCommerce\\WcGateway\\Settings\\Settings' => $baseDir . '/modules/ppcp-wc-gateway/src/Settings/class-settings.php',
157
  'WooCommerce\\PayPalCommerce\\WcGateway\\Settings\\SettingsListener' => $baseDir . '/modules/ppcp-wc-gateway/src/Settings/class-settingslistener.php',
158
  'WooCommerce\\PayPalCommerce\\WcGateway\\Settings\\SettingsRenderer' => $baseDir . '/modules/ppcp-wc-gateway/src/Settings/class-settingsrenderer.php',
159
  'WooCommerce\\PayPalCommerce\\WcGateway\\WcGatewayModule' => $baseDir . '/modules/ppcp-wc-gateway/src/class-wcgatewaymodule.php',
160
+ 'WooCommerce\\PayPalCommerce\\Webhooks\\Endpoint\\ResubscribeEndpoint' => $baseDir . '/modules/ppcp-webhooks/src/Endpoint/class-resubscribeendpoint.php',
161
+ 'WooCommerce\\PayPalCommerce\\Webhooks\\Endpoint\\SimulateEndpoint' => $baseDir . '/modules/ppcp-webhooks/src/Endpoint/class-simulateendpoint.php',
162
+ 'WooCommerce\\PayPalCommerce\\Webhooks\\Endpoint\\SimulationStateEndpoint' => $baseDir . '/modules/ppcp-webhooks/src/Endpoint/class-simulationstateendpoint.php',
163
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\CheckoutOrderApproved' => $baseDir . '/modules/ppcp-webhooks/src/Handler/class-checkoutorderapproved.php',
164
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\CheckoutOrderCompleted' => $baseDir . '/modules/ppcp-webhooks/src/Handler/class-checkoutordercompleted.php',
165
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\PaymentCaptureCompleted' => $baseDir . '/modules/ppcp-webhooks/src/Handler/class-paymentcapturecompleted.php',
168
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\PrefixTrait' => $baseDir . '/modules/ppcp-webhooks/src/Handler/class-prefixtrait.php',
169
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\RequestHandler' => $baseDir . '/modules/ppcp-webhooks/src/Handler/class-requesthandler.php',
170
  'WooCommerce\\PayPalCommerce\\Webhooks\\IncomingWebhookEndpoint' => $baseDir . '/modules/ppcp-webhooks/src/class-incomingwebhookendpoint.php',
171
+ 'WooCommerce\\PayPalCommerce\\Webhooks\\Status\\WebhookSimulation' => $baseDir . '/modules/ppcp-webhooks/src/Status/class-webhooksimulation.php',
172
+ 'WooCommerce\\PayPalCommerce\\Webhooks\\Status\\WebhooksStatusPage' => $baseDir . '/modules/ppcp-webhooks/src/Status/class-webhooksstatuspage.php',
173
  'WooCommerce\\PayPalCommerce\\Webhooks\\WebhookModule' => $baseDir . '/modules/ppcp-webhooks/src/class-webhookmodule.php',
174
  'WooCommerce\\PayPalCommerce\\Webhooks\\WebhookRegistrar' => $baseDir . '/modules/ppcp-webhooks/src/class-webhookregistrar.php',
175
  'WooCommerce\\WooCommerce\\Logging\\Logger\\NullLogger' => $baseDir . '/modules/woocommerce-logging/src/Logger/class-nulllogger.php',
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInitfd327382102db5a22440815e53142caa
6
  {
7
  private static $loader;
8
 
@@ -24,15 +24,15 @@ class ComposerAutoloaderInitfd327382102db5a22440815e53142caa
24
 
25
  require __DIR__ . '/platform_check.php';
26
 
27
- spl_autoload_register(array('ComposerAutoloaderInitfd327382102db5a22440815e53142caa', 'loadClassLoader'), true, true);
28
  self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
29
- spl_autoload_unregister(array('ComposerAutoloaderInitfd327382102db5a22440815e53142caa', 'loadClassLoader'));
30
 
31
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
32
  if ($useStaticLoader) {
33
  require __DIR__ . '/autoload_static.php';
34
 
35
- call_user_func(\Composer\Autoload\ComposerStaticInitfd327382102db5a22440815e53142caa::getInitializer($loader));
36
  } else {
37
  $map = require __DIR__ . '/autoload_namespaces.php';
38
  foreach ($map as $namespace => $path) {
@@ -53,19 +53,19 @@ class ComposerAutoloaderInitfd327382102db5a22440815e53142caa
53
  $loader->register(true);
54
 
55
  if ($useStaticLoader) {
56
- $includeFiles = Composer\Autoload\ComposerStaticInitfd327382102db5a22440815e53142caa::$files;
57
  } else {
58
  $includeFiles = require __DIR__ . '/autoload_files.php';
59
  }
60
  foreach ($includeFiles as $fileIdentifier => $file) {
61
- composerRequirefd327382102db5a22440815e53142caa($fileIdentifier, $file);
62
  }
63
 
64
  return $loader;
65
  }
66
  }
67
 
68
- function composerRequirefd327382102db5a22440815e53142caa($fileIdentifier, $file)
69
  {
70
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
71
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit6f3e12b28f1ed670640881dfaf1b748a
6
  {
7
  private static $loader;
8
 
24
 
25
  require __DIR__ . '/platform_check.php';
26
 
27
+ spl_autoload_register(array('ComposerAutoloaderInit6f3e12b28f1ed670640881dfaf1b748a', 'loadClassLoader'), true, true);
28
  self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
29
+ spl_autoload_unregister(array('ComposerAutoloaderInit6f3e12b28f1ed670640881dfaf1b748a', 'loadClassLoader'));
30
 
31
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
32
  if ($useStaticLoader) {
33
  require __DIR__ . '/autoload_static.php';
34
 
35
+ call_user_func(\Composer\Autoload\ComposerStaticInit6f3e12b28f1ed670640881dfaf1b748a::getInitializer($loader));
36
  } else {
37
  $map = require __DIR__ . '/autoload_namespaces.php';
38
  foreach ($map as $namespace => $path) {
53
  $loader->register(true);
54
 
55
  if ($useStaticLoader) {
56
+ $includeFiles = Composer\Autoload\ComposerStaticInit6f3e12b28f1ed670640881dfaf1b748a::$files;
57
  } else {
58
  $includeFiles = require __DIR__ . '/autoload_files.php';
59
  }
60
  foreach ($includeFiles as $fileIdentifier => $file) {
61
+ composerRequire6f3e12b28f1ed670640881dfaf1b748a($fileIdentifier, $file);
62
  }
63
 
64
  return $loader;
65
  }
66
  }
67
 
68
+ function composerRequire6f3e12b28f1ed670640881dfaf1b748a($fileIdentifier, $file)
69
  {
70
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
71
  require $file;
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInitfd327382102db5a22440815e53142caa
8
  {
9
  public static $files = array (
10
  '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
@@ -133,6 +133,7 @@ class ComposerStaticInitfd327382102db5a22440815e53142caa
133
  'WooCommerce\\PayPalCommerce\\ApiClient\\Entity\\Shipping' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Entity/class-shipping.php',
134
  'WooCommerce\\PayPalCommerce\\ApiClient\\Entity\\Token' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Entity/class-token.php',
135
  'WooCommerce\\PayPalCommerce\\ApiClient\\Entity\\Webhook' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Entity/class-webhook.php',
 
136
  'WooCommerce\\PayPalCommerce\\ApiClient\\Exception\\NotFoundException' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Exception/class-notfoundexception.php',
137
  'WooCommerce\\PayPalCommerce\\ApiClient\\Exception\\PayPalApiException' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Exception/class-paypalapiexception.php',
138
  'WooCommerce\\PayPalCommerce\\ApiClient\\Exception\\RuntimeException' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Exception/class-runtimeexception.php',
@@ -152,6 +153,7 @@ class ComposerStaticInitfd327382102db5a22440815e53142caa
152
  'WooCommerce\\PayPalCommerce\\ApiClient\\Factory\\PurchaseUnitFactory' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Factory/class-purchaseunitfactory.php',
153
  'WooCommerce\\PayPalCommerce\\ApiClient\\Factory\\SellerStatusFactory' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Factory/class-sellerstatusfactory.php',
154
  'WooCommerce\\PayPalCommerce\\ApiClient\\Factory\\ShippingFactory' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Factory/class-shippingfactory.php',
 
155
  'WooCommerce\\PayPalCommerce\\ApiClient\\Factory\\WebhookFactory' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Factory/class-webhookfactory.php',
156
  'WooCommerce\\PayPalCommerce\\ApiClient\\Helper\\Cache' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Helper/class-cache.php',
157
  'WooCommerce\\PayPalCommerce\\ApiClient\\Helper\\DccApplies' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Helper/class-dccapplies.php',
@@ -199,12 +201,17 @@ class ComposerStaticInitfd327382102db5a22440815e53142caa
199
  'WooCommerce\\PayPalCommerce\\StatusReport\\StatusReportModule' => __DIR__ . '/../..' . '/modules/ppcp-status-report/src/class-statusreportmodule.php',
200
  'WooCommerce\\PayPalCommerce\\Subscription\\Helper\\SubscriptionHelper' => __DIR__ . '/../..' . '/modules/ppcp-subscription/src/Helper/class-subscriptionhelper.php',
201
  'WooCommerce\\PayPalCommerce\\Subscription\\RenewalHandler' => __DIR__ . '/../..' . '/modules/ppcp-subscription/src/class-renewalhandler.php',
202
- 'WooCommerce\\PayPalCommerce\\Subscription\\Repository\\PaymentTokenRepository' => __DIR__ . '/../..' . '/modules/ppcp-subscription/src/Repository/class-paymenttokenrepository.php',
203
  'WooCommerce\\PayPalCommerce\\Subscription\\SubscriptionModule' => __DIR__ . '/../..' . '/modules/ppcp-subscription/src/class-subscriptionmodule.php',
 
 
 
 
 
204
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\OrderTablePaymentStatusColumn' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Admin/class-ordertablepaymentstatuscolumn.php',
205
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\PaymentStatusOrderDetail' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Admin/class-paymentstatusorderdetail.php',
206
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\RenderAuthorizeAction' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Admin/class-renderauthorizeaction.php',
207
  'WooCommerce\\PayPalCommerce\\WcGateway\\Assets\\SettingsPageAssets' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Assets/class-settingspageassets.php',
 
208
  'WooCommerce\\PayPalCommerce\\WcGateway\\Checkout\\CheckoutPayPalAddressPreset' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Checkout/class-checkoutpaypaladdresspreset.php',
209
  'WooCommerce\\PayPalCommerce\\WcGateway\\Checkout\\DisableGateways' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Checkout/class-disablegateways.php',
210
  'WooCommerce\\PayPalCommerce\\WcGateway\\Endpoint\\ReturnUrlEndpoint' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Endpoint/class-returnurlendpoint.php',
@@ -215,14 +222,19 @@ class ComposerStaticInitfd327382102db5a22440815e53142caa
215
  'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\TransactionUrlProvider' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Gateway/class-transactionurlprovider.php',
216
  'WooCommerce\\PayPalCommerce\\WcGateway\\Notice\\AuthorizeOrderActionNotice' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Notice/class-authorizeorderactionnotice.php',
217
  'WooCommerce\\PayPalCommerce\\WcGateway\\Notice\\ConnectAdminNotice' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Notice/class-connectadminnotice.php',
 
218
  'WooCommerce\\PayPalCommerce\\WcGateway\\Processor\\AuthorizedPaymentsProcessor' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Processor/class-authorizedpaymentsprocessor.php',
219
  'WooCommerce\\PayPalCommerce\\WcGateway\\Processor\\OrderProcessor' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Processor/class-orderprocessor.php',
220
  'WooCommerce\\PayPalCommerce\\WcGateway\\Processor\\RefundProcessor' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Processor/class-refundprocessor.php',
 
221
  'WooCommerce\\PayPalCommerce\\WcGateway\\Settings\\SectionsRenderer' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Settings/class-sectionsrenderer.php',
222
  'WooCommerce\\PayPalCommerce\\WcGateway\\Settings\\Settings' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Settings/class-settings.php',
223
  'WooCommerce\\PayPalCommerce\\WcGateway\\Settings\\SettingsListener' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Settings/class-settingslistener.php',
224
  'WooCommerce\\PayPalCommerce\\WcGateway\\Settings\\SettingsRenderer' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Settings/class-settingsrenderer.php',
225
  'WooCommerce\\PayPalCommerce\\WcGateway\\WcGatewayModule' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/class-wcgatewaymodule.php',
 
 
 
226
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\CheckoutOrderApproved' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/Handler/class-checkoutorderapproved.php',
227
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\CheckoutOrderCompleted' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/Handler/class-checkoutordercompleted.php',
228
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\PaymentCaptureCompleted' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/Handler/class-paymentcapturecompleted.php',
@@ -231,6 +243,8 @@ class ComposerStaticInitfd327382102db5a22440815e53142caa
231
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\PrefixTrait' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/Handler/class-prefixtrait.php',
232
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\RequestHandler' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/Handler/class-requesthandler.php',
233
  'WooCommerce\\PayPalCommerce\\Webhooks\\IncomingWebhookEndpoint' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/class-incomingwebhookendpoint.php',
 
 
234
  'WooCommerce\\PayPalCommerce\\Webhooks\\WebhookModule' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/class-webhookmodule.php',
235
  'WooCommerce\\PayPalCommerce\\Webhooks\\WebhookRegistrar' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/class-webhookregistrar.php',
236
  'WooCommerce\\WooCommerce\\Logging\\Logger\\NullLogger' => __DIR__ . '/../..' . '/modules/woocommerce-logging/src/Logger/class-nulllogger.php',
@@ -244,9 +258,9 @@ class ComposerStaticInitfd327382102db5a22440815e53142caa
244
  public static function getInitializer(ClassLoader $loader)
245
  {
246
  return \Closure::bind(function () use ($loader) {
247
- $loader->prefixLengthsPsr4 = ComposerStaticInitfd327382102db5a22440815e53142caa::$prefixLengthsPsr4;
248
- $loader->prefixDirsPsr4 = ComposerStaticInitfd327382102db5a22440815e53142caa::$prefixDirsPsr4;
249
- $loader->classMap = ComposerStaticInitfd327382102db5a22440815e53142caa::$classMap;
250
 
251
  }, null, ClassLoader::class);
252
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit6f3e12b28f1ed670640881dfaf1b748a
8
  {
9
  public static $files = array (
10
  '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
133
  'WooCommerce\\PayPalCommerce\\ApiClient\\Entity\\Shipping' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Entity/class-shipping.php',
134
  'WooCommerce\\PayPalCommerce\\ApiClient\\Entity\\Token' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Entity/class-token.php',
135
  'WooCommerce\\PayPalCommerce\\ApiClient\\Entity\\Webhook' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Entity/class-webhook.php',
136
+ 'WooCommerce\\PayPalCommerce\\ApiClient\\Entity\\WebhookEvent' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Entity/class-webhookevent.php',
137
  'WooCommerce\\PayPalCommerce\\ApiClient\\Exception\\NotFoundException' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Exception/class-notfoundexception.php',
138
  'WooCommerce\\PayPalCommerce\\ApiClient\\Exception\\PayPalApiException' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Exception/class-paypalapiexception.php',
139
  'WooCommerce\\PayPalCommerce\\ApiClient\\Exception\\RuntimeException' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Exception/class-runtimeexception.php',
153
  'WooCommerce\\PayPalCommerce\\ApiClient\\Factory\\PurchaseUnitFactory' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Factory/class-purchaseunitfactory.php',
154
  'WooCommerce\\PayPalCommerce\\ApiClient\\Factory\\SellerStatusFactory' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Factory/class-sellerstatusfactory.php',
155
  'WooCommerce\\PayPalCommerce\\ApiClient\\Factory\\ShippingFactory' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Factory/class-shippingfactory.php',
156
+ 'WooCommerce\\PayPalCommerce\\ApiClient\\Factory\\WebhookEventFactory' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Factory/class-webhookeventfactory.php',
157
  'WooCommerce\\PayPalCommerce\\ApiClient\\Factory\\WebhookFactory' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Factory/class-webhookfactory.php',
158
  'WooCommerce\\PayPalCommerce\\ApiClient\\Helper\\Cache' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Helper/class-cache.php',
159
  'WooCommerce\\PayPalCommerce\\ApiClient\\Helper\\DccApplies' => __DIR__ . '/../..' . '/modules/ppcp-api-client/src/Helper/class-dccapplies.php',
201
  'WooCommerce\\PayPalCommerce\\StatusReport\\StatusReportModule' => __DIR__ . '/../..' . '/modules/ppcp-status-report/src/class-statusreportmodule.php',
202
  'WooCommerce\\PayPalCommerce\\Subscription\\Helper\\SubscriptionHelper' => __DIR__ . '/../..' . '/modules/ppcp-subscription/src/Helper/class-subscriptionhelper.php',
203
  'WooCommerce\\PayPalCommerce\\Subscription\\RenewalHandler' => __DIR__ . '/../..' . '/modules/ppcp-subscription/src/class-renewalhandler.php',
 
204
  'WooCommerce\\PayPalCommerce\\Subscription\\SubscriptionModule' => __DIR__ . '/../..' . '/modules/ppcp-subscription/src/class-subscriptionmodule.php',
205
+ 'WooCommerce\\PayPalCommerce\\Vaulting\\Assets\\MyAccountPaymentsAssets' => __DIR__ . '/../..' . '/modules/ppcp-vaulting/src/Assets/class-myaccountpaymentsassets.php',
206
+ 'WooCommerce\\PayPalCommerce\\Vaulting\\Endpoint\\DeletePaymentTokenEndpoint' => __DIR__ . '/../..' . '/modules/ppcp-vaulting/src/Endpoint/class-deletepaymenttokenendpoint.php',
207
+ 'WooCommerce\\PayPalCommerce\\Vaulting\\PaymentTokenRepository' => __DIR__ . '/../..' . '/modules/ppcp-vaulting/src/class-paymenttokenrepository.php',
208
+ 'WooCommerce\\PayPalCommerce\\Vaulting\\PaymentTokensRenderer' => __DIR__ . '/../..' . '/modules/ppcp-vaulting/src/class-paymenttokensrenderer.php',
209
+ 'WooCommerce\\PayPalCommerce\\Vaulting\\VaultingModule' => __DIR__ . '/../..' . '/modules/ppcp-vaulting/src/class-vaultingmodule.php',
210
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\OrderTablePaymentStatusColumn' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Admin/class-ordertablepaymentstatuscolumn.php',
211
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\PaymentStatusOrderDetail' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Admin/class-paymentstatusorderdetail.php',
212
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\RenderAuthorizeAction' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Admin/class-renderauthorizeaction.php',
213
  'WooCommerce\\PayPalCommerce\\WcGateway\\Assets\\SettingsPageAssets' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Assets/class-settingspageassets.php',
214
+ 'WooCommerce\\PayPalCommerce\\WcGateway\\Assets\\WebhooksStatusPageAssets' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/Status/Assets/class-webhooksstatuspageassets.php',
215
  'WooCommerce\\PayPalCommerce\\WcGateway\\Checkout\\CheckoutPayPalAddressPreset' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Checkout/class-checkoutpaypaladdresspreset.php',
216
  'WooCommerce\\PayPalCommerce\\WcGateway\\Checkout\\DisableGateways' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Checkout/class-disablegateways.php',
217
  'WooCommerce\\PayPalCommerce\\WcGateway\\Endpoint\\ReturnUrlEndpoint' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Endpoint/class-returnurlendpoint.php',
222
  'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\TransactionUrlProvider' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Gateway/class-transactionurlprovider.php',
223
  'WooCommerce\\PayPalCommerce\\WcGateway\\Notice\\AuthorizeOrderActionNotice' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Notice/class-authorizeorderactionnotice.php',
224
  'WooCommerce\\PayPalCommerce\\WcGateway\\Notice\\ConnectAdminNotice' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Notice/class-connectadminnotice.php',
225
+ 'WooCommerce\\PayPalCommerce\\WcGateway\\Notice\\DccWithoutPayPalAdminNotice' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Notice/class-dccwithoutpaypaladminnotice.php',
226
  'WooCommerce\\PayPalCommerce\\WcGateway\\Processor\\AuthorizedPaymentsProcessor' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Processor/class-authorizedpaymentsprocessor.php',
227
  'WooCommerce\\PayPalCommerce\\WcGateway\\Processor\\OrderProcessor' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Processor/class-orderprocessor.php',
228
  'WooCommerce\\PayPalCommerce\\WcGateway\\Processor\\RefundProcessor' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Processor/class-refundprocessor.php',
229
+ 'WooCommerce\\PayPalCommerce\\WcGateway\\Settings\\PageMatcherTrait' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Settings/class-pagematchertrait.php',
230
  'WooCommerce\\PayPalCommerce\\WcGateway\\Settings\\SectionsRenderer' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Settings/class-sectionsrenderer.php',
231
  'WooCommerce\\PayPalCommerce\\WcGateway\\Settings\\Settings' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Settings/class-settings.php',
232
  'WooCommerce\\PayPalCommerce\\WcGateway\\Settings\\SettingsListener' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Settings/class-settingslistener.php',
233
  'WooCommerce\\PayPalCommerce\\WcGateway\\Settings\\SettingsRenderer' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Settings/class-settingsrenderer.php',
234
  'WooCommerce\\PayPalCommerce\\WcGateway\\WcGatewayModule' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/class-wcgatewaymodule.php',
235
+ 'WooCommerce\\PayPalCommerce\\Webhooks\\Endpoint\\ResubscribeEndpoint' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/Endpoint/class-resubscribeendpoint.php',
236
+ 'WooCommerce\\PayPalCommerce\\Webhooks\\Endpoint\\SimulateEndpoint' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/Endpoint/class-simulateendpoint.php',
237
+ 'WooCommerce\\PayPalCommerce\\Webhooks\\Endpoint\\SimulationStateEndpoint' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/Endpoint/class-simulationstateendpoint.php',
238
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\CheckoutOrderApproved' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/Handler/class-checkoutorderapproved.php',
239
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\CheckoutOrderCompleted' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/Handler/class-checkoutordercompleted.php',
240
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\PaymentCaptureCompleted' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/Handler/class-paymentcapturecompleted.php',
243
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\PrefixTrait' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/Handler/class-prefixtrait.php',
244
  'WooCommerce\\PayPalCommerce\\Webhooks\\Handler\\RequestHandler' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/Handler/class-requesthandler.php',
245
  'WooCommerce\\PayPalCommerce\\Webhooks\\IncomingWebhookEndpoint' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/class-incomingwebhookendpoint.php',
246
+ 'WooCommerce\\PayPalCommerce\\Webhooks\\Status\\WebhookSimulation' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/Status/class-webhooksimulation.php',
247
+ 'WooCommerce\\PayPalCommerce\\Webhooks\\Status\\WebhooksStatusPage' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/Status/class-webhooksstatuspage.php',
248
  'WooCommerce\\PayPalCommerce\\Webhooks\\WebhookModule' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/class-webhookmodule.php',
249
  'WooCommerce\\PayPalCommerce\\Webhooks\\WebhookRegistrar' => __DIR__ . '/../..' . '/modules/ppcp-webhooks/src/class-webhookregistrar.php',
250
  'WooCommerce\\WooCommerce\\Logging\\Logger\\NullLogger' => __DIR__ . '/../..' . '/modules/woocommerce-logging/src/Logger/class-nulllogger.php',
258
  public static function getInitializer(ClassLoader $loader)
259
  {
260
  return \Closure::bind(function () use ($loader) {
261
+ $loader->prefixLengthsPsr4 = ComposerStaticInit6f3e12b28f1ed670640881dfaf1b748a::$prefixLengthsPsr4;
262
+ $loader->prefixDirsPsr4 = ComposerStaticInit6f3e12b28f1ed670640881dfaf1b748a::$prefixDirsPsr4;
263
+ $loader->classMap = ComposerStaticInit6f3e12b28f1ed670640881dfaf1b748a::$classMap;
264
 
265
  }, null, ClassLoader::class);
266
  }
vendor/composer/installed.json CHANGED
@@ -333,17 +333,17 @@
333
  },
334
  {
335
  "name": "dhii/module-interface",
336
- "version": "v0.3.0-alpha1",
337
- "version_normalized": "0.3.0.0-alpha1",
338
  "source": {
339
  "type": "git",
340
  "url": "https://github.com/Dhii/module-interface.git",
341
- "reference": "e93feaf37e183ac22114e3fd86650bd987fa83d1"
342
  },
343
  "dist": {
344
  "type": "zip",
345
- "url": "https://api.github.com/repos/Dhii/module-interface/zipball/e93feaf37e183ac22114e3fd86650bd987fa83d1",
346
- "reference": "e93feaf37e183ac22114e3fd86650bd987fa83d1",
347
  "shasum": ""
348
  },
349
  "require": {
@@ -356,7 +356,7 @@
356
  "slevomat/coding-standard": "^6.0",
357
  "vimeo/psalm": "^3.11.7 | ^4.0"
358
  },
359
- "time": "2021-01-14T19:21:28+00:00",
360
  "type": "library",
361
  "extra": {
362
  "branch-alias": {
@@ -382,7 +382,7 @@
382
  "description": "Interfaces for modules",
383
  "support": {
384
  "issues": "https://github.com/Dhii/module-interface/issues",
385
- "source": "https://github.com/Dhii/module-interface/tree/v0.3.0-alpha1"
386
  },
387
  "install-path": "../dhii/module-interface"
388
  },
333
  },
334
  {
335
  "name": "dhii/module-interface",
336
+ "version": "v0.3.0-alpha2",
337
+ "version_normalized": "0.3.0.0-alpha2",
338
  "source": {
339
  "type": "git",
340
  "url": "https://github.com/Dhii/module-interface.git",
341
+ "reference": "0e39f167d7ed8990c82f5d2e6084159d1a502a5b"
342
  },
343
  "dist": {
344
  "type": "zip",
345
+ "url": "https://api.github.com/repos/Dhii/module-interface/zipball/0e39f167d7ed8990c82f5d2e6084159d1a502a5b",
346
+ "reference": "0e39f167d7ed8990c82f5d2e6084159d1a502a5b",
347
  "shasum": ""
348
  },
349
  "require": {
356
  "slevomat/coding-standard": "^6.0",
357
  "vimeo/psalm": "^3.11.7 | ^4.0"
358
  },
359
+ "time": "2021-08-23T08:23:01+00:00",
360
  "type": "library",
361
  "extra": {
362
  "branch-alias": {
382
  "description": "Interfaces for modules",
383
  "support": {
384
  "issues": "https://github.com/Dhii/module-interface/issues",
385
+ "source": "https://github.com/Dhii/module-interface/tree/v0.3.0-alpha2"
386
  },
387
  "install-path": "../dhii/module-interface"
388
  },
vendor/composer/installed.php CHANGED
@@ -5,7 +5,7 @@
5
  'type' => 'wordpress-plugin',
6
  'install_path' => __DIR__ . '/../../',
7
  'aliases' => array(),
8
- 'reference' => '3370ea0985f09bf6bbbf1cf9d0d6115e996e3799',
9
  'name' => 'woocommerce/woocommerce-paypal-payments',
10
  'dev' => false,
11
  ),
@@ -65,12 +65,12 @@
65
  'dev_requirement' => false,
66
  ),
67
  'dhii/module-interface' => array(
68
- 'pretty_version' => 'v0.3.0-alpha1',
69
- 'version' => '0.3.0.0-alpha1',
70
  'type' => 'library',
71
  'install_path' => __DIR__ . '/../dhii/module-interface',
72
  'aliases' => array(),
73
- 'reference' => 'e93feaf37e183ac22114e3fd86650bd987fa83d1',
74
  'dev_requirement' => false,
75
  ),
76
  'dhii/stringable-interface' => array(
@@ -124,7 +124,7 @@
124
  'type' => 'wordpress-plugin',
125
  'install_path' => __DIR__ . '/../../',
126
  'aliases' => array(),
127
- 'reference' => '3370ea0985f09bf6bbbf1cf9d0d6115e996e3799',
128
  'dev_requirement' => false,
129
  ),
130
  ),
5
  'type' => 'wordpress-plugin',
6
  'install_path' => __DIR__ . '/../../',
7
  'aliases' => array(),
8
+ 'reference' => '505f5223cef9205a77df95f00362e3f515ae8666',
9
  'name' => 'woocommerce/woocommerce-paypal-payments',
10
  'dev' => false,
11
  ),
65
  'dev_requirement' => false,
66
  ),
67
  'dhii/module-interface' => array(
68
+ 'pretty_version' => 'v0.3.0-alpha2',
69
+ 'version' => '0.3.0.0-alpha2',
70
  'type' => 'library',
71
  'install_path' => __DIR__ . '/../dhii/module-interface',
72
  'aliases' => array(),
73
+ 'reference' => '0e39f167d7ed8990c82f5d2e6084159d1a502a5b',
74
  'dev_requirement' => false,
75
  ),
76
  'dhii/stringable-interface' => array(
124
  'type' => 'wordpress-plugin',
125
  'install_path' => __DIR__ . '/../../',
126
  'aliases' => array(),
127
+ 'reference' => '505f5223cef9205a77df95f00362e3f515ae8666',
128
  'dev_requirement' => false,
129
  ),
130
  ),
vendor/dhii/module-interface/.env.example DELETED
@@ -1,6 +0,0 @@
1
- BASE_PATH=./
2
- BUILD_ROOT_PATH=/app/
3
- PROJECT_NAME=dhii_module-interface
4
-
5
- PHP_BUILD_VERSION=7.1
6
- PHP_TEST_VERSION=7.1
 
 
 
 
 
 
vendor/dhii/module-interface/CHANGELOG.md DELETED
@@ -1,32 +0,0 @@
1
- # Change log
2
- All notable changes to this project will be documented in this file.
3
-
4
- The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
- and this project adheres to [Semantic Versioning](http://semver.org/).
6
-
7
- ## [[*next-version*]] - YYYY-MM-DD
8
-
9
- ## [0.3.0-alpha1] - 2021-01-14
10
- ### Added
11
- - Support for PHP 8.
12
- - **BC-breaking**: `ModuleInterface#run()` now declares `void` return type.
13
-
14
- ## [0.2.0-alpha1] - 2020-04-10
15
- ### Changed
16
- - Module `setup()` now returns a `ServiceProviderInterface` instance.
17
- - Module `run()` now requires the `ContainerInterface` argument.
18
- - Modules are no longer key-aware.
19
-
20
- ### Removed
21
- - `DependenciesAwareInterface` has been removed.
22
- - `ModuleFactoryInterface` has been removed.
23
- - `ModuleKeyAwareInterface` has been removed.
24
-
25
- ## [0.1] - 2019-11-05
26
- Stable release
27
-
28
- ### Fixed
29
- - Modules are now allowed to throw specialized exceptions.
30
-
31
- ## [0.1-alpha1] - 2018-05-07
32
- Initial version.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/module-interface/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) YYYY Dhii
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/module-interface/README.md DELETED
@@ -1,290 +0,0 @@
1
- # Dhii - Module Interface
2
-
3
- [![Build Status](https://travis-ci.org/Dhii/module-interface.svg?branch=develop)](https://travis-ci.org/Dhii/module-interface)
4
- [![Code Climate](https://codeclimate.com/github/Dhii/module-interface/badges/gpa.svg)](https://codeclimate.com/github/Dhii/module-interface)
5
- [![Test Coverage](https://codeclimate.com/github/Dhii/module-interface/badges/coverage.svg)](https://codeclimate.com/github/Dhii/module-interface/coverage)
6
- [![Latest Stable Version](https://poser.pugx.org/dhii/module-interface/version)](https://packagist.org/packages/dhii/module-interface)
7
-
8
- ## Details
9
- This package contains interfaces that are useful in describing modules and their attributes and behaviour.
10
-
11
- ### Requirements
12
- - PHP: 7.1 and up, until 8.
13
-
14
- Officially supports at least up to php 7.4.x.
15
-
16
- ### Interfaces
17
- - [`ModuleInterface`][] - The interface for a module. A module is an object that represents an
18
- application fragment. Modules are prepared using `setup()`, which returns a `ServiceProviderInterface` instance that
19
- the application may consume, and invoked using `run()`, consuming the application's DI container.
20
- - [`ModuleAwareInterface`][] - Something that can have a module retrieved.
21
- - [`ModuleExceptionInterface`][] - An exception thrown by a module.
22
-
23
- ### Usage
24
- #### Module Package
25
- In your module's pacakge, create a file that returns a module factory. This factory MUST return an instance
26
- of `ModuleInterface` from this pacakge. By convention, this file has
27
- the name `module.php`, and is located in the root directory. Below is a very basic example. In real life,
28
- the service provider and the module will often have named classes of their own, and factories and extensions
29
- will be located in `services.php` and `extensions.php` respectively, by convention.
30
-
31
- ```php
32
- // module.php
33
- use Dhii\Modular\Module\ModuleInterface;
34
- use Interop\Container\ServiceProviderInterface;
35
- use Psr\Container\ContainerInterface;
36
-
37
- return function () {
38
- return new class () implements ModuleInterface {
39
-
40
- /**
41
- * Declares services of this module.
42
- *
43
- * @return ServiceProviderInterface The service provider with the factories and extensions of this module.
44
- */
45
- public function setup() : ServiceProviderInterface
46
- {
47
- return new class () implements ServiceProviderInterface
48
- {
49
- /**
50
- * Only the factory of the last module in load order is applied.
51
- *
52
- * @return array|callable[] A map of service names to service definitions.
53
- */
54
- public function getFactories()
55
- {
56
- return [
57
- // A factory always gets one parameter: the container.
58
- 'my_module/my_service' => function (ContainerInterface $c) {
59
- // Create and return your service instance
60
- return new MyService();
61
- },
62
- ];
63
- }
64
-
65
- /**
66
- * All extensions are always applied, in load order.
67
- *
68
- * @return array|callable[] A map of service names to extensions.
69
- */
70
- public function getExtensions()
71
- {
72
- return [
73
- // An extension gets an additional parameter:
74
- // the value returned by the factory or the previously applied extensions.
75
- 'other_module/other_service' => function (
76
- ContainerInterface $c,
77
- OtherServiceInterface $previous
78
- ): OtherServiceInterface {
79
- // Perhaps decorate $previous and return the decorator
80
- return new MyDecorator($previous);
81
- },
82
- ];
83
- }
84
- };
85
- }
86
-
87
- /**
88
- * Consumes services of this and other modules.
89
- *
90
- * @param ContainerInterface $c A container with the services of all modules.
91
- */
92
- public function run(ContainerInterface $c)
93
- {
94
- $myService = $c->get('my_module/my_service');
95
- $myService->doSomething();
96
- }
97
- };
98
- };
99
- ```
100
-
101
- In the above example, the module declares a service `my_module/my_service`, and an extension
102
- for the `other_module/other_service`, which may be found in another module. Note that by convention,
103
- the service name contains the module name prefix, separated by forward slash `/`. It's possible
104
- to further "nest" services by adding slash-separated "levels". In the future, some container
105
- implementations will add benefits for modules that use this convention.
106
-
107
- Applications would often need the ability to do something with the arbitrary set of
108
- modules they require. In order for an application to be able to group all modules
109
- together, declare the package type in your `composer.json` to be `dhii-mod` by convention.
110
- Following this convention would allow all modules written by all authors to be treated
111
- uniformly.
112
-
113
- ```json
114
- {
115
- "name": "me/my_module",
116
- "type": "dhii-mod"
117
- }
118
- ```
119
-
120
- What's important here:
121
-
122
- 1. A module's `setup()` method should not cause side effects.
123
-
124
- The setup method is intended for the modules to prepare for action. Modules should not actually
125
- peform the actions during this method. The container is not available in this method, and therefore
126
- the module cannot use any services, whether of itself or of other modules, in this method. Do not
127
- try to make the module use its own services here.
128
-
129
- 2. Implement the correct interfaces.
130
-
131
- A module MUST implement `ModuleInterface`. The module's `setup()` method MUST return `ServiceProviderInterface`.
132
- Even though the [Service Provider][`container-interop/service-provider`] standard is experimental, and has been experimental for a long time, the
133
- module standard relies heavily on it. If the module standard becomes ubiquitous, this could push
134
- FIG to go forward with the Service Provider standard, hopefully making it into a PSR.
135
-
136
- 3. Observe conventions.
137
-
138
- It is important that conventions outlined here are observed. Some are necessary for smooth operation of
139
- modules and/or consuming applications. Some others may not make a difference right now, but could
140
- add benefits in the future. Please observe these conventions to ensure an optimal experience
141
- for yourself and for other users of the standard.
142
-
143
- #### Consumer Package
144
- ##### Module Installation
145
- The package that consumes modules, which is usually the application, would need to require the modules.
146
- The below example uses the [`oomphinc/composer-installers-extender`][] lib to configure Composer
147
- so that it installs all `dhii-mod` packages into the `modules` directory in the application root.
148
- Packages `me/my_module` and `me/my_other_module` would therefore go into `modules/me/my_module` and
149
- `modules/me/my_other_module` respectively.
150
-
151
- ```json
152
- {
153
- "name": "me/my_app",
154
- "require": {
155
- "me/my_module": "^0.1",
156
- "me/my_other_module": "^0.1",
157
- "oomphinc/composer-installers-extender": "^1.1"
158
- },
159
-
160
- "extra": {
161
- "installer-types": ["dhii-mod"],
162
- "installer-paths": {
163
- "modules/{$vendor}/{$name}": ["type:dhii-mod"]
164
- }
165
- }
166
- }
167
- ```
168
-
169
- ##### Module Loading
170
- Once a module has been required, it must be loaded. Module files must be explicitly loaded by the
171
- application, because the application is what determines module load order. The load order is
172
- the fundamental principle that allows modules to extend and override each other's services
173
- in a simple and intuitive way:
174
-
175
- 1. Factories in modules that are loaded later will completely override factories of modules loaded earlier.
176
-
177
- Ultimately, for each service, only one factory will be used: the one declared last. So if `my_other_module`
178
- is loaded after `my_module`, and it declares a service `my_module/my_service`,
179
- then it will override the `my_module/my_service` service declared by `my_module`.
180
- In short: **last factory wins**.
181
-
182
- 2. Extensions in modules that are loaded later will be applied after extensions of modules loaded earlier.
183
-
184
- Ultimately, extensions from _all_ modules will be applied on top of what is returned by the factory.
185
- So if `my_other_module` declares an extension `other_module/other_service`, it will be applied after
186
- the extension `other_module/other_service` declared by `my_module`.
187
- In short: **later extensions extend previous extensions**.
188
-
189
- Continuing from the examples above, if something in the application requests the service `other_module/other_service`
190
- declared by `my_other_module`, this is what is going to happen:
191
-
192
- 1. The factory in `my_other_module` is invoked.
193
- 2. The extension in `my_module` is invoked, and receives the result of the above factory as `$previous`.
194
- 3. The extension in `my_other_module` is invoked, and receives the result of the above extension as `$previous`
195
- 4. The caller of `get('other_module/other_service')` receives the result of the above extension.
196
-
197
- Thus, any module can override and/or extend services from any other module. Below is an example of what
198
- an application's bootstrap code could look like. This example uses classes from [`dhii/containers`][].
199
-
200
- ```php
201
- // bootstrap.php
202
-
203
- use Dhii\Modular\Module\ModuleInterface;
204
- use Interop\Container\ServiceProviderInterface;
205
- use Dhii\Container\CompositeCachingServiceProvider;
206
- use Dhii\Container\DelegatingContainer;
207
- use Dhii\Container\CachingContainer;
208
-
209
- (function ($file) {
210
- $baseDir = dirname($file);
211
- $modulesDir = "$baseDir/modules";
212
-
213
- // Order is important!
214
- $moduleNames = [
215
- 'me/my_module',
216
- 'me/my_other_module',
217
- ];
218
-
219
- // Create and load all modules
220
- /* @var $modules ModuleInterface[] */
221
- $modules = [];
222
- foreach ($moduleNames as $moduleName) {
223
- $moduleFactory = require_once("$modulesDir/$moduleName/module.php");
224
- $module = $moduleFactory();
225
- $modules[$moduleName] = $module;
226
- }
227
-
228
- // Retrieve all modules' service providers
229
- /* @var $providers ServiceProviderInterface[] */
230
- $providers = [];
231
- foreach ($modules as $module) {
232
- $providers[] = $module->setup();
233
- }
234
-
235
- // Group all service providers into one
236
- $provider = new CompositeCachingServiceProvider();
237
- $container = new CachingContainer(new DelegatingContainer($provider, $parentContainer = null));
238
-
239
- // Run all modules
240
- foreach ($modules as $module) {
241
- $module->run($container);
242
- }
243
- })(__FILE__);
244
- ```
245
-
246
- The above will load, setup, and run modules `me/my_module` and `me/my_other_module`, in that order,
247
- from the `modules` directory, provided that conventions have been followed by those modules.
248
- What's important to note here:
249
-
250
- 1. First _all_ modules are set up, and then _all_ modules are run.
251
-
252
- If you set up and run modules in the same step, it will not work, because the bootstrap
253
- will not have the opportunity to configure the application's DI container with services
254
- from all modules.
255
-
256
- 2. The `CompositeCachingServiceProvider` is what is responsible for resolving services correctly.
257
-
258
- This relieves the application, as the process can seem complicated, and is quite re-usable.
259
- The usage of this class is recommended.
260
-
261
- 3. The `DelegatingContainer` optionally accepts a parent container.
262
-
263
- If your application is a module itself, and needs to be part of a larger application with its
264
- own DI container, supply it as the 2nd parameter. This will ensure that services will always
265
- be retrieved from the top-most container, regardless of where the definition is declared.
266
-
267
- 4. The `CachingContainer` ensures services are cached.
268
-
269
- Effectively, this means that all services are singletons, i.e. there will only be one instance
270
- of each service in the application. This is most commonly the desired behaviour. Without the
271
- `CachingContainer`, i.e. with just the `DelegatingContainer`, service definitions will get
272
- invoked every time `get()` is called, which is usually undesirable.
273
-
274
- 5. Conventions are important.
275
-
276
- If modules did not place the `module.php` file into their root directories, the bootstrap
277
- would not be able to load each module by just its package name. Modules which do not
278
- follow that convention must have their `module.php` file loaded separately, which would
279
- make the bootstrap code more complicated.
280
-
281
-
282
- [Dhii]: https://github.com/Dhii/dhii
283
-
284
- [`dhii/containers`]: https://packagist.org/packages/dhii/containers
285
- [`oomphinc/composer-installers-extender`]: https://packagist.org/packages/oomphinc/composer-installers-extender
286
- [`container-interop/service-provider`]: https://packagist.org/packages/container-interop/service-provider
287
-
288
- [`ModuleInterface`]: src/ModuleInterface.php
289
- [`ModuleAwareInterface`]: src/ModuleAwareInterface.php
290
- [`ModuleExceptionInterface`]: src/Exception/ModuleExceptionInterface.php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/module-interface/docker-compose.yml DELETED
@@ -1,29 +0,0 @@
1
- version: '3.4'
2
- services:
3
-
4
- build:
5
- build:
6
- context: ./
7
- dockerfile: docker/Dockerfile
8
- target: build
9
- args:
10
- PHP_BUILD_VERSION: $PHP_BUILD_VERSION
11
- BUILD_ROOT_PATH: $BUILD_ROOT_PATH
12
- container_name: "${PROJECT_NAME}_build"
13
- working_dir: ${BUILD_ROOT_PATH}
14
- volumes:
15
- - ${BASE_PATH}:${BUILD_ROOT_PATH}
16
-
17
- test:
18
- build:
19
- context: ./
20
- dockerfile: docker/Dockerfile
21
- target: test
22
- args:
23
- BUILD_ROOT_PATH: $BUILD_ROOT_PATH
24
- PHP_BUILD_VERSION: $PHP_BUILD_VERSION
25
- PHP_TEST_VERSION: $PHP_TEST_VERSION
26
- container_name: "${PROJECT_NAME}_test"
27
- working_dir: ${BUILD_ROOT_PATH}
28
- volumes:
29
- - ${BASE_PATH}:${BUILD_ROOT_PATH}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/module-interface/docker/Dockerfile DELETED
@@ -1,39 +0,0 @@
1
- ARG PHP_BUILD_VERSION
2
- ARG PHP_TEST_VERSION
3
-
4
- # Composer on correct PHP version
5
- FROM php:${PHP_BUILD_VERSION}-cli as build
6
-
7
- ARG BUILD_ROOT_PATH
8
-
9
- RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
10
- RUN apt-get update
11
- RUN apt-get install -y zip unzip curl git
12
- RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
13
- RUN php composer-setup.php --install-dir=/usr/bin --filename=composer
14
- RUN php -r "unlink('composer-setup.php');"
15
-
16
- WORKDIR ${BUILD_ROOT_PATH}
17
- COPY . ./
18
-
19
-
20
- FROM php:${PHP_TEST_VERSION}-cli as test
21
-
22
- ARG BUILD_ROOT_PATH
23
-
24
- RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
25
- RUN pecl install xdebug-2.6.0
26
- RUN docker-php-ext-install pcntl
27
- RUN docker-php-ext-install posix
28
-
29
- WORKDIR ${BUILD_ROOT_PATH}
30
- COPY --from=build ${BUILD_ROOT_PATH} ${BUILD_ROOT_PATH}
31
-
32
-
33
- # Install PHP dev dependencies
34
- FROM build as vendor-dev
35
-
36
- ARG BUILD_ROOT_PATH
37
-
38
- WORKDIR ${BUILD_ROOT_PATH}
39
- RUN composer install
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/module-interface/phpcs.xml.dist DELETED
@@ -1,50 +0,0 @@
1
- <?xml version="1.0"?>
2
- <ruleset name="plugin"
3
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
- xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/squizlabs/PHP_CodeSniffer/master/phpcs.xsd">
5
-
6
- <file>./src</file>
7
-
8
-
9
- <config name="installed_paths" value="../../slevomat/coding-standard"/>
10
-
11
- <rule ref="PSR12"/>
12
- <rule ref="SlevomatCodingStandard.TypeHints.ParameterTypeHint"/>
13
- <rule ref="SlevomatCodingStandard.TypeHints.PropertyTypeHint">
14
- <type>warning</type>
15
- </rule>
16
- <rule ref="SlevomatCodingStandard.TypeHints.ReturnTypeHint"/>
17
- <rule ref="SlevomatCodingStandard.TypeHints.UselessConstantTypeHint"/>
18
- <rule ref="SlevomatCodingStandard.TypeHints.DeclareStrictTypes">
19
- <properties>
20
- <property name="newlinesCountBetweenOpenTagAndDeclare" value="2"/>
21
- <property name="newlinesCountAfterDeclare" value="2"/>
22
- <property name="spacesCountAroundEqualsSign" value="0"/>
23
- </properties>
24
- </rule>
25
- <rule ref="SlevomatCodingStandard.Classes.ClassStructure">
26
- <properties>
27
- <property name="groups" type="array">
28
- <element value="uses"/>
29
-
30
- <!-- Public constants are first but you don't care about the order of protected or private constants -->
31
- <element value="public constants"/>
32
- <element value="constants"/>
33
-
34
- <!-- You don't care about the order among the properties. The same can be done with "properties" shortcut -->
35
- <element value="public properties, protected properties, private properties, properties"/>
36
-
37
- <!-- Constructor is first, then all public methods, then protected/private methods and magic methods are last -->
38
- <element value="constructor"/>
39
- <element value="all public methods"/>
40
- <element value="methods"/>
41
- <element value="magic methods"/>
42
- </property>
43
- </properties>
44
- </rule>
45
- <rule ref="SlevomatCodingStandard.ControlStructures.DisallowContinueWithoutIntegerOperandInSwitch"/>
46
- <rule ref="SlevomatCodingStandard.ControlStructures.RequireNullCoalesceOperator"/>
47
- <rule ref="SlevomatCodingStandard.PHP.DisallowDirectMagicInvokeCall"/>
48
- <rule ref="SlevomatCodingStandard.Operators.DisallowEqualOperators"/>
49
- <rule ref="SlevomatCodingStandard.Operators.RequireCombinedAssignmentOperator"/>
50
- </ruleset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/module-interface/phpunit.xml.dist DELETED
@@ -1,20 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <phpunit
3
- colors="true"
4
- bootstrap="tests/bootstrap.php"
5
- >
6
- <php>
7
- <ini name="display_errors" value="1" />
8
- <ini name="display_startup_errors" value="1" />
9
- </php>
10
- <testsuites>
11
- <testsuite name="unit">
12
- <directory>tests/unit</directory>
13
- </testsuite>
14
- </testsuites>
15
- <filter>
16
- <whitelist processUncoveredFilesFromWhitelist="true">
17
- <directory suffix=".php">src</directory>
18
- </whitelist>
19
- </filter>
20
- </phpunit>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/module-interface/psalm.xml.dist DELETED
@@ -1,152 +0,0 @@
1
- <?xml version="1.0"?>
2
- <psalm
3
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
- xmlns="https://getpsalm.org/schema/config"
5
- xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
6
- xmlns:xi="http://www.w3.org/2001/XInclude"
7
- totallyTyped="false"
8
- useDocblockTypes="true"
9
- usePhpDocMethodsWithoutMagicCall="false"
10
- strictBinaryOperands="true"
11
- rememberPropertyAssignmentsAfterCall="true"
12
- allowPhpStormGenerics="true"
13
- allowCoercionFromStringToClassConst="false"
14
- allowStringToStandInForClass="false"
15
- memoizeMethodCallResults="false"
16
- hoistConstants="false"
17
- addParamDefaultToDocblockType="false"
18
- checkForThrowsDocblock="true"
19
- checkForThrowsInGlobalScope="false"
20
- ignoreInternalFunctionFalseReturn="false"
21
- ignoreInternalFunctionNullReturn="false"
22
- throwExceptionOnError="false"
23
- hideExternalErrors="true"
24
- allowFileIncludes="true"
25
- >
26
- <projectFiles>
27
- <directory name="src"/>
28
- </projectFiles>
29
-
30
- <extraFiles>
31
- <ignoreFiles>
32
- <directory name="vendor/phpspec/prophecy"/>
33
- </ignoreFiles>
34
- </extraFiles>
35
-
36
-
37
- <issueHandlers>
38
- <ConflictingReferenceConstraint errorLevel="error"/>
39
- <ContinueOutsideLoop errorLevel="error"/>
40
- <DuplicateArrayKey errorLevel="error"/>
41
- <DuplicateClass errorLevel="error"/>
42
- <DuplicateFunction errorLevel="error"/>
43
- <DuplicateMethod errorLevel="error"/>
44
- <DuplicateParam errorLevel="error"/>
45
- <EmptyArrayAccess errorLevel="error"/>
46
- <FalsableReturnStatement errorLevel="error"/>
47
- <FalseOperand errorLevel="error"/>
48
- <ForbiddenCode errorLevel="error"/>
49
- <ForbiddenEcho errorLevel="error"/>
50
- <InaccessibleClassConstant errorLevel="error"/>
51
- <InaccessibleMethod errorLevel="error"/>
52
- <InterfaceInstantiation errorLevel="error"/>
53
- <InaccessibleProperty errorLevel="error"/>
54
- <InternalClass errorLevel="error"/>
55
- <InternalMethod errorLevel="error"/>
56
- <InternalProperty errorLevel="error"/>
57
- <InvalidArgument errorLevel="error"/>
58
- <InvalidArrayAccess errorLevel="error"/>
59
- <InvalidArrayAssignment errorLevel="error"/>
60
- <InvalidArrayOffset errorLevel="error"/>
61
- <InvalidCast errorLevel="error"/>
62
- <InvalidCatch errorLevel="error"/>
63
- <InvalidClass errorLevel="error"/>
64
- <InvalidClone errorLevel="error"/>
65
- <InvalidFalsableReturnType errorLevel="error"/>
66
- <InvalidThrow errorLevel="error"/>
67
- <InvalidToString errorLevel="error"/>
68
- <LoopInvalidation errorLevel="error"/>
69
- <InvalidNullableReturnType errorLevel="error"/>
70
- <LessSpecificReturnType errorLevel="error"/>
71
- <InvalidGlobal errorLevel="error"/>
72
- <InvalidIterator errorLevel="error"/>
73
- <InvalidMethodCall errorLevel="error"/>
74
- <InvalidFunctionCall errorLevel="error"/>
75
- <ImplicitToStringCast errorLevel="error"/>
76
- <ImplementedReturnTypeMismatch errorLevel="error"/>
77
- <InvalidParamDefault errorLevel="error"/>
78
- <InvalidPassByReference errorLevel="error"/>
79
- <InvalidPropertyAssignment errorLevel="error"/>
80
- <InvalidPropertyAssignmentValue errorLevel="error"/>
81
- <InvalidPropertyFetch errorLevel="error"/>
82
- <InvalidReturnStatement errorLevel="error"/>
83
- <InvalidReturnType errorLevel="error"/>
84
- <InvalidScalarArgument errorLevel="error"/>
85
- <InvalidScope errorLevel="error"/>
86
- <InvalidStaticInvocation errorLevel="error"/>
87
- <MissingConstructor errorLevel="error"/>
88
- <MissingDependency errorLevel="error"/>
89
- <MissingFile errorLevel="error"/>
90
- <MixedArgument errorLevel="error"/>
91
- <MoreSpecificImplementedParamType errorLevel="error"/>
92
- <MoreSpecificReturnType errorLevel="error"/>
93
- <NoValue errorLevel="error"/>
94
- <NoInterfaceProperties errorLevel="error"/>
95
- <NonStaticSelfCall errorLevel="error"/>
96
- <NullableReturnStatement errorLevel="error"/>
97
- <NullArgument errorLevel="error"/>
98
- <NullArrayAccess errorLevel="error"/>
99
- <NullArrayOffset errorLevel="error"/>
100
- <NullFunctionCall errorLevel="error"/>
101
- <NullIterator errorLevel="error"/>
102
- <NullOperand errorLevel="error"/>
103
- <NullPropertyAssignment errorLevel="error"/>
104
- <NullPropertyFetch errorLevel="error"/>
105
- <NullReference errorLevel="error"/>
106
- <OverriddenMethodAccess errorLevel="error"/>
107
- <OverriddenPropertyAccess errorLevel="error"/>
108
- <ParadoxicalCondition errorLevel="error"/>
109
- <ParentNotFound errorLevel="error"/>
110
- <LessSpecificImplementedReturnType errorLevel="error"/>
111
- <MissingParamType errorLevel="error"/>
112
- <MissingClosureParamType errorLevel="error"/>
113
- <MissingClosureReturnType errorLevel="error"/>
114
- <MissingPropertyType errorLevel="error"/>
115
- <UndefinedConstant errorLevel="error"/>
116
-
117
- <AssignmentToVoid errorLevel="info"/>
118
- <DeprecatedClass errorLevel="info"/>
119
- <DeprecatedConstant errorLevel="info"/>
120
- <DeprecatedTrait errorLevel="info"/>
121
- <DocblockTypeContradiction errorLevel="info"/>
122
- <InvalidDocblock errorLevel="info"/>
123
- <InvalidDocblockParamName errorLevel="info"/>
124
- <InvalidTemplateParam errorLevel="info"/>
125
- <DeprecatedInterface errorLevel="info"/>
126
- <DeprecatedMethod errorLevel="info"/>
127
- <DeprecatedProperty errorLevel="info"/>
128
- <MethodSignatureMustOmitReturnType errorLevel="info"/>
129
- <MismatchingDocblockParamType errorLevel="info"/>
130
- <MismatchingDocblockReturnType errorLevel="info"/>
131
- <MissingDocblockType errorLevel="info"/>
132
- <MissingParamType errorLevel="info"/>
133
- <MissingTemplateParam errorLevel="info"/>
134
- <MissingThrowsDocblock errorLevel="info"/>
135
- <MixedArgumentTypeCoercion errorLevel="info"/>
136
- <MixedArrayAccess errorLevel="info"/>
137
- <MixedArrayAssignment errorLevel="info"/>
138
- <MixedArrayOffset errorLevel="info"/>
139
- <MixedArrayTypeCoercion errorLevel="info"/>
140
- <MixedAssignment errorLevel="info"/>
141
- <MixedFunctionCall errorLevel="info"/>
142
- <MixedInferredReturnType errorLevel="info"/>
143
- <MixedMethodCall errorLevel="info"/>
144
- <MixedOperand errorLevel="info"/>
145
- <MixedPropertyAssignment errorLevel="info"/>
146
- <MixedPropertyFetch errorLevel="info"/>
147
- <MixedPropertyTypeCoercion errorLevel="info"/>
148
- <MixedReturnStatement errorLevel="info"/>
149
- <MixedReturnTypeCoercion errorLevel="info"/>
150
- <MixedStringOffsetAssignment errorLevel="info"/>
151
- </issueHandlers>
152
- </psalm>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/module-interface/tests/bootstrap.php DELETED
@@ -1,5 +0,0 @@
1
- <?php
2
-
3
- error_reporting(E_ALL | E_STRICT);
4
-
5
- require_once dirname(__FILE__).'/../vendor/autoload.php';
 
 
 
 
 
vendor/dhii/module-interface/tests/stubs/GetImplementingMockBuilderCapableTrait.php DELETED
@@ -1,48 +0,0 @@
1
- <?php
2
-
3
- namespace Dhii\Modular\Module\Test;
4
-
5
- use PHPUnit\Framework\MockObject\MockBuilder;
6
- use Throwable;
7
- use Exception;
8
- use Error;
9
- use PHPUnit\Framework\TestCase;
10
-
11
- /**
12
- * Eases development of tests by allowing creation of more complex mocks.
13
- *
14
- * The original {@see TestCase::getMockBuilder()} allows mocking only a class or an interface.
15
- * But sometimes, it is necessary to mock a class that implements one or more interfaces.
16
- * One such case is with exceptions: testing an interface that extends {@see Throwable} requires the extension
17
- * of {@see Exception} or {@see Error} by the mock.
18
- */
19
- trait GetImplementingMockBuilderCapableTrait
20
- {
21
- /**
22
- * Retrieves a builder for a class that extends the specified base class, while implementing the specified interfaces.
23
- *
24
- * @param string $baseClassName The name of the base class to extend.
25
- * @param array $interfaceNames The names of interfaces to implement
26
- * @return MockBuilder A builder for the new class.
27
- */
28
- public function getImplementingMockBuilder(string $baseClassName, array $interfaceNames)
29
- {
30
- $className = uniqid("{$baseClassName}_");
31
- $interfaceNames = implode(', ', $interfaceNames);
32
- $classString = "abstract class $className extends $baseClassName implements $interfaceNames {}";
33
-
34
- eval($classString);
35
-
36
- return $this->getMockBuilder($className);
37
- }
38
-
39
- /**
40
- * Retrieves a mock builder for the specified classname.
41
- *
42
- * @param string $className Name of the class/interface/trait to build a mock for.
43
- * @return MockBuilder The builder.
44
- */
45
- // The below declaration is commented out becaue it's impossible
46
- // to make it compatible with both PHPUnit 7 and 9.
47
- //abstract public function getMockBuilder(string $className): MockBuilder;
48
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/module-interface/tests/unit/Exception/ModuleExceptionInterfaceTest.php DELETED
@@ -1,64 +0,0 @@
1
- <?php
2
-
3
- namespace Dhii\Modular\Module\UnitTest\Exception;
4
-
5
- use Dhii\Modular\Module\Exception\ModuleExceptionInterface as TestSubject;
6
- use Dhii\Modular\Module\ModuleAwareInterface;
7
- use Dhii\Modular\Module\Test\GetImplementingMockBuilderCapableTrait;
8
- use Exception;
9
- use PHPUnit\Framework\MockObject\MockObject;
10
- use PHPUnit\Framework\TestCase;
11
-
12
- /**
13
- * Tests {@see TestSubject}.
14
- *
15
- * @since 0.2
16
- */
17
- class ModuleExceptionInterfaceTest extends TestCase
18
- {
19
- use GetImplementingMockBuilderCapableTrait;
20
-
21
- /**
22
- * Creates a new instance of the test subject.
23
- *
24
- * @since 0.2
25
- *
26
- * @return TestSubject&MockObject
27
- */
28
- public function createInstance()
29
- {
30
- $mock = $this->getImplementingMockBuilder(Exception::class, [TestSubject::class])
31
- ->setMethods([])
32
- ->getMock();
33
-
34
- return $mock;
35
- }
36
-
37
- /**
38
- * Tests whether a valid instance of the test subject can be created.
39
- *
40
- * @since 0.2
41
- */
42
- public function testCanBeCreated()
43
- {
44
- $subject = $this->createInstance();
45
-
46
- $this->assertInstanceOf(
47
- TestSubject::class,
48
- $subject,
49
- 'A valid instance of the test subject could not be created'
50
- );
51
-
52
- $this->assertInstanceOf(
53
- 'Throwable',
54
- $subject,
55
- 'Exception must be throwable'
56
- );
57
-
58
- $this->assertInstanceOf(
59
- ModuleAwareInterface::class,
60
- $subject,
61
- 'Subject does not implement required interface'
62
- );
63
- }
64
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/module-interface/tests/unit/ModuleAwareInterfaceTest.php DELETED
@@ -1,46 +0,0 @@
1
- <?php
2
-
3
- namespace Dhii\Modular\Module\UnitTest;
4
-
5
- use Dhii\Modular\Module\ModuleAwareInterface as TestSubject;
6
- use PHPUnit_Framework_MockObject_MockObject as MockObject;
7
- use PHPUnit\Framework\TestCase;
8
-
9
- /**
10
- * Tests {@see TestSubject}.
11
- *
12
- * @since 0.2
13
- */
14
- class ModuleAwareInterfaceTest extends TestCase
15
- {
16
- /**
17
- * Creates a new instance of the test subject.
18
- *
19
- * @since 0.2
20
- *
21
- * @return TestSubject&MockObject
22
- */
23
- public function createInstance()
24
- {
25
- $mock = $this->getMockBuilder(TestSubject::class)
26
- ->getMock();
27
-
28
- return $mock;
29
- }
30
-
31
- /**
32
- * Tests whether a valid instance of the test subject can be created.
33
- *
34
- * @since 0.2
35
- */
36
- public function testCanBeCreated()
37
- {
38
- $subject = $this->createInstance();
39
-
40
- $this->assertInstanceOf(
41
- TestSubject::class,
42
- $subject,
43
- 'A valid instance of the test subject could not be created'
44
- );
45
- }
46
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/dhii/module-interface/tests/unit/ModuleInterfaceTest.php DELETED
@@ -1,46 +0,0 @@
1
- <?php
2
-
3
- namespace Dhii\Modular\Module\UnitTest;
4
-
5
- use Dhii\Modular\Module\ModuleInterface as TestSubject;
6
- use PHPUnit\Framework\MockObject\MockObject as MockObject;
7
- use PHPUnit\Framework\TestCase;
8
-
9
- /**
10
- * Tests {@see TestSubject}.
11
- *
12
- * @since 0.2
13
- */
14
- class ModuleInterfaceTest extends TestCase
15
- {
16
- /**
17
- * Creates a new instance of the test subject.
18
- *
19
- * @since 0.2
20
- *
21
- * @return TestSubject&MockObject
22
- */
23
- public function createInstance()
24
- {
25
- $mock = $this->getMockBuilder(TestSubject::class)
26
- ->getMock();
27
-
28
- return $mock;
29
- }
30
-
31
- /**
32
- * Tests whether a valid instance of the test subject can be created.
33
- *
34
- * @since 0.2
35
- */
36
- public function testCanBeCreated()
37
- {
38
-