@aws-cdk-testing/cli-integ 3.33.1 → 3.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/aws.d.ts +2 -0
- package/lib/aws.js +4 -1
- package/lib/cli/query-github.js +35 -2
- package/lib/cli/run-suite.js +53 -4
- package/lib/cli/stage-distribution.js +37 -4
- package/lib/cli/test-root.js +35 -2
- package/lib/corking.js +35 -2
- package/lib/emf.d.ts +35 -0
- package/lib/emf.js +56 -0
- package/lib/files.js +37 -4
- package/lib/github.js +35 -2
- package/lib/integ-test.js +36 -3
- package/lib/npm.js +35 -2
- package/lib/package-sources/cli-npm-source.js +37 -4
- package/lib/package-sources/cli-repo-source.js +36 -3
- package/lib/package-sources/find-root.js +35 -2
- package/lib/package-sources/library-globalinstall-source.js +36 -3
- package/lib/package-sources/library-preinstalled-source.js +35 -2
- package/lib/package-sources/repo-tools/npm.js +36 -3
- package/lib/process.js +36 -3
- package/lib/proxy.js +38 -5
- package/lib/resources.js +35 -2
- package/lib/shell.js +37 -4
- package/lib/staging/maven.js +35 -2
- package/lib/staging/npm.js +35 -2
- package/lib/staging/parallel-shell.js +5 -2
- package/lib/staging/pypi.js +35 -2
- package/lib/staging/usage-dir.js +36 -3
- package/lib/with-cdk-app.js +42 -6
- package/lib/with-sam.js +37 -4
- package/lib/with-temporary-directory.js +37 -4
- package/lib/xpmutex.js +36 -3
- package/lib/yarn.js +35 -2
- package/npm-shrinkwrap.json +49 -3
- package/package.json +3 -2
- package/resources/cdk-apps/app/app.js +23 -0
- package/resources/cdk-apps/validate-online-app/app.js +3 -1
- package/tests/cli-integ-tests/bootstrap/cdk-bootstrap-a-customized-template-vendor-will-not-overwrite-the-default-template.integtest.js +37 -4
- package/tests/cli-integ-tests/bootstrap/cdk-bootstrap-can-deploy-with-session-tags-on-the-deploy.integtest.js +35 -2
- package/tests/cli-integ-tests/bootstrap/cdk-bootstrap-can-deploy-without-execution-role-and-with-session-tags-on-deploy-role.integtest.js +35 -2
- package/tests/cli-integ-tests/bootstrap/cdk-bootstrap-can-dump-the-template.integtest.js +36 -3
- package/tests/cli-integ-tests/bootstrap/cdk-bootstrap-can-remove-custompermissionsboundary.integtest.js +5 -2
- package/tests/cli-integ-tests/cdk-assets/asset_helpers.js +35 -2
- package/tests/cli-integ-tests/cdk-assets/cdk-assets-can-read-lib-output.integtest.js +35 -2
- package/tests/cli-integ-tests/cdk-assets/cdk-assets-docker-credential.integtest.js +36 -3
- package/tests/cli-integ-tests/cdk-assets/cdk-assets-uses-profile.integtest.js +35 -2
- package/tests/cli-integ-tests/cdk-assets/smoketest.integtest.js +35 -2
- package/tests/cli-integ-tests/context/cdk-context-setting.integtest.js +35 -2
- package/tests/cli-integ-tests/deploy/cdk---exclusively-selects-only-selected-stack.integtest.js +35 -2
- package/tests/cli-integ-tests/deploy/cdk-deploy-outputs-file-written-on-no-change-deploy.integtest.js +35 -2
- package/tests/cli-integ-tests/deploy/cdk-deploy-wildcard-with-outputs.integtest.js +35 -2
- package/tests/cli-integ-tests/deploy/cdk-deploy-with-import-existing-resources-true.integtest.js +35 -2
- package/tests/cli-integ-tests/deploy/cdk-generating-and-loading-assembly.integtest.js +36 -3
- package/tests/cli-integ-tests/destroy/cdk-destroy-interactive.integtest.js +6 -2
- package/tests/cli-integ-tests/diff/cdk-cdk-diff---method-change-set-detects-ssm-parameter-driven-changes.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/diff/cdk-cdk-diff---method-change-set-detects-ssm-parameter-driven-changes.integtest.js +51 -0
- package/tests/cli-integ-tests/diff/cdk-cdk-diff---method-change-set-surfaces-change-set-only-changes-alongside-template-changes.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/diff/cdk-cdk-diff---method-change-set-surfaces-change-set-only-changes-alongside-template-changes.integtest.js +45 -0
- package/tests/cli-integ-tests/diff/cdk-enablediffnofail.integtest.js +35 -2
- package/tests/cli-integ-tests/hotswap/cdk-hotswap-deployment-caches-template.integtest.js +36 -3
- package/tests/cli-integ-tests/hotswap/cdk-hotswap-deployment-supports-appsync-apis-with-many-functions.integtest.js +35 -2
- package/tests/cli-integ-tests/hotswap/cdk-hotswap-ecs-deployment-respects-properties-override.integtest.js +35 -2
- package/tests/cli-integ-tests/import/cdk-test-resource-import-with-construct-that-requires-bundling.integtest.js +35 -2
- package/tests/cli-integ-tests/import/cdk-test-resource-import.integtest.js +35 -2
- package/tests/cli-integ-tests/list/cdk-cdk-ls-ci-no-synth-time-on-stdout.integtest.js +6 -6
- package/tests/cli-integ-tests/migrate/cdk-migrate-generates-migrate.json.integtest.js +35 -2
- package/tests/cli-integ-tests/migrate/cdk-test-migrate-deployment-for-app-with-localfile-source-in-migrate.json.integtest.js +35 -2
- package/tests/cli-integ-tests/migrate/testcase.js +35 -2
- package/tests/cli-integ-tests/notices/cdk-cdk-notices-are-displayed-correctly.integtest.js +35 -2
- package/tests/cli-integ-tests/orphan/cdk-orphan-detaches-resource.integtest.js +35 -2
- package/tests/cli-integ-tests/proxy/cdk-requests-go-through-a-proxy-when-configured.integtest.js +35 -2
- package/tests/cli-integ-tests/proxy/proxy.integtest.js +36 -3
- package/tests/cli-integ-tests/refactor/cdk-refactor-with-ambiguities-execution.integtest.js +37 -4
- package/tests/cli-integ-tests/synth/cdk-can-still-load-old-assemblies.integtest.js +36 -3
- package/tests/cli-integ-tests/synth/cdk-cdk-synth-bundled-functions-as-expected.integtest.js +35 -2
- package/tests/cli-integ-tests/synth/cdk-synth---quiet-can-be-specified-in-cdk.json.integtest.js +35 -2
- package/tests/cli-integ-tests/validate/cdk-validate-passes-clean-app.integtest.js +2 -2
- package/tests/cli-integ-tests/validate-online/cdk-validate-online-combined-offline-and-online.integtest.js +4 -1
- package/tests/cli-integ-tests/validate-online/cdk-validate-online-passes-valid-template.integtest.js +2 -2
- package/tests/cli-integ-tests/watch/cdk-watch-detects-file-changes-with-directory-scoped-glob.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/watch/cdk-watch-detects-file-changes-with-directory-scoped-glob.integtest.js +98 -0
- package/tests/cli-integ-tests/watch/cdk-watch-detects-file-changes-with-glob-patterns-negative.integtest.js +37 -4
- package/tests/cli-integ-tests/watch/cdk-watch-detects-file-changes-with-glob-patterns.integtest.js +37 -4
- package/tests/init-javascript/init-javascript.integtest.js +36 -3
- package/tests/init-python/init-python.integtest.js +35 -2
- package/tests/init-typescript-app/init-typescript-app.integtest.js +35 -2
- package/tests/init-typescript-lib/use-lib-as-bundled-dependency.integtest.js +36 -3
- package/tests/telemetry-integ-tests/cdk-deploy-sequential-errors.js +36 -3
- package/tests/telemetry-integ-tests/cdk-deploy-telemetry.integtest.js +36 -3
- package/tests/telemetry-integ-tests/cdk-hotswap-telemetry.integtest.js +36 -3
- package/tests/telemetry-integ-tests/cdk-invalid-command-telemetry.integtest.js +36 -3
- package/tests/telemetry-integ-tests/cdk-synth-guessagent.integtest.js +36 -3
- package/tests/telemetry-integ-tests/cdk-synth-telemetry-with-errors.integtest.js +36 -3
- package/tests/telemetry-integ-tests/cdk-synth-telemetry-with-synth-exception.integtest.js +36 -3
- package/tests/telemetry-integ-tests/cdk-synth-telemetry.integtest.js +36 -3
- package/tests/telemetry-integ-tests/cli-telemetry/cdk-cli-telemetry-adds-context-value.integtest.js +35 -2
- package/tests/telemetry-integ-tests/cli-telemetry/cdk-cli-telemetry-reads-perf-counters.integtest.js +36 -3
- package/tests/telemetry-integ-tests/cli-telemetry/cdk-cli-telemetry-reports-status.integtest.js +35 -2
- package/tests/tool-integrations/amplify.integtest.js +35 -2
- package/tests/toolkit-lib-integ-tests/toolkit-can-cdk-deploy.integtest.js +35 -2
- package/tests/toolkit-lib-integ-tests/toolkit-deploy-stack-with-multiple-docker-assets.integtest.js +35 -2
- package/tests/toolkit-lib-integ-tests/toolkit-helpers.js +36 -3
- package/tests/toolkit-lib-integ-tests/toolkit-watch-glob-negative.integtest.js +35 -2
- package/tests/toolkit-lib-integ-tests/toolkit-watch-glob.integtest.js +37 -4
package/lib/aws.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { LambdaClient } from '@aws-sdk/client-lambda';
|
|
|
8
8
|
import { S3Client } from '@aws-sdk/client-s3';
|
|
9
9
|
import { SecretsManagerClient } from '@aws-sdk/client-secrets-manager';
|
|
10
10
|
import { SNSClient } from '@aws-sdk/client-sns';
|
|
11
|
+
import { SSMClient } from '@aws-sdk/client-ssm';
|
|
11
12
|
import { SSOClient } from '@aws-sdk/client-sso';
|
|
12
13
|
import { STSClient } from '@aws-sdk/client-sts';
|
|
13
14
|
import type { AwsCredentialIdentity } from '@smithy/types';
|
|
@@ -27,6 +28,7 @@ export declare class AwsClients {
|
|
|
27
28
|
readonly ecrPublic: ECRPUBLICClient;
|
|
28
29
|
readonly ecs: ECSClient;
|
|
29
30
|
readonly sso: SSOClient;
|
|
31
|
+
readonly ssm: SSMClient;
|
|
30
32
|
readonly sns: SNSClient;
|
|
31
33
|
readonly iam: IAMClient;
|
|
32
34
|
readonly lambda: LambdaClient;
|
package/lib/aws.js
CHANGED
|
@@ -17,6 +17,7 @@ const client_lambda_1 = require("@aws-sdk/client-lambda");
|
|
|
17
17
|
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
18
18
|
const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
|
|
19
19
|
const client_sns_1 = require("@aws-sdk/client-sns");
|
|
20
|
+
const client_ssm_1 = require("@aws-sdk/client-ssm");
|
|
20
21
|
const client_sso_1 = require("@aws-sdk/client-sso");
|
|
21
22
|
const client_sts_1 = require("@aws-sdk/client-sts");
|
|
22
23
|
const credential_providers_1 = require("@aws-sdk/credential-providers");
|
|
@@ -40,6 +41,7 @@ class AwsClients {
|
|
|
40
41
|
ecrPublic;
|
|
41
42
|
ecs;
|
|
42
43
|
sso;
|
|
44
|
+
ssm;
|
|
43
45
|
sns;
|
|
44
46
|
iam;
|
|
45
47
|
lambda;
|
|
@@ -64,6 +66,7 @@ class AwsClients {
|
|
|
64
66
|
this.ecrPublic = new client_ecr_public_1.ECRPUBLICClient({ ...this.config, region: 'us-east-1' /* public gallery is only available in us-east-1 */ });
|
|
65
67
|
this.ecs = new client_ecs_1.ECSClient(this.config);
|
|
66
68
|
this.sso = new client_sso_1.SSOClient(this.config);
|
|
69
|
+
this.ssm = new client_ssm_1.SSMClient(this.config);
|
|
67
70
|
this.sns = new client_sns_1.SNSClient(this.config);
|
|
68
71
|
this.iam = new client_iam_1.IAMClient(this.config);
|
|
69
72
|
this.lambda = new client_lambda_1.LambdaClient(this.config);
|
|
@@ -346,4 +349,4 @@ function chainableCredentials(region) {
|
|
|
346
349
|
function isAwsCredentialIdentity(x) {
|
|
347
350
|
return Boolean(x && typeof x === 'object' && x.accessKeyId);
|
|
348
351
|
}
|
|
349
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXFUQSxrREFFQztBQUVELG9EQUVDO0FBVUQsc0JBc0JDO0FBaUJELDBDQUVDO0FBRUQsc0JBRUM7QUFTRCxzREFxQkM7QUFoWkQsMEVBTXdDO0FBQ3hDLDhEQUFvRDtBQUNwRCxvREFBeUU7QUFDekUsa0VBQTZEO0FBQzdELG9EQUFnRDtBQUNoRCxvREFBOEo7QUFDOUosMERBQXNEO0FBQ3RELGtEQU00QjtBQUM1Qiw0RUFBdUU7QUFDdkUsb0RBQWdEO0FBQ2hELG9EQUFnRDtBQUNoRCxvREFBNkY7QUFDN0Ysd0VBQStFO0FBRS9FLG1EQUE2RDtBQVM3RCxNQUFhLFVBQVU7SUEyQkY7SUFDRDtJQUNDO0lBQ0Q7SUE3QlgsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsWUFBb0IsRUFBRSxNQUFjLEVBQUUsUUFBK0IsRUFBRSxNQUE2QjtRQUNsSSxPQUFPLElBQUksVUFBVSxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxZQUFvQixFQUFFLE1BQWMsRUFBRSxNQUE2QjtRQUMvRixPQUFPLElBQUksVUFBVSxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVnQixPQUFPLEdBQTRCLEVBQUUsQ0FBQztJQUN0QyxNQUFNLENBQWU7SUFFdEIsY0FBYyxDQUF1QjtJQUNyQyxFQUFFLENBQVc7SUFDYixHQUFHLENBQVk7SUFDZixTQUFTLENBQWtCO0lBQzNCLEdBQUcsQ0FBWTtJQUNmLEdBQUcsQ0FBWTtJQUNmLEdBQUcsQ0FBWTtJQUNmLEdBQUcsQ0FBWTtJQUNmLE1BQU0sQ0FBZTtJQUNyQixHQUFHLENBQVk7SUFDZixjQUFjLENBQXVCO0lBQ3JDLFFBQVEsQ0FB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QUN6RCxpRUFBaUU7UUFDakUsdUNBQXVDO1FBQ3ZDLE9BQU8sSUFBQSw4QkFBTyxFQUFDO1lBQ2IsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxvQ0FBb0M7SUFDcEMsT0FBTyxJQUFBLDRDQUFxQixFQUFDLEVBQUUsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFFRCxTQUFTLHVCQUF1QixDQUFDLENBQU07SUFDckMsT0FBTyxPQUFPLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDOUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENsb3VkRm9ybWF0aW9uQ2xpZW50LFxuICBEZWxldGVTdGFja0NvbW1hbmQsXG4gIERlc2NyaWJlU3RhY2tzQ29tbWFuZCxcbiAgVXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uQ29tbWFuZCxcbiAgdHlwZSBTdGFjayxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IER5bmFtb0RCIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWR5bmFtb2RiJztcbmltcG9ydCB7IERlbGV0ZVJlcG9zaXRvcnlDb21tYW5kLCBFQ1JDbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtZWNyJztcbmltcG9ydCB7IEVDUlBVQkxJQ0NsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1lY3ItcHVibGljJztcbmltcG9ydCB7IEVDU0NsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1lY3MnO1xuaW1wb3J0IHsgQ3JlYXRlUm9sZUNvbW1hbmQsIERlbGV0ZVJvbGVDb21tYW5kLCBEZWxldGVSb2xlUG9saWN5Q29tbWFuZCwgSUFNQ2xpZW50LCBMaXN0Um9sZVBvbGljaWVzQ29tbWFuZCwgUHV0Um9sZVBvbGljeUNvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtaWFtJztcbmltcG9ydCB7IExhbWJkYUNsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1sYW1iZGEnO1xuaW1wb3J0IHtcbiAgUzNDbGllbnQsXG4gIERlbGV0ZU9iamVjdHNDb21tYW5kLFxuICBMaXN0T2JqZWN0VmVyc2lvbnNDb21tYW5kLFxuICB0eXBlIE9iamVjdElkZW50aWZpZXIsXG4gIERlbGV0ZUJ1Y2tldENvbW1hbmQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zMyc7XG5pbXBvcnQgeyBTZWNyZXRzTWFuYWdlckNsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zZWNyZXRzLW1hbmFnZXInO1xuaW1wb3J0IHsgU05TQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNucyc7XG5pbXBvcnQgeyBTU09DbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc3NvJztcbmltcG9ydCB7IEFzc3VtZVJvbGVDb21tYW5kLCBTVFNDbGllbnQsIEdldENhbGxlcklkZW50aXR5Q29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zdHMnO1xuaW1wb3J0IHsgZnJvbUluaSwgZnJvbU5vZGVQcm92aWRlckNoYWluIH0gZnJvbSAnQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlcnMnO1xuaW1wb3J0IHR5cGUgeyBBd3NDcmVkZW50aWFsSWRlbnRpdHksIEF3c0NyZWRlbnRpYWxJZGVudGl0eVByb3ZpZGVyLCBOb2RlSHR0cEhhbmRsZXJPcHRpb25zIH0gZnJvbSAnQHNtaXRoeS90eXBlcyc7XG5pbXBvcnQgeyBDb25maWd1cmVkUmV0cnlTdHJhdGVneSB9IGZyb20gJ0BzbWl0aHkvdXRpbC1yZXRyeSc7XG5cbmludGVyZmFjZSBDbGllbnRDb25maWcge1xuICByZWFkb25seSBjcmVkZW50aWFsczogQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXIgfCBBd3NDcmVkZW50aWFsSWRlbnRpdHk7XG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuICByZWFkb25seSByZXRyeVN0cmF0ZWd5OiBDb25maWd1cmVkUmV0cnlTdHJhdGVneTtcbiAgcmVhZG9ubHkgcmVxdWVzdEhhbmRsZXI/OiBOb2RlSHR0cEhhbmRsZXJPcHRpb25zO1xufVxuXG5leHBvcnQgY2xhc3MgQXdzQ2xpZW50cyB7XG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgZm9ySWRlbnRpdHkocmFuZG9tU3RyaW5nOiBzdHJpbmcsIHJlZ2lvbjogc3RyaW5nLCBpZGVudGl0eTogQXdzQ3JlZGVudGlhbElkZW50aXR5LCBvdXRwdXQ6IE5vZGVKUy5Xcml0YWJsZVN0cmVhbSkge1xuICAgIHJldHVybiBuZXcgQXdzQ2xpZW50cyhyYW5kb21TdHJpbmcsIHJlZ2lvbiwgb3V0cHV0LCBpZGVudGl0eSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFzeW5jIGZvclJlZ2lvbihyYW5kb21TdHJpbmc6IHN0cmluZywgcmVnaW9uOiBzdHJpbmcsIG91dHB1dDogTm9kZUpTLldyaXRhYmxlU3RyZWFtKSB7XG4gICAgcmV0dXJuIG5ldyBBd3NDbGllbnRzKHJhbmRvbVN0cmluZywgcmVnaW9uLCBvdXRwdXQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjbGVhbnVwOiAoKCkgPT4gUHJvbWlzZTx2b2lkPilbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogQ2xpZW50Q29uZmlnO1xuXG4gIHB1YmxpYyByZWFkb25seSBjbG91ZEZvcm1hdGlvbjogQ2xvdWRGb3JtYXRpb25DbGllbnQ7XG4gIHB1YmxpYyByZWFkb25seSBzMzogUzNDbGllbnQ7XG4gIHB1YmxpYyByZWFkb25seSBlY3I6IEVDUkNsaWVudDtcbiAgcHVibGljIHJlYWRvbmx5IGVjclB1YmxpYzogRUNSUFVCTElDQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgZWNzOiBFQ1NDbGllbnQ7XG4gIHB1YmxpYyByZWFkb25seSBzc286IFNTT0NsaWVudDtcbiAgcHVibGljIHJlYWRvbmx5IHNuczogU05TQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgaWFtOiBJQU1DbGllbnQ7XG4gIHB1YmxpYyByZWFkb25seSBsYW1iZGE6IExhbWJkYUNsaWVudDtcbiAgcHVibGljIHJlYWRvbmx5IHN0czogU1RTQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXI6IFNlY3JldHNNYW5hZ2VyQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgZHluYW1vRGI6IER5bmFtb0RCO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgLyoqIEEgcmFuZG9tIHN0cmluZyB0byB1c2UgZm9yIHRlbXBvcmFyeSByZXNvdXJjZXMsIGxpa2Ugcm9sZXMgKHNob3VsZCBwcmVmZXJhYmx5IG1hdGNoIHVuaXF1ZSB0ZXN0LXNwZWNpZmljIHJhbmRvbVN0cmluZykgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJhbmRvbVN0cmluZzogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSByZWdpb246IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG91dHB1dDogTm9kZUpTLldyaXRhYmxlU3RyZWFtLFxuICAgIHB1YmxpYyByZWFkb25seSBpZGVudGl0eT86IEF3c0NyZWRlbnRpYWxJZGVudGl0eSkge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgY3JlZGVudGlhbHM6IHRoaXMuaWRlbnRpdHkgPz8gY2hhaW5hYmxlQ3JlZGVudGlhbHModGhpcy5yZWdpb24pLFxuICAgICAgcmVnaW9uOiB0aGlzLnJlZ2lvbixcbiAgICAgIHJldHJ5U3RyYXRlZ3k6IG5ldyBDb25maWd1cmVkUmV0cnlTdHJhdGVneSg5LCAoYXR0ZW1wdDogbnVtYmVyKSA9PiBhdHRlbXB0ICoqIDUwMCksXG4gICAgfTtcblxuICAgIHRoaXMuY2xvdWRGb3JtYXRpb24gPSBuZXcgQ2xvdWRGb3JtYXRpb25DbGllbnQodGhpcy5jb25maWcpO1xuICAgIHRoaXMuczMgPSBuZXcgUzNDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHRoaXMuZWNyID0gbmV3IEVDUkNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5lY3JQdWJsaWMgPSBuZXcgRUNSUFVCTElDQ2xpZW50KHsgLi4udGhpcy5jb25maWcsIHJlZ2lvbjogJ3VzLWVhc3QtMScgLyogcHVibGljIGdhbGxlcnkgaXMgb25seSBhdmFpbGFibGUgaW4gdXMtZWFzdC0xICovIH0pO1xuICAgIHRoaXMuZWNzID0gbmV3IEVDU0NsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5zc28gPSBuZXcgU1NPQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnNucyA9IG5ldyBTTlNDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHRoaXMuaWFtID0gbmV3IElBTUNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5sYW1iZGEgPSBuZXcgTGFtYmRhQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnN0cyA9IG5ldyBTVFNDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHRoaXMuc2VjcmV0c01hbmFnZXIgPSBuZXcgU2VjcmV0c01hbmFnZXJDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHRoaXMuZHluYW1vRGIgPSBuZXcgRHluYW1vREIodGhpcy5jb25maWcpO1xuICB9XG5cbiAgcHVibGljIGFkZENsZWFudXAoY2xlYW51cDogKCkgPT4gUHJvbWlzZTxhbnk+KSB7XG4gICAgdGhpcy5jbGVhbnVwLnB1c2goY2xlYW51cCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGlzcG9zZSgpIHtcbiAgICBmb3IgKGNvbnN0IGNsZWFudXAgb2YgdGhpcy5jbGVhbnVwKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBjbGVhbnVwKCk7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vdXRwdXQud3JpdGUoYOKaoO+4jyBFcnJvciBkdXJpbmcgY2xlYW51cDogJHtlLm1lc3NhZ2V9XFxuYCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2xlYW51cC5zcGxpY2UoMCwgdGhpcy5jbGVhbnVwLmxlbmd0aCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWNjb3VudCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIC8vIFJlZHVjZSAjIG9mIHJldHJpZXMsIHdlIHVzZSB0aGlzIGFzIGEgY2lyY3VpdCBicmVha2VyIGZvciBkZXRlY3Rpbmcgbm8tY29uZmlnXG4gICAgY29uc3Qgc3RzQ2xpZW50ID0gbmV3IFNUU0NsaWVudCh7XG4gICAgICBjcmVkZW50aWFsczogdGhpcy5jb25maWcuY3JlZGVudGlhbHMsXG4gICAgICByZWdpb246IHRoaXMuY29uZmlnLnJlZ2lvbixcbiAgICAgIG1heEF0dGVtcHRzOiAyLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIChhd2FpdCBzdHNDbGllbnQuc2VuZChuZXcgR2V0Q2FsbGVySWRlbnRpdHlDb21tYW5kKHt9KSkpLkFjY291bnQhO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBjbGllbnRzIGFscmVhZHkgaGFzIGFuIGVzdGFibGlzaGVkIGlkZW50aXR5ICh2aWEgYXRtb3NwaGVyZSBmb3IgZXhhbXBsZSksXG4gICAqIHJldHVybiBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBtYXAgYWN0aXZhdGluZyBpdC5cbiAgICpcbiAgICogT3RoZXJ3aXNlLCByZXR1cm5zIHVuZGVmaW5lZC5cbiAgICovXG4gIHB1YmxpYyBpZGVudGl0eUVudigpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5pZGVudGl0eSA/IHtcbiAgICAgIEFXU19BQ0NFU1NfS0VZX0lEOiB0aGlzLmlkZW50aXR5LmFjY2Vzc0tleUlkLFxuICAgICAgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZOiB0aGlzLmlkZW50aXR5LnNlY3JldEFjY2Vzc0tleSxcbiAgICAgIEFXU19TRVNTSU9OX1RPS0VOOiB0aGlzLmlkZW50aXR5LnNlc3Npb25Ub2tlbiEsXG5cbiAgICAgIC8vIHVuc2V0IGFueSBwcmV2aW91c2x5IHVzZWQgcHJvZmlsZSBiZWNhdXNlIHRoZSBTREsgd2lsbCBwcmVmZXJcbiAgICAgIC8vIHRoaXMgb3ZlciBzdGF0aWMgZW52IGNyZWRlbnRpYWxzLiB0aGlzIGlzIHJlbGV2YW50IGZvciB0ZXN0cyBydW5uaW5nIG9uIENvZGVCdWlsZFxuICAgICAgLy8gYmVjYXVzZSB3ZSB1c2UgYSBwcm9maWxlIGFzIG91ciBtYWluIGNyZWRlbnRpYWxzIHNvdXJjZS5cbiAgICAgIEFXU19QUk9GSUxFOiAnJyxcbiAgICB9IDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIGN1cnJlbnQgaWRlbnRpdHkgb3IgaWRlbnRpdHkgcHJvdmlkZXIgdG8gY3JlZGVudGlhbHNcbiAgICovXG4gIHB1YmxpYyBhc3luYyBjcmVkZW50aWFscygpIHtcbiAgICBjb25zdCB4ID0gdGhpcy5jb25maWcuY3JlZGVudGlhbHM7XG4gICAgaWYgKGlzQXdzQ3JlZGVudGlhbElkZW50aXR5KHgpKSB7XG4gICAgICByZXR1cm4geDtcbiAgICB9XG4gICAgcmV0dXJuIHgoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVTdGFja3MoLi4uc3RhY2tOYW1lczogc3RyaW5nW10pIHtcbiAgICBpZiAoc3RhY2tOYW1lcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBXZSBwdXJwb3NlbHkgZG8gYWxsIHN0YWNrcyBzZXJpYWxseSwgYmVjYXVzZSB0aGV5J3ZlIGJlZW4gb3JkZXJlZFxuICAgIC8vIHRvIGRvIHRoZSBib290c3RyYXAgc3RhY2sgbGFzdC5cbiAgICBmb3IgKGNvbnN0IHN0YWNrTmFtZSBvZiBzdGFja05hbWVzKSB7XG4gICAgICBhd2FpdCB0aGlzLmNsb3VkRm9ybWF0aW9uLnNlbmQoXG4gICAgICAgIG5ldyBVcGRhdGVUZXJtaW5hdGlvblByb3RlY3Rpb25Db21tYW5kKHtcbiAgICAgICAgICBFbmFibGVUZXJtaW5hdGlvblByb3RlY3Rpb246IGZhbHNlLFxuICAgICAgICAgIFN0YWNrTmFtZTogc3RhY2tOYW1lLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgICBhd2FpdCB0aGlzLmNsb3VkRm9ybWF0aW9uLnNlbmQoXG4gICAgICAgIG5ldyBEZWxldGVTdGFja0NvbW1hbmQoe1xuICAgICAgICAgIFN0YWNrTmFtZTogc3RhY2tOYW1lLFxuICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICAgIGF3YWl0IHJldHJ5KHRoaXMub3V0cHV0LCBgRGVsZXRpbmcgJHtzdGFja05hbWV9YCwgcmV0cnkuZm9yU2Vjb25kcyg2MDApLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMuc3RhY2tTdGF0dXMoc3RhY2tOYW1lKTtcbiAgICAgICAgaWYgKHN0YXR1cyAhPT0gdW5kZWZpbmVkICYmIHN0YXR1cy5lbmRzV2l0aCgnX0ZBSUxFRCcpKSB7XG4gICAgICAgICAgdGhyb3cgcmV0cnkuYWJvcnQobmV3IEVycm9yKGAnJHtzdGFja05hbWV9JyBpcyBpbiBzdGF0ZSAnJHtzdGF0dXN9J2ApKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdHVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERlbGV0ZSBvZiAnJHtzdGFja05hbWV9JyBub3QgY29tcGxldGUgeWV0LCBzdGF0dXM6ICcke3N0YXR1c30nYCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzdGFja1N0YXR1cyhzdGFja05hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGF3YWl0IHRoaXMuY2xvdWRGb3JtYXRpb24uc2VuZChcbiAgICAgICAgICBuZXcgRGVzY3JpYmVTdGFja3NDb21tYW5kKHtcbiAgICAgICAgICAgIFN0YWNrTmFtZTogc3RhY2tOYW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICApXG4gICAgICApLlN0YWNrcz8uWzBdLlN0YWNrU3RhdHVzO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKGlzU3RhY2tNaXNzaW5nRXJyb3IoZSkpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtcHR5QnVja2V0KGJ1Y2tldE5hbWU6IHN0cmluZywgb3B0aW9ucz86IHsgYnlwYXNzR292ZXJuYW5jZT86IGJvb2xlYW4gfSkge1xuICAgIGNvbnN0IG9iamVjdHMgPSBhd2FpdCB0aGlzLnMzLnNlbmQoXG4gICAgICBuZXcgTGlzdE9iamVjdFZlcnNpb25zQ29tbWFuZCh7XG4gICAgICAgIEJ1Y2tldDogYnVja2V0TmFtZSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBjb25zdCBkZWxldGVzID0gWy4uLihvYmplY3RzLlZlcnNpb25zIHx8IFtdKSwgLi4uKG9iamVjdHMuRGVsZXRlTWFya2VycyB8fCBbXSldLnJlZHVjZSgoYWNjLCBvYmopID0+IHtcbiAgICAgIGlmICh0eXBlb2Ygb2JqLlZlcnNpb25JZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG9iai5LZXkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGFjYy5wdXNoKHsgS2V5OiBvYmouS2V5LCBWZXJzaW9uSWQ6IG9iai5WZXJzaW9uSWQgfSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmouS2V5ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBhY2MucHVzaCh7IEtleTogb2JqLktleSB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10gYXMgT2JqZWN0SWRlbnRpZmllcltdKTtcblxuICAgIGlmIChkZWxldGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnMzLnNlbmQoXG4gICAgICBuZXcgRGVsZXRlT2JqZWN0c0NvbW1hbmQoe1xuICAgICAgICBCdWNrZXQ6IGJ1Y2tldE5hbWUsXG4gICAgICAgIERlbGV0ZToge1xuICAgICAgICAgIE9iamVjdHM6IGRlbGV0ZXMsXG4gICAgICAgICAgUXVpZXQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBCeXBhc3NHb3Zlcm5hbmNlUmV0ZW50aW9uOiBvcHRpb25zPy5ieXBhc3NHb3Zlcm5hbmNlID8gdHJ1ZSA6IHVuZGVmaW5lZCxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlSW1hZ2VSZXBvc2l0b3J5KHJlcG9zaXRvcnlOYW1lOiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLmVjci5zZW5kKFxuICAgICAgbmV3IERlbGV0ZVJlcG9zaXRvcnlDb21tYW5kKHtcbiAgICAgICAgcmVwb3NpdG9yeU5hbWU6IHJlcG9zaXRvcnlOYW1lLFxuICAgICAgICBmb3JjZTogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlQnVja2V0KGJ1Y2tldE5hbWU6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmVtcHR5QnVja2V0KGJ1Y2tldE5hbWUpO1xuXG4gICAgICBhd2FpdCB0aGlzLnMzLnNlbmQoXG4gICAgICAgIG5ldyBEZWxldGVCdWNrZXRDb21tYW5kKHtcbiAgICAgICAgICBCdWNrZXQ6IGJ1Y2tldE5hbWUsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGlmIChpc0J1Y2tldE1pc3NpbmdFcnJvcihlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSByb2xlIHRoYXQgd2lsbCBiZSBjbGVhbmVkIHVwIHdoZW4gdGhlIEF3c0NsaWVudHMgb2JqZWN0IGlzIGNsZWFuZWQgdXBcbiAgICovXG4gIHB1YmxpYyBhc3luYyB0ZW1wb3JhcnlSb2xlKG5hbWVQcmVmaXg6IHN0cmluZywgYXNzdW1lUm9sZVBvbGljeVN0YXRlbWVudHM6IGFueVtdLCBwb2xpY3lTdGF0ZW1lbnRzOiBhbnlbXSkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5pYW0uc2VuZChuZXcgQ3JlYXRlUm9sZUNvbW1hbmQoe1xuICAgICAgUm9sZU5hbWU6IGAke25hbWVQcmVmaXh9LSR7dGhpcy5yYW5kb21TdHJpbmd9YCxcbiAgICAgIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudDogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNycsXG4gICAgICAgIFN0YXRlbWVudDogYXNzdW1lUm9sZVBvbGljeVN0YXRlbWVudHMsXG4gICAgICB9LCB1bmRlZmluZWQsIDIpLFxuICAgICAgVGFnczogW1xuICAgICAgICB7XG4gICAgICAgICAgS2V5OiAnZGVsZXRlbWUnLFxuICAgICAgICAgIFZhbHVlOiAndHJ1ZScsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pKTtcbiAgICBhd2FpdCB0aGlzLmlhbS5zZW5kKG5ldyBQdXRSb2xlUG9saWN5Q29tbWFuZCh7XG4gICAgICBSb2xlTmFtZTogYCR7bmFtZVByZWZpeH0tJHt0aGlzLnJhbmRvbVN0cmluZ31gLFxuICAgICAgUG9saWN5TmFtZTogJ0RlZmF1bHRQb2xpY3knLFxuICAgICAgUG9saWN5RG9jdW1lbnQ6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgVmVyc2lvbjogJzIwMTItMTAtMTcnLFxuICAgICAgICBTdGF0ZW1lbnQ6IHBvbGljeVN0YXRlbWVudHMsXG4gICAgICB9LCB1bmRlZmluZWQsIDIpLFxuICAgIH0pKTtcblxuICAgIHRoaXMuYWRkQ2xlYW51cCgoKSA9PiB0aGlzLmRlbGV0ZVJvbGUocmVzcG9uc2UuUm9sZSEuUm9sZU5hbWUhKSk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2UuUm9sZT8uQXJuID8/ICcqQ3JlYXRlUm9sZSBkaWQgbm90IHJldHVybiBhbiBBUk4qJztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB3YWl0Rm9yQXNzdW1lUm9sZShyb2xlQXJuOiBzdHJpbmcpIHtcbiAgICBhd2FpdCByZXRyeU9uTWF0Y2hpbmdFcnJvcnMoXG4gICAgICAoKSA9PiB0aGlzLnN0cy5zZW5kKG5ldyBBc3N1bWVSb2xlQ29tbWFuZCh7XG4gICAgICAgIFJvbGVBcm46IHJvbGVBcm4sXG4gICAgICAgIFJvbGVTZXNzaW9uTmFtZTogJ3Rlc3QtZXhpc3RlbmNlJyxcbiAgICAgIH0pKSxcbiAgICAgIFsnQWNjZXNzRGVuaWVkJ10sXG4gICAgICByZXRyeS5mb3JTZWNvbmRzKDYwKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZVJvbGUobmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcG9saWNpZXNSZXNwb25zZSA9IGF3YWl0IHRoaXMuaWFtLnNlbmQobmV3IExpc3RSb2xlUG9saWNpZXNDb21tYW5kKHtcbiAgICAgIFJvbGVOYW1lOiBuYW1lLFxuICAgIH0pKTtcblxuICAgIGZvciAoY29uc3QgcG9saWN5TmFtZSBvZiBwb2xpY2llc1Jlc3BvbnNlLlBvbGljeU5hbWVzID8/IFtdKSB7XG4gICAgICBhd2FpdCB0aGlzLmlhbS5zZW5kKG5ldyBEZWxldGVSb2xlUG9saWN5Q29tbWFuZCh7XG4gICAgICAgIFJvbGVOYW1lOiBuYW1lLFxuICAgICAgICBQb2xpY3lOYW1lOiBwb2xpY3lOYW1lLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuaWFtLnNlbmQobmV3IERlbGV0ZVJvbGVDb21tYW5kKHtcbiAgICAgIFJvbGVOYW1lOiBuYW1lLFxuICAgIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdGFja01pc3NpbmdFcnJvcihlOiBFcnJvcikge1xuICByZXR1cm4gZS5tZXNzYWdlLmluZGV4T2YoJ2RvZXMgbm90IGV4aXN0JykgPiAtMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQnVja2V0TWlzc2luZ0Vycm9yKGU6IEVycm9yKSB7XG4gIHJldHVybiBlLm1lc3NhZ2UuaW5kZXhPZignZG9lcyBub3QgZXhpc3QnKSA+IC0xO1xufVxuXG4vKipcbiAqIFJldHJ5IGFuIGFzeW5jIG9wZXJhdGlvbiB1bnRpbCBhIGRlYWRsaW5lIGlzIGhpdC5cbiAqXG4gKiBVc2UgYHJldHJ5LmZvclNlY29uZHMoKWAgdG8gY29uc3RydWN0IGEgZGVhZGxpbmUgcmVsYXRpdmUgdG8gcmlnaHQgbm93LlxuICpcbiAqIEV4Y2VwdGlvbnMgd2lsbCBjYXVzZSB0aGUgb3BlcmF0aW9uIHRvIHJldHJ5LiBVc2UgYHJldHJ5LmFib3J0YCB0byBhbm5vdGF0ZSBhbiBleGNlcHRpb25cbiAqIHRvIHN0b3AgdGhlIHJldHJ5IGFuZCBlbmQgaW4gYSBmYWlsdXJlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmV0cnk8QT4oXG4gIG91dHB1dDogTm9kZUpTLldyaXRhYmxlU3RyZWFtLFxuICBvcGVyYXRpb246IHN0cmluZyxcbiAgZGVhZGxpbmU6IERhdGUsXG4gIGJsb2NrOiAoKSA9PiBQcm9taXNlPEE+LFxuKTogUHJvbWlzZTxBPiB7XG4gIGxldCBpID0gMDtcbiAgb3V0cHV0LndyaXRlKGDwn5KIICR7b3BlcmF0aW9ufVxcbmApO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHRyeSB7XG4gICAgICBpKys7XG4gICAgICBjb25zdCByZXQgPSBhd2FpdCBibG9jaygpO1xuICAgICAgb3V0cHV0LndyaXRlKGDwn5KIICR7b3BlcmF0aW9ufTogc3VjY2VlZGVkIGFmdGVyICR7aX0gYXR0ZW1wdHNcXG5gKTtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBpZiAoZS5hYm9ydCB8fCBEYXRlLm5vdygpID4gZGVhZGxpbmUuZ2V0VGltZSgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtvcGVyYXRpb259OiBkaWQgbm90IHN1Y2NlZWQgYWZ0ZXIgJHtpfSBhdHRlbXB0czogJHtlfWApO1xuICAgICAgfVxuICAgICAgb3V0cHV0LndyaXRlKGDij7MgJHtvcGVyYXRpb259ICgke2UubWVzc2FnZX0pXFxuYCk7XG4gICAgICBhd2FpdCBzbGVlcCg1MDAwKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBNYWtlIGEgZGVhZGxpbmUgZm9yIHRoZSBgcmV0cnlgIGZ1bmN0aW9uIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHRpbWUuXG4gKi9cbnJldHJ5LmZvclNlY29uZHMgPSAoc2Vjb25kczogbnVtYmVyKTogRGF0ZSA9PiB7XG4gIHJldHVybiBuZXcgRGF0ZShEYXRlLm5vdygpICsgc2Vjb25kcyAqIDEwMDApO1xufTtcblxuLyoqXG4gKiBBbm5vdGF0ZSBhbiBlcnJvciB0byBzdG9wIHRoZSByZXRyeWluZ1xuICovXG5yZXRyeS5hYm9ydCA9IChlOiBFcnJvcik6IEVycm9yID0+IHtcbiAgKGUgYXMgYW55KS5hYm9ydCA9IHRydWU7XG4gIHJldHVybiBlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIG91dHB1dEZyb21TdGFjayhrZXk6IHN0cmluZywgc3RhY2s6IFN0YWNrKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIChzdGFjay5PdXRwdXRzID8/IFtdKS5maW5kKChvKSA9PiBvLk91dHB1dEtleSA9PT0ga2V5KT8uT3V0cHV0VmFsdWU7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzbGVlcChtczogbnVtYmVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgob2spID0+IHNldFRpbWVvdXQob2ssIG1zKSk7XG59XG5cbi8qKlxuICogUmV0cnkgYW4gYXN5bmMgb3BlcmF0aW9uIHdpdGggZXJyb3IgZmlsdGVyaW5nIHVudGlsIGEgZGVhZGxpbmUgaXMgaGl0LlxuICpcbiAqIFVzZSBgcmV0cnkuZm9yU2Vjb25kcygpYCB0byBjb25zdHJ1Y3QgYSBkZWFkbGluZSByZWxhdGl2ZSB0byByaWdodCBub3cuXG4gKlxuICogT25seSByZXRyaWVzIG9uIGVycm9ycyB3aXRoIG1hdGNoaW5nIG5hbWVzIGluIGVycm9yTmFtZXMgYXJyYXkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXRyeU9uTWF0Y2hpbmdFcnJvcnM8VD4oXG4gIG9wZXJhdGlvbjogKCkgPT4gUHJvbWlzZTxUPixcbiAgZXJyb3JOYW1lczogc3RyaW5nW10sXG4gIGRlYWRsaW5lOiBEYXRlLFxuICBpbnRlcnZhbDogbnVtYmVyID0gNTAwMCxcbik6IFByb21pc2U8VD4ge1xuICBsZXQgaSA9IDA7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgdHJ5IHtcbiAgICAgIGkrKztcbiAgICAgIHJldHVybiBhd2FpdCBvcGVyYXRpb24oKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGlmIChEYXRlLm5vdygpID4gZGVhZGxpbmUuZ2V0VGltZSgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgT3BlcmF0aW9uIGRpZCBub3Qgc3VjY2VlZCBhZnRlciAke2l9IGF0dGVtcHRzOiAke2V9YCk7XG4gICAgICB9XG4gICAgICBpZiAoIWVycm9yTmFtZXMuaW5jbHVkZXMoZS5uYW1lKSkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgYXdhaXQgc2xlZXAoaW50ZXJ2YWwpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjaGFpbmFibGVDcmVkZW50aWFscyhyZWdpb246IHN0cmluZyk6IEF3c0NyZWRlbnRpYWxJZGVudGl0eVByb3ZpZGVyIHtcbiAgaWYgKChwcm9jZXNzLmVudi5DT0RFQlVJTERfQlVJTERfQVJOIHx8IHByb2Nlc3MuZW52LkdJVEhVQl9SVU5fSUQpICYmIHByb2Nlc3MuZW52LkFXU19QUk9GSUxFKSB7XG4gICAgLy8gaW4gY29kZWJ1aWxkIHdlIG11c3QgYXNzdW1lIHRoZSByb2xlIHRoYXQgdGhlIGNkayB1c2VzXG4gICAgLy8gb3RoZXJ3aXNlIGNyZWRlbnRpYWxzIHdpbGwganVzdCBiZSBwaWNrZWQgdXAgYnkgdGhlIG5vcm1hbCBzZGtcbiAgICAvLyBoZXVyaXN0aWNzIGFuZCBleHBpcmUgYWZ0ZXIgYW4gaG91ci5cbiAgICByZXR1cm4gZnJvbUluaSh7XG4gICAgICBjbGllbnRDb25maWc6IHsgcmVnaW9uIH0sXG4gICAgfSk7XG4gIH1cblxuICAvLyBPdGhlcndpc2UganVzdCBnZXQgd2hhdCdzIGRlZmF1bHRcbiAgcmV0dXJuIGZyb21Ob2RlUHJvdmlkZXJDaGFpbih7IGNsaWVudENvbmZpZzogeyByZWdpb24gfSB9KTtcbn1cblxuZnVuY3Rpb24gaXNBd3NDcmVkZW50aWFsSWRlbnRpdHkoeDogYW55KTogeCBpcyBBd3NDcmVkZW50aWFsSWRlbnRpdHkge1xuICByZXR1cm4gQm9vbGVhbih4ICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiB4LmFjY2Vzc0tleUlkKTtcbn1cbiJdfQ==
|
|
352
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXdUQSxrREFFQztBQUVELG9EQUVDO0FBVUQsc0JBc0JDO0FBaUJELDBDQUVDO0FBRUQsc0JBRUM7QUFTRCxzREFxQkM7QUFuWkQsMEVBTXdDO0FBQ3hDLDhEQUFvRDtBQUNwRCxvREFBeUU7QUFDekUsa0VBQTZEO0FBQzdELG9EQUFnRDtBQUNoRCxvREFBOEo7QUFDOUosMERBQXNEO0FBQ3RELGtEQU00QjtBQUM1Qiw0RUFBdUU7QUFDdkUsb0RBQWdEO0FBQ2hELG9EQUFnRDtBQUNoRCxvREFBZ0Q7QUFDaEQsb0RBQTZGO0FBQzdGLHdFQUErRTtBQUUvRSxtREFBNkQ7QUFTN0QsTUFBYSxVQUFVO0lBNEJGO0lBQ0Q7SUFDQztJQUNEO0lBOUJYLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFlBQW9CLEVBQUUsTUFBYyxFQUFFLFFBQStCLEVBQUUsTUFBNkI7UUFDbEksT0FBTyxJQUFJLFVBQVUsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBb0IsRUFBRSxNQUFjLEVBQUUsTUFBNkI7UUFDL0YsT0FBTyxJQUFJLFVBQVUsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFZ0IsT0FBTyxHQUE0QixFQUFFLENBQUM7SUFDdEMsTUFBTSxDQUFlO0lBRXRCLGNBQWMsQ0FBdUI7SUFDckMsRUFBRSxDQUFXO0lBQ2IsR0FBRyxDQUFZO0lBQ2YsU0FBUyxDQUFrQjtJQUMzQixHQUFHLENBQVk7SUFDZixHQUFHLENBQVk7SUFDZixHQUFHLENBQVk7SUFDZixHQUFHLENBQVk7SUFDZixHQUFHLENBQVk7SUFDZixNQUFNLENBQWU7SUFDckIsR0FBRyxDQUFZO0lB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QkFBbUIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUYseURBQXlEO1FBQ3pELGlFQUFpRTtRQUNqRSx1Q0FBdUM7UUFDdkMsT0FBTyxJQUFBLDhCQUFPLEVBQUM7WUFDYixZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUU7U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG9DQUFvQztJQUNwQyxPQUFPLElBQUEsNENBQXFCLEVBQUMsRUFBRSxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELFNBQVMsdUJBQXVCLENBQUMsQ0FBTTtJQUNyQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUM5RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2xvdWRGb3JtYXRpb25DbGllbnQsXG4gIERlbGV0ZVN0YWNrQ29tbWFuZCxcbiAgRGVzY3JpYmVTdGFja3NDb21tYW5kLFxuICBVcGRhdGVUZXJtaW5hdGlvblByb3RlY3Rpb25Db21tYW5kLFxuICB0eXBlIFN0YWNrLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgRHluYW1vREIgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtZHluYW1vZGInO1xuaW1wb3J0IHsgRGVsZXRlUmVwb3NpdG9yeUNvbW1hbmQsIEVDUkNsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1lY3InO1xuaW1wb3J0IHsgRUNSUFVCTElDQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWVjci1wdWJsaWMnO1xuaW1wb3J0IHsgRUNTQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWVjcyc7XG5pbXBvcnQgeyBDcmVhdGVSb2xlQ29tbWFuZCwgRGVsZXRlUm9sZUNvbW1hbmQsIERlbGV0ZVJvbGVQb2xpY3lDb21tYW5kLCBJQU1DbGllbnQsIExpc3RSb2xlUG9saWNpZXNDb21tYW5kLCBQdXRSb2xlUG9saWN5Q29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1pYW0nO1xuaW1wb3J0IHsgTGFtYmRhQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWxhbWJkYSc7XG5pbXBvcnQge1xuICBTM0NsaWVudCxcbiAgRGVsZXRlT2JqZWN0c0NvbW1hbmQsXG4gIExpc3RPYmplY3RWZXJzaW9uc0NvbW1hbmQsXG4gIHR5cGUgT2JqZWN0SWRlbnRpZmllcixcbiAgRGVsZXRlQnVja2V0Q29tbWFuZCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCB7IFNlY3JldHNNYW5hZ2VyQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNlY3JldHMtbWFuYWdlcic7XG5pbXBvcnQgeyBTTlNDbGllbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc25zJztcbmltcG9ydCB7IFNTTUNsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zc20nO1xuaW1wb3J0IHsgU1NPQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNzbyc7XG5pbXBvcnQgeyBBc3N1bWVSb2xlQ29tbWFuZCwgU1RTQ2xpZW50LCBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc3RzJztcbmltcG9ydCB7IGZyb21JbmksIGZyb21Ob2RlUHJvdmlkZXJDaGFpbiB9IGZyb20gJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXJzJztcbmltcG9ydCB0eXBlIHsgQXdzQ3JlZGVudGlhbElkZW50aXR5LCBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlciwgTm9kZUh0dHBIYW5kbGVyT3B0aW9ucyB9IGZyb20gJ0BzbWl0aHkvdHlwZXMnO1xuaW1wb3J0IHsgQ29uZmlndXJlZFJldHJ5U3RyYXRlZ3kgfSBmcm9tICdAc21pdGh5L3V0aWwtcmV0cnknO1xuXG5pbnRlcmZhY2UgQ2xpZW50Q29uZmlnIHtcbiAgcmVhZG9ubHkgY3JlZGVudGlhbHM6IEF3c0NyZWRlbnRpYWxJZGVudGl0eVByb3ZpZGVyIHwgQXdzQ3JlZGVudGlhbElkZW50aXR5O1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcbiAgcmVhZG9ubHkgcmV0cnlTdHJhdGVneTogQ29uZmlndXJlZFJldHJ5U3RyYXRlZ3k7XG4gIHJlYWRvbmx5IHJlcXVlc3RIYW5kbGVyPzogTm9kZUh0dHBIYW5kbGVyT3B0aW9ucztcbn1cblxuZXhwb3J0IGNsYXNzIEF3c0NsaWVudHMge1xuICBwdWJsaWMgc3RhdGljIGFzeW5jIGZvcklkZW50aXR5KHJhbmRvbVN0cmluZzogc3RyaW5nLCByZWdpb246IHN0cmluZywgaWRlbnRpdHk6IEF3c0NyZWRlbnRpYWxJZGVudGl0eSwgb3V0cHV0OiBOb2RlSlMuV3JpdGFibGVTdHJlYW0pIHtcbiAgICByZXR1cm4gbmV3IEF3c0NsaWVudHMocmFuZG9tU3RyaW5nLCByZWdpb24sIG91dHB1dCwgaWRlbnRpdHkpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBmb3JSZWdpb24ocmFuZG9tU3RyaW5nOiBzdHJpbmcsIHJlZ2lvbjogc3RyaW5nLCBvdXRwdXQ6IE5vZGVKUy5Xcml0YWJsZVN0cmVhbSkge1xuICAgIHJldHVybiBuZXcgQXdzQ2xpZW50cyhyYW5kb21TdHJpbmcsIHJlZ2lvbiwgb3V0cHV0KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2xlYW51cDogKCgpID0+IFByb21pc2U8dm9pZD4pW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IENsaWVudENvbmZpZztcblxuICBwdWJsaWMgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb246IENsb3VkRm9ybWF0aW9uQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgczM6IFMzQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgZWNyOiBFQ1JDbGllbnQ7XG4gIHB1YmxpYyByZWFkb25seSBlY3JQdWJsaWM6IEVDUlBVQkxJQ0NsaWVudDtcbiAgcHVibGljIHJlYWRvbmx5IGVjczogRUNTQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgc3NvOiBTU09DbGllbnQ7XG4gIHB1YmxpYyByZWFkb25seSBzc206IFNTTUNsaWVudDtcbiAgcHVibGljIHJlYWRvbmx5IHNuczogU05TQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgaWFtOiBJQU1DbGllbnQ7XG4gIHB1YmxpYyByZWFkb25seSBsYW1iZGE6IExhbWJkYUNsaWVudDtcbiAgcHVibGljIHJlYWRvbmx5IHN0czogU1RTQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXI6IFNlY3JldHNNYW5hZ2VyQ2xpZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgZHluYW1vRGI6IER5bmFtb0RCO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgLyoqIEEgcmFuZG9tIHN0cmluZyB0byB1c2UgZm9yIHRlbXBvcmFyeSByZXNvdXJjZXMsIGxpa2Ugcm9sZXMgKHNob3VsZCBwcmVmZXJhYmx5IG1hdGNoIHVuaXF1ZSB0ZXN0LXNwZWNpZmljIHJhbmRvbVN0cmluZykgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJhbmRvbVN0cmluZzogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSByZWdpb246IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG91dHB1dDogTm9kZUpTLldyaXRhYmxlU3RyZWFtLFxuICAgIHB1YmxpYyByZWFkb25seSBpZGVudGl0eT86IEF3c0NyZWRlbnRpYWxJZGVudGl0eSkge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgY3JlZGVudGlhbHM6IHRoaXMuaWRlbnRpdHkgPz8gY2hhaW5hYmxlQ3JlZGVudGlhbHModGhpcy5yZWdpb24pLFxuICAgICAgcmVnaW9uOiB0aGlzLnJlZ2lvbixcbiAgICAgIHJldHJ5U3RyYXRlZ3k6IG5ldyBDb25maWd1cmVkUmV0cnlTdHJhdGVneSg5LCAoYXR0ZW1wdDogbnVtYmVyKSA9PiBhdHRlbXB0ICoqIDUwMCksXG4gICAgfTtcblxuICAgIHRoaXMuY2xvdWRGb3JtYXRpb24gPSBuZXcgQ2xvdWRGb3JtYXRpb25DbGllbnQodGhpcy5jb25maWcpO1xuICAgIHRoaXMuczMgPSBuZXcgUzNDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHRoaXMuZWNyID0gbmV3IEVDUkNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5lY3JQdWJsaWMgPSBuZXcgRUNSUFVCTElDQ2xpZW50KHsgLi4udGhpcy5jb25maWcsIHJlZ2lvbjogJ3VzLWVhc3QtMScgLyogcHVibGljIGdhbGxlcnkgaXMgb25seSBhdmFpbGFibGUgaW4gdXMtZWFzdC0xICovIH0pO1xuICAgIHRoaXMuZWNzID0gbmV3IEVDU0NsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5zc28gPSBuZXcgU1NPQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnNzbSA9IG5ldyBTU01DbGllbnQodGhpcy5jb25maWcpO1xuICAgIHRoaXMuc25zID0gbmV3IFNOU0NsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5pYW0gPSBuZXcgSUFNQ2xpZW50KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLmxhbWJkYSA9IG5ldyBMYW1iZGFDbGllbnQodGhpcy5jb25maWcpO1xuICAgIHRoaXMuc3RzID0gbmV3IFNUU0NsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5zZWNyZXRzTWFuYWdlciA9IG5ldyBTZWNyZXRzTWFuYWdlckNsaWVudCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5keW5hbW9EYiA9IG5ldyBEeW5hbW9EQih0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgYWRkQ2xlYW51cChjbGVhbnVwOiAoKSA9PiBQcm9taXNlPGFueT4pIHtcbiAgICB0aGlzLmNsZWFudXAucHVzaChjbGVhbnVwKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkaXNwb3NlKCkge1xuICAgIGZvciAoY29uc3QgY2xlYW51cCBvZiB0aGlzLmNsZWFudXApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGNsZWFudXAoKTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICB0aGlzLm91dHB1dC53cml0ZShg4pqg77iPIEVycm9yIGR1cmluZyBjbGVhbnVwOiAke2UubWVzc2FnZX1cXG5gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jbGVhbnVwLnNwbGljZSgwLCB0aGlzLmNsZWFudXAubGVuZ3RoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhY2NvdW50KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgLy8gUmVkdWNlICMgb2YgcmV0cmllcywgd2UgdXNlIHRoaXMgYXMgYSBjaXJjdWl0IGJyZWFrZXIgZm9yIGRldGVjdGluZyBuby1jb25maWdcbiAgICBjb25zdCBzdHNDbGllbnQgPSBuZXcgU1RTQ2xpZW50KHtcbiAgICAgIGNyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZy5jcmVkZW50aWFscyxcbiAgICAgIHJlZ2lvbjogdGhpcy5jb25maWcucmVnaW9uLFxuICAgICAgbWF4QXR0ZW1wdHM6IDIsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gKGF3YWl0IHN0c0NsaWVudC5zZW5kKG5ldyBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQoe30pKSkuQWNjb3VudCE7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGNsaWVudHMgYWxyZWFkeSBoYXMgYW4gZXN0YWJsaXNoZWQgaWRlbnRpdHkgKHZpYSBhdG1vc3BoZXJlIGZvciBleGFtcGxlKSxcbiAgICogcmV0dXJuIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIG1hcCBhY3RpdmF0aW5nIGl0LlxuICAgKlxuICAgKiBPdGhlcndpc2UsIHJldHVybnMgdW5kZWZpbmVkLlxuICAgKi9cbiAgcHVibGljIGlkZW50aXR5RW52KCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmlkZW50aXR5ID8ge1xuICAgICAgQVdTX0FDQ0VTU19LRVlfSUQ6IHRoaXMuaWRlbnRpdHkuYWNjZXNzS2V5SWQsXG4gICAgICBBV1NfU0VDUkVUX0FDQ0VTU19LRVk6IHRoaXMuaWRlbnRpdHkuc2VjcmV0QWNjZXNzS2V5LFxuICAgICAgQVdTX1NFU1NJT05fVE9LRU46IHRoaXMuaWRlbnRpdHkuc2Vzc2lvblRva2VuISxcblxuICAgICAgLy8gdW5zZXQgYW55IHByZXZpb3VzbHkgdXNlZCBwcm9maWxlIGJlY2F1c2UgdGhlIFNESyB3aWxsIHByZWZlclxuICAgICAgLy8gdGhpcyBvdmVyIHN0YXRpYyBlbnYgY3JlZGVudGlhbHMuIHRoaXMgaXMgcmVsZXZhbnQgZm9yIHRlc3RzIHJ1bm5pbmcgb24gQ29kZUJ1aWxkXG4gICAgICAvLyBiZWNhdXNlIHdlIHVzZSBhIHByb2ZpbGUgYXMgb3VyIG1haW4gY3JlZGVudGlhbHMgc291cmNlLlxuICAgICAgQVdTX1BST0ZJTEU6ICcnLFxuICAgIH0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUgY3VycmVudCBpZGVudGl0eSBvciBpZGVudGl0eSBwcm92aWRlciB0byBjcmVkZW50aWFsc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGNyZWRlbnRpYWxzKCkge1xuICAgIGNvbnN0IHggPSB0aGlzLmNvbmZpZy5jcmVkZW50aWFscztcbiAgICBpZiAoaXNBd3NDcmVkZW50aWFsSWRlbnRpdHkoeCkpIHtcbiAgICAgIHJldHVybiB4O1xuICAgIH1cbiAgICByZXR1cm4geCgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZVN0YWNrcyguLi5zdGFja05hbWVzOiBzdHJpbmdbXSkge1xuICAgIGlmIChzdGFja05hbWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFdlIHB1cnBvc2VseSBkbyBhbGwgc3RhY2tzIHNlcmlhbGx5LCBiZWNhdXNlIHRoZXkndmUgYmVlbiBvcmRlcmVkXG4gICAgLy8gdG8gZG8gdGhlIGJvb3RzdHJhcCBzdGFjayBsYXN0LlxuICAgIGZvciAoY29uc3Qgc3RhY2tOYW1lIG9mIHN0YWNrTmFtZXMpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2xvdWRGb3JtYXRpb24uc2VuZChcbiAgICAgICAgbmV3IFVwZGF0ZVRlcm1pbmF0aW9uUHJvdGVjdGlvbkNvbW1hbmQoe1xuICAgICAgICAgIEVuYWJsZVRlcm1pbmF0aW9uUHJvdGVjdGlvbjogZmFsc2UsXG4gICAgICAgICAgU3RhY2tOYW1lOiBzdGFja05hbWUsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICAgIGF3YWl0IHRoaXMuY2xvdWRGb3JtYXRpb24uc2VuZChcbiAgICAgICAgbmV3IERlbGV0ZVN0YWNrQ29tbWFuZCh7XG4gICAgICAgICAgU3RhY2tOYW1lOiBzdGFja05hbWUsXG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgYXdhaXQgcmV0cnkodGhpcy5vdXRwdXQsIGBEZWxldGluZyAke3N0YWNrTmFtZX1gLCByZXRyeS5mb3JTZWNvbmRzKDYwMCksIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5zdGFja1N0YXR1cyhzdGFja05hbWUpO1xuICAgICAgICBpZiAoc3RhdHVzICE9PSB1bmRlZmluZWQgJiYgc3RhdHVzLmVuZHNXaXRoKCdfRkFJTEVEJykpIHtcbiAgICAgICAgICB0aHJvdyByZXRyeS5hYm9ydChuZXcgRXJyb3IoYCcke3N0YWNrTmFtZX0nIGlzIGluIHN0YXRlICcke3N0YXR1c30nYCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0dXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRGVsZXRlIG9mICcke3N0YWNrTmFtZX0nIG5vdCBjb21wbGV0ZSB5ZXQsIHN0YXR1czogJyR7c3RhdHVzfSdgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHN0YWNrU3RhdHVzKHN0YWNrTmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgYXdhaXQgdGhpcy5jbG91ZEZvcm1hdGlvbi5zZW5kKFxuICAgICAgICAgIG5ldyBEZXNjcmliZVN0YWNrc0NvbW1hbmQoe1xuICAgICAgICAgICAgU3RhY2tOYW1lOiBzdGFja05hbWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgICkuU3RhY2tzPy5bMF0uU3RhY2tTdGF0dXM7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBpZiAoaXNTdGFja01pc3NpbmdFcnJvcihlKSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZW1wdHlCdWNrZXQoYnVja2V0TmFtZTogc3RyaW5nLCBvcHRpb25zPzogeyBieXBhc3NHb3Zlcm5hbmNlPzogYm9vbGVhbiB9KSB7XG4gICAgY29uc3Qgb2JqZWN0cyA9IGF3YWl0IHRoaXMuczMuc2VuZChcbiAgICAgIG5ldyBMaXN0T2JqZWN0VmVyc2lvbnNDb21tYW5kKHtcbiAgICAgICAgQnVja2V0OiBidWNrZXROYW1lLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvbnN0IGRlbGV0ZXMgPSBbLi4uKG9iamVjdHMuVmVyc2lvbnMgfHwgW10pLCAuLi4ob2JqZWN0cy5EZWxldGVNYXJrZXJzIHx8IFtdKV0ucmVkdWNlKChhY2MsIG9iaikgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBvYmouVmVyc2lvbklkICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygb2JqLktleSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgYWNjLnB1c2goeyBLZXk6IG9iai5LZXksIFZlcnNpb25JZDogb2JqLlZlcnNpb25JZCB9KTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iai5LZXkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGFjYy5wdXNoKHsgS2V5OiBvYmouS2V5IH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSBhcyBPYmplY3RJZGVudGlmaWVyW10pO1xuXG4gICAgaWYgKGRlbGV0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuczMuc2VuZChcbiAgICAgIG5ldyBEZWxldGVPYmplY3RzQ29tbWFuZCh7XG4gICAgICAgIEJ1Y2tldDogYnVja2V0TmFtZSxcbiAgICAgICAgRGVsZXRlOiB7XG4gICAgICAgICAgT2JqZWN0czogZGVsZXRlcyxcbiAgICAgICAgICBRdWlldDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIEJ5cGFzc0dvdmVybmFuY2VSZXRlbnRpb246IG9wdGlvbnM/LmJ5cGFzc0dvdmVybmFuY2UgPyB0cnVlIDogdW5kZWZpbmVkLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVJbWFnZVJlcG9zaXRvcnkocmVwb3NpdG9yeU5hbWU6IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMuZWNyLnNlbmQoXG4gICAgICBuZXcgRGVsZXRlUmVwb3NpdG9yeUNvbW1hbmQoe1xuICAgICAgICByZXBvc2l0b3J5TmFtZTogcmVwb3NpdG9yeU5hbWUsXG4gICAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVCdWNrZXQoYnVja2V0TmFtZTogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuZW1wdHlCdWNrZXQoYnVja2V0TmFtZSk7XG5cbiAgICAgIGF3YWl0IHRoaXMuczMuc2VuZChcbiAgICAgICAgbmV3IERlbGV0ZUJ1Y2tldENvbW1hbmQoe1xuICAgICAgICAgIEJ1Y2tldDogYnVja2V0TmFtZSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKGlzQnVja2V0TWlzc2luZ0Vycm9yKGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHJvbGUgdGhhdCB3aWxsIGJlIGNsZWFuZWQgdXAgd2hlbiB0aGUgQXdzQ2xpZW50cyBvYmplY3QgaXMgY2xlYW5lZCB1cFxuICAgKi9cbiAgcHVibGljIGFzeW5jIHRlbXBvcmFyeVJvbGUobmFtZVByZWZpeDogc3RyaW5nLCBhc3N1bWVSb2xlUG9saWN5U3RhdGVtZW50czogYW55W10sIHBvbGljeVN0YXRlbWVudHM6IGFueVtdKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmlhbS5zZW5kKG5ldyBDcmVhdGVSb2xlQ29tbWFuZCh7XG4gICAgICBSb2xlTmFtZTogYCR7bmFtZVByZWZpeH0tJHt0aGlzLnJhbmRvbVN0cmluZ31gLFxuICAgICAgQXNzdW1lUm9sZVBvbGljeURvY3VtZW50OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3JyxcbiAgICAgICAgU3RhdGVtZW50OiBhc3N1bWVSb2xlUG9saWN5U3RhdGVtZW50cyxcbiAgICAgIH0sIHVuZGVmaW5lZCwgMiksXG4gICAgICBUYWdzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBLZXk6ICdkZWxldGVtZScsXG4gICAgICAgICAgVmFsdWU6ICd0cnVlJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSkpO1xuICAgIGF3YWl0IHRoaXMuaWFtLnNlbmQobmV3IFB1dFJvbGVQb2xpY3lDb21tYW5kKHtcbiAgICAgIFJvbGVOYW1lOiBgJHtuYW1lUHJlZml4fS0ke3RoaXMucmFuZG9tU3RyaW5nfWAsXG4gICAgICBQb2xpY3lOYW1lOiAnRGVmYXVsdFBvbGljeScsXG4gICAgICBQb2xpY3lEb2N1bWVudDogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNycsXG4gICAgICAgIFN0YXRlbWVudDogcG9saWN5U3RhdGVtZW50cyxcbiAgICAgIH0sIHVuZGVmaW5lZCwgMiksXG4gICAgfSkpO1xuXG4gICAgdGhpcy5hZGRDbGVhbnVwKCgpID0+IHRoaXMuZGVsZXRlUm9sZShyZXNwb25zZS5Sb2xlIS5Sb2xlTmFtZSEpKTtcblxuICAgIHJldHVybiByZXNwb25zZS5Sb2xlPy5Bcm4gPz8gJypDcmVhdGVSb2xlIGRpZCBub3QgcmV0dXJuIGFuIEFSTionO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHdhaXRGb3JBc3N1bWVSb2xlKHJvbGVBcm46IHN0cmluZykge1xuICAgIGF3YWl0IHJldHJ5T25NYXRjaGluZ0Vycm9ycyhcbiAgICAgICgpID0+IHRoaXMuc3RzLnNlbmQobmV3IEFzc3VtZVJvbGVDb21tYW5kKHtcbiAgICAgICAgUm9sZUFybjogcm9sZUFybixcbiAgICAgICAgUm9sZVNlc3Npb25OYW1lOiAndGVzdC1leGlzdGVuY2UnLFxuICAgICAgfSkpLFxuICAgICAgWydBY2Nlc3NEZW5pZWQnXSxcbiAgICAgIHJldHJ5LmZvclNlY29uZHMoNjApLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlUm9sZShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwb2xpY2llc1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5pYW0uc2VuZChuZXcgTGlzdFJvbGVQb2xpY2llc0NvbW1hbmQoe1xuICAgICAgUm9sZU5hbWU6IG5hbWUsXG4gICAgfSkpO1xuXG4gICAgZm9yIChjb25zdCBwb2xpY3lOYW1lIG9mIHBvbGljaWVzUmVzcG9uc2UuUG9saWN5TmFtZXMgPz8gW10pIHtcbiAgICAgIGF3YWl0IHRoaXMuaWFtLnNlbmQobmV3IERlbGV0ZVJvbGVQb2xpY3lDb21tYW5kKHtcbiAgICAgICAgUm9sZU5hbWU6IG5hbWUsXG4gICAgICAgIFBvbGljeU5hbWU6IHBvbGljeU5hbWUsXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5pYW0uc2VuZChuZXcgRGVsZXRlUm9sZUNvbW1hbmQoe1xuICAgICAgUm9sZU5hbWU6IG5hbWUsXG4gICAgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YWNrTWlzc2luZ0Vycm9yKGU6IEVycm9yKSB7XG4gIHJldHVybiBlLm1lc3NhZ2UuaW5kZXhPZignZG9lcyBub3QgZXhpc3QnKSA+IC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCdWNrZXRNaXNzaW5nRXJyb3IoZTogRXJyb3IpIHtcbiAgcmV0dXJuIGUubWVzc2FnZS5pbmRleE9mKCdkb2VzIG5vdCBleGlzdCcpID4gLTE7XG59XG5cbi8qKlxuICogUmV0cnkgYW4gYXN5bmMgb3BlcmF0aW9uIHVudGlsIGEgZGVhZGxpbmUgaXMgaGl0LlxuICpcbiAqIFVzZSBgcmV0cnkuZm9yU2Vjb25kcygpYCB0byBjb25zdHJ1Y3QgYSBkZWFkbGluZSByZWxhdGl2ZSB0byByaWdodCBub3cuXG4gKlxuICogRXhjZXB0aW9ucyB3aWxsIGNhdXNlIHRoZSBvcGVyYXRpb24gdG8gcmV0cnkuIFVzZSBgcmV0cnkuYWJvcnRgIHRvIGFubm90YXRlIGFuIGV4Y2VwdGlvblxuICogdG8gc3RvcCB0aGUgcmV0cnkgYW5kIGVuZCBpbiBhIGZhaWx1cmUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXRyeTxBPihcbiAgb3V0cHV0OiBOb2RlSlMuV3JpdGFibGVTdHJlYW0sXG4gIG9wZXJhdGlvbjogc3RyaW5nLFxuICBkZWFkbGluZTogRGF0ZSxcbiAgYmxvY2s6ICgpID0+IFByb21pc2U8QT4sXG4pOiBQcm9taXNlPEE+IHtcbiAgbGV0IGkgPSAwO1xuICBvdXRwdXQud3JpdGUoYPCfkoggJHtvcGVyYXRpb259XFxuYCk7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgdHJ5IHtcbiAgICAgIGkrKztcbiAgICAgIGNvbnN0IHJldCA9IGF3YWl0IGJsb2NrKCk7XG4gICAgICBvdXRwdXQud3JpdGUoYPCfkoggJHtvcGVyYXRpb259OiBzdWNjZWVkZWQgYWZ0ZXIgJHtpfSBhdHRlbXB0c1xcbmApO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGlmIChlLmFib3J0IHx8IERhdGUubm93KCkgPiBkZWFkbGluZS5nZXRUaW1lKCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke29wZXJhdGlvbn06IGRpZCBub3Qgc3VjY2VlZCBhZnRlciAke2l9IGF0dGVtcHRzOiAke2V9YCk7XG4gICAgICB9XG4gICAgICBvdXRwdXQud3JpdGUoYOKPsyAke29wZXJhdGlvbn0gKCR7ZS5tZXNzYWdlfSlcXG5gKTtcbiAgICAgIGF3YWl0IHNsZWVwKDUwMDApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE1ha2UgYSBkZWFkbGluZSBmb3IgdGhlIGByZXRyeWAgZnVuY3Rpb24gcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgdGltZS5cbiAqL1xucmV0cnkuZm9yU2Vjb25kcyA9IChzZWNvbmRzOiBudW1iZXIpOiBEYXRlID0+IHtcbiAgcmV0dXJuIG5ldyBEYXRlKERhdGUubm93KCkgKyBzZWNvbmRzICogMTAwMCk7XG59O1xuXG4vKipcbiAqIEFubm90YXRlIGFuIGVycm9yIHRvIHN0b3AgdGhlIHJldHJ5aW5nXG4gKi9cbnJldHJ5LmFib3J0ID0gKGU6IEVycm9yKTogRXJyb3IgPT4ge1xuICAoZSBhcyBhbnkpLmFib3J0ID0gdHJ1ZTtcbiAgcmV0dXJuIGU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gb3V0cHV0RnJvbVN0YWNrKGtleTogc3RyaW5nLCBzdGFjazogU3RhY2spOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gKHN0YWNrLk91dHB1dHMgPz8gW10pLmZpbmQoKG8pID0+IG8uT3V0cHV0S2V5ID09PSBrZXkpPy5PdXRwdXRWYWx1ZTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNsZWVwKG1zOiBudW1iZXIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChvaykgPT4gc2V0VGltZW91dChvaywgbXMpKTtcbn1cblxuLyoqXG4gKiBSZXRyeSBhbiBhc3luYyBvcGVyYXRpb24gd2l0aCBlcnJvciBmaWx0ZXJpbmcgdW50aWwgYSBkZWFkbGluZSBpcyBoaXQuXG4gKlxuICogVXNlIGByZXRyeS5mb3JTZWNvbmRzKClgIHRvIGNvbnN0cnVjdCBhIGRlYWRsaW5lIHJlbGF0aXZlIHRvIHJpZ2h0IG5vdy5cbiAqXG4gKiBPbmx5IHJldHJpZXMgb24gZXJyb3JzIHdpdGggbWF0Y2hpbmcgbmFtZXMgaW4gZXJyb3JOYW1lcyBhcnJheS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJldHJ5T25NYXRjaGluZ0Vycm9yczxUPihcbiAgb3BlcmF0aW9uOiAoKSA9PiBQcm9taXNlPFQ+LFxuICBlcnJvck5hbWVzOiBzdHJpbmdbXSxcbiAgZGVhZGxpbmU6IERhdGUsXG4gIGludGVydmFsOiBudW1iZXIgPSA1MDAwLFxuKTogUHJvbWlzZTxUPiB7XG4gIGxldCBpID0gMDtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICB0cnkge1xuICAgICAgaSsrO1xuICAgICAgcmV0dXJuIGF3YWl0IG9wZXJhdGlvbigpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKERhdGUubm93KCkgPiBkZWFkbGluZS5nZXRUaW1lKCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPcGVyYXRpb24gZGlkIG5vdCBzdWNjZWVkIGFmdGVyICR7aX0gYXR0ZW1wdHM6ICR7ZX1gKTtcbiAgICAgIH1cbiAgICAgIGlmICghZXJyb3JOYW1lcy5pbmNsdWRlcyhlLm5hbWUpKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgICBhd2FpdCBzbGVlcChpbnRlcnZhbCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoYWluYWJsZUNyZWRlbnRpYWxzKHJlZ2lvbjogc3RyaW5nKTogQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXIge1xuICBpZiAoKHByb2Nlc3MuZW52LkNPREVCVUlMRF9CVUlMRF9BUk4gfHwgcHJvY2Vzcy5lbnYuR0lUSFVCX1JVTl9JRCkgJiYgcHJvY2Vzcy5lbnYuQVdTX1BST0ZJTEUpIHtcbiAgICAvLyBpbiBjb2RlYnVpbGQgd2UgbXVzdCBhc3N1bWUgdGhlIHJvbGUgdGhhdCB0aGUgY2RrIHVzZXNcbiAgICAvLyBvdGhlcndpc2UgY3JlZGVudGlhbHMgd2lsbCBqdXN0IGJlIHBpY2tlZCB1cCBieSB0aGUgbm9ybWFsIHNka1xuICAgIC8vIGhldXJpc3RpY3MgYW5kIGV4cGlyZSBhZnRlciBhbiBob3VyLlxuICAgIHJldHVybiBmcm9tSW5pKHtcbiAgICAgIGNsaWVudENvbmZpZzogeyByZWdpb24gfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIE90aGVyd2lzZSBqdXN0IGdldCB3aGF0J3MgZGVmYXVsdFxuICByZXR1cm4gZnJvbU5vZGVQcm92aWRlckNoYWluKHsgY2xpZW50Q29uZmlnOiB7IHJlZ2lvbiB9IH0pO1xufVxuXG5mdW5jdGlvbiBpc0F3c0NyZWRlbnRpYWxJZGVudGl0eSh4OiBhbnkpOiB4IGlzIEF3c0NyZWRlbnRpYWxJZGVudGl0eSB7XG4gIHJldHVybiBCb29sZWFuKHggJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIHguYWNjZXNzS2V5SWQpO1xufVxuIl19
|
package/lib/cli/query-github.js
CHANGED
|
@@ -1,6 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const yargs = require("yargs");
|
|
36
|
+
const yargs = __importStar(require("yargs"));
|
|
4
37
|
const github_1 = require("../github");
|
|
5
38
|
async function main() {
|
|
6
39
|
const args = await yargs
|
|
@@ -50,4 +83,4 @@ main().catch(e => {
|
|
|
50
83
|
console.error(e);
|
|
51
84
|
process.exitCode = 1;
|
|
52
85
|
});
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZ2l0aHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicXVlcnktZ2l0aHViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQStCO0FBQy9CLHNDQUFpRDtBQUVqRCxLQUFLLFVBQVUsSUFBSTtJQUNqQixNQUFNLElBQUksR0FBRyxNQUFNLEtBQUs7U0FDckIsTUFBTSxDQUFDLE9BQU8sRUFBRTtRQUNmLFVBQVUsRUFBRSx1REFBdUQ7UUFDbkUsS0FBSyxFQUFFLEdBQUc7UUFDVixJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVcsRUFBRSxJQUFJO0tBQ2xCLENBQUM7U0FDRCxPQUFPLENBQUMsY0FBYyxFQUFFLHdCQUF3QixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRztTQUMxRCxNQUFNLENBQUMsVUFBVSxFQUFFO1FBQ2xCLFdBQVcsRUFBRSx5REFBeUQ7UUFDdEUsS0FBSyxFQUFFLEdBQUc7UUFDVixJQUFJLEVBQUUsUUFBUTtRQUNkLFdBQVcsRUFBRSxJQUFJO0tBQ2xCLENBQUM7U0FDRCxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ2YsV0FBVyxFQUFFLDZDQUE2QztRQUMxRCxLQUFLLEVBQUUsR0FBRztRQUNWLElBQUksRUFBRSxRQUFRO1FBQ2QsV0FBVyxFQUFFLElBQUk7S0FDbEIsQ0FBQyxDQUFDO1NBQ0osYUFBYSxFQUFFO1NBQ2YsSUFBSSxFQUFFO1NBQ04sY0FBYyxDQUFDLEtBQUssQ0FBQztTQUNyQixJQUFJLENBQUM7SUFFUixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTFCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7SUFDckQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxRQUFRLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLEtBQUssY0FBYztZQUNqQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztZQUMvRSxDQUFDO1lBRUQsc0NBQXNDO1lBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFBLDZCQUFvQixFQUFDLEtBQUssRUFBRTtnQkFDNUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQ3pCLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSzthQUN6QixDQUFDLENBQUMsQ0FBQztZQUNKLE1BQU07SUFDVixDQUFDO0FBQ0gsQ0FBQztBQUVELElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNmLHNDQUFzQztJQUN0QyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgeWFyZ3MgZnJvbSAneWFyZ3MnO1xuaW1wb3J0IHsgZmV0Y2hQcmV2aW91c1ZlcnNpb24gfSBmcm9tICcuLi9naXRodWInO1xuXG5hc3luYyBmdW5jdGlvbiBtYWluKCkge1xuICBjb25zdCBhcmdzID0gYXdhaXQgeWFyZ3NcbiAgICAub3B0aW9uKCd0b2tlbicsIHtcbiAgICAgIGRlc2NyaXB0b246ICdHaXRIdWIgdG9rZW4gKGRlZmF1bHQ6IGZyb20gZW52aXJvbm1lbnQgR0lUSFVCX1RPS0VOKScsXG4gICAgICBhbGlhczogJ3QnLFxuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICB9KVxuICAgIC5jb21tYW5kKCdsYXN0LXJlbGVhc2UnLCAnUXVlcnkgdGhlIGxhc3QgcmVsZWFzZScsIGNtZCA9PiBjbWRcbiAgICAgIC5vcHRpb24oJ3ByaW9yLXRvJywge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ1JldHVybiB0aGUgbW9zdCByZWNlbnQgcmVsZWFzZSBiZWZvcmUgdGhlIGdpdmVuIHZlcnNpb24nLFxuICAgICAgICBhbGlhczogJ3AnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbignbWFqb3InLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUmV0dXJuIHRoZSBtb3N0IHJlY2VudCByZWxlYXNlIHRoYXQgbWF0Y2hlcycsXG4gICAgICAgIGFsaWFzOiAnbScsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgIH0pKVxuICAgIC5kZW1hbmRDb21tYW5kKClcbiAgICAuaGVscCgpXG4gICAgLnNob3dIZWxwT25GYWlsKGZhbHNlKVxuICAgIC5hcmd2O1xuXG4gIGNvbnN0IGNvbW1hbmQgPSBhcmdzLl9bMF07XG5cbiAgY29uc3QgdG9rZW4gPSBhcmdzLnRva2VuID8/IHByb2Nlc3MuZW52LkdJVEhVQl9UT0tFTjtcbiAgaWYgKCF0b2tlbikge1xuICAgIHRocm93IG5ldyBFcnJvcignRWl0aGVyIHBhc3MgLS10b2tlbiBvciBzZXQgR0lUSFVCX1RPS0VOLicpO1xuICB9XG5cbiAgc3dpdGNoIChjb21tYW5kKSB7XG4gICAgY2FzZSAnbGFzdC1yZWxlYXNlJzpcbiAgICAgIGlmIChhcmdzWydwcmlvci10byddICYmIGFyZ3MubWFqb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcGFzcyBib3RoIGAtLXByaW9yLXRvIGFuZCAtLW1ham9yIGF0IHRoZSBzYW1lIHRpbWUnKTtcbiAgICAgIH1cblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUubG9nKGF3YWl0IGZldGNoUHJldmlvdXNWZXJzaW9uKHRva2VuLCB7XG4gICAgICAgIHByaW9yVG86IGFyZ3NbJ3ByaW9yLXRvJ10sXG4gICAgICAgIG1ham9yVmVyc2lvbjogYXJncy5tYWpvcixcbiAgICAgIH0pKTtcbiAgICAgIGJyZWFrO1xuICB9XG59XG5cbm1haW4oKS5jYXRjaChlID0+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5lcnJvcihlKTtcbiAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG59KTtcbiJdfQ==
|
package/lib/cli/run-suite.js
CHANGED
|
@@ -1,9 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
/* eslint-disable no-console */
|
|
4
|
-
const path = require("path");
|
|
5
|
-
const jest = require("jest");
|
|
6
|
-
const yargs = require("yargs");
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const jest = __importStar(require("jest"));
|
|
39
|
+
const yargs = __importStar(require("yargs"));
|
|
40
|
+
const emf_1 = require("../emf");
|
|
7
41
|
const cli_npm_source_1 = require("../package-sources/cli-npm-source");
|
|
8
42
|
const cli_repo_source_1 = require("../package-sources/cli-repo-source");
|
|
9
43
|
const find_root_1 = require("../package-sources/find-root");
|
|
@@ -107,6 +141,9 @@ async function main() {
|
|
|
107
141
|
alias: 'w',
|
|
108
142
|
describe: 'Specifies the maximum number of workers the worker-pool will spawn for running tests. We use a sensible default for running cli integ tests.',
|
|
109
143
|
type: 'string',
|
|
144
|
+
// makes it easier to control from the outside and mitigate
|
|
145
|
+
// resource utilization issues on codebuild.
|
|
146
|
+
default: process.env.JEST_MAX_WORKERS,
|
|
110
147
|
requiresArg: true,
|
|
111
148
|
})
|
|
112
149
|
.options('shard', {
|
|
@@ -217,6 +254,18 @@ async function main() {
|
|
|
217
254
|
toolkitLib,
|
|
218
255
|
cdkAssets,
|
|
219
256
|
});
|
|
257
|
+
if (process.env.CODEBUILD_BUILD_ID) {
|
|
258
|
+
// Emitting here is sliiiightly going to mess up the output of the test run, but since this is
|
|
259
|
+
// CodeBuild not too many people are going to look at it probably. Ultimately we only want these
|
|
260
|
+
// metrics into CloudWatch.
|
|
261
|
+
(0, emf_1.emitVersionsEmf)({
|
|
262
|
+
cli: cli.version,
|
|
263
|
+
library: library.version,
|
|
264
|
+
toolkitLib: toolkitLib.version,
|
|
265
|
+
cdkAssets: cdkAssets.version,
|
|
266
|
+
tests: thisPackageVersion(),
|
|
267
|
+
});
|
|
268
|
+
}
|
|
220
269
|
const jestConfig = path.resolve(__dirname, '..', '..', 'resources', 'integ.jest.config.js');
|
|
221
270
|
// Flip a flag to indicate we're testing CDK itself. Some parts of CDK behave more thoroughly
|
|
222
271
|
// (but slowly) if this flag is set.
|
|
@@ -280,4 +329,4 @@ main().catch(e => {
|
|
|
280
329
|
console.error(e);
|
|
281
330
|
process.exitCode = 1;
|
|
282
331
|
});
|
|
283
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLXN1aXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicnVuLXN1aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUM3Qiw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CLHNFQUF1RTtBQUN2RSx3RUFBeUU7QUFDekUsNERBQWdFO0FBQ2hFLGtHQUFtRztBQUNuRyw4RUFBK0U7QUFDL0UsZ0dBQWlHO0FBRWpHLDhEQUFpRTtBQUVqRSxNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztBQUNuQyxNQUFNLHVCQUF1QixHQUFHLFlBQVksQ0FBQztBQUU3QyxLQUFLLFVBQVUsSUFBSTtJQUNqQixNQUFNLElBQUksR0FBRyxNQUFNLEtBQUs7U0FDckIsT0FBTyxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDaEQsVUFBVSxDQUFDLFdBQVcsRUFBRTtRQUN2QixRQUFRLEVBQUUsK0JBQStCO1FBQ3pDLElBQUksRUFBRSxRQUFRO1FBQ2QsWUFBWSxFQUFFLElBQUk7S0FDbkIsQ0FBQztRQUNGLDZFQUE2RTtRQUM3RSx3QkFBd0I7U0FDdkIsT0FBTyxDQUFDLGFBQWEsRUFBRTtRQUN0QixRQUFRLEVBQUUscUJBQXFCO1FBQy9CLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLFFBQVE7S0FDZixDQUFDO1NBQ0QsT0FBTyxDQUFDLFlBQVksRUFBRTtRQUNyQixRQUFRLEVBQUUsNENBQTRDO1FBQ3RELEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLFFBQVE7S0FDZixDQUFDO1NBQ0QsT0FBTyxDQUFDLG1CQUFtQixFQUFFO1FBQzVCLFFBQVEsRUFBRSwwQkFBMEI7UUFDcEMsS0FBSyxFQUFFLEdBQUc7UUFDVixJQUFJLEVBQUUsUUFBUTtLQUNmLENBQUM7U0FDRCxPQUFPLENBQUMscUJBQXFCLEVBQUU7UUFDOUIsUUFBUSxFQUFFLDRCQUE0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R0FBRyxJQUFJLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVNLEdBQUcsQ0FBQyxDQUFJLEVBQUUsTUFBYztRQUM3QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sMkJBQTJCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ25GLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQUVELFNBQVMsa0JBQWtCO0lBQ3pCLGlFQUFpRTtJQUNqRSxPQUFPLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUMvQyxDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ2Ysc0NBQXNDO0lBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDdkIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgamVzdCBmcm9tICdqZXN0JztcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCB7IFJ1bm5lckNsaU5wbVNvdXJjZSB9IGZyb20gJy4uL3BhY2thZ2Utc291cmNlcy9jbGktbnBtLXNvdXJjZSc7XG5pbXBvcnQgeyBSdW5uZXJDbGlSZXBvU291cmNlIH0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2VzL2NsaS1yZXBvLXNvdXJjZSc7XG5pbXBvcnQgeyBhdXRvRmluZFJlcG9Sb290IH0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2VzL2ZpbmQtcm9vdCc7XG5pbXBvcnQgeyBSdW5uZXJMaWJyYXJ5R2xvYmFsSW5zdGFsbFNvdXJjZSB9IGZyb20gJy4uL3BhY2thZ2Utc291cmNlcy9saWJyYXJ5LWdsb2JhbGluc3RhbGwtc291cmNlJztcbmltcG9ydCB7IFJ1bm5lckxpYnJhcnlOcG1Tb3VyY2UgfSBmcm9tICcuLi9wYWNrYWdlLXNvdXJjZXMvbGlicmFyeS1ucG0tc291cmNlJztcbmltcG9ydCB7IFJ1bm5lckxpYnJhcnlQcmVpbnN0YWxsZWRTb3VyY2UgfSBmcm9tICcuLi9wYWNrYWdlLXNvdXJjZXMvbGlicmFyeS1wcmVpbnN0YWxsZWQtc291cmNlJztcbmltcG9ydCB0eXBlIHsgSVJ1bm5lclNvdXJjZSwgSVRlc3RDbGlTb3VyY2UsIElUZXN0TGlicmFyeVNvdXJjZSB9IGZyb20gJy4uL3BhY2thZ2Utc291cmNlcy9zb3VyY2UnO1xuaW1wb3J0IHsgc2VyaWFsaXplU291cmNlcyB9IGZyb20gJy4uL3BhY2thZ2Utc291cmNlcy9zdWJwcm9jZXNzJztcblxuY29uc3QgQ0xJX1BBQ0tBR0VfTkFNRSA9ICdhd3MtY2RrJztcbmNvbnN0IENES19BU1NFVFNfUEFDS0FHRV9OQU1FID0gJ2Nkay1hc3NldHMnO1xuXG5hc3luYyBmdW5jdGlvbiBtYWluKCkge1xuICBjb25zdCBhcmdzID0gYXdhaXQgeWFyZ3NcbiAgICAuY29tbWFuZCgnKiA8U1VJVEVOQU1FPicsICdkZWZhdWx0IGNvbW1hbmQnLCB5ID0+IHlcbiAgICAgIC5wb3NpdGlvbmFsKCdTVUlURU5BTUUnLCB7XG4gICAgICAgIGRlc2NyaWJlOiAnTmFtZSBvZiB0aGUgdGVzdCBzdWl0ZSB0byBydW4nLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVtYW5kT3B0aW9uOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgICAvLyAgU291cmNlcyBhbmQgdmVyc2lvbnNcbiAgICAgIC5vcHRpb25zKCdjbGktdmVyc2lvbicsIHtcbiAgICAgICAgZGVzY3JpYmU6ICdDTEkgdmVyc2lvbiB0byB1c2UuJyxcbiAgICAgICAgYWxpYXM6ICdjJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbnMoJ2NsaS1zb3VyY2UnLCB7XG4gICAgICAgIGRlc2NyaWJlOiAnUm9vdCBvZiBhd3MtY2RrLWNsaSByZXBvc2l0b3J5LCBvciBcImF1dG9cIi4nLFxuICAgICAgICBhbGlhczogJ3MnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIH0pXG4gICAgICAub3B0aW9ucygnZnJhbWV3b3JrLXZlcnNpb24nLCB7XG4gICAgICAgIGRlc2NyaWJlOiAnRnJhbWV3b3JrIHZlcnNpb24gdG8gdXNlJyxcbiAgICAgICAgYWxpYXM6ICdmJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbnMoJ3Rvb2xraXQtbGliLXZlcnNpb24nLCB7XG4gICAgICAgIGRlc2NyaWJlOiAnVG9vbGtpdCBsaWIgdmVyc2lvbiB0byB1c2UnLFxuICAgICAgICBhbGlhczogJ2wnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIH0pXG4gICAgICAub3B0aW9ucygnY2RrLWFzc2V0cy12ZXJzaW9uJywge1xuICAgICAgICBkZXNjcmliZTogJ2Nkay1hc3NldHMgdmVyc2lvbiB0byB1c2UuJyxcbiAgICAgICAgYWxpYXM6ICdhJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbigndXNlLXNvdXJjZScsIHtcbiAgICAgICAgZGVzY3JpcHRvbjogJ1VzZSBUeXBlU2NyaXB0IHBhY2thZ2VzIGZyb20gdGhlIGdpdmVuIHNvdXJjZSByZXBvc2l0b3J5IChvciBcImF1dG9cIiknLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICAgIGRlcHJlY2F0ZWQ6ICdVc2UgLS1jbGktc291cmNlIGluc3RlYWQnLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb24oJ3VzZS1jbGktcmVsZWFzZScsIHtcbiAgICAgICAgZGVzY3JpcHRvbjogJ1J1biB0aGUgY3VycmVudCB0ZXN0cyBhZ2FpbnN0IHRoZSBDTEkgYXQgdGhlIGdpdmVuIHZlcnNpb24nLFxuICAgICAgICBhbGlhczogJ3UnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICAgIGRlcHJlY2F0ZWQ6ICdVc2UgLS1jbGktdmVyc2lvbiBpbnN0ZWFkJyxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uKCdhdXRvLXNvdXJjZScsIHtcbiAgICAgICAgYWxpYXM6ICdhJyxcbiAgICAgICAgZGVzY3JpYmU6ICdBdXRvbWF0aWNhbGx5IGZpbmQgdGhlIHNvdXJjZSB0cmVlIGZyb20gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnknLFxuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgICAgZGVwcmVjYXRlZDogJ1VzZSAtLXVzZS1zb3VyY2U9YXV0byBpbnN0ZWFkJyxcbiAgICAgIH0pXG4gICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgICAgLy8gIFRlc3QgcnVubmluZyBmbGFnc1xuICAgICAgLm9wdGlvbigncnVuSW5CYW5kJywge1xuICAgICAgICBkZXNjcmlwdG9uOiAnUnVuIGFsbCB0ZXN0cyBpbiBvbmUgTm9kZSBwcm9jZXNzJyxcbiAgICAgICAgYWxpYXM6ICdpJyxcbiAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb24oJ3Rlc3QnLCB7XG4gICAgICAgIGRlc2NyaXB0b246ICdUZXN0IHBhdHRlcm4gdG8gc2VsZWN0aXZlbHkgcnVuIHRlc3RzJyxcbiAgICAgICAgYWxpYXM6ICd0JyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb24oJ3Rlc3QtZmlsZScsIHtcbiAgICAgICAgZGVzY3JpYmU6ICdUaGUgc3BlY2lmaWMgdGVzdCBmaWxlIHRvIHJ1bicsXG4gICAgICAgIGFsaWFzOiAnRicsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAub3B0aW9ucygnc2VlZCcsIHtcbiAgICAgICAgZGVzY3JpYmU6ICdTZXQgdGhlIHNlZWQgdmFsdWUgdG8gcmVwbGljYXRlIGEgdGVzdCBydW4nLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbnMoJ3ZlcmJvc2UnLCB7XG4gICAgICAgIGFsaWFzOiAndicsXG4gICAgICAgIGRlc2NyaWJlOiAnUnVuIGluIHZlcmJvc2UgbW9kZScsXG4gICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25zKCdwYXNzV2l0aE5vVGVzdHMnLCB7XG4gICAgICAgIGRlc2NyaWJlOiAnQWxsb3cgcGFzc2luZyBpZiB0aGUgdGVzdCBzdWl0ZSBpcyBub3QgZm91bmQgKGRlZmF1bHQgdHJ1ZSB3aGVuIElTX0NBTkFSWSBtb2RlLCBmYWxzZSBvdGhlcndpc2UpJyxcbiAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbnMoJ21heFdvcmtlcnMnLCB7XG4gICAgICAgIGFsaWFzOiAndycsXG4gICAgICAgIGRlc2NyaWJlOiAnU3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB3b3JrZXJzIHRoZSB3b3JrZXItcG9vbCB3aWxsIHNwYXduIGZvciBydW5uaW5nIHRlc3RzLiBXZSB1c2UgYSBzZW5zaWJsZSBkZWZhdWx0IGZvciBydW5uaW5nIGNsaSBpbnRlZyB0ZXN0cy4nLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbnMoJ3NoYXJkJywge1xuICAgICAgICBkZXNjcmliZTogJ1RoZSB0ZXN0IHN1aXRlIHNoYXJkIHRvIGV4ZWN1dGUgaW4gYSBmb3JtYXQgb2YgKD88c2hhcmRJbmRleD5cXGQrKS8oPzxzaGFyZENvdW50PlxcZCspLiBgc2hhcmRJbmRleGAgZGVzY3JpYmVzIHdoaWNoIHNoYXJkIHRvIHNlbGVjdCB3aGlsZSBgc2hhcmRDb3VudGAgY29udHJvbHMgdGhlIG51bWJlciBvZiBzaGFyZHMgdGhlIHN1aXRlIHNob3VsZCBiZSBzcGxpdCBpbnRvLiBgc2hhcmRJbmRleGAgYW5kIGBzaGFyZENvdW50YCBoYXZlIHRvIGJlIDEtYmFzZWQsIHBvc2l0aXZlIG51bWJlcnMsIGFuZCBgc2hhcmRJbmRleGAgaGFzIHRvIGJlIGxvd2VyIHRoYW4gb3IgZXF1YWwgdG8gYHNoYXJkQ291bnRgLicsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAub3B0aW9ucygncmV0cnknLCB7XG4gICAgICAgIGRlc2NyaWJlOiAnTnVtYmVyIG9mIHRpbWVzIHRvIHJldHJ5IGZhaWxlZCB0ZXN0cy4nLFxuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICAgIGRlZmF1bHQ6ICEhKHByb2Nlc3MuZW52LkNJIHx8IHByb2Nlc3MuZW52LkNPREVCVUlMRF9CVUlMRF9JRCkgPyAyIDogMCxcbiAgICAgICAgZGVmYXVsdERlc2NyaXB0aW9uOiAnMiBpbiBDSS9Db2RlQnVpbGQsIDAgb3RoZXJ3aXNlJyxcbiAgICAgIH0pLCAoKSA9PiB7XG4gICAgfSxcbiAgICApXG4gICAgLnN0cmljdCgpXG4gICAgLnBhcnNlKCk7XG5cbiAgY29uc3Qgc3VpdGVOYW1lID0gYXJncy5TVUlURU5BTUU7XG5cbiAgLy8gU28gbWFueSB3YXlzIHRvIHNwZWNpZnkgdGhpcywgYW5kIHdpdGggdmFyaW91cyB3YXlzIHRvIHNwZWxsIHRoZSBzYW1lIGZsYWcgKG9fTylcbiAgLy8gQWxzbywgc29tZSBvZiB0aGVtIGRlcGVuZCBvbiBlYWNoIG90aGVyIGZvciBjb252ZW5pZW5jZS5cbiAgY29uc3QgY2xpU291cmNlID0gbmV3IFVuaXF1ZU9wdGlvbjxJUnVubmVyU291cmNlPElUZXN0Q2xpU291cmNlPj4oJ0NMSSB2ZXJzaW9uJyk7XG4gIGNvbnN0IGNka0Fzc2V0c1NvdXJjZSA9IG5ldyBVbmlxdWVPcHRpb248SVJ1bm5lclNvdXJjZTxJVGVzdENsaVNvdXJjZT4+KCdjZGstYXNzZXRzIHZlcnNpb24nKTtcblxuICAvLyBTcGVjaWZpYyBDTEkgdmVyc2lvblxuICBmb3IgKGNvbnN0IGZsYWdBbGlhcyBvZiBbJ2NsaS12ZXJzaW9uJywgJ3VzZS1jbGktcmVsZWFzZSddIGFzIGNvbnN0KSB7XG4gICAgaWYgKGFyZ3NbZmxhZ0FsaWFzXSkge1xuICAgICAgY2xpU291cmNlLnNldChuZXcgUnVubmVyQ2xpTnBtU291cmNlKENMSV9QQUNLQUdFX05BTUUsIGFyZ3NbZmxhZ0FsaWFzXSksIGAtLSR7ZmxhZ0FsaWFzfWApO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNwZWNpZmljIGNkay1hc3NldHMgdmVyc2lvblxuICBpZiAoYXJnc1snY2RrLWFzc2V0cy12ZXJzaW9uJ10pIHtcbiAgICBjZGtBc3NldHNTb3VyY2Uuc2V0KG5ldyBSdW5uZXJDbGlOcG1Tb3VyY2UoQ0RLX0FTU0VUU19QQUNLQUdFX05BTUUsIGFyZ3NbJ2Nkay1hc3NldHMtdmVyc2lvbiddKSwgJy0tY2RrLWFzc2V0cy12ZXJzaW9uJyk7XG4gIH1cblxuICAvLyBTcGVjaWZpY2FsbHkgdXNlIGEgc291cmNlIGxvY2F0aW9uXG4gIGZvciAoY29uc3QgZmxhZ0FsaWFzIG9mIFsnY2xpLXNvdXJjZScsICd1c2Utc291cmNlJ10gYXMgY29uc3QpIHtcbiAgICBpZiAoYXJnc1tmbGFnQWxpYXNdKSB7XG4gICAgICBjb25zdCByb290ID0gYXJnc1tmbGFnQWxpYXNdID09PSAnYXV0bycgPyBhd2FpdCBhdXRvRmluZFJlcG9Sb290KCkgOiBhcmdzW2ZsYWdBbGlhc107XG4gICAgICBjbGlTb3VyY2Uuc2V0KG5ldyBSdW5uZXJDbGlSZXBvU291cmNlKENMSV9QQUNLQUdFX05BTUUsIHJvb3QpLCBgLS0ke2ZsYWdBbGlhc31gKTtcbiAgICAgIGNka0Fzc2V0c1NvdXJjZS5zZXQobmV3IFJ1bm5lckNsaVJlcG9Tb3VyY2UoQ0RLX0FTU0VUU19QQUNLQUdFX05BTUUsIHJvb3QpLCBgLS0ke2ZsYWdBbGlhc31gKTtcbiAgICB9XG4gIH1cblxuICAvLyBTcGVjaWZpY2FsbHkgcmVxdWVzdCB0aGF0IGEgc291cmNlIGxvY2F0aW9uIGlzIGdpdmVuLCBvciB3ZSBkaWRuJ3QgZmluZCBhIENMSSB5ZXQuXG4gIC8vIEEgQ0xJIHNvdXJjZSBpcyByZXF1aXJlZCwgc28gaWYgdGhpcyBmYWlscyB0aGF0J3MgYWxyaWdodC5cbiAgaWYgKGFyZ3NbJ2F1dG8tc291cmNlJ10gfHwgIWNsaVNvdXJjZS5pc1NldCgpKSB7XG4gICAgY2xpU291cmNlLnNldChuZXcgUnVubmVyQ2xpUmVwb1NvdXJjZShDTElfUEFDS0FHRV9OQU1FLCBhd2FpdCBhdXRvRmluZFJlcG9Sb290KCkpLCAnLS1hdXRvLXNvdXJjZScpO1xuICB9XG5cbiAgLy8gSWYgdGhlIENMSSBpcyB0YWtlbiBmcm9tIHRoZSBzb3VyY2UsIGFuZCBjZGstYXNzZXRzIGlzIG5vdCBzZXQsIHdlIGNhbiBjb3B5IHRoZSBjZGstYXNzZXRzIHNvdXJjZSBmcm9tIHRoZSBDTEkgc291cmNlLlxuICBpZiAoIWNka0Fzc2V0c1NvdXJjZS5pc1NldCgpKSB7XG4gICAgY29uc3QgY2xpU3JjID0gY2xpU291cmNlLmFzc2VydCgpO1xuICAgIGlmIChjbGlTcmMgaW5zdGFuY2VvZiBSdW5uZXJDbGlSZXBvU291cmNlKSB7XG4gICAgICBjZGtBc3NldHNTb3VyY2Uuc2V0KG5ldyBSdW5uZXJDbGlSZXBvU291cmNlKENES19BU1NFVFNfUEFDS0FHRV9OQU1FLCBjbGlTcmMucmVwb1Jvb3QpLCAnY29waWVkIGZyb20gQ0xJIHNvdXJjZScpO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIGNkay1hc3NldHMgaXMgc3RpbGwgbm90IGNvbmZpZ3VyZWQsIGZhbGwgYmFjayB0byB0aGUgbGF0ZXN0IHZlcnNpb24gdGhhdCBpcyBhdmFpbGFibGVcbiAgaWYgKCFjZGtBc3NldHNTb3VyY2UuaXNTZXQoKSkge1xuICAgIGNka0Fzc2V0c1NvdXJjZS5zZXQobmV3IFJ1bm5lckNsaU5wbVNvdXJjZShDREtfQVNTRVRTX1BBQ0tBR0VfTkFNRSwgJ2xhdGVzdCcpLCAnLS1jZGstYXNzZXRzLXZlcnNpb24gbm90IHNldCcpO1xuICB9XG5cbiAgLy8gTGlicmFyeSBzb3VyY2UgaXMgZWl0aGVyIHRoZSBnaXZlbiBvbmUsIG9yICdsYXRlc3QnIChuaWNlIGFuZCBzaW1wbGUpXG4gIGNvbnN0IGxpYnJhcnlTb3VyY2U6IElSdW5uZXJTb3VyY2U8SVRlc3RMaWJyYXJ5U291cmNlPlxuICAgID0gbmV3IFJ1bm5lckxpYnJhcnlOcG1Tb3VyY2UoJ2F3cy1jZGstbGliJywgYXJnc1snZnJhbWV3b3JrLXZlcnNpb24nXSA/IGFyZ3NbJ2ZyYW1ld29yay12ZXJzaW9uJ10gOiAnbGF0ZXN0Jyk7XG5cbiAgLy8gVG9vbGtpdCBsaWIgc291cmNlIGlzIGVpdGhlciB0aGUgZ2l2ZW4gb25lLCBvciB0aGUgb25lIHRoYXQncyBiZWluZyBicm91Z2h0IGJ5ICdwYWNrYWdlLmpzb24nIGFscmVhZHksIG9yICdsYXRlc3QnXG4gIGNvbnN0IHRvb2xraXRMaWJQYWNrYWdlID0gJ0Bhd3MtY2RrL3Rvb2xraXQtbGliJztcbiAgbGV0IHRvb2xraXRTb3VyY2U6IElSdW5uZXJTb3VyY2U8SVRlc3RMaWJyYXJ5U291cmNlPiB8IHVuZGVmaW5lZDtcbiAgaWYgKGFyZ3NbJ3Rvb2xraXQtbGliLXZlcnNpb24nXSkge1xuICAgIHRvb2xraXRTb3VyY2UgPSBuZXcgUnVubmVyTGlicmFyeUdsb2JhbEluc3RhbGxTb3VyY2UodG9vbGtpdExpYlBhY2thZ2UsIGFyZ3NbJ3Rvb2xraXQtbGliLXZlcnNpb24nXSk7XG4gIH1cbiAgaWYgKCF0b29sa2l0U291cmNlKSB7XG4gICAgdG9vbGtpdFNvdXJjZSA9IGF3YWl0IFJ1bm5lckxpYnJhcnlQcmVpbnN0YWxsZWRTb3VyY2UuaXNQcmVpbnN0YWxsZWQodG9vbGtpdExpYlBhY2thZ2UpXG4gICAgICA/IG5ldyBSdW5uZXJMaWJyYXJ5UHJlaW5zdGFsbGVkU291cmNlKHRvb2xraXRMaWJQYWNrYWdlKVxuICAgICAgOiBuZXcgUnVubmVyTGlicmFyeUdsb2JhbEluc3RhbGxTb3VyY2UodG9vbGtpdExpYlBhY2thZ2UsICdsYXRlc3QnKTtcbiAgfVxuXG4gIHByb2Nlc3MuZW52LkpFU1RfUkVUUllfVElNRVMgPSBTdHJpbmcoYXJncy5yZXRyeSk7XG5cbiAgY29uc29sZS5sb2coJy0tLS0tLT4gQ29uZmlndXJhdGlvbicpO1xuICBjb25zb2xlLmxvZyhgICAgICAgICBUZXN0IHN1aXRlOiAgICAgICAgICR7c3VpdGVOYW1lfWApO1xuICBjb25zb2xlLmxvZyhgICAgICAgICBUZXN0IHZlcnNpb246ICAgICAgICR7dGhpc1BhY2thZ2VWZXJzaW9uKCl9YCk7XG4gIGNvbnNvbGUubG9nKGAgICAgICAgIENMSSBzb3VyY2U6ICAgICAgICAgJHtjbGlTb3VyY2UuYXNzZXJ0KCkuc291cmNlRGVzY3JpcHRpb259YCk7XG4gIGNvbnNvbGUubG9nKGAgICAgICAgIExpYnJhcnkgc291cmNlOiAgICAgJHtsaWJyYXJ5U291cmNlLnNvdXJjZURlc2NyaXB0aW9ufWApO1xuICBjb25zb2xlLmxvZyhgICAgICAgICBUb29sa2l0IGxpYiBzb3VyY2U6ICR7dG9vbGtpdFNvdXJjZS5zb3VyY2VEZXNjcmlwdGlvbn1gKTtcbiAgY29uc29sZS5sb2coYCAgICAgICAgY2RrLWFzc2V0cyBzb3VyY2U6ICAke2Nka0Fzc2V0c1NvdXJjZS5hc3NlcnQoKS5zb3VyY2VEZXNjcmlwdGlvbn1gKTtcbiAgY29uc29sZS5sb2coYCAgICAgICAgUmV0cnk6ICAgICAgICAgICAgICAke2FyZ3MucmV0cnl9YCk7XG5cbiAgaWYgKGFyZ3MudmVyYm9zZSkge1xuICAgIHByb2Nlc3MuZW52LlZFUkJPU0UgPSAnMSc7XG4gIH1cblxuICAvLyBNb3RpdmF0aW9uIGJlaGluZCB0aGlzIGJlaGF2aW9yOiB3aGVuIGFkZGluZyBhIG5ldyB0ZXN0IHN1aXRlIHRvIHRoZSBwaXBlbGluZSwgYmVjYXVzZSBvZiB0aGUgd2F5IG91clxuICAvLyBQaXBlbGluZSBwYWNrYWdlIHdvcmtzLCB0aGUgc3VpdGUgd291bGQgYmUgYWRkZWQgdG8gdGhlIHBpcGVsaW5lIEFORCBhcyBhIGNhbmFyeSBpbW1lZGlhdGVseS4gVGhlIGNhbmFyeVxuICAvLyB3b3VsZCBmYWlsIHVudGlsIHRoZSBwYWNrYWdlIHdhcyBhY3R1YWxseSByZWxlYXNlZCwgc28gZm9yIGNhbmFyaWVzIHdlIG1ha2UgYW4gZXhjZXB0aW9uIHNvIHRoYXQgdGhlIGluaXRpYWxcbiAgLy8gY2FuYXJ5IHdvdWxkIHN1Y2NlZWQgZXZlbiBpZiB0aGUgc3VpdGUgd2Fzbid0IHlldCBhdmFpbGFibGUuIFRoZSBmYWN0IHRoYXQgdGhlIHN1aXRlIGlzIG5vdCBvcHRpb25hbCBpblxuICAvLyB0aGUgcGlwZWxpbmUgcHJvdGVjdHMgdXMgZnJvbSB0eXBvcy5cbiAgY29uc3QgcGFzc1dpdGhOb1Rlc3RzID0gYXJncy5wYXNzV2l0aE5vVGVzdHMgPz8gISFwcm9jZXNzLmVudi5JU19DQU5BUlk7XG5cbiAgLy8gQ29tbXVuaWNhdGUgd2l0aCB0aGUgY29uZmlnIGZpbGUgKGludGVnLmplc3QuY29uZmlnLmpzKVxuICBwcm9jZXNzLmVudi5URVNUX1NVSVRFX05BTUUgPSBzdWl0ZU5hbWU7XG5cbiAgY29uc3QgZGlzcG9zYWJsZXMgPSBuZXcgQXJyYXk8eyBkaXNwb3NlKCk6IFByb21pc2U8dm9pZD4gfT4oKTtcbiAgdHJ5IHtcbiAgICBjb25zb2xlLmxvZygnLS0tLS0tPiBSZXNvbHZlZCB2ZXJzaW9ucycpO1xuICAgIGNvbnN0IGNsaSA9IGF3YWl0IGNsaVNvdXJjZS5hc3NlcnQoKS5ydW5uZXJQcmVwYXJlKCk7XG4gICAgZGlzcG9zYWJsZXMucHVzaChjbGkpO1xuICAgIGNvbnNvbGUubG9nKGAgICAgICAgIENMSTogICAgICAgICAgICAgJHtjbGkudmVyc2lvbn1gKTtcblxuICAgIGNvbnN0IGxpYnJhcnkgPSBhd2FpdCBsaWJyYXJ5U291cmNlLnJ1bm5lclByZXBhcmUoKTtcbiAgICBkaXNwb3NhYmxlcy5wdXNoKGxpYnJhcnkpO1xuICAgIGNvbnNvbGUubG9nKGAgICAgICAgIExpYnJhcnk6ICAgICAgICAgJHtsaWJyYXJ5LnZlcnNpb259YCk7XG5cbiAgICBjb25zdCB0b29sa2l0TGliID0gYXdhaXQgdG9vbGtpdFNvdXJjZS5ydW5uZXJQcmVwYXJlKCk7XG4gICAgZGlzcG9zYWJsZXMucHVzaCh0b29sa2l0TGliKTtcbiAgICBjb25zb2xlLmxvZyhgICAgICAgICBUb29sa2l0IGxpYnJhcnk6ICR7dG9vbGtpdExpYi52ZXJzaW9ufWApO1xuXG4gICAgY29uc3QgY2RrQXNzZXRzID0gYXdhaXQgY2RrQXNzZXRzU291cmNlLmFzc2VydCgpLnJ1bm5lclByZXBhcmUoKTtcbiAgICBkaXNwb3NhYmxlcy5wdXNoKGNka0Fzc2V0cyk7XG4gICAgY29uc29sZS5sb2coYCAgICAgICAgY2RrLWFzc2V0czogICAgICAke2Nka0Fzc2V0cy52ZXJzaW9ufWApO1xuXG4gICAgc2VyaWFsaXplU291cmNlcyh7XG4gICAgICBjbGksXG4gICAgICBsaWJyYXJ5LFxuICAgICAgdG9vbGtpdExpYixcbiAgICAgIGNka0Fzc2V0cyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGplc3RDb25maWcgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAncmVzb3VyY2VzJywgJ2ludGVnLmplc3QuY29uZmlnLmpzJyk7XG5cbiAgICAvLyBGbGlwIGEgZmxhZyB0byBpbmRpY2F0ZSB3ZSdyZSB0ZXN0aW5nIENESyBpdHNlbGYuIFNvbWUgcGFydHMgb2YgQ0RLIGJlaGF2ZSBtb3JlIHRob3JvdWdobHlcbiAgICAvLyAoYnV0IHNsb3dseSkgaWYgdGhpcyBmbGFnIGlzIHNldC5cbiAgICBwcm9jZXNzLmVudi5URVNUSU5HX0NESyA9ICcxJztcblxuICAgIC8vIGplc3QtanVuaXQgcmVwb3J0ZXIgY29uZmlndXJhdGlvblxuICAgIHByb2Nlc3MuZW52LkpFU1RfU1VJVEVfTkFNRSA9ICdqZXN0IHRlc3RzJztcbiAgICBwcm9jZXNzLmVudi5KRVNUX0pVTklUX09VVFBVVF9ESVIgPSAnY292ZXJhZ2UnO1xuXG4gICAgYXdhaXQgamVzdC5ydW4oW1xuICAgICAgJy0tcmVwb3J0ZXJzPWRlZmF1bHQnLFxuICAgICAgJy0tcmVwb3J0ZXJzPWplc3QtanVuaXQnLFxuICAgICAgLy8gT3ZlcnJpZGUgSmVzdCdzIGRlZmF1bHQgNXMgdGltZW91dCB3aGljaCBpcyB0b28gbG93IGZvciBpbnRlZyB0ZXN0cy5cbiAgICAgIC8vIFRlc3RzIHVzaW5nIHdpdGhBd3MoKSB3aWxsIGZ1cnRoZXIgb3ZlcnJpZGUgdGhpcyB0byAyIGhvdXJzIHRvIGFjY291bnQgZm9yIHJlZ2lvbiBsb2NrIHdhaXQgdGltZXMuXG4gICAgICAnLS10ZXN0VGltZW91dD02MDAwMCcsXG4gICAgICAnLS1yYW5kb21pemUnLFxuICAgICAgLi4uYXJncy5zZWVkID8gW2AtLXNlZWQ9JHthcmdzLnNlZWR9YF0gOiBbXSxcbiAgICAgIC4uLmFyZ3MucnVuSW5CYW5kID8gWyctaSddIDogW10sXG4gICAgICAuLi5hcmdzLnRlc3QgPyBbJy10JywgYXJncy50ZXN0XSA6IFtdLFxuICAgICAgLi4uYXJncy52ZXJib3NlID8gWyctLXZlcmJvc2UnXSA6IFtdLFxuICAgICAgLi4uYXJncy5tYXhXb3JrZXJzID8gW2AtLW1heFdvcmtlcnM9JHthcmdzLm1heFdvcmtlcnN9YF0gOiBbXSxcbiAgICAgIC4uLnBhc3NXaXRoTm9UZXN0cyA/IFsnLS1wYXNzV2l0aE5vVGVzdHMnXSA6IFtdLFxuICAgICAgLi4uYXJnc1sndGVzdC1maWxlJ10gPyBbYXJnc1sndGVzdC1maWxlJ11dIDogW10sXG4gICAgICAuLi5hcmdzLnNoYXJkID8gW2AtLXNoYXJkPSR7YXJncy5zaGFyZH1gXSA6IFtdLFxuICAgIF0sIGplc3RDb25maWcpO1xuICB9IGZpbmFsbHkge1xuICAgIGZvciAoY29uc3QgZGlzcCBvZiBkaXNwb3NhYmxlcykge1xuICAgICAgYXdhaXQgZGlzcC5kaXNwb3NlKCk7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIFVuaXF1ZU9wdGlvbjxBPiB7XG4gIHB1YmxpYyB2YWx1ZTogQSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBzb3VyY2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHdoYXQ6IHN0cmluZykge1xuICB9XG5cbiAgcHVibGljIGlzU2V0KCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgYXNzZXJ0KCk6IEEge1xuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMud2hhdH0gbm90IGNvbmZpZ3VyZWRgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgc2V0KHg6IEEsIHNvdXJjZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLndoYXR9OiAke3NvdXJjZX0gYWxyZWFkeSBjb25maWd1cmVkIHZpYSAke3RoaXMuc291cmNlfWApO1xuICAgIH1cbiAgICB0aGlzLnZhbHVlID0geDtcbiAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0aGlzUGFja2FnZVZlcnNpb24oKTogc3RyaW5nIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgcmV0dXJuIHJlcXVpcmUoJy4uLy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb247XG59XG5cbm1haW4oKS5jYXRjaChlID0+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5lcnJvcihlKTtcbiAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG59KTtcbiJdfQ==
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLXN1aXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicnVuLXN1aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLDJDQUE2QjtBQUM3QiwyQ0FBNkI7QUFDN0IsNkNBQStCO0FBQy9CLGdDQUF5QztBQUN6QyxzRUFBdUU7QUFDdkUsd0VBQXlFO0FBQ3pFLDREQUFnRTtBQUNoRSxrR0FBbUc7QUFDbkcsOEVBQStFO0FBQy9FLGdHQUFpRztBQUVqRyw4REFBaUU7QUFFakUsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7QUFDbkMsTUFBTSx1QkFBdUIsR0FBRyxZQUFZLENBQUM7QUFFN0MsS0FBSyxVQUFVLElBQUk7SUFDakIsTUFBTSxJQUFJLEdBQUcsTUFBTSxLQUFLO1NBQ3JCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2hELFVBQVUsQ0FBQyxXQUFXLEVBQUU7UUFDdkIsUUFBUSxFQUFFLCtCQUErQjtRQUN6QyxJQUFJLEVBQUUsUUFBUTtRQUNkLFlBQVksRUFBRSxJQUFJO0tBQ25CLENBQUM7UUFDRiw2RUFBNkU7UUFDN0Usd0JBQXdCO1NBQ3ZCLE9BQU8sQ0FBQyxhQUFhLEVBQUU7UUFDdEIsUUFBUSxFQUFFLHFCQUFxQjtRQUMvQixLQUFLLEVBQUUsR0FBRztRQUNWLElBQUksRUFBRSxRQUFRO0tBQ2YsQ0FBQztTQUNELE9BQU8sQ0FBQyxZQUFZLEVBQUU7UUFDckIsUUFBUSxFQUFFLDRDQUE0QztRQUN0RCxLQUFLLEVBQUUsR0FBRztRQUNWLElBQUksRUFBRSxRQUFRO0tBQ2YsQ0FBQztTQUNELE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTtRQUM1QixRQUFRLEVBQUUsMEJBQTBCO1FBQ3BDLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLFFBQVE7S0FDZixDQUFDO1NB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LE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDdkIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgamVzdCBmcm9tICdqZXN0JztcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCB7IGVtaXRWZXJzaW9uc0VtZiB9IGZyb20gJy4uL2VtZic7XG5pbXBvcnQgeyBSdW5uZXJDbGlOcG1Tb3VyY2UgfSBmcm9tICcuLi9wYWNrYWdlLXNvdXJjZXMvY2xpLW5wbS1zb3VyY2UnO1xuaW1wb3J0IHsgUnVubmVyQ2xpUmVwb1NvdXJjZSB9IGZyb20gJy4uL3BhY2thZ2Utc291cmNlcy9jbGktcmVwby1zb3VyY2UnO1xuaW1wb3J0IHsgYXV0b0ZpbmRSZXBvUm9vdCB9IGZyb20gJy4uL3BhY2thZ2Utc291cmNlcy9maW5kLXJvb3QnO1xuaW1wb3J0IHsgUnVubmVyTGlicmFyeUdsb2JhbEluc3RhbGxTb3VyY2UgfSBmcm9tICcuLi9wYWNrYWdlLXNvdXJjZXMvbGlicmFyeS1nbG9iYWxpbnN0YWxsLXNvdXJjZSc7XG5pbXBvcnQgeyBSdW5uZXJMaWJyYXJ5TnBtU291cmNlIH0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2VzL2xpYnJhcnktbnBtLXNvdXJjZSc7XG5pbXBvcnQgeyBSdW5uZXJMaWJyYXJ5UHJlaW5zdGFsbGVkU291cmNlIH0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2VzL2xpYnJhcnktcHJlaW5zdGFsbGVkLXNvdXJjZSc7XG5pbXBvcnQgdHlwZSB7IElSdW5uZXJTb3VyY2UsIElUZXN0Q2xpU291cmNlLCBJVGVzdExpYnJhcnlTb3VyY2UgfSBmcm9tICcuLi9wYWNrYWdlLXNvdXJjZXMvc291cmNlJztcbmltcG9ydCB7IHNlcmlhbGl6ZVNvdXJjZXMgfSBmcm9tICcuLi9wYWNrYWdlLXNvdXJjZXMvc3VicHJvY2Vzcyc7XG5cbmNvbnN0IENMSV9QQUNLQUdFX05BTUUgPSAnYXdzLWNkayc7XG5jb25zdCBDREtfQVNTRVRTX1BBQ0tBR0VfTkFNRSA9ICdjZGstYXNzZXRzJztcblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgYXJncyA9IGF3YWl0IHlhcmdzXG4gICAgLmNvbW1hbmQoJyogPFNVSVRFTkFNRT4nLCAnZGVmYXVsdCBjb21tYW5kJywgeSA9PiB5XG4gICAgICAucG9zaXRpb25hbCgnU1VJVEVOQU1FJywge1xuICAgICAgICBkZXNjcmliZTogJ05hbWUgb2YgdGhlIHRlc3Qgc3VpdGUgdG8gcnVuJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlbWFuZE9wdGlvbjogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgICAgLy8gIFNvdXJjZXMgYW5kIHZlcnNpb25zXG4gICAgICAub3B0aW9ucygnY2xpLXZlcnNpb24nLCB7XG4gICAgICAgIGRlc2NyaWJlOiAnQ0xJIHZlcnNpb24gdG8gdXNlLicsXG4gICAgICAgIGFsaWFzOiAnYycsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25zKCdjbGktc291cmNlJywge1xuICAgICAgICBkZXNjcmliZTogJ1Jvb3Qgb2YgYXdzLWNkay1jbGkgcmVwb3NpdG9yeSwgb3IgXCJhdXRvXCIuJyxcbiAgICAgICAgYWxpYXM6ICdzJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbnMoJ2ZyYW1ld29yay12ZXJzaW9uJywge1xuICAgICAgICBkZXNjcmliZTogJ0ZyYW1ld29yayB2ZXJzaW9uIHRvIHVzZScsXG4gICAgICAgIGFsaWFzOiAnZicsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25zKCd0b29sa2l0LWxpYi12ZXJzaW9uJywge1xuICAgICAgICBkZXNjcmliZTogJ1Rvb2xraXQgbGliIHZlcnNpb24gdG8gdXNlJyxcbiAgICAgICAgYWxpYXM6ICdsJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbnMoJ2Nkay1hc3NldHMtdmVyc2lvbicsIHtcbiAgICAgICAgZGVzY3JpYmU6ICdjZGstYXNzZXRzIHZlcnNpb24gdG8gdXNlLicsXG4gICAgICAgIGFsaWFzOiAnYScsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb24oJ3VzZS1zb3VyY2UnLCB7XG4gICAgICAgIGRlc2NyaXB0b246ICdVc2UgVHlwZVNjcmlwdCBwYWNrYWdlcyBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgcmVwb3NpdG9yeSAob3IgXCJhdXRvXCIpJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgICBkZXByZWNhdGVkOiAnVXNlIC0tY2xpLXNvdXJjZSBpbnN0ZWFkJyxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uKCd1c2UtY2xpLXJlbGVhc2UnLCB7XG4gICAgICAgIGRlc2NyaXB0b246ICdSdW4gdGhlIGN1cnJlbnQgdGVzdHMgYWdhaW5zdCB0aGUgQ0xJIGF0IHRoZSBnaXZlbiB2ZXJzaW9uJyxcbiAgICAgICAgYWxpYXM6ICd1JyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgICBkZXByZWNhdGVkOiAnVXNlIC0tY2xpLXZlcnNpb24gaW5zdGVhZCcsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbignYXV0by1zb3VyY2UnLCB7XG4gICAgICAgIGFsaWFzOiAnYScsXG4gICAgICAgIGRlc2NyaWJlOiAnQXV0b21hdGljYWxseSBmaW5kIHRoZSBzb3VyY2UgdHJlZSBmcm9tIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5JyxcbiAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIGRlcHJlY2F0ZWQ6ICdVc2UgLS11c2Utc291cmNlPWF1dG8gaW5zdGVhZCcsXG4gICAgICB9KVxuICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAgIC8vICBUZXN0IHJ1bm5pbmcgZmxhZ3NcbiAgICAgIC5vcHRpb24oJ3J1bkluQmFuZCcsIHtcbiAgICAgICAgZGVzY3JpcHRvbjogJ1J1biBhbGwgdGVzdHMgaW4gb25lIE5vZGUgcHJvY2VzcycsXG4gICAgICAgIGFsaWFzOiAnaScsXG4gICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uKCd0ZXN0Jywge1xuICAgICAgICBkZXNjcmlwdG9uOiAnVGVzdCBwYXR0ZXJuIHRvIHNlbGVjdGl2ZWx5IHJ1biB0ZXN0cycsXG4gICAgICAgIGFsaWFzOiAndCcsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uKCd0ZXN0LWZpbGUnLCB7XG4gICAgICAgIGRlc2NyaWJlOiAnVGhlIHNwZWNpZmljIHRlc3QgZmlsZSB0byBydW4nLFxuICAgICAgICBhbGlhczogJ0YnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbnMoJ3NlZWQnLCB7XG4gICAgICAgIGRlc2NyaWJlOiAnU2V0IHRoZSBzZWVkIHZhbHVlIHRvIHJlcGxpY2F0ZSBhIHRlc3QgcnVuJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25zKCd2ZXJib3NlJywge1xuICAgICAgICBhbGlhczogJ3YnLFxuICAgICAgICBkZXNjcmliZTogJ1J1biBpbiB2ZXJib3NlIG1vZGUnLFxuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgICAub3B0aW9ucygncGFzc1dpdGhOb1Rlc3RzJywge1xuICAgICAgICBkZXNjcmliZTogJ0FsbG93IHBhc3NpbmcgaWYgdGhlIHRlc3Qgc3VpdGUgaXMgbm90IGZvdW5kIChkZWZhdWx0IHRydWUgd2hlbiBJU19DQU5BUlkgbW9kZSwgZmFsc2Ugb3RoZXJ3aXNlKScsXG4gICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25zKCdtYXhXb3JrZXJzJywge1xuICAgICAgICBhbGlhczogJ3cnLFxuICAgICAgICBkZXNjcmliZTogJ1NwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygd29ya2VycyB0aGUgd29ya2VyLXBvb2wgd2lsbCBzcGF3biBmb3IgcnVubmluZyB0ZXN0cy4gV2UgdXNlIGEgc2Vuc2libGUgZGVmYXVsdCBmb3IgcnVubmluZyBjbGkgaW50ZWcgdGVzdHMuJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIC8vIG1ha2VzIGl0IGVhc2llciB0byBjb250cm9sIGZyb20gdGhlIG91dHNpZGUgYW5kIG1pdGlnYXRlXG4gICAgICAgIC8vIHJlc291cmNlIHV0aWxpemF0aW9uIGlzc3VlcyBvbiBjb2RlYnVpbGQuXG4gICAgICAgIGRlZmF1bHQ6IHByb2Nlc3MuZW52LkpFU1RfTUFYX1dPUktFUlMsXG4gICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25zKCdzaGFyZCcsIHtcbiAgICAgICAgZGVzY3JpYmU6ICdUaGUgdGVzdCBzdWl0ZSBzaGFyZCB0byBleGVjdXRlIGluIGEgZm9ybWF0IG9mICg/PHNoYXJkSW5kZXg+XFxkKykvKD88c2hhcmRDb3VudD5cXGQrKS4gYHNoYXJkSW5kZXhgIGRlc2NyaWJlcyB3aGljaCBzaGFyZCB0byBzZWxlY3Qgd2hpbGUgYHNoYXJkQ291bnRgIGNvbnRyb2xzIHRoZSBudW1iZXIgb2Ygc2hhcmRzIHRoZSBzdWl0ZSBzaG91bGQgYmUgc3BsaXQgaW50by4gYHNoYXJkSW5kZXhgIGFuZCBgc2hhcmRDb3VudGAgaGF2ZSB0byBiZSAxLWJhc2VkLCBwb3NpdGl2ZSBudW1iZXJzLCBhbmQgYHNoYXJkSW5kZXhgIGhhcyB0byBiZSBsb3dlciB0aGFuIG9yIGVxdWFsIHRvIGBzaGFyZENvdW50YC4nLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbnMoJ3JldHJ5Jywge1xuICAgICAgICBkZXNjcmliZTogJ051bWJlciBvZiB0aW1lcyB0byByZXRyeSBmYWlsZWQgdGVzdHMuJyxcbiAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgICBkZWZhdWx0OiAhIShwcm9jZXNzLmVudi5DSSB8fCBwcm9jZXNzLmVudi5DT0RFQlVJTERfQlVJTERfSUQpID8gMiA6IDAsXG4gICAgICAgIGRlZmF1bHREZXNjcmlwdGlvbjogJzIgaW4gQ0kvQ29kZUJ1aWxkLCAwIG90aGVyd2lzZScsXG4gICAgICB9KSwgKCkgPT4ge1xuICAgIH0sXG4gICAgKVxuICAgIC5zdHJpY3QoKVxuICAgIC5wYXJzZSgpO1xuXG4gIGNvbnN0IHN1aXRlTmFtZSA9IGFyZ3MuU1VJVEVOQU1FO1xuXG4gIC8vIFNvIG1hbnkgd2F5cyB0byBzcGVjaWZ5IHRoaXMsIGFuZCB3aXRoIHZhcmlvdXMgd2F5cyB0byBzcGVsbCB0aGUgc2FtZSBmbGFnIChvX08pXG4gIC8vIEFsc28sIHNvbWUgb2YgdGhlbSBkZXBlbmQgb24gZWFjaCBvdGhlciBmb3IgY29udmVuaWVuY2UuXG4gIGNvbnN0IGNsaVNvdXJjZSA9IG5ldyBVbmlxdWVPcHRpb248SVJ1bm5lclNvdXJjZTxJVGVzdENsaVNvdXJjZT4+KCdDTEkgdmVyc2lvbicpO1xuICBjb25zdCBjZGtBc3NldHNTb3VyY2UgPSBuZXcgVW5pcXVlT3B0aW9uPElSdW5uZXJTb3VyY2U8SVRlc3RDbGlTb3VyY2U+PignY2RrLWFzc2V0cyB2ZXJzaW9uJyk7XG5cbiAgLy8gU3BlY2lmaWMgQ0xJIHZlcnNpb25cbiAgZm9yIChjb25zdCBmbGFnQWxpYXMgb2YgWydjbGktdmVyc2lvbicsICd1c2UtY2xpLXJlbGVhc2UnXSBhcyBjb25zdCkge1xuICAgIGlmIChhcmdzW2ZsYWdBbGlhc10pIHtcbiAgICAgIGNsaVNvdXJjZS5zZXQobmV3IFJ1bm5lckNsaU5wbVNvdXJjZShDTElfUEFDS0FHRV9OQU1FLCBhcmdzW2ZsYWdBbGlhc10pLCBgLS0ke2ZsYWdBbGlhc31gKTtcbiAgICB9XG4gIH1cblxuICAvLyBTcGVjaWZpYyBjZGstYXNzZXRzIHZlcnNpb25cbiAgaWYgKGFyZ3NbJ2Nkay1hc3NldHMtdmVyc2lvbiddKSB7XG4gICAgY2RrQXNzZXRzU291cmNlLnNldChuZXcgUnVubmVyQ2xpTnBtU291cmNlKENES19BU1NFVFNfUEFDS0FHRV9OQU1FLCBhcmdzWydjZGstYXNzZXRzLXZlcnNpb24nXSksICctLWNkay1hc3NldHMtdmVyc2lvbicpO1xuICB9XG5cbiAgLy8gU3BlY2lmaWNhbGx5IHVzZSBhIHNvdXJjZSBsb2NhdGlvblxuICBmb3IgKGNvbnN0IGZsYWdBbGlhcyBvZiBbJ2NsaS1zb3VyY2UnLCAndXNlLXNvdXJjZSddIGFzIGNvbnN0KSB7XG4gICAgaWYgKGFyZ3NbZmxhZ0FsaWFzXSkge1xuICAgICAgY29uc3Qgcm9vdCA9IGFyZ3NbZmxhZ0FsaWFzXSA9PT0gJ2F1dG8nID8gYXdhaXQgYXV0b0ZpbmRSZXBvUm9vdCgpIDogYXJnc1tmbGFnQWxpYXNdO1xuICAgICAgY2xpU291cmNlLnNldChuZXcgUnVubmVyQ2xpUmVwb1NvdXJjZShDTElfUEFDS0FHRV9OQU1FLCByb290KSwgYC0tJHtmbGFnQWxpYXN9YCk7XG4gICAgICBjZGtBc3NldHNTb3VyY2Uuc2V0KG5ldyBSdW5uZXJDbGlSZXBvU291cmNlKENES19BU1NFVFNfUEFDS0FHRV9OQU1FLCByb290KSwgYC0tJHtmbGFnQWxpYXN9YCk7XG4gICAgfVxuICB9XG5cbiAgLy8gU3BlY2lmaWNhbGx5IHJlcXVlc3QgdGhhdCBhIHNvdXJjZSBsb2NhdGlvbiBpcyBnaXZlbiwgb3Igd2UgZGlkbid0IGZpbmQgYSBDTEkgeWV0LlxuICAvLyBBIENMSSBzb3VyY2UgaXMgcmVxdWlyZWQsIHNvIGlmIHRoaXMgZmFpbHMgdGhhdCdzIGFscmlnaHQuXG4gIGlmIChhcmdzWydhdXRvLXNvdXJjZSddIHx8ICFjbGlTb3VyY2UuaXNTZXQoKSkge1xuICAgIGNsaVNvdXJjZS5zZXQobmV3IFJ1bm5lckNsaVJlcG9Tb3VyY2UoQ0xJX1BBQ0tBR0VfTkFNRSwgYXdhaXQgYXV0b0ZpbmRSZXBvUm9vdCgpKSwgJy0tYXV0by1zb3VyY2UnKTtcbiAgfVxuXG4gIC8vIElmIHRoZSBDTEkgaXMgdGFrZW4gZnJvbSB0aGUgc291cmNlLCBhbmQgY2RrLWFzc2V0cyBpcyBub3Qgc2V0LCB3ZSBjYW4gY29weSB0aGUgY2RrLWFzc2V0cyBzb3VyY2UgZnJvbSB0aGUgQ0xJIHNvdXJjZS5cbiAgaWYgKCFjZGtBc3NldHNTb3VyY2UuaXNTZXQoKSkge1xuICAgIGNvbnN0IGNsaVNyYyA9IGNsaVNvdXJjZS5hc3NlcnQoKTtcbiAgICBpZiAoY2xpU3JjIGluc3RhbmNlb2YgUnVubmVyQ2xpUmVwb1NvdXJjZSkge1xuICAgICAgY2RrQXNzZXRzU291cmNlLnNldChuZXcgUnVubmVyQ2xpUmVwb1NvdXJjZShDREtfQVNTRVRTX1BBQ0tBR0VfTkFNRSwgY2xpU3JjLnJlcG9Sb290KSwgJ2NvcGllZCBmcm9tIENMSSBzb3VyY2UnKTtcbiAgICB9XG4gIH1cblxuICAvLyBJZiBjZGstYXNzZXRzIGlzIHN0aWxsIG5vdCBjb25maWd1cmVkLCBmYWxsIGJhY2sgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uIHRoYXQgaXMgYXZhaWxhYmxlXG4gIGlmICghY2RrQXNzZXRzU291cmNlLmlzU2V0KCkpIHtcbiAgICBjZGtBc3NldHNTb3VyY2Uuc2V0KG5ldyBSdW5uZXJDbGlOcG1Tb3VyY2UoQ0RLX0FTU0VUU19QQUNLQUdFX05BTUUsICdsYXRlc3QnKSwgJy0tY2RrLWFzc2V0cy12ZXJzaW9uIG5vdCBzZXQnKTtcbiAgfVxuXG4gIC8vIExpYnJhcnkgc291cmNlIGlzIGVpdGhlciB0aGUgZ2l2ZW4gb25lLCBvciAnbGF0ZXN0JyAobmljZSBhbmQgc2ltcGxlKVxuICBjb25zdCBsaWJyYXJ5U291cmNlOiBJUnVubmVyU291cmNlPElUZXN0TGlicmFyeVNvdXJjZT5cbiAgICA9IG5ldyBSdW5uZXJMaWJyYXJ5TnBtU291cmNlKCdhd3MtY2RrLWxpYicsIGFyZ3NbJ2ZyYW1ld29yay12ZXJzaW9uJ10gPyBhcmdzWydmcmFtZXdvcmstdmVyc2lvbiddIDogJ2xhdGVzdCcpO1xuXG4gIC8vIFRvb2xraXQgbGliIHNvdXJjZSBpcyBlaXRoZXIgdGhlIGdpdmVuIG9uZSwgb3IgdGhlIG9uZSB0aGF0J3MgYmVpbmcgYnJvdWdodCBieSAncGFja2FnZS5qc29uJyBhbHJlYWR5LCBvciAnbGF0ZXN0J1xuICBjb25zdCB0b29sa2l0TGliUGFja2FnZSA9ICdAYXdzLWNkay90b29sa2l0LWxpYic7XG4gIGxldCB0b29sa2l0U291cmNlOiBJUnVubmVyU291cmNlPElUZXN0TGlicmFyeVNvdXJjZT4gfCB1bmRlZmluZWQ7XG4gIGlmIChhcmdzWyd0b29sa2l0LWxpYi12ZXJzaW9uJ10pIHtcbiAgICB0b29sa2l0U291cmNlID0gbmV3IFJ1bm5lckxpYnJhcnlHbG9iYWxJbnN0YWxsU291cmNlKHRvb2xraXRMaWJQYWNrYWdlLCBhcmdzWyd0b29sa2l0LWxpYi12ZXJzaW9uJ10pO1xuICB9XG4gIGlmICghdG9vbGtpdFNvdXJjZSkge1xuICAgIHRvb2xraXRTb3VyY2UgPSBhd2FpdCBSdW5uZXJMaWJyYXJ5UHJlaW5zdGFsbGVkU291cmNlLmlzUHJlaW5zdGFsbGVkKHRvb2xraXRMaWJQYWNrYWdlKVxuICAgICAgPyBuZXcgUnVubmVyTGlicmFyeVByZWluc3RhbGxlZFNvdXJjZSh0b29sa2l0TGliUGFja2FnZSlcbiAgICAgIDogbmV3IFJ1bm5lckxpYnJhcnlHbG9iYWxJbnN0YWxsU291cmNlKHRvb2xraXRMaWJQYWNrYWdlLCAnbGF0ZXN0Jyk7XG4gIH1cblxuICBwcm9jZXNzLmVudi5KRVNUX1JFVFJZX1RJTUVTID0gU3RyaW5nKGFyZ3MucmV0cnkpO1xuXG4gIGNvbnNvbGUubG9nKCctLS0tLS0+IENvbmZpZ3VyYXRpb24nKTtcbiAgY29uc29sZS5sb2coYCAgICAgICAgVGVzdCBzdWl0ZTogICAgICAgICAke3N1aXRlTmFtZX1gKTtcbiAgY29uc29sZS5sb2coYCAgICAgICAgVGVzdCB2ZXJzaW9uOiAgICAgICAke3RoaXNQYWNrYWdlVmVyc2lvbigpfWApO1xuICBjb25zb2xlLmxvZyhgICAgICAgICBDTEkgc291cmNlOiAgICAgICAgICR7Y2xpU291cmNlLmFzc2VydCgpLnNvdXJjZURlc2NyaXB0aW9ufWApO1xuICBjb25zb2xlLmxvZyhgICAgICAgICBMaWJyYXJ5IHNvdXJjZTogICAgICR7bGlicmFyeVNvdXJjZS5zb3VyY2VEZXNjcmlwdGlvbn1gKTtcbiAgY29uc29sZS5sb2coYCAgICAgICAgVG9vbGtpdCBsaWIgc291cmNlOiAke3Rvb2xraXRTb3VyY2Uuc291cmNlRGVzY3JpcHRpb259YCk7XG4gIGNvbnNvbGUubG9nKGAgICAgICAgIGNkay1hc3NldHMgc291cmNlOiAgJHtjZGtBc3NldHNTb3VyY2UuYXNzZXJ0KCkuc291cmNlRGVzY3JpcHRpb259YCk7XG4gIGNvbnNvbGUubG9nKGAgICAgICAgIFJldHJ5OiAgICAgICAgICAgICAgJHthcmdzLnJldHJ5fWApO1xuXG4gIGlmIChhcmdzLnZlcmJvc2UpIHtcbiAgICBwcm9jZXNzLmVudi5WRVJCT1NFID0gJzEnO1xuICB9XG5cbiAgLy8gTW90aXZhdGlvbiBiZWhpbmQgdGhpcyBiZWhhdmlvcjogd2hlbiBhZGRpbmcgYSBuZXcgdGVzdCBzdWl0ZSB0byB0aGUgcGlwZWxpbmUsIGJlY2F1c2Ugb2YgdGhlIHdheSBvdXJcbiAgLy8gUGlwZWxpbmUgcGFja2FnZSB3b3JrcywgdGhlIHN1aXRlIHdvdWxkIGJlIGFkZGVkIHRvIHRoZSBwaXBlbGluZSBBTkQgYXMgYSBjYW5hcnkgaW1tZWRpYXRlbHkuIFRoZSBjYW5hcnlcbiAgLy8gd291bGQgZmFpbCB1bnRpbCB0aGUgcGFja2FnZSB3YXMgYWN0dWFsbHkgcmVsZWFzZWQsIHNvIGZvciBjYW5hcmllcyB3ZSBtYWtlIGFuIGV4Y2VwdGlvbiBzbyB0aGF0IHRoZSBpbml0aWFsXG4gIC8vIGNhbmFyeSB3b3VsZCBzdWNjZWVkIGV2ZW4gaWYgdGhlIHN1aXRlIHdhc24ndCB5ZXQgYXZhaWxhYmxlLiBUaGUgZmFjdCB0aGF0IHRoZSBzdWl0ZSBpcyBub3Qgb3B0aW9uYWwgaW5cbiAgLy8gdGhlIHBpcGVsaW5lIHByb3RlY3RzIHVzIGZyb20gdHlwb3MuXG4gIGNvbnN0IHBhc3NXaXRoTm9UZXN0cyA9IGFyZ3MucGFzc1dpdGhOb1Rlc3RzID8/ICEhcHJvY2Vzcy5lbnYuSVNfQ0FOQVJZO1xuXG4gIC8vIENvbW11bmljYXRlIHdpdGggdGhlIGNvbmZpZyBmaWxlIChpbnRlZy5qZXN0LmNvbmZpZy5qcylcbiAgcHJvY2Vzcy5lbnYuVEVTVF9TVUlURV9OQU1FID0gc3VpdGVOYW1lO1xuXG4gIGNvbnN0IGRpc3Bvc2FibGVzID0gbmV3IEFycmF5PHsgZGlzcG9zZSgpOiBQcm9taXNlPHZvaWQ+IH0+KCk7XG4gIHRyeSB7XG4gICAgY29uc29sZS5sb2coJy0tLS0tLT4gUmVzb2x2ZWQgdmVyc2lvbnMnKTtcbiAgICBjb25zdCBjbGkgPSBhd2FpdCBjbGlTb3VyY2UuYXNzZXJ0KCkucnVubmVyUHJlcGFyZSgpO1xuICAgIGRpc3Bvc2FibGVzLnB1c2goY2xpKTtcbiAgICBjb25zb2xlLmxvZyhgICAgICAgICBDTEk6ICAgICAgICAgICAgICR7Y2xpLnZlcnNpb259YCk7XG5cbiAgICBjb25zdCBsaWJyYXJ5ID0gYXdhaXQgbGlicmFyeVNvdXJjZS5ydW5uZXJQcmVwYXJlKCk7XG4gICAgZGlzcG9zYWJsZXMucHVzaChsaWJyYXJ5KTtcbiAgICBjb25zb2xlLmxvZyhgICAgICAgICBMaWJyYXJ5OiAgICAgICAgICR7bGlicmFyeS52ZXJzaW9ufWApO1xuXG4gICAgY29uc3QgdG9vbGtpdExpYiA9IGF3YWl0IHRvb2xraXRTb3VyY2UucnVubmVyUHJlcGFyZSgpO1xuICAgIGRpc3Bvc2FibGVzLnB1c2godG9vbGtpdExpYik7XG4gICAgY29uc29sZS5sb2coYCAgICAgICAgVG9vbGtpdCBsaWJyYXJ5OiAke3Rvb2xraXRMaWIudmVyc2lvbn1gKTtcblxuICAgIGNvbnN0IGNka0Fzc2V0cyA9IGF3YWl0IGNka0Fzc2V0c1NvdXJjZS5hc3NlcnQoKS5ydW5uZXJQcmVwYXJlKCk7XG4gICAgZGlzcG9zYWJsZXMucHVzaChjZGtBc3NldHMpO1xuICAgIGNvbnNvbGUubG9nKGAgICAgICAgIGNkay1hc3NldHM6ICAgICAgJHtjZGtBc3NldHMudmVyc2lvbn1gKTtcblxuICAgIHNlcmlhbGl6ZVNvdXJjZXMoe1xuICAgICAgY2xpLFxuICAgICAgbGlicmFyeSxcbiAgICAgIHRvb2xraXRMaWIsXG4gICAgICBjZGtBc3NldHMsXG4gICAgfSk7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuQ09ERUJVSUxEX0JVSUxEX0lEKSB7XG4gICAgICAvLyBFbWl0dGluZyBoZXJlIGlzIHNsaWlpaWdodGx5IGdvaW5nIHRvIG1lc3MgdXAgdGhlIG91dHB1dCBvZiB0aGUgdGVzdCBydW4sIGJ1dCBzaW5jZSB0aGlzIGlzXG4gICAgICAvLyBDb2RlQnVpbGQgbm90IHRvbyBtYW55IHBlb3BsZSBhcmUgZ29pbmcgdG8gbG9vayBhdCBpdCBwcm9iYWJseS4gVWx0aW1hdGVseSB3ZSBvbmx5IHdhbnQgdGhlc2VcbiAgICAgIC8vIG1ldHJpY3MgaW50byBDbG91ZFdhdGNoLlxuICAgICAgZW1pdFZlcnNpb25zRW1mKHtcbiAgICAgICAgY2xpOiBjbGkudmVyc2lvbixcbiAgICAgICAgbGlicmFyeTogbGlicmFyeS52ZXJzaW9uLFxuICAgICAgICB0b29sa2l0TGliOiB0b29sa2l0TGliLnZlcnNpb24sXG4gICAgICAgIGNka0Fzc2V0czogY2RrQXNzZXRzLnZlcnNpb24sXG4gICAgICAgIHRlc3RzOiB0aGlzUGFja2FnZVZlcnNpb24oKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGplc3RDb25maWcgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAncmVzb3VyY2VzJywgJ2ludGVnLmplc3QuY29uZmlnLmpzJyk7XG5cbiAgICAvLyBGbGlwIGEgZmxhZyB0byBpbmRpY2F0ZSB3ZSdyZSB0ZXN0aW5nIENESyBpdHNlbGYuIFNvbWUgcGFydHMgb2YgQ0RLIGJlaGF2ZSBtb3JlIHRob3JvdWdobHlcbiAgICAvLyAoYnV0IHNsb3dseSkgaWYgdGhpcyBmbGFnIGlzIHNldC5cbiAgICBwcm9jZXNzLmVudi5URVNUSU5HX0NESyA9ICcxJztcblxuICAgIC8vIGplc3QtanVuaXQgcmVwb3J0ZXIgY29uZmlndXJhdGlvblxuICAgIHByb2Nlc3MuZW52LkpFU1RfU1VJVEVfTkFNRSA9ICdqZXN0IHRlc3RzJztcbiAgICBwcm9jZXNzLmVudi5KRVNUX0pVTklUX09VVFBVVF9ESVIgPSAnY292ZXJhZ2UnO1xuXG4gICAgYXdhaXQgamVzdC5ydW4oW1xuICAgICAgJy0tcmVwb3J0ZXJzPWRlZmF1bHQnLFxuICAgICAgJy0tcmVwb3J0ZXJzPWplc3QtanVuaXQnLFxuICAgICAgLy8gT3ZlcnJpZGUgSmVzdCdzIGRlZmF1bHQgNXMgdGltZW91dCB3aGljaCBpcyB0b28gbG93IGZvciBpbnRlZyB0ZXN0cy5cbiAgICAgIC8vIFRlc3RzIHVzaW5nIHdpdGhBd3MoKSB3aWxsIGZ1cnRoZXIgb3ZlcnJpZGUgdGhpcyB0byAyIGhvdXJzIHRvIGFjY291bnQgZm9yIHJlZ2lvbiBsb2NrIHdhaXQgdGltZXMuXG4gICAgICAnLS10ZXN0VGltZW91dD02MDAwMCcsXG4gICAgICAnLS1yYW5kb21pemUnLFxuICAgICAgLi4uYXJncy5zZWVkID8gW2AtLXNlZWQ9JHthcmdzLnNlZWR9YF0gOiBbXSxcbiAgICAgIC4uLmFyZ3MucnVuSW5CYW5kID8gWyctaSddIDogW10sXG4gICAgICAuLi5hcmdzLnRlc3QgPyBbJy10JywgYXJncy50ZXN0XSA6IFtdLFxuICAgICAgLi4uYXJncy52ZXJib3NlID8gWyctLXZlcmJvc2UnXSA6IFtdLFxuICAgICAgLi4uYXJncy5tYXhXb3JrZXJzID8gW2AtLW1heFdvcmtlcnM9JHthcmdzLm1heFdvcmtlcnN9YF0gOiBbXSxcbiAgICAgIC4uLnBhc3NXaXRoTm9UZXN0cyA/IFsnLS1wYXNzV2l0aE5vVGVzdHMnXSA6IFtdLFxuICAgICAgLi4uYXJnc1sndGVzdC1maWxlJ10gPyBbYXJnc1sndGVzdC1maWxlJ11dIDogW10sXG4gICAgICAuLi5hcmdzLnNoYXJkID8gW2AtLXNoYXJkPSR7YXJncy5zaGFyZH1gXSA6IFtdLFxuICAgIF0sIGplc3RDb25maWcpO1xuICB9IGZpbmFsbHkge1xuICAgIGZvciAoY29uc3QgZGlzcCBvZiBkaXNwb3NhYmxlcykge1xuICAgICAgYXdhaXQgZGlzcC5kaXNwb3NlKCk7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIFVuaXF1ZU9wdGlvbjxBPiB7XG4gIHB1YmxpYyB2YWx1ZTogQSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBzb3VyY2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHdoYXQ6IHN0cmluZykge1xuICB9XG5cbiAgcHVibGljIGlzU2V0KCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgYXNzZXJ0KCk6IEEge1xuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMud2hhdH0gbm90IGNvbmZpZ3VyZWRgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgc2V0KHg6IEEsIHNvdXJjZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLndoYXR9OiAke3NvdXJjZX0gYWxyZWFkeSBjb25maWd1cmVkIHZpYSAke3RoaXMuc291cmNlfWApO1xuICAgIH1cbiAgICB0aGlzLnZhbHVlID0geDtcbiAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0aGlzUGFja2FnZVZlcnNpb24oKTogc3RyaW5nIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgcmV0dXJuIHJlcXVpcmUoJy4uLy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb247XG59XG5cbm1haW4oKS5jYXRjaChlID0+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5lcnJvcihlKTtcbiAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG59KTtcblxuIl19
|
|
@@ -1,10 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
/* eslint-disable no-console */
|
|
4
|
-
const path = require("path");
|
|
37
|
+
const path = __importStar(require("path"));
|
|
5
38
|
const fast_glob_1 = require("fast-glob");
|
|
6
|
-
const fs = require("fs-extra");
|
|
7
|
-
const yargs = require("yargs");
|
|
39
|
+
const fs = __importStar(require("fs-extra"));
|
|
40
|
+
const yargs = __importStar(require("yargs"));
|
|
8
41
|
const __1 = require("..");
|
|
9
42
|
const codeartifact_1 = require("../staging/codeartifact");
|
|
10
43
|
const maven_1 = require("../staging/maven");
|
|
@@ -214,4 +247,4 @@ main().catch(e => {
|
|
|
214
247
|
console.error(e);
|
|
215
248
|
process.exitCode = 1;
|
|
216
249
|
});
|
|
217
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UtZGlzdHJpYnV0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhZ2UtZGlzdHJpYnV0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUM3Qix5Q0FBcUM7QUFDckMsK0JBQStCO0FBQy9CLCtCQUErQjtBQUMvQiwwQkFBMkI7QUFDM0IsMERBQXlEO0FBQ3pELDRDQUFrRTtBQUNsRSx3Q0FBNkQ7QUFDN0QsNENBQW9FO0FBQ3BFLDBDQUFrRTtBQUNsRSxvREFBZ0Q7QUFFaEQsS0FBSyxVQUFVLElBQUk7SUFDakIsTUFBTSxLQUFLO1NBQ1IsS0FBSyxDQUFDLGNBQWMsQ0FBQztTQUNyQixNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsV0FBVyxFQUFFLDBCQUEwQjtRQUN2QyxJQUFJLEVBQUUsU0FBUztRQUNmLFdBQVcsRUFBRSxLQUFLO0tBQ25CLENBQUM7U0FDRCxNQUFNLENBQUMsUUFBUSxFQUFFO1FBQ2hCLFdBQVcsRUFBRSw2QkFBNkI7UUFDMUMsSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXLEVBQUUsS0FBSztLQUNuQixDQUFDO1NBQ0QsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUNkLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXLEVBQUUsS0FBSztLQUNuQixDQUFDO1NBQ0QsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUNoQixXQUFXLEVBQUUsNkJBQTZCO1FBQzFDLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLEtBQUs7S0FDbkIsQ0FBQztTQUNELE1BQU0sQ0FBQyxZQUFZLEVBQUU7UUFDcEIsV0FBVyxFQUFFLGdJQUFnSTtRQUM3SSxJQUFJLEVBQUUsU0FBUztRQUNmLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE9BQU8sRUFBRSxLQUFLO0tBQ2YsQ0FBQztTQUNELE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSwyQkFBMkIsRUFBRSxHQUFH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QyxDQUFDO0lBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEIsQ0FBQztBQUVELElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNmLHNDQUFzQztJQUN0QyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGdsb2JTeW5jIH0gZnJvbSAnZmFzdC1nbG9iJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCB7IHNoZWxsIH0gZnJvbSAnLi4nO1xuaW1wb3J0IHsgVGVzdFJlcG9zaXRvcnkgfSBmcm9tICcuLi9zdGFnaW5nL2NvZGVhcnRpZmFjdCc7XG5pbXBvcnQgeyB1cGxvYWRKYXZhUGFja2FnZXMsIG1hdmVuTG9naW4gfSBmcm9tICcuLi9zdGFnaW5nL21hdmVuJztcbmltcG9ydCB7IHVwbG9hZE5wbVBhY2thZ2VzLCBucG1Mb2dpbiB9IGZyb20gJy4uL3N0YWdpbmcvbnBtJztcbmltcG9ydCB7IHVwbG9hZERvdG5ldFBhY2thZ2VzLCBudWdldExvZ2luIH0gZnJvbSAnLi4vc3RhZ2luZy9udWdldCc7XG5pbXBvcnQgeyB1cGxvYWRQeXRob25QYWNrYWdlcywgcHlwaUxvZ2luIH0gZnJvbSAnLi4vc3RhZ2luZy9weXBpJztcbmltcG9ydCB7IFVzYWdlRGlyIH0gZnJvbSAnLi4vc3RhZ2luZy91c2FnZS1kaXInO1xuXG5hc3luYyBmdW5jdGlvbiBtYWluKCkge1xuICBhd2FpdCB5YXJnc1xuICAgIC51c2FnZSgnJDAgPGNvbW1hbmQ+JylcbiAgICAub3B0aW9uKCducG0nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1VwbG9hZCBOUE0gcGFja2FnZXMgb25seScsXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgfSlcbiAgICAub3B0aW9uKCdweXRob24nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1VwbG9hZCBQeXRob24gcGFja2FnZXMgb25seScsXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgfSlcbiAgICAub3B0aW9uKCdqYXZhJywge1xuICAgICAgZGVzY3JpcHRpb246ICdVcGxvYWQgSmF2YSBwYWNrYWdlcyBvbmx5JyxcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ2RvdG5ldCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVXBsb2FkIERvdG5ldCBwYWNrYWdlcyBvbmx5JyxcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ3JlZ3Jlc3Npb24nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0VuYWJsZSBhY2Nlc3MgdG8gcHJldmlvdXMgdmVyc2lvbnMgb2YgdGhlIHN0YWdlZCBwYWNrYWdlcyAodGhpcyBpcyBleHBlbnNpdmUgZm9yIENvZGVBcnRpZmFjdCBzbyB3ZSBvbmx5IGRvIGl0IHdoZW4gbmVjZXNzYXJ5KScsXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9KVxuICAgIC5jb21tYW5kKCdwdWJsaXNoIDxESVJFQ1RPUlk+JywgJ1B1Ymxpc2ggYSBnaXZlbiBkaXJlY3RvcnknLCBjbWQgPT4gY21kXG4gICAgICAucG9zaXRpb25hbCgnRElSRUNUT1JZJywge1xuICAgICAgICBkZXNjcmlwdG9uOiAnRGlyZWN0b3J5IGRpc3RyaWJ1dGlvbicsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZW1hbmRPcHRpb246IHRydWUsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbignbmFtZScsIHtcbiAgICAgICAgYWxpYXM6ICduJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSByZXBvc2l0b3J5IHRvIGNyZWF0ZSAoZGVmYXVsdDogZ2VuZXJhdGUgdW5pcXVlIG5hbWUpJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgfSksIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgICBhd2FpdCB2YWxpZGF0ZURpcmVjdG9yeShhcmdzKTtcbiAgICAgIGNvbnN0IHJlcG8gPSBhd2FpdCAoYXJncy5uYW1lID8gVGVzdFJlcG9zaXRvcnkubmV3V2l0aE5hbWUoYXJncy5uYW1lKSA6IFRlc3RSZXBvc2l0b3J5Lm5ld1JhbmRvbSgpKTtcbiAgICAgIGNvbnN0IHVzYWdlRGlyID0gVXNhZ2VEaXIuZGVmYXVsdCgpO1xuXG4gICAgICBhd2FpdCBkb0xvZ2luKHJlcG8sIHVzYWdlRGlyLCBhcmdzKTtcbiAgICAgIGF3YWl0IHB1Ymxpc2gocmVwbywgdXNhZ2VEaXIsIGFyZ3MpO1xuXG4gICAgICBoZWFkZXIoJ0RvbmUnKTtcbiAgICAgIHVzYWdlRGlyLmFkdmVydGlzZSgpO1xuICAgIH0pXG4gICAgLmNvbW1hbmQoJ2xvZ2luJywgJ0xvZ2luIHRvIGEgZ2l2ZW4gcmVwb3NpdG9yeScsIGNtZCA9PiBjbWRcbiAgICAgIC5vcHRpb24oJ25hbWUnLCB7XG4gICAgICAgIGFsaWFzOiAnbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgcmVwb3NpdG9yeSB0byBsb2cgaW4gdG8nLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICAgIGRlbWFuZE9wdGlvbjogdHJ1ZSxcbiAgICAgIH0pLCBhc3luYyAoYXJncykgPT4ge1xuICAgICAgY29uc3QgcmVwbyA9IFRlc3RSZXBvc2l0b3J5LmV4aXN0aW5nKGFyZ3MubmFtZSk7XG4gICAgICBjb25zdCB1c2FnZURpciA9IFVzYWdlRGlyLmRlZmF1bHQoKTtcblxuICAgICAgYXdhaXQgZG9Mb2dpbihyZXBvLCB1c2FnZURpciwgYXJncyk7XG5cbiAgICAgIHVzYWdlRGlyLmFkdmVydGlzZSgpO1xuICAgIH0pXG4gICAgLmNvbW1hbmQoJ3J1biA8RElSRUNUT1JZPiA8Q09NTUFORC4uPicsICdQdWJsaXNoIGFuZCBydW4gYSBjb21tYW5kJywgY21kID0+IGNtZFxuICAgICAgLnBvc2l0aW9uYWwoJ0RJUkVDVE9SWScsIHtcbiAgICAgICAgZGVzY3JpcHRvbjogJ0RpcmVjdG9yeSBkaXN0cmlidXRpb24nLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVtYW5kT3B0aW9uOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5wb3NpdGlvbmFsKCdDT01NQU5EJywge1xuICAgICAgICBhbGlhczogJ2MnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1J1biB0aGUgZ2l2ZW4gY29tbWFuZCB3aXRoIHRoZSBwYWNrYWdlcyBzdGFnZWQnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgYXJyYXk6IHRydWUsXG4gICAgICAgIGRlbWFuZE9wdGlvbjogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uKCdjbGVhbnVwJywge1xuICAgICAgICBhbGlhczogJ0MnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0NsZWFudXAgdGhlIHJlcG9zaXRvcnkgYWZ0ZXJ3YXJkcycsXG4gICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgfSksIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgICBhd2FpdCB2YWxpZGF0ZURpcmVjdG9yeShhcmdzKTtcbiAgICAgIGNvbnN0IHJlcG8gPSBhd2FpdCBUZXN0UmVwb3NpdG9yeS5uZXdSYW5kb20oKTtcbiAgICAgIGNvbnN0IHVzYWdlRGlyID0gVXNhZ2VEaXIuZGVmYXVsdCgpO1xuXG4gICAgICBhd2FpdCBkb0xvZ2luKHJlcG8sIHVzYWdlRGlyLCBhcmdzKTtcbiAgICAgIGF3YWl0IHB1Ymxpc2gocmVwbywgdXNhZ2VEaXIsIGFyZ3MpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB1c2FnZURpci5hY3RpdmF0ZUluQ3VycmVudFByb2Nlc3MoKTtcblxuICAgICAgICBhd2FpdCBzaGVsbChhcmdzLkNPTU1BTkQgPz8gW10sIHtcbiAgICAgICAgICBzaGVsbDogdHJ1ZSxcbiAgICAgICAgICBzaG93OiAnYWx3YXlzJyxcbiAgICAgICAgfSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAoYXJncy5jbGVhbnVwKSB7XG4gICAgICAgICAgYXdhaXQgcmVwby5kZWxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgLmNvbW1hbmQoJ2NsZWFudXAnLCAnQ2xlYW4gdXAgdGVzdGluZyByZXBvc2l0b3J5JywgY21kID0+IGNtZFxuICAgICAgLm9wdGlvbignbmFtZScsIHtcbiAgICAgICAgYWxpYXM6ICduJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSByZXBvc2l0b3J5IHRvIGNsZWFudXAgKGRlZmF1bHQ6IG1vc3QgcmVjZW50KScsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgIH0pLCBhc3luYyAoYXJncykgPT4ge1xuICAgICAgY29uc3QgdXNhZ2VEaXIgPSBVc2FnZURpci5kZWZhdWx0KCk7XG5cbiAgICAgIGxldCByZXBvc2l0b3J5TmFtZSA9IGFyZ3MubmFtZTtcbiAgICAgIGlmICghcmVwb3NpdG9yeU5hbWUpIHtcbiAgICAgICAgcmVwb3NpdG9yeU5hbWUgPSAoYXdhaXQgdXNhZ2VEaXIuY3VycmVudEVudigpKS5DT0RFQVJUSUZBQ1RfUkVQTztcbiAgICAgIH1cblxuICAgICAgaWYgKCFyZXBvc2l0b3J5TmFtZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgTm8gLS1uYW1lIGdpdmVuIGFuZCBubyAkQ09ERUFSVElGQUNUX1JFUE8gZm91bmQgaW4gJHt1c2FnZURpci5kaXJlY3Rvcnl9LCBub3RoaW5nIGNsZWFuZWQgdXBgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXBvID0gVGVzdFJlcG9zaXRvcnkuZXhpc3RpbmcocmVwb3NpdG9yeU5hbWUpO1xuICAgICAgYXdhaXQgcmVwby5kZWxldGUoKTtcbiAgICB9KVxuICAgIC5jb21tYW5kKCdnYycsICdDbGVhbiB1cCBkYXktb2xkIHRlc3RpbmcgcmVwb3NpdG9yaWVzJywgY21kID0+IGNtZCwgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgVGVzdFJlcG9zaXRvcnkuZ2MoKTtcbiAgICB9KVxuICAgIC5kZW1hbmRDb21tYW5kKDEsICdZb3UgbXVzdCBzdXBwbHkgYSBjb21tYW5kJylcbiAgICAuaGVscCgpXG4gICAgLnNob3dIZWxwT25GYWlsKGZhbHNlKVxuICAgIC5wYXJzZSgpO1xufVxuXG5hc3luYyBmdW5jdGlvbiB2YWxpZGF0ZURpcmVjdG9yeShhcmdzOiB7XG4gIERJUkVDVE9SWTogc3RyaW5nO1xufSkge1xuICBpZiAoIWF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKGFyZ3MuRElSRUNUT1JZLCAnYnVpbGQuanNvbicpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHthcmdzLkRJUkVDVE9SWX0gZG9lcyBub3QgbG9vayBsaWtlIGEgQ0RLIGRpc3QgZGlyZWN0b3J5IChidWlsZC5qc29uIG1pc3NpbmcpYCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZG9Mb2dpbihyZXBvOiBUZXN0UmVwb3NpdG9yeSwgdXNhZ2VEaXI6IFVzYWdlRGlyLCBhcmdzOiB7XG4gIG5wbT86IGJvb2xlYW47XG4gIHB5dGhvbj86IGJvb2xlYW47XG4gIGphdmE/OiBib29sZWFuO1xuICBkb3RuZXQ/OiBib29sZWFuO1xufSkge1xuICBjb25zdCBsb2dpbiA9IGF3YWl0IHJlcG8ubG9naW5JbmZvcm1hdGlvbigpO1xuXG4gIGNvbnN0IG9sZEVudiA9IGF3YWl0IHVzYWdlRGlyLmN1cnJlbnRFbnYoKTtcblxuICBhd2FpdCB1c2FnZURpci5jbGVhbigpO1xuICBhd2FpdCB1c2FnZURpci5hZGRUb0Vudih7XG4gICAgQ09ERUFSVElGQUNUX1JFUE86IGxvZ2luLnJlcG9zaXRvcnlOYW1lLFxuICB9KTtcblxuICBpZiAob2xkRW52LkJVSUxEX1ZFUlNJT04pIHtcbiAgICBhd2FpdCB1c2FnZURpci5hZGRUb0Vudih7XG4gICAgICBCVUlMRF9WRVJTSU9OOiBvbGRFbnYuQlVJTERfVkVSU0lPTixcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGRvUmVwbyA9IHdoaWNoUmVwb3MoYXJncyk7XG5cbiAgYXdhaXQgZG9SZXBvLm5wbSgoKSA9PiBucG1Mb2dpbihsb2dpbiwgdXNhZ2VEaXIpKTtcbiAgYXdhaXQgZG9SZXBvLnB5dGhvbigoKSA9PiBweXBpTG9naW4obG9naW4sIHVzYWdlRGlyKSk7XG4gIGF3YWl0IGRvUmVwby5qYXZhKCgpID0+IG1hdmVuTG9naW4obG9naW4sIHVzYWdlRGlyKSk7XG4gIGF3YWl0IGRvUmVwby5kb3RuZXQoKCkgPT4gbnVnZXRMb2dpbihsb2dpbiwgdXNhZ2VEaXIpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHVibGlzaChyZXBvOiBUZXN0UmVwb3NpdG9yeSwgdXNhZ2VEaXI6IFVzYWdlRGlyLCBhcmdzOiB7XG4gIERJUkVDVE9SWTogc3RyaW5nO1xuICBucG0/OiBib29sZWFuO1xuICBweXRob24/OiBib29sZWFuO1xuICBqYXZhPzogYm9vbGVhbjtcbiAgZG90bmV0PzogYm9vbGVhbjtcbiAgcmVncmVzc2lvbj86IGJvb2xlYW47XG59KSB7XG4gIGNvbnN0IGRpcmVjdG9yeSA9IGAke2FyZ3MuRElSRUNUT1JZfWA7XG4gIGNvbnN0IGxvZ2luID0gYXdhaXQgcmVwby5sb2dpbkluZm9ybWF0aW9uKCk7XG5cbiAgY29uc3QgZG9SZXBvID0gd2hpY2hSZXBvcyhhcmdzKTtcblxuICBjb25zdCBidWlsZEpzb24gPSBhd2FpdCBmcy5yZWFkSnNvbihwYXRoLmpvaW4oZGlyZWN0b3J5LCAnYnVpbGQuanNvbicpKTtcbiAgYXdhaXQgdXNhZ2VEaXIuYWRkVG9FbnYoe1xuICAgIEJVSUxEX1ZFUlNJT046IGJ1aWxkSnNvbi52ZXJzaW9uLFxuICB9KTtcblxuICBhd2FpdCBkb1JlcG8ubnBtKGFzeW5jICgpID0+IHtcbiAgICBoZWFkZXIoJ05QTScpO1xuICAgIGF3YWl0IHVwbG9hZE5wbVBhY2thZ2VzKGdsb2JTeW5jKHBhdGguam9pbihkaXJlY3RvcnksICdqcycsICcqLnRneicpKSwgbG9naW4sIHVzYWdlRGlyKTtcbiAgfSk7XG5cbiAgYXdhaXQgZG9SZXBvLnB5dGhvbihhc3luYyAoKSA9PiB7XG4gICAgaGVhZGVyKCdQeXRob24nKTtcbiAgICBhd2FpdCB1cGxvYWRQeXRob25QYWNrYWdlcyhnbG9iU3luYyhwYXRoLmpvaW4oZGlyZWN0b3J5LCAncHl0aG9uJywgJyonKSksIGxvZ2luKTtcbiAgfSk7XG5cbiAgYXdhaXQgZG9SZXBvLmphdmEoYXN5bmMgKCkgPT4ge1xuICAgIGhlYWRlcignSmF2YScpO1xuICAgIGF3YWl0IHVwbG9hZEphdmFQYWNrYWdlcyhnbG9iU3luYyhwYXRoLmpvaW4oZGlyZWN0b3J5LCAnamF2YScsICcqKicsICcqLnBvbScpKSwgbG9naW4sIHVzYWdlRGlyKTtcbiAgfSk7XG5cbiAgYXdhaXQgZG9SZXBvLmRvdG5ldChhc3luYyAoKSA9PiB7XG4gICAgaGVhZGVyKCcuTkVUJyk7XG4gICAgYXdhaXQgdXBsb2FkRG90bmV0UGFja2FnZXMoZ2xvYlN5bmMocGF0aC5qb2luKGRpcmVjdG9yeSwgJ2RvdG5ldCcsICcqKicsICcqLm51cGtnJykpLCB1c2FnZURpcik7XG4gIH0pO1xuXG4gIGlmIChhcmdzLnJlZ3Jlc3Npb24pIHtcbiAgICBjb25zb2xlLmxvZygn8J+bjSBDb25maWd1cmluZyBwYWNrYWdlcyBmb3IgdXBzdHJlYW0gdmVyc2lvbnMnKTtcbiAgICBhd2FpdCByZXBvLm1hcmtBbGxVcHN0cmVhbUFsbG93KCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gd2hpY2hSZXBvcyhhcmdzOiB7XG4gIG5wbT86IGJvb2xlYW47XG4gIHB5dGhvbj86IGJvb2xlYW47XG4gIGphdmE/OiBib29sZWFuO1xuICBkb3RuZXQ/OiBib29sZWFuO1xufSkge1xuICBjb25zdCBhbGwgPSBhcmdzLm5wbSA9PT0gdW5kZWZpbmVkICYmIGFyZ3MucHl0aG9uID09PSB1bmRlZmluZWQgJiYgYXJncy5qYXZhID09PSB1bmRlZmluZWQgJiYgYXJncy5kb3RuZXQgPT09IHVuZGVmaW5lZDtcblxuICBjb25zdCBpbnZva2UgPSAoYmxvY2s6ICgpID0+IFByb21pc2U8dm9pZD4pID0+IGJsb2NrKCk7XG4gIGNvbnN0IHNraXAgPSAoKSA9PiB7XG5cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIG5wbTogYXJncy5ucG0gfHwgYWxsID8gaW52b2tlIDogc2tpcCxcbiAgICBweXRob246IGFyZ3MucHl0aG9uIHx8IGFsbCA/IGludm9rZSA6IHNraXAsXG4gICAgamF2YTogYXJncy5qYXZhIHx8IGFsbCA/IGludm9rZSA6IHNraXAsXG4gICAgZG90bmV0OiBhcmdzLmRvdG5ldCB8fCBhbGwgPyBpbnZva2UgOiBza2lwLFxuICB9O1xufVxuXG5mdW5jdGlvbiBoZWFkZXIoY2FwdGlvbjogc3RyaW5nKSB7XG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgY29uc29sZS5sb2coJy8nLnJlcGVhdCg3MCkpO1xuICBjb25zb2xlLmxvZyhgLy8gICR7Y2FwdGlvbn1gKTtcbiAgY29uc29sZS5sb2coJycpO1xufVxuXG5tYWluKCkuY2F0Y2goZSA9PiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUuZXJyb3IoZSk7XG4gIHByb2Nlc3MuZXhpdENvZGUgPSAxO1xufSk7XG4iXX0=
|
|
250
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UtZGlzdHJpYnV0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhZ2UtZGlzdHJpYnV0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLDJDQUE2QjtBQUM3Qix5Q0FBcUM7QUFDckMsNkNBQStCO0FBQy9CLDZDQUErQjtBQUMvQiwwQkFBMkI7QUFDM0IsMERBQXlEO0FBQ3pELDRDQUFrRTtBQUNsRSx3Q0FBNkQ7QUFDN0QsNENBQW9FO0FBQ3BFLDBDQUFrRTtBQUNsRSxvREFBZ0Q7QUFFaEQsS0FBSyxVQUFVLElBQUk7SUFDakIsTUFBTSxLQUFLO1NBQ1IsS0FBSyxDQUFDLGNBQWMsQ0FBQztTQUNyQixNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsV0FBVyxFQUFFLDBCQUEwQjtRQUN2QyxJQUFJLEVBQUUsU0FBUztRQUNmLFdBQVcsRUFBRSxLQUFLO0tBQ25CLENBQUM7U0FDRCxNQUFNLENBQUMsUUFBUSxFQUFFO1FBQ2hCLFdBQVcsRUFBRSw2QkFBNkI7UUFDMUMsSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXLEVBQUUsS0FBSztLQUNuQixDQUFDO1NBQ0QsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUNkLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsSUFBSSxFQUFFLFNBQVM7UUFDZixXQUFXLEVBQUUsS0FBSztLQUNuQixDQUFDO1NBQ0QsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUNoQixXQUFXLEVBQUUsNkJBQTZCO1FBQzFDLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLEtBQUs7S0FDbkIsQ0FBQztTQUNELE1BQU0sQ0FBQyxZQUFZLEVBQUU7UUFDcEIsV0FBVyxFQUFFLGdJQUFnSTtRQUM3SSxJQUFJLEVBQUUsU0FBUztRQUNmLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLE9BQU8sRUFBRSxLQUFLO0tBQ2YsQ0FBQztTQUNELE9BQU8s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Q0FBQyxHQUFHLENBQUMsT0FBTyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEIsQ0FBQztBQUVELElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNmLHNDQUFzQztJQUN0QyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGdsb2JTeW5jIH0gZnJvbSAnZmFzdC1nbG9iJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCB7IHNoZWxsIH0gZnJvbSAnLi4nO1xuaW1wb3J0IHsgVGVzdFJlcG9zaXRvcnkgfSBmcm9tICcuLi9zdGFnaW5nL2NvZGVhcnRpZmFjdCc7XG5pbXBvcnQgeyB1cGxvYWRKYXZhUGFja2FnZXMsIG1hdmVuTG9naW4gfSBmcm9tICcuLi9zdGFnaW5nL21hdmVuJztcbmltcG9ydCB7IHVwbG9hZE5wbVBhY2thZ2VzLCBucG1Mb2dpbiB9IGZyb20gJy4uL3N0YWdpbmcvbnBtJztcbmltcG9ydCB7IHVwbG9hZERvdG5ldFBhY2thZ2VzLCBudWdldExvZ2luIH0gZnJvbSAnLi4vc3RhZ2luZy9udWdldCc7XG5pbXBvcnQgeyB1cGxvYWRQeXRob25QYWNrYWdlcywgcHlwaUxvZ2luIH0gZnJvbSAnLi4vc3RhZ2luZy9weXBpJztcbmltcG9ydCB7IFVzYWdlRGlyIH0gZnJvbSAnLi4vc3RhZ2luZy91c2FnZS1kaXInO1xuXG5hc3luYyBmdW5jdGlvbiBtYWluKCkge1xuICBhd2FpdCB5YXJnc1xuICAgIC51c2FnZSgnJDAgPGNvbW1hbmQ+JylcbiAgICAub3B0aW9uKCducG0nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1VwbG9hZCBOUE0gcGFja2FnZXMgb25seScsXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgfSlcbiAgICAub3B0aW9uKCdweXRob24nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1VwbG9hZCBQeXRob24gcGFja2FnZXMgb25seScsXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgfSlcbiAgICAub3B0aW9uKCdqYXZhJywge1xuICAgICAgZGVzY3JpcHRpb246ICdVcGxvYWQgSmF2YSBwYWNrYWdlcyBvbmx5JyxcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ2RvdG5ldCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVXBsb2FkIERvdG5ldCBwYWNrYWdlcyBvbmx5JyxcbiAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICB9KVxuICAgIC5vcHRpb24oJ3JlZ3Jlc3Npb24nLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0VuYWJsZSBhY2Nlc3MgdG8gcHJldmlvdXMgdmVyc2lvbnMgb2YgdGhlIHN0YWdlZCBwYWNrYWdlcyAodGhpcyBpcyBleHBlbnNpdmUgZm9yIENvZGVBcnRpZmFjdCBzbyB3ZSBvbmx5IGRvIGl0IHdoZW4gbmVjZXNzYXJ5KScsXG4gICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB9KVxuICAgIC5jb21tYW5kKCdwdWJsaXNoIDxESVJFQ1RPUlk+JywgJ1B1Ymxpc2ggYSBnaXZlbiBkaXJlY3RvcnknLCBjbWQgPT4gY21kXG4gICAgICAucG9zaXRpb25hbCgnRElSRUNUT1JZJywge1xuICAgICAgICBkZXNjcmlwdG9uOiAnRGlyZWN0b3J5IGRpc3RyaWJ1dGlvbicsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZW1hbmRPcHRpb246IHRydWUsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbignbmFtZScsIHtcbiAgICAgICAgYWxpYXM6ICduJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSByZXBvc2l0b3J5IHRvIGNyZWF0ZSAoZGVmYXVsdDogZ2VuZXJhdGUgdW5pcXVlIG5hbWUpJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgfSksIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgICBhd2FpdCB2YWxpZGF0ZURpcmVjdG9yeShhcmdzKTtcbiAgICAgIGNvbnN0IHJlcG8gPSBhd2FpdCAoYXJncy5uYW1lID8gVGVzdFJlcG9zaXRvcnkubmV3V2l0aE5hbWUoYXJncy5uYW1lKSA6IFRlc3RSZXBvc2l0b3J5Lm5ld1JhbmRvbSgpKTtcbiAgICAgIGNvbnN0IHVzYWdlRGlyID0gVXNhZ2VEaXIuZGVmYXVsdCgpO1xuXG4gICAgICBhd2FpdCBkb0xvZ2luKHJlcG8sIHVzYWdlRGlyLCBhcmdzKTtcbiAgICAgIGF3YWl0IHB1Ymxpc2gocmVwbywgdXNhZ2VEaXIsIGFyZ3MpO1xuXG4gICAgICBoZWFkZXIoJ0RvbmUnKTtcbiAgICAgIHVzYWdlRGlyLmFkdmVydGlzZSgpO1xuICAgIH0pXG4gICAgLmNvbW1hbmQoJ2xvZ2luJywgJ0xvZ2luIHRvIGEgZ2l2ZW4gcmVwb3NpdG9yeScsIGNtZCA9PiBjbWRcbiAgICAgIC5vcHRpb24oJ25hbWUnLCB7XG4gICAgICAgIGFsaWFzOiAnbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgcmVwb3NpdG9yeSB0byBsb2cgaW4gdG8nLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICAgIGRlbWFuZE9wdGlvbjogdHJ1ZSxcbiAgICAgIH0pLCBhc3luYyAoYXJncykgPT4ge1xuICAgICAgY29uc3QgcmVwbyA9IFRlc3RSZXBvc2l0b3J5LmV4aXN0aW5nKGFyZ3MubmFtZSk7XG4gICAgICBjb25zdCB1c2FnZURpciA9IFVzYWdlRGlyLmRlZmF1bHQoKTtcblxuICAgICAgYXdhaXQgZG9Mb2dpbihyZXBvLCB1c2FnZURpciwgYXJncyk7XG5cbiAgICAgIHVzYWdlRGlyLmFkdmVydGlzZSgpO1xuICAgIH0pXG4gICAgLmNvbW1hbmQoJ3J1biA8RElSRUNUT1JZPiA8Q09NTUFORC4uPicsICdQdWJsaXNoIGFuZCBydW4gYSBjb21tYW5kJywgY21kID0+IGNtZFxuICAgICAgLnBvc2l0aW9uYWwoJ0RJUkVDVE9SWScsIHtcbiAgICAgICAgZGVzY3JpcHRvbjogJ0RpcmVjdG9yeSBkaXN0cmlidXRpb24nLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVtYW5kT3B0aW9uOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5wb3NpdGlvbmFsKCdDT01NQU5EJywge1xuICAgICAgICBhbGlhczogJ2MnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1J1biB0aGUgZ2l2ZW4gY29tbWFuZCB3aXRoIHRoZSBwYWNrYWdlcyBzdGFnZWQnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgYXJyYXk6IHRydWUsXG4gICAgICAgIGRlbWFuZE9wdGlvbjogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uKCdjbGVhbnVwJywge1xuICAgICAgICBhbGlhczogJ0MnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0NsZWFudXAgdGhlIHJlcG9zaXRvcnkgYWZ0ZXJ3YXJkcycsXG4gICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgfSksIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgICBhd2FpdCB2YWxpZGF0ZURpcmVjdG9yeShhcmdzKTtcbiAgICAgIGNvbnN0IHJlcG8gPSBhd2FpdCBUZXN0UmVwb3NpdG9yeS5uZXdSYW5kb20oKTtcbiAgICAgIGNvbnN0IHVzYWdlRGlyID0gVXNhZ2VEaXIuZGVmYXVsdCgpO1xuXG4gICAgICBhd2FpdCBkb0xvZ2luKHJlcG8sIHVzYWdlRGlyLCBhcmdzKTtcbiAgICAgIGF3YWl0IHB1Ymxpc2gocmVwbywgdXNhZ2VEaXIsIGFyZ3MpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB1c2FnZURpci5hY3RpdmF0ZUluQ3VycmVudFByb2Nlc3MoKTtcblxuICAgICAgICBhd2FpdCBzaGVsbChhcmdzLkNPTU1BTkQgPz8gW10sIHtcbiAgICAgICAgICBzaGVsbDogdHJ1ZSxcbiAgICAgICAgICBzaG93OiAnYWx3YXlzJyxcbiAgICAgICAgfSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAoYXJncy5jbGVhbnVwKSB7XG4gICAgICAgICAgYXdhaXQgcmVwby5kZWxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgLmNvbW1hbmQoJ2NsZWFudXAnLCAnQ2xlYW4gdXAgdGVzdGluZyByZXBvc2l0b3J5JywgY21kID0+IGNtZFxuICAgICAgLm9wdGlvbignbmFtZScsIHtcbiAgICAgICAgYWxpYXM6ICduJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSByZXBvc2l0b3J5IHRvIGNsZWFudXAgKGRlZmF1bHQ6IG1vc3QgcmVjZW50KScsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgIH0pLCBhc3luYyAoYXJncykgPT4ge1xuICAgICAgY29uc3QgdXNhZ2VEaXIgPSBVc2FnZURpci5kZWZhdWx0KCk7XG5cbiAgICAgIGxldCByZXBvc2l0b3J5TmFtZSA9IGFyZ3MubmFtZTtcbiAgICAgIGlmICghcmVwb3NpdG9yeU5hbWUpIHtcbiAgICAgICAgcmVwb3NpdG9yeU5hbWUgPSAoYXdhaXQgdXNhZ2VEaXIuY3VycmVudEVudigpKS5DT0RFQVJUSUZBQ1RfUkVQTztcbiAgICAgIH1cblxuICAgICAgaWYgKCFyZXBvc2l0b3J5TmFtZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgTm8gLS1uYW1lIGdpdmVuIGFuZCBubyAkQ09ERUFSVElGQUNUX1JFUE8gZm91bmQgaW4gJHt1c2FnZURpci5kaXJlY3Rvcnl9LCBub3RoaW5nIGNsZWFuZWQgdXBgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXBvID0gVGVzdFJlcG9zaXRvcnkuZXhpc3RpbmcocmVwb3NpdG9yeU5hbWUpO1xuICAgICAgYXdhaXQgcmVwby5kZWxldGUoKTtcbiAgICB9KVxuICAgIC5jb21tYW5kKCdnYycsICdDbGVhbiB1cCBkYXktb2xkIHRlc3RpbmcgcmVwb3NpdG9yaWVzJywgY21kID0+IGNtZCwgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgVGVzdFJlcG9zaXRvcnkuZ2MoKTtcbiAgICB9KVxuICAgIC5kZW1hbmRDb21tYW5kKDEsICdZb3UgbXVzdCBzdXBwbHkgYSBjb21tYW5kJylcbiAgICAuaGVscCgpXG4gICAgLnNob3dIZWxwT25GYWlsKGZhbHNlKVxuICAgIC5wYXJzZSgpO1xufVxuXG5hc3luYyBmdW5jdGlvbiB2YWxpZGF0ZURpcmVjdG9yeShhcmdzOiB7XG4gIERJUkVDVE9SWTogc3RyaW5nO1xufSkge1xuICBpZiAoIWF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKGFyZ3MuRElSRUNUT1JZLCAnYnVpbGQuanNvbicpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHthcmdzLkRJUkVDVE9SWX0gZG9lcyBub3QgbG9vayBsaWtlIGEgQ0RLIGRpc3QgZGlyZWN0b3J5IChidWlsZC5qc29uIG1pc3NpbmcpYCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZG9Mb2dpbihyZXBvOiBUZXN0UmVwb3NpdG9yeSwgdXNhZ2VEaXI6IFVzYWdlRGlyLCBhcmdzOiB7XG4gIG5wbT86IGJvb2xlYW47XG4gIHB5dGhvbj86IGJvb2xlYW47XG4gIGphdmE/OiBib29sZWFuO1xuICBkb3RuZXQ/OiBib29sZWFuO1xufSkge1xuICBjb25zdCBsb2dpbiA9IGF3YWl0IHJlcG8ubG9naW5JbmZvcm1hdGlvbigpO1xuXG4gIGNvbnN0IG9sZEVudiA9IGF3YWl0IHVzYWdlRGlyLmN1cnJlbnRFbnYoKTtcblxuICBhd2FpdCB1c2FnZURpci5jbGVhbigpO1xuICBhd2FpdCB1c2FnZURpci5hZGRUb0Vudih7XG4gICAgQ09ERUFSVElGQUNUX1JFUE86IGxvZ2luLnJlcG9zaXRvcnlOYW1lLFxuICB9KTtcblxuICBpZiAob2xkRW52LkJVSUxEX1ZFUlNJT04pIHtcbiAgICBhd2FpdCB1c2FnZURpci5hZGRUb0Vudih7XG4gICAgICBCVUlMRF9WRVJTSU9OOiBvbGRFbnYuQlVJTERfVkVSU0lPTixcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGRvUmVwbyA9IHdoaWNoUmVwb3MoYXJncyk7XG5cbiAgYXdhaXQgZG9SZXBvLm5wbSgoKSA9PiBucG1Mb2dpbihsb2dpbiwgdXNhZ2VEaXIpKTtcbiAgYXdhaXQgZG9SZXBvLnB5dGhvbigoKSA9PiBweXBpTG9naW4obG9naW4sIHVzYWdlRGlyKSk7XG4gIGF3YWl0IGRvUmVwby5qYXZhKCgpID0+IG1hdmVuTG9naW4obG9naW4sIHVzYWdlRGlyKSk7XG4gIGF3YWl0IGRvUmVwby5kb3RuZXQoKCkgPT4gbnVnZXRMb2dpbihsb2dpbiwgdXNhZ2VEaXIpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHVibGlzaChyZXBvOiBUZXN0UmVwb3NpdG9yeSwgdXNhZ2VEaXI6IFVzYWdlRGlyLCBhcmdzOiB7XG4gIERJUkVDVE9SWTogc3RyaW5nO1xuICBucG0/OiBib29sZWFuO1xuICBweXRob24/OiBib29sZWFuO1xuICBqYXZhPzogYm9vbGVhbjtcbiAgZG90bmV0PzogYm9vbGVhbjtcbiAgcmVncmVzc2lvbj86IGJvb2xlYW47XG59KSB7XG4gIGNvbnN0IGRpcmVjdG9yeSA9IGAke2FyZ3MuRElSRUNUT1JZfWA7XG4gIGNvbnN0IGxvZ2luID0gYXdhaXQgcmVwby5sb2dpbkluZm9ybWF0aW9uKCk7XG5cbiAgY29uc3QgZG9SZXBvID0gd2hpY2hSZXBvcyhhcmdzKTtcblxuICBjb25zdCBidWlsZEpzb24gPSBhd2FpdCBmcy5yZWFkSnNvbihwYXRoLmpvaW4oZGlyZWN0b3J5LCAnYnVpbGQuanNvbicpKTtcbiAgYXdhaXQgdXNhZ2VEaXIuYWRkVG9FbnYoe1xuICAgIEJVSUxEX1ZFUlNJT046IGJ1aWxkSnNvbi52ZXJzaW9uLFxuICB9KTtcblxuICBhd2FpdCBkb1JlcG8ubnBtKGFzeW5jICgpID0+IHtcbiAgICBoZWFkZXIoJ05QTScpO1xuICAgIGF3YWl0IHVwbG9hZE5wbVBhY2thZ2VzKGdsb2JTeW5jKHBhdGguam9pbihkaXJlY3RvcnksICdqcycsICcqLnRneicpKSwgbG9naW4sIHVzYWdlRGlyKTtcbiAgfSk7XG5cbiAgYXdhaXQgZG9SZXBvLnB5dGhvbihhc3luYyAoKSA9PiB7XG4gICAgaGVhZGVyKCdQeXRob24nKTtcbiAgICBhd2FpdCB1cGxvYWRQeXRob25QYWNrYWdlcyhnbG9iU3luYyhwYXRoLmpvaW4oZGlyZWN0b3J5LCAncHl0aG9uJywgJyonKSksIGxvZ2luKTtcbiAgfSk7XG5cbiAgYXdhaXQgZG9SZXBvLmphdmEoYXN5bmMgKCkgPT4ge1xuICAgIGhlYWRlcignSmF2YScpO1xuICAgIGF3YWl0IHVwbG9hZEphdmFQYWNrYWdlcyhnbG9iU3luYyhwYXRoLmpvaW4oZGlyZWN0b3J5LCAnamF2YScsICcqKicsICcqLnBvbScpKSwgbG9naW4sIHVzYWdlRGlyKTtcbiAgfSk7XG5cbiAgYXdhaXQgZG9SZXBvLmRvdG5ldChhc3luYyAoKSA9PiB7XG4gICAgaGVhZGVyKCcuTkVUJyk7XG4gICAgYXdhaXQgdXBsb2FkRG90bmV0UGFja2FnZXMoZ2xvYlN5bmMocGF0aC5qb2luKGRpcmVjdG9yeSwgJ2RvdG5ldCcsICcqKicsICcqLm51cGtnJykpLCB1c2FnZURpcik7XG4gIH0pO1xuXG4gIGlmIChhcmdzLnJlZ3Jlc3Npb24pIHtcbiAgICBjb25zb2xlLmxvZygn8J+bjSBDb25maWd1cmluZyBwYWNrYWdlcyBmb3IgdXBzdHJlYW0gdmVyc2lvbnMnKTtcbiAgICBhd2FpdCByZXBvLm1hcmtBbGxVcHN0cmVhbUFsbG93KCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gd2hpY2hSZXBvcyhhcmdzOiB7XG4gIG5wbT86IGJvb2xlYW47XG4gIHB5dGhvbj86IGJvb2xlYW47XG4gIGphdmE/OiBib29sZWFuO1xuICBkb3RuZXQ/OiBib29sZWFuO1xufSkge1xuICBjb25zdCBhbGwgPSBhcmdzLm5wbSA9PT0gdW5kZWZpbmVkICYmIGFyZ3MucHl0aG9uID09PSB1bmRlZmluZWQgJiYgYXJncy5qYXZhID09PSB1bmRlZmluZWQgJiYgYXJncy5kb3RuZXQgPT09IHVuZGVmaW5lZDtcblxuICBjb25zdCBpbnZva2UgPSAoYmxvY2s6ICgpID0+IFByb21pc2U8dm9pZD4pID0+IGJsb2NrKCk7XG4gIGNvbnN0IHNraXAgPSAoKSA9PiB7XG5cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIG5wbTogYXJncy5ucG0gfHwgYWxsID8gaW52b2tlIDogc2tpcCxcbiAgICBweXRob246IGFyZ3MucHl0aG9uIHx8IGFsbCA/IGludm9rZSA6IHNraXAsXG4gICAgamF2YTogYXJncy5qYXZhIHx8IGFsbCA/IGludm9rZSA6IHNraXAsXG4gICAgZG90bmV0OiBhcmdzLmRvdG5ldCB8fCBhbGwgPyBpbnZva2UgOiBza2lwLFxuICB9O1xufVxuXG5mdW5jdGlvbiBoZWFkZXIoY2FwdGlvbjogc3RyaW5nKSB7XG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgY29uc29sZS5sb2coJy8nLnJlcGVhdCg3MCkpO1xuICBjb25zb2xlLmxvZyhgLy8gICR7Y2FwdGlvbn1gKTtcbiAgY29uc29sZS5sb2coJycpO1xufVxuXG5tYWluKCkuY2F0Y2goZSA9PiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUuZXJyb3IoZSk7XG4gIHByb2Nlc3MuZXhpdENvZGUgPSAxO1xufSk7XG4iXX0=
|