@aws-cdk/toolkit-lib 1.10.2 → 1.10.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build-info.json CHANGED
@@ -1,4 +1,4 @@
1
1
  {
2
- "comment": "Generated at 2025-10-30T13:59:16Z by build-info.sh",
3
- "commit": "a560d1e"
2
+ "comment": "Generated at 2025-11-17T14:54:13Z by build-info.sh",
3
+ "commit": "30ee4c9"
4
4
  }
@@ -20,4 +20,24 @@ export type TemplateBodyParameter = {
20
20
  * @param toolkitInfo - information about the toolkit stack
21
21
  */
22
22
  export declare function makeBodyParameter(ioHelper: IoHelper, stack: CloudFormationStackArtifact, resolvedEnvironment: Environment, assetManifest: AssetManifestBuilder, resources: EnvironmentResources, overrideTemplate?: any): Promise<TemplateBodyParameter>;
23
+ /**
24
+ * Format an S3 URL in the manifest for use with CloudFormation
25
+ *
26
+ * Replaces environment placeholders (which this field may contain),
27
+ * and reformats s3://.../... urls into S3 REST URLs (which CloudFormation
28
+ * expects).
29
+ *
30
+ * We need to return the official region- and partition-specific URL for AWS S3
31
+ * here, so we use the SDK's information about endpoints. At the same time, the
32
+ * SDK allows overriding this URL by setting an environment variable
33
+ * (specifically $AWS_ENDPOINT_URL_S3) but we want to *not* honor that, because
34
+ * there's a 99.9% chance this URL will not be routable from AWS CloudFormation.
35
+ *
36
+ * To allow for the off chance that someone is running this tool against a
37
+ * custom build of CloudFormation that does need a specific S3 endpoint passed
38
+ * to it, we'll introduce a new environment variable that we'll respect instead:
39
+ *
40
+ * AWS_ENDPOINT_URL_S3_FOR_CLOUDFORMATION
41
+ */
42
+ export declare function restUrlFromManifest(url: string, environment: Environment): Promise<string>;
23
43
  //# sourceMappingURL=template-body-parameter.d.ts.map
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeBodyParameter = makeBodyParameter;
4
+ exports.restUrlFromManifest = restUrlFromManifest;
4
5
  const fs = require("node:fs/promises");
5
6
  const path = require("node:path");
6
7
  const util = require("node:util");
@@ -67,7 +68,19 @@ async function makeBodyParameter(ioHelper, stack, resolvedEnvironment, assetMani
67
68
  *
68
69
  * Replaces environment placeholders (which this field may contain),
69
70
  * and reformats s3://.../... urls into S3 REST URLs (which CloudFormation
70
- * expects)
71
+ * expects).
72
+ *
73
+ * We need to return the official region- and partition-specific URL for AWS S3
74
+ * here, so we use the SDK's information about endpoints. At the same time, the
75
+ * SDK allows overriding this URL by setting an environment variable
76
+ * (specifically $AWS_ENDPOINT_URL_S3) but we want to *not* honor that, because
77
+ * there's a 99.9% chance this URL will not be routable from AWS CloudFormation.
78
+ *
79
+ * To allow for the off chance that someone is running this tool against a
80
+ * custom build of CloudFormation that does need a specific S3 endpoint passed
81
+ * to it, we'll introduce a new environment variable that we'll respect instead:
82
+ *
83
+ * AWS_ENDPOINT_URL_S3_FOR_CLOUDFORMATION
71
84
  */
