@aws-cdk-testing/cli-integ 3.14.0 → 3.15.1

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/package.json CHANGED
@@ -39,9 +39,9 @@
39
39
  "organization": true
40
40
  },
41
41
  "devDependencies": {
42
- "@aws-cdk/toolkit-lib": "1.3.1",
42
+ "@aws-cdk/toolkit-lib": "1.6.0",
43
43
  "@aws-cdk/yarn-cling": "0.0.0",
44
- "@cdklabs/eslint-plugin": "^1.3.2",
44
+ "@cdklabs/eslint-plugin": "^1.3.3",
45
45
  "@stylistic/eslint-plugin": "^3",
46
46
  "@types/fs-extra": "^9",
47
47
  "@types/jest": "^29.5.14",
@@ -58,7 +58,7 @@
58
58
  "eslint-plugin-import": "^2.32.0",
59
59
  "eslint-plugin-jest": "^28.14.0",
60
60
  "eslint-plugin-jsdoc": "^50.8.0",
61
- "eslint-plugin-prettier": "^5.5.3",
61
+ "eslint-plugin-prettier": "^5.5.4",
62
62
  "jest": "^29.7.0",
63
63
  "jest-junit": "^16",
64
64
  "license-checker": "^25.0.1",
@@ -67,23 +67,23 @@
67
67
  "typescript": "5.8"
68
68
  },
69
69
  "dependencies": {
70
- "@aws-sdk/client-cloudformation": "^3.848.0",
71
- "@aws-sdk/client-codeartifact": "^3.848.0",
72
- "@aws-sdk/client-ecr": "^3.848.0",
73
- "@aws-sdk/client-ecr-public": "^3.848.0",
74
- "@aws-sdk/client-ecs": "^3.848.0",
75
- "@aws-sdk/client-iam": "^3.848.0",
76
- "@aws-sdk/client-lambda": "^3.848.0",
77
- "@aws-sdk/client-s3": "^3.848.0",
78
- "@aws-sdk/client-secrets-manager": "^3.848.0",
79
- "@aws-sdk/client-sns": "^3.848.0",
80
- "@aws-sdk/client-sso": "^3.848.0",
81
- "@aws-sdk/client-sts": "^3.848.0",
82
- "@aws-sdk/credential-providers": "^3.848.0",
83
- "@cdklabs/cdk-atmosphere-client": "^0.0.58",
70
+ "@aws-sdk/client-cloudformation": "^3.864.0",
71
+ "@aws-sdk/client-codeartifact": "^3.864.0",
72
+ "@aws-sdk/client-ecr": "^3.864.0",
73
+ "@aws-sdk/client-ecr-public": "^3.864.0",
74
+ "@aws-sdk/client-ecs": "^3.864.0",
75
+ "@aws-sdk/client-iam": "^3.864.0",
76
+ "@aws-sdk/client-lambda": "^3.865.0",
77
+ "@aws-sdk/client-s3": "^3.864.0",
78
+ "@aws-sdk/client-secrets-manager": "^3.864.0",
79
+ "@aws-sdk/client-sns": "^3.864.0",
80
+ "@aws-sdk/client-sso": "^3.864.0",
81
+ "@aws-sdk/client-sts": "^3.864.0",
82
+ "@aws-sdk/credential-providers": "^3.864.0",
83
+ "@cdklabs/cdk-atmosphere-client": "^0.0.61",
84
84
  "@octokit/rest": "^20",
85
- "@smithy/types": "^4.3.1",
86
- "@smithy/util-retry": "^4.0.6",
85
+ "@smithy/types": "^4.3.2",
86
+ "@smithy/util-retry": "^4.0.7",
87
87
  "axios": "^1",
88
88
  "chalk": "^4",
89
89
  "fs-extra": "^9",
@@ -116,7 +116,7 @@
116
116
  "publishConfig": {
117
117
  "access": "public"
118
118
  },
119
- "version": "3.14.0",
119
+ "version": "3.15.1",
120
120
  "types": "lib/index.d.ts",
121
121
  "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"."
122
122
  }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const client_sts_1 = require("@aws-sdk/client-sts");
