@pipeline-builder/pipeline-manager 3.4.178 → 3.4.180
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/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +13 -4
- package/dist/commands/audit-stacks.d.ts.map +1 -1
- package/dist/commands/audit-stacks.js +17 -13
- package/dist/commands/audit-tokens.d.ts.map +1 -1
- package/dist/commands/audit-tokens.js +10 -9
- package/dist/commands/bootstrap.d.ts.map +1 -1
- package/dist/commands/bootstrap.js +16 -11
- package/dist/commands/create-pat.d.ts.map +1 -1
- package/dist/commands/create-pat.js +8 -12
- package/dist/commands/create-pipeline.d.ts.map +1 -1
- package/dist/commands/create-pipeline.js +6 -7
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +8 -13
- package/dist/commands/entity-get.d.ts.map +1 -1
- package/dist/commands/entity-get.js +3 -2
- package/dist/commands/entity-list.d.ts.map +1 -1
- package/dist/commands/entity-list.js +3 -2
- package/dist/commands/get-pipeline.d.ts.map +1 -1
- package/dist/commands/get-pipeline.js +4 -5
- package/dist/commands/get-plugin.d.ts.map +1 -1
- package/dist/commands/get-plugin.js +4 -5
- package/dist/commands/list-pipelines.d.ts.map +1 -1
- package/dist/commands/list-pipelines.js +6 -7
- package/dist/commands/list-plugins.d.ts.map +1 -1
- package/dist/commands/list-plugins.js +6 -7
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +17 -14
- package/dist/commands/org-export.d.ts.map +1 -1
- package/dist/commands/org-export.js +4 -6
- package/dist/commands/provision.d.ts.map +1 -1
- package/dist/commands/provision.js +6 -2
- package/dist/commands/register.d.ts.map +1 -1
- package/dist/commands/register.js +7 -9
- package/dist/commands/setup-events.d.ts.map +1 -1
- package/dist/commands/setup-events.js +12 -8
- package/dist/commands/status.js +2 -2
- package/dist/commands/store-token.d.ts.map +1 -1
- package/dist/commands/store-token.js +10 -13
- package/dist/commands/synth.d.ts.map +1 -1
- package/dist/commands/synth.js +9 -14
- package/dist/commands/upload-plugin.d.ts.map +1 -1
- package/dist/commands/upload-plugin.js +6 -7
- package/dist/commands/validate-templates.d.ts.map +1 -1
- package/dist/commands/validate-templates.js +4 -6
- package/dist/config/cli.constants.d.ts +0 -3
- package/dist/config/cli.constants.d.ts.map +1 -1
- package/dist/config/cli.constants.js +1 -4
- package/dist/types/config.d.ts +0 -4
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +1 -1
- package/dist/types/pipeline.d.ts +0 -25
- package/dist/types/pipeline.d.ts.map +1 -1
- package/dist/types/pipeline.js +1 -1
- package/dist/types/plugin.d.ts +0 -25
- package/dist/types/plugin.d.ts.map +1 -1
- package/dist/types/plugin.js +1 -1
- package/dist/utils/api-client.js +2 -2
- package/dist/utils/aws-env.d.ts +21 -0
- package/dist/utils/aws-env.d.ts.map +1 -0
- package/dist/utils/aws-env.js +34 -0
- package/dist/utils/aws-secrets.d.ts.map +1 -1
- package/dist/utils/aws-secrets.js +8 -22
- package/dist/utils/cdk-utils.d.ts.map +1 -1
- package/dist/utils/cdk-utils.js +3 -5
- package/dist/utils/command-utils.d.ts +20 -1
- package/dist/utils/command-utils.d.ts.map +1 -1
- package/dist/utils/command-utils.js +32 -5
- package/dist/utils/cron.d.ts.map +1 -1
- package/dist/utils/cron.js +6 -2
- package/dist/utils/output-utils.d.ts +0 -20
- package/dist/utils/output-utils.d.ts.map +1 -1
- package/dist/utils/output-utils.js +1 -65
- package/dist/utils/pipeline-config.d.ts.map +1 -1
- package/dist/utils/pipeline-config.js +3 -2
- package/dist/utils/platform-secret.d.ts +3 -2
- package/dist/utils/platform-secret.d.ts.map +1 -1
- package/dist/utils/platform-secret.js +11 -7
- package/dist/utils/preflight.d.ts +26 -0
- package/dist/utils/preflight.d.ts.map +1 -0
- package/dist/utils/preflight.js +59 -0
- package/dist/utils/response-utils.d.ts +21 -0
- package/dist/utils/response-utils.d.ts.map +1 -0
- package/dist/utils/response-utils.js +70 -0
- package/package.json +3 -3
|
@@ -4,10 +4,10 @@ import { Command } from 'commander';
|
|
|
4
4
|
import pico from 'picocolors';
|
|
5
5
|
import { ENV_VARS, assertShellSafe } from '../config/cli.constants.js';
|
|
6
6
|
import { auditLog } from '../utils/audit-log.js';
|
|
7
|
-
import {
|
|
8
|
-
import { printCommandHeader } from '../utils/command-utils.js';
|
|
7
|
+
import { executeCdkShellCommand } from '../utils/cdk-utils.js';
|
|
8
|
+
import { printCommandHeader, withProfileOption, withRegionOption } from '../utils/command-utils.js';
|
|
9
9
|
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
10
|
-
import { printError, printInfo, printKeyValue, printSection
|
|
10
|
+
import { printError, printInfo, printKeyValue, printSection } from '../utils/output-utils.js';
|
|
11
11
|
const { bold, cyan, dim } = pico;
|
|
12
12
|
/**
|
|
13
13
|
* Resolves the AWS account ID from the CLI option or environment variable.
|
|
@@ -30,10 +30,18 @@ export function resolveRegion(optionValue) {
|
|
|
30
30
|
*/
|
|
31
31
|
/** @internal Exported for testing only */
|
|
32
32
|
export function buildBootstrapCommand(options) {
|
|
33
|
+
// Every value below is interpolated into a string run via `execSync` (a shell),
|
|
34
|
+
// so validate ALL operator-supplied inputs — not just account/region/profile.
|
|
33
35
|
assertShellSafe(options.account, 'account');
|
|
34
36
|
assertShellSafe(options.region, 'region');
|
|
35
37
|
if (options.profile)
|
|
36
38
|
assertShellSafe(options.profile, 'profile');
|
|
39
|
+
if (options.qualifier)
|
|
40
|
+
assertShellSafe(options.qualifier, 'qualifier');
|
|
41
|
+
if (options.trust)
|
|
42
|
+
assertShellSafe(options.trust, 'trust');
|
|
43
|
+
if (options.cloudformationExecutionPolicies)
|
|
44
|
+
assertShellSafe(options.cloudformationExecutionPolicies, 'cloudformation-execution-policies');
|
|
37
45
|
const parts = [
|
|
38
46
|
'cdk',
|
|
39
47
|
'bootstrap',
|
|
@@ -62,18 +70,16 @@ export function buildBootstrapCommand(options) {
|
|
|
62
70
|
* @param program - The root Commander program instance to attach the command to.
|
|
63
71
|
*/
|
|
64
72
|
export function bootstrap(program) {
|
|
65
|
-
program
|
|
73
|
+
withProfileOption(withRegionOption(program
|
|
66
74
|
.command('bootstrap')
|
|
67
75
|
.description('Bootstrap AWS CDK toolkit stack in target account/region')
|
|
68
|
-
.option('--account <id>', 'AWS account ID (defaults to AWS_ACCOUNT_ID or CDK_DEFAULT_ACCOUNT env)')
|
|
69
|
-
.option('--region <region>', 'AWS region (defaults to AWS_REGION or CDK_DEFAULT_REGION env)')
|
|
70
|
-
.option('--profile <profile>', 'AWS CLI profile', 'default')
|
|
76
|
+
.option('--account <id>', 'AWS account ID (defaults to AWS_ACCOUNT_ID or CDK_DEFAULT_ACCOUNT env)')))
|
|
71
77
|
.option('--qualifier <qualifier>', 'Bootstrap qualifier for environment isolation')
|
|
72
78
|
.option('--trust <accounts>', 'Comma-separated account IDs to trust for cross-account deployments')
|
|
73
79
|
.option('--cloudformation-execution-policies <arns>', 'IAM policy ARNs for CloudFormation execution role')
|
|
74
80
|
.option('--json', 'Output result as JSON', false)
|
|
75
81
|
.action(async (options) => {
|
|
76
|
-
const executionId = printCommandHeader('CDK Bootstrap');
|
|
82
|
+
const executionId = printCommandHeader('CDK Bootstrap', undefined, { quiet: options.json });
|
|
77
83
|
try {
|
|
78
84
|
// Never persist the AWS account id to the on-disk audit log (~/.pipeline-manager/audit.log).
|
|
79
85
|
// The audit module records operation metadata only — region/profile are safe; the account id is not.
|
|
@@ -94,8 +100,7 @@ export function bootstrap(program) {
|
|
|
94
100
|
trust: options.trust || '(none)',
|
|
95
101
|
cloudformationExecutionPolicies: options.cloudformationExecutionPolicies || '(none)',
|
|
96
102
|
});
|
|
97
|
-
|
|
98
|
-
printSuccess('AWS CDK is available');
|
|
103
|
+
// CDK availability is verified up front by the CLI's preAction hook.
|
|
99
104
|
// Build bootstrap command
|
|
100
105
|
const command = buildBootstrapCommand({
|
|
101
106
|
account,
|
|
@@ -150,4 +155,4 @@ export function bootstrap(program) {
|
|
|
150
155
|
}
|
|
151
156
|
});
|
|
152
157
|
}
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFakM7OztHQUdHO0FBQ0gsMENBQTBDO0FBQzFDLE1BQU0sVUFBVSxjQUFjLENBQUMsV0FBb0I7SUFDakQsT0FBTyxXQUFXLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQztBQUN0RixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsMENBQTBDO0FBQzFDLE1BQU0sVUFBVSxhQUFhLENBQUMsV0FBb0I7SUFDaEQsT0FBTyxXQUFXLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcs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bkMsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ25CLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7d0JBQ3pCLE9BQU8sRUFBRSxJQUFJO3dCQUNiLFdBQVc7d0JBQ1gsT0FBTzt3QkFDUCxNQUFNO3dCQUNOLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtxQkFDMUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDZixDQUFDO3FCQUFNLENBQUM7b0JBQ04sYUFBYSxDQUFDO3dCQUNaLGNBQWMsRUFBRSxXQUFXO3dCQUMzQixTQUFTLEVBQUUsT0FBTzt3QkFDbEIsUUFBUSxFQUFFLE1BQU07d0JBQ2hCLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxRQUFRLElBQUk7d0JBQ2xDLFFBQVEsRUFBRSxXQUFXO3FCQUN0QixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUM7UUFFSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLFVBQVUsRUFBRTtnQkFDekMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLO2dCQUMzQixJQUFJLEVBQUUsSUFBSTtnQkFDVixPQUFPLEVBQUU7b0JBQ1AsT0FBTyxFQUFFLFdBQVc7b0JBQ3BCLFdBQVc7b0JBQ1gsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO29CQUN4QixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07aUJBQ3ZCO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCBwaWNvIGZyb20gJ3BpY29jb2xvcnMnO1xuaW1wb3J0IHsgRU5WX1ZBUlMsIGFzc2VydFNoZWxsU2FmZSB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IGF1ZGl0TG9nIH0gZnJvbSAnLi4vdXRpbHMvYXVkaXQtbG9nLmpzJztcbmltcG9ydCB7IGVuc3VyZUNka0F2YWlsYWJsZSwgZXhlY3V0ZUNka1NoZWxsQ29tbWFuZCB9IGZyb20gJy4uL3V0aWxzL2Nkay11dGlscy5qcyc7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5cbmNvbnN0IHsgYm9sZCwgY3lhbiwgZGltIH0gPSBwaWNvO1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBBV1MgYWNjb3VudCBJRCBmcm9tIHRoZSBDTEkgb3B0aW9uIG9yIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICogQHJldHVybnMgVGhlIGFjY291bnQgSUQgc3RyaW5nLCBvciBgdW5kZWZpbmVkYCBpZiBub3QgYXZhaWxhYmxlLlxuICovXG4vKiogQGludGVybmFsIEV4cG9ydGVkIGZvciB0ZXN0aW5nIG9ubHkgKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQWNjb3VudChvcHRpb25WYWx1ZT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBvcHRpb25WYWx1ZSB8fCBwcm9jZXNzLmVudi5BV1NfQUNDT1VOVF9JRCB8fCBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9BQ0NPVU5UO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBBV1MgcmVnaW9uIGZyb20gdGhlIENMSSBvcHRpb24gb3IgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gKiBAcmV0dXJucyBUaGUgcmVnaW9uIHN0cmluZywgb3IgYHVuZGVmaW5lZGAgaWYgbm90IGF2YWlsYWJsZS5cbiAqL1xuLyoqIEBpbnRlcm5hbCBFeHBvcnRlZCBmb3IgdGVzdGluZyBvbmx5ICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVJlZ2lvbihvcHRpb25WYWx1ZT86IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBvcHRpb25WYWx1ZSB8fCBwcm9jZXNzLmVudltFTlZfVkFSUy5BV1NfUkVHSU9OXSB8fCBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT04gfHwgJ3VzLWVhc3QtMSc7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBgY2RrIGJvb3RzdHJhcGAgY29tbWFuZCBzdHJpbmcgZnJvbSB0aGUgcmVzb2x2ZWQgb3B0aW9ucy5cbiAqL1xuLyoqIEBpbnRlcm5hbCBFeHBvcnRlZCBmb3IgdGVzdGluZyBvbmx5ICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRCb290c3RyYXBDb21tYW5kKG9wdGlvbnM6IHtcbiAgYWNjb3VudDogc3RyaW5nO1xuICByZWdpb246IHN0cmluZztcbiAgcHJvZmlsZT86IHN0cmluZztcbiAgcXVhbGlmaWVyPzogc3RyaW5nO1xuICB0cnVzdD86IHN0cmluZztcbiAgY2xvdWRmb3JtYXRpb25FeGVjdXRpb25Qb2xpY2llcz86IHN0cmluZztcbn0pOiBzdHJpbmcge1xuICBhc3NlcnRTaGVsbFNhZmUob3B0aW9ucy5hY2NvdW50LCAnYWNjb3VudCcpO1xuICBhc3NlcnRTaGVsbFNhZmUob3B0aW9ucy5yZWdpb24sICdyZWdpb24nKTtcbiAgaWYgKG9wdGlvbnMucHJvZmlsZSkgYXNzZXJ0U2hlbGxTYWZlKG9wdGlvbnMucHJvZmlsZSwgJ3Byb2ZpbGUnKTtcblxuICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXG4gICAgJ2NkaycsXG4gICAgJ2Jvb3RzdHJhcCcsXG4gICAgYGF3czovLyR7b3B0aW9ucy5hY2NvdW50fS8ke29wdGlvbnMucmVnaW9ufWAsXG4gIF07XG5cbiAgaWYgKG9wdGlvbnMucHJvZmlsZSkge1xuICAgIHBhcnRzLnB1c2goYC0tcHJvZmlsZT0ke29wdGlvbnMucHJvZmlsZX1gKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLnF1YWxpZmllcikge1xuICAgIHBhcnRzLnB1c2goYC0tcXVhbGlmaWVyPSR7b3B0aW9ucy5xdWFsaWZpZXJ9YCk7XG4gIH1cblxuICBpZiAob3B0aW9ucy50cnVzdCkge1xuICAgIHBhcnRzLnB1c2goYC0tdHJ1c3Q9JHtvcHRpb25zLnRydXN0fWApO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuY2xvdWRmb3JtYXRpb25FeGVjdXRpb25Qb2xpY2llcykge1xuICAgIHBhcnRzLnB1c2goYC0tY2xvdWRmb3JtYXRpb24tZXhlY3V0aW9uLXBvbGljaWVzPSR7b3B0aW9ucy5jbG91ZGZvcm1hdGlvbkV4ZWN1dGlvblBvbGljaWVzfWApO1xuICB9XG5cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJyAnKTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBib290c3RyYXBgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogUHJvdmlzaW9ucyB0aGUgQ0RLIHRvb2xraXQgc3RhY2sgaW4gdGhlIHRhcmdldCBBV1MgYWNjb3VudC9yZWdpb25cbiAqIHNvIHRoYXQgQ0RLIGRlcGxveW1lbnRzIGNhbiBwcm9jZWVkLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHJvb3QgQ29tbWFuZGVyIHByb2dyYW0gaW5zdGFuY2UgdG8gYXR0YWNoIHRoZSBjb21tYW5kIHRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYm9vdHN0cmFwKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKCdib290c3RyYXAnKVxuICAgIC5kZXNjcmlwdGlvbignQm9vdHN0cmFwIEFXUyBDREsgdG9vbGtpdCBzdGFjayBpbiB0YXJnZXQgYWNjb3VudC9yZWdpb24nKVxuICAgIC5vcHRpb24oJy0tYWNjb3VudCA8aWQ+JywgJ0FXUyBhY2NvdW50IElEIChkZWZhdWx0cyB0byBBV1NfQUNDT1VOVF9JRCBvciBDREtfREVGQVVMVF9BQ0NPVU5UIGVudiknKVxuICAgIC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24gKGRlZmF1bHRzIHRvIEFXU19SRUdJT04gb3IgQ0RLX0RFRkFVTFRfUkVHSU9OIGVudiknKVxuICAgIC5vcHRpb24oJy0tcHJvZmlsZSA8cHJvZmlsZT4nLCAnQVdTIENMSSBwcm9maWxlJywgJ2RlZmF1bHQnKVxuICAgIC5vcHRpb24oJy0tcXVhbGlmaWVyIDxxdWFsaWZpZXI+JywgJ0Jvb3RzdHJhcCBxdWFsaWZpZXIgZm9yIGVudmlyb25tZW50IGlzb2xhdGlvbicpXG4gICAgLm9wdGlvbignLS10cnVzdCA8YWNjb3VudHM+JywgJ0NvbW1hLXNlcGFyYXRlZCBhY2NvdW50IElEcyB0byB0cnVzdCBmb3IgY3Jvc3MtYWNjb3VudCBkZXBsb3ltZW50cycpXG4gICAgLm9wdGlvbignLS1jbG91ZGZvcm1hdGlvbi1leGVjdXRpb24tcG9saWNpZXMgPGFybnM+JywgJ0lBTSBwb2xpY3kgQVJOcyBmb3IgQ2xvdWRGb3JtYXRpb24gZXhlY3V0aW9uIHJvbGUnKVxuICAgIC5vcHRpb24oJy0tanNvbicsICdPdXRwdXQgcmVzdWx0IGFzIEpTT04nLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignQ0RLIEJvb3RzdHJhcCcpO1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBOZXZlciBwZXJzaXN0IHRoZSBBV1MgYWNjb3VudCBpZCB0byB0aGUgb24tZGlzayBhdWRpdCBsb2cgKH4vLnBpcGVsaW5lLW1hbmFnZXIvYXVkaXQubG9nKS5cbiAgICAgICAgLy8gVGhlIGF1ZGl0IG1vZHVsZSByZWNvcmRzIG9wZXJhdGlvbiBtZXRhZGF0YSBvbmx5IOKAlCByZWdpb24vcHJvZmlsZSBhcmUgc2FmZTsgdGhlIGFjY291bnQgaWQgaXMgbm90LlxuICAgICAgICBhdWRpdExvZygnYm9vdHN0cmFwJywgeyBleGVjdXRpb25JZCwgcmVnaW9uOiBvcHRpb25zLnJlZ2lvbiwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuXG4gICAgICAgIC8vIFJlc29sdmUgYWNjb3VudCBhbmQgcmVnaW9uXG4gICAgICAgIGNvbnN0IGFjY291bnQgPSByZXNvbHZlQWNjb3VudChvcHRpb25zLmFjY291bnQpO1xuICAgICAgICBjb25zdCByZWdpb24gPSByZXNvbHZlUmVnaW9uKG9wdGlvbnMucmVnaW9uKTtcblxuICAgICAgICBpZiAoIWFjY291bnQpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdBV1MgYWNjb3VudCBJRCBpcyByZXF1aXJlZCcpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGRpbSgnUHJvdmlkZSAtLWFjY291bnQgPGlkPiBvciBzZXQgQVdTX0FDQ09VTlRfSUQgLyBDREtfREVGQVVMVF9BQ0NPVU5UIGVudmlyb25tZW50IHZhcmlhYmxlJykpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQVdTIGFjY291bnQgSUQgbm90IHByb3ZpZGVkJyk7XG4gICAgICAgIH1cblxuICAgICAgICBwcmludEluZm8oJ0Jvb3RzdHJhcCBwYXJhbWV0ZXJzJywge1xuICAgICAgICAgIGFjY291bnQsXG4gICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSxcbiAgICAgICAgICBxdWFsaWZpZXI6IG9wdGlvbnMucXVhbGlmaWVyIHx8ICcoZGVmYXVsdCknLFxuICAgICAgICAgIHRydXN0OiBvcHRpb25zLnRydXN0IHx8ICcobm9uZSknLFxuICAgICAgICAgIGNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXM6IG9wdGlvbnMuY2xvdWRmb3JtYXRpb25FeGVjdXRpb25Qb2xpY2llcyB8fCAnKG5vbmUpJyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZW5zdXJlQ2RrQXZhaWxhYmxlKCk7XG4gICAgICAgIHByaW50U3VjY2VzcygnQVdTIENESyBpcyBhdmFpbGFibGUnKTtcblxuICAgICAgICAvLyBCdWlsZCBib290c3RyYXAgY29tbWFuZFxuICAgICAgICBjb25zdCBjb21tYW5kID0gYnVpbGRCb290c3RyYXBDb21tYW5kKHtcbiAgICAgICAgICBhY2NvdW50LFxuICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUsXG4gICAgICAgICAgcXVhbGlmaWVyOiBvcHRpb25zLnF1YWxpZmllcixcbiAgICAgICAgICB0cnVzdDogb3B0aW9ucy50cnVzdCxcbiAgICAgICAgICBjbG91ZGZvcm1hdGlvbkV4ZWN1dGlvblBvbGljaWVzOiBvcHRpb25zLmNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXMsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHByaW50U2VjdGlvbignQ0RLIEV4ZWN1dGlvbicpO1xuICAgICAgICBjb25zb2xlLmxvZyhjeWFuKGJvbGQoJ0NvbW1hbmQ6JykpLCBkaW0oY29tbWFuZCkpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG5cbiAgICAgICAgLy8gRXhlY3V0ZSBib290c3RyYXBcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZXhlY3V0ZUNka1NoZWxsQ29tbWFuZChjb21tYW5kLCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIHNob3dPdXRwdXQ6IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdCb290c3RyYXAgQ29tcGxldGUnKTtcblxuICAgICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5qc29uKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgICBhY2NvdW50LFxuICAgICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiByZXN1bHQuZHVyYXRpb24sXG4gICAgICAgICAgICB9LCBudWxsLCAyKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgICAnRXhlY3V0aW9uIElEJzogZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICAgICdBY2NvdW50JzogYWNjb3VudCxcbiAgICAgICAgICAgICAgJ1JlZ2lvbic6IHJlZ2lvbixcbiAgICAgICAgICAgICAgJ0R1cmF0aW9uJzogYCR7cmVzdWx0LmR1cmF0aW9ufW1zYCxcbiAgICAgICAgICAgICAgJ1N0YXR1cyc6ICfinJMgU3VjY2VzcycsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLlZBTElEQVRJT04sIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICBjb21tYW5kOiAnYm9vdHN0cmFwJyxcbiAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgYWNjb3VudDogb3B0aW9ucy5hY2NvdW50LFxuICAgICAgICAgICAgcmVnaW9uOiBvcHRpb25zLnJlZ2lvbixcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlGLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUVqQzs7O0dBR0c7QUFDSCwwQ0FBMEM7QUFDMUMsTUFBTSxVQUFVLGNBQWMsQ0FBQyxXQUFvQjtJQUNqRCxPQUFPLFdBQVcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDO0FBQ3RGLENBQUM7QUFFRDs7O0dBR0c7QUFDSCwwQ0FBMEM7QUFDMUMsTUFBTSxVQUFVLGFBQWEsQ0FBQyxXQUFvQjtJQUNoRCxPQUFPLFdBQVcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUMsR0FB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TUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2lCQUN2QjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IEVOVl9WQVJTLCBhc3NlcnRTaGVsbFNhZmUgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBhdWRpdExvZyB9IGZyb20gJy4uL3V0aWxzL2F1ZGl0LWxvZy5qcyc7XG5pbXBvcnQgeyBleGVjdXRlQ2RrU2hlbGxDb21tYW5kIH0gZnJvbSAnLi4vdXRpbHMvY2RrLXV0aWxzLmpzJztcbmltcG9ydCB7IHByaW50Q29tbWFuZEhlYWRlciwgd2l0aFByb2ZpbGVPcHRpb24sIHdpdGhSZWdpb25PcHRpb24gfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24gfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuXG5jb25zdCB7IGJvbGQsIGN5YW4sIGRpbSB9ID0gcGljbztcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgQVdTIGFjY291bnQgSUQgZnJvbSB0aGUgQ0xJIG9wdGlvbiBvciBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqIEByZXR1cm5zIFRoZSBhY2NvdW50IElEIHN0cmluZywgb3IgYHVuZGVmaW5lZGAgaWYgbm90IGF2YWlsYWJsZS5cbiAqL1xuLyoqIEBpbnRlcm5hbCBFeHBvcnRlZCBmb3IgdGVzdGluZyBvbmx5ICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFjY291bnQob3B0aW9uVmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb3B0aW9uVmFsdWUgfHwgcHJvY2Vzcy5lbnYuQVdTX0FDQ09VTlRfSUQgfHwgcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfQUNDT1VOVDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgQVdTIHJlZ2lvbiBmcm9tIHRoZSBDTEkgb3B0aW9uIG9yIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICogQHJldHVybnMgVGhlIHJlZ2lvbiBzdHJpbmcsIG9yIGB1bmRlZmluZWRgIGlmIG5vdCBhdmFpbGFibGUuXG4gKi9cbi8qKiBAaW50ZXJuYWwgRXhwb3J0ZWQgZm9yIHRlc3Rpbmcgb25seSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSZWdpb24ob3B0aW9uVmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gb3B0aW9uVmFsdWUgfHwgcHJvY2Vzcy5lbnZbRU5WX1ZBUlMuQVdTX1JFR0lPTl0gfHwgcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfUkVHSU9OIHx8ICd1cy1lYXN0LTEnO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgYGNkayBib290c3RyYXBgIGNvbW1hbmQgc3RyaW5nIGZyb20gdGhlIHJlc29sdmVkIG9wdGlvbnMuXG4gKi9cbi8qKiBAaW50ZXJuYWwgRXhwb3J0ZWQgZm9yIHRlc3Rpbmcgb25seSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQm9vdHN0cmFwQ29tbWFuZChvcHRpb25zOiB7XG4gIGFjY291bnQ6IHN0cmluZztcbiAgcmVnaW9uOiBzdHJpbmc7XG4gIHByb2ZpbGU/OiBzdHJpbmc7XG4gIHF1YWxpZmllcj86IHN0cmluZztcbiAgdHJ1c3Q/OiBzdHJpbmc7XG4gIGNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXM/OiBzdHJpbmc7XG59KTogc3RyaW5nIHtcbiAgLy8gRXZlcnkgdmFsdWUgYmVsb3cgaXMgaW50ZXJwb2xhdGVkIGludG8gYSBzdHJpbmcgcnVuIHZpYSBgZXhlY1N5bmNgIChhIHNoZWxsKSxcbiAgLy8gc28gdmFsaWRhdGUgQUxMIG9wZXJhdG9yLXN1cHBsaWVkIGlucHV0cyDigJQgbm90IGp1c3QgYWNjb3VudC9yZWdpb24vcHJvZmlsZS5cbiAgYXNzZXJ0U2hlbGxTYWZlKG9wdGlvbnMuYWNjb3VudCwgJ2FjY291bnQnKTtcbiAgYXNzZXJ0U2hlbGxTYWZlKG9wdGlvbnMucmVnaW9uLCAncmVnaW9uJyk7XG4gIGlmIChvcHRpb25zLnByb2ZpbGUpIGFzc2VydFNoZWxsU2FmZShvcHRpb25zLnByb2ZpbGUsICdwcm9maWxlJyk7XG4gIGlmIChvcHRpb25zLnF1YWxpZmllcikgYXNzZXJ0U2hlbGxTYWZlKG9wdGlvbnMucXVhbGlmaWVyLCAncXVhbGlmaWVyJyk7XG4gIGlmIChvcHRpb25zLnRydXN0KSBhc3NlcnRTaGVsbFNhZmUob3B0aW9ucy50cnVzdCwgJ3RydXN0Jyk7XG4gIGlmIChvcHRpb25zLmNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXMpIGFzc2VydFNoZWxsU2FmZShvcHRpb25zLmNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXMsICdjbG91ZGZvcm1hdGlvbi1leGVjdXRpb24tcG9saWNpZXMnKTtcblxuICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXG4gICAgJ2NkaycsXG4gICAgJ2Jvb3RzdHJhcCcsXG4gICAgYGF3czovLyR7b3B0aW9ucy5hY2NvdW50fS8ke29wdGlvbnMucmVnaW9ufWAsXG4gIF07XG5cbiAgaWYgKG9wdGlvbnMucHJvZmlsZSkge1xuICAgIHBhcnRzLnB1c2goYC0tcHJvZmlsZT0ke29wdGlvbnMucHJvZmlsZX1gKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLnF1YWxpZmllcikge1xuICAgIHBhcnRzLnB1c2goYC0tcXVhbGlmaWVyPSR7b3B0aW9ucy5xdWFsaWZpZXJ9YCk7XG4gIH1cblxuICBpZiAob3B0aW9ucy50cnVzdCkge1xuICAgIHBhcnRzLnB1c2goYC0tdHJ1c3Q9JHtvcHRpb25zLnRydXN0fWApO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuY2xvdWRmb3JtYXRpb25FeGVjdXRpb25Qb2xpY2llcykge1xuICAgIHBhcnRzLnB1c2goYC0tY2xvdWRmb3JtYXRpb24tZXhlY3V0aW9uLXBvbGljaWVzPSR7b3B0aW9ucy5jbG91ZGZvcm1hdGlvbkV4ZWN1dGlvblBvbGljaWVzfWApO1xuICB9XG5cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJyAnKTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBib290c3RyYXBgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogUHJvdmlzaW9ucyB0aGUgQ0RLIHRvb2xraXQgc3RhY2sgaW4gdGhlIHRhcmdldCBBV1MgYWNjb3VudC9yZWdpb25cbiAqIHNvIHRoYXQgQ0RLIGRlcGxveW1lbnRzIGNhbiBwcm9jZWVkLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHJvb3QgQ29tbWFuZGVyIHByb2dyYW0gaW5zdGFuY2UgdG8gYXR0YWNoIHRoZSBjb21tYW5kIHRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYm9vdHN0cmFwKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgd2l0aFByb2ZpbGVPcHRpb24oXG4gICAgd2l0aFJlZ2lvbk9wdGlvbihwcm9ncmFtXG4gICAgICAuY29tbWFuZCgnYm9vdHN0cmFwJylcbiAgICAgIC5kZXNjcmlwdGlvbignQm9vdHN0cmFwIEFXUyBDREsgdG9vbGtpdCBzdGFjayBpbiB0YXJnZXQgYWNjb3VudC9yZWdpb24nKVxuICAgICAgLm9wdGlvbignLS1hY2NvdW50IDxpZD4nLCAnQVdTIGFjY291bnQgSUQgKGRlZmF1bHRzIHRvIEFXU19BQ0NPVU5UX0lEIG9yIENES19ERUZBVUxUX0FDQ09VTlQgZW52KScpKSxcbiAgKVxuICAgIC5vcHRpb24oJy0tcXVhbGlmaWVyIDxxdWFsaWZpZXI+JywgJ0Jvb3RzdHJhcCBxdWFsaWZpZXIgZm9yIGVudmlyb25tZW50IGlzb2xhdGlvbicpXG4gICAgLm9wdGlvbignLS10cnVzdCA8YWNjb3VudHM+JywgJ0NvbW1hLXNlcGFyYXRlZCBhY2NvdW50IElEcyB0byB0cnVzdCBmb3IgY3Jvc3MtYWNjb3VudCBkZXBsb3ltZW50cycpXG4gICAgLm9wdGlvbignLS1jbG91ZGZvcm1hdGlvbi1leGVjdXRpb24tcG9saWNpZXMgPGFybnM+JywgJ0lBTSBwb2xpY3kgQVJOcyBmb3IgQ2xvdWRGb3JtYXRpb24gZXhlY3V0aW9uIHJvbGUnKVxuICAgIC5vcHRpb24oJy0tanNvbicsICdPdXRwdXQgcmVzdWx0IGFzIEpTT04nLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignQ0RLIEJvb3RzdHJhcCcsIHVuZGVmaW5lZCwgeyBxdWlldDogb3B0aW9ucy5qc29uIH0pO1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBOZXZlciBwZXJzaXN0IHRoZSBBV1MgYWNjb3VudCBpZCB0byB0aGUgb24tZGlzayBhdWRpdCBsb2cgKH4vLnBpcGVsaW5lLW1hbmFnZXIvYXVkaXQubG9nKS5cbiAgICAgICAgLy8gVGhlIGF1ZGl0IG1vZHVsZSByZWNvcmRzIG9wZXJhdGlvbiBtZXRhZGF0YSBvbmx5IOKAlCByZWdpb24vcHJvZmlsZSBhcmUgc2FmZTsgdGhlIGFjY291bnQgaWQgaXMgbm90LlxuICAgICAgICBhdWRpdExvZygnYm9vdHN0cmFwJywgeyBleGVjdXRpb25JZCwgcmVnaW9uOiBvcHRpb25zLnJlZ2lvbiwgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIH0pO1xuXG4gICAgICAgIC8vIFJlc29sdmUgYWNjb3VudCBhbmQgcmVnaW9uXG4gICAgICAgIGNvbnN0IGFjY291bnQgPSByZXNvbHZlQWNjb3VudChvcHRpb25zLmFjY291bnQpO1xuICAgICAgICBjb25zdCByZWdpb24gPSByZXNvbHZlUmVnaW9uKG9wdGlvbnMucmVnaW9uKTtcblxuICAgICAgICBpZiAoIWFjY291bnQpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdBV1MgYWNjb3VudCBJRCBpcyByZXF1aXJlZCcpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGRpbSgnUHJvdmlkZSAtLWFjY291bnQgPGlkPiBvciBzZXQgQVdTX0FDQ09VTlRfSUQgLyBDREtfREVGQVVMVF9BQ0NPVU5UIGVudmlyb25tZW50IHZhcmlhYmxlJykpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQVdTIGFjY291bnQgSUQgbm90IHByb3ZpZGVkJyk7XG4gICAgICAgIH1cblxuICAgICAgICBwcmludEluZm8oJ0Jvb3RzdHJhcCBwYXJhbWV0ZXJzJywge1xuICAgICAgICAgIGFjY291bnQsXG4gICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSxcbiAgICAgICAgICBxdWFsaWZpZXI6IG9wdGlvbnMucXVhbGlmaWVyIHx8ICcoZGVmYXVsdCknLFxuICAgICAgICAgIHRydXN0OiBvcHRpb25zLnRydXN0IHx8ICcobm9uZSknLFxuICAgICAgICAgIGNsb3VkZm9ybWF0aW9uRXhlY3V0aW9uUG9saWNpZXM6IG9wdGlvbnMuY2xvdWRmb3JtYXRpb25FeGVjdXRpb25Qb2xpY2llcyB8fCAnKG5vbmUpJyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ0RLIGF2YWlsYWJpbGl0eSBpcyB2ZXJpZmllZCB1cCBmcm9udCBieSB0aGUgQ0xJJ3MgcHJlQWN0aW9uIGhvb2suXG5cbiAgICAgICAgLy8gQnVpbGQgYm9vdHN0cmFwIGNvbW1hbmRcbiAgICAgICAgY29uc3QgY29tbWFuZCA9IGJ1aWxkQm9vdHN0cmFwQ29tbWFuZCh7XG4gICAgICAgICAgYWNjb3VudCxcbiAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlLFxuICAgICAgICAgIHF1YWxpZmllcjogb3B0aW9ucy5xdWFsaWZpZXIsXG4gICAgICAgICAgdHJ1c3Q6IG9wdGlvbnMudHJ1c3QsXG4gICAgICAgICAgY2xvdWRmb3JtYXRpb25FeGVjdXRpb25Qb2xpY2llczogb3B0aW9ucy5jbG91ZGZvcm1hdGlvbkV4ZWN1dGlvblBvbGljaWVzLFxuICAgICAgICB9KTtcblxuICAgICAgICBwcmludFNlY3Rpb24oJ0NESyBFeGVjdXRpb24nKTtcbiAgICAgICAgY29uc29sZS5sb2coY3lhbihib2xkKCdDb21tYW5kOicpKSwgZGltKGNvbW1hbmQpKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuXG4gICAgICAgIC8vIEV4ZWN1dGUgYm9vdHN0cmFwXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQoY29tbWFuZCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBzaG93T3V0cHV0OiB0cnVlLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignQm9vdHN0cmFwIENvbXBsZXRlJyk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuanNvbikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgICAgYWNjb3VudCxcbiAgICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgICBkdXJhdGlvbjogcmVzdWx0LmR1cmF0aW9uLFxuICAgICAgICAgICAgfSwgbnVsbCwgMikpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgICAgJ0V4ZWN1dGlvbiBJRCc6IGV4ZWN1dGlvbklkLFxuICAgICAgICAgICAgICAnQWNjb3VudCc6IGFjY291bnQsXG4gICAgICAgICAgICAgICdSZWdpb24nOiByZWdpb24sXG4gICAgICAgICAgICAgICdEdXJhdGlvbic6IGAke3Jlc3VsdC5kdXJhdGlvbn1tc2AsXG4gICAgICAgICAgICAgICdTdGF0dXMnOiAn4pyTIFN1Y2Nlc3MnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5WQUxJREFUSU9OLCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgY29tbWFuZDogJ2Jvb3RzdHJhcCcsXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgIGFjY291bnQ6IG9wdGlvbnMuYWNjb3VudCxcbiAgICAgICAgICAgIHJlZ2lvbjogb3B0aW9ucy5yZWdpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-pat.d.ts","sourceRoot":"","sources":["../../src/commands/create-pat.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"create-pat.d.ts","sourceRoot":"","sources":["../../src/commands/create-pat.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BpC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkLhD"}
|
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
import axios from 'axios';
|
|
4
4
|
import { Command } from 'commander';
|
|
5
5
|
import pico from 'picocolors';
|
|
6
|
-
import {
|
|
6
|
+
import { TIMEOUTS } from '../config/cli.constants.js';
|
|
7
7
|
import { assertCredentialTlsAllowed, credentialHttpsAgent, postLogin, resolveCredentials, switchOrganization } from '../utils/auth-utils.js';
|
|
8
|
+
import { printCommandHeader, withSslOptions } from '../utils/command-utils.js';
|
|
8
9
|
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
9
|
-
import { printDebug, printError, printInfo, printKeyValue,
|
|
10
|
+
import { printDebug, printError, printInfo, printKeyValue, printSuccess, printWarning } from '../utils/output-utils.js';
|
|
10
11
|
import { checkAuthRateLimit, recordAuthFailure, recordAuthSuccess } from '../utils/rate-limiter.js';
|
|
11
|
-
const { bold,
|
|
12
|
+
const { bold, green, yellow } = pico;
|
|
12
13
|
const MAX_EXPIRES_DAYS = 365;
|
|
13
14
|
/**
|
|
14
15
|
* Registers the `create-pat` command with the CLI program.
|
|
@@ -35,7 +36,7 @@ const MAX_EXPIRES_DAYS = 365;
|
|
|
35
36
|
* ```
|
|
36
37
|
*/
|
|
37
38
|
export function createPat(program) {
|
|
38
|
-
program
|
|
39
|
+
withSslOptions(program
|
|
39
40
|
.command('pat')
|
|
40
41
|
.description('Create a named Personal Access Token (long-lived CLI/automation credential)')
|
|
41
42
|
.requiredOption('--name <name>', 'Human-readable token name (e.g. ci-deploy)')
|
|
@@ -44,12 +45,9 @@ export function createPat(program) {
|
|
|
44
45
|
.option('-u, --identifier <identifier>', 'Username or email')
|
|
45
46
|
.option('-p, --password <password>', 'Password (prefer PLATFORM_PASSWORD env)')
|
|
46
47
|
.option('--org <orgId>', 'Bind the token to a specific organization (switches active org)')
|
|
47
|
-
.option('--url <url>', 'Platform base URL', process.env.PLATFORM_BASE_URL || 'https://localhost:8443')
|
|
48
|
-
.option('--verify-ssl', 'Enable SSL certificate verification')
|
|
49
|
-
.option('--no-verify-ssl', 'Disable SSL certificate verification')
|
|
48
|
+
.option('--url <url>', 'Platform base URL', process.env.PLATFORM_BASE_URL || 'https://localhost:8443'))
|
|
50
49
|
.option('--quiet', 'Only print the export statement (useful for eval)')
|
|
51
50
|
.action(async (options) => {
|
|
52
|
-
const executionId = generateExecutionId();
|
|
53
51
|
// SECURITY: this POSTs a plaintext password (login + step-up). Never send it
|
|
54
52
|
// over an unverified TLS connection in production — a MITM would harvest it.
|
|
55
53
|
// Mirrors the guard in `login`. Non-production still honors --no-verify-ssl.
|
|
@@ -58,6 +56,7 @@ export function createPat(program) {
|
|
|
58
56
|
// password need not appear in shell history / `ps`).
|
|
59
57
|
const { identifier, password } = resolveCredentials(options);
|
|
60
58
|
const quiet = options.quiet ?? false;
|
|
59
|
+
const executionId = printCommandHeader('Create Personal Access Token', 'Create Personal Access Token', { quiet });
|
|
61
60
|
try {
|
|
62
61
|
// Validate name.
|
|
63
62
|
const name = typeof options.name === 'string' ? options.name.trim() : '';
|
|
@@ -91,9 +90,6 @@ export function createPat(program) {
|
|
|
91
90
|
process.exit(ERROR_CODES.AUTHENTICATION);
|
|
92
91
|
}
|
|
93
92
|
if (!quiet) {
|
|
94
|
-
printSection('Create Personal Access Token');
|
|
95
|
-
console.log(`${magenta(`[EXE-${executionId}]`)} ${cyan(bold('Create Personal Access Token'))}`);
|
|
96
|
-
console.log('');
|
|
97
93
|
printInfo('Authenticating', { identifier, url: options.url, verifySsl: options.verifySsl });
|
|
98
94
|
}
|
|
99
95
|
const httpsAgent = credentialHttpsAgent(options.verifySsl);
|
|
@@ -195,4 +191,4 @@ export function createPat(program) {
|
|
|
195
191
|
}
|
|
196
192
|
});
|
|
197
193
|
}
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9jcmVhdGUtcGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0ksT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEksT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFcEcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFpQnBELE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO0FBRTdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBZ0I7SUFDeEMsT0FBTztTQUNKLE9BQU8sQ0FBQyxLQUFLLENBQUM7U0FDZCxXQUFXLENBQUMsNkVBQTZFLENBQUM7U0FDMUYsY0FBYyxDQUFDLGVBQWUsRUFBRSw0Q0FBNEMsQ0FB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O2dCQUM5QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQztnQkFDdEMsTUFBTSxPQUFPLEdBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUE2QixFQUFFLE9BQU8sQ0FBQztnQkFDeEUsVUFBVSxDQUFDLHFCQUFxQixFQUFFO29CQUNoQyxNQUFNLEVBQUUsTUFBTSxJQUFJLGFBQWE7b0JBQy9CLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztpQkFDaEMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFDRCxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7YUFDbEcsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IGdlbmVyYXRlRXhlY3V0aW9uSWQsIFRJTUVPVVRTIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgYXNzZXJ0Q3JlZGVudGlhbFRsc0FsbG93ZWQsIGNyZWRlbnRpYWxIdHRwc0FnZW50LCBwb3N0TG9naW4sIHJlc29sdmVDcmVkZW50aWFscywgc3dpdGNoT3JnYW5pemF0aW9uIH0gZnJvbSAnLi4vdXRpbHMvYXV0aC11dGlscy5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50RGVidWcsIHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyBjaGVja0F1dGhSYXRlTGltaXQsIHJlY29yZEF1dGhGYWlsdXJlLCByZWNvcmRBdXRoU3VjY2VzcyB9IGZyb20gJy4uL3V0aWxzL3JhdGUtbGltaXRlci5qcyc7XG5cbmNvbnN0IHsgYm9sZCwgY3lhbiwgZ3JlZW4sIG1hZ2VudGEsIHllbGxvdyB9ID0gcGljbztcblxuLyoqIFN0ZXAtdXAgcmVzcG9uc2Ug4oCUIGEgc2hvcnQtbGl2ZWQgKDYwcykgSldUIGJvdW5kIHRvIHRoZSB1c2VyJ3Mgc3ViLiAqL1xuaW50ZXJmYWNlIFN0ZXBVcFJlc3BvbnNlIHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgZGF0YTogeyBzdGVwVXBUb2tlbjogc3RyaW5nIH07XG59XG5cbi8qKiBDcmVhdGUtUEFUIHJlc3BvbnNlIOKAlCB0aGUgcmF3IHRva2VuIGlzIHJldHVybmVkIGV4YWN0bHkgb25jZS4gKi9cbmludGVyZmFjZSBDcmVhdGVQYXRSZXNwb25zZSB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIGRhdGE6IHtcbiAgICB0b2tlbjogc3RyaW5nO1xuICAgIHBhdDogeyBqdGk6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBleHBpcmVzQXQ6IHN0cmluZzsgc2NvcGU/OiBzdHJpbmcgfCBudWxsIH07XG4gIH07XG59XG5cbmNvbnN0IE1BWF9FWFBJUkVTX0RBWVMgPSAzNjU7XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgY3JlYXRlLXBhdGAgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBNaW50cyBhIG5hbWVkIFBlcnNvbmFsIEFjY2VzcyBUb2tlbiDigJQgYSBkdXJhYmxlLCBpbmRpdmlkdWFsbHktcmV2b2NhYmxlIEFQSVxuICogY3JlZGVudGlhbCDigJQgZm9yIENJL2F1dG9tYXRpb24uIFVubGlrZSBgbG9naW5gICh3aGljaCByZXR1cm5zIGEgc2hvcnQtbGl2ZWRcbiAqIHNlc3Npb24gdG9rZW4pLCBhIFBBVCBpcyB0aGUgcmlnaHQgbG9uZy1saXZlZCBjcmVkZW50aWFsIGZvciBzY3JpcHRzLlxuICpcbiAqIFRoZSBwbGF0Zm9ybSBnYXRlcyBQQVQgY3JlYXRpb24gYmVoaW5kIHN0ZXAtdXAgcmUtYXV0aGVudGljYXRpb24sIHNvIHRoaXNcbiAqIGNvbW1hbmQgY2hhaW5zIHRocmVlIGNhbGxzOiBsb2dpbiAo4oaSIGFjY2VzcyB0b2tlbiksIHN0ZXAtdXAgd2l0aCB0aGUgc2FtZVxuICogcGFzc3dvcmQgKOKGkiBzdGVwLXVwIHRva2VuKSwgdGhlbiBQT1NUIC91c2VyL3BhdHMuIFRoZSBQQVQgYmluZHMgdG8gdGhlIHVzZXInc1xuICogYWN0aXZlIG9yZzsgcGFzcyBgLS1vcmdgIHRvIHN3aXRjaCBmaXJzdCAocGVyc2lzdHMgYXMgdGhlIGFjdGl2ZSBvcmcpLlxuICpcbiAqIFRoZSByYXcgdG9rZW4gaXMgcHJpbnRlZCBPTkNFLiBgLS1xdWlldGAgcHJpbnRzIG9ubHkgYGV4cG9ydCBQTEFURk9STV9UT0tFTj3igKZgXG4gKiBzbyBpdCBjYW4gYmUgYGV2YWxgJ2Qg4oCUIHRoZSBQQVQgaXMgaXRzZWxmIGEgdmFsaWQgQmVhcmVyIGNyZWRlbnRpYWwuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcm9vdCBDb21tYW5kZXIgcHJvZ3JhbSBpbnN0YW5jZSB0byBhdHRhY2ggdGhlIGNvbW1hbmQgdG8uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIFBMQVRGT1JNX1BBU1NXT1JEPXNlY3JldCBwaXBlbGluZS1tYW5hZ2VyIGF1dGggcGF0IC0tbmFtZSBjaS1kZXBsb3kgLXUgY2lAZXhhbXBsZS5jb21cbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBwYXQgLS1uYW1lIGNpIC0tZXhwaXJlcy1kYXlzIDMwIC11IGNpQGV4YW1wbGUuY29tIC1wIHNlY3JldFxuICogZXZhbCAkKFBMQVRGT1JNX1BBU1NXT1JEPXNlY3JldCBwaXBlbGluZS1tYW5hZ2VyIGF1dGggcGF0IC0tbmFtZSBjaSAtdSBjaUBleGFtcGxlLmNvbSAtLXF1aWV0KVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYXQocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ3BhdCcpXG4gICAgLmRlc2NyaXB0aW9uKCdDcmVhdGUgYSBuYW1lZCBQZXJzb25hbCBBY2Nlc3MgVG9rZW4gKGxvbmctbGl2ZWQgQ0xJL2F1dG9tYXRpb24gY3JlZGVudGlhbCknKVxuICAgIC5yZXF1aXJlZE9wdGlvbignLS1uYW1lIDxuYW1lPicsICdIdW1hbi1yZWFkYWJsZSB0b2tlbiBuYW1lIChlLmcuIGNpLWRlcGxveSknKVxuICAgIC5vcHRpb24oJy0tZXhwaXJlcy1kYXlzIDxkYXlzPicsIGBUb2tlbiBsaWZldGltZSBpbiBkYXlzICgxLSR7TUFYX0VYUElSRVNfREFZU30pYCwgJzkwJylcbiAgICAub3B0aW9uKCctLXNjb3BlIDxzY29wZT4nLCAnT3B0aW9uYWwgdG9rZW4gc2NvcGUnKVxuICAgIC5vcHRpb24oJy11LCAtLWlkZW50aWZpZXIgPGlkZW50aWZpZXI+JywgJ1VzZXJuYW1lIG9yIGVtYWlsJylcbiAgICAub3B0aW9uKCctcCwgLS1wYXNzd29yZCA8cGFzc3dvcmQ+JywgJ1Bhc3N3b3JkIChwcmVmZXIgUExBVEZPUk1fUEFTU1dPUkQgZW52KScpXG4gICAgLm9wdGlvbignLS1vcmcgPG9yZ0lkPicsICdCaW5kIHRoZSB0b2tlbiB0byBhIHNwZWNpZmljIG9yZ2FuaXphdGlvbiAoc3dpdGNoZXMgYWN0aXZlIG9yZyknKVxuICAgIC5vcHRpb24oJy0tdXJsIDx1cmw+JywgJ1BsYXRmb3JtIGJhc2UgVVJMJywgcHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkwgfHwgJ2h0dHBzOi8vbG9jYWxob3N0Ojg0NDMnKVxuICAgIC5vcHRpb24oJy0tdmVyaWZ5LXNzbCcsICdFbmFibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1uby12ZXJpZnktc3NsJywgJ0Rpc2FibGUgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbicpXG4gICAgLm9wdGlvbignLS1xdWlldCcsICdPbmx5IHByaW50IHRoZSBleHBvcnQgc3RhdGVtZW50ICh1c2VmdWwgZm9yIGV2YWwpJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IGdlbmVyYXRlRXhlY3V0aW9uSWQoKTtcblxuICAgICAgLy8gU0VDVVJJVFk6IHRoaXMgUE9TVHMgYSBwbGFpbnRleHQgcGFzc3dvcmQgKGxvZ2luICsgc3RlcC11cCkuIE5ldmVyIHNlbmQgaXRcbiAgICAgIC8vIG92ZXIgYW4gdW52ZXJpZmllZCBUTFMgY29ubmVjdGlvbiBpbiBwcm9kdWN0aW9uIOKAlCBhIE1JVE0gd291bGQgaGFydmVzdCBpdC5cbiAgICAgIC8vIE1pcnJvcnMgdGhlIGd1YXJkIGluIGBsb2dpbmAuIE5vbi1wcm9kdWN0aW9uIHN0aWxsIGhvbm9ycyAtLW5vLXZlcmlmeS1zc2wuXG4gICAgICBhc3NlcnRDcmVkZW50aWFsVGxzQWxsb3dlZChvcHRpb25zLnZlcmlmeVNzbCk7XG5cbiAgICAgIC8vIENyZWRlbnRpYWxzIGZyb20gZmxhZ3MgT1IgUExBVEZPUk1fSURFTlRJRklFUi9QTEFURk9STV9QQVNTV09SRCBlbnYgKHNvIHRoZVxuICAgICAgLy8gcGFzc3dvcmQgbmVlZCBub3QgYXBwZWFyIGluIHNoZWxsIGhpc3RvcnkgLyBgcHNgKS5cbiAgICAgIGNvbnN0IHsgaWRlbnRpZmllciwgcGFzc3dvcmQgfSA9IHJlc29sdmVDcmVkZW50aWFscyhvcHRpb25zKTtcbiAgICAgIGNvbnN0IHF1aWV0ID0gb3B0aW9ucy5xdWlldCA/PyBmYWxzZTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVmFsaWRhdGUgbmFtZS5cbiAgICAgICAgY29uc3QgbmFtZSA9IHR5cGVvZiBvcHRpb25zLm5hbWUgPT09ICdzdHJpbmcnID8gb3B0aW9ucy5uYW1lLnRyaW0oKSA6ICcnO1xuICAgICAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdUb2tlbiBuYW1lIGlzIHJlcXVpcmVkICgtLW5hbWUpJyk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLlZBTElEQVRJT04pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuYW1lLmxlbmd0aCA+IDEwMCkge1xuICAgICAgICAgIHByaW50RXJyb3IoJ1Rva2VuIG5hbWUgbXVzdCBiZSAxMDAgY2hhcmFjdGVycyBvciBmZXdlcicpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5WQUxJREFUSU9OKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGV4cGlyeSDihpIgc2Vjb25kcy5cbiAgICAgICAgY29uc3QgZGF5cyA9IE1hdGguZmxvb3IoTnVtYmVyKG9wdGlvbnMuZXhwaXJlc0RheXMpKTtcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoZGF5cykgfHwgZGF5cyA8IDEgfHwgZGF5cyA+IE1BWF9FWFBJUkVTX0RBWVMpIHtcbiAgICAgICAgICBwcmludEVycm9yKGAtLWV4cGlyZXMtZGF5cyBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAke01BWF9FWFBJUkVTX0RBWVN9YCk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLlZBTElEQVRJT04pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4cGlyZXNJbiA9IGRheXMgKiA4NjQwMDtcblxuICAgICAgICAvLyBDcmVkZW50aWFscyByZXF1aXJlZCDigJQgc3RlcC11cCBuZWVkcyBhIHBhc3N3b3JkLCBzbyAtLXJlZnJlc2ggY2FuJ3Qgd29yayBoZXJlLlxuICAgICAgICBpZiAoIWlkZW50aWZpZXIgfHwgIXBhc3N3b3JkKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignY3JlYXRlLXBhdCByZXF1aXJlcyAtLWlkZW50aWZpZXIgYW5kIC0tcGFzc3dvcmQgKG9yIFBMQVRGT1JNX0lERU5USUZJRVIvUExBVEZPUk1fUEFTU1dPUkQgZW52KScpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMucGFzc3dvcmQpIHtcbiAgICAgICAgICBwcmludFdhcm5pbmcoJ1Bhc3NpbmcgLS1wYXNzd29yZCBvbiB0aGUgY29tbWFuZCBsaW5lIGNhbiBleHBvc2UgaXQgdmlhIHNoZWxsIGhpc3Rvcnk7IHByZWZlciB0aGUgUExBVEZPUk1fUEFTU1dPUkQgZW52IHZhci4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJhdGUgbGltaXRpbmcg4oCUIHByZXZlbnQgYnJ1dGUgZm9yY2UgKGtleWVkIHRvIGlkZW50aWZpZXIgKyB1cmwsIGxpa2UgbG9naW4pLlxuICAgICAgICBjb25zdCByYXRlTGltaXRNc2cgPSBjaGVja0F1dGhSYXRlTGltaXQoaWRlbnRpZmllciwgb3B0aW9ucy51cmwpO1xuICAgICAgICBpZiAocmF0ZUxpbWl0TXNnKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcihyYXRlTGltaXRNc2cpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXF1aWV0KSB7XG4gICAgICAgICAgcHJpbnRTZWN0aW9uKCdDcmVhdGUgUGVyc29uYWwgQWNjZXNzIFRva2VuJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coYCR7bWFnZW50YShgW0VYRS0ke2V4ZWN1dGlvbklkfV1gKX0gJHtjeWFuKGJvbGQoJ0NyZWF0ZSBQZXJzb25hbCBBY2Nlc3MgVG9rZW4nKSl9YCk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50SW5mbygnQXV0aGVudGljYXRpbmcnLCB7IGlkZW50aWZpZXIsIHVybDogb3B0aW9ucy51cmwsIHZlcmlmeVNzbDogb3B0aW9ucy52ZXJpZnlTc2wgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBodHRwc0FnZW50ID0gY3JlZGVudGlhbEh0dHBzQWdlbnQob3B0aW9ucy52ZXJpZnlTc2wpO1xuICAgICAgICBjb25zdCB0aW1lb3V0ID0gVElNRU9VVFMuSFRUUF9SRVFVRVNUO1xuXG4gICAgICAgIC8vIDEpIExvZ2luIOKGkiBzZXNzaW9uIGFjY2VzcyB0b2tlbi5cbiAgICAgICAgbGV0IGFjY2Vzc1Rva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYWNjZXNzVG9rZW4gPSBhd2FpdCBwb3N0TG9naW4oeyB1cmw6IG9wdGlvbnMudXJsLCBpZGVudGlmaWVyLCBwYXNzd29yZCwgaHR0cHNBZ2VudCwgdGltZW91dCB9KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICByZWNvcmRBdXRoRmFpbHVyZShpZGVudGlmaWVyLCBvcHRpb25zLnVybCk7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhY2Nlc3NUb2tlbikge1xuICAgICAgICAgIHJlY29yZEF1dGhGYWlsdXJlKGlkZW50aWZpZXIsIG9wdGlvbnMudXJsKTtcbiAgICAgICAgICBwcmludEVycm9yKCdMb2dpbiBmYWlsZWQ6IG5vIGFjY2VzcyB0b2tlbiBpbiByZXNwb25zZScpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cbiAgICAgICAgcmVjb3JkQXV0aFN1Y2Nlc3MoaWRlbnRpZmllciwgb3B0aW9ucy51cmwpO1xuXG4gICAgICAgIC8vIDIpIE9wdGlvbmFsbHkgYmluZCB0byBhIHNwZWNpZmljIG9yZyAocGVyc2lzdHMgYXMgdGhlIGFjdGl2ZSBvcmcsIHdoaWNoIHRoZVxuICAgICAgICAvLyAgICBQQVQgaW5oZXJpdHMpLlxuICAgICAgICBpZiAob3B0aW9ucy5vcmcpIHtcbiAgICAgICAgICBpZiAoIXF1aWV0KSBwcmludEluZm8oJ1N3aXRjaGluZyB0byBvcmdhbml6YXRpb24nLCB7IG9yZ0lkOiBvcHRpb25zLm9yZyB9KTtcbiAgICAgICAgICBhY2Nlc3NUb2tlbiA9IGF3YWl0IHN3aXRjaE9yZ2FuaXphdGlvbih7XG4gICAgICAgICAgICB1cmw6IG9wdGlvbnMudXJsLFxuICAgICAgICAgICAgb3JnSWQ6IG9wdGlvbnMub3JnLFxuICAgICAgICAgICAgYWNjZXNzVG9rZW4sXG4gICAgICAgICAgICBodHRwc0FnZW50LFxuICAgICAgICAgICAgdGltZW91dCxcbiAgICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMykgU3RlcC11cCDigJQgcmUtdmVyaWZ5IHRoZSBwYXNzd29yZCB0byB1bmxvY2sgdGhlIGdhdGVkIGNyZWF0ZSBjYWxsLlxuICAgICAgICAvLyAgICBUaGUgcmV0dXJuZWQgdG9rZW4gaXMgc2hvcnQtbGl2ZWQgKH42MHMpLCBzbyB3ZSB1c2UgaXQgaW1tZWRpYXRlbHkuXG4gICAgICAgIGNvbnN0IHN0ZXBVcFVybCA9IGAke29wdGlvbnMudXJsfS9hcGkvYXV0aC9zdGVwLXVwYDtcbiAgICAgICAgcHJpbnREZWJ1ZygnUE9TVCcsIHsgdXJsOiBzdGVwVXBVcmwgfSk7XG4gICAgICAgIGNvbnN0IHN0ZXBVcFJlcyA9IGF3YWl0IGF4aW9zLnBvc3Q8U3RlcFVwUmVzcG9uc2U+KFxuICAgICAgICAgIHN0ZXBVcFVybCxcbiAgICAgICAgICB7IHBhc3N3b3JkIH0sXG4gICAgICAgICAgeyBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke2FjY2Vzc1Rva2VufWAgfSwgaHR0cHNBZ2VudCwgdGltZW91dCB9LFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzdGVwVXBUb2tlbiA9IHN0ZXBVcFJlcy5kYXRhPy5kYXRhPy5zdGVwVXBUb2tlbjtcbiAgICAgICAgaWYgKCFzdGVwVXBUb2tlbikge1xuICAgICAgICAgIHByaW50RXJyb3IoJ1N0ZXAtdXAgdmVyaWZpY2F0aW9uIGZhaWxlZDogbm8gc3RlcC11cCB0b2tlbiBpbiByZXNwb25zZScpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyA0KSBDcmVhdGUgdGhlIFBBVC5cbiAgICAgICAgY29uc3QgcGF0VXJsID0gYCR7b3B0aW9ucy51cmx9L2FwaS91c2VyL3BhdHNgO1xuICAgICAgICBwcmludERlYnVnKCdQT1NUJywgeyB1cmw6IHBhdFVybCB9KTtcbiAgICAgICAgY29uc3QgcGF0UmVzID0gYXdhaXQgYXhpb3MucG9zdDxDcmVhdGVQYXRSZXNwb25zZT4oXG4gICAgICAgICAgcGF0VXJsLFxuICAgICAgICAgIHsgbmFtZSwgZXhwaXJlc0luLCAuLi4ob3B0aW9ucy5zY29wZSA/IHsgc2NvcGU6IG9wdGlvbnMuc2NvcGUgfSA6IHt9KSB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7YWNjZXNzVG9rZW59YCxcbiAgICAgICAgICAgICAgJ1gtU3RlcC1VcC1Ub2tlbic6IHN0ZXBVcFRva2VuLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGh0dHBzQWdlbnQsXG4gICAgICAgICAgICB0aW1lb3V0LFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgdG9rZW4gPSBwYXRSZXMuZGF0YT8uZGF0YT8udG9rZW47XG4gICAgICAgIGNvbnN0IHBhdCA9IHBhdFJlcy5kYXRhPy5kYXRhPy5wYXQ7XG4gICAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgICBwcmludEVycm9yKCdDcmVhdGUgdG9rZW4gZmFpbGVkOiBubyB0b2tlbiBpbiByZXNwb25zZScpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBRdWlldCBtb2RlOiBlbWl0IG9ubHkgdGhlIGV4cG9ydCBsaW5lICh0aGUgUEFUIGlzIGEgdmFsaWQgQmVhcmVyIHRva2VuKS5cbiAgICAgICAgaWYgKHF1aWV0KSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYGV4cG9ydCBQTEFURk9STV9UT0tFTj0ke3Rva2VufWApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTdWNjZXNzKCdQZXJzb25hbCBhY2Nlc3MgdG9rZW4gY3JlYXRlZCcpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdOYW1lJzogcGF0Py5uYW1lID8/IG5hbWUsXG4gICAgICAgICAgJ1Rva2VuIElEIChqdGkpJzogcGF0Py5qdGkgPz8gJyh1bmtub3duKScsXG4gICAgICAgICAgJ0V4cGlyZXMnOiBwYXQ/LmV4cGlyZXNBdCA/PyBgJHtkYXlzfSBkYXkocylgLFxuICAgICAgICAgIC4uLihwYXQ/LnNjb3BlID8geyBTY29wZTogcGF0LnNjb3BlIH0gOiB7fSksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIGNvbnNvbGUubG9nKHllbGxvdyhib2xkKCdDb3B5IHlvdXIgdG9rZW4gbm93IOKAlCBpdCB3aWxsIG5vdCBiZSBzaG93biBhZ2FpbjonKSkpO1xuICAgICAgICBjb25zb2xlLmxvZyhncmVlbih0b2tlbikpO1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50SW5mbygnVGlwOiB1c2UgaXQgYXMgUExBVEZPUk1fVE9LRU4gZm9yIHN1YnNlcXVlbnQgY29tbWFuZHM6Jyk7XG4gICAgICAgIGNvbnNvbGUubG9nKGdyZWVuKCcgIGV4cG9ydCBQTEFURk9STV9UT0tFTj08dG9rZW4+JykpO1xuICAgICAgICBjb25zb2xlLmxvZyhncmVlbihgICAjIG9yOiAgZXZhbCAkKHBpcGVsaW5lLW1hbmFnZXIgYXV0aCBwYXQgLS1uYW1lICR7bmFtZX0gLXUgJHtpZGVudGlmaWVyfSAtLXF1aWV0KWApKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChheGlvcy5pc0F4aW9zRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgICAgY29uc3Qgc3RhdHVzID0gZXJyb3IucmVzcG9uc2U/LnN0YXR1cztcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gKGVycm9yLnJlc3BvbnNlPy5kYXRhIGFzIHsgbWVzc2FnZT86IHN0cmluZyB9KT8ubWVzc2FnZTtcbiAgICAgICAgICBwcmludEVycm9yKCdDcmVhdGUgdG9rZW4gZmFpbGVkJywge1xuICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMgPz8gJ25vIHJlc3BvbnNlJyxcbiAgICAgICAgICAgIC4uLihtZXNzYWdlID8geyBtZXNzYWdlIH0gOiB7fSksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKTtcbiAgICAgICAgfVxuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7IGNvbW1hbmQ6ICdjcmVhdGUtcGF0JywgZXhlY3V0aW9uSWQsIGlkZW50aWZpZXI6IG9wdGlvbnMuaWRlbnRpZmllciwgdXJsOiBvcHRpb25zLnVybCB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9jcmVhdGUtcGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0ksT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFcEcsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBaUJyQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztBQUU3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQWdCO0lBQ3hDLGNBQWMsQ0FBQyxPQUFPO1NBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUM7U0FDZCxXQUFXLENBQUMsNkVBQTZFLENBQUM7U0FDMUYsY0FBYyxD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LENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztpQkFDaEMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFDRCxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7YUFDbEcsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IFRJTUVPVVRTIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgYXNzZXJ0Q3JlZGVudGlhbFRsc0FsbG93ZWQsIGNyZWRlbnRpYWxIdHRwc0FnZW50LCBwb3N0TG9naW4sIHJlc29sdmVDcmVkZW50aWFscywgc3dpdGNoT3JnYW5pemF0aW9uIH0gZnJvbSAnLi4vdXRpbHMvYXV0aC11dGlscy5qcyc7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIsIHdpdGhTc2xPcHRpb25zIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50RGVidWcsIHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgY2hlY2tBdXRoUmF0ZUxpbWl0LCByZWNvcmRBdXRoRmFpbHVyZSwgcmVjb3JkQXV0aFN1Y2Nlc3MgfSBmcm9tICcuLi91dGlscy9yYXRlLWxpbWl0ZXIuanMnO1xuXG5jb25zdCB7IGJvbGQsIGdyZWVuLCB5ZWxsb3cgfSA9IHBpY287XG5cbi8qKiBTdGVwLXVwIHJlc3BvbnNlIOKAlCBhIHNob3J0LWxpdmVkICg2MHMpIEpXVCBib3VuZCB0byB0aGUgdXNlcidzIHN1Yi4gKi9cbmludGVyZmFjZSBTdGVwVXBSZXNwb25zZSB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIGRhdGE6IHsgc3RlcFVwVG9rZW46IHN0cmluZyB9O1xufVxuXG4vKiogQ3JlYXRlLVBBVCByZXNwb25zZSDigJQgdGhlIHJhdyB0b2tlbiBpcyByZXR1cm5lZCBleGFjdGx5IG9uY2UuICovXG5pbnRlcmZhY2UgQ3JlYXRlUGF0UmVzcG9uc2Uge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBkYXRhOiB7XG4gICAgdG9rZW46IHN0cmluZztcbiAgICBwYXQ6IHsganRpOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgZXhwaXJlc0F0OiBzdHJpbmc7IHNjb3BlPzogc3RyaW5nIHwgbnVsbCB9O1xuICB9O1xufVxuXG5jb25zdCBNQVhfRVhQSVJFU19EQVlTID0gMzY1O1xuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGNyZWF0ZS1wYXRgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogTWludHMgYSBuYW1lZCBQZXJzb25hbCBBY2Nlc3MgVG9rZW4g4oCUIGEgZHVyYWJsZSwgaW5kaXZpZHVhbGx5LXJldm9jYWJsZSBBUElcbiAqIGNyZWRlbnRpYWwg4oCUIGZvciBDSS9hdXRvbWF0aW9uLiBVbmxpa2UgYGxvZ2luYCAod2hpY2ggcmV0dXJucyBhIHNob3J0LWxpdmVkXG4gKiBzZXNzaW9uIHRva2VuKSwgYSBQQVQgaXMgdGhlIHJpZ2h0IGxvbmctbGl2ZWQgY3JlZGVudGlhbCBmb3Igc2NyaXB0cy5cbiAqXG4gKiBUaGUgcGxhdGZvcm0gZ2F0ZXMgUEFUIGNyZWF0aW9uIGJlaGluZCBzdGVwLXVwIHJlLWF1dGhlbnRpY2F0aW9uLCBzbyB0aGlzXG4gKiBjb21tYW5kIGNoYWlucyB0aHJlZSBjYWxsczogbG9naW4gKOKGkiBhY2Nlc3MgdG9rZW4pLCBzdGVwLXVwIHdpdGggdGhlIHNhbWVcbiAqIHBhc3N3b3JkICjihpIgc3RlcC11cCB0b2tlbiksIHRoZW4gUE9TVCAvdXNlci9wYXRzLiBUaGUgUEFUIGJpbmRzIHRvIHRoZSB1c2VyJ3NcbiAqIGFjdGl2ZSBvcmc7IHBhc3MgYC0tb3JnYCB0byBzd2l0Y2ggZmlyc3QgKHBlcnNpc3RzIGFzIHRoZSBhY3RpdmUgb3JnKS5cbiAqXG4gKiBUaGUgcmF3IHRva2VuIGlzIHByaW50ZWQgT05DRS4gYC0tcXVpZXRgIHByaW50cyBvbmx5IGBleHBvcnQgUExBVEZPUk1fVE9LRU494oCmYFxuICogc28gaXQgY2FuIGJlIGBldmFsYCdkIOKAlCB0aGUgUEFUIGlzIGl0c2VsZiBhIHZhbGlkIEJlYXJlciBjcmVkZW50aWFsLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHJvb3QgQ29tbWFuZGVyIHByb2dyYW0gaW5zdGFuY2UgdG8gYXR0YWNoIHRoZSBjb21tYW5kIHRvLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBiYXNoXG4gKiBQTEFURk9STV9QQVNTV09SRD1zZWNyZXQgcGlwZWxpbmUtbWFuYWdlciBhdXRoIHBhdCAtLW5hbWUgY2ktZGVwbG95IC11IGNpQGV4YW1wbGUuY29tXG4gKiBwaXBlbGluZS1tYW5hZ2VyIGF1dGggcGF0IC0tbmFtZSBjaSAtLWV4cGlyZXMtZGF5cyAzMCAtdSBjaUBleGFtcGxlLmNvbSAtcCBzZWNyZXRcbiAqIGV2YWwgJChQTEFURk9STV9QQVNTV09SRD1zZWNyZXQgcGlwZWxpbmUtbWFuYWdlciBhdXRoIHBhdCAtLW5hbWUgY2kgLXUgY2lAZXhhbXBsZS5jb20gLS1xdWlldClcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGF0KHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgd2l0aFNzbE9wdGlvbnMocHJvZ3JhbVxuICAgIC5jb21tYW5kKCdwYXQnKVxuICAgIC5kZXNjcmlwdGlvbignQ3JlYXRlIGEgbmFtZWQgUGVyc29uYWwgQWNjZXNzIFRva2VuIChsb25nLWxpdmVkIENMSS9hdXRvbWF0aW9uIGNyZWRlbnRpYWwpJylcbiAgICAucmVxdWlyZWRPcHRpb24oJy0tbmFtZSA8bmFtZT4nLCAnSHVtYW4tcmVhZGFibGUgdG9rZW4gbmFtZSAoZS5nLiBjaS1kZXBsb3kpJylcbiAgICAub3B0aW9uKCctLWV4cGlyZXMtZGF5cyA8ZGF5cz4nLCBgVG9rZW4gbGlmZXRpbWUgaW4gZGF5cyAoMS0ke01BWF9FWFBJUkVTX0RBWVN9KWAsICc5MCcpXG4gICAgLm9wdGlvbignLS1zY29wZSA8c2NvcGU+JywgJ09wdGlvbmFsIHRva2VuIHNjb3BlJylcbiAgICAub3B0aW9uKCctdSwgLS1pZGVudGlmaWVyIDxpZGVudGlmaWVyPicsICdVc2VybmFtZSBvciBlbWFpbCcpXG4gICAgLm9wdGlvbignLXAsIC0tcGFzc3dvcmQgPHBhc3N3b3JkPicsICdQYXNzd29yZCAocHJlZmVyIFBMQVRGT1JNX1BBU1NXT1JEIGVudiknKVxuICAgIC5vcHRpb24oJy0tb3JnIDxvcmdJZD4nLCAnQmluZCB0aGUgdG9rZW4gdG8gYSBzcGVjaWZpYyBvcmdhbml6YXRpb24gKHN3aXRjaGVzIGFjdGl2ZSBvcmcpJylcbiAgICAub3B0aW9uKCctLXVybCA8dXJsPicsICdQbGF0Zm9ybSBiYXNlIFVSTCcsIHByb2Nlc3MuZW52LlBMQVRGT1JNX0JBU0VfVVJMIHx8ICdodHRwczovL2xvY2FsaG9zdDo4NDQzJykpXG4gICAgLm9wdGlvbignLS1xdWlldCcsICdPbmx5IHByaW50IHRoZSBleHBvcnQgc3RhdGVtZW50ICh1c2VmdWwgZm9yIGV2YWwpJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICAvLyBTRUNVUklUWTogdGhpcyBQT1NUcyBhIHBsYWludGV4dCBwYXNzd29yZCAobG9naW4gKyBzdGVwLXVwKS4gTmV2ZXIgc2VuZCBpdFxuICAgICAgLy8gb3ZlciBhbiB1bnZlcmlmaWVkIFRMUyBjb25uZWN0aW9uIGluIHByb2R1Y3Rpb24g4oCUIGEgTUlUTSB3b3VsZCBoYXJ2ZXN0IGl0LlxuICAgICAgLy8gTWlycm9ycyB0aGUgZ3VhcmQgaW4gYGxvZ2luYC4gTm9uLXByb2R1Y3Rpb24gc3RpbGwgaG9ub3JzIC0tbm8tdmVyaWZ5LXNzbC5cbiAgICAgIGFzc2VydENyZWRlbnRpYWxUbHNBbGxvd2VkKG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgICAgLy8gQ3JlZGVudGlhbHMgZnJvbSBmbGFncyBPUiBQTEFURk9STV9JREVOVElGSUVSL1BMQVRGT1JNX1BBU1NXT1JEIGVudiAoc28gdGhlXG4gICAgICAvLyBwYXNzd29yZCBuZWVkIG5vdCBhcHBlYXIgaW4gc2hlbGwgaGlzdG9yeSAvIGBwc2ApLlxuICAgICAgY29uc3QgeyBpZGVudGlmaWVyLCBwYXNzd29yZCB9ID0gcmVzb2x2ZUNyZWRlbnRpYWxzKG9wdGlvbnMpO1xuICAgICAgY29uc3QgcXVpZXQgPSBvcHRpb25zLnF1aWV0ID8/IGZhbHNlO1xuICAgICAgY29uc3QgZXhlY3V0aW9uSWQgPSBwcmludENvbW1hbmRIZWFkZXIoXG4gICAgICAgICdDcmVhdGUgUGVyc29uYWwgQWNjZXNzIFRva2VuJyxcbiAgICAgICAgJ0NyZWF0ZSBQZXJzb25hbCBBY2Nlc3MgVG9rZW4nLFxuICAgICAgICB7IHF1aWV0IH0sXG4gICAgICApO1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBWYWxpZGF0ZSBuYW1lLlxuICAgICAgICBjb25zdCBuYW1lID0gdHlwZW9mIG9wdGlvbnMubmFtZSA9PT0gJ3N0cmluZycgPyBvcHRpb25zLm5hbWUudHJpbSgpIDogJyc7XG4gICAgICAgIGlmICghbmFtZSkge1xuICAgICAgICAgIHByaW50RXJyb3IoJ1Rva2VuIG5hbWUgaXMgcmVxdWlyZWQgKC0tbmFtZSknKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuVkFMSURBVElPTik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5hbWUubGVuZ3RoID4gMTAwKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignVG9rZW4gbmFtZSBtdXN0IGJlIDEwMCBjaGFyYWN0ZXJzIG9yIGZld2VyJyk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLlZBTElEQVRJT04pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZXhwaXJ5IOKGkiBzZWNvbmRzLlxuICAgICAgICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcihOdW1iZXIob3B0aW9ucy5leHBpcmVzRGF5cykpO1xuICAgICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShkYXlzKSB8fCBkYXlzIDwgMSB8fCBkYXlzID4gTUFYX0VYUElSRVNfREFZUykge1xuICAgICAgICAgIHByaW50RXJyb3IoYC0tZXhwaXJlcy1kYXlzIG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kICR7TUFYX0VYUElSRVNfREFZU31gKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuVkFMSURBVElPTik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXhwaXJlc0luID0gZGF5cyAqIDg2NDAwO1xuXG4gICAgICAgIC8vIENyZWRlbnRpYWxzIHJlcXVpcmVkIOKAlCBzdGVwLXVwIG5lZWRzIGEgcGFzc3dvcmQsIHNvIC0tcmVmcmVzaCBjYW4ndCB3b3JrIGhlcmUuXG4gICAgICAgIGlmICghaWRlbnRpZmllciB8fCAhcGFzc3dvcmQpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdjcmVhdGUtcGF0IHJlcXVpcmVzIC0taWRlbnRpZmllciBhbmQgLS1wYXNzd29yZCAob3IgUExBVEZPUk1fSURFTlRJRklFUi9QTEFURk9STV9QQVNTV09SRCBlbnYpJyk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5wYXNzd29yZCkge1xuICAgICAgICAgIHByaW50V2FybmluZygnUGFzc2luZyAtLXBhc3N3b3JkIG9uIHRoZSBjb21tYW5kIGxpbmUgY2FuIGV4cG9zZSBpdCB2aWEgc2hlbGwgaGlzdG9yeTsgcHJlZmVyIHRoZSBQTEFURk9STV9QQVNTV09SRCBlbnYgdmFyLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmF0ZSBsaW1pdGluZyDigJQgcHJldmVudCBicnV0ZSBmb3JjZSAoa2V5ZWQgdG8gaWRlbnRpZmllciArIHVybCwgbGlrZSBsb2dpbikuXG4gICAgICAgIGNvbnN0IHJhdGVMaW1pdE1zZyA9IGNoZWNrQXV0aFJhdGVMaW1pdChpZGVudGlmaWVyLCBvcHRpb25zLnVybCk7XG4gICAgICAgIGlmIChyYXRlTGltaXRNc2cpIHtcbiAgICAgICAgICBwcmludEVycm9yKHJhdGVMaW1pdE1zZyk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcXVpZXQpIHtcbiAgICAgICAgICBwcmludEluZm8oJ0F1dGhlbnRpY2F0aW5nJywgeyBpZGVudGlmaWVyLCB1cmw6IG9wdGlvbnMudXJsLCB2ZXJpZnlTc2w6IG9wdGlvbnMudmVyaWZ5U3NsIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaHR0cHNBZ2VudCA9IGNyZWRlbnRpYWxIdHRwc0FnZW50KG9wdGlvbnMudmVyaWZ5U3NsKTtcbiAgICAgICAgY29uc3QgdGltZW91dCA9IFRJTUVPVVRTLkhUVFBfUkVRVUVTVDtcblxuICAgICAgICAvLyAxKSBMb2dpbiDihpIgc2Vzc2lvbiBhY2Nlc3MgdG9rZW4uXG4gICAgICAgIGxldCBhY2Nlc3NUb2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGFjY2Vzc1Rva2VuID0gYXdhaXQgcG9zdExvZ2luKHsgdXJsOiBvcHRpb25zLnVybCwgaWRlbnRpZmllciwgcGFzc3dvcmQsIGh0dHBzQWdlbnQsIHRpbWVvdXQgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcmVjb3JkQXV0aEZhaWx1cmUoaWRlbnRpZmllciwgb3B0aW9ucy51cmwpO1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYWNjZXNzVG9rZW4pIHtcbiAgICAgICAgICByZWNvcmRBdXRoRmFpbHVyZShpZGVudGlmaWVyLCBvcHRpb25zLnVybCk7XG4gICAgICAgICAgcHJpbnRFcnJvcignTG9naW4gZmFpbGVkOiBubyBhY2Nlc3MgdG9rZW4gaW4gcmVzcG9uc2UnKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuQVVUSEVOVElDQVRJT04pO1xuICAgICAgICB9XG4gICAgICAgIHJlY29yZEF1dGhTdWNjZXNzKGlkZW50aWZpZXIsIG9wdGlvbnMudXJsKTtcblxuICAgICAgICAvLyAyKSBPcHRpb25hbGx5IGJpbmQgdG8gYSBzcGVjaWZpYyBvcmcgKHBlcnNpc3RzIGFzIHRoZSBhY3RpdmUgb3JnLCB3aGljaCB0aGVcbiAgICAgICAgLy8gICAgUEFUIGluaGVyaXRzKS5cbiAgICAgICAgaWYgKG9wdGlvbnMub3JnKSB7XG4gICAgICAgICAgaWYgKCFxdWlldCkgcHJpbnRJbmZvKCdTd2l0Y2hpbmcgdG8gb3JnYW5pemF0aW9uJywgeyBvcmdJZDogb3B0aW9ucy5vcmcgfSk7XG4gICAgICAgICAgYWNjZXNzVG9rZW4gPSBhd2FpdCBzd2l0Y2hPcmdhbml6YXRpb24oe1xuICAgICAgICAgICAgdXJsOiBvcHRpb25zLnVybCxcbiAgICAgICAgICAgIG9yZ0lkOiBvcHRpb25zLm9yZyxcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuLFxuICAgICAgICAgICAgaHR0cHNBZ2VudCxcbiAgICAgICAgICAgIHRpbWVvdXQsXG4gICAgICAgICAgICBxdWlldCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDMpIFN0ZXAtdXAg4oCUIHJlLXZlcmlmeSB0aGUgcGFzc3dvcmQgdG8gdW5sb2NrIHRoZSBnYXRlZCBjcmVhdGUgY2FsbC5cbiAgICAgICAgLy8gICAgVGhlIHJldHVybmVkIHRva2VuIGlzIHNob3J0LWxpdmVkICh+NjBzKSwgc28gd2UgdXNlIGl0IGltbWVkaWF0ZWx5LlxuICAgICAgICBjb25zdCBzdGVwVXBVcmwgPSBgJHtvcHRpb25zLnVybH0vYXBpL2F1dGgvc3RlcC11cGA7XG4gICAgICAgIHByaW50RGVidWcoJ1BPU1QnLCB7IHVybDogc3RlcFVwVXJsIH0pO1xuICAgICAgICBjb25zdCBzdGVwVXBSZXMgPSBhd2FpdCBheGlvcy5wb3N0PFN0ZXBVcFJlc3BvbnNlPihcbiAgICAgICAgICBzdGVwVXBVcmwsXG4gICAgICAgICAgeyBwYXNzd29yZCB9LFxuICAgICAgICAgIHsgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHthY2Nlc3NUb2tlbn1gIH0sIGh0dHBzQWdlbnQsIHRpbWVvdXQgfSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc3RlcFVwVG9rZW4gPSBzdGVwVXBSZXMuZGF0YT8uZGF0YT8uc3RlcFVwVG9rZW47XG4gICAgICAgIGlmICghc3RlcFVwVG9rZW4pIHtcbiAgICAgICAgICBwcmludEVycm9yKCdTdGVwLXVwIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IG5vIHN0ZXAtdXAgdG9rZW4gaW4gcmVzcG9uc2UnKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuQVVUSEVOVElDQVRJT04pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gNCkgQ3JlYXRlIHRoZSBQQVQuXG4gICAgICAgIGNvbnN0IHBhdFVybCA9IGAke29wdGlvbnMudXJsfS9hcGkvdXNlci9wYXRzYDtcbiAgICAgICAgcHJpbnREZWJ1ZygnUE9TVCcsIHsgdXJsOiBwYXRVcmwgfSk7XG4gICAgICAgIGNvbnN0IHBhdFJlcyA9IGF3YWl0IGF4aW9zLnBvc3Q8Q3JlYXRlUGF0UmVzcG9uc2U+KFxuICAgICAgICAgIHBhdFVybCxcbiAgICAgICAgICB7IG5hbWUsIGV4cGlyZXNJbiwgLi4uKG9wdGlvbnMuc2NvcGUgPyB7IHNjb3BlOiBvcHRpb25zLnNjb3BlIH0gOiB7fSkgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke2FjY2Vzc1Rva2VufWAsXG4gICAgICAgICAgICAgICdYLVN0ZXAtVXAtVG9rZW4nOiBzdGVwVXBUb2tlbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBodHRwc0FnZW50LFxuICAgICAgICAgICAgdGltZW91dCxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHRva2VuID0gcGF0UmVzLmRhdGE/LmRhdGE/LnRva2VuO1xuICAgICAgICBjb25zdCBwYXQgPSBwYXRSZXMuZGF0YT8uZGF0YT8ucGF0O1xuICAgICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignQ3JlYXRlIHRva2VuIGZhaWxlZDogbm8gdG9rZW4gaW4gcmVzcG9uc2UnKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUXVpZXQgbW9kZTogZW1pdCBvbmx5IHRoZSBleHBvcnQgbGluZSAodGhlIFBBVCBpcyBhIHZhbGlkIEJlYXJlciB0b2tlbikuXG4gICAgICAgIGlmIChxdWlldCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBleHBvcnQgUExBVEZPUk1fVE9LRU49JHt0b2tlbn1gKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U3VjY2VzcygnUGVyc29uYWwgYWNjZXNzIHRva2VuIGNyZWF0ZWQnKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnTmFtZSc6IHBhdD8ubmFtZSA/PyBuYW1lLFxuICAgICAgICAgICdUb2tlbiBJRCAoanRpKSc6IHBhdD8uanRpID8/ICcodW5rbm93biknLFxuICAgICAgICAgICdFeHBpcmVzJzogcGF0Py5leHBpcmVzQXQgPz8gYCR7ZGF5c30gZGF5KHMpYCxcbiAgICAgICAgICAuLi4ocGF0Py5zY29wZSA/IHsgU2NvcGU6IHBhdC5zY29wZSB9IDoge30pLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBjb25zb2xlLmxvZyh5ZWxsb3coYm9sZCgnQ29weSB5b3VyIHRva2VuIG5vdyDigJQgaXQgd2lsbCBub3QgYmUgc2hvd24gYWdhaW46JykpKTtcbiAgICAgICAgY29uc29sZS5sb2coZ3JlZW4odG9rZW4pKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludEluZm8oJ1RpcDogdXNlIGl0IGFzIFBMQVRGT1JNX1RPS0VOIGZvciBzdWJzZXF1ZW50IGNvbW1hbmRzOicpO1xuICAgICAgICBjb25zb2xlLmxvZyhncmVlbignICBleHBvcnQgUExBVEZPUk1fVE9LRU49PHRva2VuPicpKTtcbiAgICAgICAgY29uc29sZS5sb2coZ3JlZW4oYCAgIyBvcjogIGV2YWwgJChwaXBlbGluZS1tYW5hZ2VyIGF1dGggcGF0IC0tbmFtZSAke25hbWV9IC11ICR7aWRlbnRpZmllcn0gLS1xdWlldClgKSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoYXhpb3MuaXNBeGlvc0Vycm9yKGVycm9yKSkge1xuICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGVycm9yLnJlc3BvbnNlPy5zdGF0dXM7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IChlcnJvci5yZXNwb25zZT8uZGF0YSBhcyB7IG1lc3NhZ2U/OiBzdHJpbmcgfSk/Lm1lc3NhZ2U7XG4gICAgICAgICAgcHJpbnRFcnJvcignQ3JlYXRlIHRva2VuIGZhaWxlZCcsIHtcbiAgICAgICAgICAgIHN0YXR1czogc3RhdHVzID8/ICdubyByZXNwb25zZScsXG4gICAgICAgICAgICAuLi4obWVzc2FnZSA/IHsgbWVzc2FnZSB9IDoge30pLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdChFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTik7XG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDogeyBjb21tYW5kOiAnY3JlYXRlLXBhdCcsIGV4ZWN1dGlvbklkLCBpZGVudGlmaWVyOiBvcHRpb25zLmlkZW50aWZpZXIsIHVybDogb3B0aW9ucy51cmwgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-pipeline.d.ts","sourceRoot":"","sources":["../../src/commands/create-pipeline.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"create-pipeline.d.ts","sourceRoot":"","sources":["../../src/commands/create-pipeline.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyQrD"}
|
|
@@ -7,9 +7,10 @@ import ora from 'ora';
|
|
|
7
7
|
import pico from 'picocolors';
|
|
8
8
|
import { formatDuration, formatFileSize, FILE_SIZE_LIMITS } from '../config/cli.constants.js';
|
|
9
9
|
import {} from '../types/index.js';
|
|
10
|
-
import { printCommandHeader, printSslWarning, createAuthenticatedClient } from '../utils/command-utils.js';
|
|
10
|
+
import { printCommandHeader, printSslWarning, createAuthenticatedClient, withSslOptions } from '../utils/command-utils.js';
|
|
11
11
|
import { ERROR_CODES, handleError } from '../utils/error-handler.js';
|
|
12
|
-
import { ensureOutputDirectory,
|
|
12
|
+
import { ensureOutputDirectory, printError, printInfo, printKeyValue, printSection, printSuccess, printWarning } from '../utils/output-utils.js';
|
|
13
|
+
import { extractSingleResponse } from '../utils/response-utils.js';
|
|
13
14
|
const { bold, cyan, dim, green } = pico;
|
|
14
15
|
/**
|
|
15
16
|
* Registers the `create-pipeline` command with the CLI program.
|
|
@@ -21,7 +22,7 @@ const { bold, cyan, dim, green } = pico;
|
|
|
21
22
|
* @param program - The root Commander program instance to attach the command to.
|
|
22
23
|
*/
|
|
23
24
|
export function createPipeline(program) {
|
|
24
|
-
program
|
|
25
|
+
withSslOptions(program
|
|
25
26
|
.command('create')
|
|
26
27
|
.description('Create a new pipeline with the provided configuration')
|
|
27
28
|
.requiredOption('-f, --file <file>', 'Path to pipeline properties JSON file')
|
|
@@ -31,9 +32,7 @@ export function createPipeline(program) {
|
|
|
31
32
|
.option('-a, --access <modifier>', 'Access modifier (public|private)', 'private')
|
|
32
33
|
.option('--default', 'Set as default pipeline', false)
|
|
33
34
|
.option('--active', 'Set pipeline as active', true)
|
|
34
|
-
.option('--no-active', 'Create the pipeline as inactive')
|
|
35
|
-
.option('--verify-ssl', 'Enable SSL certificate verification')
|
|
36
|
-
.option('--no-verify-ssl', 'Disable SSL certificate verification')
|
|
35
|
+
.option('--no-active', 'Create the pipeline as inactive'))
|
|
37
36
|
.option('--dry-run', 'Validate inputs without creating pipeline', false)
|
|
38
37
|
.action(async (options) => {
|
|
39
38
|
const executionId = printCommandHeader('Create Pipeline', 'Creating Pipeline');
|
|
@@ -252,4 +251,4 @@ export function createPipeline(program) {
|
|
|
252
251
|
}
|
|
253
252
|
});
|
|
254
253
|
}
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBpcGVsaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2NyZWF0ZS1waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQ3RCLE9BQU8sSUFBSSxNQUFNLFlBQVksQ0FBQztBQUM5QixPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlGLE9BQU8sRUFBb0UsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0csT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV4SyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRXhDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUFnQjtJQUM3QyxPQUFPO1NBQ0osT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUNqQixXQUFXLENBQUMsdURBQXVELENBQUM7U0FDcEUsY0FBYyxDQUFDLG1CQUFtQixFQUFFLHVDQUF1QyxDQUFDO1NBQzVFLE1B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LElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO29CQUM1QixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07aUJBQ3ZCO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgb3JhIGZyb20gJ29yYSc7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IGZvcm1hdER1cmF0aW9uLCBmb3JtYXRGaWxlU2l6ZSwgRklMRV9TSVpFX0xJTUlUUyB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IHR5cGUgUGlwZWxpbmUsIHR5cGUgUGlwZWxpbmVSZXNwb25zZSwgdHlwZSBDcmVhdGVQaXBlbGluZVJlcXVlc3QgfSBmcm9tICcuLi90eXBlcy9pbmRleC5qcyc7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIsIHByaW50U3NsV2FybmluZywgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudCB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBlbnN1cmVPdXRwdXREaXJlY3RvcnksIGV4dHJhY3RTaW5nbGVSZXNwb25zZSwgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcblxuY29uc3QgeyBib2xkLCBjeWFuLCBkaW0sIGdyZWVuIH0gPSBwaWNvO1xuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgYGNyZWF0ZS1waXBlbGluZWAgY29tbWFuZCB3aXRoIHRoZSBDTEkgcHJvZ3JhbS5cbiAqXG4gKiBBY2NlcHRzIGEgcGlwZWxpbmUgcHJvcGVydGllcyBKU09OIGZpbGUsIHZhbGlkYXRlcyBpdCwgcmVzb2x2ZXNcbiAqIHByb2plY3Qvb3JnYW5pemF0aW9uIGZyb20gQ0xJIGZsYWdzIG9yIHRoZSBwcm9wcyBmaWxlLCBhbmRcbiAqIGNyZWF0ZXMgdGhlIHBpcGVsaW5lIHZpYSB0aGUgcGxhdGZvcm0gQVBJLlxuICpcbiAqIEBwYXJhbSBwcm9ncmFtIC0gVGhlIHJvb3QgQ29tbWFuZGVyIHByb2dyYW0gaW5zdGFuY2UgdG8gYXR0YWNoIHRoZSBjb21tYW5kIHRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGlwZWxpbmUocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2NyZWF0ZScpXG4gICAgLmRlc2NyaXB0aW9uKCdDcmVhdGUgYSBuZXcgcGlwZWxpbmUgd2l0aCB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbicpXG4gICAgLnJlcXVpcmVkT3B0aW9uKCctZiwgLS1maWxlIDxmaWxlPicsICdQYXRoIHRvIHBpcGVsaW5lIHByb3BlcnRpZXMgSlNPTiBmaWxlJylcbiAgICAub3B0aW9uKCctcCwgLS1wcm9qZWN0IDxwcm9qZWN0PicsICdQcm9qZWN0IG5hbWUgKGZhbGxzIGJhY2sgdG8gdmFsdWUgaW4gcHJvcHMgZmlsZSknKVxuICAgIC5vcHRpb24oJy1vLCAtLW9yZ2FuaXphdGlvbiA8b3JnYW5pemF0aW9uPicsICdPcmdhbml6YXRpb24gbmFtZSAoZmFsbHMgYmFjayB0byB2YWx1ZSBpbiBwcm9wcyBmaWxlKScpXG4gICAgLm9wdGlvbignLW4sIC0tbmFtZSA8bmFtZT4nLCAnUGlwZWxpbmUgbmFtZScpXG4gICAgLm9wdGlvbignLWEsIC0tYWNjZXNzIDxtb2RpZmllcj4nLCAnQWNjZXNzIG1vZGlmaWVyIChwdWJsaWN8cHJpdmF0ZSknLCAncHJpdmF0ZScpXG4gICAgLm9wdGlvbignLS1kZWZhdWx0JywgJ1NldCBhcyBkZWZhdWx0IHBpcGVsaW5lJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1hY3RpdmUnLCAnU2V0IHBpcGVsaW5lIGFzIGFjdGl2ZScsIHRydWUpXG4gICAgLm9wdGlvbignLS1uby1hY3RpdmUnLCAnQ3JlYXRlIHRoZSBwaXBlbGluZSBhcyBpbmFjdGl2ZScpXG4gICAgLm9wdGlvbignLS12ZXJpZnktc3NsJywgJ0VuYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLW5vLXZlcmlmeS1zc2wnLCAnRGlzYWJsZSBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uJylcbiAgICAub3B0aW9uKCctLWRyeS1ydW4nLCAnVmFsaWRhdGUgaW5wdXRzIHdpdGhvdXQgY3JlYXRpbmcgcGlwZWxpbmUnLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignQ3JlYXRlIFBpcGVsaW5lJywgJ0NyZWF0aW5nIFBpcGVsaW5lJyk7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgICB0cnkge1xuXG4gICAgICAgIC8vIERpc3BsYXkgcGFyYW1ldGVyc1xuICAgICAgICBwcmludEluZm8oJ0NvbmZpZ3VyYXRpb24nKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ1Byb2plY3QnOiBvcHRpb25zLnByb2plY3QgfHwgJyhmcm9tIHByb3BzIGZpbGUpJyxcbiAgICAgICAgICAnT3JnYW5pemF0aW9uJzogb3B0aW9ucy5vcmdhbml6YXRpb24gfHwgJyhmcm9tIHByb3BzIGZpbGUpJyxcbiAgICAgICAgICAnTmFtZSc6IG9wdGlvbnMubmFtZSB8fCAnKG5vdCBzZXQpJyxcbiAgICAgICAgICAnQWNjZXNzIE1vZGlmaWVyJzogb3B0aW9ucy5hY2Nlc3MsXG4gICAgICAgICAgJ0RlZmF1bHQgUGlwZWxpbmUnOiBvcHRpb25zLmRlZmF1bHQgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgJ0FjdGl2ZSc6IG9wdGlvbnMuYWN0aXZlID8gJ1llcycgOiAnTm8nLFxuICAgICAgICAgICdQcm9wZXJ0aWVzIEZpbGUnOiBvcHRpb25zLmZpbGUsXG4gICAgICAgICAgJ1NTTCBWZXJpZmljYXRpb24nOiBvcHRpb25zLnZlcmlmeVNzbCA9PT0gZmFsc2UgPyAnRGlzYWJsZWQnIDogJ0VuYWJsZWQnLFxuICAgICAgICAgICdEcnkgUnVuJzogb3B0aW9ucy5kcnlSdW4gPyAnWWVzJyA6ICdObycsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNlY3VyaXR5IHdhcm5pbmcgZm9yIFNTTCB2ZXJpZmljYXRpb24gZGlzYWJsZWRcbiAgICAgICAgcHJpbnRTc2xXYXJuaW5nKG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignRmlsZSBWYWxpZGF0aW9uJyk7XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZmlsZSBleGlzdHNcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKG9wdGlvbnMuZmlsZSkpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdQcm9wZXJ0aWVzIGZpbGUgbm90IGZvdW5kJywgeyBwYXRoOiBvcHRpb25zLmZpbGUgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtvcHRpb25zLmZpbGV9YCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBmaWxlIGV4dGVuc2lvblxuICAgICAgICBjb25zdCBmaWxlRXh0ID0gcGF0aC5leHRuYW1lKG9wdGlvbnMuZmlsZSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKGZpbGVFeHQgIT09ICcuanNvbicpIHtcbiAgICAgICAgICBwcmludFdhcm5pbmcoJ0ZpbGUgZXh0ZW5zaW9uIGlzIG5vdCAuanNvbicsIHsgZXh0ZW5zaW9uOiBmaWxlRXh0IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsZVN0YXRzID0gZnMuc3RhdFN5bmMob3B0aW9ucy5maWxlKTtcblxuICAgICAgICAvLyBDaGVjayBmaWxlIHNpemVcbiAgICAgICAgaWYgKGZpbGVTdGF0cy5zaXplID4gRklMRV9TSVpFX0xJTUlUUy5QSVBFTElORV9QUk9QUykge1xuICAgICAgICAgIHByaW50RXJyb3IoJ1Byb3BlcnRpZXMgZmlsZSBpcyB0b28gbGFyZ2UnLCB7XG4gICAgICAgICAgICBzaXplOiBmb3JtYXRGaWxlU2l6ZShmaWxlU3RhdHMuc2l6ZSksXG4gICAgICAgICAgICBsaW1pdDogZm9ybWF0RmlsZVNpemUoRklMRV9TSVpFX0xJTUlUUy5QSVBFTElORV9QUk9QUyksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9wZXJ0aWVzIGZpbGUgZXhjZWVkcyBzaXplIGxpbWl0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBwcmludFN1Y2Nlc3MoJ0ZpbGUgdmFsaWRhdGlvbiBwYXNzZWQnKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ0ZpbGUgUGF0aCc6IG9wdGlvbnMuZmlsZSxcbiAgICAgICAgICAnRmlsZSBTaXplJzogZm9ybWF0RmlsZVNpemUoZmlsZVN0YXRzLnNpemUpLFxuICAgICAgICAgICdFeHRlbnNpb24nOiBmaWxlRXh0LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBSZWFkIGFuZCBwYXJzZSBwcm9wZXJ0aWVzIGZpbGVcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludEluZm8oJ1JlYWRpbmcgcGlwZWxpbmUgcHJvcGVydGllcy4uLicpO1xuXG4gICAgICAgIGNvbnN0IGZpbGVDb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKG9wdGlvbnMuZmlsZSwgJ3V0Zi04Jyk7XG5cbiAgICAgICAgbGV0IHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBwcm9wcyA9IEpTT04ucGFyc2UoZmlsZUNvbnRlbnQpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHByaW50RXJyb3IoJ0ludmFsaWQgSlNPTiBpbiBwcm9wZXJ0aWVzIGZpbGUnLCB7XG4gICAgICAgICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpLFxuICAgICAgICAgICAgaGludDogJ0Vuc3VyZSB0aGUgZmlsZSBjb250YWlucyB2YWxpZCBKU09OIHN5bnRheCcsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9wZXJ0aWVzIGZpbGUgbXVzdCBjb250YWluIHZhbGlkIEpTT04nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIHByb3BlcnRpZXMgc3RydWN0dXJlXG4gICAgICAgIGlmICh0eXBlb2YgcHJvcHMgIT09ICdvYmplY3QnIHx8IHByb3BzID09PSBudWxsKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignSW52YWxpZCBwcm9wZXJ0aWVzIGZvcm1hdCcsIHtcbiAgICAgICAgICAgIHR5cGU6IHR5cGVvZiBwcm9wcyxcbiAgICAgICAgICAgIGhpbnQ6ICdQcm9wZXJ0aWVzIG11c3QgYmUgYSBKU09OIG9iamVjdCcsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9wZXJ0aWVzIG11c3QgYmUgYSB2YWxpZCBvYmplY3QnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb3BDb3VudCA9IE9iamVjdC5rZXlzKHByb3BzKS5sZW5ndGg7XG5cbiAgICAgICAgcHJpbnRTdWNjZXNzKCdQcm9wZXJ0aWVzIHBhcnNlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ1RvdGFsIEtleXMnOiBwcm9wQ291bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICAnU2FtcGxlIEtleXMnOiBPYmplY3Qua2V5cyhwcm9wcykuc2xpY2UoMCwgNSkuam9pbignLCAnKSArIChwcm9wQ291bnQgPiA1ID8gJy4uLicgOiAnJyksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFZhbGlkYXRlIHByb3BlcnRpZXMgY29udGVudFxuICAgICAgICBpZiAocHJvcENvdW50ID09PSAwKSB7XG4gICAgICAgICAgcHJpbnRXYXJuaW5nKCdQcm9wZXJ0aWVzIG9iamVjdCBpcyBlbXB0eSAtIHBpcGVsaW5lIHdpbGwgaGF2ZSBubyBjb25maWd1cmF0aW9uJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXNvbHZlIHByb2plY3QgJiBvcmdhbml6YXRpb246IHByZWZlciBDTEkgZmxhZ3MsIGZhbGwgYmFjayB0b1xuICAgICAgICAvLyB2YWx1ZXMgZW1iZWRkZWQgaW5zaWRlIHRoZSBwcm9wcyBmaWxlIChidWlsZGVyUHJvcHMpLlxuICAgICAgICBjb25zdCByZXNvbHZlZFByb2plY3QgPSBvcHRpb25zLnByb2plY3QgPz8gKHByb3BzLnByb2plY3QgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRPcmdhbml6YXRpb24gPSBvcHRpb25zLm9yZ2FuaXphdGlvbiA/PyAocHJvcHMub3JnYW5pemF0aW9uIGFzIHN0cmluZyB8IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgaWYgKCFyZXNvbHZlZFByb2plY3QpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdQcm9qZWN0IGlzIHJlcXVpcmVkJywge1xuICAgICAgICAgICAgaGludDogJ1Byb3ZpZGUgLXAvLS1wcm9qZWN0IGZsYWcgb3IgaW5jbHVkZSBcInByb2plY3RcIiBpbiB0aGUgcHJvcHMgZmlsZScsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9qZWN0IGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZXNvbHZlZE9yZ2FuaXphdGlvbikge1xuICAgICAgICAgIHByaW50RXJyb3IoJ09yZ2FuaXphdGlvbiBpcyByZXF1aXJlZCcsIHtcbiAgICAgICAgICAgIGhpbnQ6ICdQcm92aWRlIC1vLy0tb3JnYW5pemF0aW9uIGZsYWcgb3IgaW5jbHVkZSBcIm9yZ2FuaXphdGlvblwiIGluIHRoZSBwcm9wcyBmaWxlJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ09yZ2FuaXphdGlvbiBpcyByZXF1aXJlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQnVpbGQgcmVxdWVzdCBwYXlsb2FkIOKAlCByZXNvbHZlIHBpcGVsaW5lTmFtZSB1c2luZyBzYW1lIHN0cmF0ZWd5IGFzIHBpcGVsaW5lLWJ1aWxkZXIudHM6XG4gICAgICAgIC8vICAgcHJvcHMucGlwZWxpbmVOYW1lID8/IGAke29yZ2FuaXphdGlvbn0tJHtwcm9qZWN0fS1waXBlbGluZWBcbiAgICAgICAgY29uc3Qgc2FuaXRpemUgPSAoczogc3RyaW5nKSA9PiBzLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCAnXycpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkUGlwZWxpbmVOYW1lID0gb3B0aW9ucy5uYW1lXG4gICAgICAgICAgPz8gKHByb3BzLnBpcGVsaW5lTmFtZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQpXG4gICAgICAgICAgPz8gYCR7c2FuaXRpemUocmVzb2x2ZWRPcmdhbml6YXRpb24pfS0ke3Nhbml0aXplKHJlc29sdmVkUHJvamVjdCl9LXBpcGVsaW5lYDtcblxuICAgICAgICBjb25zdCBwYXlsb2FkOiBDcmVhdGVQaXBlbGluZVJlcXVlc3QgPSB7XG4gICAgICAgICAgcHJvamVjdDogcmVzb2x2ZWRQcm9qZWN0LFxuICAgICAgICAgIG9yZ2FuaXphdGlvbjogcmVzb2x2ZWRPcmdhbml6YXRpb24sXG4gICAgICAgICAgcGlwZWxpbmVOYW1lOiByZXNvbHZlZFBpcGVsaW5lTmFtZSxcbiAgICAgICAgICBwcm9wcyxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBZGQgb3B0aW9uYWwgZmllbGRzIG9ubHkgaWYgcHJvdmlkZWRcbiAgICAgICAgaWYgKG9wdGlvbnMuYWNjZXNzKSB7XG4gICAgICAgICAgcGF5bG9hZC5hY2Nlc3NNb2RpZmllciA9IG9wdGlvbnMuYWNjZXNzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmRlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHBheWxvYWQuaXNEZWZhdWx0ID0gb3B0aW9ucy5kZWZhdWx0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmFjdGl2ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcGF5bG9hZC5pc0FjdGl2ZSA9IG9wdGlvbnMuYWN0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRHJ5IHJ1biBtb2RlXG4gICAgICAgIGlmIChvcHRpb25zLmRyeVJ1bikge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICBwcmludFNlY3Rpb24oJ0RyeSBSdW4gLSBSZXF1ZXN0IFByZXZpZXcnKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShwYXlsb2FkLCBudWxsLCAyKSk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50U3VjY2Vzcygn4pyTIFZhbGlkYXRpb24gY29tcGxldGUgLSBubyBwaXBlbGluZSBjcmVhdGVkIChkcnkgcnVuIG1vZGUpJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50SW5mbygnVG8gY3JlYXRlIHRoZSBwaXBlbGluZSwgcnVuIHRoZSBjb21tYW5kIHdpdGhvdXQgLS1kcnktcnVuJyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGF1dGhlbnRpY2F0ZWQgQVBJIGNsaWVudFxuICAgICAgICBjb25zdCBjbGllbnQgPSBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50KG9wdGlvbnMpO1xuICAgICAgICBjb25zdCBjb25maWcgPSBjbGllbnQuZ2V0Q29uZmlnKCk7XG5cbiAgICAgICAgLy8gQ3JlYXRlIHBpcGVsaW5lXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdDcmVhdGluZyBQaXBlbGluZScpO1xuXG4gICAgICAgIGNvbnN0IHNwaW5uZXIgPSBvcmEoJ0NyZWF0aW5nIHBpcGVsaW5lLi4uJykuc3RhcnQoKTtcbiAgICAgICAgbGV0IHJhd1Jlc3BvbnNlOiBQaXBlbGluZVJlc3BvbnNlO1xuICAgICAgICBsZXQgcmVxdWVzdER1cmF0aW9uOiBudW1iZXI7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVxdWVzdFN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICByYXdSZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PFBpcGVsaW5lUmVzcG9uc2U+KFxuICAgICAgICAgICAgY29uZmlnLmFwaS5waXBlbGluZVVybCxcbiAgICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXF1ZXN0RHVyYXRpb24gPSBEYXRlLm5vdygpIC0gcmVxdWVzdFN0YXJ0O1xuICAgICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnUGlwZWxpbmUgY3JlYXRlZCcpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHNwaW5uZXIuZmFpbCgnUGlwZWxpbmUgY3JlYXRpb24gZmFpbGVkJyk7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwaXBlbGluZSA9IGV4dHJhY3RTaW5nbGVSZXNwb25zZTxQaXBlbGluZT4ocmF3UmVzcG9uc2UsICdwaXBlbGluZScsICdpZCcpO1xuXG4gICAgICAgIGlmICghcGlwZWxpbmU/LmlkKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignSW52YWxpZCBwaXBlbGluZSByZXNwb25zZScsIHtcbiAgICAgICAgICAgIHJlc3BvbnNlS2V5czogcmF3UmVzcG9uc2UgPyBPYmplY3Qua2V5cyhyYXdSZXNwb25zZSkgOiAnKG51bGwpJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BpcGVsaW5lIGNyZWF0aW9uIGZhaWxlZCAtIG5vIHZhbGlkIHBpcGVsaW5lIGRhdGEgcmVjZWl2ZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCfinJMgUGlwZWxpbmUgQ3JlYXRlZCBTdWNjZXNzZnVsbHknKTtcblxuICAgICAgICAvLyBEaXNwbGF5IGNyZWF0ZWQgcGlwZWxpbmUgaW5mb1xuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnUGlwZWxpbmUgSUQnOiBncmVlbihib2xkKHBpcGVsaW5lLmlkKSksXG4gICAgICAgICAgJ1Byb2plY3QnOiBwaXBlbGluZS5wcm9qZWN0LFxuICAgICAgICAgICdPcmdhbml6YXRpb24nOiBwaXBlbGluZS5vcmdhbml6YXRpb24sXG4gICAgICAgICAgJ05hbWUnOiBwaXBlbGluZS5waXBlbGluZU5hbWUgfHwgJyhub3Qgc2V0KScsXG4gICAgICAgICAgJ0FjY2Vzcyc6IHBpcGVsaW5lLmFjY2Vzc01vZGlmaWVyIHx8ICdwcml2YXRlJyxcbiAgICAgICAgICAnRGVmYXVsdCc6IHBpcGVsaW5lLmlzRGVmYXVsdCA/ICdZZXMnIDogJ05vJyxcbiAgICAgICAgICAnQWN0aXZlJzogcGlwZWxpbmUuaXNBY3RpdmUgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgJ1Byb3BlcnRpZXMnOiBwaXBlbGluZS5wcm9wcyA/IGAke09iamVjdC5rZXlzKHBpcGVsaW5lLnByb3BzKS5sZW5ndGh9IGtleXNgIDogJyhub3QgcmV0dXJuZWQpJyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHBpcGVsaW5lLmNyZWF0ZWRBdCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgICdDcmVhdGVkIEF0JzogcGlwZWxpbmUuY3JlYXRlZEF0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGVyZm9ybWFuY2UgbWV0cmljc1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdFeGVjdXRpb24gSUQnOiBleGVjdXRpb25JZCxcbiAgICAgICAgICAnUmVxdWVzdCBEdXJhdGlvbic6IGZvcm1hdER1cmF0aW9uKHJlcXVlc3REdXJhdGlvbiksXG4gICAgICAgICAgJ1RvdGFsIER1cmF0aW9uJzogZm9ybWF0RHVyYXRpb24oRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNhdmUgcGlwZWxpbmUgaW5mbyB0byBmaWxlXG4gICAgICAgIGNvbnN0IG91dHB1dERpciA9ICcuL291dHB1dCc7XG4gICAgICAgIGVuc3VyZU91dHB1dERpcmVjdG9yeShvdXRwdXREaXIpO1xuXG4gICAgICAgIGNvbnN0IG91dHB1dEZpbGUgPSBwYXRoLmpvaW4ob3V0cHV0RGlyLCBgcGlwZWxpbmUtJHtwaXBlbGluZS5pZH0uanNvbmApO1xuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKG91dHB1dEZpbGUsIEpTT04uc3RyaW5naWZ5KHBpcGVsaW5lLCBudWxsLCAyKSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIGRldGFpbHMgc2F2ZWQgdG8gZmlsZScpO1xuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnT3V0cHV0IEZpbGUnOiBvdXRwdXRGaWxlLFxuICAgICAgICAgICdGaWxlIFNpemUnOiBmb3JtYXRGaWxlU2l6ZShmcy5zdGF0U3luYyhvdXRwdXRGaWxlKS5zaXplKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gTmV4dCBzdGVwc1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignTmV4dCBTdGVwcycpO1xuICAgICAgICBjb25zb2xlLmxvZyhkaW0oJ1lvdSBjYW4gbm93OicpKTtcbiAgICAgICAgY29uc29sZS5sb2coYCAgJHtjeWFuKCfigKInKX0gRGVwbG95OiAke2JvbGQoYGRlcGxveSAtLWlkICR7cGlwZWxpbmUuaWR9YCl9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKGAgICR7Y3lhbign4oCiJyl9IFZpZXc6ICR7Ym9sZChgZ2V0LXBpcGVsaW5lIC0taWQgJHtwaXBlbGluZS5pZH1gKX1gKTtcbiAgICAgICAgY29uc29sZS5sb2coYCAgJHtjeWFuKCfigKInKX0gQVBJOiAke2NvbmZpZy5hcGkuYmFzZVVybH0ke2NvbmZpZy5hcGkucGlwZWxpbmVVcmx9LyR7cGlwZWxpbmUuaWR9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgY29tbWFuZDogJ2NyZWF0ZS1waXBlbGluZScsXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgIHByb2plY3Q6IG9wdGlvbnMucHJvamVjdCxcbiAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogb3B0aW9ucy5vcmdhbml6YXRpb24sXG4gICAgICAgICAgICBmaWxlOiBvcHRpb25zLmZpbGUsXG4gICAgICAgICAgICB2ZXJpZnlTc2w6IG9wdGlvbnMudmVyaWZ5U3NsLFxuICAgICAgICAgICAgZHJ5UnVuOiBvcHRpb25zLmRyeVJ1bixcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn0iXX0=
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBpcGVsaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2NyZWF0ZS1waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQ3RCLE9BQU8sSUFBSSxNQUFNLFlBQVksQ0FBQztBQUM5QixPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlGLE9BQU8sRUFBb0UsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNILE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDakosT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbkUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztBQUV4Qzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBZ0I7SUFDN0MsY0FBYyxDQUFDLE9BQU87U0FDbkIsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUNqQixXQUFXLENBQUMsdURBQXVELENBQUM7U0FDcEUsY0FBYyxDQUFDLG1CQUFtQixFQUFFLHVDQUF1QyxDQUFDO1NBQzVFLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxrREFBa0QsQ0FBQztTQUNyRixNQUFNLENBQUMsbUNBQW1DLEVBQUUsdURBQXVELENBQUM7U0FDcEcsTUFBTSxDQUFDLG1CQUFtQixFQUFFLGVBQWUsQ0FBQztTQUM1QyxNQUFNLENBQUMseUJBQXlCLEVBQUUsa0NBQWtDLEVBQUUsU0FBUyxDQUFDO1NBQ2hGLE1BQU0sQ0FBQyxXQUFXLEVBQUUseUJBQXlCLEVBQUUsS0FBSyxDQUFDO1NBQ3JELE1BQU0sQ0FBQyxVQUFVLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxDQUFDO1NBQ2xELE1BQU0sQ0FBQyxhQUFhLEVBQUUsaUNBQWlDLENBQUMsQ0FBQztTQUN6RCxNQUFNLENBQUMsV0FBVyxFQUFFLDJDQUEyQyxFQUFFLEtBQUssQ0FBQztTQUN2RSxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFDLGlCQUFpQixFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDL0UsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQztZQUVILHFCQUFxQjtZQUNyQixTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDM0IsYUFBYSxDQUFDO2dCQUNaLFNBQVMsRUFBRSxPQUFPLENBQUMsT0FBTyxJQUFJLG1CQUFtQjtnQkFDakQsY0FBYyxFQUFFLE9BQU8sQ0FBQyxZQUFZLElBQUksbUJBQW1CO2dCQUMzRCxNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxXQUFXO2dCQUNuQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDakMsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUNsRCxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUN2QyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsSUFBSTtnQkFDL0Isa0JBQWtCLEVBQUUsT0FBTyxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDeEUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTthQUN6QyxDQUFDLENBQUM7WUFFSCxpREFBaUQ7WUFDakQsZUFBZSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUVuQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hCLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBRWhDLHVCQUF1QjtZQUN2QixJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDakMsVUFBVSxDQUFDLDJCQUEyQixFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRSxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNyRCxDQUFDO1lBRUQsdUJBQXVCO1lBQ3ZCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3pELElBQUksT0FBTyxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUN4QixZQUFZLENBQUMsNkJBQTZCLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUN0RSxDQUFDO1lBRUQsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFNUMsa0JBQWtCO1lBQ2xCLElBQUksU0FBUyxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDckQsVUFBVSxDQUFDLDhCQUE4QixFQUFFO29CQUN6QyxJQUFJLEVBQUUsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7b0JBQ3BDLEtBQUssRUFBRSxjQUFjLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDO2lCQUN2RCxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1lBQ3hELENBQUM7WUFFRCxZQUFZLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUN2QyxhQUFhLENBQUM7Z0JBQ1osV0FBVyxFQUFFLE9BQU8sQ0FBQyxJQUFJO2dCQUN6QixXQUFXLEVBQUUsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQzNDLFdBQVcsRUFBRSxPQUFPO2FBQ3JCLENBQUMsQ0FBQztZQUVILGlDQUFpQztZQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hCLFNBQVMsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBRTVDLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUUzRCxJQUFJLEtBQThCLENBQUM7WUFDbkMsSUFBSSxDQUFDO2dCQUNILEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLFVBQVUsQ0FBQyxpQ0FBaUMsRUFBRTtvQkFDNUMsS0FBSyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7b0JBQzdELElBQUksRUFBRSw0Q0FBNEM7aUJBQ25ELENBQUMsQ0FBQztnQkFDSCxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7WUFDN0QsQ0FBQztZQUVELGdDQUFnQztZQUNoQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ2hELFVBQVUsQ0FBQywyQkFBMkIsRUFBRTtvQkFDdEMsSUFBSSxFQUFFLE9BQU8sS0FBSztvQkFDbEIsSUFBSSxFQUFFLGtDQUFrQztpQkFDekMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztZQUN2RCxDQUFDO1lBRUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFFNUMsWUFBWSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7WUFDL0MsYUFBYSxDQUFDO2dCQUNaLFlBQVksRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFO2dCQUNsQyxhQUFhLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQ3hGLENBQUMsQ0FBQztZQUVILDhCQUE4QjtZQUM5QixJQUFJLFNBQVMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsWUFBWSxDQUFDLGtFQUFrRSxDQUFDLENBQUM7WUFDbkYsQ0FBQztZQUVELGlFQUFpRTtZQUNqRSx3REFBd0Q7WUFDeEQsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSyxLQUFLLENBQUMsT0FBOEIsQ0FBQztZQUNqRixNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxZQUFZLElBQUssS0FBSyxDQUFDLFlBQW1DLENBQUM7WUFFaEcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNyQixVQUFVLENBQUMscUJBQXFCLEVBQUU7b0JBQ2hDLElBQUksRUFBRSxrRUFBa0U7aUJBQ3pFLENBQUMsQ0FBQztnQkFDSCxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDekMsQ0FBQztZQUNELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUMxQixVQUFVLENBQUMsMEJBQTBCLEVBQUU7b0JBQ3JDLElBQUksRUFBRSw0RUFBNEU7aUJBQ25GLENBQUMsQ0FBQztnQkFDSCxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFDOUMsQ0FBQztZQUVELDJGQUEyRjtZQUMzRixnRUFBZ0U7WUFDaEUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlFLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDLElBQUk7bUJBQ25DLEtBQUssQ0FBQyxZQUFtQzttQkFDMUMsR0FBRyxRQUFRLENBQUMsb0JBQW9CLENBQUMsSUFBSSxRQUFRLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQztZQUUvRSxNQUFNLE9BQU8sR0FBMEI7Z0JBQ3JDLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixZQUFZLEVBQUUsb0JBQW9CO2dCQUNsQyxZQUFZLEVBQUUsb0JBQW9CO2dCQUNsQyxLQUFLO2FBQ04sQ0FBQztZQUVGLHVDQUF1QztZQUN2QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbkIsT0FBTyxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQzFDLENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ2xDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUN0QyxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNqQyxPQUFPLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDcEMsQ0FBQztZQUVELGVBQWU7WUFDZixJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEIsWUFBWSxDQUFDLDJCQUEyQixDQUFDLENBQUM7Z0JBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzlDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2hCLFlBQVksQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO2dCQUMzRSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoQixTQUFTLENBQUMsMkRBQTJELENBQUMsQ0FBQztnQkFDdkUsT0FBTztZQUNULENBQUM7WUFFRCxrQ0FBa0M7WUFDbEMsTUFBTSxNQUFNLEdBQUcseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBRWxDLGtCQUFrQjtZQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hCLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBRWxDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BELElBQUksV0FBNkIsQ0FBQztZQUNsQyxJQUFJLGVBQXVCLENBQUM7WUFDNUIsSUFBSSxDQUFDO2dCQUNILE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDaEMsV0FBVyxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FDN0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQ3RCLE9BQU8sQ0FDUixDQUFDO2dCQUNGLGVBQWUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsWUFBWSxDQUFDO2dCQUM1QyxPQUFPLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDdEMsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO2dCQUN6QyxNQUFNLEtBQUssQ0FBQztZQUNkLENBQUM7WUFFRCxNQUFNLFFBQVEsR0FBRyxxQkFBcUIsQ0FBVyxXQUFXLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRWhGLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUM7Z0JBQ2xCLFVBQVUsQ0FBQywyQkFBMkIsRUFBRTtvQkFDdEMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTtpQkFDaEUsQ0FBQyxDQUFDO2dCQUNILE1BQU0sSUFBSSxLQUFLLENBQUMsNERBQTRELENBQUMsQ0FBQztZQUNoRixDQUFDO1lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixZQUFZLENBQUMsaUNBQWlDLENBQUMsQ0FBQztZQUVoRCxnQ0FBZ0M7WUFDaEMsYUFBYSxDQUFDO2dCQUNaLGFBQWEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdkMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxPQUFPO2dCQUMzQixjQUFjLEVBQUUsUUFBUSxDQUFDLFlBQVk7Z0JBQ3JDLE1BQU0sRUFBRSxRQUFRLENBQUMsWUFBWSxJQUFJLFdBQVc7Z0JBQzVDLFFBQVEsRUFBRSxRQUFRLENBQUMsY0FBYyxJQUFJLFNBQVM7Z0JBQzlDLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQzVDLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQzFDLFlBQVksRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sT0FBTyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7YUFDL0YsQ0FBQyxDQUFDO1lBRUgsSUFBSSxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2hCLGFBQWEsQ0FBQztvQkFDWixZQUFZLEVBQUUsUUFBUSxDQUFDLFNBQVM7aUJBQ2pDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRCxzQkFBc0I7WUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixhQUFhLENBQUM7Z0JBQ1osY0FBYyxFQUFFLFdBQVc7Z0JBQzNCLGtCQUFrQixFQUFFLGNBQWMsQ0FBQyxlQUFlLENBQUM7Z0JBQ25ELGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDO2FBQ3pELENBQUMsQ0FBQztZQUVILDZCQUE2QjtZQUM3QixNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUM7WUFDN0IscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFakMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsWUFBWSxRQUFRLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN4RSxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVoRSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hCLFlBQVksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBQy9DLGFBQWEsQ0FBQztnQkFDWixhQUFhLEVBQUUsVUFBVTtnQkFDekIsV0FBVyxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQzthQUMxRCxDQUFDLENBQUM7WUFFSCxhQUFhO1lBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDM0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksQ0FBQyxlQUFlLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1RSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQyxxQkFBcUIsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hGLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDakcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVsQixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFDMUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLO2dCQUMzQixJQUFJLEVBQUUsSUFBSTtnQkFDVixPQUFPLEVBQUU7b0JBQ1AsT0FBTyxFQUFFLGlCQUFpQjtvQkFDMUIsV0FBVztvQkFDWCxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87b0JBQ3hCLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtvQkFDbEMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7b0JBQzVCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtpQkFDdkI7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCBvcmEgZnJvbSAnb3JhJztcbmltcG9ydCBwaWNvIGZyb20gJ3BpY29jb2xvcnMnO1xuaW1wb3J0IHsgZm9ybWF0RHVyYXRpb24sIGZvcm1hdEZpbGVTaXplLCBGSUxFX1NJWkVfTElNSVRTIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgdHlwZSBQaXBlbGluZSwgdHlwZSBQaXBlbGluZVJlc3BvbnNlLCB0eXBlIENyZWF0ZVBpcGVsaW5lUmVxdWVzdCB9IGZyb20gJy4uL3R5cGVzL2luZGV4LmpzJztcbmltcG9ydCB7IHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRTc2xXYXJuaW5nLCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50LCB3aXRoU3NsT3B0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBlbnN1cmVPdXRwdXREaXJlY3RvcnksIHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyBleHRyYWN0U2luZ2xlUmVzcG9uc2UgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS11dGlscy5qcyc7XG5cbmNvbnN0IHsgYm9sZCwgY3lhbiwgZGltLCBncmVlbiB9ID0gcGljbztcblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBjcmVhdGUtcGlwZWxpbmVgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogQWNjZXB0cyBhIHBpcGVsaW5lIHByb3BlcnRpZXMgSlNPTiBmaWxlLCB2YWxpZGF0ZXMgaXQsIHJlc29sdmVzXG4gKiBwcm9qZWN0L29yZ2FuaXphdGlvbiBmcm9tIENMSSBmbGFncyBvciB0aGUgcHJvcHMgZmlsZSwgYW5kXG4gKiBjcmVhdGVzIHRoZSBwaXBlbGluZSB2aWEgdGhlIHBsYXRmb3JtIEFQSS5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSByb290IENvbW1hbmRlciBwcm9ncmFtIGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgY29tbWFuZCB0by5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBpcGVsaW5lKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgd2l0aFNzbE9wdGlvbnMocHJvZ3JhbVxuICAgIC5jb21tYW5kKCdjcmVhdGUnKVxuICAgIC5kZXNjcmlwdGlvbignQ3JlYXRlIGEgbmV3IHBpcGVsaW5lIHdpdGggdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb24nKVxuICAgIC5yZXF1aXJlZE9wdGlvbignLWYsIC0tZmlsZSA8ZmlsZT4nLCAnUGF0aCB0byBwaXBlbGluZSBwcm9wZXJ0aWVzIEpTT04gZmlsZScpXG4gICAgLm9wdGlvbignLXAsIC0tcHJvamVjdCA8cHJvamVjdD4nLCAnUHJvamVjdCBuYW1lIChmYWxscyBiYWNrIHRvIHZhbHVlIGluIHByb3BzIGZpbGUpJylcbiAgICAub3B0aW9uKCctbywgLS1vcmdhbml6YXRpb24gPG9yZ2FuaXphdGlvbj4nLCAnT3JnYW5pemF0aW9uIG5hbWUgKGZhbGxzIGJhY2sgdG8gdmFsdWUgaW4gcHJvcHMgZmlsZSknKVxuICAgIC5vcHRpb24oJy1uLCAtLW5hbWUgPG5hbWU+JywgJ1BpcGVsaW5lIG5hbWUnKVxuICAgIC5vcHRpb24oJy1hLCAtLWFjY2VzcyA8bW9kaWZpZXI+JywgJ0FjY2VzcyBtb2RpZmllciAocHVibGljfHByaXZhdGUpJywgJ3ByaXZhdGUnKVxuICAgIC5vcHRpb24oJy0tZGVmYXVsdCcsICdTZXQgYXMgZGVmYXVsdCBwaXBlbGluZScsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tYWN0aXZlJywgJ1NldCBwaXBlbGluZSBhcyBhY3RpdmUnLCB0cnVlKVxuICAgIC5vcHRpb24oJy0tbm8tYWN0aXZlJywgJ0NyZWF0ZSB0aGUgcGlwZWxpbmUgYXMgaW5hY3RpdmUnKSlcbiAgICAub3B0aW9uKCctLWRyeS1ydW4nLCAnVmFsaWRhdGUgaW5wdXRzIHdpdGhvdXQgY3JlYXRpbmcgcGlwZWxpbmUnLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignQ3JlYXRlIFBpcGVsaW5lJywgJ0NyZWF0aW5nIFBpcGVsaW5lJyk7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgICB0cnkge1xuXG4gICAgICAgIC8vIERpc3BsYXkgcGFyYW1ldGVyc1xuICAgICAgICBwcmludEluZm8oJ0NvbmZpZ3VyYXRpb24nKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ1Byb2plY3QnOiBvcHRpb25zLnByb2plY3QgfHwgJyhmcm9tIHByb3BzIGZpbGUpJyxcbiAgICAgICAgICAnT3JnYW5pemF0aW9uJzogb3B0aW9ucy5vcmdhbml6YXRpb24gfHwgJyhmcm9tIHByb3BzIGZpbGUpJyxcbiAgICAgICAgICAnTmFtZSc6IG9wdGlvbnMubmFtZSB8fCAnKG5vdCBzZXQpJyxcbiAgICAgICAgICAnQWNjZXNzIE1vZGlmaWVyJzogb3B0aW9ucy5hY2Nlc3MsXG4gICAgICAgICAgJ0RlZmF1bHQgUGlwZWxpbmUnOiBvcHRpb25zLmRlZmF1bHQgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgJ0FjdGl2ZSc6IG9wdGlvbnMuYWN0aXZlID8gJ1llcycgOiAnTm8nLFxuICAgICAgICAgICdQcm9wZXJ0aWVzIEZpbGUnOiBvcHRpb25zLmZpbGUsXG4gICAgICAgICAgJ1NTTCBWZXJpZmljYXRpb24nOiBvcHRpb25zLnZlcmlmeVNzbCA9PT0gZmFsc2UgPyAnRGlzYWJsZWQnIDogJ0VuYWJsZWQnLFxuICAgICAgICAgICdEcnkgUnVuJzogb3B0aW9ucy5kcnlSdW4gPyAnWWVzJyA6ICdObycsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNlY3VyaXR5IHdhcm5pbmcgZm9yIFNTTCB2ZXJpZmljYXRpb24gZGlzYWJsZWRcbiAgICAgICAgcHJpbnRTc2xXYXJuaW5nKG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignRmlsZSBWYWxpZGF0aW9uJyk7XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZmlsZSBleGlzdHNcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKG9wdGlvbnMuZmlsZSkpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdQcm9wZXJ0aWVzIGZpbGUgbm90IGZvdW5kJywgeyBwYXRoOiBvcHRpb25zLmZpbGUgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtvcHRpb25zLmZpbGV9YCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBmaWxlIGV4dGVuc2lvblxuICAgICAgICBjb25zdCBmaWxlRXh0ID0gcGF0aC5leHRuYW1lKG9wdGlvbnMuZmlsZSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKGZpbGVFeHQgIT09ICcuanNvbicpIHtcbiAgICAgICAgICBwcmludFdhcm5pbmcoJ0ZpbGUgZXh0ZW5zaW9uIGlzIG5vdCAuanNvbicsIHsgZXh0ZW5zaW9uOiBmaWxlRXh0IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsZVN0YXRzID0gZnMuc3RhdFN5bmMob3B0aW9ucy5maWxlKTtcblxuICAgICAgICAvLyBDaGVjayBmaWxlIHNpemVcbiAgICAgICAgaWYgKGZpbGVTdGF0cy5zaXplID4gRklMRV9TSVpFX0xJTUlUUy5QSVBFTElORV9QUk9QUykge1xuICAgICAgICAgIHByaW50RXJyb3IoJ1Byb3BlcnRpZXMgZmlsZSBpcyB0b28gbGFyZ2UnLCB7XG4gICAgICAgICAgICBzaXplOiBmb3JtYXRGaWxlU2l6ZShmaWxlU3RhdHMuc2l6ZSksXG4gICAgICAgICAgICBsaW1pdDogZm9ybWF0RmlsZVNpemUoRklMRV9TSVpFX0xJTUlUUy5QSVBFTElORV9QUk9QUyksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9wZXJ0aWVzIGZpbGUgZXhjZWVkcyBzaXplIGxpbWl0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBwcmludFN1Y2Nlc3MoJ0ZpbGUgdmFsaWRhdGlvbiBwYXNzZWQnKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ0ZpbGUgUGF0aCc6IG9wdGlvbnMuZmlsZSxcbiAgICAgICAgICAnRmlsZSBTaXplJzogZm9ybWF0RmlsZVNpemUoZmlsZVN0YXRzLnNpemUpLFxuICAgICAgICAgICdFeHRlbnNpb24nOiBmaWxlRXh0LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBSZWFkIGFuZCBwYXJzZSBwcm9wZXJ0aWVzIGZpbGVcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludEluZm8oJ1JlYWRpbmcgcGlwZWxpbmUgcHJvcGVydGllcy4uLicpO1xuXG4gICAgICAgIGNvbnN0IGZpbGVDb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKG9wdGlvbnMuZmlsZSwgJ3V0Zi04Jyk7XG5cbiAgICAgICAgbGV0IHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBwcm9wcyA9IEpTT04ucGFyc2UoZmlsZUNvbnRlbnQpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHByaW50RXJyb3IoJ0ludmFsaWQgSlNPTiBpbiBwcm9wZXJ0aWVzIGZpbGUnLCB7XG4gICAgICAgICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpLFxuICAgICAgICAgICAgaGludDogJ0Vuc3VyZSB0aGUgZmlsZSBjb250YWlucyB2YWxpZCBKU09OIHN5bnRheCcsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9wZXJ0aWVzIGZpbGUgbXVzdCBjb250YWluIHZhbGlkIEpTT04nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIHByb3BlcnRpZXMgc3RydWN0dXJlXG4gICAgICAgIGlmICh0eXBlb2YgcHJvcHMgIT09ICdvYmplY3QnIHx8IHByb3BzID09PSBudWxsKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignSW52YWxpZCBwcm9wZXJ0aWVzIGZvcm1hdCcsIHtcbiAgICAgICAgICAgIHR5cGU6IHR5cGVvZiBwcm9wcyxcbiAgICAgICAgICAgIGhpbnQ6ICdQcm9wZXJ0aWVzIG11c3QgYmUgYSBKU09OIG9iamVjdCcsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9wZXJ0aWVzIG11c3QgYmUgYSB2YWxpZCBvYmplY3QnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb3BDb3VudCA9IE9iamVjdC5rZXlzKHByb3BzKS5sZW5ndGg7XG5cbiAgICAgICAgcHJpbnRTdWNjZXNzKCdQcm9wZXJ0aWVzIHBhcnNlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ1RvdGFsIEtleXMnOiBwcm9wQ291bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICAnU2FtcGxlIEtleXMnOiBPYmplY3Qua2V5cyhwcm9wcykuc2xpY2UoMCwgNSkuam9pbignLCAnKSArIChwcm9wQ291bnQgPiA1ID8gJy4uLicgOiAnJyksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFZhbGlkYXRlIHByb3BlcnRpZXMgY29udGVudFxuICAgICAgICBpZiAocHJvcENvdW50ID09PSAwKSB7XG4gICAgICAgICAgcHJpbnRXYXJuaW5nKCdQcm9wZXJ0aWVzIG9iamVjdCBpcyBlbXB0eSAtIHBpcGVsaW5lIHdpbGwgaGF2ZSBubyBjb25maWd1cmF0aW9uJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXNvbHZlIHByb2plY3QgJiBvcmdhbml6YXRpb246IHByZWZlciBDTEkgZmxhZ3MsIGZhbGwgYmFjayB0b1xuICAgICAgICAvLyB2YWx1ZXMgZW1iZWRkZWQgaW5zaWRlIHRoZSBwcm9wcyBmaWxlIChidWlsZGVyUHJvcHMpLlxuICAgICAgICBjb25zdCByZXNvbHZlZFByb2plY3QgPSBvcHRpb25zLnByb2plY3QgPz8gKHByb3BzLnByb2plY3QgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRPcmdhbml6YXRpb24gPSBvcHRpb25zLm9yZ2FuaXphdGlvbiA/PyAocHJvcHMub3JnYW5pemF0aW9uIGFzIHN0cmluZyB8IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgaWYgKCFyZXNvbHZlZFByb2plY3QpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdQcm9qZWN0IGlzIHJlcXVpcmVkJywge1xuICAgICAgICAgICAgaGludDogJ1Byb3ZpZGUgLXAvLS1wcm9qZWN0IGZsYWcgb3IgaW5jbHVkZSBcInByb2plY3RcIiBpbiB0aGUgcHJvcHMgZmlsZScsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9qZWN0IGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZXNvbHZlZE9yZ2FuaXphdGlvbikge1xuICAgICAgICAgIHByaW50RXJyb3IoJ09yZ2FuaXphdGlvbiBpcyByZXF1aXJlZCcsIHtcbiAgICAgICAgICAgIGhpbnQ6ICdQcm92aWRlIC1vLy0tb3JnYW5pemF0aW9uIGZsYWcgb3IgaW5jbHVkZSBcIm9yZ2FuaXphdGlvblwiIGluIHRoZSBwcm9wcyBmaWxlJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ09yZ2FuaXphdGlvbiBpcyByZXF1aXJlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQnVpbGQgcmVxdWVzdCBwYXlsb2FkIOKAlCByZXNvbHZlIHBpcGVsaW5lTmFtZSB1c2luZyBzYW1lIHN0cmF0ZWd5IGFzIHBpcGVsaW5lLWJ1aWxkZXIudHM6XG4gICAgICAgIC8vICAgcHJvcHMucGlwZWxpbmVOYW1lID8/IGAke29yZ2FuaXphdGlvbn0tJHtwcm9qZWN0fS1waXBlbGluZWBcbiAgICAgICAgY29uc3Qgc2FuaXRpemUgPSAoczogc3RyaW5nKSA9PiBzLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCAnXycpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkUGlwZWxpbmVOYW1lID0gb3B0aW9ucy5uYW1lXG4gICAgICAgICAgPz8gKHByb3BzLnBpcGVsaW5lTmFtZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQpXG4gICAgICAgICAgPz8gYCR7c2FuaXRpemUocmVzb2x2ZWRPcmdhbml6YXRpb24pfS0ke3Nhbml0aXplKHJlc29sdmVkUHJvamVjdCl9LXBpcGVsaW5lYDtcblxuICAgICAgICBjb25zdCBwYXlsb2FkOiBDcmVhdGVQaXBlbGluZVJlcXVlc3QgPSB7XG4gICAgICAgICAgcHJvamVjdDogcmVzb2x2ZWRQcm9qZWN0LFxuICAgICAgICAgIG9yZ2FuaXphdGlvbjogcmVzb2x2ZWRPcmdhbml6YXRpb24sXG4gICAgICAgICAgcGlwZWxpbmVOYW1lOiByZXNvbHZlZFBpcGVsaW5lTmFtZSxcbiAgICAgICAgICBwcm9wcyxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBZGQgb3B0aW9uYWwgZmllbGRzIG9ubHkgaWYgcHJvdmlkZWRcbiAgICAgICAgaWYgKG9wdGlvbnMuYWNjZXNzKSB7XG4gICAgICAgICAgcGF5bG9hZC5hY2Nlc3NNb2RpZmllciA9IG9wdGlvbnMuYWNjZXNzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmRlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHBheWxvYWQuaXNEZWZhdWx0ID0gb3B0aW9ucy5kZWZhdWx0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmFjdGl2ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcGF5bG9hZC5pc0FjdGl2ZSA9IG9wdGlvbnMuYWN0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRHJ5IHJ1biBtb2RlXG4gICAgICAgIGlmIChvcHRpb25zLmRyeVJ1bikge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICBwcmludFNlY3Rpb24oJ0RyeSBSdW4gLSBSZXF1ZXN0IFByZXZpZXcnKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShwYXlsb2FkLCBudWxsLCAyKSk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50U3VjY2Vzcygn4pyTIFZhbGlkYXRpb24gY29tcGxldGUgLSBubyBwaXBlbGluZSBjcmVhdGVkIChkcnkgcnVuIG1vZGUpJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50SW5mbygnVG8gY3JlYXRlIHRoZSBwaXBlbGluZSwgcnVuIHRoZSBjb21tYW5kIHdpdGhvdXQgLS1kcnktcnVuJyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGF1dGhlbnRpY2F0ZWQgQVBJIGNsaWVudFxuICAgICAgICBjb25zdCBjbGllbnQgPSBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50KG9wdGlvbnMpO1xuICAgICAgICBjb25zdCBjb25maWcgPSBjbGllbnQuZ2V0Q29uZmlnKCk7XG5cbiAgICAgICAgLy8gQ3JlYXRlIHBpcGVsaW5lXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdDcmVhdGluZyBQaXBlbGluZScpO1xuXG4gICAgICAgIGNvbnN0IHNwaW5uZXIgPSBvcmEoJ0NyZWF0aW5nIHBpcGVsaW5lLi4uJykuc3RhcnQoKTtcbiAgICAgICAgbGV0IHJhd1Jlc3BvbnNlOiBQaXBlbGluZVJlc3BvbnNlO1xuICAgICAgICBsZXQgcmVxdWVzdER1cmF0aW9uOiBudW1iZXI7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVxdWVzdFN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICByYXdSZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PFBpcGVsaW5lUmVzcG9uc2U+KFxuICAgICAgICAgICAgY29uZmlnLmFwaS5waXBlbGluZVVybCxcbiAgICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXF1ZXN0RHVyYXRpb24gPSBEYXRlLm5vdygpIC0gcmVxdWVzdFN0YXJ0O1xuICAgICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnUGlwZWxpbmUgY3JlYXRlZCcpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHNwaW5uZXIuZmFpbCgnUGlwZWxpbmUgY3JlYXRpb24gZmFpbGVkJyk7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwaXBlbGluZSA9IGV4dHJhY3RTaW5nbGVSZXNwb25zZTxQaXBlbGluZT4ocmF3UmVzcG9uc2UsICdwaXBlbGluZScsICdpZCcpO1xuXG4gICAgICAgIGlmICghcGlwZWxpbmU/LmlkKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignSW52YWxpZCBwaXBlbGluZSByZXNwb25zZScsIHtcbiAgICAgICAgICAgIHJlc3BvbnNlS2V5czogcmF3UmVzcG9uc2UgPyBPYmplY3Qua2V5cyhyYXdSZXNwb25zZSkgOiAnKG51bGwpJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BpcGVsaW5lIGNyZWF0aW9uIGZhaWxlZCAtIG5vIHZhbGlkIHBpcGVsaW5lIGRhdGEgcmVjZWl2ZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCfinJMgUGlwZWxpbmUgQ3JlYXRlZCBTdWNjZXNzZnVsbHknKTtcblxuICAgICAgICAvLyBEaXNwbGF5IGNyZWF0ZWQgcGlwZWxpbmUgaW5mb1xuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnUGlwZWxpbmUgSUQnOiBncmVlbihib2xkKHBpcGVsaW5lLmlkKSksXG4gICAgICAgICAgJ1Byb2plY3QnOiBwaXBlbGluZS5wcm9qZWN0LFxuICAgICAgICAgICdPcmdhbml6YXRpb24nOiBwaXBlbGluZS5vcmdhbml6YXRpb24sXG4gICAgICAgICAgJ05hbWUnOiBwaXBlbGluZS5waXBlbGluZU5hbWUgfHwgJyhub3Qgc2V0KScsXG4gICAgICAgICAgJ0FjY2Vzcyc6IHBpcGVsaW5lLmFjY2Vzc01vZGlmaWVyIHx8ICdwcml2YXRlJyxcbiAgICAgICAgICAnRGVmYXVsdCc6IHBpcGVsaW5lLmlzRGVmYXVsdCA/ICdZZXMnIDogJ05vJyxcbiAgICAgICAgICAnQWN0aXZlJzogcGlwZWxpbmUuaXNBY3RpdmUgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgJ1Byb3BlcnRpZXMnOiBwaXBlbGluZS5wcm9wcyA/IGAke09iamVjdC5rZXlzKHBpcGVsaW5lLnByb3BzKS5sZW5ndGh9IGtleXNgIDogJyhub3QgcmV0dXJuZWQpJyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHBpcGVsaW5lLmNyZWF0ZWRBdCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgICdDcmVhdGVkIEF0JzogcGlwZWxpbmUuY3JlYXRlZEF0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGVyZm9ybWFuY2UgbWV0cmljc1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdFeGVjdXRpb24gSUQnOiBleGVjdXRpb25JZCxcbiAgICAgICAgICAnUmVxdWVzdCBEdXJhdGlvbic6IGZvcm1hdER1cmF0aW9uKHJlcXVlc3REdXJhdGlvbiksXG4gICAgICAgICAgJ1RvdGFsIER1cmF0aW9uJzogZm9ybWF0RHVyYXRpb24oRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNhdmUgcGlwZWxpbmUgaW5mbyB0byBmaWxlXG4gICAgICAgIGNvbnN0IG91dHB1dERpciA9ICcuL291dHB1dCc7XG4gICAgICAgIGVuc3VyZU91dHB1dERpcmVjdG9yeShvdXRwdXREaXIpO1xuXG4gICAgICAgIGNvbnN0IG91dHB1dEZpbGUgPSBwYXRoLmpvaW4ob3V0cHV0RGlyLCBgcGlwZWxpbmUtJHtwaXBlbGluZS5pZH0uanNvbmApO1xuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKG91dHB1dEZpbGUsIEpTT04uc3RyaW5naWZ5KHBpcGVsaW5lLCBudWxsLCAyKSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIGRldGFpbHMgc2F2ZWQgdG8gZmlsZScpO1xuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnT3V0cHV0IEZpbGUnOiBvdXRwdXRGaWxlLFxuICAgICAgICAgICdGaWxlIFNpemUnOiBmb3JtYXRGaWxlU2l6ZShmcy5zdGF0U3luYyhvdXRwdXRGaWxlKS5zaXplKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gTmV4dCBzdGVwc1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignTmV4dCBTdGVwcycpO1xuICAgICAgICBjb25zb2xlLmxvZyhkaW0oJ1lvdSBjYW4gbm93OicpKTtcbiAgICAgICAgY29uc29sZS5sb2coYCAgJHtjeWFuKCfigKInKX0gRGVwbG95OiAke2JvbGQoYGRlcGxveSAtLWlkICR7cGlwZWxpbmUuaWR9YCl9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKGAgICR7Y3lhbign4oCiJyl9IFZpZXc6ICR7Ym9sZChgZ2V0LXBpcGVsaW5lIC0taWQgJHtwaXBlbGluZS5pZH1gKX1gKTtcbiAgICAgICAgY29uc29sZS5sb2coYCAgJHtjeWFuKCfigKInKX0gQVBJOiAke2NvbmZpZy5hcGkuYmFzZVVybH0ke2NvbmZpZy5hcGkucGlwZWxpbmVVcmx9LyR7cGlwZWxpbmUuaWR9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgY29tbWFuZDogJ2NyZWF0ZS1waXBlbGluZScsXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgIHByb2plY3Q6IG9wdGlvbnMucHJvamVjdCxcbiAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogb3B0aW9ucy5vcmdhbml6YXRpb24sXG4gICAgICAgICAgICBmaWxlOiBvcHRpb25zLmZpbGUsXG4gICAgICAgICAgICB2ZXJpZnlTc2w6IG9wdGlvbnMudmVyaWZ5U3NsLFxuICAgICAgICAgICAgZHJ5UnVuOiBvcHRpb25zLmRyeVJ1bixcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn0iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkP7C"}
|