aws-cdk 2.32.0 → 2.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/THIRD_PARTY_LICENSES +10 -6
- package/build-info.json +2 -2
- package/lib/api/bootstrap/bootstrap-template.yaml +1 -3
- package/lib/api/cloudformation-deployments.d.ts +1 -1
- package/lib/api/cloudformation-deployments.js +3 -3
- package/lib/api/nested-stack-helpers.d.ts +13 -13
- package/lib/api/nested-stack-helpers.js +7 -7
- package/lib/api/util/cloudformation.d.ts +3 -2
- package/lib/api/util/cloudformation.js +9 -5
- package/lib/bridge.js +25 -15
- package/lib/cdk-toolkit.d.ts +7 -0
- package/lib/cdk-toolkit.js +10 -2
- package/lib/cli.js +4 -2
- package/lib/index.js +19340 -6602
- package/lib/init-templates/app/typescript/package.json +1 -1
- package/lib/init-templates/sample-app/typescript/package.json +1 -1
- package/lib/notices.js +9 -15
- package/lib/settings.d.ts +9 -0
- package/lib/settings.js +31 -2
- package/lib/setup-sandbox.js +6 -3
- package/lib/util/validate-notification-arn.d.ts +4 -0
- package/lib/util/validate-notification-arn.js +11 -0
- package/package.json +14 -13
- package/test/cdk-toolkit.test.js +22 -2
- package/test/integ/cli/app/app.js +15 -0
- package/test/integ/cli/cli.integtest.js +7 -1
- package/test/integ/cli/sam_cdk_integ_app/src/python/Function/requirements.txt +1 -1
- package/test/integ/cli/sam_cdk_integ_app/src/python/Layer/requirements.txt +1 -1
- package/test/settings.test.js +19 -1
- package/test/util/cloudformation.test.js +31 -4
- package/test/util/validate-notification-arn.test.d.ts +1 -0
- package/test/util/validate-notification-arn.test.js +26 -0
|
@@ -54,6 +54,12 @@ test_helpers_1.integTest('Construct with builtin Lambda function', cdk_1.withDef
|
|
|
54
54
|
fixture.log('Setup complete!');
|
|
55
55
|
await fixture.cdkDestroy('builtin-lambda-function');
|
|
56
56
|
}));
|
|
57
|
+
// this is to ensure that asset bundling for apps under a stage does not break
|
|
58
|
+
test_helpers_1.integTest('Stage with bundled Lambda function', cdk_1.withDefaultFixture(async (fixture) => {
|
|
59
|
+
await fixture.cdkDeploy('bundling-stage/BundlingStack');
|
|
60
|
+
fixture.log('Setup complete!');
|
|
61
|
+
await fixture.cdkDestroy('bundling-stage/BundlingStack');
|
|
62
|
+
}));
|
|
57
63
|
test_helpers_1.integTest('Two ways of showing the version', cdk_1.withDefaultFixture(async (fixture) => {
|
|
58
64
|
const version1 = await fixture.cdk(['version'], { verbose: false });
|
|
59
65
|
const version2 = await fixture.cdk(['--version'], { verbose: false });
|
|
@@ -960,4 +966,4 @@ async function listChildren(parent, pred) {
|
|
|
960
966
|
async function listChildDirs(parent) {
|
|
961
967
|
return listChildren(parent, async (fullPath) => (await fs_1.promises.stat(fullPath)).isDirectory());
|
|
962
968
|
}
|
|
963
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsaS5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyQkFBZ0Q7QUFDaEQseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3Qix3Q0FBOEM7QUFDOUMsd0NBQTBGO0FBQzFGLHdDQUEwRTtBQUMxRSwwREFBb0Q7QUFFcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFPLENBQUMsQ0FBQztBQUV6QixRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTtJQUNsQix3QkFBUyxDQUFDLGtCQUFrQixFQUFFLHdCQUFrQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNqRSxNQUFNLFlBQVksR0FBRyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsRyxNQUFNLFVBQVUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzSCxNQUFNLGFBQWEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8s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TUFBTSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELElBQUksTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDeEIsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNwQjtLQUNGO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsS0FBSyxVQUFVLGFBQWEsQ0FBQyxNQUFjO0lBQ3pDLE9BQU8sWUFBWSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLGFBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ25HLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcm9taXNlcyBhcyBmcywgZXhpc3RzU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyByZXRyeSwgc2xlZXAgfSBmcm9tICcuLi9oZWxwZXJzL2F3cyc7XG5pbXBvcnQgeyBjbG9uZURpcmVjdG9yeSwgTUFKT1JfVkVSU0lPTiwgc2hlbGwsIHdpdGhEZWZhdWx0Rml4dHVyZSB9IGZyb20gJy4uL2hlbHBlcnMvY2RrJztcbmltcG9ydCB7IHJhbmRvbUludGVnZXIsIHdpdGhTYW1JbnRlZ3JhdGlvbkZpeHR1cmUgfSBmcm9tICcuLi9oZWxwZXJzL3NhbSc7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QgfSBmcm9tICcuLi9oZWxwZXJzL3Rlc3QtaGVscGVycyc7XG5cbmplc3Quc2V0VGltZW91dCg2MDBfMDAwKTtcblxuZGVzY3JpYmUoJ2NpJywgKCkgPT4ge1xuICBpbnRlZ1Rlc3QoJ291dHB1dCB0byBzdGRlcnInLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICBjb25zdCBkZXBsb3lPdXRwdXQgPSBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgndGVzdC0yJywgeyBjYXB0dXJlU3RkZXJyOiB0cnVlLCBvbmx5U3RkZXJyOiB0cnVlIH0pO1xuICAgIGNvbnN0IGRpZmZPdXRwdXQgPSBhd2FpdCBmaXh0dXJlLmNkayhbJ2RpZmYnLCBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3Rlc3QtMicpXSwgeyBjYXB0dXJlU3RkZXJyOiB0cnVlLCBvbmx5U3RkZXJyOiB0cnVlIH0pO1xuICAgIGNvbnN0IGRlc3Ryb3lPdXRwdXQgPSBhd2FpdCBmaXh0dXJlLmNka0Rlc3Ryb3koJ3Rlc3QtMicsIHsgY2FwdHVyZVN0ZGVycjogdHJ1ZSwgb25seVN0ZGVycjogdHJ1ZSB9KTtcbiAgICBleHBlY3QoZGVwbG95T3V0cHV0KS5ub3QudG9FcXVhbCgnJyk7XG4gICAgZXhwZWN0KGRlc3Ryb3lPdXRwdXQpLm5vdC50b0VxdWFsKCcnKTtcbiAgICBleHBlY3QoZGlmZk91dHB1dCkubm90LnRvRXF1YWwoJycpO1xuICB9KSk7XG4gIGRlc2NyaWJlKCdjaT10cnVlJywgKCkgPT4ge1xuICAgIGludGVnVGVzdCgnb3V0cHV0IHRvIHN0ZG91dCcsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuXG4gICAgICBjb25zdCBleGVjT3B0aW9ucyA9IHtcbiAgICAgICAgY2FwdHVyZVN0ZGVycjogdHJ1ZSxcbiAgICAgICAgb25seVN0ZGVycjogdHJ1ZSxcbiAgICAgICAgbW9kRW52OiB7IENJOiAndHJ1ZScgfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGRlcGxveU91dHB1dCA9IGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCd0ZXN0LTInLCBleGVjT3B0aW9ucyk7XG4gICAgICBjb25zdCBkaWZmT3V0cHV0ID0gYXdhaXQgZml4dHVyZS5jZGsoWydkaWZmJywgZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTInKV0sIGV4ZWNPcHRpb25zKTtcbiAgICAgIGNvbnN0IGRlc3Ryb3lPdXRwdXQgPSBhd2FpdCBmaXh0dXJlLmNka0Rlc3Ryb3koJ3Rlc3QtMicsIGV4ZWNPcHRpb25zKTtcbiAgICAgIGV4cGVjdChkZXBsb3lPdXRwdXQpLnRvRXF1YWwoJycpO1xuICAgICAgZXhwZWN0KGRlc3Ryb3lPdXRwdXQpLnRvRXF1YWwoJycpO1xuICAgICAgZXhwZWN0KGRpZmZPdXRwdXQpLnRvRXF1YWwoJycpO1xuICAgIH0pKTtcbiAgfSk7XG59KTtcblxuaW50ZWdUZXN0KCdWUEMgTG9va3VwJywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGZpeHR1cmUubG9nKCdNYWtpbmcgc3VyZSB3ZSBhcmUgY2xlYW4gYmVmb3JlIHN0YXJ0aW5nLicpO1xuICBhd2FpdCBmaXh0dXJlLmNka0Rlc3Ryb3koJ2RlZmluZS12cGMnLCB7IG1vZEVudjogeyBFTkFCTEVfVlBDX1RFU1RJTkc6ICdERUZJTkUnIH0gfSk7XG5cbiAgZml4dHVyZS5sb2coJ1NldHRpbmcgdXA6IGNyZWF0aW5nIGEgVlBDIHdpdGgga25vd24gdGFncycpO1xuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnZGVmaW5lLXZwYycsIHsgbW9kRW52OiB7IEVOQUJMRV9WUENfVEVTVElORzogJ0RFRklORScgfSB9KTtcbiAgZml4dHVyZS5sb2coJ1NldHVwIGNvbXBsZXRlIScpO1xuXG4gIGZpeHR1cmUubG9nKCdWZXJpZnlpbmcgd2UgY2FuIG5vdyBpbXBvcnQgdGhhdCBWUEMnKTtcbiAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ2ltcG9ydC12cGMnLCB7IG1vZEVudjogeyBFTkFCTEVfVlBDX1RFU1RJTkc6ICdJTVBPUlQnIH0gfSk7XG59KSk7XG5cbi8vIHRlc3RpbmcgYSBjb25zdHJ1Y3Qgd2l0aCBhIGJ1aWx0aW4gTm9kZWpzIExhbWJkYSBGdW5jdGlvbi5cbi8vIEluIHRoaXMgY2FzZSB3ZSBhcmUgdGVzdGluZyB0aGUgczMuQnVja2V0IGNvbnN0cnVjdCB3aXRoIHRoZVxuLy8gYXV0b0RlbGV0ZU9iamVjdHMgcHJvcCBzZXQgdG8gdHJ1ZSwgd2hpY2ggY3JlYXRlcyBhIExhbWJkYSBiYWNrZWRcbi8vIEN1c3RvbVJlc291cmNlLiBTaW5jZSB0aGUgY29tcGlsZWQgTGFtYmRhIGNvZGUgKGUuZy4gX19lbnRyeXBvaW50X18uanMpXG4vLyBpcyBidW5kbGVkIGFzIHBhcnQgb2YgdGhlIENESyBwYWNrYWdlLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBkb24ndFxuLy8gaW50cm9kdWNlIGNoYW5nZXMgdG8gdGhlIGNvbXBpbGVkIGNvZGUgdGhhdCBjb3VsZCBwcmV2ZW50IHRoZSBMYW1iZGEgZnJvbVxuLy8gZXhlY3V0aW5nLiBJZiB3ZSBkbywgdGhpcyB0ZXN0IHdpbGwgdGltZW91dCBhbmQgZmFpbC5cbmludGVnVGVzdCgnQ29uc3RydWN0IHdpdGggYnVpbHRpbiBMYW1iZGEgZnVuY3Rpb24nLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ2J1aWx0aW4tbGFtYmRhLWZ1bmN0aW9uJyk7XG4gIGZpeHR1cmUubG9nKCdTZXR1cCBjb21wbGV0ZSEnKTtcbiAgYXdhaXQgZml4dHVyZS5jZGtEZXN0cm95KCdidWlsdGluLWxhbWJkYS1mdW5jdGlvbicpO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ1R3byB3YXlzIG9mIHNob3dpbmcgdGhlIHZlcnNpb24nLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgY29uc3QgdmVyc2lvbjEgPSBhd2FpdCBmaXh0dXJlLmNkayhbJ3ZlcnNpb24nXSwgeyB2ZXJib3NlOiBmYWxzZSB9KTtcbiAgY29uc3QgdmVyc2lvbjIgPSBhd2FpdCBmaXh0dXJlLmNkayhbJy0tdmVyc2lvbiddLCB7IHZlcmJvc2U6IGZhbHNlIH0pO1xuXG4gIGV4cGVjdCh2ZXJzaW9uMSkudG9FcXVhbCh2ZXJzaW9uMik7XG59KSk7XG5cbmludGVnVGVzdCgnVGVybWluYXRpb24gcHJvdGVjdGlvbicsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBjb25zdCBzdGFja05hbWUgPSAndGVybWluYXRpb24tcHJvdGVjdGlvbic7XG4gIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KHN0YWNrTmFtZSk7XG5cbiAgLy8gVHJ5IGEgZGVzdHJveSB0aGF0IHNob3VsZCBmYWlsXG4gIGF3YWl0IGV4cGVjdChmaXh0dXJlLmNka0Rlc3Ryb3koc3RhY2tOYW1lKSkucmVqZWN0cy50b1Rocm93KCdleGl0ZWQgd2l0aCBlcnJvcicpO1xuXG4gIC8vIENhbiB1cGRhdGUgdGVybWluYXRpb24gcHJvdGVjdGlvbiBldmVuIHRob3VnaCB0aGUgY2hhbmdlIHNldCBkb2Vzbid0IGNvbnRhaW4gY2hhbmdlc1xuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveShzdGFja05hbWUsIHsgbW9kRW52OiB7IFRFUk1JTkFUSU9OX1BST1RFQ1RJT046ICdGQUxTRScgfSB9KTtcbiAgYXdhaXQgZml4dHVyZS5jZGtEZXN0cm95KHN0YWNrTmFtZSk7XG59KSk7XG5cbmludGVnVGVzdCgnY2RrIHN5bnRoJywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGF3YWl0IGZpeHR1cmUuY2RrKFsnc3ludGgnLCBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3Rlc3QtMScpXSk7XG4gIGV4cGVjdChmaXh0dXJlLnRlbXBsYXRlKCd0ZXN0LTEnKSkudG9FcXVhbChleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgUmVzb3VyY2VzOiB7XG4gICAgICB0b3BpYzY5ODMxNDkxOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OlNOUzo6VG9waWMnLFxuICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICdhd3M6Y2RrOnBhdGgnOiBgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH0tdGVzdC0xL3RvcGljL1Jlc291cmNlYCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSkpO1xuXG4gIGF3YWl0IGZpeHR1cmUuY2RrKFsnc3ludGgnLCBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3Rlc3QtMicpXSwgeyB2ZXJib3NlOiBmYWxzZSB9KTtcbiAgZXhwZWN0KGZpeHR1cmUudGVtcGxhdGUoJ3Rlc3QtMicpKS50b0VxdWFsKGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIHRvcGljMTUyRDg0QTM3OiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OlNOUzo6VG9waWMnLFxuICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICdhd3M6Y2RrOnBhdGgnOiBgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH0tdGVzdC0yL3RvcGljMS9SZXNvdXJjZWAsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdG9waWMyQTRGQjU0N0Y6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6U05TOjpUb3BpYycsXG4gICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgJ2F3czpjZGs6cGF0aCc6IGAke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4fS10ZXN0LTIvdG9waWMyL1Jlc291cmNlYCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSkpO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ3NzbSBwYXJhbWV0ZXIgcHJvdmlkZXIgZXJyb3InLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgYXdhaXQgZXhwZWN0KGZpeHR1cmUuY2RrKFsnc3ludGgnLFxuICAgIGZpeHR1cmUuZnVsbFN0YWNrTmFtZSgnbWlzc2luZy1zc20tcGFyYW1ldGVyJyksXG4gICAgJy1jJywgJ3Rlc3Q6c3NtLXBhcmFtZXRlci1uYW1lPS9kb2VzL25vdC9leGlzdCddLCB7XG4gICAgYWxsb3dFcnJFeGl0OiB0cnVlLFxuICB9KSkucmVzb2x2ZXMudG9Db250YWluKCdTU00gcGFyYW1ldGVyIG5vdCBhdmFpbGFibGUgaW4gYWNjb3VudCcpO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ2F1dG9tYXRpYyBvcmRlcmluZycsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAvLyBEZXBsb3kgdGhlIGNvbnN1bWluZyBzdGFjayB3aGljaCB3aWxsIGluY2x1ZGUgdGhlIHByb2R1Y2luZyBzdGFja1xuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnb3JkZXItY29uc3VtaW5nJyk7XG5cbiAgLy8gRGVzdHJveSB0aGUgcHJvdmlkaW5nIHN0YWNrIHdoaWNoIHdpbGwgaW5jbHVkZSB0aGUgY29uc3VtaW5nIHN0YWNrXG4gIGF3YWl0IGZpeHR1cmUuY2RrRGVzdHJveSgnb3JkZXItcHJvdmlkaW5nJyk7XG59KSk7XG5cbmludGVnVGVzdCgnY29udGV4dCBzZXR0aW5nJywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGF3YWl0IGZzLndyaXRlRmlsZShwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsICdjZGsuY29udGV4dC5qc29uJyksIEpTT04uc3RyaW5naWZ5KHtcbiAgICBjb250ZXh0a2V5OiAndGhpcyBpcyB0aGUgY29udGV4dCB2YWx1ZScsXG4gIH0pKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBleHBlY3QoZml4dHVyZS5jZGsoWydjb250ZXh0J10pKS5yZXNvbHZlcy50b0NvbnRhaW4oJ3RoaXMgaXMgdGhlIGNvbnRleHQgdmFsdWUnKTtcblxuICAgIC8vIFRlc3QgdGhhdCBkZWxldGluZyB0aGUgY29udGV4dGtleSB3b3Jrc1xuICAgIGF3YWl0IGZpeHR1cmUuY2RrKFsnY29udGV4dCcsICctLXJlc2V0JywgJ2NvbnRleHRrZXknXSk7XG4gICAgYXdhaXQgZXhwZWN0KGZpeHR1cmUuY2RrKFsnY29udGV4dCddKSkucmVzb2x2ZXMubm90LnRvQ29udGFpbigndGhpcyBpcyB0aGUgY29udGV4dCB2YWx1ZScpO1xuXG4gICAgLy8gVGVzdCB0aGF0IGZvcmNlZCBkZWxldGUgb2YgdGhlIGNvbnRleHQga2V5IGRvZXMgbm90IHRocm93XG4gICAgYXdhaXQgZml4dHVyZS5jZGsoWydjb250ZXh0JywgJy1mJywgJy0tcmVzZXQnLCAnY29udGV4dGtleSddKTtcblxuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGZzLnVubGluayhwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsICdjZGsuY29udGV4dC5qc29uJykpO1xuICB9XG59KSk7XG5cbmludGVnVGVzdCgnY29udGV4dCBpbiBzdGFnZSBwcm9wYWdhdGVzIHRvIHRvcCcsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBhd2FpdCBleHBlY3QoZml4dHVyZS5jZGtTeW50aCh7XG4gICAgLy8gVGhpcyB3aWxsIG1ha2UgaXQgZXJyb3IgdG8gcHJvdmUgdGhhdCB0aGUgY29udGV4dCBidWJibGVzIHVwLCBhbmQgYWxzbyB0aGF0IHdlIGNhbiBmYWlsIG9uIGNvbW1hbmRcbiAgICBvcHRpb25zOiBbJy0tbm8tbG9va3VwcyddLFxuICAgIG1vZEVudjoge1xuICAgICAgSU5URUdfU1RBQ0tfU0VUOiAnc3RhZ2UtdXNpbmctY29udGV4dCcsXG4gICAgfSxcbiAgICBhbGxvd0VyckV4aXQ6IHRydWUsXG4gIH0pKS5yZXNvbHZlcy50b0NvbnRhaW4oJ0NvbnRleHQgbG9va3VwcyBoYXZlIGJlZW4gZGlzYWJsZWQnKTtcbn0pKTtcblxuaW50ZWdUZXN0KCdkZXBsb3knLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgY29uc3Qgc3RhY2tBcm4gPSBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgndGVzdC0yJywgeyBjYXB0dXJlU3RkZXJyOiBmYWxzZSB9KTtcblxuICAvLyB2ZXJpZnkgdGhlIG51bWJlciBvZiByZXNvdXJjZXMgaW4gdGhlIHN0YWNrXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZml4dHVyZS5hd3MuY2xvdWRGb3JtYXRpb24oJ2Rlc2NyaWJlU3RhY2tSZXNvdXJjZXMnLCB7XG4gICAgU3RhY2tOYW1lOiBzdGFja0FybixcbiAgfSk7XG4gIGV4cGVjdChyZXNwb25zZS5TdGFja1Jlc291cmNlcz8ubGVuZ3RoKS50b0VxdWFsKDIpO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ2RlcGxveSBhbGwnLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgY29uc3QgYXJucyA9IGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCd0ZXN0LSonLCB7IGNhcHR1cmVTdGRlcnI6IGZhbHNlIH0pO1xuXG4gIC8vIHZlcmlmeSB0aGF0IHdlIG9ubHkgZGVwbG95ZWQgYSBzaW5nbGUgc3RhY2sgKHRoZXJlJ3MgYSBzaW5nbGUgQVJOIGluIHRoZSBvdXRwdXQpXG4gIGV4cGVjdChhcm5zLnNwbGl0KCdcXG4nKS5sZW5ndGgpLnRvRXF1YWwoMik7XG59KSk7XG5cbmludGVnVGVzdCgnbmVzdGVkIHN0YWNrIHdpdGggcGFyYW1ldGVycycsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAvLyBTVEFDS19OQU1FX1BSRUZJWCBpcyB1c2VkIGluIE15VG9waWNQYXJhbSB0byBhbGxvdyBtdWx0aXBsZSBpbnN0YW5jZXNcbiAgLy8gb2YgdGhpcyB0ZXN0IHRvIHJ1biBpbiBwYXJhbGxlbCwgb3RoZXdpc2UgdGhleSB3aWxsIGF0dGVtcHQgdG8gY3JlYXRlIHRoZSBzYW1lIFNOUyB0b3BpYy5cbiAgY29uc3Qgc3RhY2tBcm4gPSBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnd2l0aC1uZXN0ZWQtc3RhY2stdXNpbmctcGFyYW1ldGVycycsIHtcbiAgICBvcHRpb25zOiBbJy0tcGFyYW1ldGVycycsIGBNeVRvcGljUGFyYW09JHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH1UaGVyZUlzTm9TcG9vbmBdLFxuICAgIGNhcHR1cmVTdGRlcnI6IGZhbHNlLFxuICB9KTtcblxuICAvLyB2ZXJpZnkgdGhhdCB3ZSBvbmx5IGRlcGxveWVkIGEgc2luZ2xlIHN0YWNrICh0aGVyZSdzIGEgc2luZ2xlIEFSTiBpbiB0aGUgb3V0cHV0KVxuICBleHBlY3Qoc3RhY2tBcm4uc3BsaXQoJ1xcbicpLmxlbmd0aCkudG9FcXVhbCgxKTtcblxuICAvLyB2ZXJpZnkgdGhlIG51bWJlciBvZiByZXNvdXJjZXMgaW4gdGhlIHN0YWNrXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZml4dHVyZS5hd3MuY2xvdWRGb3JtYXRpb24oJ2Rlc2NyaWJlU3RhY2tSZXNvdXJjZXMnLCB7XG4gICAgU3RhY2tOYW1lOiBzdGFja0FybixcbiAgfSk7XG4gIGV4cGVjdChyZXNwb25zZS5TdGFja1Jlc291cmNlcz8ubGVuZ3RoKS50b0VxdWFsKDEpO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ2RlcGxveSB3aXRob3V0IGV4ZWN1dGUgYSBuYW1lZCBjaGFuZ2Ugc2V0Jywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGNvbnN0IGNoYW5nZVNldE5hbWUgPSAnY3VzdG9tLWNoYW5nZS1zZXQtbmFtZSc7XG4gIGNvbnN0IHN0YWNrQXJuID0gYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ3Rlc3QtMicsIHtcbiAgICBvcHRpb25zOiBbJy0tbm8tZXhlY3V0ZScsICctLWNoYW5nZS1zZXQtbmFtZScsIGNoYW5nZVNldE5hbWVdLFxuICAgIGNhcHR1cmVTdGRlcnI6IGZhbHNlLFxuICB9KTtcbiAgLy8gdmVyaWZ5IHRoYXQgd2Ugb25seSBkZXBsb3llZCBhIHNpbmdsZSBzdGFjayAodGhlcmUncyBhIHNpbmdsZSBBUk4gaW4gdGhlIG91dHB1dClcbiAgZXhwZWN0KHN0YWNrQXJuLnNwbGl0KCdcXG4nKS5sZW5ndGgpLnRvRXF1YWwoMSk7XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXh0dXJlLmF3cy5jbG91ZEZvcm1hdGlvbignZGVzY3JpYmVTdGFja3MnLCB7XG4gICAgU3RhY2tOYW1lOiBzdGFja0FybixcbiAgfSk7XG4gIGV4cGVjdChyZXNwb25zZS5TdGFja3M/LlswXS5TdGFja1N0YXR1cykudG9FcXVhbCgnUkVWSUVXX0lOX1BST0dSRVNTJyk7XG5cbiAgLy92ZXJpZnkgYSBjaGFuZ2Ugc2V0IHdhcyBjcmVhdGVkIHdpdGggdGhlIHByb3ZpZGVkIG5hbWVcbiAgY29uc3QgY2hhbmdlU2V0UmVzcG9uc2UgPSBhd2FpdCBmaXh0dXJlLmF3cy5jbG91ZEZvcm1hdGlvbignbGlzdENoYW5nZVNldHMnLCB7XG4gICAgU3RhY2tOYW1lOiBzdGFja0FybixcbiAgfSk7XG4gIGNvbnN0IGNoYW5nZVNldHMgPSBjaGFuZ2VTZXRSZXNwb25zZS5TdW1tYXJpZXMgfHwgW107XG4gIGV4cGVjdChjaGFuZ2VTZXRzLmxlbmd0aCkudG9FcXVhbCgxKTtcbiAgZXhwZWN0KGNoYW5nZVNldHNbMF0uQ2hhbmdlU2V0TmFtZSkudG9FcXVhbChjaGFuZ2VTZXROYW1lKTtcbiAgZXhwZWN0KGNoYW5nZVNldHNbMF0uU3RhdHVzKS50b0VxdWFsKCdDUkVBVEVfQ09NUExFVEUnKTtcbn0pKTtcblxuaW50ZWdUZXN0KCdzZWN1cml0eSByZWxhdGVkIGNoYW5nZXMgd2l0aG91dCBhIENMSSBhcmUgZXhwZWN0ZWQgdG8gZmFpbCcsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAvLyByZWRpcmVjdCAvZGV2L251bGwgdG8gc3RkaW4sIHdoaWNoIG1lYW5zIHRoZXJlIHdpbGwgbm90IGJlIHR0eSBhdHRhY2hlZFxuICAvLyBzaW5jZSB0aGlzIHN0YWNrIGluY2x1ZGVzIHNlY3VyaXR5LXJlbGF0ZWQgY2hhbmdlcywgdGhlIGRlcGxveW1lbnQgc2hvdWxkXG4gIC8vIGltbWVkaWF0ZWx5IGZhaWwgYmVjYXVzZSB3ZSBjYW4ndCBjb25maXJtIHRoZSBjaGFuZ2VzXG4gIGNvbnN0IHN0YWNrTmFtZSA9ICdpYW0tdGVzdCc7XG4gIGF3YWl0IGV4cGVjdChmaXh0dXJlLmNka0RlcGxveShzdGFja05hbWUsIHtcbiAgICBvcHRpb25zOiBbJzwnLCAnL2Rldi9udWxsJ10sIC8vIEg0eCwgdGhpcyBvbmx5IHdvcmtzIGJlY2F1c2UgSSBoYXBwZW4gdG8ga25vdyB3ZSBwYXNzIHNoZWxsOiB0cnVlLlxuICAgIG5ldmVyUmVxdWlyZUFwcHJvdmFsOiBmYWxzZSxcbiAgfSkpLnJlamVjdHMudG9UaHJvdygnZXhpdGVkIHdpdGggZXJyb3InKTtcblxuICAvLyBFbnN1cmUgc3RhY2sgd2FzIG5vdCBkZXBsb3llZFxuICBhd2FpdCBleHBlY3QoZml4dHVyZS5hd3MuY2xvdWRGb3JtYXRpb24oJ2Rlc2NyaWJlU3RhY2tzJywge1xuICAgIFN0YWNrTmFtZTogZml4dHVyZS5mdWxsU3RhY2tOYW1lKHN0YWNrTmFtZSksXG4gIH0pKS5yZWplY3RzLnRvVGhyb3coJ2RvZXMgbm90IGV4aXN0Jyk7XG59KSk7XG5cbmludGVnVGVzdCgnZGVwbG95IHdpbGRjYXJkIHdpdGggb3V0cHV0cycsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBjb25zdCBvdXRwdXRzRmlsZSA9IHBhdGguam9pbihmaXh0dXJlLmludGVnVGVzdERpciwgJ291dHB1dHMnLCAnb3V0cHV0cy5qc29uJyk7XG4gIGF3YWl0IGZzLm1rZGlyKHBhdGguZGlybmFtZShvdXRwdXRzRmlsZSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KFsnb3V0cHV0cy10ZXN0LSonXSwge1xuICAgIG9wdGlvbnM6IFsnLS1vdXRwdXRzLWZpbGUnLCBvdXRwdXRzRmlsZV0sXG4gIH0pO1xuXG4gIGNvbnN0IG91dHB1dHMgPSBKU09OLnBhcnNlKChhd2FpdCBmcy5yZWFkRmlsZShvdXRwdXRzRmlsZSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KSkudG9TdHJpbmcoKSk7XG4gIGV4cGVjdChvdXRwdXRzKS50b0VxdWFsKHtcbiAgICBbYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9LW91dHB1dHMtdGVzdC0xYF06IHtcbiAgICAgIFRvcGljTmFtZTogYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9LW91dHB1dHMtdGVzdC0xTXlUb3BpY2AsXG4gICAgfSxcbiAgICBbYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9LW91dHB1dHMtdGVzdC0yYF06IHtcbiAgICAgIFRvcGljTmFtZTogYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9LW91dHB1dHMtdGVzdC0yTXlPdGhlclRvcGljYCxcbiAgICB9LFxuICB9KTtcbn0pKTtcblxuaW50ZWdUZXN0KCdkZXBsb3kgd2l0aCBwYXJhbWV0ZXJzJywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGNvbnN0IHN0YWNrQXJuID0gYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ3BhcmFtLXRlc3QtMScsIHtcbiAgICBvcHRpb25zOiBbXG4gICAgICAnLS1wYXJhbWV0ZXJzJywgYFRvcGljTmFtZVBhcmFtPSR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9YmF6aW5nYWAsXG4gICAgXSxcbiAgICBjYXB0dXJlU3RkZXJyOiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXh0dXJlLmF3cy5jbG91ZEZvcm1hdGlvbignZGVzY3JpYmVTdGFja3MnLCB7XG4gICAgU3RhY2tOYW1lOiBzdGFja0FybixcbiAgfSk7XG5cbiAgZXhwZWN0KHJlc3BvbnNlLlN0YWNrcz8uWzBdLlBhcmFtZXRlcnMpLnRvQ29udGFpbkVxdWFsKFxuICAgIHtcbiAgICAgIFBhcmFtZXRlcktleTogJ1RvcGljTmFtZVBhcmFtJyxcbiAgICAgIFBhcmFtZXRlclZhbHVlOiBgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH1iYXppbmdhYCxcbiAgICB9LFxuICApO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ3VwZGF0ZSB0byBzdGFjayBpbiBST0xMQkFDS19DT01QTEVURSBzdGF0ZSB3aWxsIGRlbGV0ZSBzdGFjayBhbmQgY3JlYXRlIGEgbmV3IG9uZScsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAvLyBHSVZFTlxuICBhd2FpdCBleHBlY3QoZml4dHVyZS5jZGtEZXBsb3koJ3BhcmFtLXRlc3QtMScsIHtcbiAgICBvcHRpb25zOiBbXG4gICAgICAnLS1wYXJhbWV0ZXJzJywgYFRvcGljTmFtZVBhcmFtPSR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9QGF3d2AsXG4gICAgXSxcbiAgICBjYXB0dXJlU3RkZXJyOiBmYWxzZSxcbiAgfSkpLnJlamVjdHMudG9UaHJvdygnZXhpdGVkIHdpdGggZXJyb3InKTtcblxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpeHR1cmUuYXdzLmNsb3VkRm9ybWF0aW9uKCdkZXNjcmliZVN0YWNrcycsIHtcbiAgICBTdGFja05hbWU6IGZpeHR1cmUuZnVsbFN0YWNrTmFtZSgncGFyYW0tdGVzdC0xJyksXG4gIH0pO1xuXG4gIGNvbnN0IHN0YWNrQXJuID0gcmVzcG9uc2UuU3RhY2tzPy5bMF0uU3RhY2tJZDtcbiAgZXhwZWN0KHJlc3BvbnNlLlN0YWNrcz8uWzBdLlN0YWNrU3RhdHVzKS50b0VxdWFsKCdST0xMQkFDS19DT01QTEVURScpO1xuXG4gIC8vIFdIRU5cbiAgY29uc3QgbmV3U3RhY2tBcm4gPSBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgncGFyYW0tdGVzdC0xJywge1xuICAgIG9wdGlvbnM6IFtcbiAgICAgICctLXBhcmFtZXRlcnMnLCBgVG9waWNOYW1lUGFyYW09JHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH1hbGxnb29kYCxcbiAgICBdLFxuICAgIGNhcHR1cmVTdGRlcnI6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCBuZXdTdGFja1Jlc3BvbnNlID0gYXdhaXQgZml4dHVyZS5hd3MuY2xvdWRGb3JtYXRpb24oJ2Rlc2NyaWJlU3RhY2tzJywge1xuICAgIFN0YWNrTmFtZTogbmV3U3RhY2tBcm4sXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHN0YWNrQXJuKS5ub3QudG9FcXVhbChuZXdTdGFja0Fybik7IC8vIG5ldyBzdGFjayB3YXMgY3JlYXRlZFxuICBleHBlY3QobmV3U3RhY2tSZXNwb25zZS5TdGFja3M/LlswXS5TdGFja1N0YXR1cykudG9FcXVhbCgnQ1JFQVRFX0NPTVBMRVRFJyk7XG4gIGV4cGVjdChuZXdTdGFja1Jlc3BvbnNlLlN0YWNrcz8uWzBdLlBhcmFtZXRlcnMpLnRvQ29udGFpbkVxdWFsKFxuICAgIHtcbiAgICAgIFBhcmFtZXRlcktleTogJ1RvcGljTmFtZVBhcmFtJyxcbiAgICAgIFBhcmFtZXRlclZhbHVlOiBgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH1hbGxnb29kYCxcbiAgICB9LFxuICApO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ3N0YWNrIGluIFVQREFURV9ST0xMQkFDS19DT01QTEVURSBzdGF0ZSBjYW4gYmUgdXBkYXRlZCcsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBzdGFja0FybiA9IGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdwYXJhbS10ZXN0LTEnLCB7XG4gICAgb3B0aW9uczogW1xuICAgICAgJy0tcGFyYW1ldGVycycsIGBUb3BpY05hbWVQYXJhbT0ke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4fW5pY2VgLFxuICAgIF0sXG4gICAgY2FwdHVyZVN0ZGVycjogZmFsc2UsXG4gIH0pO1xuXG4gIGxldCByZXNwb25zZSA9IGF3YWl0IGZpeHR1cmUuYXdzLmNsb3VkRm9ybWF0aW9uKCdkZXNjcmliZVN0YWNrcycsIHtcbiAgICBTdGFja05hbWU6IHN0YWNrQXJuLFxuICB9KTtcblxuICBleHBlY3QocmVzcG9uc2UuU3RhY2tzPy5bMF0uU3RhY2tTdGF0dXMpLnRvRXF1YWwoJ0NSRUFURV9DT01QTEVURScpO1xuXG4gIC8vIGJhZCBwYXJhbWV0ZXIgbmFtZSB3aXRoIEAgd2lsbCBwdXQgc3RhY2sgaW50byBVUERBVEVfUk9MTEJBQ0tfQ09NUExFVEVcbiAgYXdhaXQgZXhwZWN0KGZpeHR1cmUuY2RrRGVwbG95KCdwYXJhbS10ZXN0LTEnLCB7XG4gICAgb3B0aW9uczogW1xuICAgICAgJy0tcGFyYW1ldGVycycsIGBUb3BpY05hbWVQYXJhbT0ke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4fUBhd3dgLFxuICAgIF0sXG4gICAgY2FwdHVyZVN0ZGVycjogZmFsc2UsXG4gIH0pKS5yZWplY3RzLnRvVGhyb3coJ2V4aXRlZCB3aXRoIGVycm9yJyk7O1xuXG4gIHJlc3BvbnNlID0gYXdhaXQgZml4dHVyZS5hd3MuY2xvdWRGb3JtYXRpb24oJ2Rlc2NyaWJlU3RhY2tzJywge1xuICAgIFN0YWNrTmFtZTogc3RhY2tBcm4sXG4gIH0pO1xuXG4gIGV4cGVjdChyZXNwb25zZS5TdGFja3M/LlswXS5TdGFja1N0YXR1cykudG9FcXVhbCgnVVBEQVRFX1JPTExCQUNLX0NPTVBMRVRFJyk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgncGFyYW0tdGVzdC0xJywge1xuICAgIG9wdGlvbnM6IFtcbiAgICAgICctLXBhcmFtZXRlcnMnLCBgVG9waWNOYW1lUGFyYW09JHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH1hbGxnb29kYCxcbiAgICBdLFxuICAgIGNhcHR1cmVTdGRlcnI6IGZhbHNlLFxuICB9KTtcblxuICByZXNwb25zZSA9IGF3YWl0IGZpeHR1cmUuYXdzLmNsb3VkRm9ybWF0aW9uKCdkZXNjcmliZVN0YWNrcycsIHtcbiAgICBTdGFja05hbWU6IHN0YWNrQXJuLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChyZXNwb25zZS5TdGFja3M/LlswXS5TdGFja1N0YXR1cykudG9FcXVhbCgnVVBEQVRFX0NPTVBMRVRFJyk7XG4gIGV4cGVjdChyZXNwb25zZS5TdGFja3M/LlswXS5QYXJhbWV0ZXJzKS50b0NvbnRhaW5FcXVhbChcbiAgICB7XG4gICAgICBQYXJhbWV0ZXJLZXk6ICdUb3BpY05hbWVQYXJhbScsXG4gICAgICBQYXJhbWV0ZXJWYWx1ZTogYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9YWxsZ29vZGAsXG4gICAgfSxcbiAgKTtcbn0pKTtcblxuaW50ZWdUZXN0KCdkZXBsb3kgd2l0aCB3aWxkY2FyZCBhbmQgcGFyYW1ldGVycycsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgncGFyYW0tdGVzdC0qJywge1xuICAgIG9wdGlvbnM6IFtcbiAgICAgICctLXBhcmFtZXRlcnMnLCBgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH0tcGFyYW0tdGVzdC0xOlRvcGljTmFtZVBhcmFtPSR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9YmF6aW5nYWAsXG4gICAgICAnLS1wYXJhbWV0ZXJzJywgYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9LXBhcmFtLXRlc3QtMjpPdGhlclRvcGljTmFtZVBhcmFtPSR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9VGhhdHNNeVNwb3RgLFxuICAgICAgJy0tcGFyYW1ldGVycycsIGAke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4fS1wYXJhbS10ZXN0LTM6RGlzcGxheU5hbWVQYXJhbT0ke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4fUhleVRoZXJlYCxcbiAgICAgICctLXBhcmFtZXRlcnMnLCBgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH0tcGFyYW0tdGVzdC0zOk90aGVyRGlzcGxheU5hbWVQYXJhbT0ke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4fUFub3RoZXJPbmVgLFxuICAgIF0sXG4gIH0pO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ2RlcGxveSB3aXRoIHBhcmFtZXRlcnMgbXVsdGknLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgY29uc3QgcGFyYW1WYWwxID0gYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9YmF6aW5nYWA7XG4gIGNvbnN0IHBhcmFtVmFsMiA9IGAke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4fT1qYWdzaGVtYXNoYDtcblxuICBjb25zdCBzdGFja0FybiA9IGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdwYXJhbS10ZXN0LTMnLCB7XG4gICAgb3B0aW9uczogW1xuICAgICAgJy0tcGFyYW1ldGVycycsIGBEaXNwbGF5TmFtZVBhcmFtPSR7cGFyYW1WYWwxfWAsXG4gICAgICAnLS1wYXJhbWV0ZXJzJywgYE90aGVyRGlzcGxheU5hbWVQYXJhbT0ke3BhcmFtVmFsMn1gLFxuICAgIF0sXG4gICAgY2FwdHVyZVN0ZGVycjogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZml4dHVyZS5hd3MuY2xvdWRGb3JtYXRpb24oJ2Rlc2NyaWJlU3RhY2tzJywge1xuICAgIFN0YWNrTmFtZTogc3RhY2tBcm4sXG4gIH0pO1xuXG4gIGV4cGVjdChyZXNwb25zZS5TdGFja3M/LlswXS5QYXJhbWV0ZXJzKS50b0NvbnRhaW5FcXVhbChcbiAgICB7XG4gICAgICBQYXJhbWV0ZXJLZXk6ICdEaXNwbGF5TmFtZVBhcmFtJyxcbiAgICAgIFBhcmFtZXRlclZhbHVlOiBwYXJhbVZhbDEsXG4gICAgfSxcbiAgKTtcbiAgZXhwZWN0KHJlc3BvbnNlLlN0YWNrcz8uWzBdLlBhcmFtZXRlcnMpLnRvQ29udGFpbkVxdWFsKFxuICAgIHtcbiAgICAgIFBhcmFtZXRlcktleTogJ090aGVyRGlzcGxheU5hbWVQYXJhbScsXG4gICAgICBQYXJhbWV0ZXJWYWx1ZTogcGFyYW1WYWwyLFxuICAgIH0sXG4gICk7XG59KSk7XG5cbmludGVnVGVzdCgnZGVwbG95IHdpdGggbm90aWZpY2F0aW9uIEFSTicsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBjb25zdCB0b3BpY05hbWUgPSBgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH0tdGVzdC10b3BpY2A7XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXh0dXJlLmF3cy5zbnMoJ2NyZWF0ZVRvcGljJywgeyBOYW1lOiB0b3BpY05hbWUgfSk7XG4gIGNvbnN0IHRvcGljQXJuID0gcmVzcG9uc2UuVG9waWNBcm4hO1xuICB0cnkge1xuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCd0ZXN0LTInLCB7XG4gICAgICBvcHRpb25zOiBbJy0tbm90aWZpY2F0aW9uLWFybnMnLCB0b3BpY0Fybl0sXG4gICAgfSk7XG5cbiAgICAvLyB2ZXJpZnkgdGhhdCB0aGUgc3RhY2sgd2UgZGVwbG95ZWQgaGFzIG91ciBub3RpZmljYXRpb24gQVJOXG4gICAgY29uc3QgZGVzY3JpYmVSZXNwb25zZSA9IGF3YWl0IGZpeHR1cmUuYXdzLmNsb3VkRm9ybWF0aW9uKCdkZXNjcmliZVN0YWNrcycsIHtcbiAgICAgIFN0YWNrTmFtZTogZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTInKSxcbiAgICB9KTtcbiAgICBleHBlY3QoZGVzY3JpYmVSZXNwb25zZS5TdGFja3M/LlswXS5Ob3RpZmljYXRpb25BUk5zKS50b0VxdWFsKFt0b3BpY0Fybl0pO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGZpeHR1cmUuYXdzLnNucygnZGVsZXRlVG9waWMnLCB7XG4gICAgICBUb3BpY0FybjogdG9waWNBcm4sXG4gICAgfSk7XG4gIH1cbn0pKTtcblxuaWYgKE1BSk9SX1ZFUlNJT04gPT09ICcxJykge1xuICAvLyBOT1RFOiB0aGlzIGRvZXNuJ3QgY3VycmVudGx5IHdvcmsgd2l0aCBtb2Rlcm4tc3R5bGUgc3ludGhlc2lzLCBhcyB0aGUgYm9vdHN0cmFwXG4gIC8vIHJvbGUgYnkgZGVmYXVsdCB3aWxsIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gaWFtOlBhc3NSb2xlIHRoZSBjcmVhdGVkIHJvbGUuXG4gIGludGVnVGVzdCgnZGVwbG95IHdpdGggcm9sZScsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIGNvbnN0IHJvbGVOYW1lID0gYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9LXRlc3Qtcm9sZWA7XG5cbiAgICBhd2FpdCBkZWxldGVSb2xlKCk7XG5cbiAgICBjb25zdCBjcmVhdGVSZXNwb25zZSA9IGF3YWl0IGZpeHR1cmUuYXdzLmlhbSgnY3JlYXRlUm9sZScsIHtcbiAgICAgIFJvbGVOYW1lOiByb2xlTmFtZSxcbiAgICAgIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudDogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNycsXG4gICAgICAgIFN0YXRlbWVudDogW3tcbiAgICAgICAgICBBY3Rpb246ICdzdHM6QXNzdW1lUm9sZScsXG4gICAgICAgICAgUHJpbmNpcGFsOiB7IFNlcnZpY2U6ICdjbG91ZGZvcm1hdGlvbi5hbWF6b25hd3MuY29tJyB9LFxuICAgICAgICAgIEVmZmVjdDogJ0FsbG93JyxcbiAgICAgICAgfSwge1xuICAgICAgICAgIEFjdGlvbjogJ3N0czpBc3N1bWVSb2xlJyxcbiAgICAgICAgICBQcmluY2lwYWw6IHsgQVdTOiAoYXdhaXQgZml4dHVyZS5hd3Muc3RzKCdnZXRDYWxsZXJJZGVudGl0eScsIHt9KSkuQXJuIH0sXG4gICAgICAgICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgICAgICB9XSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICAgIGNvbnN0IHJvbGVBcm4gPSBjcmVhdGVSZXNwb25zZS5Sb2xlLkFybjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZml4dHVyZS5hd3MuaWFtKCdwdXRSb2xlUG9saWN5Jywge1xuICAgICAgICBSb2xlTmFtZTogcm9sZU5hbWUsXG4gICAgICAgIFBvbGljeU5hbWU6ICdEZWZhdWx0UG9saWN5JyxcbiAgICAgICAgUG9saWN5RG9jdW1lbnQ6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNycsXG4gICAgICAgICAgU3RhdGVtZW50OiBbe1xuICAgICAgICAgICAgQWN0aW9uOiAnKicsXG4gICAgICAgICAgICBSZXNvdXJjZTogJyonLFxuICAgICAgICAgICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgICAgICAgIH1dLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCByZXRyeShmaXh0dXJlLm91dHB1dCwgJ1RyeWluZyB0byBhc3N1bWUgZnJlc2ggcm9sZScsIHJldHJ5LmZvclNlY29uZHMoMzAwKSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBmaXh0dXJlLmF3cy5zdHMoJ2Fzc3VtZVJvbGUnLCB7XG4gICAgICAgICAgUm9sZUFybjogcm9sZUFybixcbiAgICAgICAgICBSb2xlU2Vzc2lvbk5hbWU6ICd0ZXN0aW5nJyxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgLy8gSW4gcHJpbmNpcGxlLCB0aGUgcm9sZSBoYXMgcmVwbGljYXRlZCBmcm9tICd1cy1lYXN0LTEnIHRvIHdoZXJldmVyIHdlJ3JlIHRlc3RpbmcuXG4gICAgICAvLyBHaXZlIGl0IGEgbGl0dGxlIG1vcmUgc2xlZXAgdG8gbWFrZSBzdXJlIENsb3VkRm9ybWF0aW9uIGlzIG5vdCBoaXR0aW5nIGEgYm94XG4gICAgICAvLyB0aGF0IGRvZXNuJ3QgaGF2ZSBpdCB5ZXQuXG4gICAgICBhd2FpdCBzbGVlcCg1MDAwKTtcblxuICAgICAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ3Rlc3QtMicsIHtcbiAgICAgICAgb3B0aW9uczogWyctLXJvbGUtYXJuJywgcm9sZUFybl0sXG4gICAgICB9KTtcblxuICAgICAgLy8gSW1tZWRpYXRlbHkgZGVsZXRlIHRoZSBzdGFjayBhZ2FpbiBiZWZvcmUgd2UgZGVsZXRlIHRoZSByb2xlLlxuICAgICAgLy9cbiAgICAgIC8vIFNpbmNlIHJvbGVzIGFyZSBzdGlja3ksIGlmIHdlIGRlbGV0ZSB0aGUgcm9sZSBiZWZvcmUgdGhlIHN0YWNrLCBzdWJzZXF1ZW50IERlbGV0ZVN0YWNrXG4gICAgICAvLyBvcGVyYXRpb25zIHdpbGwgZmFpbCB3aGVuIENsb3VkRm9ybWF0aW9uIHRyaWVzIHRvIGFzc3VtZSB0aGUgcm9sZSB0aGF0J3MgYWxyZWFkeSBnb25lLlxuICAgICAgYXdhaXQgZml4dHVyZS5jZGtEZXN0cm95KCd0ZXN0LTInKTtcblxuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBkZWxldGVSb2xlKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gZGVsZXRlUm9sZSgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAoY29uc3QgcG9saWN5TmFtZSBvZiAoYXdhaXQgZml4dHVyZS5hd3MuaWFtKCdsaXN0Um9sZVBvbGljaWVzJywgeyBSb2xlTmFtZTogcm9sZU5hbWUgfSkpLlBvbGljeU5hbWVzKSB7XG4gICAgICAgICAgYXdhaXQgZml4dHVyZS5hd3MuaWFtKCdkZWxldGVSb2xlUG9saWN5Jywge1xuICAgICAgICAgICAgUm9sZU5hbWU6IHJvbGVOYW1lLFxuICAgICAgICAgICAgUG9saWN5TmFtZTogcG9saWN5TmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBmaXh0dXJlLmF3cy5pYW0oJ2RlbGV0ZVJvbGUnLCB7IFJvbGVOYW1lOiByb2xlTmFtZSB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGUubWVzc2FnZS5pbmRleE9mKCdjYW5ub3QgYmUgZm91bmQnKSA+IC0xKSB7IHJldHVybjsgfVxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfSkpO1xufVxuXG5pbnRlZ1Rlc3QoJ2NkayBkaWZmJywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGNvbnN0IGRpZmYxID0gYXdhaXQgZml4dHVyZS5jZGsoWydkaWZmJywgZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTEnKV0pO1xuICBleHBlY3QoZGlmZjEpLnRvQ29udGFpbignQVdTOjpTTlM6OlRvcGljJyk7XG5cbiAgY29uc3QgZGlmZjIgPSBhd2FpdCBmaXh0dXJlLmNkayhbJ2RpZmYnLCBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3Rlc3QtMicpXSk7XG4gIGV4cGVjdChkaWZmMikudG9Db250YWluKCdBV1M6OlNOUzo6VG9waWMnKTtcblxuICAvLyBXZSBjYW4gbWFrZSBpdCBmYWlsIGJ5IHBhc3NpbmcgLS1mYWlsXG4gIGF3YWl0IGV4cGVjdChmaXh0dXJlLmNkayhbJ2RpZmYnLCAnLS1mYWlsJywgZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTEnKV0pKVxuICAgIC5yZWplY3RzLnRvVGhyb3coJ2V4aXRlZCB3aXRoIGVycm9yJyk7XG59KSk7XG5cbmludGVnVGVzdCgnZW5hYmxlRGlmZk5vRmFpbCcsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBhd2FpdCBkaWZmU2hvdWxkU3VjY2VlZFdpdGgoeyBmYWlsOiBmYWxzZSwgZW5hYmxlRGlmZk5vRmFpbDogZmFsc2UgfSk7XG4gIGF3YWl0IGRpZmZTaG91bGRTdWNjZWVkV2l0aCh7IGZhaWw6IGZhbHNlLCBlbmFibGVEaWZmTm9GYWlsOiB0cnVlIH0pO1xuICBhd2FpdCBkaWZmU2hvdWxkRmFpbFdpdGgoeyBmYWlsOiB0cnVlLCBlbmFibGVEaWZmTm9GYWlsOiBmYWxzZSB9KTtcbiAgYXdhaXQgZGlmZlNob3VsZEZhaWxXaXRoKHsgZmFpbDogdHJ1ZSwgZW5hYmxlRGlmZk5vRmFpbDogdHJ1ZSB9KTtcbiAgYXdhaXQgZGlmZlNob3VsZEZhaWxXaXRoKHsgZmFpbDogdW5kZWZpbmVkLCBlbmFibGVEaWZmTm9GYWlsOiBmYWxzZSB9KTtcbiAgYXdhaXQgZGlmZlNob3VsZFN1Y2NlZWRXaXRoKHsgZmFpbDogdW5kZWZpbmVkLCBlbmFibGVEaWZmTm9GYWlsOiB0cnVlIH0pO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIGRpZmZTaG91bGRTdWNjZWVkV2l0aChwcm9wczogRGlmZlBhcmFtZXRlcnMpIHtcbiAgICBhd2FpdCBleHBlY3QoZGlmZihwcm9wcykpLnJlc29sdmVzLm5vdC50b1Rocm93RXJyb3IoKTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGRpZmZTaG91bGRGYWlsV2l0aChwcm9wczogRGlmZlBhcmFtZXRlcnMpIHtcbiAgICBhd2FpdCBleHBlY3QoZGlmZihwcm9wcykpLnJlamVjdHMudG9UaHJvdygnZXhpdGVkIHdpdGggZXJyb3InKTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGRpZmYocHJvcHM6IERpZmZQYXJhbWV0ZXJzKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBhd2FpdCB1cGRhdGVDb250ZXh0KHByb3BzLmVuYWJsZURpZmZOb0ZhaWwpO1xuICAgIGNvbnN0IGZsYWcgPSBwcm9wcy5mYWlsICE9IG51bGxcbiAgICAgID8gKHByb3BzLmZhaWwgPyAnLS1mYWlsJyA6ICctLW5vLWZhaWwnKVxuICAgICAgOiAnJztcblxuICAgIHJldHVybiBmaXh0dXJlLmNkayhbJ2RpZmYnLCBmbGFnLCBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3Rlc3QtMScpXSk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiB1cGRhdGVDb250ZXh0KGVuYWJsZURpZmZOb0ZhaWw6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjZGtKc29uID0gSlNPTi5wYXJzZShhd2FpdCBmcy5yZWFkRmlsZShwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsICdjZGsuanNvbicpLCAndXRmOCcpKTtcbiAgICBjZGtKc29uLmNvbnRleHQgPSB7XG4gICAgICAuLi5jZGtKc29uLmNvbnRleHQsXG4gICAgICAnYXdzLWNkazplbmFibGVEaWZmTm9GYWlsJzogZW5hYmxlRGlmZk5vRmFpbCxcbiAgICB9O1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZShwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsICdjZGsuanNvbicpLCBKU09OLnN0cmluZ2lmeShjZGtKc29uKSk7XG4gIH1cblxuICB0eXBlIERpZmZQYXJhbWV0ZXJzID0geyBmYWlsPzogYm9vbGVhbiwgZW5hYmxlRGlmZk5vRmFpbDogYm9vbGVhbiB9O1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ2NkayBkaWZmIC0tZmFpbCBvbiBtdWx0aXBsZSBzdGFja3MgZXhpdHMgd2l0aCBlcnJvciBpZiBhbnkgb2YgdGhlIHN0YWNrcyBjb250YWlucyBhIGRpZmYnLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3QgZGlmZjEgPSBhd2FpdCBmaXh0dXJlLmNkayhbJ2RpZmYnLCBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3Rlc3QtMScpXSk7XG4gIGV4cGVjdChkaWZmMSkudG9Db250YWluKCdBV1M6OlNOUzo6VG9waWMnKTtcblxuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgndGVzdC0yJyk7XG4gIGNvbnN0IGRpZmYyID0gYXdhaXQgZml4dHVyZS5jZGsoWydkaWZmJywgZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTInKV0pO1xuICBleHBlY3QoZGlmZjIpLnRvQ29udGFpbignVGhlcmUgd2VyZSBubyBkaWZmZXJlbmNlcycpO1xuXG4gIC8vIFdIRU4gLyBUSEVOXG4gIGF3YWl0IGV4cGVjdChmaXh0dXJlLmNkayhbJ2RpZmYnLCAnLS1mYWlsJywgZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTEnKSwgZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTInKV0pKS5yZWplY3RzLnRvVGhyb3coJ2V4aXRlZCB3aXRoIGVycm9yJyk7XG59KSk7XG5cbmludGVnVGVzdCgnY2RrIGRpZmYgLS1mYWlsIHdpdGggbXVsdGlwbGUgc3RhY2sgZXhpdHMgd2l0aCBpZiBhbnkgb2YgdGhlIHN0YWNrcyBjb250YWlucyBhIGRpZmYnLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgLy8gR0lWRU5cbiAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ3Rlc3QtMScpO1xuICBjb25zdCBkaWZmMSA9IGF3YWl0IGZpeHR1cmUuY2RrKFsnZGlmZicsIGZpeHR1cmUuZnVsbFN0YWNrTmFtZSgndGVzdC0xJyldKTtcbiAgZXhwZWN0KGRpZmYxKS50b0NvbnRhaW4oJ1RoZXJlIHdlcmUgbm8gZGlmZmVyZW5jZXMnKTtcblxuICBjb25zdCBkaWZmMiA9IGF3YWl0IGZpeHR1cmUuY2RrKFsnZGlmZicsIGZpeHR1cmUuZnVsbFN0YWNrTmFtZSgndGVzdC0yJyldKTtcbiAgZXhwZWN0KGRpZmYyKS50b0NvbnRhaW4oJ0FXUzo6U05TOjpUb3BpYycpO1xuXG4gIC8vIFdIRU4gLyBUSEVOXG4gIGF3YWl0IGV4cGVjdChmaXh0dXJlLmNkayhbJ2RpZmYnLCAnLS1mYWlsJywgZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTEnKSwgZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTInKV0pKS5yZWplY3RzLnRvVGhyb3coJ2V4aXRlZCB3aXRoIGVycm9yJyk7XG59KSk7XG5cbmludGVnVGVzdCgnY2RrIGRpZmYgLS1zZWN1cml0eS1vbmx5IC0tZmFpbCBleGl0cyB3aGVuIHNlY3VyaXR5IGNoYW5nZXMgYXJlIHByZXNlbnQnLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgY29uc3Qgc3RhY2tOYW1lID0gJ2lhbS10ZXN0JztcbiAgYXdhaXQgZXhwZWN0KGZpeHR1cmUuY2RrKFsnZGlmZicsICctLXNlY3VyaXR5LW9ubHknLCAnLS1mYWlsJywgZml4dHVyZS5mdWxsU3RhY2tOYW1lKHN0YWNrTmFtZSldKSkucmVqZWN0cy50b1Rocm93KCdleGl0ZWQgd2l0aCBlcnJvcicpO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ2RlcGxveSBzdGFjayB3aXRoIGRvY2tlciBhc3NldCcsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnZG9ja2VyJyk7XG59KSk7XG5cbmludGVnVGVzdCgnZGVwbG95IGFuZCB0ZXN0IHN0YWNrIHdpdGggbGFtYmRhIGFzc2V0Jywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGNvbnN0IHN0YWNrQXJuID0gYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ2xhbWJkYScsIHsgY2FwdHVyZVN0ZGVycjogZmFsc2UgfSk7XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXh0dXJlLmF3cy5jbG91ZEZvcm1hdGlvbignZGVzY3JpYmVTdGFja3MnLCB7XG4gICAgU3RhY2tOYW1lOiBzdGFja0FybixcbiAgfSk7XG4gIGNvbnN0IGxhbWJkYUFybiA9IHJlc3BvbnNlLlN0YWNrcz8uWzBdLk91dHB1dHM/LlswXS5PdXRwdXRWYWx1ZTtcbiAgaWYgKGxhbWJkYUFybiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdGFjayBkaWQgbm90IGhhdmUgZXhwZWN0ZWQgTGFtYmRhIEFSTiBvdXRwdXQnKTtcbiAgfVxuXG4gIGNvbnN0IG91dHB1dCA9IGF3YWl0IGZpeHR1cmUuYXdzLmxhbWJkYSgnaW52b2tlJywge1xuICAgIEZ1bmN0aW9uTmFtZTogbGFtYmRhQXJuLFxuICB9KTtcblxuICBleHBlY3QoSlNPTi5zdHJpbmdpZnkob3V0cHV0LlBheWxvYWQpKS50b0NvbnRhaW4oJ2RlYXIgYXNzZXQnKTtcbn0pKTtcblxuaW50ZWdUZXN0KCdjZGsgbHMnLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgY29uc3QgbGlzdGluZyA9IGF3YWl0IGZpeHR1cmUuY2RrKFsnbHMnXSwgeyBjYXB0dXJlU3RkZXJyOiBmYWxzZSB9KTtcblxuICBjb25zdCBleHBlY3RlZFN0YWNrcyA9IFtcbiAgICAnY29uZGl0aW9uYWwtcmVzb3VyY2UnLFxuICAgICdkb2NrZXInLFxuICAgICdkb2NrZXItd2l0aC1jdXN0b20tZmlsZScsXG4gICAgJ2ZhaWxlZCcsXG4gICAgJ2lhbS10ZXN0JyxcbiAgICAnbGFtYmRhJyxcbiAgICAnbWlzc2luZy1zc20tcGFyYW1ldGVyJyxcbiAgICAnb3JkZXItcHJvdmlkaW5nJyxcbiAgICAnb3V0cHV0cy10ZXN0LTEnLFxuICAgICdvdXRwdXRzLXRlc3QtMicsXG4gICAgJ3BhcmFtLXRlc3QtMScsXG4gICAgJ3BhcmFtLXRlc3QtMicsXG4gICAgJ3BhcmFtLXRlc3QtMycsXG4gICAgJ3Rlcm1pbmF0aW9uLXByb3RlY3Rpb24nLFxuICAgICd0ZXN0LTEnLFxuICAgICd0ZXN0LTInLFxuICAgICd3aXRoLW5lc3RlZC1zdGFjaycsXG4gICAgJ3dpdGgtbmVzdGVkLXN0YWNrLXVzaW5nLXBhcmFtZXRlcnMnLFxuICAgICdvcmRlci1jb25zdW1pbmcnLFxuICBdO1xuXG4gIGZvciAoY29uc3Qgc3RhY2sgb2YgZXhwZWN0ZWRTdGFja3MpIHtcbiAgICBleHBlY3QobGlzdGluZykudG9Db250YWluKGZpeHR1cmUuZnVsbFN0YWNrTmFtZShzdGFjaykpO1xuICB9XG59KSk7XG5cbmludGVnVGVzdCgnc3ludGhpbmcgYSBzdGFnZSB3aXRoIGVycm9ycyBsZWFkcyB0byBmYWlsdXJlJywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGF3YWl0IGZpeHR1cmUuY2RrKFsnc3ludGgnXSwge1xuICAgIGFsbG93RXJyRXhpdDogdHJ1ZSxcbiAgICBtb2RFbnY6IHtcbiAgICAgIElOVEVHX1NUQUNLX1NFVDogJ3N0YWdlLXdpdGgtZXJyb3JzJyxcbiAgICB9LFxuICB9KTtcblxuICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJ1RoaXMgaXMgYW4gZXJyb3InKTtcbn0pKTtcblxuaW50ZWdUZXN0KCdzeW50aGluZyBhIHN0YWdlIHdpdGggZXJyb3JzIGNhbiBiZSBzdXBwcmVzc2VkJywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGF3YWl0IGZpeHR1cmUuY2RrKFsnc3ludGgnLCAnLS1uby12YWxpZGF0aW9uJ10sIHtcbiAgICBtb2RFbnY6IHtcbiAgICAgIElOVEVHX1NUQUNLX1NFVDogJ3N0YWdlLXdpdGgtZXJyb3JzJyxcbiAgICB9LFxuICB9KTtcbn0pKTtcblxuaW50ZWdUZXN0KCdkZXBsb3kgc3RhY2sgd2l0aG91dCByZXNvdXJjZScsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAvLyBEZXBsb3kgdGhlIHN0YWNrIHdpdGhvdXQgcmVzb3VyY2VzXG4gIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdjb25kaXRpb25hbC1yZXNvdXJjZScsIHsgbW9kRW52OiB7IE5PX1JFU09VUkNFOiAnVFJVRScgfSB9KTtcblxuICAvLyBUaGlzIHNob3VsZCBoYXZlIHN1Y2NlZWRlZCBidXQgbm90IGRlcGxveWVkIHRoZSBzdGFjay5cbiAgYXdhaXQgZXhwZWN0KGZpeHR1cmUuYXdzLmNsb3VkRm9ybWF0aW9uKCdkZXNjcmliZVN0YWNrcycsIHsgU3RhY2tOYW1lOiBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ2NvbmRpdGlvbmFsLXJlc291cmNlJykgfSkpXG4gICAgLnJlamVjdHMudG9UaHJvdygnY29uZGl0aW9uYWwtcmVzb3VyY2UgZG9lcyBub3QgZXhpc3QnKTtcblxuICAvLyBEZXBsb3kgdGhlIHN0YWNrIHdpdGggcmVzb3VyY2VzXG4gIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdjb25kaXRpb25hbC1yZXNvdXJjZScpO1xuXG4gIC8vIFRoZW4gYWdhaW4gV0lUSE9VVCByZXNvdXJjZXMgKHRoaXMgc2hvdWxkIGRlc3Ryb3kgdGhlIHN0YWNrKVxuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnY29uZGl0aW9uYWwtcmVzb3VyY2UnLCB7IG1vZEVudjogeyBOT19SRVNPVVJDRTogJ1RSVUUnIH0gfSk7XG5cbiAgYXdhaXQgZXhwZWN0KGZpeHR1cmUuYXdzLmNsb3VkRm9ybWF0aW9uKCdkZXNjcmliZVN0YWNrcycsIHsgU3RhY2tOYW1lOiBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ2NvbmRpdGlvbmFsLXJlc291cmNlJykgfSkpXG4gICAgLnJlamVjdHMudG9UaHJvdygnY29uZGl0aW9uYWwtcmVzb3VyY2UgZG9lcyBub3QgZXhpc3QnKTtcbn0pKTtcblxuaW50ZWdUZXN0KCdJQU0gZGlmZicsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBhd2FpdCBmaXh0dXJlLmNkayhbJ2RpZmYnLCBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ2lhbS10ZXN0JyldKTtcblxuICAvLyBSb3VnaGx5IGNoZWNrIGZvciBhIHRhYmxlIGxpa2UgdGhpczpcbiAgLy9cbiAgLy8g4pSM4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSALeKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICAvLyDilIIgICDilIIgUmVzb3VyY2UgICAgICAgIOKUgiBFZmZlY3Qg4pSCIEFjdGlvbiAgICAgICAgIOKUgiBQcmluY2lwYWwgICAgICAgICAgICAgICAgICAgICDilIIgQ29uZGl0aW9uIOKUglxuICAvLyDilJzilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbiAgLy8g4pSCICsg4pSCICR7U29tZVJvbGUuQXJufSDilIIgQWxsb3cgIOKUgiBzdHM6QXNzdW1lUm9sZSDilIIgU2VydmljZTplYzIuYW1hem9uYXdzLmNvbSAgICAg4pSCICAgICAgICAgICDilIJcbiAgLy8g4pSU4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG5cbiAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCcke1NvbWVSb2xlLkFybn0nKTtcbiAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCdzdHM6QXNzdW1lUm9sZScpO1xuICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJ2VjMi5hbWF6b25hd3MuY29tJyk7XG59KSk7XG5cbmludGVnVGVzdCgnZmFzdCBkZXBsb3knLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgLy8gd2UgYXJlIHVzaW5nIGEgc3RhY2sgd2l0aCBhIG5lc3RlZCBzdGFjayBiZWNhdXNlIENGTiB3aWxsIGFsd2F5cyBhdHRlbXB0IHRvXG4gIC8vIHVwZGF0ZSBhIG5lc3RlZCBzdGFjaywgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byB2ZXJpZnkgdGhhdCB1cGRhdGVzIGFyZSBhY3R1YWxseVxuICAvLyBza2lwcGVkIHVubGVzcyAtLWZvcmNlIGlzIHNwZWNpZmllZC5cbiAgY29uc3Qgc3RhY2tBcm4gPSBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnd2l0aC1uZXN0ZWQtc3RhY2snLCB7IGNhcHR1cmVTdGRlcnI6IGZhbHNlIH0pO1xuICBjb25zdCBjaGFuZ2VTZXQxID0gYXdhaXQgZ2V0TGF0ZXN0Q2hhbmdlU2V0KCk7XG5cbiAgLy8gRGVwbG95IHRoZSBzYW1lIHN0YWNrIGFnYWluLCB0aGVyZSBzaG91bGQgYmUgbm8gbmV3IGNoYW5nZSBzZXQgY3JlYXRlZFxuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnd2l0aC1uZXN0ZWQtc3RhY2snKTtcbiAgY29uc3QgY2hhbmdlU2V0MiA9IGF3YWl0IGdldExhdGVzdENoYW5nZVNldCgpO1xuICBleHBlY3QoY2hhbmdlU2V0Mi5DaGFuZ2VTZXRJZCkudG9FcXVhbChjaGFuZ2VTZXQxLkNoYW5nZVNldElkKTtcblxuICAvLyBEZXBsb3kgdGhlIHN0YWNrIGFnYWluIHdpdGggLS1mb3JjZSwgbm93IHdlIHNob3VsZCBjcmVhdGUgYSBjaGFuZ2VzZXRcbiAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ3dpdGgtbmVzdGVkLXN0YWNrJywgeyBvcHRpb25zOiBbJy0tZm9yY2UnXSB9KTtcbiAgY29uc3QgY2hhbmdlU2V0MyA9IGF3YWl0IGdldExhdGVzdENoYW5nZVNldCgpO1xuICBleHBlY3QoY2hhbmdlU2V0My5DaGFuZ2VTZXRJZCkubm90LnRvRXF1YWwoY2hhbmdlU2V0Mi5DaGFuZ2VTZXRJZCk7XG5cbiAgLy8gRGVwbG95IHRoZSBzdGFjayBhZ2FpbiB3aXRoIHRhZ3MsIGV4cGVjdGVkIHRvIGNyZWF0ZSBhIG5ldyBjaGFuZ2VzZXRcbiAgLy8gZXZlbiB0aG91Z2ggdGhlIHJlc291cmNlcyBkaWRuJ3QgY2hhbmdlLlxuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnd2l0aC1uZXN0ZWQtc3RhY2snLCB7IG9wdGlvbnM6IFsnLS10YWdzJywgJ2tleT12YWx1ZSddIH0pO1xuICBjb25zdCBjaGFuZ2VTZXQ0ID0gYXdhaXQgZ2V0TGF0ZXN0Q2hhbmdlU2V0KCk7XG4gIGV4cGVjdChjaGFuZ2VTZXQ0LkNoYW5nZVNldElkKS5ub3QudG9FcXVhbChjaGFuZ2VTZXQzLkNoYW5nZVNldElkKTtcblxuICBhc3luYyBmdW5jdGlvbiBnZXRMYXRlc3RDaGFuZ2VTZXQoKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXh0dXJlLmF3cy5jbG91ZEZvcm1hdGlvbignZGVzY3JpYmVTdGFja3MnLCB7IFN0YWNrTmFtZTogc3RhY2tBcm4gfSk7XG4gICAgaWYgKCFyZXNwb25zZS5TdGFja3M/LlswXSkgeyB0aHJvdyBuZXcgRXJyb3IoJ0RpZCBub3QgZ2V0IGEgQ2hhbmdlU2V0IGF0IGFsbCcpOyB9XG4gICAgZml4dHVyZS5sb2coYEZvdW5kIENoYW5nZSBTZXQgJHtyZXNwb25zZS5TdGFja3M/LlswXS5DaGFuZ2VTZXRJZH1gKTtcbiAgICByZXR1cm4gcmVzcG9uc2UuU3RhY2tzPy5bMF07XG4gIH1cbn0pKTtcblxuaW50ZWdUZXN0KCdmYWlsZWQgZGVwbG95IGRvZXMgbm90IGhhbmcnLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgLy8gdGhpcyB3aWxsIGhhbmcgaWYgd2UgaW50cm9kdWNlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvNjQwMyBhZ2Fpbi5cbiAgYXdhaXQgZXhwZWN0KGZpeHR1cmUuY2RrRGVwbG95KCdmYWlsZWQnKSkucmVqZWN0cy50b1Rocm93KCdleGl0ZWQgd2l0aCBlcnJvcicpO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ2NhbiBzdGlsbCBsb2FkIG9sZCBhc3NlbWJsaWVzJywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGNvbnN0IGN4QXNtRGlyID0gcGF0aC5qb2luKG9zLnRtcGRpcigpLCAnY2RrLWludGVnLWN4Jyk7XG5cbiAgY29uc3QgdGVzdEFzc2VtYmxpZXNEaXJlY3RvcnkgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnY2xvdWQtYXNzZW1ibGllcycpO1xuICBmb3IgKGNvbnN0IGFzbWRpciBvZiBhd2FpdCBsaXN0Q2hpbGREaXJzKHRlc3RBc3NlbWJsaWVzRGlyZWN0b3J5KSkge1xuICAgIGZpeHR1cmUubG9nKGBBU1NFTUJMWSAke2FzbWRpcn1gKTtcbiAgICBhd2FpdCBjbG9uZURpcmVjdG9yeShhc21kaXIsIGN4QXNtRGlyKTtcblxuICAgIC8vIFNvbWUgZmlsZXMgaW4gdGhlIGFzbSBkaXJlY3RvcnkgdGhhdCBoYXZlIGEgLmpzIGV4dGVuc2lvbiBhcmVcbiAgICAvLyBhY3R1YWxseSB0cmVhdGVkIGFzIHRlbXBsYXRlcy4gRXZhbHVhdGUgdGhlbSB1c2luZyBOb2RlSlMuXG4gICAgY29uc3QgdGVtcGxhdGVzID0gYXdhaXQgbGlzdENoaWxkcmVuKGN4QXNtRGlyLCBmdWxsUGF0aCA9PiBQcm9taXNlLnJlc29sdmUoZnVsbFBhdGguZW5kc1dpdGgoJy5qcycpKSk7XG4gICAgZm9yIChjb25zdCB0ZW1wbGF0ZSBvZiB0ZW1wbGF0ZXMpIHtcbiAgICAgIGNvbnN0IHRhcmdldE5hbWUgPSB0ZW1wbGF0ZS5yZXBsYWNlKC8uanMkLywgJycpO1xuICAgICAgYXdhaXQgc2hlbGwoW3Byb2Nlc3MuZXhlY1BhdGgsIHRlbXBsYXRlLCAnPicsIHRhcmdldE5hbWVdLCB7XG4gICAgICAgIGN3ZDogY3hBc21EaXIsXG4gICAgICAgIG91dHB1dDogZml4dHVyZS5vdXRwdXQsXG4gICAgICAgIG1vZEVudjoge1xuICAgICAgICAgIFRFU1RfQUNDT1VOVDogYXdhaXQgZml4dHVyZS5hd3MuYWNjb3VudCgpLFxuICAgICAgICAgIFRFU1RfUkVHSU9OOiBmaXh0dXJlLmF3cy5yZWdpb24sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBVc2UgdGhpcyBkaXJlY3RvcnkgYXMgYSBDbG91ZCBBc3NlbWJseVxuICAgIGNvbnN0IG91dHB1dCA9IGF3YWl0IGZpeHR1cmUuY2RrKFtcbiAgICAgICctLWFwcCcsIGN4QXNtRGlyLFxuICAgICAgJy12JyxcbiAgICAgICdzeW50aCcsXG4gICAgXSk7XG5cbiAgICAvLyBBc3NlcnQgdGhhdCB0aGVyZSB3YXMgbm8gcHJvdmlkZXJFcnJvciBpbiBDREsncyBzdGRlcnJcbiAgICAvLyBCZWNhdXNlIHdlIHJlbHkgb24gdGhlIGFwcC9mcmFtZXdvcmsgdG8gYWN0dWFsbHkgZXJyb3IgaW4gY2FzZSB0aGVcbiAgICAvLyBwcm92aWRlciBmYWlscywgd2UgaW5zcGVjdCB0aGUgbG9ncyBoZXJlLlxuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJyRwcm92aWRlckVycm9yJyk7XG4gIH1cbn0pKTtcblxuaW50ZWdUZXN0KCdnZW5lcmF0aW5nIGFuZCBsb2FkaW5nIGFzc2VtYmx5Jywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGNvbnN0IGFzbU91dHB1dERpciA9IGAke2ZpeHR1cmUuaW50ZWdUZXN0RGlyfS1jZGstaW50ZWctYXNtYDtcbiAgYXdhaXQgZml4dHVyZS5zaGVsbChbJ3JtJywgJy1yZicsIGFzbU91dHB1dERpcl0pO1xuXG4gIC8vIFN5bnRoZXNpemUgYSBDbG91ZCBBc3NlbWJseSB0b3RoZSBkZWZhdWx0IGRpcmVjdG9yeSAoY2RrLm91dCkgYW5kIGEgc3BlY2lmaWMgZGlyZWN0b3J5LlxuICBhd2FpdCBmaXh0dXJlLmNkayhbJ3N5bnRoJ10pO1xuICBhd2FpdCBmaXh0dXJlLmNkayhbJ3N5bnRoJywgJy0tb3V0cHV0JywgYXNtT3V0cHV0RGlyXSk7XG5cbiAgLy8gY2RrLm91dCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgYW5kIHRoZSBpbmRpY2F0ZWQgLS1vdXRwdXQgc2hvdWxkIGJlIHRoZSBzYW1lXG4gIGF3YWl0IGZpeHR1cmUuc2hlbGwoWydkaWZmJywgJ2Nkay5vdXQnLCBhc21PdXRwdXREaXJdKTtcblxuICAvLyBDaGVjayB0aGF0IHdlIGNhbiAnbHMnIHRoZSBzeW50aGVzaXplZCBhc20uXG4gIC8vIENoYW5nZSB0byBzb21lIHJhbmRvbSBkaXJlY3RvcnkgdG8gbWFrZSBzdXJlIHdlJ3JlIG5vdCBhY2NpZGVudGFsbHkgbG9hZGluZyBjZGsuanNvblxuICBjb25zdCBsaXN0ID0gYXdhaXQgZml4dHVyZS5jZGsoWyctLWFwcCcsIGFzbU91dHB1dERpciwgJ2xzJ10sIHsgY3dkOiBvcy50bXBkaXIoKSB9KTtcbiAgLy8gU2FtZSBzdGFja3Mgd2Uga25vdyBhcmUgaW4gdGhlIGFwcFxuICBleHBlY3QobGlzdCkudG9Db250YWluKGAke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4fS1sYW1iZGFgKTtcbiAgZXhwZWN0KGxpc3QpLnRvQ29udGFpbihgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH0tdGVzdC0xYCk7XG4gIGV4cGVjdChsaXN0KS50b0NvbnRhaW4oYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9LXRlc3QtMmApO1xuXG4gIC8vIENoZWNrIHRoYXQgd2UgY2FuIHVzZSAnLicgYW5kIGp1c3Qgc3ludGggLHRoZSBnZW5lcmF0ZWQgYXNtXG4gIGNvbnN0IHN0YWNrVGVtcGxhdGUgPSBhd2FpdCBmaXh0dXJlLmNkayhbJy0tYXBwJywgJy4nLCAnc3ludGgnLCBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3Rlc3QtMicpXSwge1xuICAgIGN3ZDogYXNtT3V0cHV0RGlyLFxuICB9KTtcbiAgZXhwZWN0KHN0YWNrVGVtcGxhdGUpLnRvQ29udGFpbigndG9waWMxNTJEODRBMzcnKTtcblxuICAvLyBEZXBsb3kgYSBMYW1iZGEgZnJvbSB0aGUgY29waWVkIGFzbVxuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnbGFtYmRhJywgeyBvcHRpb25zOiBbJy1hJywgJy4nXSwgY3dkOiBhc21PdXRwdXREaXIgfSk7XG5cbiAgLy8gUmVtb3ZlIChyZW5hbWUpIHRoZSBvcmlnaW5hbCBjdXN0b20gZG9ja2VyIGZpbGUgdGhhdCB3YXMgdXNlZCBkdXJpbmcgc3ludGguXG4gIC8vIHRoaXMgdmVyaWZpZXMgdGhhdCB0aGUgYXNzZW1seSBoYXMgYSBjb3B5IG9mIGl0IGFuZCB0aGF0IHRoZSBtYW5pZmVzdCB1c2VzXG4gIC8vIHJlbGF0aXZlIHBhdGhzIHRvIHJlZmVyZW5jZSB0byBpdC5cbiAgY29uc3QgY3VzdG9tRG9ja2VyRmlsZSA9IHBhdGguam9pbihmaXh0dXJlLmludGVnVGVzdERpciwgJ2RvY2tlcicsICdEb2NrZXJmaWxlLkN1c3RvbScpO1xuICBhd2FpdCBmcy5yZW5hbWUoY3VzdG9tRG9ja2VyRmlsZSwgYCR7Y3VzdG9tRG9ja2VyRmlsZX1+YCk7XG4gIHRyeSB7XG5cbiAgICAvLyBkZXBsb3kgYSBkb2NrZXIgaW1hZ2Ugd2l0aCBjdXN0b20gZmlsZSB3aXRob3V0IHN5bnRoICh1c2VzIGFzc2V0cylcbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnZG9ja2VyLXdpdGgtY3VzdG9tLWZpbGUnLCB7IG9wdGlvbnM6IFsnLWEnLCAnLiddLCBjd2Q6IGFzbU91dHB1dERpciB9KTtcblxuICB9IGZpbmFsbHkge1xuICAgIC8vIFJlbmFtZSBiYWNrIHRvIHJlc3RvcmUgZml4dHVyZSB0byBvcmlnaW5hbCBzdGF0ZVxuICAgIGF3YWl0IGZzLnJlbmFtZShgJHtjdXN0b21Eb2NrZXJGaWxlfX5gLCBjdXN0b21Eb2NrZXJGaWxlKTtcbiAgfVxufSkpO1xuXG5pbnRlZ1Rlc3QoJ3RlbXBsYXRlcyBvbiBkaXNrIGNvbnRhaW4gbWV0YWRhdGEgcmVzb3VyY2UsIGFsc28gaW4gbmVzdGVkIGFzc2VtYmxpZXMnLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgLy8gU3ludGggZmlyc3QsIGFuZCBzd2l0Y2ggb24gdmVyc2lvbiByZXBvcnRpbmcgYmVjYXVzZSBjZGsuanNvbiBpcyBkaXNhYmxpbmcgaXRcbiAgYXdhaXQgZml4dHVyZS5jZGsoWydzeW50aCcsICctLXZlcnNpb24tcmVwb3J0aW5nPXRydWUnXSk7XG5cbiAgLy8gTG9hZCB0ZW1wbGF0ZSBmcm9tIGRpc2sgZnJvbSByb290IGFzc2VtYmx5XG4gIGNvbnN0IHRlbXBsYXRlQ29udGVudHMgPSBhd2FpdCBmaXh0dXJlLnNoZWxsKFsnY2F0JywgJ2Nkay5vdXQvKi1sYW1iZGEudGVtcGxhdGUuanNvbiddKTtcblxuICBleHBlY3QoSlNPTi5wYXJzZSh0ZW1wbGF0ZUNvbnRlbnRzKS5SZXNvdXJjZXMuQ0RLTWV0YWRhdGEpLnRvQmVUcnV0aHkoKTtcblxuICAvLyBMb2FkIHRlbXBsYXRlIGZyb20gbmVzdGVkIGFzc2VtYmx5XG4gIGNvbnN0IG5lc3RlZFRlbXBsYXRlQ29udGVudHMgPSBhd2FpdCBmaXh0dXJlLnNoZWxsKFsnY2F0JywgJ2Nkay5vdXQvYXNzZW1ibHktKi1zdGFnZS8qU3RhY2tJblN0YWdlKi50ZW1wbGF0ZS5qc29uJ10pO1xuXG4gIGV4cGVjdChKU09OLnBhcnNlKG5lc3RlZFRlbXBsYXRlQ29udGVudHMpLlJlc291cmNlcy5DREtNZXRhZGF0YSkudG9CZVRydXRoeSgpO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ0NESyBzeW50aCBhZGQgdGhlIG1ldGFkYXRhIHByb3BlcnRpZXMgZXhwZWN0ZWQgYnkgc2FtJywgd2l0aFNhbUludGVncmF0aW9uRml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAvLyBTeW50aCBmaXJzdFxuICBhd2FpdCBmaXh0dXJlLmNka1N5bnRoKCk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBmaXh0dXJlLnRlbXBsYXRlKCdUZXN0U3RhY2snKTtcblxuICBjb25zdCBleHBlY3RlZFJlc291cmNlcyA9IFtcbiAgICB7XG4gICAgICAvLyBQeXRob24gTGF5ZXIgVmVyc2lvblxuICAgICAgaWQ6ICdQeXRob25MYXllclZlcnNpb24zOTQ5NUNFRicsXG4gICAgICBjZGtJZDogJ1B5dGhvbkxheWVyVmVyc2lvbicsXG4gICAgICBpc0J1bmRsZWQ6IHRydWUsXG4gICAgICBwcm9wZXJ0eTogJ0NvbnRlbnQnLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gTGF5ZXIgVmVyc2lvblxuICAgICAgaWQ6ICdMYXllclZlcnNpb24zODc4REEzQScsXG4gICAgICBjZGtJZDogJ0xheWVyVmVyc2lvbicsXG4gICAgICBpc0J1bmRsZWQ6IGZhbHNlLFxuICAgICAgcHJvcGVydHk6ICdDb250ZW50JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEJ1bmRsZWQgbGF5ZXIgdmVyc2lvblxuICAgICAgaWQ6ICdCdW5kbGVkTGF5ZXJWZXJzaW9uUHl0aG9uUnVudGltZTZCQURCRDZFJyxcbiAgICAgIGNka0lkOiAnQnVuZGxlZExheWVyVmVyc2lvblB5dGhvblJ1bnRpbWUnLFxuICAgICAgaXNCdW5kbGVkOiB0cnVlLFxuICAgICAgcHJvcGVydHk6ICdDb250ZW50JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIFB5dGhvbiBGdW5jdGlvblxuICAgICAgaWQ6ICdQeXRob25GdW5jdGlvbjBCQ0Y3N0ZEJyxcbiAgICAgIGNka0lkOiAnUHl0aG9uRnVuY3Rpb24nLFxuICAgICAgaXNCdW5kbGVkOiB0cnVlLFxuICAgICAgcHJvcGVydHk6ICdDb2RlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIExvZyBSZXRlbnRpb24gRnVuY3Rpb25cbiAgICAgIGlkOiAnTG9nUmV0ZW50aW9uYWFlMGFhM2M1YjRkNGY4N2IwMmQ4NWIyMDFlZmRkOGFGRDRCRkM4QScsXG4gICAgICBjZGtJZDogJ0xvZ1JldGVudGlvbmFhZTBhYTNjNWI0ZDRmODdiMDJkODViMjAxZWZkZDhhJyxcbiAgICAgIGlzQnVuZGxlZDogZmFsc2UsXG4gICAgICBwcm9wZXJ0eTogJ0NvZGUnLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gRnVuY3Rpb25cbiAgICAgIGlkOiAnRnVuY3Rpb25QeXRob25SdW50aW1lMjhDQkRBMDUnLFxuICAgICAgY2RrSWQ6ICdGdW5jdGlvblB5dGhvblJ1bnRpbWUnLFxuICAgICAgaXNCdW5kbGVkOiBmYWxzZSxcbiAgICAgIHByb3BlcnR5OiAnQ29kZScsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBCdW5kbGVkIEZ1bmN0aW9uXG4gICAgICBpZDogJ0J1bmRsZWRGdW5jdGlvblB5dGhvblJ1bnRpbWU0RDlBMDkxOCcsXG4gICAgICBjZGtJZDogJ0J1bmRsZWRGdW5jdGlvblB5dGhvblJ1bnRpbWUnLFxuICAgICAgaXNCdW5kbGVkOiB0cnVlLFxuICAgICAgcHJvcGVydHk6ICdDb2RlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIE5vZGVKcyBGdW5jdGlvblxuICAgICAgaWQ6ICdOb2RlanNGdW5jdGlvbjA5QzFGMjBGJyxcbiAgICAgIGNka0lkOiAnTm9kZWpzRnVuY3Rpb24nLFxuICAgICAgaXNCdW5kbGVkOiB0cnVlLFxuICAgICAgcHJvcGVydHk6ICdDb2RlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEdvIEZ1bmN0aW9uXG4gICAgICBpZDogJ0dvRnVuY3Rpb25DQTk1RkJBQScsXG4gICAgICBjZGtJZDogJ0dvRnVuY3Rpb24nLFxuICAgICAgaXNCdW5kbGVkOiB0cnVlLFxuICAgICAgcHJvcGVydHk6ICdDb2RlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIERvY2tlciBJbWFnZSBGdW5jdGlvblxuICAgICAgaWQ6ICdEb2NrZXJJbWFnZUZ1bmN0aW9uMjhCNzczRTYnLFxuICAgICAgY2RrSWQ6ICdEb2NrZXJJbWFnZUZ1bmN0aW9uJyxcbiAgICAgIGRvY2tlckZpbGVQYXRoOiAnRG9ja2VyZmlsZScsXG4gICAgICBwcm9wZXJ0eTogJ0NvZGUuSW1hZ2VVcmknLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gU3BlYyBSZXN0IEFwaVxuICAgICAgaWQ6ICdTcGVjUmVzdEFQSTdENEIzQTM0JyxcbiAgICAgIGNka0lkOiAnU3BlY1Jlc3RBUEknLFxuICAgICAgcHJvcGVydHk6ICdCb2R5UzNMb2NhdGlvbicsXG4gICAgfSxcbiAgXTtcblxuICBmb3IgKGNvbnN0IHJlc291cmNlIG9mIGV4cGVjdGVkUmVzb3VyY2VzKSB7XG4gICAgZml4dHVyZS5vdXRwdXQud3JpdGUoYHZhbGlkYXRlIGFzc2V0cyBtZXRhZGF0YSBmb3IgcmVzb3VyY2UgJHtyZXNvdXJjZX1gKTtcbiAgICBleHBlY3QocmVzb3VyY2UuaWQgaW4gdGVtcGxhdGUuUmVzb3VyY2VzKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KHRlbXBsYXRlLlJlc291cmNlc1tyZXNvdXJjZS5pZF0pLnRvRXF1YWwoZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgJ2F3czpjZGs6cGF0aCc6IGAke2ZpeHR1cmUuZnVsbFN0YWNrTmFtZSgnVGVzdFN0YWNrJyl9LyR7cmVzb3VyY2UuY2RrSWR9L1Jlc291cmNlYCxcbiAgICAgICAgJ2F3czphc3NldDpwYXRoJzogZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9hc3NldFxcLlswLTlhLXpBLVpdezY0fS8pLFxuICAgICAgICAnYXdzOmFzc2V0OmlzLWJ1bmRsZWQnOiByZXNvdXJjZS5pc0J1bmRsZWQsXG4gICAgICAgICdhd3M6YXNzZXQ6ZG9ja2VyZmlsZS1wYXRoJzogcmVzb3VyY2UuZG9ja2VyRmlsZVBhdGgsXG4gICAgICAgICdhd3M6YXNzZXQ6cHJvcGVydHknOiByZXNvdXJjZS5wcm9wZXJ0eSxcbiAgICAgIH0sXG4gICAgfSkpO1xuICB9XG5cbiAgLy8gTmVzdGVkIFN0YWNrXG4gIGZpeHR1cmUub3V0cHV0LndyaXRlKCd2YWxpZGF0ZSBhc3NldHMgbWV0YWRhdGEgZm9yIG5lc3RlZCBzdGFjayByZXNvdXJjZScpO1xuICBleHBlY3QoJ05lc3RlZFN0YWNrTmVzdGVkU3RhY2tOZXN0ZWRTdGFja05lc3RlZFN0YWNrUmVzb3VyY2VCNzA4MzRGRCcgaW4gdGVtcGxhdGUuUmVzb3VyY2VzKS50b0JlVHJ1dGh5KCk7XG4gIGV4cGVjdCh0ZW1wbGF0ZS5SZXNvdXJjZXMuTmVzdGVkU3RhY2tOZXN0ZWRTdGFja05lc3RlZFN0YWNrTmVzdGVkU3RhY2tSZXNvdXJjZUI3MDgzNEZEKS50b0VxdWFsKGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICBNZXRhZGF0YToge1xuICAgICAgJ2F3czpjZGs6cGF0aCc6IGAke2ZpeHR1cmUuZnVsbFN0YWNrTmFtZSgnVGVzdFN0YWNrJyl9L05lc3RlZFN0YWNrLk5lc3RlZFN0YWNrL05lc3RlZFN0YWNrLk5lc3RlZFN0YWNrUmVzb3VyY2VgLFxuICAgICAgJ2F3czphc3NldDpwYXRoJzogZXhwZWN0LnN0cmluZ01hdGNoaW5nKGAke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4LnJlcGxhY2UoLy0vLCAnJyl9VGVzdFN0YWNrTmVzdGVkU3RhY2tbMC05QS1aXXs4fVxcLm5lc3RlZFxcLnRlbXBsYXRlXFwuanNvbmApLFxuICAgICAgJ2F3czphc3NldDpwcm9wZXJ0eSc6ICdUZW1wbGF0ZVVSTCcsXG4gICAgfSxcbiAgfSkpO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ0NESyBzeW50aCBidW5kbGVkIGZ1bmN0aW9ucyBhcyBleHBlY3RlZCcsIHdpdGhTYW1JbnRlZ3JhdGlvbkZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgLy8gU3ludGggZmlyc3RcbiAgYXdhaXQgZml4dHVyZS5jZGtTeW50aCgpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gZml4dHVyZS50ZW1wbGF0ZSgnVGVzdFN0YWNrJyk7XG5cbiAgY29uc3QgZXhwZWN0ZWRCdW5kbGVkQXNzZXRzID0gW1xuICAgIHtcbiAgICAgIC8vIFB5dGhvbiBMYXllciBWZXJzaW9uXG4gICAgICBpZDogJ1B5dGhvbkxheWVyVmVyc2lvbjM5NDk1Q0VGJyxcbiAgICAgIGZpbGVzOiBbXG4gICAgICAgICdweXRob24vbGF5ZXJfdmVyc2lvbl9kZXBlbmRlbmN5LnB5JyxcbiAgICAgICAgJ3B5dGhvbi9nZW9uYW1lc2NhY2hlL19faW5pdF9fLnB5JyxcbiAgICAgICAgJ3B5dGhvbi9nZW9uYW1lc2NhY2hlLTEuMy4wLmRpc3QtaW5mbycsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gTGF5ZXIgVmVyc2lvblxuICAgICAgaWQ6ICdMYXllclZlcnNpb24zODc4REEzQScsXG4gICAgICBmaWxlczogW1xuICAgICAgICAnbGF5ZXJfdmVyc2lvbl9kZXBlbmRlbmN5LnB5JyxcbiAgICAgICAgJ3JlcXVpcmVtZW50cy50eHQnLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEJ1bmRsZWQgbGF5ZXIgdmVyc2lvblxuICAgICAgaWQ6ICdCdW5kbGVkTGF5ZXJWZXJzaW9uUHl0aG9uUnVudGltZTZCQURCRDZFJyxcbiAgICAgIGZpbGVzOiBbXG4gICAgICAgICdweXRob24vbGF5ZXJfdmVyc2lvbl9kZXBlbmRlbmN5LnB5JyxcbiAgICAgICAgJ3B5dGhvbi9nZW9uYW1lc2NhY2hlL19faW5pdF9fLnB5JyxcbiAgICAgICAgJ3B5dGhvbi9nZW9uYW1lc2NhY2hlLTEuMy4wLmRpc3QtaW5mbycsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gUHl0aG9uIEZ1bmN0aW9uXG4gICAgICBpZDogJ1B5dGhvbkZ1bmN0aW9uMEJDRjc3RkQnLFxuICAgICAgZmlsZXM6IFtcbiAgICAgICAgJ2FwcC5weScsXG4gICAgICAgICdnZW9uYW1lc2NhY2hlL19faW5pdF9fLnB5JyxcbiAgICAgICAgJ2dlb25hbWVzY2FjaGUtMS4zLjAuZGlzdC1pbmZvJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBGdW5jdGlvblxuICAgICAgaWQ6ICdGdW5jdGlvblB5dGhvblJ1bnRpbWUyOENCREEwNScsXG4gICAgICBmaWxlczogW1xuICAgICAgICAnYXBwLnB5JyxcbiAgICAgICAgJ3JlcXVpcmVtZW50cy50eHQnLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEJ1bmRsZWQgRnVuY3Rpb25cbiAgICAgIGlkOiAnQnVuZGxlZEZ1bmN0aW9uUHl0aG9uUnVudGltZTREOUEwOTE4JyxcbiAgICAgIGZpbGVzOiBbXG4gICAgICAgICdhcHAucHknLFxuICAgICAgICAnZ2VvbmFtZXNjYWNoZS9fX2luaXRfXy5weScsXG4gICAgICAgICdnZW9uYW1lc2NhY2hlLTEuMy4wLmRpc3QtaW5mbycsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gTm9kZUpzIEZ1bmN0aW9uXG4gICAgICBpZDogJ05vZGVqc0Z1bmN0aW9uMDlDMUYyMEYnLFxuICAgICAgZmlsZXM6IFtcbiAgICAgICAgJ2luZGV4LmpzJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBHbyBGdW5jdGlvblxuICAgICAgaWQ6ICdHb0Z1bmN0aW9uQ0E5NUZCQUEnLFxuICAgICAgZmlsZXM6IFtcbiAgICAgICAgJ2Jvb3RzdHJhcCcsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gRG9ja2VyIEltYWdlIEZ1bmN0aW9uXG4gICAgICBpZDogJ0RvY2tlckltYWdlRnVuY3Rpb24yOEI3NzNFNicsXG4gICAgICBmaWxlczogW1xuICAgICAgICAnYXBwLmpzJyxcbiAgICAgICAgJ0RvY2tlcmZpbGUnLFxuICAgICAgICAncGFja2FnZS5qc29uJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgXTtcblxuICBmb3IgKGNvbnN0IHJlc291cmNlIG9mIGV4cGVjdGVkQnVuZGxlZEFzc2V0cykge1xuICAgIGNvbnN0IGFzc2V0UGF0aCA9IHRlbXBsYXRlLlJlc291cmNlc1tyZXNvdXJjZS5pZF0uTWV0YWRhdGFbJ2F3czphc3NldDpwYXRoJ107XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIHJlc291cmNlLmZpbGVzKSB7XG4gICAgICBmaXh0dXJlLm91dHB1dC53cml0ZShgdmFsaWRhdGUgUGF0aCAke2ZpbGV9IGZvciByZXNvdXJjZSAke3Jlc291cmNlfWApO1xuICAgICAgZXhwZWN0KGV4aXN0c1N5bmMocGF0aC5qb2luKGZpeHR1cmUuaW50ZWdUZXN0RGlyLCAnY2RrLm91dCcsIGFzc2V0UGF0aCwgZmlsZSkpKS50b0JlVHJ1dGh5KCk7XG4gICAgfVxuICB9XG59KSk7XG5cbmludGVnVGVzdCgnc2FtIGNhbiBsb2NhbGx5IHRlc3QgdGhlIHN5bnRoZXNpemVkIGNkayBhcHBsaWNhdGlvbicsIHdpdGhTYW1JbnRlZ3JhdGlvbkZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgLy8gU3ludGggZmlyc3RcbiAgYXdhaXQgZml4dHVyZS5jZGtTeW50aCgpO1xuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZpeHR1cmUuc2FtTG9jYWxTdGFydEFwaShcbiAgICAnVGVzdFN0YWNrJywgZmFsc2UsIHJhbmRvbUludGVnZXIoMzAwMDAsIDQwMDAwKSwgJy9yZXN0YXBpcy9zcGVjL3B5dGhvbkZ1bmN0aW9uJyk7XG4gIGV4cGVjdChyZXN1bHQuYWN0aW9uU3VjY2VlZGVkKS50b0JlVHJ1dGh5KCk7XG4gIGV4cGVjdChyZXN1bHQuYWN0aW9uT3V0cHV0KS50b0VxdWFsKGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICBtZXNzYWdlOiAnSGVsbG8gV29ybGQnLFxuICB9KSk7XG59KSk7XG5cbmludGVnVGVzdCgnc2tpcHMgbm90aWNlIHJlZnJlc2gnLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgZml4dHVyZS5jZGtTeW50aCh7XG4gICAgb3B0aW9uczogWyctLW5vLW5vdGljZXMnXSxcbiAgICBtb2RFbnY6IHtcbiAgICAgIElOVEVHX1NUQUNLX1NFVDogJ3N0YWdlLXVzaW5nLWNvbnRleHQnLFxuICAgIH0sXG4gICAgYWxsb3dFcnJFeGl0OiB0cnVlLFxuICB9KTtcblxuICAvLyBOZWl0aGVyIHN1Y2NlZWRzIG5vciBmYWlscywgYnV0IHNraXBzIHRoZSByZWZyZXNoXG4gIGF3YWl0IGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJ05vdGljZXMgcmVmcmVzaGVkJyk7XG4gIGF3YWl0IGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJ05vdGljZXMgcmVmcmVzaCBmYWlsZWQnKTtcbn0pKTtcblxuLyoqXG4gKiBDcmVhdGUgYSBxdWV1ZSB3aXRoIGEgZnJlc2ggbmFtZSwgcmVkZXBsb3kgb3JwaGFuaW5nIHRoZSBxdWV1ZSwgdGhlbiBpbXBvcnQgaXQgYWdhaW5cbiAqL1xuaW50ZWdUZXN0KCd0ZXN0IHJlc291cmNlIGltcG9ydCcsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBjb25zdCBvdXRwdXRzRmlsZSA9IHBhdGguam9pbihmaXh0dXJlLmludGVnVGVzdERpciwgJ291dHB1dHMnLCAnb3V0cHV0cy5qc29uJyk7XG4gIGF3YWl0IGZzLm1rZGlyKHBhdGguZGlybmFtZShvdXRwdXRzRmlsZSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIC8vIEluaXRpYWwgZGVwbG95XG4gIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdpbXBvcnRhYmxlLXN0YWNrJywge1xuICAgIG1vZEVudjogeyBPUlBIQU5fVE9QSUM6ICcxJyB9LFxuICAgIG9wdGlvbnM6IFsnLS1vdXRwdXRzLWZpbGUnLCBvdXRwdXRzRmlsZV0sXG4gIH0pO1xuXG4gIGNvbnN0IG91dHB1dHMgPSBKU09OLnBhcnNlKChhd2FpdCBmcy5yZWFkRmlsZShvdXRwdXRzRmlsZSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KSkudG9TdHJpbmcoKSk7XG4gIGNvbnN0IHF1ZXVlTmFtZSA9IG91dHB1dHMuUXVldWVOYW1lO1xuICBjb25zdCBxdWV1ZUxvZ2ljYWxJZCA9IG91dHB1dHMuUXVldWVMb2dpY2FsSWQ7XG4gIGZpeHR1cmUubG9nKGBTZXR1cCBjb21wbGV0ZSwgY3JlYXRlZCBxdWV1ZSAke3F1ZXVlTmFtZX1gKTtcbiAgdHJ5IHtcbiAgICAvLyBEZXBsb3kgYWdhaW4sIG9ycGhhbmluZyB0aGUgcXVldWVcbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnaW1wb3J0YWJsZS1zdGFjaycsIHtcbiAgICAgIG1vZEVudjogeyBPTUlUX1RPUElDOiAnMScgfSxcbiAgICB9KTtcblxuICAgIC8vIFdyaXRlIGEgcmVzb3VyY2UgbWFwcGluZyBmaWxlIGJhc2VkIG9uIHRoZSBJRCBmcm9tIHN0ZXAgb25lLCB0aGVuIHJ1biBhbiBpbXBvcnRcbiAgICBjb25zdCBtYXBwaW5nRmlsZSA9IHBhdGguam9pbihmaXh0dXJlLmludGVnVGVzdERpciwgJ291dHB1dHMnLCAnbWFwcGluZy5qc29uJyk7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKG1hcHBpbmdGaWxlLCBKU09OLnN0cmluZ2lmeSh7IFtxdWV1ZUxvZ2ljYWxJZF06IHsgUXVldWVOYW1lOiBxdWV1ZU5hbWUgfSB9KSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcblxuICAgIGF3YWl0IGZpeHR1cmUuY2RrKFsnaW1wb3J0JyxcbiAgICAgICctLXJlc291cmNlLW1hcHBpbmcnLCBtYXBwaW5nRmlsZSxcbiAgICAgIGZpeHR1cmUuZnVsbFN0YWNrTmFtZSgnaW1wb3J0YWJsZS1zdGFjaycpXSk7XG4gIH0gZmluYWxseSB7XG4gICAgLy8gQ2xlYW51cFxuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVzdHJveSgnaW1wb3J0YWJsZS1zdGFjaycpO1xuICB9XG59KSk7XG5cbmFzeW5jIGZ1bmN0aW9uIGxpc3RDaGlsZHJlbihwYXJlbnQ6IHN0cmluZywgcHJlZDogKHg6IHN0cmluZykgPT4gUHJvbWlzZTxib29sZWFuPikge1xuICBjb25zdCByZXQgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IGNoaWxkIG9mIGF3YWl0IGZzLnJlYWRkaXIocGFyZW50LCB7IGVuY29kaW5nOiAndXRmLTgnIH0pKSB7XG4gICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLmpvaW4ocGFyZW50LCBjaGlsZC50b1N0cmluZygpKTtcbiAgICBpZiAoYXdhaXQgcHJlZChmdWxsUGF0aCkpIHtcbiAgICAgIHJldC5wdXNoKGZ1bGxQYXRoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbGlzdENoaWxkRGlycyhwYXJlbnQ6IHN0cmluZykge1xuICByZXR1cm4gbGlzdENoaWxkcmVuKHBhcmVudCwgYXN5bmMgKGZ1bGxQYXRoOiBzdHJpbmcpID0+IChhd2FpdCBmcy5zdGF0KGZ1bGxQYXRoKSkuaXNEaXJlY3RvcnkoKSk7XG59XG4iXX0=
|
|
969
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsaS5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyQkFBZ0Q7QUFDaEQseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3Qix3Q0FBOEM7QUFDOUMsd0NBQTBGO0FBQzFGLHdDQUEwRTtBQUMxRSwwREFBb0Q7QUFFcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFPLENBQUMsQ0FBQztBQUV6QixRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTtJQUNsQix3QkFBUyxDQUFDLGtCQUFrQixFQUFFLHdCQUFrQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNqRSxNQUFNLFlBQVksR0FBRyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsRyxNQUFNLFVBQVUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzSCxNQUFNLGFBQWEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8s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QUNILENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFSixLQUFLLFVBQVUsWUFBWSxDQUFDLE1BQWMsRUFBRSxJQUFxQztJQUMvRSxNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO0lBQ2hDLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxhQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFO1FBQ25FLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELElBQUksTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDeEIsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNwQjtLQUNGO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsS0FBSyxVQUFVLGFBQWEsQ0FBQyxNQUFjO0lBQ3pDLE9BQU8sWUFBWSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLGFBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ25HLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcm9taXNlcyBhcyBmcywgZXhpc3RzU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyByZXRyeSwgc2xlZXAgfSBmcm9tICcuLi9oZWxwZXJzL2F3cyc7XG5pbXBvcnQgeyBjbG9uZURpcmVjdG9yeSwgTUFKT1JfVkVSU0lPTiwgc2hlbGwsIHdpdGhEZWZhdWx0Rml4dHVyZSB9IGZyb20gJy4uL2hlbHBlcnMvY2RrJztcbmltcG9ydCB7IHJhbmRvbUludGVnZXIsIHdpdGhTYW1JbnRlZ3JhdGlvbkZpeHR1cmUgfSBmcm9tICcuLi9oZWxwZXJzL3NhbSc7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QgfSBmcm9tICcuLi9oZWxwZXJzL3Rlc3QtaGVscGVycyc7XG5cbmplc3Quc2V0VGltZW91dCg2MDBfMDAwKTtcblxuZGVzY3JpYmUoJ2NpJywgKCkgPT4ge1xuICBpbnRlZ1Rlc3QoJ291dHB1dCB0byBzdGRlcnInLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICBjb25zdCBkZXBsb3lPdXRwdXQgPSBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgndGVzdC0yJywgeyBjYXB0dXJlU3RkZXJyOiB0cnVlLCBvbmx5U3RkZXJyOiB0cnVlIH0pO1xuICAgIGNvbnN0IGRpZmZPdXRwdXQgPSBhd2FpdCBmaXh0dXJlLmNkayhbJ2RpZmYnLCBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3Rlc3QtMicpXSwgeyBjYXB0dXJlU3RkZXJyOiB0cnVlLCBvbmx5U3RkZXJyOiB0cnVlIH0pO1xuICAgIGNvbnN0IGRlc3Ryb3lPdXRwdXQgPSBhd2FpdCBmaXh0dXJlLmNka0Rlc3Ryb3koJ3Rlc3QtMicsIHsgY2FwdHVyZVN0ZGVycjogdHJ1ZSwgb25seVN0ZGVycjogdHJ1ZSB9KTtcbiAgICBleHBlY3QoZGVwbG95T3V0cHV0KS5ub3QudG9FcXVhbCgnJyk7XG4gICAgZXhwZWN0KGRlc3Ryb3lPdXRwdXQpLm5vdC50b0VxdWFsKCcnKTtcbiAgICBleHBlY3QoZGlmZk91dHB1dCkubm90LnRvRXF1YWwoJycpO1xuICB9KSk7XG4gIGRlc2NyaWJlKCdjaT10cnVlJywgKCkgPT4ge1xuICAgIGludGVnVGVzdCgnb3V0cHV0IHRvIHN0ZG91dCcsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuXG4gICAgICBjb25zdCBleGVjT3B0aW9ucyA9IHtcbiAgICAgICAgY2FwdHVyZVN0ZGVycjogdHJ1ZSxcbiAgICAgICAgb25seVN0ZGVycjogdHJ1ZSxcbiAgICAgICAgbW9kRW52OiB7IENJOiAndHJ1ZScgfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGRlcGxveU91dHB1dCA9IGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCd0ZXN0LTInLCBleGVjT3B0aW9ucyk7XG4gICAgICBjb25zdCBkaWZmT3V0cHV0ID0gYXdhaXQgZml4dHVyZS5jZGsoWydkaWZmJywgZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTInKV0sIGV4ZWNPcHRpb25zKTtcbiAgICAgIGNvbnN0IGRlc3Ryb3lPdXRwdXQgPSBhd2FpdCBmaXh0dXJlLmNka0Rlc3Ryb3koJ3Rlc3QtMicsIGV4ZWNPcHRpb25zKTtcbiAgICAgIGV4cGVjdChkZXBsb3lPdXRwdXQpLnRvRXF1YWwoJycpO1xuICAgICAgZXhwZWN0KGRlc3Ryb3lPdXRwdXQpLnRvRXF1YWwoJycpO1xuICAgICAgZXhwZWN0KGRpZmZPdXRwdXQpLnRvRXF1YWwoJycpO1xuICAgIH0pKTtcbiAgfSk7XG59KTtcblxuaW50ZWdUZXN0KCdWUEMgTG9va3VwJywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGZpeHR1cmUubG9nKCdNYWtpbmcgc3VyZSB3ZSBhcmUgY2xlYW4gYmVmb3JlIHN0YXJ0aW5nLicpO1xuICBhd2FpdCBmaXh0dXJlLmNka0Rlc3Ryb3koJ2RlZmluZS12cGMnLCB7IG1vZEVudjogeyBFTkFCTEVfVlBDX1RFU1RJTkc6ICdERUZJTkUnIH0gfSk7XG5cbiAgZml4dHVyZS5sb2coJ1NldHRpbmcgdXA6IGNyZWF0aW5nIGEgVlBDIHdpdGgga25vd24gdGFncycpO1xuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnZGVmaW5lLXZwYycsIHsgbW9kRW52OiB7IEVOQUJMRV9WUENfVEVTVElORzogJ0RFRklORScgfSB9KTtcbiAgZml4dHVyZS5sb2coJ1NldHVwIGNvbXBsZXRlIScpO1xuXG4gIGZpeHR1cmUubG9nKCdWZXJpZnlpbmcgd2UgY2FuIG5vdyBpbXBvcnQgdGhhdCBWUEMnKTtcbiAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ2ltcG9ydC12cGMnLCB7IG1vZEVudjogeyBFTkFCTEVfVlBDX1RFU1RJTkc6ICdJTVBPUlQnIH0gfSk7XG59KSk7XG5cbi8vIHRlc3RpbmcgYSBjb25zdHJ1Y3Qgd2l0aCBhIGJ1aWx0aW4gTm9kZWpzIExhbWJkYSBGdW5jdGlvbi5cbi8vIEluIHRoaXMgY2FzZSB3ZSBhcmUgdGVzdGluZyB0aGUgczMuQnVja2V0IGNvbnN0cnVjdCB3aXRoIHRoZVxuLy8gYXV0b0RlbGV0ZU9iamVjdHMgcHJvcCBzZXQgdG8gdHJ1ZSwgd2hpY2ggY3JlYXRlcyBhIExhbWJkYSBiYWNrZWRcbi8vIEN1c3RvbVJlc291cmNlLiBTaW5jZSB0aGUgY29tcGlsZWQgTGFtYmRhIGNvZGUgKGUuZy4gX19lbnRyeXBvaW50X18uanMpXG4vLyBpcyBidW5kbGVkIGFzIHBhcnQgb2YgdGhlIENESyBwYWNrYWdlLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBkb24ndFxuLy8gaW50cm9kdWNlIGNoYW5nZXMgdG8gdGhlIGNvbXBpbGVkIGNvZGUgdGhhdCBjb3VsZCBwcmV2ZW50IHRoZSBMYW1iZGEgZnJvbVxuLy8gZXhlY3V0aW5nLiBJZiB3ZSBkbywgdGhpcyB0ZXN0IHdpbGwgdGltZW91dCBhbmQgZmFpbC5cbmludGVnVGVzdCgnQ29uc3RydWN0IHdpdGggYnVpbHRpbiBMYW1iZGEgZnVuY3Rpb24nLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ2J1aWx0aW4tbGFtYmRhLWZ1bmN0aW9uJyk7XG4gIGZpeHR1cmUubG9nKCdTZXR1cCBjb21wbGV0ZSEnKTtcbiAgYXdhaXQgZml4dHVyZS5jZGtEZXN0cm95KCdidWlsdGluLWxhbWJkYS1mdW5jdGlvbicpO1xufSkpO1xuXG4vLyB0aGlzIGlzIHRvIGVuc3VyZSB0aGF0IGFzc2V0IGJ1bmRsaW5nIGZvciBhcHBzIHVuZGVyIGEgc3RhZ2UgZG9lcyBub3QgYnJlYWtcbmludGVnVGVzdCgnU3RhZ2Ugd2l0aCBidW5kbGVkIExhbWJkYSBmdW5jdGlvbicsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnYnVuZGxpbmctc3RhZ2UvQnVuZGxpbmdTdGFjaycpO1xuICBmaXh0dXJlLmxvZygnU2V0dXAgY29tcGxldGUhJyk7XG4gIGF3YWl0IGZpeHR1cmUuY2RrRGVzdHJveSgnYnVuZGxpbmctc3RhZ2UvQnVuZGxpbmdTdGFjaycpO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ1R3byB3YXlzIG9mIHNob3dpbmcgdGhlIHZlcnNpb24nLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgY29uc3QgdmVyc2lvbjEgPSBhd2FpdCBmaXh0dXJlLmNkayhbJ3ZlcnNpb24nXSwgeyB2ZXJib3NlOiBmYWxzZSB9KTtcbiAgY29uc3QgdmVyc2lvbjIgPSBhd2FpdCBmaXh0dXJlLmNkayhbJy0tdmVyc2lvbiddLCB7IHZlcmJvc2U6IGZhbHNlIH0pO1xuXG4gIGV4cGVjdCh2ZXJzaW9uMSkudG9FcXVhbCh2ZXJzaW9uMik7XG59KSk7XG5cbmludGVnVGVzdCgnVGVybWluYXRpb24gcHJvdGVjdGlvbicsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBjb25zdCBzdGFja05hbWUgPSAndGVybWluYXRpb24tcHJvdGVjdGlvbic7XG4gIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KHN0YWNrTmFtZSk7XG5cbiAgLy8gVHJ5IGEgZGVzdHJveSB0aGF0IHNob3VsZCBmYWlsXG4gIGF3YWl0IGV4cGVjdChmaXh0dXJlLmNka0Rlc3Ryb3koc3RhY2tOYW1lKSkucmVqZWN0cy50b1Rocm93KCdleGl0ZWQgd2l0aCBlcnJvcicpO1xuXG4gIC8vIENhbiB1cGRhdGUgdGVybWluYXRpb24gcHJvdGVjdGlvbiBldmVuIHRob3VnaCB0aGUgY2hhbmdlIHNldCBkb2Vzbid0IGNvbnRhaW4gY2hhbmdlc1xuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveShzdGFja05hbWUsIHsgbW9kRW52OiB7IFRFUk1JTkFUSU9OX1BST1RFQ1RJT046ICdGQUxTRScgfSB9KTtcbiAgYXdhaXQgZml4dHVyZS5jZGtEZXN0cm95KHN0YWNrTmFtZSk7XG59KSk7XG5cbmludGVnVGVzdCgnY2RrIHN5bnRoJywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGF3YWl0IGZpeHR1cmUuY2RrKFsnc3ludGgnLCBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3Rlc3QtMScpXSk7XG4gIGV4cGVjdChmaXh0dXJlLnRlbXBsYXRlKCd0ZXN0LTEnKSkudG9FcXVhbChleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgUmVzb3VyY2VzOiB7XG4gICAgICB0b3BpYzY5ODMxNDkxOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OlNOUzo6VG9waWMnLFxuICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICdhd3M6Y2RrOnBhdGgnOiBgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH0tdGVzdC0xL3RvcGljL1Jlc291cmNlYCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSkpO1xuXG4gIGF3YWl0IGZpeHR1cmUuY2RrKFsnc3ludGgnLCBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3Rlc3QtMicpXSwgeyB2ZXJib3NlOiBmYWxzZSB9KTtcbiAgZXhwZWN0KGZpeHR1cmUudGVtcGxhdGUoJ3Rlc3QtMicpKS50b0VxdWFsKGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIHRvcGljMTUyRDg0QTM3OiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OlNOUzo6VG9waWMnLFxuICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICdhd3M6Y2RrOnBhdGgnOiBgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH0tdGVzdC0yL3RvcGljMS9SZXNvdXJjZWAsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdG9waWMyQTRGQjU0N0Y6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6U05TOjpUb3BpYycsXG4gICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgJ2F3czpjZGs6cGF0aCc6IGAke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4fS10ZXN0LTIvdG9waWMyL1Jlc291cmNlYCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSkpO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ3NzbSBwYXJhbWV0ZXIgcHJvdmlkZXIgZXJyb3InLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgYXdhaXQgZXhwZWN0KGZpeHR1cmUuY2RrKFsnc3ludGgnLFxuICAgIGZpeHR1cmUuZnVsbFN0YWNrTmFtZSgnbWlzc2luZy1zc20tcGFyYW1ldGVyJyksXG4gICAgJy1jJywgJ3Rlc3Q6c3NtLXBhcmFtZXRlci1uYW1lPS9kb2VzL25vdC9leGlzdCddLCB7XG4gICAgYWxsb3dFcnJFeGl0OiB0cnVlLFxuICB9KSkucmVzb2x2ZXMudG9Db250YWluKCdTU00gcGFyYW1ldGVyIG5vdCBhdmFpbGFibGUgaW4gYWNjb3VudCcpO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ2F1dG9tYXRpYyBvcmRlcmluZycsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAvLyBEZXBsb3kgdGhlIGNvbnN1bWluZyBzdGFjayB3aGljaCB3aWxsIGluY2x1ZGUgdGhlIHByb2R1Y2luZyBzdGFja1xuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnb3JkZXItY29uc3VtaW5nJyk7XG5cbiAgLy8gRGVzdHJveSB0aGUgcHJvdmlkaW5nIHN0YWNrIHdoaWNoIHdpbGwgaW5jbHVkZSB0aGUgY29uc3VtaW5nIHN0YWNrXG4gIGF3YWl0IGZpeHR1cmUuY2RrRGVzdHJveSgnb3JkZXItcHJvdmlkaW5nJyk7XG59KSk7XG5cbmludGVnVGVzdCgnY29udGV4dCBzZXR0aW5nJywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGF3YWl0IGZzLndyaXRlRmlsZShwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsICdjZGsuY29udGV4dC5qc29uJyksIEpTT04uc3RyaW5naWZ5KHtcbiAgICBjb250ZXh0a2V5OiAndGhpcyBpcyB0aGUgY29udGV4dCB2YWx1ZScsXG4gIH0pKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBleHBlY3QoZml4dHVyZS5jZGsoWydjb250ZXh0J10pKS5yZXNvbHZlcy50b0NvbnRhaW4oJ3RoaXMgaXMgdGhlIGNvbnRleHQgdmFsdWUnKTtcblxuICAgIC8vIFRlc3QgdGhhdCBkZWxldGluZyB0aGUgY29udGV4dGtleSB3b3Jrc1xuICAgIGF3YWl0IGZpeHR1cmUuY2RrKFsnY29udGV4dCcsICctLXJlc2V0JywgJ2NvbnRleHRrZXknXSk7XG4gICAgYXdhaXQgZXhwZWN0KGZpeHR1cmUuY2RrKFsnY29udGV4dCddKSkucmVzb2x2ZXMubm90LnRvQ29udGFpbigndGhpcyBpcyB0aGUgY29udGV4dCB2YWx1ZScpO1xuXG4gICAgLy8gVGVzdCB0aGF0IGZvcmNlZCBkZWxldGUgb2YgdGhlIGNvbnRleHQga2V5IGRvZXMgbm90IHRocm93XG4gICAgYXdhaXQgZml4dHVyZS5jZGsoWydjb250ZXh0JywgJy1mJywgJy0tcmVzZXQnLCAnY29udGV4dGtleSddKTtcblxuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGZzLnVubGluayhwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsICdjZGsuY29udGV4dC5qc29uJykpO1xuICB9XG59KSk7XG5cbmludGVnVGVzdCgnY29udGV4dCBpbiBzdGFnZSBwcm9wYWdhdGVzIHRvIHRvcCcsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBhd2FpdCBleHBlY3QoZml4dHVyZS5jZGtTeW50aCh7XG4gICAgLy8gVGhpcyB3aWxsIG1ha2UgaXQgZXJyb3IgdG8gcHJvdmUgdGhhdCB0aGUgY29udGV4dCBidWJibGVzIHVwLCBhbmQgYWxzbyB0aGF0IHdlIGNhbiBmYWlsIG9uIGNvbW1hbmRcbiAgICBvcHRpb25zOiBbJy0tbm8tbG9va3VwcyddLFxuICAgIG1vZEVudjoge1xuICAgICAgSU5URUdfU1RBQ0tfU0VUOiAnc3RhZ2UtdXNpbmctY29udGV4dCcsXG4gICAgfSxcbiAgICBhbGxvd0VyckV4aXQ6IHRydWUsXG4gIH0pKS5yZXNvbHZlcy50b0NvbnRhaW4oJ0NvbnRleHQgbG9va3VwcyBoYXZlIGJlZW4gZGlzYWJsZWQnKTtcbn0pKTtcblxuaW50ZWdUZXN0KCdkZXBsb3knLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgY29uc3Qgc3RhY2tBcm4gPSBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgndGVzdC0yJywgeyBjYXB0dXJlU3RkZXJyOiBmYWxzZSB9KTtcblxuICAvLyB2ZXJpZnkgdGhlIG51bWJlciBvZiByZXNvdXJjZXMgaW4gdGhlIHN0YWNrXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZml4dHVyZS5hd3MuY2xvdWRGb3JtYXRpb24oJ2Rlc2NyaWJlU3RhY2tSZXNvdXJjZXMnLCB7XG4gICAgU3RhY2tOYW1lOiBzdGFja0FybixcbiAgfSk7XG4gIGV4cGVjdChyZXNwb25zZS5TdGFja1Jlc291cmNlcz8ubGVuZ3RoKS50b0VxdWFsKDIpO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ2RlcGxveSBhbGwnLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgY29uc3QgYXJucyA9IGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCd0ZXN0LSonLCB7IGNhcHR1cmVTdGRlcnI6IGZhbHNlIH0pO1xuXG4gIC8vIHZlcmlmeSB0aGF0IHdlIG9ubHkgZGVwbG95ZWQgYSBzaW5nbGUgc3RhY2sgKHRoZXJlJ3MgYSBzaW5nbGUgQVJOIGluIHRoZSBvdXRwdXQpXG4gIGV4cGVjdChhcm5zLnNwbGl0KCdcXG4nKS5sZW5ndGgpLnRvRXF1YWwoMik7XG59KSk7XG5cbmludGVnVGVzdCgnbmVzdGVkIHN0YWNrIHdpdGggcGFyYW1ldGVycycsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAvLyBTVEFDS19OQU1FX1BSRUZJWCBpcyB1c2VkIGluIE15VG9waWNQYXJhbSB0byBhbGxvdyBtdWx0aXBsZSBpbnN0YW5jZXNcbiAgLy8gb2YgdGhpcyB0ZXN0IHRvIHJ1biBpbiBwYXJhbGxlbCwgb3RoZXdpc2UgdGhleSB3aWxsIGF0dGVtcHQgdG8gY3JlYXRlIHRoZSBzYW1lIFNOUyB0b3BpYy5cbiAgY29uc3Qgc3RhY2tBcm4gPSBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnd2l0aC1uZXN0ZWQtc3RhY2stdXNpbmctcGFyYW1ldGVycycsIHtcbiAgICBvcHRpb25zOiBbJy0tcGFyYW1ldGVycycsIGBNeVRvcGljUGFyYW09JHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH1UaGVyZUlzTm9TcG9vbmBdLFxuICAgIGNhcHR1cmVTdGRlcnI6IGZhbHNlLFxuICB9KTtcblxuICAvLyB2ZXJpZnkgdGhhdCB3ZSBvbmx5IGRlcGxveWVkIGEgc2luZ2xlIHN0YWNrICh0aGVyZSdzIGEgc2luZ2xlIEFSTiBpbiB0aGUgb3V0cHV0KVxuICBleHBlY3Qoc3RhY2tBcm4uc3BsaXQoJ1xcbicpLmxlbmd0aCkudG9FcXVhbCgxKTtcblxuICAvLyB2ZXJpZnkgdGhlIG51bWJlciBvZiByZXNvdXJjZXMgaW4gdGhlIHN0YWNrXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZml4dHVyZS5hd3MuY2xvdWRGb3JtYXRpb24oJ2Rlc2NyaWJlU3RhY2tSZXNvdXJjZXMnLCB7XG4gICAgU3RhY2tOYW1lOiBzdGFja0FybixcbiAgfSk7XG4gIGV4cGVjdChyZXNwb25zZS5TdGFja1Jlc291cmNlcz8ubGVuZ3RoKS50b0VxdWFsKDEpO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ2RlcGxveSB3aXRob3V0IGV4ZWN1dGUgYSBuYW1lZCBjaGFuZ2Ugc2V0Jywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGNvbnN0IGNoYW5nZVNldE5hbWUgPSAnY3VzdG9tLWNoYW5nZS1zZXQtbmFtZSc7XG4gIGNvbnN0IHN0YWNrQXJuID0gYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ3Rlc3QtMicsIHtcbiAgICBvcHRpb25zOiBbJy0tbm8tZXhlY3V0ZScsICctLWNoYW5nZS1zZXQtbmFtZScsIGNoYW5nZVNldE5hbWVdLFxuICAgIGNhcHR1cmVTdGRlcnI6IGZhbHNlLFxuICB9KTtcbiAgLy8gdmVyaWZ5IHRoYXQgd2Ugb25seSBkZXBsb3llZCBhIHNpbmdsZSBzdGFjayAodGhlcmUncyBhIHNpbmdsZSBBUk4gaW4gdGhlIG91dHB1dClcbiAgZXhwZWN0KHN0YWNrQXJuLnNwbGl0KCdcXG4nKS5sZW5ndGgpLnRvRXF1YWwoMSk7XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXh0dXJlLmF3cy5jbG91ZEZvcm1hdGlvbignZGVzY3JpYmVTdGFja3MnLCB7XG4gICAgU3RhY2tOYW1lOiBzdGFja0FybixcbiAgfSk7XG4gIGV4cGVjdChyZXNwb25zZS5TdGFja3M/LlswXS5TdGFja1N0YXR1cykudG9FcXVhbCgnUkVWSUVXX0lOX1BST0dSRVNTJyk7XG5cbiAgLy92ZXJpZnkgYSBjaGFuZ2Ugc2V0IHdhcyBjcmVhdGVkIHdpdGggdGhlIHByb3ZpZGVkIG5hbWVcbiAgY29uc3QgY2hhbmdlU2V0UmVzcG9uc2UgPSBhd2FpdCBmaXh0dXJlLmF3cy5jbG91ZEZvcm1hdGlvbignbGlzdENoYW5nZVNldHMnLCB7XG4gICAgU3RhY2tOYW1lOiBzdGFja0FybixcbiAgfSk7XG4gIGNvbnN0IGNoYW5nZVNldHMgPSBjaGFuZ2VTZXRSZXNwb25zZS5TdW1tYXJpZXMgfHwgW107XG4gIGV4cGVjdChjaGFuZ2VTZXRzLmxlbmd0aCkudG9FcXVhbCgxKTtcbiAgZXhwZWN0KGNoYW5nZVNldHNbMF0uQ2hhbmdlU2V0TmFtZSkudG9FcXVhbChjaGFuZ2VTZXROYW1lKTtcbiAgZXhwZWN0KGNoYW5nZVNldHNbMF0uU3RhdHVzKS50b0VxdWFsKCdDUkVBVEVfQ09NUExFVEUnKTtcbn0pKTtcblxuaW50ZWdUZXN0KCdzZWN1cml0eSByZWxhdGVkIGNoYW5nZXMgd2l0aG91dCBhIENMSSBhcmUgZXhwZWN0ZWQgdG8gZmFpbCcsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAvLyByZWRpcmVjdCAvZGV2L251bGwgdG8gc3RkaW4sIHdoaWNoIG1lYW5zIHRoZXJlIHdpbGwgbm90IGJlIHR0eSBhdHRhY2hlZFxuICAvLyBzaW5jZSB0aGlzIHN0YWNrIGluY2x1ZGVzIHNlY3VyaXR5LXJlbGF0ZWQgY2hhbmdlcywgdGhlIGRlcGxveW1lbnQgc2hvdWxkXG4gIC8vIGltbWVkaWF0ZWx5IGZhaWwgYmVjYXVzZSB3ZSBjYW4ndCBjb25maXJtIHRoZSBjaGFuZ2VzXG4gIGNvbnN0IHN0YWNrTmFtZSA9ICdpYW0tdGVzdCc7XG4gIGF3YWl0IGV4cGVjdChmaXh0dXJlLmNka0RlcGxveShzdGFja05hbWUsIHtcbiAgICBvcHRpb25zOiBbJzwnLCAnL2Rldi9udWxsJ10sIC8vIEg0eCwgdGhpcyBvbmx5IHdvcmtzIGJlY2F1c2UgSSBoYXBwZW4gdG8ga25vdyB3ZSBwYXNzIHNoZWxsOiB0cnVlLlxuICAgIG5ldmVyUmVxdWlyZUFwcHJvdmFsOiBmYWxzZSxcbiAgfSkpLnJlamVjdHMudG9UaHJvdygnZXhpdGVkIHdpdGggZXJyb3InKTtcblxuICAvLyBFbnN1cmUgc3RhY2sgd2FzIG5vdCBkZXBsb3llZFxuICBhd2FpdCBleHBlY3QoZml4dHVyZS5hd3MuY2xvdWRGb3JtYXRpb24oJ2Rlc2NyaWJlU3RhY2tzJywge1xuICAgIFN0YWNrTmFtZTogZml4dHVyZS5mdWxsU3RhY2tOYW1lKHN0YWNrTmFtZSksXG4gIH0pKS5yZWplY3RzLnRvVGhyb3coJ2RvZXMgbm90IGV4aXN0Jyk7XG59KSk7XG5cbmludGVnVGVzdCgnZGVwbG95IHdpbGRjYXJkIHdpdGggb3V0cHV0cycsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBjb25zdCBvdXRwdXRzRmlsZSA9IHBhdGguam9pbihmaXh0dXJlLmludGVnVGVzdERpciwgJ291dHB1dHMnLCAnb3V0cHV0cy5qc29uJyk7XG4gIGF3YWl0IGZzLm1rZGlyKHBhdGguZGlybmFtZShvdXRwdXRzRmlsZSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KFsnb3V0cHV0cy10ZXN0LSonXSwge1xuICAgIG9wdGlvbnM6IFsnLS1vdXRwdXRzLWZpbGUnLCBvdXRwdXRzRmlsZV0sXG4gIH0pO1xuXG4gIGNvbnN0IG91dHB1dHMgPSBKU09OLnBhcnNlKChhd2FpdCBmcy5yZWFkRmlsZShvdXRwdXRzRmlsZSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KSkudG9TdHJpbmcoKSk7XG4gIGV4cGVjdChvdXRwdXRzKS50b0VxdWFsKHtcbiAgICBbYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9LW91dHB1dHMtdGVzdC0xYF06IHtcbiAgICAgIFRvcGljTmFtZTogYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9LW91dHB1dHMtdGVzdC0xTXlUb3BpY2AsXG4gICAgfSxcbiAgICBbYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9LW91dHB1dHMtdGVzdC0yYF06IHtcbiAgICAgIFRvcGljTmFtZTogYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9LW91dHB1dHMtdGVzdC0yTXlPdGhlclRvcGljYCxcbiAgICB9LFxuICB9KTtcbn0pKTtcblxuaW50ZWdUZXN0KCdkZXBsb3kgd2l0aCBwYXJhbWV0ZXJzJywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGNvbnN0IHN0YWNrQXJuID0gYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ3BhcmFtLXRlc3QtMScsIHtcbiAgICBvcHRpb25zOiBbXG4gICAgICAnLS1wYXJhbWV0ZXJzJywgYFRvcGljTmFtZVBhcmFtPSR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9YmF6aW5nYWAsXG4gICAgXSxcbiAgICBjYXB0dXJlU3RkZXJyOiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXh0dXJlLmF3cy5jbG91ZEZvcm1hdGlvbignZGVzY3JpYmVTdGFja3MnLCB7XG4gICAgU3RhY2tOYW1lOiBzdGFja0FybixcbiAgfSk7XG5cbiAgZXhwZWN0KHJlc3BvbnNlLlN0YWNrcz8uWzBdLlBhcmFtZXRlcnMpLnRvQ29udGFpbkVxdWFsKFxuICAgIHtcbiAgICAgIFBhcmFtZXRlcktleTogJ1RvcGljTmFtZVBhcmFtJyxcbiAgICAgIFBhcmFtZXRlclZhbHVlOiBgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH1iYXppbmdhYCxcbiAgICB9LFxuICApO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ3VwZGF0ZSB0byBzdGFjayBpbiBST0xMQkFDS19DT01QTEVURSBzdGF0ZSB3aWxsIGRlbGV0ZSBzdGFjayBhbmQgY3JlYXRlIGEgbmV3IG9uZScsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAvLyBHSVZFTlxuICBhd2FpdCBleHBlY3QoZml4dHVyZS5jZGtEZXBsb3koJ3BhcmFtLXRlc3QtMScsIHtcbiAgICBvcHRpb25zOiBbXG4gICAgICAnLS1wYXJhbWV0ZXJzJywgYFRvcGljTmFtZVBhcmFtPSR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9QGF3d2AsXG4gICAgXSxcbiAgICBjYXB0dXJlU3RkZXJyOiBmYWxzZSxcbiAgfSkpLnJlamVjdHMudG9UaHJvdygnZXhpdGVkIHdpdGggZXJyb3InKTtcblxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpeHR1cmUuYXdzLmNsb3VkRm9ybWF0aW9uKCdkZXNjcmliZVN0YWNrcycsIHtcbiAgICBTdGFja05hbWU6IGZpeHR1cmUuZnVsbFN0YWNrTmFtZSgncGFyYW0tdGVzdC0xJyksXG4gIH0pO1xuXG4gIGNvbnN0IHN0YWNrQXJuID0gcmVzcG9uc2UuU3RhY2tzPy5bMF0uU3RhY2tJZDtcbiAgZXhwZWN0KHJlc3BvbnNlLlN0YWNrcz8uWzBdLlN0YWNrU3RhdHVzKS50b0VxdWFsKCdST0xMQkFDS19DT01QTEVURScpO1xuXG4gIC8vIFdIRU5cbiAgY29uc3QgbmV3U3RhY2tBcm4gPSBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgncGFyYW0tdGVzdC0xJywge1xuICAgIG9wdGlvbnM6IFtcbiAgICAgICctLXBhcmFtZXRlcnMnLCBgVG9waWNOYW1lUGFyYW09JHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH1hbGxnb29kYCxcbiAgICBdLFxuICAgIGNhcHR1cmVTdGRlcnI6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCBuZXdTdGFja1Jlc3BvbnNlID0gYXdhaXQgZml4dHVyZS5hd3MuY2xvdWRGb3JtYXRpb24oJ2Rlc2NyaWJlU3RhY2tzJywge1xuICAgIFN0YWNrTmFtZTogbmV3U3RhY2tBcm4sXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHN0YWNrQXJuKS5ub3QudG9FcXVhbChuZXdTdGFja0Fybik7IC8vIG5ldyBzdGFjayB3YXMgY3JlYXRlZFxuICBleHBlY3QobmV3U3RhY2tSZXNwb25zZS5TdGFja3M/LlswXS5TdGFja1N0YXR1cykudG9FcXVhbCgnQ1JFQVRFX0NPTVBMRVRFJyk7XG4gIGV4cGVjdChuZXdTdGFja1Jlc3BvbnNlLlN0YWNrcz8uWzBdLlBhcmFtZXRlcnMpLnRvQ29udGFpbkVxdWFsKFxuICAgIHtcbiAgICAgIFBhcmFtZXRlcktleTogJ1RvcGljTmFtZVBhcmFtJyxcbiAgICAgIFBhcmFtZXRlclZhbHVlOiBgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH1hbGxnb29kYCxcbiAgICB9LFxuICApO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ3N0YWNrIGluIFVQREFURV9ST0xMQkFDS19DT01QTEVURSBzdGF0ZSBjYW4gYmUgdXBkYXRlZCcsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBzdGFja0FybiA9IGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdwYXJhbS10ZXN0LTEnLCB7XG4gICAgb3B0aW9uczogW1xuICAgICAgJy0tcGFyYW1ldGVycycsIGBUb3BpY05hbWVQYXJhbT0ke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4fW5pY2VgLFxuICAgIF0sXG4gICAgY2FwdHVyZVN0ZGVycjogZmFsc2UsXG4gIH0pO1xuXG4gIGxldCByZXNwb25zZSA9IGF3YWl0IGZpeHR1cmUuYXdzLmNsb3VkRm9ybWF0aW9uKCdkZXNjcmliZVN0YWNrcycsIHtcbiAgICBTdGFja05hbWU6IHN0YWNrQXJuLFxuICB9KTtcblxuICBleHBlY3QocmVzcG9uc2UuU3RhY2tzPy5bMF0uU3RhY2tTdGF0dXMpLnRvRXF1YWwoJ0NSRUFURV9DT01QTEVURScpO1xuXG4gIC8vIGJhZCBwYXJhbWV0ZXIgbmFtZSB3aXRoIEAgd2lsbCBwdXQgc3RhY2sgaW50byBVUERBVEVfUk9MTEJBQ0tfQ09NUExFVEVcbiAgYXdhaXQgZXhwZWN0KGZpeHR1cmUuY2RrRGVwbG95KCdwYXJhbS10ZXN0LTEnLCB7XG4gICAgb3B0aW9uczogW1xuICAgICAgJy0tcGFyYW1ldGVycycsIGBUb3BpY05hbWVQYXJhbT0ke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4fUBhd3dgLFxuICAgIF0sXG4gICAgY2FwdHVyZVN0ZGVycjogZmFsc2UsXG4gIH0pKS5yZWplY3RzLnRvVGhyb3coJ2V4aXRlZCB3aXRoIGVycm9yJyk7O1xuXG4gIHJlc3BvbnNlID0gYXdhaXQgZml4dHVyZS5hd3MuY2xvdWRGb3JtYXRpb24oJ2Rlc2NyaWJlU3RhY2tzJywge1xuICAgIFN0YWNrTmFtZTogc3RhY2tBcm4sXG4gIH0pO1xuXG4gIGV4cGVjdChyZXNwb25zZS5TdGFja3M/LlswXS5TdGFja1N0YXR1cykudG9FcXVhbCgnVVBEQVRFX1JPTExCQUNLX0NPTVBMRVRFJyk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgncGFyYW0tdGVzdC0xJywge1xuICAgIG9wdGlvbnM6IFtcbiAgICAgICctLXBhcmFtZXRlcnMnLCBgVG9waWNOYW1lUGFyYW09JHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH1hbGxnb29kYCxcbiAgICBdLFxuICAgIGNhcHR1cmVTdGRlcnI6IGZhbHNlLFxuICB9KTtcblxuICByZXNwb25zZSA9IGF3YWl0IGZpeHR1cmUuYXdzLmNsb3VkRm9ybWF0aW9uKCdkZXNjcmliZVN0YWNrcycsIHtcbiAgICBTdGFja05hbWU6IHN0YWNrQXJuLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChyZXNwb25zZS5TdGFja3M/LlswXS5TdGFja1N0YXR1cykudG9FcXVhbCgnVVBEQVRFX0NPTVBMRVRFJyk7XG4gIGV4cGVjdChyZXNwb25zZS5TdGFja3M/LlswXS5QYXJhbWV0ZXJzKS50b0NvbnRhaW5FcXVhbChcbiAgICB7XG4gICAgICBQYXJhbWV0ZXJLZXk6ICdUb3BpY05hbWVQYXJhbScsXG4gICAgICBQYXJhbWV0ZXJWYWx1ZTogYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9YWxsZ29vZGAsXG4gICAgfSxcbiAgKTtcbn0pKTtcblxuaW50ZWdUZXN0KCdkZXBsb3kgd2l0aCB3aWxkY2FyZCBhbmQgcGFyYW1ldGVycycsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgncGFyYW0tdGVzdC0qJywge1xuICAgIG9wdGlvbnM6IFtcbiAgICAgICctLXBhcmFtZXRlcnMnLCBgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH0tcGFyYW0tdGVzdC0xOlRvcGljTmFtZVBhcmFtPSR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9YmF6aW5nYWAsXG4gICAgICAnLS1wYXJhbWV0ZXJzJywgYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9LXBhcmFtLXRlc3QtMjpPdGhlclRvcGljTmFtZVBhcmFtPSR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9VGhhdHNNeVNwb3RgLFxuICAgICAgJy0tcGFyYW1ldGVycycsIGAke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4fS1wYXJhbS10ZXN0LTM6RGlzcGxheU5hbWVQYXJhbT0ke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4fUhleVRoZXJlYCxcbiAgICAgICctLXBhcmFtZXRlcnMnLCBgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH0tcGFyYW0tdGVzdC0zOk90aGVyRGlzcGxheU5hbWVQYXJhbT0ke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4fUFub3RoZXJPbmVgLFxuICAgIF0sXG4gIH0pO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ2RlcGxveSB3aXRoIHBhcmFtZXRlcnMgbXVsdGknLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgY29uc3QgcGFyYW1WYWwxID0gYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9YmF6aW5nYWA7XG4gIGNvbnN0IHBhcmFtVmFsMiA9IGAke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4fT1qYWdzaGVtYXNoYDtcblxuICBjb25zdCBzdGFja0FybiA9IGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdwYXJhbS10ZXN0LTMnLCB7XG4gICAgb3B0aW9uczogW1xuICAgICAgJy0tcGFyYW1ldGVycycsIGBEaXNwbGF5TmFtZVBhcmFtPSR7cGFyYW1WYWwxfWAsXG4gICAgICAnLS1wYXJhbWV0ZXJzJywgYE90aGVyRGlzcGxheU5hbWVQYXJhbT0ke3BhcmFtVmFsMn1gLFxuICAgIF0sXG4gICAgY2FwdHVyZVN0ZGVycjogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZml4dHVyZS5hd3MuY2xvdWRGb3JtYXRpb24oJ2Rlc2NyaWJlU3RhY2tzJywge1xuICAgIFN0YWNrTmFtZTogc3RhY2tBcm4sXG4gIH0pO1xuXG4gIGV4cGVjdChyZXNwb25zZS5TdGFja3M/LlswXS5QYXJhbWV0ZXJzKS50b0NvbnRhaW5FcXVhbChcbiAgICB7XG4gICAgICBQYXJhbWV0ZXJLZXk6ICdEaXNwbGF5TmFtZVBhcmFtJyxcbiAgICAgIFBhcmFtZXRlclZhbHVlOiBwYXJhbVZhbDEsXG4gICAgfSxcbiAgKTtcbiAgZXhwZWN0KHJlc3BvbnNlLlN0YWNrcz8uWzBdLlBhcmFtZXRlcnMpLnRvQ29udGFpbkVxdWFsKFxuICAgIHtcbiAgICAgIFBhcmFtZXRlcktleTogJ090aGVyRGlzcGxheU5hbWVQYXJhbScsXG4gICAgICBQYXJhbWV0ZXJWYWx1ZTogcGFyYW1WYWwyLFxuICAgIH0sXG4gICk7XG59KSk7XG5cbmludGVnVGVzdCgnZGVwbG95IHdpdGggbm90aWZpY2F0aW9uIEFSTicsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBjb25zdCB0b3BpY05hbWUgPSBgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH0tdGVzdC10b3BpY2A7XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXh0dXJlLmF3cy5zbnMoJ2NyZWF0ZVRvcGljJywgeyBOYW1lOiB0b3BpY05hbWUgfSk7XG4gIGNvbnN0IHRvcGljQXJuID0gcmVzcG9uc2UuVG9waWNBcm4hO1xuICB0cnkge1xuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCd0ZXN0LTInLCB7XG4gICAgICBvcHRpb25zOiBbJy0tbm90aWZpY2F0aW9uLWFybnMnLCB0b3BpY0Fybl0sXG4gICAgfSk7XG5cbiAgICAvLyB2ZXJpZnkgdGhhdCB0aGUgc3RhY2sgd2UgZGVwbG95ZWQgaGFzIG91ciBub3RpZmljYXRpb24gQVJOXG4gICAgY29uc3QgZGVzY3JpYmVSZXNwb25zZSA9IGF3YWl0IGZpeHR1cmUuYXdzLmNsb3VkRm9ybWF0aW9uKCdkZXNjcmliZVN0YWNrcycsIHtcbiAgICAgIFN0YWNrTmFtZTogZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTInKSxcbiAgICB9KTtcbiAgICBleHBlY3QoZGVzY3JpYmVSZXNwb25zZS5TdGFja3M/LlswXS5Ob3RpZmljYXRpb25BUk5zKS50b0VxdWFsKFt0b3BpY0Fybl0pO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGZpeHR1cmUuYXdzLnNucygnZGVsZXRlVG9waWMnLCB7XG4gICAgICBUb3BpY0FybjogdG9waWNBcm4sXG4gICAgfSk7XG4gIH1cbn0pKTtcblxuaWYgKE1BSk9SX1ZFUlNJT04gPT09ICcxJykge1xuICAvLyBOT1RFOiB0aGlzIGRvZXNuJ3QgY3VycmVudGx5IHdvcmsgd2l0aCBtb2Rlcm4tc3R5bGUgc3ludGhlc2lzLCBhcyB0aGUgYm9vdHN0cmFwXG4gIC8vIHJvbGUgYnkgZGVmYXVsdCB3aWxsIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gaWFtOlBhc3NSb2xlIHRoZSBjcmVhdGVkIHJvbGUuXG4gIGludGVnVGVzdCgnZGVwbG95IHdpdGggcm9sZScsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIGNvbnN0IHJvbGVOYW1lID0gYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9LXRlc3Qtcm9sZWA7XG5cbiAgICBhd2FpdCBkZWxldGVSb2xlKCk7XG5cbiAgICBjb25zdCBjcmVhdGVSZXNwb25zZSA9IGF3YWl0IGZpeHR1cmUuYXdzLmlhbSgnY3JlYXRlUm9sZScsIHtcbiAgICAgIFJvbGVOYW1lOiByb2xlTmFtZSxcbiAgICAgIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudDogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNycsXG4gICAgICAgIFN0YXRlbWVudDogW3tcbiAgICAgICAgICBBY3Rpb246ICdzdHM6QXNzdW1lUm9sZScsXG4gICAgICAgICAgUHJpbmNpcGFsOiB7IFNlcnZpY2U6ICdjbG91ZGZvcm1hdGlvbi5hbWF6b25hd3MuY29tJyB9LFxuICAgICAgICAgIEVmZmVjdDogJ0FsbG93JyxcbiAgICAgICAgfSwge1xuICAgICAgICAgIEFjdGlvbjogJ3N0czpBc3N1bWVSb2xlJyxcbiAgICAgICAgICBQcmluY2lwYWw6IHsgQVdTOiAoYXdhaXQgZml4dHVyZS5hd3Muc3RzKCdnZXRDYWxsZXJJZGVudGl0eScsIHt9KSkuQXJuIH0sXG4gICAgICAgICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgICAgICB9XSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICAgIGNvbnN0IHJvbGVBcm4gPSBjcmVhdGVSZXNwb25zZS5Sb2xlLkFybjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZml4dHVyZS5hd3MuaWFtKCdwdXRSb2xlUG9saWN5Jywge1xuICAgICAgICBSb2xlTmFtZTogcm9sZU5hbWUsXG4gICAgICAgIFBvbGljeU5hbWU6ICdEZWZhdWx0UG9saWN5JyxcbiAgICAgICAgUG9saWN5RG9jdW1lbnQ6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNycsXG4gICAgICAgICAgU3RhdGVtZW50OiBbe1xuICAgICAgICAgICAgQWN0aW9uOiAnKicsXG4gICAgICAgICAgICBSZXNvdXJjZTogJyonLFxuICAgICAgICAgICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgICAgICAgIH1dLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCByZXRyeShmaXh0dXJlLm91dHB1dCwgJ1RyeWluZyB0byBhc3N1bWUgZnJlc2ggcm9sZScsIHJldHJ5LmZvclNlY29uZHMoMzAwKSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBmaXh0dXJlLmF3cy5zdHMoJ2Fzc3VtZVJvbGUnLCB7XG4gICAgICAgICAgUm9sZUFybjogcm9sZUFybixcbiAgICAgICAgICBSb2xlU2Vzc2lvbk5hbWU6ICd0ZXN0aW5nJyxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgLy8gSW4gcHJpbmNpcGxlLCB0aGUgcm9sZSBoYXMgcmVwbGljYXRlZCBmcm9tICd1cy1lYXN0LTEnIHRvIHdoZXJldmVyIHdlJ3JlIHRlc3RpbmcuXG4gICAgICAvLyBHaXZlIGl0IGEgbGl0dGxlIG1vcmUgc2xlZXAgdG8gbWFrZSBzdXJlIENsb3VkRm9ybWF0aW9uIGlzIG5vdCBoaXR0aW5nIGEgYm94XG4gICAgICAvLyB0aGF0IGRvZXNuJ3QgaGF2ZSBpdCB5ZXQuXG4gICAgICBhd2FpdCBzbGVlcCg1MDAwKTtcblxuICAgICAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ3Rlc3QtMicsIHtcbiAgICAgICAgb3B0aW9uczogWyctLXJvbGUtYXJuJywgcm9sZUFybl0sXG4gICAgICB9KTtcblxuICAgICAgLy8gSW1tZWRpYXRlbHkgZGVsZXRlIHRoZSBzdGFjayBhZ2FpbiBiZWZvcmUgd2UgZGVsZXRlIHRoZSByb2xlLlxuICAgICAgLy9cbiAgICAgIC8vIFNpbmNlIHJvbGVzIGFyZSBzdGlja3ksIGlmIHdlIGRlbGV0ZSB0aGUgcm9sZSBiZWZvcmUgdGhlIHN0YWNrLCBzdWJzZXF1ZW50IERlbGV0ZVN0YWNrXG4gICAgICAvLyBvcGVyYXRpb25zIHdpbGwgZmFpbCB3aGVuIENsb3VkRm9ybWF0aW9uIHRyaWVzIHRvIGFzc3VtZSB0aGUgcm9sZSB0aGF0J3MgYWxyZWFkeSBnb25lLlxuICAgICAgYXdhaXQgZml4dHVyZS5jZGtEZXN0cm95KCd0ZXN0LTInKTtcblxuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBkZWxldGVSb2xlKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gZGVsZXRlUm9sZSgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAoY29uc3QgcG9saWN5TmFtZSBvZiAoYXdhaXQgZml4dHVyZS5hd3MuaWFtKCdsaXN0Um9sZVBvbGljaWVzJywgeyBSb2xlTmFtZTogcm9sZU5hbWUgfSkpLlBvbGljeU5hbWVzKSB7XG4gICAgICAgICAgYXdhaXQgZml4dHVyZS5hd3MuaWFtKCdkZWxldGVSb2xlUG9saWN5Jywge1xuICAgICAgICAgICAgUm9sZU5hbWU6IHJvbGVOYW1lLFxuICAgICAgICAgICAgUG9saWN5TmFtZTogcG9saWN5TmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBmaXh0dXJlLmF3cy5pYW0oJ2RlbGV0ZVJvbGUnLCB7IFJvbGVOYW1lOiByb2xlTmFtZSB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGUubWVzc2FnZS5pbmRleE9mKCdjYW5ub3QgYmUgZm91bmQnKSA+IC0xKSB7IHJldHVybjsgfVxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfSkpO1xufVxuXG5pbnRlZ1Rlc3QoJ2NkayBkaWZmJywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGNvbnN0IGRpZmYxID0gYXdhaXQgZml4dHVyZS5jZGsoWydkaWZmJywgZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTEnKV0pO1xuICBleHBlY3QoZGlmZjEpLnRvQ29udGFpbignQVdTOjpTTlM6OlRvcGljJyk7XG5cbiAgY29uc3QgZGlmZjIgPSBhd2FpdCBmaXh0dXJlLmNkayhbJ2RpZmYnLCBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3Rlc3QtMicpXSk7XG4gIGV4cGVjdChkaWZmMikudG9Db250YWluKCdBV1M6OlNOUzo6VG9waWMnKTtcblxuICAvLyBXZSBjYW4gbWFrZSBpdCBmYWlsIGJ5IHBhc3NpbmcgLS1mYWlsXG4gIGF3YWl0IGV4cGVjdChmaXh0dXJlLmNkayhbJ2RpZmYnLCAnLS1mYWlsJywgZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTEnKV0pKVxuICAgIC5yZWplY3RzLnRvVGhyb3coJ2V4aXRlZCB3aXRoIGVycm9yJyk7XG59KSk7XG5cbmludGVnVGVzdCgnZW5hYmxlRGlmZk5vRmFpbCcsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBhd2FpdCBkaWZmU2hvdWxkU3VjY2VlZFdpdGgoeyBmYWlsOiBmYWxzZSwgZW5hYmxlRGlmZk5vRmFpbDogZmFsc2UgfSk7XG4gIGF3YWl0IGRpZmZTaG91bGRTdWNjZWVkV2l0aCh7IGZhaWw6IGZhbHNlLCBlbmFibGVEaWZmTm9GYWlsOiB0cnVlIH0pO1xuICBhd2FpdCBkaWZmU2hvdWxkRmFpbFdpdGgoeyBmYWlsOiB0cnVlLCBlbmFibGVEaWZmTm9GYWlsOiBmYWxzZSB9KTtcbiAgYXdhaXQgZGlmZlNob3VsZEZhaWxXaXRoKHsgZmFpbDogdHJ1ZSwgZW5hYmxlRGlmZk5vRmFpbDogdHJ1ZSB9KTtcbiAgYXdhaXQgZGlmZlNob3VsZEZhaWxXaXRoKHsgZmFpbDogdW5kZWZpbmVkLCBlbmFibGVEaWZmTm9GYWlsOiBmYWxzZSB9KTtcbiAgYXdhaXQgZGlmZlNob3VsZFN1Y2NlZWRXaXRoKHsgZmFpbDogdW5kZWZpbmVkLCBlbmFibGVEaWZmTm9GYWlsOiB0cnVlIH0pO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIGRpZmZTaG91bGRTdWNjZWVkV2l0aChwcm9wczogRGlmZlBhcmFtZXRlcnMpIHtcbiAgICBhd2FpdCBleHBlY3QoZGlmZihwcm9wcykpLnJlc29sdmVzLm5vdC50b1Rocm93RXJyb3IoKTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGRpZmZTaG91bGRGYWlsV2l0aChwcm9wczogRGlmZlBhcmFtZXRlcnMpIHtcbiAgICBhd2FpdCBleHBlY3QoZGlmZihwcm9wcykpLnJlamVjdHMudG9UaHJvdygnZXhpdGVkIHdpdGggZXJyb3InKTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGRpZmYocHJvcHM6IERpZmZQYXJhbWV0ZXJzKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBhd2FpdCB1cGRhdGVDb250ZXh0KHByb3BzLmVuYWJsZURpZmZOb0ZhaWwpO1xuICAgIGNvbnN0IGZsYWcgPSBwcm9wcy5mYWlsICE9IG51bGxcbiAgICAgID8gKHByb3BzLmZhaWwgPyAnLS1mYWlsJyA6ICctLW5vLWZhaWwnKVxuICAgICAgOiAnJztcblxuICAgIHJldHVybiBmaXh0dXJlLmNkayhbJ2RpZmYnLCBmbGFnLCBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3Rlc3QtMScpXSk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiB1cGRhdGVDb250ZXh0KGVuYWJsZURpZmZOb0ZhaWw6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjZGtKc29uID0gSlNPTi5wYXJzZShhd2FpdCBmcy5yZWFkRmlsZShwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsICdjZGsuanNvbicpLCAndXRmOCcpKTtcbiAgICBjZGtKc29uLmNvbnRleHQgPSB7XG4gICAgICAuLi5jZGtKc29uLmNvbnRleHQsXG4gICAgICAnYXdzLWNkazplbmFibGVEaWZmTm9GYWlsJzogZW5hYmxlRGlmZk5vRmFpbCxcbiAgICB9O1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZShwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsICdjZGsuanNvbicpLCBKU09OLnN0cmluZ2lmeShjZGtKc29uKSk7XG4gIH1cblxuICB0eXBlIERpZmZQYXJhbWV0ZXJzID0geyBmYWlsPzogYm9vbGVhbiwgZW5hYmxlRGlmZk5vRmFpbDogYm9vbGVhbiB9O1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ2NkayBkaWZmIC0tZmFpbCBvbiBtdWx0aXBsZSBzdGFja3MgZXhpdHMgd2l0aCBlcnJvciBpZiBhbnkgb2YgdGhlIHN0YWNrcyBjb250YWlucyBhIGRpZmYnLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3QgZGlmZjEgPSBhd2FpdCBmaXh0dXJlLmNkayhbJ2RpZmYnLCBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3Rlc3QtMScpXSk7XG4gIGV4cGVjdChkaWZmMSkudG9Db250YWluKCdBV1M6OlNOUzo6VG9waWMnKTtcblxuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgndGVzdC0yJyk7XG4gIGNvbnN0IGRpZmYyID0gYXdhaXQgZml4dHVyZS5jZGsoWydkaWZmJywgZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTInKV0pO1xuICBleHBlY3QoZGlmZjIpLnRvQ29udGFpbignVGhlcmUgd2VyZSBubyBkaWZmZXJlbmNlcycpO1xuXG4gIC8vIFdIRU4gLyBUSEVOXG4gIGF3YWl0IGV4cGVjdChmaXh0dXJlLmNkayhbJ2RpZmYnLCAnLS1mYWlsJywgZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTEnKSwgZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTInKV0pKS5yZWplY3RzLnRvVGhyb3coJ2V4aXRlZCB3aXRoIGVycm9yJyk7XG59KSk7XG5cbmludGVnVGVzdCgnY2RrIGRpZmYgLS1mYWlsIHdpdGggbXVsdGlwbGUgc3RhY2sgZXhpdHMgd2l0aCBpZiBhbnkgb2YgdGhlIHN0YWNrcyBjb250YWlucyBhIGRpZmYnLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgLy8gR0lWRU5cbiAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ3Rlc3QtMScpO1xuICBjb25zdCBkaWZmMSA9IGF3YWl0IGZpeHR1cmUuY2RrKFsnZGlmZicsIGZpeHR1cmUuZnVsbFN0YWNrTmFtZSgndGVzdC0xJyldKTtcbiAgZXhwZWN0KGRpZmYxKS50b0NvbnRhaW4oJ1RoZXJlIHdlcmUgbm8gZGlmZmVyZW5jZXMnKTtcblxuICBjb25zdCBkaWZmMiA9IGF3YWl0IGZpeHR1cmUuY2RrKFsnZGlmZicsIGZpeHR1cmUuZnVsbFN0YWNrTmFtZSgndGVzdC0yJyldKTtcbiAgZXhwZWN0KGRpZmYyKS50b0NvbnRhaW4oJ0FXUzo6U05TOjpUb3BpYycpO1xuXG4gIC8vIFdIRU4gLyBUSEVOXG4gIGF3YWl0IGV4cGVjdChmaXh0dXJlLmNkayhbJ2RpZmYnLCAnLS1mYWlsJywgZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTEnKSwgZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTInKV0pKS5yZWplY3RzLnRvVGhyb3coJ2V4aXRlZCB3aXRoIGVycm9yJyk7XG59KSk7XG5cbmludGVnVGVzdCgnY2RrIGRpZmYgLS1zZWN1cml0eS1vbmx5IC0tZmFpbCBleGl0cyB3aGVuIHNlY3VyaXR5IGNoYW5nZXMgYXJlIHByZXNlbnQnLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgY29uc3Qgc3RhY2tOYW1lID0gJ2lhbS10ZXN0JztcbiAgYXdhaXQgZXhwZWN0KGZpeHR1cmUuY2RrKFsnZGlmZicsICctLXNlY3VyaXR5LW9ubHknLCAnLS1mYWlsJywgZml4dHVyZS5mdWxsU3RhY2tOYW1lKHN0YWNrTmFtZSldKSkucmVqZWN0cy50b1Rocm93KCdleGl0ZWQgd2l0aCBlcnJvcicpO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ2RlcGxveSBzdGFjayB3aXRoIGRvY2tlciBhc3NldCcsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnZG9ja2VyJyk7XG59KSk7XG5cbmludGVnVGVzdCgnZGVwbG95IGFuZCB0ZXN0IHN0YWNrIHdpdGggbGFtYmRhIGFzc2V0Jywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGNvbnN0IHN0YWNrQXJuID0gYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ2xhbWJkYScsIHsgY2FwdHVyZVN0ZGVycjogZmFsc2UgfSk7XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXh0dXJlLmF3cy5jbG91ZEZvcm1hdGlvbignZGVzY3JpYmVTdGFja3MnLCB7XG4gICAgU3RhY2tOYW1lOiBzdGFja0FybixcbiAgfSk7XG4gIGNvbnN0IGxhbWJkYUFybiA9IHJlc3BvbnNlLlN0YWNrcz8uWzBdLk91dHB1dHM/LlswXS5PdXRwdXRWYWx1ZTtcbiAgaWYgKGxhbWJkYUFybiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdGFjayBkaWQgbm90IGhhdmUgZXhwZWN0ZWQgTGFtYmRhIEFSTiBvdXRwdXQnKTtcbiAgfVxuXG4gIGNvbnN0IG91dHB1dCA9IGF3YWl0IGZpeHR1cmUuYXdzLmxhbWJkYSgnaW52b2tlJywge1xuICAgIEZ1bmN0aW9uTmFtZTogbGFtYmRhQXJuLFxuICB9KTtcblxuICBleHBlY3QoSlNPTi5zdHJpbmdpZnkob3V0cHV0LlBheWxvYWQpKS50b0NvbnRhaW4oJ2RlYXIgYXNzZXQnKTtcbn0pKTtcblxuaW50ZWdUZXN0KCdjZGsgbHMnLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgY29uc3QgbGlzdGluZyA9IGF3YWl0IGZpeHR1cmUuY2RrKFsnbHMnXSwgeyBjYXB0dXJlU3RkZXJyOiBmYWxzZSB9KTtcblxuICBjb25zdCBleHBlY3RlZFN0YWNrcyA9IFtcbiAgICAnY29uZGl0aW9uYWwtcmVzb3VyY2UnLFxuICAgICdkb2NrZXInLFxuICAgICdkb2NrZXItd2l0aC1jdXN0b20tZmlsZScsXG4gICAgJ2ZhaWxlZCcsXG4gICAgJ2lhbS10ZXN0JyxcbiAgICAnbGFtYmRhJyxcbiAgICAnbWlzc2luZy1zc20tcGFyYW1ldGVyJyxcbiAgICAnb3JkZXItcHJvdmlkaW5nJyxcbiAgICAnb3V0cHV0cy10ZXN0LTEnLFxuICAgICdvdXRwdXRzLXRlc3QtMicsXG4gICAgJ3BhcmFtLXRlc3QtMScsXG4gICAgJ3BhcmFtLXRlc3QtMicsXG4gICAgJ3BhcmFtLXRlc3QtMycsXG4gICAgJ3Rlcm1pbmF0aW9uLXByb3RlY3Rpb24nLFxuICAgICd0ZXN0LTEnLFxuICAgICd0ZXN0LTInLFxuICAgICd3aXRoLW5lc3RlZC1zdGFjaycsXG4gICAgJ3dpdGgtbmVzdGVkLXN0YWNrLXVzaW5nLXBhcmFtZXRlcnMnLFxuICAgICdvcmRlci1jb25zdW1pbmcnLFxuICBdO1xuXG4gIGZvciAoY29uc3Qgc3RhY2sgb2YgZXhwZWN0ZWRTdGFja3MpIHtcbiAgICBleHBlY3QobGlzdGluZykudG9Db250YWluKGZpeHR1cmUuZnVsbFN0YWNrTmFtZShzdGFjaykpO1xuICB9XG59KSk7XG5cbmludGVnVGVzdCgnc3ludGhpbmcgYSBzdGFnZSB3aXRoIGVycm9ycyBsZWFkcyB0byBmYWlsdXJlJywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGF3YWl0IGZpeHR1cmUuY2RrKFsnc3ludGgnXSwge1xuICAgIGFsbG93RXJyRXhpdDogdHJ1ZSxcbiAgICBtb2RFbnY6IHtcbiAgICAgIElOVEVHX1NUQUNLX1NFVDogJ3N0YWdlLXdpdGgtZXJyb3JzJyxcbiAgICB9LFxuICB9KTtcblxuICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJ1RoaXMgaXMgYW4gZXJyb3InKTtcbn0pKTtcblxuaW50ZWdUZXN0KCdzeW50aGluZyBhIHN0YWdlIHdpdGggZXJyb3JzIGNhbiBiZSBzdXBwcmVzc2VkJywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGF3YWl0IGZpeHR1cmUuY2RrKFsnc3ludGgnLCAnLS1uby12YWxpZGF0aW9uJ10sIHtcbiAgICBtb2RFbnY6IHtcbiAgICAgIElOVEVHX1NUQUNLX1NFVDogJ3N0YWdlLXdpdGgtZXJyb3JzJyxcbiAgICB9LFxuICB9KTtcbn0pKTtcblxuaW50ZWdUZXN0KCdkZXBsb3kgc3RhY2sgd2l0aG91dCByZXNvdXJjZScsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAvLyBEZXBsb3kgdGhlIHN0YWNrIHdpdGhvdXQgcmVzb3VyY2VzXG4gIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdjb25kaXRpb25hbC1yZXNvdXJjZScsIHsgbW9kRW52OiB7IE5PX1JFU09VUkNFOiAnVFJVRScgfSB9KTtcblxuICAvLyBUaGlzIHNob3VsZCBoYXZlIHN1Y2NlZWRlZCBidXQgbm90IGRlcGxveWVkIHRoZSBzdGFjay5cbiAgYXdhaXQgZXhwZWN0KGZpeHR1cmUuYXdzLmNsb3VkRm9ybWF0aW9uKCdkZXNjcmliZVN0YWNrcycsIHsgU3RhY2tOYW1lOiBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ2NvbmRpdGlvbmFsLXJlc291cmNlJykgfSkpXG4gICAgLnJlamVjdHMudG9UaHJvdygnY29uZGl0aW9uYWwtcmVzb3VyY2UgZG9lcyBub3QgZXhpc3QnKTtcblxuICAvLyBEZXBsb3kgdGhlIHN0YWNrIHdpdGggcmVzb3VyY2VzXG4gIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdjb25kaXRpb25hbC1yZXNvdXJjZScpO1xuXG4gIC8vIFRoZW4gYWdhaW4gV0lUSE9VVCByZXNvdXJjZXMgKHRoaXMgc2hvdWxkIGRlc3Ryb3kgdGhlIHN0YWNrKVxuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnY29uZGl0aW9uYWwtcmVzb3VyY2UnLCB7IG1vZEVudjogeyBOT19SRVNPVVJDRTogJ1RSVUUnIH0gfSk7XG5cbiAgYXdhaXQgZXhwZWN0KGZpeHR1cmUuYXdzLmNsb3VkRm9ybWF0aW9uKCdkZXNjcmliZVN0YWNrcycsIHsgU3RhY2tOYW1lOiBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ2NvbmRpdGlvbmFsLXJlc291cmNlJykgfSkpXG4gICAgLnJlamVjdHMudG9UaHJvdygnY29uZGl0aW9uYWwtcmVzb3VyY2UgZG9lcyBub3QgZXhpc3QnKTtcbn0pKTtcblxuaW50ZWdUZXN0KCdJQU0gZGlmZicsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBhd2FpdCBmaXh0dXJlLmNkayhbJ2RpZmYnLCBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ2lhbS10ZXN0JyldKTtcblxuICAvLyBSb3VnaGx5IGNoZWNrIGZvciBhIHRhYmxlIGxpa2UgdGhpczpcbiAgLy9cbiAgLy8g4pSM4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSALeKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICAvLyDilIIgICDilIIgUmVzb3VyY2UgICAgICAgIOKUgiBFZmZlY3Qg4pSCIEFjdGlvbiAgICAgICAgIOKUgiBQcmluY2lwYWwgICAgICAgICAgICAgICAgICAgICDilIIgQ29uZGl0aW9uIOKUglxuICAvLyDilJzilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbiAgLy8g4pSCICsg4pSCICR7U29tZVJvbGUuQXJufSDilIIgQWxsb3cgIOKUgiBzdHM6QXNzdW1lUm9sZSDilIIgU2VydmljZTplYzIuYW1hem9uYXdzLmNvbSAgICAg4pSCICAgICAgICAgICDilIJcbiAgLy8g4pSU4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG5cbiAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCcke1NvbWVSb2xlLkFybn0nKTtcbiAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCdzdHM6QXNzdW1lUm9sZScpO1xuICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJ2VjMi5hbWF6b25hd3MuY29tJyk7XG59KSk7XG5cbmludGVnVGVzdCgnZmFzdCBkZXBsb3knLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgLy8gd2UgYXJlIHVzaW5nIGEgc3RhY2sgd2l0aCBhIG5lc3RlZCBzdGFjayBiZWNhdXNlIENGTiB3aWxsIGFsd2F5cyBhdHRlbXB0IHRvXG4gIC8vIHVwZGF0ZSBhIG5lc3RlZCBzdGFjaywgd2hpY2ggd2lsbCBhbGxvdyB1cyB0byB2ZXJpZnkgdGhhdCB1cGRhdGVzIGFyZSBhY3R1YWxseVxuICAvLyBza2lwcGVkIHVubGVzcyAtLWZvcmNlIGlzIHNwZWNpZmllZC5cbiAgY29uc3Qgc3RhY2tBcm4gPSBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnd2l0aC1uZXN0ZWQtc3RhY2snLCB7IGNhcHR1cmVTdGRlcnI6IGZhbHNlIH0pO1xuICBjb25zdCBjaGFuZ2VTZXQxID0gYXdhaXQgZ2V0TGF0ZXN0Q2hhbmdlU2V0KCk7XG5cbiAgLy8gRGVwbG95IHRoZSBzYW1lIHN0YWNrIGFnYWluLCB0aGVyZSBzaG91bGQgYmUgbm8gbmV3IGNoYW5nZSBzZXQgY3JlYXRlZFxuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnd2l0aC1uZXN0ZWQtc3RhY2snKTtcbiAgY29uc3QgY2hhbmdlU2V0MiA9IGF3YWl0IGdldExhdGVzdENoYW5nZVNldCgpO1xuICBleHBlY3QoY2hhbmdlU2V0Mi5DaGFuZ2VTZXRJZCkudG9FcXVhbChjaGFuZ2VTZXQxLkNoYW5nZVNldElkKTtcblxuICAvLyBEZXBsb3kgdGhlIHN0YWNrIGFnYWluIHdpdGggLS1mb3JjZSwgbm93IHdlIHNob3VsZCBjcmVhdGUgYSBjaGFuZ2VzZXRcbiAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ3dpdGgtbmVzdGVkLXN0YWNrJywgeyBvcHRpb25zOiBbJy0tZm9yY2UnXSB9KTtcbiAgY29uc3QgY2hhbmdlU2V0MyA9IGF3YWl0IGdldExhdGVzdENoYW5nZVNldCgpO1xuICBleHBlY3QoY2hhbmdlU2V0My5DaGFuZ2VTZXRJZCkubm90LnRvRXF1YWwoY2hhbmdlU2V0Mi5DaGFuZ2VTZXRJZCk7XG5cbiAgLy8gRGVwbG95IHRoZSBzdGFjayBhZ2FpbiB3aXRoIHRhZ3MsIGV4cGVjdGVkIHRvIGNyZWF0ZSBhIG5ldyBjaGFuZ2VzZXRcbiAgLy8gZXZlbiB0aG91Z2ggdGhlIHJlc291cmNlcyBkaWRuJ3QgY2hhbmdlLlxuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnd2l0aC1uZXN0ZWQtc3RhY2snLCB7IG9wdGlvbnM6IFsnLS10YWdzJywgJ2tleT12YWx1ZSddIH0pO1xuICBjb25zdCBjaGFuZ2VTZXQ0ID0gYXdhaXQgZ2V0TGF0ZXN0Q2hhbmdlU2V0KCk7XG4gIGV4cGVjdChjaGFuZ2VTZXQ0LkNoYW5nZVNldElkKS5ub3QudG9FcXVhbChjaGFuZ2VTZXQzLkNoYW5nZVNldElkKTtcblxuICBhc3luYyBmdW5jdGlvbiBnZXRMYXRlc3RDaGFuZ2VTZXQoKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXh0dXJlLmF3cy5jbG91ZEZvcm1hdGlvbignZGVzY3JpYmVTdGFja3MnLCB7IFN0YWNrTmFtZTogc3RhY2tBcm4gfSk7XG4gICAgaWYgKCFyZXNwb25zZS5TdGFja3M/LlswXSkgeyB0aHJvdyBuZXcgRXJyb3IoJ0RpZCBub3QgZ2V0IGEgQ2hhbmdlU2V0IGF0IGFsbCcpOyB9XG4gICAgZml4dHVyZS5sb2coYEZvdW5kIENoYW5nZSBTZXQgJHtyZXNwb25zZS5TdGFja3M/LlswXS5DaGFuZ2VTZXRJZH1gKTtcbiAgICByZXR1cm4gcmVzcG9uc2UuU3RhY2tzPy5bMF07XG4gIH1cbn0pKTtcblxuaW50ZWdUZXN0KCdmYWlsZWQgZGVwbG95IGRvZXMgbm90IGhhbmcnLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgLy8gdGhpcyB3aWxsIGhhbmcgaWYgd2UgaW50cm9kdWNlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9pc3N1ZXMvNjQwMyBhZ2Fpbi5cbiAgYXdhaXQgZXhwZWN0KGZpeHR1cmUuY2RrRGVwbG95KCdmYWlsZWQnKSkucmVqZWN0cy50b1Rocm93KCdleGl0ZWQgd2l0aCBlcnJvcicpO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ2NhbiBzdGlsbCBsb2FkIG9sZCBhc3NlbWJsaWVzJywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGNvbnN0IGN4QXNtRGlyID0gcGF0aC5qb2luKG9zLnRtcGRpcigpLCAnY2RrLWludGVnLWN4Jyk7XG5cbiAgY29uc3QgdGVzdEFzc2VtYmxpZXNEaXJlY3RvcnkgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnY2xvdWQtYXNzZW1ibGllcycpO1xuICBmb3IgKGNvbnN0IGFzbWRpciBvZiBhd2FpdCBsaXN0Q2hpbGREaXJzKHRlc3RBc3NlbWJsaWVzRGlyZWN0b3J5KSkge1xuICAgIGZpeHR1cmUubG9nKGBBU1NFTUJMWSAke2FzbWRpcn1gKTtcbiAgICBhd2FpdCBjbG9uZURpcmVjdG9yeShhc21kaXIsIGN4QXNtRGlyKTtcblxuICAgIC8vIFNvbWUgZmlsZXMgaW4gdGhlIGFzbSBkaXJlY3RvcnkgdGhhdCBoYXZlIGEgLmpzIGV4dGVuc2lvbiBhcmVcbiAgICAvLyBhY3R1YWxseSB0cmVhdGVkIGFzIHRlbXBsYXRlcy4gRXZhbHVhdGUgdGhlbSB1c2luZyBOb2RlSlMuXG4gICAgY29uc3QgdGVtcGxhdGVzID0gYXdhaXQgbGlzdENoaWxkcmVuKGN4QXNtRGlyLCBmdWxsUGF0aCA9PiBQcm9taXNlLnJlc29sdmUoZnVsbFBhdGguZW5kc1dpdGgoJy5qcycpKSk7XG4gICAgZm9yIChjb25zdCB0ZW1wbGF0ZSBvZiB0ZW1wbGF0ZXMpIHtcbiAgICAgIGNvbnN0IHRhcmdldE5hbWUgPSB0ZW1wbGF0ZS5yZXBsYWNlKC8uanMkLywgJycpO1xuICAgICAgYXdhaXQgc2hlbGwoW3Byb2Nlc3MuZXhlY1BhdGgsIHRlbXBsYXRlLCAnPicsIHRhcmdldE5hbWVdLCB7XG4gICAgICAgIGN3ZDogY3hBc21EaXIsXG4gICAgICAgIG91dHB1dDogZml4dHVyZS5vdXRwdXQsXG4gICAgICAgIG1vZEVudjoge1xuICAgICAgICAgIFRFU1RfQUNDT1VOVDogYXdhaXQgZml4dHVyZS5hd3MuYWNjb3VudCgpLFxuICAgICAgICAgIFRFU1RfUkVHSU9OOiBmaXh0dXJlLmF3cy5yZWdpb24sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBVc2UgdGhpcyBkaXJlY3RvcnkgYXMgYSBDbG91ZCBBc3NlbWJseVxuICAgIGNvbnN0IG91dHB1dCA9IGF3YWl0IGZpeHR1cmUuY2RrKFtcbiAgICAgICctLWFwcCcsIGN4QXNtRGlyLFxuICAgICAgJy12JyxcbiAgICAgICdzeW50aCcsXG4gICAgXSk7XG5cbiAgICAvLyBBc3NlcnQgdGhhdCB0aGVyZSB3YXMgbm8gcHJvdmlkZXJFcnJvciBpbiBDREsncyBzdGRlcnJcbiAgICAvLyBCZWNhdXNlIHdlIHJlbHkgb24gdGhlIGFwcC9mcmFtZXdvcmsgdG8gYWN0dWFsbHkgZXJyb3IgaW4gY2FzZSB0aGVcbiAgICAvLyBwcm92aWRlciBmYWlscywgd2UgaW5zcGVjdCB0aGUgbG9ncyBoZXJlLlxuICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJyRwcm92aWRlckVycm9yJyk7XG4gIH1cbn0pKTtcblxuaW50ZWdUZXN0KCdnZW5lcmF0aW5nIGFuZCBsb2FkaW5nIGFzc2VtYmx5Jywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGNvbnN0IGFzbU91dHB1dERpciA9IGAke2ZpeHR1cmUuaW50ZWdUZXN0RGlyfS1jZGstaW50ZWctYXNtYDtcbiAgYXdhaXQgZml4dHVyZS5zaGVsbChbJ3JtJywgJy1yZicsIGFzbU91dHB1dERpcl0pO1xuXG4gIC8vIFN5bnRoZXNpemUgYSBDbG91ZCBBc3NlbWJseSB0b3RoZSBkZWZhdWx0IGRpcmVjdG9yeSAoY2RrLm91dCkgYW5kIGEgc3BlY2lmaWMgZGlyZWN0b3J5LlxuICBhd2FpdCBmaXh0dXJlLmNkayhbJ3N5bnRoJ10pO1xuICBhd2FpdCBmaXh0dXJlLmNkayhbJ3N5bnRoJywgJy0tb3V0cHV0JywgYXNtT3V0cHV0RGlyXSk7XG5cbiAgLy8gY2RrLm91dCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgYW5kIHRoZSBpbmRpY2F0ZWQgLS1vdXRwdXQgc2hvdWxkIGJlIHRoZSBzYW1lXG4gIGF3YWl0IGZpeHR1cmUuc2hlbGwoWydkaWZmJywgJ2Nkay5vdXQnLCBhc21PdXRwdXREaXJdKTtcblxuICAvLyBDaGVjayB0aGF0IHdlIGNhbiAnbHMnIHRoZSBzeW50aGVzaXplZCBhc20uXG4gIC8vIENoYW5nZSB0byBzb21lIHJhbmRvbSBkaXJlY3RvcnkgdG8gbWFrZSBzdXJlIHdlJ3JlIG5vdCBhY2NpZGVudGFsbHkgbG9hZGluZyBjZGsuanNvblxuICBjb25zdCBsaXN0ID0gYXdhaXQgZml4dHVyZS5jZGsoWyctLWFwcCcsIGFzbU91dHB1dERpciwgJ2xzJ10sIHsgY3dkOiBvcy50bXBkaXIoKSB9KTtcbiAgLy8gU2FtZSBzdGFja3Mgd2Uga25vdyBhcmUgaW4gdGhlIGFwcFxuICBleHBlY3QobGlzdCkudG9Db250YWluKGAke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4fS1sYW1iZGFgKTtcbiAgZXhwZWN0KGxpc3QpLnRvQ29udGFpbihgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH0tdGVzdC0xYCk7XG4gIGV4cGVjdChsaXN0KS50b0NvbnRhaW4oYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9LXRlc3QtMmApO1xuXG4gIC8vIENoZWNrIHRoYXQgd2UgY2FuIHVzZSAnLicgYW5kIGp1c3Qgc3ludGggLHRoZSBnZW5lcmF0ZWQgYXNtXG4gIGNvbnN0IHN0YWNrVGVtcGxhdGUgPSBhd2FpdCBmaXh0dXJlLmNkayhbJy0tYXBwJywgJy4nLCAnc3ludGgnLCBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3Rlc3QtMicpXSwge1xuICAgIGN3ZDogYXNtT3V0cHV0RGlyLFxuICB9KTtcbiAgZXhwZWN0KHN0YWNrVGVtcGxhdGUpLnRvQ29udGFpbigndG9waWMxNTJEODRBMzcnKTtcblxuICAvLyBEZXBsb3kgYSBMYW1iZGEgZnJvbSB0aGUgY29waWVkIGFzbVxuICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnbGFtYmRhJywgeyBvcHRpb25zOiBbJy1hJywgJy4nXSwgY3dkOiBhc21PdXRwdXREaXIgfSk7XG5cbiAgLy8gUmVtb3ZlIChyZW5hbWUpIHRoZSBvcmlnaW5hbCBjdXN0b20gZG9ja2VyIGZpbGUgdGhhdCB3YXMgdXNlZCBkdXJpbmcgc3ludGguXG4gIC8vIHRoaXMgdmVyaWZpZXMgdGhhdCB0aGUgYXNzZW1seSBoYXMgYSBjb3B5IG9mIGl0IGFuZCB0aGF0IHRoZSBtYW5pZmVzdCB1c2VzXG4gIC8vIHJlbGF0aXZlIHBhdGhzIHRvIHJlZmVyZW5jZSB0byBpdC5cbiAgY29uc3QgY3VzdG9tRG9ja2VyRmlsZSA9IHBhdGguam9pbihmaXh0dXJlLmludGVnVGVzdERpciwgJ2RvY2tlcicsICdEb2NrZXJmaWxlLkN1c3RvbScpO1xuICBhd2FpdCBmcy5yZW5hbWUoY3VzdG9tRG9ja2VyRmlsZSwgYCR7Y3VzdG9tRG9ja2VyRmlsZX1+YCk7XG4gIHRyeSB7XG5cbiAgICAvLyBkZXBsb3kgYSBkb2NrZXIgaW1hZ2Ugd2l0aCBjdXN0b20gZmlsZSB3aXRob3V0IHN5bnRoICh1c2VzIGFzc2V0cylcbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnZG9ja2VyLXdpdGgtY3VzdG9tLWZpbGUnLCB7IG9wdGlvbnM6IFsnLWEnLCAnLiddLCBjd2Q6IGFzbU91dHB1dERpciB9KTtcblxuICB9IGZpbmFsbHkge1xuICAgIC8vIFJlbmFtZSBiYWNrIHRvIHJlc3RvcmUgZml4dHVyZSB0byBvcmlnaW5hbCBzdGF0ZVxuICAgIGF3YWl0IGZzLnJlbmFtZShgJHtjdXN0b21Eb2NrZXJGaWxlfX5gLCBjdXN0b21Eb2NrZXJGaWxlKTtcbiAgfVxufSkpO1xuXG5pbnRlZ1Rlc3QoJ3RlbXBsYXRlcyBvbiBkaXNrIGNvbnRhaW4gbWV0YWRhdGEgcmVzb3VyY2UsIGFsc28gaW4gbmVzdGVkIGFzc2VtYmxpZXMnLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgLy8gU3ludGggZmlyc3QsIGFuZCBzd2l0Y2ggb24gdmVyc2lvbiByZXBvcnRpbmcgYmVjYXVzZSBjZGsuanNvbiBpcyBkaXNhYmxpbmcgaXRcbiAgYXdhaXQgZml4dHVyZS5jZGsoWydzeW50aCcsICctLXZlcnNpb24tcmVwb3J0aW5nPXRydWUnXSk7XG5cbiAgLy8gTG9hZCB0ZW1wbGF0ZSBmcm9tIGRpc2sgZnJvbSByb290IGFzc2VtYmx5XG4gIGNvbnN0IHRlbXBsYXRlQ29udGVudHMgPSBhd2FpdCBmaXh0dXJlLnNoZWxsKFsnY2F0JywgJ2Nkay5vdXQvKi1sYW1iZGEudGVtcGxhdGUuanNvbiddKTtcblxuICBleHBlY3QoSlNPTi5wYXJzZSh0ZW1wbGF0ZUNvbnRlbnRzKS5SZXNvdXJjZXMuQ0RLTWV0YWRhdGEpLnRvQmVUcnV0aHkoKTtcblxuICAvLyBMb2FkIHRlbXBsYXRlIGZyb20gbmVzdGVkIGFzc2VtYmx5XG4gIGNvbnN0IG5lc3RlZFRlbXBsYXRlQ29udGVudHMgPSBhd2FpdCBmaXh0dXJlLnNoZWxsKFsnY2F0JywgJ2Nkay5vdXQvYXNzZW1ibHktKi1zdGFnZS8qU3RhY2tJblN0YWdlKi50ZW1wbGF0ZS5qc29uJ10pO1xuXG4gIGV4cGVjdChKU09OLnBhcnNlKG5lc3RlZFRlbXBsYXRlQ29udGVudHMpLlJlc291cmNlcy5DREtNZXRhZGF0YSkudG9CZVRydXRoeSgpO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ0NESyBzeW50aCBhZGQgdGhlIG1ldGFkYXRhIHByb3BlcnRpZXMgZXhwZWN0ZWQgYnkgc2FtJywgd2l0aFNhbUludGVncmF0aW9uRml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAvLyBTeW50aCBmaXJzdFxuICBhd2FpdCBmaXh0dXJlLmNka1N5bnRoKCk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBmaXh0dXJlLnRlbXBsYXRlKCdUZXN0U3RhY2snKTtcblxuICBjb25zdCBleHBlY3RlZFJlc291cmNlcyA9IFtcbiAgICB7XG4gICAgICAvLyBQeXRob24gTGF5ZXIgVmVyc2lvblxuICAgICAgaWQ6ICdQeXRob25MYXllclZlcnNpb24zOTQ5NUNFRicsXG4gICAgICBjZGtJZDogJ1B5dGhvbkxheWVyVmVyc2lvbicsXG4gICAgICBpc0J1bmRsZWQ6IHRydWUsXG4gICAgICBwcm9wZXJ0eTogJ0NvbnRlbnQnLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gTGF5ZXIgVmVyc2lvblxuICAgICAgaWQ6ICdMYXllclZlcnNpb24zODc4REEzQScsXG4gICAgICBjZGtJZDogJ0xheWVyVmVyc2lvbicsXG4gICAgICBpc0J1bmRsZWQ6IGZhbHNlLFxuICAgICAgcHJvcGVydHk6ICdDb250ZW50JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEJ1bmRsZWQgbGF5ZXIgdmVyc2lvblxuICAgICAgaWQ6ICdCdW5kbGVkTGF5ZXJWZXJzaW9uUHl0aG9uUnVudGltZTZCQURCRDZFJyxcbiAgICAgIGNka0lkOiAnQnVuZGxlZExheWVyVmVyc2lvblB5dGhvblJ1bnRpbWUnLFxuICAgICAgaXNCdW5kbGVkOiB0cnVlLFxuICAgICAgcHJvcGVydHk6ICdDb250ZW50JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIFB5dGhvbiBGdW5jdGlvblxuICAgICAgaWQ6ICdQeXRob25GdW5jdGlvbjBCQ0Y3N0ZEJyxcbiAgICAgIGNka0lkOiAnUHl0aG9uRnVuY3Rpb24nLFxuICAgICAgaXNCdW5kbGVkOiB0cnVlLFxuICAgICAgcHJvcGVydHk6ICdDb2RlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIExvZyBSZXRlbnRpb24gRnVuY3Rpb25cbiAgICAgIGlkOiAnTG9nUmV0ZW50aW9uYWFlMGFhM2M1YjRkNGY4N2IwMmQ4NWIyMDFlZmRkOGFGRDRCRkM4QScsXG4gICAgICBjZGtJZDogJ0xvZ1JldGVudGlvbmFhZTBhYTNjNWI0ZDRmODdiMDJkODViMjAxZWZkZDhhJyxcbiAgICAgIGlzQnVuZGxlZDogZmFsc2UsXG4gICAgICBwcm9wZXJ0eTogJ0NvZGUnLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gRnVuY3Rpb25cbiAgICAgIGlkOiAnRnVuY3Rpb25QeXRob25SdW50aW1lMjhDQkRBMDUnLFxuICAgICAgY2RrSWQ6ICdGdW5jdGlvblB5dGhvblJ1bnRpbWUnLFxuICAgICAgaXNCdW5kbGVkOiBmYWxzZSxcbiAgICAgIHByb3BlcnR5OiAnQ29kZScsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBCdW5kbGVkIEZ1bmN0aW9uXG4gICAgICBpZDogJ0J1bmRsZWRGdW5jdGlvblB5dGhvblJ1bnRpbWU0RDlBMDkxOCcsXG4gICAgICBjZGtJZDogJ0J1bmRsZWRGdW5jdGlvblB5dGhvblJ1bnRpbWUnLFxuICAgICAgaXNCdW5kbGVkOiB0cnVlLFxuICAgICAgcHJvcGVydHk6ICdDb2RlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIE5vZGVKcyBGdW5jdGlvblxuICAgICAgaWQ6ICdOb2RlanNGdW5jdGlvbjA5QzFGMjBGJyxcbiAgICAgIGNka0lkOiAnTm9kZWpzRnVuY3Rpb24nLFxuICAgICAgaXNCdW5kbGVkOiB0cnVlLFxuICAgICAgcHJvcGVydHk6ICdDb2RlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEdvIEZ1bmN0aW9uXG4gICAgICBpZDogJ0dvRnVuY3Rpb25DQTk1RkJBQScsXG4gICAgICBjZGtJZDogJ0dvRnVuY3Rpb24nLFxuICAgICAgaXNCdW5kbGVkOiB0cnVlLFxuICAgICAgcHJvcGVydHk6ICdDb2RlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIERvY2tlciBJbWFnZSBGdW5jdGlvblxuICAgICAgaWQ6ICdEb2NrZXJJbWFnZUZ1bmN0aW9uMjhCNzczRTYnLFxuICAgICAgY2RrSWQ6ICdEb2NrZXJJbWFnZUZ1bmN0aW9uJyxcbiAgICAgIGRvY2tlckZpbGVQYXRoOiAnRG9ja2VyZmlsZScsXG4gICAgICBwcm9wZXJ0eTogJ0NvZGUuSW1hZ2VVcmknLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gU3BlYyBSZXN0IEFwaVxuICAgICAgaWQ6ICdTcGVjUmVzdEFQSTdENEIzQTM0JyxcbiAgICAgIGNka0lkOiAnU3BlY1Jlc3RBUEknLFxuICAgICAgcHJvcGVydHk6ICdCb2R5UzNMb2NhdGlvbicsXG4gICAgfSxcbiAgXTtcblxuICBmb3IgKGNvbnN0IHJlc291cmNlIG9mIGV4cGVjdGVkUmVzb3VyY2VzKSB7XG4gICAgZml4dHVyZS5vdXRwdXQud3JpdGUoYHZhbGlkYXRlIGFzc2V0cyBtZXRhZGF0YSBmb3IgcmVzb3VyY2UgJHtyZXNvdXJjZX1gKTtcbiAgICBleHBlY3QocmVzb3VyY2UuaWQgaW4gdGVtcGxhdGUuUmVzb3VyY2VzKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KHRlbXBsYXRlLlJlc291cmNlc1tyZXNvdXJjZS5pZF0pLnRvRXF1YWwoZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgJ2F3czpjZGs6cGF0aCc6IGAke2ZpeHR1cmUuZnVsbFN0YWNrTmFtZSgnVGVzdFN0YWNrJyl9LyR7cmVzb3VyY2UuY2RrSWR9L1Jlc291cmNlYCxcbiAgICAgICAgJ2F3czphc3NldDpwYXRoJzogZXhwZWN0LnN0cmluZ01hdGNoaW5nKC9hc3NldFxcLlswLTlhLXpBLVpdezY0fS8pLFxuICAgICAgICAnYXdzOmFzc2V0OmlzLWJ1bmRsZWQnOiByZXNvdXJjZS5pc0J1bmRsZWQsXG4gICAgICAgICdhd3M6YXNzZXQ6ZG9ja2VyZmlsZS1wYXRoJzogcmVzb3VyY2UuZG9ja2VyRmlsZVBhdGgsXG4gICAgICAgICdhd3M6YXNzZXQ6cHJvcGVydHknOiByZXNvdXJjZS5wcm9wZXJ0eSxcbiAgICAgIH0sXG4gICAgfSkpO1xuICB9XG5cbiAgLy8gTmVzdGVkIFN0YWNrXG4gIGZpeHR1cmUub3V0cHV0LndyaXRlKCd2YWxpZGF0ZSBhc3NldHMgbWV0YWRhdGEgZm9yIG5lc3RlZCBzdGFjayByZXNvdXJjZScpO1xuICBleHBlY3QoJ05lc3RlZFN0YWNrTmVzdGVkU3RhY2tOZXN0ZWRTdGFja05lc3RlZFN0YWNrUmVzb3VyY2VCNzA4MzRGRCcgaW4gdGVtcGxhdGUuUmVzb3VyY2VzKS50b0JlVHJ1dGh5KCk7XG4gIGV4cGVjdCh0ZW1wbGF0ZS5SZXNvdXJjZXMuTmVzdGVkU3RhY2tOZXN0ZWRTdGFja05lc3RlZFN0YWNrTmVzdGVkU3RhY2tSZXNvdXJjZUI3MDgzNEZEKS50b0VxdWFsKGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICBNZXRhZGF0YToge1xuICAgICAgJ2F3czpjZGs6cGF0aCc6IGAke2ZpeHR1cmUuZnVsbFN0YWNrTmFtZSgnVGVzdFN0YWNrJyl9L05lc3RlZFN0YWNrLk5lc3RlZFN0YWNrL05lc3RlZFN0YWNrLk5lc3RlZFN0YWNrUmVzb3VyY2VgLFxuICAgICAgJ2F3czphc3NldDpwYXRoJzogZXhwZWN0LnN0cmluZ01hdGNoaW5nKGAke2ZpeHR1cmUuc3RhY2tOYW1lUHJlZml4LnJlcGxhY2UoLy0vLCAnJyl9VGVzdFN0YWNrTmVzdGVkU3RhY2tbMC05QS1aXXs4fVxcLm5lc3RlZFxcLnRlbXBsYXRlXFwuanNvbmApLFxuICAgICAgJ2F3czphc3NldDpwcm9wZXJ0eSc6ICdUZW1wbGF0ZVVSTCcsXG4gICAgfSxcbiAgfSkpO1xufSkpO1xuXG5pbnRlZ1Rlc3QoJ0NESyBzeW50aCBidW5kbGVkIGZ1bmN0aW9ucyBhcyBleHBlY3RlZCcsIHdpdGhTYW1JbnRlZ3JhdGlvbkZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgLy8gU3ludGggZmlyc3RcbiAgYXdhaXQgZml4dHVyZS5jZGtTeW50aCgpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gZml4dHVyZS50ZW1wbGF0ZSgnVGVzdFN0YWNrJyk7XG5cbiAgY29uc3QgZXhwZWN0ZWRCdW5kbGVkQXNzZXRzID0gW1xuICAgIHtcbiAgICAgIC8vIFB5dGhvbiBMYXllciBWZXJzaW9uXG4gICAgICBpZDogJ1B5dGhvbkxheWVyVmVyc2lvbjM5NDk1Q0VGJyxcbiAgICAgIGZpbGVzOiBbXG4gICAgICAgICdweXRob24vbGF5ZXJfdmVyc2lvbl9kZXBlbmRlbmN5LnB5JyxcbiAgICAgICAgJ3B5dGhvbi9nZW9uYW1lc2NhY2hlL19faW5pdF9fLnB5JyxcbiAgICAgICAgJ3B5dGhvbi9nZW9uYW1lc2NhY2hlLTEuMy4wLmRpc3QtaW5mbycsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gTGF5ZXIgVmVyc2lvblxuICAgICAgaWQ6ICdMYXllclZlcnNpb24zODc4REEzQScsXG4gICAgICBmaWxlczogW1xuICAgICAgICAnbGF5ZXJfdmVyc2lvbl9kZXBlbmRlbmN5LnB5JyxcbiAgICAgICAgJ3JlcXVpcmVtZW50cy50eHQnLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEJ1bmRsZWQgbGF5ZXIgdmVyc2lvblxuICAgICAgaWQ6ICdCdW5kbGVkTGF5ZXJWZXJzaW9uUHl0aG9uUnVudGltZTZCQURCRDZFJyxcbiAgICAgIGZpbGVzOiBbXG4gICAgICAgICdweXRob24vbGF5ZXJfdmVyc2lvbl9kZXBlbmRlbmN5LnB5JyxcbiAgICAgICAgJ3B5dGhvbi9nZW9uYW1lc2NhY2hlL19faW5pdF9fLnB5JyxcbiAgICAgICAgJ3B5dGhvbi9nZW9uYW1lc2NhY2hlLTEuMy4wLmRpc3QtaW5mbycsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gUHl0aG9uIEZ1bmN0aW9uXG4gICAgICBpZDogJ1B5dGhvbkZ1bmN0aW9uMEJDRjc3RkQnLFxuICAgICAgZmlsZXM6IFtcbiAgICAgICAgJ2FwcC5weScsXG4gICAgICAgICdnZW9uYW1lc2NhY2hlL19faW5pdF9fLnB5JyxcbiAgICAgICAgJ2dlb25hbWVzY2FjaGUtMS4zLjAuZGlzdC1pbmZvJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBGdW5jdGlvblxuICAgICAgaWQ6ICdGdW5jdGlvblB5dGhvblJ1bnRpbWUyOENCREEwNScsXG4gICAgICBmaWxlczogW1xuICAgICAgICAnYXBwLnB5JyxcbiAgICAgICAgJ3JlcXVpcmVtZW50cy50eHQnLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEJ1bmRsZWQgRnVuY3Rpb25cbiAgICAgIGlkOiAnQnVuZGxlZEZ1bmN0aW9uUHl0aG9uUnVudGltZTREOUEwOTE4JyxcbiAgICAgIGZpbGVzOiBbXG4gICAgICAgICdhcHAucHknLFxuICAgICAgICAnZ2VvbmFtZXNjYWNoZS9fX2luaXRfXy5weScsXG4gICAgICAgICdnZW9uYW1lc2NhY2hlLTEuMy4wLmRpc3QtaW5mbycsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gTm9kZUpzIEZ1bmN0aW9uXG4gICAgICBpZDogJ05vZGVqc0Z1bmN0aW9uMDlDMUYyMEYnLFxuICAgICAgZmlsZXM6IFtcbiAgICAgICAgJ2luZGV4LmpzJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBHbyBGdW5jdGlvblxuICAgICAgaWQ6ICdHb0Z1bmN0aW9uQ0E5NUZCQUEnLFxuICAgICAgZmlsZXM6IFtcbiAgICAgICAgJ2Jvb3RzdHJhcCcsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gRG9ja2VyIEltYWdlIEZ1bmN0aW9uXG4gICAgICBpZDogJ0RvY2tlckltYWdlRnVuY3Rpb24yOEI3NzNFNicsXG4gICAgICBmaWxlczogW1xuICAgICAgICAnYXBwLmpzJyxcbiAgICAgICAgJ0RvY2tlcmZpbGUnLFxuICAgICAgICAncGFja2FnZS5qc29uJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgXTtcblxuICBmb3IgKGNvbnN0IHJlc291cmNlIG9mIGV4cGVjdGVkQnVuZGxlZEFzc2V0cykge1xuICAgIGNvbnN0IGFzc2V0UGF0aCA9IHRlbXBsYXRlLlJlc291cmNlc1tyZXNvdXJjZS5pZF0uTWV0YWRhdGFbJ2F3czphc3NldDpwYXRoJ107XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIHJlc291cmNlLmZpbGVzKSB7XG4gICAgICBmaXh0dXJlLm91dHB1dC53cml0ZShgdmFsaWRhdGUgUGF0aCAke2ZpbGV9IGZvciByZXNvdXJjZSAke3Jlc291cmNlfWApO1xuICAgICAgZXhwZWN0KGV4aXN0c1N5bmMocGF0aC5qb2luKGZpeHR1cmUuaW50ZWdUZXN0RGlyLCAnY2RrLm91dCcsIGFzc2V0UGF0aCwgZmlsZSkpKS50b0JlVHJ1dGh5KCk7XG4gICAgfVxuICB9XG59KSk7XG5cbmludGVnVGVzdCgnc2FtIGNhbiBsb2NhbGx5IHRlc3QgdGhlIHN5bnRoZXNpemVkIGNkayBhcHBsaWNhdGlvbicsIHdpdGhTYW1JbnRlZ3JhdGlvbkZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgLy8gU3ludGggZmlyc3RcbiAgYXdhaXQgZml4dHVyZS5jZGtTeW50aCgpO1xuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZpeHR1cmUuc2FtTG9jYWxTdGFydEFwaShcbiAgICAnVGVzdFN0YWNrJywgZmFsc2UsIHJhbmRvbUludGVnZXIoMzAwMDAsIDQwMDAwKSwgJy9yZXN0YXBpcy9zcGVjL3B5dGhvbkZ1bmN0aW9uJyk7XG4gIGV4cGVjdChyZXN1bHQuYWN0aW9uU3VjY2VlZGVkKS50b0JlVHJ1dGh5KCk7XG4gIGV4cGVjdChyZXN1bHQuYWN0aW9uT3V0cHV0KS50b0VxdWFsKGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICBtZXNzYWdlOiAnSGVsbG8gV29ybGQnLFxuICB9KSk7XG59KSk7XG5cbmludGVnVGVzdCgnc2tpcHMgbm90aWNlIHJlZnJlc2gnLCB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgZml4dHVyZS5jZGtTeW50aCh7XG4gICAgb3B0aW9uczogWyctLW5vLW5vdGljZXMnXSxcbiAgICBtb2RFbnY6IHtcbiAgICAgIElOVEVHX1NUQUNLX1NFVDogJ3N0YWdlLXVzaW5nLWNvbnRleHQnLFxuICAgIH0sXG4gICAgYWxsb3dFcnJFeGl0OiB0cnVlLFxuICB9KTtcblxuICAvLyBOZWl0aGVyIHN1Y2NlZWRzIG5vciBmYWlscywgYnV0IHNraXBzIHRoZSByZWZyZXNoXG4gIGF3YWl0IGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJ05vdGljZXMgcmVmcmVzaGVkJyk7XG4gIGF3YWl0IGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJ05vdGljZXMgcmVmcmVzaCBmYWlsZWQnKTtcbn0pKTtcblxuLyoqXG4gKiBDcmVhdGUgYSBxdWV1ZSB3aXRoIGEgZnJlc2ggbmFtZSwgcmVkZXBsb3kgb3JwaGFuaW5nIHRoZSBxdWV1ZSwgdGhlbiBpbXBvcnQgaXQgYWdhaW5cbiAqL1xuaW50ZWdUZXN0KCd0ZXN0IHJlc291cmNlIGltcG9ydCcsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBjb25zdCBvdXRwdXRzRmlsZSA9IHBhdGguam9pbihmaXh0dXJlLmludGVnVGVzdERpciwgJ291dHB1dHMnLCAnb3V0cHV0cy5qc29uJyk7XG4gIGF3YWl0IGZzLm1rZGlyKHBhdGguZGlybmFtZShvdXRwdXRzRmlsZSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIC8vIEluaXRpYWwgZGVwbG95XG4gIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdpbXBvcnRhYmxlLXN0YWNrJywge1xuICAgIG1vZEVudjogeyBPUlBIQU5fVE9QSUM6ICcxJyB9LFxuICAgIG9wdGlvbnM6IFsnLS1vdXRwdXRzLWZpbGUnLCBvdXRwdXRzRmlsZV0sXG4gIH0pO1xuXG4gIGNvbnN0IG91dHB1dHMgPSBKU09OLnBhcnNlKChhd2FpdCBmcy5yZWFkRmlsZShvdXRwdXRzRmlsZSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KSkudG9TdHJpbmcoKSk7XG4gIGNvbnN0IHF1ZXVlTmFtZSA9IG91dHB1dHMuUXVldWVOYW1lO1xuICBjb25zdCBxdWV1ZUxvZ2ljYWxJZCA9IG91dHB1dHMuUXVldWVMb2dpY2FsSWQ7XG4gIGZpeHR1cmUubG9nKGBTZXR1cCBjb21wbGV0ZSwgY3JlYXRlZCBxdWV1ZSAke3F1ZXVlTmFtZX1gKTtcbiAgdHJ5IHtcbiAgICAvLyBEZXBsb3kgYWdhaW4sIG9ycGhhbmluZyB0aGUgcXVldWVcbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnaW1wb3J0YWJsZS1zdGFjaycsIHtcbiAgICAgIG1vZEVudjogeyBPTUlUX1RPUElDOiAnMScgfSxcbiAgICB9KTtcblxuICAgIC8vIFdyaXRlIGEgcmVzb3VyY2UgbWFwcGluZyBmaWxlIGJhc2VkIG9uIHRoZSBJRCBmcm9tIHN0ZXAgb25lLCB0aGVuIHJ1biBhbiBpbXBvcnRcbiAgICBjb25zdCBtYXBwaW5nRmlsZSA9IHBhdGguam9pbihmaXh0dXJlLmludGVnVGVzdERpciwgJ291dHB1dHMnLCAnbWFwcGluZy5qc29uJyk7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKG1hcHBpbmdGaWxlLCBKU09OLnN0cmluZ2lmeSh7IFtxdWV1ZUxvZ2ljYWxJZF06IHsgUXVldWVOYW1lOiBxdWV1ZU5hbWUgfSB9KSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcblxuICAgIGF3YWl0IGZpeHR1cmUuY2RrKFsnaW1wb3J0JyxcbiAgICAgICctLXJlc291cmNlLW1hcHBpbmcnLCBtYXBwaW5nRmlsZSxcbiAgICAgIGZpeHR1cmUuZnVsbFN0YWNrTmFtZSgnaW1wb3J0YWJsZS1zdGFjaycpXSk7XG4gIH0gZmluYWxseSB7XG4gICAgLy8gQ2xlYW51cFxuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVzdHJveSgnaW1wb3J0YWJsZS1zdGFjaycpO1xuICB9XG59KSk7XG5cbmFzeW5jIGZ1bmN0aW9uIGxpc3RDaGlsZHJlbihwYXJlbnQ6IHN0cmluZywgcHJlZDogKHg6IHN0cmluZykgPT4gUHJvbWlzZTxib29sZWFuPikge1xuICBjb25zdCByZXQgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IGNoaWxkIG9mIGF3YWl0IGZzLnJlYWRkaXIocGFyZW50LCB7IGVuY29kaW5nOiAndXRmLTgnIH0pKSB7XG4gICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLmpvaW4ocGFyZW50LCBjaGlsZC50b1N0cmluZygpKTtcbiAgICBpZiAoYXdhaXQgcHJlZChmdWxsUGF0aCkpIHtcbiAgICAgIHJldC5wdXNoKGZ1bGxQYXRoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbGlzdENoaWxkRGlycyhwYXJlbnQ6IHN0cmluZykge1xuICByZXR1cm4gbGlzdENoaWxkcmVuKHBhcmVudCwgYXN5bmMgKGZ1bGxQYXRoOiBzdHJpbmcpID0+IChhd2FpdCBmcy5zdGF0KGZ1bGxQYXRoKSkuaXNEaXJlY3RvcnkoKSk7XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
geonamescache
|
|
1
|
+
geonamescache==1.3.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
geonamescache
|
|
1
|
+
geonamescache==1.3.0
|
package/test/settings.test.js
CHANGED
|
@@ -65,6 +65,24 @@ test('can parse string context from command line arguments with equals sign in v
|
|
|
65
65
|
expect(settings1.get(['context']).foo).toEqual('=bar=');
|
|
66
66
|
expect(settings2.get(['context']).foo).toEqual('bar=');
|
|
67
67
|
});
|
|
68
|
+
test('can parse context from command line arguments and convert value to correct type', () => {
|
|
69
|
+
// GIVEN
|
|
70
|
+
const settings1 = settings_1.Settings.fromCommandLineArguments({ context: ['foo=false'], _: [settings_1.Command.DEPLOY] });
|
|
71
|
+
const settings2 = settings_1.Settings.fromCommandLineArguments({ context: ['foo=0'], _: [settings_1.Command.DEPLOY] });
|
|
72
|
+
const settings3 = settings_1.Settings.fromCommandLineArguments({ context: ['foo=true'], _: [settings_1.Command.DEPLOY] });
|
|
73
|
+
const settings4 = settings_1.Settings.fromCommandLineArguments({ context: ['foo={"a": "b", "c": true, "d": ["a", "b"]}'], _: [settings_1.Command.DEPLOY] });
|
|
74
|
+
const settings5 = settings_1.Settings.fromCommandLineArguments({ context: ['foo=34'], _: [settings_1.Command.DEPLOY] });
|
|
75
|
+
const settings6 = settings_1.Settings.fromCommandLineArguments({ context: ['foo=34 35'], _: [settings_1.Command.DEPLOY] });
|
|
76
|
+
const settings7 = settings_1.Settings.fromCommandLineArguments({ context: ['foo=0x22'], _: [settings_1.Command.DEPLOY] });
|
|
77
|
+
// THEN
|
|
78
|
+
expect(settings1.get(['context']).foo).toEqual(false);
|
|
79
|
+
expect(settings2.get(['context']).foo).toEqual(0);
|
|
80
|
+
expect(settings3.get(['context']).foo).toEqual(true);
|
|
81
|
+
expect(settings4.get(['context']).foo).toEqual({ a: 'b', c: true, d: ['a', 'b'] });
|
|
82
|
+
expect(settings5.get(['context']).foo).toEqual(34);
|
|
83
|
+
expect(settings6.get(['context']).foo).toEqual('34 35');
|
|
84
|
+
expect(settings7.get(['context']).foo).toEqual('0x22');
|
|
85
|
+
});
|
|
68
86
|
test('bundling stacks defaults to an empty list', () => {
|
|
69
87
|
// GIVEN
|
|
70
88
|
const settings = settings_1.Settings.fromCommandLineArguments({
|
|
@@ -127,4 +145,4 @@ test('providing a build arg', () => {
|
|
|
127
145
|
// THEN
|
|
128
146
|
expect(settings.get(['build'])).toEqual('mvn package');
|
|
129
147
|
});
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNldHRpbmdzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw4Q0FBNkQ7QUFFN0QsSUFBSSxDQUFDLHVDQUF1QyxFQUFFLEdBQUcsRUFBRTtJQUNqRCxRQUFRO0lBQ1IsTUFBTSxTQUFTLEdBQUcsSUFBSSxtQkFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDL0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxtQkFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQkFBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUVsRCxPQUFPO0lBQ1AsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVyQixPQUFPO0lBQ1AsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM1QyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLGtDQUFrQyxFQUFFLEdBQUcsRUFBRTtJQUM1QyxRQUFRO0lBQ1IsTUFBTSxTQUFTLEdBQUcsSUFBSSxtQkFBUSxFQUFFLENBQUM7SUFDakMsTUFBTSxTQUFTLEdBQUcsSUFBSSxtQkFBUSxFQUFFLENBQUM7SUFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQkFBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUVsRCxPQUFP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T0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUN6RCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQsIENvbnRleHQsIFNldHRpbmdzIH0gZnJvbSAnLi4vbGliL3NldHRpbmdzJztcblxudGVzdCgnY2FuIGRlbGV0ZSB2YWx1ZXMgZnJvbSBDb250ZXh0IG9iamVjdCcsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc2V0dGluZ3MxID0gbmV3IFNldHRpbmdzKHsgZm9vOiAnYmFyJyB9KTtcbiAgY29uc3Qgc2V0dGluZ3MyID0gbmV3IFNldHRpbmdzKHsgYm9vOiAnYmF6JyB9KTtcbiAgY29uc3QgY29udGV4dCA9IG5ldyBDb250ZXh0KHNldHRpbmdzMSwgc2V0dGluZ3MyKTtcblxuICAvLyBXSEVOXG4gIGNvbnRleHQudW5zZXQoJ2ZvbycpO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNvbnRleHQuYWxsKS50b0VxdWFsKHsgYm9vOiAnYmF6JyB9KTtcbiAgZXhwZWN0KHNldHRpbmdzMS5hbGwpLnRvRXF1YWwoe30pO1xuICBleHBlY3Qoc2V0dGluZ3MyLmFsbCkudG9FcXVhbCh7IGJvbzogJ2JheicgfSk7XG59KTtcblxudGVzdCgnY2FuIHNldCB2YWx1ZXMgaW4gQ29udGV4dCBvYmplY3QnLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzMSA9IG5ldyBTZXR0aW5ncygpO1xuICBjb25zdCBzZXR0aW5nczIgPSBuZXcgU2V0dGluZ3MoKTtcbiAgY29uc3QgY29udGV4dCA9IG5ldyBDb250ZXh0KHNldHRpbmdzMSwgc2V0dGluZ3MyKTtcblxuICAvLyBXSEVOXG4gIGNvbnRleHQuc2V0KCdmb28nLCAnYmFyJyk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY29udGV4dC5hbGwpLnRvRXF1YWwoeyBmb286ICdiYXInIH0pO1xuICBleHBlY3Qoc2V0dGluZ3MxLmFsbCkudG9FcXVhbCh7IGZvbzogJ2JhcicgfSk7XG4gIGV4cGVjdChzZXR0aW5nczIuYWxsKS50b0VxdWFsKHt9KTtcbn0pO1xuXG50ZXN0KCdjYW4gc2V0IHZhbHVlcyBpbiBDb250ZXh0IG9iamVjdCBpZiBmaXJzdCBpcyBpbW11dGFibGUnLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzMSA9IG5ldyBTZXR0aW5ncygpO1xuICBjb25zdCBzZXR0aW5nczIgPSBuZXcgU2V0dGluZ3MoKTtcbiAgY29uc3QgY29udGV4dCA9IG5ldyBDb250ZXh0KHNldHRpbmdzMS5tYWtlUmVhZE9ubHkoKSwgc2V0dGluZ3MyKTtcblxuICAvLyBXSEVOXG4gIGNvbnRleHQuc2V0KCdmb28nLCAnYmFyJyk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY29udGV4dC5hbGwpLnRvRXF1YWwoeyBmb286ICdiYXInIH0pO1xuICBleHBlY3Qoc2V0dGluZ3MxLmFsbCkudG9FcXVhbCh7IH0pO1xuICBleHBlY3Qoc2V0dGluZ3MyLmFsbCkudG9FcXVhbCh7IGZvbzogJ2JhcicgfSk7XG59KTtcblxudGVzdCgnY2FuIGNsZWFyIGFsbCB2YWx1ZXMgaW4gYWxsIG9iamVjdHMnLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzMSA9IG5ldyBTZXR0aW5ncyh7IGZvbzogJ2JhcicgfSk7XG4gIGNvbnN0IHNldHRpbmdzMiA9IG5ldyBTZXR0aW5ncyh7IGZvbzogJ3NuYXInLCBib286ICdnYXInIH0pO1xuICBjb25zdCBjb250ZXh0ID0gbmV3IENvbnRleHQoc2V0dGluZ3MxLCBzZXR0aW5nczIpO1xuXG4gIC8vIFdIRU5cbiAgY29udGV4dC5jbGVhcigpO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNvbnRleHQuYWxsKS50b0VxdWFsKHt9KTtcbiAgZXhwZWN0KHNldHRpbmdzMS5hbGwpLnRvRXF1YWwoeyB9KTtcbiAgZXhwZWN0KHNldHRpbmdzMi5hbGwpLnRvRXF1YWwoe30pO1xufSk7XG5cbnRlc3QoJ2NhbiBwYXJzZSBzdHJpbmcgY29udGV4dCBmcm9tIGNvbW1hbmQgbGluZSBhcmd1bWVudHMnLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzMSA9IFNldHRpbmdzLmZyb21Db21tYW5kTGluZUFyZ3VtZW50cyh7IGNvbnRleHQ6IFsnZm9vPWJhciddLCBfOiBbQ29tbWFuZC5ERVBMT1ldIH0pO1xuICBjb25zdCBzZXR0aW5nczIgPSBTZXR0aW5ncy5mcm9tQ29tbWFuZExpbmVBcmd1bWVudHMoeyBjb250ZXh0OiBbJ2Zvbz0nXSwgXzogW0NvbW1hbmQuREVQTE9ZXSB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzZXR0aW5nczEuZ2V0KFsnY29udGV4dCddKS5mb28pLnRvRXF1YWwoICdiYXInKTtcbiAgZXhwZWN0KHNldHRpbmdzMi5nZXQoWydjb250ZXh0J10pLmZvbykudG9FcXVhbCggJycpO1xufSk7XG5cbnRlc3QoJ2NhbiBwYXJzZSBzdHJpbmcgY29udGV4dCBmcm9tIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgd2l0aCBlcXVhbHMgc2lnbiBpbiB2YWx1ZScsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc2V0dGluZ3MxID0gU2V0dGluZ3MuZnJvbUNvbW1hbmRMaW5lQXJndW1lbnRzKHsgY29udGV4dDogWydmb289PWJhcj0nXSwgXzogW0NvbW1hbmQuREVQTE9ZXSB9KTtcbiAgY29uc3Qgc2V0dGluZ3MyID0gU2V0dGluZ3MuZnJvbUNvbW1hbmRMaW5lQXJndW1lbnRzKHsgY29udGV4dDogWydmb289YmFyPSddLCBfOiBbQ29tbWFuZC5ERVBMT1ldIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHNldHRpbmdzMS5nZXQoWydjb250ZXh0J10pLmZvbykudG9FcXVhbCggJz1iYXI9Jyk7XG4gIGV4cGVjdChzZXR0aW5nczIuZ2V0KFsnY29udGV4dCddKS5mb28pLnRvRXF1YWwoICdiYXI9Jyk7XG59KTtcblxudGVzdCgnYnVuZGxpbmcgc3RhY2tzIGRlZmF1bHRzIHRvIGFuIGVtcHR5IGxpc3QnLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzID0gU2V0dGluZ3MuZnJvbUNvbW1hbmRMaW5lQXJndW1lbnRzKHtcbiAgICBfOiBbQ29tbWFuZC5MSVNUXSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc2V0dGluZ3MuZ2V0KFsnYnVuZGxpbmdTdGFja3MnXSkpLnRvRXF1YWwoW10pO1xufSk7XG5cbnRlc3QoJ2J1bmRsaW5nIHN0YWNrcyBkZWZhdWx0cyB0byAqIGZvciBkZXBsb3knLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzID0gU2V0dGluZ3MuZnJvbUNvbW1hbmRMaW5lQXJndW1lbnRzKHtcbiAgICBfOiBbQ29tbWFuZC5ERVBMT1ldLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzZXR0aW5ncy5nZXQoWydidW5kbGluZ1N0YWNrcyddKSkudG9FcXVhbChbJyonXSk7XG59KTtcblxudGVzdCgnYnVuZGxpbmcgc3RhY2tzIGRlZmF1bHRzIHRvICogZm9yIHdhdGNoJywgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBzZXR0aW5ncyA9IFNldHRpbmdzLmZyb21Db21tYW5kTGluZUFyZ3VtZW50cyh7XG4gICAgXzogW0NvbW1hbmQuV0FUQ0hdLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzZXR0aW5ncy5nZXQoWydidW5kbGluZ1N0YWNrcyddKSkudG9FcXVhbChbJyonXSk7XG59KTtcblxudGVzdCgnYnVuZGxpbmcgc3RhY2tzIHdpdGggZGVwbG95IGV4Y2x1c2l2ZWx5JywgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBzZXR0aW5ncyA9IFNldHRpbmdzLmZyb21Db21tYW5kTGluZUFyZ3VtZW50cyh7XG4gICAgXzogW0NvbW1hbmQuREVQTE9ZXSxcbiAgICBleGNsdXNpdmVseTogdHJ1ZSxcbiAgICBTVEFDS1M6IFsnY29vbC1zdGFjayddLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzZXR0aW5ncy5nZXQoWydidW5kbGluZ1N0YWNrcyddKSkudG9FcXVhbChbJ2Nvb2wtc3RhY2snXSk7XG59KTtcblxudGVzdCgnYnVuZGxpbmcgc3RhY2tzIHdpdGggd2F0Y2ggZXhjbHVzaXZlbHknLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzID0gU2V0dGluZ3MuZnJvbUNvbW1hbmRMaW5lQXJndW1lbnRzKHtcbiAgICBfOiBbQ29tbWFuZC5XQVRDSF0sXG4gICAgZXhjbHVzaXZlbHk6IHRydWUsXG4gICAgU1RBQ0tTOiBbJ2Nvb2wtc3RhY2snXSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc2V0dGluZ3MuZ2V0KFsnYnVuZGxpbmdTdGFja3MnXSkpLnRvRXF1YWwoWydjb29sLXN0YWNrJ10pO1xufSk7XG5cbnRlc3QoJ3Nob3VsZCBpbmNsdWRlIG91dHB1dHMtZmlsZSBpbiBzZXR0aW5ncycsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc2V0dGluZ3MgPSBTZXR0aW5ncy5mcm9tQ29tbWFuZExpbmVBcmd1bWVudHMoe1xuICAgIF86IFtDb21tYW5kLkRFUExPWV0sXG4gICAgb3V0cHV0c0ZpbGU6ICdteS1vdXRwdXRzLWZpbGUuanNvbicsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHNldHRpbmdzLmdldChbJ291dHB1dHNGaWxlJ10pKS50b0VxdWFsKCdteS1vdXRwdXRzLWZpbGUuanNvbicpO1xufSk7XG5cbnRlc3QoJ3Byb3ZpZGluZyBhIGJ1aWxkIGFyZycsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc2V0dGluZ3MgPSBTZXR0aW5ncy5mcm9tQ29tbWFuZExpbmVBcmd1bWVudHMoe1xuICAgIF86IFtDb21tYW5kLlNZTlRIXSxcbiAgICBidWlsZDogJ212biBwYWNrYWdlJyxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc2V0dGluZ3MuZ2V0KFsnYnVpbGQnXSkpLnRvRXF1YWwoJ212biBwYWNrYWdlJyk7XG59KTsiXX0=
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNldHRpbmdzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw4Q0FBNkQ7QUFFN0QsSUFBSSxDQUFDLHVDQUF1QyxFQUFFLEdBQUcsRUFBRTtJQUNqRCxRQUFRO0lBQ1IsTUFBTSxTQUFTLEdBQUcsSUFBSSxtQkFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDL0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxtQkFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQkFBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUVsRCxPQUFPO0lBQ1AsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVyQixPQUFPO0lBQ1AsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM1QyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLGtDQUFrQyxFQUFFLEdBQUcsRUFBRTtJQUM1QyxRQUFRO0lBQ1IsTUFBTSxTQUFTLEdBQUcsSUFBSSxtQkFBUSxFQUFFLENBQUM7SUFDakMsTUFBTSxTQUFTLEdBQUcsSUFBSSxtQkFBUSxFQUFFLENBQUM7SUFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQkFBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUVsRCxPQUFP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QyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDekQsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kLCBDb250ZXh0LCBTZXR0aW5ncyB9IGZyb20gJy4uL2xpYi9zZXR0aW5ncyc7XG5cbnRlc3QoJ2NhbiBkZWxldGUgdmFsdWVzIGZyb20gQ29udGV4dCBvYmplY3QnLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzMSA9IG5ldyBTZXR0aW5ncyh7IGZvbzogJ2JhcicgfSk7XG4gIGNvbnN0IHNldHRpbmdzMiA9IG5ldyBTZXR0aW5ncyh7IGJvbzogJ2JheicgfSk7XG4gIGNvbnN0IGNvbnRleHQgPSBuZXcgQ29udGV4dChzZXR0aW5nczEsIHNldHRpbmdzMik7XG5cbiAgLy8gV0hFTlxuICBjb250ZXh0LnVuc2V0KCdmb28nKTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjb250ZXh0LmFsbCkudG9FcXVhbCh7IGJvbzogJ2JheicgfSk7XG4gIGV4cGVjdChzZXR0aW5nczEuYWxsKS50b0VxdWFsKHt9KTtcbiAgZXhwZWN0KHNldHRpbmdzMi5hbGwpLnRvRXF1YWwoeyBib286ICdiYXonIH0pO1xufSk7XG5cbnRlc3QoJ2NhbiBzZXQgdmFsdWVzIGluIENvbnRleHQgb2JqZWN0JywgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBzZXR0aW5nczEgPSBuZXcgU2V0dGluZ3MoKTtcbiAgY29uc3Qgc2V0dGluZ3MyID0gbmV3IFNldHRpbmdzKCk7XG4gIGNvbnN0IGNvbnRleHQgPSBuZXcgQ29udGV4dChzZXR0aW5nczEsIHNldHRpbmdzMik7XG5cbiAgLy8gV0hFTlxuICBjb250ZXh0LnNldCgnZm9vJywgJ2JhcicpO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNvbnRleHQuYWxsKS50b0VxdWFsKHsgZm9vOiAnYmFyJyB9KTtcbiAgZXhwZWN0KHNldHRpbmdzMS5hbGwpLnRvRXF1YWwoeyBmb286ICdiYXInIH0pO1xuICBleHBlY3Qoc2V0dGluZ3MyLmFsbCkudG9FcXVhbCh7fSk7XG59KTtcblxudGVzdCgnY2FuIHNldCB2YWx1ZXMgaW4gQ29udGV4dCBvYmplY3QgaWYgZmlyc3QgaXMgaW1tdXRhYmxlJywgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBzZXR0aW5nczEgPSBuZXcgU2V0dGluZ3MoKTtcbiAgY29uc3Qgc2V0dGluZ3MyID0gbmV3IFNldHRpbmdzKCk7XG4gIGNvbnN0IGNvbnRleHQgPSBuZXcgQ29udGV4dChzZXR0aW5nczEubWFrZVJlYWRPbmx5KCksIHNldHRpbmdzMik7XG5cbiAgLy8gV0hFTlxuICBjb250ZXh0LnNldCgnZm9vJywgJ2JhcicpO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNvbnRleHQuYWxsKS50b0VxdWFsKHsgZm9vOiAnYmFyJyB9KTtcbiAgZXhwZWN0KHNldHRpbmdzMS5hbGwpLnRvRXF1YWwoeyB9KTtcbiAgZXhwZWN0KHNldHRpbmdzMi5hbGwpLnRvRXF1YWwoeyBmb286ICdiYXInIH0pO1xufSk7XG5cbnRlc3QoJ2NhbiBjbGVhciBhbGwgdmFsdWVzIGluIGFsbCBvYmplY3RzJywgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBzZXR0aW5nczEgPSBuZXcgU2V0dGluZ3MoeyBmb286ICdiYXInIH0pO1xuICBjb25zdCBzZXR0aW5nczIgPSBuZXcgU2V0dGluZ3MoeyBmb286ICdzbmFyJywgYm9vOiAnZ2FyJyB9KTtcbiAgY29uc3QgY29udGV4dCA9IG5ldyBDb250ZXh0KHNldHRpbmdzMSwgc2V0dGluZ3MyKTtcblxuICAvLyBXSEVOXG4gIGNvbnRleHQuY2xlYXIoKTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjb250ZXh0LmFsbCkudG9FcXVhbCh7fSk7XG4gIGV4cGVjdChzZXR0aW5nczEuYWxsKS50b0VxdWFsKHsgfSk7XG4gIGV4cGVjdChzZXR0aW5nczIuYWxsKS50b0VxdWFsKHt9KTtcbn0pO1xuXG50ZXN0KCdjYW4gcGFyc2Ugc3RyaW5nIGNvbnRleHQgZnJvbSBjb21tYW5kIGxpbmUgYXJndW1lbnRzJywgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBzZXR0aW5nczEgPSBTZXR0aW5ncy5mcm9tQ29tbWFuZExpbmVBcmd1bWVudHMoeyBjb250ZXh0OiBbJ2Zvbz1iYXInXSwgXzogW0NvbW1hbmQuREVQTE9ZXSB9KTtcbiAgY29uc3Qgc2V0dGluZ3MyID0gU2V0dGluZ3MuZnJvbUNvbW1hbmRMaW5lQXJndW1lbnRzKHsgY29udGV4dDogWydmb289J10sIF86IFtDb21tYW5kLkRFUExPWV0gfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc2V0dGluZ3MxLmdldChbJ2NvbnRleHQnXSkuZm9vKS50b0VxdWFsKCAnYmFyJyk7XG4gIGV4cGVjdChzZXR0aW5nczIuZ2V0KFsnY29udGV4dCddKS5mb28pLnRvRXF1YWwoICcnKTtcbn0pO1xuXG50ZXN0KCdjYW4gcGFyc2Ugc3RyaW5nIGNvbnRleHQgZnJvbSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIHdpdGggZXF1YWxzIHNpZ24gaW4gdmFsdWUnLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzMSA9IFNldHRpbmdzLmZyb21Db21tYW5kTGluZUFyZ3VtZW50cyh7IGNvbnRleHQ6IFsnZm9vPT1iYXI9J10sIF86IFtDb21tYW5kLkRFUExPWV0gfSk7XG4gIGNvbnN0IHNldHRpbmdzMiA9IFNldHRpbmdzLmZyb21Db21tYW5kTGluZUFyZ3VtZW50cyh7IGNvbnRleHQ6IFsnZm9vPWJhcj0nXSwgXzogW0NvbW1hbmQuREVQTE9ZXSB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzZXR0aW5nczEuZ2V0KFsnY29udGV4dCddKS5mb28pLnRvRXF1YWwoICc9YmFyPScpO1xuICBleHBlY3Qoc2V0dGluZ3MyLmdldChbJ2NvbnRleHQnXSkuZm9vKS50b0VxdWFsKCAnYmFyPScpO1xufSk7XG5cbnRlc3QoJ2NhbiBwYXJzZSBjb250ZXh0IGZyb20gY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBhbmQgY29udmVydCB2YWx1ZSB0byBjb3JyZWN0IHR5cGUnLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzMSA9IFNldHRpbmdzLmZyb21Db21tYW5kTGluZUFyZ3VtZW50cyh7IGNvbnRleHQ6IFsnZm9vPWZhbHNlJ10sIF86IFtDb21tYW5kLkRFUExPWV0gfSk7XG4gIGNvbnN0IHNldHRpbmdzMiA9IFNldHRpbmdzLmZyb21Db21tYW5kTGluZUFyZ3VtZW50cyh7IGNvbnRleHQ6IFsnZm9vPTAnXSwgXzogW0NvbW1hbmQuREVQTE9ZXSB9KTtcbiAgY29uc3Qgc2V0dGluZ3MzID0gU2V0dGluZ3MuZnJvbUNvbW1hbmRMaW5lQXJndW1lbnRzKHsgY29udGV4dDogWydmb289dHJ1ZSddLCBfOiBbQ29tbWFuZC5ERVBMT1ldIH0pO1xuICBjb25zdCBzZXR0aW5nczQgPSBTZXR0aW5ncy5mcm9tQ29tbWFuZExpbmVBcmd1bWVudHMoeyBjb250ZXh0OiBbJ2Zvbz17XCJhXCI6IFwiYlwiLCBcImNcIjogdHJ1ZSwgXCJkXCI6IFtcImFcIiwgXCJiXCJdfSddLCBfOiBbQ29tbWFuZC5ERVBMT1ldIH0pO1xuICBjb25zdCBzZXR0aW5nczUgPSBTZXR0aW5ncy5mcm9tQ29tbWFuZExpbmVBcmd1bWVudHMoeyBjb250ZXh0OiBbJ2Zvbz0zNCddLCBfOiBbQ29tbWFuZC5ERVBMT1ldIH0pO1xuICBjb25zdCBzZXR0aW5nczYgPSBTZXR0aW5ncy5mcm9tQ29tbWFuZExpbmVBcmd1bWVudHMoeyBjb250ZXh0OiBbJ2Zvbz0zNCAzNSddLCBfOiBbQ29tbWFuZC5ERVBMT1ldIH0pO1xuICBjb25zdCBzZXR0aW5nczcgPSBTZXR0aW5ncy5mcm9tQ29tbWFuZExpbmVBcmd1bWVudHMoeyBjb250ZXh0OiBbJ2Zvbz0weDIyJ10sIF86IFtDb21tYW5kLkRFUExPWV0gfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc2V0dGluZ3MxLmdldChbJ2NvbnRleHQnXSkuZm9vKS50b0VxdWFsKGZhbHNlKTtcbiAgZXhwZWN0KHNldHRpbmdzMi5nZXQoWydjb250ZXh0J10pLmZvbykudG9FcXVhbCgwKTtcbiAgZXhwZWN0KHNldHRpbmdzMy5nZXQoWydjb250ZXh0J10pLmZvbykudG9FcXVhbCh0cnVlKTtcbiAgZXhwZWN0KHNldHRpbmdzNC5nZXQoWydjb250ZXh0J10pLmZvbykudG9FcXVhbCh7IGE6ICdiJywgYzogdHJ1ZSwgZDogWydhJywgJ2InXSB9KTtcbiAgZXhwZWN0KHNldHRpbmdzNS5nZXQoWydjb250ZXh0J10pLmZvbykudG9FcXVhbCgzNCk7XG4gIGV4cGVjdChzZXR0aW5nczYuZ2V0KFsnY29udGV4dCddKS5mb28pLnRvRXF1YWwoJzM0IDM1Jyk7XG4gIGV4cGVjdChzZXR0aW5nczcuZ2V0KFsnY29udGV4dCddKS5mb28pLnRvRXF1YWwoJzB4MjInKTtcbn0pO1xuXG50ZXN0KCdidW5kbGluZyBzdGFja3MgZGVmYXVsdHMgdG8gYW4gZW1wdHkgbGlzdCcsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc2V0dGluZ3MgPSBTZXR0aW5ncy5mcm9tQ29tbWFuZExpbmVBcmd1bWVudHMoe1xuICAgIF86IFtDb21tYW5kLkxJU1RdLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzZXR0aW5ncy5nZXQoWydidW5kbGluZ1N0YWNrcyddKSkudG9FcXVhbChbXSk7XG59KTtcblxudGVzdCgnYnVuZGxpbmcgc3RhY2tzIGRlZmF1bHRzIHRvICogZm9yIGRlcGxveScsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc2V0dGluZ3MgPSBTZXR0aW5ncy5mcm9tQ29tbWFuZExpbmVBcmd1bWVudHMoe1xuICAgIF86IFtDb21tYW5kLkRFUExPWV0sXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHNldHRpbmdzLmdldChbJ2J1bmRsaW5nU3RhY2tzJ10pKS50b0VxdWFsKFsnKiddKTtcbn0pO1xuXG50ZXN0KCdidW5kbGluZyBzdGFja3MgZGVmYXVsdHMgdG8gKiBmb3Igd2F0Y2gnLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzID0gU2V0dGluZ3MuZnJvbUNvbW1hbmRMaW5lQXJndW1lbnRzKHtcbiAgICBfOiBbQ29tbWFuZC5XQVRDSF0sXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHNldHRpbmdzLmdldChbJ2J1bmRsaW5nU3RhY2tzJ10pKS50b0VxdWFsKFsnKiddKTtcbn0pO1xuXG50ZXN0KCdidW5kbGluZyBzdGFja3Mgd2l0aCBkZXBsb3kgZXhjbHVzaXZlbHknLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzID0gU2V0dGluZ3MuZnJvbUNvbW1hbmRMaW5lQXJndW1lbnRzKHtcbiAgICBfOiBbQ29tbWFuZC5ERVBMT1ldLFxuICAgIGV4Y2x1c2l2ZWx5OiB0cnVlLFxuICAgIFNUQUNLUzogWydjb29sLXN0YWNrJ10sXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHNldHRpbmdzLmdldChbJ2J1bmRsaW5nU3RhY2tzJ10pKS50b0VxdWFsKFsnY29vbC1zdGFjayddKTtcbn0pO1xuXG50ZXN0KCdidW5kbGluZyBzdGFja3Mgd2l0aCB3YXRjaCBleGNsdXNpdmVseScsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc2V0dGluZ3MgPSBTZXR0aW5ncy5mcm9tQ29tbWFuZExpbmVBcmd1bWVudHMoe1xuICAgIF86IFtDb21tYW5kLldBVENIXSxcbiAgICBleGNsdXNpdmVseTogdHJ1ZSxcbiAgICBTVEFDS1M6IFsnY29vbC1zdGFjayddLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzZXR0aW5ncy5nZXQoWydidW5kbGluZ1N0YWNrcyddKSkudG9FcXVhbChbJ2Nvb2wtc3RhY2snXSk7XG59KTtcblxudGVzdCgnc2hvdWxkIGluY2x1ZGUgb3V0cHV0cy1maWxlIGluIHNldHRpbmdzJywgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBzZXR0aW5ncyA9IFNldHRpbmdzLmZyb21Db21tYW5kTGluZUFyZ3VtZW50cyh7XG4gICAgXzogW0NvbW1hbmQuREVQTE9ZXSxcbiAgICBvdXRwdXRzRmlsZTogJ215LW91dHB1dHMtZmlsZS5qc29uJyxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc2V0dGluZ3MuZ2V0KFsnb3V0cHV0c0ZpbGUnXSkpLnRvRXF1YWwoJ215LW91dHB1dHMtZmlsZS5qc29uJyk7XG59KTtcblxudGVzdCgncHJvdmlkaW5nIGEgYnVpbGQgYXJnJywgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBzZXR0aW5ncyA9IFNldHRpbmdzLmZyb21Db21tYW5kTGluZUFyZ3VtZW50cyh7XG4gICAgXzogW0NvbW1hbmQuU1lOVEhdLFxuICAgIGJ1aWxkOiAnbXZuIHBhY2thZ2UnLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzZXR0aW5ncy5nZXQoWydidWlsZCddKSkudG9FcXVhbCgnbXZuIHBhY2thZ2UnKTtcbn0pO1xuIl19
|