4
+ const lib_1 = require("../../../lib");
5
+ jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
6
+ (0, lib_1.integTest)('deploy role cannot be assumed with external id', (0, lib_1.withoutBootstrap)(async (fixture) => {
7
+ const bootstrapStackName = fixture.bootstrapStackName;
8
+ await fixture.cdkBootstrapModern({
9
+ toolkitStackName: bootstrapStackName,
10
+ cfnExecutionPolicy: 'arn:aws:iam::aws:policy/AdministratorAccess',
11
+ });
12
+ const account = await fixture.aws.account();
13
+ const deployRoleArn = `arn:aws:iam::${account}:role/cdk-${fixture.qualifier}-deploy-role-${account}-${fixture.aws.region}`;
14
+ // Attempt to assume the deploy role with an external ID should fail
15
+ await expect(fixture.aws.sts.send(new client_sts_1.AssumeRoleCommand({
16
+ RoleArn: deployRoleArn,
17
+ RoleSessionName: 'test-external-id-failure',
18
+ ExternalId: 'some-external-id',
19
+ }))).rejects.toThrow();
20
+ }));
21
+ (0, lib_1.integTest)('deploy role can be assumed with ExternalId if protection is switched off', (0, lib_1.withoutBootstrap)(async (fixture) => {
22
+ const bootstrapStackName = fixture.bootstrapStackName;
23
+ await fixture.cdkBootstrapModern({
24
+ toolkitStackName: bootstrapStackName,
25
+ cfnExecutionPolicy: 'arn:aws:iam::aws:policy/AdministratorAccess',
26
+ denyExternalId: false,
27
+ });
28
+ const account = await fixture.aws.account();
29
+ const deployRoleArn = `arn:aws:iam::${account}:role/cdk-${fixture.qualifier}-deploy-role-${account}-${fixture.aws.region}`;
30
+ // Attempt to assume the deploy role with an external ID should fail
31
+ await expect(fixture.aws.sts.send(new client_sts_1.AssumeRoleCommand({
32
+ RoleArn: deployRoleArn,
33
+ RoleSessionName: 'test-external-id-failure',
34
+ ExternalId: 'some-external-id',
35
+ }))).resolves.toBeTruthy();
36
+ }));
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWJvb3RzdHJhcC1kZXBsb3ktcm9sZS1jYW5ub3QtYmUtYXNzdW1lZC13aXRoLWV4dGVybmFsLWlkLmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay1ib290c3RyYXAtZGVwbG95LXJvbGUtY2Fubm90LWJlLWFzc3VtZWQtd2l0aC1leHRlcm5hbC1pZC5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxvREFBd0Q7QUFDeEQsc0NBQTJEO0FBRTNELElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLHlFQUF5RTtBQUUzRyxJQUFBLGVBQVMsRUFBQyxnREFBZ0QsRUFBRSxJQUFBLHNCQUFnQixFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUM3RixNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztJQUV0RCxNQUFNLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztRQUMvQixnQkFBZ0IsRUFBRSxrQkFBa0I7UUFDcEMsa0JBQWtCLEVBQUUsNkNBQTZDO0tBQ2xFLENBQUMsQ0FBQztJQUVILE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1QyxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsT0FBTyxhQUFhLE9BQU8sQ0FBQyxTQUFTLGdCQUFnQixPQUFPLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUUzSCxvRUFBb0U7SUFDcEUsTUFBTSxNQUFNLENBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksOEJBQWlCLENBQUM7UUFDekMsT0FBTyxFQUFFLGFBQWE7UUFDdEIsZUFBZSxFQUFFLDBCQUEwQjtRQUMzQyxVQUFVLEVBQUUsa0JBQWtCO0tBQy9CLENBQUMsQ0FBQyxDQUNKLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ3RCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFSixJQUFBLGVBQVMsRUFBQywwRUFBMEUsRUFBRSxJQUFBLHNCQUFnQixFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUN2SCxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztJQUV0RCxNQUFNLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztRQUMvQixnQkFBZ0IsRUFBRSxrQkFBa0I7UUFDcEMsa0JBQWtCLEVBQUUsNkNBQTZDO1FBQ2pFLGNBQWMsRUFBRSxLQUFLO0tBQ3RCLENBQUMsQ0FBQztJQUVILE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1QyxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsT0FBTyxhQUFhLE9BQU8sQ0FBQyxTQUFTLGdCQUFnQixPQUFPLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUUzSCxvRUFBb0U7SUFDcEUsTUFBTSxNQUFNLENBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksOEJBQWlCLENBQUM7UUFDekMsT0FBTyxFQUFFLGFBQWE7UUFDdEIsZUFBZSxFQUFFLDBCQUEwQjtRQUMzQyxVQUFVLEVBQUUsa0JBQWtCO0tBQy9CLENBQUMsQ0FBQyxDQUNKLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQzFCLENBQUMsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3N1bWVSb2xlQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zdHMnO1xuaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRob3V0Qm9vdHN0cmFwIH0gZnJvbSAnLi4vLi4vLi4vbGliJztcblxuamVzdC5zZXRUaW1lb3V0KDIgKiA2MCAqIDYwXzAwMCk7IC8vIEluY2x1ZGVzIHRoZSB0aW1lIHRvIGFjcXVpcmUgbG9ja3MsIHdvcnN0LWNhc2Ugc2luZ2xlLXRocmVhZGVkIHJ1bnRpbWVcblxuaW50ZWdUZXN0KCdkZXBsb3kgcm9sZSBjYW5ub3QgYmUgYXNzdW1lZCB3aXRoIGV4dGVybmFsIGlkJywgd2l0aG91dEJvb3RzdHJhcChhc3luYyAoZml4dHVyZSkgPT4ge1xuICBjb25zdCBib290c3RyYXBTdGFja05hbWUgPSBmaXh0dXJlLmJvb3RzdHJhcFN0YWNrTmFtZTtcblxuICBhd2FpdCBmaXh0dXJlLmNka0Jvb3RzdHJhcE1vZGVybih7XG4gICAgdG9vbGtpdFN0YWNrTmFtZTogYm9vdHN0cmFwU3RhY2tOYW1lLFxuICAgIGNmbkV4ZWN1dGlvblBvbGljeTogJ2Fybjphd3M6aWFtOjphd3M6cG9saWN5L0FkbWluaXN0cmF0b3JBY2Nlc3MnLFxuICB9KTtcblxuICBjb25zdCBhY2NvdW50ID0gYXdhaXQgZml4dHVyZS5hd3MuYWNjb3VudCgpO1xuICBjb25zdCBkZXBsb3lSb2xlQXJuID0gYGFybjphd3M6aWFtOjoke2FjY291bnR9OnJvbGUvY2RrLSR7Zml4dHVyZS5xdWFsaWZpZXJ9LWRlcGxveS1yb2xlLSR7YWNjb3VudH0tJHtmaXh0dXJlLmF3cy5yZWdpb259YDtcblxuICAvLyBBdHRlbXB0IHRvIGFzc3VtZSB0aGUgZGVwbG95IHJvbGUgd2l0aCBhbiBleHRlcm5hbCBJRCBzaG91bGQgZmFpbFxuICBhd2FpdCBleHBlY3QoXG4gICAgZml4dHVyZS5hd3Muc3RzLnNlbmQobmV3IEFzc3VtZVJvbGVDb21tYW5kKHtcbiAgICAgIFJvbGVBcm46IGRlcGxveVJvbGVBcm4sXG4gICAgICBSb2xlU2Vzc2lvbk5hbWU6ICd0ZXN0LWV4dGVybmFsLWlkLWZhaWx1cmUnLFxuICAgICAgRXh0ZXJuYWxJZDogJ3NvbWUtZXh0ZXJuYWwtaWQnLFxuICAgIH0pKSxcbiAgKS5yZWplY3RzLnRvVGhyb3coKTtcbn0pKTtcblxuaW50ZWdUZXN0KCdkZXBsb3kgcm9sZSBjYW4gYmUgYXNzdW1lZCB3aXRoIEV4dGVybmFsSWQgaWYgcHJvdGVjdGlvbiBpcyBzd2l0Y2hlZCBvZmYnLCB3aXRob3V0Qm9vdHN0cmFwKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGNvbnN0IGJvb3RzdHJhcFN0YWNrTmFtZSA9IGZpeHR1cmUuYm9vdHN0cmFwU3RhY2tOYW1lO1xuXG4gIGF3YWl0IGZpeHR1cmUuY2RrQm9vdHN0cmFwTW9kZXJuKHtcbiAgICB0b29sa2l0U3RhY2tOYW1lOiBib290c3RyYXBTdGFja05hbWUsXG4gICAgY2ZuRXhlY3V0aW9uUG9saWN5OiAnYXJuOmF3czppYW06OmF3czpwb2xpY3kvQWRtaW5pc3RyYXRvckFjY2VzcycsXG4gICAgZGVueUV4dGVybmFsSWQ6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCBhY2NvdW50ID0gYXdhaXQgZml4dHVyZS5hd3MuYWNjb3VudCgpO1xuICBjb25zdCBkZXBsb3lSb2xlQXJuID0gYGFybjphd3M6aWFtOjoke2FjY291bnR9OnJvbGUvY2RrLSR7Zml4dHVyZS5xdWFsaWZpZXJ9LWRlcGxveS1yb2xlLSR7YWNjb3VudH0tJHtmaXh0dXJlLmF3cy5yZWdpb259YDtcblxuICAvLyBBdHRlbXB0IHRvIGFzc3VtZSB0aGUgZGVwbG95IHJvbGUgd2l0aCBhbiBleHRlcm5hbCBJRCBzaG91bGQgZmFpbFxuICBhd2FpdCBleHBlY3QoXG4gICAgZml4dHVyZS5hd3Muc3RzLnNlbmQobmV3IEFzc3VtZVJvbGVDb21tYW5kKHtcbiAgICAgIFJvbGVBcm46IGRlcGxveVJvbGVBcm4sXG4gICAgICBSb2xlU2Vzc2lvbk5hbWU6ICd0ZXN0LWV4dGVybmFsLWlkLWZhaWx1cmUnLFxuICAgICAgRXh0ZXJuYWxJZDogJ3NvbWUtZXh0ZXJuYWwtaWQnLFxuICAgIH0pKSxcbiAgKS5yZXNvbHZlcy50b0JlVHJ1dGh5KCk7XG59KSk7XG4iXX0=
@@ -6,7 +6,7 @@ const path = require("path");
6
6
  const client_sts_1 = require("@aws-sdk/client-sts");