72
85
  async function restUrlFromManifest(url, environment) {
73
86
  const doNotUseMarker = '**DONOTUSE**';
@@ -91,13 +104,27 @@ async function restUrlFromManifest(url, environment) {
91
104
  // got an 's3://bucket/object' URL instead. Construct the rest API URL here.
92
105
  const bucketName = s3Url[1];
93
106
  const objectKey = s3Url[2];
94
- // SDK v3 no longer allows for getting endpoints from only region.
95
- // A command and client config must now be provided.
96
- const s3 = new client_s3_1.S3Client({ region });
97
- const endpoint = await (0, middleware_endpoint_1.getEndpointFromInstructions)({}, client_s3_1.HeadObjectCommand, {
98
- ...s3.config,
99
- });
100
- endpoint.url.hostname;
101
- return `${endpoint.url.origin}/${bucketName}/${objectKey}`;
107
+ const originalOverrideS3Endpoint = process.env.AWS_ENDPOINT_URL_S3;
108
+ setEnv('AWS_ENDPOINT_URL_S3', process.env.AWS_ENDPOINT_URL_S3_FOR_CLOUDFORMATION);
109
+ try {
110
+ // SDK v3 no longer allows for getting endpoints from only region.
111
+ // A command and client config must now be provided.
112
+ const s3 = new client_s3_1.S3Client({ region });
113
+ const endpoint = await (0, middleware_endpoint_1.getEndpointFromInstructions)({}, client_s3_1.HeadObjectCommand, {
114
+ ...s3.config,
115
+ });
116
+ return `${endpoint.url.origin}/${bucketName}/${objectKey}`;
117
+ }
118
+ finally {
119
+ setEnv('AWS_ENDPOINT_URL_S3', originalOverrideS3Endpoint);
120
+ }
121
+ }
122
+ function setEnv(name, value) {
123
+ if (value) {
124
+ process.env[name] = value;
125
+ }
126
+ else {
127
+ delete process.env[name];
128
+ }
102
129
  }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtYm9keS1wYXJhbWV0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZW1wbGF0ZS1ib2R5LXBhcmFtZXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlDQSw4Q0E2REM7QUE5RkQsdUNBQXVDO0FBQ3ZDLGtDQUFrQztBQUNsQyxrQ0FBa0M7QUFDbEMsNENBQThHO0FBQzlHLGtEQUFpRTtBQUNqRSxxRUFBMEU7QUFDMUUsK0JBQStCO0FBQy9CLCtEQUEyRDtBQUMzRCxxQ0FBaUQ7QUFVakQsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFFbEM7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0ksS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxRQUFrQixFQUNsQixLQUFrQyxFQUNsQyxtQkFBZ0MsRUFDaEMsYUFBbUMsRUFDbkMsU0FBK0IsRUFDL0IsZ0JBQXNCO0lBRXRCLDJFQUEyRTtJQUMzRSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDM0QsT0FBTztZQUNMLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDLEtBQUssQ0FBQywyQkFBMkIsRUFBRSxtQkFBbUIsQ0FBQztTQUMvRixDQUFDO0lBQ0osQ0FBQztJQUVELG9FQUFvRTtJQUNwRSxNQUFNLFlBQVksR0FBRyxJQUFBLGFBQU0sRUFBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFaEUsSUFBSSxZQUFZLENBQUMsTUFBTSxJQUFJLHNCQUFzQixHQUFHLElBQUksRUFBRSxDQUFDO1FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLE1BQU0sU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUss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QTJCLEVBQUMsRUFBRSxFQUFFLDZCQUFpQixFQUFFO1FBQ3hFLEdBQUcsRUFBRSxDQUFDLE1BQU07S0FDYixDQUFDLENBQUM7SUFDSCxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUV0QixPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksVUFBVSxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQzdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCB7IHR5cGUgQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LCB0eXBlIEVudmlyb25tZW50LCBFbnZpcm9ubWVudFBsYWNlaG9sZGVycyB9IGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgeyBIZWFkT2JqZWN0Q29tbWFuZCwgUzNDbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtczMnO1xuaW1wb3J0IHsgZ2V0RW5kcG9pbnRGcm9tSW5zdHJ1Y3Rpb25zIH0gZnJvbSAnQHNtaXRoeS9taWRkbGV3YXJlLWVuZHBvaW50JztcbmltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5pbXBvcnQgeyBjb250ZW50SGFzaCwgdG9ZQU1MIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgdHlwZSB7IEFzc2V0TWFuaWZlc3RCdWlsZGVyIH0gZnJvbSAnLi4vZGVwbG95bWVudHMnO1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudFJlc291cmNlcyB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB0eXBlIHsgSW9IZWxwZXIgfSBmcm9tICcuLi9pby9wcml2YXRlJztcblxuZXhwb3J0IHR5cGUgVGVtcGxhdGVCb2R5UGFyYW1ldGVyID0ge1xuICBUZW1wbGF0ZUJvZHk/OiBzdHJpbmc7XG4gIFRlbXBsYXRlVVJMPzogc3RyaW5nO1xufTtcblxuY29uc3QgTEFSR0VfVEVNUExBVEVfU0laRV9LQiA9IDUwO1xuXG4vKipcbiAqIFByZXBhcmVzIHRoZSBib2R5IHBhcmFtZXRlciBmb3IgK0NyZWF0ZUNoYW5nZVNldCsuXG4gKlxuICogSWYgdGhlIHRlbXBsYXRlIGlzIHNtYWxsIGVub3VnaCB0byBiZSBpbmxpbmVkIGludG8gdGhlIEFQSSBjYWxsLCBqdXN0IHJldHVyblxuICogaXQgaW1tZWRpYXRlbHkuXG4gKlxuICogT3RoZXJ3aXNlLCBhZGQgaXQgdG8gdGhlIGFzc2V0IG1hbmlmZXN0IHRvIGdldCB1cGxvYWRlZCB0byB0aGUgc3RhZ2luZ1xuICogYnVja2V0IGFuZCByZXR1cm4gaXRzIGNvb3JkaW5hdGVzLiBJZiB0aGVyZSBpcyBubyBzdGFnaW5nIGJ1Y2tldCwgYW4gZXJyb3JcbiAqIGlzIHRocm93bi5cbiAqXG4gKiBAcGFyYW0gc3RhY2sgICAgIC0gdGhlIHN5bnRoZXNpemVkIHN0YWNrIHRoYXQgcHJvdmlkZXMgdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlXG4gKiBAcGFyYW0gdG9vbGtpdEluZm8gLSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdG9vbGtpdCBzdGFja1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFrZUJvZHlQYXJhbWV0ZXIoXG4gIGlvSGVscGVyOiBJb0hlbHBlcixcbiAgc3RhY2s6IENsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCxcbiAgcmVzb2x2ZWRFbnZpcm9ubWVudDogRW52aXJvbm1lbnQsXG4gIGFzc2V0TWFuaWZlc3Q6IEFzc2V0TWFuaWZlc3RCdWlsZGVyLFxuICByZXNvdXJjZXM6IEVudmlyb25tZW50UmVzb3VyY2VzLFxuICBvdmVycmlkZVRlbXBsYXRlPzogYW55LFxuKTogUHJvbWlzZTxUZW1wbGF0ZUJvZHlQYXJhbWV0ZXI+IHtcbiAgLy8gSWYgdGhlIHRlbXBsYXRlIGhhcyBhbHJlYWR5IGJlZW4gdXBsb2FkZWQgdG8gUzMsIGp1c3QgdXNlIGl0IGZyb20gdGhlcmUuXG4gIGlmIChzdGFjay5zdGFja1RlbXBsYXRlQXNzZXRPYmplY3RVcmwgJiYgIW92ZXJyaWRlVGVtcGxhdGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgVGVtcGxhdGVVUkw6IGF3YWl0IHJlc3RVcmxGcm9tTWFuaWZlc3Qoc3RhY2suc3RhY2tUZW1wbGF0ZUFzc2V0T2JqZWN0VXJsLCByZXNvbHZlZEVudmlyb25tZW50KSxcbiAgICB9O1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCBwYXNzIHZpYSBBUEkgY2FsbCAoaWYgc21hbGwpIG9yIHVwbG9hZCBoZXJlIChpZiBsYXJnZSlcbiAgY29uc3QgdGVtcGxhdGVKc29uID0gdG9ZQU1MKG92ZXJyaWRlVGVtcGxhdGUgPz8gc3RhY2sudGVtcGxhdGUpO1xuXG4gIGlmICh0ZW1wbGF0ZUpzb24ubGVuZ3RoIDw9IExBUkdFX1RFTVBMQVRFX1NJWkVfS0IgKiAxMDI0KSB7XG4gICAgcmV0dXJuIHsgVGVtcGxhdGVCb2R5OiB0ZW1wbGF0ZUpzb24gfTtcbiAgfVxuXG4gIGNvbnN0IHRvb2xraXRJbmZvID0gYXdhaXQgcmVzb3VyY2VzLmxvb2t1cFRvb2xraXQoKTtcbiAgaWYgKCF0b29sa2l0SW5mby5mb3VuZCkge1xuICAgIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmVycm9yKFxuICAgICAgdXRpbC5mb3JtYXQoXG4gICAgICAgIGBUaGUgdGVtcGxhdGUgZm9yIHN0YWNrIFwiJHtzdGFjay5kaXNwbGF5TmFtZX1cIiBpcyAke01hdGgucm91bmQodGVtcGxhdGVKc29uLmxlbmd0aCAvIDEwMjQpfUtpQi4gYCArXG4gICAgICAgIGBUZW1wbGF0ZXMgbGFyZ2VyIHRoYW4gJHtMQVJHRV9URU1QTEFURV9TSVpFX0tCfUtpQiBtdXN0IGJlIHVwbG9hZGVkIHRvIFMzLlxcbmAgK1xuICAgICAgICAnUnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBpbiBvcmRlciB0byBzZXR1cCBhbiBTMyBidWNrZXQgaW4gdGhpcyBlbnZpcm9ubWVudCwgYW5kIHRoZW4gcmUtZGVwbG95OlxcblxcbicsXG4gICAgICAgIGNoYWxrLmJsdWUoYFxcdCQgY2RrIGJvb3RzdHJhcCAke3Jlc29sdmVkRW52aXJvbm1lbnQubmFtZX1cXG5gKSxcbiAgICAgICksXG4gICAgKTtcblxuICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoJ1RlbXBsYXRlIHRvbyBsYXJnZSB0byBkZXBsb3kgKFwiY2RrIGJvb3RzdHJhcFwiIGlzIHJlcXVpcmVkKScpO1xuICB9XG5cbiAgY29uc3QgdGVtcGxhdGVIYXNoID0gY29udGVudEhhc2godGVtcGxhdGVKc29uKTtcbiAgY29uc3Qga2V5ID0gYGNkay8ke3N0YWNrLmlkfS8ke3RlbXBsYXRlSGFzaH0ueW1sYDtcblxuICBsZXQgdGVtcGxhdGVGaWxlID0gc3RhY2sudGVtcGxhdGVGaWxlO1xuICBpZiAob3ZlcnJpZGVUZW1wbGF0ZSkge1xuICAgIC8vIEFkZCBhIHZhcmlhbnQgb2YgdGhpcyB0ZW1wbGF0ZVxuICAgIHRlbXBsYXRlRmlsZSA9IGAke3N0YWNrLnRlbXBsYXRlRmlsZX0tJHt0ZW1wbGF0ZUhhc2h9LnlhbWxgO1xuICAgIGNvbnN0IHRlbXBsYXRlRmlsZVBhdGggPSBwYXRoLmpvaW4oc3RhY2suYXNzZW1ibHkuZGlyZWN0b3J5LCB0ZW1wbGF0ZUZpbGUpO1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZSh0ZW1wbGF0ZUZpbGVQYXRoLCB0ZW1wbGF0ZUpzb24sIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSk7XG4gIH1cblxuICBhc3NldE1hbmlmZXN0LmFkZEZpbGVBc3NldChcbiAgICB0ZW1wbGF0ZUhhc2gsXG4gICAge1xuICAgICAgcGF0aDogdGVtcGxhdGVGaWxlLFxuICAgIH0sXG4gICAge1xuICAgICAgYnVja2V0TmFtZTogdG9vbGtpdEluZm8uYnVja2V0TmFtZSxcbiAgICAgIG9iamVjdEtleToga2V5LFxuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgdGVtcGxhdGVVUkwgPSBgJHt0b29sa2l0SW5mby5idWNrZXRVcmx9LyR7a2V5fWA7XG4gIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKGBTdG9yaW5nIHRlbXBsYXRlIGluIFMzIGF0OiAke3RlbXBsYXRlVVJMfWApO1xuICByZXR1cm4geyBUZW1wbGF0ZVVSTDogdGVtcGxhdGVVUkwgfTtcbn1cblxuLyoqXG4gKiBGb3JtYXQgYW4gUzMgVVJMIGluIHRoZSBtYW5pZmVzdCBmb3IgdXNlIHdpdGggQ2xvdWRGb3JtYXRpb25cbiAqXG4gKiBSZXBsYWNlcyBlbnZpcm9ubWVudCBwbGFjZWhvbGRlcnMgKHdoaWNoIHRoaXMgZmllbGQgbWF5IGNvbnRhaW4pLFxuICogYW5kIHJlZm9ybWF0cyBzMzovLy4uLi8uLi4gdXJscyBpbnRvIFMzIFJFU1QgVVJMcyAod2hpY2ggQ2xvdWRGb3JtYXRpb25cbiAqIGV4cGVjdHMpXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlc3RVcmxGcm9tTWFuaWZlc3QodXJsOiBzdHJpbmcsIGVudmlyb25tZW50OiBFbnZpcm9ubWVudCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGRvTm90VXNlTWFya2VyID0gJyoqRE9OT1RVU0UqKic7XG4gIGNvbnN0IHJlZ2lvbiA9IGVudmlyb25tZW50LnJlZ2lvbjtcbiAgLy8gVGhpcyBVUkwgbWF5IGNvbnRhaW4gcGxhY2Vob2xkZXJzLCBzbyBzdGlsbCBzdWJzdGl0dXRlIHRob3NlLlxuICB1cmwgPSBFbnZpcm9ubWVudFBsYWNlaG9sZGVycy5yZXBsYWNlKHVybCwge1xuICAgIGFjY291bnRJZDogZW52aXJvbm1lbnQuYWNjb3VudCxcbiAgICByZWdpb24sXG4gICAgcGFydGl0aW9uOiBkb05vdFVzZU1hcmtlcixcbiAgfSk7XG5cbiAgLy8gWWVzLCB0aGlzIGlzIGV4dHJlbWVseSBjcnVkZSwgYnV0IHdlIGRvbid0IGFjdHVhbGx5IG5lZWQgdGhpcyBzbyBJJ20gbm90IGluY2xpbmVkIHRvIHNwZW5kXG4gIC8vIGEgbG90IG9mIGVmZm9ydCB0cnlpbmcgdG8gdGhyZWFkIHRoZSByaWdodCB2YWx1ZSB0byB0aGlzIGxvY2F0aW9uLlxuICBpZiAodXJsLmluZGV4T2YoZG9Ob3RVc2VNYXJrZXIpID4gLTEpIHtcbiAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKFwiQ2Fubm90IHVzZSAnJHtBV1M6OlBhcnRpdGlvbn0nIGluIHRoZSAnc3RhY2tUZW1wbGF0ZUFzc2V0T2JqZWN0VXJsJyBmaWVsZFwiKTtcbiAgfVxuXG4gIGNvbnN0IHMzVXJsID0gdXJsLm1hdGNoKC9zMzpcXC9cXC8oW14vXSspXFwvKC4qKSQvKTtcbiAgaWYgKCFzM1VybCkge1xuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICAvLyBXZSBuZWVkIHRvIHBhc3MgYW4gJ2h0dHBzOi8vczMuUkVHSU9OLmFtYXpvbmF3cy5jb21bLmNuXS9idWNrZXQvb2JqZWN0JyBVUkwgdG8gQ2xvdWRGb3JtYXRpb24sIGJ1dCB3ZVxuICAvLyBnb3QgYW4gJ3MzOi8vYnVja2V0L29iamVjdCcgVVJMIGluc3RlYWQuIENvbnN0cnVjdCB0aGUgcmVzdCBBUEkgVVJMIGhlcmUuXG4gIGNvbnN0IGJ1Y2tldE5hbWUgPSBzM1VybFsxXTtcbiAgY29uc3Qgb2JqZWN0S2V5ID0gczNVcmxbMl07XG5cbiAgLy8gU0RLIHYzIG5vIGxvbmdlciBhbGxvd3MgZm9yIGdldHRpbmcgZW5kcG9pbnRzIGZyb20gb25seSByZWdpb24uXG4gIC8vIEEgY29tbWFuZCBhbmQgY2xpZW50IGNvbmZpZyBtdXN0IG5vdyBiZSBwcm92aWRlZC5cbiAgY29uc3QgczMgPSBuZXcgUzNDbGllbnQoeyByZWdpb24gfSk7XG4gIGNvbnN0IGVuZHBvaW50ID0gYXdhaXQgZ2V0RW5kcG9pbnRGcm9tSW5zdHJ1Y3Rpb25zKHt9LCBIZWFkT2JqZWN0Q29tbWFuZCwge1xuICAgIC4uLnMzLmNvbmZpZyxcbiAgfSk7XG4gIGVuZHBvaW50LnVybC5ob3N0bmFtZTtcblxuICByZXR1cm4gYCR7ZW5kcG9pbnQudXJsLm9yaWdpbn0vJHtidWNrZXROYW1lfS8ke29iamVjdEtleX1gO1xufVxuIl19
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtYm9keS1wYXJhbWV0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZW1wbGF0ZS1ib2R5LXBhcmFtZXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlDQSw4Q0E2REM7QUFxQkQsa0RBd0NDO0FBM0pELHVDQUF1QztBQUN2QyxrQ0FBa0M7QUFDbEMsa0NBQWtDO0FBQ2xDLDRDQUE4RztBQUM5RyxrREFBaUU7QUFDakUscUVBQTBFO0FBQzFFLCtCQUErQjtBQUMvQiwrREFBMkQ7QUFDM0QscUNBQWlEO0FBVWpELE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0FBRWxDOzs7Ozs7Ozs7Ozs7R0FZRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FDckMsUUFBa0IsRUFDbEIsS0FBa0MsRUFDbEMsbUJBQWdDLEVBQ2hDLGFBQW1DLEVBQ25DLFNBQStCLEVBQy9CLGdCQUFzQjtJQUV0QiwyRUFBMkU7SUFDM0UsSUFBSSxLQUFLLENBQUMsMkJBQTJCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzNELE9BQU87WUFDTCxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEVBQUUsbUJBQW1CLENBQUM7U0FDL0YsQ0FBQztJQUNKLENBQUM7SUFFRCxvRUFBb0U7SUFDcEUsTUFBTSxZQUFZLEdBQUcsSUFBQSxhQUFNLEVBQUMsZ0JBQWdCLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRWhFLElBQUksWUFBWSxDQUFDLE1BQU0sSUFBSSxzQkFBc0IsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxNQUFNLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNwRCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sUUFBUSxDQUFDLFFB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RyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDbEYsSUFBSSxDQUFDO1FBQ0gsa0VBQWtFO1FBQ2xFLG9EQUFvRDtRQUNwRCxNQUFNLEVBQUUsR0FBRyxJQUFJLG9CQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSxpREFBMkIsRUFBQyxFQUFFLEVBQUUsNkJBQWlCLEVBQUU7WUFDeEUsR0FBRyxFQUFFLENBQUMsTUFBTTtTQUNiLENBQUMsQ0FBQztRQUVILE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxVQUFVLElBQUksU0FBUyxFQUFFLENBQUM7SUFDN0QsQ0FBQztZQUFTLENBQUM7UUFDVCxNQUFNLENBQUMscUJBQXFCLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztJQUM1RCxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsTUFBTSxDQUFDLElBQVksRUFBRSxLQUF5QjtJQUNyRCxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCB7IHR5cGUgQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LCB0eXBlIEVudmlyb25tZW50LCBFbnZpcm9ubWVudFBsYWNlaG9sZGVycyB9IGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgeyBIZWFkT2JqZWN0Q29tbWFuZCwgUzNDbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtczMnO1xuaW1wb3J0IHsgZ2V0RW5kcG9pbnRGcm9tSW5zdHJ1Y3Rpb25zIH0gZnJvbSAnQHNtaXRoeS9taWRkbGV3YXJlLWVuZHBvaW50JztcbmltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5pbXBvcnQgeyBjb250ZW50SGFzaCwgdG9ZQU1MIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgdHlwZSB7IEFzc2V0TWFuaWZlc3RCdWlsZGVyIH0gZnJvbSAnLi4vZGVwbG95bWVudHMnO1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudFJlc291cmNlcyB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB0eXBlIHsgSW9IZWxwZXIgfSBmcm9tICcuLi9pby9wcml2YXRlJztcblxuZXhwb3J0IHR5cGUgVGVtcGxhdGVCb2R5UGFyYW1ldGVyID0ge1xuICBUZW1wbGF0ZUJvZHk/OiBzdHJpbmc7XG4gIFRlbXBsYXRlVVJMPzogc3RyaW5nO1xufTtcblxuY29uc3QgTEFSR0VfVEVNUExBVEVfU0laRV9LQiA9IDUwO1xuXG4vKipcbiAqIFByZXBhcmVzIHRoZSBib2R5IHBhcmFtZXRlciBmb3IgK0NyZWF0ZUNoYW5nZVNldCsuXG4gKlxuICogSWYgdGhlIHRlbXBsYXRlIGlzIHNtYWxsIGVub3VnaCB0byBiZSBpbmxpbmVkIGludG8gdGhlIEFQSSBjYWxsLCBqdXN0IHJldHVyblxuICogaXQgaW1tZWRpYXRlbHkuXG4gKlxuICogT3RoZXJ3aXNlLCBhZGQgaXQgdG8gdGhlIGFzc2V0IG1hbmlmZXN0IHRvIGdldCB1cGxvYWRlZCB0byB0aGUgc3RhZ2luZ1xuICogYnVja2V0IGFuZCByZXR1cm4gaXRzIGNvb3JkaW5hdGVzLiBJZiB0aGVyZSBpcyBubyBzdGFnaW5nIGJ1Y2tldCwgYW4gZXJyb3JcbiAqIGlzIHRocm93bi5cbiAqXG4gKiBAcGFyYW0gc3RhY2sgICAgIC0gdGhlIHN5bnRoZXNpemVkIHN0YWNrIHRoYXQgcHJvdmlkZXMgdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlXG4gKiBAcGFyYW0gdG9vbGtpdEluZm8gLSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdG9vbGtpdCBzdGFja1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFrZUJvZHlQYXJhbWV0ZXIoXG4gIGlvSGVscGVyOiBJb0hlbHBlcixcbiAgc3RhY2s6IENsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCxcbiAgcmVzb2x2ZWRFbnZpcm9ubWVudDogRW52aXJvbm1lbnQsXG4gIGFzc2V0TWFuaWZlc3Q6IEFzc2V0TWFuaWZlc3RCdWlsZGVyLFxuICByZXNvdXJjZXM6IEVudmlyb25tZW50UmVzb3VyY2VzLFxuICBvdmVycmlkZVRlbXBsYXRlPzogYW55LFxuKTogUHJvbWlzZTxUZW1wbGF0ZUJvZHlQYXJhbWV0ZXI+IHtcbiAgLy8gSWYgdGhlIHRlbXBsYXRlIGhhcyBhbHJlYWR5IGJlZW4gdXBsb2FkZWQgdG8gUzMsIGp1c3QgdXNlIGl0IGZyb20gdGhlcmUuXG4gIGlmIChzdGFjay5zdGFja1RlbXBsYXRlQXNzZXRPYmplY3RVcmwgJiYgIW92ZXJyaWRlVGVtcGxhdGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgVGVtcGxhdGVVUkw6IGF3YWl0IHJlc3RVcmxGcm9tTWFuaWZlc3Qoc3RhY2suc3RhY2tUZW1wbGF0ZUFzc2V0T2JqZWN0VXJsLCByZXNvbHZlZEVudmlyb25tZW50KSxcbiAgICB9O1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCBwYXNzIHZpYSBBUEkgY2FsbCAoaWYgc21hbGwpIG9yIHVwbG9hZCBoZXJlIChpZiBsYXJnZSlcbiAgY29uc3QgdGVtcGxhdGVKc29uID0gdG9ZQU1MKG92ZXJyaWRlVGVtcGxhdGUgPz8gc3RhY2sudGVtcGxhdGUpO1xuXG4gIGlmICh0ZW1wbGF0ZUpzb24ubGVuZ3RoIDw9IExBUkdFX1RFTVBMQVRFX1NJWkVfS0IgKiAxMDI0KSB7XG4gICAgcmV0dXJuIHsgVGVtcGxhdGVCb2R5OiB0ZW1wbGF0ZUpzb24gfTtcbiAgfVxuXG4gIGNvbnN0IHRvb2xraXRJbmZvID0gYXdhaXQgcmVzb3VyY2VzLmxvb2t1cFRvb2xraXQoKTtcbiAgaWYgKCF0b29sa2l0SW5mby5mb3VuZCkge1xuICAgIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmVycm9yKFxuICAgICAgdXRpbC5mb3JtYXQoXG4gICAgICAgIGBUaGUgdGVtcGxhdGUgZm9yIHN0YWNrIFwiJHtzdGFjay5kaXNwbGF5TmFtZX1cIiBpcyAke01hdGgucm91bmQodGVtcGxhdGVKc29uLmxlbmd0aCAvIDEwMjQpfUtpQi4gYCArXG4gICAgICAgIGBUZW1wbGF0ZXMgbGFyZ2VyIHRoYW4gJHtMQVJHRV9URU1QTEFURV9TSVpFX0tCfUtpQiBtdXN0IGJlIHVwbG9hZGVkIHRvIFMzLlxcbmAgK1xuICAgICAgICAnUnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBpbiBvcmRlciB0byBzZXR1cCBhbiBTMyBidWNrZXQgaW4gdGhpcyBlbnZpcm9ubWVudCwgYW5kIHRoZW4gcmUtZGVwbG95OlxcblxcbicsXG4gICAgICAgIGNoYWxrLmJsdWUoYFxcdCQgY2RrIGJvb3RzdHJhcCAke3Jlc29sdmVkRW52aXJvbm1lbnQubmFtZX1cXG5gKSxcbiAgICAgICksXG4gICAgKTtcblxuICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoJ1RlbXBsYXRlIHRvbyBsYXJnZSB0byBkZXBsb3kgKFwiY2RrIGJvb3RzdHJhcFwiIGlzIHJlcXVpcmVkKScpO1xuICB9XG5cbiAgY29uc3QgdGVtcGxhdGVIYXNoID0gY29udGVudEhhc2godGVtcGxhdGVKc29uKTtcbiAgY29uc3Qga2V5ID0gYGNkay8ke3N0YWNrLmlkfS8ke3RlbXBsYXRlSGFzaH0ueW1sYDtcblxuICBsZXQgdGVtcGxhdGVGaWxlID0gc3RhY2sudGVtcGxhdGVGaWxlO1xuICBpZiAob3ZlcnJpZGVUZW1wbGF0ZSkge1xuICAgIC8vIEFkZCBhIHZhcmlhbnQgb2YgdGhpcyB0ZW1wbGF0ZVxuICAgIHRlbXBsYXRlRmlsZSA9IGAke3N0YWNrLnRlbXBsYXRlRmlsZX0tJHt0ZW1wbGF0ZUhhc2h9LnlhbWxgO1xuICAgIGNvbnN0IHRlbXBsYXRlRmlsZVBhdGggPSBwYXRoLmpvaW4oc3RhY2suYXNzZW1ibHkuZGlyZWN0b3J5LCB0ZW1wbGF0ZUZpbGUpO1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZSh0ZW1wbGF0ZUZpbGVQYXRoLCB0ZW1wbGF0ZUpzb24sIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSk7XG4gIH1cblxuICBhc3NldE1hbmlmZXN0LmFkZEZpbGVBc3NldChcbiAgICB0ZW1wbGF0ZUhhc2gsXG4gICAge1xuICAgICAgcGF0aDogdGVtcGxhdGVGaWxlLFxuICAgIH0sXG4gICAge1xuICAgICAgYnVja2V0TmFtZTogdG9vbGtpdEluZm8uYnVja2V0TmFtZSxcbiAgICAgIG9iamVjdEtleToga2V5LFxuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgdGVtcGxhdGVVUkwgPSBgJHt0b29sa2l0SW5mby5idWNrZXRVcmx9LyR7a2V5fWA7XG4gIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKGBTdG9yaW5nIHRlbXBsYXRlIGluIFMzIGF0OiAke3RlbXBsYXRlVVJMfWApO1xuICByZXR1cm4geyBUZW1wbGF0ZVVSTDogdGVtcGxhdGVVUkwgfTtcbn1cblxuLyoqXG4gKiBGb3JtYXQgYW4gUzMgVVJMIGluIHRoZSBtYW5pZmVzdCBmb3IgdXNlIHdpdGggQ2xvdWRGb3JtYXRpb25cbiAqXG4gKiBSZXBsYWNlcyBlbnZpcm9ubWVudCBwbGFjZWhvbGRlcnMgKHdoaWNoIHRoaXMgZmllbGQgbWF5IGNvbnRhaW4pLFxuICogYW5kIHJlZm9ybWF0cyBzMzovLy4uLi8uLi4gdXJscyBpbnRvIFMzIFJFU1QgVVJMcyAod2hpY2ggQ2xvdWRGb3JtYXRpb25cbiAqIGV4cGVjdHMpLlxuICpcbiAqIFdlIG5lZWQgdG8gcmV0dXJuIHRoZSBvZmZpY2lhbCByZWdpb24tIGFuZCBwYXJ0aXRpb24tc3BlY2lmaWMgVVJMIGZvciBBV1MgUzNcbiAqIGhlcmUsIHNvIHdlIHVzZSB0aGUgU0RLJ3MgaW5mb3JtYXRpb24gYWJvdXQgZW5kcG9pbnRzLiBBdCB0aGUgc2FtZSB0aW1lLCB0aGVcbiAqIFNESyBhbGxvd3Mgb3ZlcnJpZGluZyB0aGlzIFVSTCBieSBzZXR0aW5nIGFuIGVudmlyb25tZW50IHZhcmlhYmxlXG4gKiAoc3BlY2lmaWNhbGx5ICRBV1NfRU5EUE9JTlRfVVJMX1MzKSBidXQgd2Ugd2FudCB0byAqbm90KiBob25vciB0aGF0LCBiZWNhdXNlXG4gKiB0aGVyZSdzIGEgOTkuOSUgY2hhbmNlIHRoaXMgVVJMIHdpbGwgbm90IGJlIHJvdXRhYmxlIGZyb20gQVdTIENsb3VkRm9ybWF0aW9uLlxuICpcbiAqIFRvIGFsbG93IGZvciB0aGUgb2ZmIGNoYW5jZSB0aGF0IHNvbWVvbmUgaXMgcnVubmluZyB0aGlzIHRvb2wgYWdhaW5zdCBhXG4gKiBjdXN0b20gYnVpbGQgb2YgQ2xvdWRGb3JtYXRpb24gdGhhdCBkb2VzIG5lZWQgYSBzcGVjaWZpYyBTMyBlbmRwb2ludCBwYXNzZWRcbiAqIHRvIGl0LCB3ZSdsbCBpbnRyb2R1Y2UgYSBuZXcgZW52aXJvbm1lbnQgdmFyaWFibGUgdGhhdCB3ZSdsbCByZXNwZWN0IGluc3RlYWQ6XG4gKlxuICogIEFXU19FTkRQT0lOVF9VUkxfUzNfRk9SX0NMT1VERk9STUFUSU9OXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXN0VXJsRnJvbU1hbmlmZXN0KHVybDogc3RyaW5nLCBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBkb05vdFVzZU1hcmtlciA9ICcqKkRPTk9UVVNFKionO1xuICBjb25zdCByZWdpb24gPSBlbnZpcm9ubWVudC5yZWdpb247XG4gIC8vIFRoaXMgVVJMIG1heSBjb250YWluIHBsYWNlaG9sZGVycywgc28gc3RpbGwgc3Vic3RpdHV0ZSB0aG9zZS5cbiAgdXJsID0gRW52aXJvbm1lbnRQbGFjZWhvbGRlcnMucmVwbGFjZSh1cmwsIHtcbiAgICBhY2NvdW50SWQ6IGVudmlyb25tZW50LmFjY291bnQsXG4gICAgcmVnaW9uLFxuICAgIHBhcnRpdGlvbjogZG9Ob3RVc2VNYXJrZXIsXG4gIH0pO1xuXG4gIC8vIFllcywgdGhpcyBpcyBleHRyZW1lbHkgY3J1ZGUsIGJ1dCB3ZSBkb24ndCBhY3R1YWxseSBuZWVkIHRoaXMgc28gSSdtIG5vdCBpbmNsaW5lZCB0byBzcGVuZFxuICAvLyBhIGxvdCBvZiBlZmZvcnQgdHJ5aW5nIHRvIHRocmVhZCB0aGUgcmlnaHQgdmFsdWUgdG8gdGhpcyBsb2NhdGlvbi5cbiAgaWYgKHVybC5pbmRleE9mKGRvTm90VXNlTWFya2VyKSA+IC0xKSB7XG4gICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihcIkNhbm5vdCB1c2UgJyR7QVdTOjpQYXJ0aXRpb259JyBpbiB0aGUgJ3N0YWNrVGVtcGxhdGVBc3NldE9iamVjdFVybCcgZmllbGRcIik7XG4gIH1cblxuICBjb25zdCBzM1VybCA9IHVybC5tYXRjaCgvczM6XFwvXFwvKFteL10rKVxcLyguKikkLyk7XG4gIGlmICghczNVcmwpIHtcbiAgICByZXR1cm4gdXJsO1xuICB9XG5cbiAgLy8gV2UgbmVlZCB0byBwYXNzIGFuICdodHRwczovL3MzLlJFR0lPTi5hbWF6b25hd3MuY29tWy5jbl0vYnVja2V0L29iamVjdCcgVVJMIHRvIENsb3VkRm9ybWF0aW9uLCBidXQgd2VcbiAgLy8gZ290IGFuICdzMzovL2J1Y2tldC9vYmplY3QnIFVSTCBpbnN0ZWFkLiBDb25zdHJ1Y3QgdGhlIHJlc3QgQVBJIFVSTCBoZXJlLlxuICBjb25zdCBidWNrZXROYW1lID0gczNVcmxbMV07XG4gIGNvbnN0IG9iamVjdEtleSA9IHMzVXJsWzJdO1xuXG4gIGNvbnN0IG9yaWdpbmFsT3ZlcnJpZGVTM0VuZHBvaW50ID0gcHJvY2Vzcy5lbnYuQVdTX0VORFBPSU5UX1VSTF9TMztcbiAgc2V0RW52KCdBV1NfRU5EUE9JTlRfVVJMX1MzJywgcHJvY2Vzcy5lbnYuQVdTX0VORFBPSU5UX1VSTF9TM19GT1JfQ0xPVURGT1JNQVRJT04pO1xuICB0cnkge1xuICAgIC8vIFNESyB2MyBubyBsb25nZXIgYWxsb3dzIGZvciBnZXR0aW5nIGVuZHBvaW50cyBmcm9tIG9ubHkgcmVnaW9uLlxuICAgIC8vIEEgY29tbWFuZCBhbmQgY2xpZW50IGNvbmZpZyBtdXN0IG5vdyBiZSBwcm92aWRlZC5cbiAgICBjb25zdCBzMyA9IG5ldyBTM0NsaWVudCh7IHJlZ2lvbiB9KTtcbiAgICBjb25zdCBlbmRwb2ludCA9IGF3YWl0IGdldEVuZHBvaW50RnJvbUluc3RydWN0aW9ucyh7fSwgSGVhZE9iamVjdENvbW1hbmQsIHtcbiAgICAgIC4uLnMzLmNvbmZpZyxcbiAgICB9KTtcblxuICAgIHJldHVybiBgJHtlbmRwb2ludC51cmwub3JpZ2lufS8ke2J1Y2tldE5hbWV9LyR7b2JqZWN0S2V5fWA7XG4gIH0gZmluYWxseSB7XG4gICAgc2V0RW52KCdBV1NfRU5EUE9JTlRfVVJMX1MzJywgb3JpZ2luYWxPdmVycmlkZVMzRW5kcG9pbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNldEVudihuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgcHJvY2Vzcy5lbnZbbmFtZV0gPSB2YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgcHJvY2Vzcy5lbnZbbmFtZV07XG4gIH1cbn1cbiJdfQ==
@@ -27,6 +27,7 @@ const streams_1 = require("../streams");
27
27
  const cloudformation_1 = require("./cloudformation");
28
28
  const digest_1 = require("./digest");
29
29
  const toolkit_error_1 = require("../../toolkit/toolkit-error");
30
+ const concurrency_1 = require("../../util/concurrency");
30
31
  __exportStar(require("./exclude"), exports);
31
32
  __exportStar(require("./context"), exports);
32
33
  async function usePrescribedMappings(mappingGroups, sdkProvider) {
@@ -108,8 +109,9 @@ async function getDeployedStacks(sdkProvider, environment) {
108
109
  template,
109
110
  };
110
111
  };
112
+ const limit = (0, concurrency_1.pLimit)(20);
111
113
  // eslint-disable-next-line @cdklabs/promiseall-no-unbounded-parallelism
112
- return Promise.all(summaries.map(normalize));
114
+ return Promise.all(summaries.map(s => limit(() => normalize(s))));
113
115
  }
