cdk-import 0.2.153 → 0.2.154
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/lib/index.js
CHANGED
|
@@ -26,8 +26,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.importProducts = exports.importProduct = exports.importResourceType = void 0;
|
|
27
27
|
const fs = __importStar(require("fs"));
|
|
28
28
|
const path = __importStar(require("path"));
|
|
29
|
+
const caseutil = __importStar(require("case"));
|
|
29
30
|
const cfn_registry_1 = require("./cfn-registry");
|
|
30
31
|
const cfn_resource_generator_1 = require("./cfn-resource-generator");
|
|
32
|
+
const sc_construct_generator_1 = require("./sc-construct-generator");
|
|
31
33
|
const service_catalog_1 = require("./service-catalog");
|
|
32
34
|
/**
|
|
33
35
|
* Entry point to import CFN resource types
|
|
@@ -57,9 +59,11 @@ exports.importResourceType = importResourceType;
|
|
|
57
59
|
async function importProduct(options) {
|
|
58
60
|
var _a;
|
|
59
61
|
const outdir = (_a = options.outdir) !== null && _a !== void 0 ? _a : '.';
|
|
60
|
-
await (0, service_catalog_1.describeProductAggregate)(options);
|
|
61
|
-
|
|
62
|
-
|
|
62
|
+
const product = await (0, service_catalog_1.describeProductAggregate)(options);
|
|
63
|
+
const gen = new sc_construct_generator_1.ServiceCatalogProvisioningConstructGenerator(product);
|
|
64
|
+
fs.mkdirSync(outdir, { recursive: true });
|
|
65
|
+
fs.writeFileSync(path.join(outdir, `${caseutil.header(gen.name).toLowerCase()}.ts`), gen.render());
|
|
66
|
+
return gen.name;
|
|
63
67
|
}
|
|
64
68
|
exports.importProduct = importProduct;
|
|
65
69
|
;
|
|
@@ -76,7 +80,7 @@ async function importProducts(options) {
|
|
|
76
80
|
await Promise.all(availableProducts.map(async (product) => {
|
|
77
81
|
const productVersion = await importProduct({
|
|
78
82
|
outdir: outdir,
|
|
79
|
-
productId: product.
|
|
83
|
+
productId: product.ProductId,
|
|
80
84
|
});
|
|
81
85
|
productVersions.push(productVersion);
|
|
82
86
|
}));
|
|
@@ -84,4 +88,4 @@ async function importProducts(options) {
|
|
|
84
88
|
}
|
|
85
89
|
exports.importProducts = importProducts;
|
|
86
90
|
;
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLCtDQUFpQztBQUNqQyxpREFBbUY7QUFDbkYscUVBQWdFO0FBQ2hFLHFFQUF3RjtBQUN4Rix1REFBc0g7QUFTdEg7Ozs7Ozs7R0FPRztBQUNJLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxZQUFvQixFQUFFLGdCQUF3QixFQUFFLE9BQWtDOztJQUN6SCxNQUFNLE1BQU0sR0FBRyxNQUFBLE9BQU8sQ0FBQyxNQUFNLG1DQUFJLEdBQUcsQ0FBQztJQUNyQyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsbUNBQW9CLEVBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRS9ELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU8sQ0FBQyxDQUFDO0lBRTVDLE1BQU0sR0FBRyxHQUFHLElBQUksNkNBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFdEUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUUxQyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRTlELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUN2QixDQUFDO0FBYkQsZ0RBYUM7QUFBQSxDQUFDO0FBYUY7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxhQUFhLENBQUMsT0FBNkI7O0lBQy9ELE1BQU0sTUFBTSxHQUFHLE1BQUEsT0FBTyxDQUFDLE1BQU0sbUNBQUksR0FBRyxDQUFDO0lBRXJDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSwwQ0FBd0IsRUFBQyxPQUFPLENBQUMsQ0FBQztJQUV4RCxNQUFNLEdBQUcsR0FBRyxJQUFJLHFFQUE0QyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUVuRyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDbEIsQ0FBQztBQVZELHNDQVVDO0FBQUEsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsY0FBYyxDQUFDLE9BQTZCOztJQUNoRSxNQUFNLE1BQU0sR0FBRyxNQUFBLE9BQU8sQ0FBQyxNQUFNLG1DQUFJLEdBQUcsQ0FBQztJQUNyQyxJQUFJLGVBQWUsR0FBYSxFQUFFLENBQUM7SUFFbkMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUEsd0NBQXNCLEdBQUUsQ0FBQztJQUV6RCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN4RCxNQUFNLGNBQWMsR0FBRyxNQUFNLGFBQWEsQ0FBRTtZQUMxQyxNQUFNLEVBQUUsTUFBTTtZQUNkLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBVTtTQUM5QixDQUFDLENBQUM7UUFDSCxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFSixPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDO0FBZkQsd0NBZUM7QUFBQSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGNhc2V1dGlsIGZyb20gJ2Nhc2UnO1xuaW1wb3J0IHsgZGVzY3JpYmVSZXNvdXJjZVR5cGUsIERlc2NyaWJlUmVzb3VyY2VUeXBlT3B0aW9ucyB9IGZyb20gJy4vY2ZuLXJlZ2lzdHJ5JztcbmltcG9ydCB7IENmblJlc291cmNlR2VuZXJhdG9yIH0gZnJvbSAnLi9jZm4tcmVzb3VyY2UtZ2VuZXJhdG9yJztcbmltcG9ydCB7IFNlcnZpY2VDYXRhbG9nUHJvdmlzaW9uaW5nQ29uc3RydWN0R2VuZXJhdG9yIH0gZnJvbSAnLi9zYy1jb25zdHJ1Y3QtZ2VuZXJhdG9yJztcbmltcG9ydCB7IGRlc2NyaWJlUHJvZHVjdEFnZ3JlZ2F0ZSwgRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucywgZmV0Y2hBdmFpbGFibGVQcm9kdWN0cyB9IGZyb20gJy4vc2VydmljZS1jYXRhbG9nJztcblxuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRSZXNvdXJjZVR5cGVPcHRpb25zIGV4dGVuZHMgRGVzY3JpYmVSZXNvdXJjZVR5cGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IFwiLlwiXG4gICAqL1xuICByZWFkb25seSBvdXRkaXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW50cnkgcG9pbnQgdG8gaW1wb3J0IENGTiByZXNvdXJjZSB0eXBlc1xuICpcbiAqIEBwYXJhbSByZXNvdXJjZU5hbWUgdGhlIG5hbWUgb3IgQVJOIG9mIHRoZSByZXNvdXJjZSB0eXBlXG4gKiBAcGFyYW0gX3Jlc291cmNlVmVyc2lvbiB0aGUgdmVyc2lvbiBvZiB0aGUgcmVzb3VyY2UgdHlwZSAoaWdub3JlZCBmb3Igbm93KVxuICogQHBhcmFtIG91dGRpciB0aGUgb3V0IGZvbGRlciB0byB1c2UgKGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeSlcbiAqIEByZXR1cm5zIG5hbWUgb2YgdGhlIHJlc291cmNlIHR5cGVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGltcG9ydFJlc291cmNlVHlwZShyZXNvdXJjZU5hbWU6IHN0cmluZywgX3Jlc291cmNlVmVyc2lvbjogc3RyaW5nLCBvcHRpb25zOiBJbXBvcnRSZXNvdXJjZVR5cGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgb3V0ZGlyID0gb3B0aW9ucy5vdXRkaXIgPz8gJy4nO1xuICBjb25zdCB0eXBlID0gYXdhaXQgZGVzY3JpYmVSZXNvdXJjZVR5cGUocmVzb3VyY2VOYW1lLCBvcHRpb25zKTtcblxuICBjb25zdCB0eXBlU2NoZW1hID0gSlNPTi5wYXJzZSh0eXBlLlNjaGVtYSEpO1xuXG4gIGNvbnN0IGdlbiA9IG5ldyBDZm5SZXNvdXJjZUdlbmVyYXRvcih0eXBlLlR5cGVOYW1lLCB0eXBlLCB0eXBlU2NoZW1hKTtcblxuICBmcy5ta2RpclN5bmMob3V0ZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihvdXRkaXIsICdpbmRleC50cycpLCBnZW4ucmVuZGVyKCkpO1xuXG4gIHJldHVybiB0eXBlLlR5cGVOYW1lO1xufTtcblxuLyoqXG4gKiBDb25maWd1cmUgb3B0aW9ucyBmb3IgaW1wb3J0aW5nIHByb2R1Y3RzIGludG8geW91ciBsb2NhbCB3b3Jrc3BhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRQcm9kdWN0T3B0aW9ucyBleHRlbmRzIERlc2NyaWJlUHJvZHVjdEFnZ3JlZ2F0ZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGZvbGRlciBpbiB3aGljaCBwcm9kdWN0IGNvbnN0cnVjdHMgKGFzIHNlcGFyYXRlIGNsYXNzIGZpbGVzKSB3aWxsIGJlIG91dHB1dCB0by5cbiAgICogQGRlZmF1bHQgXCIuL3NjLXByb2R1Y3RzXCJcbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFbnRyeSBwb2ludCB0byBpbXBvcnQgU2VydmljZSBDYXRhbG9nIHByb2R1Y3QgcmVzb3VyY2UuXG4gKlxuICogQHJldHVybnMgbmFtZSBvZiB0aGUgcHJvZHVjdCB2ZXJzaW9uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbXBvcnRQcm9kdWN0KG9wdGlvbnM6IEltcG9ydFByb2R1Y3RPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgb3V0ZGlyID0gb3B0aW9ucy5vdXRkaXIgPz8gJy4nO1xuXG4gIGNvbnN0IHByb2R1Y3QgPSBhd2FpdCBkZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGUob3B0aW9ucyk7XG5cbiAgY29uc3QgZ2VuID0gbmV3IFNlcnZpY2VDYXRhbG9nUHJvdmlzaW9uaW5nQ29uc3RydWN0R2VuZXJhdG9yKHByb2R1Y3QpO1xuICBmcy5ta2RpclN5bmMob3V0ZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ob3V0ZGlyLCBgJHtjYXNldXRpbC5oZWFkZXIoZ2VuLm5hbWUpLnRvTG93ZXJDYXNlKCl9LnRzYCksIGdlbi5yZW5kZXIoKSk7XG5cbiAgcmV0dXJuIGdlbi5uYW1lO1xufTtcblxuLyoqXG4gKiBFbnRyeSBwb2ludCB0byBpbXBvcnQgYWxsIGF2YWlsYWJsZSBTZXJ2aWNlIENhdGFsb2cgcHJvZHVjdCByZXNvdXJjZXMgd2l0aCBgREVGQVVMVGAgcGFyYW1ldGVycy5cbiAqXG4gKiBAcmV0dXJucyBuYW1lcyBvZiB0aGUgcHJvZHVjdCB2ZXJzaW9uc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW1wb3J0UHJvZHVjdHMob3B0aW9uczogSW1wb3J0UHJvZHVjdE9wdGlvbnMpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIGNvbnN0IG91dGRpciA9IG9wdGlvbnMub3V0ZGlyID8/ICcuJztcbiAgbGV0IHByb2R1Y3RWZXJzaW9uczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdCBhdmFpbGFibGVQcm9kdWN0cyA9IGF3YWl0IGZldGNoQXZhaWxhYmxlUHJvZHVjdHMoKTtcblxuICBhd2FpdCBQcm9taXNlLmFsbChhdmFpbGFibGVQcm9kdWN0cy5tYXAoYXN5bmMgKHByb2R1Y3QpID0+IHtcbiAgICBjb25zdCBwcm9kdWN0VmVyc2lvbiA9IGF3YWl0IGltcG9ydFByb2R1Y3QoIHtcbiAgICAgIG91dGRpcjogb3V0ZGlyLFxuICAgICAgcHJvZHVjdElkOiBwcm9kdWN0LlByb2R1Y3RJZCEsXG4gICAgfSk7XG4gICAgcHJvZHVjdFZlcnNpb25zLnB1c2gocHJvZHVjdFZlcnNpb24pO1xuICB9KSk7XG5cbiAgcmV0dXJuIHByb2R1Y3RWZXJzaW9ucztcbn07XG4iXX0=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ProductDataAggregate } from './service-catalog';
|
|
2
|
+
/**
|
|
3
|
+
* Generator to emit classes and information on provisioning details for a product.
|
|
4
|
+
*/
|
|
5
|
+
export declare class ServiceCatalogProvisioningConstructGenerator {
|
|
6
|
+
private readonly productDataAggregate;
|
|
7
|
+
private readonly hasParameters;
|
|
8
|
+
private readonly sanitizedTypeName;
|
|
9
|
+
private readonly resourceAttributes;
|
|
10
|
+
private readonly constructClassName;
|
|
11
|
+
private readonly propsStructName;
|
|
12
|
+
private readonly outputKeys;
|
|
13
|
+
readonly name: string;
|
|
14
|
+
/**
|
|
15
|
+
* @param productData the aggregate details on a product with information on inputs and outputs of the template.
|
|
16
|
+
*/
|
|
17
|
+
constructor(productData: ProductDataAggregate);
|
|
18
|
+
/**
|
|
19
|
+
* Render the type into a TypeScript class file defining the props and the wrapped L1 construct AWS::ServiceCatalog::CloudFormationProvisionedProduct.
|
|
20
|
+
*
|
|
21
|
+
* @returns the rendered class file content
|
|
22
|
+
*/
|
|
23
|
+
render(): string;
|
|
24
|
+
private emitImports;
|
|
25
|
+
private emitInterface;
|
|
26
|
+
private emitBase;
|
|
27
|
+
private emitParameters;
|
|
28
|
+
private emitParameterMap;
|
|
29
|
+
private emitDefinitionTypes;
|
|
30
|
+
private emitConstructClass;
|
|
31
|
+
}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.ServiceCatalogProvisioningConstructGenerator = void 0;
|
|
27
|
+
const case_1 = require("case");
|
|
28
|
+
const j2j = __importStar(require("json2jsii"));
|
|
29
|
+
/**
|
|
30
|
+
* Generator to emit classes and information on provisioning details for a product.
|
|
31
|
+
*/
|
|
32
|
+
class ServiceCatalogProvisioningConstructGenerator {
|
|
33
|
+
/**
|
|
34
|
+
* @param productData the aggregate details on a product with information on inputs and outputs of the template.
|
|
35
|
+
*/
|
|
36
|
+
constructor(productData) {
|
|
37
|
+
this.productDataAggregate = productData;
|
|
38
|
+
this.sanitizedTypeName = (0, case_1.pascal)(this.productDataAggregate.product.Name);
|
|
39
|
+
this.constructClassName = j2j.TypeGenerator.normalizeTypeName(this.sanitizedTypeName);
|
|
40
|
+
this.propsStructName = j2j.TypeGenerator.normalizeTypeName(`${this.constructClassName}Props`);
|
|
41
|
+
this.name = this.sanitizedTypeName;
|
|
42
|
+
this.resourceAttributes = new Array();
|
|
43
|
+
this.outputKeys = this.productDataAggregate.params.ProvisioningArtifactOutputKeys.map(key => key.Key);
|
|
44
|
+
this.hasParameters = this.productDataAggregate.params.ProvisioningArtifactParameters.length > 0;
|
|
45
|
+
const attributeNames = [
|
|
46
|
+
'provisionedProductId',
|
|
47
|
+
'cloudFormationStackArn',
|
|
48
|
+
'recordId',
|
|
49
|
+
...this.outputKeys.map(case_1.camel),
|
|
50
|
+
];
|
|
51
|
+
for (const attr of attributeNames) {
|
|
52
|
+
this.resourceAttributes.push(attr);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Render the type into a TypeScript class file defining the props and the wrapped L1 construct AWS::ServiceCatalog::CloudFormationProvisionedProduct.
|
|
57
|
+
*
|
|
58
|
+
* @returns the rendered class file content
|
|
59
|
+
*/
|
|
60
|
+
render() {
|
|
61
|
+
const code = new j2j.Code();
|
|
62
|
+
this.emitImports(code);
|
|
63
|
+
this.emitInterface(code);
|
|
64
|
+
this.emitBase(code);
|
|
65
|
+
if (this.hasParameters) {
|
|
66
|
+
this.emitParameterMap(code);
|
|
67
|
+
this.emitDefinitionTypes(code);
|
|
68
|
+
}
|
|
69
|
+
this.emitConstructClass(code);
|
|
70
|
+
return code.render();
|
|
71
|
+
}
|
|
72
|
+
emitImports(code) {
|
|
73
|
+
code.line('// Generated by cdk-import');
|
|
74
|
+
code.line("import * as cdk from 'aws-cdk-lib';");
|
|
75
|
+
code.line("import * as constructs from 'constructs';");
|
|
76
|
+
code.line("import * as sc from 'aws-cdk-lib/aws-servicecatalog';");
|
|
77
|
+
code.line();
|
|
78
|
+
}
|
|
79
|
+
emitInterface(code) {
|
|
80
|
+
code.openBlock(`export interface I${this.constructClassName} extends cdk.IResource`);
|
|
81
|
+
this.resourceAttributes.forEach(attr => {
|
|
82
|
+
code.line(`readonly ${attr}: string;`);
|
|
83
|
+
});
|
|
84
|
+
code.closeBlock();
|
|
85
|
+
code.line();
|
|
86
|
+
}
|
|
87
|
+
emitBase(code) {
|
|
88
|
+
code.openBlock(`abstract class ${this.constructClassName}Base extends cdk.Resource implements I${this.constructClassName}`);
|
|
89
|
+
this.resourceAttributes.forEach(attr => {
|
|
90
|
+
code.line(`public abstract readonly ${attr}: string;`);
|
|
91
|
+
});
|
|
92
|
+
code.closeBlock();
|
|
93
|
+
code.line();
|
|
94
|
+
}
|
|
95
|
+
emitParameters(code) {
|
|
96
|
+
code.line(' provisioningParameters:');
|
|
97
|
+
code.line(' Object.entries(props).map(([k, v]) => {');
|
|
98
|
+
code.line(' return {');
|
|
99
|
+
code.line(' key: ParameterKeys.valueOf(k) as string,');
|
|
100
|
+
code.line(' value: v as string,');
|
|
101
|
+
code.line(' }');
|
|
102
|
+
code.line(' }),');
|
|
103
|
+
}
|
|
104
|
+
emitParameterMap(code) {
|
|
105
|
+
var _a;
|
|
106
|
+
code.openBlock('enum ParameterKeys');
|
|
107
|
+
(_a = this.productDataAggregate.params.ProvisioningArtifactParameters) === null || _a === void 0 ? void 0 : _a.forEach(p => {
|
|
108
|
+
code.line(`${(0, case_1.camel)(p.ParameterKey)} = '${p.ParameterKey}',`);
|
|
109
|
+
});
|
|
110
|
+
code.closeBlock();
|
|
111
|
+
code.line();
|
|
112
|
+
code.openBlock('namespace ParameterKeys');
|
|
113
|
+
code.line('const reverseMap = new Map<string, ParameterKeys>();');
|
|
114
|
+
code.line('Object.keys(ParameterKeys).forEach((s: string) => {');
|
|
115
|
+
code.line(' const e = (<any>ParameterKeys)[s];');
|
|
116
|
+
code.line(' reverseMap.set(s, e);');
|
|
117
|
+
code.line('});');
|
|
118
|
+
code.line('export function valueOf(str: string) {');
|
|
119
|
+
code.line(' return reverseMap.get(str);');
|
|
120
|
+
code.line('}');
|
|
121
|
+
code.closeBlock();
|
|
122
|
+
}
|
|
123
|
+
emitDefinitionTypes(code) {
|
|
124
|
+
code.openBlock(`export interface ${this.constructClassName}Props`);
|
|
125
|
+
this.productDataAggregate.params.ProvisioningArtifactParameters.forEach(pa => {
|
|
126
|
+
var _a, _b, _c, _d;
|
|
127
|
+
let optional = '';
|
|
128
|
+
code.line('/**');
|
|
129
|
+
(pa.Description != undefined) ? code.line(` * ${pa.Description}`) : null;
|
|
130
|
+
if (pa.DefaultValue) {
|
|
131
|
+
optional += '?';
|
|
132
|
+
(((_a = pa.ParameterConstraints) === null || _a === void 0 ? void 0 : _a.ConstraintDescription) != undefined) ? code.line(` * ${(_b = pa.ParameterConstraints) === null || _b === void 0 ? void 0 : _b.ConstraintDescription}`) : null;
|
|
133
|
+
code.line(' *');
|
|
134
|
+
code.line(` * @default ${pa.DefaultValue}`);
|
|
135
|
+
}
|
|
136
|
+
code.line(' */');
|
|
137
|
+
code.line(`readonly ${(0, case_1.camel)(pa.ParameterKey)}${optional}: ${((_d = (_c = pa.ParameterConstraints) === null || _c === void 0 ? void 0 : _c.AllowedValues) === null || _d === void 0 ? void 0 : _d.length) ? pa.ParameterKey : 'string'};`);
|
|
138
|
+
code.line();
|
|
139
|
+
});
|
|
140
|
+
code.closeBlock();
|
|
141
|
+
code.line();
|
|
142
|
+
}
|
|
143
|
+
emitConstructClass(code) {
|
|
144
|
+
var _a;
|
|
145
|
+
code.line('/**');
|
|
146
|
+
code.line(` * A Service Catalog CloudFormation \`${this.sanitizedTypeName}\` product.`);
|
|
147
|
+
code.line(' *');
|
|
148
|
+
code.line(' * @cloudformationResource AWS::ServiceCatalog::CloudFormationProvisionedProduct');
|
|
149
|
+
code.line(' * @stability external');
|
|
150
|
+
code.line(' */');
|
|
151
|
+
code.openBlock(`export class ${this.constructClassName} extends ${this.constructClassName}Base`);
|
|
152
|
+
for (const prop of this.resourceAttributes) {
|
|
153
|
+
code.line('/**');
|
|
154
|
+
code.line(` * Attribute \`${this.sanitizedTypeName}.${prop}\``);
|
|
155
|
+
code.line(' */');
|
|
156
|
+
code.line(`public readonly ${(0, case_1.camel)(prop)}: string;`);
|
|
157
|
+
}
|
|
158
|
+
code.line('private readonly provisionedProduct: sc.CfnCloudFormationProvisionedProduct;');
|
|
159
|
+
code.line();
|
|
160
|
+
code.line('/**');
|
|
161
|
+
code.line(` * Create a new Service Catalog \`${this.sanitizedTypeName}\` product.`);
|
|
162
|
+
code.line(' *');
|
|
163
|
+
code.line(' * @param scope - scope in which this resource is defined');
|
|
164
|
+
code.line(' * @param id - scoped id of the resource');
|
|
165
|
+
if (this.hasParameters) {
|
|
166
|
+
code.line(' * @param props - resource properties');
|
|
167
|
+
}
|
|
168
|
+
code.line(' */');
|
|
169
|
+
if (this.hasParameters) {
|
|
170
|
+
code.openBlock(`constructor(scope: constructs.Construct, id: string, props: ${this.propsStructName})`);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
code.openBlock('constructor(scope: constructs.Construct, id: string)');
|
|
174
|
+
}
|
|
175
|
+
code.line('super(scope, id);');
|
|
176
|
+
code.line('');
|
|
177
|
+
code.line("this.provisionedProduct = new sc.CfnCloudFormationProvisionedProduct(this, 'Resource', {");
|
|
178
|
+
code.line(' provisionedProductName: this.node.id,');
|
|
179
|
+
code.line(` provisioningArtifactName: '${this.productDataAggregate.provisioningArtifact.Name}',`);
|
|
180
|
+
code.line(` productName: '${this.productDataAggregate.product.Name}',`);
|
|
181
|
+
// generate provisioning parameters from props to avoid redundant defaults
|
|
182
|
+
if (this.hasParameters) {
|
|
183
|
+
this.emitParameters(code);
|
|
184
|
+
}
|
|
185
|
+
;
|
|
186
|
+
code.line('});');
|
|
187
|
+
code.line();
|
|
188
|
+
code.line('this.provisionedProductId = this.provisionedProduct.ref;');
|
|
189
|
+
code.line("this.cloudFormationStackArn = cdk.Token.asString(cdk.Fn.getAtt(this.provisionedProduct.logicalId, 'CloudformationStackArn'));");
|
|
190
|
+
code.line("this.recordId = cdk.Token.asString(cdk.Fn.getAtt(this.provisionedProduct.logicalId, 'RecordId'));");
|
|
191
|
+
(_a = this.outputKeys) === null || _a === void 0 ? void 0 : _a.forEach(output => {
|
|
192
|
+
code.line(`this.${(0, case_1.camel)(output)} = cdk.Token.asString(cdk.Fn.getAtt(this.provisionedProduct.logicalId, 'Outputs.${output}'));`);
|
|
193
|
+
});
|
|
194
|
+
code.closeBlock();
|
|
195
|
+
// Close construct class
|
|
196
|
+
code.closeBlock();
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
exports.ServiceCatalogProvisioningConstructGenerator = ServiceCatalogProvisioningConstructGenerator;
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29uc3RydWN0LWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zYy1jb25zdHJ1Y3QtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQXFDO0FBQ3JDLCtDQUFpQztBQUdqQzs7R0FFRztBQUNILE1BQWEsNENBQTRDO0lBVXZEOztPQUVHO0lBQ0gsWUFBWSxXQUFpQztRQUMzQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsV0FBVyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFBLGFBQU0sRUFBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLElBQUssQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsT0FBTyxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDbkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLDhCQUErQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFJLENBQUMsQ0FBQztRQUN4RyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsOEJBQStCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUVqRyxNQUFNLGNBQWMsR0FBYTtZQUMvQixzQkFBc0I7WUFD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QStILENBQUMsQ0FBQztRQUMzSSxJQUFJLENBQUMsSUFBSSxDQUFDLG1HQUFtRyxDQUFDLENBQUM7UUFDL0csTUFBQSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUEsWUFBSyxFQUFDLE1BQU0sQ0FBQyxtRkFBbUYsTUFBTSxNQUFNLENBQUMsQ0FBQztRQUNsSSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQix3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQXhMRCxvR0F3TEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwYXNjYWwsIGNhbWVsIH0gZnJvbSAnY2FzZSc7XG5pbXBvcnQgKiBhcyBqMmogZnJvbSAnanNvbjJqc2lpJztcbmltcG9ydCB7IFByb2R1Y3REYXRhQWdncmVnYXRlIH0gZnJvbSAnLi9zZXJ2aWNlLWNhdGFsb2cnO1xuXG4vKipcbiAqIEdlbmVyYXRvciB0byBlbWl0IGNsYXNzZXMgYW5kIGluZm9ybWF0aW9uIG9uIHByb3Zpc2lvbmluZyBkZXRhaWxzIGZvciBhIHByb2R1Y3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlQ2F0YWxvZ1Byb3Zpc2lvbmluZ0NvbnN0cnVjdEdlbmVyYXRvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdERhdGFBZ2dyZWdhdGU6IFByb2R1Y3REYXRhQWdncmVnYXRlO1xuICBwcml2YXRlIHJlYWRvbmx5IGhhc1BhcmFtZXRlcnM6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVkVHlwZU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZUF0dHJpYnV0ZXM6IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbnN0cnVjdENsYXNzTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3BzU3RydWN0TmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IG91dHB1dEtleXM6IHN0cmluZ1tdO1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gcHJvZHVjdERhdGEgdGhlIGFnZ3JlZ2F0ZSBkZXRhaWxzIG9uIGEgcHJvZHVjdCB3aXRoIGluZm9ybWF0aW9uIG9uIGlucHV0cyBhbmQgb3V0cHV0cyBvZiB0aGUgdGVtcGxhdGUuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9kdWN0RGF0YTogUHJvZHVjdERhdGFBZ2dyZWdhdGUpIHtcbiAgICB0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlID0gcHJvZHVjdERhdGE7XG4gICAgdGhpcy5zYW5pdGl6ZWRUeXBlTmFtZSA9IHBhc2NhbCh0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLnByb2R1Y3QuTmFtZSEpO1xuICAgIHRoaXMuY29uc3RydWN0Q2xhc3NOYW1lID0gajJqLlR5cGVHZW5lcmF0b3Iubm9ybWFsaXplVHlwZU5hbWUodGhpcy5zYW5pdGl6ZWRUeXBlTmFtZSk7XG4gICAgdGhpcy5wcm9wc1N0cnVjdE5hbWUgPSBqMmouVHlwZUdlbmVyYXRvci5ub3JtYWxpemVUeXBlTmFtZShgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX1Qcm9wc2ApO1xuICAgIHRoaXMubmFtZSA9IHRoaXMuc2FuaXRpemVkVHlwZU5hbWU7XG4gICAgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIHRoaXMub3V0cHV0S2V5cyA9IHRoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucGFyYW1zLlByb3Zpc2lvbmluZ0FydGlmYWN0T3V0cHV0S2V5cyEubWFwKGtleSA9PiBrZXkuS2V5ISk7XG4gICAgdGhpcy5oYXNQYXJhbWV0ZXJzID0gdGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5wYXJhbXMuUHJvdmlzaW9uaW5nQXJ0aWZhY3RQYXJhbWV0ZXJzIS5sZW5ndGggPiAwO1xuXG4gICAgY29uc3QgYXR0cmlidXRlTmFtZXM6IHN0cmluZ1tdID0gW1xuICAgICAgJ3Byb3Zpc2lvbmVkUHJvZHVjdElkJyxcbiAgICAgICdjbG91ZEZvcm1hdGlvblN0YWNrQXJuJyxcbiAgICAgICdyZWNvcmRJZCcsXG4gICAgICAuLi50aGlzLm91dHB1dEtleXMubWFwKGNhbWVsKSxcbiAgICBdO1xuXG4gICAgZm9yIChjb25zdCBhdHRyIG9mIGF0dHJpYnV0ZU5hbWVzKSB7XG4gICAgICB0aGlzLnJlc291cmNlQXR0cmlidXRlcy5wdXNoKGF0dHIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIHR5cGUgaW50byBhIFR5cGVTY3JpcHQgY2xhc3MgZmlsZSBkZWZpbmluZyB0aGUgcHJvcHMgYW5kIHRoZSB3cmFwcGVkIEwxIGNvbnN0cnVjdCBBV1M6OlNlcnZpY2VDYXRhbG9nOjpDbG91ZEZvcm1hdGlvblByb3Zpc2lvbmVkUHJvZHVjdC5cbiAgICpcbiAgICogQHJldHVybnMgdGhlIHJlbmRlcmVkIGNsYXNzIGZpbGUgY29udGVudFxuICAgKi9cbiAgcHVibGljIHJlbmRlcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvZGUgPSBuZXcgajJqLkNvZGUoKTtcbiAgICB0aGlzLmVtaXRJbXBvcnRzKGNvZGUpO1xuICAgIHRoaXMuZW1pdEludGVyZmFjZShjb2RlKTtcbiAgICB0aGlzLmVtaXRCYXNlKGNvZGUpO1xuICAgIGlmICh0aGlzLmhhc1BhcmFtZXRlcnMpIHtcbiAgICAgIHRoaXMuZW1pdFBhcmFtZXRlck1hcChjb2RlKTtcbiAgICAgIHRoaXMuZW1pdERlZmluaXRpb25UeXBlcyhjb2RlKTtcbiAgICB9XG4gICAgdGhpcy5lbWl0Q29uc3RydWN0Q2xhc3MoY29kZSk7XG4gICAgcmV0dXJuIGNvZGUucmVuZGVyKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRJbXBvcnRzKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5saW5lKCcvLyBHZW5lcmF0ZWQgYnkgY2RrLWltcG9ydCcpO1xuICAgIGNvZGUubGluZShcImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XCIpO1xuICAgIGNvZGUubGluZShcImltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XCIpO1xuICAgIGNvZGUubGluZShcImltcG9ydCAqIGFzIHNjIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zZXJ2aWNlY2F0YWxvZyc7XCIpO1xuICAgIGNvZGUubGluZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0SW50ZXJmYWNlKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5vcGVuQmxvY2soYGV4cG9ydCBpbnRlcmZhY2UgSSR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9IGV4dGVuZHMgY2RrLklSZXNvdXJjZWApO1xuICAgIHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzLmZvckVhY2goYXR0ciA9PiB7XG4gICAgICBjb2RlLmxpbmUoYHJlYWRvbmx5ICR7YXR0cn06IHN0cmluZztgKTtcbiAgICB9KTtcbiAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEJhc2UoY29kZTogajJqLkNvZGUpIHtcbiAgICBjb2RlLm9wZW5CbG9jayhgYWJzdHJhY3QgY2xhc3MgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX1CYXNlIGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSSR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9YCk7XG4gICAgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMuZm9yRWFjaChhdHRyID0+IHtcbiAgICAgIGNvZGUubGluZShgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5ICR7YXR0cn06IHN0cmluZztgKTtcbiAgICB9KTtcbiAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFBhcmFtZXRlcnMoY29kZTogajJqLkNvZGUpIHtcbiAgICBjb2RlLmxpbmUoJyAgcHJvdmlzaW9uaW5nUGFyYW1ldGVyczonKTtcbiAgICBjb2RlLmxpbmUoJyAgICBPYmplY3QuZW50cmllcyhwcm9wcykubWFwKChbaywgdl0pID0+IHsnKTtcbiAgICBjb2RlLmxpbmUoJyAgICAgIHJldHVybiB7Jyk7XG4gICAgY29kZS5saW5lKCcgICAgICAgIGtleTogUGFyYW1ldGVyS2V5cy52YWx1ZU9mKGspIGFzIHN0cmluZywnKTtcbiAgICBjb2RlLmxpbmUoJyAgICAgICAgdmFsdWU6IHYgYXMgc3RyaW5nLCcpO1xuICAgIGNvZGUubGluZSgnICAgICAgfScpO1xuICAgIGNvZGUubGluZSgnICAgIH0pLCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0UGFyYW1ldGVyTWFwKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5vcGVuQmxvY2soJ2VudW0gUGFyYW1ldGVyS2V5cycpO1xuICAgIHRoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucGFyYW1zLlByb3Zpc2lvbmluZ0FydGlmYWN0UGFyYW1ldGVycz8uZm9yRWFjaChwID0+IHtcbiAgICAgIGNvZGUubGluZShgJHtjYW1lbChwLlBhcmFtZXRlcktleSEpfSA9ICcke3AuUGFyYW1ldGVyS2V5fScsYCk7XG4gICAgfSk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgY29kZS5saW5lKCk7XG4gICAgY29kZS5vcGVuQmxvY2soJ25hbWVzcGFjZSBQYXJhbWV0ZXJLZXlzJyk7XG4gICAgY29kZS5saW5lKCdjb25zdCByZXZlcnNlTWFwID0gbmV3IE1hcDxzdHJpbmcsIFBhcmFtZXRlcktleXM+KCk7Jyk7XG4gICAgY29kZS5saW5lKCdPYmplY3Qua2V5cyhQYXJhbWV0ZXJLZXlzKS5mb3JFYWNoKChzOiBzdHJpbmcpID0+IHsnKTtcbiAgICBjb2RlLmxpbmUoJyAgY29uc3QgZSA9ICg8YW55PlBhcmFtZXRlcktleXMpW3NdOycpO1xuICAgIGNvZGUubGluZSgnICByZXZlcnNlTWFwLnNldChzLCBlKTsnKTtcbiAgICBjb2RlLmxpbmUoJ30pOycpO1xuICAgIGNvZGUubGluZSgnZXhwb3J0IGZ1bmN0aW9uIHZhbHVlT2Yoc3RyOiBzdHJpbmcpIHsnKTtcbiAgICBjb2RlLmxpbmUoJyAgcmV0dXJuIHJldmVyc2VNYXAuZ2V0KHN0cik7Jyk7XG4gICAgY29kZS5saW5lKCd9Jyk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXREZWZpbml0aW9uVHlwZXMoY29kZTogajJqLkNvZGUpIHtcbiAgICBjb2RlLm9wZW5CbG9jayhgZXhwb3J0IGludGVyZmFjZSAke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfVByb3BzYCk7XG4gICAgdGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5wYXJhbXMuUHJvdmlzaW9uaW5nQXJ0aWZhY3RQYXJhbWV0ZXJzIS5mb3JFYWNoKHBhID0+IHtcbiAgICAgIGxldCBvcHRpb25hbCA9ICcnO1xuICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgIChwYS5EZXNjcmlwdGlvbiAhPSB1bmRlZmluZWQpID8gY29kZS5saW5lKGAgKiAke3BhLkRlc2NyaXB0aW9ufWApOiBudWxsO1xuICAgICAgaWYgKHBhLkRlZmF1bHRWYWx1ZSkge1xuICAgICAgICBvcHRpb25hbCArPSAnPyc7XG4gICAgICAgIChwYS5QYXJhbWV0ZXJDb25zdHJhaW50cz8uQ29uc3RyYWludERlc2NyaXB0aW9uICE9IHVuZGVmaW5lZCkgPyBjb2RlLmxpbmUoYCAqICR7cGEuUGFyYW1ldGVyQ29uc3RyYWludHM/LkNvbnN0cmFpbnREZXNjcmlwdGlvbn1gKTogbnVsbDtcbiAgICAgICAgY29kZS5saW5lKCcgKicpO1xuICAgICAgICBjb2RlLmxpbmUoYCAqIEBkZWZhdWx0ICR7cGEuRGVmYXVsdFZhbHVlfWApO1xuICAgICAgfVxuXG4gICAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgICAgY29kZS5saW5lKGByZWFkb25seSAke2NhbWVsKHBhLlBhcmFtZXRlcktleSEpfSR7b3B0aW9uYWx9OiAke3BhLlBhcmFtZXRlckNvbnN0cmFpbnRzPy5BbGxvd2VkVmFsdWVzPy5sZW5ndGggPyBwYS5QYXJhbWV0ZXJLZXkgOiAnc3RyaW5nJ307YCk7XG4gICAgICBjb2RlLmxpbmUoKTtcbiAgICB9KTtcbiAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdENvbnN0cnVjdENsYXNzKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5saW5lKCcvKionKTtcbiAgICBjb2RlLmxpbmUoYCAqIEEgU2VydmljZSBDYXRhbG9nIENsb3VkRm9ybWF0aW9uIFxcYCR7dGhpcy5zYW5pdGl6ZWRUeXBlTmFtZX1cXGAgcHJvZHVjdC5gKTtcbiAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgY29kZS5saW5lKCcgKiBAY2xvdWRmb3JtYXRpb25SZXNvdXJjZSBBV1M6OlNlcnZpY2VDYXRhbG9nOjpDbG91ZEZvcm1hdGlvblByb3Zpc2lvbmVkUHJvZHVjdCcpO1xuICAgIGNvZGUubGluZSgnICogQHN0YWJpbGl0eSBleHRlcm5hbCcpO1xuICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgY29kZS5vcGVuQmxvY2soYGV4cG9ydCBjbGFzcyAke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfSBleHRlbmRzICR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9QmFzZWApO1xuICAgIGZvciAoY29uc3QgcHJvcCBvZiB0aGlzLnJlc291cmNlQXR0cmlidXRlcykge1xuICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgIGNvZGUubGluZShgICogQXR0cmlidXRlIFxcYCR7dGhpcy5zYW5pdGl6ZWRUeXBlTmFtZX0uJHtwcm9wfVxcYGApO1xuICAgICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICAgIGNvZGUubGluZShgcHVibGljIHJlYWRvbmx5ICR7Y2FtZWwocHJvcCl9OiBzdHJpbmc7YCk7XG4gICAgfVxuICAgIGNvZGUubGluZSgncHJpdmF0ZSByZWFkb25seSBwcm92aXNpb25lZFByb2R1Y3Q6IHNjLkNmbkNsb3VkRm9ybWF0aW9uUHJvdmlzaW9uZWRQcm9kdWN0OycpO1xuICAgIGNvZGUubGluZSgpO1xuXG4gICAgY29kZS5saW5lKCcvKionKTtcbiAgICBjb2RlLmxpbmUoYCAqIENyZWF0ZSBhIG5ldyBTZXJ2aWNlIENhdGFsb2cgXFxgJHt0aGlzLnNhbml0aXplZFR5cGVOYW1lfVxcYCBwcm9kdWN0LmApO1xuICAgIGNvZGUubGluZSgnIConKTtcbiAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBzY29wZSAtIHNjb3BlIGluIHdoaWNoIHRoaXMgcmVzb3VyY2UgaXMgZGVmaW5lZCcpO1xuICAgIGNvZGUubGluZSgnICogQHBhcmFtIGlkICAgIC0gc2NvcGVkIGlkIG9mIHRoZSByZXNvdXJjZScpO1xuICAgIGlmICh0aGlzLmhhc1BhcmFtZXRlcnMpIHtcbiAgICAgIGNvZGUubGluZSgnICogQHBhcmFtIHByb3BzIC0gcmVzb3VyY2UgcHJvcGVydGllcycpO1xuICAgIH1cbiAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgIGlmICh0aGlzLmhhc1BhcmFtZXRlcnMpIHtcbiAgICAgIGNvZGUub3BlbkJsb2NrKGBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiAke3RoaXMucHJvcHNTdHJ1Y3ROYW1lfSlgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29kZS5vcGVuQmxvY2soJ2NvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZyknKTtcbiAgICB9XG4gICAgY29kZS5saW5lKCdzdXBlcihzY29wZSwgaWQpOycpO1xuICAgIGNvZGUubGluZSgnJyk7XG4gICAgY29kZS5saW5lKFwidGhpcy5wcm92aXNpb25lZFByb2R1Y3QgPSBuZXcgc2MuQ2ZuQ2xvdWRGb3JtYXRpb25Qcm92aXNpb25lZFByb2R1Y3QodGhpcywgJ1Jlc291cmNlJywge1wiKTtcbiAgICBjb2RlLmxpbmUoJyAgcHJvdmlzaW9uZWRQcm9kdWN0TmFtZTogdGhpcy5ub2RlLmlkLCcpO1xuICAgIGNvZGUubGluZShgICBwcm92aXNpb25pbmdBcnRpZmFjdE5hbWU6ICcke3RoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucHJvdmlzaW9uaW5nQXJ0aWZhY3QuTmFtZSF9JyxgKTtcbiAgICBjb2RlLmxpbmUoYCAgcHJvZHVjdE5hbWU6ICcke3RoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucHJvZHVjdC5OYW1lIX0nLGApO1xuXG4gICAgLy8gZ2VuZXJhdGUgcHJvdmlzaW9uaW5nIHBhcmFtZXRlcnMgZnJvbSBwcm9wcyB0byBhdm9pZCByZWR1bmRhbnQgZGVmYXVsdHNcbiAgICBpZiAodGhpcy5oYXNQYXJhbWV0ZXJzKSB7XG4gICAgICB0aGlzLmVtaXRQYXJhbWV0ZXJzKGNvZGUpO1xuICAgIH07XG4gICAgY29kZS5saW5lKCd9KTsnKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgICBjb2RlLmxpbmUoJ3RoaXMucHJvdmlzaW9uZWRQcm9kdWN0SWQgPSB0aGlzLnByb3Zpc2lvbmVkUHJvZHVjdC5yZWY7Jyk7XG4gICAgY29kZS5saW5lKFwidGhpcy5jbG91ZEZvcm1hdGlvblN0YWNrQXJuID0gY2RrLlRva2VuLmFzU3RyaW5nKGNkay5Gbi5nZXRBdHQodGhpcy5wcm92aXNpb25lZFByb2R1Y3QubG9naWNhbElkLCAnQ2xvdWRmb3JtYXRpb25TdGFja0FybicpKTtcIik7XG4gICAgY29kZS5saW5lKFwidGhpcy5yZWNvcmRJZCA9IGNkay5Ub2tlbi5hc1N0cmluZyhjZGsuRm4uZ2V0QXR0KHRoaXMucHJvdmlzaW9uZWRQcm9kdWN0LmxvZ2ljYWxJZCwgJ1JlY29yZElkJykpO1wiKTtcbiAgICB0aGlzLm91dHB1dEtleXM/LmZvckVhY2gob3V0cHV0ID0+IHtcbiAgICAgIGNvZGUubGluZShgdGhpcy4ke2NhbWVsKG91dHB1dCl9ID0gY2RrLlRva2VuLmFzU3RyaW5nKGNkay5Gbi5nZXRBdHQodGhpcy5wcm92aXNpb25lZFByb2R1Y3QubG9naWNhbElkLCAnT3V0cHV0cy4ke291dHB1dH0nKSk7YCk7XG4gICAgfSk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG5cbiAgICAvLyBDbG9zZSBjb25zdHJ1Y3QgY2xhc3NcbiAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgfVxufSJdfQ==
|
package/lib/service-catalog.d.ts
CHANGED
package/lib/service-catalog.js
CHANGED
|
@@ -111,7 +111,12 @@ async function describeProduct(options) {
|
|
|
111
111
|
validateProductData(options.productId, describeProductResponse);
|
|
112
112
|
const provisioningArtifact = resolveProvisioningArtifact(describeProductResponse.ProvisioningArtifacts, options.provisioningArtifactId);
|
|
113
113
|
const launchPath = resolveLaunchPath(describeProductResponse.LaunchPaths, options.launchPathId);
|
|
114
|
-
const parameters = await describeProvisioningParameters(
|
|
114
|
+
const parameters = await describeProvisioningParameters({
|
|
115
|
+
productId: options.productId,
|
|
116
|
+
provisioningArtifactId: provisioningArtifact.Id,
|
|
117
|
+
launchPathId: launchPath.Id,
|
|
118
|
+
client: sc,
|
|
119
|
+
});
|
|
115
120
|
return {
|
|
116
121
|
product: describeProductResponse.ProductViewSummary,
|
|
117
122
|
provisioningArtifact: provisioningArtifact,
|
|
@@ -186,4 +191,4 @@ function validateProductData(productId, product) {
|
|
|
186
191
|
throw new Error(`Cannot resolve launch paths for product: ${productId}`);
|
|
187
192
|
}
|
|
188
193
|
}
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jYXRhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZpY2UtY2F0YWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQiwrQkFBd0M7QUFTeEMsTUFBYSxvQkFBb0I7SUFHL0I7UUFDRSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUEscUJBQWUsRUFBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBNkM7UUFDdkUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRU0sS0FBSyxDQUFDLDhCQUE4QixDQUFDLEtBQTZEO1FBRXZHLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUE4QztRQUN6RSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xELENBQUM7Q0FDRjtBQW5CRCxvREFtQkM7QUErQkQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLDJCQUEyQixDQUFDLHFCQUErRCxFQUFFLHNCQUErQjtJQUVuSSxJQUFJLHNCQUFzQixFQUFFO1FBQzFCLE1BQU0sb0JBQW9CLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2pHLElBQUksb0JBQW9CLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxzQkFBc0Is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RTtLQUNYLENBQUMsQ0FBQztJQUVILE9BQU8sb0JBQW9CLENBQUM7QUFDOUIsQ0FBQztBQVhELDREQVdDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxTQUFpQixFQUFFLE9BQWlEO0lBQy9GLElBQUksT0FBTyxDQUFDLGtCQUFrQixJQUFJLFNBQVMsRUFBRTtRQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0tBQ3BFO1NBQU0sSUFBSSxPQUFPLENBQUMscUJBQXFCLElBQUksU0FBUyxFQUFFO1FBQ3JELE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELFNBQVMsRUFBRSxDQUFDLENBQUM7S0FDcEY7U0FBTSxJQUFJLE9BQU8sQ0FBQyxXQUFXLElBQUksU0FBUyxFQUFFO1FBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLFNBQVMsRUFBRSxDQUFDLENBQUM7S0FDMUU7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHsgY3JlYXRlQXdzQ2xpZW50IH0gZnJvbSAnLi9hd3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTZXJ2aWNlQ2F0YWxvZ0NsaWVudCB7XG4gIHNlYXJjaFByb2R1Y3RzKGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuTGlzdFBvcnRmb2xpb3NJbnB1dCk6IFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLkxpc3RQb3J0Zm9saW9zT3V0cHV0PjtcbiAgZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzSW5wdXQpOlxuICBQcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQ+O1xuICBkZXNjcmliZVByb2R1Y3QoaW5wdXQ6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RJbnB1dCk6IFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLkRlc2NyaWJlUHJvZHVjdE91dHB1dD47XG59XG5cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlQ2F0YWxvZ0NsaWVudCBpbXBsZW1lbnRzIElTZXJ2aWNlQ2F0YWxvZ0NsaWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2M6IEFXUy5TZXJ2aWNlQ2F0YWxvZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNjID0gY3JlYXRlQXdzQ2xpZW50KEFXUy5TZXJ2aWNlQ2F0YWxvZyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VhcmNoUHJvZHVjdHMoaW5wdXQ6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5TZWFyY2hQcm9kdWN0c0lucHV0KTogUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuU2VhcmNoUHJvZHVjdHNPdXRwdXQ+IHtcbiAgICByZXR1cm4gdGhpcy5zYy5zZWFyY2hQcm9kdWN0cyhpbnB1dCkucHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlc2NyaWJlUHJvdmlzaW9uaW5nUGFyYW1ldGVycyhpbnB1dDogQVdTLlNlcnZpY2VDYXRhbG9nLkRlc2NyaWJlUHJvdmlzaW9uaW5nUGFyYW1ldGVyc0lucHV0KTpcbiAgUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzT3V0cHV0PiB7XG4gICAgcmV0dXJuIHRoaXMuc2MuZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKGlucHV0KS5wcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVzY3JpYmVQcm9kdWN0KGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm9kdWN0SW5wdXQpOiBQcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RPdXRwdXQ+IHtcbiAgICByZXR1cm4gdGhpcy5zYy5kZXNjcmliZVByb2R1Y3QoaW5wdXQpLnByb21pc2UoKTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3ZpZGUgcXVlcnkgdmFsdWVzIGZvciBhIHNwZWNpZmljIHByb3Zpc2lvbmFibGUgcHJvZHVjdC5cbiAqIElmIG5vIHNwZWNpZmljIElEcyBhcmUgZGVjbGFyZWQgZm9yIGEgcHJvZHVjdCwgd2Ugd2lsbCB1c2UgdGhlIHNldCBgREVGQVVMVGAgdmFsdWUgZm9yIHRoZSBwcm92aXNpb25pbmcgYXJ0aWZhY3QgYW5kIGxhdW5jaCBwYXRoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc2NyaWJlUHJvZHVjdEFnZ3JlZ2F0ZU9wdGlvbnMge1xuICAvKipcbiAgICogQSBjbGllbnQgdGhhdCBwZXJmb3JtcyBjYWxscyB0byBBV1MgU2VydmljZSBDYXRhbG9nLiBZb3UgY2FuIHByb3ZpZGUgYSBtb2NrIGhlcmVcbiAgICogZm9yIHRlc3RpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQSByZWFsIFNlcnZpY2UgQ2F0YWxvZyBjbGllbnRcbiAgICovXG4gIHJlYWRvbmx5IGNsaWVudD86IElTZXJ2aWNlQ2F0YWxvZ0NsaWVudDtcblxuICAvKipcbiAgICogVGhlIHByb2R1Y3QgSWQuXG4gICAqL1xuICByZWFkb25seSBwcm9kdWN0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByb3Zpc2lvbmluZyBhcnRpZmFjdCBJZC5cbiAgICovXG4gIHJlYWRvbmx5IHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsYXVuY2ggcGF0aCBJZC5cbiAgICovXG4gIHJlYWRvbmx5IGxhdW5jaFBhdGhJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwcm92aXNpb25pbmcgYXJ0aWZhY3QgZnJvbSBsaXN0IG9mIGF2YWlsYWJsZSBhcnRpZmFjdHMuXG4gKiBJZiBubyBxdWVyeSBhcnRpZmFjdCBJZCBpcyBwcm92aWRlZCwgdGhlIGFydGlmYWN0IG1hcmtlZCBgREVGQVVMVGAgd2lsbCBiZSByZXR1cm5lZC5cbiAqIElmIG5vIGBERUZBVUxUYCBhcnRpZmFjdCBleGlzdHMsIHRoZSBtb3N0IHJlY2VudGx5IGNyZWF0ZWQgYXJ0aWZhY3Qgd2lsbCBiZSByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gcHJvdmlzaW9uaW5nQXJ0aWZhY3RzIGxpc3Qgb2YgcHJvdmlzaW9uaW5nIGFydGlmYWN0cyBmb3IgYSBwcm9kdWN0XG4gKiBAcGFyYW0gcHJvdmlzaW9uaW5nQXJ0aWZhY3RJZCBxdWVyeSBhcnRpZmFjdCBJZFxuICogQHJldHVybnMgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGRldGFpbFxuICovXG5mdW5jdGlvbiByZXNvbHZlUHJvdmlzaW9uaW5nQXJ0aWZhY3QocHJvdmlzaW9uaW5nQXJ0aWZhY3RzOiBBV1MuU2VydmljZUNhdGFsb2cuUHJvdmlzaW9uaW5nQXJ0aWZhY3RzLCBwcm92aXNpb25pbmdBcnRpZmFjdElkPzogc3RyaW5nKTpcbkFXUy5TZXJ2aWNlQ2F0YWxvZy5Qcm92aXNpb25pbmdBcnRpZmFjdCB7XG4gIGlmIChwcm92aXNpb25pbmdBcnRpZmFjdElkKSB7XG4gICAgY29uc3QgcHJvdmlzaW9uaW5nQXJ0aWZhY3QgPSBwcm92aXNpb25pbmdBcnRpZmFjdHMuZmlsdGVyKHBhID0+IHBhLklkID09IHByb3Zpc2lvbmluZ0FydGlmYWN0SWQpO1xuICAgIGlmIChwcm92aXNpb25pbmdBcnRpZmFjdC5sZW5ndGggPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBzcGVjaWZpZWQgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGlkOiAke3Byb3Zpc2lvbmluZ0FydGlmYWN0SWR9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwcm92aXNpb25pbmdBcnRpZmFjdC5wb3AoKSE7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICBpZiAocHJvdmlzaW9uaW5nQXJ0aWZhY3RzLmZpbHRlcihwYSA9PiBwYS5HdWlkYW5jZSA9PSAnREVGQVVMVCcpLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgIHJldHVybiBwcm92aXNpb25pbmdBcnRpZmFjdHMuZmlsdGVyKHBhID0+IHBhLkd1aWRhbmNlID09ICdERUZBVUxUJykucG9wKCkhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHByb3Zpc2lvbmluZ0FydGlmYWN0cy5zb3J0KChhLCBiKSA9PiBhLkNyZWF0ZWRUaW1lIS52YWx1ZU9mKCkgLSBiLkNyZWF0ZWRUaW1lIS52YWx1ZU9mKCkpLnBvcCgpITtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHJlc29sdmUgZGVmYXVsdCBvciBsYXRlc3QgcHJvdmlzaW9uaW5nIGFydGlmYWN0LicpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHF1ZXJpZWQgbGF1bmNoIHBhdGggZnJvbSBsaXN0IG9mIGF2YWlsYWJsZSBsYXVuY2ggcGF0aHMuXG4gKiBAcGFyYW0gbGF1bmNoUGF0aHMgbGlzdCBvZiBhdmFpbGFibGUgbGF1bmNoIHBhdGhzIGZvciB0aGUgcHJvZHVjdFxuICogQHBhcmFtIGxhdW5jaFBhdGhJZCB0aGUgcXVlcnkgbGF1bmNoIHBhdGgncyBJZFxuICogQHJldHVybnMgdGhlIGxhdW5jaCBwYXRoIHN1bW1hcnkgZm9yIHRoZSBxdWVyeSBsYXVuY2ggcGF0aFxuICovXG5mdW5jdGlvbiByZXNvbHZlTGF1bmNoUGF0aChsYXVuY2hQYXRoczogQVdTLlNlcnZpY2VDYXRhbG9nLkxhdW5jaFBhdGhTdW1tYXJpZXMsIGxhdW5jaFBhdGhJZD86IHN0cmluZyk6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5MYXVuY2hQYXRoU3VtbWFyeSB7XG4gIGlmIChsYXVuY2hQYXRoSWQpIHtcbiAgICBjb25zdCBsYXVuY2hQYXRoID0gbGF1bmNoUGF0aHMuZmlsdGVyKGxwID0+IGxwLklkID09IGxhdW5jaFBhdGhJZCk7XG4gICAgaWYgKGxhdW5jaFBhdGgubGVuZ3RoID09IDAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIHNwZWNpZmllZCBsYXVuY2ggcGF0aCBpZDogJHtsYXVuY2hQYXRoSWR9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBsYXVuY2hQYXRoLnBvcCgpITtcbiAgICB9XG5cbiAgfSBlbHNlIGlmIChsYXVuY2hQYXRocy5sZW5ndGggPT0gMSkge1xuICAgIHJldHVybiBsYXVuY2hQYXRocy5wb3AoKSE7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gcmVzb2x2ZSBiZXR3ZWVuIG11bHRpcGxlIGxhdW5jaCBwYXRocy4nKTtcbiAgfVxufVxuXG4vKipcbiAqIEZldGNoZXMgdGhlIGFsbCB0aGUgYXZhaWxhYmxlIG9yIHF1ZXJpZWQgc2VydmljZSBjYXRhbG9nIHByb2R1Y3QocykgZm9yIHRoZSBjYWxsZXIuXG4gKlxuICogQHJldHVybnMgbGlzdCBvZiBwcm9kdWN0IHZpZXcgc3VtbWFyaWVzXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRlc2NyaWJlUHJvZHVjdChvcHRpb25zOiBEZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGVPcHRpb25zKTogUHJvbWlzZTxQcm9kdWN0RGF0YUFnZ3JlZ2F0ZT4ge1xuICBjb25zdCBzYzogSVNlcnZpY2VDYXRhbG9nQ2xpZW50ID0gb3B0aW9ucy5jbGllbnQgPz8gbmV3IFNlcnZpY2VDYXRhbG9nQ2xpZW50KCk7XG5cbiAgY29uc3QgZGVzY3JpYmVQcm9kdWN0UmVzcG9uc2U6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RPdXRwdXQgPSBhd2FpdCBzYy5kZXNjcmliZVByb2R1Y3Qoe1xuICAgIElkOiBvcHRpb25zLnByb2R1Y3RJZCxcbiAgfSk7XG4gIHZhbGlkYXRlUHJvZHVjdERhdGEob3B0aW9ucy5wcm9kdWN0SWQsIGRlc2NyaWJlUHJvZHVjdFJlc3BvbnNlKTtcblxuICBjb25zdCBwcm92aXNpb25pbmdBcnRpZmFjdDogQVdTLlNlcnZpY2VDYXRhbG9nLlByb3Zpc2lvbmluZ0FydGlmYWN0ID0gcmVzb2x2ZVByb3Zpc2lvbmluZ0FydGlmYWN0KGRlc2NyaWJlUHJvZHVjdFJlc3BvbnNlLlByb3Zpc2lvbmluZ0FydGlmYWN0cyEsXG4gICAgb3B0aW9ucy5wcm92aXNpb25pbmdBcnRpZmFjdElkKTtcblxuICBjb25zdCBsYXVuY2hQYXRoOiBBV1MuU2VydmljZUNhdGFsb2cuTGF1bmNoUGF0aFN1bW1hcnkgPSByZXNvbHZlTGF1bmNoUGF0aChkZXNjcmliZVByb2R1Y3RSZXNwb25zZS5MYXVuY2hQYXRocyEsIG9wdGlvbnMubGF1bmNoUGF0aElkKTtcblxuICBjb25zdCBwYXJhbWV0ZXJzOiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzT3V0cHV0ID0gYXdhaXQgZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKG9wdGlvbnMpO1xuXG4gIHJldHVybiB7XG4gICAgcHJvZHVjdDogZGVzY3JpYmVQcm9kdWN0UmVzcG9uc2UuUHJvZHVjdFZpZXdTdW1tYXJ5ISxcbiAgICBwcm92aXNpb25pbmdBcnRpZmFjdDogcHJvdmlzaW9uaW5nQXJ0aWZhY3QsXG4gICAgbGF1bmNoUGF0aDogbGF1bmNoUGF0aCxcbiAgICBwYXJhbXM6IHBhcmFtZXRlcnMsXG4gIH07XG59XG5cbi8qKlxuICogRmV0Y2hlcyBhbGwgdGhlIGF2YWlsYWJsZSBzZXJ2aWNlIGNhdGFsb2cgcHJvZHVjdChzKSBmb3IgdGhlIGNhbGxlci5cbiAqXG4gKiBAcmV0dXJucyBsaXN0IG9mIHByb2R1Y3QgdmlldyBzdW1tYXJpZXNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoQXZhaWxhYmxlUHJvZHVjdHMoY2xpZW50PzogSVNlcnZpY2VDYXRhbG9nQ2xpZW50KTogUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuUHJvZHVjdFZpZXdTdW1tYXJpZXM+IHtcbiAgY29uc3Qgc2MgPSBjbGllbnQgPz8gbmV3IFNlcnZpY2VDYXRhbG9nQ2xpZW50KCk7XG5cbiAgY29uc3QgcHJvZHVjdHM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5Qcm9kdWN0Vmlld1N1bW1hcmllcyA9IFtdO1xuICBsZXQgdG9rZW47XG5cbiAgZG8ge1xuICAgIGNvbnN0IHJlczogQVdTLlNlcnZpY2VDYXRhbG9nLlNlYXJjaFByb2R1Y3RzT3V0cHV0ID0gYXdhaXQgc2Muc2VhcmNoUHJvZHVjdHMoe1xuICAgICAgUGFnZVRva2VuOiB0b2tlbixcbiAgICB9KTtcblxuICAgIGlmIChyZXMuUHJvZHVjdFZpZXdTdW1tYXJpZXMpIHtcbiAgICAgIHByb2R1Y3RzLnB1c2goLi4ucmVzLlByb2R1Y3RWaWV3U3VtbWFyaWVzKTtcbiAgICB9XG4gICAgdG9rZW4gPSByZXMuTmV4dFBhZ2VUb2tlbjtcbiAgfSB3aGlsZSAodG9rZW4pO1xuXG4gIHJldHVybiBwcm9kdWN0cztcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBwcm92aXNpb24gYW4gYXJ0aWZhY3QuXG4gKiBJbmNsdWRlcyBpbmZvcm1hdGlvbiBvbiBpbnB1dHMgYW5kIG91dHB1dHMgb2YgdGhlIHByb2R1Y3QuXG4gKlxuICogQHJldHVybnMgdGhlIHByb3Zpc29uaW5nIHBhcmFtZXRlcnMgZm9yIGFuIGFydGlmYWN0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnMob3B0aW9uczogRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucyk6XG5Qcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQ+IHtcblxuICBjb25zdCBzYyA9IG9wdGlvbnMuY2xpZW50ID8/IG5ldyBTZXJ2aWNlQ2F0YWxvZ0NsaWVudCgpO1xuXG4gIGNvbnN0IHByb3Zpc2lvbmluZ1BhcmFtZXRlcnM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQgPSBhd2FpdCBzYy5kZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnMoe1xuICAgIFByb2R1Y3RJZDogb3B0aW9ucy5wcm9kdWN0SWQsXG4gICAgUHJvdmlzaW9uaW5nQXJ0aWZhY3RJZDogb3B0aW9ucy5wcm92aXNpb25pbmdBcnRpZmFjdElkLFxuICAgIFBhdGhJZDogb3B0aW9ucy5sYXVuY2hQYXRoSWQsXG4gIH0pO1xuXG4gIHJldHVybiBwcm92aXNpb25pbmdQYXJhbWV0ZXJzO1xufVxuXG4vKipcbiAqIEhvbGRzIGFsbCB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGdlbmVyYXRlIGEgcHJvZHVjdCBhcnRpZmFjdCB0byBwcm92aXNpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdERhdGFBZ2dyZWdhdGUge1xuICAvKipcbiAgICogQ29yZSBwcm9kdWN0IGRldGFpbHMuXG4gICAqL1xuICByZWFkb25seSBwcm9kdWN0OiBBV1MuU2VydmljZUNhdGFsb2cuUHJvZHVjdFZpZXdTdW1tYXJ5O1xuICAvKipcbiAgICogRGV0YWlscyBvbiB0aGUgc2VsZWN0ZWQgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGZvciB0aGUgcHJvZHVjdC5cbiAgICogUmVwcmVzZW50cyB0aGUgYWN0dWFsIHRlbXBsYXRlIHRoYXQgY29udGFpbnMgcmVzb3VyY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlzaW9uaW5nQXJ0aWZhY3Q6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5Qcm92aXNpb25pbmdBcnRpZmFjdDtcbiAgLyoqXG4gICAqIERldGFpbHMgb24gdGhlIHNlbGVjdGVkIGxhdW5jaCBwYXRoIGZvciB0aGUgcHJvZHVjdC5cbiAgICogUmVwcmVzZW50cyB0aGUgcGVybWlzc2lvbnMvYWJpbGl0eSBmb3IgZW5kIHVzZXIgdG8gcHJvdmlzaW9uIHRoZSBwcm9kdWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgbGF1bmNoUGF0aDogQVdTLlNlcnZpY2VDYXRhbG9nLkxhdW5jaFBhdGhTdW1tYXJ5O1xuICAvKipcbiAgICogRGV0YWlscyBvbiBwcm92aXNpb25pbmcgcmVxdWlyZW1lbnRzIGZvciB0aGUgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGFuZCBsYXVuY2ggcGF0aC5cbiAgICogSG9sZHMgaW5mb3JtYXRpb24gb24gdGhlIGlucHV0cyBhbmQgb3V0cHV0cyBmb3IgdGhlIGRvd25zdHJlYW0gdGVtcGxhdGUuXG4gICAqL1xuICByZWFkb25seSBwYXJhbXM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQ7XG59XG5cbi8qKlxuICogTWFrZXMgYSBzZXJpZXMgb2YgY2FsbHMgdG8gc2VydmljZSBjYXRhbG9nIHRvIGdldCBhbGwgaW5mb3JtYXRpb25cbiAqIHJlcXVpcmVkIHRvIHByb3Zpc2lvbiBhIHNlcnZpY2UgY2F0YWxvZyBwcm9kdWN0LlxuICpcbiAqIEByZXR1cm5zIFByb2R1Y3RWZXJzaW9uRGF0YSBhZ2dyZWdhdGUgb2YgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGRldGFpbHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGUob3B0aW9uczogRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucyk6IFByb21pc2U8UHJvZHVjdERhdGFBZ2dyZWdhdGU+IHtcbiAgY29uc3Qgc2MgPSBvcHRpb25zLmNsaWVudCA/PyBuZXcgU2VydmljZUNhdGFsb2dDbGllbnQoKTtcblxuICBjb25zdCBwcm9kdWN0RGF0YUFnZ3JlZ2F0ZSA9IGF3YWl0IGRlc2NyaWJlUHJvZHVjdCh7XG4gICAgcHJvZHVjdElkOiBvcHRpb25zLnByb2R1Y3RJZCxcbiAgICBsYXVuY2hQYXRoSWQ6IG9wdGlvbnMubGF1bmNoUGF0aElkLFxuICAgIHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ6IG9wdGlvbnMucHJvdmlzaW9uaW5nQXJ0aWZhY3RJZCxcbiAgICBjbGllbnQ6IHNjLFxuICB9KTtcblxuICByZXR1cm4gcHJvZHVjdERhdGFBZ2dyZWdhdGU7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvZHVjdERhdGEocHJvZHVjdElkOiBzdHJpbmcsIHByb2R1Y3Q6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RPdXRwdXQpOiB2b2lkIHtcbiAgaWYgKHByb2R1Y3QuUHJvZHVjdFZpZXdTdW1tYXJ5ID09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgcHJvZHVjdCBkZXRhaWxzIGZvciAke3Byb2R1Y3RJZH1gKTtcbiAgfSBlbHNlIGlmIChwcm9kdWN0LlByb3Zpc2lvbmluZ0FydGlmYWN0cyA9PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIHByb3Zpc2lvbmluZyBhcnRpZmFjdHMgZm9yIHByb2R1Y3Q6ICR7cHJvZHVjdElkfWApO1xuICB9IGVsc2UgaWYgKHByb2R1Y3QuTGF1bmNoUGF0aHMgPT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBsYXVuY2ggcGF0aHMgZm9yIHByb2R1Y3Q6ICR7cHJvZHVjdElkfWApO1xuICB9XG59Il19
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jYXRhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZpY2UtY2F0YWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQiwrQkFBd0M7QUFTeEMsTUFBYSxvQkFBb0I7SUFHL0I7UUFDRSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUEscUJBQWUsRUFBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBNkM7UUFDdkUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRU0sS0FBSyxDQUFDLDhCQUE4QixDQUFDLEtBQTZEO1FBRXZHLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUE4QztRQUN6RSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xELENBQUM7Q0FDRjtBQW5CRCxvREFtQkM7QUErQkQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLDJCQUEyQixDQUFDLHFCQUErRCxFQUFFLHNCQUErQjtJQUVuSSxJQUFJLHNCQUFzQixFQUFFO1FBQzFCLE1BQU0sb0JBQW9CLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2pHLElBQUksb0JBQW9CLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxzQkFBc0Is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O1FBQ2pELFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztRQUM1QixZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7UUFDbEMsc0JBQXNCLEVBQUUsT0FBTyxDQUFDLHNCQUFzQjtRQUN0RCxNQUFNLEVBQUUsRUFBRTtLQUNYLENBQUMsQ0FBQztJQUVILE9BQU8sb0JBQW9CLENBQUM7QUFDOUIsQ0FBQztBQVhELDREQVdDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxTQUFpQixFQUFFLE9BQWlEO0lBQy9GLElBQUksT0FBTyxDQUFDLGtCQUFrQixJQUFJLFNBQVMsRUFBRTtRQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0tBQ3BFO1NBQU0sSUFBSSxPQUFPLENBQUMscUJBQXFCLElBQUksU0FBUyxFQUFFO1FBQ3JELE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELFNBQVMsRUFBRSxDQUFDLENBQUM7S0FDcEY7U0FBTSxJQUFJLE9BQU8sQ0FBQyxXQUFXLElBQUksU0FBUyxFQUFFO1FBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLFNBQVMsRUFBRSxDQUFDLENBQUM7S0FDMUU7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHsgY3JlYXRlQXdzQ2xpZW50IH0gZnJvbSAnLi9hd3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTZXJ2aWNlQ2F0YWxvZ0NsaWVudCB7XG4gIHNlYXJjaFByb2R1Y3RzKGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuTGlzdFBvcnRmb2xpb3NJbnB1dCk6IFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLkxpc3RQb3J0Zm9saW9zT3V0cHV0PjtcbiAgZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzSW5wdXQpOlxuICBQcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQ+O1xuICBkZXNjcmliZVByb2R1Y3QoaW5wdXQ6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RJbnB1dCk6IFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLkRlc2NyaWJlUHJvZHVjdE91dHB1dD47XG59XG5cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlQ2F0YWxvZ0NsaWVudCBpbXBsZW1lbnRzIElTZXJ2aWNlQ2F0YWxvZ0NsaWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2M6IEFXUy5TZXJ2aWNlQ2F0YWxvZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNjID0gY3JlYXRlQXdzQ2xpZW50KEFXUy5TZXJ2aWNlQ2F0YWxvZyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VhcmNoUHJvZHVjdHMoaW5wdXQ6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5TZWFyY2hQcm9kdWN0c0lucHV0KTogUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuU2VhcmNoUHJvZHVjdHNPdXRwdXQ+IHtcbiAgICByZXR1cm4gdGhpcy5zYy5zZWFyY2hQcm9kdWN0cyhpbnB1dCkucHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlc2NyaWJlUHJvdmlzaW9uaW5nUGFyYW1ldGVycyhpbnB1dDogQVdTLlNlcnZpY2VDYXRhbG9nLkRlc2NyaWJlUHJvdmlzaW9uaW5nUGFyYW1ldGVyc0lucHV0KTpcbiAgUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzT3V0cHV0PiB7XG4gICAgcmV0dXJuIHRoaXMuc2MuZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKGlucHV0KS5wcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVzY3JpYmVQcm9kdWN0KGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm9kdWN0SW5wdXQpOiBQcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RPdXRwdXQ+IHtcbiAgICByZXR1cm4gdGhpcy5zYy5kZXNjcmliZVByb2R1Y3QoaW5wdXQpLnByb21pc2UoKTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3ZpZGUgcXVlcnkgdmFsdWVzIGZvciBhIHNwZWNpZmljIHByb3Zpc2lvbmFibGUgcHJvZHVjdC5cbiAqIElmIG5vIHNwZWNpZmljIElEcyBhcmUgZGVjbGFyZWQgZm9yIGEgcHJvZHVjdCwgd2Ugd2lsbCB1c2UgdGhlIHNldCBgREVGQVVMVGAgdmFsdWUgZm9yIHRoZSBwcm92aXNpb25pbmcgYXJ0aWZhY3QgYW5kIGxhdW5jaCBwYXRoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc2NyaWJlUHJvZHVjdEFnZ3JlZ2F0ZU9wdGlvbnMge1xuICAvKipcbiAgICogQSBjbGllbnQgdGhhdCBwZXJmb3JtcyBjYWxscyB0byBBV1MgU2VydmljZSBDYXRhbG9nLiBZb3UgY2FuIHByb3ZpZGUgYSBtb2NrIGhlcmVcbiAgICogZm9yIHRlc3RpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQSByZWFsIFNlcnZpY2UgQ2F0YWxvZyBjbGllbnRcbiAgICovXG4gIHJlYWRvbmx5IGNsaWVudD86IElTZXJ2aWNlQ2F0YWxvZ0NsaWVudDtcblxuICAvKipcbiAgICogVGhlIHByb2R1Y3QgSWQuXG4gICAqL1xuICByZWFkb25seSBwcm9kdWN0SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm92aXNpb25pbmcgYXJ0aWZhY3QgSWQuXG4gICAqL1xuICByZWFkb25seSBwcm92aXNpb25pbmdBcnRpZmFjdElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbGF1bmNoIHBhdGggSWQuXG4gICAqL1xuICByZWFkb25seSBsYXVuY2hQYXRoSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGZyb20gbGlzdCBvZiBhdmFpbGFibGUgYXJ0aWZhY3RzLlxuICogSWYgbm8gcXVlcnkgYXJ0aWZhY3QgSWQgaXMgcHJvdmlkZWQsIHRoZSBhcnRpZmFjdCBtYXJrZWQgYERFRkFVTFRgIHdpbGwgYmUgcmV0dXJuZWQuXG4gKiBJZiBubyBgREVGQVVMVGAgYXJ0aWZhY3QgZXhpc3RzLCB0aGUgbW9zdCByZWNlbnRseSBjcmVhdGVkIGFydGlmYWN0IHdpbGwgYmUgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHByb3Zpc2lvbmluZ0FydGlmYWN0cyBsaXN0IG9mIHByb3Zpc2lvbmluZyBhcnRpZmFjdHMgZm9yIGEgcHJvZHVjdFxuICogQHBhcmFtIHByb3Zpc2lvbmluZ0FydGlmYWN0SWQgcXVlcnkgYXJ0aWZhY3QgSWRcbiAqIEByZXR1cm5zIHByb3Zpc2lvbmluZyBhcnRpZmFjdCBkZXRhaWxcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVByb3Zpc2lvbmluZ0FydGlmYWN0KHByb3Zpc2lvbmluZ0FydGlmYWN0czogQVdTLlNlcnZpY2VDYXRhbG9nLlByb3Zpc2lvbmluZ0FydGlmYWN0cywgcHJvdmlzaW9uaW5nQXJ0aWZhY3RJZD86IHN0cmluZyk6XG5BV1MuU2VydmljZUNhdGFsb2cuUHJvdmlzaW9uaW5nQXJ0aWZhY3Qge1xuICBpZiAocHJvdmlzaW9uaW5nQXJ0aWZhY3RJZCkge1xuICAgIGNvbnN0IHByb3Zpc2lvbmluZ0FydGlmYWN0ID0gcHJvdmlzaW9uaW5nQXJ0aWZhY3RzLmZpbHRlcihwYSA9PiBwYS5JZCA9PSBwcm92aXNpb25pbmdBcnRpZmFjdElkKTtcbiAgICBpZiAocHJvdmlzaW9uaW5nQXJ0aWZhY3QubGVuZ3RoID09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgc3BlY2lmaWVkIHByb3Zpc2lvbmluZyBhcnRpZmFjdCBpZDogJHtwcm92aXNpb25pbmdBcnRpZmFjdElkfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcHJvdmlzaW9uaW5nQXJ0aWZhY3QucG9wKCkhO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgaWYgKHByb3Zpc2lvbmluZ0FydGlmYWN0cy5maWx0ZXIocGEgPT4gcGEuR3VpZGFuY2UgPT0gJ0RFRkFVTFQnKS5sZW5ndGggPT0gMSkge1xuICAgICAgICByZXR1cm4gcHJvdmlzaW9uaW5nQXJ0aWZhY3RzLmZpbHRlcihwYSA9PiBwYS5HdWlkYW5jZSA9PSAnREVGQVVMVCcpLnBvcCgpITtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwcm92aXNpb25pbmdBcnRpZmFjdHMuc29ydCgoYSwgYikgPT4gYS5DcmVhdGVkVGltZSEudmFsdWVPZigpIC0gYi5DcmVhdGVkVGltZSEudmFsdWVPZigpKS5wb3AoKSE7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byByZXNvbHZlIGRlZmF1bHQgb3IgbGF0ZXN0IHByb3Zpc2lvbmluZyBhcnRpZmFjdC4nKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBxdWVyaWVkIGxhdW5jaCBwYXRoIGZyb20gbGlzdCBvZiBhdmFpbGFibGUgbGF1bmNoIHBhdGhzLlxuICogQHBhcmFtIGxhdW5jaFBhdGhzIGxpc3Qgb2YgYXZhaWxhYmxlIGxhdW5jaCBwYXRocyBmb3IgdGhlIHByb2R1Y3RcbiAqIEBwYXJhbSBsYXVuY2hQYXRoSWQgdGhlIHF1ZXJ5IGxhdW5jaCBwYXRoJ3MgSWRcbiAqIEByZXR1cm5zIHRoZSBsYXVuY2ggcGF0aCBzdW1tYXJ5IGZvciB0aGUgcXVlcnkgbGF1bmNoIHBhdGhcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUxhdW5jaFBhdGgobGF1bmNoUGF0aHM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5MYXVuY2hQYXRoU3VtbWFyaWVzLCBsYXVuY2hQYXRoSWQ/OiBzdHJpbmcpOiBBV1MuU2VydmljZUNhdGFsb2cuTGF1bmNoUGF0aFN1bW1hcnkge1xuICBpZiAobGF1bmNoUGF0aElkKSB7XG4gICAgY29uc3QgbGF1bmNoUGF0aCA9IGxhdW5jaFBhdGhzLmZpbHRlcihscCA9PiBscC5JZCA9PSBsYXVuY2hQYXRoSWQpO1xuICAgIGlmIChsYXVuY2hQYXRoLmxlbmd0aCA9PSAwICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBzcGVjaWZpZWQgbGF1bmNoIHBhdGggaWQ6ICR7bGF1bmNoUGF0aElkfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGF1bmNoUGF0aC5wb3AoKSE7XG4gICAgfVxuXG4gIH0gZWxzZSBpZiAobGF1bmNoUGF0aHMubGVuZ3RoID09IDEpIHtcbiAgICByZXR1cm4gbGF1bmNoUGF0aHMucG9wKCkhO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHJlc29sdmUgYmV0d2VlbiBtdWx0aXBsZSBsYXVuY2ggcGF0aHMuJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBGZXRjaGVzIHRoZSBhbGwgdGhlIGF2YWlsYWJsZSBvciBxdWVyaWVkIHNlcnZpY2UgY2F0YWxvZyBwcm9kdWN0KHMpIGZvciB0aGUgY2FsbGVyLlxuICpcbiAqIEByZXR1cm5zIGxpc3Qgb2YgcHJvZHVjdCB2aWV3IHN1bW1hcmllc1xuICovXG5hc3luYyBmdW5jdGlvbiBkZXNjcmliZVByb2R1Y3Qob3B0aW9uczogRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucyk6IFByb21pc2U8UHJvZHVjdERhdGFBZ2dyZWdhdGU+IHtcbiAgY29uc3Qgc2M6IElTZXJ2aWNlQ2F0YWxvZ0NsaWVudCA9IG9wdGlvbnMuY2xpZW50ID8/IG5ldyBTZXJ2aWNlQ2F0YWxvZ0NsaWVudCgpO1xuXG4gIGNvbnN0IGRlc2NyaWJlUHJvZHVjdFJlc3BvbnNlOiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm9kdWN0T3V0cHV0ID0gYXdhaXQgc2MuZGVzY3JpYmVQcm9kdWN0KHtcbiAgICBJZDogb3B0aW9ucy5wcm9kdWN0SWQsXG4gIH0pO1xuICB2YWxpZGF0ZVByb2R1Y3REYXRhKG9wdGlvbnMucHJvZHVjdElkISwgZGVzY3JpYmVQcm9kdWN0UmVzcG9uc2UpO1xuXG4gIGNvbnN0IHByb3Zpc2lvbmluZ0FydGlmYWN0OiBBV1MuU2VydmljZUNhdGFsb2cuUHJvdmlzaW9uaW5nQXJ0aWZhY3QgPSByZXNvbHZlUHJvdmlzaW9uaW5nQXJ0aWZhY3QoZGVzY3JpYmVQcm9kdWN0UmVzcG9uc2UuUHJvdmlzaW9uaW5nQXJ0aWZhY3RzISxcbiAgICBvcHRpb25zLnByb3Zpc2lvbmluZ0FydGlmYWN0SWQpO1xuXG4gIGNvbnN0IGxhdW5jaFBhdGg6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5MYXVuY2hQYXRoU3VtbWFyeSA9IHJlc29sdmVMYXVuY2hQYXRoKGRlc2NyaWJlUHJvZHVjdFJlc3BvbnNlLkxhdW5jaFBhdGhzISwgb3B0aW9ucy5sYXVuY2hQYXRoSWQpO1xuXG4gIGNvbnN0IHBhcmFtZXRlcnM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQgPSBhd2FpdCBkZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnMoe1xuICAgIHByb2R1Y3RJZDogb3B0aW9ucy5wcm9kdWN0SWQhLFxuICAgIHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ6IHByb3Zpc2lvbmluZ0FydGlmYWN0LklkISxcbiAgICBsYXVuY2hQYXRoSWQ6IGxhdW5jaFBhdGguSWQhLFxuICAgIGNsaWVudDogc2MsXG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgcHJvZHVjdDogZGVzY3JpYmVQcm9kdWN0UmVzcG9uc2UuUHJvZHVjdFZpZXdTdW1tYXJ5ISxcbiAgICBwcm92aXNpb25pbmdBcnRpZmFjdDogcHJvdmlzaW9uaW5nQXJ0aWZhY3QsXG4gICAgbGF1bmNoUGF0aDogbGF1bmNoUGF0aCxcbiAgICBwYXJhbXM6IHBhcmFtZXRlcnMsXG4gIH07XG59XG5cbi8qKlxuICogRmV0Y2hlcyBhbGwgdGhlIGF2YWlsYWJsZSBzZXJ2aWNlIGNhdGFsb2cgcHJvZHVjdChzKSBmb3IgdGhlIGNhbGxlci5cbiAqXG4gKiBAcmV0dXJucyBsaXN0IG9mIHByb2R1Y3QgdmlldyBzdW1tYXJpZXNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoQXZhaWxhYmxlUHJvZHVjdHMoY2xpZW50PzogSVNlcnZpY2VDYXRhbG9nQ2xpZW50KTogUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuUHJvZHVjdFZpZXdTdW1tYXJpZXM+IHtcbiAgY29uc3Qgc2MgPSBjbGllbnQgPz8gbmV3IFNlcnZpY2VDYXRhbG9nQ2xpZW50KCk7XG5cbiAgY29uc3QgcHJvZHVjdHM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5Qcm9kdWN0Vmlld1N1bW1hcmllcyA9IFtdO1xuICBsZXQgdG9rZW47XG5cbiAgZG8ge1xuICAgIGNvbnN0IHJlczogQVdTLlNlcnZpY2VDYXRhbG9nLlNlYXJjaFByb2R1Y3RzT3V0cHV0ID0gYXdhaXQgc2Muc2VhcmNoUHJvZHVjdHMoe1xuICAgICAgUGFnZVRva2VuOiB0b2tlbixcbiAgICB9KTtcblxuICAgIGlmIChyZXMuUHJvZHVjdFZpZXdTdW1tYXJpZXMpIHtcbiAgICAgIHByb2R1Y3RzLnB1c2goLi4ucmVzLlByb2R1Y3RWaWV3U3VtbWFyaWVzKTtcbiAgICB9XG4gICAgdG9rZW4gPSByZXMuTmV4dFBhZ2VUb2tlbjtcbiAgfSB3aGlsZSAodG9rZW4pO1xuXG4gIHJldHVybiBwcm9kdWN0cztcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBwcm92aXNpb24gYW4gYXJ0aWZhY3QuXG4gKiBJbmNsdWRlcyBpbmZvcm1hdGlvbiBvbiBpbnB1dHMgYW5kIG91dHB1dHMgb2YgdGhlIHByb2R1Y3QuXG4gKlxuICogQHJldHVybnMgdGhlIHByb3Zpc29uaW5nIHBhcmFtZXRlcnMgZm9yIGFuIGFydGlmYWN0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnMob3B0aW9uczogRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucyk6XG5Qcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQ+IHtcblxuICBjb25zdCBzYyA9IG9wdGlvbnMuY2xpZW50ID8/IG5ldyBTZXJ2aWNlQ2F0YWxvZ0NsaWVudCgpO1xuXG4gIGNvbnN0IHByb3Zpc2lvbmluZ1BhcmFtZXRlcnM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQgPSBhd2FpdCBzYy5kZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnMoe1xuICAgIFByb2R1Y3RJZDogb3B0aW9ucy5wcm9kdWN0SWQsXG4gICAgUHJvdmlzaW9uaW5nQXJ0aWZhY3RJZDogb3B0aW9ucy5wcm92aXNpb25pbmdBcnRpZmFjdElkLFxuICAgIFBhdGhJZDogb3B0aW9ucy5sYXVuY2hQYXRoSWQsXG4gIH0pO1xuXG4gIHJldHVybiBwcm92aXNpb25pbmdQYXJhbWV0ZXJzO1xufVxuXG4vKipcbiAqIEhvbGRzIGFsbCB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGdlbmVyYXRlIGEgcHJvZHVjdCBhcnRpZmFjdCB0byBwcm92aXNpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdERhdGFBZ2dyZWdhdGUge1xuICAvKipcbiAgICogQ29yZSBwcm9kdWN0IGRldGFpbHMuXG4gICAqL1xuICByZWFkb25seSBwcm9kdWN0OiBBV1MuU2VydmljZUNhdGFsb2cuUHJvZHVjdFZpZXdTdW1tYXJ5O1xuICAvKipcbiAgICogRGV0YWlscyBvbiB0aGUgc2VsZWN0ZWQgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGZvciB0aGUgcHJvZHVjdC5cbiAgICogUmVwcmVzZW50cyB0aGUgYWN0dWFsIHRlbXBsYXRlIHRoYXQgY29udGFpbnMgcmVzb3VyY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlzaW9uaW5nQXJ0aWZhY3Q6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5Qcm92aXNpb25pbmdBcnRpZmFjdDtcbiAgLyoqXG4gICAqIERldGFpbHMgb24gdGhlIHNlbGVjdGVkIGxhdW5jaCBwYXRoIGZvciB0aGUgcHJvZHVjdC5cbiAgICogUmVwcmVzZW50cyB0aGUgcGVybWlzc2lvbnMvYWJpbGl0eSBmb3IgZW5kIHVzZXIgdG8gcHJvdmlzaW9uIHRoZSBwcm9kdWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgbGF1bmNoUGF0aDogQVdTLlNlcnZpY2VDYXRhbG9nLkxhdW5jaFBhdGhTdW1tYXJ5O1xuICAvKipcbiAgICogRGV0YWlscyBvbiBwcm92aXNpb25pbmcgcmVxdWlyZW1lbnRzIGZvciB0aGUgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGFuZCBsYXVuY2ggcGF0aC5cbiAgICogSG9sZHMgaW5mb3JtYXRpb24gb24gdGhlIGlucHV0cyBhbmQgb3V0cHV0cyBmb3IgdGhlIGRvd25zdHJlYW0gdGVtcGxhdGUuXG4gICAqL1xuICByZWFkb25seSBwYXJhbXM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQ7XG59XG5cbi8qKlxuICogTWFrZXMgYSBzZXJpZXMgb2YgY2FsbHMgdG8gc2VydmljZSBjYXRhbG9nIHRvIGdldCBhbGwgaW5mb3JtYXRpb25cbiAqIHJlcXVpcmVkIHRvIHByb3Zpc2lvbiBhIHNlcnZpY2UgY2F0YWxvZyBwcm9kdWN0LlxuICpcbiAqIEByZXR1cm5zIFByb2R1Y3RWZXJzaW9uRGF0YSBhZ2dyZWdhdGUgb2YgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGRldGFpbHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGUob3B0aW9uczogRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucyk6IFByb21pc2U8UHJvZHVjdERhdGFBZ2dyZWdhdGU+IHtcbiAgY29uc3Qgc2MgPSBvcHRpb25zLmNsaWVudCA/PyBuZXcgU2VydmljZUNhdGFsb2dDbGllbnQoKTtcblxuICBjb25zdCBwcm9kdWN0RGF0YUFnZ3JlZ2F0ZSA9IGF3YWl0IGRlc2NyaWJlUHJvZHVjdCh7XG4gICAgcHJvZHVjdElkOiBvcHRpb25zLnByb2R1Y3RJZCxcbiAgICBsYXVuY2hQYXRoSWQ6IG9wdGlvbnMubGF1bmNoUGF0aElkLFxuICAgIHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ6IG9wdGlvbnMucHJvdmlzaW9uaW5nQXJ0aWZhY3RJZCxcbiAgICBjbGllbnQ6IHNjLFxuICB9KTtcblxuICByZXR1cm4gcHJvZHVjdERhdGFBZ2dyZWdhdGU7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvZHVjdERhdGEocHJvZHVjdElkOiBzdHJpbmcsIHByb2R1Y3Q6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RPdXRwdXQpOiB2b2lkIHtcbiAgaWYgKHByb2R1Y3QuUHJvZHVjdFZpZXdTdW1tYXJ5ID09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgcHJvZHVjdCBkZXRhaWxzIGZvciAke3Byb2R1Y3RJZH1gKTtcbiAgfSBlbHNlIGlmIChwcm9kdWN0LlByb3Zpc2lvbmluZ0FydGlmYWN0cyA9PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIHByb3Zpc2lvbmluZyBhcnRpZmFjdHMgZm9yIHByb2R1Y3Q6ICR7cHJvZHVjdElkfWApO1xuICB9IGVsc2UgaWYgKHByb2R1Y3QuTGF1bmNoUGF0aHMgPT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBsYXVuY2ggcGF0aHMgZm9yIHByb2R1Y3Q6ICR7cHJvZHVjdElkfWApO1xuICB9XG59Il19
|