7
7
  const lib_1 = require("../../../lib");
8
8
  jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
9
- (0, lib_1.integTest)('docker-credential-cdk-assets can assume role and fetch ECR credentials', (0, lib_1.withDefaultFixture)(async (fixture) => {
9
+ (0, lib_1.integTest)('docker-credential-cdk-assets can assume role and fetch ECR credentials', (0, lib_1.withRetry)((0, lib_1.withDefaultFixture)(async (fixture) => {
10
10
  const caller = await fixture.aws.sts.send(new client_sts_1.GetCallerIdentityCommand({}));
11
11
  const roleArn = await fixture.aws.temporaryRole('ecr-repo-role', [
12
12
  {
@@ -27,7 +27,7 @@ jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-c
27
27
  // This role must have permissions to call `ecr:GetAuthorizationToken`
28
28
  assumeRoleArn: roleArn,
29
29
  });
30
- }));
30
+ })));
31
31
  /*
32
32
 
33
33
  // SKIPPED FOR NOW
@@ -69,13 +69,16 @@ async function testDockerCredential(fixture, credSource) {
69
69
  const input = path.join(fixture.integTestDir, 'input.txt');
70
70
  fs.writeFileSync(input, `${domain}\n`);
71
71
  await fixture.cdkAssets.makeCliAvailable();
72
- const output = await fixture.shell(['docker-credential-cdk-assets', 'get'], {
73
- modEnv: {
74
- ...fixture.cdkShellEnv(),
75
- CDK_DOCKER_CREDS_FILE: credsFilePath,
76
- },
77
- stdio: [fs.openSync(input, 'r')],
78
- captureStderr: false,
72
+ let output = '';
73
+ await (0, lib_1.retry)(process.stdout, 'Getting docker credentials', lib_1.retry.forSeconds(60), async () => {
74
+ output = await fixture.shell(['docker-credential-cdk-assets', 'get'], {
75
+ modEnv: {
76
+ ...fixture.cdkShellEnv(),
77
+ CDK_DOCKER_CREDS_FILE: credsFilePath,
78
+ },
79
+ stdio: [fs.openSync(input, 'r')],
80
+ captureStderr: false,
81
+ });
79
82
  });
80
83
  const response = JSON.parse(output);
81
84
  expect(response).toMatchObject({
@@ -83,4 +86,4 @@ async function testDockerCredential(fixture, credSource) {
83
86
  Secret: expect.anything(),
84
87
  });
85
88
  }
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWFzc2V0cy1kb2NrZXItY3JlZGVudGlhbC5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGstYXNzZXRzLWRvY2tlci1jcmVkZW50aWFsLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsOEZBQThGO0FBQzlGLG9EQUErRDtBQUkvRCxzQ0FBNkQ7QUFFN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMseUVBQXlFO0FBRTNHLElBQUEsZUFBUyxFQUNQLHdFQUF3RSxFQUN4RSxJQUFBLHdCQUFrQixFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNuQyxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLHFDQUF3QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFNUUsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUU7UUFDL0Q7WUFDRSxNQUFNLEVBQUUsZ0JBQWdCO1lBQ3hCLE1BQU0sRUFBRSxPQUFPO1lBQ2YsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUU7U0FDbkM7S0FDRixFQUFFO1FBQ0Q7WUFDRSxNQUFNLEVBQUUsT0FBTztZQUNmLFFBQVEsRUFBRSxHQUFHO1lBQ2IsTUFBTSxFQUFFLENBQUMsMkJBQTJCLENBQUM7U0FDdEM7S0FDRixDQUFDLENBQUM7SUFFSCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFN0MsTUFBTSxvQkFBb0IsQ0FBQyxPQUFPLEVBQUU7UUFDbEMsYUFBYSxFQUFFLElBQUk7UUFDbkIsc0VBQXNFO1FBQ3RFLGFBQWEsRUFBRSxPQUFPO0tBQ3ZCLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUNILENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQTRCRTtBQUVGLEtBQUssVUFBVSxvQkFBb0IsQ0FBQyxPQUFvQixFQUFFLFVBQXdDO0lBQ2hHLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDO0lBQ25DLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO0lBRS9FLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDN0MsT0FBTyxFQUFFLEtBQUs7UUFDZCxpQkFBaUIsRUFBRTtZQUNqQixDQUFDLE1BQU0sQ0FBQyxFQUFFLFVBQVU7U0FDckI7S0FDRixDQUFDLENBQUMsQ0FBQztJQUVKLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMzRCxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFFdkMsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsOEJBQThCLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFDMUUsTUFBTSxFQUFFO1lBQ04sR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQ3hCLHFCQUFxQixFQUFFLGFBQWE7U0FDckM7UUFDRCxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNoQyxhQUFhLEVBQUUsS0FBSztLQUNyQixDQUFDLENBQUM7SUFFSCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDN0IsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUU7UUFDM0IsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUU7S0FDMUIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG4vLyBpbXBvcnQgeyBDcmVhdGVTZWNyZXRDb21tYW5kLCBEZWxldGVTZWNyZXRDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNlY3JldHMtbWFuYWdlcic7XG5pbXBvcnQgeyBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc3RzJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tcmVsYXRpdmUtcGFja2FnZXNcbmltcG9ydCB0eXBlIHsgRG9ja2VyRG9tYWluQ3JlZGVudGlhbFNvdXJjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL0Bhd3MtY2RrL2Nkay1hc3NldHMtbGliL2xpYi9wcml2YXRlL2RvY2tlci1jcmVkZW50aWFscyc7XG5pbXBvcnQgdHlwZSB7IFRlc3RGaXh0dXJlIH0gZnJvbSAnLi4vLi4vLi4vbGliJztcbmltcG9ydCB7IGludGVnVGVzdCwgd2l0aERlZmF1bHRGaXh0dXJlIH0gZnJvbSAnLi4vLi4vLi4vbGliJztcblxuamVzdC5zZXRUaW1lb3V0KDIgKiA2MCAqIDYwXzAwMCk7IC8vIEluY2x1ZGVzIHRoZSB0aW1lIHRvIGFjcXVpcmUgbG9ja3MsIHdvcnN0LWNhc2Ugc2luZ2xlLXRocmVhZGVkIHJ1bnRpbWVcblxuaW50ZWdUZXN0KFxuICAnZG9ja2VyLWNyZWRlbnRpYWwtY2RrLWFzc2V0cyBjYW4gYXNzdW1lIHJvbGUgYW5kIGZldGNoIEVDUiBjcmVkZW50aWFscycsXG4gIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIGNvbnN0IGNhbGxlciA9IGF3YWl0IGZpeHR1cmUuYXdzLnN0cy5zZW5kKG5ldyBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQoe30pKTtcblxuICAgIGNvbnN0IHJvbGVBcm4gPSBhd2FpdCBmaXh0dXJlLmF3cy50ZW1wb3JhcnlSb2xlKCdlY3ItcmVwby1yb2xlJywgW1xuICAgICAge1xuICAgICAgICBBY3Rpb246ICdzdHM6QXNzdW1lUm9sZScsXG4gICAgICAgIEVmZmVjdDogJ0FsbG93JyxcbiAgICAgICAgUHJpbmNpcGFsOiB7IEFXUzogY2FsbGVyLkFjY291bnQgfSxcbiAgICAgIH0sXG4gICAgXSwgW1xuICAgICAge1xuICAgICAgICBFZmZlY3Q6ICdBbGxvdycsXG4gICAgICAgIFJlc291cmNlOiAnKicsXG4gICAgICAgIEFjdGlvbjogWydlY3I6R2V0QXV0aG9yaXphdGlvblRva2VuJ10sXG4gICAgICB9LFxuICAgIF0pO1xuXG4gICAgYXdhaXQgZml4dHVyZS5hd3Mud2FpdEZvckFzc3VtZVJvbGUocm9sZUFybik7XG5cbiAgICBhd2FpdCB0ZXN0RG9ja2VyQ3JlZGVudGlhbChmaXh0dXJlLCB7XG4gICAgICBlY3JSZXBvc2l0b3J5OiB0cnVlLFxuICAgICAgLy8gVGhpcyByb2xlIG11c3QgaGF2ZSBwZXJtaXNzaW9ucyB0byBjYWxsIGBlY3I6R2V0QXV0aG9yaXphdGlvblRva2VuYFxuICAgICAgYXNzdW1lUm9sZUFybjogcm9sZUFybixcbiAgICB9KTtcbiAgfSksXG4pO1xuXG4vKlxuXG4vLyBTS0lQUEVEIEZPUiBOT1dcbi8vIFJlcXVpcmVzIFNlY3JldHNNYW5hZ2VyIHBlcm1pc3Npb25zIG9uIHRoZSByb2xlIHRoYXQncyBleGVjdXRpbmcgdGhpcywgYW5kIHRoYXQnc1xuLy8gdG9vIG11Y2ggdG8gc2V0IHVwIHJpZ2h0IG5vdy5cblxuaW50ZWdUZXN0KFxuICAnZG9ja2VyLWNyZWRlbnRpYWwtY2RrLWFzc2V0cyByZWFkIGZyb20gU2VjcmV0c01hbmFnZXInLFxuICB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICBjb25zdCBzZWNyZXQgPSBhd2FpdCBmaXh0dXJlLmF3cy5zZWNyZXRzTWFuYWdlci5zZW5kKG5ldyBDcmVhdGVTZWNyZXRDb21tYW5kKHtcbiAgICAgIE5hbWU6IGBvdXItc2VjcmV0LSR7Zml4dHVyZS5yYW5kb21TdHJpbmd9YCxcbiAgICAgIFNlY3JldFN0cmluZzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICB1c2VybmFtZTogJ3Rlc3QtdXNlcicsXG4gICAgICAgIHBhc3N3b3JkOiAndGVzdC1wYXNzd29yZCcsXG4gICAgICB9KSxcbiAgICB9KSk7XG4gICAgZml4dHVyZS5hd3MuYWRkQ2xlYW51cCgoKSA9PiBmaXh0dXJlLmF3cy5zZWNyZXRzTWFuYWdlci5zZW5kKG5ldyBEZWxldGVTZWNyZXRDb21tYW5kKHtcbiAgICAgIFNlY3JldElkOiBzZWNyZXQuQVJOLFxuICAgIH0pKSk7XG5cbiAgICBhd2FpdCB0ZXN0RG9ja2VyQ3JlZGVudGlhbChmaXh0dXJlLCB7XG4gICAgICBzZWNyZXRzTWFuYWdlclNlY3JldElkOiBzZWNyZXQuQVJOLFxuICAgICAgc2VjcmV0c1VzZXJuYW1lRmllbGQ6ICd1c2VybmFtZScsXG4gICAgICBzZWNyZXRzUGFzc3dvcmRGaWVsZDogJ3Bhc3N3b3JkJyxcbiAgICB9KTtcbiAgfSksXG4pO1xuXG4qL1xuXG5hc3luYyBmdW5jdGlvbiB0ZXN0RG9ja2VyQ3JlZGVudGlhbChmaXh0dXJlOiBUZXN0Rml4dHVyZSwgY3JlZFNvdXJjZTogRG9ja2VyRG9tYWluQ3JlZGVudGlhbFNvdXJjZSkge1xuICBjb25zdCBkb21haW4gPSAnaW50ZWcudGVzdC5kb21haW4nO1xuICBjb25zdCBjcmVkc0ZpbGVQYXRoID0gcGF0aC5qb2luKGZpeHR1cmUuaW50ZWdUZXN0RGlyLCAnY2RrLWRvY2tlci1jcmVkcy5qc29uJyk7XG5cbiAgZnMud3JpdGVGaWxlU3luYyhjcmVkc0ZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeSh7XG4gICAgdmVyc2lvbjogJzEuMCcsXG4gICAgZG9tYWluQ3JlZGVudGlhbHM6IHtcbiAgICAgIFtkb21haW5dOiBjcmVkU291cmNlLFxuICAgIH0sXG4gIH0pKTtcblxuICBjb25zdCBpbnB1dCA9IHBhdGguam9pbihmaXh0dXJlLmludGVnVGVzdERpciwgJ2lucHV0LnR4dCcpO1xuICBmcy53cml0ZUZpbGVTeW5jKGlucHV0LCBgJHtkb21haW59XFxuYCk7XG5cbiAgYXdhaXQgZml4dHVyZS5jZGtBc3NldHMubWFrZUNsaUF2YWlsYWJsZSgpO1xuICBjb25zdCBvdXRwdXQgPSBhd2FpdCBmaXh0dXJlLnNoZWxsKFsnZG9ja2VyLWNyZWRlbnRpYWwtY2RrLWFzc2V0cycsICdnZXQnXSwge1xuICAgIG1vZEVudjoge1xuICAgICAgLi4uZml4dHVyZS5jZGtTaGVsbEVudigpLFxuICAgICAgQ0RLX0RPQ0tFUl9DUkVEU19GSUxFOiBjcmVkc0ZpbGVQYXRoLFxuICAgIH0sXG4gICAgc3RkaW86IFtmcy5vcGVuU3luYyhpbnB1dCwgJ3InKV0sXG4gICAgY2FwdHVyZVN0ZGVycjogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IHJlc3BvbnNlID0gSlNPTi5wYXJzZShvdXRwdXQpO1xuICBleHBlY3QocmVzcG9uc2UpLnRvTWF0Y2hPYmplY3Qoe1xuICAgIFVzZXJuYW1lOiBleHBlY3QuYW55dGhpbmcoKSxcbiAgICBTZWNyZXQ6IGV4cGVjdC5hbnl0aGluZygpLFxuICB9KTtcbn1cbiJdfQ==
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWFzc2V0cy1kb2NrZXItY3JlZGVudGlhbC5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGstYXNzZXRzLWRvY2tlci1jcmVkZW50aWFsLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsOEZBQThGO0FBQzlGLG9EQUErRDtBQUkvRCxzQ0FBK0U7QUFFL0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMseUVBQXlFO0FBRTNHLElBQUEsZUFBUyxFQUNQLHdFQUF3RSxFQUN4RSxJQUFBLGVBQVMsRUFBQyxJQUFBLHdCQUFrQixFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUM3QyxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLHFDQUF3QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFNUUsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUU7UUFDL0Q7WUFDRSxNQUFNLEVBQUUsZ0JBQWdCO1lBQ3hCLE1BQU0sRUFBRSxPQUFPO1lBQ2YsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUU7U0FDbkM7S0FDRixFQUFFO1FBQ0Q7WUFDRSxNQUFNLEVBQUUsT0FBTztZQUNmLFFBQVEsRUFBRSxHQUFHO1lBQ2IsTUFBTSxFQUFFLENBQUMsMkJBQTJCLENBQUM7U0FDdEM7S0FDRixDQUFDLENBQUM7SUFFSCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFN0MsTUFBTSxvQkFBb0IsQ0FBQyxPQUFPLEVBQUU7UUFDbEMsYUFBYSxFQUFFLElBQUk7UUFDbkIsc0VBQXNFO1FBQ3RFLGFBQWEsRUFBRSxPQUFPO0tBQ3ZCLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDLENBQ0osQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNEJFO0FBRUYsS0FBSyxVQUFVLG9CQUFvQixDQUFDLE9BQW9CLEVBQUUsVUFBd0M7SUFDaEcsTUFBTSxNQUFNLEdBQUcsbUJBQW1CLENBQUM7SUFDbkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLHVCQUF1QixDQUFDLENBQUM7SUFFL0UsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUM3QyxPQUFPLEVBQUUsS0FBSztRQUNkLGlCQUFpQixFQUFFO1lBQ2pCLENBQUMsTUFBTSxDQUFDLEVBQUUsVUFBVTtTQUNyQjtLQUNGLENBQUMsQ0FBQyxDQUFDO0lBRUosTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNELEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsQ0FBQztJQUV2QyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMzQyxJQUFJLE1BQU0sR0FBVyxFQUFFLENBQUM7SUFFeEIsTUFBTSxJQUFBLFdBQUssRUFBQyxPQUFPLENBQUMsTUFBTSxFQUFFLDRCQUE0QixFQUFFLFdBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDekYsTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ3BFLE1BQU0sRUFBRTtnQkFDTixHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUU7Z0JBQ3hCLHFCQUFxQixFQUFFLGFBQWE7YUFDckM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNoQyxhQUFhLEVBQUUsS0FBSztTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUM3QixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUMzQixNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRTtLQUMxQixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbi8vIGltcG9ydCB7IENyZWF0ZVNlY3JldENvbW1hbmQsIERlbGV0ZVNlY3JldENvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc2VjcmV0cy1tYW5hZ2VyJztcbmltcG9ydCB7IEdldENhbGxlcklkZW50aXR5Q29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zdHMnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1yZWxhdGl2ZS1wYWNrYWdlc1xuaW1wb3J0IHR5cGUgeyBEb2NrZXJEb21haW5DcmVkZW50aWFsU291cmNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vQGF3cy1jZGsvY2RrLWFzc2V0cy1saWIvbGliL3ByaXZhdGUvZG9ja2VyLWNyZWRlbnRpYWxzJztcbmltcG9ydCB0eXBlIHsgVGVzdEZpeHR1cmUgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRoRGVmYXVsdEZpeHR1cmUsIHdpdGhSZXRyeSwgcmV0cnkgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuXG5qZXN0LnNldFRpbWVvdXQoMiAqIDYwICogNjBfMDAwKTsgLy8gSW5jbHVkZXMgdGhlIHRpbWUgdG8gYWNxdWlyZSBsb2Nrcywgd29yc3QtY2FzZSBzaW5nbGUtdGhyZWFkZWQgcnVudGltZVxuXG5pbnRlZ1Rlc3QoXG4gICdkb2NrZXItY3JlZGVudGlhbC1jZGstYXNzZXRzIGNhbiBhc3N1bWUgcm9sZSBhbmQgZmV0Y2ggRUNSIGNyZWRlbnRpYWxzJyxcbiAgd2l0aFJldHJ5KHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIGNvbnN0IGNhbGxlciA9IGF3YWl0IGZpeHR1cmUuYXdzLnN0cy5zZW5kKG5ldyBHZXRDYWxsZXJJZGVudGl0eUNvbW1hbmQoe30pKTtcblxuICAgIGNvbnN0IHJvbGVBcm4gPSBhd2FpdCBmaXh0dXJlLmF3cy50ZW1wb3JhcnlSb2xlKCdlY3ItcmVwby1yb2xlJywgW1xuICAgICAge1xuICAgICAgICBBY3Rpb246ICdzdHM6QXNzdW1lUm9sZScsXG4gICAgICAgIEVmZmVjdDogJ0FsbG93JyxcbiAgICAgICAgUHJpbmNpcGFsOiB7IEFXUzogY2FsbGVyLkFjY291bnQgfSxcbiAgICAgIH0sXG4gICAgXSwgW1xuICAgICAge1xuICAgICAgICBFZmZlY3Q6ICdBbGxvdycsXG4gICAgICAgIFJlc291cmNlOiAnKicsXG4gICAgICAgIEFjdGlvbjogWydlY3I6R2V0QXV0aG9yaXphdGlvblRva2VuJ10sXG4gICAgICB9LFxuICAgIF0pO1xuXG4gICAgYXdhaXQgZml4dHVyZS5hd3Mud2FpdEZvckFzc3VtZVJvbGUocm9sZUFybik7XG5cbiAgICBhd2FpdCB0ZXN0RG9ja2VyQ3JlZGVudGlhbChmaXh0dXJlLCB7XG4gICAgICBlY3JSZXBvc2l0b3J5OiB0cnVlLFxuICAgICAgLy8gVGhpcyByb2xlIG11c3QgaGF2ZSBwZXJtaXNzaW9ucyB0byBjYWxsIGBlY3I6R2V0QXV0aG9yaXphdGlvblRva2VuYFxuICAgICAgYXNzdW1lUm9sZUFybjogcm9sZUFybixcbiAgICB9KTtcbiAgfSkpLFxuKTtcblxuLypcblxuLy8gU0tJUFBFRCBGT1IgTk9XXG4vLyBSZXF1aXJlcyBTZWNyZXRzTWFuYWdlciBwZXJtaXNzaW9ucyBvbiB0aGUgcm9sZSB0aGF0J3MgZXhlY3V0aW5nIHRoaXMsIGFuZCB0aGF0J3Ncbi8vIHRvbyBtdWNoIHRvIHNldCB1cCByaWdodCBub3cuXG5cbmludGVnVGVzdChcbiAgJ2RvY2tlci1jcmVkZW50aWFsLWNkay1hc3NldHMgcmVhZCBmcm9tIFNlY3JldHNNYW5hZ2VyJyxcbiAgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgY29uc3Qgc2VjcmV0ID0gYXdhaXQgZml4dHVyZS5hd3Muc2VjcmV0c01hbmFnZXIuc2VuZChuZXcgQ3JlYXRlU2VjcmV0Q29tbWFuZCh7XG4gICAgICBOYW1lOiBgb3VyLXNlY3JldC0ke2ZpeHR1cmUucmFuZG9tU3RyaW5nfWAsXG4gICAgICBTZWNyZXRTdHJpbmc6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgdXNlcm5hbWU6ICd0ZXN0LXVzZXInLFxuICAgICAgICBwYXNzd29yZDogJ3Rlc3QtcGFzc3dvcmQnLFxuICAgICAgfSksXG4gICAgfSkpO1xuICAgIGZpeHR1cmUuYXdzLmFkZENsZWFudXAoKCkgPT4gZml4dHVyZS5hd3Muc2VjcmV0c01hbmFnZXIuc2VuZChuZXcgRGVsZXRlU2VjcmV0Q29tbWFuZCh7XG4gICAgICBTZWNyZXRJZDogc2VjcmV0LkFSTixcbiAgICB9KSkpO1xuXG4gICAgYXdhaXQgdGVzdERvY2tlckNyZWRlbnRpYWwoZml4dHVyZSwge1xuICAgICAgc2VjcmV0c01hbmFnZXJTZWNyZXRJZDogc2VjcmV0LkFSTixcbiAgICAgIHNlY3JldHNVc2VybmFtZUZpZWxkOiAndXNlcm5hbWUnLFxuICAgICAgc2VjcmV0c1Bhc3N3b3JkRmllbGQ6ICdwYXNzd29yZCcsXG4gICAgfSk7XG4gIH0pLFxuKTtcblxuKi9cblxuYXN5bmMgZnVuY3Rpb24gdGVzdERvY2tlckNyZWRlbnRpYWwoZml4dHVyZTogVGVzdEZpeHR1cmUsIGNyZWRTb3VyY2U6IERvY2tlckRvbWFpbkNyZWRlbnRpYWxTb3VyY2UpIHtcbiAgY29uc3QgZG9tYWluID0gJ2ludGVnLnRlc3QuZG9tYWluJztcbiAgY29uc3QgY3JlZHNGaWxlUGF0aCA9IHBhdGguam9pbihmaXh0dXJlLmludGVnVGVzdERpciwgJ2Nkay1kb2NrZXItY3JlZHMuanNvbicpO1xuXG4gIGZzLndyaXRlRmlsZVN5bmMoY3JlZHNGaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoe1xuICAgIHZlcnNpb246ICcxLjAnLFxuICAgIGRvbWFpbkNyZWRlbnRpYWxzOiB7XG4gICAgICBbZG9tYWluXTogY3JlZFNvdXJjZSxcbiAgICB9LFxuICB9KSk7XG5cbiAgY29uc3QgaW5wdXQgPSBwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsICdpbnB1dC50eHQnKTtcbiAgZnMud3JpdGVGaWxlU3luYyhpbnB1dCwgYCR7ZG9tYWlufVxcbmApO1xuXG4gIGF3YWl0IGZpeHR1cmUuY2RrQXNzZXRzLm1ha2VDbGlBdmFpbGFibGUoKTtcbiAgbGV0IG91dHB1dDogc3RyaW5nID0gJyc7XG5cbiAgYXdhaXQgcmV0cnkocHJvY2Vzcy5zdGRvdXQsICdHZXR0aW5nIGRvY2tlciBjcmVkZW50aWFscycsIHJldHJ5LmZvclNlY29uZHMoNjApLCBhc3luYyAoKSA9PiB7XG4gICAgb3V0cHV0ID0gYXdhaXQgZml4dHVyZS5zaGVsbChbJ2RvY2tlci1jcmVkZW50aWFsLWNkay1hc3NldHMnLCAnZ2V0J10sIHtcbiAgICAgIG1vZEVudjoge1xuICAgICAgICAuLi5maXh0dXJlLmNka1NoZWxsRW52KCksXG4gICAgICAgIENES19ET0NLRVJfQ1JFRFNfRklMRTogY3JlZHNGaWxlUGF0aCxcbiAgICAgIH0sXG4gICAgICBzdGRpbzogW2ZzLm9wZW5TeW5jKGlucHV0LCAncicpXSxcbiAgICAgIGNhcHR1cmVTdGRlcnI6IGZhbHNlLFxuICAgIH0pO1xuICB9KTtcblxuICBjb25zdCByZXNwb25zZSA9IEpTT04ucGFyc2Uob3V0cHV0KTtcbiAgZXhwZWN0KHJlc3BvbnNlKS50b01hdGNoT2JqZWN0KHtcbiAgICBVc2VybmFtZTogZXhwZWN0LmFueXRoaW5nKCksXG4gICAgU2VjcmV0OiBleHBlY3QuYW55dGhpbmcoKSxcbiAgfSk7XG59XG4iXX0=
@@ -4,7 +4,7 @@ const testcase_1 = require("./testcase");
4
4
  const lib_1 = require("../../../lib");
5
5
  const language = 'java';
6
6
  jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
7
- (0, lib_1.integTest)(`cdk migrate ${language} deploys successfully`, (0, lib_1.withCDKMigrateFixture)(language, async (fixture) => {
7
+ (0, lib_1.integTest)(`cdk migrate ${language} deploys successfully`, (0, lib_1.withRetry)((0, lib_1.withCDKMigrateFixture)(language, async (fixture) => {
8
8
  await (0, testcase_1.deploysSuccessfully)(fixture, language);
9
- }));
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLW1pZ3JhdGUtZGVwbG95cy1zdWNjZXNzZnVsbHktamF2YS5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGstbWlncmF0ZS1kZXBsb3lzLXN1Y2Nlc3NmdWxseS1qYXZhLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUFpRDtBQUNqRCxzQ0FBZ0U7QUFFaEUsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDO0FBRXhCLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLHlFQUF5RTtBQUUzRyxJQUFBLGVBQVMsRUFDUCxlQUFlLFFBQVEsdUJBQXVCLEVBQzlDLElBQUEsMkJBQXFCLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNoRCxNQUFNLElBQUEsOEJBQW1CLEVBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQyxDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXBsb3lzU3VjY2Vzc2Z1bGx5IH0gZnJvbSAnLi90ZXN0Y2FzZSc7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhDREtNaWdyYXRlRml4dHVyZSB9IGZyb20gJy4uLy4uLy4uL2xpYic7XG5cbmNvbnN0IGxhbmd1YWdlID0gJ2phdmEnO1xuXG5qZXN0LnNldFRpbWVvdXQoMiAqIDYwICogNjBfMDAwKTsgLy8gSW5jbHVkZXMgdGhlIHRpbWUgdG8gYWNxdWlyZSBsb2Nrcywgd29yc3QtY2FzZSBzaW5nbGUtdGhyZWFkZWQgcnVudGltZVxuXG5pbnRlZ1Rlc3QoXG4gIGBjZGsgbWlncmF0ZSAke2xhbmd1YWdlfSBkZXBsb3lzIHN1Y2Nlc3NmdWxseWAsXG4gIHdpdGhDREtNaWdyYXRlRml4dHVyZShsYW5ndWFnZSwgYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICBhd2FpdCBkZXBsb3lzU3VjY2Vzc2Z1bGx5KGZpeHR1cmUsIGxhbmd1YWdlKTtcbiAgfSksXG4pO1xuIl19
9
+ })));
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLW1pZ3JhdGUtZGVwbG95cy1zdWNjZXNzZnVsbHktamF2YS5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGstbWlncmF0ZS1kZXBsb3lzLXN1Y2Nlc3NmdWxseS1qYXZhLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUFpRDtBQUNqRCxzQ0FBMkU7QUFFM0UsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDO0FBRXhCLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLHlFQUF5RTtBQUUzRyxJQUFBLGVBQVMsRUFDUCxlQUFlLFFBQVEsdUJBQXVCLEVBQzlDLElBQUEsZUFBUyxFQUFDLElBQUEsMkJBQXFCLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUMxRCxNQUFNLElBQUEsOEJBQW1CLEVBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQyxDQUFDLENBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlcGxveXNTdWNjZXNzZnVsbHkgfSBmcm9tICcuL3Rlc3RjYXNlJztcbmltcG9ydCB7IGludGVnVGVzdCwgd2l0aENES01pZ3JhdGVGaXh0dXJlLCB3aXRoUmV0cnkgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuXG5jb25zdCBsYW5ndWFnZSA9ICdqYXZhJztcblxuamVzdC5zZXRUaW1lb3V0KDIgKiA2MCAqIDYwXzAwMCk7IC8vIEluY2x1ZGVzIHRoZSB0aW1lIHRvIGFjcXVpcmUgbG9ja3MsIHdvcnN0LWNhc2Ugc2luZ2xlLXRocmVhZGVkIHJ1bnRpbWVcblxuaW50ZWdUZXN0KFxuICBgY2RrIG1pZ3JhdGUgJHtsYW5ndWFnZX0gZGVwbG95cyBzdWNjZXNzZnVsbHlgLFxuICB3aXRoUmV0cnkod2l0aENES01pZ3JhdGVGaXh0dXJlKGxhbmd1YWdlLCBhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIGF3YWl0IGRlcGxveXNTdWNjZXNzZnVsbHkoZml4dHVyZSwgbGFuZ3VhZ2UpO1xuICB9KSksXG4pO1xuIl19
@@ -7,6 +7,7 @@ const lib_1 = require("../../lib");
7
7
  context.library.assertJsiiPackagesAvailable();
8
8
  const shell = lib_1.ShellHelper.fromContext(context);
9
9
  await context.cli.makeCliAvailable();
10
+ await shell.shell(['go', 'version']);
10
11
  await shell.shell(['cdk', 'init', '--lib-version', context.library.requestedVersion(), '-l', 'go', template]);
11
12
  // Canaries will use the generated go.mod as is
12
13
  // For pipeline tests we replace the source with the locally build one
@@ -16,10 +17,10 @@ const lib_1 = require("../../lib");
16
17
  throw new Error('Cannot figure out CI system root directory');
17
18
  }
18
19
  await shell.shell(['go', 'mod', 'edit', '-replace', `github.com/aws/aws-cdk-go/awscdk/v2=${dir}/go/awscdk`]);
20
+ await shell.shell(['go', 'mod', 'tidy']);
19
21
  }
20
- await shell.shell(['go', 'mod', 'tidy']);
21
22
  await shell.shell(['go', 'test']);
22
23
  await shell.shell(['cdk', 'synth']);
23
24
  })));
24
25
  });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC1nby5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbml0LWdvLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUF5RjtBQUV6RixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDdkMsSUFBQSxlQUFTLEVBQUMsV0FBVyxRQUFRLEVBQUUsRUFBRSxJQUFBLDRCQUFzQixFQUFDLElBQUEsa0JBQVksRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDckYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3pDLE9BQU8sQ0FBQyxPQUFPLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUU5QyxNQUFNLEtBQUssR0FBRyxpQkFBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUVyQyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRTlHLCtDQUErQztRQUMvQyxzRUFBc0U7UUFDdEUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO1lBQzFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDVCxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7WUFDaEUsQ0FBQztZQUVELE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSx1Q0FBdUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQy9HLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDekMsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDbEMsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhUZW1wb3JhcnlEaXJlY3RvcnksIFNoZWxsSGVscGVyLCB3aXRoUGFja2FnZXMgfSBmcm9tICcuLi8uLi9saWInO1xuXG5bJ2FwcCcsICdzYW1wbGUtYXBwJ10uZm9yRWFjaCh0ZW1wbGF0ZSA9PiB7XG4gIGludGVnVGVzdChgaW5pdCBnbyAke3RlbXBsYXRlfWAsIHdpdGhUZW1wb3JhcnlEaXJlY3Rvcnkod2l0aFBhY2thZ2VzKGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgY29uc3QgaXNDYW5hcnkgPSAhIXByb2Nlc3MuZW52LklTX0NBTkFSWTtcbiAgICBjb250ZXh0LmxpYnJhcnkuYXNzZXJ0SnNpaVBhY2thZ2VzQXZhaWxhYmxlKCk7XG5cbiAgICBjb25zdCBzaGVsbCA9IFNoZWxsSGVscGVyLmZyb21Db250ZXh0KGNvbnRleHQpO1xuICAgIGF3YWl0IGNvbnRleHQuY2xpLm1ha2VDbGlBdmFpbGFibGUoKTtcblxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnY2RrJywgJ2luaXQnLCAnLS1saWItdmVyc2lvbicsIGNvbnRleHQubGlicmFyeS5yZXF1ZXN0ZWRWZXJzaW9uKCksICctbCcsICdnbycsIHRlbXBsYXRlXSk7XG5cbiAgICAvLyBDYW5hcmllcyB3aWxsIHVzZSB0aGUgZ2VuZXJhdGVkIGdvLm1vZCBhcyBpc1xuICAgIC8vIEZvciBwaXBlbGluZSB0ZXN0cyB3ZSByZXBsYWNlIHRoZSBzb3VyY2Ugd2l0aCB0aGUgbG9jYWxseSBidWlsZCBvbmVcbiAgICBpZiAoIWlzQ2FuYXJ5KSB7XG4gICAgICBjb25zdCBkaXIgPSBwcm9jZXNzLmVudi5DT0RFQlVJTERfU1JDX0RJUiA/PyBwcm9jZXNzLmVudi5HSVRIVUJfV09SS1NQQUNFO1xuICAgICAgaWYgKCFkaXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZmlndXJlIG91dCBDSSBzeXN0ZW0gcm9vdCBkaXJlY3RvcnknKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgc2hlbGwuc2hlbGwoWydnbycsICdtb2QnLCAnZWRpdCcsICctcmVwbGFjZScsIGBnaXRodWIuY29tL2F3cy9hd3MtY2RrLWdvL2F3c2Nkay92Mj0ke2Rpcn0vZ28vYXdzY2RrYF0pO1xuICAgIH1cblxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnZ28nLCAnbW9kJywgJ3RpZHknXSk7XG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWydnbycsICd0ZXN0J10pO1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnY2RrJywgJ3N5bnRoJ10pO1xuICB9KSkpO1xufSk7XG4iXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC1nby5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbml0LWdvLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUF5RjtBQUV6RixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDdkMsSUFBQSxlQUFTLEVBQUMsV0FBVyxRQUFRLEVBQUUsRUFBRSxJQUFBLDRCQUFzQixFQUFDLElBQUEsa0JBQVksRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDckYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3pDLE9BQU8sQ0FBQyxPQUFPLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUU5QyxNQUFNLEtBQUssR0FBRyxpQkFBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUVyQyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNyQyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRTlHLCtDQUErQztRQUMvQyxzRUFBc0U7UUFDdEUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO1lBQzFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDVCxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7WUFDaEUsQ0FBQztZQUVELE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSx1Q0FBdUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQzdHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDbEMsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhUZW1wb3JhcnlEaXJlY3RvcnksIFNoZWxsSGVscGVyLCB3aXRoUGFja2FnZXMgfSBmcm9tICcuLi8uLi9saWInO1xuXG5bJ2FwcCcsICdzYW1wbGUtYXBwJ10uZm9yRWFjaCh0ZW1wbGF0ZSA9PiB7XG4gIGludGVnVGVzdChgaW5pdCBnbyAke3RlbXBsYXRlfWAsIHdpdGhUZW1wb3JhcnlEaXJlY3Rvcnkod2l0aFBhY2thZ2VzKGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgY29uc3QgaXNDYW5hcnkgPSAhIXByb2Nlc3MuZW52LklTX0NBTkFSWTtcbiAgICBjb250ZXh0LmxpYnJhcnkuYXNzZXJ0SnNpaVBhY2thZ2VzQXZhaWxhYmxlKCk7XG5cbiAgICBjb25zdCBzaGVsbCA9IFNoZWxsSGVscGVyLmZyb21Db250ZXh0KGNvbnRleHQpO1xuICAgIGF3YWl0IGNvbnRleHQuY2xpLm1ha2VDbGlBdmFpbGFibGUoKTtcblxuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnZ28nLCAndmVyc2lvbiddKTtcbiAgICBhd2FpdCBzaGVsbC5zaGVsbChbJ2NkaycsICdpbml0JywgJy0tbGliLXZlcnNpb24nLCBjb250ZXh0LmxpYnJhcnkucmVxdWVzdGVkVmVyc2lvbigpLCAnLWwnLCAnZ28nLCB0ZW1wbGF0ZV0pO1xuXG4gICAgLy8gQ2FuYXJpZXMgd2lsbCB1c2UgdGhlIGdlbmVyYXRlZCBnby5tb2QgYXMgaXNcbiAgICAvLyBGb3IgcGlwZWxpbmUgdGVzdHMgd2UgcmVwbGFjZSB0aGUgc291cmNlIHdpdGggdGhlIGxvY2FsbHkgYnVpbGQgb25lXG4gICAgaWYgKCFpc0NhbmFyeSkge1xuICAgICAgY29uc3QgZGlyID0gcHJvY2Vzcy5lbnYuQ09ERUJVSUxEX1NSQ19ESVIgPz8gcHJvY2Vzcy5lbnYuR0lUSFVCX1dPUktTUEFDRTtcbiAgICAgIGlmICghZGlyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGZpZ3VyZSBvdXQgQ0kgc3lzdGVtIHJvb3QgZGlyZWN0b3J5Jyk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnZ28nLCAnbW9kJywgJ2VkaXQnLCAnLXJlcGxhY2UnLCBgZ2l0aHViLmNvbS9hd3MvYXdzLWNkay1nby9hd3NjZGsvdjI9JHtkaXJ9L2dvL2F3c2Nka2BdKTtcbiAgICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnZ28nLCAnbW9kJywgJ3RpZHknXSk7XG4gICAgfVxuXG4gICAgYXdhaXQgc2hlbGwuc2hlbGwoWydnbycsICd0ZXN0J10pO1xuICAgIGF3YWl0IHNoZWxsLnNoZWxsKFsnY2RrJywgJ3N5bnRoJ10pO1xuICB9KSkpO1xufSk7XG4iXX0=