cdk8s-cli 2.200.49 → 2.200.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cli/cmds/import.js +15 -18
- package/lib/cli/cmds/init.js +5 -7
- package/lib/cli/cmds/synth.js +14 -16
- package/lib/config.js +3 -4
- package/lib/import/codegen.js +5 -7
- package/lib/import/crd.js +4 -5
- package/lib/import/crds-dev.js +2 -3
- package/lib/import/dispatch.js +2 -3
- package/lib/import/helm.js +2 -3
- package/lib/import/k8s-util.js +3 -4
- package/lib/import/k8s.js +4 -7
- package/lib/plugins/_manager.js +4 -5
- package/lib/plugins/validation.js +5 -8
- package/lib/reviver.js +3 -4
- package/lib/util.js +6 -9
- package/package.json +2 -2
package/lib/cli/cmds/import.js
CHANGED
|
@@ -12,23 +12,20 @@ class Command {
|
|
|
12
12
|
this.command = 'import [SPEC]';
|
|
13
13
|
this.describe = 'Imports API objects to your app by generating constructs.';
|
|
14
14
|
this.aliases = ['gen', 'import', 'generate'];
|
|
15
|
-
this.builder = (args) =>
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
.option('class-prefix', { type: 'string', desc: 'A prefix to add to all generated class names. By default, this is "Kube" for "k8s" imports and disabled for CRD imports. Use --no-class-prefix to disable. Must be PascalCase' })
|
|
30
|
-
.option('language', { default: config === null || config === void 0 ? void 0 : config.language, demand: true, type: 'string', desc: 'Output programming language', alias: 'l', choices: LANGUAGES });
|
|
31
|
-
};
|
|
15
|
+
this.builder = (args) => args
|
|
16
|
+
.positional('SPEC', { default: config?.imports, desc: 'import spec with the syntax [NAME:=]SPEC where NAME is an optional module name and supported SPEC are: k8s, crd.yaml, https://domain/crd.yaml, github:account/repo[@VERSION]).', array: true })
|
|
17
|
+
.example('cdk8s import k8s', `Imports Kubernetes API objects to imports/k8s.ts. Defaults to ${k8s_1.DEFAULT_API_VERSION}`)
|
|
18
|
+
.example('cdk8s import k8s --no-class-prefix', 'Imports Kubernetes API objects without the "Kube" prefix')
|
|
19
|
+
.example('cdk8s import k8s@1.13.0', 'Imports a specific version of the Kubernetes API')
|
|
20
|
+
.example('cdk8s import jenkins.io_jenkins_crd.yaml', 'Imports constructs for the Jenkins custom resource definition from a file')
|
|
21
|
+
.example('cdk8s import mattermost:=mattermost_crd.yaml', 'Imports constructs for the mattermost cluster custom resource definition using a custom module name')
|
|
22
|
+
.example('cdk8s import github:crossplane/crossplane@0.14.0', 'Imports constructs for a GitHub repo using doc.crds.dev')
|
|
23
|
+
.example('cdk8s import helm:https://charts.bitnami.com/bitnami/mysql@9.10.10', 'Imports the specified version of helm chart')
|
|
24
|
+
.option('save', { type: 'boolean', required: false, default: true, desc: "Dont save the import URL in the 'imports' section of the cdk8s.yaml configuration file.", alias: 's' })
|
|
25
|
+
.option('output', { default: config?.importDirectory ?? DEFAULT_OUTDIR, type: 'string', desc: 'Output directory', alias: 'o' })
|
|
26
|
+
.option('exclude', { type: 'array', desc: 'Do not import types that match these regular expressions. They will be represented as the "any" type (only for "k8s")' })
|
|
27
|
+
.option('class-prefix', { type: 'string', desc: 'A prefix to add to all generated class names. By default, this is "Kube" for "k8s" imports and disabled for CRD imports. Use --no-class-prefix to disable. Must be PascalCase' })
|
|
28
|
+
.option('language', { default: config?.language, demand: true, type: 'string', desc: 'Output programming language', alias: 'l', choices: LANGUAGES });
|
|
32
29
|
}
|
|
33
30
|
async handler(argv) {
|
|
34
31
|
const classNamePrefix = argv.classPrefix === false ? '' : argv.classPrefix;
|
|
@@ -43,4 +40,4 @@ class Command {
|
|
|
43
40
|
}
|
|
44
41
|
}
|
|
45
42
|
module.exports = new Command();
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL2ltcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHlDQUEwRDtBQUMxRCxvREFBdUQ7QUFDdkQsMENBQXVEO0FBQ3ZELHFDQUEwQztBQUUxQyxNQUFNLE1BQU0sR0FBRyxJQUFBLHVCQUFjLEdBQUUsQ0FBQztBQUVoQyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7QUFDakMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFbkUsTUFBTSxPQUFPO0lBQWI7UUFDa0IsWUFBTyxHQUFHLGVBQWUsQ0FBQztRQUMxQixhQUFRLEdBQUcsMkRBQTJELENBQUM7UUFDdkUsWUFBTyxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV4QyxZQUFPLEdBQUcsQ0FBQyxJQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJO2FBQ2pELFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0xBQWdMLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO2FBQ3JQLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxpRUFBaUUseUJBQW1CLEVBQUUsQ0FBQzthQUNuSCxPQUFPLENBQUMsb0NBQW9DLEVBQUUsMERBQTBELENBQUM7YUFDekcsT0FBTyxDQUFDLHlCQUF5QixFQUFFLGtEQUFrRCxDQUFDO2FBQ3RGLE9BQU8sQ0FBQywwQ0FBMEMsRUFBRSwyRUFBMkUsQ0FBQzthQUNoSSxPQUFPLENBQUMsOENBQThDLEVBQUUscUdBQXFHLENBQUM7YUFDOUosT0FBTyxDQUFDLGtEQUFrRCxFQUFFLHlEQUF5RCxDQUFDO2FBQ3RILE9BQU8sQ0FBQyxvRUFBb0UsRUFBRSw2Q0FBNkMsQ0FBQzthQUU1SCxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLHlGQUF5RixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQzthQUNoTCxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxlQUFlLElBQUksY0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQzthQUM5SCxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsdUhBQXVILEVBQUUsQ0FBQzthQUNuSyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsK0tBQStLLEVBQUUsQ0FBQzthQUNqTyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSw2QkFBNkIsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBYzFKLENBQUM7SUFaUSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQVM7UUFDNUIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMzRSxNQUFNLE9BQU8sR0FBYSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0UsTUFBTSxLQUFLLEdBQWlCLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLG1CQUFZLENBQUMsQ0FBQztRQUVuRixNQUFNLElBQUEseUJBQWMsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ2hDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDN0IsZUFBZTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB5YXJncyBmcm9tICd5YXJncyc7XG5pbXBvcnQgeyByZWFkQ29uZmlnU3luYywgSW1wb3J0U3BlYyB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBpbXBvcnREaXNwYXRjaCB9IGZyb20gJy4uLy4uL2ltcG9ydC9kaXNwYXRjaCc7XG5pbXBvcnQgeyBERUZBVUxUX0FQSV9WRVJTSU9OIH0gZnJvbSAnLi4vLi4vaW1wb3J0L2s4cyc7XG5pbXBvcnQgeyBwYXJzZUltcG9ydHMgfSBmcm9tICcuLi8uLi91dGlsJztcblxuY29uc3QgY29uZmlnID0gcmVhZENvbmZpZ1N5bmMoKTtcblxuY29uc3QgREVGQVVMVF9PVVRESVIgPSAnaW1wb3J0cyc7XG5jb25zdCBMQU5HVUFHRVMgPSBbJ2NzaGFycCcsICd0eXBlc2NyaXB0JywgJ3B5dGhvbicsICdqYXZhJywgJ2dvJ107XG5cbmNsYXNzIENvbW1hbmQgaW1wbGVtZW50cyB5YXJncy5Db21tYW5kTW9kdWxlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNvbW1hbmQgPSAnaW1wb3J0IFtTUEVDXSc7XG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmliZSA9ICdJbXBvcnRzIEFQSSBvYmplY3RzIHRvIHlvdXIgYXBwIGJ5IGdlbmVyYXRpbmcgY29uc3RydWN0cy4nO1xuICBwdWJsaWMgcmVhZG9ubHkgYWxpYXNlcyA9IFsnZ2VuJywgJ2ltcG9ydCcsICdnZW5lcmF0ZSddO1xuXG4gIHB1YmxpYyByZWFkb25seSBidWlsZGVyID0gKGFyZ3M6IHlhcmdzLkFyZ3YpID0+IGFyZ3NcbiAgICAucG9zaXRpb25hbCgnU1BFQycsIHsgZGVmYXVsdDogY29uZmlnPy5pbXBvcnRzLCBkZXNjOiAnaW1wb3J0IHNwZWMgd2l0aCB0aGUgc3ludGF4IFtOQU1FOj1dU1BFQyB3aGVyZSBOQU1FIGlzIGFuIG9wdGlvbmFsIG1vZHVsZSBuYW1lIGFuZCBzdXBwb3J0ZWQgU1BFQyBhcmU6IGs4cywgY3JkLnlhbWwsIGh0dHBzOi8vZG9tYWluL2NyZC55YW1sLCBnaXRodWI6YWNjb3VudC9yZXBvW0BWRVJTSU9OXSkuJywgYXJyYXk6IHRydWUgfSlcbiAgICAuZXhhbXBsZSgnY2RrOHMgaW1wb3J0IGs4cycsIGBJbXBvcnRzIEt1YmVybmV0ZXMgQVBJIG9iamVjdHMgdG8gaW1wb3J0cy9rOHMudHMuIERlZmF1bHRzIHRvICR7REVGQVVMVF9BUElfVkVSU0lPTn1gKVxuICAgIC5leGFtcGxlKCdjZGs4cyBpbXBvcnQgazhzIC0tbm8tY2xhc3MtcHJlZml4JywgJ0ltcG9ydHMgS3ViZXJuZXRlcyBBUEkgb2JqZWN0cyB3aXRob3V0IHRoZSBcIkt1YmVcIiBwcmVmaXgnKVxuICAgIC5leGFtcGxlKCdjZGs4cyBpbXBvcnQgazhzQDEuMTMuMCcsICdJbXBvcnRzIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgS3ViZXJuZXRlcyBBUEknKVxuICAgIC5leGFtcGxlKCdjZGs4cyBpbXBvcnQgamVua2lucy5pb19qZW5raW5zX2NyZC55YW1sJywgJ0ltcG9ydHMgY29uc3RydWN0cyBmb3IgdGhlIEplbmtpbnMgY3VzdG9tIHJlc291cmNlIGRlZmluaXRpb24gZnJvbSBhIGZpbGUnKVxuICAgIC5leGFtcGxlKCdjZGs4cyBpbXBvcnQgbWF0dGVybW9zdDo9bWF0dGVybW9zdF9jcmQueWFtbCcsICdJbXBvcnRzIGNvbnN0cnVjdHMgZm9yIHRoZSBtYXR0ZXJtb3N0IGNsdXN0ZXIgY3VzdG9tIHJlc291cmNlIGRlZmluaXRpb24gdXNpbmcgYSBjdXN0b20gbW9kdWxlIG5hbWUnKVxuICAgIC5leGFtcGxlKCdjZGs4cyBpbXBvcnQgZ2l0aHViOmNyb3NzcGxhbmUvY3Jvc3NwbGFuZUAwLjE0LjAnLCAnSW1wb3J0cyBjb25zdHJ1Y3RzIGZvciBhIEdpdEh1YiByZXBvIHVzaW5nIGRvYy5jcmRzLmRldicpXG4gICAgLmV4YW1wbGUoJ2NkazhzIGltcG9ydCBoZWxtOmh0dHBzOi8vY2hhcnRzLmJpdG5hbWkuY29tL2JpdG5hbWkvbXlzcWxAOS4xMC4xMCcsICdJbXBvcnRzIHRoZSBzcGVjaWZpZWQgdmVyc2lvbiBvZiBoZWxtIGNoYXJ0JylcblxuICAgIC5vcHRpb24oJ3NhdmUnLCB7IHR5cGU6ICdib29sZWFuJywgcmVxdWlyZWQ6IGZhbHNlLCBkZWZhdWx0OiB0cnVlLCBkZXNjOiBcIkRvbnQgc2F2ZSB0aGUgaW1wb3J0IFVSTCBpbiB0aGUgJ2ltcG9ydHMnIHNlY3Rpb24gb2YgdGhlIGNkazhzLnlhbWwgY29uZmlndXJhdGlvbiBmaWxlLlwiLCBhbGlhczogJ3MnIH0pXG4gICAgLm9wdGlvbignb3V0cHV0JywgeyBkZWZhdWx0OiBjb25maWc/LmltcG9ydERpcmVjdG9yeSA/PyBERUZBVUxUX09VVERJUiwgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdPdXRwdXQgZGlyZWN0b3J5JywgYWxpYXM6ICdvJyB9KVxuICAgIC5vcHRpb24oJ2V4Y2x1ZGUnLCB7IHR5cGU6ICdhcnJheScsIGRlc2M6ICdEbyBub3QgaW1wb3J0IHR5cGVzIHRoYXQgbWF0Y2ggdGhlc2UgcmVndWxhciBleHByZXNzaW9ucy4gVGhleSB3aWxsIGJlIHJlcHJlc2VudGVkIGFzIHRoZSBcImFueVwiIHR5cGUgKG9ubHkgZm9yIFwiazhzXCIpJyB9KVxuICAgIC5vcHRpb24oJ2NsYXNzLXByZWZpeCcsIHsgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdBIHByZWZpeCB0byBhZGQgdG8gYWxsIGdlbmVyYXRlZCBjbGFzcyBuYW1lcy4gQnkgZGVmYXVsdCwgdGhpcyBpcyBcIkt1YmVcIiBmb3IgXCJrOHNcIiBpbXBvcnRzIGFuZCBkaXNhYmxlZCBmb3IgQ1JEIGltcG9ydHMuIFVzZSAtLW5vLWNsYXNzLXByZWZpeCB0byBkaXNhYmxlLiBNdXN0IGJlIFBhc2NhbENhc2UnIH0pXG4gICAgLm9wdGlvbignbGFuZ3VhZ2UnLCB7IGRlZmF1bHQ6IGNvbmZpZz8ubGFuZ3VhZ2UsIGRlbWFuZDogdHJ1ZSwgdHlwZTogJ3N0cmluZycsIGRlc2M6ICdPdXRwdXQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UnLCBhbGlhczogJ2wnLCBjaG9pY2VzOiBMQU5HVUFHRVMgfSk7XG5cbiAgcHVibGljIGFzeW5jIGhhbmRsZXIoYXJndjogYW55KSB7XG4gICAgY29uc3QgY2xhc3NOYW1lUHJlZml4ID0gYXJndi5jbGFzc1ByZWZpeCA9PT0gZmFsc2UgPyAnJyA6IGFyZ3YuY2xhc3NQcmVmaXg7XG4gICAgY29uc3QgaW1wb3J0czogc3RyaW5nW10gPSBBcnJheS5pc0FycmF5KGFyZ3Yuc3BlYykgPyBhcmd2LnNwZWMgOiBbYXJndi5zcGVjXTtcbiAgICBjb25zdCBzcGVjczogSW1wb3J0U3BlY1tdID0gaW1wb3J0cy5maWx0ZXIoc3BlYyA9PiBzcGVjICE9IG51bGwpLm1hcChwYXJzZUltcG9ydHMpO1xuXG4gICAgYXdhaXQgaW1wb3J0RGlzcGF0Y2goc3BlY3MsIGFyZ3YsIHtcbiAgICAgIG91dGRpcjogYXJndi5vdXRwdXQsXG4gICAgICB0YXJnZXRMYW5ndWFnZTogYXJndi5sYW5ndWFnZSxcbiAgICAgIGNsYXNzTmFtZVByZWZpeCxcbiAgICAgIHNhdmU6IGFyZ3Yuc2F2ZSxcbiAgICB9KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBDb21tYW5kKCk7XG4iXX0=
|
package/lib/cli/cmds/init.js
CHANGED
|
@@ -43,7 +43,6 @@ class Command {
|
|
|
43
43
|
.choices('TYPE', availableTemplates);
|
|
44
44
|
}
|
|
45
45
|
async handler(argv) {
|
|
46
|
-
var _a, _b;
|
|
47
46
|
if (fs.readdirSync('.').filter(f => !f.startsWith('.')).length > 0) {
|
|
48
47
|
console.error('Cannot initialize a project in a non-empty directory');
|
|
49
48
|
process.exit(1);
|
|
@@ -56,7 +55,7 @@ class Command {
|
|
|
56
55
|
}
|
|
57
56
|
catch (er) {
|
|
58
57
|
const e = er;
|
|
59
|
-
throw new Error(`error during project initialization: ${e.stack}\nSTDOUT:\n${
|
|
58
|
+
throw new Error(`error during project initialization: ${e.stack}\nSTDOUT:\n${e.stdout?.toString()}\nSTDERR:\n${e.stderr?.toString()}`);
|
|
60
59
|
}
|
|
61
60
|
}
|
|
62
61
|
}
|
|
@@ -76,18 +75,17 @@ async function determineDeps() {
|
|
|
76
75
|
cdk8s_plus_version: cdk8sPlus.version,
|
|
77
76
|
constructs_version: constructsVersion,
|
|
78
77
|
jsii_version: jsii.version,
|
|
79
|
-
cdk8s_cli_spec: cdk8sTarballEscaped
|
|
78
|
+
cdk8s_cli_spec: cdk8sTarballEscaped ?? `^${cdk8sCli.version}`,
|
|
80
79
|
};
|
|
81
80
|
}
|
|
82
81
|
class ModuleVersion {
|
|
83
82
|
constructor(moduleName, options = {}) {
|
|
84
|
-
var _a;
|
|
85
83
|
this.moduleName = moduleName;
|
|
86
84
|
this.version = this.resolveVersion(moduleName);
|
|
87
85
|
this.npmVersion = this.version;
|
|
88
86
|
this.pypiVersion = pacmakv.toReleaseVersion(this.version, pacmak.TargetName.PYTHON);
|
|
89
87
|
this.mavenVersion = pacmakv.toReleaseVersion(this.version, pacmak.TargetName.JAVA);
|
|
90
|
-
this.jsii =
|
|
88
|
+
this.jsii = options.jsii ?? false;
|
|
91
89
|
}
|
|
92
90
|
get npmTarballFile() {
|
|
93
91
|
if (this.jsii) {
|
|
@@ -99,7 +97,7 @@ class ModuleVersion {
|
|
|
99
97
|
}
|
|
100
98
|
get pypiWheelFile() {
|
|
101
99
|
const [major, minor, patch, pre] = this.pypiVersion.split('.');
|
|
102
|
-
return `${this.moduleName.replace(/-/g, '_')}-${major}.${minor}.${patch}${pre
|
|
100
|
+
return `${this.moduleName.replace(/-/g, '_')}-${major}.${minor}.${patch}${pre ?? ''}-py3-none-any.whl`;
|
|
103
101
|
}
|
|
104
102
|
get javaJarFile() {
|
|
105
103
|
return `org/cdk8s/${this.moduleName}/${this.mavenVersion}/${this.moduleName}-${this.mavenVersion}.jar`;
|
|
@@ -122,4 +120,4 @@ class ModuleVersion {
|
|
|
122
120
|
}
|
|
123
121
|
}
|
|
124
122
|
module.exports = new Command();
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvY21kcy9pbml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsNkNBQStCO0FBQy9CLG9EQUFzQztBQUN0QywrRUFBaUU7QUFDakUsbUNBQWdDO0FBR2hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFdkQsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUV2RSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztBQUNyRCxNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFeEYsTUFBTSxPQUFPO0lBQWI7UUFDa0IsWUFBTyxHQUFHLFdBQVcsQ0FBQztRQUN0QixhQUFRLEdBQUcsNkNBQTZDLENBQUM7UUFDekQsWUFBTyxHQUFHLENBQUMsSUFBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSTthQUNqRCxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUM7YUFDaEUsY0FBYyxDQUFDLEtBQUssQ0FBQzthQUNyQixPQUFP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SyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVPLGNBQWMsQ0FBQyxNQUFjO1FBQ25DLElBQUksTUFBTSxLQUFLLFdBQVcsRUFBRTtZQUMxQixNQUFNLEdBQUcsV0FBVyxDQUFDO1NBQ3RCO1FBRUQsaUVBQWlFO1FBQ2pFLE9BQU8sT0FBTyxDQUFDLEdBQUcsTUFBTSxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDbkQsQ0FBQztDQUNGO0FBR0QsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIHBhY21hayBmcm9tICdqc2lpLXBhY21hayc7XG5pbXBvcnQgKiBhcyBwYWNtYWt2IGZyb20gJ2pzaWktcGFjbWFrL2xpYi90YXJnZXRzL3ZlcnNpb24tdXRpbHMnO1xuaW1wb3J0IHsgc3NjYWZmIH0gZnJvbSAnc3NjYWZmJztcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcblxuY29uc3QgcGtncm9vdCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICcuLicpO1xuXG5jb25zdCBwa2cgPSBmcy5yZWFkSnNvblN5bmMocGF0aC5qb2luKHBrZ3Jvb3QsICdwYWNrYWdlLmpzb24nKSk7XG5jb25zdCBjb25zdHJ1Y3RzVmVyc2lvbiA9IHBrZy5kZXBlbmRlbmNpZXMuY29uc3RydWN0cy5yZXBsYWNlKCdeJywgJycpO1xuXG5jb25zdCB0ZW1wbGF0ZXNEaXIgPSBwYXRoLmpvaW4ocGtncm9vdCwgJ3RlbXBsYXRlcycpO1xuY29uc3QgYXZhaWxhYmxlVGVtcGxhdGVzID0gZnMucmVhZGRpclN5bmModGVtcGxhdGVzRGlyKS5maWx0ZXIoeCA9PiAheC5zdGFydHNXaXRoKCcuJykpO1xuXG5jbGFzcyBDb21tYW5kIGltcGxlbWVudHMgeWFyZ3MuQ29tbWFuZE1vZHVsZSB7XG4gIHB1YmxpYyByZWFkb25seSBjb21tYW5kID0gJ2luaXQgVFlQRSc7XG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmliZSA9ICdDcmVhdGUgYSBuZXcgY2RrOHMgcHJvamVjdCBmcm9tIGEgdGVtcGxhdGUuJztcbiAgcHVibGljIHJlYWRvbmx5IGJ1aWxkZXIgPSAoYXJnczogeWFyZ3MuQXJndikgPT4gYXJnc1xuICAgIC5wb3NpdGlvbmFsKCdUWVBFJywgeyBkZW1hbmRPcHRpb246IHRydWUsIGRlc2M6ICdQcm9qZWN0IHR5cGUnIH0pXG4gICAgLnNob3dIZWxwT25GYWlsKGZhbHNlKVxuICAgIC5jaG9pY2VzKCdUWVBFJywgYXZhaWxhYmxlVGVtcGxhdGVzKTtcblxuICBwdWJsaWMgYXN5bmMgaGFuZGxlcihhcmd2OiBhbnkpIHtcbiAgICBpZiAoZnMucmVhZGRpclN5bmMoJy4nKS5maWx0ZXIoZiA9PiAhZi5zdGFydHNXaXRoKCcuJykpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Nhbm5vdCBpbml0aWFsaXplIGEgcHJvamVjdCBpbiBhIG5vbi1lbXB0eSBkaXJlY3RvcnknKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmVycm9yKGBJbml0aWFsaXppbmcgYSBwcm9qZWN0IGZyb20gdGhlICR7YXJndi50eXBlfSB0ZW1wbGF0ZWApO1xuICAgIGNvbnN0IHRlbXBsYXRlUGF0aCA9IHBhdGguam9pbih0ZW1wbGF0ZXNEaXIsIGFyZ3YudHlwZSk7XG4gICAgY29uc3QgZGVwczogYW55ID0gYXdhaXQgZGV0ZXJtaW5lRGVwcygpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHNzY2FmZih0ZW1wbGF0ZVBhdGgsICcuJywgZGVwcyk7XG4gICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgIGNvbnN0IGUgPSBlciBhcyBhbnk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGVycm9yIGR1cmluZyBwcm9qZWN0IGluaXRpYWxpemF0aW9uOiAke2Uuc3RhY2t9XFxuU1RET1VUOlxcbiR7ZS5zdGRvdXQ/LnRvU3RyaW5nKCl9XFxuU1RERVJSOlxcbiR7ZS5zdGRlcnI/LnRvU3RyaW5nKCl9YCk7XG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRldGVybWluZURlcHMoKTogUHJvbWlzZTxEZXBzPiB7XG4gIGNvbnN0IGNkazhzID0gbmV3IE1vZHVsZVZlcnNpb24oJ2NkazhzJywgeyBqc2lpOiB0cnVlIH0pO1xuICBjb25zdCBjZGs4c1BsdXMgPSBuZXcgTW9kdWxlVmVyc2lvbignY2RrOHMtcGx1cy0yOCcsIHsganNpaTogdHJ1ZSB9KTtcbiAgY29uc3QgY2RrOHNDbGkgPSBuZXcgTW9kdWxlVmVyc2lvbignY2RrOHMtY2xpJyk7XG4gIGNvbnN0IGpzaWkgPSBuZXcgTW9kdWxlVmVyc2lvbignanNpaS1wYWNtYWsnKTtcblxuICBjb25zdCBjZGs4c1RhcmJhbGwgPSBwcm9jZXNzLmVudi5DREs4U19UQVJCQUxMO1xuICBjb25zdCBjZGs4c1RhcmJhbGxFc2NhcGVkID0gY2RrOHNUYXJiYWxsID8gKGNkazhzVGFyYmFsbC5yZXBsYWNlKC9cXFxcL2csICdcXFxcXFxcXCcpKSA6IHVuZGVmaW5lZDtcblxuICByZXR1cm4ge1xuICAgIHB5cGlfY2RrOHM6IGNkazhzLnB5cGlEZXBlbmRlbmN5LFxuICAgIHB5cGlfY2RrOHNfcGx1czogY2RrOHNQbHVzLnB5cGlEZXBlbmRlbmN5LFxuICAgIG12bl9jZGs4czogY2RrOHMubWF2ZW5EZXBlbmRlbmN5LFxuICAgIG12bl9jZGs4c19wbHVzOiBjZGs4c1BsdXMubWF2ZW5EZXBlbmRlbmN5LFxuICAgIGNkazhzX2NvcmVfdmVyc2lvbjogY2RrOHMudmVyc2lvbixcbiAgICBjZGs4c19wbHVzX3ZlcnNpb246IGNkazhzUGx1cy52ZXJzaW9uLFxuICAgIGNvbnN0cnVjdHNfdmVyc2lvbjogY29uc3RydWN0c1ZlcnNpb24sXG4gICAganNpaV92ZXJzaW9uOiBqc2lpLnZlcnNpb24sXG4gICAgY2RrOHNfY2xpX3NwZWM6IGNkazhzVGFyYmFsbEVzY2FwZWQgPz8gYF4ke2NkazhzQ2xpLnZlcnNpb259YCxcbiAgfTtcbn1cblxuaW50ZXJmYWNlIERlcHMge1xuICBjZGs4c19jbGlfc3BlYzogc3RyaW5nO1xuICBweXBpX2NkazhzOiBzdHJpbmc7XG4gIHB5cGlfY2RrOHNfcGx1czogc3RyaW5nO1xuICBtdm5fY2RrOHM6IHN0cmluZztcbiAgbXZuX2NkazhzX3BsdXM6IHN0cmluZztcbiAgY2RrOHNfY29yZV92ZXJzaW9uOiBzdHJpbmc7XG4gIGNkazhzX3BsdXNfdmVyc2lvbjogc3RyaW5nO1xuICBjb25zdHJ1Y3RzX3ZlcnNpb246IHN0cmluZztcbiAganNpaV92ZXJzaW9uOiBzdHJpbmc7XG59XG5cbmNsYXNzIE1vZHVsZVZlcnNpb24ge1xuICBwdWJsaWMgcmVhZG9ubHkgcHlwaVZlcnNpb246IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IG5wbVZlcnNpb246IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IG1hdmVuVmVyc2lvbjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkganNpaTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG1vZHVsZU5hbWU6IHN0cmluZywgb3B0aW9uczogeyBqc2lpPzogYm9vbGVhbiB9ID0geyB9KSB7XG4gICAgdGhpcy52ZXJzaW9uID0gdGhpcy5yZXNvbHZlVmVyc2lvbihtb2R1bGVOYW1lKTtcbiAgICB0aGlzLm5wbVZlcnNpb24gPSB0aGlzLnZlcnNpb247XG4gICAgdGhpcy5weXBpVmVyc2lvbiA9IHBhY21ha3YudG9SZWxlYXNlVmVyc2lvbih0aGlzLnZlcnNpb24sIHBhY21hay5UYXJnZXROYW1lLlBZVEhPTik7XG4gICAgdGhpcy5tYXZlblZlcnNpb24gPSBwYWNtYWt2LnRvUmVsZWFzZVZlcnNpb24odGhpcy52ZXJzaW9uLCBwYWNtYWsuVGFyZ2V0TmFtZS5KQVZBKTtcbiAgICB0aGlzLmpzaWkgPSBvcHRpb25zLmpzaWkgPz8gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5wbVRhcmJhbGxGaWxlKCkge1xuICAgIGlmICh0aGlzLmpzaWkpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLm1vZHVsZU5hbWV9QCR7dGhpcy52ZXJzaW9ufS5qc2lpLnRnemA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLm1vZHVsZU5hbWV9LXYke3RoaXMudmVyc2lvbn0udGd6YDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHB5cGlXaGVlbEZpbGUoKSB7XG4gICAgY29uc3QgW21ham9yLCBtaW5vciwgcGF0Y2gsIHByZV0gPSB0aGlzLnB5cGlWZXJzaW9uLnNwbGl0KCcuJyk7XG4gICAgcmV0dXJuIGAke3RoaXMubW9kdWxlTmFtZS5yZXBsYWNlKC8tL2csICdfJyl9LSR7bWFqb3J9LiR7bWlub3J9LiR7cGF0Y2h9JHtwcmUgPz8gJyd9LXB5My1ub25lLWFueS53aGxgO1xuICB9XG5cbiAgcHVibGljIGdldCBqYXZhSmFyRmlsZSgpIHtcbiAgICByZXR1cm4gYG9yZy9jZGs4cy8ke3RoaXMubW9kdWxlTmFtZX0vJHt0aGlzLm1hdmVuVmVyc2lvbn0vJHt0aGlzLm1vZHVsZU5hbWV9LSR7dGhpcy5tYXZlblZlcnNpb259LmphcmA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5wbURlcGVuZGVuY3koKSB7XG4gICAgcmV0dXJuIGAke3RoaXMubW9kdWxlTmFtZX1AXiR7dGhpcy5ucG1WZXJzaW9ufWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHB5cGlEZXBlbmRlbmN5KCkge1xuICAgIHJldHVybiBgJHt0aGlzLm1vZHVsZU5hbWV9fj0ke3RoaXMucHlwaVZlcnNpb259YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWF2ZW5EZXBlbmRlbmN5KCkge1xuICAgIHJldHVybiB0aGlzLm1hdmVuVmVyc2lvbjtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVZlcnNpb24obW9kdWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChtb2R1bGUgPT09ICdjZGs4cy1jbGknKSB7XG4gICAgICBtb2R1bGUgPSAnLi4vLi4vLi4vJztcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgIHJldHVybiByZXF1aXJlKGAke21vZHVsZX0vcGFja2FnZS5qc29uYCkudmVyc2lvbjtcbiAgfVxufVxuXG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IENvbW1hbmQoKTtcbiJdfQ==
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvY21kcy9pbml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsNkNBQStCO0FBQy9CLG9EQUFzQztBQUN0QywrRUFBaUU7QUFDakUsbUNBQWdDO0FBR2hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFdkQsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUV2RSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztBQUNyRCxNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFeEYsTUFBTSxPQUFPO0lBQWI7UUFDa0IsWUFBTyxHQUFHLFdBQVcsQ0FBQztRQUN0QixhQUFRLEdBQUcsNkNBQTZDLENBQUM7UUFDekQsWUFBTyxHQUFHLENBQUMsSUFBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSTthQUNqRCxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUM7YUFDaEUsY0FBYyxDQUFDLEtBQUssQ0FBQzthQUNyQixPQUFP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QUcsSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVPLGNBQWMsQ0FBQyxNQUFjO1FBQ25DLElBQUksTUFBTSxLQUFLLFdBQVcsRUFBRTtZQUMxQixNQUFNLEdBQUcsV0FBVyxDQUFDO1NBQ3RCO1FBRUQsaUVBQWlFO1FBQ2pFLE9BQU8sT0FBTyxDQUFDLEdBQUcsTUFBTSxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDbkQsQ0FBQztDQUNGO0FBR0QsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIHBhY21hayBmcm9tICdqc2lpLXBhY21hayc7XG5pbXBvcnQgKiBhcyBwYWNtYWt2IGZyb20gJ2pzaWktcGFjbWFrL2xpYi90YXJnZXRzL3ZlcnNpb24tdXRpbHMnO1xuaW1wb3J0IHsgc3NjYWZmIH0gZnJvbSAnc3NjYWZmJztcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcblxuY29uc3QgcGtncm9vdCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICcuLicpO1xuXG5jb25zdCBwa2cgPSBmcy5yZWFkSnNvblN5bmMocGF0aC5qb2luKHBrZ3Jvb3QsICdwYWNrYWdlLmpzb24nKSk7XG5jb25zdCBjb25zdHJ1Y3RzVmVyc2lvbiA9IHBrZy5kZXBlbmRlbmNpZXMuY29uc3RydWN0cy5yZXBsYWNlKCdeJywgJycpO1xuXG5jb25zdCB0ZW1wbGF0ZXNEaXIgPSBwYXRoLmpvaW4ocGtncm9vdCwgJ3RlbXBsYXRlcycpO1xuY29uc3QgYXZhaWxhYmxlVGVtcGxhdGVzID0gZnMucmVhZGRpclN5bmModGVtcGxhdGVzRGlyKS5maWx0ZXIoeCA9PiAheC5zdGFydHNXaXRoKCcuJykpO1xuXG5jbGFzcyBDb21tYW5kIGltcGxlbWVudHMgeWFyZ3MuQ29tbWFuZE1vZHVsZSB7XG4gIHB1YmxpYyByZWFkb25seSBjb21tYW5kID0gJ2luaXQgVFlQRSc7XG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmliZSA9ICdDcmVhdGUgYSBuZXcgY2RrOHMgcHJvamVjdCBmcm9tIGEgdGVtcGxhdGUuJztcbiAgcHVibGljIHJlYWRvbmx5IGJ1aWxkZXIgPSAoYXJnczogeWFyZ3MuQXJndikgPT4gYXJnc1xuICAgIC5wb3NpdGlvbmFsKCdUWVBFJywgeyBkZW1hbmRPcHRpb246IHRydWUsIGRlc2M6ICdQcm9qZWN0IHR5cGUnIH0pXG4gICAgLnNob3dIZWxwT25GYWlsKGZhbHNlKVxuICAgIC5jaG9pY2VzKCdUWVBFJywgYXZhaWxhYmxlVGVtcGxhdGVzKTtcblxuICBwdWJsaWMgYXN5bmMgaGFuZGxlcihhcmd2OiBhbnkpIHtcbiAgICBpZiAoZnMucmVhZGRpclN5bmMoJy4nKS5maWx0ZXIoZiA9PiAhZi5zdGFydHNXaXRoKCcuJykpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Nhbm5vdCBpbml0aWFsaXplIGEgcHJvamVjdCBpbiBhIG5vbi1lbXB0eSBkaXJlY3RvcnknKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmVycm9yKGBJbml0aWFsaXppbmcgYSBwcm9qZWN0IGZyb20gdGhlICR7YXJndi50eXBlfSB0ZW1wbGF0ZWApO1xuICAgIGNvbnN0IHRlbXBsYXRlUGF0aCA9IHBhdGguam9pbih0ZW1wbGF0ZXNEaXIsIGFyZ3YudHlwZSk7XG4gICAgY29uc3QgZGVwczogYW55ID0gYXdhaXQgZGV0ZXJtaW5lRGVwcygpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHNzY2FmZih0ZW1wbGF0ZVBhdGgsICcuJywgZGVwcyk7XG4gICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgIGNvbnN0IGUgPSBlciBhcyBhbnk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGVycm9yIGR1cmluZyBwcm9qZWN0IGluaXRpYWxpemF0aW9uOiAke2Uuc3RhY2t9XFxuU1RET1VUOlxcbiR7ZS5zdGRvdXQ/LnRvU3RyaW5nKCl9XFxuU1RERVJSOlxcbiR7ZS5zdGRlcnI/LnRvU3RyaW5nKCl9YCk7XG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRldGVybWluZURlcHMoKTogUHJvbWlzZTxEZXBzPiB7XG4gIGNvbnN0IGNkazhzID0gbmV3IE1vZHVsZVZlcnNpb24oJ2NkazhzJywgeyBqc2lpOiB0cnVlIH0pO1xuICBjb25zdCBjZGs4c1BsdXMgPSBuZXcgTW9kdWxlVmVyc2lvbignY2RrOHMtcGx1cy0yOCcsIHsganNpaTogdHJ1ZSB9KTtcbiAgY29uc3QgY2RrOHNDbGkgPSBuZXcgTW9kdWxlVmVyc2lvbignY2RrOHMtY2xpJyk7XG4gIGNvbnN0IGpzaWkgPSBuZXcgTW9kdWxlVmVyc2lvbignanNpaS1wYWNtYWsnKTtcblxuICBjb25zdCBjZGs4c1RhcmJhbGwgPSBwcm9jZXNzLmVudi5DREs4U19UQVJCQUxMO1xuICBjb25zdCBjZGs4c1RhcmJhbGxFc2NhcGVkID0gY2RrOHNUYXJiYWxsID8gKGNkazhzVGFyYmFsbC5yZXBsYWNlKC9cXFxcL2csICdcXFxcXFxcXCcpKSA6IHVuZGVmaW5lZDtcblxuICByZXR1cm4ge1xuICAgIHB5cGlfY2RrOHM6IGNkazhzLnB5cGlEZXBlbmRlbmN5LFxuICAgIHB5cGlfY2RrOHNfcGx1czogY2RrOHNQbHVzLnB5cGlEZXBlbmRlbmN5LFxuICAgIG12bl9jZGs4czogY2RrOHMubWF2ZW5EZXBlbmRlbmN5LFxuICAgIG12bl9jZGs4c19wbHVzOiBjZGs4c1BsdXMubWF2ZW5EZXBlbmRlbmN5LFxuICAgIGNkazhzX2NvcmVfdmVyc2lvbjogY2RrOHMudmVyc2lvbixcbiAgICBjZGs4c19wbHVzX3ZlcnNpb246IGNkazhzUGx1cy52ZXJzaW9uLFxuICAgIGNvbnN0cnVjdHNfdmVyc2lvbjogY29uc3RydWN0c1ZlcnNpb24sXG4gICAganNpaV92ZXJzaW9uOiBqc2lpLnZlcnNpb24sXG4gICAgY2RrOHNfY2xpX3NwZWM6IGNkazhzVGFyYmFsbEVzY2FwZWQgPz8gYF4ke2NkazhzQ2xpLnZlcnNpb259YCxcbiAgfTtcbn1cblxuaW50ZXJmYWNlIERlcHMge1xuICBjZGs4c19jbGlfc3BlYzogc3RyaW5nO1xuICBweXBpX2NkazhzOiBzdHJpbmc7XG4gIHB5cGlfY2RrOHNfcGx1czogc3RyaW5nO1xuICBtdm5fY2RrOHM6IHN0cmluZztcbiAgbXZuX2NkazhzX3BsdXM6IHN0cmluZztcbiAgY2RrOHNfY29yZV92ZXJzaW9uOiBzdHJpbmc7XG4gIGNkazhzX3BsdXNfdmVyc2lvbjogc3RyaW5nO1xuICBjb25zdHJ1Y3RzX3ZlcnNpb246IHN0cmluZztcbiAganNpaV92ZXJzaW9uOiBzdHJpbmc7XG59XG5cbmNsYXNzIE1vZHVsZVZlcnNpb24ge1xuICBwdWJsaWMgcmVhZG9ubHkgcHlwaVZlcnNpb246IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IG5wbVZlcnNpb246IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IG1hdmVuVmVyc2lvbjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkganNpaTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG1vZHVsZU5hbWU6IHN0cmluZywgb3B0aW9uczogeyBqc2lpPzogYm9vbGVhbiB9ID0geyB9KSB7XG4gICAgdGhpcy52ZXJzaW9uID0gdGhpcy5yZXNvbHZlVmVyc2lvbihtb2R1bGVOYW1lKTtcbiAgICB0aGlzLm5wbVZlcnNpb24gPSB0aGlzLnZlcnNpb247XG4gICAgdGhpcy5weXBpVmVyc2lvbiA9IHBhY21ha3YudG9SZWxlYXNlVmVyc2lvbih0aGlzLnZlcnNpb24sIHBhY21hay5UYXJnZXROYW1lLlBZVEhPTik7XG4gICAgdGhpcy5tYXZlblZlcnNpb24gPSBwYWNtYWt2LnRvUmVsZWFzZVZlcnNpb24odGhpcy52ZXJzaW9uLCBwYWNtYWsuVGFyZ2V0TmFtZS5KQVZBKTtcbiAgICB0aGlzLmpzaWkgPSBvcHRpb25zLmpzaWkgPz8gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5wbVRhcmJhbGxGaWxlKCkge1xuICAgIGlmICh0aGlzLmpzaWkpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLm1vZHVsZU5hbWV9QCR7dGhpcy52ZXJzaW9ufS5qc2lpLnRnemA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLm1vZHVsZU5hbWV9LXYke3RoaXMudmVyc2lvbn0udGd6YDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHB5cGlXaGVlbEZpbGUoKSB7XG4gICAgY29uc3QgW21ham9yLCBtaW5vciwgcGF0Y2gsIHByZV0gPSB0aGlzLnB5cGlWZXJzaW9uLnNwbGl0KCcuJyk7XG4gICAgcmV0dXJuIGAke3RoaXMubW9kdWxlTmFtZS5yZXBsYWNlKC8tL2csICdfJyl9LSR7bWFqb3J9LiR7bWlub3J9LiR7cGF0Y2h9JHtwcmUgPz8gJyd9LXB5My1ub25lLWFueS53aGxgO1xuICB9XG5cbiAgcHVibGljIGdldCBqYXZhSmFyRmlsZSgpIHtcbiAgICByZXR1cm4gYG9yZy9jZGs4cy8ke3RoaXMubW9kdWxlTmFtZX0vJHt0aGlzLm1hdmVuVmVyc2lvbn0vJHt0aGlzLm1vZHVsZU5hbWV9LSR7dGhpcy5tYXZlblZlcnNpb259LmphcmA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5wbURlcGVuZGVuY3koKSB7XG4gICAgcmV0dXJuIGAke3RoaXMubW9kdWxlTmFtZX1AXiR7dGhpcy5ucG1WZXJzaW9ufWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHB5cGlEZXBlbmRlbmN5KCkge1xuICAgIHJldHVybiBgJHt0aGlzLm1vZHVsZU5hbWV9fj0ke3RoaXMucHlwaVZlcnNpb259YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWF2ZW5EZXBlbmRlbmN5KCkge1xuICAgIHJldHVybiB0aGlzLm1hdmVuVmVyc2lvbjtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVZlcnNpb24obW9kdWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChtb2R1bGUgPT09ICdjZGs4cy1jbGknKSB7XG4gICAgICBtb2R1bGUgPSAnLi4vLi4vLi4vJztcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgIHJldHVybiByZXF1aXJlKGAke21vZHVsZX0vcGFja2FnZS5qc29uYCkudmVyc2lvbjtcbiAgfVxufVxuXG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IENvbW1hbmQoKTtcbiJdfQ==
|
package/lib/cli/cmds/synth.js
CHANGED
|
@@ -47,7 +47,7 @@ class Command {
|
|
|
47
47
|
this.describe = 'Synthesizes Kubernetes manifests for all charts in your app.';
|
|
48
48
|
this.aliases = ['synthesize'];
|
|
49
49
|
this.builder = (args) => args
|
|
50
|
-
.option('app', { required: true, default: config
|
|
50
|
+
.option('app', { required: true, default: config?.app, desc: 'Command to use in order to execute cdk8s app', alias: 'a' })
|
|
51
51
|
.option('output', { required: false, desc: 'Output directory', alias: 'o' })
|
|
52
52
|
.option('stdout', { type: 'boolean', required: false, desc: 'Write synthesized manifests to STDOUT instead of the output directory', alias: 'p' })
|
|
53
53
|
.option('plugins-dir', { required: false, desc: 'Directory to store cdk8s plugins.' })
|
|
@@ -58,17 +58,16 @@ class Command {
|
|
|
58
58
|
.option('chart-version', { required: false, desc: 'Chart version of helm chart. This is required if synthesis format is helm.' });
|
|
59
59
|
}
|
|
60
60
|
async handler(argv) {
|
|
61
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
62
61
|
const command = argv.app;
|
|
63
62
|
const stdout = argv.stdout;
|
|
64
|
-
const outdir =
|
|
65
|
-
const validate =
|
|
63
|
+
const outdir = argv.output ?? config?.output ?? (!stdout ? DEFAULT_OUTPUT_DIR : undefined);
|
|
64
|
+
const validate = argv.validate ?? true;
|
|
66
65
|
const reportFile = argv.validationReportsOutputFile;
|
|
67
|
-
const pluginsDir =
|
|
68
|
-
const format =
|
|
69
|
-
const chartVersion =
|
|
70
|
-
const chartApiVersion =
|
|
71
|
-
if (outdir && outdir !==
|
|
66
|
+
const pluginsDir = argv.pluginsDir ?? config?.pluginsDirectory ?? DEFAULT_PLUGINS_DIR;
|
|
67
|
+
const format = argv.format ?? config?.synthConfig?.format ?? config_1.SynthesisFormat.PLAIN;
|
|
68
|
+
const chartVersion = argv.chartVersion ?? config?.synthConfig?.chartVersion;
|
|
69
|
+
const chartApiVersion = argv.chartApiVersion ?? config?.synthConfig?.chartApiVersion ?? getDefaultChartApiVersion(format);
|
|
70
|
+
if (outdir && outdir !== config?.output && stdout) {
|
|
72
71
|
throw new Error('\'--output\' and \'--stdout\' are mutually exclusive. Please only use one.');
|
|
73
72
|
}
|
|
74
73
|
if (outdir) {
|
|
@@ -95,7 +94,7 @@ class Command {
|
|
|
95
94
|
if (format === config_1.SynthesisFormat.PLAIN && chartVersion) {
|
|
96
95
|
throw new Error('You need to specify \'--format\' as \'helm\' when \'--chart-version\' is set.');
|
|
97
96
|
}
|
|
98
|
-
if (chartApiVersion === config_1.HelmChartApiVersion.V1 && (0, util_1.crdsArePresent)(config
|
|
97
|
+
if (chartApiVersion === config_1.HelmChartApiVersion.V1 && (0, util_1.crdsArePresent)(config?.imports)) {
|
|
99
98
|
throw new Error(`Your application uses CRDs, which are not supported when '--chart-api-version' is set to ${config_1.HelmChartApiVersion.V1}. Please either set '--chart-api-version' to ${config_1.HelmChartApiVersion.V2}, or remove the CRDs from your cdk8s.yaml configuration file`);
|
|
100
99
|
}
|
|
101
100
|
const validations = validate ? await fetchValidations() : undefined;
|
|
@@ -130,12 +129,12 @@ class Command {
|
|
|
130
129
|
}
|
|
131
130
|
}
|
|
132
131
|
async function fetchValidations() {
|
|
133
|
-
if (typeof (config
|
|
132
|
+
if (typeof (config?.validations) === 'string') {
|
|
134
133
|
const content = await (0, util_1.download)(config.validations);
|
|
135
134
|
return yaml.parse(content);
|
|
136
135
|
}
|
|
137
136
|
else {
|
|
138
|
-
return config
|
|
137
|
+
return config?.validations;
|
|
139
138
|
}
|
|
140
139
|
}
|
|
141
140
|
async function createHelmScaffolding(apiVersion, chartVersion, outdir) {
|
|
@@ -151,7 +150,7 @@ async function createHelmScaffolding(apiVersion, chartVersion, outdir) {
|
|
|
151
150
|
finally {
|
|
152
151
|
fs.rmSync(tempHelmStructure, { recursive: true });
|
|
153
152
|
}
|
|
154
|
-
if (apiVersion === config_1.HelmChartApiVersion.V2 && (0, util_1.crdsArePresent)(config
|
|
153
|
+
if (apiVersion === config_1.HelmChartApiVersion.V2 && (0, util_1.crdsArePresent)(config?.imports)) {
|
|
155
154
|
await addCrdsToHelmChart(outdir);
|
|
156
155
|
}
|
|
157
156
|
function createFolderStructure() {
|
|
@@ -171,8 +170,7 @@ async function createHelmScaffolding(apiVersion, chartVersion, outdir) {
|
|
|
171
170
|
}
|
|
172
171
|
}
|
|
173
172
|
async function addCrdsToHelmChart(chartDir) {
|
|
174
|
-
|
|
175
|
-
const crds = ((_a = config === null || config === void 0 ? void 0 : config.imports) !== null && _a !== void 0 ? _a : []).filter((imprt) => (!(0, util_1.isK8sImport)(imprt) && !(0, util_1.isHelmImport)(imprt)));
|
|
173
|
+
const crds = (config?.imports ?? []).filter((imprt) => (!(0, util_1.isK8sImport)(imprt) && !(0, util_1.isHelmImport)(imprt)));
|
|
176
174
|
for (const crd of crds) {
|
|
177
175
|
const importSpec = (0, util_1.parseImports)(crd);
|
|
178
176
|
const importedCrdDef = await (0, dispatch_1.matchImporter)(importSpec, process.argv);
|
|
@@ -185,4 +183,4 @@ function getDefaultChartApiVersion(synthFormat) {
|
|
|
185
183
|
return (synthFormat === config_1.SynthesisFormat.HELM) ? config_1.HelmChartApiVersion.V2 : undefined;
|
|
186
184
|
}
|
|
187
185
|
module.exports = new Command();
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ludGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NtZHMvc3ludGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QixnREFBd0I7QUFDeEIsNkNBQStCO0FBQy9CLCtDQUFpQztBQUNqQyxtQ0FBZ0M7QUFDaEMsMkNBQTZCO0FBRTdCLHlDQUFzRztBQUV0RyxvREFBc0Q7QUFDdEQscURBQXVEO0FBQ3ZELHFDQUErSjtBQUUvSixNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUM7QUFDckMsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDO0FBQzNCLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDO0FBQ2xDLE1BQU0sbUJBQW1CLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRXpFLE1BQU0sTUFBTSxHQUFHLElBQUEsdUJBQWMsR0FBRSxDQUFDO0FBRWhDLE1BQU0sT0FBTztJQUFiO1FBQ2tCLFlBQU8sR0FBRyxPQUFPLENBQUM7UUFDbEIsYUFBUSxHQUFHLDhEQUE4RCxDQUFDO1FBQzFFLFlBQU8sR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXpCLFlBQU8sR0FBRyxDQUFDLElBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUk7YUFDakQsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLDhDQUE4QyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQzthQUN6SCxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFB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QUFDO0FBQ3BGLENBQUM7QUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHsgc3NjYWZmIH0gZnJvbSAnc3NjYWZmJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAneWFtbCc7XG5pbXBvcnQgKiBhcyB5YXJncyBmcm9tICd5YXJncyc7XG5pbXBvcnQgeyBIZWxtQ2hhcnRBcGlWZXJzaW9uLCBTeW50aGVzaXNGb3JtYXQsIFZhbGlkYXRpb25Db25maWcsIHJlYWRDb25maWdTeW5jIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcbmltcG9ydCB7IEltcG9ydEN1c3RvbVJlc291cmNlRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2ltcG9ydC9jcmQnO1xuaW1wb3J0IHsgbWF0Y2hJbXBvcnRlciB9IGZyb20gJy4uLy4uL2ltcG9ydC9kaXNwYXRjaCc7XG5pbXBvcnQgeyBQbHVnaW5NYW5hZ2VyIH0gZnJvbSAnLi4vLi4vcGx1Z2lucy9fbWFuYWdlcic7XG5pbXBvcnQgeyBTeW50aGVzaXplZEFwcCwgY3Jkc0FyZVByZXNlbnQsIGRlcml2ZUZpbGVOYW1lLCBkb3dubG9hZCwgaXNIZWxtSW1wb3J0LCBpc0s4c0ltcG9ydCwgbWtkdGVtcCwgcGFyc2VJbXBvcnRzLCBzeW50aEFwcCwgdmFsaWRhdGVBcHAgfSBmcm9tICcuLi8uLi91dGlsJztcblxuY29uc3QgQ0hBUlRfWUFNTF9GSUxFID0gJ0NoYXJ0LnlhbWwnO1xuY29uc3QgUkVBRE1FID0gJ1JFQURNRS5tZCc7XG5jb25zdCBERUZBVUxUX09VVFBVVF9ESVIgPSAnZGlzdCc7XG5jb25zdCBERUZBVUxUX1BMVUdJTlNfRElSID0gcGF0aC5qb2luKG9zLmhvbWVkaXIoKSwgJy5jZGs4cycsICdwbHVnaW5zJyk7XG5cbmNvbnN0IGNvbmZpZyA9IHJlYWRDb25maWdTeW5jKCk7XG5cbmNsYXNzIENvbW1hbmQgaW1wbGVtZW50cyB5YXJncy5Db21tYW5kTW9kdWxlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNvbW1hbmQgPSAnc3ludGgnO1xuICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpYmUgPSAnU3ludGhlc2l6ZXMgS3ViZXJuZXRlcyBtYW5pZmVzdHMgZm9yIGFsbCBjaGFydHMgaW4geW91ciBhcHAuJztcbiAgcHVibGljIHJlYWRvbmx5IGFsaWFzZXMgPSBbJ3N5bnRoZXNpemUnXTtcblxuICBwdWJsaWMgcmVhZG9ubHkgYnVpbGRlciA9IChhcmdzOiB5YXJncy5Bcmd2KSA9PiBhcmdzXG4gICAgLm9wdGlvbignYXBwJywgeyByZXF1aXJlZDogdHJ1ZSwgZGVmYXVsdDogY29uZmlnPy5hcHAsIGRlc2M6ICdDb21tYW5kIHRvIHVzZSBpbiBvcmRlciB0byBleGVjdXRlIGNkazhzIGFwcCcsIGFsaWFzOiAnYScgfSlcbiAgICAub3B0aW9uKCdvdXRwdXQnLCB7IHJlcXVpcmVkOiBmYWxzZSwgZGVzYzogJ091dHB1dCBkaXJlY3RvcnknLCBhbGlhczogJ28nIH0pXG4gICAgLm9wdGlvbignc3Rkb3V0JywgeyB0eXBlOiAnYm9vbGVhbicsIHJlcXVpcmVkOiBmYWxzZSwgZGVzYzogJ1dyaXRlIHN5bnRoZXNpemVkIG1hbmlmZXN0cyB0byBTVERPVVQgaW5zdGVhZCBvZiB0aGUgb3V0cHV0IGRpcmVjdG9yeScsIGFsaWFzOiAncCcgfSlcbiAgICAub3B0aW9uKCdwbHVnaW5zLWRpcicsIHsgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjOiAnRGlyZWN0b3J5IHRvIHN0b3JlIGNkazhzIHBsdWdpbnMuJyB9KVxuICAgIC5vcHRpb24oJ3ZhbGlkYXRlJywgeyB0eXBlOiAnYm9vbGVhbicsIHJlcXVpcmVkOiBmYWxzZSwgZGVzYzogJ0FwcGx5IHZhbGlkYXRpb24gcGx1Z2lucyBvbiB0aGUgcmVzdWx0aW5nIG1hbmlmZXN0cyAodXNlIC0tbm8tdmFsaWRhdGUgdG8gZGlzYWJsZSknIH0pXG4gICAgLm9wdGlvbigndmFsaWRhdGlvbi1yZXBvcnRzLW91dHB1dC1maWxlJywgeyByZXF1aXJlZDogZmFsc2UsIGRlc2M6ICdGaWxlIHRvIHdyaXRlIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsaWRhdGlvbiByZXBvcnRzIHRvJyB9KVxuICAgIC5vcHRpb24oJ2Zvcm1hdCcsIHsgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjOiAnU3ludGhlc2lzIGZvcm1hdCBmb3IgS3ViZXJuZXRlcyBtYW5pZmVzdHMuIFRoZSBkZWZhdWx0IHN5bnRoZXNpcyBmb3JtYXQgaXMgcGxhaW4ga3ViZXJuZXRlcyBtYW5pZmVzdHMuJywgdHlwZTogJ3N0cmluZycgfSlcbiAgICAub3B0aW9uKCdjaGFydC1hcGktdmVyc2lvbicsIHsgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjOiAnQ2hhcnQgQVBJIHZlcnNpb24gb2YgaGVsbSBjaGFydC4gVGhlIGRlZmF1bHQgdmFsdWUgd291bGQgYmUgXFwndjJcXCcgYXBpIHZlcnNpb24gd2hlbiBzeW50aGVzaXMgZm9ybWF0IGlzIGhlbG0uIFRoZXJlIGlzIG5vIGRlZmF1bHQgc2V0IHdoZW4gc3ludGhlc2lzIGZvcm1hdCBpcyBwbGFpbi4nLCB0eXBlOiAnc3RyaW5nJyB9KVxuICAgIC5vcHRpb24oJ2NoYXJ0LXZlcnNpb24nLCB7IHJlcXVpcmVkOiBmYWxzZSwgZGVzYzogJ0NoYXJ0IHZlcnNpb24gb2YgaGVsbSBjaGFydC4gVGhpcyBpcyByZXF1aXJlZCBpZiBzeW50aGVzaXMgZm9ybWF0IGlzIGhlbG0uJyB9KTtcblxuICBwdWJsaWMgYXN5bmMgaGFuZGxlcihhcmd2OiBhbnkpIHtcblxuICAgIGNvbnN0IGNvbW1hbmQgPSBhcmd2LmFwcDtcbiAgICBjb25zdCBzdGRvdXQgPSBhcmd2LnN0ZG91dDtcbiAgICBjb25zdCBvdXRkaXIgPSBhcmd2Lm91dHB1dCA/PyBjb25maWc/Lm91dHB1dCA/PyAoIXN0ZG91dCA/IERFRkFVTFRfT1VUUFVUX0RJUiA6IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgdmFsaWRhdGUgPSBhcmd2LnZhbGlkYXRlID8/IHRydWU7XG4gICAgY29uc3QgcmVwb3J0RmlsZSA9IGFyZ3YudmFsaWRhdGlvblJlcG9ydHNPdXRwdXRGaWxlO1xuICAgIGNvbnN0IHBsdWdpbnNEaXIgPSBhcmd2LnBsdWdpbnNEaXIgPz8gY29uZmlnPy5wbHVnaW5zRGlyZWN0b3J5ID8/IERFRkFVTFRfUExVR0lOU19ESVI7XG4gICAgY29uc3QgZm9ybWF0ID0gYXJndi5mb3JtYXQgPz8gY29uZmlnPy5zeW50aENvbmZpZz8uZm9ybWF0ID8/IFN5bnRoZXNpc0Zvcm1hdC5QTEFJTjtcbiAgICBjb25zdCBjaGFydFZlcnNpb24gPSBhcmd2LmNoYXJ0VmVyc2lvbiA/PyBjb25maWc/LnN5bnRoQ29uZmlnPy5jaGFydFZlcnNpb247XG4gICAgY29uc3QgY2hhcnRBcGlWZXJzaW9uID0gYXJndi5jaGFydEFwaVZlcnNpb24gPz8gY29uZmlnPy5zeW50aENvbmZpZz8uY2hhcnRBcGlWZXJzaW9uID8/IGdldERlZmF1bHRDaGFydEFwaVZlcnNpb24oZm9ybWF0KTtcblxuICAgIGlmIChvdXRkaXIgJiYgb3V0ZGlyICE9PSBjb25maWc/Lm91dHB1dCAmJiBzdGRvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignXFwnLS1vdXRwdXRcXCcgYW5kIFxcJy0tc3Rkb3V0XFwnIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIFBsZWFzZSBvbmx5IHVzZSBvbmUuJyk7XG4gICAgfVxuXG4gICAgaWYgKG91dGRpcikge1xuICAgICAgZnMucm1TeW5jKG91dGRpciwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIGlmIChmb3JtYXQgIT0gU3ludGhlc2lzRm9ybWF0LlBMQUlOICYmIGZvcm1hdCAhPSBTeW50aGVzaXNGb3JtYXQuSEVMTSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgbmVlZCB0byBzcGVjaWZ5IHN5bnRoZXNpcyBmb3JtYXQgZWl0aGVyIGFzICR7U3ludGhlc2lzRm9ybWF0LlBMQUlOfSBvciAke1N5bnRoZXNpc0Zvcm1hdC5IRUxNfSBidXQgcmVjZWl2ZWQ6ICR7Zm9ybWF0fWApO1xuICAgIH1cblxuICAgIGlmIChjaGFydEFwaVZlcnNpb24gJiYgKGNoYXJ0QXBpVmVyc2lvbiAhPSBIZWxtQ2hhcnRBcGlWZXJzaW9uLlYxICYmIGNoYXJ0QXBpVmVyc2lvbiAhPSBIZWxtQ2hhcnRBcGlWZXJzaW9uLlYyKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgbmVlZCB0byBzcGVjaWZ5IGhlbG0gY2hhcnQgYXBpIHZlcnNpb24gZWl0aGVyIGFzICR7SGVsbUNoYXJ0QXBpVmVyc2lvbi5WMX0gb3IgJHtIZWxtQ2hhcnRBcGlWZXJzaW9uLlYyfSBidXQgcmVjZWl2ZWQ6ICR7Y2hhcnRBcGlWZXJzaW9ufWApO1xuICAgIH1cblxuICAgIGlmIChmb3JtYXQgPT09IFN5bnRoZXNpc0Zvcm1hdC5IRUxNICYmICFjaGFydFZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG5lZWQgdG8gc3BlY2lmeSBcXCctLWNoYXJ0LXZlcnNpb25cXCcgd2hlbiBcXCctLWZvcm1hdFxcJyBpcyBzZXQgYXMgXFwnaGVsbVxcJy4nKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhcnRWZXJzaW9uICYmICFzZW12ZXIudmFsaWQoY2hhcnRWZXJzaW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgdmFsdWUgc3BlY2lmaWVkIGZvciAnLS1jaGFydC12ZXJzaW9uJzogJHtjaGFydFZlcnNpb259IGRvZXMgbm90IGZvbGxvdyBTZW1WZXItMihodHRwczovL3NlbXZlci5vcmcvKS5gKTtcbiAgICB9XG5cbiAgICBpZiAoc3Rkb3V0ICYmIGZvcm1hdCA9PT0gU3ludGhlc2lzRm9ybWF0LkhFTE0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSGVsbSBmb3JtYXQgc3ludGhlc2lzIGRvZXMgbm90IHN1cHBvcnQgXFwnc3Rkb3V0XFwnLiBQbGVhc2UgdXNlIFxcJ291dGRpclxcJyBpbnN0ZWFkLicpO1xuICAgIH1cblxuICAgIGlmIChmb3JtYXQgPT09IFN5bnRoZXNpc0Zvcm1hdC5QTEFJTiAmJiBjaGFydEFwaVZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG5lZWQgdG8gc3BlY2lmeSBcXCctLWZvcm1hdFxcJyBhcyBcXCdoZWxtXFwnIHdoZW4gXFwnLS1jaGFydC1hcGktdmVyc2lvblxcJyBpcyBzZXQuJyk7XG4gICAgfVxuXG4gICAgaWYgKGZvcm1hdCA9PT0gU3ludGhlc2lzRm9ybWF0LlBMQUlOICYmIGNoYXJ0VmVyc2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbmVlZCB0byBzcGVjaWZ5IFxcJy0tZm9ybWF0XFwnIGFzIFxcJ2hlbG1cXCcgd2hlbiBcXCctLWNoYXJ0LXZlcnNpb25cXCcgaXMgc2V0LicpO1xuICAgIH1cblxuICAgIGlmIChjaGFydEFwaVZlcnNpb24gPT09IEhlbG1DaGFydEFwaVZlcnNpb24uVjEgJiYgY3Jkc0FyZVByZXNlbnQoY29uZmlnPy5pbXBvcnRzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3VyIGFwcGxpY2F0aW9uIHVzZXMgQ1JEcywgd2hpY2ggYXJlIG5vdCBzdXBwb3J0ZWQgd2hlbiAnLS1jaGFydC1hcGktdmVyc2lvbicgaXMgc2V0IHRvICR7SGVsbUNoYXJ0QXBpVmVyc2lvbi5WMX0uIFBsZWFzZSBlaXRoZXIgc2V0ICctLWNoYXJ0LWFwaS12ZXJzaW9uJyB0byAke0hlbG1DaGFydEFwaVZlcnNpb24uVjJ9LCBvciByZW1vdmUgdGhlIENSRHMgZnJvbSB5b3VyIGNkazhzLnlhbWwgY29uZmlndXJhdGlvbiBmaWxlYCk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdGlvbnMgPSB2YWxpZGF0ZSA/IGF3YWl0IGZldGNoVmFsaWRhdGlvbnMoKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCByZWNvcmRDb25zdHJ1Y3RNZXRhZGF0YSA9ICEodmFsaWRhdGlvbnMgPT0gdW5kZWZpbmVkIHx8IHZhbGlkYXRpb25zLmxlbmd0aCA9PSAwKTtcblxuICAgIGlmIChzdGRvdXQpIHtcbiAgICAgIGF3YWl0IG1rZHRlbXAoYXN5bmMgdGVtcERpciA9PiB7XG4gICAgICAgIGNvbnN0IGFwcCA9IGF3YWl0IHN5bnRoQXBwKGNvbW1hbmQsIHRlbXBEaXIsIHN0ZG91dCwgcmVjb3JkQ29uc3RydWN0TWV0YWRhdGEpO1xuICAgICAgICBmb3IgKGNvbnN0IGYgb2YgYXBwLm1hbmlmZXN0cykge1xuICAgICAgICAgIGZzLmNyZWF0ZVJlYWRTdHJlYW0oZikucGlwZShwcm9jZXNzLnN0ZG91dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbGlkYXRpb25zKSB7XG4gICAgICAgICAgY29uc3QgcGx1Z2luTWFuYWdlciA9IG5ldyBQbHVnaW5NYW5hZ2VyKHBsdWdpbnNEaXIpO1xuICAgICAgICAgIGF3YWl0IHZhbGlkYXRlQXBwKGFwcCwgc3Rkb3V0LCB2YWxpZGF0aW9ucywgcGx1Z2luTWFuYWdlciwgcmVwb3J0RmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbWFuaWZlc3RzOiBTeW50aGVzaXplZEFwcDtcblxuICAgICAgaWYgKGZvcm1hdCA9PT0gU3ludGhlc2lzRm9ybWF0LkhFTE0pIHtcbiAgICAgICAgYXdhaXQgY3JlYXRlSGVsbVNjYWZmb2xkaW5nKGNoYXJ0QXBpVmVyc2lvbiwgY2hhcnRWZXJzaW9uLCBvdXRkaXIpO1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZURpciA9IHBhdGguam9pbihvdXRkaXIsICd0ZW1wbGF0ZXMnKTtcblxuICAgICAgICBtYW5pZmVzdHMgPSBhd2FpdCBzeW50aEFwcChjb21tYW5kLCB0ZW1wbGF0ZURpciwgc3Rkb3V0LCByZWNvcmRDb25zdHJ1Y3RNZXRhZGF0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYW5pZmVzdHMgPSBhd2FpdCBzeW50aEFwcChjb21tYW5kLCBvdXRkaXIsIHN0ZG91dCwgcmVjb3JkQ29uc3RydWN0TWV0YWRhdGEpO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsaWRhdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcGx1Z2luTWFuYWdlciA9IG5ldyBQbHVnaW5NYW5hZ2VyKHBsdWdpbnNEaXIpO1xuICAgICAgICBhd2FpdCB2YWxpZGF0ZUFwcChtYW5pZmVzdHMsIHN0ZG91dCwgdmFsaWRhdGlvbnMsIHBsdWdpbk1hbmFnZXIsIHJlcG9ydEZpbGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVmFsaWRhdGlvbnMoKTogUHJvbWlzZTxWYWxpZGF0aW9uQ29uZmlnW10gfCB1bmRlZmluZWQ+IHtcbiAgaWYgKHR5cGVvZihjb25maWc/LnZhbGlkYXRpb25zKSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZG93bmxvYWQoY29uZmlnLnZhbGlkYXRpb25zKTtcbiAgICByZXR1cm4geWFtbC5wYXJzZShjb250ZW50KSBhcyBWYWxpZGF0aW9uQ29uZmlnW107XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNvbmZpZz8udmFsaWRhdGlvbnM7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlSGVsbVNjYWZmb2xkaW5nKGFwaVZlcnNpb246IHN0cmluZywgY2hhcnRWZXJzaW9uOiBzdHJpbmcsIG91dGRpcjogc3RyaW5nKSB7XG4gIGNvbnN0IHRlbXBIZWxtU3RydWN0dXJlID0gY3JlYXRlRm9sZGVyU3RydWN0dXJlKCk7XG5cbiAgY29uc3Qgc3Vic3RpdHV0ZVZhbHVlcyA9IHtcbiAgICBhcGlWZXJzaW9uOiBhcGlWZXJzaW9uLFxuICAgIHZlcnNpb246IGNoYXJ0VmVyc2lvbixcbiAgICBhcHA6IHBhdGguYmFzZW5hbWUocGF0aC5yZXNvbHZlKCkpLFxuICB9O1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgc3NjYWZmKHRlbXBIZWxtU3RydWN0dXJlLCBvdXRkaXIsIHN1YnN0aXR1dGVWYWx1ZXMpO1xuICB9IGZpbmFsbHkge1xuICAgIGZzLnJtU3luYyh0ZW1wSGVsbVN0cnVjdHVyZSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIH1cblxuXG4gIGlmIChhcGlWZXJzaW9uID09PSBIZWxtQ2hhcnRBcGlWZXJzaW9uLlYyICYmIGNyZHNBcmVQcmVzZW50KGNvbmZpZz8uaW1wb3J0cykpIHtcbiAgICBhd2FpdCBhZGRDcmRzVG9IZWxtQ2hhcnQob3V0ZGlyKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUZvbGRlclN0cnVjdHVyZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJvb3QgPSBmcy5ta2R0ZW1wU3luYyhwYXRoLmpvaW4ob3MudG1wZGlyKCksICdoZWxtLXNjYWZmb2xkaW5nLScpKTtcblxuICAgIGZzLm1rZGlyU3luYyhwYXRoLmpvaW4ocm9vdCwgJ3RlbXBsYXRlcycpKTtcblxuICAgIGNvbnN0IGNoYXJ0WWFtbEZpbGUgPSB7XG4gICAgICBhcGlWZXJzaW9uOiAne3sgYXBpVmVyc2lvbiB9fScsXG4gICAgICBuYW1lOiAne3sgYXBwIH19JyxcbiAgICAgIHZlcnNpb246ICd7eyB2ZXJzaW9uIH19JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnR2VuZXJhdGVkIGNoYXJ0IGZvciB7eyBhcHAgfX0nLFxuICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uJyxcbiAgICB9O1xuXG4gICAgZnMub3V0cHV0RmlsZVN5bmMocGF0aC5qb2luKHJvb3QsIENIQVJUX1lBTUxfRklMRSksIHlhbWwuc3RyaW5naWZ5KGNoYXJ0WWFtbEZpbGUpKTtcblxuICAgIGNvbnN0IHJlYWRtZUZpbGUgPSAnVGhpcyBIZWxtIGNoYXJ0IGlzIGdlbmVyYXRlZCB1c2luZyBjZGs4cy4gQW55IG1hbnVhbCBjaGFuZ2VzIHRvIHRoZSBjaGFydCB3b3VsZCBiZSBkaXNjYXJkZWQgb25jZSBjZGs4cyBhcHAgaXMgc3ludGhlc2l6ZWQgYWdhaW4gd2l0aCBgLS1mb3JtYXQgaGVsbWAuJztcblxuICAgIGZzLm91dHB1dEZpbGVTeW5jKHBhdGguam9pbihyb290LCBSRUFETUUpLCByZWFkbWVGaWxlKTtcblxuICAgIHJldHVybiByb290O1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFkZENyZHNUb0hlbG1DaGFydChjaGFydERpcjogc3RyaW5nKSB7XG4gIGNvbnN0IGNyZHMgPSAoY29uZmlnPy5pbXBvcnRzID8/IFtdKS5maWx0ZXIoKGltcHJ0KSA9PiAoIWlzSzhzSW1wb3J0KGltcHJ0KSAmJiAhaXNIZWxtSW1wb3J0KGltcHJ0KSkpO1xuXG4gIGZvciAoY29uc3QgY3JkIG9mIGNyZHMpIHtcbiAgICBjb25zdCBpbXBvcnRTcGVjID0gcGFyc2VJbXBvcnRzKGNyZCk7XG4gICAgY29uc3QgaW1wb3J0ZWRDcmREZWYgPSBhd2FpdCBtYXRjaEltcG9ydGVyKGltcG9ydFNwZWMsIHByb2Nlc3MuYXJndikgYXMgSW1wb3J0Q3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uO1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gaW1wb3J0ZWRDcmREZWYucmF3TWFuaWZlc3Q7XG5cbiAgICBjb25zdCBmaWxlbmFtZSA9IGRlcml2ZUZpbGVOYW1lKGltcG9ydFNwZWMuc291cmNlKTtcblxuICAgIGZzLm91dHB1dEZpbGVTeW5jKHBhdGguam9pbihjaGFydERpciwgJ2NyZHMnLCBgJHtmaWxlbmFtZX0ueWFtbGApLCBtYW5pZmVzdCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdENoYXJ0QXBpVmVyc2lvbihzeW50aEZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIChzeW50aEZvcm1hdCA9PT0gU3ludGhlc2lzRm9ybWF0LkhFTE0pID8gSGVsbUNoYXJ0QXBpVmVyc2lvbi5WMjogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBDb21tYW5kKCk7Il19
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ludGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NtZHMvc3ludGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QixnREFBd0I7QUFDeEIsNkNBQStCO0FBQy9CLCtDQUFpQztBQUNqQyxtQ0FBZ0M7QUFDaEMsMkNBQTZCO0FBRTdCLHlDQUFzRztBQUV0RyxvREFBc0Q7QUFDdEQscURBQXVEO0FBQ3ZELHFDQUErSjtBQUUvSixNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUM7QUFDckMsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDO0FBQzNCLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDO0FBQ2xDLE1BQU0sbUJBQW1CLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRXpFLE1BQU0sTUFBTSxHQUFHLElBQUEsdUJBQWMsR0FBRSxDQUFDO0FBRWhDLE1BQU0sT0FBTztJQUFiO1FBQ2tCLFlBQU8sR0FBRyxPQUFPLENBQUM7UUFDbEIsYUFBUSxHQUFHLDhEQUE4RCxDQUFDO1FBQzFFLFlBQU8sR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXpCLFlBQU8sR0FBRyxDQUFDLElBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUk7YUFDakQsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLDhDQUE4QyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQzthQUN6SCxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQzNFLE1BQU0sQ0FB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QSxtQkFBWSxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV0RyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtRQUN0QixNQUFNLFVBQVUsR0FBRyxJQUFBLG1CQUFZLEVBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFBLHdCQUFhLEVBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQW1DLENBQUM7UUFDdkcsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLFdBQVcsQ0FBQztRQUU1QyxNQUFNLFFBQVEsR0FBRyxJQUFBLHFCQUFjLEVBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5ELEVBQUUsQ0FBQyxjQUFjLENBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsUUFBUSxPQUFPLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztLQUM5RTtBQUNILENBQUM7QUFFRCxTQUFTLHlCQUF5QixDQUFDLFdBQW1CO0lBQ3BELE9BQU8sQ0FBQyxXQUFXLEtBQUssd0JBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsNEJBQW1CLENBQUMsRUFBRSxDQUFBLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDcEYsQ0FBQztBQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgeyBzc2NhZmYgfSBmcm9tICdzc2NhZmYnO1xuaW1wb3J0ICogYXMgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCB7IEhlbG1DaGFydEFwaVZlcnNpb24sIFN5bnRoZXNpc0Zvcm1hdCwgVmFsaWRhdGlvbkNvbmZpZywgcmVhZENvbmZpZ1N5bmMgfSBmcm9tICcuLi8uLi9jb25maWcnO1xuaW1wb3J0IHsgSW1wb3J0Q3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vaW1wb3J0L2NyZCc7XG5pbXBvcnQgeyBtYXRjaEltcG9ydGVyIH0gZnJvbSAnLi4vLi4vaW1wb3J0L2Rpc3BhdGNoJztcbmltcG9ydCB7IFBsdWdpbk1hbmFnZXIgfSBmcm9tICcuLi8uLi9wbHVnaW5zL19tYW5hZ2VyJztcbmltcG9ydCB7IFN5bnRoZXNpemVkQXBwLCBjcmRzQXJlUHJlc2VudCwgZGVyaXZlRmlsZU5hbWUsIGRvd25sb2FkLCBpc0hlbG1JbXBvcnQsIGlzSzhzSW1wb3J0LCBta2R0ZW1wLCBwYXJzZUltcG9ydHMsIHN5bnRoQXBwLCB2YWxpZGF0ZUFwcCB9IGZyb20gJy4uLy4uL3V0aWwnO1xuXG5jb25zdCBDSEFSVF9ZQU1MX0ZJTEUgPSAnQ2hhcnQueWFtbCc7XG5jb25zdCBSRUFETUUgPSAnUkVBRE1FLm1kJztcbmNvbnN0IERFRkFVTFRfT1VUUFVUX0RJUiA9ICdkaXN0JztcbmNvbnN0IERFRkFVTFRfUExVR0lOU19ESVIgPSBwYXRoLmpvaW4ob3MuaG9tZWRpcigpLCAnLmNkazhzJywgJ3BsdWdpbnMnKTtcblxuY29uc3QgY29uZmlnID0gcmVhZENvbmZpZ1N5bmMoKTtcblxuY2xhc3MgQ29tbWFuZCBpbXBsZW1lbnRzIHlhcmdzLkNvbW1hbmRNb2R1bGUge1xuICBwdWJsaWMgcmVhZG9ubHkgY29tbWFuZCA9ICdzeW50aCc7XG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmliZSA9ICdTeW50aGVzaXplcyBLdWJlcm5ldGVzIG1hbmlmZXN0cyBmb3IgYWxsIGNoYXJ0cyBpbiB5b3VyIGFwcC4nO1xuICBwdWJsaWMgcmVhZG9ubHkgYWxpYXNlcyA9IFsnc3ludGhlc2l6ZSddO1xuXG4gIHB1YmxpYyByZWFkb25seSBidWlsZGVyID0gKGFyZ3M6IHlhcmdzLkFyZ3YpID0+IGFyZ3NcbiAgICAub3B0aW9uKCdhcHAnLCB7IHJlcXVpcmVkOiB0cnVlLCBkZWZhdWx0OiBjb25maWc/LmFwcCwgZGVzYzogJ0NvbW1hbmQgdG8gdXNlIGluIG9yZGVyIHRvIGV4ZWN1dGUgY2RrOHMgYXBwJywgYWxpYXM6ICdhJyB9KVxuICAgIC5vcHRpb24oJ291dHB1dCcsIHsgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjOiAnT3V0cHV0IGRpcmVjdG9yeScsIGFsaWFzOiAnbycgfSlcbiAgICAub3B0aW9uKCdzdGRvdXQnLCB7IHR5cGU6ICdib29sZWFuJywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjOiAnV3JpdGUgc3ludGhlc2l6ZWQgbWFuaWZlc3RzIHRvIFNURE9VVCBpbnN0ZWFkIG9mIHRoZSBvdXRwdXQgZGlyZWN0b3J5JywgYWxpYXM6ICdwJyB9KVxuICAgIC5vcHRpb24oJ3BsdWdpbnMtZGlyJywgeyByZXF1aXJlZDogZmFsc2UsIGRlc2M6ICdEaXJlY3RvcnkgdG8gc3RvcmUgY2RrOHMgcGx1Z2lucy4nIH0pXG4gICAgLm9wdGlvbigndmFsaWRhdGUnLCB7IHR5cGU6ICdib29sZWFuJywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjOiAnQXBwbHkgdmFsaWRhdGlvbiBwbHVnaW5zIG9uIHRoZSByZXN1bHRpbmcgbWFuaWZlc3RzICh1c2UgLS1uby12YWxpZGF0ZSB0byBkaXNhYmxlKScgfSlcbiAgICAub3B0aW9uKCd2YWxpZGF0aW9uLXJlcG9ydHMtb3V0cHV0LWZpbGUnLCB7IHJlcXVpcmVkOiBmYWxzZSwgZGVzYzogJ0ZpbGUgdG8gd3JpdGUgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YWxpZGF0aW9uIHJlcG9ydHMgdG8nIH0pXG4gICAgLm9wdGlvbignZm9ybWF0JywgeyByZXF1aXJlZDogZmFsc2UsIGRlc2M6ICdTeW50aGVzaXMgZm9ybWF0IGZvciBLdWJlcm5ldGVzIG1hbmlmZXN0cy4gVGhlIGRlZmF1bHQgc3ludGhlc2lzIGZvcm1hdCBpcyBwbGFpbiBrdWJlcm5ldGVzIG1hbmlmZXN0cy4nLCB0eXBlOiAnc3RyaW5nJyB9KVxuICAgIC5vcHRpb24oJ2NoYXJ0LWFwaS12ZXJzaW9uJywgeyByZXF1aXJlZDogZmFsc2UsIGRlc2M6ICdDaGFydCBBUEkgdmVyc2lvbiBvZiBoZWxtIGNoYXJ0LiBUaGUgZGVmYXVsdCB2YWx1ZSB3b3VsZCBiZSBcXCd2MlxcJyBhcGkgdmVyc2lvbiB3aGVuIHN5bnRoZXNpcyBmb3JtYXQgaXMgaGVsbS4gVGhlcmUgaXMgbm8gZGVmYXVsdCBzZXQgd2hlbiBzeW50aGVzaXMgZm9ybWF0IGlzIHBsYWluLicsIHR5cGU6ICdzdHJpbmcnIH0pXG4gICAgLm9wdGlvbignY2hhcnQtdmVyc2lvbicsIHsgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjOiAnQ2hhcnQgdmVyc2lvbiBvZiBoZWxtIGNoYXJ0LiBUaGlzIGlzIHJlcXVpcmVkIGlmIHN5bnRoZXNpcyBmb3JtYXQgaXMgaGVsbS4nIH0pO1xuXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVyKGFyZ3Y6IGFueSkge1xuXG4gICAgY29uc3QgY29tbWFuZCA9IGFyZ3YuYXBwO1xuICAgIGNvbnN0IHN0ZG91dCA9IGFyZ3Yuc3Rkb3V0O1xuICAgIGNvbnN0IG91dGRpciA9IGFyZ3Yub3V0cHV0ID8/IGNvbmZpZz8ub3V0cHV0ID8/ICghc3Rkb3V0ID8gREVGQVVMVF9PVVRQVVRfRElSIDogdW5kZWZpbmVkKTtcbiAgICBjb25zdCB2YWxpZGF0ZSA9IGFyZ3YudmFsaWRhdGUgPz8gdHJ1ZTtcbiAgICBjb25zdCByZXBvcnRGaWxlID0gYXJndi52YWxpZGF0aW9uUmVwb3J0c091dHB1dEZpbGU7XG4gICAgY29uc3QgcGx1Z2luc0RpciA9IGFyZ3YucGx1Z2luc0RpciA/PyBjb25maWc/LnBsdWdpbnNEaXJlY3RvcnkgPz8gREVGQVVMVF9QTFVHSU5TX0RJUjtcbiAgICBjb25zdCBmb3JtYXQgPSBhcmd2LmZvcm1hdCA/PyBjb25maWc/LnN5bnRoQ29uZmlnPy5mb3JtYXQgPz8gU3ludGhlc2lzRm9ybWF0LlBMQUlOO1xuICAgIGNvbnN0IGNoYXJ0VmVyc2lvbiA9IGFyZ3YuY2hhcnRWZXJzaW9uID8/IGNvbmZpZz8uc3ludGhDb25maWc/LmNoYXJ0VmVyc2lvbjtcbiAgICBjb25zdCBjaGFydEFwaVZlcnNpb24gPSBhcmd2LmNoYXJ0QXBpVmVyc2lvbiA/PyBjb25maWc/LnN5bnRoQ29uZmlnPy5jaGFydEFwaVZlcnNpb24gPz8gZ2V0RGVmYXVsdENoYXJ0QXBpVmVyc2lvbihmb3JtYXQpO1xuXG4gICAgaWYgKG91dGRpciAmJiBvdXRkaXIgIT09IGNvbmZpZz8ub3V0cHV0ICYmIHN0ZG91dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcXCctLW91dHB1dFxcJyBhbmQgXFwnLS1zdGRvdXRcXCcgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gUGxlYXNlIG9ubHkgdXNlIG9uZS4nKTtcbiAgICB9XG5cbiAgICBpZiAob3V0ZGlyKSB7XG4gICAgICBmcy5ybVN5bmMob3V0ZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgaWYgKGZvcm1hdCAhPSBTeW50aGVzaXNGb3JtYXQuUExBSU4gJiYgZm9ybWF0ICE9IFN5bnRoZXNpc0Zvcm1hdC5IRUxNKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBuZWVkIHRvIHNwZWNpZnkgc3ludGhlc2lzIGZvcm1hdCBlaXRoZXIgYXMgJHtTeW50aGVzaXNGb3JtYXQuUExBSU59IG9yICR7U3ludGhlc2lzRm9ybWF0LkhFTE19IGJ1dCByZWNlaXZlZDogJHtmb3JtYXR9YCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYXJ0QXBpVmVyc2lvbiAmJiAoY2hhcnRBcGlWZXJzaW9uICE9IEhlbG1DaGFydEFwaVZlcnNpb24uVjEgJiYgY2hhcnRBcGlWZXJzaW9uICE9IEhlbG1DaGFydEFwaVZlcnNpb24uVjIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBuZWVkIHRvIHNwZWNpZnkgaGVsbSBjaGFydCBhcGkgdmVyc2lvbiBlaXRoZXIgYXMgJHtIZWxtQ2hhcnRBcGlWZXJzaW9uLlYxfSBvciAke0hlbG1DaGFydEFwaVZlcnNpb24uVjJ9IGJ1dCByZWNlaXZlZDogJHtjaGFydEFwaVZlcnNpb259YCk7XG4gICAgfVxuXG4gICAgaWYgKGZvcm1hdCA9PT0gU3ludGhlc2lzRm9ybWF0LkhFTE0gJiYgIWNoYXJ0VmVyc2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbmVlZCB0byBzcGVjaWZ5IFxcJy0tY2hhcnQtdmVyc2lvblxcJyB3aGVuIFxcJy0tZm9ybWF0XFwnIGlzIHNldCBhcyBcXCdoZWxtXFwnLicpO1xuICAgIH1cblxuICAgIGlmIChjaGFydFZlcnNpb24gJiYgIXNlbXZlci52YWxpZChjaGFydFZlcnNpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSB2YWx1ZSBzcGVjaWZpZWQgZm9yICctLWNoYXJ0LXZlcnNpb24nOiAke2NoYXJ0VmVyc2lvbn0gZG9lcyBub3QgZm9sbG93IFNlbVZlci0yKGh0dHBzOi8vc2VtdmVyLm9yZy8pLmApO1xuICAgIH1cblxuICAgIGlmIChzdGRvdXQgJiYgZm9ybWF0ID09PSBTeW50aGVzaXNGb3JtYXQuSEVMTSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdIZWxtIGZvcm1hdCBzeW50aGVzaXMgZG9lcyBub3Qgc3VwcG9ydCBcXCdzdGRvdXRcXCcuIFBsZWFzZSB1c2UgXFwnb3V0ZGlyXFwnIGluc3RlYWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKGZvcm1hdCA9PT0gU3ludGhlc2lzRm9ybWF0LlBMQUlOICYmIGNoYXJ0QXBpVmVyc2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbmVlZCB0byBzcGVjaWZ5IFxcJy0tZm9ybWF0XFwnIGFzIFxcJ2hlbG1cXCcgd2hlbiBcXCctLWNoYXJ0LWFwaS12ZXJzaW9uXFwnIGlzIHNldC4nKTtcbiAgICB9XG5cbiAgICBpZiAoZm9ybWF0ID09PSBTeW50aGVzaXNGb3JtYXQuUExBSU4gJiYgY2hhcnRWZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBuZWVkIHRvIHNwZWNpZnkgXFwnLS1mb3JtYXRcXCcgYXMgXFwnaGVsbVxcJyB3aGVuIFxcJy0tY2hhcnQtdmVyc2lvblxcJyBpcyBzZXQuJyk7XG4gICAgfVxuXG4gICAgaWYgKGNoYXJ0QXBpVmVyc2lvbiA9PT0gSGVsbUNoYXJ0QXBpVmVyc2lvbi5WMSAmJiBjcmRzQXJlUHJlc2VudChjb25maWc/LmltcG9ydHMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdXIgYXBwbGljYXRpb24gdXNlcyBDUkRzLCB3aGljaCBhcmUgbm90IHN1cHBvcnRlZCB3aGVuICctLWNoYXJ0LWFwaS12ZXJzaW9uJyBpcyBzZXQgdG8gJHtIZWxtQ2hhcnRBcGlWZXJzaW9uLlYxfS4gUGxlYXNlIGVpdGhlciBzZXQgJy0tY2hhcnQtYXBpLXZlcnNpb24nIHRvICR7SGVsbUNoYXJ0QXBpVmVyc2lvbi5WMn0sIG9yIHJlbW92ZSB0aGUgQ1JEcyBmcm9tIHlvdXIgY2RrOHMueWFtbCBjb25maWd1cmF0aW9uIGZpbGVgKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0aW9ucyA9IHZhbGlkYXRlID8gYXdhaXQgZmV0Y2hWYWxpZGF0aW9ucygpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJlY29yZENvbnN0cnVjdE1ldGFkYXRhID0gISh2YWxpZGF0aW9ucyA9PSB1bmRlZmluZWQgfHwgdmFsaWRhdGlvbnMubGVuZ3RoID09IDApO1xuXG4gICAgaWYgKHN0ZG91dCkge1xuICAgICAgYXdhaXQgbWtkdGVtcChhc3luYyB0ZW1wRGlyID0+IHtcbiAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgc3ludGhBcHAoY29tbWFuZCwgdGVtcERpciwgc3Rkb3V0LCByZWNvcmRDb25zdHJ1Y3RNZXRhZGF0YSk7XG4gICAgICAgIGZvciAoY29uc3QgZiBvZiBhcHAubWFuaWZlc3RzKSB7XG4gICAgICAgICAgZnMuY3JlYXRlUmVhZFN0cmVhbShmKS5waXBlKHByb2Nlc3Muc3Rkb3V0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsaWRhdGlvbnMpIHtcbiAgICAgICAgICBjb25zdCBwbHVnaW5NYW5hZ2VyID0gbmV3IFBsdWdpbk1hbmFnZXIocGx1Z2luc0Rpcik7XG4gICAgICAgICAgYXdhaXQgdmFsaWRhdGVBcHAoYXBwLCBzdGRvdXQsIHZhbGlkYXRpb25zLCBwbHVnaW5NYW5hZ2VyLCByZXBvcnRGaWxlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBtYW5pZmVzdHM6IFN5bnRoZXNpemVkQXBwO1xuXG4gICAgICBpZiAoZm9ybWF0ID09PSBTeW50aGVzaXNGb3JtYXQuSEVMTSkge1xuICAgICAgICBhd2FpdCBjcmVhdGVIZWxtU2NhZmZvbGRpbmcoY2hhcnRBcGlWZXJzaW9uLCBjaGFydFZlcnNpb24sIG91dGRpcik7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlRGlyID0gcGF0aC5qb2luKG91dGRpciwgJ3RlbXBsYXRlcycpO1xuXG4gICAgICAgIG1hbmlmZXN0cyA9IGF3YWl0IHN5bnRoQXBwKGNvbW1hbmQsIHRlbXBsYXRlRGlyLCBzdGRvdXQsIHJlY29yZENvbnN0cnVjdE1ldGFkYXRhKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hbmlmZXN0cyA9IGF3YWl0IHN5bnRoQXBwKGNvbW1hbmQsIG91dGRpciwgc3Rkb3V0LCByZWNvcmRDb25zdHJ1Y3RNZXRhZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0aW9ucykge1xuICAgICAgICBjb25zdCBwbHVnaW5NYW5hZ2VyID0gbmV3IFBsdWdpbk1hbmFnZXIocGx1Z2luc0Rpcik7XG4gICAgICAgIGF3YWl0IHZhbGlkYXRlQXBwKG1hbmlmZXN0cywgc3Rkb3V0LCB2YWxpZGF0aW9ucywgcGx1Z2luTWFuYWdlciwgcmVwb3J0RmlsZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hWYWxpZGF0aW9ucygpOiBQcm9taXNlPFZhbGlkYXRpb25Db25maWdbXSB8IHVuZGVmaW5lZD4ge1xuICBpZiAodHlwZW9mKGNvbmZpZz8udmFsaWRhdGlvbnMpID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBkb3dubG9hZChjb25maWcudmFsaWRhdGlvbnMpO1xuICAgIHJldHVybiB5YW1sLnBhcnNlKGNvbnRlbnQpIGFzIFZhbGlkYXRpb25Db25maWdbXTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY29uZmlnPy52YWxpZGF0aW9ucztcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVIZWxtU2NhZmZvbGRpbmcoYXBpVmVyc2lvbjogc3RyaW5nLCBjaGFydFZlcnNpb246IHN0cmluZywgb3V0ZGlyOiBzdHJpbmcpIHtcbiAgY29uc3QgdGVtcEhlbG1TdHJ1Y3R1cmUgPSBjcmVhdGVGb2xkZXJTdHJ1Y3R1cmUoKTtcblxuICBjb25zdCBzdWJzdGl0dXRlVmFsdWVzID0ge1xuICAgIGFwaVZlcnNpb246IGFwaVZlcnNpb24sXG4gICAgdmVyc2lvbjogY2hhcnRWZXJzaW9uLFxuICAgIGFwcDogcGF0aC5iYXNlbmFtZShwYXRoLnJlc29sdmUoKSksXG4gIH07XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBzc2NhZmYodGVtcEhlbG1TdHJ1Y3R1cmUsIG91dGRpciwgc3Vic3RpdHV0ZVZhbHVlcyk7XG4gIH0gZmluYWxseSB7XG4gICAgZnMucm1TeW5jKHRlbXBIZWxtU3RydWN0dXJlLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuXG5cbiAgaWYgKGFwaVZlcnNpb24gPT09IEhlbG1DaGFydEFwaVZlcnNpb24uVjIgJiYgY3Jkc0FyZVByZXNlbnQoY29uZmlnPy5pbXBvcnRzKSkge1xuICAgIGF3YWl0IGFkZENyZHNUb0hlbG1DaGFydChvdXRkaXIpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlRm9sZGVyU3RydWN0dXJlKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm9vdCA9IGZzLm1rZHRlbXBTeW5jKHBhdGguam9pbihvcy50bXBkaXIoKSwgJ2hlbG0tc2NhZmZvbGRpbmctJykpO1xuXG4gICAgZnMubWtkaXJTeW5jKHBhdGguam9pbihyb290LCAndGVtcGxhdGVzJykpO1xuXG4gICAgY29uc3QgY2hhcnRZYW1sRmlsZSA9IHtcbiAgICAgIGFwaVZlcnNpb246ICd7eyBhcGlWZXJzaW9uIH19JyxcbiAgICAgIG5hbWU6ICd7eyBhcHAgfX0nLFxuICAgICAgdmVyc2lvbjogJ3t7IHZlcnNpb24gfX0nLFxuICAgICAgZGVzY3JpcHRpb246ICdHZW5lcmF0ZWQgY2hhcnQgZm9yIHt7IGFwcCB9fScsXG4gICAgICB0eXBlOiAnYXBwbGljYXRpb24nLFxuICAgIH07XG5cbiAgICBmcy5vdXRwdXRGaWxlU3luYyhwYXRoLmpvaW4ocm9vdCwgQ0hBUlRfWUFNTF9GSUxFKSwgeWFtbC5zdHJpbmdpZnkoY2hhcnRZYW1sRmlsZSkpO1xuXG4gICAgY29uc3QgcmVhZG1lRmlsZSA9ICdUaGlzIEhlbG0gY2hhcnQgaXMgZ2VuZXJhdGVkIHVzaW5nIGNkazhzLiBBbnkgbWFudWFsIGNoYW5nZXMgdG8gdGhlIGNoYXJ0IHdvdWxkIGJlIGRpc2NhcmRlZCBvbmNlIGNkazhzIGFwcCBpcyBzeW50aGVzaXplZCBhZ2FpbiB3aXRoIGAtLWZvcm1hdCBoZWxtYC4nO1xuXG4gICAgZnMub3V0cHV0RmlsZVN5bmMocGF0aC5qb2luKHJvb3QsIFJFQURNRSksIHJlYWRtZUZpbGUpO1xuXG4gICAgcmV0dXJuIHJvb3Q7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gYWRkQ3Jkc1RvSGVsbUNoYXJ0KGNoYXJ0RGlyOiBzdHJpbmcpIHtcbiAgY29uc3QgY3JkcyA9IChjb25maWc/LmltcG9ydHMgPz8gW10pLmZpbHRlcigoaW1wcnQpID0+ICghaXNLOHNJbXBvcnQoaW1wcnQpICYmICFpc0hlbG1JbXBvcnQoaW1wcnQpKSk7XG5cbiAgZm9yIChjb25zdCBjcmQgb2YgY3Jkcykge1xuICAgIGNvbnN0IGltcG9ydFNwZWMgPSBwYXJzZUltcG9ydHMoY3JkKTtcbiAgICBjb25zdCBpbXBvcnRlZENyZERlZiA9IGF3YWl0IG1hdGNoSW1wb3J0ZXIoaW1wb3J0U3BlYywgcHJvY2Vzcy5hcmd2KSBhcyBJbXBvcnRDdXN0b21SZXNvdXJjZURlZmluaXRpb247XG4gICAgY29uc3QgbWFuaWZlc3QgPSBpbXBvcnRlZENyZERlZi5yYXdNYW5pZmVzdDtcblxuICAgIGNvbnN0IGZpbGVuYW1lID0gZGVyaXZlRmlsZU5hbWUoaW1wb3J0U3BlYy5zb3VyY2UpO1xuXG4gICAgZnMub3V0cHV0RmlsZVN5bmMocGF0aC5qb2luKGNoYXJ0RGlyLCAnY3JkcycsIGAke2ZpbGVuYW1lfS55YW1sYCksIG1hbmlmZXN0KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREZWZhdWx0Q2hhcnRBcGlWZXJzaW9uKHN5bnRoRm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gKHN5bnRoRm9ybWF0ID09PSBTeW50aGVzaXNGb3JtYXQuSEVMTSkgPyBIZWxtQ2hhcnRBcGlWZXJzaW9uLlYyOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IENvbW1hbmQoKTsiXX0=
|
package/lib/config.js
CHANGED
|
@@ -48,15 +48,14 @@ function readConfigSync() {
|
|
|
48
48
|
}
|
|
49
49
|
exports.readConfigSync = readConfigSync;
|
|
50
50
|
async function addImportToConfig(source) {
|
|
51
|
-
var _a, _b;
|
|
52
51
|
if (!fs.existsSync(CONFIG_FILE)) {
|
|
53
52
|
// cdk8s import might be executed outside of an application (i.e without a config file)
|
|
54
53
|
return;
|
|
55
54
|
}
|
|
56
55
|
let curConfig = yaml.parse(fs.readFileSync(CONFIG_FILE, 'utf-8'));
|
|
57
|
-
const curImports =
|
|
56
|
+
const curImports = curConfig.imports ?? [];
|
|
58
57
|
if (!curImports.includes(source)) {
|
|
59
|
-
const importsList =
|
|
58
|
+
const importsList = curConfig.imports ?? [];
|
|
60
59
|
importsList.push(source);
|
|
61
60
|
let config = {
|
|
62
61
|
...curConfig,
|
|
@@ -66,4 +65,4 @@ async function addImportToConfig(source) {
|
|
|
66
65
|
}
|
|
67
66
|
}
|
|
68
67
|
exports.addImportToConfig = addImportToConfig;
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQiwyQ0FBNkI7QUFHN0IsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDO0FBZWpDLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN6QixrQ0FBZSxDQUFBO0lBQ2YsZ0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFIVyxlQUFlLEdBQWYsdUJBQWUsS0FBZix1QkFBZSxRQUcxQjtBQUVELElBQVksbUJBR1g7QUFIRCxXQUFZLG1CQUFtQjtJQUM3QixnQ0FBUyxDQUFBO0lBQ1QsZ0NBQVMsQ0FBQTtBQUNYLENBQUMsRUFIVyxtQkFBbUIsR0FBbkIsMkJBQW1CLEtBQW5CLDJCQUFtQixRQUc5QjtBQW1CRCxTQUFnQixjQUFjO0lBQzVCLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUM5QixNQUFNLE1BQU0sR0FBRztZQUNiLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNyRCxDQUFDO1FBRUYsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFWRCx3Q0FVQztBQUVNLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxNQUFjO0lBRXBELElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQy9CLHVGQUF1RjtRQUN2RixPQUFPO0tBQ1I7SUFFRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFbEUsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDaEMsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDNUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixJQUFJLE1BQU0sR0FBRztZQUNYLEdBQUcsU0FBUztZQUNaLE9BQU8sRUFBRSxXQUFXO1NBQ3JCLENBQUM7UUFDRixNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztLQUMxRDtBQUNILENBQUM7QUFuQkQsOENBbUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0ICogYXMgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCB7IExhbmd1YWdlIH0gZnJvbSAnLi9pbXBvcnQvYmFzZSc7XG5cbmNvbnN0IENPTkZJR19GSUxFID0gJ2NkazhzLnlhbWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEltcG9ydFNwZWMge1xuICByZWFkb25seSBtb2R1bGVOYW1lUHJlZml4Pzogc3RyaW5nO1xuICByZWFkb25seSBzb3VyY2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uQ29uZmlnIHtcbiAgcmVhZG9ubHkgcGFja2FnZTogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNsYXNzOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGluc3RhbGxFbnY/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbn1cblxuZXhwb3J0IGVudW0gU3ludGhlc2lzRm9ybWF0IHtcbiAgUExBSU4gPSAncGxhaW4nLFxuICBIRUxNID0gJ2hlbG0nLFxufVxuXG5leHBvcnQgZW51bSBIZWxtQ2hhcnRBcGlWZXJzaW9uIHtcbiAgVjEgPSAndjEnLFxuICBWMiA9ICd2MicsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ludGhDb25maWcge1xuICByZWFkb25seSBmb3JtYXQ/OiBTeW50aGVzaXNGb3JtYXQ7XG4gIHJlYWRvbmx5IGNoYXJ0QXBpVmVyc2lvbj86IEhlbG1DaGFydEFwaVZlcnNpb247XG4gIHJlYWRvbmx5IGNoYXJ0VmVyc2lvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25maWcge1xuICByZWFkb25seSBhcHA/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxhbmd1YWdlPzogTGFuZ3VhZ2U7XG4gIHJlYWRvbmx5IG91dHB1dD86IHN0cmluZztcbiAgcmVhZG9ubHkgaW1wb3J0RGlyZWN0b3J5Pzogc3RyaW5nO1xuICByZWFkb25seSBpbXBvcnRzPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHBsdWdpbnNEaXJlY3Rvcnk/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZhbGlkYXRpb25zPzogc3RyaW5nIHwgVmFsaWRhdGlvbkNvbmZpZ1tdO1xuICByZWFkb25seSBzeW50aENvbmZpZz86IFN5bnRoQ29uZmlnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZENvbmZpZ1N5bmMoKTogQ29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgaWYgKGZzLmV4aXN0c1N5bmMoQ09ORklHX0ZJTEUpKSB7XG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgLi4ueWFtbC5wYXJzZShmcy5yZWFkRmlsZVN5bmMoQ09ORklHX0ZJTEUsICd1dGYtOCcpKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRJbXBvcnRUb0NvbmZpZyhzb3VyY2U6IHN0cmluZykge1xuXG4gIGlmICghZnMuZXhpc3RzU3luYyhDT05GSUdfRklMRSkpIHtcbiAgICAvLyBjZGs4cyBpbXBvcnQgbWlnaHQgYmUgZXhlY3V0ZWQgb3V0c2lkZSBvZiBhbiBhcHBsaWNhdGlvbiAoaS5lIHdpdGhvdXQgYSBjb25maWcgZmlsZSlcbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgY3VyQ29uZmlnID0geWFtbC5wYXJzZShmcy5yZWFkRmlsZVN5bmMoQ09ORklHX0ZJTEUsICd1dGYtOCcpKTtcblxuICBjb25zdCBjdXJJbXBvcnRzID0gY3VyQ29uZmlnLmltcG9ydHMgPz8gW107XG4gIGlmICghY3VySW1wb3J0cy5pbmNsdWRlcyhzb3VyY2UpKSB7XG4gICAgY29uc3QgaW1wb3J0c0xpc3QgPSBjdXJDb25maWcuaW1wb3J0cyA/PyBbXTtcbiAgICBpbXBvcnRzTGlzdC5wdXNoKHNvdXJjZSk7XG4gICAgbGV0IGNvbmZpZyA9IHtcbiAgICAgIC4uLmN1ckNvbmZpZyxcbiAgICAgIGltcG9ydHM6IGltcG9ydHNMaXN0LFxuICAgIH07XG4gICAgYXdhaXQgZnMub3V0cHV0RmlsZShDT05GSUdfRklMRSwgeWFtbC5zdHJpbmdpZnkoY29uZmlnKSk7XG4gIH1cbn1cbiJdfQ==
|
package/lib/import/codegen.js
CHANGED
|
@@ -32,9 +32,8 @@ function getTypeName(custom, kind, version) {
|
|
|
32
32
|
}
|
|
33
33
|
exports.getTypeName = getTypeName;
|
|
34
34
|
function getConstructTypeName(def) {
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
const suffix = (_b = def.suffix) !== null && _b !== void 0 ? _b : '';
|
|
35
|
+
const prefix = def.prefix ?? '';
|
|
36
|
+
const suffix = def.suffix ?? '';
|
|
38
37
|
return json2jsii_1.TypeGenerator.normalizeTypeName(`${prefix}${getTypeName(def.custom, def.kind, def.version)}${suffix}`);
|
|
39
38
|
}
|
|
40
39
|
exports.getConstructTypeName = getConstructTypeName;
|
|
@@ -88,9 +87,8 @@ function generateConstruct(typegen, def) {
|
|
|
88
87
|
return copy;
|
|
89
88
|
}
|
|
90
89
|
function emitConstruct() {
|
|
91
|
-
var _a, _b;
|
|
92
90
|
code.line('/**');
|
|
93
|
-
code.line(` * ${
|
|
91
|
+
code.line(` * ${def.schema?.description ?? ''}`);
|
|
94
92
|
code.line(' *');
|
|
95
93
|
code.line(` * @schema ${def.fqn}`);
|
|
96
94
|
code.line(' */');
|
|
@@ -305,6 +303,6 @@ function generateHelmConstruct(typegen, def) {
|
|
|
305
303
|
}
|
|
306
304
|
exports.generateHelmConstruct = generateHelmConstruct;
|
|
307
305
|
function hasRequiredProps(schema) {
|
|
308
|
-
return
|
|
306
|
+
return schema?.required && Array.isArray(schema.required) && schema.required.length > 0;
|
|
309
307
|
}
|
|
310
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWdlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbXBvcnQvY29kZWdlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBb0Q7QUFJcEQseUNBQTBDO0FBRTFDLE1BQU0sc0JBQXNCLEdBQUcsVUFBVSxDQUFDO0FBQzFDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQztBQStCekI7Ozs7O0dBS0c7QUFDSCxTQUFnQixVQUFVLENBQUMsSUFBZSxFQUFFLE1BQWU7SUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ25DLElBQUksTUFBTSxFQUFFO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO0tBQ3hGO1NBQU07UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLHdEQUF3RCxDQUFDLENBQUM7S0FDckU7SUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7SUFDdkQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2QsQ0FBQztBQVRELGdDQVNDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLE1BQWUsRUFBRSxJQUFZLEVBQUUsT0FBZTtJQUN4RSxzRUFBc0U7SUFDdEUsdUZBQXVGO0lBQ3ZGLDJFQUEyRTtJQUMzRSxNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQU0sSUFBSSxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBQSx3QkFBWSxFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFFLE9BQU8sR0FBRyxJQUFJLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDN0IsQ0FBQztBQU5ELGtDQU1DO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUMsR0FBd0I7O0lBQzNELE1BQU0sTUFBTSxHQUFHLE1BQUEsR0FBRyxDQUFDLE1BQU0sbUNBQUksRUFBRSxDQUFDO0lBQ2hDLE1BQU0sTUFBTSxHQUFHLE1BQUEs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QUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDMUYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvZGVNYWtlciwgdG9QYXNjYWxDYXNlIH0gZnJvbSAnY29kZW1ha2VyJztcbi8vIHdlIGp1c3QgbmVlZCB0aGUgdHlwZXMgZnJvbSBqc29uLXNjaGVtYVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHsgSlNPTlNjaGVtYTQgfSBmcm9tICdqc29uLXNjaGVtYSc7XG5pbXBvcnQgeyBUeXBlR2VuZXJhdG9yIH0gZnJvbSAnanNvbjJqc2lpJztcblxuY29uc3QgTUFOSUZFU1RfU1RBVElDX01FVEhPRCA9ICdtYW5pZmVzdCc7XG5jb25zdCBHVktfU1RBVElDID0gJ0dWSyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpT2JqZWN0RGVmaW5pdGlvbiB7XG4gIHJlYWRvbmx5IGZxbjogc3RyaW5nO1xuICByZWFkb25seSBncm91cDogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGtpbmQ6IHN0cmluZztcbiAgcmVhZG9ubHkgc2NoZW1hOiBKU09OU2NoZW1hNDtcblxuICAvKipcbiAgICogSXMgdGhpcyBpcyBhIGN1c3RvbSByZXNvdXJjZSAoaW1wb3J0ZWQgZnJvbSBhIENSRCkgb3IgYSBjb3JlIEFQSSBvYmplY3Q/XG4gICAqL1xuICByZWFkb25seSBjdXN0b206IGJvb2xlYW47XG5cbiAgLypcbiAgICogSW5kaWNhdGVzIGlmIGEgcHJlZml4IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgY29uc3RydWN0IGNsYXNzIG5hbWUuIEZvclxuICAgKiBleGFtcGxlLCBmb3IgbmF0aXZlIGs4cyBhcGkgb2JqZWN0cywgd2UgYWRkIGBLdWJlYCBieSBkZWZhdWx0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIlwiXG4gICAqL1xuICByZWFkb25seSBwcmVmaXg/OiBzdHJpbmc7XG5cbiAgLypcbiAgICogSW5kaWNhdGVzIGlmIGEgc3VmZml4IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgY29uc3RydWN0IGNsYXNzIG5hbWUuIEZvclxuICAgKiBleGFtcGxlLCBmb3IgbXVsdGktdmVyc2lvbmVkIGNyZHMsIHdlIGFkZCB0aGUgdmVyc2lvbiBhcyB0aGUgc3VmZml4LlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIlwiXG4gICAqL1xuICByZWFkb25seSBzdWZmaXg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW1pdHMgdGhlIGhlYWRlciBmb3IgYSBnZW5lcmF0ZWQgaW1wb3J0cyBmaWxlLlxuICpcbiAqIEBwYXJhbSBjdXN0b20gLSB3aGV0aGVyIHRoZSBoZWFkZXIgaXMgYmVpbmcgZW1pdHRlZCBmb3IgYSBjdXN0b20gcmVzb3VyY2VcbiAqIChpbXBvcnRlZCBmcm9tIGEgQ1JEKSBvciBhIGNvcmUgQVBJIG9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZW1pdEhlYWRlcihjb2RlOiBDb2RlTWFrZXIsIGN1c3RvbTogYm9vbGVhbikge1xuICBjb2RlLmxpbmUoJy8vIGdlbmVyYXRlZCBieSBjZGs4cycpO1xuICBpZiAoY3VzdG9tKSB7XG4gICAgY29kZS5saW5lKCdpbXBvcnQgeyBBcGlPYmplY3QsIEFwaU9iamVjdE1ldGFkYXRhLCBHcm91cFZlcnNpb25LaW5kIH0gZnJvbSBcXCdjZGs4c1xcJzsnKTtcbiAgfSBlbHNlIHtcbiAgICBjb2RlLmxpbmUoJ2ltcG9ydCB7IEFwaU9iamVjdCwgR3JvdXBWZXJzaW9uS2luZCB9IGZyb20gXFwnY2RrOHNcXCc7Jyk7XG4gIH1cbiAgY29kZS5saW5lKCdpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFxcJ2NvbnN0cnVjdHNcXCc7Jyk7XG4gIGNvZGUubGluZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHlwZU5hbWUoY3VzdG9tOiBib29sZWFuLCBraW5kOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZykge1xuICAvLyBhZGQgYW4gQVBJIHZlcnNpb24gcG9zdGZpeCBvbmx5IGlmIHRoaXMgaXMgY29yZSBBUEkgKGBpbXBvcnQgazhzYCkuXG4gIC8vIFRPRE8gPSB3aGF0IGFib3V0IHRoZSByZXN0IG9mIHRoZSBuYW1lc3BhY2U/IHRoZSBzYW1lIHJlc291cmNlIGNhbiBleGlzdCBpbiBtdWx0aXBsZVxuICAvLyBhcGkgZ3JvdXBzIChJbmdyZXNzIGZvciBleGFtcGxlIGV4aXN0cyBpbiAnZXh0ZW5zaW9ucycgYW5kICduZXR3b3JraW5nJylcbiAgY29uc3QgcG9zdGZpeCA9IChjdXN0b20gfHwgdmVyc2lvbiA9PT0gJ3YxJykgPyAnJyA6IHRvUGFzY2FsQ2FzZSh2ZXJzaW9uKTtcbiAgcmV0dXJuIGAke2tpbmR9JHtwb3N0Zml4fWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25zdHJ1Y3RUeXBlTmFtZShkZWY6IEFwaU9iamVjdERlZmluaXRpb24pIHtcbiAgY29uc3QgcHJlZml4ID0gZGVmLnByZWZpeCA/PyAnJztcbiAgY29uc3Qgc3VmZml4ID0gZGVmLnN1ZmZpeCA/PyAnJztcbiAgcmV0dXJuIFR5cGVHZW5lcmF0b3Iubm9ybWFsaXplVHlwZU5hbWUoYCR7cHJlZml4fSR7Z2V0VHlwZU5hbWUoZGVmLmN1c3RvbSwgZGVmLmtpbmQsIGRlZi52ZXJzaW9uKX0ke3N1ZmZpeH1gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3BzVHlwZU5hbWUoZGVmOiBBcGlPYmplY3REZWZpbml0aW9uKSB7XG4gIGNvbnN0IGNvbnN0cnVjdE5hbWUgPSBnZXRDb25zdHJ1Y3RUeXBlTmFtZShkZWYpO1xuICByZXR1cm4gVHlwZUdlbmVyYXRvci5ub3JtYWxpemVUeXBlTmFtZShgJHtjb25zdHJ1Y3ROYW1lfVByb3BzYCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUNvbnN0cnVjdCh0eXBlZ2VuOiBUeXBlR2VuZXJhdG9yLCBkZWY6IEFwaU9iamVjdERlZmluaXRpb24pIHtcbiAgY29uc3QgY29uc3RydWN0TmFtZSA9IGdldENvbnN0cnVjdFR5cGVOYW1lKGRlZik7XG5cbiAgaWYgKGRlZi5jdXN0b20pIHtcbiAgICB0eXBlZ2VuLmVtaXRDdXN0b21UeXBlKCdBcGlPYmplY3RNZXRhZGF0YScsICgpID0+IHt9KTtcbiAgfVxuXG4gIHR5cGVnZW4uZW1pdEN1c3RvbVR5cGUoY29uc3RydWN0TmFtZSwgY29kZSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gZGVmLnNjaGVtYTtcblxuICAgIC8vIGBwcm9wc1R5cGVOYW1lYCBjb3VsZCBhbHNvIGJlIFwiYW55XCIgaWYgd2UgY2FuJ3QgcGFyc2UgdGhlIHNjaGVtYSBmb3Igc29tZSByZWFzb25cbiAgICBjb25zdCBwcm9wc1R5cGVOYW1lID0gZW1pdFByb3BzU3RydWN0KCk7XG4gICAgY29uc3QgZ3JvdXBQcmVmaXggPSBkZWYuZ3JvdXAgPyBgJHtkZWYuZ3JvdXB9L2AgOiAnJztcbiAgICBjb25zdCBoYXNSZXF1aXJlZCA9IGhhc1JlcXVpcmVkUHJvcHMoc2NoZW1hKTtcbiAgICBjb25zdCBkZWZhdWx0UHJvcHMgPSBoYXNSZXF1aXJlZCA/ICcnIDogJyA9IHt9JztcbiAgICBlbWl0Q29uc3RydWN0KCk7XG5cbiAgICBmdW5jdGlvbiBlbWl0UHJvcHNTdHJ1Y3QoKSB7XG4gICAgICBjb25zdCBwcm9wc1NjaGVtYSA9IGNyZWF0ZVByb3BzU3RydWN0U2NoZW1hKCk7XG4gICAgICBjb25zdCBwcm9wc1N0cnVjdE5hbWUgPSBnZXRQcm9wc1R5cGVOYW1lKGRlZik7XG4gICAgICByZXR1cm4gdHlwZWdlbi5lbWl0VHlwZShwcm9wc1N0cnVjdE5hbWUsIHByb3BzU2NoZW1hLCBkZWYuZnFuKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVQcm9wc1N0cnVjdFNjaGVtYSgpIHtcbiAgICAgIGNvbnN0IGNvcHk6IEpTT05TY2hlbWE0ID0geyAuLi5kZWYuc2NoZW1hIHx8IHt9IH07XG4gICAgICBjb25zdCBwcm9wcyA9IGNvcHkucHJvcGVydGllcyA9IGNvcHkucHJvcGVydGllcyB8fCB7fTtcbiAgICAgIGRlbGV0ZSBwcm9wcy5hcGlWZXJzaW9uO1xuICAgICAgZGVsZXRlIHByb3BzLmtpbmQ7XG4gICAgICBkZWxldGUgcHJvcHMuc3RhdHVzO1xuICAgICAgZGVsZXRlIGNvcHlbJ3gta3ViZXJuZXRlcy1ncm91cC12ZXJzaW9uLWtpbmQnXTtcblxuICAgICAgY29weS5yZXF1aXJlZCA9IGNvcHkucmVxdWlyZWQgfHwgW107XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvcHkucmVxdWlyZWQpKSB7XG4gICAgICAgIGNvcHkucmVxdWlyZWQgPSBjb3B5LnJlcXVpcmVkLmZpbHRlcih4ID0+IHggIT09ICdhcGlWZXJzaW9uJyAmJiB4ICE9PSAna2luZCcgJiYgeCAhPT0gJ3N0YXR1cycpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGVmLmN1c3RvbSkge1xuICAgICAgICAvLyBhZGQgXCJtZXRhZGF0YVwiIGZpZWxkIGZvciBhbGwgQ1JEcywgb3ZlcnJpZGluZyBhbnkgZXhpc3RpbmcgdHlwaW5nc1xuICAgICAgICBjb3B5LnByb3BlcnRpZXMubWV0YWRhdGEgPSB7ICRyZWY6ICcjL2RlZmluaXRpb25zL0FwaU9iamVjdE1ldGFkYXRhJyB9O1xuICAgICAgfVxuXG4gICAgICAvLyByZW9yZGVyIHRvcC1sZXZlbCBrZXlzIHNvIHRoYXQgd2UgaGF2ZSBcIm1ldGFkYXRhXCIgZmlyc3QgYW5kIHRoZW4gYWxsIHRoZSByZXN0XG4gICAgICAvLyBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW9yIGluIHRoZSBBcGlPYmplY3QncyB0b0pzb24gZnVuY3Rpb24gKGh0dHBzOi8vZ2l0aHViLmNvbS9jZGs4cy10ZWFtL2NkazhzLWNvcmUvYmxvYi81OGZiOGMwODgyZGRkOTVhOWI5ZGVkYjQxMDdlMTJmNjAxNDQzY2Y0L3NyYy9hcGktb2JqZWN0LnRzI0wxODUpXG4gICAgICBjb25zdCByZXN1bHQ6IGFueSA9IHt9O1xuICAgICAgZm9yIChjb25zdCBrIG9mIFsnbWV0YWRhdGEnLCAuLi5PYmplY3Qua2V5cyhjb3B5LnByb3BlcnRpZXMpXSkge1xuICAgICAgICBpZiAoayBpbiBjb3B5LnByb3BlcnRpZXMpIHtcbiAgICAgICAgICByZXN1bHRba10gPSBjb3B5LnByb3BlcnRpZXNba107XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29weS5wcm9wZXJ0aWVzID0gcmVzdWx0O1xuICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW1pdENvbnN0cnVjdCgpIHtcbiAgICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgICBjb2RlLmxpbmUoYCAqICR7ZGVmLnNjaGVtYT8uZGVzY3JpcHRpb24gPz8gJyd9YCk7XG4gICAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgICBjb2RlLmxpbmUoYCAqIEBzY2hlbWEgJHtkZWYuZnFufWApO1xuICAgICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICAgIGNvZGUub3BlbkJsb2NrKGBleHBvcnQgY2xhc3MgJHtjb25zdHJ1Y3ROYW1lfSBleHRlbmRzIEFwaU9iamVjdGApO1xuXG4gICAgICBlbWl0R1ZLKCk7XG5cbiAgICAgIGNvZGUubGluZSgnJyk7XG5cbiAgICAgIGVtaXRNYW5pZmVzdEZhY3RvcnkoKTtcblxuICAgICAgY29kZS5saW5lKCcnKTtcblxuICAgICAgZW1pdEluaXRpYWxpemVyKCk7XG5cbiAgICAgIGNvZGUubGluZSgnJyk7XG5cbiAgICAgIGVtaXRUb0pzb24oKTtcblxuICAgICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW1pdEdWSygpIHtcbiAgICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgICBjb2RlLmxpbmUoYCAqIFJldHVybnMgdGhlIGFwaVZlcnNpb24gYW5kIGtpbmQgZm9yIFwiJHtkZWYuZnFufVwiYCk7XG4gICAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgICAgY29kZS5vcGVuQmxvY2soYHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgJHtHVktfU1RBVElDfTogR3JvdXBWZXJzaW9uS2luZCA9YCk7XG4gICAgICBjb2RlLmxpbmUoYGFwaVZlcnNpb246ICcke2dyb3VwUHJlZml4fSR7ZGVmLnZlcnNpb259JyxgKTtcbiAgICAgIGNvZGUubGluZShga2luZDogJyR7ZGVmLmtpbmR9JyxgKTtcbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVtaXRJbml0aWFsaXplcigpIHtcblxuICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgIGNvZGUubGluZShgICogRGVmaW5lcyBhIFwiJHtkZWYuZnFufVwiIEFQSSBvYmplY3RgKTtcbiAgICAgIGNvZGUubGluZSgnICogQHBhcmFtIHNjb3BlIHRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBvYmplY3QnKTtcbiAgICAgIGNvZGUubGluZSgnICogQHBhcmFtIGlkIGEgc2NvcGUtbG9jYWwgbmFtZSBmb3IgdGhlIG9iamVjdCcpO1xuICAgICAgY29kZS5saW5lKCcgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHMnKTtcbiAgICAgIGNvZGUubGluZSgnICovJyk7XG5cbiAgICAgIGNvZGUub3BlbkJsb2NrKGBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6ICR7cHJvcHNUeXBlTmFtZX0ke2RlZmF1bHRQcm9wc30pYCk7XG5cbiAgICAgIGNvZGUub3Blbignc3VwZXIoc2NvcGUsIGlkLCB7Jyk7XG4gICAgICBjb2RlLmxpbmUoYC4uLiR7Y29uc3RydWN0TmFtZX0uJHtHVktfU1RBVElDfSxgKTtcbiAgICAgIGNvZGUubGluZSgnLi4ucHJvcHMsJyk7XG4gICAgICBjb2RlLmNsb3NlKCd9KTsnKTtcblxuICAgICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW1pdE1hbmlmZXN0RmFjdG9yeSgpIHtcbiAgICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgICBjb2RlLmxpbmUoYCAqIFJlbmRlcnMgYSBLdWJlcm5ldGVzIG1hbmlmZXN0IGZvciBcIiR7ZGVmLmZxbn1cIi5gKTtcbiAgICAgIGNvZGUubGluZSgnIConKTtcbiAgICAgIGNvZGUubGluZSgnICogVGhpcyBjYW4gYmUgdXNlZCB0byBpbmxpbmUgcmVzb3VyY2UgbWFuaWZlc3RzIGluc2lkZSBvdGhlciBvYmplY3RzIChlLmcuIGFzIHRlbXBsYXRlcykuJyk7XG4gICAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wcycpO1xuICAgICAgY29kZS5saW5lKCcgKi8nKTtcblxuICAgICAgY29kZS5vcGVuQmxvY2soYHB1YmxpYyBzdGF0aWMgJHtNQU5JRkVTVF9TVEFUSUNfTUVUSE9EfShwcm9wczogJHtwcm9wc1R5cGVOYW1lfSR7ZGVmYXVsdFByb3BzfSk6IGFueWApO1xuICAgICAgY29kZS5vcGVuKCdyZXR1cm4geycpO1xuICAgICAgY29kZS5saW5lKGAuLi4ke2NvbnN0cnVjdE5hbWV9LiR7R1ZLX1NUQVRJQ30sYCk7XG4gICAgICBjb2RlLmxpbmUoYC4uLnRvSnNvbl8ke3Byb3BzVHlwZU5hbWV9KHByb3BzKSxgKTtcbiAgICAgIGNvZGUuY2xvc2UoJ307Jyk7XG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbWl0VG9Kc29uKCkge1xuICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgIGNvZGUubGluZSgnICogUmVuZGVycyB0aGUgb2JqZWN0IHRvIEt1YmVybmV0ZXMgSlNPTi4nKTtcbiAgICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgICBjb2RlLm9wZW5CbG9jaygncHVibGljIHRvSnNvbigpOiBhbnknKTtcbiAgICAgIGNvZGUubGluZSgnY29uc3QgcmVzb2x2ZWQgPSBzdXBlci50b0pzb24oKTsnKTtcbiAgICAgIGNvZGUubGluZSgpO1xuICAgICAgY29kZS5vcGVuKCdyZXR1cm4geycpO1xuICAgICAgY29kZS5saW5lKGAuLi4ke2NvbnN0cnVjdE5hbWV9LiR7R1ZLX1NUQVRJQ30sYCk7XG4gICAgICBjb2RlLmxpbmUoYC4uLnRvSnNvbl8ke3Byb3BzVHlwZU5hbWV9KHJlc29sdmVkKSxgKTtcbiAgICAgIGNvZGUuY2xvc2UoJ307Jyk7XG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIEVtaXQgaW1wb3J0cyBmb3IgZ2VuZXJhdGVkIGhlbG0gY29uc3RydWN0XG4gKiBAcGFyYW0gY29kZSBDb2RlTWFrZXIgaXN0YW5jZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZW1pdEhlbG1IZWFkZXIoY29kZTogQ29kZU1ha2VyKSB7XG4gIGNvZGUubGluZSgnLy8gZ2VuZXJhdGVkIGJ5IGNkazhzJyk7XG4gIGNvZGUubGluZSgnaW1wb3J0IHsgSGVsbSwgSGVsbVByb3BzIH0gZnJvbSBcXCdjZGs4c1xcJzsnKTtcbiAgY29kZS5saW5lKCdpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFxcJ2NvbnN0cnVjdHNcXCc7Jyk7XG4gIGNvZGUubGluZSgpO1xufVxuXG4vKipcbiAqIEhlbG0gT2JqZWN0IERlZmluaXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIZWxtT2JqZWN0RGVmaW5pdGlvbiB7XG4gIC8qKlxuICAgKiBgdmFsdWVzLnNjaGVtYS5qc29uYCBmb3IgdGhlIGhlbG0gY2hhcnRcbiAgICovXG4gIHJlYWRvbmx5IHNjaGVtYTogSlNPTlNjaGVtYTQgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBDaGFydCBuYW1lXG4gICAqL1xuICByZWFkb25seSBjaGFydE5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIENoYXJ0IHVybFxuICAgKi9cbiAgcmVhZG9ubHkgY2hhcnRVcmw6IHN0cmluZztcbiAgLyoqXG4gICAqIENoYXJ0IHZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IGNoYXJ0VmVyc2lvbjogc3RyaW5nO1xuICAvKipcbiAgICogQ2hhcnQgZGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSBjaGFydERlcGVuZGVuY2llczogc3RyaW5nW107XG4gIC8qKlxuICAgKiBGdWxseSBxdWFsaWZpZWQgbmFtZSBmb3IgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcmVhZG9ubHkgZnFuPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVIZWxtQ29uc3RydWN0KHR5cGVnZW46IFR5cGVHZW5lcmF0b3IsIGRlZjogSGVsbU9iamVjdERlZmluaXRpb24pIHtcbiAgY29uc3Qgbm9TcGVjaWFsQ2hhcnMgPSBkZWYuY2hhcnROYW1lLnJlcGxhY2UoLyhbXlxcdyBdfF8pL2csICcnKTtcbiAgY29uc3QgY2hhcnROYW1lID0gVHlwZUdlbmVyYXRvci5ub3JtYWxpemVUeXBlTmFtZShub1NwZWNpYWxDaGFycyk7XG4gIGNvbnN0IHNjaGVtYSA9IGRlZi5zY2hlbWE7XG4gIGNvbnN0IHJlcG9VcmwgPSBkZWYuY2hhcnRVcmw7XG4gIGNvbnN0IGNoYXJ0VmVyc2lvbiA9IGRlZi5jaGFydFZlcnNpb247XG5cbiAgLy8gQ3JlYXRlIGN1c3RvbSB0eXBlXG4gIHR5cGVnZW4uZW1pdEN1c3RvbVR5cGUoY2hhcnROYW1lLCBjb2RlID0+IHtcblxuICAgIGNvbnN0IHZhbHVlc0ludGVyZmFjZSA9IGAke2NoYXJ0TmFtZX1WYWx1ZXNgO1xuICAgIGlmIChzY2hlbWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gQ3JlYXRpbmcgdmFsdWVzIGludGVyZmFjZVxuICAgICAgZW1pdFZhbHVlc0ludGVyZmFjZSgpO1xuXG4gICAgICBmdW5jdGlvbiBlbWl0VmFsdWVzSW50ZXJmYWNlKCkge1xuXG4gICAgICAgIGNvbnN0IGNvcHlPZlNjaGVtYSA9IHNjaGVtYSA/IGFkZEFkZGl0aW9uYWxWYWx1ZXNUb1Byb3BzKHNjaGVtYSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKGNvcHlPZlNjaGVtYSAmJiBjb3B5T2ZTY2hlbWEucHJvcGVydGllcykge1xuICAgICAgICAgIC8vIFN1YiBjaGFydHMgb3IgZGVwZW5kZW5jaWVzXG4gICAgICAgICAgZm9yIChjb25zdCBkZXBlbmRlbmN5IG9mIGRlZi5jaGFydERlcGVuZGVuY2llcykge1xuICAgICAgICAgICAgY29weU9mU2NoZW1hLnByb3BlcnRpZXNbZGVwZW5kZW5jeV0gPSB7IHR5cGU6ICdvYmplY3QnLCBhZGRpdGlvbmFsUHJvcGVydGllczogeyB0eXBlOiAnb2JqZWN0JyB9IH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29weU9mU2NoZW1hLnByb3BlcnRpZXMuZ2xvYmFsID0geyB0eXBlOiAnb2JqZWN0JywgYWRkaXRpb25hbFByb3BlcnRpZXM6IHsgdHlwZTogJ29iamVjdCcgfSB9O1xuICAgICAgICAgIGNvcHlPZlNjaGVtYS5wcm9wZXJ0aWVzLmFkZGl0aW9uYWxWYWx1ZXMgPSB7XG4gICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVmFsdWVzIHRoYXQgYXJlIG5vdCBhdmFpbGFibGUgaW4gdmFsdWVzLnNjaGVtYS5qc29uIHdpbGwgbm90IGJlIGNvZGUgZ2VuZXJhdGVkLiBZb3UgY2FuIGFkZCBzdWNoIHZhbHVlcyB0byB0aGlzIHByb3BlcnR5LicsXG4gICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogeyB0eXBlOiAnb2JqZWN0JyB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB0eXBlZ2VuLmVtaXRUeXBlKHZhbHVlc0ludGVyZmFjZSwgY29weU9mU2NoZW1hLCBkZWYuZnFuKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gYWRkQWRkaXRpb25hbFZhbHVlc1RvUHJvcHMoc2NobWE6IEpTT05TY2hlbWE0KTogSlNPTlNjaGVtYTQge1xuICAgICAgICBjb25zdCB0ZW1wU2NoZW1hID0gc2NobWE7XG5cbiAgICAgICAgaWYgKCF0ZW1wU2NoZW1hLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICByZXR1cm4gdGVtcFNjaGVtYTtcbiAgICAgICAgfVxuXG4gICAgICAgIE9iamVjdC52YWx1ZXModGVtcFNjaGVtYS5wcm9wZXJ0aWVzKS5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICAgICAgaWYgKHByb3AudHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocHJvcC5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICBwcm9wLnByb3BlcnRpZXMuYWRkaXRpb25hbFZhbHVlcyA9IHtcbiAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVmFsdWVzIHRoYXQgYXJlIG5vdCBhdmFpbGFibGUgaW4gdmFsdWVzLnNjaGVtYS5qc29uIHdpbGwgbm90IGJlIGNvZGUgZ2VuZXJhdGVkLiBZb3UgY2FuIGFkZCBzdWNoIHZhbHVlcyB0byB0aGlzIHByb3BlcnR5LicsXG4gICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7IHR5cGU6ICdvYmplY3QnIH0sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBhZGRBZGRpdGlvbmFsVmFsdWVzVG9Qcm9wcyhwcm9wKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0ZW1wU2NoZW1hO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENyZWF0aW5nIGNvbnN0cnVjdCBwcm9wZXJ0aWVzXG4gICAgZW1pdFByb3BzSW50ZXJmYWNlKCk7XG5cbiAgICBjb2RlLmxpbmUoKTtcblxuICAgIC8vIENyZWF0aW5nIGNvbnN0cnVjdCBmb3IgaGVsbSBjaGFydFxuICAgIGVtaXRDb25zdHJ1Y3QoKTtcblxuICAgIGZ1bmN0aW9uIGVtaXRQcm9wc0ludGVyZmFjZSgpIHtcbiAgICAgIGNvZGUub3BlbkJsb2NrKGBleHBvcnQgaW50ZXJmYWNlICR7Y2hhcnROYW1lfVByb3BzYCk7XG5cbiAgICAgIGNvZGUubGluZSgncmVhZG9ubHkgbmFtZXNwYWNlPzogc3RyaW5nOycpO1xuICAgICAgY29kZS5saW5lKCdyZWFkb25seSByZWxlYXNlTmFtZT86IHN0cmluZzsnKTtcbiAgICAgIGNvZGUubGluZSgncmVhZG9ubHkgaGVsbUV4ZWN1dGFibGU/OiBzdHJpbmc7Jyk7XG4gICAgICBjb2RlLmxpbmUoJ3JlYWRvbmx5IGhlbG1GbGFncz86IHN0cmluZ1tdOycpO1xuXG4gICAgICBpZiAoc2NoZW1hID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29kZS5saW5lKCdyZWFkb25seSB2YWx1ZXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9OycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZG9WYWx1ZXNIYXZlUmVxUHJvcHMgPSBoYXNSZXF1aXJlZFByb3BzKHNjaGVtYSkgPyAnJyA6ICc/JztcbiAgICAgICAgY29kZS5saW5lKGByZWFkb25seSB2YWx1ZXMke2RvVmFsdWVzSGF2ZVJlcVByb3BzfTogJHt2YWx1ZXNJbnRlcmZhY2V9O2ApO1xuICAgICAgfVxuXG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbWl0Q29uc3RydWN0KCkge1xuICAgICAgY29kZS5vcGVuQmxvY2soYGV4cG9ydCBjbGFzcyAke2NoYXJ0TmFtZX0gZXh0ZW5kcyBDb25zdHJ1Y3RgKTtcblxuICAgICAgZW1pdEluaXRpYWxpemVyKCk7XG5cbiAgICAgIGNvZGUubGluZSgpO1xuXG4gICAgICBlbWl0QWRkaXRpb25hbFZhbHVlc0ZsYXR0ZW5GdW5jKCk7XG5cbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVtaXRJbml0aWFsaXplcigpIHtcbiAgICAgIGNvbnN0IHByb3BzRGVmaW5pdGlvbiA9IHNjaGVtYSAmJiBoYXNSZXF1aXJlZFByb3BzKHNjaGVtYSkgPyBgJHtjaGFydE5hbWV9UHJvcHNgIDogYCR7Y2hhcnROYW1lfVByb3BzID0ge31gO1xuXG4gICAgICBjb2RlLm9wZW5CbG9jayhgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiAke3Byb3BzRGVmaW5pdGlvbn0pYCk7XG4gICAgICBjb2RlLmxpbmUoJ3N1cGVyKHNjb3BlLCBpZCk7Jyk7XG5cbiAgICAgIGNvZGUubGluZSgnbGV0IHVwZGF0ZWRQcm9wcyA9IHt9OycpO1xuICAgICAgY29kZS5saW5lKCk7XG4gICAgICBjb2RlLm9wZW5CbG9jaygnaWYgKHByb3BzLnZhbHVlcyknKTtcbiAgICAgIGNvZGUubGluZSgnY29uc3QgeyBhZGRpdGlvbmFsVmFsdWVzLCAuLi52YWx1ZXNXaXRob3V0QWRkaXRpb25hbFZhbHVlcyB9ID0gcHJvcHMudmFsdWVzOycpO1xuICAgICAgY29kZS5vcGVuKCd1cGRhdGVkUHJvcHMgPSB7Jyk7XG4gICAgICBjb2RlLmxpbmUoJy4uLnByb3BzLCcpO1xuICAgICAgY29kZS5vcGVuKCd2YWx1ZXM6IHsnKTtcbiAgICAgIGNvZGUubGluZSgnLi4udGhpcy5mbGF0dGVuQWRkaXRpb25hbFZhbHVlcyh2YWx1ZXNXaXRob3V0QWRkaXRpb25hbFZhbHVlcyksJyk7XG4gICAgICBjb2RlLmxpbmUoJy4uLmFkZGl0aW9uYWxWYWx1ZXMsJyk7XG4gICAgICBjb2RlLmNsb3NlKCd9LCcpO1xuICAgICAgY29kZS5jbG9zZSgnfTsnKTtcbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgICAgY29kZS5saW5lKCk7XG5cbiAgICAgIGNvZGUub3BlbignY29uc3QgZmluYWxQcm9wczogSGVsbVByb3BzID0geycpO1xuICAgICAgaWYgKHJlcG9Vcmwuc3RhcnRzV2l0aCgnb2NpOi8vJykpIHtcbiAgICAgICAgY29kZS5saW5lKGBjaGFydDogXFwnJHtyZXBvVXJsfVxcJyxgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvZGUubGluZShgY2hhcnQ6IFxcJyR7ZGVmLmNoYXJ0TmFtZX1cXCcsYCk7XG4gICAgICAgIGNvZGUubGluZShgcmVwbzogXFwnJHtyZXBvVXJsfVxcJyxgKTtcbiAgICAgIH1cbiAgICAgIGNvZGUubGluZShgdmVyc2lvbjogXFwnJHtjaGFydFZlcnNpb259XFwnLGApO1xuICAgICAgY29kZS5saW5lKCcuLi4oT2JqZWN0LmtleXModXBkYXRlZFByb3BzKS5sZW5ndGggIT09IDAgPyB1cGRhdGVkUHJvcHMgOiBwcm9wcyksJyk7XG4gICAgICBjb2RlLmNsb3NlKCd9OycpO1xuXG4gICAgICBjb2RlLmxpbmUoKTtcbiAgICAgIGNvZGUubGluZSgnbmV3IEhlbG0odGhpcywgXFwnSGVsbVxcJywgZmluYWxQcm9wcyk7Jyk7XG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbWl0QWRkaXRpb25hbFZhbHVlc0ZsYXR0ZW5GdW5jKCkge1xuICAgICAgY29kZS5vcGVuQmxvY2soJ3ByaXZhdGUgZmxhdHRlbkFkZGl0aW9uYWxWYWx1ZXMocHJvcHM6IHsgW2tleTogc3RyaW5nXTogYW55IH0pOiB7IFtrZXk6IHN0cmluZ106IGFueSB9Jyk7XG4gICAgICBjb2RlLm9wZW4oJ2ZvciAobGV0IHByb3AgaW4gcHJvcHMpIHsnKTtcbiAgICAgIGNvZGUub3BlbignaWYgKEFycmF5LmlzQXJyYXkocHJvcHNbcHJvcF0pKSB7Jyk7XG4gICAgICBjb2RlLm9wZW4oJ3Byb3BzW3Byb3BdLm1hcCgoaXRlbTogYW55KSA9PiB7Jyk7XG4gICAgICBjb2RlLm9wZW4oJ2lmICh0eXBlb2YgaXRlbSA9PT0gXFwnb2JqZWN0XFwnICYmIHByb3AgIT09IFxcJ2FkZGl0aW9uYWxWYWx1ZXNcXCcpIHsnKTtcbiAgICAgIGNvZGUubGluZSgncmV0dXJuIHRoaXMuZmxhdHRlbkFkZGl0aW9uYWxWYWx1ZXMoaXRlbSk7Jyk7XG4gICAgICBjb2RlLmNsb3NlKCd9Jyk7XG4gICAgICBjb2RlLmxpbmUoJ3JldHVybiBpdGVtOycpO1xuICAgICAgY29kZS5jbG9zZSgnfSk7Jyk7XG4gICAgICBjb2RlLmNsb3NlKCd9Jyk7XG4gICAgICBjb2RlLm9wZW4oJ2Vsc2UgaWYgKHR5cGVvZiBwcm9wc1twcm9wXSA9PT0gXFwnb2JqZWN0XFwnICYmIHByb3AgIT09IFxcJ2FkZGl0aW9uYWxWYWx1ZXNcXCcpIHsnKTtcbiAgICAgIGNvZGUubGluZSgncHJvcHNbcHJvcF0gPSB0aGlzLmZsYXR0ZW5BZGRpdGlvbmFsVmFsdWVzKHByb3BzW3Byb3BdKTsnKTtcbiAgICAgIGNvZGUuY2xvc2UoJ30nKTtcbiAgICAgIGNvZGUuY2xvc2UoJ30nKTtcbiAgICAgIGNvZGUubGluZSgpO1xuICAgICAgY29kZS5saW5lKCdjb25zdCB7IGFkZGl0aW9uYWxWYWx1ZXMsIC4uLnZhbHVlc1dpdGhvdXRBZGRpdGlvbmFsVmFsdWVzIH0gPSBwcm9wczsnKTtcbiAgICAgIGNvZGUubGluZSgpO1xuICAgICAgY29kZS5vcGVuKCdyZXR1cm4geycpO1xuICAgICAgY29kZS5saW5lKCcuLi52YWx1ZXNXaXRob3V0QWRkaXRpb25hbFZhbHVlcywnKTtcbiAgICAgIGNvZGUubGluZSgnLi4uYWRkaXRpb25hbFZhbHVlcywnKTtcbiAgICAgIGNvZGUuY2xvc2UoJ307Jyk7XG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBoYXNSZXF1aXJlZFByb3BzKHNjaGVtYTogSlNPTlNjaGVtYTQpOmJvb2xlYW4gfCB1bmRlZmluZWQge1xuICByZXR1cm4gc2NoZW1hPy5yZXF1aXJlZCAmJiBBcnJheS5pc0FycmF5KHNjaGVtYS5yZXF1aXJlZCkgJiYgc2NoZW1hLnJlcXVpcmVkLmxlbmd0aCA+IDA7XG59Il19
|
|
308
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWdlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbXBvcnQvY29kZWdlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBb0Q7QUFJcEQseUNBQTBDO0FBRTFDLE1BQU0sc0JBQXNCLEdBQUcsVUFBVSxDQUFDO0FBQzFDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQztBQStCekI7Ozs7O0dBS0c7QUFDSCxTQUFnQixVQUFVLENBQUMsSUFBZSxFQUFFLE1BQWU7SUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ25DLElBQUksTUFBTSxFQUFFO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO0tBQ3hGO1NBQU07UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLHdEQUF3RCxDQUFDLENBQUM7S0FDckU7SUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7SUFDdkQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2QsQ0FBQztBQVRELGdDQVNDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLE1BQWUsRUFBRSxJQUFZLEVBQUUsT0FBZTtJQUN4RSxzRUFBc0U7SUFDdEUsdUZBQXVGO0lBQ3ZGLDJFQUEyRTtJQUMzRSxNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQU0sSUFBSSxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBQSx3QkFBWSxFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFFLE9BQU8sR0FBRyxJQUFJLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDN0IsQ0FBQztBQU5ELGtDQU1DO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUMsR0FBd0I7SUFDM0QsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFDaEMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1B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TSxHQUFHLENBQUMsQ0FBQztBQUMxRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29kZU1ha2VyLCB0b1Bhc2NhbENhc2UgfSBmcm9tICdjb2RlbWFrZXInO1xuLy8gd2UganVzdCBuZWVkIHRoZSB0eXBlcyBmcm9tIGpzb24tc2NoZW1hXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBKU09OU2NoZW1hNCB9IGZyb20gJ2pzb24tc2NoZW1hJztcbmltcG9ydCB7IFR5cGVHZW5lcmF0b3IgfSBmcm9tICdqc29uMmpzaWknO1xuXG5jb25zdCBNQU5JRkVTVF9TVEFUSUNfTUVUSE9EID0gJ21hbmlmZXN0JztcbmNvbnN0IEdWS19TVEFUSUMgPSAnR1ZLJztcblxuZXhwb3J0IGludGVyZmFjZSBBcGlPYmplY3REZWZpbml0aW9uIHtcbiAgcmVhZG9ubHkgZnFuOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGdyb3VwOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbiAgcmVhZG9ubHkga2luZDogc3RyaW5nO1xuICByZWFkb25seSBzY2hlbWE6IEpTT05TY2hlbWE0O1xuXG4gIC8qKlxuICAgKiBJcyB0aGlzIGlzIGEgY3VzdG9tIHJlc291cmNlIChpbXBvcnRlZCBmcm9tIGEgQ1JEKSBvciBhIGNvcmUgQVBJIG9iamVjdD9cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbTogYm9vbGVhbjtcblxuICAvKlxuICAgKiBJbmRpY2F0ZXMgaWYgYSBwcmVmaXggc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBjb25zdHJ1Y3QgY2xhc3MgbmFtZS4gRm9yXG4gICAqIGV4YW1wbGUsIGZvciBuYXRpdmUgazhzIGFwaSBvYmplY3RzLCB3ZSBhZGQgYEt1YmVgIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiXCJcbiAgICovXG4gIHJlYWRvbmx5IHByZWZpeD86IHN0cmluZztcblxuICAvKlxuICAgKiBJbmRpY2F0ZXMgaWYgYSBzdWZmaXggc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBjb25zdHJ1Y3QgY2xhc3MgbmFtZS4gRm9yXG4gICAqIGV4YW1wbGUsIGZvciBtdWx0aS12ZXJzaW9uZWQgY3Jkcywgd2UgYWRkIHRoZSB2ZXJzaW9uIGFzIHRoZSBzdWZmaXguXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiXCJcbiAgICovXG4gIHJlYWRvbmx5IHN1ZmZpeD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFbWl0cyB0aGUgaGVhZGVyIGZvciBhIGdlbmVyYXRlZCBpbXBvcnRzIGZpbGUuXG4gKlxuICogQHBhcmFtIGN1c3RvbSAtIHdoZXRoZXIgdGhlIGhlYWRlciBpcyBiZWluZyBlbWl0dGVkIGZvciBhIGN1c3RvbSByZXNvdXJjZVxuICogKGltcG9ydGVkIGZyb20gYSBDUkQpIG9yIGEgY29yZSBBUEkgb2JqZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbWl0SGVhZGVyKGNvZGU6IENvZGVNYWtlciwgY3VzdG9tOiBib29sZWFuKSB7XG4gIGNvZGUubGluZSgnLy8gZ2VuZXJhdGVkIGJ5IGNkazhzJyk7XG4gIGlmIChjdXN0b20pIHtcbiAgICBjb2RlLmxpbmUoJ2ltcG9ydCB7IEFwaU9iamVjdCwgQXBpT2JqZWN0TWV0YWRhdGEsIEdyb3VwVmVyc2lvbktpbmQgfSBmcm9tIFxcJ2NkazhzXFwnOycpO1xuICB9IGVsc2Uge1xuICAgIGNvZGUubGluZSgnaW1wb3J0IHsgQXBpT2JqZWN0LCBHcm91cFZlcnNpb25LaW5kIH0gZnJvbSBcXCdjZGs4c1xcJzsnKTtcbiAgfVxuICBjb2RlLmxpbmUoJ2ltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXFwnY29uc3RydWN0c1xcJzsnKTtcbiAgY29kZS5saW5lKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlTmFtZShjdXN0b206IGJvb2xlYW4sIGtpbmQ6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nKSB7XG4gIC8vIGFkZCBhbiBBUEkgdmVyc2lvbiBwb3N0Zml4IG9ubHkgaWYgdGhpcyBpcyBjb3JlIEFQSSAoYGltcG9ydCBrOHNgKS5cbiAgLy8gVE9ETyA9IHdoYXQgYWJvdXQgdGhlIHJlc3Qgb2YgdGhlIG5hbWVzcGFjZT8gdGhlIHNhbWUgcmVzb3VyY2UgY2FuIGV4aXN0IGluIG11bHRpcGxlXG4gIC8vIGFwaSBncm91cHMgKEluZ3Jlc3MgZm9yIGV4YW1wbGUgZXhpc3RzIGluICdleHRlbnNpb25zJyBhbmQgJ25ldHdvcmtpbmcnKVxuICBjb25zdCBwb3N0Zml4ID0gKGN1c3RvbSB8fCB2ZXJzaW9uID09PSAndjEnKSA/ICcnIDogdG9QYXNjYWxDYXNlKHZlcnNpb24pO1xuICByZXR1cm4gYCR7a2luZH0ke3Bvc3RmaXh9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnN0cnVjdFR5cGVOYW1lKGRlZjogQXBpT2JqZWN0RGVmaW5pdGlvbikge1xuICBjb25zdCBwcmVmaXggPSBkZWYucHJlZml4ID8/ICcnO1xuICBjb25zdCBzdWZmaXggPSBkZWYuc3VmZml4ID8/ICcnO1xuICByZXR1cm4gVHlwZUdlbmVyYXRvci5ub3JtYWxpemVUeXBlTmFtZShgJHtwcmVmaXh9JHtnZXRUeXBlTmFtZShkZWYuY3VzdG9tLCBkZWYua2luZCwgZGVmLnZlcnNpb24pfSR7c3VmZml4fWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvcHNUeXBlTmFtZShkZWY6IEFwaU9iamVjdERlZmluaXRpb24pIHtcbiAgY29uc3QgY29uc3RydWN0TmFtZSA9IGdldENvbnN0cnVjdFR5cGVOYW1lKGRlZik7XG4gIHJldHVybiBUeXBlR2VuZXJhdG9yLm5vcm1hbGl6ZVR5cGVOYW1lKGAke2NvbnN0cnVjdE5hbWV9UHJvcHNgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQ29uc3RydWN0KHR5cGVnZW46IFR5cGVHZW5lcmF0b3IsIGRlZjogQXBpT2JqZWN0RGVmaW5pdGlvbikge1xuICBjb25zdCBjb25zdHJ1Y3ROYW1lID0gZ2V0Q29uc3RydWN0VHlwZU5hbWUoZGVmKTtcblxuICBpZiAoZGVmLmN1c3RvbSkge1xuICAgIHR5cGVnZW4uZW1pdEN1c3RvbVR5cGUoJ0FwaU9iamVjdE1ldGFkYXRhJywgKCkgPT4ge30pO1xuICB9XG5cbiAgdHlwZWdlbi5lbWl0Q3VzdG9tVHlwZShjb25zdHJ1Y3ROYW1lLCBjb2RlID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBkZWYuc2NoZW1hO1xuXG4gICAgLy8gYHByb3BzVHlwZU5hbWVgIGNvdWxkIGFsc28gYmUgXCJhbnlcIiBpZiB3ZSBjYW4ndCBwYXJzZSB0aGUgc2NoZW1hIGZvciBzb21lIHJlYXNvblxuICAgIGNvbnN0IHByb3BzVHlwZU5hbWUgPSBlbWl0UHJvcHNTdHJ1Y3QoKTtcbiAgICBjb25zdCBncm91cFByZWZpeCA9IGRlZi5ncm91cCA/IGAke2RlZi5ncm91cH0vYCA6ICcnO1xuICAgIGNvbnN0IGhhc1JlcXVpcmVkID0gaGFzUmVxdWlyZWRQcm9wcyhzY2hlbWEpO1xuICAgIGNvbnN0IGRlZmF1bHRQcm9wcyA9IGhhc1JlcXVpcmVkID8gJycgOiAnID0ge30nO1xuICAgIGVtaXRDb25zdHJ1Y3QoKTtcblxuICAgIGZ1bmN0aW9uIGVtaXRQcm9wc1N0cnVjdCgpIHtcbiAgICAgIGNvbnN0IHByb3BzU2NoZW1hID0gY3JlYXRlUHJvcHNTdHJ1Y3RTY2hlbWEoKTtcbiAgICAgIGNvbnN0IHByb3BzU3RydWN0TmFtZSA9IGdldFByb3BzVHlwZU5hbWUoZGVmKTtcbiAgICAgIHJldHVybiB0eXBlZ2VuLmVtaXRUeXBlKHByb3BzU3RydWN0TmFtZSwgcHJvcHNTY2hlbWEsIGRlZi5mcW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVByb3BzU3RydWN0U2NoZW1hKCkge1xuICAgICAgY29uc3QgY29weTogSlNPTlNjaGVtYTQgPSB7IC4uLmRlZi5zY2hlbWEgfHwge30gfTtcbiAgICAgIGNvbnN0IHByb3BzID0gY29weS5wcm9wZXJ0aWVzID0gY29weS5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgICAgZGVsZXRlIHByb3BzLmFwaVZlcnNpb247XG4gICAgICBkZWxldGUgcHJvcHMua2luZDtcbiAgICAgIGRlbGV0ZSBwcm9wcy5zdGF0dXM7XG4gICAgICBkZWxldGUgY29weVsneC1rdWJlcm5ldGVzLWdyb3VwLXZlcnNpb24ta2luZCddO1xuXG4gICAgICBjb3B5LnJlcXVpcmVkID0gY29weS5yZXF1aXJlZCB8fCBbXTtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29weS5yZXF1aXJlZCkpIHtcbiAgICAgICAgY29weS5yZXF1aXJlZCA9IGNvcHkucmVxdWlyZWQuZmlsdGVyKHggPT4geCAhPT0gJ2FwaVZlcnNpb24nICYmIHggIT09ICdraW5kJyAmJiB4ICE9PSAnc3RhdHVzJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZWYuY3VzdG9tKSB7XG4gICAgICAgIC8vIGFkZCBcIm1ldGFkYXRhXCIgZmllbGQgZm9yIGFsbCBDUkRzLCBvdmVycmlkaW5nIGFueSBleGlzdGluZyB0eXBpbmdzXG4gICAgICAgIGNvcHkucHJvcGVydGllcy5tZXRhZGF0YSA9IHsgJHJlZjogJyMvZGVmaW5pdGlvbnMvQXBpT2JqZWN0TWV0YWRhdGEnIH07XG4gICAgICB9XG5cbiAgICAgIC8vIHJlb3JkZXIgdG9wLWxldmVsIGtleXMgc28gdGhhdCB3ZSBoYXZlIFwibWV0YWRhdGFcIiBmaXJzdCBhbmQgdGhlbiBhbGwgdGhlIHJlc3RcbiAgICAgIC8vIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3IgaW4gdGhlIEFwaU9iamVjdCdzIHRvSnNvbiBmdW5jdGlvbiAoaHR0cHM6Ly9naXRodWIuY29tL2NkazhzLXRlYW0vY2RrOHMtY29yZS9ibG9iLzU4ZmI4YzA4ODJkZGQ5NWE5YjlkZWRiNDEwN2UxMmY2MDE0NDNjZjQvc3JjL2FwaS1vYmplY3QudHMjTDE4NSlcbiAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge307XG4gICAgICBmb3IgKGNvbnN0IGsgb2YgWydtZXRhZGF0YScsIC4uLk9iamVjdC5rZXlzKGNvcHkucHJvcGVydGllcyldKSB7XG4gICAgICAgIGlmIChrIGluIGNvcHkucHJvcGVydGllcykge1xuICAgICAgICAgIHJlc3VsdFtrXSA9IGNvcHkucHJvcGVydGllc1trXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb3B5LnByb3BlcnRpZXMgPSByZXN1bHQ7XG4gICAgICByZXR1cm4gY29weTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbWl0Q29uc3RydWN0KCkge1xuICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgIGNvZGUubGluZShgICogJHtkZWYuc2NoZW1hPy5kZXNjcmlwdGlvbiA/PyAnJ31gKTtcbiAgICAgIGNvZGUubGluZSgnIConKTtcbiAgICAgIGNvZGUubGluZShgICogQHNjaGVtYSAke2RlZi5mcW59YCk7XG4gICAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgICAgY29kZS5vcGVuQmxvY2soYGV4cG9ydCBjbGFzcyAke2NvbnN0cnVjdE5hbWV9IGV4dGVuZHMgQXBpT2JqZWN0YCk7XG5cbiAgICAgIGVtaXRHVksoKTtcblxuICAgICAgY29kZS5saW5lKCcnKTtcblxuICAgICAgZW1pdE1hbmlmZXN0RmFjdG9yeSgpO1xuXG4gICAgICBjb2RlLmxpbmUoJycpO1xuXG4gICAgICBlbWl0SW5pdGlhbGl6ZXIoKTtcblxuICAgICAgY29kZS5saW5lKCcnKTtcblxuICAgICAgZW1pdFRvSnNvbigpO1xuXG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbWl0R1ZLKCkge1xuICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgIGNvZGUubGluZShgICogUmV0dXJucyB0aGUgYXBpVmVyc2lvbiBhbmQga2luZCBmb3IgXCIke2RlZi5mcW59XCJgKTtcbiAgICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgICBjb2RlLm9wZW5CbG9jayhgcHVibGljIHN0YXRpYyByZWFkb25seSAke0dWS19TVEFUSUN9OiBHcm91cFZlcnNpb25LaW5kID1gKTtcbiAgICAgIGNvZGUubGluZShgYXBpVmVyc2lvbjogJyR7Z3JvdXBQcmVmaXh9JHtkZWYudmVyc2lvbn0nLGApO1xuICAgICAgY29kZS5saW5lKGBraW5kOiAnJHtkZWYua2luZH0nLGApO1xuICAgICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW1pdEluaXRpYWxpemVyKCkge1xuXG4gICAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgICAgY29kZS5saW5lKGAgKiBEZWZpbmVzIGEgXCIke2RlZi5mcW59XCIgQVBJIG9iamVjdGApO1xuICAgICAgY29kZS5saW5lKCcgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIG9iamVjdCcpO1xuICAgICAgY29kZS5saW5lKCcgKiBAcGFyYW0gaWQgYSBzY29wZS1sb2NhbCBuYW1lIGZvciB0aGUgb2JqZWN0Jyk7XG4gICAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wcycpO1xuICAgICAgY29kZS5saW5lKCcgKi8nKTtcblxuICAgICAgY29kZS5vcGVuQmxvY2soYHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogJHtwcm9wc1R5cGVOYW1lfSR7ZGVmYXVsdFByb3BzfSlgKTtcblxuICAgICAgY29kZS5vcGVuKCdzdXBlcihzY29wZSwgaWQsIHsnKTtcbiAgICAgIGNvZGUubGluZShgLi4uJHtjb25zdHJ1Y3ROYW1lfS4ke0dWS19TVEFUSUN9LGApO1xuICAgICAgY29kZS5saW5lKCcuLi5wcm9wcywnKTtcbiAgICAgIGNvZGUuY2xvc2UoJ30pOycpO1xuXG4gICAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbWl0TWFuaWZlc3RGYWN0b3J5KCkge1xuICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgIGNvZGUubGluZShgICogUmVuZGVycyBhIEt1YmVybmV0ZXMgbWFuaWZlc3QgZm9yIFwiJHtkZWYuZnFufVwiLmApO1xuICAgICAgY29kZS5saW5lKCcgKicpO1xuICAgICAgY29kZS5saW5lKCcgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGlubGluZSByZXNvdXJjZSBtYW5pZmVzdHMgaW5zaWRlIG90aGVyIG9iamVjdHMgKGUuZy4gYXMgdGVtcGxhdGVzKS4nKTtcbiAgICAgIGNvZGUubGluZSgnIConKTtcbiAgICAgIGNvZGUubGluZSgnICogQHBhcmFtIHByb3BzIGluaXRpYWxpemF0aW9uIHByb3BzJyk7XG4gICAgICBjb2RlLmxpbmUoJyAqLycpO1xuXG4gICAgICBjb2RlLm9wZW5CbG9jayhgcHVibGljIHN0YXRpYyAke01BTklGRVNUX1NUQVRJQ19NRVRIT0R9KHByb3BzOiAke3Byb3BzVHlwZU5hbWV9JHtkZWZhdWx0UHJvcHN9KTogYW55YCk7XG4gICAgICBjb2RlLm9wZW4oJ3JldHVybiB7Jyk7XG4gICAgICBjb2RlLmxpbmUoYC4uLiR7Y29uc3RydWN0TmFtZX0uJHtHVktfU1RBVElDfSxgKTtcbiAgICAgIGNvZGUubGluZShgLi4udG9Kc29uXyR7cHJvcHNUeXBlTmFtZX0ocHJvcHMpLGApO1xuICAgICAgY29kZS5jbG9zZSgnfTsnKTtcbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVtaXRUb0pzb24oKSB7XG4gICAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgICAgY29kZS5saW5lKCcgKiBSZW5kZXJzIHRoZSBvYmplY3QgdG8gS3ViZXJuZXRlcyBKU09OLicpO1xuICAgICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICAgIGNvZGUub3BlbkJsb2NrKCdwdWJsaWMgdG9Kc29uKCk6IGFueScpO1xuICAgICAgY29kZS5saW5lKCdjb25zdCByZXNvbHZlZCA9IHN1cGVyLnRvSnNvbigpOycpO1xuICAgICAgY29kZS5saW5lKCk7XG4gICAgICBjb2RlLm9wZW4oJ3JldHVybiB7Jyk7XG4gICAgICBjb2RlLmxpbmUoYC4uLiR7Y29uc3RydWN0TmFtZX0uJHtHVktfU1RBVElDfSxgKTtcbiAgICAgIGNvZGUubGluZShgLi4udG9Kc29uXyR7cHJvcHNUeXBlTmFtZX0ocmVzb2x2ZWQpLGApO1xuICAgICAgY29kZS5jbG9zZSgnfTsnKTtcbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRW1pdCBpbXBvcnRzIGZvciBnZW5lcmF0ZWQgaGVsbSBjb25zdHJ1Y3RcbiAqIEBwYXJhbSBjb2RlIENvZGVNYWtlciBpc3RhbmNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbWl0SGVsbUhlYWRlcihjb2RlOiBDb2RlTWFrZXIpIHtcbiAgY29kZS5saW5lKCcvLyBnZW5lcmF0ZWQgYnkgY2RrOHMnKTtcbiAgY29kZS5saW5lKCdpbXBvcnQgeyBIZWxtLCBIZWxtUHJvcHMgfSBmcm9tIFxcJ2NkazhzXFwnOycpO1xuICBjb2RlLmxpbmUoJ2ltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXFwnY29uc3RydWN0c1xcJzsnKTtcbiAgY29kZS5saW5lKCk7XG59XG5cbi8qKlxuICogSGVsbSBPYmplY3QgRGVmaW5pdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhlbG1PYmplY3REZWZpbml0aW9uIHtcbiAgLyoqXG4gICAqIGB2YWx1ZXMuc2NoZW1hLmpzb25gIGZvciB0aGUgaGVsbSBjaGFydFxuICAgKi9cbiAgcmVhZG9ubHkgc2NoZW1hOiBKU09OU2NoZW1hNCB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIENoYXJ0IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGNoYXJ0TmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQ2hhcnQgdXJsXG4gICAqL1xuICByZWFkb25seSBjaGFydFVybDogc3RyaW5nO1xuICAvKipcbiAgICogQ2hhcnQgdmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgY2hhcnRWZXJzaW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDaGFydCBkZXBlbmRlbmNpZXNcbiAgICovXG4gIHJlYWRvbmx5IGNoYXJ0RGVwZW5kZW5jaWVzOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIEZ1bGx5IHF1YWxpZmllZCBuYW1lIGZvciB0aGUgY29uc3RydWN0XG4gICAqL1xuICByZWFkb25seSBmcW4/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUhlbG1Db25zdHJ1Y3QodHlwZWdlbjogVHlwZUdlbmVyYXRvciwgZGVmOiBIZWxtT2JqZWN0RGVmaW5pdGlvbikge1xuICBjb25zdCBub1NwZWNpYWxDaGFycyA9IGRlZi5jaGFydE5hbWUucmVwbGFjZSgvKFteXFx3IF18XykvZywgJycpO1xuICBjb25zdCBjaGFydE5hbWUgPSBUeXBlR2VuZXJhdG9yLm5vcm1hbGl6ZVR5cGVOYW1lKG5vU3BlY2lhbENoYXJzKTtcbiAgY29uc3Qgc2NoZW1hID0gZGVmLnNjaGVtYTtcbiAgY29uc3QgcmVwb1VybCA9IGRlZi5jaGFydFVybDtcbiAgY29uc3QgY2hhcnRWZXJzaW9uID0gZGVmLmNoYXJ0VmVyc2lvbjtcblxuICAvLyBDcmVhdGUgY3VzdG9tIHR5cGVcbiAgdHlwZWdlbi5lbWl0Q3VzdG9tVHlwZShjaGFydE5hbWUsIGNvZGUgPT4ge1xuXG4gICAgY29uc3QgdmFsdWVzSW50ZXJmYWNlID0gYCR7Y2hhcnROYW1lfVZhbHVlc2A7XG4gICAgaWYgKHNjaGVtYSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBDcmVhdGluZyB2YWx1ZXMgaW50ZXJmYWNlXG4gICAgICBlbWl0VmFsdWVzSW50ZXJmYWNlKCk7XG5cbiAgICAgIGZ1bmN0aW9uIGVtaXRWYWx1ZXNJbnRlcmZhY2UoKSB7XG5cbiAgICAgICAgY29uc3QgY29weU9mU2NoZW1hID0gc2NoZW1hID8gYWRkQWRkaXRpb25hbFZhbHVlc1RvUHJvcHMoc2NoZW1hKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAoY29weU9mU2NoZW1hICYmIGNvcHlPZlNjaGVtYS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgLy8gU3ViIGNoYXJ0cyBvciBkZXBlbmRlbmNpZXNcbiAgICAgICAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY3kgb2YgZGVmLmNoYXJ0RGVwZW5kZW5jaWVzKSB7XG4gICAgICAgICAgICBjb3B5T2ZTY2hlbWEucHJvcGVydGllc1tkZXBlbmRlbmN5XSA9IHsgdHlwZTogJ29iamVjdCcsIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7IHR5cGU6ICdvYmplY3QnIH0gfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb3B5T2ZTY2hlbWEucHJvcGVydGllcy5nbG9iYWwgPSB7IHR5cGU6ICdvYmplY3QnLCBhZGRpdGlvbmFsUHJvcGVydGllczogeyB0eXBlOiAnb2JqZWN0JyB9IH07XG4gICAgICAgICAgY29weU9mU2NoZW1hLnByb3BlcnRpZXMuYWRkaXRpb25hbFZhbHVlcyA9IHtcbiAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdWYWx1ZXMgdGhhdCBhcmUgbm90IGF2YWlsYWJsZSBpbiB2YWx1ZXMuc2NoZW1hLmpzb24gd2lsbCBub3QgYmUgY29kZSBnZW5lcmF0ZWQuIFlvdSBjYW4gYWRkIHN1Y2ggdmFsdWVzIHRvIHRoaXMgcHJvcGVydHkuJyxcbiAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7IHR5cGU6ICdvYmplY3QnIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHR5cGVnZW4uZW1pdFR5cGUodmFsdWVzSW50ZXJmYWNlLCBjb3B5T2ZTY2hlbWEsIGRlZi5mcW4pO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBhZGRBZGRpdGlvbmFsVmFsdWVzVG9Qcm9wcyhzY2htYTogSlNPTlNjaGVtYTQpOiBKU09OU2NoZW1hNCB7XG4gICAgICAgIGNvbnN0IHRlbXBTY2hlbWEgPSBzY2htYTtcblxuICAgICAgICBpZiAoIXRlbXBTY2hlbWEucHJvcGVydGllcykge1xuICAgICAgICAgIHJldHVybiB0ZW1wU2NoZW1hO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LnZhbHVlcyh0ZW1wU2NoZW1hLnByb3BlcnRpZXMpLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgICAgICBpZiAocHJvcC50eXBlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwcm9wLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIHByb3AucHJvcGVydGllcy5hZGRpdGlvbmFsVmFsdWVzID0ge1xuICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdWYWx1ZXMgdGhhdCBhcmUgbm90IGF2YWlsYWJsZSBpbiB2YWx1ZXMuc2NoZW1hLmpzb24gd2lsbCBub3QgYmUgY29kZSBnZW5lcmF0ZWQuIFlvdSBjYW4gYWRkIHN1Y2ggdmFsdWVzIHRvIHRoaXMgcHJvcGVydHkuJyxcbiAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHsgdHlwZTogJ29iamVjdCcgfSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGFkZEFkZGl0aW9uYWxWYWx1ZXNUb1Byb3BzKHByb3ApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRlbXBTY2hlbWE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRpbmcgY29uc3RydWN0IHByb3BlcnRpZXNcbiAgICBlbWl0UHJvcHNJbnRlcmZhY2UoKTtcblxuICAgIGNvZGUubGluZSgpO1xuXG4gICAgLy8gQ3JlYXRpbmcgY29uc3RydWN0IGZvciBoZWxtIGNoYXJ0XG4gICAgZW1pdENvbnN0cnVjdCgpO1xuXG4gICAgZnVuY3Rpb24gZW1pdFByb3BzSW50ZXJmYWNlKCkge1xuICAgICAgY29kZS5vcGVuQmxvY2soYGV4cG9ydCBpbnRlcmZhY2UgJHtjaGFydE5hbWV9UHJvcHNgKTtcblxuICAgICAgY29kZS5saW5lKCdyZWFkb25seSBuYW1lc3BhY2U/OiBzdHJpbmc7Jyk7XG4gICAgICBjb2RlLmxpbmUoJ3JlYWRvbmx5IHJlbGVhc2VOYW1lPzogc3RyaW5nOycpO1xuICAgICAgY29kZS5saW5lKCdyZWFkb25seSBoZWxtRXhlY3V0YWJsZT86IHN0cmluZzsnKTtcbiAgICAgIGNvZGUubGluZSgncmVhZG9ubHkgaGVsbUZsYWdzPzogc3RyaW5nW107Jyk7XG5cbiAgICAgIGlmIChzY2hlbWEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb2RlLmxpbmUoJ3JlYWRvbmx5IHZhbHVlcz86IHsgW2tleTogc3RyaW5nXTogYW55IH07Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkb1ZhbHVlc0hhdmVSZXFQcm9wcyA9IGhhc1JlcXVpcmVkUHJvcHMoc2NoZW1hKSA/ICcnIDogJz8nO1xuICAgICAgICBjb2RlLmxpbmUoYHJlYWRvbmx5IHZhbHVlcyR7ZG9WYWx1ZXNIYXZlUmVxUHJvcHN9OiAke3ZhbHVlc0ludGVyZmFjZX07YCk7XG4gICAgICB9XG5cbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVtaXRDb25zdHJ1Y3QoKSB7XG4gICAgICBjb2RlLm9wZW5CbG9jayhgZXhwb3J0IGNsYXNzICR7Y2hhcnROYW1lfSBleHRlbmRzIENvbnN0cnVjdGApO1xuXG4gICAgICBlbWl0SW5pdGlhbGl6ZXIoKTtcblxuICAgICAgY29kZS5saW5lKCk7XG5cbiAgICAgIGVtaXRBZGRpdGlvbmFsVmFsdWVzRmxhdHRlbkZ1bmMoKTtcblxuICAgICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW1pdEluaXRpYWxpemVyKCkge1xuICAgICAgY29uc3QgcHJvcHNEZWZpbml0aW9uID0gc2NoZW1hICYmIGhhc1JlcXVpcmVkUHJvcHMoc2NoZW1hKSA/IGAke2NoYXJ0TmFtZX1Qcm9wc2AgOiBgJHtjaGFydE5hbWV9UHJvcHMgPSB7fWA7XG5cbiAgICAgIGNvZGUub3BlbkJsb2NrKGBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6ICR7cHJvcHNEZWZpbml0aW9ufSlgKTtcbiAgICAgIGNvZGUubGluZSgnc3VwZXIoc2NvcGUsIGlkKTsnKTtcblxuICAgICAgY29kZS5saW5lKCdsZXQgdXBkYXRlZFByb3BzID0ge307Jyk7XG4gICAgICBjb2RlLmxpbmUoKTtcbiAgICAgIGNvZGUub3BlbkJsb2NrKCdpZiAocHJvcHMudmFsdWVzKScpO1xuICAgICAgY29kZS5saW5lKCdjb25zdCB7IGFkZGl0aW9uYWxWYWx1ZXMsIC4uLnZhbHVlc1dpdGhvdXRBZGRpdGlvbmFsVmFsdWVzIH0gPSBwcm9wcy52YWx1ZXM7Jyk7XG4gICAgICBjb2RlLm9wZW4oJ3VwZGF0ZWRQcm9wcyA9IHsnKTtcbiAgICAgIGNvZGUubGluZSgnLi4ucHJvcHMsJyk7XG4gICAgICBjb2RlLm9wZW4oJ3ZhbHVlczogeycpO1xuICAgICAgY29kZS5saW5lKCcuLi50aGlzLmZsYXR0ZW5BZGRpdGlvbmFsVmFsdWVzKHZhbHVlc1dpdGhvdXRBZGRpdGlvbmFsVmFsdWVzKSwnKTtcbiAgICAgIGNvZGUubGluZSgnLi4uYWRkaXRpb25hbFZhbHVlcywnKTtcbiAgICAgIGNvZGUuY2xvc2UoJ30sJyk7XG4gICAgICBjb2RlLmNsb3NlKCd9OycpO1xuICAgICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgICBjb2RlLmxpbmUoKTtcblxuICAgICAgY29kZS5vcGVuKCdjb25zdCBmaW5hbFByb3BzOiBIZWxtUHJvcHMgPSB7Jyk7XG4gICAgICBpZiAocmVwb1VybC5zdGFydHNXaXRoKCdvY2k6Ly8nKSkge1xuICAgICAgICBjb2RlLmxpbmUoYGNoYXJ0OiBcXCcke3JlcG9Vcmx9XFwnLGApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29kZS5saW5lKGBjaGFydDogXFwnJHtkZWYuY2hhcnROYW1lfVxcJyxgKTtcbiAgICAgICAgY29kZS5saW5lKGByZXBvOiBcXCcke3JlcG9Vcmx9XFwnLGApO1xuICAgICAgfVxuICAgICAgY29kZS5saW5lKGB2ZXJzaW9uOiBcXCcke2NoYXJ0VmVyc2lvbn1cXCcsYCk7XG4gICAgICBjb2RlLmxpbmUoJy4uLihPYmplY3Qua2V5cyh1cGRhdGVkUHJvcHMpLmxlbmd0aCAhPT0gMCA/IHVwZGF0ZWRQcm9wcyA6IHByb3BzKSwnKTtcbiAgICAgIGNvZGUuY2xvc2UoJ307Jyk7XG5cbiAgICAgIGNvZGUubGluZSgpO1xuICAgICAgY29kZS5saW5lKCduZXcgSGVsbSh0aGlzLCBcXCdIZWxtXFwnLCBmaW5hbFByb3BzKTsnKTtcbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVtaXRBZGRpdGlvbmFsVmFsdWVzRmxhdHRlbkZ1bmMoKSB7XG4gICAgICBjb2RlLm9wZW5CbG9jaygncHJpdmF0ZSBmbGF0dGVuQWRkaXRpb25hbFZhbHVlcyhwcm9wczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0nKTtcbiAgICAgIGNvZGUub3BlbignZm9yIChsZXQgcHJvcCBpbiBwcm9wcykgeycpO1xuICAgICAgY29kZS5vcGVuKCdpZiAoQXJyYXkuaXNBcnJheShwcm9wc1twcm9wXSkpIHsnKTtcbiAgICAgIGNvZGUub3BlbigncHJvcHNbcHJvcF0ubWFwKChpdGVtOiBhbnkpID0+IHsnKTtcbiAgICAgIGNvZGUub3BlbignaWYgKHR5cGVvZiBpdGVtID09PSBcXCdvYmplY3RcXCcgJiYgcHJvcCAhPT0gXFwnYWRkaXRpb25hbFZhbHVlc1xcJykgeycpO1xuICAgICAgY29kZS5saW5lKCdyZXR1cm4gdGhpcy5mbGF0dGVuQWRkaXRpb25hbFZhbHVlcyhpdGVtKTsnKTtcbiAgICAgIGNvZGUuY2xvc2UoJ30nKTtcbiAgICAgIGNvZGUubGluZSgncmV0dXJuIGl0ZW07Jyk7XG4gICAgICBjb2RlLmNsb3NlKCd9KTsnKTtcbiAgICAgIGNvZGUuY2xvc2UoJ30nKTtcbiAgICAgIGNvZGUub3BlbignZWxzZSBpZiAodHlwZW9mIHByb3BzW3Byb3BdID09PSBcXCdvYmplY3RcXCcgJiYgcHJvcCAhPT0gXFwnYWRkaXRpb25hbFZhbHVlc1xcJykgeycpO1xuICAgICAgY29kZS5saW5lKCdwcm9wc1twcm9wXSA9IHRoaXMuZmxhdHRlbkFkZGl0aW9uYWxWYWx1ZXMocHJvcHNbcHJvcF0pOycpO1xuICAgICAgY29kZS5jbG9zZSgnfScpO1xuICAgICAgY29kZS5jbG9zZSgnfScpO1xuICAgICAgY29kZS5saW5lKCk7XG4gICAgICBjb2RlLmxpbmUoJ2NvbnN0IHsgYWRkaXRpb25hbFZhbHVlcywgLi4udmFsdWVzV2l0aG91dEFkZGl0aW9uYWxWYWx1ZXMgfSA9IHByb3BzOycpO1xuICAgICAgY29kZS5saW5lKCk7XG4gICAgICBjb2RlLm9wZW4oJ3JldHVybiB7Jyk7XG4gICAgICBjb2RlLmxpbmUoJy4uLnZhbHVlc1dpdGhvdXRBZGRpdGlvbmFsVmFsdWVzLCcpO1xuICAgICAgY29kZS5saW5lKCcuLi5hZGRpdGlvbmFsVmFsdWVzLCcpO1xuICAgICAgY29kZS5jbG9zZSgnfTsnKTtcbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhhc1JlcXVpcmVkUHJvcHMoc2NoZW1hOiBKU09OU2NoZW1hNCk6Ym9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBzY2hlbWE/LnJlcXVpcmVkICYmIEFycmF5LmlzQXJyYXkoc2NoZW1hLnJlcXVpcmVkKSAmJiBzY2hlbWEucmVxdWlyZWQubGVuZ3RoID4gMDtcbn0iXX0=
|