@nikovirtala/projen-constructs 0.1.7 → 0.1.8
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/.jsii +52 -2
- package/API.md +54 -0
- package/lib/components/vitest.js +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/project-generator.d.ts +8 -10
- package/lib/project-generator.js +20 -19
- package/lib/project-type.d.ts +32 -0
- package/lib/project-type.js +37 -0
- package/lib/projects/awscdk-construct-library.generated.js +1 -1
- package/lib/projects/awscdk-typescript-app.generated.js +1 -1
- package/lib/projects/jsii.generated.js +1 -1
- package/lib/projects/typescript.generated.js +1 -1
- package/package.json +1 -1
package/.jsii
CHANGED
|
@@ -13444,6 +13444,56 @@
|
|
|
13444
13444
|
"name": "Pool",
|
|
13445
13445
|
"symbolId": "src/components/vitest:Pool"
|
|
13446
13446
|
},
|
|
13447
|
+
"@nikovirtala/projen-constructs.ProjectType": {
|
|
13448
|
+
"assembly": "@nikovirtala/projen-constructs",
|
|
13449
|
+
"docs": {
|
|
13450
|
+
"remarks": "Each project type corresponds to a generated project class and its configuration\nin the defaultOptions structure.",
|
|
13451
|
+
"stability": "stable",
|
|
13452
|
+
"summary": "Enum defining all supported project types."
|
|
13453
|
+
},
|
|
13454
|
+
"fqn": "@nikovirtala/projen-constructs.ProjectType",
|
|
13455
|
+
"kind": "enum",
|
|
13456
|
+
"locationInModule": {
|
|
13457
|
+
"filename": "src/project-type.ts",
|
|
13458
|
+
"line": 7
|
|
13459
|
+
},
|
|
13460
|
+
"members": [
|
|
13461
|
+
{
|
|
13462
|
+
"docs": {
|
|
13463
|
+
"see": "https://projen.io/docs/api/typescript#typescriptproject-",
|
|
13464
|
+
"stability": "stable",
|
|
13465
|
+
"summary": "TypeScript project with ES modules support."
|
|
13466
|
+
},
|
|
13467
|
+
"name": "TYPESCRIPT"
|
|
13468
|
+
},
|
|
13469
|
+
{
|
|
13470
|
+
"docs": {
|
|
13471
|
+
"see": "https://projen.io/docs/api/cdk#jsiiproject-",
|
|
13472
|
+
"stability": "stable",
|
|
13473
|
+
"summary": "JSII project for publishing multi-language libraries."
|
|
13474
|
+
},
|
|
13475
|
+
"name": "JSII"
|
|
13476
|
+
},
|
|
13477
|
+
{
|
|
13478
|
+
"docs": {
|
|
13479
|
+
"see": "https://projen.io/docs/api/awscdk#awscdktypescriptapp-",
|
|
13480
|
+
"stability": "stable",
|
|
13481
|
+
"summary": "AWS CDK TypeScript application project with ES modules support."
|
|
13482
|
+
},
|
|
13483
|
+
"name": "AWS_CDK_TYPESCRIPT_APP"
|
|
13484
|
+
},
|
|
13485
|
+
{
|
|
13486
|
+
"docs": {
|
|
13487
|
+
"see": "https://projen.io/docs/api/awscdk/#awscdkconstructlibrary-",
|
|
13488
|
+
"stability": "stable",
|
|
13489
|
+
"summary": "AWS CDK construct library project for publishing reusable constructs."
|
|
13490
|
+
},
|
|
13491
|
+
"name": "AWS_CDK_CONSTRUCT_LIBRARY"
|
|
13492
|
+
}
|
|
13493
|
+
],
|
|
13494
|
+
"name": "ProjectType",
|
|
13495
|
+
"symbolId": "src/project-type:ProjectType"
|
|
13496
|
+
},
|
|
13447
13497
|
"@nikovirtala/projen-constructs.TypeScriptProject": {
|
|
13448
13498
|
"assembly": "@nikovirtala/projen-constructs",
|
|
13449
13499
|
"base": "projen.typescript.TypeScriptProject",
|
|
@@ -16672,6 +16722,6 @@
|
|
|
16672
16722
|
"symbolId": "src/components/vitest:VitestOptions"
|
|
16673
16723
|
}
|
|
16674
16724
|
},
|
|
16675
|
-
"version": "0.1.
|
|
16676
|
-
"fingerprint": "
|
|
16725
|
+
"version": "0.1.8",
|
|
16726
|
+
"fingerprint": "AuVCeOtv0O0ZLGVa6UBbewG7QH3rHriJ2CXjqE/uIpk="
|
|
16677
16727
|
}
|
package/API.md
CHANGED
|
@@ -16235,3 +16235,57 @@ public readonly vitestVersion: string;
|
|
|
16235
16235
|
|
|
16236
16236
|
---
|
|
16237
16237
|
|
|
16238
|
+
|
|
16239
|
+
### ProjectType <a name="ProjectType" id="@nikovirtala/projen-constructs.ProjectType"></a>
|
|
16240
|
+
|
|
16241
|
+
Enum defining all supported project types.
|
|
16242
|
+
|
|
16243
|
+
Each project type corresponds to a generated project class and its configuration
|
|
16244
|
+
in the defaultOptions structure.
|
|
16245
|
+
|
|
16246
|
+
#### Members <a name="Members" id="Members"></a>
|
|
16247
|
+
|
|
16248
|
+
| **Name** | **Description** |
|
|
16249
|
+
| --- | --- |
|
|
16250
|
+
| <code><a href="#@nikovirtala/projen-constructs.ProjectType.TYPESCRIPT">TYPESCRIPT</a></code> | TypeScript project with ES modules support. |
|
|
16251
|
+
| <code><a href="#@nikovirtala/projen-constructs.ProjectType.JSII">JSII</a></code> | JSII project for publishing multi-language libraries. |
|
|
16252
|
+
| <code><a href="#@nikovirtala/projen-constructs.ProjectType.AWS_CDK_TYPESCRIPT_APP">AWS_CDK_TYPESCRIPT_APP</a></code> | AWS CDK TypeScript application project with ES modules support. |
|
|
16253
|
+
| <code><a href="#@nikovirtala/projen-constructs.ProjectType.AWS_CDK_CONSTRUCT_LIBRARY">AWS_CDK_CONSTRUCT_LIBRARY</a></code> | AWS CDK construct library project for publishing reusable constructs. |
|
|
16254
|
+
|
|
16255
|
+
---
|
|
16256
|
+
|
|
16257
|
+
##### `TYPESCRIPT` <a name="TYPESCRIPT" id="@nikovirtala/projen-constructs.ProjectType.TYPESCRIPT"></a>
|
|
16258
|
+
|
|
16259
|
+
TypeScript project with ES modules support.
|
|
16260
|
+
|
|
16261
|
+
> [https://projen.io/docs/api/typescript#typescriptproject-](https://projen.io/docs/api/typescript#typescriptproject-)
|
|
16262
|
+
|
|
16263
|
+
---
|
|
16264
|
+
|
|
16265
|
+
|
|
16266
|
+
##### `JSII` <a name="JSII" id="@nikovirtala/projen-constructs.ProjectType.JSII"></a>
|
|
16267
|
+
|
|
16268
|
+
JSII project for publishing multi-language libraries.
|
|
16269
|
+
|
|
16270
|
+
> [https://projen.io/docs/api/cdk#jsiiproject-](https://projen.io/docs/api/cdk#jsiiproject-)
|
|
16271
|
+
|
|
16272
|
+
---
|
|
16273
|
+
|
|
16274
|
+
|
|
16275
|
+
##### `AWS_CDK_TYPESCRIPT_APP` <a name="AWS_CDK_TYPESCRIPT_APP" id="@nikovirtala/projen-constructs.ProjectType.AWS_CDK_TYPESCRIPT_APP"></a>
|
|
16276
|
+
|
|
16277
|
+
AWS CDK TypeScript application project with ES modules support.
|
|
16278
|
+
|
|
16279
|
+
> [https://projen.io/docs/api/awscdk#awscdktypescriptapp-](https://projen.io/docs/api/awscdk#awscdktypescriptapp-)
|
|
16280
|
+
|
|
16281
|
+
---
|
|
16282
|
+
|
|
16283
|
+
|
|
16284
|
+
##### `AWS_CDK_CONSTRUCT_LIBRARY` <a name="AWS_CDK_CONSTRUCT_LIBRARY" id="@nikovirtala/projen-constructs.ProjectType.AWS_CDK_CONSTRUCT_LIBRARY"></a>
|
|
16285
|
+
|
|
16286
|
+
AWS CDK construct library project for publishing reusable constructs.
|
|
16287
|
+
|
|
16288
|
+
> [https://projen.io/docs/api/awscdk/#awscdkconstructlibrary-](https://projen.io/docs/api/awscdk/#awscdkconstructlibrary-)
|
|
16289
|
+
|
|
16290
|
+
---
|
|
16291
|
+
|
package/lib/components/vitest.js
CHANGED
|
@@ -204,5 +204,5 @@ class Vitest extends component_1.Component {
|
|
|
204
204
|
}
|
|
205
205
|
exports.Vitest = Vitest;
|
|
206
206
|
_a = JSII_RTTI_SYMBOL_1;
|
|
207
|
-
Vitest[_a] = { fqn: "@nikovirtala/projen-constructs.Vitest", version: "0.1.
|
|
207
|
+
Vitest[_a] = { fqn: "@nikovirtala/projen-constructs.Vitest", version: "0.1.8" };
|
|
208
208
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvdml0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0NBQWtDO0FBQ2xDLG9EQUFpRDtBQUNqRCwwREFBeUQ7QUFDekQsc0RBQStEO0FBQy9ELGtEQUErQztBQUUvQyxJQUFZLFdBS1g7QUFMRCxXQUFZLFdBQVc7SUFDbkIsNENBQTZCLENBQUE7SUFDN0Isc0NBQXVCLENBQUE7SUFDdkIsOEJBQWUsQ0FBQTtJQUNmLDRCQUFhLENBQUE7QUFDakIsQ0FBQyxFQUxXLFdBQVcsMkJBQVgsV0FBVyxRQUt0QjtBQUVELElBQVksSUFLWDtBQUxELFdBQVksSUFBSTtJQUNaLHVCQUFlLENBQUE7SUFDZiwyQkFBbUIsQ0FBQTtJQUNuQiwyQkFBbUIsQ0FBQTtJQUNuQiwrQkFBdUIsQ0FBQTtBQUMzQixDQUFDLEVBTFcsSUFBSSxvQkFBSixJQUFJLFFBS2Y7QUFFRCxJQUFZLGdCQUdYO0FBSEQsV0FBWSxnQkFBZ0I7SUFDeEIseUNBQXFCLENBQUE7SUFDckIsNkJBQVMsQ0FBQTtBQUNiLENBQUMsRUFIVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQUczQjtBQUVELElBQVksZ0JBTVg7QUFORCxXQUFZLGdCQUFnQjtJQUN4QixxQ0FBaUIsQ0FBQTtJQUNqQixpQ0FBYSxDQUFBO0lBQ2IsaUNBQWEsQ0FBQTtJQUNiLGlDQUFhLENBQUE7SUFDYixpQ0FBYSxDQUFBO0FBQ2pCLENBQUMsRUFOVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQU0zQjtBQTZCRCxNQUFhLE1BQU8sU0FBUSxxQkFBUztJQUMxQixNQUFNLENBQUMsRUFBRSxDQUFDLE9BQW9CO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBWSxFQUFlLEVBQUUsQ0FBQyxDQUFDLFlBQVksTUFBTSxDQUFDO1FBQ3BFLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxD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QUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQixLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFFbkQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzs7QUExTkwsd0JBMk5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwicHJvamVuL2xpYi9jb21wb25lbnRcIjtcbmltcG9ydCB7IERlcGVuZGVuY3lUeXBlIH0gZnJvbSBcInByb2plbi9saWIvZGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQgeyBKZXN0LCB0eXBlIE5vZGVQcm9qZWN0IH0gZnJvbSBcInByb2plbi9saWIvamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgVGV4dEZpbGUgfSBmcm9tIFwicHJvamVuL2xpYi90ZXh0ZmlsZVwiO1xuXG5leHBvcnQgZW51bSBFbnZpcm9ubWVudCB7XG4gICAgRURHRV9SVU5USU1FID0gXCJlZGdlLXJ1bnRpbWVcIixcbiAgICBIQVBQWV9ET00gPSBcImhhcHB5LWRvbVwiLFxuICAgIEpTRE9NID0gXCJqc2RvbVwiLFxuICAgIE5PREUgPSBcIm5vZGVcIixcbn1cblxuZXhwb3J0IGVudW0gUG9vbCB7XG4gICAgRk9SS1MgPSBcImZvcmtzXCIsXG4gICAgVEhSRUFEUyA9IFwidGhyZWFkc1wiLFxuICAgIFZNRk9SS1MgPSBcInZtZm9ya3NcIixcbiAgICBWTVRIUkVBRFMgPSBcInZtdGhyZWFkc1wiLFxufVxuXG5leHBvcnQgZW51bSBDb3ZlcmFnZVByb3ZpZGVyIHtcbiAgICBJU1RBTkJVTCA9IFwiaXN0YW5idWxcIixcbiAgICBWOCA9IFwidjhcIixcbn1cblxuZXhwb3J0IGVudW0gQ292ZXJhZ2VSZXBvcnRlciB7XG4gICAgQ0xPVkVSID0gXCJjbG92ZXJcIixcbiAgICBIVE1MID0gXCJodG1sXCIsXG4gICAgSlNPTiA9IFwianNvblwiLFxuICAgIExDT1YgPSBcImxjb3ZcIixcbiAgICBURVhUID0gXCJ0ZXh0XCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVml0ZXN0Q29uZmlnT3B0aW9ucyB7XG4gICAgcmVhZG9ubHkgaW5jbHVkZT86IEFycmF5PHN0cmluZz47XG4gICAgcmVhZG9ubHkgZXhjbHVkZT86IEFycmF5PHN0cmluZz47XG4gICAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiBFbnZpcm9ubWVudDtcbiAgICByZWFkb25seSBpc29sYXRlPzogYm9vbGVhbjtcbiAgICByZWFkb25seSBwb29sPzogUG9vbDtcbiAgICByZWFkb25seSBnbG9iYWxzPzogYm9vbGVhbjtcbiAgICByZWFkb25seSBjb3ZlcmFnZUVuYWJsZWQ/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5IGNvdmVyYWdlUHJvdmlkZXI/OiBDb3ZlcmFnZVByb3ZpZGVyO1xuICAgIHJlYWRvbmx5IGNvdmVyYWdlUmVwb3J0ZXJzPzogQXJyYXk8Q292ZXJhZ2VSZXBvcnRlcj47XG4gICAgcmVhZG9ubHkgY292ZXJhZ2VEaXJlY3Rvcnk/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgdHlwZWNoZWNrRW5hYmxlZD86IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgdHlwZWNoZWNrQ2hlY2tlcj86IHN0cmluZztcbiAgICByZWFkb25seSB0eXBlY2hlY2tUc2NvbmZpZz86IHN0cmluZztcbiAgICByZWFkb25seSBwYXNzV2l0aE5vVGVzdHM/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5IGJhaWw/OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgdXBkYXRlU25hcHNob3RzPzogYm9vbGVhbjtcbiAgICByZWFkb25seSBwcmludENvbnNvbGVUcmFjZT86IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgc2xvd1Rlc3RUaHJlc2hvbGQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVml0ZXN0T3B0aW9ucyB7XG4gICAgcmVhZG9ubHkgY29uZmlnRmlsZVBhdGg/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgY29uZmlnPzogVml0ZXN0Q29uZmlnT3B0aW9ucztcbiAgICByZWFkb25seSB2aXRlc3RWZXJzaW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgVml0ZXN0IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBwdWJsaWMgc3RhdGljIG9mKHByb2plY3Q6IE5vZGVQcm9qZWN0KTogVml0ZXN0IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgaXNWaXRlc3QgPSAoYzogQ29tcG9uZW50KTogYyBpcyBWaXRlc3QgPT4gYyBpbnN0YW5jZW9mIFZpdGVzdDtcbiAgICAgICAgcmV0dXJuIHByb2plY3QuY29tcG9uZW50cy5maW5kKGlzVml0ZXN0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ0ZpbGVQYXRoOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmNsdWRlOiBTZXQ8c3RyaW5nPjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV4Y2x1ZGU6IFNldDxzdHJpbmc+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNvbGF0ZTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvb2w6IFBvb2w7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3ZlcmFnZUVuYWJsZWQ6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSB0eXBlY2hlY2tFbmFibGVkOiBib29sZWFuO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdHlwZWNoZWNrQ2hlY2tlcjogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdHlwZWNoZWNrVHNjb25maWc6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhc3NXaXRoTm9UZXN0czogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJhaWw6IG51bWJlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVwZGF0ZVNuYXBzaG90czogYm9vbGVhbjtcbiAgICBwcml2YXRlIGVudmlyb25tZW50OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBnbG9iYWxzOiBib29sZWFuO1xuICAgIHByaXZhdGUgY292ZXJhZ2VQcm92aWRlcjogQ292ZXJhZ2VQcm92aWRlcjtcbiAgICBwcml2YXRlIGNvdmVyYWdlUmVwb3J0ZXJzOiBBcnJheTxDb3ZlcmFnZVJlcG9ydGVyPjtcbiAgICBwcml2YXRlIGNvdmVyYWdlRGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSB2ZXJzaW9uOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwcmludENvbnNvbGVUcmFjZTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNsb3dUZXN0VGhyZXNob2xkOiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBOb2RlUHJvamVjdCwgb3B0aW9uczogVml0ZXN0T3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgICAgIHRoaXMuY29uZmlnRmlsZVBhdGggPSBvcHRpb25zLmNvbmZpZ0ZpbGVQYXRoID8/IFwidml0ZXN0LmNvbmZpZy50c1wiO1xuICAgICAgICB0aGlzLmluY2x1ZGUgPSBuZXcgU2V0KG9wdGlvbnMuY29uZmlnPy5pbmNsdWRlID8/IFtcIioqLyoue3Rlc3Qsc3BlY30uPyhjfG0pW2p0XXM/KHgpXCJdKTtcbiAgICAgICAgdGhpcy5leGNsdWRlID0gbmV3IFNldChcbiAgICAgICAgICAgIG9wdGlvbnMuY29uZmlnPy5leGNsdWRlID8/IFtcbiAgICAgICAgICAgICAgICBcIioqL25vZGVfbW9kdWxlcy8qKlwiLFxuICAgICAgICAgICAgICAgIFwiKiovZGlzdC8qKlwiLFxuICAgICAgICAgICAgICAgIFwiKiovY3lwcmVzcy8qKlwiLFxuICAgICAgICAgICAgICAgIFwiKiovLntpZGVhLGdpdCxjYWNoZSxvdXRwdXQsdGVtcH0vKipcIixcbiAgICAgICAgICAgICAgICBcIioqL3trYXJtYSxyb2xsdXAsd2VicGFjayx2aXRlLHZpdGVzdCxqZXN0LGF2YSxiYWJlbCxueWMsY3lwcmVzcyx0c3VwLGJ1aWxkLGVzbGludCxwcmV0dGllcn0uY29uZmlnLipcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuaXNvbGF0ZSA9IG9wdGlvbnMuY29uZmlnPy5pc29sYXRlID8/IHRydWU7XG4gICAgICAgIHRoaXMucG9vbCA9IG9wdGlvbnMuY29uZmlnPy5wb29sID8/IFBvb2wuRk9SS1M7XG4gICAgICAgIHRoaXMuY292ZXJhZ2VFbmFibGVkID0gb3B0aW9ucy5jb25maWc/LmNvdmVyYWdlRW5hYmxlZCA/PyB0cnVlO1xuICAgICAgICB0aGlzLnR5cGVjaGVja0VuYWJsZWQgPSBvcHRpb25zLmNvbmZpZz8udHlwZWNoZWNrRW5hYmxlZCA/PyB0aGlzLmlzVHlwZXNjcmlwdFByb2plY3QoKTtcbiAgICAgICAgdGhpcy50eXBlY2hlY2tDaGVja2VyID0gb3B0aW9ucy5jb25maWc/LnR5cGVjaGVja0NoZWNrZXIgPz8gXCJ0c2MgLS1ub0VtaXRcIjtcbiAgICAgICAgdGhpcy50eXBlY2hlY2tUc2NvbmZpZyA9IG9wdGlvbnMuY29uZmlnPy50eXBlY2hlY2tUc2NvbmZpZyA/PyBcInRzY29uZmlnLmRldi5qc29uXCI7XG4gICAgICAgIHRoaXMucGFzc1dpdGhOb1Rlc3RzID0gb3B0aW9ucy5jb25maWc/LnBhc3NXaXRoTm9UZXN0cyA/PyB0cnVlO1xuICAgICAgICB0aGlzLmJhaWwgPSBvcHRpb25zLmNvbmZpZz8uYmFpbCA/PyAwO1xuICAgICAgICB0aGlzLmVudmlyb25tZW50ID0gb3B0aW9ucy5jb25maWc/LmVudmlyb25tZW50ID8/IEVudmlyb25tZW50Lk5PREU7XG4gICAgICAgIHRoaXMuZ2xvYmFscyA9IG9wdGlvbnMuY29uZmlnPy5nbG9iYWxzID8/IGZhbHNlO1xuICAgICAgICB0aGlzLmNvdmVyYWdlUHJvdmlkZXIgPSBvcHRpb25zLmNvbmZpZz8uY292ZXJhZ2VQcm92aWRlciA/PyBDb3ZlcmFnZVByb3ZpZGVyLlY4O1xuICAgICAgICB0aGlzLmNvdmVyYWdlUmVwb3J0ZXJzID0gb3B0aW9ucy5jb25maWc/LmNvdmVyYWdlUmVwb3J0ZXJzID8/IFtDb3ZlcmFnZVJlcG9ydGVyLlRFWFQsIENvdmVyYWdlUmVwb3J0ZXIuTENPVl07XG4gICAgICAgIHRoaXMuY292ZXJhZ2VEaXJlY3RvcnkgPSBvcHRpb25zLmNvbmZpZz8uY292ZXJhZ2VEaXJlY3RvcnkgPz8gXCJjb3ZlcmFnZVwiO1xuICAgICAgICB0aGlzLnZlcnNpb24gPSBvcHRpb25zLnZpdGVzdFZlcnNpb24gPz8gXCJeNFwiO1xuICAgICAgICB0aGlzLnVwZGF0ZVNuYXBzaG90cyA9IG9wdGlvbnMuY29uZmlnPy51cGRhdGVTbmFwc2hvdHMgPz8gdHJ1ZTtcbiAgICAgICAgdGhpcy5wcmludENvbnNvbGVUcmFjZSA9IG9wdGlvbnMuY29uZmlnPy5wcmludENvbnNvbGVUcmFjZSA/PyB0cnVlO1xuICAgICAgICB0aGlzLnNsb3dUZXN0VGhyZXNob2xkID0gb3B0aW9ucy5jb25maWc/LnNsb3dUZXN0VGhyZXNob2xkID8/IDMwMDtcblxuICAgICAgICBwcm9qZWN0LmFkZERldkRlcHMoYHZpdGVzdEAke3RoaXMudmVyc2lvbn1gKTtcbiAgICAgICAgdGhpcy5jb25maWd1cmVDb3ZlcmFnZVByb3ZpZGVyKHRoaXMuY292ZXJhZ2VQcm92aWRlcik7XG5cbiAgICAgICAgaWYgKHRoaXMuZ2xvYmFscyAmJiB0aGlzLmlzVHlwZXNjcmlwdFByb2plY3QoKSAmJiB0aGlzLnByb2plY3QudHJ5RmluZE9iamVjdEZpbGUodGhpcy50eXBlY2hlY2tUc2NvbmZpZykpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJlR2xvYmFscygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY292ZXJhZ2VEaXJlY3RvcnlQYXRoID0gcGF0aC5wb3NpeC5qb2luKFwiL1wiLCB0aGlzLmNvdmVyYWdlRGlyZWN0b3J5LCBcIi9cIik7XG4gICAgICAgIHByb2plY3QubnBtaWdub3JlPy5leGNsdWRlKGNvdmVyYWdlRGlyZWN0b3J5UGF0aCk7XG4gICAgICAgIHByb2plY3QuZ2l0aWdub3JlLmV4Y2x1ZGUoY292ZXJhZ2VEaXJlY3RvcnlQYXRoKTtcblxuICAgICAgICB0aGlzLmFkZFRlc3RDb21tYW5kKCk7XG4gICAgICAgIHRoaXMuc3ludGhlc2l6ZUNvbmZpZygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBwcmVTeW50aGVzaXplKCkge1xuICAgICAgICBzdXBlci5wcmVTeW50aGVzaXplKCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgdGhpcy5wcm9qZWN0LmNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgIGlmIChjb21wb25lbnQgaW5zdGFuY2VvZiBKZXN0KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidml0ZXN0IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggamVzdFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhZGRJbmNsdWRlKHBhdHRlcm46IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmluY2x1ZGUuYWRkKHBhdHRlcm4pO1xuICAgICAgICB0aGlzLnN5bnRoZXNpemVDb25maWcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRXhjbHVkZShwYXR0ZXJuOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5leGNsdWRlLmFkZChwYXR0ZXJuKTtcbiAgICAgICAgdGhpcy5zeW50aGVzaXplQ29uZmlnKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbmZpZ3VyZUVudmlyb25tZW50KGVudmlyb25tZW50OiBFbnZpcm9ubWVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgICAgIHRoaXMuc3ludGhlc2l6ZUNvbmZpZygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb25maWd1cmVDb3ZlcmFnZVByb3ZpZGVyKHByb3ZpZGVyOiBDb3ZlcmFnZVByb3ZpZGVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHByb3ZpZGVyUGFja2FnZXMgPSB7XG4gICAgICAgICAgICBbQ292ZXJhZ2VQcm92aWRlci5WOF06IGBAdml0ZXN0L2NvdmVyYWdlLXY4QCR7dGhpcy52ZXJzaW9ufWAsXG4gICAgICAgICAgICBbQ292ZXJhZ2VQcm92aWRlci5JU1RBTkJVTF06IGBAdml0ZXN0L2NvdmVyYWdlLWlzdGFuYnVsQCR7dGhpcy52ZXJzaW9ufWAsXG4gICAgICAgIH07XG5cbiAgICAgICAgZm9yIChjb25zdCBwcm92aWRlclBhY2thZ2Ugb2YgT2JqZWN0LnZhbHVlcyhwcm92aWRlclBhY2thZ2VzKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2plY3QuZGVwcy5yZW1vdmVEZXBlbmRlbmN5KHByb3ZpZGVyUGFja2FnZSk7XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJvamVjdC5kZXBzLmFkZERlcGVuZGVuY3kocHJvdmlkZXJQYWNrYWdlc1twcm92aWRlcl0sIERlcGVuZGVuY3lUeXBlLkRFVkVOVik7XG4gICAgICAgIHRoaXMuY292ZXJhZ2VQcm92aWRlciA9IHByb3ZpZGVyO1xuICAgICAgICB0aGlzLnN5bnRoZXNpemVDb25maWcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29uZmlndXJlQ292ZXJhZ2VSZXBvcnRlcnMocmVwb3J0ZXJzOiBBcnJheTxDb3ZlcmFnZVJlcG9ydGVyPik6IHZvaWQge1xuICAgICAgICB0aGlzLmNvdmVyYWdlUmVwb3J0ZXJzID0gcmVwb3J0ZXJzO1xuICAgICAgICB0aGlzLnN5bnRoZXNpemVDb25maWcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29uZmlndXJlR2xvYmFscygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVUc0NvbmZpZygpO1xuICAgICAgICB0aGlzLnN5bnRoZXNpemVDb25maWcoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVRzQ29uZmlnKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0c2NvbmZpZyA9IHRoaXMucHJvamVjdC50cnlGaW5kT2JqZWN0RmlsZSh0aGlzLnR5cGVjaGVja1RzY29uZmlnKTtcblxuICAgICAgICBpZiAoIXRzY29uZmlnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1bmFibGUgdG8gZmluZCB0c2NvbmZpZ1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRzY29uZmlnLmFkZFRvQXJyYXkoXCJjb21waWxlck9wdGlvbnMudHlwZXNcIiwgXCJ2aXRlc3QvZ2xvYmFsc1wiKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVHlwZXNjcmlwdFByb2plY3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2plY3QuZGVwcy50cnlHZXREZXBlbmRlbmN5KFwidHlwZXNjcmlwdFwiKSAhPT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkVGVzdENvbW1hbmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvamVjdC50ZXN0VGFzay5leGVjKFwidml0ZXN0IHJ1blwiLCB7XG4gICAgICAgICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdGVzdFdhdGNoID0gdGhpcy5wcm9qZWN0LnRhc2tzLnRyeUZpbmQoXCJ0ZXN0OndhdGNoXCIpO1xuICAgICAgICBpZiAoIXRlc3RXYXRjaCkge1xuICAgICAgICAgICAgdGhpcy5wcm9qZWN0LmFkZFRhc2soXCJ0ZXN0OndhdGNoXCIsIHtcbiAgICAgICAgICAgICAgICBleGVjOiBcInZpdGVzdCB3YXRjaFwiLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0ZXN0VXBkYXRlU25hcHNob3RzID0gdGhpcy5wcm9qZWN0LnRhc2tzLnRyeUZpbmQoXCJ0ZXN0OnVwZGF0ZVwiKTtcbiAgICAgICAgaWYgKCF0ZXN0VXBkYXRlU25hcHNob3RzKSB7XG4gICAgICAgICAgICB0aGlzLnByb2plY3QuYWRkVGFzayhcInRlc3Q6dXBkYXRlXCIsIHtcbiAgICAgICAgICAgICAgICBleGVjOiBcInZpdGVzdCAtLXVwZGF0ZVwiLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN5bnRoZXNpemVDb25maWcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvamVjdC50cnlSZW1vdmVGaWxlKHRoaXMuY29uZmlnRmlsZVBhdGgpO1xuXG4gICAgICAgIG5ldyBUZXh0RmlsZSh0aGlzLCB0aGlzLmNvbmZpZ0ZpbGVQYXRoLCB7XG4gICAgICAgICAgICBsaW5lczogdGhpcy5yZW5kZXJDb25maWcoKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW5kZXJDb25maWcoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb2plY3QgPSB0aGlzLnByb2plY3QgYXMgTm9kZVByb2plY3Q7XG4gICAgICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcHJvamVjdC5wYWNrYWdlLnBhY2thZ2VOYW1lO1xuICAgICAgICBjb25zdCBkZWZpbmVDb25maWdJbXBvcnQgPVxuICAgICAgICAgICAgcGFja2FnZU5hbWUgPT09IFwiQG5pa292aXJ0YWxhL3Byb2plbi1jb25zdHJ1Y3RzXCJcbiAgICAgICAgICAgICAgICA/ICdpbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwiLi9saWIvdml0ZXN0LWRlZmluZS1jb25maWdcIjsnXG4gICAgICAgICAgICAgICAgOiAnaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcIkBuaWtvdmlydGFsYS9wcm9qZW4tY29uc3RydWN0cy9saWIvdml0ZXN0LWRlZmluZS1jb25maWdcIjsnO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBkZWZpbmVDb25maWdJbXBvcnQsXG4gICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgXCJleHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoe1wiLFxuICAgICAgICAgICAgXCIgIHRlc3Q6IHtcIixcbiAgICAgICAgICAgIC4uLnRoaXMucmVuZGVyVGVzdE9wdGlvbnMoKSxcbiAgICAgICAgICAgIFwiICB9LFwiLFxuICAgICAgICAgICAgXCJ9KTtcIixcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbmRlclRlc3RPcHRpb25zKCk6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICBjb25zdCBsaW5lczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXG4gICAgICAgIGxpbmVzLnB1c2goYCAgICBiYWlsOiAke3RoaXMuYmFpbH0sYCk7XG4gICAgICAgIGxpbmVzLnB1c2goXCIgICAgY292ZXJhZ2U6IHtcIik7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICAgIGVuYWJsZWQ6ICR7dGhpcy5jb3ZlcmFnZUVuYWJsZWR9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgICBwcm92aWRlcjogXCIke3RoaXMuY292ZXJhZ2VQcm92aWRlcn1cIixgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgICAgcmVwb3J0ZXI6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5jb3ZlcmFnZVJlcG9ydGVycyl9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgICByZXBvcnRzRGlyZWN0b3J5OiBcIiR7dGhpcy5jb3ZlcmFnZURpcmVjdG9yeX1cIixgKTtcbiAgICAgICAgbGluZXMucHVzaChcIiAgICB9LFwiKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgIGVudmlyb25tZW50OiBcIiR7dGhpcy5lbnZpcm9ubWVudH1cIixgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgIGV4Y2x1ZGU6ICR7SlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbSh0aGlzLmV4Y2x1ZGUpKX0sYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICBnbG9iYWxzOiAke3RoaXMuZ2xvYmFsc30sYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICBpbmNsdWRlOiAke0pTT04uc3RyaW5naWZ5KEFycmF5LmZyb20odGhpcy5pbmNsdWRlKSl9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgaXNvbGF0ZTogJHt0aGlzLmlzb2xhdGV9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgcGFzc1dpdGhOb1Rlc3RzOiAke3RoaXMucGFzc1dpdGhOb1Rlc3RzfSxgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgIHByaW50Q29uc29sZVRyYWNlOiAke3RoaXMucHJpbnRDb25zb2xlVHJhY2V9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgcG9vbDogXCIke3RoaXMucG9vbH1cIixgKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgIHNsb3dUZXN0VGhyZXNob2xkOiAke3RoaXMuc2xvd1Rlc3RUaHJlc2hvbGR9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKFwiICAgIHR5cGVjaGVjazoge1wiKTtcbiAgICAgICAgbGluZXMucHVzaChgICAgICAgZW5hYmxlZDogJHt0aGlzLnR5cGVjaGVja0VuYWJsZWR9LGApO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgICBjaGVja2VyOiBcIiR7dGhpcy50eXBlY2hlY2tDaGVja2VyfVwiLGApO1xuICAgICAgICBsaW5lcy5wdXNoKGAgICAgICB0c2NvbmZpZzogXCIke3RoaXMudHlwZWNoZWNrVHNjb25maWd9XCIsYCk7XG4gICAgICAgIGxpbmVzLnB1c2goXCIgICAgfSxcIik7XG4gICAgICAgIGxpbmVzLnB1c2goYCAgICB1cGRhdGU6ICR7dGhpcy51cGRhdGVTbmFwc2hvdHN9LGApO1xuXG4gICAgICAgIHJldHVybiBsaW5lcztcbiAgICB9XG59XG4iXX0=
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -16,5 +16,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./components/vitest"), exports);
|
|
18
18
|
__exportStar(require("./config"), exports);
|
|
19
|
+
__exportStar(require("./project-type"), exports);
|
|
19
20
|
__exportStar(require("./projects"), exports);
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFvQztBQUNwQywyQ0FBeUI7QUFDekIsaURBQStCO0FBQy9CLDZDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NvbXBvbmVudHMvdml0ZXN0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb25maWdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Byb2plY3QtdHlwZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHJvamVjdHNcIjtcbiJdfQ==
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { Property } from "@jsii/spec";
|
|
2
2
|
import type { Project, SourceCodeOptions } from "projen";
|
|
3
3
|
import { Component } from "projen";
|
|
4
|
-
type
|
|
5
|
-
type ProjenBaseClass<M extends ProjenModule> = `${M}.${string}`;
|
|
4
|
+
import type { ProjectType } from "./project-type";
|
|
6
5
|
/**
|
|
7
6
|
* Configuration for a component to be integrated into a generated project
|
|
8
7
|
*
|
|
@@ -56,7 +55,7 @@ interface ComponentConfig<T extends Component = Component> {
|
|
|
56
55
|
* });
|
|
57
56
|
* ```
|
|
58
57
|
*/
|
|
59
|
-
export interface ProjectGeneratorOptions
|
|
58
|
+
export interface ProjectGeneratorOptions extends SourceCodeOptions {
|
|
60
59
|
/**
|
|
61
60
|
* Name of the generated class (e.g., "TypeScriptProject")
|
|
62
61
|
*
|
|
@@ -64,15 +63,14 @@ export interface ProjectGeneratorOptions<M extends ProjenModule = ProjenModule>
|
|
|
64
63
|
*/
|
|
65
64
|
readonly name: string;
|
|
66
65
|
/**
|
|
67
|
-
*
|
|
66
|
+
* Project type identifier
|
|
68
67
|
*
|
|
69
|
-
*
|
|
70
|
-
* "cdk.JsiiProject", or "awscdk.AwsCdkTypeScriptApp".
|
|
68
|
+
* Specifies which Projen base class to extend and which default configuration to apply.
|
|
71
69
|
*
|
|
72
|
-
* @example
|
|
73
|
-
* @example
|
|
70
|
+
* @example ProjectType.TYPESCRIPT
|
|
71
|
+
* @example ProjectType.JSII
|
|
74
72
|
*/
|
|
75
|
-
readonly
|
|
73
|
+
readonly projectType: ProjectType;
|
|
76
74
|
/**
|
|
77
75
|
* Output file path for the generated class
|
|
78
76
|
*
|
|
@@ -137,7 +135,7 @@ export declare class ProjectGenerator extends Component {
|
|
|
137
135
|
* @param project - Projen project instance
|
|
138
136
|
* @param options - Generator configuration
|
|
139
137
|
*/
|
|
140
|
-
constructor(project: Project, options: ProjectGeneratorOptions
|
|
138
|
+
constructor(project: Project, options: ProjectGeneratorOptions);
|
|
141
139
|
/**
|
|
142
140
|
* Casts project to TypeScript project type
|
|
143
141
|
*
|
package/lib/project-generator.js
CHANGED
|
@@ -112,7 +112,7 @@ class TypeScriptClassRenderer {
|
|
|
112
112
|
this.buffer.flush();
|
|
113
113
|
/* Derive interface and type names from the class name */
|
|
114
114
|
const optionsInterface = `${options.name}Options`;
|
|
115
|
-
const baseOptionsFqn = this.getBaseOptionsFqn(options.
|
|
115
|
+
const baseOptionsFqn = this.getBaseOptionsFqn(options.projectType);
|
|
116
116
|
const baseOptionsType = baseOptionsFqn.replace(/^projen\./, "");
|
|
117
117
|
/* Use provided components or fall back to defaults (Mise + Vitest) */
|
|
118
118
|
const components = options.components ?? DEFAULT_COMPONENTS;
|
|
@@ -129,20 +129,21 @@ class TypeScriptClassRenderer {
|
|
|
129
129
|
return this.buffer.flush().join("\n");
|
|
130
130
|
}
|
|
131
131
|
/**
|
|
132
|
-
* Derives the fully qualified options interface name from
|
|
132
|
+
* Derives the fully qualified options interface name from project type
|
|
133
133
|
*
|
|
134
|
-
* Transforms
|
|
134
|
+
* Transforms project type into the corresponding Projen options interface name
|
|
135
135
|
* by appending "Options" suffix and prefixing with "projen." namespace.
|
|
136
136
|
*
|
|
137
|
-
* @param
|
|
137
|
+
* @param projectType - Project type identifier
|
|
138
138
|
* @returns Fully qualified options interface name
|
|
139
|
-
* @throws {InvalidBaseClassFormatError} When
|
|
139
|
+
* @throws {InvalidBaseClassFormatError} When projectType format is invalid
|
|
140
140
|
*
|
|
141
141
|
* @example
|
|
142
|
-
* getBaseOptionsFqn(
|
|
143
|
-
* getBaseOptionsFqn(
|
|
142
|
+
* getBaseOptionsFqn(ProjectType.TYPESCRIPT) // "projen.typescript.TypeScriptProjectOptions"
|
|
143
|
+
* getBaseOptionsFqn(ProjectType.JSII) // "projen.cdk.JsiiProjectOptions"
|
|
144
144
|
*/
|
|
145
|
-
getBaseOptionsFqn(
|
|
145
|
+
getBaseOptionsFqn(projectType) {
|
|
146
|
+
const baseClass = projectType.valueOf();
|
|
146
147
|
/* Validate base class format: must contain module.ClassName structure */
|
|
147
148
|
if (!baseClass.includes(".")) {
|
|
148
149
|
throw new errors_1.InvalidBaseClassFormatError(baseClass);
|
|
@@ -204,8 +205,8 @@ class TypeScriptClassRenderer {
|
|
|
204
205
|
*/
|
|
205
206
|
extractImports(options, optionsInterface) {
|
|
206
207
|
const imports = new Map();
|
|
207
|
-
/* Extract base module name from
|
|
208
|
-
const baseModule = options.
|
|
208
|
+
/* Extract base module name from projectType (e.g., "typescript" from "typescript.TypeScriptProject") */
|
|
209
|
+
const baseModule = options.projectType.valueOf().split(".")[0];
|
|
209
210
|
const optionsFileName = this.getOptionsFileName(optionsInterface);
|
|
210
211
|
/* Projen base module import */
|
|
211
212
|
imports.set("projen", new Set([baseModule]));
|
|
@@ -233,17 +234,17 @@ class TypeScriptClassRenderer {
|
|
|
233
234
|
/**
|
|
234
235
|
* Derives the config path for accessing default options
|
|
235
236
|
*
|
|
236
|
-
* Transforms
|
|
237
|
+
* Transforms project type into the corresponding path in the defaultOptions
|
|
237
238
|
* configuration object exported from config.ts.
|
|
238
239
|
*
|
|
239
|
-
* @param
|
|
240
|
+
* @param projectType - Project type identifier
|
|
240
241
|
* @returns Config path for accessing default options
|
|
241
242
|
*
|
|
242
243
|
* @example
|
|
243
|
-
* getConfigPath(
|
|
244
|
+
* getConfigPath(ProjectType.TYPESCRIPT) // "defaultOptions.typescript.TypeScriptProject"
|
|
244
245
|
*/
|
|
245
|
-
getConfigPath(
|
|
246
|
-
return `defaultOptions.${
|
|
246
|
+
getConfigPath(projectType) {
|
|
247
|
+
return `defaultOptions.${projectType.valueOf()}`;
|
|
247
248
|
}
|
|
248
249
|
/**
|
|
249
250
|
* Renders import statements in sorted order
|
|
@@ -297,7 +298,7 @@ class TypeScriptClassRenderer {
|
|
|
297
298
|
this.buffer.line(" *");
|
|
298
299
|
this.buffer.line(" * Extends Projen's base class with opinionated defaults and automatic component setup.");
|
|
299
300
|
this.buffer.line(" */");
|
|
300
|
-
this.buffer.open(`export class ${options.name} extends ${options.
|
|
301
|
+
this.buffer.open(`export class ${options.name} extends ${options.projectType.valueOf()} {`);
|
|
301
302
|
this.renderConstructor(options, optionsInterface, baseOptionsType, destructure, componentArray);
|
|
302
303
|
this.buffer.close("}");
|
|
303
304
|
}
|
|
@@ -317,7 +318,7 @@ class TypeScriptClassRenderer {
|
|
|
317
318
|
* @param componentArray - Code string for component array
|
|
318
319
|
*/
|
|
319
320
|
renderConstructor(options, optionsInterface, baseOptionsType, destructure, componentArray) {
|
|
320
|
-
const configPath = this.getConfigPath(options.
|
|
321
|
+
const configPath = this.getConfigPath(options.projectType);
|
|
321
322
|
this.buffer.line("/**");
|
|
322
323
|
this.buffer.line(" * @param options - Project configuration");
|
|
323
324
|
this.buffer.line(" */");
|
|
@@ -389,7 +390,7 @@ class ProjectGenerator extends projen_1.Component {
|
|
|
389
390
|
this.renderer = new TypeScriptClassRenderer();
|
|
390
391
|
/* Generate the options interface using ProjenStruct for JSII compatibility */
|
|
391
392
|
const optionsInterface = `${options.name}Options`;
|
|
392
|
-
const baseOptionsFqn = this.renderer.getBaseOptionsFqn(options.
|
|
393
|
+
const baseOptionsFqn = this.renderer.getBaseOptionsFqn(options.projectType);
|
|
393
394
|
const optionsFilePath = this.getOptionsFilePath(optionsInterface);
|
|
394
395
|
/* ProjenStruct generates a concrete TypeScript interface from Projen's options
|
|
395
396
|
* This is necessary because JSII doesn't support TypeScript utility types like Omit<>
|
|
@@ -506,4 +507,4 @@ class TypeScriptClassFile extends projen_1.TextFile {
|
|
|
506
507
|
this.addLine(content);
|
|
507
508
|
}
|
|
508
509
|
}
|
|
509
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvamVjdC1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esc0VBQW9FO0FBRXBFLG1DQUE2QztBQUM3QyxxQ0FBc0c7QUFLdEc7O0dBRUc7QUFDSCxNQUFNLGtCQUFrQixHQUFzQjtJQUMxQyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLEVBQUU7SUFDaEQ7UUFDSSxTQUFTLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUMsTUFBTTtRQUNoRCxlQUFlLEVBQUU7WUFDYixJQUFJLEVBQUUsZUFBZTtZQUNyQixJQUFJLEVBQUUsOENBQThDO1lBQ3BELElBQUksRUFBRSxzQkFBc0I7U0FDL0I7S0FDSjtDQUNKLENBQUM7QUFvSEY7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVU7SUFJWjs7T0FFRztJQUNILFlBQTZCLFNBQVMsR0FBRztRQUFaLFdBQU0sR0FBTixNQUFNLENBQU07UUFOakMsVUFBSyxHQUFhLEVBQUUsQ0FBQztRQUNyQixnQkFBVyxHQUFHLENBQUMsQ0FBQztJQUtvQixDQUFDO0lBRTdDOzs7O09BSUc7SUFDSCxLQUFLO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxJQUFhO1FBQ2QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMs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UUFDMUQsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDMUQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sR0FBRyxHQUFHLElBQUksZUFBZSxlQUFlLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsYUFBYTtRQUNULE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVuRCxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFO1lBQ2xFLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJO1NBQzFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSjtBQTNIRCw0Q0EySEM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sbUJBQW9CLFNBQVEsaUJBQVE7SUFDdEM7Ozs7O09BS0c7SUFDSCxZQUFZLE9BQWdCLEVBQUUsUUFBZ0IsRUFBRSxPQUFlLEVBQUUsVUFBNkIsRUFBRTtRQUM1RixLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsQyx5REFBeUQ7UUFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSB9IGZyb20gXCJAanNpaS9zcGVjXCI7XG5pbXBvcnQgeyBQcm9qZW5TdHJ1Y3QsIFN0cnVjdCB9IGZyb20gXCJAbXJncmFpbi9qc2lpLXN0cnVjdC1idWlsZGVyXCI7XG5pbXBvcnQgdHlwZSB7IFByb2plY3QsIFNvdXJjZUNvZGVPcHRpb25zLCB0eXBlc2NyaXB0IH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBUZXh0RmlsZSB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IEludmFsaWRCYXNlQ2xhc3NGb3JtYXRFcnJvciwgSW52YWxpZEZpbGVQYXRoRXJyb3IsIEludmFsaWRJbmRlbnRMZXZlbEVycm9yIH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5cbnR5cGUgUHJvamVuTW9kdWxlID0gXCJ0eXBlc2NyaXB0XCIgfCBcImNka1wiIHwgXCJhd3NjZGtcIjtcbnR5cGUgUHJvamVuQmFzZUNsYXNzPE0gZXh0ZW5kcyBQcm9qZW5Nb2R1bGU+ID0gYCR7TX0uJHtzdHJpbmd9YDtcblxuLyoqXG4gKiBEZWZhdWx0IGNvbXBvbmVudHMgYXBwbGllZCB0byBhbGwgZ2VuZXJhdGVkIHByb2plY3RzXG4gKi9cbmNvbnN0IERFRkFVTFRfQ09NUE9ORU5UUzogQ29tcG9uZW50Q29uZmlnW10gPSBbXG4gICAgeyBjb21wb25lbnQ6IHJlcXVpcmUoXCIuL2NvbXBvbmVudHMvbWlzZVwiKS5NaXNlIH0sXG4gICAge1xuICAgICAgICBjb21wb25lbnQ6IHJlcXVpcmUoXCIuL2NvbXBvbmVudHMvdml0ZXN0XCIpLlZpdGVzdCxcbiAgICAgICAgb3B0aW9uc1Byb3BlcnR5OiB7XG4gICAgICAgICAgICBuYW1lOiBcInZpdGVzdE9wdGlvbnNcIixcbiAgICAgICAgICAgIHR5cGU6IFwiQG5pa292aXJ0YWxhL3Byb2plbi1jb25zdHJ1Y3RzLlZpdGVzdE9wdGlvbnNcIixcbiAgICAgICAgICAgIGRvY3M6IFwiVml0ZXN0IGNvbmZpZ3VyYXRpb25cIixcbiAgICAgICAgfSxcbiAgICB9LFxuXTtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIGNvbXBvbmVudCB0byBiZSBpbnRlZ3JhdGVkIGludG8gYSBnZW5lcmF0ZWQgcHJvamVjdFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjb25maWc6IENvbXBvbmVudENvbmZpZyA9IHtcbiAqICAgY29tcG9uZW50OiBWaXRlc3QsXG4gKiAgIG9wdGlvbnNQcm9wZXJ0eTogXCJ2aXRlc3RPcHRpb25zXCJcbiAqIH07XG4gKiBgYGBcbiAqL1xuaW50ZXJmYWNlIENvbXBvbmVudENvbmZpZzxUIGV4dGVuZHMgQ29tcG9uZW50ID0gQ29tcG9uZW50PiB7XG4gICAgLyoqXG4gICAgICogQ29tcG9uZW50IGNsYXNzIGNvbnN0cnVjdG9yXG4gICAgICovXG4gICAgcmVhZG9ubHkgY29tcG9uZW50OiBuZXcgKFxuICAgICAgICBwcm9qZWN0OiBuZXZlcixcbiAgICAgICAgb3B0aW9ucz86IG5ldmVyLFxuICAgICkgPT4gVDtcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbnMgcHJvcGVydHkgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdlbmVyYXRlZCBvcHRpb25zIGludGVyZmFjZVxuICAgICAqXG4gICAgICogV2hlbiBzcGVjaWZpZWQsIGFkZHMgYW4gb3B0aW9ucyBwcm9wZXJ0eSB0byB0aGUgaW50ZXJmYWNlIGFsbG93aW5nXG4gICAgICogdXNlcnMgdG8gY29uZmlndXJlIHRoZSBjb21wb25lbnQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgb3B0aW9uc1Byb3BlcnR5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogTmFtZSBvZiB0aGUgb3B0aW9ucyBwcm9wZXJ0eSAoZS5nLiwgXCJ2aXRlc3RPcHRpb25zXCIpXG4gICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGdWxseSBxdWFsaWZpZWQgdHlwZSBuYW1lIChlLmcuLCBcIkBuaWtvdmlydGFsYS9wcm9qZW4tY29uc3RydWN0cy5WaXRlc3RPcHRpb25zXCIpXG4gICAgICAgICAqL1xuICAgICAgICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEb2N1bWVudGF0aW9uIHN1bW1hcnlcbiAgICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGRvY3M/OiBzdHJpbmc7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBQcm9qZWN0R2VuZXJhdG9yIGNvbXBvbmVudFxuICpcbiAqIENvbmZpZ3VyZXMgdGhlIGdlbmVyYXRpb24gb2YgYSBUeXBlU2NyaXB0IHByb2plY3QgY2xhc3MgdGhhdCBleHRlbmRzIGEgUHJvamVuIGJhc2UgY2xhc3NcbiAqIHdpdGggc3RhbmRhcmQgY29uZmlndXJhdGlvbiBhbmQgY29tcG9uZW50IGludGVncmF0aW9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBuZXcgUHJvamVjdEdlbmVyYXRvcihwcm9qZWN0LCB7XG4gKiAgIG5hbWU6IFwiVHlwZVNjcmlwdFByb2plY3RcIixcbiAqICAgYmFzZUNsYXNzOiBcInR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3RcIixcbiAqICAgZmlsZVBhdGg6IFwic3JjL3Byb2plY3RzL3R5cGVzY3JpcHQuZ2VuZXJhdGVkLnRzXCIsXG4gKiAgIGNvbXBvbmVudHM6IFt7IGNvbXBvbmVudDogVml0ZXN0LCBvcHRpb25zUHJvcGVydHk6IFwidml0ZXN0T3B0aW9uc1wiIH1dXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3RHZW5lcmF0b3JPcHRpb25zPE0gZXh0ZW5kcyBQcm9qZW5Nb2R1bGUgPSBQcm9qZW5Nb2R1bGU+IGV4dGVuZHMgU291cmNlQ29kZU9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGdlbmVyYXRlZCBjbGFzcyAoZS5nLiwgXCJUeXBlU2NyaXB0UHJvamVjdFwiKVxuICAgICAqXG4gICAgICogVGhlIG9wdGlvbnMgaW50ZXJmYWNlIHdpbGwgYmUgbmFtZWQgYCR7bmFtZX1PcHRpb25zYC5cbiAgICAgKi9cbiAgICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBGdWxseSBxdWFsaWZpZWQgYmFzZSBjbGFzcyB0byBleHRlbmQgaW4gZm9ybWF0IFwibW9kdWxlLkNsYXNzTmFtZVwiXG4gICAgICpcbiAgICAgKiBNdXN0IGJlIGEgdmFsaWQgUHJvamVuIGNsYXNzIHJlZmVyZW5jZSBsaWtlIFwidHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdFwiLFxuICAgICAqIFwiY2RrLkpzaWlQcm9qZWN0XCIsIG9yIFwiYXdzY2RrLkF3c0Nka1R5cGVTY3JpcHRBcHBcIi5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlIFwidHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdFwiXG4gICAgICogQGV4YW1wbGUgXCJjZGsuSnNpaVByb2plY3RcIlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGJhc2VDbGFzczogUHJvamVuQmFzZUNsYXNzPE0+O1xuXG4gICAgLyoqXG4gICAgICogT3V0cHV0IGZpbGUgcGF0aCBmb3IgdGhlIGdlbmVyYXRlZCBjbGFzc1xuICAgICAqXG4gICAgICogTXVzdCBjb250YWluIGEgZGlyZWN0b3J5IHNlcGFyYXRvci4gVGhlIG9wdGlvbnMgaW50ZXJmYWNlIHdpbGwgYmUgZ2VuZXJhdGVkXG4gICAgICogaW4gdGhlIHNhbWUgZGlyZWN0b3J5IHdpdGggYSBcIi5nZW5lcmF0ZWQudHNcIiBzdWZmaXguXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZSBcInNyYy9wcm9qZWN0cy90eXBlc2NyaXB0LmdlbmVyYXRlZC50c1wiXG4gICAgICovXG4gICAgcmVhZG9ubHkgZmlsZVBhdGg6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIENvbXBvbmVudHMgdG8gaW50ZWdyYXRlIGludG8gdGhlIHByb2plY3RcbiAgICAgKlxuICAgICAqIEVhY2ggY29tcG9uZW50IHdpbGwgYmUgaW5zdGFudGlhdGVkIGR1cmluZyBwcm9qZWN0IGNvbnN0cnVjdGlvbiBhbmQgY2FuIGJlXG4gICAgICogY29uZmlndXJlZCB2aWEgYW4gb3B0aW9uYWwgb3B0aW9ucyBwcm9wZXJ0eSBpbiB0aGUgZ2VuZXJhdGVkIGludGVyZmFjZS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFt7IGNvbXBvbmVudDogTWlzZSB9LCB7IGNvbXBvbmVudDogVml0ZXN0LCBvcHRpb25zUHJvcGVydHk6IHsgbmFtZTogXCJ2aXRlc3RPcHRpb25zXCIsIHR5cGU6IFwiLi4uXCIsIGRvY3M6IFwiLi4uXCIgfSB9XVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNvbXBvbmVudHM/OiBDb21wb25lbnRDb25maWdbXTtcblxuICAgIC8qKlxuICAgICAqIEFkZGl0aW9uYWwgcHJvcGVydGllcyB0byBhZGQgdG8gdGhlIGdlbmVyYXRlZCBvcHRpb25zIGludGVyZmFjZVxuICAgICAqXG4gICAgICogVXNlIHRoaXMgdG8gZXh0ZW5kIHRoZSBiYXNlIG9wdGlvbnMgd2l0aCBjdXN0b20gcHJvcGVydGllcyBzcGVjaWZpYyB0b1xuICAgICAqIHlvdXIgcHJvamVjdCB0eXBlLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGFkZGl0aW9uYWxPcHRpb25zPzogUHJvcGVydHlbXTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IG5hbWVzIHRvIG9taXQgZnJvbSB0aGUgYmFzZSBvcHRpb25zIGludGVyZmFjZVxuICAgICAqXG4gICAgICogVXNlIHRoaXMgdG8gaGlkZSBiYXNlIGNsYXNzIG9wdGlvbnMgdGhhdCBzaG91bGQgbm90IGJlIGNvbmZpZ3VyYWJsZVxuICAgICAqIGluIHRoZSBnZW5lcmF0ZWQgcHJvamVjdCB0eXBlLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IG9taXRPcHRpb25zPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQnVmZmVyIGZvciBidWlsZGluZyBpbmRlbnRlZCBjb2RlIHdpdGggYXV0b21hdGljIGxpbmUgbWFuYWdlbWVudFxuICpcbiAqIE1haW50YWlucyBpbmRlbnRhdGlvbiBsZXZlbCBhbmQgcHJvdmlkZXMgbWV0aG9kcyBmb3IgYWRkaW5nIGxpbmVzLFxuICogb3BlbmluZy9jbG9zaW5nIGJsb2NrcywgYW5kIGZsdXNoaW5nIGFjY3VtdWxhdGVkIGNvbnRlbnQuXG4gKi9cbmNsYXNzIENvZGVCdWZmZXIge1xuICAgIHByaXZhdGUgbGluZXM6IHN0cmluZ1tdID0gW107XG4gICAgcHJpdmF0ZSBpbmRlbnRMZXZlbCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gaW5kZW50IC0gU3RyaW5nIHRvIHVzZSBmb3IgZWFjaCBpbmRlbnRhdGlvbiBsZXZlbCAoZGVmYXVsdDogc2luZ2xlIHNwYWNlKVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaW5kZW50ID0gXCIgXCIpIHt9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFsbCBhY2N1bXVsYXRlZCBsaW5lcyBhbmQgcmVzZXRzIHRoZSBidWZmZXJcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEFycmF5IG9mIGNvZGUgbGluZXMgd2l0aCBwcm9wZXIgaW5kZW50YXRpb25cbiAgICAgKi9cbiAgICBmbHVzaCgpOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmxpbmVzO1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBsaW5lIG9mIGNvZGUgYXQgdGhlIGN1cnJlbnQgaW5kZW50YXRpb24gbGV2ZWxcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb2RlIC0gQ29kZSB0byBhZGQgKG9wdGlvbmFsLCBhZGRzIGJsYW5rIGxpbmUgaWYgb21pdHRlZClcbiAgICAgKi9cbiAgICBsaW5lKGNvZGU/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gdGhpcy5pbmRlbnQucmVwZWF0KHRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgICB0aGlzLmxpbmVzLnB1c2goKHByZWZpeCArIChjb2RlID8/IFwiXCIpKS50cmltRW5kKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIGEgbmV3IGluZGVudGF0aW9uIGJsb2NrXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29kZSAtIE9wdGlvbmFsIGNvZGUgdG8gYWRkIGJlZm9yZSBpbmNyZWFzaW5nIGluZGVudCAoZS5nLiwgb3BlbmluZyBicmFjZSlcbiAgICAgKi9cbiAgICBvcGVuKGNvZGU/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGNvZGUpIHtcbiAgICAgICAgICAgIHRoaXMubGluZShjb2RlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluZGVudExldmVsKys7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBjdXJyZW50IGluZGVudGF0aW9uIGJsb2NrXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29kZSAtIE9wdGlvbmFsIGNvZGUgdG8gYWRkIGFmdGVyIGRlY3JlYXNpbmcgaW5kZW50IChlLmcuLCBjbG9zaW5nIGJyYWNlKVxuICAgICAqIEB0aHJvd3Mge0ludmFsaWRJbmRlbnRMZXZlbEVycm9yfSBXaGVuIGF0dGVtcHRpbmcgdG8gZGVjcmVhc2UgaW5kZW50IGJlbG93IHplcm9cbiAgICAgKi9cbiAgICBjbG9zZShjb2RlPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmluZGVudExldmVsID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEluZGVudExldmVsRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluZGVudExldmVsLS07XG4gICAgICAgIGlmIChjb2RlKSB7XG4gICAgICAgICAgICB0aGlzLmxpbmUoY29kZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNldHMgdGhlIGJ1ZmZlciB0byBpbml0aWFsIHN0YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5saW5lcyA9IFtdO1xuICAgICAgICB0aGlzLmluZGVudExldmVsID0gMDtcbiAgICB9XG59XG5cbi8qKlxuICogUmVuZGVycyBUeXBlU2NyaXB0IGNsYXNzIGNvZGUgZnJvbSBQcm9qZWN0R2VuZXJhdG9yIG9wdGlvbnNcbiAqXG4gKiBHZW5lcmF0ZXMgYSBjb21wbGV0ZSBUeXBlU2NyaXB0IGNsYXNzIGZpbGUgaW5jbHVkaW5nIGltcG9ydHMsIG9wdGlvbnMgaW50ZXJmYWNlIGV4cG9ydCxcbiAqIGNsYXNzIGRlY2xhcmF0aW9uLCBhbmQgY29uc3RydWN0b3Igd2l0aCBjb21wb25lbnQgaW50ZWdyYXRpb24uXG4gKi9cbmNsYXNzIFR5cGVTY3JpcHRDbGFzc1JlbmRlcmVyIHtcbiAgICBwcml2YXRlIGJ1ZmZlcjogQ29kZUJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBpbmRlbnQgLSBOdW1iZXIgb2Ygc3BhY2VzIHBlciBpbmRlbnRhdGlvbiBsZXZlbCAoZGVmYXVsdDogNClcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihpbmRlbnQgPSA0KSB7XG4gICAgICAgIHRoaXMuYnVmZmVyID0gbmV3IENvZGVCdWZmZXIoXCIgXCIucmVwZWF0KGluZGVudCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbmRlcnMgY29tcGxldGUgVHlwZVNjcmlwdCBjbGFzcyBjb2RlIGZyb20gb3B0aW9uc1xuICAgICAqXG4gICAgICogT3JjaGVzdHJhdGVzIHRoZSByZW5kZXJpbmcgcHJvY2VzczogZGVyaXZlcyBuYW1lcywgZXh0cmFjdHMgY29tcG9uZW50IGNvbmZpZ3VyYXRpb24sXG4gICAgICogYnVpbGRzIGltcG9ydCBzdGF0ZW1lbnRzLCBhbmQgcmVuZGVycyB0aGUgY2xhc3Mgc3RydWN0dXJlLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBHZW5lcmF0b3IgY29uZmlndXJhdGlvblxuICAgICAqIEByZXR1cm5zIENvbXBsZXRlIFR5cGVTY3JpcHQgY2xhc3MgY29kZSBhcyBhIHN0cmluZ1xuICAgICAqL1xuICAgIHJlbmRlcihvcHRpb25zOiBQcm9qZWN0R2VuZXJhdG9yT3B0aW9uczxQcm9qZW5Nb2R1bGU+KTogc3RyaW5nIHtcbiAgICAgICAgdGhpcy5idWZmZXIuZmx1c2goKTtcblxuICAgICAgICAvKiBEZXJpdmUgaW50ZXJmYWNlIGFuZCB0eXBlIG5hbWVzIGZyb20gdGhlIGNsYXNzIG5hbWUgKi9cbiAgICAgICAgY29uc3Qgb3B0aW9uc0ludGVyZmFjZSA9IGAke29wdGlvbnMubmFtZX1PcHRpb25zYDtcbiAgICAgICAgY29uc3QgYmFzZU9wdGlvbnNGcW4gPSB0aGlzLmdldEJhc2VPcHRpb25zRnFuKG9wdGlvbnMuYmFzZUNsYXNzKTtcbiAgICAgICAgY29uc3QgYmFzZU9wdGlvbnNUeXBlID0gYmFzZU9wdGlvbnNGcW4ucmVwbGFjZSgvXnByb2plblxcLi8sIFwiXCIpO1xuXG4gICAgICAgIC8qIFVzZSBwcm92aWRlZCBjb21wb25lbnRzIG9yIGZhbGwgYmFjayB0byBkZWZhdWx0cyAoTWlzZSArIFZpdGVzdCkgKi9cbiAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IG9wdGlvbnMuY29tcG9uZW50cyA/PyBERUZBVUxUX0NPTVBPTkVOVFM7XG5cbiAgICAgICAgLyogRXh0cmFjdCBjb21wb25lbnQgY29uZmlndXJhdGlvbiBmb3IgY29uc3RydWN0b3IgZ2VuZXJhdGlvbiAqL1xuICAgICAgICBjb25zdCB7IGRlc3RydWN0dXJlLCBjb21wb25lbnRBcnJheSB9ID0gdGhpcy5leHRyYWN0Q29tcG9uZW50T3B0aW9ucyhjb21wb25lbnRzKTtcbiAgICAgICAgY29uc3QgaW1wb3J0cyA9IHRoaXMuZXh0cmFjdEltcG9ydHMob3B0aW9ucywgb3B0aW9uc0ludGVyZmFjZSk7XG5cbiAgICAgICAgLyogUmVuZGVyIGFsbCBzZWN0aW9ucyBvZiB0aGUgY2xhc3MgZmlsZSAqL1xuICAgICAgICB0aGlzLnJlbmRlckltcG9ydHMoaW1wb3J0cyk7XG4gICAgICAgIHRoaXMuYnVmZmVyLmxpbmUoKTtcbiAgICAgICAgdGhpcy5yZW5kZXJFeHBvcnQob3B0aW9uc0ludGVyZmFjZSk7XG4gICAgICAgIHRoaXMuYnVmZmVyLmxpbmUoKTtcbiAgICAgICAgdGhpcy5yZW5kZXJDbGFzcyhvcHRpb25zLCBvcHRpb25zSW50ZXJmYWNlLCBiYXNlT3B0aW9uc1R5cGUsIGRlc3RydWN0dXJlLCBjb21wb25lbnRBcnJheSk7XG4gICAgICAgIHRoaXMuYnVmZmVyLmxpbmUoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5idWZmZXIuZmx1c2goKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlcml2ZXMgdGhlIGZ1bGx5IHF1YWxpZmllZCBvcHRpb25zIGludGVyZmFjZSBuYW1lIGZyb20gYmFzZSBjbGFzc1xuICAgICAqXG4gICAgICogVHJhbnNmb3JtcyBiYXNlIGNsYXNzIHJlZmVyZW5jZSBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIFByb2plbiBvcHRpb25zIGludGVyZmFjZSBuYW1lXG4gICAgICogYnkgYXBwZW5kaW5nIFwiT3B0aW9uc1wiIHN1ZmZpeCBhbmQgcHJlZml4aW5nIHdpdGggXCJwcm9qZW4uXCIgbmFtZXNwYWNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGJhc2VDbGFzcyAtIEJhc2UgY2xhc3MgaW4gZm9ybWF0IFwibW9kdWxlLkNsYXNzTmFtZVwiXG4gICAgICogQHJldHVybnMgRnVsbHkgcXVhbGlmaWVkIG9wdGlvbnMgaW50ZXJmYWNlIG5hbWVcbiAgICAgKiBAdGhyb3dzIHtJbnZhbGlkQmFzZUNsYXNzRm9ybWF0RXJyb3J9IFdoZW4gYmFzZUNsYXNzIGZvcm1hdCBpcyBpbnZhbGlkXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGdldEJhc2VPcHRpb25zRnFuKFwidHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdFwiKSAvLyBcInByb2plbi50eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0T3B0aW9uc1wiXG4gICAgICogZ2V0QmFzZU9wdGlvbnNGcW4oXCJjZGsuSnNpaVByb2plY3RcIikgLy8gXCJwcm9qZW4uY2RrLkpzaWlQcm9qZWN0T3B0aW9uc1wiXG4gICAgICovXG4gICAgZ2V0QmFzZU9wdGlvbnNGcW4oYmFzZUNsYXNzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICAvKiBWYWxpZGF0ZSBiYXNlIGNsYXNzIGZvcm1hdDogbXVzdCBjb250YWluIG1vZHVsZS5DbGFzc05hbWUgc3RydWN0dXJlICovXG4gICAgICAgIGlmICghYmFzZUNsYXNzLmluY2x1ZGVzKFwiLlwiKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRCYXNlQ2xhc3NGb3JtYXRFcnJvcihiYXNlQ2xhc3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGBwcm9qZW4uJHtiYXNlQ2xhc3N9T3B0aW9uc2A7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXh0cmFjdHMgY29tcG9uZW50IGNvbmZpZ3VyYXRpb24gZm9yIGNvbnN0cnVjdG9yIGNvZGUgZ2VuZXJhdGlvblxuICAgICAqXG4gICAgICogVHJhbnNmb3JtcyBjb21wb25lbnQgY29uZmlndXJhdGlvbnMgaW50bzpcbiAgICAgKiAxLiBEZXN0cnVjdHVyZSBsaXN0OiB2YXJpYWJsZSBuYW1lcyB0byBleHRyYWN0IGZyb20gb3B0aW9uc1xuICAgICAqIDIuIENvbXBvbmVudCBhcnJheTogY29kZSBzdHJpbmcgZm9yIGFwcGx5RGVmYXVsdHMoKSBjYWxsXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29tcG9uZW50cyAtIENvbXBvbmVudCBjb25maWd1cmF0aW9uc1xuICAgICAqIEByZXR1cm5zIE9iamVjdCB3aXRoIGRlc3RydWN0dXJlIGFycmF5IGFuZCBjb21wb25lbnRBcnJheSBjb2RlIHN0cmluZ1xuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBJbnB1dDogW3sgY29tcG9uZW50OiBWaXRlc3QsIG9wdGlvbnNQcm9wZXJ0eTogeyBuYW1lOiBcInZpdGVzdE9wdGlvbnNcIiwgLi4uIH0gfV1cbiAgICAgKiBPdXRwdXQ6IHtcbiAgICAgKiAgIGRlc3RydWN0dXJlOiBbXCJ2aXRlc3RcIiwgXCJ2aXRlc3RPcHRpb25zXCJdLFxuICAgICAqICAgY29tcG9uZW50QXJyYXk6IFwiW3sgY29tcG9uZW50OiBWaXRlc3QsIGVuYWJsZWQ6IHZpdGVzdCwgb3B0aW9uczogdml0ZXN0T3B0aW9ucyB9XVwiXG4gICAgICogfVxuICAgICAqL1xuICAgIHByaXZhdGUgZXh0cmFjdENvbXBvbmVudE9wdGlvbnMoY29tcG9uZW50czogQ29tcG9uZW50Q29uZmlnW10pOiB7IGRlc3RydWN0dXJlOiBzdHJpbmdbXTsgY29tcG9uZW50QXJyYXk6IHN0cmluZyB9IHtcbiAgICAgICAgY29uc3QgZGVzdHJ1Y3R1cmU6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgYyBvZiBjb21wb25lbnRzKSB7XG4gICAgICAgICAgICAvKiBDb252ZXJ0IGNvbXBvbmVudCBjbGFzcyBuYW1lIHRvIGNhbWVsQ2FzZSB2YXJpYWJsZSBuYW1lIChlLmcuLCBWaXRlc3QgLT4gdml0ZXN0KSAqL1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGMuY29tcG9uZW50Lm5hbWUuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBjLmNvbXBvbmVudC5uYW1lLnNsaWNlKDEpO1xuICAgICAgICAgICAgZGVzdHJ1Y3R1cmUucHVzaChuYW1lKTtcblxuICAgICAgICAgICAgLyogQnVpbGQgY29tcG9uZW50IGNvbmZpZyBvYmplY3QgZm9yIGFwcGx5RGVmYXVsdHMoKSBjYWxsICovXG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IFtgY29tcG9uZW50OiAke2MuY29tcG9uZW50Lm5hbWV9YF07XG4gICAgICAgICAgICBpZiAoYy5vcHRpb25zUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICAvKiBDb21wb25lbnQgaGFzIGNvbmZpZ3VyYWJsZSBvcHRpb25zIC0gaW5jbHVkZSBib3RoIGVuYWJsZWQgZmxhZyBhbmQgb3B0aW9ucyAqL1xuICAgICAgICAgICAgICAgIGRlc3RydWN0dXJlLnB1c2goYy5vcHRpb25zUHJvcGVydHkubmFtZSk7XG4gICAgICAgICAgICAgICAgcGFydHMucHVzaChgZW5hYmxlZDogJHtuYW1lfWAsIGBvcHRpb25zOiAke2Mub3B0aW9uc1Byb3BlcnR5Lm5hbWV9YCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8qIENvbXBvbmVudCBoYXMgbm8gb3B0aW9ucyAtIG9ubHkgaW5jbHVkZSBlbmFibGVkIGZsYWcgKi9cbiAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKGBlbmFibGVkOiAke25hbWV9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21wb25lbnRQYXJ0cy5wdXNoKGB7ICR7cGFydHMuam9pbihcIiwgXCIpfSB9YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyBkZXN0cnVjdHVyZSwgY29tcG9uZW50QXJyYXk6IGBbJHtjb21wb25lbnRQYXJ0cy5qb2luKFwiLCBcIil9XWAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCdWlsZHMgaW1wb3J0IHN0YXRlbWVudHMgbWFwIGZvciB0aGUgZ2VuZXJhdGVkIGNsYXNzXG4gICAgICpcbiAgICAgKiBDb2xsZWN0cyBhbGwgcmVxdWlyZWQgaW1wb3J0czpcbiAgICAgKiAtIFByb2plbiBiYXNlIG1vZHVsZSAodHlwZXNjcmlwdCwgY2RrLCBhd3NjZGspXG4gICAgICogLSBDb25maWcgdXRpbGl0aWVzIChhcHBseURlZmF1bHRzLCBkZWZhdWx0T3B0aW9ucylcbiAgICAgKiAtIENvbXBvbmVudCBjbGFzc2VzXG4gICAgICogLSBVdGlsaXR5IGZ1bmN0aW9ucyAoZGVlcE1lcmdlKVxuICAgICAqIC0gR2VuZXJhdGVkIG9wdGlvbnMgaW50ZXJmYWNlICh0eXBlLW9ubHkgaW1wb3J0KVxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBHZW5lcmF0b3IgY29uZmlndXJhdGlvblxuICAgICAqIEBwYXJhbSBvcHRpb25zSW50ZXJmYWNlIC0gTmFtZSBvZiB0aGUgZ2VuZXJhdGVkIG9wdGlvbnMgaW50ZXJmYWNlXG4gICAgICogQHJldHVybnMgTWFwIG9mIG1vZHVsZSBwYXRocyB0byBzZXRzIG9mIGltcG9ydGVkIG5hbWVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBleHRyYWN0SW1wb3J0cyhcbiAgICAgICAgb3B0aW9uczogUHJvamVjdEdlbmVyYXRvck9wdGlvbnM8UHJvamVuTW9kdWxlPixcbiAgICAgICAgb3B0aW9uc0ludGVyZmFjZTogc3RyaW5nLFxuICAgICk6IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+PiB7XG4gICAgICAgIGNvbnN0IGltcG9ydHMgPSBuZXcgTWFwPHN0cmluZywgU2V0PHN0cmluZz4+KCk7XG5cbiAgICAgICAgLyogRXh0cmFjdCBiYXNlIG1vZHVsZSBuYW1lIGZyb20gYmFzZUNsYXNzIChlLmcuLCBcInR5cGVzY3JpcHRcIiBmcm9tIFwidHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdFwiKSAqL1xuICAgICAgICBjb25zdCBiYXNlTW9kdWxlID0gb3B0aW9ucy5iYXNlQ2xhc3Muc3BsaXQoXCIuXCIpWzBdO1xuICAgICAgICBjb25zdCBvcHRpb25zRmlsZU5hbWUgPSB0aGlzLmdldE9wdGlvbnNGaWxlTmFtZShvcHRpb25zSW50ZXJmYWNlKTtcblxuICAgICAgICAvKiBQcm9qZW4gYmFzZSBtb2R1bGUgaW1wb3J0ICovXG4gICAgICAgIGltcG9ydHMuc2V0KFwicHJvamVuXCIsIG5ldyBTZXQoW2Jhc2VNb2R1bGVdKSk7XG5cbiAgICAgICAgLyogQ29uZmlndXJhdGlvbiB1dGlsaXRpZXMgaW1wb3J0ICovXG4gICAgICAgIGltcG9ydHMuc2V0KFwiLi4vY29uZmlnXCIsIG5ldyBTZXQoW1wiYXBwbHlEZWZhdWx0c1wiLCBcImRlZmF1bHRPcHRpb25zXCJdKSk7XG5cbiAgICAgICAgLyogQ29tcG9uZW50IGNsYXNzIGltcG9ydHMgLSBkZXJpdmUgbW9kdWxlIHBhdGggZnJvbSBjb21wb25lbnQgY2xhc3MgbmFtZSAqL1xuICAgICAgICBjb25zdCBjb21wb25lbnRzID0gb3B0aW9ucy5jb21wb25lbnRzID8/IERFRkFVTFRfQ09NUE9ORU5UUztcbiAgICAgICAgZm9yIChjb25zdCBjIG9mIGNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudE5hbWUgPSBjLmNvbXBvbmVudC5uYW1lO1xuICAgICAgICAgICAgY29uc3QgbW9kdWxlUGF0aCA9IGAuLi9jb21wb25lbnRzLyR7Y29tcG9uZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgICAgICAgICBpZiAoIWltcG9ydHMuaGFzKG1vZHVsZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgaW1wb3J0cy5zZXQobW9kdWxlUGF0aCwgbmV3IFNldCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZUltcG9ydHMgPSBpbXBvcnRzLmdldChtb2R1bGVQYXRoKTtcbiAgICAgICAgICAgIGlmIChtb2R1bGVJbXBvcnRzKSB7XG4gICAgICAgICAgICAgICAgbW9kdWxlSW1wb3J0cy5hZGQoY29tcG9uZW50TmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKiBVdGlsaXR5IGZ1bmN0aW9ucyBpbXBvcnQgKi9cbiAgICAgICAgaW1wb3J0cy5zZXQoXCIuLi91dGlsc1wiLCBuZXcgU2V0KFtcImRlZXBNZXJnZVwiXSkpO1xuXG4gICAgICAgIC8qIEdlbmVyYXRlZCBvcHRpb25zIGludGVyZmFjZSBpbXBvcnQgKHR5cGUtb25seSB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXMpICovXG4gICAgICAgIGltcG9ydHMuc2V0KGAuLyR7b3B0aW9uc0ZpbGVOYW1lfS5nZW5lcmF0ZWRgLCBuZXcgU2V0KFtvcHRpb25zSW50ZXJmYWNlXSkpO1xuXG4gICAgICAgIHJldHVybiBpbXBvcnRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlcml2ZXMgdGhlIGNvbmZpZyBwYXRoIGZvciBhY2Nlc3NpbmcgZGVmYXVsdCBvcHRpb25zXG4gICAgICpcbiAgICAgKiBUcmFuc2Zvcm1zIGJhc2UgY2xhc3MgcmVmZXJlbmNlIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgcGF0aCBpbiB0aGUgZGVmYXVsdE9wdGlvbnNcbiAgICAgKiBjb25maWd1cmF0aW9uIG9iamVjdCBleHBvcnRlZCBmcm9tIGNvbmZpZy50cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBiYXNlQ2xhc3MgLSBCYXNlIGNsYXNzIGluIGZvcm1hdCBcIm1vZHVsZS5DbGFzc05hbWVcIlxuICAgICAqIEByZXR1cm5zIENvbmZpZyBwYXRoIGZvciBhY2Nlc3NpbmcgZGVmYXVsdCBvcHRpb25zXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGdldENvbmZpZ1BhdGgoXCJ0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0XCIpIC8vIFwiZGVmYXVsdE9wdGlvbnMudHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdFwiXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRDb25maWdQYXRoKGJhc2VDbGFzczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGBkZWZhdWx0T3B0aW9ucy4ke2Jhc2VDbGFzc31gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbmRlcnMgaW1wb3J0IHN0YXRlbWVudHMgaW4gc29ydGVkIG9yZGVyXG4gICAgICpcbiAgICAgKiBTb3J0cyBpbXBvcnRzIHdpdGggZXh0ZXJuYWwgcGFja2FnZXMgZmlyc3QsIHRoZW4gcmVsYXRpdmUgaW1wb3J0cy5cbiAgICAgKiBVc2VzIHR5cGUtb25seSBpbXBvcnRzIGZvciBnZW5lcmF0ZWQgZmlsZXMgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGltcG9ydHMgLSBNYXAgb2YgbW9kdWxlIHBhdGhzIHRvIGltcG9ydGVkIG5hbWVzXG4gICAgICovXG4gICAgcHJpdmF0ZSByZW5kZXJJbXBvcnRzKGltcG9ydHM6IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+Pikge1xuICAgICAgICAvKiBTb3J0IG1vZHVsZXM6IGV4dGVybmFsIHBhY2thZ2VzIGZpcnN0LCB0aGVuIHJlbGF0aXZlIGltcG9ydHMgYWxwaGFiZXRpY2FsbHkgKi9cbiAgICAgICAgY29uc3Qgc29ydGVkTW9kdWxlcyA9IEFycmF5LmZyb20oaW1wb3J0cy5rZXlzKCkpLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFJc1JlbGF0aXZlID0gYS5zdGFydHNXaXRoKFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJJc1JlbGF0aXZlID0gYi5zdGFydHNXaXRoKFwiLlwiKTtcbiAgICAgICAgICAgIGlmIChhSXNSZWxhdGl2ZSAhPT0gYklzUmVsYXRpdmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYUlzUmVsYXRpdmUgPyAxIDogLTE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYS5sb2NhbGVDb21wYXJlKGIpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmb3IgKGNvbnN0IG1vZCBvZiBzb3J0ZWRNb2R1bGVzKSB7XG4gICAgICAgICAgICBjb25zdCBuYW1lcyA9IEFycmF5LmZyb20oaW1wb3J0cy5nZXQobW9kKSB8fCBbXSkuc29ydCgpO1xuICAgICAgICAgICAgLyogVXNlIHR5cGUtb25seSBpbXBvcnQgZm9yIGdlbmVyYXRlZCBmaWxlcyB0byBwcmV2ZW50IGNpcmN1bGFyIGRlcGVuZGVuY2llcyAqL1xuICAgICAgICAgICAgY29uc3QgaXNUeXBlT25seSA9IG1vZC5pbmNsdWRlcyhcIi5nZW5lcmF0ZWRcIik7XG4gICAgICAgICAgICBjb25zdCBpbXBvcnRTdG10ID0gaXNUeXBlT25seSA/IFwiaW1wb3J0IHR5cGVcIiA6IFwiaW1wb3J0XCI7XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlci5saW5lKGAke2ltcG9ydFN0bXR9IHsgJHtuYW1lcy5qb2luKFwiLCBcIil9IH0gZnJvbSBcIiR7bW9kfVwiO2ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVuZGVycyByZS1leHBvcnQgc3RhdGVtZW50IGZvciB0aGUgZ2VuZXJhdGVkIG9wdGlvbnMgaW50ZXJmYWNlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9uc0ludGVyZmFjZSAtIE5hbWUgb2YgdGhlIG9wdGlvbnMgaW50ZXJmYWNlIHRvIGV4cG9ydFxuICAgICAqL1xuICAgIHByaXZhdGUgcmVuZGVyRXhwb3J0KG9wdGlvbnNJbnRlcmZhY2U6IHN0cmluZykge1xuICAgICAgICBjb25zdCBvcHRpb25zRmlsZU5hbWUgPSB0aGlzLmdldE9wdGlvbnNGaWxlTmFtZShvcHRpb25zSW50ZXJmYWNlKTtcbiAgICAgICAgdGhpcy5idWZmZXIubGluZSgpO1xuICAgICAgICB0aGlzLmJ1ZmZlci5saW5lKGBleHBvcnQgeyAke29wdGlvbnNJbnRlcmZhY2V9IH0gZnJvbSBcIi4vJHtvcHRpb25zRmlsZU5hbWV9LmdlbmVyYXRlZFwiO2ApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbmRlcnMgdGhlIGNsYXNzIGRlY2xhcmF0aW9uIGFuZCBjb25zdHJ1Y3RvclxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBHZW5lcmF0b3IgY29uZmlndXJhdGlvblxuICAgICAqIEBwYXJhbSBvcHRpb25zSW50ZXJmYWNlIC0gTmFtZSBvZiB0aGUgb3B0aW9ucyBpbnRlcmZhY2VcbiAgICAgKiBAcGFyYW0gYmFzZU9wdGlvbnNUeXBlIC0gQmFzZSBvcHRpb25zIHR5cGUgd2l0aG91dCBcInByb2plbi5cIiBwcmVmaXhcbiAgICAgKiBAcGFyYW0gZGVzdHJ1Y3R1cmUgLSBWYXJpYWJsZSBuYW1lcyB0byBkZXN0cnVjdHVyZSBmcm9tIG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gY29tcG9uZW50QXJyYXkgLSBDb2RlIHN0cmluZyBmb3IgY29tcG9uZW50IGFycmF5XG4gICAgICovXG4gICAgcHJpdmF0ZSByZW5kZXJDbGFzcyhcbiAgICAgICAgb3B0aW9uczogUHJvamVjdEdlbmVyYXRvck9wdGlvbnM8UHJvamVuTW9kdWxlPixcbiAgICAgICAgb3B0aW9uc0ludGVyZmFjZTogc3RyaW5nLFxuICAgICAgICBiYXNlT3B0aW9uc1R5cGU6IHN0cmluZyxcbiAgICAgICAgZGVzdHJ1Y3R1cmU6IHN0cmluZ1tdLFxuICAgICAgICBjb21wb25lbnRBcnJheTogc3RyaW5nLFxuICAgICkge1xuICAgICAgICB0aGlzLmJ1ZmZlci5saW5lKCk7XG4gICAgICAgIHRoaXMuYnVmZmVyLmxpbmUoXCIvKipcIik7XG4gICAgICAgIHRoaXMuYnVmZmVyLmxpbmUoYCAqICR7b3B0aW9ucy5uYW1lfSB3aXRoIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gYW5kIGNvbXBvbmVudCBpbnRlZ3JhdGlvbmApO1xuICAgICAgICB0aGlzLmJ1ZmZlci5saW5lKFwiICpcIik7XG4gICAgICAgIHRoaXMuYnVmZmVyLmxpbmUoXCIgKiBFeHRlbmRzIFByb2plbidzIGJhc2UgY2xhc3Mgd2l0aCBvcGluaW9uYXRlZCBkZWZhdWx0cyBhbmQgYXV0b21hdGljIGNvbXBvbmVudCBzZXR1cC5cIik7XG4gICAgICAgIHRoaXMuYnVmZmVyLmxpbmUoXCIgKi9cIik7XG4gICAgICAgIHRoaXMuYnVmZmVyLm9wZW4oYGV4cG9ydCBjbGFzcyAke29wdGlvbnMubmFtZX0gZXh0ZW5kcyAke29wdGlvbnMuYmFzZUNsYXNzfSB7YCk7XG4gICAgICAgIHRoaXMucmVuZGVyQ29uc3RydWN0b3Iob3B0aW9ucywgb3B0aW9uc0ludGVyZmFjZSwgYmFzZU9wdGlvbnNUeXBlLCBkZXN0cnVjdHVyZSwgY29tcG9uZW50QXJyYXkpO1xuICAgICAgICB0aGlzLmJ1ZmZlci5jbG9zZShcIn1cIik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVuZGVycyB0aGUgY29uc3RydWN0b3IgaW1wbGVtZW50YXRpb25cbiAgICAgKlxuICAgICAqIFRoZSBjb25zdHJ1Y3RvcjpcbiAgICAgKiAxLiBEZXN0cnVjdHVyZXMgY29tcG9uZW50IGZsYWdzIGFuZCBvcHRpb25zIGZyb20gdGhlIG9wdGlvbnMgcGFyYW1ldGVyXG4gICAgICogMi4gTWVyZ2VzIGRlZmF1bHQgY29uZmlndXJhdGlvbiB3aXRoIHVzZXItcHJvdmlkZWQgb3B0aW9uc1xuICAgICAqIDMuIENhbGxzIHN1cGVyKCkgd2l0aCBtZXJnZWQgb3B0aW9uc1xuICAgICAqIDQuIEFwcGxpZXMgY29tcG9uZW50IGRlZmF1bHRzIHZpYSBhcHBseURlZmF1bHRzKClcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gR2VuZXJhdG9yIGNvbmZpZ3VyYXRpb25cbiAgICAgKiBAcGFyYW0gb3B0aW9uc0ludGVyZmFjZSAtIE5hbWUgb2YgdGhlIG9wdGlvbnMgaW50ZXJmYWNlXG4gICAgICogQHBhcmFtIGJhc2VPcHRpb25zVHlwZSAtIEJhc2Ugb3B0aW9ucyB0eXBlIHdpdGhvdXQgXCJwcm9qZW4uXCIgcHJlZml4XG4gICAgICogQHBhcmFtIGRlc3RydWN0dXJlIC0gVmFyaWFibGUgbmFtZXMgdG8gZGVzdHJ1Y3R1cmUgZnJvbSBvcHRpb25zXG4gICAgICogQHBhcmFtIGNvbXBvbmVudEFycmF5IC0gQ29kZSBzdHJpbmcgZm9yIGNvbXBvbmVudCBhcnJheVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVuZGVyQ29uc3RydWN0b3IoXG4gICAgICAgIG9wdGlvbnM6IFByb2plY3RHZW5lcmF0b3JPcHRpb25zPFByb2plbk1vZHVsZT4sXG4gICAgICAgIG9wdGlvbnNJbnRlcmZhY2U6IHN0cmluZyxcbiAgICAgICAgYmFzZU9wdGlvbnNUeXBlOiBzdHJpbmcsXG4gICAgICAgIGRlc3RydWN0dXJlOiBzdHJpbmdbXSxcbiAgICAgICAgY29tcG9uZW50QXJyYXk6IHN0cmluZyxcbiAgICApIHtcbiAgICAgICAgY29uc3QgY29uZmlnUGF0aCA9IHRoaXMuZ2V0Q29uZmlnUGF0aChvcHRpb25zLmJhc2VDbGFzcyk7XG4gICAgICAgIHRoaXMuYnVmZmVyLmxpbmUoXCIvKipcIik7XG4gICAgICAgIHRoaXMuYnVmZmVyLmxpbmUoXCIgKiBAcGFyYW0gb3B0aW9ucyAtIFByb2plY3QgY29uZmlndXJhdGlvblwiKTtcbiAgICAgICAgdGhpcy5idWZmZXIubGluZShcIiAqL1wiKTtcbiAgICAgICAgdGhpcy5idWZmZXIub3BlbihgY29uc3RydWN0b3Iob3B0aW9uczogJHtvcHRpb25zSW50ZXJmYWNlfSkge2ApO1xuICAgICAgICB0aGlzLmJ1ZmZlci5saW5lKFwiLyogU2VwYXJhdGUgY29tcG9uZW50IGNvbmZpZ3VyYXRpb24gZnJvbSBiYXNlIFByb2plbiBvcHRpb25zICovXCIpO1xuICAgICAgICB0aGlzLmJ1ZmZlci5saW5lKGBjb25zdCB7ICR7ZGVzdHJ1Y3R1cmUuam9pbihcIiwgXCIpfSwgLi4uYmFzZU9wdGlvbnMgfSA9IG9wdGlvbnM7YCk7XG4gICAgICAgIHRoaXMuYnVmZmVyLmxpbmUoKTtcbiAgICAgICAgdGhpcy5idWZmZXIubGluZShcIi8qIE1lcmdlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB3aXRoIHVzZXIgb3B0aW9ucyBhbmQgaW5pdGlhbGl6ZSBiYXNlIGNsYXNzICovXCIpO1xuICAgICAgICB0aGlzLmJ1ZmZlci5saW5lKGBzdXBlcihkZWVwTWVyZ2U8JHtiYXNlT3B0aW9uc1R5cGV9Pigke2NvbmZpZ1BhdGh9LCBiYXNlT3B0aW9ucykpO2ApO1xuICAgICAgICB0aGlzLmJ1ZmZlci5saW5lKCk7XG4gICAgICAgIHRoaXMuYnVmZmVyLmxpbmUoXCIvKiBBcHBseSBjb21wb25lbnQgZGVmYXVsdHMgYW5kIGluc3RhbnRpYXRlIGVuYWJsZWQgY29tcG9uZW50cyAqL1wiKTtcbiAgICAgICAgdGhpcy5idWZmZXIubGluZShgYXBwbHlEZWZhdWx0cyh0aGlzLCAke2NvbXBvbmVudEFycmF5fSk7YCk7XG4gICAgICAgIHRoaXMuYnVmZmVyLmNsb3NlKFwifVwiKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYXBzIG9wdGlvbnMgaW50ZXJmYWNlIG5hbWUgdG8gZmlsZSBuYW1lXG4gICAgICpcbiAgICAgKiBDb252ZXJ0cyBQYXNjYWxDYXNlIGludGVyZmFjZSBuYW1lcyB0byBrZWJhYi1jYXNlIGZpbGUgbmFtZXMuXG4gICAgICogRmFsbHMgYmFjayB0byBsb3dlcmNhc2UgY29udmVyc2lvbiBmb3IgdW5tYXBwZWQgaW50ZXJmYWNlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRpb25zSW50ZXJmYWNlIC0gT3B0aW9ucyBpbnRlcmZhY2UgbmFtZVxuICAgICAqIEByZXR1cm5zIEtlYmFiLWNhc2UgZmlsZSBuYW1lIHdpdGhvdXQgZXh0ZW5zaW9uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGdldE9wdGlvbnNGaWxlTmFtZShcIlR5cGVTY3JpcHRQcm9qZWN0T3B0aW9uc1wiKSAvLyBcInR5cGVzY3JpcHQtb3B0aW9uc1wiXG4gICAgICovXG4gICAgZ2V0T3B0aW9uc0ZpbGVOYW1lKG9wdGlvbnNJbnRlcmZhY2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IG1hcHBpbmc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICAgICBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnM6IFwidHlwZXNjcmlwdC1vcHRpb25zXCIsXG4gICAgICAgICAgICBKc2lpUHJvamVjdE9wdGlvbnM6IFwianNpaS1vcHRpb25zXCIsXG4gICAgICAgICAgICBBd3NDZGtUeXBlU2NyaXB0QXBwUHJvamVjdE9wdGlvbnM6IFwiYXdzY2RrLXR5cGVzY3JpcHQtYXBwLW9wdGlvbnNcIixcbiAgICAgICAgICAgIEF3c0Nka0NvbnN0cnVjdExpYnJhcnlQcm9qZWN0T3B0aW9uczogXCJhd3NjZGstY29uc3RydWN0LWxpYnJhcnktb3B0aW9uc1wiLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbWFwcGluZ1tvcHRpb25zSW50ZXJmYWNlXSB8fCBvcHRpb25zSW50ZXJmYWNlLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxufVxuXG4vKipcbiAqIFByb2plbiBjb21wb25lbnQgdGhhdCBnZW5lcmF0ZXMgVHlwZVNjcmlwdCBwcm9qZWN0IGNsYXNzZXMgd2l0aCBzdGFuZGFyZCBjb25maWd1cmF0aW9uXG4gKlxuICogVGhpcyBjb21wb25lbnQgYXV0b21hdGVzIHRoZSBjcmVhdGlvbiBvZiBwcm9qZWN0IGNsYXNzZXMgdGhhdCBleHRlbmQgUHJvamVuIGJhc2UgY2xhc3Nlc1xuICogd2l0aCBvcGluaW9uYXRlZCBkZWZhdWx0cyBhbmQgY29tcG9uZW50IGludGVncmF0aW9uLiBJdCBnZW5lcmF0ZXMgYm90aDpcbiAqIDEuIEFuIG9wdGlvbnMgaW50ZXJmYWNlICh2aWEgUHJvamVuU3RydWN0KSB0aGF0IGV4dGVuZHMgdGhlIGJhc2UgUHJvamVuIG9wdGlvbnNcbiAqIDIuIEEgcHJvamVjdCBjbGFzcyB0aGF0IGFwcGxpZXMgZGVmYXVsdCBjb25maWd1cmF0aW9uIGFuZCBpbnN0YW50aWF0ZXMgY29tcG9uZW50c1xuICpcbiAqIFRoZSBnZW5lcmF0ZWQgY29kZSBmb2xsb3dzIGEgY29uc2lzdGVudCBwYXR0ZXJuOlxuICogLSBJbXBvcnRzIHJlcXVpcmVkIG1vZHVsZXMgYW5kIGNvbXBvbmVudHNcbiAqIC0gUmUtZXhwb3J0cyB0aGUgZ2VuZXJhdGVkIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiAtIERlZmluZXMgYSBjbGFzcyBleHRlbmRpbmcgdGhlIFByb2plbiBiYXNlIGNsYXNzXG4gKiAtIENvbnN0cnVjdG9yIG1lcmdlcyBkZWZhdWx0cyB3aXRoIHVzZXIgb3B0aW9ucyBhbmQgYXBwbGllcyBjb21wb25lbnRzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIG5ldyBQcm9qZWN0R2VuZXJhdG9yKHByb2plY3QsIHtcbiAqICAgbmFtZTogXCJUeXBlU2NyaXB0UHJvamVjdFwiLFxuICogICBiYXNlQ2xhc3M6IFwidHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdFwiLFxuICogICBmaWxlUGF0aDogXCJzcmMvcHJvamVjdHMvdHlwZXNjcmlwdC5nZW5lcmF0ZWQudHNcIixcbiAqICAgY29tcG9uZW50czogW3sgY29tcG9uZW50OiBWaXRlc3QsIG9wdGlvbnNQcm9wZXJ0eTogXCJ2aXRlc3RPcHRpb25zXCIgfV1cbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBQcm9qZWN0R2VuZXJhdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBUeXBlU2NyaXB0Q2xhc3NSZW5kZXJlcjtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwcm9qZWN0IC0gUHJvamVuIHByb2plY3QgaW5zdGFuY2VcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIEdlbmVyYXRvciBjb25maWd1cmF0aW9uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb2plY3Q6IFByb2plY3QsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogUHJvamVjdEdlbmVyYXRvck9wdGlvbnM8UHJvamVuTW9kdWxlPixcbiAgICApIHtcbiAgICAgICAgc3VwZXIocHJvamVjdCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIgPSBuZXcgVHlwZVNjcmlwdENsYXNzUmVuZGVyZXIoKTtcblxuICAgICAgICAvKiBHZW5lcmF0ZSB0aGUgb3B0aW9ucyBpbnRlcmZhY2UgdXNpbmcgUHJvamVuU3RydWN0IGZvciBKU0lJIGNvbXBhdGliaWxpdHkgKi9cbiAgICAgICAgY29uc3Qgb3B0aW9uc0ludGVyZmFjZSA9IGAke29wdGlvbnMubmFtZX1PcHRpb25zYDtcbiAgICAgICAgY29uc3QgYmFzZU9wdGlvbnNGcW4gPSB0aGlzLnJlbmRlcmVyLmdldEJhc2VPcHRpb25zRnFuKG9wdGlvbnMuYmFzZUNsYXNzKTtcbiAgICAgICAgY29uc3Qgb3B0aW9uc0ZpbGVQYXRoID0gdGhpcy5nZXRPcHRpb25zRmlsZVBhdGgob3B0aW9uc0ludGVyZmFjZSk7XG5cbiAgICAgICAgLyogUHJvamVuU3RydWN0IGdlbmVyYXRlcyBhIGNvbmNyZXRlIFR5cGVTY3JpcHQgaW50ZXJmYWNlIGZyb20gUHJvamVuJ3Mgb3B0aW9uc1xuICAgICAgICAgKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIEpTSUkgZG9lc24ndCBzdXBwb3J0IFR5cGVTY3JpcHQgdXRpbGl0eSB0eXBlcyBsaWtlIE9taXQ8PlxuICAgICAgICAgKiBUaGUgZ2VuZXJhdGVkIGludGVyZmFjZSBjYW4gYmUgY29uc3VtZWQgYnkgb3RoZXIgbGFuZ3VhZ2VzIChQeXRob24sIEphdmEsIEMjLCBHbykgKi9cbiAgICAgICAgY29uc3Qgc3RydWN0ID0gbmV3IFByb2plblN0cnVjdCh0aGlzLmFzVHlwZVNjcmlwdFByb2plY3QocHJvamVjdCksIHtcbiAgICAgICAgICAgIG5hbWU6IG9wdGlvbnNJbnRlcmZhY2UsXG4gICAgICAgICAgICBmaWxlUGF0aDogb3B0aW9uc0ZpbGVQYXRoLFxuICAgICAgICAgICAgb3V0cHV0RmlsZU9wdGlvbnM6IHsgcmVhZG9ubHk6IHRydWUgfSxcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5taXhpbihTdHJ1Y3QuZnJvbUZxbihiYXNlT3B0aW9uc0ZxbikpXG4gICAgICAgICAgICAud2l0aG91dERlcHJlY2F0ZWQoKTtcblxuICAgICAgICAvKiBSZW1vdmUgc3BlY2lmaWVkIG9wdGlvbnMgZnJvbSB0aGUgYmFzZSBpbnRlcmZhY2UgKi9cbiAgICAgICAgaWYgKG9wdGlvbnMub21pdE9wdGlvbnMpIHtcbiAgICAgICAgICAgIHN0cnVjdC5vbWl0KC4uLm9wdGlvbnMub21pdE9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogQWRkIGNvbXBvbmVudC1kZXJpdmVkIG9wdGlvbnMgdG8gdGhlIGludGVyZmFjZSAqL1xuICAgICAgICBjb25zdCBjb21wb25lbnRzID0gb3B0aW9ucy5jb21wb25lbnRzID8/IERFRkFVTFRfQ09NUE9ORU5UUztcbiAgICAgICAgY29uc3QgeyBQcmltaXRpdmVUeXBlIH0gPSByZXF1aXJlKFwiQGpzaWkvc3BlY1wiKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGMgb2YgY29tcG9uZW50cykge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGMuY29tcG9uZW50Lm5hbWUuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBjLmNvbXBvbmVudC5uYW1lLnNsaWNlKDEpO1xuXG4gICAgICAgICAgICAvKiBBZGQgZW5hYmxlZCBmbGFnIGZvciB0aGUgY29tcG9uZW50ICovXG4gICAgICAgICAgICBzdHJ1Y3QuYWRkKHtcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIHR5cGU6IHsgcHJpbWl0aXZlOiBQcmltaXRpdmVUeXBlLkJvb2xlYW4gfSxcbiAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkb2NzOiB7XG4gICAgICAgICAgICAgICAgICAgIHN1bW1hcnk6IGBFbmFibGUgJHtjLmNvbXBvbmVudC5uYW1lfSBjb21wb25lbnRgLFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBcInRydWVcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8qIEFkZCBvcHRpb25zIHByb3BlcnR5IGlmIGNvbXBvbmVudCBpcyBjb25maWd1cmFibGUgKi9cbiAgICAgICAgICAgIGlmIChjLm9wdGlvbnNQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIHN0cnVjdC5hZGQoe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBjLm9wdGlvbnNQcm9wZXJ0eS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiB7IGZxbjogYy5vcHRpb25zUHJvcGVydHkudHlwZSB9LFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZG9jczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyeTogYy5vcHRpb25zUHJvcGVydHkuZG9jcyA/PyBgJHtjLmNvbXBvbmVudC5uYW1lfSBjb25maWd1cmF0aW9uYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGAtIGRlZmF1bHQgJHtjLmNvbXBvbmVudC5uYW1lfSBjb25maWd1cmF0aW9uYCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qIEFkZCBjdXN0b20gb3B0aW9ucyB0byB0aGUgaW50ZXJmYWNlICovXG4gICAgICAgIGlmIChvcHRpb25zLmFkZGl0aW9uYWxPcHRpb25zKSB7XG4gICAgICAgICAgICBzdHJ1Y3QuYWRkKC4uLm9wdGlvbnMuYWRkaXRpb25hbE9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgcHJvamVjdCB0byBUeXBlU2NyaXB0IHByb2plY3QgdHlwZVxuICAgICAqXG4gICAgICogUHJvamVuU3RydWN0IHJlcXVpcmVzIGEgVHlwZVNjcmlwdFByb2plY3QgaW5zdGFuY2UuIFRoaXMgZ2VuZXJhdG9yIGlzIG9ubHkgdXNlZFxuICAgICAqIHdpdGhpbiBUeXBlU2NyaXB0IHByb2plY3RzLCBzbyB0aGUgY2FzdCBpcyBzYWZlIGluIHByYWN0aWNlLlxuICAgICAqXG4gICAgICogTm90ZTogVHlwZSBhc3NlcnRpb24gaXMgbmVjZXNzYXJ5IGhlcmUgYmVjYXVzZSBQcm9qZW4ncyB0eXBlIHN5c3RlbSBkb2Vzbid0IHByb3ZpZGVcbiAgICAgKiBhIHJ1bnRpbWUgdHlwZSBndWFyZCBmb3IgVHlwZVNjcmlwdFByb2plY3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvamVjdCAtIFByb2plbiBwcm9qZWN0IGluc3RhbmNlXG4gICAgICogQHJldHVybnMgVHlwZVNjcmlwdCBwcm9qZWN0IGluc3RhbmNlXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc1R5cGVTY3JpcHRQcm9qZWN0KHByb2plY3Q6IFByb2plY3QpOiB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0IHtcbiAgICAgICAgcmV0dXJuIHByb2plY3QgYXMgdW5rbm93biBhcyB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlcml2ZXMgdGhlIGZpbGUgcGF0aCBmb3IgdGhlIGdlbmVyYXRlZCBvcHRpb25zIGludGVyZmFjZVxuICAgICAqXG4gICAgICogUGxhY2VzIHRoZSBvcHRpb25zIGludGVyZmFjZSBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgY2xhc3MgZmlsZVxuICAgICAqIHdpdGggYSBcIi5nZW5lcmF0ZWQudHNcIiBzdWZmaXguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9uc0ludGVyZmFjZSAtIE5hbWUgb2YgdGhlIG9wdGlvbnMgaW50ZXJmYWNlXG4gICAgICogQHJldHVybnMgRmlsZSBwYXRoIGZvciB0aGUgb3B0aW9ucyBpbnRlcmZhY2VcbiAgICAgKiBAdGhyb3dzIHtJbnZhbGlkRmlsZVBhdGhFcnJvcn0gV2hlbiBmaWxlUGF0aCBkb2Vzbid0IGNvbnRhaW4gYSBkaXJlY3Rvcnkgc2VwYXJhdG9yXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRPcHRpb25zRmlsZVBhdGgob3B0aW9uc0ludGVyZmFjZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgbGFzdFNsYXNoID0gdGhpcy5vcHRpb25zLmZpbGVQYXRoLmxhc3RJbmRleE9mKFwiL1wiKTtcbiAgICAgICAgaWYgKGxhc3RTbGFzaCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkRmlsZVBhdGhFcnJvcih0aGlzLm9wdGlvbnMuZmlsZVBhdGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlyID0gdGhpcy5vcHRpb25zLmZpbGVQYXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2gpO1xuICAgICAgICBjb25zdCBvcHRpb25zRmlsZU5hbWUgPSB0aGlzLnJlbmRlcmVyLmdldE9wdGlvbnNGaWxlTmFtZShvcHRpb25zSW50ZXJmYWNlKTtcbiAgICAgICAgcmV0dXJuIGAke2Rpcn0vJHtvcHRpb25zRmlsZU5hbWV9LmdlbmVyYXRlZC50c2A7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIHRoZSBUeXBlU2NyaXB0IGNsYXNzIGZpbGUgZHVyaW5nIFByb2plbiBzeW50aGVzaXNcbiAgICAgKlxuICAgICAqIENhbGxlZCBieSBQcm9qZW4gZHVyaW5nIHRoZSBzeW50aGVzaXMgcGhhc2UgdG8gZ2VuZXJhdGUgdGhlIHByb2plY3QgY2xhc3MgZmlsZS5cbiAgICAgKiBUaGUgZmlsZSBpcyBtYXJrZWQgYXMgcmVhZG9ubHkgdG8gcHJldmVudCBtYW51YWwgZWRpdGluZy5cbiAgICAgKi9cbiAgICBwcmVTeW50aGVzaXplKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5yZW5kZXJlci5yZW5kZXIodGhpcy5vcHRpb25zKTtcblxuICAgICAgICBuZXcgVHlwZVNjcmlwdENsYXNzRmlsZSh0aGlzLnByb2plY3QsIHRoaXMub3B0aW9ucy5maWxlUGF0aCwgY29udGVudCwge1xuICAgICAgICAgICAgcmVhZG9ubHk6IHRoaXMub3B0aW9ucy5yZWFkb25seSA/PyB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8qKlxuICogVGV4dCBmaWxlIGZvciBnZW5lcmF0ZWQgVHlwZVNjcmlwdCBjbGFzcyBjb2RlXG4gKlxuICogRXh0ZW5kcyBQcm9qZW4ncyBUZXh0RmlsZSB0byBhZGQgdGhlIGdlbmVyYXRlZCBmaWxlIG1hcmtlciBjb21tZW50XG4gKiBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLlxuICovXG5jbGFzcyBUeXBlU2NyaXB0Q2xhc3NGaWxlIGV4dGVuZHMgVGV4dEZpbGUge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwcm9qZWN0IC0gUHJvamVuIHByb2plY3QgaW5zdGFuY2VcbiAgICAgKiBAcGFyYW0gZmlsZVBhdGggLSBPdXRwdXQgZmlsZSBwYXRoXG4gICAgICogQHBhcmFtIGNvbnRlbnQgLSBUeXBlU2NyaXB0IGNsYXNzIGNvZGVcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIFNvdXJjZSBjb2RlIG9wdGlvbnMgKHJlYWRvbmx5LCBldGMuKVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIGZpbGVQYXRoOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZywgb3B0aW9uczogU291cmNlQ29kZU9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihwcm9qZWN0LCBmaWxlUGF0aCwgb3B0aW9ucyk7XG4gICAgICAgIC8qIEFkZCBnZW5lcmF0ZWQgZmlsZSBtYXJrZXIgdG8gcHJldmVudCBtYW51YWwgZWRpdGluZyAqL1xuICAgICAgICB0aGlzLmFkZExpbmUoYC8vICR7dGhpcy5tYXJrZXJ9YCk7XG4gICAgICAgIHRoaXMuYWRkTGluZShjb250ZW50KTtcbiAgICB9XG59XG4iXX0=
|
|
510
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvamVjdC1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esc0VBQW9FO0FBRXBFLG1DQUE2QztBQUM3QyxxQ0FBc0c7QUFHdEc7O0dBRUc7QUFDSCxNQUFNLGtCQUFrQixHQUFzQjtJQUMxQyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLEVBQUU7SUFDaEQ7UUFDSSxTQUFTLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUMsTUFBTTtRQUNoRCxlQUFlLEVBQUU7WUFDYixJQUFJLEVBQUUsZUFBZTtZQUNyQixJQUFJLEVBQUUsOENBQThDO1lBQ3BELElBQUksRUFBRSxzQkFBc0I7U0FDL0I7S0FDSjtDQUNKLENBQUM7QUFtSEY7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVU7SUFJWjs7T0FFRztJQUNILFlBQTZCLFNBQVMsR0FBRztRQUFaLFdBQU0sR0FBTixNQUFNLENBQU07UUFOakMsVUFBSyxHQUFhLEVBQUUsQ0FBQztRQUNyQixnQkFBVyxHQUFHLENBQUMsQ0FBQztJQUtvQixDQUFDO0lBRTdDOzs7O09BSUc7SUFDSCxLQUFLO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxJQUFhO1FBQ2QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMs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cnQgdHlwZSB7IFByb3BlcnR5IH0gZnJvbSBcIkBqc2lpL3NwZWNcIjtcbmltcG9ydCB7IFByb2plblN0cnVjdCwgU3RydWN0IH0gZnJvbSBcIkBtcmdyYWluL2pzaWktc3RydWN0LWJ1aWxkZXJcIjtcbmltcG9ydCB0eXBlIHsgUHJvamVjdCwgU291cmNlQ29kZU9wdGlvbnMsIHR5cGVzY3JpcHQgfSBmcm9tIFwicHJvamVuXCI7XG5pbXBvcnQgeyBDb21wb25lbnQsIFRleHRGaWxlIH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgSW52YWxpZEJhc2VDbGFzc0Zvcm1hdEVycm9yLCBJbnZhbGlkRmlsZVBhdGhFcnJvciwgSW52YWxpZEluZGVudExldmVsRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnNcIjtcbmltcG9ydCB0eXBlIHsgUHJvamVjdFR5cGUgfSBmcm9tIFwiLi9wcm9qZWN0LXR5cGVcIjtcblxuLyoqXG4gKiBEZWZhdWx0IGNvbXBvbmVudHMgYXBwbGllZCB0byBhbGwgZ2VuZXJhdGVkIHByb2plY3RzXG4gKi9cbmNvbnN0IERFRkFVTFRfQ09NUE9ORU5UUzogQ29tcG9uZW50Q29uZmlnW10gPSBbXG4gICAgeyBjb21wb25lbnQ6IHJlcXVpcmUoXCIuL2NvbXBvbmVudHMvbWlzZVwiKS5NaXNlIH0sXG4gICAge1xuICAgICAgICBjb21wb25lbnQ6IHJlcXVpcmUoXCIuL2NvbXBvbmVudHMvdml0ZXN0XCIpLlZpdGVzdCxcbiAgICAgICAgb3B0aW9uc1Byb3BlcnR5OiB7XG4gICAgICAgICAgICBuYW1lOiBcInZpdGVzdE9wdGlvbnNcIixcbiAgICAgICAgICAgIHR5cGU6IFwiQG5pa292aXJ0YWxhL3Byb2plbi1jb25zdHJ1Y3RzLlZpdGVzdE9wdGlvbnNcIixcbiAgICAgICAgICAgIGRvY3M6IFwiVml0ZXN0IGNvbmZpZ3VyYXRpb25cIixcbiAgICAgICAgfSxcbiAgICB9LFxuXTtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIGNvbXBvbmVudCB0byBiZSBpbnRlZ3JhdGVkIGludG8gYSBnZW5lcmF0ZWQgcHJvamVjdFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjb25maWc6IENvbXBvbmVudENvbmZpZyA9IHtcbiAqICAgY29tcG9uZW50OiBWaXRlc3QsXG4gKiAgIG9wdGlvbnNQcm9wZXJ0eTogXCJ2aXRlc3RPcHRpb25zXCJcbiAqIH07XG4gKiBgYGBcbiAqL1xuaW50ZXJmYWNlIENvbXBvbmVudENvbmZpZzxUIGV4dGVuZHMgQ29tcG9uZW50ID0gQ29tcG9uZW50PiB7XG4gICAgLyoqXG4gICAgICogQ29tcG9uZW50IGNsYXNzIGNvbnN0cnVjdG9yXG4gICAgICovXG4gICAgcmVhZG9ubHkgY29tcG9uZW50OiBuZXcgKFxuICAgICAgICBwcm9qZWN0OiBuZXZlcixcbiAgICAgICAgb3B0aW9ucz86IG5ldmVyLFxuICAgICkgPT4gVDtcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbnMgcHJvcGVydHkgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdlbmVyYXRlZCBvcHRpb25zIGludGVyZmFjZVxuICAgICAqXG4gICAgICogV2hlbiBzcGVjaWZpZWQsIGFkZHMgYW4gb3B0aW9ucyBwcm9wZXJ0eSB0byB0aGUgaW50ZXJmYWNlIGFsbG93aW5nXG4gICAgICogdXNlcnMgdG8gY29uZmlndXJlIHRoZSBjb21wb25lbnQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgb3B0aW9uc1Byb3BlcnR5Pzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogTmFtZSBvZiB0aGUgb3B0aW9ucyBwcm9wZXJ0eSAoZS5nLiwgXCJ2aXRlc3RPcHRpb25zXCIpXG4gICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGdWxseSBxdWFsaWZpZWQgdHlwZSBuYW1lIChlLmcuLCBcIkBuaWtvdmlydGFsYS9wcm9qZW4tY29uc3RydWN0cy5WaXRlc3RPcHRpb25zXCIpXG4gICAgICAgICAqL1xuICAgICAgICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEb2N1bWVudGF0aW9uIHN1bW1hcnlcbiAgICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGRvY3M/OiBzdHJpbmc7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBQcm9qZWN0R2VuZXJhdG9yIGNvbXBvbmVudFxuICpcbiAqIENvbmZpZ3VyZXMgdGhlIGdlbmVyYXRpb24gb2YgYSBUeXBlU2NyaXB0IHByb2plY3QgY2xhc3MgdGhhdCBleHRlbmRzIGEgUHJvamVuIGJhc2UgY2xhc3NcbiAqIHdpdGggc3RhbmRhcmQgY29uZmlndXJhdGlvbiBhbmQgY29tcG9uZW50IGludGVncmF0aW9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBuZXcgUHJvamVjdEdlbmVyYXRvcihwcm9qZWN0LCB7XG4gKiAgIG5hbWU6IFwiVHlwZVNjcmlwdFByb2plY3RcIixcbiAqICAgYmFzZUNsYXNzOiBcInR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3RcIixcbiAqICAgZmlsZVBhdGg6IFwic3JjL3Byb2plY3RzL3R5cGVzY3JpcHQuZ2VuZXJhdGVkLnRzXCIsXG4gKiAgIGNvbXBvbmVudHM6IFt7IGNvbXBvbmVudDogVml0ZXN0LCBvcHRpb25zUHJvcGVydHk6IFwidml0ZXN0T3B0aW9uc1wiIH1dXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3RHZW5lcmF0b3JPcHRpb25zIGV4dGVuZHMgU291cmNlQ29kZU9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGdlbmVyYXRlZCBjbGFzcyAoZS5nLiwgXCJUeXBlU2NyaXB0UHJvamVjdFwiKVxuICAgICAqXG4gICAgICogVGhlIG9wdGlvbnMgaW50ZXJmYWNlIHdpbGwgYmUgbmFtZWQgYCR7bmFtZX1PcHRpb25zYC5cbiAgICAgKi9cbiAgICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBQcm9qZWN0IHR5cGUgaWRlbnRpZmllclxuICAgICAqXG4gICAgICogU3BlY2lmaWVzIHdoaWNoIFByb2plbiBiYXNlIGNsYXNzIHRvIGV4dGVuZCBhbmQgd2hpY2ggZGVmYXVsdCBjb25maWd1cmF0aW9uIHRvIGFwcGx5LlxuICAgICAqXG4gICAgICogQGV4YW1wbGUgUHJvamVjdFR5cGUuVFlQRVNDUklQVFxuICAgICAqIEBleGFtcGxlIFByb2plY3RUeXBlLkpTSUlcbiAgICAgKi9cbiAgICByZWFkb25seSBwcm9qZWN0VHlwZTogUHJvamVjdFR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBPdXRwdXQgZmlsZSBwYXRoIGZvciB0aGUgZ2VuZXJhdGVkIGNsYXNzXG4gICAgICpcbiAgICAgKiBNdXN0IGNvbnRhaW4gYSBkaXJlY3Rvcnkgc2VwYXJhdG9yLiBUaGUgb3B0aW9ucyBpbnRlcmZhY2Ugd2lsbCBiZSBnZW5lcmF0ZWRcbiAgICAgKiBpbiB0aGUgc2FtZSBkaXJlY3Rvcnkgd2l0aCBhIFwiLmdlbmVyYXRlZC50c1wiIHN1ZmZpeC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlIFwic3JjL3Byb2plY3RzL3R5cGVzY3JpcHQuZ2VuZXJhdGVkLnRzXCJcbiAgICAgKi9cbiAgICByZWFkb25seSBmaWxlUGF0aDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQ29tcG9uZW50cyB0byBpbnRlZ3JhdGUgaW50byB0aGUgcHJvamVjdFxuICAgICAqXG4gICAgICogRWFjaCBjb21wb25lbnQgd2lsbCBiZSBpbnN0YW50aWF0ZWQgZHVyaW5nIHByb2plY3QgY29uc3RydWN0aW9uIGFuZCBjYW4gYmVcbiAgICAgKiBjb25maWd1cmVkIHZpYSBhbiBvcHRpb25hbCBvcHRpb25zIHByb3BlcnR5IGluIHRoZSBnZW5lcmF0ZWQgaW50ZXJmYWNlLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgW3sgY29tcG9uZW50OiBNaXNlIH0sIHsgY29tcG9uZW50OiBWaXRlc3QsIG9wdGlvbnNQcm9wZXJ0eTogeyBuYW1lOiBcInZpdGVzdE9wdGlvbnNcIiwgdHlwZTogXCIuLi5cIiwgZG9jczogXCIuLi5cIiB9IH1dXG4gICAgICovXG4gICAgcmVhZG9ubHkgY29tcG9uZW50cz86IENvbXBvbmVudENvbmZpZ1tdO1xuXG4gICAgLyoqXG4gICAgICogQWRkaXRpb25hbCBwcm9wZXJ0aWVzIHRvIGFkZCB0byB0aGUgZ2VuZXJhdGVkIG9wdGlvbnMgaW50ZXJmYWNlXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyB0byBleHRlbmQgdGhlIGJhc2Ugb3B0aW9ucyB3aXRoIGN1c3RvbSBwcm9wZXJ0aWVzIHNwZWNpZmljIHRvXG4gICAgICogeW91ciBwcm9qZWN0IHR5cGUuXG4gICAgICovXG4gICAgcmVhZG9ubHkgYWRkaXRpb25hbE9wdGlvbnM/OiBQcm9wZXJ0eVtdO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgbmFtZXMgdG8gb21pdCBmcm9tIHRoZSBiYXNlIG9wdGlvbnMgaW50ZXJmYWNlXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyB0byBoaWRlIGJhc2UgY2xhc3Mgb3B0aW9ucyB0aGF0IHNob3VsZCBub3QgYmUgY29uZmlndXJhYmxlXG4gICAgICogaW4gdGhlIGdlbmVyYXRlZCBwcm9qZWN0IHR5cGUuXG4gICAgICovXG4gICAgcmVhZG9ubHkgb21pdE9wdGlvbnM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBCdWZmZXIgZm9yIGJ1aWxkaW5nIGluZGVudGVkIGNvZGUgd2l0aCBhdXRvbWF0aWMgbGluZSBtYW5hZ2VtZW50XG4gKlxuICogTWFpbnRhaW5zIGluZGVudGF0aW9uIGxldmVsIGFuZCBwcm92aWRlcyBtZXRob2RzIGZvciBhZGRpbmcgbGluZXMsXG4gKiBvcGVuaW5nL2Nsb3NpbmcgYmxvY2tzLCBhbmQgZmx1c2hpbmcgYWNjdW11bGF0ZWQgY29udGVudC5cbiAqL1xuY2xhc3MgQ29kZUJ1ZmZlciB7XG4gICAgcHJpdmF0ZSBsaW5lczogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIGluZGVudExldmVsID0gMDtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBpbmRlbnQgLSBTdHJpbmcgdG8gdXNlIGZvciBlYWNoIGluZGVudGF0aW9uIGxldmVsIChkZWZhdWx0OiBzaW5nbGUgc3BhY2UpXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBpbmRlbnQgPSBcIiBcIikge31cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYWxsIGFjY3VtdWxhdGVkIGxpbmVzIGFuZCByZXNldHMgdGhlIGJ1ZmZlclxuICAgICAqXG4gICAgICogQHJldHVybnMgQXJyYXkgb2YgY29kZSBsaW5lcyB3aXRoIHByb3BlciBpbmRlbnRhdGlvblxuICAgICAqL1xuICAgIGZsdXNoKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMubGluZXM7XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIGxpbmUgb2YgY29kZSBhdCB0aGUgY3VycmVudCBpbmRlbnRhdGlvbiBsZXZlbFxuICAgICAqXG4gICAgICogQHBhcmFtIGNvZGUgLSBDb2RlIHRvIGFkZCAob3B0aW9uYWwsIGFkZHMgYmxhbmsgbGluZSBpZiBvbWl0dGVkKVxuICAgICAqL1xuICAgIGxpbmUoY29kZT86IHN0cmluZykge1xuICAgICAgICBjb25zdCBwcmVmaXggPSB0aGlzLmluZGVudC5yZXBlYXQodGhpcy5pbmRlbnRMZXZlbCk7XG4gICAgICAgIHRoaXMubGluZXMucHVzaCgocHJlZml4ICsgKGNvZGUgPz8gXCJcIikpLnRyaW1FbmQoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgYSBuZXcgaW5kZW50YXRpb24gYmxvY2tcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb2RlIC0gT3B0aW9uYWwgY29kZSB0byBhZGQgYmVmb3JlIGluY3JlYXNpbmcgaW5kZW50IChlLmcuLCBvcGVuaW5nIGJyYWNlKVxuICAgICAqL1xuICAgIG9wZW4oY29kZT86IHN0cmluZykge1xuICAgICAgICBpZiAoY29kZSkge1xuICAgICAgICAgICAgdGhpcy5saW5lKGNvZGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5kZW50TGV2ZWwrKztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIGN1cnJlbnQgaW5kZW50YXRpb24gYmxvY2tcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb2RlIC0gT3B0aW9uYWwgY29kZSB0byBhZGQgYWZ0ZXIgZGVjcmVhc2luZyBpbmRlbnQgKGUuZy4sIGNsb3NpbmcgYnJhY2UpXG4gICAgICogQHRocm93cyB7SW52YWxpZEluZGVudExldmVsRXJyb3J9IFdoZW4gYXR0ZW1wdGluZyB0byBkZWNyZWFzZSBpbmRlbnQgYmVsb3cgemVyb1xuICAgICAqL1xuICAgIGNsb3NlKGNvZGU/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5kZW50TGV2ZWwgPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkSW5kZW50TGV2ZWxFcnJvcigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5kZW50TGV2ZWwtLTtcbiAgICAgICAgaWYgKGNvZGUpIHtcbiAgICAgICAgICAgIHRoaXMubGluZShjb2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc2V0cyB0aGUgYnVmZmVyIHRvIGluaXRpYWwgc3RhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlc2V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxpbmVzID0gW107XG4gICAgICAgIHRoaXMuaW5kZW50TGV2ZWwgPSAwO1xuICAgIH1cbn1cblxuLyoqXG4gKiBSZW5kZXJzIFR5cGVTY3JpcHQgY2xhc3MgY29kZSBmcm9tIFByb2plY3RHZW5lcmF0b3Igb3B0aW9uc1xuICpcbiAqIEdlbmVyYXRlcyBhIGNvbXBsZXRlIFR5cGVTY3JpcHQgY2xhc3MgZmlsZSBpbmNsdWRpbmcgaW1wb3J0cywgb3B0aW9ucyBpbnRlcmZhY2UgZXhwb3J0LFxuICogY2xhc3MgZGVjbGFyYXRpb24sIGFuZCBjb25zdHJ1Y3RvciB3aXRoIGNvbXBvbmVudCBpbnRlZ3JhdGlvbi5cbiAqL1xuY2xhc3MgVHlwZVNjcmlwdENsYXNzUmVuZGVyZXIge1xuICAgIHByaXZhdGUgYnVmZmVyOiBDb2RlQnVmZmVyO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGluZGVudCAtIE51bWJlciBvZiBzcGFjZXMgcGVyIGluZGVudGF0aW9uIGxldmVsIChkZWZhdWx0OiA0KVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGluZGVudCA9IDQpIHtcbiAgICAgICAgdGhpcy5idWZmZXIgPSBuZXcgQ29kZUJ1ZmZlcihcIiBcIi5yZXBlYXQoaW5kZW50KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVuZGVycyBjb21wbGV0ZSBUeXBlU2NyaXB0IGNsYXNzIGNvZGUgZnJvbSBvcHRpb25zXG4gICAgICpcbiAgICAgKiBPcmNoZXN0cmF0ZXMgdGhlIHJlbmRlcmluZyBwcm9jZXNzOiBkZXJpdmVzIG5hbWVzLCBleHRyYWN0cyBjb21wb25lbnQgY29uZmlndXJhdGlvbixcbiAgICAgKiBidWlsZHMgaW1wb3J0IHN0YXRlbWVudHMsIGFuZCByZW5kZXJzIHRoZSBjbGFzcyBzdHJ1Y3R1cmUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIEdlbmVyYXRvciBjb25maWd1cmF0aW9uXG4gICAgICogQHJldHVybnMgQ29tcGxldGUgVHlwZVNjcmlwdCBjbGFzcyBjb2RlIGFzIGEgc3RyaW5nXG4gICAgICovXG4gICAgcmVuZGVyKG9wdGlvbnM6IFByb2plY3RHZW5lcmF0b3JPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgdGhpcy5idWZmZXIuZmx1c2goKTtcblxuICAgICAgICAvKiBEZXJpdmUgaW50ZXJmYWNlIGFuZCB0eXBlIG5hbWVzIGZyb20gdGhlIGNsYXNzIG5hbWUgKi9cbiAgICAgICAgY29uc3Qgb3B0aW9uc0ludGVyZmFjZSA9IGAke29wdGlvbnMubmFtZX1PcHRpb25zYDtcbiAgICAgICAgY29uc3QgYmFzZU9wdGlvbnNGcW4gPSB0aGlzLmdldEJhc2VPcHRpb25zRnFuKG9wdGlvbnMucHJvamVjdFR5cGUpO1xuICAgICAgICBjb25zdCBiYXNlT3B0aW9uc1R5cGUgPSBiYXNlT3B0aW9uc0Zxbi5yZXBsYWNlKC9ecHJvamVuXFwuLywgXCJcIik7XG5cbiAgICAgICAgLyogVXNlIHByb3ZpZGVkIGNvbXBvbmVudHMgb3IgZmFsbCBiYWNrIHRvIGRlZmF1bHRzIChNaXNlICsgVml0ZXN0KSAqL1xuICAgICAgICBjb25zdCBjb21wb25lbnRzID0gb3B0aW9ucy5jb21wb25lbnRzID8/IERFRkFVTFRfQ09NUE9ORU5UUztcblxuICAgICAgICAvKiBFeHRyYWN0IGNvbXBvbmVudCBjb25maWd1cmF0aW9uIGZvciBjb25zdHJ1Y3RvciBnZW5lcmF0aW9uICovXG4gICAgICAgIGNvbnN0IHsgZGVzdHJ1Y3R1cmUsIGNvbXBvbmVudEFycmF5IH0gPSB0aGlzLmV4dHJhY3RDb21wb25lbnRPcHRpb25zKGNvbXBvbmVudHMpO1xuICAgICAgICBjb25zdCBpbXBvcnRzID0gdGhpcy5leHRyYWN0SW1wb3J0cyhvcHRpb25zLCBvcHRpb25zSW50ZXJmYWNlKTtcblxuICAgICAgICAvKiBSZW5kZXIgYWxsIHNlY3Rpb25zIG9mIHRoZSBjbGFzcyBmaWxlICovXG4gICAgICAgIHRoaXMucmVuZGVySW1wb3J0cyhpbXBvcnRzKTtcbiAgICAgICAgdGhpcy5idWZmZXIubGluZSgpO1xuICAgICAgICB0aGlzLnJlbmRlckV4cG9ydChvcHRpb25zSW50ZXJmYWNlKTtcbiAgICAgICAgdGhpcy5idWZmZXIubGluZSgpO1xuICAgICAgICB0aGlzLnJlbmRlckNsYXNzKG9wdGlvbnMsIG9wdGlvbnNJbnRlcmZhY2UsIGJhc2VPcHRpb25zVHlwZSwgZGVzdHJ1Y3R1cmUsIGNvbXBvbmVudEFycmF5KTtcbiAgICAgICAgdGhpcy5idWZmZXIubGluZSgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci5mbHVzaCgpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVyaXZlcyB0aGUgZnVsbHkgcXVhbGlmaWVkIG9wdGlvbnMgaW50ZXJmYWNlIG5hbWUgZnJvbSBwcm9qZWN0IHR5cGVcbiAgICAgKlxuICAgICAqIFRyYW5zZm9ybXMgcHJvamVjdCB0eXBlIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgUHJvamVuIG9wdGlvbnMgaW50ZXJmYWNlIG5hbWVcbiAgICAgKiBieSBhcHBlbmRpbmcgXCJPcHRpb25zXCIgc3VmZml4IGFuZCBwcmVmaXhpbmcgd2l0aCBcInByb2plbi5cIiBuYW1lc3BhY2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvamVjdFR5cGUgLSBQcm9qZWN0IHR5cGUgaWRlbnRpZmllclxuICAgICAqIEByZXR1cm5zIEZ1bGx5IHF1YWxpZmllZCBvcHRpb25zIGludGVyZmFjZSBuYW1lXG4gICAgICogQHRocm93cyB7SW52YWxpZEJhc2VDbGFzc0Zvcm1hdEVycm9yfSBXaGVuIHByb2plY3RUeXBlIGZvcm1hdCBpcyBpbnZhbGlkXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGdldEJhc2VPcHRpb25zRnFuKFByb2plY3RUeXBlLlRZUEVTQ1JJUFQpIC8vIFwicHJvamVuLnR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3RPcHRpb25zXCJcbiAgICAgKiBnZXRCYXNlT3B0aW9uc0ZxbihQcm9qZWN0VHlwZS5KU0lJKSAvLyBcInByb2plbi5jZGsuSnNpaVByb2plY3RPcHRpb25zXCJcbiAgICAgKi9cbiAgICBnZXRCYXNlT3B0aW9uc0Zxbihwcm9qZWN0VHlwZTogUHJvamVjdFR5cGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBiYXNlQ2xhc3MgPSBwcm9qZWN0VHlwZS52YWx1ZU9mKCk7XG4gICAgICAgIC8qIFZhbGlkYXRlIGJhc2UgY2xhc3MgZm9ybWF0OiBtdXN0IGNvbnRhaW4gbW9kdWxlLkNsYXNzTmFtZSBzdHJ1Y3R1cmUgKi9cbiAgICAgICAgaWYgKCFiYXNlQ2xhc3MuaW5jbHVkZXMoXCIuXCIpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEJhc2VDbGFzc0Zvcm1hdEVycm9yKGJhc2VDbGFzcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYHByb2plbi4ke2Jhc2VDbGFzc31PcHRpb25zYDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyBjb21wb25lbnQgY29uZmlndXJhdGlvbiBmb3IgY29uc3RydWN0b3IgY29kZSBnZW5lcmF0aW9uXG4gICAgICpcbiAgICAgKiBUcmFuc2Zvcm1zIGNvbXBvbmVudCBjb25maWd1cmF0aW9ucyBpbnRvOlxuICAgICAqIDEuIERlc3RydWN0dXJlIGxpc3Q6IHZhcmlhYmxlIG5hbWVzIHRvIGV4dHJhY3QgZnJvbSBvcHRpb25zXG4gICAgICogMi4gQ29tcG9uZW50IGFycmF5OiBjb2RlIHN0cmluZyBmb3IgYXBwbHlEZWZhdWx0cygpIGNhbGxcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb21wb25lbnRzIC0gQ29tcG9uZW50IGNvbmZpZ3VyYXRpb25zXG4gICAgICogQHJldHVybnMgT2JqZWN0IHdpdGggZGVzdHJ1Y3R1cmUgYXJyYXkgYW5kIGNvbXBvbmVudEFycmF5IGNvZGUgc3RyaW5nXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIElucHV0OiBbeyBjb21wb25lbnQ6IFZpdGVzdCwgb3B0aW9uc1Byb3BlcnR5OiB7IG5hbWU6IFwidml0ZXN0T3B0aW9uc1wiLCAuLi4gfSB9XVxuICAgICAqIE91dHB1dDoge1xuICAgICAqICAgZGVzdHJ1Y3R1cmU6IFtcInZpdGVzdFwiLCBcInZpdGVzdE9wdGlvbnNcIl0sXG4gICAgICogICBjb21wb25lbnRBcnJheTogXCJbeyBjb21wb25lbnQ6IFZpdGVzdCwgZW5hYmxlZDogdml0ZXN0LCBvcHRpb25zOiB2aXRlc3RPcHRpb25zIH1dXCJcbiAgICAgKiB9XG4gICAgICovXG4gICAgcHJpdmF0ZSBleHRyYWN0Q29tcG9uZW50T3B0aW9ucyhjb21wb25lbnRzOiBDb21wb25lbnRDb25maWdbXSk6IHsgZGVzdHJ1Y3R1cmU6IHN0cmluZ1tdOyBjb21wb25lbnRBcnJheTogc3RyaW5nIH0ge1xuICAgICAgICBjb25zdCBkZXN0cnVjdHVyZTogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50UGFydHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBjIG9mIGNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgIC8qIENvbnZlcnQgY29tcG9uZW50IGNsYXNzIG5hbWUgdG8gY2FtZWxDYXNlIHZhcmlhYmxlIG5hbWUgKGUuZy4sIFZpdGVzdCAtPiB2aXRlc3QpICovXG4gICAgICAgICAgICBjb25zdCBuYW1lID0gYy5jb21wb25lbnQubmFtZS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIGMuY29tcG9uZW50Lm5hbWUuc2xpY2UoMSk7XG4gICAgICAgICAgICBkZXN0cnVjdHVyZS5wdXNoKG5hbWUpO1xuXG4gICAgICAgICAgICAvKiBCdWlsZCBjb21wb25lbnQgY29uZmlnIG9iamVjdCBmb3IgYXBwbHlEZWZhdWx0cygpIGNhbGwgKi9cbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gW2Bjb21wb25lbnQ6ICR7Yy5jb21wb25lbnQubmFtZX1gXTtcbiAgICAgICAgICAgIGlmIChjLm9wdGlvbnNQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIC8qIENvbXBvbmVudCBoYXMgY29uZmlndXJhYmxlIG9wdGlvbnMgLSBpbmNsdWRlIGJvdGggZW5hYmxlZCBmbGFnIGFuZCBvcHRpb25zICovXG4gICAgICAgICAgICAgICAgZGVzdHJ1Y3R1cmUucHVzaChjLm9wdGlvbnNQcm9wZXJ0eS5uYW1lKTtcbiAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKGBlbmFibGVkOiAke25hbWV9YCwgYG9wdGlvbnM6ICR7Yy5vcHRpb25zUHJvcGVydHkubmFtZX1gKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLyogQ29tcG9uZW50IGhhcyBubyBvcHRpb25zIC0gb25seSBpbmNsdWRlIGVuYWJsZWQgZmxhZyAqL1xuICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goYGVuYWJsZWQ6ICR7bmFtZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbXBvbmVudFBhcnRzLnB1c2goYHsgJHtwYXJ0cy5qb2luKFwiLCBcIil9IH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGRlc3RydWN0dXJlLCBjb21wb25lbnRBcnJheTogYFske2NvbXBvbmVudFBhcnRzLmpvaW4oXCIsIFwiKX1dYCB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJ1aWxkcyBpbXBvcnQgc3RhdGVtZW50cyBtYXAgZm9yIHRoZSBnZW5lcmF0ZWQgY2xhc3NcbiAgICAgKlxuICAgICAqIENvbGxlY3RzIGFsbCByZXF1aXJlZCBpbXBvcnRzOlxuICAgICAqIC0gUHJvamVuIGJhc2UgbW9kdWxlICh0eXBlc2NyaXB0LCBjZGssIGF3c2NkaylcbiAgICAgKiAtIENvbmZpZyB1dGlsaXRpZXMgKGFwcGx5RGVmYXVsdHMsIGRlZmF1bHRPcHRpb25zKVxuICAgICAqIC0gQ29tcG9uZW50IGNsYXNzZXNcbiAgICAgKiAtIFV0aWxpdHkgZnVuY3Rpb25zIChkZWVwTWVyZ2UpXG4gICAgICogLSBHZW5lcmF0ZWQgb3B0aW9ucyBpbnRlcmZhY2UgKHR5cGUtb25seSBpbXBvcnQpXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIEdlbmVyYXRvciBjb25maWd1cmF0aW9uXG4gICAgICogQHBhcmFtIG9wdGlvbnNJbnRlcmZhY2UgLSBOYW1lIG9mIHRoZSBnZW5lcmF0ZWQgb3B0aW9ucyBpbnRlcmZhY2VcbiAgICAgKiBAcmV0dXJucyBNYXAgb2YgbW9kdWxlIHBhdGhzIHRvIHNldHMgb2YgaW1wb3J0ZWQgbmFtZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIGV4dHJhY3RJbXBvcnRzKG9wdGlvbnM6IFByb2plY3RHZW5lcmF0b3JPcHRpb25zLCBvcHRpb25zSW50ZXJmYWNlOiBzdHJpbmcpOiBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4ge1xuICAgICAgICBjb25zdCBpbXBvcnRzID0gbmV3IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+PigpO1xuXG4gICAgICAgIC8qIEV4dHJhY3QgYmFzZSBtb2R1bGUgbmFtZSBmcm9tIHByb2plY3RUeXBlIChlLmcuLCBcInR5cGVzY3JpcHRcIiBmcm9tIFwidHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdFwiKSAqL1xuICAgICAgICBjb25zdCBiYXNlTW9kdWxlID0gb3B0aW9ucy5wcm9qZWN0VHlwZS52YWx1ZU9mKCkuc3BsaXQoXCIuXCIpWzBdO1xuICAgICAgICBjb25zdCBvcHRpb25zRmlsZU5hbWUgPSB0aGlzLmdldE9wdGlvbnNGaWxlTmFtZShvcHRpb25zSW50ZXJmYWNlKTtcblxuICAgICAgICAvKiBQcm9qZW4gYmFzZSBtb2R1bGUgaW1wb3J0ICovXG4gICAgICAgIGltcG9ydHMuc2V0KFwicHJvamVuXCIsIG5ldyBTZXQoW2Jhc2VNb2R1bGVdKSk7XG5cbiAgICAgICAgLyogQ29uZmlndXJhdGlvbiB1dGlsaXRpZXMgaW1wb3J0ICovXG4gICAgICAgIGltcG9ydHMuc2V0KFwiLi4vY29uZmlnXCIsIG5ldyBTZXQoW1wiYXBwbHlEZWZhdWx0c1wiLCBcImRlZmF1bHRPcHRpb25zXCJdKSk7XG5cbiAgICAgICAgLyogQ29tcG9uZW50IGNsYXNzIGltcG9ydHMgLSBkZXJpdmUgbW9kdWxlIHBhdGggZnJvbSBjb21wb25lbnQgY2xhc3MgbmFtZSAqL1xuICAgICAgICBjb25zdCBjb21wb25lbnRzID0gb3B0aW9ucy5jb21wb25lbnRzID8/IERFRkFVTFRfQ09NUE9ORU5UUztcbiAgICAgICAgZm9yIChjb25zdCBjIG9mIGNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudE5hbWUgPSBjLmNvbXBvbmVudC5uYW1lO1xuICAgICAgICAgICAgY29uc3QgbW9kdWxlUGF0aCA9IGAuLi9jb21wb25lbnRzLyR7Y29tcG9uZW50TmFtZS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgICAgICAgICBpZiAoIWltcG9ydHMuaGFzKG1vZHVsZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgaW1wb3J0cy5zZXQobW9kdWxlUGF0aCwgbmV3IFNldCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZUltcG9ydHMgPSBpbXBvcnRzLmdldChtb2R1bGVQYXRoKTtcbiAgICAgICAgICAgIGlmIChtb2R1bGVJbXBvcnRzKSB7XG4gICAgICAgICAgICAgICAgbW9kdWxlSW1wb3J0cy5hZGQoY29tcG9uZW50TmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKiBVdGlsaXR5IGZ1bmN0aW9ucyBpbXBvcnQgKi9cbiAgICAgICAgaW1wb3J0cy5zZXQoXCIuLi91dGlsc1wiLCBuZXcgU2V0KFtcImRlZXBNZXJnZVwiXSkpO1xuXG4gICAgICAgIC8qIEdlbmVyYXRlZCBvcHRpb25zIGludGVyZmFjZSBpbXBvcnQgKHR5cGUtb25seSB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXMpICovXG4gICAgICAgIGltcG9ydHMuc2V0KGAuLyR7b3B0aW9uc0ZpbGVOYW1lfS5nZW5lcmF0ZWRgLCBuZXcgU2V0KFtvcHRpb25zSW50ZXJmYWNlXSkpO1xuXG4gICAgICAgIHJldHVybiBpbXBvcnRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlcml2ZXMgdGhlIGNvbmZpZyBwYXRoIGZvciBhY2Nlc3NpbmcgZGVmYXVsdCBvcHRpb25zXG4gICAgICpcbiAgICAgKiBUcmFuc2Zvcm1zIHByb2plY3QgdHlwZSBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIHBhdGggaW4gdGhlIGRlZmF1bHRPcHRpb25zXG4gICAgICogY29uZmlndXJhdGlvbiBvYmplY3QgZXhwb3J0ZWQgZnJvbSBjb25maWcudHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvamVjdFR5cGUgLSBQcm9qZWN0IHR5cGUgaWRlbnRpZmllclxuICAgICAqIEByZXR1cm5zIENvbmZpZyBwYXRoIGZvciBhY2Nlc3NpbmcgZGVmYXVsdCBvcHRpb25zXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGdldENvbmZpZ1BhdGgoUHJvamVjdFR5cGUuVFlQRVNDUklQVCkgLy8gXCJkZWZhdWx0T3B0aW9ucy50eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0XCJcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldENvbmZpZ1BhdGgocHJvamVjdFR5cGU6IFByb2plY3RUeXBlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGBkZWZhdWx0T3B0aW9ucy4ke3Byb2plY3RUeXBlLnZhbHVlT2YoKX1gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbmRlcnMgaW1wb3J0IHN0YXRlbWVudHMgaW4gc29ydGVkIG9yZGVyXG4gICAgICpcbiAgICAgKiBTb3J0cyBpbXBvcnRzIHdpdGggZXh0ZXJuYWwgcGFja2FnZXMgZmlyc3QsIHRoZW4gcmVsYXRpdmUgaW1wb3J0cy5cbiAgICAgKiBVc2VzIHR5cGUtb25seSBpbXBvcnRzIGZvciBnZW5lcmF0ZWQgZmlsZXMgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLlxuICAgICAqXG4gICAgICogQHBhcmFtIGltcG9ydHMgLSBNYXAgb2YgbW9kdWxlIHBhdGhzIHRvIGltcG9ydGVkIG5hbWVzXG4gICAgICovXG4gICAgcHJpdmF0ZSByZW5kZXJJbXBvcnRzKGltcG9ydHM6IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+Pikge1xuICAgICAgICAvKiBTb3J0IG1vZHVsZXM6IGV4dGVybmFsIHBhY2thZ2VzIGZpcnN0LCB0aGVuIHJlbGF0aXZlIGltcG9ydHMgYWxwaGFiZXRpY2FsbHkgKi9cbiAgICAgICAgY29uc3Qgc29ydGVkTW9kdWxlcyA9IEFycmF5LmZyb20oaW1wb3J0cy5rZXlzKCkpLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFJc1JlbGF0aXZlID0gYS5zdGFydHNXaXRoKFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJJc1JlbGF0aXZlID0gYi5zdGFydHNXaXRoKFwiLlwiKTtcbiAgICAgICAgICAgIGlmIChhSXNSZWxhdGl2ZSAhPT0gYklzUmVsYXRpdmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYUlzUmVsYXRpdmUgPyAxIDogLTE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYS5sb2NhbGVDb21wYXJlKGIpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmb3IgKGNvbnN0IG1vZCBvZiBzb3J0ZWRNb2R1bGVzKSB7XG4gICAgICAgICAgICBjb25zdCBuYW1lcyA9IEFycmF5LmZyb20oaW1wb3J0cy5nZXQobW9kKSB8fCBbXSkuc29ydCgpO1xuICAgICAgICAgICAgLyogVXNlIHR5cGUtb25seSBpbXBvcnQgZm9yIGdlbmVyYXRlZCBmaWxlcyB0byBwcmV2ZW50IGNpcmN1bGFyIGRlcGVuZGVuY2llcyAqL1xuICAgICAgICAgICAgY29uc3QgaXNUeXBlT25seSA9IG1vZC5pbmNsdWRlcyhcIi5nZW5lcmF0ZWRcIik7XG4gICAgICAgICAgICBjb25zdCBpbXBvcnRTdG10ID0gaXNUeXBlT25seSA/IFwiaW1wb3J0IHR5cGVcIiA6IFwiaW1wb3J0XCI7XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlci5saW5lKGAke2ltcG9ydFN0bXR9IHsgJHtuYW1lcy5qb2luKFwiLCBcIil9IH0gZnJvbSBcIiR7bW9kfVwiO2ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVuZGVycyByZS1leHBvcnQgc3RhdGVtZW50IGZvciB0aGUgZ2VuZXJhdGVkIG9wdGlvbnMgaW50ZXJmYWNlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9uc0ludGVyZmFjZSAtIE5hbWUgb2YgdGhlIG9wdGlvbnMgaW50ZXJmYWNlIHRvIGV4cG9ydFxuICAgICAqL1xuICAgIHByaXZhdGUgcmVuZGVyRXhwb3J0KG9wdGlvbnNJbnRlcmZhY2U6IHN0cmluZykge1xuICAgICAgICBjb25zdCBvcHRpb25zRmlsZU5hbWUgPSB0aGlzLmdldE9wdGlvbnNGaWxlTmFtZShvcHRpb25zSW50ZXJmYWNlKTtcbiAgICAgICAgdGhpcy5idWZmZXIubGluZSgpO1xuICAgICAgICB0aGlzLmJ1ZmZlci5saW5lKGBleHBvcnQgeyAke29wdGlvbnNJbnRlcmZhY2V9IH0gZnJvbSBcIi4vJHtvcHRpb25zRmlsZU5hbWV9LmdlbmVyYXRlZFwiO2ApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbmRlcnMgdGhlIGNsYXNzIGRlY2xhcmF0aW9uIGFuZCBjb25zdHJ1Y3RvclxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBHZW5lcmF0b3IgY29uZmlndXJhdGlvblxuICAgICAqIEBwYXJhbSBvcHRpb25zSW50ZXJmYWNlIC0gTmFtZSBvZiB0aGUgb3B0aW9ucyBpbnRlcmZhY2VcbiAgICAgKiBAcGFyYW0gYmFzZU9wdGlvbnNUeXBlIC0gQmFzZSBvcHRpb25zIHR5cGUgd2l0aG91dCBcInByb2plbi5cIiBwcmVmaXhcbiAgICAgKiBAcGFyYW0gZGVzdHJ1Y3R1cmUgLSBWYXJpYWJsZSBuYW1lcyB0byBkZXN0cnVjdHVyZSBmcm9tIG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gY29tcG9uZW50QXJyYXkgLSBDb2RlIHN0cmluZyBmb3IgY29tcG9uZW50IGFycmF5XG4gICAgICovXG4gICAgcHJpdmF0ZSByZW5kZXJDbGFzcyhcbiAgICAgICAgb3B0aW9uczogUHJvamVjdEdlbmVyYXRvck9wdGlvbnMsXG4gICAgICAgIG9wdGlvbnNJbnRlcmZhY2U6IHN0cmluZyxcbiAgICAgICAgYmFzZU9wdGlvbnNUeXBlOiBzdHJpbmcsXG4gICAgICAgIGRlc3RydWN0dXJlOiBzdHJpbmdbXSxcbiAgICAgICAgY29tcG9uZW50QXJyYXk6IHN0cmluZyxcbiAgICApIHtcbiAgICAgICAgdGhpcy5idWZmZXIubGluZSgpO1xuICAgICAgICB0aGlzLmJ1ZmZlci5saW5lKFwiLyoqXCIpO1xuICAgICAgICB0aGlzLmJ1ZmZlci5saW5lKGAgKiAke29wdGlvbnMubmFtZX0gd2l0aCBzdGFuZGFyZCBjb25maWd1cmF0aW9uIGFuZCBjb21wb25lbnQgaW50ZWdyYXRpb25gKTtcbiAgICAgICAgdGhpcy5idWZmZXIubGluZShcIiAqXCIpO1xuICAgICAgICB0aGlzLmJ1ZmZlci5saW5lKFwiICogRXh0ZW5kcyBQcm9qZW4ncyBiYXNlIGNsYXNzIHdpdGggb3BpbmlvbmF0ZWQgZGVmYXVsdHMgYW5kIGF1dG9tYXRpYyBjb21wb25lbnQgc2V0dXAuXCIpO1xuICAgICAgICB0aGlzLmJ1ZmZlci5saW5lKFwiICovXCIpO1xuICAgICAgICB0aGlzLmJ1ZmZlci5vcGVuKGBleHBvcnQgY2xhc3MgJHtvcHRpb25zLm5hbWV9IGV4dGVuZHMgJHtvcHRpb25zLnByb2plY3RUeXBlLnZhbHVlT2YoKX0ge2ApO1xuICAgICAgICB0aGlzLnJlbmRlckNvbnN0cnVjdG9yKG9wdGlvbnMsIG9wdGlvbnNJbnRlcmZhY2UsIGJhc2VPcHRpb25zVHlwZSwgZGVzdHJ1Y3R1cmUsIGNvbXBvbmVudEFycmF5KTtcbiAgICAgICAgdGhpcy5idWZmZXIuY2xvc2UoXCJ9XCIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbmRlcnMgdGhlIGNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9uXG4gICAgICpcbiAgICAgKiBUaGUgY29uc3RydWN0b3I6XG4gICAgICogMS4gRGVzdHJ1Y3R1cmVzIGNvbXBvbmVudCBmbGFncyBhbmQgb3B0aW9ucyBmcm9tIHRoZSBvcHRpb25zIHBhcmFtZXRlclxuICAgICAqIDIuIE1lcmdlcyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gd2l0aCB1c2VyLXByb3ZpZGVkIG9wdGlvbnNcbiAgICAgKiAzLiBDYWxscyBzdXBlcigpIHdpdGggbWVyZ2VkIG9wdGlvbnNcbiAgICAgKiA0LiBBcHBsaWVzIGNvbXBvbmVudCBkZWZhdWx0cyB2aWEgYXBwbHlEZWZhdWx0cygpXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIEdlbmVyYXRvciBjb25maWd1cmF0aW9uXG4gICAgICogQHBhcmFtIG9wdGlvbnNJbnRlcmZhY2UgLSBOYW1lIG9mIHRoZSBvcHRpb25zIGludGVyZmFjZVxuICAgICAqIEBwYXJhbSBiYXNlT3B0aW9uc1R5cGUgLSBCYXNlIG9wdGlvbnMgdHlwZSB3aXRob3V0IFwicHJvamVuLlwiIHByZWZpeFxuICAgICAqIEBwYXJhbSBkZXN0cnVjdHVyZSAtIFZhcmlhYmxlIG5hbWVzIHRvIGRlc3RydWN0dXJlIGZyb20gb3B0aW9uc1xuICAgICAqIEBwYXJhbSBjb21wb25lbnRBcnJheSAtIENvZGUgc3RyaW5nIGZvciBjb21wb25lbnQgYXJyYXlcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlbmRlckNvbnN0cnVjdG9yKFxuICAgICAgICBvcHRpb25zOiBQcm9qZWN0R2VuZXJhdG9yT3B0aW9ucyxcbiAgICAgICAgb3B0aW9uc0ludGVyZmFjZTogc3RyaW5nLFxuICAgICAgICBiYXNlT3B0aW9uc1R5cGU6IHN0cmluZyxcbiAgICAgICAgZGVzdHJ1Y3R1cmU6IHN0cmluZ1tdLFxuICAgICAgICBjb21wb25lbnRBcnJheTogc3RyaW5nLFxuICAgICkge1xuICAgICAgICBjb25zdCBjb25maWdQYXRoID0gdGhpcy5nZXRDb25maWdQYXRoKG9wdGlvbnMucHJvamVjdFR5cGUpO1xuICAgICAgICB0aGlzLmJ1ZmZlci5saW5lKFwiLyoqXCIpO1xuICAgICAgICB0aGlzLmJ1ZmZlci5saW5lKFwiICogQHBhcmFtIG9wdGlvbnMgLSBQcm9qZWN0IGNvbmZpZ3VyYXRpb25cIik7XG4gICAgICAgIHRoaXMuYnVmZmVyLmxpbmUoXCIgKi9cIik7XG4gICAgICAgIHRoaXMuYnVmZmVyLm9wZW4oYGNvbnN0cnVjdG9yKG9wdGlvbnM6ICR7b3B0aW9uc0ludGVyZmFjZX0pIHtgKTtcbiAgICAgICAgdGhpcy5idWZmZXIubGluZShcIi8qIFNlcGFyYXRlIGNvbXBvbmVudCBjb25maWd1cmF0aW9uIGZyb20gYmFzZSBQcm9qZW4gb3B0aW9ucyAqL1wiKTtcbiAgICAgICAgdGhpcy5idWZmZXIubGluZShgY29uc3QgeyAke2Rlc3RydWN0dXJlLmpvaW4oXCIsIFwiKX0sIC4uLmJhc2VPcHRpb25zIH0gPSBvcHRpb25zO2ApO1xuICAgICAgICB0aGlzLmJ1ZmZlci5saW5lKCk7XG4gICAgICAgIHRoaXMuYnVmZmVyLmxpbmUoXCIvKiBNZXJnZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gd2l0aCB1c2VyIG9wdGlvbnMgYW5kIGluaXRpYWxpemUgYmFzZSBjbGFzcyAqL1wiKTtcbiAgICAgICAgdGhpcy5idWZmZXIubGluZShgc3VwZXIoZGVlcE1lcmdlPCR7YmFzZU9wdGlvbnNUeXBlfT4oJHtjb25maWdQYXRofSwgYmFzZU9wdGlvbnMpKTtgKTtcbiAgICAgICAgdGhpcy5idWZmZXIubGluZSgpO1xuICAgICAgICB0aGlzLmJ1ZmZlci5saW5lKFwiLyogQXBwbHkgY29tcG9uZW50IGRlZmF1bHRzIGFuZCBpbnN0YW50aWF0ZSBlbmFibGVkIGNvbXBvbmVudHMgKi9cIik7XG4gICAgICAgIHRoaXMuYnVmZmVyLmxpbmUoYGFwcGx5RGVmYXVsdHModGhpcywgJHtjb21wb25lbnRBcnJheX0pO2ApO1xuICAgICAgICB0aGlzLmJ1ZmZlci5jbG9zZShcIn1cIik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFwcyBvcHRpb25zIGludGVyZmFjZSBuYW1lIHRvIGZpbGUgbmFtZVxuICAgICAqXG4gICAgICogQ29udmVydHMgUGFzY2FsQ2FzZSBpbnRlcmZhY2UgbmFtZXMgdG8ga2ViYWItY2FzZSBmaWxlIG5hbWVzLlxuICAgICAqIEZhbGxzIGJhY2sgdG8gbG93ZXJjYXNlIGNvbnZlcnNpb24gZm9yIHVubWFwcGVkIGludGVyZmFjZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0aW9uc0ludGVyZmFjZSAtIE9wdGlvbnMgaW50ZXJmYWNlIG5hbWVcbiAgICAgKiBAcmV0dXJucyBLZWJhYi1jYXNlIGZpbGUgbmFtZSB3aXRob3V0IGV4dGVuc2lvblxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBnZXRPcHRpb25zRmlsZU5hbWUoXCJUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnNcIikgLy8gXCJ0eXBlc2NyaXB0LW9wdGlvbnNcIlxuICAgICAqL1xuICAgIGdldE9wdGlvbnNGaWxlTmFtZShvcHRpb25zSW50ZXJmYWNlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBtYXBwaW5nOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAgICAgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zOiBcInR5cGVzY3JpcHQtb3B0aW9uc1wiLFxuICAgICAgICAgICAgSnNpaVByb2plY3RPcHRpb25zOiBcImpzaWktb3B0aW9uc1wiLFxuICAgICAgICAgICAgQXdzQ2RrVHlwZVNjcmlwdEFwcFByb2plY3RPcHRpb25zOiBcImF3c2Nkay10eXBlc2NyaXB0LWFwcC1vcHRpb25zXCIsXG4gICAgICAgICAgICBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5UHJvamVjdE9wdGlvbnM6IFwiYXdzY2RrLWNvbnN0cnVjdC1saWJyYXJ5LW9wdGlvbnNcIixcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG1hcHBpbmdbb3B0aW9uc0ludGVyZmFjZV0gfHwgb3B0aW9uc0ludGVyZmFjZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBQcm9qZW4gY29tcG9uZW50IHRoYXQgZ2VuZXJhdGVzIFR5cGVTY3JpcHQgcHJvamVjdCBjbGFzc2VzIHdpdGggc3RhbmRhcmQgY29uZmlndXJhdGlvblxuICpcbiAqIFRoaXMgY29tcG9uZW50IGF1dG9tYXRlcyB0aGUgY3JlYXRpb24gb2YgcHJvamVjdCBjbGFzc2VzIHRoYXQgZXh0ZW5kIFByb2plbiBiYXNlIGNsYXNzZXNcbiAqIHdpdGggb3BpbmlvbmF0ZWQgZGVmYXVsdHMgYW5kIGNvbXBvbmVudCBpbnRlZ3JhdGlvbi4gSXQgZ2VuZXJhdGVzIGJvdGg6XG4gKiAxLiBBbiBvcHRpb25zIGludGVyZmFjZSAodmlhIFByb2plblN0cnVjdCkgdGhhdCBleHRlbmRzIHRoZSBiYXNlIFByb2plbiBvcHRpb25zXG4gKiAyLiBBIHByb2plY3QgY2xhc3MgdGhhdCBhcHBsaWVzIGRlZmF1bHQgY29uZmlndXJhdGlvbiBhbmQgaW5zdGFudGlhdGVzIGNvbXBvbmVudHNcbiAqXG4gKiBUaGUgZ2VuZXJhdGVkIGNvZGUgZm9sbG93cyBhIGNvbnNpc3RlbnQgcGF0dGVybjpcbiAqIC0gSW1wb3J0cyByZXF1aXJlZCBtb2R1bGVzIGFuZCBjb21wb25lbnRzXG4gKiAtIFJlLWV4cG9ydHMgdGhlIGdlbmVyYXRlZCBvcHRpb25zIGludGVyZmFjZVxuICogLSBEZWZpbmVzIGEgY2xhc3MgZXh0ZW5kaW5nIHRoZSBQcm9qZW4gYmFzZSBjbGFzc1xuICogLSBDb25zdHJ1Y3RvciBtZXJnZXMgZGVmYXVsdHMgd2l0aCB1c2VyIG9wdGlvbnMgYW5kIGFwcGxpZXMgY29tcG9uZW50c1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBuZXcgUHJvamVjdEdlbmVyYXRvcihwcm9qZWN0LCB7XG4gKiAgIG5hbWU6IFwiVHlwZVNjcmlwdFByb2plY3RcIixcbiAqICAgYmFzZUNsYXNzOiBcInR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3RcIixcbiAqICAgZmlsZVBhdGg6IFwic3JjL3Byb2plY3RzL3R5cGVzY3JpcHQuZ2VuZXJhdGVkLnRzXCIsXG4gKiAgIGNvbXBvbmVudHM6IFt7IGNvbXBvbmVudDogVml0ZXN0LCBvcHRpb25zUHJvcGVydHk6IFwidml0ZXN0T3B0aW9uc1wiIH1dXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgUHJvamVjdEdlbmVyYXRvciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSByZW5kZXJlcjogVHlwZVNjcmlwdENsYXNzUmVuZGVyZXI7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcHJvamVjdCAtIFByb2plbiBwcm9qZWN0IGluc3RhbmNlXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBHZW5lcmF0b3IgY29uZmlndXJhdGlvblxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm9qZWN0OiBQcm9qZWN0LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFByb2plY3RHZW5lcmF0b3JPcHRpb25zLFxuICAgICkge1xuICAgICAgICBzdXBlcihwcm9qZWN0KTtcbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IG5ldyBUeXBlU2NyaXB0Q2xhc3NSZW5kZXJlcigpO1xuXG4gICAgICAgIC8qIEdlbmVyYXRlIHRoZSBvcHRpb25zIGludGVyZmFjZSB1c2luZyBQcm9qZW5TdHJ1Y3QgZm9yIEpTSUkgY29tcGF0aWJpbGl0eSAqL1xuICAgICAgICBjb25zdCBvcHRpb25zSW50ZXJmYWNlID0gYCR7b3B0aW9ucy5uYW1lfU9wdGlvbnNgO1xuICAgICAgICBjb25zdCBiYXNlT3B0aW9uc0ZxbiA9IHRoaXMucmVuZGVyZXIuZ2V0QmFzZU9wdGlvbnNGcW4ob3B0aW9ucy5wcm9qZWN0VHlwZSk7XG4gICAgICAgIGNvbnN0IG9wdGlvbnNGaWxlUGF0aCA9IHRoaXMuZ2V0T3B0aW9uc0ZpbGVQYXRoKG9wdGlvbnNJbnRlcmZhY2UpO1xuXG4gICAgICAgIC8qIFByb2plblN0cnVjdCBnZW5lcmF0ZXMgYSBjb25jcmV0ZSBUeXBlU2NyaXB0IGludGVyZmFjZSBmcm9tIFByb2plbidzIG9wdGlvbnNcbiAgICAgICAgICogVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBKU0lJIGRvZXNuJ3Qgc3VwcG9ydCBUeXBlU2NyaXB0IHV0aWxpdHkgdHlwZXMgbGlrZSBPbWl0PD5cbiAgICAgICAgICogVGhlIGdlbmVyYXRlZCBpbnRlcmZhY2UgY2FuIGJlIGNvbnN1bWVkIGJ5IG90aGVyIGxhbmd1YWdlcyAoUHl0aG9uLCBKYXZhLCBDIywgR28pICovXG4gICAgICAgIGNvbnN0IHN0cnVjdCA9IG5ldyBQcm9qZW5TdHJ1Y3QodGhpcy5hc1R5cGVTY3JpcHRQcm9qZWN0KHByb2plY3QpLCB7XG4gICAgICAgICAgICBuYW1lOiBvcHRpb25zSW50ZXJmYWNlLFxuICAgICAgICAgICAgZmlsZVBhdGg6IG9wdGlvbnNGaWxlUGF0aCxcbiAgICAgICAgICAgIG91dHB1dEZpbGVPcHRpb25zOiB7IHJlYWRvbmx5OiB0cnVlIH0sXG4gICAgICAgIH0pXG4gICAgICAgICAgICAubWl4aW4oU3RydWN0LmZyb21GcW4oYmFzZU9wdGlvbnNGcW4pKVxuICAgICAgICAgICAgLndpdGhvdXREZXByZWNhdGVkKCk7XG5cbiAgICAgICAgLyogUmVtb3ZlIHNwZWNpZmllZCBvcHRpb25zIGZyb20gdGhlIGJhc2UgaW50ZXJmYWNlICovXG4gICAgICAgIGlmIChvcHRpb25zLm9taXRPcHRpb25zKSB7XG4gICAgICAgICAgICBzdHJ1Y3Qub21pdCguLi5vcHRpb25zLm9taXRPcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIEFkZCBjb21wb25lbnQtZGVyaXZlZCBvcHRpb25zIHRvIHRoZSBpbnRlcmZhY2UgKi9cbiAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IG9wdGlvbnMuY29tcG9uZW50cyA/PyBERUZBVUxUX0NPTVBPTkVOVFM7XG4gICAgICAgIGNvbnN0IHsgUHJpbWl0aXZlVHlwZSB9ID0gcmVxdWlyZShcIkBqc2lpL3NwZWNcIik7XG5cbiAgICAgICAgZm9yIChjb25zdCBjIG9mIGNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBjLmNvbXBvbmVudC5uYW1lLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgYy5jb21wb25lbnQubmFtZS5zbGljZSgxKTtcblxuICAgICAgICAgICAgLyogQWRkIGVuYWJsZWQgZmxhZyBmb3IgdGhlIGNvbXBvbmVudCAqL1xuICAgICAgICAgICAgc3RydWN0LmFkZCh7XG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICB0eXBlOiB7IHByaW1pdGl2ZTogUHJpbWl0aXZlVHlwZS5Cb29sZWFuIH0sXG4gICAgICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgICAgICAgICAgZG9jczoge1xuICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5OiBgRW5hYmxlICR7Yy5jb21wb25lbnQubmFtZX0gY29tcG9uZW50YCxcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogXCJ0cnVlXCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvKiBBZGQgb3B0aW9ucyBwcm9wZXJ0eSBpZiBjb21wb25lbnQgaXMgY29uZmlndXJhYmxlICovXG4gICAgICAgICAgICBpZiAoYy5vcHRpb25zUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICBzdHJ1Y3QuYWRkKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogYy5vcHRpb25zUHJvcGVydHkubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogeyBmcW46IGMub3B0aW9uc1Byb3BlcnR5LnR5cGUgfSxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGRvY3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnk6IGMub3B0aW9uc1Byb3BlcnR5LmRvY3MgPz8gYCR7Yy5jb21wb25lbnQubmFtZX0gY29uZmlndXJhdGlvbmAsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBgLSBkZWZhdWx0ICR7Yy5jb21wb25lbnQubmFtZX0gY29uZmlndXJhdGlvbmAsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKiBBZGQgY3VzdG9tIG9wdGlvbnMgdG8gdGhlIGludGVyZmFjZSAqL1xuICAgICAgICBpZiAob3B0aW9ucy5hZGRpdGlvbmFsT3B0aW9ucykge1xuICAgICAgICAgICAgc3RydWN0LmFkZCguLi5vcHRpb25zLmFkZGl0aW9uYWxPcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhc3RzIHByb2plY3QgdG8gVHlwZVNjcmlwdCBwcm9qZWN0IHR5cGVcbiAgICAgKlxuICAgICAqIFByb2plblN0cnVjdCByZXF1aXJlcyBhIFR5cGVTY3JpcHRQcm9qZWN0IGluc3RhbmNlLiBUaGlzIGdlbmVyYXRvciBpcyBvbmx5IHVzZWRcbiAgICAgKiB3aXRoaW4gVHlwZVNjcmlwdCBwcm9qZWN0cywgc28gdGhlIGNhc3QgaXMgc2FmZSBpbiBwcmFjdGljZS5cbiAgICAgKlxuICAgICAqIE5vdGU6IFR5cGUgYXNzZXJ0aW9uIGlzIG5lY2Vzc2FyeSBoZXJlIGJlY2F1c2UgUHJvamVuJ3MgdHlwZSBzeXN0ZW0gZG9lc24ndCBwcm92aWRlXG4gICAgICogYSBydW50aW1lIHR5cGUgZ3VhcmQgZm9yIFR5cGVTY3JpcHRQcm9qZWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHByb2plY3QgLSBQcm9qZW4gcHJvamVjdCBpbnN0YW5jZVxuICAgICAqIEByZXR1cm5zIFR5cGVTY3JpcHQgcHJvamVjdCBpbnN0YW5jZVxuICAgICAqL1xuICAgIHByaXZhdGUgYXNUeXBlU2NyaXB0UHJvamVjdChwcm9qZWN0OiBQcm9qZWN0KTogdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdCB7XG4gICAgICAgIHJldHVybiBwcm9qZWN0IGFzIHVua25vd24gYXMgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXJpdmVzIHRoZSBmaWxlIHBhdGggZm9yIHRoZSBnZW5lcmF0ZWQgb3B0aW9ucyBpbnRlcmZhY2VcbiAgICAgKlxuICAgICAqIFBsYWNlcyB0aGUgb3B0aW9ucyBpbnRlcmZhY2UgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIGNsYXNzIGZpbGVcbiAgICAgKiB3aXRoIGEgXCIuZ2VuZXJhdGVkLnRzXCIgc3VmZml4LlxuICAgICAqXG4gICAgICogQHBhcmFtIG9wdGlvbnNJbnRlcmZhY2UgLSBOYW1lIG9mIHRoZSBvcHRpb25zIGludGVyZmFjZVxuICAgICAqIEByZXR1cm5zIEZpbGUgcGF0aCBmb3IgdGhlIG9wdGlvbnMgaW50ZXJmYWNlXG4gICAgICogQHRocm93cyB7SW52YWxpZEZpbGVQYXRoRXJyb3J9IFdoZW4gZmlsZVBhdGggZG9lc24ndCBjb250YWluIGEgZGlyZWN0b3J5IHNlcGFyYXRvclxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0T3B0aW9uc0ZpbGVQYXRoKG9wdGlvbnNJbnRlcmZhY2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGxhc3RTbGFzaCA9IHRoaXMub3B0aW9ucy5maWxlUGF0aC5sYXN0SW5kZXhPZihcIi9cIik7XG4gICAgICAgIGlmIChsYXN0U2xhc2ggPT09IC0xKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEZpbGVQYXRoRXJyb3IodGhpcy5vcHRpb25zLmZpbGVQYXRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRpciA9IHRoaXMub3B0aW9ucy5maWxlUGF0aC5zdWJzdHJpbmcoMCwgbGFzdFNsYXNoKTtcbiAgICAgICAgY29uc3Qgb3B0aW9uc0ZpbGVOYW1lID0gdGhpcy5yZW5kZXJlci5nZXRPcHRpb25zRmlsZU5hbWUob3B0aW9uc0ludGVyZmFjZSk7XG4gICAgICAgIHJldHVybiBgJHtkaXJ9LyR7b3B0aW9uc0ZpbGVOYW1lfS5nZW5lcmF0ZWQudHNgO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyB0aGUgVHlwZVNjcmlwdCBjbGFzcyBmaWxlIGR1cmluZyBQcm9qZW4gc3ludGhlc2lzXG4gICAgICpcbiAgICAgKiBDYWxsZWQgYnkgUHJvamVuIGR1cmluZyB0aGUgc3ludGhlc2lzIHBoYXNlIHRvIGdlbmVyYXRlIHRoZSBwcm9qZWN0IGNsYXNzIGZpbGUuXG4gICAgICogVGhlIGZpbGUgaXMgbWFya2VkIGFzIHJlYWRvbmx5IHRvIHByZXZlbnQgbWFudWFsIGVkaXRpbmcuXG4gICAgICovXG4gICAgcHJlU3ludGhlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMucmVuZGVyZXIucmVuZGVyKHRoaXMub3B0aW9ucyk7XG5cbiAgICAgICAgbmV3IFR5cGVTY3JpcHRDbGFzc0ZpbGUodGhpcy5wcm9qZWN0LCB0aGlzLm9wdGlvbnMuZmlsZVBhdGgsIGNvbnRlbnQsIHtcbiAgICAgICAgICAgIHJlYWRvbmx5OiB0aGlzLm9wdGlvbnMucmVhZG9ubHkgPz8gdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vKipcbiAqIFRleHQgZmlsZSBmb3IgZ2VuZXJhdGVkIFR5cGVTY3JpcHQgY2xhc3MgY29kZVxuICpcbiAqIEV4dGVuZHMgUHJvamVuJ3MgVGV4dEZpbGUgdG8gYWRkIHRoZSBnZW5lcmF0ZWQgZmlsZSBtYXJrZXIgY29tbWVudFxuICogYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS5cbiAqL1xuY2xhc3MgVHlwZVNjcmlwdENsYXNzRmlsZSBleHRlbmRzIFRleHRGaWxlIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcHJvamVjdCAtIFByb2plbiBwcm9qZWN0IGluc3RhbmNlXG4gICAgICogQHBhcmFtIGZpbGVQYXRoIC0gT3V0cHV0IGZpbGUgcGF0aFxuICAgICAqIEBwYXJhbSBjb250ZW50IC0gVHlwZVNjcmlwdCBjbGFzcyBjb2RlXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBTb3VyY2UgY29kZSBvcHRpb25zIChyZWFkb25seSwgZXRjLilcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBmaWxlUGF0aDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIG9wdGlvbnM6IFNvdXJjZUNvZGVPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIocHJvamVjdCwgZmlsZVBhdGgsIG9wdGlvbnMpO1xuICAgICAgICAvKiBBZGQgZ2VuZXJhdGVkIGZpbGUgbWFya2VyIHRvIHByZXZlbnQgbWFudWFsIGVkaXRpbmcgKi9cbiAgICAgICAgdGhpcy5hZGRMaW5lKGAvLyAke3RoaXMubWFya2VyfWApO1xuICAgICAgICB0aGlzLmFkZExpbmUoY29udGVudCk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enum defining all supported project types
|
|
3
|
+
*
|
|
4
|
+
* Each project type corresponds to a generated project class and its configuration
|
|
5
|
+
* in the defaultOptions structure.
|
|
6
|
+
*/
|
|
7
|
+
export declare enum ProjectType {
|
|
8
|
+
/**
|
|
9
|
+
* TypeScript project with ES modules support
|
|
10
|
+
*
|
|
11
|
+
* @see https://projen.io/docs/api/typescript#typescriptproject-
|
|
12
|
+
*/
|
|
13
|
+
TYPESCRIPT = "typescript.TypeScriptProject",
|
|
14
|
+
/**
|
|
15
|
+
* JSII project for publishing multi-language libraries
|
|
16
|
+
*
|
|
17
|
+
* @see https://projen.io/docs/api/cdk#jsiiproject-
|
|
18
|
+
*/
|
|
19
|
+
JSII = "cdk.JsiiProject",
|
|
20
|
+
/**
|
|
21
|
+
* AWS CDK TypeScript application project with ES modules support
|
|
22
|
+
*
|
|
23
|
+
* @see https://projen.io/docs/api/awscdk#awscdktypescriptapp-
|
|
24
|
+
*/
|
|
25
|
+
AWS_CDK_TYPESCRIPT_APP = "awscdk.AwsCdkTypeScriptApp",
|
|
26
|
+
/**
|
|
27
|
+
* AWS CDK construct library project for publishing reusable constructs
|
|
28
|
+
*
|
|
29
|
+
* @see https://projen.io/docs/api/awscdk/#awscdkconstructlibrary-
|
|
30
|
+
*/
|
|
31
|
+
AWS_CDK_CONSTRUCT_LIBRARY = "awscdk.AwsCdkConstructLibrary"
|
|
32
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProjectType = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Enum defining all supported project types
|
|
6
|
+
*
|
|
7
|
+
* Each project type corresponds to a generated project class and its configuration
|
|
8
|
+
* in the defaultOptions structure.
|
|
9
|
+
*/
|
|
10
|
+
var ProjectType;
|
|
11
|
+
(function (ProjectType) {
|
|
12
|
+
/**
|
|
13
|
+
* TypeScript project with ES modules support
|
|
14
|
+
*
|
|
15
|
+
* @see https://projen.io/docs/api/typescript#typescriptproject-
|
|
16
|
+
*/
|
|
17
|
+
ProjectType["TYPESCRIPT"] = "typescript.TypeScriptProject";
|
|
18
|
+
/**
|
|
19
|
+
* JSII project for publishing multi-language libraries
|
|
20
|
+
*
|
|
21
|
+
* @see https://projen.io/docs/api/cdk#jsiiproject-
|
|
22
|
+
*/
|
|
23
|
+
ProjectType["JSII"] = "cdk.JsiiProject";
|
|
24
|
+
/**
|
|
25
|
+
* AWS CDK TypeScript application project with ES modules support
|
|
26
|
+
*
|
|
27
|
+
* @see https://projen.io/docs/api/awscdk#awscdktypescriptapp-
|
|
28
|
+
*/
|
|
29
|
+
ProjectType["AWS_CDK_TYPESCRIPT_APP"] = "awscdk.AwsCdkTypeScriptApp";
|
|
30
|
+
/**
|
|
31
|
+
* AWS CDK construct library project for publishing reusable constructs
|
|
32
|
+
*
|
|
33
|
+
* @see https://projen.io/docs/api/awscdk/#awscdkconstructlibrary-
|
|
34
|
+
*/
|
|
35
|
+
ProjectType["AWS_CDK_CONSTRUCT_LIBRARY"] = "awscdk.AwsCdkConstructLibrary";
|
|
36
|
+
})(ProjectType || (exports.ProjectType = ProjectType = {}));
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Byb2plY3QtdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7R0FLRztBQUNILElBQVksV0E0Qlg7QUE1QkQsV0FBWSxXQUFXO0lBQ25COzs7O09BSUc7SUFDSCwwREFBMkMsQ0FBQTtJQUUzQzs7OztPQUlHO0lBQ0gsdUNBQXdCLENBQUE7SUFFeEI7Ozs7T0FJRztJQUNILG9FQUFxRCxDQUFBO0lBRXJEOzs7O09BSUc7SUFDSCwwRUFBMkQsQ0FBQTtBQUMvRCxDQUFDLEVBNUJXLFdBQVcsMkJBQVgsV0FBVyxRQTRCdEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEVudW0gZGVmaW5pbmcgYWxsIHN1cHBvcnRlZCBwcm9qZWN0IHR5cGVzXG4gKlxuICogRWFjaCBwcm9qZWN0IHR5cGUgY29ycmVzcG9uZHMgdG8gYSBnZW5lcmF0ZWQgcHJvamVjdCBjbGFzcyBhbmQgaXRzIGNvbmZpZ3VyYXRpb25cbiAqIGluIHRoZSBkZWZhdWx0T3B0aW9ucyBzdHJ1Y3R1cmUuXG4gKi9cbmV4cG9ydCBlbnVtIFByb2plY3RUeXBlIHtcbiAgICAvKipcbiAgICAgKiBUeXBlU2NyaXB0IHByb2plY3Qgd2l0aCBFUyBtb2R1bGVzIHN1cHBvcnRcbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9wcm9qZW4uaW8vZG9jcy9hcGkvdHlwZXNjcmlwdCN0eXBlc2NyaXB0cHJvamVjdC1cbiAgICAgKi9cbiAgICBUWVBFU0NSSVBUID0gXCJ0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0XCIsXG5cbiAgICAvKipcbiAgICAgKiBKU0lJIHByb2plY3QgZm9yIHB1Ymxpc2hpbmcgbXVsdGktbGFuZ3VhZ2UgbGlicmFyaWVzXG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vcHJvamVuLmlvL2RvY3MvYXBpL2NkayNqc2lpcHJvamVjdC1cbiAgICAgKi9cbiAgICBKU0lJID0gXCJjZGsuSnNpaVByb2plY3RcIixcblxuICAgIC8qKlxuICAgICAqIEFXUyBDREsgVHlwZVNjcmlwdCBhcHBsaWNhdGlvbiBwcm9qZWN0IHdpdGggRVMgbW9kdWxlcyBzdXBwb3J0XG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vcHJvamVuLmlvL2RvY3MvYXBpL2F3c2NkayNhd3NjZGt0eXBlc2NyaXB0YXBwLVxuICAgICAqL1xuICAgIEFXU19DREtfVFlQRVNDUklQVF9BUFAgPSBcImF3c2Nkay5Bd3NDZGtUeXBlU2NyaXB0QXBwXCIsXG5cbiAgICAvKipcbiAgICAgKiBBV1MgQ0RLIGNvbnN0cnVjdCBsaWJyYXJ5IHByb2plY3QgZm9yIHB1Ymxpc2hpbmcgcmV1c2FibGUgY29uc3RydWN0c1xuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL3Byb2plbi5pby9kb2NzL2FwaS9hd3NjZGsvI2F3c2Nka2NvbnN0cnVjdGxpYnJhcnktXG4gICAgICovXG4gICAgQVdTX0NES19DT05TVFJVQ1RfTElCUkFSWSA9IFwiYXdzY2RrLkF3c0Nka0NvbnN0cnVjdExpYnJhcnlcIixcbn1cbiJdfQ==
|
|
@@ -29,5 +29,5 @@ class AwsCdkConstructLibraryProject extends projen_1.awscdk.AwsCdkConstructLibra
|
|
|
29
29
|
}
|
|
30
30
|
exports.AwsCdkConstructLibraryProject = AwsCdkConstructLibraryProject;
|
|
31
31
|
_a = JSII_RTTI_SYMBOL_1;
|
|
32
|
-
AwsCdkConstructLibraryProject[_a] = { fqn: "@nikovirtala/projen-constructs.AwsCdkConstructLibraryProject", version: "0.1.
|
|
32
|
+
AwsCdkConstructLibraryProject[_a] = { fqn: "@nikovirtala/projen-constructs.AwsCdkConstructLibraryProject", version: "0.1.8" };
|
|
33
33
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLWNvbnN0cnVjdC1saWJyYXJ5LmdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9qZWN0cy9hd3NjZGstY29uc3RydWN0LWxpYnJhcnkuZ2VuZXJhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkVBQTZFO0FBQzdFLG1DQUFnQztBQUNoQyw2Q0FBMEM7QUFDMUMsaURBQThDO0FBQzlDLHNDQUEwRDtBQUMxRCxvQ0FBcUM7QUFPckM7Ozs7R0FJRztBQUNILE1BQWEsNkJBQThCLFNBQVEsZUFBTSxDQUFDLHNCQUFzQjtJQUM1RTs7T0FFRztJQUNILFlBQVksT0FBNkM7UUFDckQsK0RBQStEO1FBQy9ELE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUVoRSw2RUFBNkU7UUFDN0UsS0FBSyxDQUFDLElBQUEsaUJBQVMsRUFBdUMsdUJBQWMsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUVsSCxpRUFBaUU7UUFDakUsSUFBQSxzQkFBYSxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFdBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsZUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5SCxDQUFDOztBQWJMLHNFQWNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwibnB4IHByb2plblwiLlxuaW1wb3J0IHsgYXdzY2RrIH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgTWlzZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL21pc2VcIjtcbmltcG9ydCB7IFZpdGVzdCB9IGZyb20gXCIuLi9jb21wb25lbnRzL3ZpdGVzdFwiO1xuaW1wb3J0IHsgYXBwbHlEZWZhdWx0cywgZGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vY29uZmlnXCI7XG5pbXBvcnQgeyBkZWVwTWVyZ2UgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgQXdzQ2RrQ29uc3RydWN0TGlicmFyeVByb2plY3RPcHRpb25zIH0gZnJvbSBcIi4vYXdzY2RrLWNvbnN0cnVjdC1saWJyYXJ5LW9wdGlvbnMuZ2VuZXJhdGVkXCI7XG5cblxuZXhwb3J0IHsgQXdzQ2RrQ29uc3RydWN0TGlicmFyeVByb2plY3RPcHRpb25zIH0gZnJvbSBcIi4vYXdzY2RrLWNvbnN0cnVjdC1saWJyYXJ5LW9wdGlvbnMuZ2VuZXJhdGVkXCI7XG5cblxuLyoqXG4gKiBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5UHJvamVjdCB3aXRoIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gYW5kIGNvbXBvbmVudCBpbnRlZ3JhdGlvblxuICpcbiAqIEV4dGVuZHMgUHJvamVuJ3MgYmFzZSBjbGFzcyB3aXRoIG9waW5pb25hdGVkIGRlZmF1bHRzIGFuZCBhdXRvbWF0aWMgY29tcG9uZW50IHNldHVwLlxuICovXG5leHBvcnQgY2xhc3MgQXdzQ2RrQ29uc3RydWN0TGlicmFyeVByb2plY3QgZXh0ZW5kcyBhd3NjZGsuQXdzQ2RrQ29uc3RydWN0TGlicmFyeSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBQcm9qZWN0IGNvbmZpZ3VyYXRpb25cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBBd3NDZGtDb25zdHJ1Y3RMaWJyYXJ5UHJvamVjdE9wdGlvbnMpIHtcbiAgICAgICAgLyogU2VwYXJhdGUgY29tcG9uZW50IGNvbmZpZ3VyYXRpb24gZnJvbSBiYXNlIFByb2plbiBvcHRpb25zICovXG4gICAgICAgIGNvbnN0IHsgbWlzZSwgdml0ZXN0LCB2aXRlc3RPcHRpb25zLCAuLi5iYXNlT3B0aW9ucyB9ID0gb3B0aW9ucztcblxuICAgICAgICAvKiBNZXJnZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gd2l0aCB1c2VyIG9wdGlvbnMgYW5kIGluaXRpYWxpemUgYmFzZSBjbGFzcyAqL1xuICAgICAgICBzdXBlcihkZWVwTWVyZ2U8YXdzY2RrLkF3c0Nka0NvbnN0cnVjdExpYnJhcnlPcHRpb25zPihkZWZhdWx0T3B0aW9ucy5hd3NjZGsuQXdzQ2RrQ29uc3RydWN0TGlicmFyeSwgYmFzZU9wdGlvbnMpKTtcblxuICAgICAgICAvKiBBcHBseSBjb21wb25lbnQgZGVmYXVsdHMgYW5kIGluc3RhbnRpYXRlIGVuYWJsZWQgY29tcG9uZW50cyAqL1xuICAgICAgICBhcHBseURlZmF1bHRzKHRoaXMsIFt7IGNvbXBvbmVudDogTWlzZSwgZW5hYmxlZDogbWlzZSB9LCB7IGNvbXBvbmVudDogVml0ZXN0LCBlbmFibGVkOiB2aXRlc3QsIG9wdGlvbnM6IHZpdGVzdE9wdGlvbnMgfV0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -29,5 +29,5 @@ class AwsCdkTypeScriptAppProject extends projen_1.awscdk.AwsCdkTypeScriptApp {
|
|
|
29
29
|
}
|
|
30
30
|
exports.AwsCdkTypeScriptAppProject = AwsCdkTypeScriptAppProject;
|
|
31
31
|
_a = JSII_RTTI_SYMBOL_1;
|
|
32
|
-
AwsCdkTypeScriptAppProject[_a] = { fqn: "@nikovirtala/projen-constructs.AwsCdkTypeScriptAppProject", version: "0.1.
|
|
32
|
+
AwsCdkTypeScriptAppProject[_a] = { fqn: "@nikovirtala/projen-constructs.AwsCdkTypeScriptAppProject", version: "0.1.8" };
|
|
33
33
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzY2RrLXR5cGVzY3JpcHQtYXBwLmdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9qZWN0cy9hd3NjZGstdHlwZXNjcmlwdC1hcHAuZ2VuZXJhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkVBQTZFO0FBQzdFLG1DQUFnQztBQUNoQyw2Q0FBMEM7QUFDMUMsaURBQThDO0FBQzlDLHNDQUEwRDtBQUMxRCxvQ0FBcUM7QUFPckM7Ozs7R0FJRztBQUNILE1BQWEsMEJBQTJCLFNBQVEsZUFBTSxDQUFDLG1CQUFtQjtJQUN0RTs7T0FFRztJQUNILFlBQVksT0FBMEM7UUFDbEQsK0RBQStEO1FBQy9ELE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUVoRSw2RUFBNkU7UUFDN0UsS0FBSyxDQUFDLElBQUEsaUJBQVMsRUFBb0MsdUJBQWMsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUU1RyxpRUFBaUU7UUFDakUsSUFBQSxzQkFBYSxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFdBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsZUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5SCxDQUFDOztBQWJMLGdFQWNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwibnB4IHByb2plblwiLlxuaW1wb3J0IHsgYXdzY2RrIH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgTWlzZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL21pc2VcIjtcbmltcG9ydCB7IFZpdGVzdCB9IGZyb20gXCIuLi9jb21wb25lbnRzL3ZpdGVzdFwiO1xuaW1wb3J0IHsgYXBwbHlEZWZhdWx0cywgZGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vY29uZmlnXCI7XG5pbXBvcnQgeyBkZWVwTWVyZ2UgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgQXdzQ2RrVHlwZVNjcmlwdEFwcFByb2plY3RPcHRpb25zIH0gZnJvbSBcIi4vYXdzY2RrLXR5cGVzY3JpcHQtYXBwLW9wdGlvbnMuZ2VuZXJhdGVkXCI7XG5cblxuZXhwb3J0IHsgQXdzQ2RrVHlwZVNjcmlwdEFwcFByb2plY3RPcHRpb25zIH0gZnJvbSBcIi4vYXdzY2RrLXR5cGVzY3JpcHQtYXBwLW9wdGlvbnMuZ2VuZXJhdGVkXCI7XG5cblxuLyoqXG4gKiBBd3NDZGtUeXBlU2NyaXB0QXBwUHJvamVjdCB3aXRoIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gYW5kIGNvbXBvbmVudCBpbnRlZ3JhdGlvblxuICpcbiAqIEV4dGVuZHMgUHJvamVuJ3MgYmFzZSBjbGFzcyB3aXRoIG9waW5pb25hdGVkIGRlZmF1bHRzIGFuZCBhdXRvbWF0aWMgY29tcG9uZW50IHNldHVwLlxuICovXG5leHBvcnQgY2xhc3MgQXdzQ2RrVHlwZVNjcmlwdEFwcFByb2plY3QgZXh0ZW5kcyBhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcCB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBQcm9qZWN0IGNvbmZpZ3VyYXRpb25cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBBd3NDZGtUeXBlU2NyaXB0QXBwUHJvamVjdE9wdGlvbnMpIHtcbiAgICAgICAgLyogU2VwYXJhdGUgY29tcG9uZW50IGNvbmZpZ3VyYXRpb24gZnJvbSBiYXNlIFByb2plbiBvcHRpb25zICovXG4gICAgICAgIGNvbnN0IHsgbWlzZSwgdml0ZXN0LCB2aXRlc3RPcHRpb25zLCAuLi5iYXNlT3B0aW9ucyB9ID0gb3B0aW9ucztcblxuICAgICAgICAvKiBNZXJnZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gd2l0aCB1c2VyIG9wdGlvbnMgYW5kIGluaXRpYWxpemUgYmFzZSBjbGFzcyAqL1xuICAgICAgICBzdXBlcihkZWVwTWVyZ2U8YXdzY2RrLkF3c0Nka1R5cGVTY3JpcHRBcHBPcHRpb25zPihkZWZhdWx0T3B0aW9ucy5hd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcCwgYmFzZU9wdGlvbnMpKTtcblxuICAgICAgICAvKiBBcHBseSBjb21wb25lbnQgZGVmYXVsdHMgYW5kIGluc3RhbnRpYXRlIGVuYWJsZWQgY29tcG9uZW50cyAqL1xuICAgICAgICBhcHBseURlZmF1bHRzKHRoaXMsIFt7IGNvbXBvbmVudDogTWlzZSwgZW5hYmxlZDogbWlzZSB9LCB7IGNvbXBvbmVudDogVml0ZXN0LCBlbmFibGVkOiB2aXRlc3QsIG9wdGlvbnM6IHZpdGVzdE9wdGlvbnMgfV0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -29,5 +29,5 @@ class JsiiProject extends projen_1.cdk.JsiiProject {
|
|
|
29
29
|
}
|
|
30
30
|
exports.JsiiProject = JsiiProject;
|
|
31
31
|
_a = JSII_RTTI_SYMBOL_1;
|
|
32
|
-
JsiiProject[_a] = { fqn: "@nikovirtala/projen-constructs.JsiiProject", version: "0.1.
|
|
32
|
+
JsiiProject[_a] = { fqn: "@nikovirtala/projen-constructs.JsiiProject", version: "0.1.8" };
|
|
33
33
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS5nZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvamVjdHMvanNpaS5nZW5lcmF0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2RUFBNkU7QUFDN0UsbUNBQTZCO0FBQzdCLDZDQUEwQztBQUMxQyxpREFBOEM7QUFDOUMsc0NBQTBEO0FBQzFELG9DQUFxQztBQU9yQzs7OztHQUlHO0FBQ0gsTUFBYSxXQUFZLFNBQVEsWUFBRyxDQUFDLFdBQVc7SUFDNUM7O09BRUc7SUFDSCxZQUFZLE9BQTJCO1FBQ25DLCtEQUErRDtRQUMvRCxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFFaEUsNkVBQTZFO1FBQzdFLEtBQUssQ0FBQyxJQUFBLGlCQUFTLEVBQXlCLHVCQUFjLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBRXRGLGlFQUFpRTtRQUNqRSxJQUFBLHNCQUFhLEVBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsV0FBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxlQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlILENBQUM7O0FBYkwsa0NBY0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJucHggcHJvamVuXCIuXG5pbXBvcnQgeyBjZGsgfSBmcm9tIFwicHJvamVuXCI7XG5pbXBvcnQgeyBNaXNlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvbWlzZVwiO1xuaW1wb3J0IHsgVml0ZXN0IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdml0ZXN0XCI7XG5pbXBvcnQgeyBhcHBseURlZmF1bHRzLCBkZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9jb25maWdcIjtcbmltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBKc2lpUHJvamVjdE9wdGlvbnMgfSBmcm9tIFwiLi9qc2lpLW9wdGlvbnMuZ2VuZXJhdGVkXCI7XG5cblxuZXhwb3J0IHsgSnNpaVByb2plY3RPcHRpb25zIH0gZnJvbSBcIi4vanNpaS1vcHRpb25zLmdlbmVyYXRlZFwiO1xuXG5cbi8qKlxuICogSnNpaVByb2plY3Qgd2l0aCBzdGFuZGFyZCBjb25maWd1cmF0aW9uIGFuZCBjb21wb25lbnQgaW50ZWdyYXRpb25cbiAqXG4gKiBFeHRlbmRzIFByb2plbidzIGJhc2UgY2xhc3Mgd2l0aCBvcGluaW9uYXRlZCBkZWZhdWx0cyBhbmQgYXV0b21hdGljIGNvbXBvbmVudCBzZXR1cC5cbiAqL1xuZXhwb3J0IGNsYXNzIEpzaWlQcm9qZWN0IGV4dGVuZHMgY2RrLkpzaWlQcm9qZWN0IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIFByb2plY3QgY29uZmlndXJhdGlvblxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEpzaWlQcm9qZWN0T3B0aW9ucykge1xuICAgICAgICAvKiBTZXBhcmF0ZSBjb21wb25lbnQgY29uZmlndXJhdGlvbiBmcm9tIGJhc2UgUHJvamVuIG9wdGlvbnMgKi9cbiAgICAgICAgY29uc3QgeyBtaXNlLCB2aXRlc3QsIHZpdGVzdE9wdGlvbnMsIC4uLmJhc2VPcHRpb25zIH0gPSBvcHRpb25zO1xuXG4gICAgICAgIC8qIE1lcmdlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB3aXRoIHVzZXIgb3B0aW9ucyBhbmQgaW5pdGlhbGl6ZSBiYXNlIGNsYXNzICovXG4gICAgICAgIHN1cGVyKGRlZXBNZXJnZTxjZGsuSnNpaVByb2plY3RPcHRpb25zPihkZWZhdWx0T3B0aW9ucy5jZGsuSnNpaVByb2plY3QsIGJhc2VPcHRpb25zKSk7XG5cbiAgICAgICAgLyogQXBwbHkgY29tcG9uZW50IGRlZmF1bHRzIGFuZCBpbnN0YW50aWF0ZSBlbmFibGVkIGNvbXBvbmVudHMgKi9cbiAgICAgICAgYXBwbHlEZWZhdWx0cyh0aGlzLCBbeyBjb21wb25lbnQ6IE1pc2UsIGVuYWJsZWQ6IG1pc2UgfSwgeyBjb21wb25lbnQ6IFZpdGVzdCwgZW5hYmxlZDogdml0ZXN0LCBvcHRpb25zOiB2aXRlc3RPcHRpb25zIH1dKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -29,5 +29,5 @@ class TypeScriptProject extends projen_1.typescript.TypeScriptProject {
|
|
|
29
29
|
}
|
|
30
30
|
exports.TypeScriptProject = TypeScriptProject;
|
|
31
31
|
_a = JSII_RTTI_SYMBOL_1;
|
|
32
|
-
TypeScriptProject[_a] = { fqn: "@nikovirtala/projen-constructs.TypeScriptProject", version: "0.1.
|
|
32
|
+
TypeScriptProject[_a] = { fqn: "@nikovirtala/projen-constructs.TypeScriptProject", version: "0.1.8" };
|
|
33
33
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5nZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvamVjdHMvdHlwZXNjcmlwdC5nZW5lcmF0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2RUFBNkU7QUFDN0UsbUNBQW9DO0FBQ3BDLDZDQUEwQztBQUMxQyxpREFBOEM7QUFDOUMsc0NBQTBEO0FBQzFELG9DQUFxQztBQU9yQzs7OztHQUlHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSxtQkFBVSxDQUFDLGlCQUFpQjtJQUMvRDs7T0FFRztJQUNILFlBQVksT0FBaUM7UUFDekMsK0RBQStEO1FBQy9ELE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUVoRSw2RUFBNkU7UUFDN0UsS0FBSyxDQUFDLElBQUEsaUJBQVMsRUFBc0MsdUJBQWMsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUVoSCxpRUFBaUU7UUFDakUsSUFBQSxzQkFBYSxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFdBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsZUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5SCxDQUFDOztBQWJMLDhDQWNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwibnB4IHByb2plblwiLlxuaW1wb3J0IHsgdHlwZXNjcmlwdCB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IE1pc2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9taXNlXCI7XG5pbXBvcnQgeyBWaXRlc3QgfSBmcm9tIFwiLi4vY29tcG9uZW50cy92aXRlc3RcIjtcbmltcG9ydCB7IGFwcGx5RGVmYXVsdHMsIGRlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL2NvbmZpZ1wiO1xuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzY3JpcHQtb3B0aW9ucy5nZW5lcmF0ZWRcIjtcblxuXG5leHBvcnQgeyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMgfSBmcm9tIFwiLi90eXBlc2NyaXB0LW9wdGlvbnMuZ2VuZXJhdGVkXCI7XG5cblxuLyoqXG4gKiBUeXBlU2NyaXB0UHJvamVjdCB3aXRoIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gYW5kIGNvbXBvbmVudCBpbnRlZ3JhdGlvblxuICpcbiAqIEV4dGVuZHMgUHJvamVuJ3MgYmFzZSBjbGFzcyB3aXRoIG9waW5pb25hdGVkIGRlZmF1bHRzIGFuZCBhdXRvbWF0aWMgY29tcG9uZW50IHNldHVwLlxuICovXG5leHBvcnQgY2xhc3MgVHlwZVNjcmlwdFByb2plY3QgZXh0ZW5kcyB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIFByb2plY3QgY29uZmlndXJhdGlvblxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucykge1xuICAgICAgICAvKiBTZXBhcmF0ZSBjb21wb25lbnQgY29uZmlndXJhdGlvbiBmcm9tIGJhc2UgUHJvamVuIG9wdGlvbnMgKi9cbiAgICAgICAgY29uc3QgeyBtaXNlLCB2aXRlc3QsIHZpdGVzdE9wdGlvbnMsIC4uLmJhc2VPcHRpb25zIH0gPSBvcHRpb25zO1xuXG4gICAgICAgIC8qIE1lcmdlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB3aXRoIHVzZXIgb3B0aW9ucyBhbmQgaW5pdGlhbGl6ZSBiYXNlIGNsYXNzICovXG4gICAgICAgIHN1cGVyKGRlZXBNZXJnZTx0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucz4oZGVmYXVsdE9wdGlvbnMudHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdCwgYmFzZU9wdGlvbnMpKTtcblxuICAgICAgICAvKiBBcHBseSBjb21wb25lbnQgZGVmYXVsdHMgYW5kIGluc3RhbnRpYXRlIGVuYWJsZWQgY29tcG9uZW50cyAqL1xuICAgICAgICBhcHBseURlZmF1bHRzKHRoaXMsIFt7IGNvbXBvbmVudDogTWlzZSwgZW5hYmxlZDogbWlzZSB9LCB7IGNvbXBvbmVudDogVml0ZXN0LCBlbmFibGVkOiB2aXRlc3QsIG9wdGlvbnM6IHZpdGVzdE9wdGlvbnMgfV0pO1xuICAgIH1cbn1cbiJdfQ==
|