114
116
  function formatEnvironmentSectionHeader(environment) {
115
117
  const env = `aws://${environment.account}/${environment.region}`;
@@ -152,4 +154,4 @@ async function groupStacks(sdkProvider, localStacks, additionalStackNames) {
152
154
  }
153
155
  return groups;
154
156
  }
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBaUNBLHNEQXFGQztBQUVELDhDQTRCQztBQUVELHdFQUdDO0FBRUQsa0RBRUM7QUFFRCwwREFFQztBQVdELGtDQTZCQztBQXhNRCxzRUFJc0M7QUFHdEMscUNBQTJEO0FBRTNELHNDQUFpQztBQUNqQyx3Q0FBK0M7QUFFL0MscURBQXFFO0FBQ3JFLHFDQUFzQztBQUV0QywrREFBMkQ7QUFFM0QsNENBQTBCO0FBQzFCLDRDQUEwQjtBQWNuQixLQUFLLFVBQVUscUJBQXFCLENBQ3pDLGFBQTZCLEVBQzdCLFdBQXdCO0lBTXhCLE1BQU0sV0FBVyxHQUE2QixFQUFFLENBQUM7SUFDakQsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELEtBQUssSUFBSSxLQUFLLElBQUksV0FBVyxFQUFFLENBQUM7UUFDOUIsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUV2QyxLQUFLLE1BQU0sV0FBVyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDekQsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sSUFBSSw0QkFBWSxDQUNwQixtQ0FBbUMsV0FBVyxvQkFBb0IsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQ2xHLENBQUM7WUFDSixDQUFDO1lBQ0QsWUFBWSxDQUFDLEdBQUcs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SUFFRixNQUFNLE1BQU0sR0FBaUIsRUFBRSxDQUFDO0lBQ2hDLEtBQUssSUFBSSxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUMxQyxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDO1FBQzNDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDNUUsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDO1FBQzNDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFzQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2RyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBc0IsRUFBRSxFQUFFLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVyRyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ1YsV0FBVztZQUNYLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRyxXQUFXLEVBQUUsS0FBSztTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHlwZWRNYXBwaW5nIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWRmb3JtYXRpb24tZGlmZic7XG5pbXBvcnQge1xuICBmb3JtYXRBbWJpZ3VvdXNNYXBwaW5ncyBhcyBmbXRBbWJpZ3VvdXNNYXBwaW5ncyxcbiAgZm9ybWF0RW52aXJvbm1lbnRTZWN0aW9uSGVhZGVyIGFzIGZtdEVudmlyb25tZW50U2VjdGlvbkhlYWRlcixcbiAgZm9ybWF0VHlwZWRNYXBwaW5ncyBhcyBmbXRUeXBlZE1hcHBpbmdzLFxufSBmcm9tICdAYXdzLWNkay9jbG91ZGZvcm1hdGlvbi1kaWZmJztcbmltcG9ydCB0eXBlICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCB0eXBlIHsgU3RhY2tTdW1tYXJ5IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IGRlc2VyaWFsaXplU3RydWN0dXJlLCBpbmRleEJ5IH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgdHlwZSB7IFNka1Byb3ZpZGVyIH0gZnJvbSAnLi4vYXdzLWF1dGgvcHJpdmF0ZSc7XG5pbXBvcnQgeyBNb2RlIH0gZnJvbSAnLi4vcGx1Z2luJztcbmltcG9ydCB7IFN0cmluZ1dyaXRlU3RyZWFtIH0gZnJvbSAnLi4vc3RyZWFtcyc7XG5pbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uU3RhY2sgfSBmcm9tICcuL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IFJlc291cmNlTG9jYXRpb24sIFJlc291cmNlTWFwcGluZyB9IGZyb20gJy4vY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgaGFzaE9iamVjdCB9IGZyb20gJy4vZGlnZXN0JztcbmltcG9ydCB0eXBlIHsgTWFwcGluZ0dyb3VwIH0gZnJvbSAnLi4vLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICcuLi8uLi90b29sa2l0L3Rvb2xraXQtZXJyb3InO1xuXG5leHBvcnQgKiBmcm9tICcuL2V4Y2x1ZGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0JztcblxuaW50ZXJmYWNlIFN0YWNrR3JvdXAge1xuICBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQ7XG4gIGxvY2FsU3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW107XG4gIGRlcGxveWVkU3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW107XG59XG5cbmludGVyZmFjZSBTdGFja0dyb3VwIHtcbiAgZW52aXJvbm1lbnQ6IGN4YXBpLkVudmlyb25tZW50O1xuICBsb2NhbFN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdO1xuICBkZXBsb3llZFN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXNlUHJlc2NyaWJlZE1hcHBpbmdzKFxuICBtYXBwaW5nR3JvdXBzOiBNYXBwaW5nR3JvdXBbXSxcbiAgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyLFxuKTogUHJvbWlzZTxSZXNvdXJjZU1hcHBpbmdbXT4ge1xuICBpbnRlcmZhY2UgTWFwcGluZ0dyb3VwV2l0aFN0YWNrcyBleHRlbmRzIE1hcHBpbmdHcm91cCB7XG4gICAgc3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW107XG4gIH1cblxuICBjb25zdCBzdGFja0dyb3VwczogTWFwcGluZ0dyb3VwV2l0aFN0YWNrc1tdID0gW107XG4gIGZvciAoY29uc3QgZ3JvdXAgb2YgbWFwcGluZ0dyb3Vwcykge1xuICAgIHN0YWNrR3JvdXBzLnB1c2goe1xuICAgICAgLi4uZ3JvdXAsXG4gICAgICBzdGFja3M6IGF3YWl0IGdldERlcGxveWVkU3RhY2tzKHNka1Byb3ZpZGVyLCBlbnZpcm9ubWVudE9mKGdyb3VwKSksXG4gICAgfSk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSB0aGF0IHRoZXJlIGFyZSBubyBkdXBsaWNhdGUgZGVzdGluYXRpb25zXG4gIGZvciAobGV0IGdyb3VwIG9mIHN0YWNrR3JvdXBzKSB7XG4gICAgY29uc3QgZGVzdGluYXRpb25zID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBmb3IgKGNvbnN0IGRlc3RpbmF0aW9uIG9mIE9iamVjdC52YWx1ZXMoZ3JvdXAucmVzb3VyY2VzKSkge1xuICAgICAgaWYgKGRlc3RpbmF0aW9ucy5oYXMoZGVzdGluYXRpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoXG4gICAgICAgICAgYER1cGxpY2F0ZSBkZXN0aW5hdGlvbiByZXNvdXJjZSAnJHtkZXN0aW5hdGlvbn0nIGluIGVudmlyb25tZW50ICR7Z3JvdXAuYWNjb3VudH0vJHtncm91cC5yZWdpb259YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGRlc3RpbmF0aW9ucy5hZGQoZGVzdGluYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogUmVzb3VyY2VNYXBwaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBncm91cCBvZiBzdGFja0dyb3Vwcykge1xuICAgIGZvciAoY29uc3QgW3NvdXJjZSwgZGVzdGluYXRpb25dIG9mIE9iamVjdC5lbnRyaWVzKGdyb3VwLnJlc291cmNlcykpIHtcbiAgICAgIGlmICghaW5Vc2Uoc291cmNlLCBncm91cC5zdGFja3MpKSB7XG4gICAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYFNvdXJjZSByZXNvdXJjZSAnJHtzb3VyY2V9JyBkb2VzIG5vdCBleGlzdCBpbiBlbnZpcm9ubWVudCAke2dyb3VwLmFjY291bnR9LyR7Z3JvdXAucmVnaW9ufWApO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5Vc2UoZGVzdGluYXRpb24sIGdyb3VwLnN0YWNrcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihcbiAgICAgICAgICBgRGVzdGluYXRpb24gcmVzb3VyY2UgJyR7ZGVzdGluYXRpb259JyBhbHJlYWR5IGluIHVzZSBpbiBlbnZpcm9ubWVudCAke2dyb3VwLmFjY291bnR9LyR7Z3JvdXAucmVnaW9ufWAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gZW52aXJvbm1lbnRPZihncm91cCk7XG4gICAgICBjb25zdCBzcmMgPSBtYWtlTG9jYXRpb24oc291cmNlLCBlbnZpcm9ubWVudCwgZ3JvdXAuc3RhY2tzKTtcbiAgICAgIGNvbnN0IGRzdCA9IG1ha2VMb2NhdGlvbihkZXN0aW5hdGlvbiwgZW52aXJvbm1lbnQpO1xuICAgICAgcmVzdWx0LnB1c2gobmV3IFJlc291cmNlTWFwcGluZyhzcmMsIGRzdCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xuXG4gIGZ1bmN0aW9uIGluVXNlKGxvY2F0aW9uOiBzdHJpbmcsIHN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgW3N0YWNrTmFtZSwgbG9naWNhbElkXSA9IGxvY2F0aW9uLnNwbGl0KCcuJyk7XG4gICAgaWYgKHN0YWNrTmFtZSA9PSBudWxsIHx8IGxvZ2ljYWxJZCA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBJbnZhbGlkIGxvY2F0aW9uICcke2xvY2F0aW9ufSdgKTtcbiAgICB9XG4gICAgY29uc3Qgc3RhY2sgPSBzdGFja3MuZmluZCgocykgPT4gcy5zdGFja05hbWUgPT09IHN0YWNrTmFtZSk7XG4gICAgcmV0dXJuIHN0YWNrICE9IG51bGwgJiYgc3RhY2sudGVtcGxhdGUuUmVzb3VyY2VzPy5bbG9naWNhbElkXSAhPSBudWxsO1xuICB9XG5cbiAgZnVuY3Rpb24gZW52aXJvbm1lbnRPZihncm91cDogTWFwcGluZ0dyb3VwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjY291bnQ6IGdyb3VwLmFjY291bnQsXG4gICAgICByZWdpb246IGdyb3VwLnJlZ2lvbixcbiAgICAgIG5hbWU6ICcnLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBtYWtlTG9jYXRpb24oXG4gICAgbG9jOiBzdHJpbmcsXG4gICAgZW52aXJvbm1lbnQ6IGN4YXBpLkVudmlyb25tZW50LFxuICAgIHN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdID0gW10sXG4gICk6IFJlc291cmNlTG9jYXRpb24ge1xuICAgIGNvbnN0IFtzdGFja05hbWUsIGxvZ2ljYWxJZF0gPSBsb2Muc3BsaXQoJy4nKTtcbiAgICBjb25zdCBzdGFjayA9IHN0YWNrcy5maW5kKChzKSA9PiBzLnN0YWNrTmFtZSA9PT0gc3RhY2tOYW1lKTtcblxuICAgIHJldHVybiBuZXcgUmVzb3VyY2VMb2NhdGlvbihcbiAgICAgIHtcbiAgICAgICAgc3RhY2tOYW1lLFxuICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgdGVtcGxhdGU6IHN0YWNrPy50ZW1wbGF0ZSA/PyB7fSxcbiAgICAgIH0sXG4gICAgICBsb2dpY2FsSWQsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RGVwbG95ZWRTdGFja3MoXG4gIHNka1Byb3ZpZGVyOiBTZGtQcm92aWRlcixcbiAgZW52aXJvbm1lbnQ6IGN4YXBpLkVudmlyb25tZW50LFxuKTogUHJvbWlzZTxDbG91ZEZvcm1hdGlvblN0YWNrW10+IHtcbiAgY29uc3QgY2ZuID0gKGF3YWl0IHNka1Byb3ZpZGVyLmZvckVudmlyb25tZW50KGVudmlyb25tZW50LCBNb2RlLkZvclJlYWRpbmcpKS5zZGsuY2xvdWRGb3JtYXRpb24oKTtcblxuICBjb25zdCBzdW1tYXJpZXMgPSBhd2FpdCBjZm4ucGFnaW5hdGVkTGlzdFN0YWNrcyh7XG4gICAgU3RhY2tTdGF0dXNGaWx0ZXI6IFtcbiAgICAgICdDUkVBVEVfQ09NUExFVEUnLFxuICAgICAgJ1VQREFURV9DT01QTEVURScsXG4gICAgICAnVVBEQVRFX1JPTExCQUNLX0NPTVBMRVRFJyxcbiAgICAgICdJTVBPUlRfQ09NUExFVEUnLFxuICAgICAgJ1JPTExCQUNLX0NPTVBMRVRFJyxcbiAgICBdLFxuICB9KTtcblxuICBjb25zdCBub3JtYWxpemUgPSBhc3luYyAoc3VtbWFyeTogU3RhY2tTdW1tYXJ5KSA9PiB7XG4gICAgY29uc3QgdGVtcGxhdGVDb21tYW5kT3V0cHV0ID0gYXdhaXQgY2ZuLmdldFRlbXBsYXRlKHsgU3RhY2tOYW1lOiBzdW1tYXJ5LlN0YWNrTmFtZSEgfSk7XG4gICAgY29uc3QgdGVtcGxhdGUgPSBkZXNlcmlhbGl6ZVN0cnVjdHVyZSh0ZW1wbGF0ZUNvbW1hbmRPdXRwdXQuVGVtcGxhdGVCb2R5ID8/ICd7fScpO1xuICAgIHJldHVybiB7XG4gICAgICBlbnZpcm9ubWVudCxcbiAgICAgIHN0YWNrTmFtZTogc3VtbWFyeS5TdGFja05hbWUhLFxuICAgICAgdGVtcGxhdGUsXG4gICAgfTtcbiAgfTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGNka2xhYnMvcHJvbWlzZWFsbC1uby11bmJvdW5kZWQtcGFyYWxsZWxpc21cbiAgcmV0dXJuIFByb21pc2UuYWxsKHN1bW1hcmllcy5tYXAobm9ybWFsaXplKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRFbnZpcm9ubWVudFNlY3Rpb25IZWFkZXIoZW52aXJvbm1lbnQ6IGN4YXBpLkVudmlyb25tZW50KSB7XG4gIGNvbnN0IGVudiA9IGBhd3M6Ly8ke2Vudmlyb25tZW50LmFjY291bnR9LyR7ZW52aXJvbm1lbnQucmVnaW9ufWA7XG4gIHJldHVybiBmb3JtYXRUb1N0cmVhbShzdHJlYW0gPT4gZm10RW52aXJvbm1lbnRTZWN0aW9uSGVhZGVyKHN0cmVhbSwgZW52KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUeXBlZE1hcHBpbmdzKG1hcHBpbmdzOiBUeXBlZE1hcHBpbmdbXSk6IHN0cmluZyB7XG4gIHJldHVybiBmb3JtYXRUb1N0cmVhbSgoc3RyZWFtKSA9PiBmbXRUeXBlZE1hcHBpbmdzKHN0cmVhbSwgbWFwcGluZ3MpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEFtYmlndW91c01hcHBpbmdzKHBhdGhzOiBbc3RyaW5nW10sIHN0cmluZ1tdXVtdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZvcm1hdFRvU3RyZWFtKChzdHJlYW0pID0+IGZtdEFtYmlndW91c01hcHBpbmdzKHN0cmVhbSwgcGF0aHMpKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VG9TdHJlYW0oY2I6IChzdHJlYW06IE5vZGVKUy5Xcml0YWJsZVN0cmVhbSkgPT4gdm9pZCk6IHN0cmluZyB7XG4gIGNvbnN0IHN0cmVhbSA9IG5ldyBTdHJpbmdXcml0ZVN0cmVhbSgpO1xuICBjYihzdHJlYW0pO1xuICByZXR1cm4gc3RyZWFtLnRvU3RyaW5nKCk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGxpc3Qgb2Ygc3RhY2sgZ3JvdXBzLCBlYWNoIGNvbnRhaW5pbmcgdGhlIGxvY2FsIHN0YWNrcyBhbmQgdGhlIGRlcGxveWVkIHN0YWNrcyB0aGF0IG1hdGNoIHRoZSBnaXZlbiBwYXR0ZXJucy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdyb3VwU3RhY2tzKHNka1Byb3ZpZGVyOiBTZGtQcm92aWRlciwgbG9jYWxTdGFja3M6IENsb3VkRm9ybWF0aW9uU3RhY2tbXSwgYWRkaXRpb25hbFN0YWNrTmFtZXM6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IGVudmlyb25tZW50czogTWFwPHN0cmluZywgY3hhcGkuRW52aXJvbm1lbnQ+ID0gbmV3IE1hcCgpO1xuXG4gIGZvciAoY29uc3Qgc3RhY2sgb2YgbG9jYWxTdGFja3MpIHtcbiAgICBjb25zdCBlbnZpcm9ubWVudCA9IGF3YWl0IHNka1Byb3ZpZGVyLnJlc29sdmVFbnZpcm9ubWVudChzdGFjay5lbnZpcm9ubWVudCk7XG4gICAgY29uc3Qga2V5ID0gaGFzaE9iamVjdChlbnZpcm9ubWVudCk7XG4gICAgZW52aXJvbm1lbnRzLnNldChrZXksIGVudmlyb25tZW50KTtcbiAgfVxuXG4gIGNvbnN0IGxvY2FsQnlFbnZpcm9ubWVudCA9IGF3YWl0IGluZGV4QnkobG9jYWxTdGFja3MsXG4gICAgYXN5bmMgKHMpID0+IGhhc2hPYmplY3QoYXdhaXQgc2RrUHJvdmlkZXIucmVzb2x2ZUVudmlyb25tZW50KHMuZW52aXJvbm1lbnQpKSxcbiAgKTtcblxuICBjb25zdCBncm91cHM6IFN0YWNrR3JvdXBbXSA9IFtdO1xuICBmb3IgKGxldCBrZXkgb2YgbG9jYWxCeUVudmlyb25tZW50LmtleXMoKSkge1xuICAgIGNvbnN0IGVudmlyb25tZW50ID0gZW52aXJvbm1lbnRzLmdldChrZXkpITtcbiAgICBjb25zdCBhbGxEZXBsb3llZFN0YWNrcyA9IGF3YWl0IGdldERlcGxveWVkU3RhY2tzKHNka1Byb3ZpZGVyLCBlbnZpcm9ubWVudCk7XG4gICAgY29uc3QgbG9jYWwgPSBsb2NhbEJ5RW52aXJvbm1lbnQuZ2V0KGtleSkhO1xuICAgIGNvbnN0IGhhc0xvY2FsQ291bnRlcnBhcnQgPSAoczogQ2xvdWRGb3JtYXRpb25TdGFjaykgPT4gbG9jYWwuc29tZSgobCkgPT4gbC5zdGFja05hbWUgPT09IHMuc3RhY2tOYW1lKTtcbiAgICBjb25zdCB3YXNFeHBsaWNpdGx5UHJvdmlkZWQgPSAoczogQ2xvdWRGb3JtYXRpb25TdGFjaykgPT4gYWRkaXRpb25hbFN0YWNrTmFtZXMuaW5jbHVkZXMocy5zdGFja05hbWUpO1xuXG4gICAgZ3JvdXBzLnB1c2goe1xuICAgICAgZW52aXJvbm1lbnQsXG4gICAgICBkZXBsb3llZFN0YWNrczogYWxsRGVwbG95ZWRTdGFja3MuZmlsdGVyKHMgPT4gaGFzTG9jYWxDb3VudGVycGFydChzKSB8fCB3YXNFeHBsaWNpdGx5UHJvdmlkZWQocykpLFxuICAgICAgbG9jYWxTdGFja3M6IGxvY2FsLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGdyb3Vwcztcbn1cbiJdfQ==
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBa0NBLHNEQXFGQztBQUVELDhDQThCQztBQUVELHdFQUdDO0FBRUQsa0RBRUM7QUFFRCwwREFFQztBQVdELGtDQTZCQztBQTNNRCxzRUFJc0M7QUFHdEMscUNBQTJEO0FBRTNELHNDQUFpQztBQUNqQyx3Q0FBK0M7QUFFL0MscURBQXFFO0FBQ3JFLHFDQUFzQztBQUV0QywrREFBMkQ7QUFDM0Qsd0RBQWdEO0FBRWhELDRDQUEwQjtBQUMxQiw0Q0FBMEI7QUFjbkIsS0FBSyxVQUFVLHFCQUFxQixDQUN6QyxhQUE2QixFQUM3QixXQUF3QjtJQU14QixNQUFNLFdBQVcsR0FBNkIsRUFBRSxDQUFDO0lBQ2pELEtBQUssTUFBTSxLQUFLLElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNmLEdBQUcsS0FBSztZQUNSLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbkUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG9EQUFvRDtJQUNwRCxLQUFLLElBQUksS0FBSyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQzlCLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFFdkMsS0FBSyxNQUFNLFdBQVcsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3pELElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxNQUFNLElBQUksNEJBQVksQ0FDcEIsbUNBQW1DLFdBQVcsb0JBQW9CLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUNsRyxDQUFDO1lBQ0osQ0FBQztZQUNELFlB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cGluZyB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkZm9ybWF0aW9uLWRpZmYnO1xuaW1wb3J0IHtcbiAgZm9ybWF0QW1iaWd1b3VzTWFwcGluZ3MgYXMgZm10QW1iaWd1b3VzTWFwcGluZ3MsXG4gIGZvcm1hdEVudmlyb25tZW50U2VjdGlvbkhlYWRlciBhcyBmbXRFbnZpcm9ubWVudFNlY3Rpb25IZWFkZXIsXG4gIGZvcm1hdFR5cGVkTWFwcGluZ3MgYXMgZm10VHlwZWRNYXBwaW5ncyxcbn0gZnJvbSAnQGF3cy1jZGsvY2xvdWRmb3JtYXRpb24tZGlmZic7XG5pbXBvcnQgdHlwZSAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgdHlwZSB7IFN0YWNrU3VtbWFyeSB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBkZXNlcmlhbGl6ZVN0cnVjdHVyZSwgaW5kZXhCeSB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBTZGtQcm92aWRlciB9IGZyb20gJy4uL2F3cy1hdXRoL3ByaXZhdGUnO1xuaW1wb3J0IHsgTW9kZSB9IGZyb20gJy4uL3BsdWdpbic7XG5pbXBvcnQgeyBTdHJpbmdXcml0ZVN0cmVhbSB9IGZyb20gJy4uL3N0cmVhbXMnO1xuaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvblN0YWNrIH0gZnJvbSAnLi9jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBSZXNvdXJjZUxvY2F0aW9uLCBSZXNvdXJjZU1hcHBpbmcgfSBmcm9tICcuL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IGhhc2hPYmplY3QgfSBmcm9tICcuL2RpZ2VzdCc7XG5pbXBvcnQgdHlwZSB7IE1hcHBpbmdHcm91cCB9IGZyb20gJy4uLy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnLi4vLi4vdG9vbGtpdC90b29sa2l0LWVycm9yJztcbmltcG9ydCB7IHBMaW1pdCB9IGZyb20gJy4uLy4uL3V0aWwvY29uY3VycmVuY3knO1xuXG5leHBvcnQgKiBmcm9tICcuL2V4Y2x1ZGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0JztcblxuaW50ZXJmYWNlIFN0YWNrR3JvdXAge1xuICBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQ7XG4gIGxvY2FsU3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW107XG4gIGRlcGxveWVkU3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW107XG59XG5cbmludGVyZmFjZSBTdGFja0dyb3VwIHtcbiAgZW52aXJvbm1lbnQ6IGN4YXBpLkVudmlyb25tZW50O1xuICBsb2NhbFN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdO1xuICBkZXBsb3llZFN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXNlUHJlc2NyaWJlZE1hcHBpbmdzKFxuICBtYXBwaW5nR3JvdXBzOiBNYXBwaW5nR3JvdXBbXSxcbiAgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyLFxuKTogUHJvbWlzZTxSZXNvdXJjZU1hcHBpbmdbXT4ge1xuICBpbnRlcmZhY2UgTWFwcGluZ0dyb3VwV2l0aFN0YWNrcyBleHRlbmRzIE1hcHBpbmdHcm91cCB7XG4gICAgc3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW107XG4gIH1cblxuICBjb25zdCBzdGFja0dyb3VwczogTWFwcGluZ0dyb3VwV2l0aFN0YWNrc1tdID0gW107XG4gIGZvciAoY29uc3QgZ3JvdXAgb2YgbWFwcGluZ0dyb3Vwcykge1xuICAgIHN0YWNrR3JvdXBzLnB1c2goe1xuICAgICAgLi4uZ3JvdXAsXG4gICAgICBzdGFja3M6IGF3YWl0IGdldERlcGxveWVkU3RhY2tzKHNka1Byb3ZpZGVyLCBlbnZpcm9ubWVudE9mKGdyb3VwKSksXG4gICAgfSk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSB0aGF0IHRoZXJlIGFyZSBubyBkdXBsaWNhdGUgZGVzdGluYXRpb25zXG4gIGZvciAobGV0IGdyb3VwIG9mIHN0YWNrR3JvdXBzKSB7XG4gICAgY29uc3QgZGVzdGluYXRpb25zID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBmb3IgKGNvbnN0IGRlc3RpbmF0aW9uIG9mIE9iamVjdC52YWx1ZXMoZ3JvdXAucmVzb3VyY2VzKSkge1xuICAgICAgaWYgKGRlc3RpbmF0aW9ucy5oYXMoZGVzdGluYXRpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoXG4gICAgICAgICAgYER1cGxpY2F0ZSBkZXN0aW5hdGlvbiByZXNvdXJjZSAnJHtkZXN0aW5hdGlvbn0nIGluIGVudmlyb25tZW50ICR7Z3JvdXAuYWNjb3VudH0vJHtncm91cC5yZWdpb259YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGRlc3RpbmF0aW9ucy5hZGQoZGVzdGluYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogUmVzb3VyY2VNYXBwaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBncm91cCBvZiBzdGFja0dyb3Vwcykge1xuICAgIGZvciAoY29uc3QgW3NvdXJjZSwgZGVzdGluYXRpb25dIG9mIE9iamVjdC5lbnRyaWVzKGdyb3VwLnJlc291cmNlcykpIHtcbiAgICAgIGlmICghaW5Vc2Uoc291cmNlLCBncm91cC5zdGFja3MpKSB7XG4gICAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYFNvdXJjZSByZXNvdXJjZSAnJHtzb3VyY2V9JyBkb2VzIG5vdCBleGlzdCBpbiBlbnZpcm9ubWVudCAke2dyb3VwLmFjY291bnR9LyR7Z3JvdXAucmVnaW9ufWApO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5Vc2UoZGVzdGluYXRpb24sIGdyb3VwLnN0YWNrcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihcbiAgICAgICAgICBgRGVzdGluYXRpb24gcmVzb3VyY2UgJyR7ZGVzdGluYXRpb259JyBhbHJlYWR5IGluIHVzZSBpbiBlbnZpcm9ubWVudCAke2dyb3VwLmFjY291bnR9LyR7Z3JvdXAucmVnaW9ufWAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gZW52aXJvbm1lbnRPZihncm91cCk7XG4gICAgICBjb25zdCBzcmMgPSBtYWtlTG9jYXRpb24oc291cmNlLCBlbnZpcm9ubWVudCwgZ3JvdXAuc3RhY2tzKTtcbiAgICAgIGNvbnN0IGRzdCA9IG1ha2VMb2NhdGlvbihkZXN0aW5hdGlvbiwgZW52aXJvbm1lbnQpO1xuICAgICAgcmVzdWx0LnB1c2gobmV3IFJlc291cmNlTWFwcGluZyhzcmMsIGRzdCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xuXG4gIGZ1bmN0aW9uIGluVXNlKGxvY2F0aW9uOiBzdHJpbmcsIHN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgW3N0YWNrTmFtZSwgbG9naWNhbElkXSA9IGxvY2F0aW9uLnNwbGl0KCcuJyk7XG4gICAgaWYgKHN0YWNrTmFtZSA9PSBudWxsIHx8IGxvZ2ljYWxJZCA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBJbnZhbGlkIGxvY2F0aW9uICcke2xvY2F0aW9ufSdgKTtcbiAgICB9XG4gICAgY29uc3Qgc3RhY2sgPSBzdGFja3MuZmluZCgocykgPT4gcy5zdGFja05hbWUgPT09IHN0YWNrTmFtZSk7XG4gICAgcmV0dXJuIHN0YWNrICE9IG51bGwgJiYgc3RhY2sudGVtcGxhdGUuUmVzb3VyY2VzPy5bbG9naWNhbElkXSAhPSBudWxsO1xuICB9XG5cbiAgZnVuY3Rpb24gZW52aXJvbm1lbnRPZihncm91cDogTWFwcGluZ0dyb3VwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjY291bnQ6IGdyb3VwLmFjY291bnQsXG4gICAgICByZWdpb246IGdyb3VwLnJlZ2lvbixcbiAgICAgIG5hbWU6ICcnLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBtYWtlTG9jYXRpb24oXG4gICAgbG9jOiBzdHJpbmcsXG4gICAgZW52aXJvbm1lbnQ6IGN4YXBpLkVudmlyb25tZW50LFxuICAgIHN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdID0gW10sXG4gICk6IFJlc291cmNlTG9jYXRpb24ge1xuICAgIGNvbnN0IFtzdGFja05hbWUsIGxvZ2ljYWxJZF0gPSBsb2Muc3BsaXQoJy4nKTtcbiAgICBjb25zdCBzdGFjayA9IHN0YWNrcy5maW5kKChzKSA9PiBzLnN0YWNrTmFtZSA9PT0gc3RhY2tOYW1lKTtcblxuICAgIHJldHVybiBuZXcgUmVzb3VyY2VMb2NhdGlvbihcbiAgICAgIHtcbiAgICAgICAgc3RhY2tOYW1lLFxuICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgdGVtcGxhdGU6IHN0YWNrPy50ZW1wbGF0ZSA/PyB7fSxcbiAgICAgIH0sXG4gICAgICBsb2dpY2FsSWQsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RGVwbG95ZWRTdGFja3MoXG4gIHNka1Byb3ZpZGVyOiBTZGtQcm92aWRlcixcbiAgZW52aXJvbm1lbnQ6IGN4YXBpLkVudmlyb25tZW50LFxuKTogUHJvbWlzZTxDbG91ZEZvcm1hdGlvblN0YWNrW10+IHtcbiAgY29uc3QgY2ZuID0gKGF3YWl0IHNka1Byb3ZpZGVyLmZvckVudmlyb25tZW50KGVudmlyb25tZW50LCBNb2RlLkZvclJlYWRpbmcpKS5zZGsuY2xvdWRGb3JtYXRpb24oKTtcblxuICBjb25zdCBzdW1tYXJpZXMgPSBhd2FpdCBjZm4ucGFnaW5hdGVkTGlzdFN0YWNrcyh7XG4gICAgU3RhY2tTdGF0dXNGaWx0ZXI6IFtcbiAgICAgICdDUkVBVEVfQ09NUExFVEUnLFxuICAgICAgJ1VQREFURV9DT01QTEVURScsXG4gICAgICAnVVBEQVRFX1JPTExCQUNLX0NPTVBMRVRFJyxcbiAgICAgICdJTVBPUlRfQ09NUExFVEUnLFxuICAgICAgJ1JPTExCQUNLX0NPTVBMRVRFJyxcbiAgICBdLFxuICB9KTtcblxuICBjb25zdCBub3JtYWxpemUgPSBhc3luYyAoc3VtbWFyeTogU3RhY2tTdW1tYXJ5KSA9PiB7XG4gICAgY29uc3QgdGVtcGxhdGVDb21tYW5kT3V0cHV0ID0gYXdhaXQgY2ZuLmdldFRlbXBsYXRlKHsgU3RhY2tOYW1lOiBzdW1tYXJ5LlN0YWNrTmFtZSEgfSk7XG4gICAgY29uc3QgdGVtcGxhdGUgPSBkZXNlcmlhbGl6ZVN0cnVjdHVyZSh0ZW1wbGF0ZUNvbW1hbmRPdXRwdXQuVGVtcGxhdGVCb2R5ID8/ICd7fScpO1xuICAgIHJldHVybiB7XG4gICAgICBlbnZpcm9ubWVudCxcbiAgICAgIHN0YWNrTmFtZTogc3VtbWFyeS5TdGFja05hbWUhLFxuICAgICAgdGVtcGxhdGUsXG4gICAgfTtcbiAgfTtcblxuICBjb25zdCBsaW1pdCA9IHBMaW1pdCgyMCk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBjZGtsYWJzL3Byb21pc2VhbGwtbm8tdW5ib3VuZGVkLXBhcmFsbGVsaXNtXG4gIHJldHVybiBQcm9taXNlLmFsbChzdW1tYXJpZXMubWFwKHMgPT4gbGltaXQoKCkgPT4gbm9ybWFsaXplKHMpKSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RW52aXJvbm1lbnRTZWN0aW9uSGVhZGVyKGVudmlyb25tZW50OiBjeGFwaS5FbnZpcm9ubWVudCkge1xuICBjb25zdCBlbnYgPSBgYXdzOi8vJHtlbnZpcm9ubWVudC5hY2NvdW50fS8ke2Vudmlyb25tZW50LnJlZ2lvbn1gO1xuICByZXR1cm4gZm9ybWF0VG9TdHJlYW0oc3RyZWFtID0+IGZtdEVudmlyb25tZW50U2VjdGlvbkhlYWRlcihzdHJlYW0sIGVudikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VHlwZWRNYXBwaW5ncyhtYXBwaW5nczogVHlwZWRNYXBwaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gZm9ybWF0VG9TdHJlYW0oKHN0cmVhbSkgPT4gZm10VHlwZWRNYXBwaW5ncyhzdHJlYW0sIG1hcHBpbmdzKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRBbWJpZ3VvdXNNYXBwaW5ncyhwYXRoczogW3N0cmluZ1tdLCBzdHJpbmdbXV1bXSk6IHN0cmluZyB7XG4gIHJldHVybiBmb3JtYXRUb1N0cmVhbSgoc3RyZWFtKSA9PiBmbXRBbWJpZ3VvdXNNYXBwaW5ncyhzdHJlYW0sIHBhdGhzKSk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFRvU3RyZWFtKGNiOiAoc3RyZWFtOiBOb2RlSlMuV3JpdGFibGVTdHJlYW0pID0+IHZvaWQpOiBzdHJpbmcge1xuICBjb25zdCBzdHJlYW0gPSBuZXcgU3RyaW5nV3JpdGVTdHJlYW0oKTtcbiAgY2Ioc3RyZWFtKTtcbiAgcmV0dXJuIHN0cmVhbS50b1N0cmluZygpO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBsaXN0IG9mIHN0YWNrIGdyb3VwcywgZWFjaCBjb250YWluaW5nIHRoZSBsb2NhbCBzdGFja3MgYW5kIHRoZSBkZXBsb3llZCBzdGFja3MgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gcGF0dGVybnMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBncm91cFN0YWNrcyhzZGtQcm92aWRlcjogU2RrUHJvdmlkZXIsIGxvY2FsU3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW10sIGFkZGl0aW9uYWxTdGFja05hbWVzOiBzdHJpbmdbXSkge1xuICBjb25zdCBlbnZpcm9ubWVudHM6IE1hcDxzdHJpbmcsIGN4YXBpLkVudmlyb25tZW50PiA9IG5ldyBNYXAoKTtcblxuICBmb3IgKGNvbnN0IHN0YWNrIG9mIGxvY2FsU3RhY2tzKSB7XG4gICAgY29uc3QgZW52aXJvbm1lbnQgPSBhd2FpdCBzZGtQcm92aWRlci5yZXNvbHZlRW52aXJvbm1lbnQoc3RhY2suZW52aXJvbm1lbnQpO1xuICAgIGNvbnN0IGtleSA9IGhhc2hPYmplY3QoZW52aXJvbm1lbnQpO1xuICAgIGVudmlyb25tZW50cy5zZXQoa2V5LCBlbnZpcm9ubWVudCk7XG4gIH1cblxuICBjb25zdCBsb2NhbEJ5RW52aXJvbm1lbnQgPSBhd2FpdCBpbmRleEJ5KGxvY2FsU3RhY2tzLFxuICAgIGFzeW5jIChzKSA9PiBoYXNoT2JqZWN0KGF3YWl0IHNka1Byb3ZpZGVyLnJlc29sdmVFbnZpcm9ubWVudChzLmVudmlyb25tZW50KSksXG4gICk7XG5cbiAgY29uc3QgZ3JvdXBzOiBTdGFja0dyb3VwW10gPSBbXTtcbiAgZm9yIChsZXQga2V5IG9mIGxvY2FsQnlFbnZpcm9ubWVudC5rZXlzKCkpIHtcbiAgICBjb25zdCBlbnZpcm9ubWVudCA9IGVudmlyb25tZW50cy5nZXQoa2V5KSE7XG4gICAgY29uc3QgYWxsRGVwbG95ZWRTdGFja3MgPSBhd2FpdCBnZXREZXBsb3llZFN0YWNrcyhzZGtQcm92aWRlciwgZW52aXJvbm1lbnQpO1xuICAgIGNvbnN0IGxvY2FsID0gbG9jYWxCeUVudmlyb25tZW50LmdldChrZXkpITtcbiAgICBjb25zdCBoYXNMb2NhbENvdW50ZXJwYXJ0ID0gKHM6IENsb3VkRm9ybWF0aW9uU3RhY2spID0+IGxvY2FsLnNvbWUoKGwpID0+IGwuc3RhY2tOYW1lID09PSBzLnN0YWNrTmFtZSk7XG4gICAgY29uc3Qgd2FzRXhwbGljaXRseVByb3ZpZGVkID0gKHM6IENsb3VkRm9ybWF0aW9uU3RhY2spID0+IGFkZGl0aW9uYWxTdGFja05hbWVzLmluY2x1ZGVzKHMuc3RhY2tOYW1lKTtcblxuICAgIGdyb3Vwcy5wdXNoKHtcbiAgICAgIGVudmlyb25tZW50LFxuICAgICAgZGVwbG95ZWRTdGFja3M6IGFsbERlcGxveWVkU3RhY2tzLmZpbHRlcihzID0+IGhhc0xvY2FsQ291bnRlcnBhcnQocykgfHwgd2FzRXhwbGljaXRseVByb3ZpZGVkKHMpKSxcbiAgICAgIGxvY2FsU3RhY2tzOiBsb2NhbCxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBncm91cHM7XG59XG4iXX0=
package/package.json CHANGED
@@ -71,7 +71,7 @@
71
71
  "nock": "13",
