@aws-cdk-testing/cli-integ 3.32.2 → 3.32.4
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/npm-shrinkwrap.json +1 -1
- package/package.json +2 -2
- package/tests/cli-integ-tests/deploy/cdk-deploy-nested-stacks-with-fn-join-export.integtest.js +3 -4
- package/tests/cli-integ-tests/deploy/cdk-deploy-skips-unnecessary-updates-for-nested-stacks.integtest.js +13 -12
- package/tests/cli-integ-tests/diff/cdk-cdk-diff---method-change-set-does-not-leave-stack-in-review-in-progress.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/diff/cdk-cdk-diff---method-change-set-does-not-leave-stack-in-review-in-progress.integtest.js +12 -0
package/npm-shrinkwrap.json
CHANGED
package/package.json
CHANGED
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"organization": true
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@aws-cdk/toolkit-lib": "1.26.
|
|
42
|
+
"@aws-cdk/toolkit-lib": "1.26.2",
|
|
43
43
|
"@aws-cdk/yarn-cling": "0.0.0",
|
|
44
44
|
"@cdklabs/eslint-plugin": "^2.0.5",
|
|
45
45
|
"@stylistic/eslint-plugin": "^3",
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
"publishConfig": {
|
|
126
126
|
"access": "public"
|
|
127
127
|
},
|
|
128
|
-
"version": "3.32.
|
|
128
|
+
"version": "3.32.4",
|
|
129
129
|
"packageManager": "yarn@4.13.0",
|
|
130
130
|
"types": "lib/index.d.ts",
|
|
131
131
|
"//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"yarn projen\"."
|
package/tests/cli-integ-tests/deploy/cdk-deploy-nested-stacks-with-fn-join-export.integtest.js
CHANGED
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const lib_1 = require("../../../lib");
|
|
4
4
|
(0, lib_1.integTest)('deploy nested stacks with Fn::Join export names', (0, lib_1.withSpecificFixture)('nested-stack-with-fn-join-export', async (fixture) => {
|
|
5
|
-
// This should succeed.
|
|
6
|
-
//
|
|
7
|
-
// use Fn::Join with the same runtime reference to build export names.
|
|
5
|
+
// This should succeed. IncludeNestedStacks:true is now set and CloudFormation
|
|
6
|
+
// correctly handles Fn::Join export names in nested stacks (server-side fix).
|
|
8
7
|
await fixture.cdkDeploy('nested-stacks-fn-join-export', { captureStderr: false });
|
|
9
8
|
}));
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWRlcGxveS1uZXN0ZWQtc3RhY2tzLXdpdGgtZm4tam9pbi1leHBvcnQuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLWRlcGxveS1uZXN0ZWQtc3RhY2tzLXdpdGgtZm4tam9pbi1leHBvcnQuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0NBQThEO0FBRTlELElBQUEsZUFBUyxFQUNQLGlEQUFpRCxFQUNqRCxJQUFBLHlCQUFtQixFQUFDLGtDQUFrQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUN4RSw4RUFBOEU7SUFDOUUsOEVBQThFO0lBQzlFLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsRUFBRSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ3BGLENBQUMsQ0FBQyxDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhTcGVjaWZpY0ZpeHR1cmUgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuXG5pbnRlZ1Rlc3QoXG4gICdkZXBsb3kgbmVzdGVkIHN0YWNrcyB3aXRoIEZuOjpKb2luIGV4cG9ydCBuYW1lcycsXG4gIHdpdGhTcGVjaWZpY0ZpeHR1cmUoJ25lc3RlZC1zdGFjay13aXRoLWZuLWpvaW4tZXhwb3J0JywgYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICAvLyBUaGlzIHNob3VsZCBzdWNjZWVkLiBJbmNsdWRlTmVzdGVkU3RhY2tzOnRydWUgaXMgbm93IHNldCBhbmQgQ2xvdWRGb3JtYXRpb25cbiAgICAvLyBjb3JyZWN0bHkgaGFuZGxlcyBGbjo6Sm9pbiBleHBvcnQgbmFtZXMgaW4gbmVzdGVkIHN0YWNrcyAoc2VydmVyLXNpZGUgZml4KS5cbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnbmVzdGVkLXN0YWNrcy1mbi1qb2luLWV4cG9ydCcsIHsgY2FwdHVyZVN0ZGVycjogZmFsc2UgfSk7XG4gIH0pLFxuKTtcbiJdfQ==
|
|
@@ -3,21 +3,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
|
|
4
4
|
const lib_1 = require("../../../lib");
|
|
5
5
|
(0, lib_1.integTest)('deploy skips unnecessary updates for nested stacks', (0, lib_1.withDefaultFixture)(async (fixture) => {
|
|
6
|
-
// Deploy a stack with
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
// executes a new change set.
|
|
6
|
+
// Deploy a stack with nested stacks. With IncludeNestedStacks, CloudFormation
|
|
7
|
+
// can accurately detect whether nested stacks have actual changes, rather than
|
|
8
|
+
// always reporting them as needing an update.
|
|
10
9
|
const stackArn = await fixture.cdkDeploy('with-nested-stack', { captureStderr: false });
|
|
11
|
-
|
|
12
|
-
//
|
|
13
|
-
// without any actual resource changes.
|
|
10
|
+
const changeSet1 = await getLatestChangeSet();
|
|
11
|
+
// Deploy the same stack again, there should be no new change set created
|
|
14
12
|
await fixture.cdkDeploy('with-nested-stack');
|
|
15
13
|
const changeSet2 = await getLatestChangeSet();
|
|
16
|
-
expect(changeSet2.
|
|
17
|
-
// Deploy the stack again with --force
|
|
18
|
-
|
|
14
|
+
expect(changeSet2.ChangeSetId).toEqual(changeSet1.ChangeSetId);
|
|
15
|
+
// Deploy the stack again with --force. CloudFormation creates a changeset but
|
|
16
|
+
// accurately reports no changes (including in nested stacks), so the changeset
|
|
17
|
+
// is not executed and the stack's ChangeSetId remains the same.
|
|
18
|
+
const forceOutput = await fixture.cdk(fixture.cdkDeployCommandLine('with-nested-stack', { options: ['--force'] }));
|
|
19
|
+
expect(forceOutput).toContain('CloudFormation reported that the deployment would not make any changes');
|
|
19
20
|
const changeSet3 = await getLatestChangeSet();
|
|
20
|
-
expect(changeSet3.ChangeSetId).
|
|
21
|
+
expect(changeSet3.ChangeSetId).toEqual(changeSet2.ChangeSetId);
|
|
21
22
|
// Deploy the stack again with tags, expected to create a new changeset
|
|
22
23
|
// even though the resources didn't change.
|
|
23
24
|
await fixture.cdkDeploy('with-nested-stack', { options: ['--tags', 'key=value'] });
|
|
@@ -32,4 +33,4 @@ const lib_1 = require("../../../lib");
|
|
|
32
33
|
return response.Stacks?.[0];
|
|
33
34
|
}
|
|
34
35
|
}));
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWRlcGxveS1za2lwcy11bm5lY2Vzc2FyeS11cGRhdGVzLWZvci1uZXN0ZWQtc3RhY2tzLmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay1kZXBsb3ktc2tpcHMtdW5uZWNlc3NhcnktdXBkYXRlcy1mb3ItbmVzdGVkLXN0YWNrcy5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwRUFBdUU7QUFDdkUsc0NBQTZEO0FBRTdELElBQUEsZUFBUyxFQUNQLG9EQUFvRCxFQUNwRCxJQUFBLHdCQUFrQixFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNuQyw4RUFBOEU7SUFDOUUsK0VBQStFO0lBQy9FLDhDQUE4QztJQUM5QyxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4RixNQUFNLFVBQVUsR0FBRyxNQUFNLGtCQUFrQixFQUFFLENBQUM7SUFFOUMseUVBQXlFO0lBQ3pFLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sVUFBVSxHQUFHLE1BQU0sa0JBQWtCLEVBQUUsQ0FBQztJQUM5QyxNQUFNLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFL0QsOEVBQThFO0lBQzlFLCtFQUErRTtJQUMvRSxnRUFBZ0U7SUFDaEUsTUFBTSxXQUFXLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNuQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQzVFLENBQUM7SUFDRixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDLHdFQUF3RSxDQUFDLENBQUM7SUFDeEcsTUFBTSxVQUFVLEdBQUcsTUFBTSxrQkFBa0IsRUFBRSxDQUFDO0lBQzlDLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUUvRCx1RUFBdUU7SUFDdkUsMkNBQTJDO0lBQzNDLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkYsTUFBTSxVQUFVLEdBQUcsTUFBTSxrQkFBa0IsRUFBRSxDQUFDO0lBQzlDLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFbkUsS0FBSyxVQUFVLGtCQUFrQjtRQUMvQixNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLDZDQUFxQixDQUFDLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNwRSxPQUFPLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc2NyaWJlU3RhY2tzQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhEZWZhdWx0Rml4dHVyZSB9IGZyb20gJy4uLy4uLy4uL2xpYic7XG5cbmludGVnVGVzdChcbiAgJ2RlcGxveSBza2lwcyB1bm5lY2Vzc2FyeSB1cGRhdGVzIGZvciBuZXN0ZWQgc3RhY2tzJyxcbiAgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgLy8gRGVwbG95IGEgc3RhY2sgd2l0aCBuZXN0ZWQgc3RhY2tzLiBXaXRoIEluY2x1ZGVOZXN0ZWRTdGFja3MsIENsb3VkRm9ybWF0aW9uXG4gICAgLy8gY2FuIGFjY3VyYXRlbHkgZGV0ZWN0IHdoZXRoZXIgbmVzdGVkIHN0YWNrcyBoYXZlIGFjdHVhbCBjaGFuZ2VzLCByYXRoZXIgdGhhblxuICAgIC8vIGFsd2F5cyByZXBvcnRpbmcgdGhlbSBhcyBuZWVkaW5nIGFuIHVwZGF0ZS5cbiAgICBjb25zdCBzdGFja0FybiA9IGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCd3aXRoLW5lc3RlZC1zdGFjaycsIHsgY2FwdHVyZVN0ZGVycjogZmFsc2UgfSk7XG4gICAgY29uc3QgY2hhbmdlU2V0MSA9IGF3YWl0IGdldExhdGVzdENoYW5nZVNldCgpO1xuXG4gICAgLy8gRGVwbG95IHRoZSBzYW1lIHN0YWNrIGFnYWluLCB0aGVyZSBzaG91bGQgYmUgbm8gbmV3IGNoYW5nZSBzZXQgY3JlYXRlZFxuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCd3aXRoLW5lc3RlZC1zdGFjaycpO1xuICAgIGNvbnN0IGNoYW5nZVNldDIgPSBhd2FpdCBnZXRMYXRlc3RDaGFuZ2VTZXQoKTtcbiAgICBleHBlY3QoY2hhbmdlU2V0Mi5DaGFuZ2VTZXRJZCkudG9FcXVhbChjaGFuZ2VTZXQxLkNoYW5nZVNldElkKTtcblxuICAgIC8vIERlcGxveSB0aGUgc3RhY2sgYWdhaW4gd2l0aCAtLWZvcmNlLiBDbG91ZEZvcm1hdGlvbiBjcmVhdGVzIGEgY2hhbmdlc2V0IGJ1dFxuICAgIC8vIGFjY3VyYXRlbHkgcmVwb3J0cyBubyBjaGFuZ2VzIChpbmNsdWRpbmcgaW4gbmVzdGVkIHN0YWNrcyksIHNvIHRoZSBjaGFuZ2VzZXRcbiAgICAvLyBpcyBub3QgZXhlY3V0ZWQgYW5kIHRoZSBzdGFjaydzIENoYW5nZVNldElkIHJlbWFpbnMgdGhlIHNhbWUuXG4gICAgY29uc3QgZm9yY2VPdXRwdXQgPSBhd2FpdCBmaXh0dXJlLmNkayhcbiAgICAgIGZpeHR1cmUuY2RrRGVwbG95Q29tbWFuZExpbmUoJ3dpdGgtbmVzdGVkLXN0YWNrJywgeyBvcHRpb25zOiBbJy0tZm9yY2UnXSB9KSxcbiAgICApO1xuICAgIGV4cGVjdChmb3JjZU91dHB1dCkudG9Db250YWluKCdDbG91ZEZvcm1hdGlvbiByZXBvcnRlZCB0aGF0IHRoZSBkZXBsb3ltZW50IHdvdWxkIG5vdCBtYWtlIGFueSBjaGFuZ2VzJyk7XG4gICAgY29uc3QgY2hhbmdlU2V0MyA9IGF3YWl0IGdldExhdGVzdENoYW5nZVNldCgpO1xuICAgIGV4cGVjdChjaGFuZ2VTZXQzLkNoYW5nZVNldElkKS50b0VxdWFsKGNoYW5nZVNldDIuQ2hhbmdlU2V0SWQpO1xuXG4gICAgLy8gRGVwbG95IHRoZSBzdGFjayBhZ2FpbiB3aXRoIHRhZ3MsIGV4cGVjdGVkIHRvIGNyZWF0ZSBhIG5ldyBjaGFuZ2VzZXRcbiAgICAvLyBldmVuIHRob3VnaCB0aGUgcmVzb3VyY2VzIGRpZG4ndCBjaGFuZ2UuXG4gICAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ3dpdGgtbmVzdGVkLXN0YWNrJywgeyBvcHRpb25zOiBbJy0tdGFncycsICdrZXk9dmFsdWUnXSB9KTtcbiAgICBjb25zdCBjaGFuZ2VTZXQ0ID0gYXdhaXQgZ2V0TGF0ZXN0Q2hhbmdlU2V0KCk7XG4gICAgZXhwZWN0KGNoYW5nZVNldDQuQ2hhbmdlU2V0SWQpLm5vdC50b0VxdWFsKGNoYW5nZVNldDMuQ2hhbmdlU2V0SWQpO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0Q2hhbmdlU2V0KCkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXh0dXJlLmF3cy5jbG91ZEZvcm1hdGlvbi5zZW5kKG5ldyBEZXNjcmliZVN0YWNrc0NvbW1hbmQoeyBTdGFja05hbWU6IHN0YWNrQXJuIH0pKTtcbiAgICAgIGlmICghcmVzcG9uc2UuU3RhY2tzPy5bMF0pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWQgbm90IGdldCBhIENoYW5nZVNldCBhdCBhbGwnKTtcbiAgICAgIH1cbiAgICAgIGZpeHR1cmUubG9nKGBGb3VuZCBDaGFuZ2UgU2V0ICR7cmVzcG9uc2UuU3RhY2tzPy5bMF0uQ2hhbmdlU2V0SWR9YCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuU3RhY2tzPy5bMF07XG4gICAgfVxuICB9KSxcbik7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const lib_1 = require("../../../lib");
|
|
4
|
+
(0, lib_1.integTest)('cdk diff --method=change-set does not leave stack in REVIEW_IN_PROGRESS', (0, lib_1.withDefaultFixture)(async (fixture) => {
|
|
5
|
+
const stackName = fixture.fullStackName('test-1');
|
|
6
|
+
// WHEN - diff against a stack that has not been deployed
|
|
7
|
+
await fixture.cdk(['diff', '--method=change-set', stackName]);
|
|
8
|
+
// THEN - the stack should be deleted or deleting (not stuck in REVIEW_IN_PROGRESS)
|
|
9
|
+
const status = await fixture.aws.stackStatus(stackName);
|
|
10
|
+
expect(status).not.toBe('REVIEW_IN_PROGRESS');
|
|
11
|
+
}));
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWNkay1kaWZmLS0tbWV0aG9kLWNoYW5nZS1zZXQtZG9lcy1ub3QtbGVhdmUtc3RhY2staW4tcmV2aWV3LWluLXByb2dyZXNzLmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay1jZGstZGlmZi0tLW1ldGhvZC1jaGFuZ2Utc2V0LWRvZXMtbm90LWxlYXZlLXN0YWNrLWluLXJldmlldy1pbi1wcm9ncmVzcy5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzQ0FBNkQ7QUFFN0QsSUFBQSxlQUFTLEVBQ1AseUVBQXlFLEVBQ3pFLElBQUEsd0JBQWtCLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ25DLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFbEQseURBQXlEO0lBQ3pELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBRTlELG1GQUFtRjtJQUNuRixNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDaEQsQ0FBQyxDQUFDLENBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGludGVnVGVzdCwgd2l0aERlZmF1bHRGaXh0dXJlIH0gZnJvbSAnLi4vLi4vLi4vbGliJztcblxuaW50ZWdUZXN0KFxuICAnY2RrIGRpZmYgLS1tZXRob2Q9Y2hhbmdlLXNldCBkb2VzIG5vdCBsZWF2ZSBzdGFjayBpbiBSRVZJRVdfSU5fUFJPR1JFU1MnLFxuICB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICBjb25zdCBzdGFja05hbWUgPSBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3Rlc3QtMScpO1xuXG4gICAgLy8gV0hFTiAtIGRpZmYgYWdhaW5zdCBhIHN0YWNrIHRoYXQgaGFzIG5vdCBiZWVuIGRlcGxveWVkXG4gICAgYXdhaXQgZml4dHVyZS5jZGsoWydkaWZmJywgJy0tbWV0aG9kPWNoYW5nZS1zZXQnLCBzdGFja05hbWVdKTtcblxuICAgIC8vIFRIRU4gLSB0aGUgc3RhY2sgc2hvdWxkIGJlIGRlbGV0ZWQgb3IgZGVsZXRpbmcgKG5vdCBzdHVjayBpbiBSRVZJRVdfSU5fUFJPR1JFU1MpXG4gICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgZml4dHVyZS5hd3Muc3RhY2tTdGF0dXMoc3RhY2tOYW1lKTtcbiAgICBleHBlY3Qoc3RhdHVzKS5ub3QudG9CZSgnUkVWSUVXX0lOX1BST0dSRVNTJyk7XG4gIH0pLFxuKTtcbiJdfQ==
|