@aws-cdk/toolkit-lib 1.1.2 → 1.2.1
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 +2 -2
- package/lib/api/cloud-assembly/private/context-aware-source.js +3 -8
- package/lib/api/cloud-assembly/private/helpers.d.ts +5 -0
- package/lib/api/cloud-assembly/private/helpers.js +8 -1
- package/lib/api/cloud-assembly/private/prepare-source.d.ts +5 -1
- package/lib/api/cloud-assembly/private/prepare-source.js +8 -3
- package/lib/api/cloud-assembly/source-builder.d.ts +7 -0
- package/lib/api/cloud-assembly/source-builder.js +18 -13
- package/lib/api/deployments/asset-manifest-builder.d.ts +1 -1
- package/lib/api/deployments/asset-manifest-builder.js +3 -3
- package/lib/api/deployments/asset-publishing.d.ts +1 -1
- package/lib/api/deployments/asset-publishing.js +3 -3
- package/lib/api/deployments/cfn-api.js +3 -3
- package/lib/api/deployments/deployments.d.ts +1 -1
- package/lib/api/deployments/deployments.js +2 -2
- package/lib/api/notices/web-data-source.js +6 -2
- package/lib/api/work-graph/work-graph-builder.js +3 -3
- package/lib/api/work-graph/work-graph-types.d.ts +1 -1
- package/lib/api/work-graph/work-graph-types.js +1 -1
- package/lib/payloads/deploy.d.ts +1 -1
- package/lib/payloads/deploy.js +1 -1
- package/package.json +8 -8
package/build-info.json
CHANGED
|
@@ -4,6 +4,7 @@ exports.ContextAwareCloudAssemblySource = void 0;
|
|
|
4
4
|
const contextproviders = require("../../../context-providers");
|
|
5
5
|
const toolkit_error_1 = require("../../../toolkit/toolkit-error");
|
|
6
6
|
const private_1 = require("../../io/private");
|
|
7
|
+
const helpers_1 = require("./helpers");
|
|
7
8
|
/**
|
|
8
9
|
* A CloudAssemblySource that wraps another CloudAssemblySource and runs a lookup loop on it
|
|
9
10
|
*
|
|
@@ -47,7 +48,7 @@ class ContextAwareCloudAssemblySource {
|
|
|
47
48
|
const readableAsm = await this.source.produce();
|
|
48
49
|
const assembly = readableAsm.cloudAssembly;
|
|
49
50
|
if (assembly.manifest.missing && assembly.manifest.missing.length > 0) {
|
|
50
|
-
const missingKeysSet = missingContextKeys(assembly.manifest.missing);
|
|
51
|
+
const missingKeysSet = (0, helpers_1.missingContextKeys)(assembly.manifest.missing);
|
|
51
52
|
const missingKeys = Array.from(missingKeysSet);
|
|
52
53
|
if (!this.canLookup) {
|
|
53
54
|
throw new toolkit_error_1.ToolkitError('Context lookups have been disabled. '
|
|
@@ -78,12 +79,6 @@ class ContextAwareCloudAssemblySource {
|
|
|
78
79
|
}
|
|
79
80
|
}
|
|
80
81
|
exports.ContextAwareCloudAssemblySource = ContextAwareCloudAssemblySource;
|
|
81
|
-
/**
|
|
82
|
-
* Return all keys of missing context items
|
|
83
|
-
*/
|
|
84
|
-
function missingContextKeys(missing) {
|
|
85
|
-
return new Set((missing || []).map(m => m.key));
|
|
86
|
-
}
|
|
87
82
|
/**
|
|
88
83
|
* Are two sets equal to each other
|
|
89
84
|
*/
|
|
@@ -98,4 +93,4 @@ function equalSets(a, b) {
|
|
|
98
93
|
}
|
|
99
94
|
return true;
|
|
100
95
|
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1hd2FyZS1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb250ZXh0LWF3YXJlLXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwrREFBK0Q7QUFFL0Qsa0VBQThEO0FBRTlELDhDQUFzQztBQTBCdEM7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFhLCtCQUErQjtJQUtiO0lBQStDO0lBSnBFLFNBQVMsQ0FBVTtJQUNuQixPQUFPLENBQWdCO0lBQ3ZCLFFBQVEsQ0FBVztJQUUzQixZQUE2QixNQUE0QixFQUFtQixLQUFxQztRQUFwRixXQUFNLEdBQU4sTUFBTSxDQUFzQjtRQUFtQixVQUFLLEdBQUwsS0FBSyxDQUFnQztRQUMvRyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxPQUFPO1FBQ2xCLHNHQUFzRztRQUN0RyxnRkFBZ0Y7UUFDaEYsbUZBQW1GO1FBQ25GLDhFQUE4RTtRQUM5RSxJQUFJLHFCQUE4QyxDQUFDO1FBQ25ELE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDWixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFaEQsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQztZQUMzQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdEUsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDckUsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFFL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDcEIsTUFBTSxJQUFJLDRCQUFZLENBQ3BCLHNDQUFzQzswQkFDcEMsc0tBQXNLOzBCQUN0SywwQkFBMEIsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNELENBQUM7Z0JBRUQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixJQUFJLHFCQUFxQixJQUFJLFNBQVMsQ0FBQyxjQUFjLEVBQUUscUJBQXFCLENBQUMsRUFBRSxDQUFDO29CQUM5RSxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMseUVBQXlFLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ2xKLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLENBQUM7Z0JBRUQscUJBQXFCLEdBQUcsY0FBYyxDQUFDO2dCQUV2QyxJQUFJLFNBQVMsRUFBRSxDQUFDO29CQUNkLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBRSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxrREFBa0QsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDM0gsTUFBTSxjQUFjLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FDaEUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUM5QixJQUFJLENBQUMsUUFBUSxDQUNkLENBQUM7b0JBRUYsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFFLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFFO3dCQUNqRixPQUFPLEVBQUUsY0FBYztxQkFDeEIsQ0FBQyxDQUFDLENBQUM7b0JBQ0osTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFFMUMsMkVBQTJFO29CQUMzRSxzQ0FBc0M7b0JBQ3RDLE1BQU0sV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUM1QixTQUFTO2dCQUNYLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7Q0FDRjtBQW5FRCwwRUFtRUM7QUFFRDs7R0FFRztBQUNILFNBQVMsa0JBQWtCLENBQUMsT0FBMEI7SUFDcEQsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFNBQVMsQ0FBSSxDQUFTLEVBQUUsQ0FBUztJQUN4QyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNkLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE1pc3NpbmdDb250ZXh0IH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcbmltcG9ydCAqIGFzIGNvbnRleHRwcm92aWRlcnMgZnJvbSAnLi4vLi4vLi4vY29udGV4dC1wcm92aWRlcnMnO1xuaW1wb3J0IHR5cGUgeyBUb29sa2l0U2VydmljZXMgfSBmcm9tICcuLi8uLi8uLi90b29sa2l0L3ByaXZhdGUnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vdG9vbGtpdC90b29sa2l0LWVycm9yJztcbmltcG9ydCB0eXBlIHsgSW9IZWxwZXIgfSBmcm9tICcuLi8uLi9pby9wcml2YXRlJztcbmltcG9ydCB7IElPIH0gZnJvbSAnLi4vLi4vaW8vcHJpdmF0ZSc7XG5pbXBvcnQgdHlwZSB7IElDb250ZXh0U3RvcmUgfSBmcm9tICcuLi9jb250ZXh0LXN0b3JlJztcbmltcG9ydCB0eXBlIHsgSUNsb3VkQXNzZW1ibHlTb3VyY2UsIElSZWFkYWJsZUNsb3VkQXNzZW1ibHkgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVByb3BzIHtcbiAgLyoqXG4gICAqIEFXUyBvYmplY3QgKHVzZWQgYnkgY29udGV4dHByb3ZpZGVyKVxuICAgKiBAZGVwcmVjYXRlZCBjb250ZXh0IHNob3VsZCBiZSBtb3ZlZCB0byB0aGUgdG9vbGtpdCBpdHNlbGZcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VzOiBUb29sa2l0U2VydmljZXM7XG5cbiAgLyoqXG4gICAqIExvY2F0aW9uIHRvIHJlYWQgYW5kIHdyaXRlIGNvbnRleHRcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHRTdG9yZTogSUNvbnRleHRTdG9yZTtcblxuICAvKipcbiAgICogRW5hYmxlIGNvbnRleHQgbG9va3Vwcy5cbiAgICpcbiAgICogUHJvZHVjaW5nIGEgYGN4YXBpLkNsb3VkQXNzZW1ibHlgIHdpbGwgZmFpbCBpZiB0aGlzIGlzIGRpc2FibGVkIGFuZCBjb250ZXh0IGxvb2t1cHMgbmVlZCB0byBiZSBwZXJmb3JtZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cHM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEEgQ2xvdWRBc3NlbWJseVNvdXJjZSB0aGF0IHdyYXBzIGFub3RoZXIgQ2xvdWRBc3NlbWJseVNvdXJjZSBhbmQgcnVucyBhIGxvb2t1cCBsb29wIG9uIGl0XG4gKlxuICogVGhpcyBtZWFucyB0aGF0IGlmIHRoZSB1bmRlcmx5aW5nIENsb3VkQXNzZW1ibHlTb3VyY2UgcHJvZHVjZXMgYSBtYW5pZmVzdFxuICogd2l0aCBwcm92aWRlciBxdWVyaWVzIGluIGl0LCB0aGUgYENvbnRleHRBd2FyZUNsb3VkQXNzZW1ibHlTb3VyY2VgIHdpbGxcbiAqIHBlcmZvcm0gdGhlIG5lY2Vzc2FyeSBjb250ZXh0IGxvb2t1cHMgYW5kIGludm9rZSB0aGUgdW5kZXJseWluZ1xuICogYENsb3VkQXNzZW1ibHlTb3VyY2VgIGFnYWluIHdpdGggdGhldyBtaXNzaW5nIGNvbnRleHQgaW5mb3JtYXRpb24uXG4gKlxuICogVGhpcyBpcyBvbmx5IHVzZWZ1bCBpZiB0aGUgdW5kZXJseWluZyBgQ2xvdWRBc3NlbWJseVNvdXJjZWAgY2FuIHJlc3BvbmQgdG9cbiAqIHRoaXMgbmV3IGNvbnRleHQgaW5mb3JtYXRpb24gKGl0IG11c3QgYmUgYSBDREsgYXBwIHNvdXJjZSk7IGlmIGl0IGlzIGp1c3QgYVxuICogc3RhdGljIGRpcmVjdG9yeSwgdGhlbiB0aGUgY29udGVudHMgb2YgdGhlIGFzc2VtYmx5IHdvbid0IGNoYW5nZSBpbiByZXNwb25zZVxuICogdG8gY29udGV4dC5cbiAqXG4gKiBUaGUgY29udGV4dCBpcyBwYXNzZWQgYmV0d2VlbiBgQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVNvdXJjZWAgYW5kIHRoZSB3cmFwcGVkXG4gKiBjbG91ZCBhc3NlbWJseSBzb3VyY2UgdmlhIGEgY29udGV4IGZpbGUgb24gZGlzaywgc28gdGhlIHdyYXBwZWQgYXNzZW1ibHkgc291cmNlXG4gKiBzaG91bGQgcmUtcmVhZCB0aGUgY29udGV4dCBmaWxlIG9uIGV2ZXJ5IGludm9jYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5U291cmNlIGltcGxlbWVudHMgSUNsb3VkQXNzZW1ibHlTb3VyY2Uge1xuICBwcml2YXRlIGNhbkxvb2t1cDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBjb250ZXh0OiBJQ29udGV4dFN0b3JlO1xuICBwcml2YXRlIGlvSGVscGVyOiBJb0hlbHBlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHNvdXJjZTogSUNsb3VkQXNzZW1ibHlTb3VyY2UsIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IENvbnRleHRBd2FyZUNsb3VkQXNzZW1ibHlQcm9wcykge1xuICAgIHRoaXMuY2FuTG9va3VwID0gcHJvcHMubG9va3VwcyA/PyB0cnVlO1xuICAgIHRoaXMuY29udGV4dCA9IHByb3BzLmNvbnRleHRTdG9yZTtcbiAgICB0aGlzLmlvSGVscGVyID0gcHJvcHMuc2VydmljZXMuaW9IZWxwZXI7XG4gIH1cblxuICAvKipcbiAgICogUHJvZHVjZSBhIENsb3VkIEFzc2VtYmx5LCBpLmUuIGEgc2V0IG9mIHN0YWNrc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIHByb2R1Y2UoKTogUHJvbWlzZTxJUmVhZGFibGVDbG91ZEFzc2VtYmx5PiB7XG4gICAgLy8gV2UgbWF5IG5lZWQgdG8gcnVuIHRoZSBjbG91ZCBhc3NlbWJseSBzb3VyY2UgbXVsdGlwbGUgdGltZXMgaW4gb3JkZXIgdG8gc2F0aXNmeSBhbGwgbWlzc2luZyBjb250ZXh0XG4gICAgLy8gKFdoZW4gdGhlIHNvdXJjZSBwcm9kdWNlciBydW5zLCBpdCB3aWxsIHRlbGwgdXMgYWJvdXQgY29udGV4dCBpdCB3YW50cyB0byB1c2VcbiAgICAvLyBidXQgaXQgbWlzc2luZy4gV2UnbGwgdGhlbiBsb29rIHVwIHRoZSBjb250ZXh0IGFuZCBydW4gdGhlIGV4ZWN1dGFibGUgYWdhaW4sIGFuZFxuICAgIC8vIGFnYWluLCB1bnRpbCBpdCBkb2Vzbid0IGNvbXBsYWluIGFueW1vcmUgb3Igd2UndmUgc3RvcHBlZCBtYWtpbmcgcHJvZ3Jlc3MpLlxuICAgIGxldCBwcmV2aW91c2x5TWlzc2luZ0tleXM6IFNldDxzdHJpbmc+IHwgdW5kZWZpbmVkO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCByZWFkYWJsZUFzbSA9IGF3YWl0IHRoaXMuc291cmNlLnByb2R1Y2UoKTtcblxuICAgICAgY29uc3QgYXNzZW1ibHkgPSByZWFkYWJsZUFzbS5jbG91ZEFzc2VtYmx5O1xuICAgICAgaWYgKGFzc2VtYmx5Lm1hbmlmZXN0Lm1pc3NpbmcgJiYgYXNzZW1ibHkubWFuaWZlc3QubWlzc2luZy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IG1pc3NpbmdLZXlzU2V0ID0gbWlzc2luZ0NvbnRleHRLZXlzKGFzc2VtYmx5Lm1hbmlmZXN0Lm1pc3NpbmcpO1xuICAgICAgICBjb25zdCBtaXNzaW5nS2V5cyA9IEFycmF5LmZyb20obWlzc2luZ0tleXNTZXQpO1xuXG4gICAgICAgIGlmICghdGhpcy5jYW5Mb29rdXApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKFxuICAgICAgICAgICAgJ0NvbnRleHQgbG9va3VwcyBoYXZlIGJlZW4gZGlzYWJsZWQuICdcbiAgICAgICAgICAgICsgJ01ha2Ugc3VyZSBhbGwgbmVjZXNzYXJ5IGNvbnRleHQgaXMgYWxyZWFkeSBpbiBcXCdjZGsuY29udGV4dC5qc29uXFwnIGJ5IHJ1bm5pbmcgXFwnY2RrIHN5bnRoXFwnIG9uIGEgbWFjaGluZSB3aXRoIHN1ZmZpY2llbnQgQVdTIGNyZWRlbnRpYWxzIGFuZCBjb21taXR0aW5nIHRoZSByZXN1bHQuICdcbiAgICAgICAgICAgICsgYE1pc3NpbmcgY29udGV4dCBrZXlzOiAnJHttaXNzaW5nS2V5cy5qb2luKCcsICcpfSdgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0cnlMb29rdXAgPSB0cnVlO1xuICAgICAgICBpZiAocHJldmlvdXNseU1pc3NpbmdLZXlzICYmIGVxdWFsU2V0cyhtaXNzaW5nS2V5c1NldCwgcHJldmlvdXNseU1pc3NpbmdLZXlzKSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19BU1NFTUJMWV9JMDI0MC5tc2coJ05vdCBtYWtpbmcgcHJvZ3Jlc3MgdHJ5aW5nIHRvIHJlc29sdmUgZW52aXJvbm1lbnRhbCBjb250ZXh0LiBHaXZpbmcgdXAuJywgeyBtaXNzaW5nS2V5cyB9KSk7XG4gICAgICAgICAgdHJ5TG9va3VwID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBwcmV2aW91c2x5TWlzc2luZ0tleXMgPSBtaXNzaW5nS2V5c1NldDtcblxuICAgICAgICBpZiAodHJ5TG9va3VwKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5pb0hlbHBlci5ub3RpZnkoSU8uQ0RLX0FTU0VNQkxZX0kwMjQxLm1zZygnU29tZSBjb250ZXh0IGluZm9ybWF0aW9uIGlzIG1pc3NpbmcuIEZldGNoaW5nLi4uJywgeyBtaXNzaW5nS2V5cyB9KSk7XG4gICAgICAgICAgY29uc3QgY29udGV4dFVwZGF0ZXMgPSBhd2FpdCBjb250ZXh0cHJvdmlkZXJzLnByb3ZpZGVDb250ZXh0VmFsdWVzKFxuICAgICAgICAgICAgYXNzZW1ibHkubWFuaWZlc3QubWlzc2luZyxcbiAgICAgICAgICAgIHRoaXMucHJvcHMuc2VydmljZXMuc2RrUHJvdmlkZXIsXG4gICAgICAgICAgICB0aGlzLnByb3BzLnNlcnZpY2VzLnBsdWdpbkhvc3QsXG4gICAgICAgICAgICB0aGlzLmlvSGVscGVyLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfQVNTRU1CTFlfSTAwNDIubXNnKCdXcml0aW5nIGNvbnRleHQgdXBkYXRlcy4uLicsIHtcbiAgICAgICAgICAgIGNvbnRleHQ6IGNvbnRleHRVcGRhdGVzLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgICBhd2FpdCB0aGlzLmNvbnRleHQudXBkYXRlKGNvbnRleHRVcGRhdGVzKTtcblxuICAgICAgICAgIC8vIEV4ZWN1dGUgYWdhaW4uIFVubG9jayB0aGUgYXNzZW1ibHkgaGVyZSBzbyB0aGF0IHRoZSBwcm9kdWNlciBjYW4gYWNxdWlyZVxuICAgICAgICAgIC8vIGEgcmVhZCBsb2NrIG9uIHRoZSBkaXJlY3RvcnkgYWdhaW4uXG4gICAgICAgICAgYXdhaXQgcmVhZGFibGVBc20uX3VubG9jaygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkYWJsZUFzbTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm4gYWxsIGtleXMgb2YgbWlzc2luZyBjb250ZXh0IGl0ZW1zXG4gKi9cbmZ1bmN0aW9uIG1pc3NpbmdDb250ZXh0S2V5cyhtaXNzaW5nPzogTWlzc2luZ0NvbnRleHRbXSk6IFNldDxzdHJpbmc+IHtcbiAgcmV0dXJuIG5ldyBTZXQoKG1pc3NpbmcgfHwgW10pLm1hcChtID0+IG0ua2V5KSk7XG59XG5cbi8qKlxuICogQXJlIHR3byBzZXRzIGVxdWFsIHRvIGVhY2ggb3RoZXJcbiAqL1xuZnVuY3Rpb24gZXF1YWxTZXRzPEE+KGE6IFNldDxBPiwgYjogU2V0PEE+KSB7XG4gIGlmIChhLnNpemUgIT09IGIuc2l6ZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBmb3IgKGNvbnN0IHggb2YgYSkge1xuICAgIGlmICghYi5oYXMoeCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG4iXX0=
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1hd2FyZS1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb250ZXh0LWF3YXJlLXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrREFBK0Q7QUFFL0Qsa0VBQThEO0FBRTlELDhDQUFzQztBQUd0Qyx1Q0FBK0M7QUF3Qi9DOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBYSwrQkFBK0I7SUFLYjtJQUErQztJQUpwRSxTQUFTLENBQVU7SUFDbkIsT0FBTyxDQUFnQjtJQUN2QixRQUFRLENBQVc7SUFFM0IsWUFBNkIsTUFBNEIsRUFBbUIsS0FBcUM7UUFBcEYsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUFBbUIsVUFBSyxHQUFMLEtBQUssQ0FBZ0M7UUFDL0csSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQztRQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsT0FBTztRQUNsQixzR0FBc0c7UUFDdEcsZ0ZBQWdGO1FBQ2hGLG1GQUFtRjtRQUNuRiw4RUFBOEU7UUFDOUUsSUFBSSxxQkFBOEMsQ0FBQztRQUNuRCxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ1osTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRWhELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7WUFDM0MsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RFLE1BQU0sY0FBYyxHQUFHLElBQUEsNEJBQWtCLEVBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDckUsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFFL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDcEIsTUFBTSxJQUFJLDRCQUFZLENBQ3BCLHNDQUFzQzswQkFDcEMsc0tBQXNLOzBCQUN0SywwQkFBMEIsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNELENBQUM7Z0JBRUQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixJQUFJLHFCQUFxQixJQUFJLFNBQVMsQ0FBQyxjQUFjLEVBQUUscUJBQXFCLENBQUMsRUFBRSxDQUFDO29CQUM5RSxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMseUVBQXlFLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ2xKLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLENBQUM7Z0JBRUQscUJBQXFCLEdBQUcsY0FBYyxDQUFDO2dCQUV2QyxJQUFJLFNBQVMsRUFBRSxDQUFDO29CQUNkLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBRSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxrREFBa0QsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDM0gsTUFBTSxjQUFjLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FDaEUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUM5QixJQUFJLENBQUMsUUFBUSxDQUNkLENBQUM7b0JBRUYsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFFLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFFO3dCQUNqRixPQUFPLEVBQUUsY0FBYztxQkFDeEIsQ0FBQyxDQUFDLENBQUM7b0JBQ0osTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFFMUMsMkVBQTJFO29CQUMzRSxzQ0FBc0M7b0JBQ3RDLE1BQU0sV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUM1QixTQUFTO2dCQUNYLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7Q0FDRjtBQW5FRCwwRUFtRUM7QUFFRDs7R0FFRztBQUNILFNBQVMsU0FBUyxDQUFJLENBQVMsRUFBRSxDQUFTO0lBQ3hDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvbnRleHRwcm92aWRlcnMgZnJvbSAnLi4vLi4vLi4vY29udGV4dC1wcm92aWRlcnMnO1xuaW1wb3J0IHR5cGUgeyBUb29sa2l0U2VydmljZXMgfSBmcm9tICcuLi8uLi8uLi90b29sa2l0L3ByaXZhdGUnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vdG9vbGtpdC90b29sa2l0LWVycm9yJztcbmltcG9ydCB0eXBlIHsgSW9IZWxwZXIgfSBmcm9tICcuLi8uLi9pby9wcml2YXRlJztcbmltcG9ydCB7IElPIH0gZnJvbSAnLi4vLi4vaW8vcHJpdmF0ZSc7XG5pbXBvcnQgdHlwZSB7IElDb250ZXh0U3RvcmUgfSBmcm9tICcuLi9jb250ZXh0LXN0b3JlJztcbmltcG9ydCB0eXBlIHsgSUNsb3VkQXNzZW1ibHlTb3VyY2UsIElSZWFkYWJsZUNsb3VkQXNzZW1ibHkgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBtaXNzaW5nQ29udGV4dEtleXMgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRBd2FyZUNsb3VkQXNzZW1ibHlQcm9wcyB7XG4gIC8qKlxuICAgKiBBV1Mgb2JqZWN0ICh1c2VkIGJ5IGNvbnRleHRwcm92aWRlcilcbiAgICogQGRlcHJlY2F0ZWQgY29udGV4dCBzaG91bGQgYmUgbW92ZWQgdG8gdGhlIHRvb2xraXQgaXRzZWxmXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlczogVG9vbGtpdFNlcnZpY2VzO1xuXG4gIC8qKlxuICAgKiBMb2NhdGlvbiB0byByZWFkIGFuZCB3cml0ZSBjb250ZXh0XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0U3RvcmU6IElDb250ZXh0U3RvcmU7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBjb250ZXh0IGxvb2t1cHMuXG4gICAqXG4gICAqIFByb2R1Y2luZyBhIGBjeGFwaS5DbG91ZEFzc2VtYmx5YCB3aWxsIGZhaWwgaWYgdGhpcyBpcyBkaXNhYmxlZCBhbmQgY29udGV4dCBsb29rdXBzIG5lZWQgdG8gYmUgcGVyZm9ybWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBsb29rdXBzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIENsb3VkQXNzZW1ibHlTb3VyY2UgdGhhdCB3cmFwcyBhbm90aGVyIENsb3VkQXNzZW1ibHlTb3VyY2UgYW5kIHJ1bnMgYSBsb29rdXAgbG9vcCBvbiBpdFxuICpcbiAqIFRoaXMgbWVhbnMgdGhhdCBpZiB0aGUgdW5kZXJseWluZyBDbG91ZEFzc2VtYmx5U291cmNlIHByb2R1Y2VzIGEgbWFuaWZlc3RcbiAqIHdpdGggcHJvdmlkZXIgcXVlcmllcyBpbiBpdCwgdGhlIGBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5U291cmNlYCB3aWxsXG4gKiBwZXJmb3JtIHRoZSBuZWNlc3NhcnkgY29udGV4dCBsb29rdXBzIGFuZCBpbnZva2UgdGhlIHVuZGVybHlpbmdcbiAqIGBDbG91ZEFzc2VtYmx5U291cmNlYCBhZ2FpbiB3aXRoIHRoZXcgbWlzc2luZyBjb250ZXh0IGluZm9ybWF0aW9uLlxuICpcbiAqIFRoaXMgaXMgb25seSB1c2VmdWwgaWYgdGhlIHVuZGVybHlpbmcgYENsb3VkQXNzZW1ibHlTb3VyY2VgIGNhbiByZXNwb25kIHRvXG4gKiB0aGlzIG5ldyBjb250ZXh0IGluZm9ybWF0aW9uIChpdCBtdXN0IGJlIGEgQ0RLIGFwcCBzb3VyY2UpOyBpZiBpdCBpcyBqdXN0IGFcbiAqIHN0YXRpYyBkaXJlY3RvcnksIHRoZW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBhc3NlbWJseSB3b24ndCBjaGFuZ2UgaW4gcmVzcG9uc2VcbiAqIHRvIGNvbnRleHQuXG4gKlxuICogVGhlIGNvbnRleHQgaXMgcGFzc2VkIGJldHdlZW4gYENvbnRleHRBd2FyZUNsb3VkQXNzZW1ibHlTb3VyY2VgIGFuZCB0aGUgd3JhcHBlZFxuICogY2xvdWQgYXNzZW1ibHkgc291cmNlIHZpYSBhIGNvbnRleCBmaWxlIG9uIGRpc2ssIHNvIHRoZSB3cmFwcGVkIGFzc2VtYmx5IHNvdXJjZVxuICogc2hvdWxkIHJlLXJlYWQgdGhlIGNvbnRleHQgZmlsZSBvbiBldmVyeSBpbnZvY2F0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVNvdXJjZSBpbXBsZW1lbnRzIElDbG91ZEFzc2VtYmx5U291cmNlIHtcbiAgcHJpdmF0ZSBjYW5Mb29rdXA6IGJvb2xlYW47XG4gIHByaXZhdGUgY29udGV4dDogSUNvbnRleHRTdG9yZTtcbiAgcHJpdmF0ZSBpb0hlbHBlcjogSW9IZWxwZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzb3VyY2U6IElDbG91ZEFzc2VtYmx5U291cmNlLCBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5UHJvcHMpIHtcbiAgICB0aGlzLmNhbkxvb2t1cCA9IHByb3BzLmxvb2t1cHMgPz8gdHJ1ZTtcbiAgICB0aGlzLmNvbnRleHQgPSBwcm9wcy5jb250ZXh0U3RvcmU7XG4gICAgdGhpcy5pb0hlbHBlciA9IHByb3BzLnNlcnZpY2VzLmlvSGVscGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2R1Y2UgYSBDbG91ZCBBc3NlbWJseSwgaS5lLiBhIHNldCBvZiBzdGFja3NcbiAgICovXG4gIHB1YmxpYyBhc3luYyBwcm9kdWNlKCk6IFByb21pc2U8SVJlYWRhYmxlQ2xvdWRBc3NlbWJseT4ge1xuICAgIC8vIFdlIG1heSBuZWVkIHRvIHJ1biB0aGUgY2xvdWQgYXNzZW1ibHkgc291cmNlIG11bHRpcGxlIHRpbWVzIGluIG9yZGVyIHRvIHNhdGlzZnkgYWxsIG1pc3NpbmcgY29udGV4dFxuICAgIC8vIChXaGVuIHRoZSBzb3VyY2UgcHJvZHVjZXIgcnVucywgaXQgd2lsbCB0ZWxsIHVzIGFib3V0IGNvbnRleHQgaXQgd2FudHMgdG8gdXNlXG4gICAgLy8gYnV0IGl0IG1pc3NpbmcuIFdlJ2xsIHRoZW4gbG9vayB1cCB0aGUgY29udGV4dCBhbmQgcnVuIHRoZSBleGVjdXRhYmxlIGFnYWluLCBhbmRcbiAgICAvLyBhZ2FpbiwgdW50aWwgaXQgZG9lc24ndCBjb21wbGFpbiBhbnltb3JlIG9yIHdlJ3ZlIHN0b3BwZWQgbWFraW5nIHByb2dyZXNzKS5cbiAgICBsZXQgcHJldmlvdXNseU1pc3NpbmdLZXlzOiBTZXQ8c3RyaW5nPiB8IHVuZGVmaW5lZDtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgcmVhZGFibGVBc20gPSBhd2FpdCB0aGlzLnNvdXJjZS5wcm9kdWNlKCk7XG5cbiAgICAgIGNvbnN0IGFzc2VtYmx5ID0gcmVhZGFibGVBc20uY2xvdWRBc3NlbWJseTtcbiAgICAgIGlmIChhc3NlbWJseS5tYW5pZmVzdC5taXNzaW5nICYmIGFzc2VtYmx5Lm1hbmlmZXN0Lm1pc3NpbmcubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBtaXNzaW5nS2V5c1NldCA9IG1pc3NpbmdDb250ZXh0S2V5cyhhc3NlbWJseS5tYW5pZmVzdC5taXNzaW5nKTtcbiAgICAgICAgY29uc3QgbWlzc2luZ0tleXMgPSBBcnJheS5mcm9tKG1pc3NpbmdLZXlzU2V0KTtcblxuICAgICAgICBpZiAoIXRoaXMuY2FuTG9va3VwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihcbiAgICAgICAgICAgICdDb250ZXh0IGxvb2t1cHMgaGF2ZSBiZWVuIGRpc2FibGVkLiAnXG4gICAgICAgICAgICArICdNYWtlIHN1cmUgYWxsIG5lY2Vzc2FyeSBjb250ZXh0IGlzIGFscmVhZHkgaW4gXFwnY2RrLmNvbnRleHQuanNvblxcJyBieSBydW5uaW5nIFxcJ2NkayBzeW50aFxcJyBvbiBhIG1hY2hpbmUgd2l0aCBzdWZmaWNpZW50IEFXUyBjcmVkZW50aWFscyBhbmQgY29tbWl0dGluZyB0aGUgcmVzdWx0LiAnXG4gICAgICAgICAgICArIGBNaXNzaW5nIGNvbnRleHQga2V5czogJyR7bWlzc2luZ0tleXMuam9pbignLCAnKX0nYCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdHJ5TG9va3VwID0gdHJ1ZTtcbiAgICAgICAgaWYgKHByZXZpb3VzbHlNaXNzaW5nS2V5cyAmJiBlcXVhbFNldHMobWlzc2luZ0tleXNTZXQsIHByZXZpb3VzbHlNaXNzaW5nS2V5cykpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfQVNTRU1CTFlfSTAyNDAubXNnKCdOb3QgbWFraW5nIHByb2dyZXNzIHRyeWluZyB0byByZXNvbHZlIGVudmlyb25tZW50YWwgY29udGV4dC4gR2l2aW5nIHVwLicsIHsgbWlzc2luZ0tleXMgfSkpO1xuICAgICAgICAgIHRyeUxvb2t1cCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJldmlvdXNseU1pc3NpbmdLZXlzID0gbWlzc2luZ0tleXNTZXQ7XG5cbiAgICAgICAgaWYgKHRyeUxvb2t1cCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19BU1NFTUJMWV9JMDI0MS5tc2coJ1NvbWUgY29udGV4dCBpbmZvcm1hdGlvbiBpcyBtaXNzaW5nLiBGZXRjaGluZy4uLicsIHsgbWlzc2luZ0tleXMgfSkpO1xuICAgICAgICAgIGNvbnN0IGNvbnRleHRVcGRhdGVzID0gYXdhaXQgY29udGV4dHByb3ZpZGVycy5wcm92aWRlQ29udGV4dFZhbHVlcyhcbiAgICAgICAgICAgIGFzc2VtYmx5Lm1hbmlmZXN0Lm1pc3NpbmcsXG4gICAgICAgICAgICB0aGlzLnByb3BzLnNlcnZpY2VzLnNka1Byb3ZpZGVyLFxuICAgICAgICAgICAgdGhpcy5wcm9wcy5zZXJ2aWNlcy5wbHVnaW5Ib3N0LFxuICAgICAgICAgICAgdGhpcy5pb0hlbHBlcixcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgYXdhaXQgdGhpcy5pb0hlbHBlci5ub3RpZnkoSU8uQ0RLX0FTU0VNQkxZX0kwMDQyLm1zZygnV3JpdGluZyBjb250ZXh0IHVwZGF0ZXMuLi4nLCB7XG4gICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0VXBkYXRlcyxcbiAgICAgICAgICB9KSk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5jb250ZXh0LnVwZGF0ZShjb250ZXh0VXBkYXRlcyk7XG5cbiAgICAgICAgICAvLyBFeGVjdXRlIGFnYWluLiBVbmxvY2sgdGhlIGFzc2VtYmx5IGhlcmUgc28gdGhhdCB0aGUgcHJvZHVjZXIgY2FuIGFjcXVpcmVcbiAgICAgICAgICAvLyBhIHJlYWQgbG9jayBvbiB0aGUgZGlyZWN0b3J5IGFnYWluLlxuICAgICAgICAgIGF3YWl0IHJlYWRhYmxlQXNtLl91bmxvY2soKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVhZGFibGVBc207XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQXJlIHR3byBzZXRzIGVxdWFsIHRvIGVhY2ggb3RoZXJcbiAqL1xuZnVuY3Rpb24gZXF1YWxTZXRzPEE+KGE6IFNldDxBPiwgYjogU2V0PEE+KSB7XG4gIGlmIChhLnNpemUgIT09IGIuc2l6ZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBmb3IgKGNvbnN0IHggb2YgYSkge1xuICAgIGlmICghYi5oYXMoeCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG4iXX0=
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { MissingContext } from '@aws-cdk/cloud-assembly-schema';
|
|
1
2
|
/**
|
|
2
3
|
* Temporarily overwrite the `process.env` with a new `env`
|
|
3
4
|
*
|
|
@@ -7,4 +8,8 @@
|
|
|
7
8
|
export declare function temporarilyWriteEnv(env: Record<string, string>): {
|
|
8
9
|
[Symbol.dispose](): void;
|
|
9
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* Return all keys of missing context items
|
|
13
|
+
*/
|
|
14
|
+
export declare function missingContextKeys(missing?: MissingContext[]): Set<string>;
|
|
10
15
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.temporarilyWriteEnv = temporarilyWriteEnv;
|
|
4
|
+
exports.missingContextKeys = missingContextKeys;
|
|
4
5
|
const toolkit_error_1 = require("../../../toolkit/toolkit-error");
|
|
5
6
|
/**
|
|
6
7
|
* Temporarily overwrite the `process.env` with a new `env`
|
|
@@ -41,4 +42,10 @@ function detectSynthvarConflicts(obj) {
|
|
|
41
42
|
},
|
|
42
43
|
});
|
|
43
44
|
}
|
|
44
|
-
|
|
45
|
+
/**
|
|
46
|
+
* Return all keys of missing context items
|
|
47
|
+
*/
|
|
48
|
+
function missingContextKeys(missing) {
|
|
49
|
+
return new Set((missing || []).map((m) => m.key));
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFTQSxrREFhQztBQTJCRCxnREFFQztBQWxERCxrRUFBOEQ7QUFFOUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxHQUEyQjtJQUM3RCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO0lBRTNCLE9BQU8sQ0FBQyxHQUFHLEdBQUcsdUJBQXVCLENBQUM7UUFDcEMsR0FBRyxPQUFPLENBQUMsR0FBRztRQUNkLEdBQUcsR0FBRztLQUNQLENBQUMsQ0FBQztJQUVILE9BQU87UUFDTCxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDZCxPQUFPLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQztRQUN2QixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLHVCQUF1QixDQUFtQixHQUFNO0lBQ3ZELE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFO1FBQ3BCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSTtZQUNkLE9BQVEsTUFBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLO1lBQ3JCLElBQUksQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pELE1BQU0sSUFBSSw0QkFBWSxDQUFDLHlJQUF5SSxDQUFDLENBQUM7WUFDcEssQ0FBQztZQUNBLE1BQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsT0FBMEI7SUFDM0QsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE1pc3NpbmdDb250ZXh0IH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uLy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5cbi8qKlxuICogVGVtcG9yYXJpbHkgb3ZlcndyaXRlIHRoZSBgcHJvY2Vzcy5lbnZgIHdpdGggYSBuZXcgYGVudmBcbiAqXG4gKiBXZSBtYWtlIHRoZSBlbnZpcm9ubWVudCBpbW11dGFibGUgaW4gY2FzZSB0aGVyZSBhcmUgYWNjaWRlbnRhbFxuICogY29uY3VycmVudCBhY2Nlc3Nlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlbXBvcmFyaWx5V3JpdGVFbnYoZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gIGNvbnN0IG9sZEVudiA9IHByb2Nlc3MuZW52O1xuXG4gIHByb2Nlc3MuZW52ID0gZGV0ZWN0U3ludGh2YXJDb25mbGljdHMoe1xuICAgIC4uLnByb2Nlc3MuZW52LFxuICAgIC4uLmVudixcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBbU3ltYm9sLmRpc3Bvc2VdKCkge1xuICAgICAgcHJvY2Vzcy5lbnYgPSBvbGRFbnY7XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gYW4gZW52aXJvbm1lbnQtbGlrZSBvYmplY3QgdGhhdCB0aHJvd3MgaWYgY2VydGFpbiBrZXlzIGFyZSBzZXRcbiAqXG4gKiBXZSBvbmx5IHRocm93IG9uIHNwZWNpZmljIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBjYXRjaCB0aGUgY2FzZSBvZlxuICogY29uY3VycmVudCBzeW50aHMuIFdlIGNhbid0IGRvIGFsbCB2YXJpYWJsZXMgYmVjYXVzZSB0aGVyZSBhcmUgc29tZVxuICogcm91dGluZXMgc29tZXdoZXJlIHRoYXQgbW9kaWZ5IHRoaW5ncyBsaWtlIGBKU0lJX0RFUFJFQ0FURURgIGdsb2JhbGx5LlxuICovXG5mdW5jdGlvbiBkZXRlY3RTeW50aHZhckNvbmZsaWN0czxBIGV4dGVuZHMgb2JqZWN0PihvYmo6IEEpIHtcbiAgcmV0dXJuIG5ldyBQcm94eShvYmosIHtcbiAgICBnZXQodGFyZ2V0LCBwcm9wKSB7XG4gICAgICByZXR1cm4gKHRhcmdldCBhcyBhbnkpW3Byb3BdO1xuICAgIH0sXG4gICAgc2V0KHRhcmdldCwgcHJvcCwgdmFsdWUpIHtcbiAgICAgIGlmIChbJ0NES19DT05URVhUJywgJ0NES19PVVRESVInXS5pbmNsdWRlcyhTdHJpbmcocHJvcCkpKSB7XG4gICAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoJ3Byb2Nlc3MuZW52IGlzIHRlbXBvcmFyaWx5IGltbXV0YWJsZS4gU2V0IFxcJ2Nsb2JiZXJFbnY6IGZhbHNlXFwnIGlmIHlvdSB3YW50IHRvIHJ1biBtdWx0aXBsZSBcXCdmcm9tQXNzZW1ibHlCdWlsZGVyXFwnIHN5bnRocyBjb25jdXJyZW50bHknKTtcbiAgICAgIH1cbiAgICAgICh0YXJnZXQgYXMgYW55KVtwcm9wXSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0dXJuIGFsbCBrZXlzIG9mIG1pc3NpbmcgY29udGV4dCBpdGVtc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWlzc2luZ0NvbnRleHRLZXlzKG1pc3Npbmc/OiBNaXNzaW5nQ29udGV4dFtdKTogU2V0PHN0cmluZz4ge1xuICByZXR1cm4gbmV3IFNldCgobWlzc2luZyB8fCBbXSkubWFwKChtKSA9PiBtLmtleSkpO1xufVxuIl19
|
|
@@ -85,8 +85,12 @@ export declare class ExecutionEnvironment implements AsyncDisposable {
|
|
|
85
85
|
* This *would* have returned an `IAsyncDisposable` but that requires messing
|
|
86
86
|
* with TypeScript type definitions to use it in aws-cdk, so returning an
|
|
87
87
|
* explicit cleanup function is easier.
|
|
88
|
+
*
|
|
89
|
+
* `completeness` indicates whether this `env` block represents the full `env`
|
|
90
|
+
* that will be passed to a subprocess, or whether it will be mixed into
|
|
91
|
+
* `process.env` later.
|
|
88
92
|
*/
|
|
89
|
-
export declare function writeContextToEnv(env: Env, context: Context): () => Promise<void>;
|
|
93
|
+
export declare function writeContextToEnv(env: Env, context: Context, completeness: 'add-process-env-later' | 'env-is-complete'): () => Promise<void>;
|
|
90
94
|
/**
|
|
91
95
|
* Safely create an assembly from a cloud assembly directory
|
|
92
96
|
*/
|
|
@@ -164,14 +164,19 @@ exports.ExecutionEnvironment = ExecutionEnvironment;
|
|
|
164
164
|
* This *would* have returned an `IAsyncDisposable` but that requires messing
|
|
165
165
|
* with TypeScript type definitions to use it in aws-cdk, so returning an
|
|
166
166
|
* explicit cleanup function is easier.
|
|
167
|
+
*
|
|
168
|
+
* `completeness` indicates whether this `env` block represents the full `env`
|
|
169
|
+
* that will be passed to a subprocess, or whether it will be mixed into
|
|
170
|
+
* `process.env` later.
|
|
167
171
|
*/
|
|
168
|
-
function writeContextToEnv(env, context) {
|
|
172
|
+
function writeContextToEnv(env, context, completeness) {
|
|
169
173
|
let contextOverflowLocation = null;
|
|
170
174
|
// On Windows, all envvars together must fit in a 32k block (<https://devblogs.microsoft.com/oldnewthing/20100203-00>)
|
|
171
175
|
// On Linux, a single entry may not exceed 131k; but we're treating it as all together because that's safe
|
|
172
176
|
// and it's a single execution path for both platforms.
|
|
173
177
|
const envVariableSizeLimit = os.platform() === 'win32' ? 32760 : 131072;
|
|
174
|
-
const
|
|
178
|
+
const completeEnv = { ...completeness === 'add-process-env-later' ? process.env : {}, ...env };
|
|
179
|
+
const [smallContext, overflow] = (0, util_1.splitBySize)(context, (0, environment_1.spaceAvailableForContext)(completeEnv, envVariableSizeLimit));
|
|
175
180
|
// Store the safe part in the environment variable
|
|
176
181
|
env[cxapi.CONTEXT_ENV] = JSON.stringify(smallContext);
|
|
177
182
|
// If there was any overflow, write it to a temporary file
|
|
@@ -251,4 +256,4 @@ function settingsFromSynthOptions(synthOpts = {}) {
|
|
|
251
256
|
function parametersFromSynthOptions(synthOptions) {
|
|
252
257
|
return (0, environment_1.synthParametersFromSettings)(settingsFromSynthOptions(synthOptions ?? {}));
|
|
253
258
|
}
|
|
254
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcGFyZS1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwcmVwYXJlLXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFzTEEsOENBeUJDO0FBMkJELHNEQW9CQztBQUVELDREQVNDO0FBUUQsZ0VBRUM7QUFuUkQsNkNBQTJDO0FBQzNDLDhCQUE4QjtBQUM5QixrQ0FBa0M7QUFDbEMseUNBQW1DO0FBQ25DLDJEQUEyRDtBQUMzRCx5Q0FBeUM7QUFDekMsK0JBQStCO0FBQy9CLG1DQUE2QjtBQUU3QixrRUFBOEQ7QUFDOUQsd0NBQTJEO0FBRzNELDhDQUFzQztBQUV0Qyx5Q0FBc0M7QUFDdEMsNkNBQTBDO0FBQzFDLHFDQUE0QztBQUU1QyxnREFBbUk7QUFHbkksTUFBYSxvQkFBb0I7SUFpQ2I7SUFDQTtJQWpDbEI7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUF5QixFQUFFLFFBQTZCLEVBQUU7UUFDbkYsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNmLEdBQUcsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzNFLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksZUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xELE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRWdCLFFBQVEsQ0FBVztJ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Q0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnLi4vLi4vLi4vcHJpdmF0ZS9kaXNwb3NlLXBvbHlmaWxsJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ25vZGU6b3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCAqIGFzIGN4c2NoZW1hIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHsgbHRlIH0gZnJvbSAnc2VtdmVyJztcbmltcG9ydCB0eXBlIHsgVG9vbGtpdFNlcnZpY2VzIH0gZnJvbSAnLi4vLi4vLi4vdG9vbGtpdC9wcml2YXRlJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uLy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5pbXBvcnQgeyBzcGxpdEJ5U2l6ZSwgdmVyc2lvbk51bWJlciB9IGZyb20gJy4uLy4uLy4uL3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBTZGtQcm92aWRlciB9IGZyb20gJy4uLy4uL2F3cy1hdXRoL3ByaXZhdGUnO1xuaW1wb3J0IHR5cGUgeyBJb0hlbHBlciB9IGZyb20gJy4uLy4uL2lvL3ByaXZhdGUnO1xuaW1wb3J0IHsgSU8gfSBmcm9tICcuLi8uLi9pby9wcml2YXRlJztcbmltcG9ydCB0eXBlIHsgSVJlYWRMb2NrLCBJV3JpdGVMb2NrIH0gZnJvbSAnLi4vLi4vcndsb2NrJztcbmltcG9ydCB7IFJXTG9jayB9IGZyb20gJy4uLy4uL3J3bG9jayc7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gJy4uLy4uL3NldHRpbmdzJztcbmltcG9ydCB7IGxvYWRUcmVlLCBzb21lIH0gZnJvbSAnLi4vLi4vdHJlZSc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHQsIEVudiB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IHByZXBhcmVEZWZhdWx0RW52aXJvbm1lbnQsIHNwYWNlQXZhaWxhYmxlRm9yQ29udGV4dCwgZ3Vlc3NFeGVjdXRhYmxlLCBzeW50aFBhcmFtZXRlcnNGcm9tU2V0dGluZ3MgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgdHlwZSB7IEFwcFN5bnRoT3B0aW9ucywgTG9hZEFzc2VtYmx5T3B0aW9ucyB9IGZyb20gJy4uL3NvdXJjZS1idWlsZGVyJztcblxuZXhwb3J0IGNsYXNzIEV4ZWN1dGlvbkVudmlyb25tZW50IGltcGxlbWVudHMgQXN5bmNEaXNwb3NhYmxlIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBFeGVjdXRpb25FbnZpcm9ubWVudFxuICAgKlxuICAgKiBBbiBFeGVjdXRpb25FbnZpcm9ubWVudCBob2xkcyBhIHdyaXRlciBsb2NrIG9uIHRoZSBnaXZlbiBkaXJlY3Rvcnkgd2hpY2ggd2lsbFxuICAgKiBiZSBjbGVhbmVkIHVwIHdoZW4gdGhlIG9iamVjdCBpcyBkaXNwb3NlZC5cbiAgICpcbiAgICogQSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHdpbGwgYmUgY3JlYXRlZCBpZiBub25lIGlzIHN1cHBsaWVkLCB3aGljaCB3aWxsIGJlIGNsZWFuZWRcbiAgICogdXAgd2hlbiB0aGlzIG9iamVjdCBpcyBkaXNwb3NlZC5cbiAgICpcbiAgICogSWYgYG1hcmtTdWNjZXNzZnVsKClgIGlzIGNhbGxlZCwgdGhlIHdyaXRlciBsb2NrIGlzIGNvbnZlcnRlZCB0byBhIHJlYWRlciBsb2NrXG4gICAqIGFuZCB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgd2lsbCBub3QgYmUgY2xlYW5lZCB1cCBhbnltb3JlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhc3luYyBjcmVhdGUoc2VydmljZXM6IFRvb2xraXRTZXJ2aWNlcywgcHJvcHM6IHsgb3V0ZGlyPzogc3RyaW5nIH0gPSB7fSkge1xuICAgIGxldCB0ZW1wRGlyID0gZmFsc2U7XG4gICAgbGV0IGRpciA9IHByb3BzLm91dGRpcjtcbiAgICBpZiAoIWRpcikge1xuICAgICAgdGVtcERpciA9IHRydWU7XG4gICAgICBkaXIgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4oZnMucmVhbHBhdGhTeW5jKG9zLnRtcGRpcigpKSwgJ2Nkay5vdXQnKSk7XG4gICAgfVxuXG4gICAgY29uc3QgbG9jayA9IGF3YWl0IG5ldyBSV0xvY2soZGlyKS5hY3F1aXJlV3JpdGUoKTtcbiAgICByZXR1cm4gbmV3IEV4ZWN1dGlvbkVudmlyb25tZW50KHNlcnZpY2VzLCBkaXIsIHRlbXBEaXIsIGxvY2spO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpb0hlbHBlcjogSW9IZWxwZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlYnVnRm46IChtc2c6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcHJpdmF0ZSBsb2NrOiBJV3JpdGVMb2NrIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHNob3VsZENsZWFuOiBib29sZWFuO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgc2VydmljZXM6IFRvb2xraXRTZXJ2aWNlcyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgb3V0ZGlyOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IG91dERpcklzVGVtcG9yYXJ5OiBib29sZWFuLFxuICAgIGxvY2s6IElXcml0ZUxvY2ssXG4gICkge1xuICAgIHRoaXMuaW9IZWxwZXIgPSBzZXJ2aWNlcy5pb0hlbHBlcjtcbiAgICB0aGlzLnNka1Byb3ZpZGVyID0gc2VydmljZXMuc2RrUHJvdmlkZXI7XG4gICAgdGhpcy5kZWJ1Z0ZuID0gKG1zZzogc3RyaW5nKSA9PiB0aGlzLmlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKG1zZyk7XG4gICAgdGhpcy5sb2NrID0gbG9jaztcbiAgICB0aGlzLnNob3VsZENsZWFuID0gb3V0RGlySXNUZW1wb3Jhcnk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgW1N5bWJvbC5hc3luY0Rpc3Bvc2VdKCkge1xuICAgIGF3YWl0IHRoaXMubG9jaz8ucmVsZWFzZSgpO1xuXG4gICAgaWYgKHRoaXMuc2hvdWxkQ2xlYW4pIHtcbiAgICAgIGF3YWl0IGZzLnJtKHRoaXMub3V0ZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1hcmsgdGhlIGV4ZWN1dGlvbiBhcyBzdWNjZXNzZnVsLCB3aGljaCBzdG9wcyB0aGUgd3JpdGVyIGxvY2sgZnJvbSBiZWluZyByZWxlYXNlZCB1cG9uIGRpc3Bvc2FsXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbWFya1N1Y2Nlc3NmdWwoKSB7XG4gICAgaWYgKCF0aGlzLmxvY2spIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBtYXJrIHN1Y2Nlc3NmdWwgbW9yZSB0aGFuIG9uY2UnKTtcbiAgICB9XG4gICAgY29uc3QgcmVhZExvY2sgPSBhd2FpdCB0aGlzLmxvY2suY29udmVydFRvUmVhZGVyTG9jaygpO1xuICAgIHRoaXMubG9jayA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNob3VsZENsZWFuID0gZmFsc2U7XG4gICAgcmV0dXJuIHsgcmVhZExvY2sgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCZWdpbiBhbiBleGVjdXRpb24gaW4gdGhpcyBlbnZpcm9ubWVudFxuICAgKlxuICAgKiBUaGlzIHdpbGwgYWNxdWlyZSBhIHdyaXRlIGxvY2sgb24gdGhlIGdpdmVuIGVudmlyb25tZW50LiBUaGUgd3JpdGUgbG9ja1xuICAgKiB3aWxsIGJlIHJlbGVhc2VkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgcmV0dXJuIG9iamVjdCBpcyBkaXNwb3NlZCwgdW5sZXNzIGl0XG4gICAqIGlzIGNvbnZlcnRlZCB0byBhIHJlYWRlciBsb2NrLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGJlZ2luRXhlY3V0aW9uKCk6IFByb21pc2U8eyB3cml0ZVRvUmVhZExvY2soKTogUHJvbWlzZTxJUmVhZExvY2s+IH0gJiBBc3luY0Rpc3Bvc2FibGU+IHtcbiAgICBjb25zdCBsb2NrID0gYXdhaXQgbmV3IFJXTG9jayh0aGlzLm91dGRpcikuYWNxdWlyZVdyaXRlKCk7XG5cbiAgICBsZXQgY29udmVydGVkID0gZmFsc2U7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFzeW5jIHdyaXRlVG9SZWFkTG9jaygpIHtcbiAgICAgICAgY29udmVydGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGxvY2suY29udmVydFRvUmVhZGVyTG9jaygpO1xuICAgICAgfSxcbiAgICAgIFtTeW1ib2wuYXN5bmNEaXNwb3NlXTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAvLyBSZWxlYXNlIGlmIG5vdCBjb252ZXJ0ZWRcbiAgICAgICAgaWYgKCFjb252ZXJ0ZWQpIHtcbiAgICAgICAgICBhd2FpdCBsb2NrLnJlbGVhc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEd1ZXNzIHRoZSBleGVjdXRhYmxlIGZyb20gdGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudFxuICAgKlxuICAgKiBPbmx5IGRvIHRoaXMgaWYgdGhlIGZpbGUgaXMgTk9UIG1hcmtlZCBhcyBleGVjdXRhYmxlLiBJZiBpdCBpcyxcbiAgICogd2UnbGwgZGVmZXIgdG8gdGhlIHNoZWJhbmcgaW5zaWRlIHRoZSBmaWxlIGl0c2VsZi5cbiAgICpcbiAgICogSWYgd2UncmUgb24gV2luZG93cywgd2UgQUxXQVlTIHRha2UgdGhlIGhhbmRsZXIsIHNpbmNlIGl0J3MgaGFyZCB0b1xuICAgKiB2ZXJpZnkgaWYgcmVnaXN0cnkgYXNzb2NpYXRpb25zIGhhdmUgb3IgaGF2ZSBub3QgYmVlbiBzZXQgdXAgZm9yIHRoaXNcbiAgICogZmlsZSB0eXBlLCBzbyB3ZSdsbCBhc3N1bWUgdGhlIHdvcnN0IGFuZCB0YWtlIGNvbnRyb2wuXG4gICAqL1xuICBwdWJsaWMgZ3Vlc3NFeGVjdXRhYmxlKGFwcDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGd1ZXNzRXhlY3V0YWJsZShhcHAsIHRoaXMuZGVidWdGbik7XG4gIH1cblxuICAvKipcbiAgICogSWYgd2UgZG9uJ3QgaGF2ZSByZWdpb24vYWNjb3VudCBkZWZpbmVkIGluIGNvbnRleHQsIHdlIGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBTREsgYmVoYXZpb3JcbiAgICogd2hlcmUgcmVnaW9uIGlzIHJldHJpZXZlZCBmcm9tIH4vLmF3cy9jb25maWcgYW5kIGFjY291bnQgaXMgYmFzZWQgb24gZGVmYXVsdCBjcmVkZW50aWFscyBwcm92aWRlclxuICAgKiBjaGFpbiBhbmQgdGhlbiBTVFMgaXMgcXVlcmllZC5cbiAgICpcbiAgICogVGhpcyBpcyBkb25lIG9wcG9ydHVuaXN0aWNhbGx5OiBmb3IgZXhhbXBsZSwgaWYgd2UgY2FuJ3QgYWNjZXNzIFNUUyBmb3Igc29tZSByZWFzb24gb3IgdGhlIHJlZ2lvblxuICAgKiBpcyBub3QgY29uZmlndXJlZCwgdGhlIGNvbnRleHQgdmFsdWUgd2lsbCBiZSAnbnVsbCcgYW5kIHRoZXJlIGNvdWxkIGZhaWx1cmVzIGRvd24gdGhlIGxpbmUuIEluXG4gICAqIHNvbWUgY2FzZXMsIHN5bnRoZXNpcyBkb2VzIG5vdCByZXF1aXJlIHJlZ2lvbi9hY2NvdW50IGluZm9ybWF0aW9uIGF0IGFsbCwgc28gdGhhdCBtaWdodCBiZSBwZXJmZWN0bHlcbiAgICogZmluZSBpbiBjZXJ0YWluIHNjZW5hcmlvcy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBkZWZhdWx0RW52VmFycygpOiBQcm9taXNlPEVudj4ge1xuICAgIGNvbnN0IGRlYnVnRm4gPSAobXNnOiBzdHJpbmcpID0+IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19BU1NFTUJMWV9JMDAxMC5tc2cobXNnKSk7XG4gICAgY29uc3QgZW52ID0gYXdhaXQgcHJlcGFyZURlZmF1bHRFbnZpcm9ubWVudCh0aGlzLnNka1Byb3ZpZGVyLCBkZWJ1Z0ZuKTtcblxuICAgIGVudltjeGFwaS5PVVRESVJfRU5WXSA9IHRoaXMub3V0ZGlyO1xuICAgIGF3YWl0IGRlYnVnRm4oZm9ybWF0KCdvdXRkaXI6JywgdGhpcy5vdXRkaXIpKTtcblxuICAgIC8vIENMSSB2ZXJzaW9uIGluZm9ybWF0aW9uXG4gICAgZW52W2N4YXBpLkNMSV9BU01fVkVSU0lPTl9FTlZdID0gY3hzY2hlbWEuTWFuaWZlc3QudmVyc2lvbigpO1xuICAgIGVudltjeGFwaS5DTElfVkVSU0lPTl9FTlZdID0gdmVyc2lvbk51bWJlcigpO1xuXG4gICAgYXdhaXQgZGVidWdGbihmb3JtYXQoJ2VudjonLCBlbnYpKTtcbiAgICByZXR1cm4gZW52O1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biBjb2RlIGZyb20gYSBkaWZmZXJlbnQgd29ya2luZyBkaXJlY3RvcnlcbiAgICovXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VEaXI8VD4oYmxvY2s6ICgpID0+IFByb21pc2U8VD4sIHdvcmtpbmdEaXI/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBvcmlnaW5hbFdvcmtpbmdEaXIgPSBwcm9jZXNzLmN3ZCgpO1xuICAgIHRyeSB7XG4gICAgICBpZiAod29ya2luZ0Rpcikge1xuICAgICAgICBwcm9jZXNzLmNoZGlyKHdvcmtpbmdEaXIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXdhaXQgYmxvY2soKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHdvcmtpbmdEaXIpIHtcbiAgICAgICAgcHJvY2Vzcy5jaGRpcihvcmlnaW5hbFdvcmtpbmdEaXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIGdpdmVuIGNvbnRleHQgdG8gYSBzZXQgaWYgZW52aXJvbm1lbnQgdmFyaWFibGVzIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICpcbiAqIE5lZWRzIHRvIGtub3cgdGhlIHNpemUgb2YgdGhlIHJlc3Qgb2YgdGhlIGVudiBiZWNhdXNlIHRoYXQncyBuZWNlc3NhcnkgdG8gZG9cbiAqIGFuIG92ZXJmbG93IGNvbXB1dGF0aW9uIG9uIFdpbmRvd3MuIFRoaXMgZnVuY3Rpb24gd2lsbCBtdXRhdGUgdGhlIGdpdmVuXG4gKiBlbnZpcm9ubWVudCBpbi1wbGFjZS4gSXQgc2hvdWxkIGJlIGNhbGxlZCBhcyB0aGUgdmVyeSBsYXN0IG9wZXJhdGlvbiBvbiB0aGVcbiAqIGVudmlyb25tZW50LCBiZWNhdXNlIGFmdGVyd2FyZHMgaXMgbWlnaHQgYmUgYXQgdGhlIG1heGltdW0gc2l6ZS5cbiAqXG4gKiBUaGlzICp3b3VsZCogaGF2ZSByZXR1cm5lZCBhbiBgSUFzeW5jRGlzcG9zYWJsZWAgYnV0IHRoYXQgcmVxdWlyZXMgbWVzc2luZ1xuICogd2l0aCBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgdG8gdXNlIGl0IGluIGF3cy1jZGssIHNvIHJldHVybmluZyBhblxuICogZXhwbGljaXQgY2xlYW51cCBmdW5jdGlvbiBpcyBlYXNpZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUNvbnRleHRUb0VudihlbnY6IEVudiwgY29udGV4dDogQ29udGV4dCkge1xuICBsZXQgY29udGV4dE92ZXJmbG93TG9jYXRpb24gPSBudWxsO1xuXG4gIC8vIE9uIFdpbmRvd3MsIGFsbCBlbnZ2YXJzIHRvZ2V0aGVyIG11c3QgZml0IGluIGEgMzJrIGJsb2NrICg8aHR0cHM6Ly9kZXZibG9ncy5taWNyb3NvZnQuY29tL29sZG5ld3RoaW5nLzIwMTAwMjAzLTAwPilcbiAgLy8gT24gTGludXgsIGEgc2luZ2xlIGVudHJ5IG1heSBub3QgZXhjZWVkIDEzMWs7IGJ1dCB3ZSdyZSB0cmVhdGluZyBpdCBhcyBhbGwgdG9nZXRoZXIgYmVjYXVzZSB0aGF0J3Mgc2FmZVxuICAvLyBhbmQgaXQncyBhIHNpbmdsZSBleGVjdXRpb24gcGF0aCBmb3IgYm90aCBwbGF0Zm9ybXMuXG4gIGNvbnN0IGVudlZhcmlhYmxlU2l6ZUxpbWl0ID0gb3MucGxhdGZvcm0oKSA9PT0gJ3dpbjMyJyA/IDMyNzYwIDogMTMxMDcyO1xuICBjb25zdCBbc21hbGxDb250ZXh0LCBvdmVyZmxvd10gPSBzcGxpdEJ5U2l6ZShjb250ZXh0LCBzcGFjZUF2YWlsYWJsZUZvckNvbnRleHQoZW52LCBlbnZWYXJpYWJsZVNpemVMaW1pdCkpO1xuXG4gIC8vIFN0b3JlIHRoZSBzYWZlIHBhcnQgaW4gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlXG4gIGVudltjeGFwaS5DT05URVhUX0VOVl0gPSBKU09OLnN0cmluZ2lmeShzbWFsbENvbnRleHQpO1xuXG4gIC8vIElmIHRoZXJlIHdhcyBhbnkgb3ZlcmZsb3csIHdyaXRlIGl0IHRvIGEgdGVtcG9yYXJ5IGZpbGVcbiAgaWYgKE9iamVjdC5rZXlzKG92ZXJmbG93ID8/IHt9KS5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgY29udGV4dERpciA9IGZzLm1rZHRlbXBTeW5jKHBhdGguam9pbihvcy50bXBkaXIoKSwgJ2Nkay1jb250ZXh0JykpO1xuICAgIGNvbnRleHRPdmVyZmxvd0xvY2F0aW9uID0gcGF0aC5qb2luKGNvbnRleHREaXIsICdjb250ZXh0LW92ZXJmbG93Lmpzb24nKTtcbiAgICBmcy53cml0ZUpTT05TeW5jKGNvbnRleHRPdmVyZmxvd0xvY2F0aW9uLCBvdmVyZmxvdyk7XG4gICAgZW52W2N4YXBpLkNPTlRFWFRfT1ZFUkZMT1dfTE9DQVRJT05fRU5WXSA9IGNvbnRleHRPdmVyZmxvd0xvY2F0aW9uO1xuICB9XG5cbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBpZiAoY29udGV4dE92ZXJmbG93TG9jYXRpb24pIHtcbiAgICAgIGF3YWl0IGZzLnByb21pc2VzLnJtKHBhdGguZGlybmFtZShjb250ZXh0T3ZlcmZsb3dMb2NhdGlvbiksIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZ2l2ZW4gYXNzZW1ibHkgc3VwcG9ydHMgY29udGV4dCBvdmVyZmxvdywgd2FybiBvdGhlcndpc2UuXG4gKlxuICogQHBhcmFtIGFzc2VtYmx5IC0gdGhlIGFzc2VtYmx5IHRvIGNoZWNrXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNoZWNrQ29udGV4dE92ZXJmbG93U3VwcG9ydChhc3NlbWJseTogY3hhcGkuQ2xvdWRBc3NlbWJseSwgaW9IZWxwZXI6IElvSGVscGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHRyYWNlRm4gPSAobXNnOiBzdHJpbmcpID0+IGlvSGVscGVyLmRlZmF1bHRzLnRyYWNlKG1zZyk7XG4gIGNvbnN0IHRyZWUgPSBhd2FpdCBsb2FkVHJlZShhc3NlbWJseSwgdHJhY2VGbik7XG4gIGNvbnN0IGZyYW1ld29ya0RvZXNOb3RTdXBwb3J0Q29udGV4dE92ZXJmbG93ID0gc29tZSh0cmVlLCBub2RlID0+IHtcbiAgICBjb25zdCBmcW4gPSBub2RlLmNvbnN0cnVjdEluZm8/LmZxbjtcbiAgICBjb25zdCB2ZXJzaW9uID0gbm9kZS5jb25zdHJ1Y3RJbmZvPy52ZXJzaW9uO1xuICAgIHJldHVybiAoZnFuID09PSAnYXdzLWNkay1saWIuQXBwJyAmJiB2ZXJzaW9uICE9IG51bGwgJiYgbHRlKHZlcnNpb24sICcyLjM4LjAnKSkgLy8gdjJcbiAgICB8fCBmcW4gPT09ICdAYXdzLWNkay9jb3JlLkFwcCc7IC8vIHYxXG4gIH0pO1xuXG4gIC8vIFdlJ3JlIGRlYWxpbmcgd2l0aCBhbiBvbGQgdmVyc2lvbiBvZiB0aGUgZnJhbWV3b3JrIGhlcmUuIEl0IGlzIHVuYXdhcmUgb2YgdGhlIHRlbXBvcmFyeVxuICAvLyBmaWxlLCB3aGljaCBtZWFucyB0aGF0IGl0IHdpbGwgaWdub3JlIHRoZSBjb250ZXh0IG92ZXJmbG93LlxuICBpZiAoZnJhbWV3b3JrRG9lc05vdFN1cHBvcnRDb250ZXh0T3ZlcmZsb3cpIHtcbiAgICBhd2FpdCBpb0hlbHBlci5ub3RpZnkoSU8uQ0RLX0FTU0VNQkxZX1cwMDEwLm1zZygnUGFydCBvZiB0aGUgY29udGV4dCBjb3VsZCBub3QgYmUgc2VudCB0byB0aGUgYXBwbGljYXRpb24uIFBsZWFzZSB1cGRhdGUgdGhlIEFXUyBDREsgbGlicmFyeSB0byB0aGUgbGF0ZXN0IHZlcnNpb24uJykpO1xuICB9XG59XG5cbi8qKlxuICogU2FmZWx5IGNyZWF0ZSBhbiBhc3NlbWJseSBmcm9tIGEgY2xvdWQgYXNzZW1ibHkgZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3NlbWJseUZyb21EaXJlY3RvcnkoYXNzZW1ibHlEaXI6IHN0cmluZywgaW9IZWxwZXI6IElvSGVscGVyLCBsb2FkT3B0aW9uczogTG9hZEFzc2VtYmx5T3B0aW9ucyA9IHt9KSB7XG4gIHRyeSB7XG4gICAgY29uc3QgYXNzZW1ibHkgPSBuZXcgY3hhcGkuQ2xvdWRBc3NlbWJseShhc3NlbWJseURpciwge1xuICAgICAgc2tpcFZlcnNpb25DaGVjazogIShsb2FkT3B0aW9ucy5jaGVja1ZlcnNpb24gPz8gdHJ1ZSksXG4gICAgICBza2lwRW51bUNoZWNrOiAhKGxvYWRPcHRpb25zLmNoZWNrRW51bXMgPz8gdHJ1ZSksXG4gICAgICAvLyBXZSBzb3J0IGFzIHdlIGRlcGxveVxuICAgICAgdG9wb1NvcnQ6IGZhbHNlLFxuICAgIH0pO1xuICAgIGF3YWl0IGNoZWNrQ29udGV4dE92ZXJmbG93U3VwcG9ydChhc3NlbWJseSwgaW9IZWxwZXIpO1xuICAgIHJldHVybiBhc3NlbWJseTtcbiAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICBpZiAoZXJyLm1lc3NhZ2UuaW5jbHVkZXMoY3hzY2hlbWEuVkVSU0lPTl9NSVNNQVRDSCkpIHtcbiAgICAgIC8vIHRoaXMgbWVhbnMgdGhlIENMSSB2ZXJzaW9uIGlzIHRvbyBvbGQuXG4gICAgICAvLyB3ZSBpbnN0cnVjdCB0aGUgdXNlciB0byB1cGdyYWRlLlxuICAgICAgY29uc3QgbWVzc2FnZSA9ICdUaGlzIEFXUyBDREsgVG9vbGtpdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBBV1MgQ0RLIGxpYnJhcnkgdXNlZCBieSB5b3VyIGFwcGxpY2F0aW9uLiBQbGVhc2UgdXBncmFkZSB0byB0aGUgbGF0ZXN0IHZlcnNpb24uJztcbiAgICAgIGF3YWl0IGlvSGVscGVyLm5vdGlmeShJTy5DREtfQVNTRU1CTFlfRTExMTEubXNnKG1lc3NhZ2UsIHsgZXJyb3I6IGVyciB9KSk7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGAke21lc3NhZ2V9XFxuKCR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIHRocm93IGVycjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0dGluZ3NGcm9tU3ludGhPcHRpb25zKHN5bnRoT3B0czogQXBwU3ludGhPcHRpb25zID0ge30pOiBTZXR0aW5ncyB7XG4gIHJldHVybiBuZXcgU2V0dGluZ3Moe1xuICAgIGRlYnVnOiBmYWxzZSxcbiAgICBwYXRoTWV0YWRhdGE6IHRydWUsXG4gICAgdmVyc2lvblJlcG9ydGluZzogdHJ1ZSxcbiAgICBhc3NldE1ldGFkYXRhOiB0cnVlLFxuICAgIGFzc2V0U3RhZ2luZzogdHJ1ZSxcbiAgICAuLi5zeW50aE9wdHMsXG4gIH0sIHRydWUpO1xufVxuXG4vKipcbiAqIFR1cm4gc3ludGhlc2lzIG9wdGlvbnMgaW50byBjb250ZXh0L2Vudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IHdpbGwgZ28gdG8gdGhlIENESyBhcHBcbiAqXG4gKiBUaGVzZSBhcmUgcGFyYW1ldGVycyB0aGF0IGNvbnRyb2wgdGhlIHN5bnRoZXNpcyBvcGVyYXRpb24sIGNvbmZpZ3VyYWJsZSBieSB0aGUgdXNlclxuICogZnJvbSB0aGUgb3V0c2lkZSBvZiB0aGUgYXBwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc0Zyb21TeW50aE9wdGlvbnMoc3ludGhPcHRpb25zPzogQXBwU3ludGhPcHRpb25zKSB7XG4gIHJldHVybiBzeW50aFBhcmFtZXRlcnNGcm9tU2V0dGluZ3Moc2V0dGluZ3NGcm9tU3ludGhPcHRpb25zKHN5bnRoT3B0aW9ucyA/PyB7fSkpO1xufVxuIl19
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcGFyZS1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwcmVwYXJlLXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUEwTEEsOENBMkJDO0FBMkJELHNEQW9CQztBQUVELDREQVNDO0FBUUQsZ0VBRUM7QUF6UkQsNkNBQTJDO0FBQzNDLDhCQUE4QjtBQUM5QixrQ0FBa0M7QUFDbEMseUNBQW1DO0FBQ25DLDJEQUEyRDtBQUMzRCx5Q0FBeUM7QUFDekMsK0JBQStCO0FBQy9CLG1DQUE2QjtBQUU3QixrRUFBOEQ7QUFDOUQsd0NBQTJEO0FBRzNELDhDQUFzQztBQUV0Qyx5Q0FBc0M7QUFDdEMsNkNBQTBDO0FBQzFDLHFDQUE0QztBQUU1QyxnREFBbUk7QUFHbkksTUFBYSxvQkFBb0I7SUFpQ2I7SUFDQTtJQWpDbEI7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUF5QixFQUFFLFFBQTZCLEVBQUU7UUFDbkYsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNmLEdBQUcsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzNFLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksZUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xELE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRWdCLFFBQVEsQ0FBVztJ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QUFDLENBQUM7QUFDWCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQiwwQkFBMEIsQ0FBQyxZQUE4QjtJQUN2RSxPQUFPLElBQUEseUNBQTJCLEVBQUMsd0JBQXdCLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnLi4vLi4vLi4vcHJpdmF0ZS9kaXNwb3NlLXBvbHlmaWxsJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ25vZGU6b3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCAqIGFzIGN4c2NoZW1hIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHsgbHRlIH0gZnJvbSAnc2VtdmVyJztcbmltcG9ydCB0eXBlIHsgVG9vbGtpdFNlcnZpY2VzIH0gZnJvbSAnLi4vLi4vLi4vdG9vbGtpdC9wcml2YXRlJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uLy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5pbXBvcnQgeyBzcGxpdEJ5U2l6ZSwgdmVyc2lvbk51bWJlciB9IGZyb20gJy4uLy4uLy4uL3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBTZGtQcm92aWRlciB9IGZyb20gJy4uLy4uL2F3cy1hdXRoL3ByaXZhdGUnO1xuaW1wb3J0IHR5cGUgeyBJb0hlbHBlciB9IGZyb20gJy4uLy4uL2lvL3ByaXZhdGUnO1xuaW1wb3J0IHsgSU8gfSBmcm9tICcuLi8uLi9pby9wcml2YXRlJztcbmltcG9ydCB0eXBlIHsgSVJlYWRMb2NrLCBJV3JpdGVMb2NrIH0gZnJvbSAnLi4vLi4vcndsb2NrJztcbmltcG9ydCB7IFJXTG9jayB9IGZyb20gJy4uLy4uL3J3bG9jayc7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gJy4uLy4uL3NldHRpbmdzJztcbmltcG9ydCB7IGxvYWRUcmVlLCBzb21lIH0gZnJvbSAnLi4vLi4vdHJlZSc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHQsIEVudiB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IHByZXBhcmVEZWZhdWx0RW52aXJvbm1lbnQsIHNwYWNlQXZhaWxhYmxlRm9yQ29udGV4dCwgZ3Vlc3NFeGVjdXRhYmxlLCBzeW50aFBhcmFtZXRlcnNGcm9tU2V0dGluZ3MgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgdHlwZSB7IEFwcFN5bnRoT3B0aW9ucywgTG9hZEFzc2VtYmx5T3B0aW9ucyB9IGZyb20gJy4uL3NvdXJjZS1idWlsZGVyJztcblxuZXhwb3J0IGNsYXNzIEV4ZWN1dGlvbkVudmlyb25tZW50IGltcGxlbWVudHMgQXN5bmNEaXNwb3NhYmxlIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBFeGVjdXRpb25FbnZpcm9ubWVudFxuICAgKlxuICAgKiBBbiBFeGVjdXRpb25FbnZpcm9ubWVudCBob2xkcyBhIHdyaXRlciBsb2NrIG9uIHRoZSBnaXZlbiBkaXJlY3Rvcnkgd2hpY2ggd2lsbFxuICAgKiBiZSBjbGVhbmVkIHVwIHdoZW4gdGhlIG9iamVjdCBpcyBkaXNwb3NlZC5cbiAgICpcbiAgICogQSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHdpbGwgYmUgY3JlYXRlZCBpZiBub25lIGlzIHN1cHBsaWVkLCB3aGljaCB3aWxsIGJlIGNsZWFuZWRcbiAgICogdXAgd2hlbiB0aGlzIG9iamVjdCBpcyBkaXNwb3NlZC5cbiAgICpcbiAgICogSWYgYG1hcmtTdWNjZXNzZnVsKClgIGlzIGNhbGxlZCwgdGhlIHdyaXRlciBsb2NrIGlzIGNvbnZlcnRlZCB0byBhIHJlYWRlciBsb2NrXG4gICAqIGFuZCB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgd2lsbCBub3QgYmUgY2xlYW5lZCB1cCBhbnltb3JlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhc3luYyBjcmVhdGUoc2VydmljZXM6IFRvb2xraXRTZXJ2aWNlcywgcHJvcHM6IHsgb3V0ZGlyPzogc3RyaW5nIH0gPSB7fSkge1xuICAgIGxldCB0ZW1wRGlyID0gZmFsc2U7XG4gICAgbGV0IGRpciA9IHByb3BzLm91dGRpcjtcbiAgICBpZiAoIWRpcikge1xuICAgICAgdGVtcERpciA9IHRydWU7XG4gICAgICBkaXIgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4oZnMucmVhbHBhdGhTeW5jKG9zLnRtcGRpcigpKSwgJ2Nkay5vdXQnKSk7XG4gICAgfVxuXG4gICAgY29uc3QgbG9jayA9IGF3YWl0IG5ldyBSV0xvY2soZGlyKS5hY3F1aXJlV3JpdGUoKTtcbiAgICByZXR1cm4gbmV3IEV4ZWN1dGlvbkVudmlyb25tZW50KHNlcnZpY2VzLCBkaXIsIHRlbXBEaXIsIGxvY2spO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpb0hlbHBlcjogSW9IZWxwZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlYnVnRm46IChtc2c6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcHJpdmF0ZSBsb2NrOiBJV3JpdGVMb2NrIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHNob3VsZENsZWFuOiBib29sZWFuO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgc2VydmljZXM6IFRvb2xraXRTZXJ2aWNlcyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgb3V0ZGlyOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IG91dERpcklzVGVtcG9yYXJ5OiBib29sZWFuLFxuICAgIGxvY2s6IElXcml0ZUxvY2ssXG4gICkge1xuICAgIHRoaXMuaW9IZWxwZXIgPSBzZXJ2aWNlcy5pb0hlbHBlcjtcbiAgICB0aGlzLnNka1Byb3ZpZGVyID0gc2VydmljZXMuc2RrUHJvdmlkZXI7XG4gICAgdGhpcy5kZWJ1Z0ZuID0gKG1zZzogc3RyaW5nKSA9PiB0aGlzLmlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKG1zZyk7XG4gICAgdGhpcy5sb2NrID0gbG9jaztcbiAgICB0aGlzLnNob3VsZENsZWFuID0gb3V0RGlySXNUZW1wb3Jhcnk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgW1N5bWJvbC5hc3luY0Rpc3Bvc2VdKCkge1xuICAgIGF3YWl0IHRoaXMubG9jaz8ucmVsZWFzZSgpO1xuXG4gICAgaWYgKHRoaXMuc2hvdWxkQ2xlYW4pIHtcbiAgICAgIGF3YWl0IGZzLnJtKHRoaXMub3V0ZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1hcmsgdGhlIGV4ZWN1dGlvbiBhcyBzdWNjZXNzZnVsLCB3aGljaCBzdG9wcyB0aGUgd3JpdGVyIGxvY2sgZnJvbSBiZWluZyByZWxlYXNlZCB1cG9uIGRpc3Bvc2FsXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbWFya1N1Y2Nlc3NmdWwoKSB7XG4gICAgaWYgKCF0aGlzLmxvY2spIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBtYXJrIHN1Y2Nlc3NmdWwgbW9yZSB0aGFuIG9uY2UnKTtcbiAgICB9XG4gICAgY29uc3QgcmVhZExvY2sgPSBhd2FpdCB0aGlzLmxvY2suY29udmVydFRvUmVhZGVyTG9jaygpO1xuICAgIHRoaXMubG9jayA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNob3VsZENsZWFuID0gZmFsc2U7XG4gICAgcmV0dXJuIHsgcmVhZExvY2sgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCZWdpbiBhbiBleGVjdXRpb24gaW4gdGhpcyBlbnZpcm9ubWVudFxuICAgKlxuICAgKiBUaGlzIHdpbGwgYWNxdWlyZSBhIHdyaXRlIGxvY2sgb24gdGhlIGdpdmVuIGVudmlyb25tZW50LiBUaGUgd3JpdGUgbG9ja1xuICAgKiB3aWxsIGJlIHJlbGVhc2VkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgcmV0dXJuIG9iamVjdCBpcyBkaXNwb3NlZCwgdW5sZXNzIGl0XG4gICAqIGlzIGNvbnZlcnRlZCB0byBhIHJlYWRlciBsb2NrLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGJlZ2luRXhlY3V0aW9uKCk6IFByb21pc2U8eyB3cml0ZVRvUmVhZExvY2soKTogUHJvbWlzZTxJUmVhZExvY2s+IH0gJiBBc3luY0Rpc3Bvc2FibGU+IHtcbiAgICBjb25zdCBsb2NrID0gYXdhaXQgbmV3IFJXTG9jayh0aGlzLm91dGRpcikuYWNxdWlyZVdyaXRlKCk7XG5cbiAgICBsZXQgY29udmVydGVkID0gZmFsc2U7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFzeW5jIHdyaXRlVG9SZWFkTG9jaygpIHtcbiAgICAgICAgY29udmVydGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGxvY2suY29udmVydFRvUmVhZGVyTG9jaygpO1xuICAgICAgfSxcbiAgICAgIFtTeW1ib2wuYXN5bmNEaXNwb3NlXTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAvLyBSZWxlYXNlIGlmIG5vdCBjb252ZXJ0ZWRcbiAgICAgICAgaWYgKCFjb252ZXJ0ZWQpIHtcbiAgICAgICAgICBhd2FpdCBsb2NrLnJlbGVhc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEd1ZXNzIHRoZSBleGVjdXRhYmxlIGZyb20gdGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudFxuICAgKlxuICAgKiBPbmx5IGRvIHRoaXMgaWYgdGhlIGZpbGUgaXMgTk9UIG1hcmtlZCBhcyBleGVjdXRhYmxlLiBJZiBpdCBpcyxcbiAgICogd2UnbGwgZGVmZXIgdG8gdGhlIHNoZWJhbmcgaW5zaWRlIHRoZSBmaWxlIGl0c2VsZi5cbiAgICpcbiAgICogSWYgd2UncmUgb24gV2luZG93cywgd2UgQUxXQVlTIHRha2UgdGhlIGhhbmRsZXIsIHNpbmNlIGl0J3MgaGFyZCB0b1xuICAgKiB2ZXJpZnkgaWYgcmVnaXN0cnkgYXNzb2NpYXRpb25zIGhhdmUgb3IgaGF2ZSBub3QgYmVlbiBzZXQgdXAgZm9yIHRoaXNcbiAgICogZmlsZSB0eXBlLCBzbyB3ZSdsbCBhc3N1bWUgdGhlIHdvcnN0IGFuZCB0YWtlIGNvbnRyb2wuXG4gICAqL1xuICBwdWJsaWMgZ3Vlc3NFeGVjdXRhYmxlKGFwcDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGd1ZXNzRXhlY3V0YWJsZShhcHAsIHRoaXMuZGVidWdGbik7XG4gIH1cblxuICAvKipcbiAgICogSWYgd2UgZG9uJ3QgaGF2ZSByZWdpb24vYWNjb3VudCBkZWZpbmVkIGluIGNvbnRleHQsIHdlIGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBTREsgYmVoYXZpb3JcbiAgICogd2hlcmUgcmVnaW9uIGlzIHJldHJpZXZlZCBmcm9tIH4vLmF3cy9jb25maWcgYW5kIGFjY291bnQgaXMgYmFzZWQgb24gZGVmYXVsdCBjcmVkZW50aWFscyBwcm92aWRlclxuICAgKiBjaGFpbiBhbmQgdGhlbiBTVFMgaXMgcXVlcmllZC5cbiAgICpcbiAgICogVGhpcyBpcyBkb25lIG9wcG9ydHVuaXN0aWNhbGx5OiBmb3IgZXhhbXBsZSwgaWYgd2UgY2FuJ3QgYWNjZXNzIFNUUyBmb3Igc29tZSByZWFzb24gb3IgdGhlIHJlZ2lvblxuICAgKiBpcyBub3QgY29uZmlndXJlZCwgdGhlIGNvbnRleHQgdmFsdWUgd2lsbCBiZSAnbnVsbCcgYW5kIHRoZXJlIGNvdWxkIGZhaWx1cmVzIGRvd24gdGhlIGxpbmUuIEluXG4gICAqIHNvbWUgY2FzZXMsIHN5bnRoZXNpcyBkb2VzIG5vdCByZXF1aXJlIHJlZ2lvbi9hY2NvdW50IGluZm9ybWF0aW9uIGF0IGFsbCwgc28gdGhhdCBtaWdodCBiZSBwZXJmZWN0bHlcbiAgICogZmluZSBpbiBjZXJ0YWluIHNjZW5hcmlvcy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBkZWZhdWx0RW52VmFycygpOiBQcm9taXNlPEVudj4ge1xuICAgIGNvbnN0IGRlYnVnRm4gPSAobXNnOiBzdHJpbmcpID0+IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19BU1NFTUJMWV9JMDAxMC5tc2cobXNnKSk7XG4gICAgY29uc3QgZW52ID0gYXdhaXQgcHJlcGFyZURlZmF1bHRFbnZpcm9ubWVudCh0aGlzLnNka1Byb3ZpZGVyLCBkZWJ1Z0ZuKTtcblxuICAgIGVudltjeGFwaS5PVVRESVJfRU5WXSA9IHRoaXMub3V0ZGlyO1xuICAgIGF3YWl0IGRlYnVnRm4oZm9ybWF0KCdvdXRkaXI6JywgdGhpcy5vdXRkaXIpKTtcblxuICAgIC8vIENMSSB2ZXJzaW9uIGluZm9ybWF0aW9uXG4gICAgZW52W2N4YXBpLkNMSV9BU01fVkVSU0lPTl9FTlZdID0gY3hzY2hlbWEuTWFuaWZlc3QudmVyc2lvbigpO1xuICAgIGVudltjeGFwaS5DTElfVkVSU0lPTl9FTlZdID0gdmVyc2lvbk51bWJlcigpO1xuXG4gICAgYXdhaXQgZGVidWdGbihmb3JtYXQoJ2VudjonLCBlbnYpKTtcbiAgICByZXR1cm4gZW52O1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biBjb2RlIGZyb20gYSBkaWZmZXJlbnQgd29ya2luZyBkaXJlY3RvcnlcbiAgICovXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VEaXI8VD4oYmxvY2s6ICgpID0+IFByb21pc2U8VD4sIHdvcmtpbmdEaXI/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBvcmlnaW5hbFdvcmtpbmdEaXIgPSBwcm9jZXNzLmN3ZCgpO1xuICAgIHRyeSB7XG4gICAgICBpZiAod29ya2luZ0Rpcikge1xuICAgICAgICBwcm9jZXNzLmNoZGlyKHdvcmtpbmdEaXIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXdhaXQgYmxvY2soKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHdvcmtpbmdEaXIpIHtcbiAgICAgICAgcHJvY2Vzcy5jaGRpcihvcmlnaW5hbFdvcmtpbmdEaXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFNlcmlhbGl6ZXMgdGhlIGdpdmVuIGNvbnRleHQgdG8gYSBzZXQgaWYgZW52aXJvbm1lbnQgdmFyaWFibGVzIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICpcbiAqIE5lZWRzIHRvIGtub3cgdGhlIHNpemUgb2YgdGhlIHJlc3Qgb2YgdGhlIGVudiBiZWNhdXNlIHRoYXQncyBuZWNlc3NhcnkgdG8gZG9cbiAqIGFuIG92ZXJmbG93IGNvbXB1dGF0aW9uIG9uIFdpbmRvd3MuIFRoaXMgZnVuY3Rpb24gd2lsbCBtdXRhdGUgdGhlIGdpdmVuXG4gKiBlbnZpcm9ubWVudCBpbi1wbGFjZS4gSXQgc2hvdWxkIGJlIGNhbGxlZCBhcyB0aGUgdmVyeSBsYXN0IG9wZXJhdGlvbiBvbiB0aGVcbiAqIGVudmlyb25tZW50LCBiZWNhdXNlIGFmdGVyd2FyZHMgaXMgbWlnaHQgYmUgYXQgdGhlIG1heGltdW0gc2l6ZS5cbiAqXG4gKiBUaGlzICp3b3VsZCogaGF2ZSByZXR1cm5lZCBhbiBgSUFzeW5jRGlzcG9zYWJsZWAgYnV0IHRoYXQgcmVxdWlyZXMgbWVzc2luZ1xuICogd2l0aCBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgdG8gdXNlIGl0IGluIGF3cy1jZGssIHNvIHJldHVybmluZyBhblxuICogZXhwbGljaXQgY2xlYW51cCBmdW5jdGlvbiBpcyBlYXNpZXIuXG4gKlxuICogYGNvbXBsZXRlbmVzc2AgaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBgZW52YCBibG9jayByZXByZXNlbnRzIHRoZSBmdWxsIGBlbnZgXG4gKiB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIGEgc3VicHJvY2Vzcywgb3Igd2hldGhlciBpdCB3aWxsIGJlIG1peGVkIGludG9cbiAqIGBwcm9jZXNzLmVudmAgbGF0ZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUNvbnRleHRUb0VudihlbnY6IEVudiwgY29udGV4dDogQ29udGV4dCwgY29tcGxldGVuZXNzOiAnYWRkLXByb2Nlc3MtZW52LWxhdGVyJyB8ICdlbnYtaXMtY29tcGxldGUnKSB7XG4gIGxldCBjb250ZXh0T3ZlcmZsb3dMb2NhdGlvbiA9IG51bGw7XG5cbiAgLy8gT24gV2luZG93cywgYWxsIGVudnZhcnMgdG9nZXRoZXIgbXVzdCBmaXQgaW4gYSAzMmsgYmxvY2sgKDxodHRwczovL2RldmJsb2dzLm1pY3Jvc29mdC5jb20vb2xkbmV3dGhpbmcvMjAxMDAyMDMtMDA+KVxuICAvLyBPbiBMaW51eCwgYSBzaW5nbGUgZW50cnkgbWF5IG5vdCBleGNlZWQgMTMxazsgYnV0IHdlJ3JlIHRyZWF0aW5nIGl0IGFzIGFsbCB0b2dldGhlciBiZWNhdXNlIHRoYXQncyBzYWZlXG4gIC8vIGFuZCBpdCdzIGEgc2luZ2xlIGV4ZWN1dGlvbiBwYXRoIGZvciBib3RoIHBsYXRmb3Jtcy5cbiAgY29uc3QgZW52VmFyaWFibGVTaXplTGltaXQgPSBvcy5wbGF0Zm9ybSgpID09PSAnd2luMzInID8gMzI3NjAgOiAxMzEwNzI7XG5cbiAgY29uc3QgY29tcGxldGVFbnYgPSB7IC4uLmNvbXBsZXRlbmVzcyA9PT0gJ2FkZC1wcm9jZXNzLWVudi1sYXRlcicgPyBwcm9jZXNzLmVudiA6IHt9LCAuLi5lbnYgfTtcbiAgY29uc3QgW3NtYWxsQ29udGV4dCwgb3ZlcmZsb3ddID0gc3BsaXRCeVNpemUoY29udGV4dCwgc3BhY2VBdmFpbGFibGVGb3JDb250ZXh0KGNvbXBsZXRlRW52LCBlbnZWYXJpYWJsZVNpemVMaW1pdCkpO1xuXG4gIC8vIFN0b3JlIHRoZSBzYWZlIHBhcnQgaW4gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlXG4gIGVudltjeGFwaS5DT05URVhUX0VOVl0gPSBKU09OLnN0cmluZ2lmeShzbWFsbENvbnRleHQpO1xuXG4gIC8vIElmIHRoZXJlIHdhcyBhbnkgb3ZlcmZsb3csIHdyaXRlIGl0IHRvIGEgdGVtcG9yYXJ5IGZpbGVcbiAgaWYgKE9iamVjdC5rZXlzKG92ZXJmbG93ID8/IHt9KS5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgY29udGV4dERpciA9IGZzLm1rZHRlbXBTeW5jKHBhdGguam9pbihvcy50bXBkaXIoKSwgJ2Nkay1jb250ZXh0JykpO1xuICAgIGNvbnRleHRPdmVyZmxvd0xvY2F0aW9uID0gcGF0aC5qb2luKGNvbnRleHREaXIsICdjb250ZXh0LW92ZXJmbG93Lmpzb24nKTtcbiAgICBmcy53cml0ZUpTT05TeW5jKGNvbnRleHRPdmVyZmxvd0xvY2F0aW9uLCBvdmVyZmxvdyk7XG4gICAgZW52W2N4YXBpLkNPTlRFWFRfT1ZFUkZMT1dfTE9DQVRJT05fRU5WXSA9IGNvbnRleHRPdmVyZmxvd0xvY2F0aW9uO1xuICB9XG5cbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBpZiAoY29udGV4dE92ZXJmbG93TG9jYXRpb24pIHtcbiAgICAgIGF3YWl0IGZzLnByb21pc2VzLnJtKHBhdGguZGlybmFtZShjb250ZXh0T3ZlcmZsb3dMb2NhdGlvbiksIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgZ2l2ZW4gYXNzZW1ibHkgc3VwcG9ydHMgY29udGV4dCBvdmVyZmxvdywgd2FybiBvdGhlcndpc2UuXG4gKlxuICogQHBhcmFtIGFzc2VtYmx5IC0gdGhlIGFzc2VtYmx5IHRvIGNoZWNrXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNoZWNrQ29udGV4dE92ZXJmbG93U3VwcG9ydChhc3NlbWJseTogY3hhcGkuQ2xvdWRBc3NlbWJseSwgaW9IZWxwZXI6IElvSGVscGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHRyYWNlRm4gPSAobXNnOiBzdHJpbmcpID0+IGlvSGVscGVyLmRlZmF1bHRzLnRyYWNlKG1zZyk7XG4gIGNvbnN0IHRyZWUgPSBhd2FpdCBsb2FkVHJlZShhc3NlbWJseSwgdHJhY2VGbik7XG4gIGNvbnN0IGZyYW1ld29ya0RvZXNOb3RTdXBwb3J0Q29udGV4dE92ZXJmbG93ID0gc29tZSh0cmVlLCBub2RlID0+IHtcbiAgICBjb25zdCBmcW4gPSBub2RlLmNvbnN0cnVjdEluZm8/LmZxbjtcbiAgICBjb25zdCB2ZXJzaW9uID0gbm9kZS5jb25zdHJ1Y3RJbmZvPy52ZXJzaW9uO1xuICAgIHJldHVybiAoZnFuID09PSAnYXdzLWNkay1saWIuQXBwJyAmJiB2ZXJzaW9uICE9IG51bGwgJiYgbHRlKHZlcnNpb24sICcyLjM4LjAnKSkgLy8gdjJcbiAgICB8fCBmcW4gPT09ICdAYXdzLWNkay9jb3JlLkFwcCc7IC8vIHYxXG4gIH0pO1xuXG4gIC8vIFdlJ3JlIGRlYWxpbmcgd2l0aCBhbiBvbGQgdmVyc2lvbiBvZiB0aGUgZnJhbWV3b3JrIGhlcmUuIEl0IGlzIHVuYXdhcmUgb2YgdGhlIHRlbXBvcmFyeVxuICAvLyBmaWxlLCB3aGljaCBtZWFucyB0aGF0IGl0IHdpbGwgaWdub3JlIHRoZSBjb250ZXh0IG92ZXJmbG93LlxuICBpZiAoZnJhbWV3b3JrRG9lc05vdFN1cHBvcnRDb250ZXh0T3ZlcmZsb3cpIHtcbiAgICBhd2FpdCBpb0hlbHBlci5ub3RpZnkoSU8uQ0RLX0FTU0VNQkxZX1cwMDEwLm1zZygnUGFydCBvZiB0aGUgY29udGV4dCBjb3VsZCBub3QgYmUgc2VudCB0byB0aGUgYXBwbGljYXRpb24uIFBsZWFzZSB1cGRhdGUgdGhlIEFXUyBDREsgbGlicmFyeSB0byB0aGUgbGF0ZXN0IHZlcnNpb24uJykpO1xuICB9XG59XG5cbi8qKlxuICogU2FmZWx5IGNyZWF0ZSBhbiBhc3NlbWJseSBmcm9tIGEgY2xvdWQgYXNzZW1ibHkgZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3NlbWJseUZyb21EaXJlY3RvcnkoYXNzZW1ibHlEaXI6IHN0cmluZywgaW9IZWxwZXI6IElvSGVscGVyLCBsb2FkT3B0aW9uczogTG9hZEFzc2VtYmx5T3B0aW9ucyA9IHt9KSB7XG4gIHRyeSB7XG4gICAgY29uc3QgYXNzZW1ibHkgPSBuZXcgY3hhcGkuQ2xvdWRBc3NlbWJseShhc3NlbWJseURpciwge1xuICAgICAgc2tpcFZlcnNpb25DaGVjazogIShsb2FkT3B0aW9ucy5jaGVja1ZlcnNpb24gPz8gdHJ1ZSksXG4gICAgICBza2lwRW51bUNoZWNrOiAhKGxvYWRPcHRpb25zLmNoZWNrRW51bXMgPz8gdHJ1ZSksXG4gICAgICAvLyBXZSBzb3J0IGFzIHdlIGRlcGxveVxuICAgICAgdG9wb1NvcnQ6IGZhbHNlLFxuICAgIH0pO1xuICAgIGF3YWl0IGNoZWNrQ29udGV4dE92ZXJmbG93U3VwcG9ydChhc3NlbWJseSwgaW9IZWxwZXIpO1xuICAgIHJldHVybiBhc3NlbWJseTtcbiAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICBpZiAoZXJyLm1lc3NhZ2UuaW5jbHVkZXMoY3hzY2hlbWEuVkVSU0lPTl9NSVNNQVRDSCkpIHtcbiAgICAgIC8vIHRoaXMgbWVhbnMgdGhlIENMSSB2ZXJzaW9uIGlzIHRvbyBvbGQuXG4gICAgICAvLyB3ZSBpbnN0cnVjdCB0aGUgdXNlciB0byB1cGdyYWRlLlxuICAgICAgY29uc3QgbWVzc2FnZSA9ICdUaGlzIEFXUyBDREsgVG9vbGtpdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBBV1MgQ0RLIGxpYnJhcnkgdXNlZCBieSB5b3VyIGFwcGxpY2F0aW9uLiBQbGVhc2UgdXBncmFkZSB0byB0aGUgbGF0ZXN0IHZlcnNpb24uJztcbiAgICAgIGF3YWl0IGlvSGVscGVyLm5vdGlmeShJTy5DREtfQVNTRU1CTFlfRTExMTEubXNnKG1lc3NhZ2UsIHsgZXJyb3I6IGVyciB9KSk7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGAke21lc3NhZ2V9XFxuKCR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIHRocm93IGVycjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0dGluZ3NGcm9tU3ludGhPcHRpb25zKHN5bnRoT3B0czogQXBwU3ludGhPcHRpb25zID0ge30pOiBTZXR0aW5ncyB7XG4gIHJldHVybiBuZXcgU2V0dGluZ3Moe1xuICAgIGRlYnVnOiBmYWxzZSxcbiAgICBwYXRoTWV0YWRhdGE6IHRydWUsXG4gICAgdmVyc2lvblJlcG9ydGluZzogdHJ1ZSxcbiAgICBhc3NldE1ldGFkYXRhOiB0cnVlLFxuICAgIGFzc2V0U3RhZ2luZzogdHJ1ZSxcbiAgICAuLi5zeW50aE9wdHMsXG4gIH0sIHRydWUpO1xufVxuXG4vKipcbiAqIFR1cm4gc3ludGhlc2lzIG9wdGlvbnMgaW50byBjb250ZXh0L2Vudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IHdpbGwgZ28gdG8gdGhlIENESyBhcHBcbiAqXG4gKiBUaGVzZSBhcmUgcGFyYW1ldGVycyB0aGF0IGNvbnRyb2wgdGhlIHN5bnRoZXNpcyBvcGVyYXRpb24sIGNvbmZpZ3VyYWJsZSBieSB0aGUgdXNlclxuICogZnJvbSB0aGUgb3V0c2lkZSBvZiB0aGUgYXBwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc0Zyb21TeW50aE9wdGlvbnMoc3ludGhPcHRpb25zPzogQXBwU3ludGhPcHRpb25zKSB7XG4gIHJldHVybiBzeW50aFBhcmFtZXRlcnNGcm9tU2V0dGluZ3Moc2V0dGluZ3NGcm9tU3ludGhPcHRpb25zKHN5bnRoT3B0aW9ucyA/PyB7fSkpO1xufVxuIl19
|
|
@@ -43,6 +43,13 @@ export interface AssemblyDirectoryProps {
|
|
|
43
43
|
* Options to configure loading of the assembly after it has been synthesized
|
|
44
44
|
*/
|
|
45
45
|
readonly loadAssemblyOptions?: LoadAssemblyOptions;
|
|
46
|
+
/**
|
|
47
|
+
* Whether or not to fail if the synthesized assembly contains
|
|
48
|
+
* missing context
|
|
49
|
+
*
|
|
50
|
+
* @default true
|
|
51
|
+
*/
|
|
52
|
+
readonly failOnMissingContext?: boolean;
|
|
46
53
|
}
|
|
47
54
|
/**
|
|
48
55
|
* Configuration for creating a CLI from an AWS CDK App directory
|
|
@@ -59,6 +59,7 @@ const cxapi = require("@aws-cdk/cx-api");
|
|
|
59
59
|
const fs = require("fs-extra");
|
|
60
60
|
const context_store_1 = require("./context-store");
|
|
61
61
|
const rwlock_1 = require("../rwlock");
|
|
62
|
+
const cached_source_1 = require("./cached-source");
|
|
62
63
|
const context_aware_source_1 = require("./private/context-aware-source");
|
|
63
64
|
const exec_1 = require("./private/exec");
|
|
64
65
|
const prepare_source_1 = require("./private/prepare-source");
|
|
@@ -119,7 +120,7 @@ class CloudAssemblySourceBuilder {
|
|
|
119
120
|
// Environment variables derived from settings
|
|
120
121
|
...synthParams.env,
|
|
121
122
|
});
|
|
122
|
-
const cleanupContextTemp = (0, prepare_source_1.writeContextToEnv)(env, fullContext);
|
|
123
|
+
const cleanupContextTemp = (0, prepare_source_1.writeContextToEnv)(env, fullContext, 'env-is-complete');
|
|
123
124
|
const _cleanupEnv = __addDisposableResource(env_1, (props.clobberEnv ?? true) ? (0, helpers_1.temporarilyWriteEnv)(env) : undefined, false);
|
|
124
125
|
let assembly;
|
|
125
126
|
try {
|
|
@@ -172,26 +173,30 @@ class CloudAssemblySourceBuilder {
|
|
|
172
173
|
*/
|
|
173
174
|
async fromAssemblyDirectory(directory, props = {}) {
|
|
174
175
|
const services = await this.sourceBuilderServices();
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
contextStore: new context_store_1.MemoryContext(), // @todo We shouldn't be using a `ContextAwareCloudAssemblySource` at all.
|
|
178
|
-
lookups: false,
|
|
179
|
-
};
|
|
180
|
-
return new context_aware_source_1.ContextAwareCloudAssemblySource({
|
|
181
|
-
produce: async () => {
|
|
182
|
-
// @todo build
|
|
176
|
+
return {
|
|
177
|
+
async produce() {
|
|
183
178
|
await services.ioHelper.notify(private_1.IO.CDK_ASSEMBLY_I0150.msg('--app points to a cloud assembly, so we bypass synth'));
|
|
184
179
|
const readLock = await new rwlock_1.RWLock(directory).acquireRead();
|
|
185
180
|
try {
|
|
186
181
|
const asm = await (0, prepare_source_1.assemblyFromDirectory)(directory, services.ioHelper, props.loadAssemblyOptions);
|
|
187
|
-
|
|
182
|
+
const assembly = new readable_assembly_1.ReadableCloudAssembly(asm, readLock, { deleteOnDispose: false });
|
|
183
|
+
if (assembly.cloudAssembly.manifest.missing && assembly.cloudAssembly.manifest.missing.length > 0) {
|
|
184
|
+
if (props.failOnMissingContext ?? true) {
|
|
185
|
+
const missingKeysSet = (0, helpers_1.missingContextKeys)(assembly.cloudAssembly.manifest.missing);
|
|
186
|
+
const missingKeys = Array.from(missingKeysSet);
|
|
187
|
+
throw toolkit_error_1.AssemblyError.withCause('Assembly contains missing context. ' +
|
|
188
|
+
"Make sure all necessary context is already in 'cdk.context.json' by running 'cdk synth' on a machine with sufficient AWS credentials and committing the result. " +
|
|
189
|
+
`Missing context keys: '${missingKeys.join(', ')}'`, 'Error producing assembly');
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return new cached_source_1.CachedCloudAssembly(assembly);
|
|
188
193
|
}
|
|
189
194
|
catch (e) {
|
|
190
195
|
await readLock.release();
|
|
191
196
|
throw e;
|
|
192
197
|
}
|
|
193
198
|
},
|
|
194
|
-
}
|
|
199
|
+
};
|
|
195
200
|
}
|
|
196
201
|
/**
|
|
197
202
|
* Use a directory containing an AWS CDK app as source.
|
|
@@ -267,7 +272,7 @@ class CloudAssemblySourceBuilder {
|
|
|
267
272
|
// Environment variables derived from settings
|
|
268
273
|
...synthParams.env,
|
|
269
274
|
});
|
|
270
|
-
const cleanupTemp = (0, prepare_source_1.writeContextToEnv)(env, fullContext);
|
|
275
|
+
const cleanupTemp = (0, prepare_source_1.writeContextToEnv)(env, fullContext, 'env-is-complete');
|
|
271
276
|
try {
|
|
272
277
|
await (0, exec_1.execInChildProcess)(commandLine.join(' '), {
|
|
273
278
|
eventPublisher: async (type, line) => {
|
|
@@ -306,4 +311,4 @@ class CloudAssemblySourceBuilder {
|
|
|
306
311
|
}
|
|
307
312
|
}
|
|
308
313
|
exports.CloudAssemblySourceBuilder = CloudAssemblySourceBuilder;
|
|
309
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzb3VyY2UtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLCtCQUE4QjtBQUU5Qix5Q0FBeUM7QUFDekMsK0JBQStCO0FBQy9CLG1EQUF3RjtBQUN4RixzQ0FBbUM7QUFFbkMseUVBQWlGO0FBQ2pGLHlDQUFvRDtBQUNwRCw2REFBc0k7QUFDdEksbUVBQW9FO0FBR3BFLCtEQUEwRTtBQUMxRSxxQ0FBeUM7QUFDekMsMkNBQW1DO0FBQ25DLCtDQUF3RDtBQTJQeEQsTUFBc0IsMEJBQTBCO0lBTzlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F3Qkc7SUFDSSxLQUFLLENBQUMsbUJBQW1CLENBQzlCLE9BQXdCLEVBQ3hCLFFBQW9DLEVBQUU7UUFFdEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNwRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUksNkJBQWEsRUFBRSxDQUFDO1FBQy9ELE1BQU0sb0JBQW9CLEdBQW1DO1lBQzNELFFBQVE7WUFDUixZQUFZO1lBQ1osT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1NBQ3ZCLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRXJFLE9BQU8sSUFBSSxzREFBK0IsQ0FDeEM7WUFDRSxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUU7OztvQkFDbEIsTUFBWSxTQUFTLGtDQUFHLE1BQU0scUNBQW9CLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0s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QkFFOUYsTUFBTSxPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ2pELE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksU0FBUyxDQUFDLGlCQUFpQixDQUFDO29CQUMzRSxPQUFPLElBQUkseUNBQXFCLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7Ozs7OzthQUM5RTtTQUNGLEVBQ0Qsb0JBQW9CLENBQ3JCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUExUEQsZ0VBMFBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IHR5cGUgKiBhcyBjeHNjaGVtYSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0ICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IENka0FwcE11bHRpQ29udGV4dCwgTWVtb3J5Q29udGV4dCwgdHlwZSBJQ29udGV4dFN0b3JlIH0gZnJvbSAnLi9jb250ZXh0LXN0b3JlJztcbmltcG9ydCB7IFJXTG9jayB9IGZyb20gJy4uL3J3bG9jayc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHRBd2FyZUNsb3VkQXNzZW1ibHlQcm9wcyB9IGZyb20gJy4vcHJpdmF0ZS9jb250ZXh0LWF3YXJlLXNvdXJjZSc7XG5pbXBvcnQgeyBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5U291cmNlIH0gZnJvbSAnLi9wcml2YXRlL2NvbnRleHQtYXdhcmUtc291cmNlJztcbmltcG9ydCB7IGV4ZWNJbkNoaWxkUHJvY2VzcyB9IGZyb20gJy4vcHJpdmF0ZS9leGVjJztcbmltcG9ydCB7IEV4ZWN1dGlvbkVudmlyb25tZW50LCBhc3NlbWJseUZyb21EaXJlY3RvcnksIHBhcmFtZXRlcnNGcm9tU3ludGhPcHRpb25zLCB3cml0ZUNvbnRleHRUb0VudiB9IGZyb20gJy4vcHJpdmF0ZS9wcmVwYXJlLXNvdXJjZSc7XG5pbXBvcnQgeyBSZWFkYWJsZUNsb3VkQXNzZW1ibHkgfSBmcm9tICcuL3ByaXZhdGUvcmVhZGFibGUtYXNzZW1ibHknO1xuaW1wb3J0IHR5cGUgeyBJQ2xvdWRBc3NlbWJseVNvdXJjZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBUb29sa2l0U2VydmljZXMgfSBmcm9tICcuLi8uLi90b29sa2l0L3ByaXZhdGUnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yLCBBc3NlbWJseUVycm9yIH0gZnJvbSAnLi4vLi4vdG9vbGtpdC90b29sa2l0LWVycm9yJztcbmltcG9ydCB7IG5vVW5kZWZpbmVkIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBJTyB9IGZyb20gJy4uL2lvL3ByaXZhdGUnO1xuaW1wb3J0IHsgdGVtcG9yYXJpbHlXcml0ZUVudiB9IGZyb20gJy4vcHJpdmF0ZS9oZWxwZXJzJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRoZSBidWlsZGVyIGZ1bmN0aW9uIHJlY2VpdmVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzc2VtYmx5QnVpbGRlclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBvdXRwdXQgZGlyZWN0b3J5IGludG8gd2hpY2ggdG8gdGhlIGJ1aWxkZXIgYXBwIHdpbGwgZW1pdCBzeW50aGVzaXplZCBhcnRpZmFjdHMuXG4gICAqL1xuICByZWFkb25seSBvdXRkaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZXh0IHByb3ZpZGVkIHRwIHRoZSBidWlsZGVyIGFwcCB0byBzeW50aGVzaXplIHRoZSBDbG91ZCBBc3NlbWJseSwgaW5jbHVkaW5nIGxvb2tlZC11cCBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIHBhc3NlZCB0byBhIENESyBhcHAgdXNpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqXG4gICAqIFRoaXMgY29udGFpbnMgdmFyaWFibGVzIGludGVuZGVkIGZvciB0aGUgdXNlciBwb3J0aW9uIG9mIGEgQ0RLIGFwcCAobm90YWJseVxuICAgKiBgQ0RLX0RFRkFVTFRfQUNDT1VOVGAgYW5kIGBDREtfREVGQVVMVF9SRUdJT05gKSwgd2hpY2ggeW91IGNhbiBmcmVlbHkgcmVhZC5cbiAgICpcbiAgICogSXQgYWxzbyBjb250YWlucyB2YXJpYWJsZXMgaW50ZW5kZWQgZm9yIHRoZSBDREsgVG9vbGtpdCB0byBjb21tdW5pY2F0ZSB3aXRoXG4gICAqIHRoZSBpbnRlcm5hbHMgb2YgdGhlIGNvbnN0cnVjdCBsaWJyYXJ5LCBsaWtlIGBDREtfREVCVUdgIGFuZFxuICAgKiBgQ0RLX0NMSV9BU01fVkVSU0lPTmAuIFJlYWRpbmcgdGhlc2UgbGF0dGVyIHZhcmlhYmxlcyBpcyBwb3NzaWJsZSBidXQgbm90XG4gICAqIHJlY29tbWVuZGVkLCBhcyB0aGVpciBtZWFuaW5nIG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2UuXG4gICAqL1xuICByZWFkb25seSBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IHRha2VzIHN5bnRoZXNpcyBwYXJhbWV0ZXJzIGFuZCBwcm9kdWNlcyBhIENsb3VkIEFzc2VtYmx5XG4gKlxuICogTW9zdCB0eXBpY2FsbHksIHRoZSBwcm9wZXJ0aWVzIHBhc3NlZCBoZXJlIHdpbGwgYmUgdXNlZCB0byBjb25zdHJ1Y3QgYVxuICogYGNkay5BcHBgLCBhbmQgdGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgcmV0dXJuIHZhbHVlIG9mIGBhcHAuc3ludGgoKWAuXG4gKi9cbmV4cG9ydCB0eXBlIEFzc2VtYmx5QnVpbGRlciA9IChwcm9wczogQXNzZW1ibHlCdWlsZGVyUHJvcHMpID0+IFByb21pc2U8Y3hzY2hlbWEuSUNsb3VkQXNzZW1ibHk+O1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGNyZWF0aW5nIGEgQ0xJIGZyb20gYW4gQVdTIENESyBBcHAgZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZW1ibHlEaXJlY3RvcnlQcm9wcyB7XG4gIC8qKlxuICAgKiBPcHRpb25zIHRvIGNvbmZpZ3VyZSBsb2FkaW5nIG9mIHRoZSBhc3NlbWJseSBhZnRlciBpdCBoYXMgYmVlbiBzeW50aGVzaXplZFxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEFzc2VtYmx5T3B0aW9ucz86IExvYWRBc3NlbWJseU9wdGlvbnM7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgY3JlYXRpbmcgYSBDTEkgZnJvbSBhbiBBV1MgQ0RLIEFwcCBkaXJlY3RvcnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NlbWJseVNvdXJjZVByb3BzIHtcbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBzeW50aGVzaXplZCBjbG91ZCBhc3NlbWJseSBpbnRvIHRoZSBnaXZlbiBkaXJlY3RvcnlcbiAgICpcbiAgICogQGRlZmF1bHQgXCJjZGsub3V0XCJcbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcj86IHN0cmluZztcblxuICAvKipcbiAgICogUGVyZm9ybSBjb250ZXh0IGxvb2t1cHMuXG4gICAqXG4gICAqIFN5bnRoZXNpcyBmYWlscyBpZiB0aGlzIGlzIGRpc2FibGVkIGFuZCBjb250ZXh0IGxvb2t1cHMgbmVlZCB0byBiZSBwZXJmb3JtZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGNvbnRleHQgc3RvcmUgZm9yIHRoaXMgb3BlcmF0aW9uXG4gICAqXG4gICAqIFRoZSBjb250ZXh0IHN0b3JlIHdpbGwgYmUgdXNlZCB0byBzb3VyY2UgaW5pdGlhbCBjb250ZXh0IHZhbHVlcyxcbiAgICogYW5kIHVwZGF0ZWQgdmFsdWVzIHdpbGwgYmUgc3RvcmVkIGhlcmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVwZW5kcyBvbiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0U3RvcmU/OiBJQ29udGV4dFN0b3JlO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIHRoYXQgYXJlIHBhc3NlZCB0aHJvdWdoIHRoZSBjb250ZXh0IHRvIGEgQ0RLIGFwcCBvbiBzeW50aFxuICAgKi9cbiAgcmVhZG9ubHkgc3ludGhPcHRpb25zPzogQXBwU3ludGhPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIHRvIGNvbmZpZ3VyZSBsb2FkaW5nIG9mIHRoZSBhc3NlbWJseSBhZnRlciBpdCBoYXMgYmVlbiBzeW50aGVzaXplZFxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEFzc2VtYmx5T3B0aW9ucz86IExvYWRBc3NlbWJseU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIERlbGV0ZSB0aGUgYG91dGRpcmAgd2hlbiB0aGUgYXNzZW1ibHkgaXMgZGlzcG9zZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBgdHJ1ZWAgaWYgYG91dGRpcmAgaXMgbm90IGdpdmVuLCBgZmFsc2VgIG90aGVyd2lzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcG9zZU91dGRpcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGBmcm9tQXNzZW1ibHlCdWlsZGVyYCBBc3NlbWJseSBTb3VyY2UgY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGcm9tQXNzZW1ibHlCdWlsZGVyT3B0aW9ucyBleHRlbmRzIEFzc2VtYmx5U291cmNlUHJvcHMge1xuICAvKipcbiAgICogTXV0YXRlIGN1cnJlbnQgcHJvY2VzcycgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGNvbW11bmljYXRlIHdpdGggQ0RLIGFwcFxuICAgKlxuICAgKiBUaGVyZSBhcmUgYSBudW1iZXIgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoZSBUb29sa2l0IHVzZXMgdG8gcGFzc1xuICAgKiBpbmZvcm1hdGlvbiB0byB0aGUgQ0RLIGFwcC5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgY3VycmVudFxuICAgKiBwcm9jZXNzJyBnbG9iYWwgc2hhcmVkIGVudmlyb25tZW50IHZhcmlhYmxlcyBiZWZvcmUgdGhlIGJ1aWxkZXIgaXMgaW52b2tlZCxcbiAgICogYW5kIHlvdSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIGVsc2UuIEhvd2V2ZXIsIGJlY2F1c2UgdGhpcyBtdXRhdGVzXG4gICAqIHNoYXJlZCBzdGF0ZSBpdCBpcyBub3Qgc2FmZSB0byBydW4gbXVsdGlwbGUgYnVpbGRlcnMgY29uY3VycmVudGx5LlxuICAgKlxuICAgKiBTZXQgdGhpcyB0byBgZmFsc2VgIHRvIGF2b2lkIG11dGF0aW5nIHRoZSBzaGFyZWQgZW52aXJvbm1lbnQuIEluc3RlYWQsXG4gICAqIHlvdSB3aWxsIG5lZWQgdG8gcGFzcyB0aGUgYG91dGRpcmAgYW5kIGBjb250ZXh0YCB0byB0aGUgYEFwcGAgY29uc3RydWN0b3JcbiAgICogZGlyZWN0bHkgaW4geW91ciBidWlsZGVyLCBhbmQgaW5zcGVjdCB0aGUgYGVudmAgbWFwIGRpcmVjdGx5XG4gICAqIGZvciBpbmZvcm1hdGlvbiBsaWtlIHRoZSBgQ0RLX0RFRkFVTFRfQUNDT1VOVGAgYW5kIGBDREtfREVGQVVMVF9SRUdJT05gLlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBjb25zdCBjeCA9IGF3YWl0IHRvb2xraXQuZnJvbUFzc2VtYmx5QnVpbGRlcihhc3luYyAocHJvcHMpID0+IHtcbiAgICogICAvLyBJbXBvcnRhbnQ6IHBhc3Mgb24gc3ludGhlc2lzIHBhcmFtZXRlcnNcbiAgICogICBjb25zdCBhcHAgPSBuZXcgY29yZS5BcHAoe1xuICAgKiAgICAgb3V0ZGlyOiBwcm9wcy5vdXRkaXIsXG4gICAqICAgICBjb250ZXh0OiBwcm9wcy5jb250ZXh0LFxuICAgKiAgIH0pO1xuICAgKlxuICAgKiAgIG5ldyBNeVN0YWNrKGFwcCwgJ015U3RhY2snLCB7XG4gICAqICAgICBlbnY6IHtcbiAgICogICAgICAgYWNjb3VudDogcHJvcHMuZW52LkNES19ERUZBVUxUX0FDQ09VTlQsXG4gICAqICAgICAgIHJlZ2lvbjogcHJvcHMuZW52LkNES19ERUZBVUxUX1JFR0lPTixcbiAgICogICAgIH0sXG4gICAqICAgfSk7XG4gICAqXG4gICAqICAgLy8gLi4uXG4gICAqIH0sIHtcbiAgICogICBjbG9iYmVyRW52OiBmYWxzZSxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjbG9iYmVyRW52PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgYGZyb21DZGtBcHBgIEFzc2VtYmx5IFNvdXJjZSBjb25zdHJ1Y3RvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZyb21DZGtBcHBPcHRpb25zIGV4dGVuZHMgQXNzZW1ibHlTb3VyY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBhcHBsaWNhdGlvbiBpbiB0aGlzIHdvcmtpbmcgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnlcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtpbmdEaXJlY3Rvcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqXG4gICAqIFRoZXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aWxsIGJlIHNldCBpbiBhZGRpdGlvbiB0byB0aGUgZW52aXJvbm1lbnRcbiAgICogdmFyaWFibGVzIGN1cnJlbnRseSBzZXQgaW4gdGhlIHByb2Nlc3MuIEEgdmFsdWUgb2YgYHVuZGVmaW5lZGAgd2lsbFxuICAgKiB1bnNldCBhIHBhcnRpY3VsYXIgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqL1xuICByZWFkb25seSBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+O1xufVxuXG4vKipcbiAqIFNldHRpbmdzIHRoYXQgYXJlIHBhc3NlZCB0byBhIENESyBhcHAgdmlhIHRoZSBjb250ZXh0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwU3ludGhPcHRpb25zIHtcbiAgLyoqXG4gICAqIERlYnVnIHRoZSBDREsgYXBwLlxuICAgKiBMb2dzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZHVyaW5nIHN5bnRoZXNpcywgc3VjaCBhcyBjcmVhdGlvbiBzdGFjayB0cmFjZXMgb2YgdG9rZW5zLlxuICAgKiBUaGlzIGFsc28gc2V0cyB0aGUgYENES19ERUJVR2AgZW52IHZhcmlhYmxlIGFuZCB3aWxsIHNsb3cgZG93biBzeW50aGVzaXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkZWJ1Zz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgdGhlIGVtYmVkZGluZyBvZiB0aGUgXCJhd3M6Y2RrOnBhdGhcIiBpbiBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZSBtZXRhZGF0YS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aE1ldGFkYXRhPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlIHRoZSBjb2xsZWN0aW9uIGFuZCByZXBvcnRpbmcgb2YgdmVyc2lvbiBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvblJlcG9ydGluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZSBlbmFibGVkLCBgYXdzOmFzc2V0Onh4eGAgbWV0YWRhdGEgZW50cmllcyBhcmUgYWRkZWQgdG8gdGhlIHRlbXBsYXRlLlxuICAgKlxuICAgKiBEaXNhYmxpbmcgdGhpcyBjYW4gYmUgdXNlZnVsIGluIGNlcnRhaW4gY2FzZXMgbGlrZSBpbnRlZ3JhdGlvbiB0ZXN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRNZXRhZGF0YT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBhc3NldCBzdGFnaW5nLlxuICAgKlxuICAgKiBEaXNhYmxpbmcgYXNzZXQgc3RhZ2luZyBtZWFucyB0aGF0IGNvcHlhYmxlIGFzc2V0cyB3aWxsIG5vdCBiZSBjb3BpZWQgdG8gdGhlXG4gICAqIG91dHB1dCBkaXJlY3RvcnkgYW5kIHdpbGwgYmUgcmVmZXJlbmNlZCB3aXRoIGFic29sdXRlIHBhdGhzLlxuICAgKlxuICAgKiBOb3QgY29waWVkIHRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5OiB0aGlzIGlzIHNvIHVzZXJzIGNhbiBpdGVyYXRlIG9uIHRoZVxuICAgKiBMYW1iZGEgc291cmNlIGFuZCBydW4gU0FNIENMSSB3aXRob3V0IGhhdmluZyB0byByZS1ydW4gQ0RLIChub3RlOiB3ZVxuICAgKiBjYW5ub3QgYWNoaWV2ZSB0aGlzIGZvciBidW5kbGVkIGFzc2V0cywgaWYgYXNzZXRzIGFyZSBidW5kbGVkIHRoZXlcbiAgICogd2lsbCBoYXZlIHRvIHJlLXJ1biBDREsgQ0xJIHRvIHJlLWJ1bmRsZSB1cGRhdGVkIHZlcnNpb25zKS5cbiAgICpcbiAgICogQWJzb2x1dGUgcGF0aDogU0FNIENMSSBleHBlY3RzIGBjd2RgLXJlbGF0aXZlIHBhdGhzIGluIGEgcmVzb3VyY2Unc1xuICAgKiBgYXdzOmFzc2V0OnBhdGhgIG1ldGFkYXRhLiBJbiBvcmRlciB0byBiZSBwcmVkaWN0YWJsZSwgd2Ugd2lsbCBhbHdheXMgb3V0cHV0XG4gICAqIGFic29sdXRlIHBhdGhzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhc3NldFN0YWdpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZWxlY3Qgd2hpY2ggc3RhY2tzIHNob3VsZCBoYXZlIGFzc2V0IGJ1bmRsaW5nIGVuYWJsZWRcbiAgICpcbiAgICogQGRlZmF1bHQgW1wiKipcIl0gLSBhbGwgc3RhY2tzXG4gICAqL1xuICByZWFkb25seSBidW5kbGluZ0ZvclN0YWNrcz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIHRvIGNvbmZpZ3VyZSBsb2FkaW5nIG9mIHRoZSBhc3NlbWJseSBhZnRlciBpdCBoYXMgYmVlbiBzeW50aGVzaXplZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvYWRBc3NlbWJseU9wdGlvbnMge1xuICAvKipcbiAgICogQ2hlY2sgdGhlIFRvb2xraXQgc3VwcG9ydHMgdGhlIENsb3VkIEFzc2VtYmx5IFNjaGVtYSB2ZXJzaW9uXG4gICAqXG4gICAqIFdoZW4gZGlzYWJsZWQsIGFsbG93cyB0byBUb29sa2l0IHRvIHJlYWQgYSBuZXdlciBjbG91ZCBhc3NlbWJseSB0aGFuIHRoZSBDWCBBUEkgaXMgZGVzaWduZWRcbiAgICogdG8gc3VwcG9ydC4gWW91ciBhcHBsaWNhdGlvbiBtYXkgbm90IGJlIGF3YXJlIG9mIGFsbCBmZWF0dXJlcyB0aGF0IGluIHVzZSBpbiB0aGUgQ2xvdWQgQXNzZW1ibHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNoZWNrVmVyc2lvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGVudW1zIHRvIG9ubHkgaGF2ZSBrbm93biB2YWx1ZXNcbiAgICpcbiAgICogV2hlbiBkaXNhYmxlZCwgdGhlIFRvb2xraXQgbWF5IHJlYWQgZW51bSB2YWx1ZXMgaXQgZG9lc24ndCBrbm93IGFib3V0IHlldC5cbiAgICogWW91IHdpbGwgaGF2ZSB0byBtYWtlIHN1cmUgdG8gYWx3YXlzIGNoZWNrIHRoZSB2YWx1ZXMgb2YgZW51bXMgeW91IGVuY291bnRlciBpbiB0aGUgbWFuaWZlc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNoZWNrRW51bXM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ2xvdWRBc3NlbWJseVNvdXJjZUJ1aWxkZXIge1xuICAvKipcbiAgICogSGVscGVyIHRvIHByb3ZpZGUgdGhlIENsb3VkQXNzZW1ibHlTb3VyY2VCdWlsZGVyIHdpdGggcmVxdWlyZWQgdG9vbGtpdCBzZXJ2aWNlc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzb3VyY2VCdWlsZGVyU2VydmljZXMoKTogUHJvbWlzZTxUb29sa2l0U2VydmljZXM+O1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBDbG91ZCBBc3NlbWJseSBmcm9tIGEgQ2xvdWQgQXNzZW1ibHkgYnVpbGRlciBmdW5jdGlvbi5cbiAgICpcbiAgICogIyMgT3V0ZGlyXG4gICAqXG4gICAqIElmIG5vIG91dHB1dCBkaXJlY3RvcnkgaXMgZ2l2ZW4sIGl0IHdpbGwgc3ludGhlc2l6ZSBpbnRvIGEgdGVtcG9yYXJ5IHN5c3RlbVxuICAgKiBkaXJlY3RvcnkuIFRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHdpbGwgYmUgY2xlYW5lZCB1cCwgdW5sZXNzXG4gICAqIGBkaXNwb3NlT3V0ZGlyOiBmYWxzZWAuXG4gICAqXG4gICAqIEEgd3JpdGUgbG9jayB3aWxsIGJlIGFjcXVpcmVkIG9uIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGZvciB0aGUgZHVyYXRpb24gb2ZcbiAgICogdGhlIENESyBhcHAgc3ludGhlc2lzICh3aGljaCBtZWFucyB0aGF0IG5vIHR3byBhcHBzIGNhbiBzeW50aGVzaXplIGF0IHRoZVxuICAgKiBzYW1lIHRpbWUpLCBhbmQgYWZ0ZXIgc3ludGhlc2lzIGEgcmVhZCBsb2NrIHdpbGwgYmUgYWNxdWlyZWQgb24gdGhlXG4gICAqIGRpcmVjdG9yeS4gVGhpcyBtZWFucyB0aGF0IHdoaWxlIHRoZSBDbG91ZEFzc2VtYmx5IGlzIGJlaW5nIHVzZWQsIG5vIENES1xuICAgKiBhcHAgc3ludGhlc2lzIGNhbiB0YWtlIHBsYWNlIGludG8gdGhhdCBkaXJlY3RvcnkuXG4gICAqXG4gICAqICMjIENvbnRleHRcbiAgICpcbiAgICogSWYgbm8gYGNvbnRleHRTdG9yZWAgaXMgZ2l2ZW4sIGEgYE1lbW9yeUNvbnRleHRgIHdpbGwgYmUgdXNlZC4gVGhpcyBtZWFuc1xuICAgKiBubyBwcm92aWRlciBsb29rdXBzIHdpbGwgYmUgcGVyc2lzdGVkIGFueXdoZXJlIGJ5IGRlZmF1bHQuIFVzZSBhIGRpZmZlcmVudFxuICAgKiB0eXBlIG9mIGNvbnRleHQgc3RvcmUgaWYgeW91IHdhbnQgcGVyc2lzdGVuY2UgYmV0d2VlbiBzeW50aCBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gYnVpbGRlciAtIHRoZSBidWlsZGVyIGZ1bmN0aW9uXG4gICAqIEBwYXJhbSBwcm9wcyAtIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzXG4gICAqIEByZXR1cm5zIHRoZSBDbG91ZEFzc2VtYmx5IHNvdXJjZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGZyb21Bc3NlbWJseUJ1aWxkZXIoXG4gICAgYnVpbGRlcjogQXNzZW1ibHlCdWlsZGVyLFxuICAgIHByb3BzOiBGcm9tQXNzZW1ibHlCdWlsZGVyT3B0aW9ucyA9IHt9LFxuICApOiBQcm9taXNlPElDbG91ZEFzc2VtYmx5U291cmNlPiB7XG4gICAgY29uc3Qgc2VydmljZXMgPSBhd2FpdCB0aGlzLnNvdXJjZUJ1aWxkZXJTZXJ2aWNlcygpO1xuICAgIGNvbnN0IGNvbnRleHRTdG9yZSA9IHByb3BzLmNvbnRleHRTdG9yZSA/PyBuZXcgTWVtb3J5Q29udGV4dCgpO1xuICAgIGNvbnN0IGNvbnRleHRBc3NlbWJseVByb3BzOiBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5UHJvcHMgPSB7XG4gICAgICBzZXJ2aWNlcyxcbiAgICAgIGNvbnRleHRTdG9yZSxcbiAgICAgIGxvb2t1cHM6IHByb3BzLmxvb2t1cHMsXG4gICAgfTtcblxuICAgIGNvbnN0IG91dGRpciA9IHByb3BzLm91dGRpciA/IHBhdGgucmVzb2x2ZShwcm9wcy5vdXRkaXIpIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIG5ldyBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5U291cmNlKFxuICAgICAge1xuICAgICAgICBwcm9kdWNlOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgdXNpbmcgZXhlY3V0aW9uID0gYXdhaXQgRXhlY3V0aW9uRW52aXJvbm1lbnQuY3JlYXRlKHNlcnZpY2VzLCB7IG91dGRpciB9KTtcblxuICAgICAgICAgIGNvbnN0IHN5bnRoUGFyYW1zID0gcGFyYW1ldGVyc0Zyb21TeW50aE9wdGlvbnMocHJvcHMuc3ludGhPcHRpb25zKTtcblxuICAgICAgICAgIGNvbnN0IGZ1bGxDb250ZXh0ID0ge1xuICAgICAgICAgICAgLi4uYXdhaXQgY29udGV4dFN0b3JlLnJlYWQoKSxcbiAgICAgICAgICAgIC4uLnN5bnRoUGFyYW1zLmNvbnRleHQsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGF3YWl0IHNlcnZpY2VzLmlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKGZvcm1hdCgnY29udGV4dDonLCBmdWxsQ29udGV4dCkpO1xuXG4gICAgICAgICAgY29uc3QgZW52ID0gbm9VbmRlZmluZWQoe1xuICAgICAgICAgICAgLy8gVmVyc2lvbmluZywgb3V0ZGlyLCBkZWZhdWx0IGFjY291bnQgYW5kIHJlZ2lvblxuICAgICAgICAgICAgLi4uYXdhaXQgZXhlY3V0aW9uLmRlZmF1bHRFbnZWYXJzKCksXG4gICAgICAgICAgICAvLyBFbnZpcm9ubWVudCB2YXJpYWJsZXMgZGVyaXZlZCBmcm9tIHNldHRpbmdzXG4gICAgICAgICAgICAuLi5zeW50aFBhcmFtcy5lbnYsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBjbGVhbnVwQ29udGV4dFRlbXAgPSB3cml0ZUNvbnRleHRUb0VudihlbnYsIGZ1bGxDb250ZXh0KTtcbiAgICAgICAgICB1c2luZyBfY2xlYW51cEVudiA9IChwcm9wcy5jbG9iYmVyRW52ID8/IHRydWUpID8gdGVtcG9yYXJpbHlXcml0ZUVudihlbnYpIDogdW5kZWZpbmVkO1xuICAgICAgICAgIGxldCBhc3NlbWJseTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXNzZW1ibHkgPSBhd2FpdCBidWlsZGVyKHtcbiAgICAgICAgICAgICAgb3V0ZGlyOiBleGVjdXRpb24ub3V0ZGlyLFxuICAgICAgICAgICAgICBjb250ZXh0OiBmdWxsQ29udGV4dCxcbiAgICAgICAgICAgICAgZW52LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgICAgIC8vIHJlLXRocm93IHRvb2xraXQgZXJyb3JzIHVuY2hhbmdlZFxuICAgICAgICAgICAgaWYgKFRvb2xraXRFcnJvci5pc1Rvb2xraXRFcnJvcihlcnJvcikpIHtcbiAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBvdGhlcndpc2UsIHdyYXAgaW50byBhbiBhc3NlbWJseSBlcnJvclxuICAgICAgICAgICAgdGhyb3cgQXNzZW1ibHlFcnJvci53aXRoQ2F1c2UoJ0Fzc2VtYmx5IGJ1aWxkZXIgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBhd2FpdCBjbGVhbnVwQ29udGV4dFRlbXAoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDb252ZXJ0IHdoYXQgd2UgZ290IHRvIHRoZSBkZWZpbml0ZWx5IGNvcnJlY3QgdHlwZSB3ZSdyZSBleHBlY3RpbmcsIGEgY3hhcGkuQ2xvdWRBc3NlbWJseVxuICAgICAgICAgIGNvbnN0IGFzbSA9IGN4YXBpLkNsb3VkQXNzZW1ibHkuaXNDbG91ZEFzc2VtYmx5KGFzc2VtYmx5KVxuICAgICAgICAgICAgPyBhc3NlbWJseVxuICAgICAgICAgICAgOiBhd2FpdCBhc3NlbWJseUZyb21EaXJlY3RvcnkoYXNzZW1ibHkuZGlyZWN0b3J5LCBzZXJ2aWNlcy5pb0hlbHBlciwgcHJvcHMubG9hZEFzc2VtYmx5T3B0aW9ucyk7XG5cbiAgICAgICAgICBjb25zdCBzdWNjZXNzID0gYXdhaXQgZXhlY3V0aW9uLm1hcmtTdWNjZXNzZnVsKCk7XG4gICAgICAgICAgY29uc3QgZGVsZXRlT25EaXNwb3NlID0gcHJvcHMuZGlzcG9zZU91dGRpciA/PyBleGVjdXRpb24ub3V0RGlySXNUZW1wb3Jhcnk7XG4gICAgICAgICAgcmV0dXJuIG5ldyBSZWFkYWJsZUNsb3VkQXNzZW1ibHkoYXNtLCBzdWNjZXNzLnJlYWRMb2NrLCB7IGRlbGV0ZU9uRGlzcG9zZSB9KTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBjb250ZXh0QXNzZW1ibHlQcm9wcyxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBDbG91ZCBBc3NlbWJseSBmcm9tIGFuIGV4aXN0aW5nIGFzc2VtYmx5IGRpcmVjdG9yeS5cbiAgICpcbiAgICogQSByZWFkIGxvY2sgd2lsbCBiZSBhY3F1aXJlZCBmb3IgdGhlIGRpcmVjdG9yeS4gVGhpcyBtZWFucyB0aGF0IHdoaWxlXG4gICAqIHRoZSBDbG91ZEFzc2VtYmx5IGlzIGJlaW5nIHVzZWQsIG5vIENESyBhcHAgc3ludGhlc2lzIGNhbiB0YWtlIHBsYWNlIGludG9cbiAgICogdGhhdCBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBwYXJhbSBkaXJlY3RvcnkgLSBkaXJlY3RvcnkgdGhlIGRpcmVjdG9yeSBvZiBhIGFscmVhZHkgcHJvZHVjZWQgQ2xvdWQgQXNzZW1ibHkuXG4gICAqIEByZXR1cm5zIHRoZSBDbG91ZEFzc2VtYmx5IHNvdXJjZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGZyb21Bc3NlbWJseURpcmVjdG9yeShkaXJlY3Rvcnk6IHN0cmluZywgcHJvcHM6IEFzc2VtYmx5RGlyZWN0b3J5UHJvcHMgPSB7fSk6IFByb21pc2U8SUNsb3VkQXNzZW1ibHlTb3VyY2U+IHtcbiAgICBjb25zdCBzZXJ2aWNlczogVG9vbGtpdFNlcnZpY2VzID0gYXdhaXQgdGhpcy5zb3VyY2VCdWlsZGVyU2VydmljZXMoKTtcbiAgICBjb25zdCBjb250ZXh0QXNzZW1ibHlQcm9wczogQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVByb3BzID0ge1xuICAgICAgc2VydmljZXMsXG4gICAgICBjb250ZXh0U3RvcmU6IG5ldyBNZW1vcnlDb250ZXh0KCksIC8vIEB0b2RvIFdlIHNob3VsZG4ndCBiZSB1c2luZyBhIGBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5U291cmNlYCBhdCBhbGwuXG4gICAgICBsb29rdXBzOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5U291cmNlKFxuICAgICAge1xuICAgICAgICBwcm9kdWNlOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgLy8gQHRvZG8gYnVpbGRcbiAgICAgICAgICBhd2FpdCBzZXJ2aWNlcy5pb0hlbHBlci5ub3RpZnkoSU8uQ0RLX0FTU0VNQkxZX0kwMTUwLm1zZygnLS1hcHAgcG9pbnRzIHRvIGEgY2xvdWQgYXNzZW1ibHksIHNvIHdlIGJ5cGFzcyBzeW50aCcpKTtcblxuICAgICAgICAgIGNvbnN0IHJlYWRMb2NrID0gYXdhaXQgbmV3IFJXTG9jayhkaXJlY3RvcnkpLmFjcXVpcmVSZWFkKCk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGFzbSA9IGF3YWl0IGFzc2VtYmx5RnJvbURpcmVjdG9yeShkaXJlY3RvcnksIHNlcnZpY2VzLmlvSGVscGVyLCBwcm9wcy5sb2FkQXNzZW1ibHlPcHRpb25zKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVhZGFibGVDbG91ZEFzc2VtYmx5KGFzbSwgcmVhZExvY2ssIHsgZGVsZXRlT25EaXNwb3NlOiBmYWxzZSB9KTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBhd2FpdCByZWFkTG9jay5yZWxlYXNlKCk7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBjb250ZXh0QXNzZW1ibHlQcm9wcyxcbiAgICApO1xuICB9XG4gIC8qKlxuICAgKiBVc2UgYSBkaXJlY3RvcnkgY29udGFpbmluZyBhbiBBV1MgQ0RLIGFwcCBhcyBzb3VyY2UuXG4gICAqXG4gICAqIFRoZSBzdWJwcm9jZXNzIHdpbGwgZXhlY3V0ZSBpbiBgd29ya2luZ0RpcmVjdG9yeWAsIHdoaWNoIGRlZmF1bHRzIHRvXG4gICAqIHRoZSBjdXJyZW50IHByb2Nlc3MnIHdvcmtpbmcgZGlyZWN0b3J5IGlmIG5vdCBnaXZlbi5cbiAgICpcbiAgICogIyMgT3V0ZGlyXG4gICAqXG4gICAqIElmIGFuIG91dHB1dCBkaXJlY3RvcnkgaXMgc3VwcGxpZWQsIHJlbGF0aXZlIHBhdGhzIGFyZSBldmFsdWF0ZWQgd2l0aFxuICAgKiByZXNwZWN0IHRvIHRoZSBjdXJyZW50IHByb2Nlc3MnIHdvcmtpbmcgZGlyZWN0b3J5LiBJZiBhbiBvdXRwdXQgZGlyZWN0b3J5XG4gICAqIGlzIG5vdCBzdXBwbGllZCwgdGhlIGRlZmF1bHQgaXMgYSBgY2RrLm91dGAgZGlyZWN0b3J5IHVuZGVybmVhdGhcbiAgICogYHdvcmtpbmdEaXJlY3RvcnlgLiBUaGUgb3V0cHV0IGRpcmVjdG9yeSB3aWxsIG5vdCBiZSBjbGVhbmVkIHVwIHVubGVzc1xuICAgKiBgZGlzcG9zZU91dGRpcjogdHJ1ZWAuXG4gICAqXG4gICAqIEEgd3JpdGUgbG9jayB3aWxsIGJlIGFjcXVpcmVkIG9uIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGZvciB0aGUgZHVyYXRpb24gb2ZcbiAgICogdGhlIENESyBhcHAgc3ludGhlc2lzICh3aGljaCBtZWFucyB0aGF0IG5vIHR3byBhcHBzIGNhbiBzeW50aGVzaXplIGF0IHRoZVxuICAgKiBzYW1lIHRpbWUpLCBhbmQgYWZ0ZXIgc3ludGhlc2lzIGEgcmVhZCBsb2NrIHdpbGwgYmUgYWNxdWlyZWQgb24gdGhlXG4gICAqIGRpcmVjdG9yeS4gIFRoaXMgbWVhbnMgdGhhdCB3aGlsZSB0aGUgQ2xvdWRBc3NlbWJseSBpcyBiZWluZyB1c2VkLCBubyBDREtcbiAgICogYXBwIHN5bnRoZXNpcyBjYW4gdGFrZSBwbGFjZSBpbnRvIHRoYXQgZGlyZWN0b3J5LlxuICAgKlxuICAgKiAjIyBDb250ZXh0XG4gICAqXG4gICAqIElmIG5vIGBjb250ZXh0U3RvcmVgIGlzIGdpdmVuLCBhIGBDZGtBcHBNdWx0aUNvbnRleHRgIHdpbGwgYmUgdXNlZCwgaW5pdGlhbGl6ZWRcbiAgICogdG8gdGhlIGFwcCdzIGB3b3JraW5nRGlyZWN0b3J5YC4gVGhpcyBtZWFucyB0aGF0IGNvbnRleHQgd2lsbCBiZSBsb2FkZWQgZnJvbVxuICAgKiBhbGwgdGhlIENESydzIGRlZmF1bHQgY29udGV4dCBzb3VyY2VzLCBhbmQgdXBkYXRlcyB3aWxsIGJlIHdyaXR0ZW4gdG9cbiAgICogYGNkay5jb250ZXh0Lmpzb25gLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgLSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllc1xuICAgKiBAcmV0dXJucyB0aGUgQ2xvdWRBc3NlbWJseSBzb3VyY2VcbiAgICovXG4gIHB1YmxpYyBhc3luYyBmcm9tQ2RrQXBwKGFwcDogc3RyaW5nLCBwcm9wczogRnJvbUNka0FwcE9wdGlvbnMgPSB7fSk6IFByb21pc2U8SUNsb3VkQXNzZW1ibHlTb3VyY2U+IHtcbiAgICBjb25zdCBzZXJ2aWNlczogVG9vbGtpdFNlcnZpY2VzID0gYXdhaXQgdGhpcy5zb3VyY2VCdWlsZGVyU2VydmljZXMoKTtcbiAgICBjb25zdCB3b3JraW5nRGlyZWN0b3J5ID0gcHJvcHMud29ya2luZ0RpcmVjdG9yeSA/PyBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IG91dGRpciA9IHByb3BzLm91dGRpciA/IHBhdGgucmVzb2x2ZShwcm9wcy5vdXRkaXIpIDogcGF0aC5yZXNvbHZlKHdvcmtpbmdEaXJlY3RvcnksICdjZGsub3V0Jyk7XG5cbiAgICBjb25zdCBjb250ZXh0U3RvcmUgPSBwcm9wcy5jb250ZXh0U3RvcmUgPz8gbmV3IENka0FwcE11bHRpQ29udGV4dCh3b3JraW5nRGlyZWN0b3J5KTtcblxuICAgIGNvbnN0IGNvbnRleHRBc3NlbWJseVByb3BzOiBDb250ZXh0QXdhcmVDbG91ZEFzc2VtYmx5UHJvcHMgPSB7XG4gICAgICBzZXJ2aWNlcyxcbiAgICAgIGNvbnRleHRTdG9yZSxcbiAgICAgIGxvb2t1cHM6IHByb3BzLmxvb2t1cHMsXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVNvdXJjZShcbiAgICAgIHtcbiAgICAgICAgcHJvZHVjZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIC8vIEB0b2RvIGJ1aWxkXG4gICAgICAgICAgLy8gY29uc3QgYnVpbGQgPSB0aGlzLnByb3BzLmNvbmZpZ3VyYXRpb24uc2V0dGluZ3MuZ2V0KFsnYnVpbGQnXSk7XG4gICAgICAgICAgLy8gaWYgKGJ1aWxkKSB7XG4gICAgICAgICAgLy8gICBhd2FpdCBleGVjSW5DaGlsZFByb2Nlc3MoYnVpbGQsIHsgY3dkOiBwcm9wcy53b3JraW5nRGlyZWN0b3J5IH0pO1xuICAgICAgICAgIC8vIH1cblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmcy5ta2RpcnBTeW5jKG91dGRpcik7XG4gICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBDb3VsZCBub3QgY3JlYXRlIG91dHB1dCBkaXJlY3RvcnkgYXQgJyR7b3V0ZGlyfScgKCR7ZS5tZXNzYWdlfSkuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXdhaXQgdXNpbmcgZXhlY3V0aW9uID0gYXdhaXQgRXhlY3V0aW9uRW52aXJvbm1lbnQuY3JlYXRlKHNlcnZpY2VzLCB7IG91dGRpciB9KTtcblxuICAgICAgICAgIGNvbnN0IGNvbW1hbmRMaW5lID0gYXdhaXQgZXhlY3V0aW9uLmd1ZXNzRXhlY3V0YWJsZShhcHApO1xuXG4gICAgICAgICAgY29uc3Qgc3ludGhQYXJhbXMgPSBwYXJhbWV0ZXJzRnJvbVN5bnRoT3B0aW9ucyhwcm9wcy5zeW50aE9wdGlvbnMpO1xuXG4gICAgICAgICAgY29uc3QgZnVsbENvbnRleHQgPSB7XG4gICAgICAgICAgICAuLi5hd2FpdCBjb250ZXh0U3RvcmUucmVhZCgpLFxuICAgICAgICAgICAgLi4uc3ludGhQYXJhbXMuY29udGV4dCxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgYXdhaXQgc2VydmljZXMuaW9IZWxwZXIuZGVmYXVsdHMuZGVidWcoZm9ybWF0KCdjb250ZXh0OicsIGZ1bGxDb250ZXh0KSk7XG5cbiAgICAgICAgICBjb25zdCBlbnYgPSBub1VuZGVmaW5lZCh7XG4gICAgICAgICAgICAvLyBOZWVkIHRvIHN0YXJ0IHdpdGggZnVsbCBlbnYgb2YgYHdyaXRlQ29udGV4dFRvRW52YCB3aWxsIG5vdCBiZSBhYmxlIHRvIGRvIHRoZSBzaXplXG4gICAgICAgICAgICAvLyBjYWxjdWxhdGlvbiBjb3JyZWN0bHkuXG4gICAgICAgICAgICAuLi5wcm9jZXNzLmVudixcbiAgICAgICAgICAgIC8vIFVzZXIgZ2F2ZSB1cyBzb21ldGhpbmdcbiAgICAgICAgICAgIC4uLnByb3BzLmVudixcbiAgICAgICAgICAgIC8vIFZlcnNpb25pbmcsIG91dGRpciwgZGVmYXVsdCBhY2NvdW50IGFuZCByZWdpb25cbiAgICAgICAgICAgIC4uLmF3YWl0IGV4ZWN1dGlvbi5kZWZhdWx0RW52VmFycygpLFxuICAgICAgICAgICAgLy8gRW52aXJvbm1lbnQgdmFyaWFibGVzIGRlcml2ZWQgZnJvbSBzZXR0aW5nc1xuICAgICAgICAgICAgLi4uc3ludGhQYXJhbXMuZW52LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGNsZWFudXBUZW1wID0gd3JpdGVDb250ZXh0VG9FbnYoZW52LCBmdWxsQ29udGV4dCk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGV4ZWNJbkNoaWxkUHJvY2Vzcyhjb21tYW5kTGluZS5qb2luKCcgJyksIHtcbiAgICAgICAgICAgICAgZXZlbnRQdWJsaXNoZXI6IGFzeW5jICh0eXBlLCBsaW5lKSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgICBjYXNlICdkYXRhX3N0ZG91dCc6XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHNlcnZpY2VzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfQVNTRU1CTFlfSTEwMDEubXNnKGxpbmUpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlICdkYXRhX3N0ZGVycic6XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHNlcnZpY2VzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfQVNTRU1CTFlfRTEwMDIubXNnKGxpbmUpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlbnYsXG4gICAgICAgICAgICAgIGN3ZDogd29ya2luZ0RpcmVjdG9yeSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBhd2FpdCBjbGVhbnVwVGVtcCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGFzbSA9IGF3YWl0IGFzc2VtYmx5RnJvbURpcmVjdG9yeShvdXRkaXIsIHNlcnZpY2VzLmlvSGVscGVyLCBwcm9wcy5sb2FkQXNzZW1ibHlPcHRpb25zKTtcblxuICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCBleGVjdXRpb24ubWFya1N1Y2Nlc3NmdWwoKTtcbiAgICAgICAgICBjb25zdCBkZWxldGVPbkRpc3Bvc2UgPSBwcm9wcy5kaXNwb3NlT3V0ZGlyID8/IGV4ZWN1dGlvbi5vdXREaXJJc1RlbXBvcmFyeTtcbiAgICAgICAgICByZXR1cm4gbmV3IFJlYWRhYmxlQ2xvdWRBc3NlbWJseShhc20sIHN1Y2Nlc3MucmVhZExvY2ssIHsgZGVsZXRlT25EaXNwb3NlIH0pO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGNvbnRleHRBc3NlbWJseVByb3BzLFxuICAgICk7XG4gIH1cbn1cblxuIl19
|
|
314
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzb3VyY2UtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLCtCQUE4QjtBQUU5Qix5Q0FBeUM7QUFDekMsK0JBQStCO0FBQy9CLG1EQUF3RjtBQUN4RixzQ0FBbUM7QUFDbkMsbURBQXNEO0FBRXRELHlFQUFpRjtBQUNqRix5Q0FBb0Q7QUFDcEQsNkRBQXNJO0FBQ3RJLG1FQUFvRTtBQUdwRSwrREFBMEU7QUFDMUUscUNBQXlDO0FBQ3pDLDJDQUFtQztBQUNuQywrQ0FBNEU7QUFtUTVFLE1BQXNCLDBCQUEwQjtJQU85Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bd0JHO0lBQ0ksS0FBSyxDQUFDLG1CQUFtQixDQUM5QixPQUF3QixFQUN4QixRQUFvQyxFQUFFO1FBRXRDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDcEQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJLDZCQUFhLEVBQUUsQ0FBQztRQUMvRCxNQUFNLG9CQUFvQixHQUFtQztZQUMzRCxRQUFRO1lBQ1IsWUFBWTtZQUNaLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztTQUN2QixDQUFDO1FBRUYsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVyRSxPQUFPLElBQUksc0RBQStCLENBQ3hDO1lBQ0UsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFOzs7b0JBQ2xCLE1BQVksU0FBUyxrQ0FBRyxNQUFNLHFDQUFvQixDQUFDLE1BQU0sQ0FBQyxRQUFRLEVB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QUMsQ0FBQyxDQUFDO3dDQUNoRSxNQUFNO29DQUNSLEtBQUssYUFBYTt3Q0FDaEIsTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFFLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0NBQ2hFLE1BQU07Z0NBQ1YsQ0FBQzs0QkFDSCxDQUFDOzRCQUNELEdBQUc7NEJBQ0gsR0FBRyxFQUFFLGdCQUFnQjt5QkFDdEIsQ0FBQyxDQUFDO29CQUNMLENBQUM7NEJBQVMsQ0FBQzt3QkFDVCxNQUFNLFdBQVcsRUFBRSxDQUFDO29CQUN0QixDQUFDO29CQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBQSxzQ0FBcUIsRUFBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztvQkFFOUYsTUFBTSxPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ2pELE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksU0FBUyxDQUFDLGlCQUFpQixDQUFDO29CQUMzRSxPQUFPLElBQUkseUNBQXFCLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7Ozs7OzthQUM5RTtTQUNGLEVBQ0Qsb0JBQW9CLENBQ3JCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUE3UEQsZ0VBNlBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IHR5cGUgKiBhcyBjeHNjaGVtYSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0ICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IENka0FwcE11bHRpQ29udGV4dCwgTWVtb3J5Q29udGV4dCwgdHlwZSBJQ29udGV4dFN0b3JlIH0gZnJvbSAnLi9jb250ZXh0LXN0b3JlJztcbmltcG9ydCB7IFJXTG9jayB9IGZyb20gJy4uL3J3bG9jayc7XG5pbXBvcnQgeyBDYWNoZWRDbG91ZEFzc2VtYmx5IH0gZnJvbSAnLi9jYWNoZWQtc291cmNlJztcbmltcG9ydCB0eXBlIHsgQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVByb3BzIH0gZnJvbSAnLi9wcml2YXRlL2NvbnRleHQtYXdhcmUtc291cmNlJztcbmltcG9ydCB7IENvbnRleHRBd2FyZUNsb3VkQXNzZW1ibHlTb3VyY2UgfSBmcm9tICcuL3ByaXZhdGUvY29udGV4dC1hd2FyZS1zb3VyY2UnO1xuaW1wb3J0IHsgZXhlY0luQ2hpbGRQcm9jZXNzIH0gZnJvbSAnLi9wcml2YXRlL2V4ZWMnO1xuaW1wb3J0IHsgRXhlY3V0aW9uRW52aXJvbm1lbnQsIGFzc2VtYmx5RnJvbURpcmVjdG9yeSwgcGFyYW1ldGVyc0Zyb21TeW50aE9wdGlvbnMsIHdyaXRlQ29udGV4dFRvRW52IH0gZnJvbSAnLi9wcml2YXRlL3ByZXBhcmUtc291cmNlJztcbmltcG9ydCB7IFJlYWRhYmxlQ2xvdWRBc3NlbWJseSB9IGZyb20gJy4vcHJpdmF0ZS9yZWFkYWJsZS1hc3NlbWJseSc7XG5pbXBvcnQgdHlwZSB7IElDbG91ZEFzc2VtYmx5U291cmNlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFRvb2xraXRTZXJ2aWNlcyB9IGZyb20gJy4uLy4uL3Rvb2xraXQvcHJpdmF0ZSc7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IsIEFzc2VtYmx5RXJyb3IgfSBmcm9tICcuLi8uLi90b29sa2l0L3Rvb2xraXQtZXJyb3InO1xuaW1wb3J0IHsgbm9VbmRlZmluZWQgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7IElPIH0gZnJvbSAnLi4vaW8vcHJpdmF0ZSc7XG5pbXBvcnQgeyBtaXNzaW5nQ29udGV4dEtleXMsIHRlbXBvcmFyaWx5V3JpdGVFbnYgfSBmcm9tICcuL3ByaXZhdGUvaGVscGVycyc7XG5cbi8qKlxuICogUHJvcGVydGllcyB0aGUgYnVpbGRlciBmdW5jdGlvbiByZWNlaXZlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NlbWJseUJ1aWxkZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgb3V0cHV0IGRpcmVjdG9yeSBpbnRvIHdoaWNoIHRvIHRoZSBidWlsZGVyIGFwcCB3aWxsIGVtaXQgc3ludGhlc2l6ZWQgYXJ0aWZhY3RzLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0ZGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGV4dCBwcm92aWRlZCB0cCB0aGUgYnVpbGRlciBhcHAgdG8gc3ludGhlc2l6ZSB0aGUgQ2xvdWQgQXNzZW1ibHksIGluY2x1ZGluZyBsb29rZWQtdXAgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gdGhhdCB3b3VsZCBub3JtYWxseSBiZSBwYXNzZWQgdG8gYSBDREsgYXBwIHVzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKlxuICAgKiBUaGlzIGNvbnRhaW5zIHZhcmlhYmxlcyBpbnRlbmRlZCBmb3IgdGhlIHVzZXIgcG9ydGlvbiBvZiBhIENESyBhcHAgKG5vdGFibHlcbiAgICogYENES19ERUZBVUxUX0FDQ09VTlRgIGFuZCBgQ0RLX0RFRkFVTFRfUkVHSU9OYCksIHdoaWNoIHlvdSBjYW4gZnJlZWx5IHJlYWQuXG4gICAqXG4gICAqIEl0IGFsc28gY29udGFpbnMgdmFyaWFibGVzIGludGVuZGVkIGZvciB0aGUgQ0RLIFRvb2xraXQgdG8gY29tbXVuaWNhdGUgd2l0aFxuICAgKiB0aGUgaW50ZXJuYWxzIG9mIHRoZSBjb25zdHJ1Y3QgbGlicmFyeSwgbGlrZSBgQ0RLX0RFQlVHYCBhbmRcbiAgICogYENES19DTElfQVNNX1ZFUlNJT05gLiBSZWFkaW5nIHRoZXNlIGxhdHRlciB2YXJpYWJsZXMgaXMgcG9zc2libGUgYnV0IG5vdFxuICAgKiByZWNvbW1lbmRlZCwgYXMgdGhlaXIgbWVhbmluZyBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vKipcbiAqIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBzeW50aGVzaXMgcGFyYW1ldGVycyBhbmQgcHJvZHVjZXMgYSBDbG91ZCBBc3NlbWJseVxuICpcbiAqIE1vc3QgdHlwaWNhbGx5LCB0aGUgcHJvcGVydGllcyBwYXNzZWQgaGVyZSB3aWxsIGJlIHVzZWQgdG8gY29uc3RydWN0IGFcbiAqIGBjZGsuQXBwYCwgYW5kIHRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIHJldHVybiB2YWx1ZSBvZiBgYXBwLnN5bnRoKClgLlxuICovXG5leHBvcnQgdHlwZSBBc3NlbWJseUJ1aWxkZXIgPSAocHJvcHM6IEFzc2VtYmx5QnVpbGRlclByb3BzKSA9PiBQcm9taXNlPGN4c2NoZW1hLklDbG91ZEFzc2VtYmx5PjtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBjcmVhdGluZyBhIENMSSBmcm9tIGFuIEFXUyBDREsgQXBwIGRpcmVjdG9yeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzc2VtYmx5RGlyZWN0b3J5UHJvcHMge1xuICAvKipcbiAgICogT3B0aW9ucyB0byBjb25maWd1cmUgbG9hZGluZyBvZiB0aGUgYXNzZW1ibHkgYWZ0ZXIgaXQgaGFzIGJlZW4gc3ludGhlc2l6ZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvYWRBc3NlbWJseU9wdGlvbnM/OiBMb2FkQXNzZW1ibHlPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBmYWlsIGlmIHRoZSBzeW50aGVzaXplZCBhc3NlbWJseSBjb250YWluc1xuICAgKiBtaXNzaW5nIGNvbnRleHRcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZmFpbE9uTWlzc2luZ0NvbnRleHQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGNyZWF0aW5nIGEgQ0xJIGZyb20gYW4gQVdTIENESyBBcHAgZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZW1ibHlTb3VyY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgc3ludGhlc2l6ZWQgY2xvdWQgYXNzZW1ibHkgaW50byB0aGUgZ2l2ZW4gZGlyZWN0b3J5XG4gICAqXG4gICAqIEBkZWZhdWx0IFwiY2RrLm91dFwiXG4gICAqL1xuICByZWFkb25seSBvdXRkaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gY29udGV4dCBsb29rdXBzLlxuICAgKlxuICAgKiBTeW50aGVzaXMgZmFpbHMgaWYgdGhpcyBpcyBkaXNhYmxlZCBhbmQgY29udGV4dCBsb29rdXBzIG5lZWQgdG8gYmUgcGVyZm9ybWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBsb29rdXBzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBjb250ZXh0IHN0b3JlIGZvciB0aGlzIG9wZXJhdGlvblxuICAgKlxuICAgKiBUaGUgY29udGV4dCBzdG9yZSB3aWxsIGJlIHVzZWQgdG8gc291cmNlIGluaXRpYWwgY29udGV4dCB2YWx1ZXMsXG4gICAqIGFuZCB1cGRhdGVkIHZhbHVlcyB3aWxsIGJlIHN0b3JlZCBoZXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlcGVuZHMgb24gdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dFN0b3JlPzogSUNvbnRleHRTdG9yZTtcblxuICAvKipcbiAgICogT3B0aW9ucyB0aGF0IGFyZSBwYXNzZWQgdGhyb3VnaCB0aGUgY29udGV4dCB0byBhIENESyBhcHAgb24gc3ludGhcbiAgICovXG4gIHJlYWRvbmx5IHN5bnRoT3B0aW9ucz86IEFwcFN5bnRoT3B0aW9ucztcblxuICAvKipcbiAgICogT3B0aW9ucyB0byBjb25maWd1cmUgbG9hZGluZyBvZiB0aGUgYXNzZW1ibHkgYWZ0ZXIgaXQgaGFzIGJlZW4gc3ludGhlc2l6ZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvYWRBc3NlbWJseU9wdGlvbnM/OiBMb2FkQXNzZW1ibHlPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBEZWxldGUgdGhlIGBvdXRkaXJgIHdoZW4gdGhlIGFzc2VtYmx5IGlzIGRpc3Bvc2VkXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYHRydWVgIGlmIGBvdXRkaXJgIGlzIG5vdCBnaXZlbiwgYGZhbHNlYCBvdGhlcndpc2VcbiAgICovXG4gIHJlYWRvbmx5IGRpc3Bvc2VPdXRkaXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBgZnJvbUFzc2VtYmx5QnVpbGRlcmAgQXNzZW1ibHkgU291cmNlIGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnJvbUFzc2VtYmx5QnVpbGRlck9wdGlvbnMgZXh0ZW5kcyBBc3NlbWJseVNvdXJjZVByb3BzIHtcbiAgLyoqXG4gICAqIE11dGF0ZSBjdXJyZW50IHByb2Nlc3MnIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBjb21tdW5pY2F0ZSB3aXRoIENESyBhcHBcbiAgICpcbiAgICogVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGUgVG9vbGtpdCB1c2VzIHRvIHBhc3NcbiAgICogaW5mb3JtYXRpb24gdG8gdGhlIENESyBhcHAuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoZXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlIGN1cnJlbnRcbiAgICogcHJvY2VzcycgZ2xvYmFsIHNoYXJlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYmVmb3JlIHRoZSBidWlsZGVyIGlzIGludm9rZWQsXG4gICAqIGFuZCB5b3UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBlbHNlLiBIb3dldmVyLCBiZWNhdXNlIHRoaXMgbXV0YXRlc1xuICAgKiBzaGFyZWQgc3RhdGUgaXQgaXMgbm90IHNhZmUgdG8gcnVuIG11bHRpcGxlIGJ1aWxkZXJzIGNvbmN1cnJlbnRseS5cbiAgICpcbiAgICogU2V0IHRoaXMgdG8gYGZhbHNlYCB0byBhdm9pZCBtdXRhdGluZyB0aGUgc2hhcmVkIGVudmlyb25tZW50LiBJbnN0ZWFkLFxuICAgKiB5b3Ugd2lsbCBuZWVkIHRvIHBhc3MgdGhlIGBvdXRkaXJgIGFuZCBgY29udGV4dGAgdG8gdGhlIGBBcHBgIGNvbnN0cnVjdG9yXG4gICAqIGRpcmVjdGx5IGluIHlvdXIgYnVpbGRlciwgYW5kIGluc3BlY3QgdGhlIGBlbnZgIG1hcCBkaXJlY3RseVxuICAgKiBmb3IgaW5mb3JtYXRpb24gbGlrZSB0aGUgYENES19ERUZBVUxUX0FDQ09VTlRgIGFuZCBgQ0RLX0RFRkFVTFRfUkVHSU9OYC5cbiAgICpcbiAgICogYGBgdHNcbiAgICogY29uc3QgY3ggPSBhd2FpdCB0b29sa2l0LmZyb21Bc3NlbWJseUJ1aWxkZXIoYXN5bmMgKHByb3BzKSA9PiB7XG4gICAqICAgLy8gSW1wb3J0YW50OiBwYXNzIG9uIHN5bnRoZXNpcyBwYXJhbWV0ZXJzXG4gICAqICAgY29uc3QgYXBwID0gbmV3IGNvcmUuQXBwKHtcbiAgICogICAgIG91dGRpcjogcHJvcHMub3V0ZGlyLFxuICAgKiAgICAgY29udGV4dDogcHJvcHMuY29udGV4dCxcbiAgICogICB9KTtcbiAgICpcbiAgICogICBuZXcgTXlTdGFjayhhcHAsICdNeVN0YWNrJywge1xuICAgKiAgICAgZW52OiB7XG4gICAqICAgICAgIGFjY291bnQ6IHByb3BzLmVudi5DREtfREVGQVVMVF9BQ0NPVU5ULFxuICAgKiAgICAgICByZWdpb246IHByb3BzLmVudi5DREtfREVGQVVMVF9SRUdJT04sXG4gICAqICAgICB9LFxuICAgKiAgIH0pO1xuICAgKlxuICAgKiAgIC8vIC4uLlxuICAgKiB9LCB7XG4gICAqICAgY2xvYmJlckVudjogZmFsc2UsXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgY2xvYmJlckVudj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGBmcm9tQ2RrQXBwYCBBc3NlbWJseSBTb3VyY2UgY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGcm9tQ2RrQXBwT3B0aW9ucyBleHRlbmRzIEFzc2VtYmx5U291cmNlUHJvcHMge1xuICAvKipcbiAgICogRXhlY3V0ZSB0aGUgYXBwbGljYXRpb24gaW4gdGhpcyB3b3JraW5nIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBDdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5XG4gICAqL1xuICByZWFkb25seSB3b3JraW5nRGlyZWN0b3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKlxuICAgKiBUaGVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2lsbCBiZSBzZXQgaW4gYWRkaXRpb24gdG8gdGhlIGVudmlyb25tZW50XG4gICAqIHZhcmlhYmxlcyBjdXJyZW50bHkgc2V0IGluIHRoZSBwcm9jZXNzLiBBIHZhbHVlIG9mIGB1bmRlZmluZWRgIHdpbGxcbiAgICogdW5zZXQgYSBwYXJ0aWN1bGFyIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgZW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPjtcbn1cblxuLyoqXG4gKiBTZXR0aW5ncyB0aGF0IGFyZSBwYXNzZWQgdG8gYSBDREsgYXBwIHZpYSB0aGUgY29udGV4dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcFN5bnRoT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBEZWJ1ZyB0aGUgQ0RLIGFwcC5cbiAgICogTG9ncyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGR1cmluZyBzeW50aGVzaXMsIHN1Y2ggYXMgY3JlYXRpb24gc3RhY2sgdHJhY2VzIG9mIHRva2Vucy5cbiAgICogVGhpcyBhbHNvIHNldHMgdGhlIGBDREtfREVCVUdgIGVudiB2YXJpYWJsZSBhbmQgd2lsbCBzbG93IGRvd24gc3ludGhlc2lzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVidWc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIHRoZSBlbWJlZGRpbmcgb2YgdGhlIFwiYXdzOmNkazpwYXRoXCIgaW4gQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUgbWV0YWRhdGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHBhdGhNZXRhZGF0YT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZSB0aGUgY29sbGVjdGlvbiBhbmQgcmVwb3J0aW5nIG9mIHZlcnNpb24gaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb25SZXBvcnRpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGUgZW5hYmxlZCwgYGF3czphc3NldDp4eHhgIG1ldGFkYXRhIGVudHJpZXMgYXJlIGFkZGVkIHRvIHRoZSB0ZW1wbGF0ZS5cbiAgICpcbiAgICogRGlzYWJsaW5nIHRoaXMgY2FuIGJlIHVzZWZ1bCBpbiBjZXJ0YWluIGNhc2VzIGxpa2UgaW50ZWdyYXRpb24gdGVzdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0TWV0YWRhdGE/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgYXNzZXQgc3RhZ2luZy5cbiAgICpcbiAgICogRGlzYWJsaW5nIGFzc2V0IHN0YWdpbmcgbWVhbnMgdGhhdCBjb3B5YWJsZSBhc3NldHMgd2lsbCBub3QgYmUgY29waWVkIHRvIHRoZVxuICAgKiBvdXRwdXQgZGlyZWN0b3J5IGFuZCB3aWxsIGJlIHJlZmVyZW5jZWQgd2l0aCBhYnNvbHV0ZSBwYXRocy5cbiAgICpcbiAgICogTm90IGNvcGllZCB0byB0aGUgb3V0cHV0IGRpcmVjdG9yeTogdGhpcyBpcyBzbyB1c2VycyBjYW4gaXRlcmF0ZSBvbiB0aGVcbiAgICogTGFtYmRhIHNvdXJjZSBhbmQgcnVuIFNBTSBDTEkgd2l0aG91dCBoYXZpbmcgdG8gcmUtcnVuIENESyAobm90ZTogd2VcbiAgICogY2Fubm90IGFjaGlldmUgdGhpcyBmb3IgYnVuZGxlZCBhc3NldHMsIGlmIGFzc2V0cyBhcmUgYnVuZGxlZCB0aGV5XG4gICAqIHdpbGwgaGF2ZSB0byByZS1ydW4gQ0RLIENMSSB0byByZS1idW5kbGUgdXBkYXRlZCB2ZXJzaW9ucykuXG4gICAqXG4gICAqIEFic29sdXRlIHBhdGg6IFNBTSBDTEkgZXhwZWN0cyBgY3dkYC1yZWxhdGl2ZSBwYXRocyBpbiBhIHJlc291cmNlJ3NcbiAgICogYGF3czphc3NldDpwYXRoYCBtZXRhZGF0YS4gSW4gb3JkZXIgdG8gYmUgcHJlZGljdGFibGUsIHdlIHdpbGwgYWx3YXlzIG91dHB1dFxuICAgKiBhYnNvbHV0ZSBwYXRocy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRTdGFnaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2VsZWN0IHdoaWNoIHN0YWNrcyBzaG91bGQgaGF2ZSBhc3NldCBidW5kbGluZyBlbmFibGVkXG4gICAqXG4gICAqIEBkZWZhdWx0IFtcIioqXCJdIC0gYWxsIHN0YWNrc1xuICAgKi9cbiAgcmVhZG9ubHkgYnVuZGxpbmdGb3JTdGFja3M/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyB0byBjb25maWd1cmUgbG9hZGluZyBvZiB0aGUgYXNzZW1ibHkgYWZ0ZXIgaXQgaGFzIGJlZW4gc3ludGhlc2l6ZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkQXNzZW1ibHlPcHRpb25zIHtcbiAgLyoqXG4gICAqIENoZWNrIHRoZSBUb29sa2l0IHN1cHBvcnRzIHRoZSBDbG91ZCBBc3NlbWJseSBTY2hlbWEgdmVyc2lvblxuICAgKlxuICAgKiBXaGVuIGRpc2FibGVkLCBhbGxvd3MgdG8gVG9vbGtpdCB0byByZWFkIGEgbmV3ZXIgY2xvdWQgYXNzZW1ibHkgdGhhbiB0aGUgQ1ggQVBJIGlzIGRlc2lnbmVkXG4gICAqIHRvIHN1cHBvcnQuIFlvdXIgYXBwbGljYXRpb24gbWF5IG5vdCBiZSBhd2FyZSBvZiBhbGwgZmVhdHVyZXMgdGhhdCBpbiB1c2UgaW4gdGhlIENsb3VkIEFzc2VtYmx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjaGVja1ZlcnNpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBlbnVtcyB0byBvbmx5IGhhdmUga25vd24gdmFsdWVzXG4gICAqXG4gICAqIFdoZW4gZGlzYWJsZWQsIHRoZSBUb29sa2l0IG1heSByZWFkIGVudW0gdmFsdWVzIGl0IGRvZXNuJ3Qga25vdyBhYm91dCB5ZXQuXG4gICAqIFlvdSB3aWxsIGhhdmUgdG8gbWFrZSBzdXJlIHRvIGFsd2F5cyBjaGVjayB0aGUgdmFsdWVzIG9mIGVudW1zIHlvdSBlbmNvdW50ZXIgaW4gdGhlIG1hbmlmZXN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjaGVja0VudW1zPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENsb3VkQXNzZW1ibHlTb3VyY2VCdWlsZGVyIHtcbiAgLyoqXG4gICAqIEhlbHBlciB0byBwcm92aWRlIHRoZSBDbG91ZEFzc2VtYmx5U291cmNlQnVpbGRlciB3aXRoIHJlcXVpcmVkIHRvb2xraXQgc2VydmljZXNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc291cmNlQnVpbGRlclNlcnZpY2VzKCk6IFByb21pc2U8VG9vbGtpdFNlcnZpY2VzPjtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgQ2xvdWQgQXNzZW1ibHkgZnJvbSBhIENsb3VkIEFzc2VtYmx5IGJ1aWxkZXIgZnVuY3Rpb24uXG4gICAqXG4gICAqICMjIE91dGRpclxuICAgKlxuICAgKiBJZiBubyBvdXRwdXQgZGlyZWN0b3J5IGlzIGdpdmVuLCBpdCB3aWxsIHN5bnRoZXNpemUgaW50byBhIHRlbXBvcmFyeSBzeXN0ZW1cbiAgICogZGlyZWN0b3J5LiBUaGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSB3aWxsIGJlIGNsZWFuZWQgdXAsIHVubGVzc1xuICAgKiBgZGlzcG9zZU91dGRpcjogZmFsc2VgLlxuICAgKlxuICAgKiBBIHdyaXRlIGxvY2sgd2lsbCBiZSBhY3F1aXJlZCBvbiB0aGUgb3V0cHV0IGRpcmVjdG9yeSBmb3IgdGhlIGR1cmF0aW9uIG9mXG4gICAqIHRoZSBDREsgYXBwIHN5bnRoZXNpcyAod2hpY2ggbWVhbnMgdGhhdCBubyB0d28gYXBwcyBjYW4gc3ludGhlc2l6ZSBhdCB0aGVcbiAgICogc2FtZSB0aW1lKSwgYW5kIGFmdGVyIHN5bnRoZXNpcyBhIHJlYWQgbG9jayB3aWxsIGJlIGFjcXVpcmVkIG9uIHRoZVxuICAgKiBkaXJlY3RvcnkuIFRoaXMgbWVhbnMgdGhhdCB3aGlsZSB0aGUgQ2xvdWRBc3NlbWJseSBpcyBiZWluZyB1c2VkLCBubyBDREtcbiAgICogYXBwIHN5bnRoZXNpcyBjYW4gdGFrZSBwbGFjZSBpbnRvIHRoYXQgZGlyZWN0b3J5LlxuICAgKlxuICAgKiAjIyBDb250ZXh0XG4gICAqXG4gICAqIElmIG5vIGBjb250ZXh0U3RvcmVgIGlzIGdpdmVuLCBhIGBNZW1vcnlDb250ZXh0YCB3aWxsIGJlIHVzZWQuIFRoaXMgbWVhbnNcbiAgICogbm8gcHJvdmlkZXIgbG9va3VwcyB3aWxsIGJlIHBlcnNpc3RlZCBhbnl3aGVyZSBieSBkZWZhdWx0LiBVc2UgYSBkaWZmZXJlbnRcbiAgICogdHlwZSBvZiBjb250ZXh0IHN0b3JlIGlmIHlvdSB3YW50IHBlcnNpc3RlbmNlIGJldHdlZW4gc3ludGggb3BlcmF0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGJ1aWxkZXIgLSB0aGUgYnVpbGRlciBmdW5jdGlvblxuICAgKiBAcGFyYW0gcHJvcHMgLSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllc1xuICAgKiBAcmV0dXJucyB0aGUgQ2xvdWRBc3NlbWJseSBzb3VyY2VcbiAgICovXG4gIHB1YmxpYyBhc3luYyBmcm9tQXNzZW1ibHlCdWlsZGVyKFxuICAgIGJ1aWxkZXI6IEFzc2VtYmx5QnVpbGRlcixcbiAgICBwcm9wczogRnJvbUFzc2VtYmx5QnVpbGRlck9wdGlvbnMgPSB7fSxcbiAgKTogUHJvbWlzZTxJQ2xvdWRBc3NlbWJseVNvdXJjZT4ge1xuICAgIGNvbnN0IHNlcnZpY2VzID0gYXdhaXQgdGhpcy5zb3VyY2VCdWlsZGVyU2VydmljZXMoKTtcbiAgICBjb25zdCBjb250ZXh0U3RvcmUgPSBwcm9wcy5jb250ZXh0U3RvcmUgPz8gbmV3IE1lbW9yeUNvbnRleHQoKTtcbiAgICBjb25zdCBjb250ZXh0QXNzZW1ibHlQcm9wczogQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVByb3BzID0ge1xuICAgICAgc2VydmljZXMsXG4gICAgICBjb250ZXh0U3RvcmUsXG4gICAgICBsb29rdXBzOiBwcm9wcy5sb29rdXBzLFxuICAgIH07XG5cbiAgICBjb25zdCBvdXRkaXIgPSBwcm9wcy5vdXRkaXIgPyBwYXRoLnJlc29sdmUocHJvcHMub3V0ZGlyKSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBuZXcgQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVNvdXJjZShcbiAgICAgIHtcbiAgICAgICAgcHJvZHVjZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IHVzaW5nIGV4ZWN1dGlvbiA9IGF3YWl0IEV4ZWN1dGlvbkVudmlyb25tZW50LmNyZWF0ZShzZXJ2aWNlcywgeyBvdXRkaXIgfSk7XG5cbiAgICAgICAgICBjb25zdCBzeW50aFBhcmFtcyA9IHBhcmFtZXRlcnNGcm9tU3ludGhPcHRpb25zKHByb3BzLnN5bnRoT3B0aW9ucyk7XG5cbiAgICAgICAgICBjb25zdCBmdWxsQ29udGV4dCA9IHtcbiAgICAgICAgICAgIC4uLmF3YWl0IGNvbnRleHRTdG9yZS5yZWFkKCksXG4gICAgICAgICAgICAuLi5zeW50aFBhcmFtcy5jb250ZXh0LFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBhd2FpdCBzZXJ2aWNlcy5pb0hlbHBlci5kZWZhdWx0cy5kZWJ1Zyhmb3JtYXQoJ2NvbnRleHQ6JywgZnVsbENvbnRleHQpKTtcblxuICAgICAgICAgIGNvbnN0IGVudiA9IG5vVW5kZWZpbmVkKHtcbiAgICAgICAgICAgIC8vIFZlcnNpb25pbmcsIG91dGRpciwgZGVmYXVsdCBhY2NvdW50IGFuZCByZWdpb25cbiAgICAgICAgICAgIC4uLmF3YWl0IGV4ZWN1dGlvbi5kZWZhdWx0RW52VmFycygpLFxuICAgICAgICAgICAgLy8gRW52aXJvbm1lbnQgdmFyaWFibGVzIGRlcml2ZWQgZnJvbSBzZXR0aW5nc1xuICAgICAgICAgICAgLi4uc3ludGhQYXJhbXMuZW52LFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgY2xlYW51cENvbnRleHRUZW1wID0gd3JpdGVDb250ZXh0VG9FbnYoZW52LCBmdWxsQ29udGV4dCwgJ2Vudi1pcy1jb21wbGV0ZScpO1xuICAgICAgICAgIHVzaW5nIF9jbGVhbnVwRW52ID0gKHByb3BzLmNsb2JiZXJFbnYgPz8gdHJ1ZSkgPyB0ZW1wb3JhcmlseVdyaXRlRW52KGVudikgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgbGV0IGFzc2VtYmx5O1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhc3NlbWJseSA9IGF3YWl0IGJ1aWxkZXIoe1xuICAgICAgICAgICAgICBvdXRkaXI6IGV4ZWN1dGlvbi5vdXRkaXIsXG4gICAgICAgICAgICAgIGNvbnRleHQ6IGZ1bGxDb250ZXh0LFxuICAgICAgICAgICAgICBlbnYsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICAgICAgLy8gcmUtdGhyb3cgdG9vbGtpdCBlcnJvcnMgdW5jaGFuZ2VkXG4gICAgICAgICAgICBpZiAoVG9vbGtpdEVycm9yLmlzVG9vbGtpdEVycm9yKGVycm9yKSkge1xuICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgd3JhcCBpbnRvIGFuIGFzc2VtYmx5IGVycm9yXG4gICAgICAgICAgICB0aHJvdyBBc3NlbWJseUVycm9yLndpdGhDYXVzZSgnQXNzZW1ibHkgYnVpbGRlciBmYWlsZWQnLCBlcnJvcik7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGF3YWl0IGNsZWFudXBDb250ZXh0VGVtcCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENvbnZlcnQgd2hhdCB3ZSBnb3QgdG8gdGhlIGRlZmluaXRlbHkgY29ycmVjdCB0eXBlIHdlJ3JlIGV4cGVjdGluZywgYSBjeGFwaS5DbG91ZEFzc2VtYmx5XG4gICAgICAgICAgY29uc3QgYXNtID0gY3hhcGkuQ2xvdWRBc3NlbWJseS5pc0Nsb3VkQXNzZW1ibHkoYXNzZW1ibHkpXG4gICAgICAgICAgICA/IGFzc2VtYmx5XG4gICAgICAgICAgICA6IGF3YWl0IGFzc2VtYmx5RnJvbURpcmVjdG9yeShhc3NlbWJseS5kaXJlY3RvcnksIHNlcnZpY2VzLmlvSGVscGVyLCBwcm9wcy5sb2FkQXNzZW1ibHlPcHRpb25zKTtcblxuICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCBleGVjdXRpb24ubWFya1N1Y2Nlc3NmdWwoKTtcbiAgICAgICAgICBjb25zdCBkZWxldGVPbkRpc3Bvc2UgPSBwcm9wcy5kaXNwb3NlT3V0ZGlyID8/IGV4ZWN1dGlvbi5vdXREaXJJc1RlbXBvcmFyeTtcbiAgICAgICAgICByZXR1cm4gbmV3IFJlYWRhYmxlQ2xvdWRBc3NlbWJseShhc20sIHN1Y2Nlc3MucmVhZExvY2ssIHsgZGVsZXRlT25EaXNwb3NlIH0pO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGNvbnRleHRBc3NlbWJseVByb3BzLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIENsb3VkIEFzc2VtYmx5IGZyb20gYW4gZXhpc3RpbmcgYXNzZW1ibHkgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBBIHJlYWQgbG9jayB3aWxsIGJlIGFjcXVpcmVkIGZvciB0aGUgZGlyZWN0b3J5LiBUaGlzIG1lYW5zIHRoYXQgd2hpbGVcbiAgICogdGhlIENsb3VkQXNzZW1ibHkgaXMgYmVpbmcgdXNlZCwgbm8gQ0RLIGFwcCBzeW50aGVzaXMgY2FuIHRha2UgcGxhY2UgaW50b1xuICAgKiB0aGF0IGRpcmVjdG9yeS5cbiAgICpcbiAgICogQHBhcmFtIGRpcmVjdG9yeSAtIGRpcmVjdG9yeSB0aGUgZGlyZWN0b3J5IG9mIGEgYWxyZWFkeSBwcm9kdWNlZCBDbG91ZCBBc3NlbWJseS5cbiAgICogQHJldHVybnMgdGhlIENsb3VkQXNzZW1ibHkgc291cmNlXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZnJvbUFzc2VtYmx5RGlyZWN0b3J5KGRpcmVjdG9yeTogc3RyaW5nLCBwcm9wczogQXNzZW1ibHlEaXJlY3RvcnlQcm9wcyA9IHt9KTogUHJvbWlzZTxJQ2xvdWRBc3NlbWJseVNvdXJjZT4ge1xuICAgIGNvbnN0IHNlcnZpY2VzOiBUb29sa2l0U2VydmljZXMgPSBhd2FpdCB0aGlzLnNvdXJjZUJ1aWxkZXJTZXJ2aWNlcygpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFzeW5jIHByb2R1Y2UoKSB7XG4gICAgICAgIGF3YWl0IHNlcnZpY2VzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfQVNTRU1CTFlfSTAxNTAubXNnKCctLWFwcCBwb2ludHMgdG8gYSBjbG91ZCBhc3NlbWJseSwgc28gd2UgYnlwYXNzIHN5bnRoJykpO1xuICAgICAgICBjb25zdCByZWFkTG9jayA9IGF3YWl0IG5ldyBSV0xvY2soZGlyZWN0b3J5KS5hY3F1aXJlUmVhZCgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGFzbSA9IGF3YWl0IGFzc2VtYmx5RnJvbURpcmVjdG9yeShkaXJlY3RvcnksIHNlcnZpY2VzLmlvSGVscGVyLCBwcm9wcy5sb2FkQXNzZW1ibHlPcHRpb25zKTtcbiAgICAgICAgICBjb25zdCBhc3NlbWJseSA9IG5ldyBSZWFkYWJsZUNsb3VkQXNzZW1ibHkoYXNtLCByZWFkTG9jaywgeyBkZWxldGVPbkRpc3Bvc2U6IGZhbHNlIH0pO1xuICAgICAgICAgIGlmIChhc3NlbWJseS5jbG91ZEFzc2VtYmx5Lm1hbmlmZXN0Lm1pc3NpbmcgJiYgYXNzZW1ibHkuY2xvdWRBc3NlbWJseS5tYW5pZmVzdC5taXNzaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5mYWlsT25NaXNzaW5nQ29udGV4dCA/PyB0cnVlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG1pc3NpbmdLZXlzU2V0ID0gbWlzc2luZ0NvbnRleHRLZXlzKGFzc2VtYmx5LmNsb3VkQXNzZW1ibHkubWFuaWZlc3QubWlzc2luZyk7XG4gICAgICAgICAgICAgIGNvbnN0IG1pc3NpbmdLZXlzID0gQXJyYXkuZnJvbShtaXNzaW5nS2V5c1NldCk7XG4gICAgICAgICAgICAgIHRocm93IEFzc2VtYmx5RXJyb3Iud2l0aENhdXNlKFxuICAgICAgICAgICAgICAgICdBc3NlbWJseSBjb250YWlucyBtaXNzaW5nIGNvbnRleHQuICcgK1xuICAgICAgICAgICAgICAgICAgXCJNYWtlIHN1cmUgYWxsIG5lY2Vzc2FyeSBjb250ZXh0IGlzIGFscmVhZHkgaW4gJ2Nkay5jb250ZXh0Lmpzb24nIGJ5IHJ1bm5pbmcgJ2NkayBzeW50aCcgb24gYSBtYWNoaW5lIHdpdGggc3VmZmljaWVudCBBV1MgY3JlZGVudGlhbHMgYW5kIGNvbW1pdHRpbmcgdGhlIHJlc3VsdC4gXCIgK1xuICAgICAgICAgICAgICAgICAgYE1pc3NpbmcgY29udGV4dCBrZXlzOiAnJHttaXNzaW5nS2V5cy5qb2luKCcsICcpfSdgLFxuICAgICAgICAgICAgICAgICdFcnJvciBwcm9kdWNpbmcgYXNzZW1ibHknLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IENhY2hlZENsb3VkQXNzZW1ibHkoYXNzZW1ibHkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgYXdhaXQgcmVhZExvY2sucmVsZWFzZSgpO1xuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogVXNlIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYW4gQVdTIENESyBhcHAgYXMgc291cmNlLlxuICAgKlxuICAgKiBUaGUgc3VicHJvY2VzcyB3aWxsIGV4ZWN1dGUgaW4gYHdvcmtpbmdEaXJlY3RvcnlgLCB3aGljaCBkZWZhdWx0cyB0b1xuICAgKiB0aGUgY3VycmVudCBwcm9jZXNzJyB3b3JraW5nIGRpcmVjdG9yeSBpZiBub3QgZ2l2ZW4uXG4gICAqXG4gICAqICMjIE91dGRpclxuICAgKlxuICAgKiBJZiBhbiBvdXRwdXQgZGlyZWN0b3J5IGlzIHN1cHBsaWVkLCByZWxhdGl2ZSBwYXRocyBhcmUgZXZhbHVhdGVkIHdpdGhcbiAgICogcmVzcGVjdCB0byB0aGUgY3VycmVudCBwcm9jZXNzJyB3b3JraW5nIGRpcmVjdG9yeS4gSWYgYW4gb3V0cHV0IGRpcmVjdG9yeVxuICAgKiBpcyBub3Qgc3VwcGxpZWQsIHRoZSBkZWZhdWx0IGlzIGEgYGNkay5vdXRgIGRpcmVjdG9yeSB1bmRlcm5lYXRoXG4gICAqIGB3b3JraW5nRGlyZWN0b3J5YC4gVGhlIG91dHB1dCBkaXJlY3Rvcnkgd2lsbCBub3QgYmUgY2xlYW5lZCB1cCB1bmxlc3NcbiAgICogYGRpc3Bvc2VPdXRkaXI6IHRydWVgLlxuICAgKlxuICAgKiBBIHdyaXRlIGxvY2sgd2lsbCBiZSBhY3F1aXJlZCBvbiB0aGUgb3V0cHV0IGRpcmVjdG9yeSBmb3IgdGhlIGR1cmF0aW9uIG9mXG4gICAqIHRoZSBDREsgYXBwIHN5bnRoZXNpcyAod2hpY2ggbWVhbnMgdGhhdCBubyB0d28gYXBwcyBjYW4gc3ludGhlc2l6ZSBhdCB0aGVcbiAgICogc2FtZSB0aW1lKSwgYW5kIGFmdGVyIHN5bnRoZXNpcyBhIHJlYWQgbG9jayB3aWxsIGJlIGFjcXVpcmVkIG9uIHRoZVxuICAgKiBkaXJlY3RvcnkuICBUaGlzIG1lYW5zIHRoYXQgd2hpbGUgdGhlIENsb3VkQXNzZW1ibHkgaXMgYmVpbmcgdXNlZCwgbm8gQ0RLXG4gICAqIGFwcCBzeW50aGVzaXMgY2FuIHRha2UgcGxhY2UgaW50byB0aGF0IGRpcmVjdG9yeS5cbiAgICpcbiAgICogIyMgQ29udGV4dFxuICAgKlxuICAgKiBJZiBubyBgY29udGV4dFN0b3JlYCBpcyBnaXZlbiwgYSBgQ2RrQXBwTXVsdGlDb250ZXh0YCB3aWxsIGJlIHVzZWQsIGluaXRpYWxpemVkXG4gICAqIHRvIHRoZSBhcHAncyBgd29ya2luZ0RpcmVjdG9yeWAuIFRoaXMgbWVhbnMgdGhhdCBjb250ZXh0IHdpbGwgYmUgbG9hZGVkIGZyb21cbiAgICogYWxsIHRoZSBDREsncyBkZWZhdWx0IGNvbnRleHQgc291cmNlcywgYW5kIHVwZGF0ZXMgd2lsbCBiZSB3cml0dGVuIHRvXG4gICAqIGBjZGsuY29udGV4dC5qc29uYC5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIC0gYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMgdGhlIENsb3VkQXNzZW1ibHkgc291cmNlXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZnJvbUNka0FwcChhcHA6IHN0cmluZywgcHJvcHM6IEZyb21DZGtBcHBPcHRpb25zID0ge30pOiBQcm9taXNlPElDbG91ZEFzc2VtYmx5U291cmNlPiB7XG4gICAgY29uc3Qgc2VydmljZXM6IFRvb2xraXRTZXJ2aWNlcyA9IGF3YWl0IHRoaXMuc291cmNlQnVpbGRlclNlcnZpY2VzKCk7XG4gICAgY29uc3Qgd29ya2luZ0RpcmVjdG9yeSA9IHByb3BzLndvcmtpbmdEaXJlY3RvcnkgPz8gcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCBvdXRkaXIgPSBwcm9wcy5vdXRkaXIgPyBwYXRoLnJlc29sdmUocHJvcHMub3V0ZGlyKSA6IHBhdGgucmVzb2x2ZSh3b3JraW5nRGlyZWN0b3J5LCAnY2RrLm91dCcpO1xuXG4gICAgY29uc3QgY29udGV4dFN0b3JlID0gcHJvcHMuY29udGV4dFN0b3JlID8/IG5ldyBDZGtBcHBNdWx0aUNvbnRleHQod29ya2luZ0RpcmVjdG9yeSk7XG5cbiAgICBjb25zdCBjb250ZXh0QXNzZW1ibHlQcm9wczogQ29udGV4dEF3YXJlQ2xvdWRBc3NlbWJseVByb3BzID0ge1xuICAgICAgc2VydmljZXMsXG4gICAgICBjb250ZXh0U3RvcmUsXG4gICAgICBsb29rdXBzOiBwcm9wcy5sb29rdXBzLFxuICAgIH07XG5cbiAgICByZXR1cm4gbmV3IENvbnRleHRBd2FyZUNsb3VkQXNzZW1ibHlTb3VyY2UoXG4gICAgICB7XG4gICAgICAgIHByb2R1Y2U6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAvLyBAdG9kbyBidWlsZFxuICAgICAgICAgIC8vIGNvbnN0IGJ1aWxkID0gdGhpcy5wcm9wcy5jb25maWd1cmF0aW9uLnNldHRpbmdzLmdldChbJ2J1aWxkJ10pO1xuICAgICAgICAgIC8vIGlmIChidWlsZCkge1xuICAgICAgICAgIC8vICAgYXdhaXQgZXhlY0luQ2hpbGRQcm9jZXNzKGJ1aWxkLCB7IGN3ZDogcHJvcHMud29ya2luZ0RpcmVjdG9yeSB9KTtcbiAgICAgICAgICAvLyB9XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZnMubWtkaXJwU3luYyhvdXRkaXIpO1xuICAgICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgQ291bGQgbm90IGNyZWF0ZSBvdXRwdXQgZGlyZWN0b3J5IGF0ICcke291dGRpcn0nICgke2UubWVzc2FnZX0pLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGF3YWl0IHVzaW5nIGV4ZWN1dGlvbiA9IGF3YWl0IEV4ZWN1dGlvbkVudmlyb25tZW50LmNyZWF0ZShzZXJ2aWNlcywgeyBvdXRkaXIgfSk7XG5cbiAgICAgICAgICBjb25zdCBjb21tYW5kTGluZSA9IGF3YWl0IGV4ZWN1dGlvbi5ndWVzc0V4ZWN1dGFibGUoYXBwKTtcblxuICAgICAgICAgIGNvbnN0IHN5bnRoUGFyYW1zID0gcGFyYW1ldGVyc0Zyb21TeW50aE9wdGlvbnMocHJvcHMuc3ludGhPcHRpb25zKTtcblxuICAgICAgICAgIGNvbnN0IGZ1bGxDb250ZXh0ID0ge1xuICAgICAgICAgICAgLi4uYXdhaXQgY29udGV4dFN0b3JlLnJlYWQoKSxcbiAgICAgICAgICAgIC4uLnN5bnRoUGFyYW1zLmNvbnRleHQsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGF3YWl0IHNlcnZpY2VzLmlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKGZvcm1hdCgnY29udGV4dDonLCBmdWxsQ29udGV4dCkpO1xuXG4gICAgICAgICAgY29uc3QgZW52ID0gbm9VbmRlZmluZWQoe1xuICAgICAgICAgICAgLy8gTmVlZCB0byBzdGFydCB3aXRoIGZ1bGwgZW52IG9mIGB3cml0ZUNvbnRleHRUb0VudmAgd2lsbCBub3QgYmUgYWJsZSB0byBkbyB0aGUgc2l6ZVxuICAgICAgICAgICAgLy8gY2FsY3VsYXRpb24gY29ycmVjdGx5LlxuICAgICAgICAgICAgLi4ucHJvY2Vzcy5lbnYsXG4gICAgICAgICAgICAvLyBVc2VyIGdhdmUgdXMgc29tZXRoaW5nXG4gICAgICAgICAgICAuLi5wcm9wcy5lbnYsXG4gICAgICAgICAgICAvLyBWZXJzaW9uaW5nLCBvdXRkaXIsIGRlZmF1bHQgYWNjb3VudCBhbmQgcmVnaW9uXG4gICAgICAgICAgICAuLi5hd2FpdCBleGVjdXRpb24uZGVmYXVsdEVudlZhcnMoKSxcbiAgICAgICAgICAgIC8vIEVudmlyb25tZW50IHZhcmlhYmxlcyBkZXJpdmVkIGZyb20gc2V0dGluZ3NcbiAgICAgICAgICAgIC4uLnN5bnRoUGFyYW1zLmVudixcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBjbGVhbnVwVGVtcCA9IHdyaXRlQ29udGV4dFRvRW52KGVudiwgZnVsbENvbnRleHQsICdlbnYtaXMtY29tcGxldGUnKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgZXhlY0luQ2hpbGRQcm9jZXNzKGNvbW1hbmRMaW5lLmpvaW4oJyAnKSwge1xuICAgICAgICAgICAgICBldmVudFB1Ymxpc2hlcjogYXN5bmMgKHR5cGUsIGxpbmUpID0+IHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ2RhdGFfc3Rkb3V0JzpcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgc2VydmljZXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19BU1NFTUJMWV9JMTAwMS5tc2cobGluZSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ2RhdGFfc3RkZXJyJzpcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgc2VydmljZXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19BU1NFTUJMWV9FMTAwMi5tc2cobGluZSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGVudixcbiAgICAgICAgICAgICAgY3dkOiB3b3JraW5nRGlyZWN0b3J5LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGF3YWl0IGNsZWFudXBUZW1wKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYXNtID0gYXdhaXQgYXNzZW1ibHlGcm9tRGlyZWN0b3J5KG91dGRpciwgc2VydmljZXMuaW9IZWxwZXIsIHByb3BzLmxvYWRBc3NlbWJseU9wdGlvbnMpO1xuXG4gICAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IGV4ZWN1dGlvbi5tYXJrU3VjY2Vzc2Z1bCgpO1xuICAgICAgICAgIGNvbnN0IGRlbGV0ZU9uRGlzcG9zZSA9IHByb3BzLmRpc3Bvc2VPdXRkaXIgPz8gZXhlY3V0aW9uLm91dERpcklzVGVtcG9yYXJ5O1xuICAgICAgICAgIHJldHVybiBuZXcgUmVhZGFibGVDbG91ZEFzc2VtYmx5KGFzbSwgc3VjY2Vzcy5yZWFkTG9jaywgeyBkZWxldGVPbkRpc3Bvc2UgfSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgY29udGV4dEFzc2VtYmx5UHJvcHMsXG4gICAgKTtcbiAgfVxufVxuXG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { AssetManifest } from '@aws-cdk/cdk-assets-lib';
|
|
1
2
|
import * as cxschema from '@aws-cdk/cloud-assembly-schema';
|
|
2
|
-
import { AssetManifest } from 'cdk-assets';
|
|
3
3
|
export declare class AssetManifestBuilder {
|
|
4
4
|
private readonly manifest;
|
|
5
5
|
addFileAsset(id: string, source: cxschema.FileSource, destination: cxschema.FileDestination): void;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AssetManifestBuilder = void 0;
|
|
4
|
+
const cdk_assets_lib_1 = require("@aws-cdk/cdk-assets-lib");
|
|
4
5
|
const cxschema = require("@aws-cdk/cloud-assembly-schema");
|
|
5
|
-
const cdk_assets_1 = require("cdk-assets");
|
|
6
6
|
class AssetManifestBuilder {
|
|
7
7
|
manifest = {
|
|
8
8
|
version: cxschema.Manifest.version(),
|
|
@@ -26,8 +26,8 @@ class AssetManifestBuilder {
|
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
28
|
toManifest(directory) {
|
|
29
|
-
return new
|
|
29
|
+
return new cdk_assets_lib_1.AssetManifest(directory, this.manifest);
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
exports.AssetManifestBuilder = AssetManifestBuilder;
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtbWFuaWZlc3QtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFzc2V0LW1hbmlmZXN0LWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNERBQXdEO0FBQ3hELDJEQUEyRDtBQUUzRCxNQUFhLG9CQUFvQjtJQUNkLFFBQVEsR0FBMkI7UUFDbEQsT0FBTyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO1FBQ3BDLEtBQUssRUFBRSxFQUFFO1FBQ1QsWUFBWSxFQUFFLEVBQUU7S0FDakIsQ0FBQztJQUVLLFlBQVksQ0FBQyxFQUFVLEVBQUUsTUFBMkIsRUFBRSxXQUFxQztRQUNoRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQU0sQ0FBQyxFQUFFLENBQUMsR0FBRztZQUN6QixNQUFNO1lBQ04sWUFBWSxFQUFFO2dCQUNaLE9BQU8sRUFBRSxXQUFXO2FBQ3JCO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxFQUFVLEVBQUUsTUFBa0MsRUFBRSxXQUE0QztRQUNySCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQWEsQ0FBQyxFQUFFLENBQUMsR0FBRztZQUNoQyxNQUFNO1lBQ04sWUFBWSxFQUFFO2dCQUNaLE9BQU8sRUFBRSxXQUFXO2FBQ3JCO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxVQUFVLENBQUMsU0FBaUI7UUFDakMsT0FBTyxJQUFJLDhCQUFhLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0Y7QUE1QkQsb0RBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNzZXRNYW5pZmVzdCB9IGZyb20gJ0Bhd3MtY2RrL2Nkay1hc3NldHMtbGliJztcbmltcG9ydCAqIGFzIGN4c2NoZW1hIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5cbmV4cG9ydCBjbGFzcyBBc3NldE1hbmlmZXN0QnVpbGRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWFuaWZlc3Q6IGN4c2NoZW1hLkFzc2V0TWFuaWZlc3QgPSB7XG4gICAgdmVyc2lvbjogY3hzY2hlbWEuTWFuaWZlc3QudmVyc2lvbigpLFxuICAgIGZpbGVzOiB7fSxcbiAgICBkb2NrZXJJbWFnZXM6IHt9LFxuICB9O1xuXG4gIHB1YmxpYyBhZGRGaWxlQXNzZXQoaWQ6IHN0cmluZywgc291cmNlOiBjeHNjaGVtYS5GaWxlU291cmNlLCBkZXN0aW5hdGlvbjogY3hzY2hlbWEuRmlsZURlc3RpbmF0aW9uKSB7XG4gICAgdGhpcy5tYW5pZmVzdC5maWxlcyFbaWRdID0ge1xuICAgICAgc291cmNlLFxuICAgICAgZGVzdGluYXRpb25zOiB7XG4gICAgICAgIGN1cnJlbnQ6IGRlc3RpbmF0aW9uLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFkZERvY2tlckltYWdlQXNzZXQoaWQ6IHN0cmluZywgc291cmNlOiBjeHNjaGVtYS5Eb2NrZXJJbWFnZVNvdXJjZSwgZGVzdGluYXRpb246IGN4c2NoZW1hLkRvY2tlckltYWdlRGVzdGluYXRpb24pIHtcbiAgICB0aGlzLm1hbmlmZXN0LmRvY2tlckltYWdlcyFbaWRdID0ge1xuICAgICAgc291cmNlLFxuICAgICAgZGVzdGluYXRpb25zOiB7XG4gICAgICAgIGN1cnJlbnQ6IGRlc3RpbmF0aW9uLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHRvTWFuaWZlc3QoZGlyZWN0b3J5OiBzdHJpbmcpOiBBc3NldE1hbmlmZXN0IHtcbiAgICByZXR1cm4gbmV3IEFzc2V0TWFuaWZlc3QoZGlyZWN0b3J5LCB0aGlzLm1hbmlmZXN0KTtcbiAgfVxufVxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import type { ClientOptions, EventType, Account, AssetManifest, IAws, IECRClient, IPublishProgress, IPublishProgressListener, IS3Client, ISecretsManagerClient } from '@aws-cdk/cdk-assets-lib';
|
|
1
2
|
import { type Environment } from '@aws-cdk/cx-api';
|
|
2
|
-
import type { ClientOptions, EventType, Account, AssetManifest, IAws, IECRClient, IPublishProgress, IPublishProgressListener, IS3Client, ISecretsManagerClient } from 'cdk-assets';
|
|
3
3
|
import type { SdkProvider } from '../aws-auth/private';
|
|
4
4
|
import type { IoHelper } from '../io/private';
|
|
5
5
|
interface PublishAssetsOptions {
|