72
72
  "prettier": "^2.8",
73
73
  "ts-jest": "^29.4.4",
74
- "typescript": "5.8",
74
+ "typescript": "5.9",
75
75
  "xml-js": "^1.6.11"
76
76
  },
77
77
  "peerDependencies": {
@@ -79,7 +79,7 @@
79
79
  },
80
80
  "dependencies": {
81
81
  "@aws-cdk/cdk-assets-lib": "^1",
82
- "@aws-cdk/cloud-assembly-schema": ">=48.17.0",
82
+ "@aws-cdk/cloud-assembly-schema": ">=48.19.0",
83
83
  "@aws-cdk/cloudformation-diff": "^2",
84
84
  "@aws-cdk/cx-api": "^2",
85
85
  "@aws-sdk/client-appsync": "^3",
@@ -132,11 +132,11 @@
132
132
  },
133
133
  "main": "lib/index.js",
134
134
  "license": "Apache-2.0",
135
- "homepage": "https://github.com/aws/aws-cdk",
135
+ "homepage": "https://docs.aws.amazon.com/cdk/api/toolkit-lib",
136
136
  "publishConfig": {
137
137
  "access": "public"
138
138
  },
139
- "version": "1.10.2",
139
+ "version": "1.10.4",
140
140
  "types": "lib/index.d.ts",
141
141
  "exports": {
142
142
  ".": {