@aws-cdk-testing/cli-integ 3.27.0 → 3.27.2
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/bin/run-suite +1 -1
- package/lib/cli/run-suite.js +10 -1
- package/lib/integ-test.js +2 -4
- package/npm-shrinkwrap.json +1154 -1357
- package/package.json +2 -2
- package/skip-tests.txt +0 -1
- package/tests/cli-integ-tests/deploy/cdk-deploy-with-any-change-approval-shows-diff.integtest.d.ts +1 -0
- package/tests/cli-integ-tests/deploy/cdk-deploy-with-any-change-approval-shows-diff.integtest.js +18 -0
- package/tests/telemetry-integ-tests/cdk-hotswap-telemetry.integtest.d.ts +1 -0
- package/tests/telemetry-integ-tests/cdk-hotswap-telemetry.integtest.js +36 -0
- package/tests/telemetry-integ-tests/cdk-synth-telemetry-with-errors.integtest.js +2 -2
package/bin/run-suite
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
1
|
+
#!/usr/bin/env -S node --experimental-vm-modules
|
|
2
2
|
require('../lib/cli/run-suite.js');
|
package/lib/cli/run-suite.js
CHANGED
|
@@ -113,6 +113,13 @@ async function main() {
|
|
|
113
113
|
describe: 'The test suite shard to execute in a format of (?<shardIndex>\d+)/(?<shardCount>\d+). `shardIndex` describes which shard to select while `shardCount` controls the number of shards the suite should be split into. `shardIndex` and `shardCount` have to be 1-based, positive numbers, and `shardIndex` has to be lower than or equal to `shardCount`.',
|
|
114
114
|
type: 'string',
|
|
115
115
|
requiresArg: true,
|
|
116
|
+
})
|
|
117
|
+
.options('retry', {
|
|
118
|
+
describe: 'Number of times to retry failed tests.',
|
|
119
|
+
type: 'number',
|
|
120
|
+
requiresArg: true,
|
|
121
|
+
default: !!(process.env.CI || process.env.CODEBUILD_BUILD_ID) ? 2 : 0,
|
|
122
|
+
defaultDescription: '2 in CI/CodeBuild, 0 otherwise',
|
|
116
123
|
}), () => {
|
|
117
124
|
})
|
|
118
125
|
.strict()
|
|
@@ -169,6 +176,7 @@ async function main() {
|
|
|
169
176
|
? new library_preinstalled_source_1.RunnerLibraryPreinstalledSource(toolkitLibPackage)
|
|
170
177
|
: new library_globalinstall_source_1.RunnerLibraryGlobalInstallSource(toolkitLibPackage, 'latest');
|
|
171
178
|
}
|
|
179
|
+
process.env.JEST_RETRY_TIMES = String(args.retry);
|
|
172
180
|
console.log('------> Configuration');
|
|
173
181
|
console.log(` Test suite: ${suiteName}`);
|
|
174
182
|
console.log(` Test version: ${thisPackageVersion()}`);
|
|
@@ -176,6 +184,7 @@ async function main() {
|
|
|
176
184
|
console.log(` Library source: ${librarySource.sourceDescription}`);
|
|
177
185
|
console.log(` Toolkit lib source: ${toolkitSource.sourceDescription}`);
|
|
178
186
|
console.log(` cdk-assets source: ${cdkAssetsSource.assert().sourceDescription}`);
|
|
187
|
+
console.log(` Retry: ${args.retry}`);
|
|
179
188
|
if (args.verbose) {
|
|
180
189
|
process.env.VERBOSE = '1';
|
|
181
190
|
}
|
|
@@ -263,4 +272,4 @@ main().catch(e => {
|
|
|
263
272
|
console.error(e);
|
|
264
273
|
process.exitCode = 1;
|
|
265
274
|
});
|
|
266
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLXN1aXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicnVuLXN1aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUM3Qiw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CLHNFQUF1RTtBQUN2RSx3RUFBeUU7QUFDekUsNERBQWdFO0FBQ2hFLGtHQUFtRztBQUNuRyw4RUFBK0U7QUFDL0UsZ0dBQWlHO0FBRWpHLDhEQUFpRTtBQUVqRSxNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztBQUNuQyxNQUFNLHVCQUF1QixHQUFHLFlBQVksQ0FBQztBQUU3QyxLQUFLLFVBQVUsSUFBSTtJQUNqQixNQUFNLElBQUksR0FBRyxNQUFNLEtBQUs7U0FDckIsT0FBTyxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDaEQsVUFBVSxDQUFDLFdBQVcsRUFBRTtRQUN2QixRQUFRLEVBQUUsK0JBQStCO1FBQ3pDLElBQUksRUFBRSxRQUFRO1FBQ2QsWUFBWSxFQUFFLElBQUk7S0FDbkIsQ0FBQztRQUNGLDZFQUE2RTtRQUM3RSx3QkFBd0I7U0FDdkIsT0FBTyxDQUFDLGFBQWEsRUFBRTtRQUN0QixRQUFRLEVBQUUscUJBQXFCO1FBQy9CLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLFFBQVE7S0FDZixDQUFDO1NBQ0QsT0FBTyxDQUFDLFlBQVksRUFBRTtRQUNyQixRQUFRLEVBQUUsNENBQTRDO1FBQ3RELEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLFFBQVE7S0FDZixDQUFDO1NBQ0QsT0FBTyxDQUFDLG1CQUFtQixFQUFFO1FBQzVCLFFBQVEsRUFBRSwwQkFBMEI7UUFDcEMsS0FBSyxFQUFFLEdBQUc7UUFDVixJQUFJLEVBQUUsUUFBUTtLQUNmLENBQUM7U0FDRCxPQUFPLENBQUMscUJBQXFCLEVBQUU7UUFDOUIsUUFBUSxFQUFFLDRCQUE0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O0FBQ3ZCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGplc3QgZnJvbSAnamVzdCc7XG5pbXBvcnQgKiBhcyB5YXJncyBmcm9tICd5YXJncyc7XG5pbXBvcnQgeyBSdW5uZXJDbGlOcG1Tb3VyY2UgfSBmcm9tICcuLi9wYWNrYWdlLXNvdXJjZXMvY2xpLW5wbS1zb3VyY2UnO1xuaW1wb3J0IHsgUnVubmVyQ2xpUmVwb1NvdXJjZSB9IGZyb20gJy4uL3BhY2thZ2Utc291cmNlcy9jbGktcmVwby1zb3VyY2UnO1xuaW1wb3J0IHsgYXV0b0ZpbmRSZXBvUm9vdCB9IGZyb20gJy4uL3BhY2thZ2Utc291cmNlcy9maW5kLXJvb3QnO1xuaW1wb3J0IHsgUnVubmVyTGlicmFyeUdsb2JhbEluc3RhbGxTb3VyY2UgfSBmcm9tICcuLi9wYWNrYWdlLXNvdXJjZXMvbGlicmFyeS1nbG9iYWxpbnN0YWxsLXNvdXJjZSc7XG5pbXBvcnQgeyBSdW5uZXJMaWJyYXJ5TnBtU291cmNlIH0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2VzL2xpYnJhcnktbnBtLXNvdXJjZSc7XG5pbXBvcnQgeyBSdW5uZXJMaWJyYXJ5UHJlaW5zdGFsbGVkU291cmNlIH0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2VzL2xpYnJhcnktcHJlaW5zdGFsbGVkLXNvdXJjZSc7XG5pbXBvcnQgdHlwZSB7IElSdW5uZXJTb3VyY2UsIElUZXN0Q2xpU291cmNlLCBJVGVzdExpYnJhcnlTb3VyY2UgfSBmcm9tICcuLi9wYWNrYWdlLXNvdXJjZXMvc291cmNlJztcbmltcG9ydCB7IHNlcmlhbGl6ZVNvdXJjZXMgfSBmcm9tICcuLi9wYWNrYWdlLXNvdXJjZXMvc3VicHJvY2Vzcyc7XG5cbmNvbnN0IENMSV9QQUNLQUdFX05BTUUgPSAnYXdzLWNkayc7XG5jb25zdCBDREtfQVNTRVRTX1BBQ0tBR0VfTkFNRSA9ICdjZGstYXNzZXRzJztcblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgYXJncyA9IGF3YWl0IHlhcmdzXG4gICAgLmNvbW1hbmQoJyogPFNVSVRFTkFNRT4nLCAnZGVmYXVsdCBjb21tYW5kJywgeSA9PiB5XG4gICAgICAucG9zaXRpb25hbCgnU1VJVEVOQU1FJywge1xuICAgICAgICBkZXNjcmliZTogJ05hbWUgb2YgdGhlIHRlc3Qgc3VpdGUgdG8gcnVuJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlbWFuZE9wdGlvbjogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgICAgLy8gIFNvdXJjZXMgYW5kIHZlcnNpb25zXG4gICAgICAub3B0aW9ucygnY2xpLXZlcnNpb24nLCB7XG4gICAgICAgIGRlc2NyaWJlOiAnQ0xJIHZlcnNpb24gdG8gdXNlLicsXG4gICAgICAgIGFsaWFzOiAnYycsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25zKCdjbGktc291cmNlJywge1xuICAgICAgICBkZXNjcmliZTogJ1Jvb3Qgb2YgYXdzLWNkay1jbGkgcmVwb3NpdG9yeSwgb3IgXCJhdXRvXCIuJyxcbiAgICAgICAgYWxpYXM6ICdzJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbnMoJ2ZyYW1ld29yay12ZXJzaW9uJywge1xuICAgICAgICBkZXNjcmliZTogJ0ZyYW1ld29yayB2ZXJzaW9uIHRvIHVzZScsXG4gICAgICAgIGFsaWFzOiAnZicsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25zKCd0b29sa2l0LWxpYi12ZXJzaW9uJywge1xuICAgICAgICBkZXNjcmliZTogJ1Rvb2xraXQgbGliIHZlcnNpb24gdG8gdXNlJyxcbiAgICAgICAgYWxpYXM6ICdsJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbnMoJ2Nkay1hc3NldHMtdmVyc2lvbicsIHtcbiAgICAgICAgZGVzY3JpYmU6ICdjZGstYXNzZXRzIHZlcnNpb24gdG8gdXNlLicsXG4gICAgICAgIGFsaWFzOiAnYScsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb24oJ3VzZS1zb3VyY2UnLCB7XG4gICAgICAgIGRlc2NyaXB0b246ICdVc2UgVHlwZVNjcmlwdCBwYWNrYWdlcyBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgcmVwb3NpdG9yeSAob3IgXCJhdXRvXCIpJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgICBkZXByZWNhdGVkOiAnVXNlIC0tY2xpLXNvdXJjZSBpbnN0ZWFkJyxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uKCd1c2UtY2xpLXJlbGVhc2UnLCB7XG4gICAgICAgIGRlc2NyaXB0b246ICdSdW4gdGhlIGN1cnJlbnQgdGVzdHMgYWdhaW5zdCB0aGUgQ0xJIGF0IHRoZSBnaXZlbiB2ZXJzaW9uJyxcbiAgICAgICAgYWxpYXM6ICd1JyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgICBkZXByZWNhdGVkOiAnVXNlIC0tY2xpLXZlcnNpb24gaW5zdGVhZCcsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbignYXV0by1zb3VyY2UnLCB7XG4gICAgICAgIGFsaWFzOiAnYScsXG4gICAgICAgIGRlc2NyaWJlOiAnQXV0b21hdGljYWxseSBmaW5kIHRoZSBzb3VyY2UgdHJlZSBmcm9tIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5JyxcbiAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICAgIGRlcHJlY2F0ZWQ6ICdVc2UgLS11c2Utc291cmNlPWF1dG8gaW5zdGVhZCcsXG4gICAgICB9KVxuICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAgIC8vICBUZXN0IHJ1bm5pbmcgZmxhZ3NcbiAgICAgIC5vcHRpb24oJ3J1bkluQmFuZCcsIHtcbiAgICAgICAgZGVzY3JpcHRvbjogJ1J1biBhbGwgdGVzdHMgaW4gb25lIE5vZGUgcHJvY2VzcycsXG4gICAgICAgIGFsaWFzOiAnaScsXG4gICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uKCd0ZXN0Jywge1xuICAgICAgICBkZXNjcmlwdG9uOiAnVGVzdCBwYXR0ZXJuIHRvIHNlbGVjdGl2ZWx5IHJ1biB0ZXN0cycsXG4gICAgICAgIGFsaWFzOiAndCcsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uKCd0ZXN0LWZpbGUnLCB7XG4gICAgICAgIGRlc2NyaWJlOiAnVGhlIHNwZWNpZmljIHRlc3QgZmlsZSB0byBydW4nLFxuICAgICAgICBhbGlhczogJ0YnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbnMoJ3NlZWQnLCB7XG4gICAgICAgIGRlc2NyaWJlOiAnU2V0IHRoZSBzZWVkIHZhbHVlIHRvIHJlcGxpY2F0ZSBhIHRlc3QgcnVuJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25zKCd2ZXJib3NlJywge1xuICAgICAgICBhbGlhczogJ3YnLFxuICAgICAgICBkZXNjcmliZTogJ1J1biBpbiB2ZXJib3NlIG1vZGUnLFxuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgICAub3B0aW9ucygncGFzc1dpdGhOb1Rlc3RzJywge1xuICAgICAgICBkZXNjcmliZTogJ0FsbG93IHBhc3NpbmcgaWYgdGhlIHRlc3Qgc3VpdGUgaXMgbm90IGZvdW5kIChkZWZhdWx0IHRydWUgd2hlbiBJU19DQU5BUlkgbW9kZSwgZmFsc2Ugb3RoZXJ3aXNlKScsXG4gICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25zKCdtYXhXb3JrZXJzJywge1xuICAgICAgICBhbGlhczogJ3cnLFxuICAgICAgICBkZXNjcmliZTogJ1NwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygd29ya2VycyB0aGUgd29ya2VyLXBvb2wgd2lsbCBzcGF3biBmb3IgcnVubmluZyB0ZXN0cy4gV2UgdXNlIGEgc2Vuc2libGUgZGVmYXVsdCBmb3IgcnVubmluZyBjbGkgaW50ZWcgdGVzdHMuJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25zKCdzaGFyZCcsIHtcbiAgICAgICAgZGVzY3JpYmU6ICdUaGUgdGVzdCBzdWl0ZSBzaGFyZCB0byBleGVjdXRlIGluIGEgZm9ybWF0IG9mICg/PHNoYXJkSW5kZXg+XFxkKykvKD88c2hhcmRDb3VudD5cXGQrKS4gYHNoYXJkSW5kZXhgIGRlc2NyaWJlcyB3aGljaCBzaGFyZCB0byBzZWxlY3Qgd2hpbGUgYHNoYXJkQ291bnRgIGNvbnRyb2xzIHRoZSBudW1iZXIgb2Ygc2hhcmRzIHRoZSBzdWl0ZSBzaG91bGQgYmUgc3BsaXQgaW50by4gYHNoYXJkSW5kZXhgIGFuZCBgc2hhcmRDb3VudGAgaGF2ZSB0byBiZSAxLWJhc2VkLCBwb3NpdGl2ZSBudW1iZXJzLCBhbmQgYHNoYXJkSW5kZXhgIGhhcyB0byBiZSBsb3dlciB0aGFuIG9yIGVxdWFsIHRvIGBzaGFyZENvdW50YC4nLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICB9KSwgKCkgPT4ge1xuICAgIH0sXG4gICAgKVxuICAgIC5zdHJpY3QoKVxuICAgIC5wYXJzZSgpO1xuXG4gIGNvbnN0IHN1aXRlTmFtZSA9IGFyZ3MuU1VJVEVOQU1FO1xuXG4gIC8vIFNvIG1hbnkgd2F5cyB0byBzcGVjaWZ5IHRoaXMsIGFuZCB3aXRoIHZhcmlvdXMgd2F5cyB0byBzcGVsbCB0aGUgc2FtZSBmbGFnIChvX08pXG4gIC8vIEFsc28sIHNvbWUgb2YgdGhlbSBkZXBlbmQgb24gZWFjaCBvdGhlciBmb3IgY29udmVuaWVuY2UuXG4gIGNvbnN0IGNsaVNvdXJjZSA9IG5ldyBVbmlxdWVPcHRpb248SVJ1bm5lclNvdXJjZTxJVGVzdENsaVNvdXJjZT4+KCdDTEkgdmVyc2lvbicpO1xuICBjb25zdCBjZGtBc3NldHNTb3VyY2UgPSBuZXcgVW5pcXVlT3B0aW9uPElSdW5uZXJTb3VyY2U8SVRlc3RDbGlTb3VyY2U+PignY2RrLWFzc2V0cyB2ZXJzaW9uJyk7XG5cbiAgLy8gU3BlY2lmaWMgQ0xJIHZlcnNpb25cbiAgZm9yIChjb25zdCBmbGFnQWxpYXMgb2YgWydjbGktdmVyc2lvbicsICd1c2UtY2xpLXJlbGVhc2UnXSBhcyBjb25zdCkge1xuICAgIGlmIChhcmdzW2ZsYWdBbGlhc10pIHtcbiAgICAgIGNsaVNvdXJjZS5zZXQobmV3IFJ1bm5lckNsaU5wbVNvdXJjZShDTElfUEFDS0FHRV9OQU1FLCBhcmdzW2ZsYWdBbGlhc10pLCBgLS0ke2ZsYWdBbGlhc31gKTtcbiAgICB9XG4gIH1cblxuICAvLyBTcGVjaWZpYyBjZGstYXNzZXRzIHZlcnNpb25cbiAgaWYgKGFyZ3NbJ2Nkay1hc3NldHMtdmVyc2lvbiddKSB7XG4gICAgY2RrQXNzZXRzU291cmNlLnNldChuZXcgUnVubmVyQ2xpTnBtU291cmNlKENES19BU1NFVFNfUEFDS0FHRV9OQU1FLCBhcmdzWydjZGstYXNzZXRzLXZlcnNpb24nXSksICctLWNkay1hc3NldHMtdmVyc2lvbicpO1xuICB9XG5cbiAgLy8gU3BlY2lmaWNhbGx5IHVzZSBhIHNvdXJjZSBsb2NhdGlvblxuICBmb3IgKGNvbnN0IGZsYWdBbGlhcyBvZiBbJ2NsaS1zb3VyY2UnLCAndXNlLXNvdXJjZSddIGFzIGNvbnN0KSB7XG4gICAgaWYgKGFyZ3NbZmxhZ0FsaWFzXSkge1xuICAgICAgY29uc3Qgcm9vdCA9IGFyZ3NbZmxhZ0FsaWFzXSA9PT0gJ2F1dG8nID8gYXdhaXQgYXV0b0ZpbmRSZXBvUm9vdCgpIDogYXJnc1tmbGFnQWxpYXNdO1xuICAgICAgY2xpU291cmNlLnNldChuZXcgUnVubmVyQ2xpUmVwb1NvdXJjZShDTElfUEFDS0FHRV9OQU1FLCByb290KSwgYC0tJHtmbGFnQWxpYXN9YCk7XG4gICAgICBjZGtBc3NldHNTb3VyY2Uuc2V0KG5ldyBSdW5uZXJDbGlSZXBvU291cmNlKENES19BU1NFVFNfUEFDS0FHRV9OQU1FLCByb290KSwgYC0tJHtmbGFnQWxpYXN9YCk7XG4gICAgfVxuICB9XG5cbiAgLy8gU3BlY2lmaWNhbGx5IHJlcXVlc3QgdGhhdCBhIHNvdXJjZSBsb2NhdGlvbiBpcyBnaXZlbiwgb3Igd2UgZGlkbid0IGZpbmQgYSBDTEkgeWV0LlxuICAvLyBBIENMSSBzb3VyY2UgaXMgcmVxdWlyZWQsIHNvIGlmIHRoaXMgZmFpbHMgdGhhdCdzIGFscmlnaHQuXG4gIGlmIChhcmdzWydhdXRvLXNvdXJjZSddIHx8ICFjbGlTb3VyY2UuaXNTZXQoKSkge1xuICAgIGNsaVNvdXJjZS5zZXQobmV3IFJ1bm5lckNsaVJlcG9Tb3VyY2UoQ0xJX1BBQ0tBR0VfTkFNRSwgYXdhaXQgYXV0b0ZpbmRSZXBvUm9vdCgpKSwgJy0tYXV0by1zb3VyY2UnKTtcbiAgfVxuXG4gIC8vIElmIHRoZSBDTEkgaXMgdGFrZW4gZnJvbSB0aGUgc291cmNlLCBhbmQgY2RrLWFzc2V0cyBpcyBub3Qgc2V0LCB3ZSBjYW4gY29weSB0aGUgY2RrLWFzc2V0cyBzb3VyY2UgZnJvbSB0aGUgQ0xJIHNvdXJjZS5cbiAgaWYgKCFjZGtBc3NldHNTb3VyY2UuaXNTZXQoKSkge1xuICAgIGNvbnN0IGNsaVNyYyA9IGNsaVNvdXJjZS5hc3NlcnQoKTtcbiAgICBpZiAoY2xpU3JjIGluc3RhbmNlb2YgUnVubmVyQ2xpUmVwb1NvdXJjZSkge1xuICAgICAgY2RrQXNzZXRzU291cmNlLnNldChuZXcgUnVubmVyQ2xpUmVwb1NvdXJjZShDREtfQVNTRVRTX1BBQ0tBR0VfTkFNRSwgY2xpU3JjLnJlcG9Sb290KSwgJ2NvcGllZCBmcm9tIENMSSBzb3VyY2UnKTtcbiAgICB9XG4gIH1cblxuICAvLyBJZiBjZGstYXNzZXRzIGlzIHN0aWxsIG5vdCBjb25maWd1cmVkLCBmYWxsIGJhY2sgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uIHRoYXQgaXMgYXZhaWxhYmxlXG4gIGlmICghY2RrQXNzZXRzU291cmNlLmlzU2V0KCkpIHtcbiAgICBjZGtBc3NldHNTb3VyY2Uuc2V0KG5ldyBSdW5uZXJDbGlOcG1Tb3VyY2UoQ0RLX0FTU0VUU19QQUNLQUdFX05BTUUsICdsYXRlc3QnKSwgJy0tY2RrLWFzc2V0cy12ZXJzaW9uIG5vdCBzZXQnKTtcbiAgfVxuXG4gIC8vIExpYnJhcnkgc291cmNlIGlzIGVpdGhlciB0aGUgZ2l2ZW4gb25lLCBvciAnbGF0ZXN0JyAobmljZSBhbmQgc2ltcGxlKVxuICBjb25zdCBsaWJyYXJ5U291cmNlOiBJUnVubmVyU291cmNlPElUZXN0TGlicmFyeVNvdXJjZT5cbiAgICA9IG5ldyBSdW5uZXJMaWJyYXJ5TnBtU291cmNlKCdhd3MtY2RrLWxpYicsIGFyZ3NbJ2ZyYW1ld29yay12ZXJzaW9uJ10gPyBhcmdzWydmcmFtZXdvcmstdmVyc2lvbiddIDogJ2xhdGVzdCcpO1xuXG4gIC8vIFRvb2xraXQgbGliIHNvdXJjZSBpcyBlaXRoZXIgdGhlIGdpdmVuIG9uZSwgb3IgdGhlIG9uZSB0aGF0J3MgYmVpbmcgYnJvdWdodCBieSAncGFja2FnZS5qc29uJyBhbHJlYWR5LCBvciAnbGF0ZXN0J1xuICBjb25zdCB0b29sa2l0TGliUGFja2FnZSA9ICdAYXdzLWNkay90b29sa2l0LWxpYic7XG4gIGxldCB0b29sa2l0U291cmNlOiBJUnVubmVyU291cmNlPElUZXN0TGlicmFyeVNvdXJjZT4gfCB1bmRlZmluZWQ7XG4gIGlmIChhcmdzWyd0b29sa2l0LWxpYi12ZXJzaW9uJ10pIHtcbiAgICB0b29sa2l0U291cmNlID0gbmV3IFJ1bm5lckxpYnJhcnlHbG9iYWxJbnN0YWxsU291cmNlKHRvb2xraXRMaWJQYWNrYWdlLCBhcmdzWyd0b29sa2l0LWxpYi12ZXJzaW9uJ10pO1xuICB9XG4gIGlmICghdG9vbGtpdFNvdXJjZSkge1xuICAgIHRvb2xraXRTb3VyY2UgPSBhd2FpdCBSdW5uZXJMaWJyYXJ5UHJlaW5zdGFsbGVkU291cmNlLmlzUHJlaW5zdGFsbGVkKHRvb2xraXRMaWJQYWNrYWdlKVxuICAgICAgPyBuZXcgUnVubmVyTGlicmFyeVByZWluc3RhbGxlZFNvdXJjZSh0b29sa2l0TGliUGFja2FnZSlcbiAgICAgIDogbmV3IFJ1bm5lckxpYnJhcnlHbG9iYWxJbnN0YWxsU291cmNlKHRvb2xraXRMaWJQYWNrYWdlLCAnbGF0ZXN0Jyk7XG4gIH1cblxuICBjb25zb2xlLmxvZygnLS0tLS0tPiBDb25maWd1cmF0aW9uJyk7XG4gIGNvbnNvbGUubG9nKGAgICAgICAgIFRlc3Qgc3VpdGU6ICAgICAgICAgJHtzdWl0ZU5hbWV9YCk7XG4gIGNvbnNvbGUubG9nKGAgICAgICAgIFRlc3QgdmVyc2lvbjogICAgICAgJHt0aGlzUGFja2FnZVZlcnNpb24oKX1gKTtcbiAgY29uc29sZS5sb2coYCAgICAgICAgQ0xJIHNvdXJjZTogICAgICAgICAke2NsaVNvdXJjZS5hc3NlcnQoKS5zb3VyY2VEZXNjcmlwdGlvbn1gKTtcbiAgY29uc29sZS5sb2coYCAgICAgICAgTGlicmFyeSBzb3VyY2U6ICAgICAke2xpYnJhcnlTb3VyY2Uuc291cmNlRGVzY3JpcHRpb259YCk7XG4gIGNvbnNvbGUubG9nKGAgICAgICAgIFRvb2xraXQgbGliIHNvdXJjZTogJHt0b29sa2l0U291cmNlLnNvdXJjZURlc2NyaXB0aW9ufWApO1xuICBjb25zb2xlLmxvZyhgICAgICAgICBjZGstYXNzZXRzIHNvdXJjZTogICR7Y2RrQXNzZXRzU291cmNlLmFzc2VydCgpLnNvdXJjZURlc2NyaXB0aW9ufWApO1xuXG4gIGlmIChhcmdzLnZlcmJvc2UpIHtcbiAgICBwcm9jZXNzLmVudi5WRVJCT1NFID0gJzEnO1xuICB9XG5cbiAgLy8gTW90aXZhdGlvbiBiZWhpbmQgdGhpcyBiZWhhdmlvcjogd2hlbiBhZGRpbmcgYSBuZXcgdGVzdCBzdWl0ZSB0byB0aGUgcGlwZWxpbmUsIGJlY2F1c2Ugb2YgdGhlIHdheSBvdXJcbiAgLy8gUGlwZWxpbmUgcGFja2FnZSB3b3JrcywgdGhlIHN1aXRlIHdvdWxkIGJlIGFkZGVkIHRvIHRoZSBwaXBlbGluZSBBTkQgYXMgYSBjYW5hcnkgaW1tZWRpYXRlbHkuIFRoZSBjYW5hcnlcbiAgLy8gd291bGQgZmFpbCB1bnRpbCB0aGUgcGFja2FnZSB3YXMgYWN0dWFsbHkgcmVsZWFzZWQsIHNvIGZvciBjYW5hcmllcyB3ZSBtYWtlIGFuIGV4Y2VwdGlvbiBzbyB0aGF0IHRoZSBpbml0aWFsXG4gIC8vIGNhbmFyeSB3b3VsZCBzdWNjZWVkIGV2ZW4gaWYgdGhlIHN1aXRlIHdhc24ndCB5ZXQgYXZhaWxhYmxlLiBUaGUgZmFjdCB0aGF0IHRoZSBzdWl0ZSBpcyBub3Qgb3B0aW9uYWwgaW5cbiAgLy8gdGhlIHBpcGVsaW5lIHByb3RlY3RzIHVzIGZyb20gdHlwb3MuXG4gIGNvbnN0IHBhc3NXaXRoTm9UZXN0cyA9IGFyZ3MucGFzc1dpdGhOb1Rlc3RzID8/ICEhcHJvY2Vzcy5lbnYuSVNfQ0FOQVJZO1xuXG4gIC8vIENvbW11bmljYXRlIHdpdGggdGhlIGNvbmZpZyBmaWxlIChpbnRlZy5qZXN0LmNvbmZpZy5qcylcbiAgcHJvY2Vzcy5lbnYuVEVTVF9TVUlURV9OQU1FID0gc3VpdGVOYW1lO1xuXG4gIGNvbnN0IGRpc3Bvc2FibGVzID0gbmV3IEFycmF5PHsgZGlzcG9zZSgpOiBQcm9taXNlPHZvaWQ+IH0+KCk7XG4gIHRyeSB7XG4gICAgY29uc29sZS5sb2coJy0tLS0tLT4gUmVzb2x2ZWQgdmVyc2lvbnMnKTtcbiAgICBjb25zdCBjbGkgPSBhd2FpdCBjbGlTb3VyY2UuYXNzZXJ0KCkucnVubmVyUHJlcGFyZSgpO1xuICAgIGRpc3Bvc2FibGVzLnB1c2goY2xpKTtcbiAgICBjb25zb2xlLmxvZyhgICAgICAgICBDTEk6ICAgICAgICAgICAgICR7Y2xpLnZlcnNpb259YCk7XG5cbiAgICBjb25zdCBsaWJyYXJ5ID0gYXdhaXQgbGlicmFyeVNvdXJjZS5ydW5uZXJQcmVwYXJlKCk7XG4gICAgZGlzcG9zYWJsZXMucHVzaChsaWJyYXJ5KTtcbiAgICBjb25zb2xlLmxvZyhgICAgICAgICBMaWJyYXJ5OiAgICAgICAgICR7bGlicmFyeS52ZXJzaW9ufWApO1xuXG4gICAgY29uc3QgdG9vbGtpdExpYiA9IGF3YWl0IHRvb2xraXRTb3VyY2UucnVubmVyUHJlcGFyZSgpO1xuICAgIGRpc3Bvc2FibGVzLnB1c2godG9vbGtpdExpYik7XG4gICAgY29uc29sZS5sb2coYCAgICAgICAgVG9vbGtpdCBsaWJyYXJ5OiAke3Rvb2xraXRMaWIudmVyc2lvbn1gKTtcblxuICAgIGNvbnN0IGNka0Fzc2V0cyA9IGF3YWl0IGNka0Fzc2V0c1NvdXJjZS5hc3NlcnQoKS5ydW5uZXJQcmVwYXJlKCk7XG4gICAgZGlzcG9zYWJsZXMucHVzaChjZGtBc3NldHMpO1xuICAgIGNvbnNvbGUubG9nKGAgICAgICAgIGNkay1hc3NldHM6ICAgICAgJHtjZGtBc3NldHMudmVyc2lvbn1gKTtcblxuICAgIHNlcmlhbGl6ZVNvdXJjZXMoe1xuICAgICAgY2xpLFxuICAgICAgbGlicmFyeSxcbiAgICAgIHRvb2xraXRMaWIsXG4gICAgICBjZGtBc3NldHMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBqZXN0Q29uZmlnID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ3Jlc291cmNlcycsICdpbnRlZy5qZXN0LmNvbmZpZy5qcycpO1xuXG4gICAgLy8gRmxpcCBhIGZsYWcgdG8gaW5kaWNhdGUgd2UncmUgdGVzdGluZyBDREsgaXRzZWxmLiBTb21lIHBhcnRzIG9mIENESyBiZWhhdmUgbW9yZSB0aG9yb3VnaGx5XG4gICAgLy8gKGJ1dCBzbG93bHkpIGlmIHRoaXMgZmxhZyBpcyBzZXQuXG4gICAgcHJvY2Vzcy5lbnYuVEVTVElOR19DREsgPSAnMSc7XG5cbiAgICBhd2FpdCBqZXN0LnJ1bihbXG4gICAgICAnLS1yYW5kb21pemUnLFxuICAgICAgLi4uYXJncy5zZWVkID8gW2AtLXNlZWQ9JHthcmdzLnNlZWR9YF0gOiBbXSxcbiAgICAgIC4uLmFyZ3MucnVuSW5CYW5kID8gWyctaSddIDogW10sXG4gICAgICAuLi5hcmdzLnRlc3QgPyBbJy10JywgYXJncy50ZXN0XSA6IFtdLFxuICAgICAgLi4uYXJncy52ZXJib3NlID8gWyctLXZlcmJvc2UnXSA6IFtdLFxuICAgICAgLi4uYXJncy5tYXhXb3JrZXJzID8gW2AtLW1heFdvcmtlcnM9JHthcmdzLm1heFdvcmtlcnN9YF0gOiBbXSxcbiAgICAgIC4uLnBhc3NXaXRoTm9UZXN0cyA/IFsnLS1wYXNzV2l0aE5vVGVzdHMnXSA6IFtdLFxuICAgICAgLi4uYXJnc1sndGVzdC1maWxlJ10gPyBbYXJnc1sndGVzdC1maWxlJ11dIDogW10sXG4gICAgICAuLi5hcmdzLnNoYXJkID8gW2AtLXNoYXJkPSR7YXJncy5zaGFyZH1gXSA6IFtdLFxuICAgIF0sIGplc3RDb25maWcpO1xuICB9IGZpbmFsbHkge1xuICAgIGZvciAoY29uc3QgZGlzcCBvZiBkaXNwb3NhYmxlcykge1xuICAgICAgYXdhaXQgZGlzcC5kaXNwb3NlKCk7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIFVuaXF1ZU9wdGlvbjxBPiB7XG4gIHB1YmxpYyB2YWx1ZTogQSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBzb3VyY2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHdoYXQ6IHN0cmluZykge1xuICB9XG5cbiAgcHVibGljIGlzU2V0KCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgYXNzZXJ0KCk6IEEge1xuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMud2hhdH0gbm90IGNvbmZpZ3VyZWRgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgc2V0KHg6IEEsIHNvdXJjZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLndoYXR9OiAke3NvdXJjZX0gYWxyZWFkeSBjb25maWd1cmVkIHZpYSAke3RoaXMuc291cmNlfWApO1xuICAgIH1cbiAgICB0aGlzLnZhbHVlID0geDtcbiAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0aGlzUGFja2FnZVZlcnNpb24oKTogc3RyaW5nIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgcmV0dXJuIHJlcXVpcmUoJy4uLy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb247XG59XG5cbm1haW4oKS5jYXRjaChlID0+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5lcnJvcihlKTtcbiAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG59KTtcbiJdfQ==
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLXN1aXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicnVuLXN1aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUM3Qiw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CLHNFQUF1RTtBQUN2RSx3RUFBeUU7QUFDekUsNERBQWdFO0FBQ2hFLGtHQUFtRztBQUNuRyw4RUFBK0U7QUFDL0UsZ0dBQWlHO0FBRWpHLDhEQUFpRTtBQUVqRSxNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztBQUNuQyxNQUFNLHVCQUF1QixHQUFHLFlBQVksQ0FBQztBQUU3QyxLQUFLLFVBQVUsSUFBSTtJQUNqQixNQUFNLElBQUksR0FBRyxNQUFNLEtBQUs7U0FDckIsT0FBTyxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDaEQsVUFBVSxDQUFDLFdBQVcsRUFBRTtRQUN2QixRQUFRLEVBQUUsK0JBQStCO1FBQ3pDLElBQUksRUFBRSxRQUFRO1FBQ2QsWUFBWSxFQUFFLElBQUk7S0FDbkIsQ0FBQztRQUNGLDZFQUE2RTtRQUM3RSx3QkFBd0I7U0FDdkIsT0FBTyxDQUFDLGFBQWEsRUFBRTtRQUN0QixRQUFRLEVBQUUscUJBQXFCO1FBQy9CLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLFFBQVE7S0FDZixDQUFDO1NBQ0QsT0FBTyxDQUFDLFlBQVksRUFBRTtRQUNyQixRQUFRLEVBQUUsNENBQTRDO1FBQ3RELEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLFFBQVE7S0FDZixDQUFDO1NBQ0QsT0FBTyxDQUFDLG1CQUFtQixFQUFFO1FBQzVCLFFBQVEsRUFBRSwwQkFBMEI7UUFDcEMsS0FBSyxFQUFFLEdBQUc7UUFDVixJQUFJLEVBQUUsUUFBUTtLQUNmLENBQUM7U0FDRCxPQUFPLENBQUMscUJBQXFCLEVBQUU7UUFDOUIsUUFBUSxFQUFFLDRCQUE0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QUssQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSwyQkFBMkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDbkYsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBRUQsU0FBUyxrQkFBa0I7SUFDekIsaUVBQWlFO0lBQ2pFLE9BQU8sT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUMsT0FBTyxDQUFDO0FBQy9DLENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDZixzQ0FBc0M7SUFDdEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQixPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUN2QixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBqZXN0IGZyb20gJ2plc3QnO1xuaW1wb3J0ICogYXMgeWFyZ3MgZnJvbSAneWFyZ3MnO1xuaW1wb3J0IHsgUnVubmVyQ2xpTnBtU291cmNlIH0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2VzL2NsaS1ucG0tc291cmNlJztcbmltcG9ydCB7IFJ1bm5lckNsaVJlcG9Tb3VyY2UgfSBmcm9tICcuLi9wYWNrYWdlLXNvdXJjZXMvY2xpLXJlcG8tc291cmNlJztcbmltcG9ydCB7IGF1dG9GaW5kUmVwb1Jvb3QgfSBmcm9tICcuLi9wYWNrYWdlLXNvdXJjZXMvZmluZC1yb290JztcbmltcG9ydCB7IFJ1bm5lckxpYnJhcnlHbG9iYWxJbnN0YWxsU291cmNlIH0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2VzL2xpYnJhcnktZ2xvYmFsaW5zdGFsbC1zb3VyY2UnO1xuaW1wb3J0IHsgUnVubmVyTGlicmFyeU5wbVNvdXJjZSB9IGZyb20gJy4uL3BhY2thZ2Utc291cmNlcy9saWJyYXJ5LW5wbS1zb3VyY2UnO1xuaW1wb3J0IHsgUnVubmVyTGlicmFyeVByZWluc3RhbGxlZFNvdXJjZSB9IGZyb20gJy4uL3BhY2thZ2Utc291cmNlcy9saWJyYXJ5LXByZWluc3RhbGxlZC1zb3VyY2UnO1xuaW1wb3J0IHR5cGUgeyBJUnVubmVyU291cmNlLCBJVGVzdENsaVNvdXJjZSwgSVRlc3RMaWJyYXJ5U291cmNlIH0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2VzL3NvdXJjZSc7XG5pbXBvcnQgeyBzZXJpYWxpemVTb3VyY2VzIH0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2VzL3N1YnByb2Nlc3MnO1xuXG5jb25zdCBDTElfUEFDS0FHRV9OQU1FID0gJ2F3cy1jZGsnO1xuY29uc3QgQ0RLX0FTU0VUU19QQUNLQUdFX05BTUUgPSAnY2RrLWFzc2V0cyc7XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gIGNvbnN0IGFyZ3MgPSBhd2FpdCB5YXJnc1xuICAgIC5jb21tYW5kKCcqIDxTVUlURU5BTUU+JywgJ2RlZmF1bHQgY29tbWFuZCcsIHkgPT4geVxuICAgICAgLnBvc2l0aW9uYWwoJ1NVSVRFTkFNRScsIHtcbiAgICAgICAgZGVzY3JpYmU6ICdOYW1lIG9mIHRoZSB0ZXN0IHN1aXRlIHRvIHJ1bicsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZW1hbmRPcHRpb246IHRydWUsXG4gICAgICB9KVxuICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAgIC8vICBTb3VyY2VzIGFuZCB2ZXJzaW9uc1xuICAgICAgLm9wdGlvbnMoJ2NsaS12ZXJzaW9uJywge1xuICAgICAgICBkZXNjcmliZTogJ0NMSSB2ZXJzaW9uIHRvIHVzZS4nLFxuICAgICAgICBhbGlhczogJ2MnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIH0pXG4gICAgICAub3B0aW9ucygnY2xpLXNvdXJjZScsIHtcbiAgICAgICAgZGVzY3JpYmU6ICdSb290IG9mIGF3cy1jZGstY2xpIHJlcG9zaXRvcnksIG9yIFwiYXV0b1wiLicsXG4gICAgICAgIGFsaWFzOiAncycsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25zKCdmcmFtZXdvcmstdmVyc2lvbicsIHtcbiAgICAgICAgZGVzY3JpYmU6ICdGcmFtZXdvcmsgdmVyc2lvbiB0byB1c2UnLFxuICAgICAgICBhbGlhczogJ2YnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIH0pXG4gICAgICAub3B0aW9ucygndG9vbGtpdC1saWItdmVyc2lvbicsIHtcbiAgICAgICAgZGVzY3JpYmU6ICdUb29sa2l0IGxpYiB2ZXJzaW9uIHRvIHVzZScsXG4gICAgICAgIGFsaWFzOiAnbCcsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25zKCdjZGstYXNzZXRzLXZlcnNpb24nLCB7XG4gICAgICAgIGRlc2NyaWJlOiAnY2RrLWFzc2V0cyB2ZXJzaW9uIHRvIHVzZS4nLFxuICAgICAgICBhbGlhczogJ2EnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIH0pXG4gICAgICAub3B0aW9uKCd1c2Utc291cmNlJywge1xuICAgICAgICBkZXNjcmlwdG9uOiAnVXNlIFR5cGVTY3JpcHQgcGFja2FnZXMgZnJvbSB0aGUgZ2l2ZW4gc291cmNlIHJlcG9zaXRvcnkgKG9yIFwiYXV0b1wiKScsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgICAgZGVwcmVjYXRlZDogJ1VzZSAtLWNsaS1zb3VyY2UgaW5zdGVhZCcsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbigndXNlLWNsaS1yZWxlYXNlJywge1xuICAgICAgICBkZXNjcmlwdG9uOiAnUnVuIHRoZSBjdXJyZW50IHRlc3RzIGFnYWluc3QgdGhlIENMSSBhdCB0aGUgZ2l2ZW4gdmVyc2lvbicsXG4gICAgICAgIGFsaWFzOiAndScsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgICAgZGVwcmVjYXRlZDogJ1VzZSAtLWNsaS12ZXJzaW9uIGluc3RlYWQnLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb24oJ2F1dG8tc291cmNlJywge1xuICAgICAgICBhbGlhczogJ2EnLFxuICAgICAgICBkZXNjcmliZTogJ0F1dG9tYXRpY2FsbHkgZmluZCB0aGUgc291cmNlIHRyZWUgZnJvbSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeScsXG4gICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgcmVxdWlyZXNBcmc6IGZhbHNlLFxuICAgICAgICBkZXByZWNhdGVkOiAnVXNlIC0tdXNlLXNvdXJjZT1hdXRvIGluc3RlYWQnLFxuICAgICAgfSlcbiAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgICAvLyAgVGVzdCBydW5uaW5nIGZsYWdzXG4gICAgICAub3B0aW9uKCdydW5JbkJhbmQnLCB7XG4gICAgICAgIGRlc2NyaXB0b246ICdSdW4gYWxsIHRlc3RzIGluIG9uZSBOb2RlIHByb2Nlc3MnLFxuICAgICAgICBhbGlhczogJ2knLFxuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbigndGVzdCcsIHtcbiAgICAgICAgZGVzY3JpcHRvbjogJ1Rlc3QgcGF0dGVybiB0byBzZWxlY3RpdmVseSBydW4gdGVzdHMnLFxuICAgICAgICBhbGlhczogJ3QnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbigndGVzdC1maWxlJywge1xuICAgICAgICBkZXNjcmliZTogJ1RoZSBzcGVjaWZpYyB0ZXN0IGZpbGUgdG8gcnVuJyxcbiAgICAgICAgYWxpYXM6ICdGJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25zKCdzZWVkJywge1xuICAgICAgICBkZXNjcmliZTogJ1NldCB0aGUgc2VlZCB2YWx1ZSB0byByZXBsaWNhdGUgYSB0ZXN0IHJ1bicsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAub3B0aW9ucygndmVyYm9zZScsIHtcbiAgICAgICAgYWxpYXM6ICd2JyxcbiAgICAgICAgZGVzY3JpYmU6ICdSdW4gaW4gdmVyYm9zZSBtb2RlJyxcbiAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICByZXF1aXJlc0FyZzogZmFsc2UsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbnMoJ3Bhc3NXaXRoTm9UZXN0cycsIHtcbiAgICAgICAgZGVzY3JpYmU6ICdBbGxvdyBwYXNzaW5nIGlmIHRoZSB0ZXN0IHN1aXRlIGlzIG5vdCBmb3VuZCAoZGVmYXVsdCB0cnVlIHdoZW4gSVNfQ0FOQVJZIG1vZGUsIGZhbHNlIG90aGVyd2lzZSknLFxuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIHJlcXVpcmVzQXJnOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgICAub3B0aW9ucygnbWF4V29ya2VycycsIHtcbiAgICAgICAgYWxpYXM6ICd3JyxcbiAgICAgICAgZGVzY3JpYmU6ICdTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHdvcmtlcnMgdGhlIHdvcmtlci1wb29sIHdpbGwgc3Bhd24gZm9yIHJ1bm5pbmcgdGVzdHMuIFdlIHVzZSBhIHNlbnNpYmxlIGRlZmF1bHQgZm9yIHJ1bm5pbmcgY2xpIGludGVnIHRlc3RzLicsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICAub3B0aW9ucygnc2hhcmQnLCB7XG4gICAgICAgIGRlc2NyaWJlOiAnVGhlIHRlc3Qgc3VpdGUgc2hhcmQgdG8gZXhlY3V0ZSBpbiBhIGZvcm1hdCBvZiAoPzxzaGFyZEluZGV4PlxcZCspLyg/PHNoYXJkQ291bnQ+XFxkKykuIGBzaGFyZEluZGV4YCBkZXNjcmliZXMgd2hpY2ggc2hhcmQgdG8gc2VsZWN0IHdoaWxlIGBzaGFyZENvdW50YCBjb250cm9scyB0aGUgbnVtYmVyIG9mIHNoYXJkcyB0aGUgc3VpdGUgc2hvdWxkIGJlIHNwbGl0IGludG8uIGBzaGFyZEluZGV4YCBhbmQgYHNoYXJkQ291bnRgIGhhdmUgdG8gYmUgMS1iYXNlZCwgcG9zaXRpdmUgbnVtYmVycywgYW5kIGBzaGFyZEluZGV4YCBoYXMgdG8gYmUgbG93ZXIgdGhhbiBvciBlcXVhbCB0byBgc2hhcmRDb3VudGAuJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25zKCdyZXRyeScsIHtcbiAgICAgICAgZGVzY3JpYmU6ICdOdW1iZXIgb2YgdGltZXMgdG8gcmV0cnkgZmFpbGVkIHRlc3RzLicsXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgICAgZGVmYXVsdDogISEocHJvY2Vzcy5lbnYuQ0kgfHwgcHJvY2Vzcy5lbnYuQ09ERUJVSUxEX0JVSUxEX0lEKSA/IDIgOiAwLFxuICAgICAgICBkZWZhdWx0RGVzY3JpcHRpb246ICcyIGluIENJL0NvZGVCdWlsZCwgMCBvdGhlcndpc2UnLFxuICAgICAgfSksICgpID0+IHtcbiAgICB9LFxuICAgIClcbiAgICAuc3RyaWN0KClcbiAgICAucGFyc2UoKTtcblxuICBjb25zdCBzdWl0ZU5hbWUgPSBhcmdzLlNVSVRFTkFNRTtcblxuICAvLyBTbyBtYW55IHdheXMgdG8gc3BlY2lmeSB0aGlzLCBhbmQgd2l0aCB2YXJpb3VzIHdheXMgdG8gc3BlbGwgdGhlIHNhbWUgZmxhZyAob19PKVxuICAvLyBBbHNvLCBzb21lIG9mIHRoZW0gZGVwZW5kIG9uIGVhY2ggb3RoZXIgZm9yIGNvbnZlbmllbmNlLlxuICBjb25zdCBjbGlTb3VyY2UgPSBuZXcgVW5pcXVlT3B0aW9uPElSdW5uZXJTb3VyY2U8SVRlc3RDbGlTb3VyY2U+PignQ0xJIHZlcnNpb24nKTtcbiAgY29uc3QgY2RrQXNzZXRzU291cmNlID0gbmV3IFVuaXF1ZU9wdGlvbjxJUnVubmVyU291cmNlPElUZXN0Q2xpU291cmNlPj4oJ2Nkay1hc3NldHMgdmVyc2lvbicpO1xuXG4gIC8vIFNwZWNpZmljIENMSSB2ZXJzaW9uXG4gIGZvciAoY29uc3QgZmxhZ0FsaWFzIG9mIFsnY2xpLXZlcnNpb24nLCAndXNlLWNsaS1yZWxlYXNlJ10gYXMgY29uc3QpIHtcbiAgICBpZiAoYXJnc1tmbGFnQWxpYXNdKSB7XG4gICAgICBjbGlTb3VyY2Uuc2V0KG5ldyBSdW5uZXJDbGlOcG1Tb3VyY2UoQ0xJX1BBQ0tBR0VfTkFNRSwgYXJnc1tmbGFnQWxpYXNdKSwgYC0tJHtmbGFnQWxpYXN9YCk7XG4gICAgfVxuICB9XG5cbiAgLy8gU3BlY2lmaWMgY2RrLWFzc2V0cyB2ZXJzaW9uXG4gIGlmIChhcmdzWydjZGstYXNzZXRzLXZlcnNpb24nXSkge1xuICAgIGNka0Fzc2V0c1NvdXJjZS5zZXQobmV3IFJ1bm5lckNsaU5wbVNvdXJjZShDREtfQVNTRVRTX1BBQ0tBR0VfTkFNRSwgYXJnc1snY2RrLWFzc2V0cy12ZXJzaW9uJ10pLCAnLS1jZGstYXNzZXRzLXZlcnNpb24nKTtcbiAgfVxuXG4gIC8vIFNwZWNpZmljYWxseSB1c2UgYSBzb3VyY2UgbG9jYXRpb25cbiAgZm9yIChjb25zdCBmbGFnQWxpYXMgb2YgWydjbGktc291cmNlJywgJ3VzZS1zb3VyY2UnXSBhcyBjb25zdCkge1xuICAgIGlmIChhcmdzW2ZsYWdBbGlhc10pIHtcbiAgICAgIGNvbnN0IHJvb3QgPSBhcmdzW2ZsYWdBbGlhc10gPT09ICdhdXRvJyA/IGF3YWl0IGF1dG9GaW5kUmVwb1Jvb3QoKSA6IGFyZ3NbZmxhZ0FsaWFzXTtcbiAgICAgIGNsaVNvdXJjZS5zZXQobmV3IFJ1bm5lckNsaVJlcG9Tb3VyY2UoQ0xJX1BBQ0tBR0VfTkFNRSwgcm9vdCksIGAtLSR7ZmxhZ0FsaWFzfWApO1xuICAgICAgY2RrQXNzZXRzU291cmNlLnNldChuZXcgUnVubmVyQ2xpUmVwb1NvdXJjZShDREtfQVNTRVRTX1BBQ0tBR0VfTkFNRSwgcm9vdCksIGAtLSR7ZmxhZ0FsaWFzfWApO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNwZWNpZmljYWxseSByZXF1ZXN0IHRoYXQgYSBzb3VyY2UgbG9jYXRpb24gaXMgZ2l2ZW4sIG9yIHdlIGRpZG4ndCBmaW5kIGEgQ0xJIHlldC5cbiAgLy8gQSBDTEkgc291cmNlIGlzIHJlcXVpcmVkLCBzbyBpZiB0aGlzIGZhaWxzIHRoYXQncyBhbHJpZ2h0LlxuICBpZiAoYXJnc1snYXV0by1zb3VyY2UnXSB8fCAhY2xpU291cmNlLmlzU2V0KCkpIHtcbiAgICBjbGlTb3VyY2Uuc2V0KG5ldyBSdW5uZXJDbGlSZXBvU291cmNlKENMSV9QQUNLQUdFX05BTUUsIGF3YWl0IGF1dG9GaW5kUmVwb1Jvb3QoKSksICctLWF1dG8tc291cmNlJyk7XG4gIH1cblxuICAvLyBJZiB0aGUgQ0xJIGlzIHRha2VuIGZyb20gdGhlIHNvdXJjZSwgYW5kIGNkay1hc3NldHMgaXMgbm90IHNldCwgd2UgY2FuIGNvcHkgdGhlIGNkay1hc3NldHMgc291cmNlIGZyb20gdGhlIENMSSBzb3VyY2UuXG4gIGlmICghY2RrQXNzZXRzU291cmNlLmlzU2V0KCkpIHtcbiAgICBjb25zdCBjbGlTcmMgPSBjbGlTb3VyY2UuYXNzZXJ0KCk7XG4gICAgaWYgKGNsaVNyYyBpbnN0YW5jZW9mIFJ1bm5lckNsaVJlcG9Tb3VyY2UpIHtcbiAgICAgIGNka0Fzc2V0c1NvdXJjZS5zZXQobmV3IFJ1bm5lckNsaVJlcG9Tb3VyY2UoQ0RLX0FTU0VUU19QQUNLQUdFX05BTUUsIGNsaVNyYy5yZXBvUm9vdCksICdjb3BpZWQgZnJvbSBDTEkgc291cmNlJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgY2RrLWFzc2V0cyBpcyBzdGlsbCBub3QgY29uZmlndXJlZCwgZmFsbCBiYWNrIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiB0aGF0IGlzIGF2YWlsYWJsZVxuICBpZiAoIWNka0Fzc2V0c1NvdXJjZS5pc1NldCgpKSB7XG4gICAgY2RrQXNzZXRzU291cmNlLnNldChuZXcgUnVubmVyQ2xpTnBtU291cmNlKENES19BU1NFVFNfUEFDS0FHRV9OQU1FLCAnbGF0ZXN0JyksICctLWNkay1hc3NldHMtdmVyc2lvbiBub3Qgc2V0Jyk7XG4gIH1cblxuICAvLyBMaWJyYXJ5IHNvdXJjZSBpcyBlaXRoZXIgdGhlIGdpdmVuIG9uZSwgb3IgJ2xhdGVzdCcgKG5pY2UgYW5kIHNpbXBsZSlcbiAgY29uc3QgbGlicmFyeVNvdXJjZTogSVJ1bm5lclNvdXJjZTxJVGVzdExpYnJhcnlTb3VyY2U+XG4gICAgPSBuZXcgUnVubmVyTGlicmFyeU5wbVNvdXJjZSgnYXdzLWNkay1saWInLCBhcmdzWydmcmFtZXdvcmstdmVyc2lvbiddID8gYXJnc1snZnJhbWV3b3JrLXZlcnNpb24nXSA6ICdsYXRlc3QnKTtcblxuICAvLyBUb29sa2l0IGxpYiBzb3VyY2UgaXMgZWl0aGVyIHRoZSBnaXZlbiBvbmUsIG9yIHRoZSBvbmUgdGhhdCdzIGJlaW5nIGJyb3VnaHQgYnkgJ3BhY2thZ2UuanNvbicgYWxyZWFkeSwgb3IgJ2xhdGVzdCdcbiAgY29uc3QgdG9vbGtpdExpYlBhY2thZ2UgPSAnQGF3cy1jZGsvdG9vbGtpdC1saWInO1xuICBsZXQgdG9vbGtpdFNvdXJjZTogSVJ1bm5lclNvdXJjZTxJVGVzdExpYnJhcnlTb3VyY2U+IHwgdW5kZWZpbmVkO1xuICBpZiAoYXJnc1sndG9vbGtpdC1saWItdmVyc2lvbiddKSB7XG4gICAgdG9vbGtpdFNvdXJjZSA9IG5ldyBSdW5uZXJMaWJyYXJ5R2xvYmFsSW5zdGFsbFNvdXJjZSh0b29sa2l0TGliUGFja2FnZSwgYXJnc1sndG9vbGtpdC1saWItdmVyc2lvbiddKTtcbiAgfVxuICBpZiAoIXRvb2xraXRTb3VyY2UpIHtcbiAgICB0b29sa2l0U291cmNlID0gYXdhaXQgUnVubmVyTGlicmFyeVByZWluc3RhbGxlZFNvdXJjZS5pc1ByZWluc3RhbGxlZCh0b29sa2l0TGliUGFja2FnZSlcbiAgICAgID8gbmV3IFJ1bm5lckxpYnJhcnlQcmVpbnN0YWxsZWRTb3VyY2UodG9vbGtpdExpYlBhY2thZ2UpXG4gICAgICA6IG5ldyBSdW5uZXJMaWJyYXJ5R2xvYmFsSW5zdGFsbFNvdXJjZSh0b29sa2l0TGliUGFja2FnZSwgJ2xhdGVzdCcpO1xuICB9XG5cbiAgcHJvY2Vzcy5lbnYuSkVTVF9SRVRSWV9USU1FUyA9IFN0cmluZyhhcmdzLnJldHJ5KTtcblxuICBjb25zb2xlLmxvZygnLS0tLS0tPiBDb25maWd1cmF0aW9uJyk7XG4gIGNvbnNvbGUubG9nKGAgICAgICAgIFRlc3Qgc3VpdGU6ICAgICAgICAgJHtzdWl0ZU5hbWV9YCk7XG4gIGNvbnNvbGUubG9nKGAgICAgICAgIFRlc3QgdmVyc2lvbjogICAgICAgJHt0aGlzUGFja2FnZVZlcnNpb24oKX1gKTtcbiAgY29uc29sZS5sb2coYCAgICAgICAgQ0xJIHNvdXJjZTogICAgICAgICAke2NsaVNvdXJjZS5hc3NlcnQoKS5zb3VyY2VEZXNjcmlwdGlvbn1gKTtcbiAgY29uc29sZS5sb2coYCAgICAgICAgTGlicmFyeSBzb3VyY2U6ICAgICAke2xpYnJhcnlTb3VyY2Uuc291cmNlRGVzY3JpcHRpb259YCk7XG4gIGNvbnNvbGUubG9nKGAgICAgICAgIFRvb2xraXQgbGliIHNvdXJjZTogJHt0b29sa2l0U291cmNlLnNvdXJjZURlc2NyaXB0aW9ufWApO1xuICBjb25zb2xlLmxvZyhgICAgICAgICBjZGstYXNzZXRzIHNvdXJjZTogICR7Y2RrQXNzZXRzU291cmNlLmFzc2VydCgpLnNvdXJjZURlc2NyaXB0aW9ufWApO1xuICBjb25zb2xlLmxvZyhgICAgICAgICBSZXRyeTogICAgICAgICAgICAgICR7YXJncy5yZXRyeX1gKTtcblxuICBpZiAoYXJncy52ZXJib3NlKSB7XG4gICAgcHJvY2Vzcy5lbnYuVkVSQk9TRSA9ICcxJztcbiAgfVxuXG4gIC8vIE1vdGl2YXRpb24gYmVoaW5kIHRoaXMgYmVoYXZpb3I6IHdoZW4gYWRkaW5nIGEgbmV3IHRlc3Qgc3VpdGUgdG8gdGhlIHBpcGVsaW5lLCBiZWNhdXNlIG9mIHRoZSB3YXkgb3VyXG4gIC8vIFBpcGVsaW5lIHBhY2thZ2Ugd29ya3MsIHRoZSBzdWl0ZSB3b3VsZCBiZSBhZGRlZCB0byB0aGUgcGlwZWxpbmUgQU5EIGFzIGEgY2FuYXJ5IGltbWVkaWF0ZWx5LiBUaGUgY2FuYXJ5XG4gIC8vIHdvdWxkIGZhaWwgdW50aWwgdGhlIHBhY2thZ2Ugd2FzIGFjdHVhbGx5IHJlbGVhc2VkLCBzbyBmb3IgY2FuYXJpZXMgd2UgbWFrZSBhbiBleGNlcHRpb24gc28gdGhhdCB0aGUgaW5pdGlhbFxuICAvLyBjYW5hcnkgd291bGQgc3VjY2VlZCBldmVuIGlmIHRoZSBzdWl0ZSB3YXNuJ3QgeWV0IGF2YWlsYWJsZS4gVGhlIGZhY3QgdGhhdCB0aGUgc3VpdGUgaXMgbm90IG9wdGlvbmFsIGluXG4gIC8vIHRoZSBwaXBlbGluZSBwcm90ZWN0cyB1cyBmcm9tIHR5cG9zLlxuICBjb25zdCBwYXNzV2l0aE5vVGVzdHMgPSBhcmdzLnBhc3NXaXRoTm9UZXN0cyA/PyAhIXByb2Nlc3MuZW52LklTX0NBTkFSWTtcblxuICAvLyBDb21tdW5pY2F0ZSB3aXRoIHRoZSBjb25maWcgZmlsZSAoaW50ZWcuamVzdC5jb25maWcuanMpXG4gIHByb2Nlc3MuZW52LlRFU1RfU1VJVEVfTkFNRSA9IHN1aXRlTmFtZTtcblxuICBjb25zdCBkaXNwb3NhYmxlcyA9IG5ldyBBcnJheTx7IGRpc3Bvc2UoKTogUHJvbWlzZTx2b2lkPiB9PigpO1xuICB0cnkge1xuICAgIGNvbnNvbGUubG9nKCctLS0tLS0+IFJlc29sdmVkIHZlcnNpb25zJyk7XG4gICAgY29uc3QgY2xpID0gYXdhaXQgY2xpU291cmNlLmFzc2VydCgpLnJ1bm5lclByZXBhcmUoKTtcbiAgICBkaXNwb3NhYmxlcy5wdXNoKGNsaSk7XG4gICAgY29uc29sZS5sb2coYCAgICAgICAgQ0xJOiAgICAgICAgICAgICAke2NsaS52ZXJzaW9ufWApO1xuXG4gICAgY29uc3QgbGlicmFyeSA9IGF3YWl0IGxpYnJhcnlTb3VyY2UucnVubmVyUHJlcGFyZSgpO1xuICAgIGRpc3Bvc2FibGVzLnB1c2gobGlicmFyeSk7XG4gICAgY29uc29sZS5sb2coYCAgICAgICAgTGlicmFyeTogICAgICAgICAke2xpYnJhcnkudmVyc2lvbn1gKTtcblxuICAgIGNvbnN0IHRvb2xraXRMaWIgPSBhd2FpdCB0b29sa2l0U291cmNlLnJ1bm5lclByZXBhcmUoKTtcbiAgICBkaXNwb3NhYmxlcy5wdXNoKHRvb2xraXRMaWIpO1xuICAgIGNvbnNvbGUubG9nKGAgICAgICAgIFRvb2xraXQgbGlicmFyeTogJHt0b29sa2l0TGliLnZlcnNpb259YCk7XG5cbiAgICBjb25zdCBjZGtBc3NldHMgPSBhd2FpdCBjZGtBc3NldHNTb3VyY2UuYXNzZXJ0KCkucnVubmVyUHJlcGFyZSgpO1xuICAgIGRpc3Bvc2FibGVzLnB1c2goY2RrQXNzZXRzKTtcbiAgICBjb25zb2xlLmxvZyhgICAgICAgICBjZGstYXNzZXRzOiAgICAgICR7Y2RrQXNzZXRzLnZlcnNpb259YCk7XG5cbiAgICBzZXJpYWxpemVTb3VyY2VzKHtcbiAgICAgIGNsaSxcbiAgICAgIGxpYnJhcnksXG4gICAgICB0b29sa2l0TGliLFxuICAgICAgY2RrQXNzZXRzLFxuICAgIH0pO1xuXG4gICAgY29uc3QgamVzdENvbmZpZyA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICcuLicsICdyZXNvdXJjZXMnLCAnaW50ZWcuamVzdC5jb25maWcuanMnKTtcblxuICAgIC8vIEZsaXAgYSBmbGFnIHRvIGluZGljYXRlIHdlJ3JlIHRlc3RpbmcgQ0RLIGl0c2VsZi4gU29tZSBwYXJ0cyBvZiBDREsgYmVoYXZlIG1vcmUgdGhvcm91Z2hseVxuICAgIC8vIChidXQgc2xvd2x5KSBpZiB0aGlzIGZsYWcgaXMgc2V0LlxuICAgIHByb2Nlc3MuZW52LlRFU1RJTkdfQ0RLID0gJzEnO1xuXG4gICAgYXdhaXQgamVzdC5ydW4oW1xuICAgICAgJy0tcmFuZG9taXplJyxcbiAgICAgIC4uLmFyZ3Muc2VlZCA/IFtgLS1zZWVkPSR7YXJncy5zZWVkfWBdIDogW10sXG4gICAgICAuLi5hcmdzLnJ1bkluQmFuZCA/IFsnLWknXSA6IFtdLFxuICAgICAgLi4uYXJncy50ZXN0ID8gWyctdCcsIGFyZ3MudGVzdF0gOiBbXSxcbiAgICAgIC4uLmFyZ3MudmVyYm9zZSA/IFsnLS12ZXJib3NlJ10gOiBbXSxcbiAgICAgIC4uLmFyZ3MubWF4V29ya2VycyA/IFtgLS1tYXhXb3JrZXJzPSR7YXJncy5tYXhXb3JrZXJzfWBdIDogW10sXG4gICAgICAuLi5wYXNzV2l0aE5vVGVzdHMgPyBbJy0tcGFzc1dpdGhOb1Rlc3RzJ10gOiBbXSxcbiAgICAgIC4uLmFyZ3NbJ3Rlc3QtZmlsZSddID8gW2FyZ3NbJ3Rlc3QtZmlsZSddXSA6IFtdLFxuICAgICAgLi4uYXJncy5zaGFyZCA/IFtgLS1zaGFyZD0ke2FyZ3Muc2hhcmR9YF0gOiBbXSxcbiAgICBdLCBqZXN0Q29uZmlnKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBmb3IgKGNvbnN0IGRpc3Agb2YgZGlzcG9zYWJsZXMpIHtcbiAgICAgIGF3YWl0IGRpc3AuZGlzcG9zZSgpO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBVbmlxdWVPcHRpb248QT4ge1xuICBwdWJsaWMgdmFsdWU6IEEgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgc291cmNlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB3aGF0OiBzdHJpbmcpIHtcbiAgfVxuXG4gIHB1YmxpYyBpc1NldCgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIGFzc2VydCgpOiBBIHtcbiAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLndoYXR9IG5vdCBjb25maWd1cmVkYCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG5cbiAgcHVibGljIHNldCh4OiBBLCBzb3VyY2U6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy53aGF0fTogJHtzb3VyY2V9IGFscmVhZHkgY29uZmlndXJlZCB2aWEgJHt0aGlzLnNvdXJjZX1gKTtcbiAgICB9XG4gICAgdGhpcy52YWx1ZSA9IHg7XG4gICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gdGhpc1BhY2thZ2VWZXJzaW9uKCk6IHN0cmluZyB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIHJldHVybiByZXF1aXJlKCcuLi8uLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xufVxuXG5tYWluKCkuY2F0Y2goZSA9PiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUuZXJyb3IoZSk7XG4gIHByb2Nlc3MuZXhpdENvZGUgPSAxO1xufSk7XG4iXX0=
|
package/lib/integ-test.js
CHANGED
|
@@ -23,9 +23,7 @@ let failed = false;
|
|
|
23
23
|
*/
|
|
24
24
|
function integTest(name, callback, timeoutMillis) {
|
|
25
25
|
const runner = shouldSkip(name) ? test.skip : test;
|
|
26
|
-
|
|
27
|
-
// lets retry 3 times to try and mitigate that.
|
|
28
|
-
jest.retryTimes(3);
|
|
26
|
+
jest.retryTimes(parseInt(process.env.JEST_RETRY_TIMES ?? '0'));
|
|
29
27
|
runner(name, async () => {
|
|
30
28
|
const output = new corking_1.MemoryStream();
|
|
31
29
|
output.write('================================================================\n');
|
|
@@ -205,4 +203,4 @@ function readSkipFile(filePath) {
|
|
|
205
203
|
return [];
|
|
206
204
|
}
|
|
207
205
|
}
|
|
208
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWctdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImludGVnLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQ0EsOEJBa0dDO0FBa0JELG9DQUdDO0FBdkpELHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsdUNBQXlDO0FBRXpDLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUM7SUFDdEQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztDQUN2RCxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUNqQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFeEMsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQzFCLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RSxDQUFDO0FBRUQsc0ZBQXNGO0FBQ3RGLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQztBQUVuRCxzRUFBc0U7QUFDdEUsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBVW5COztHQUVHO0FBQ0gsU0FBZ0IsU0FBUyxDQUN2QixJQUFZLEVBQ1osUUFBaUQsRUFDakQsYUFBc0I7SUFFdEIsTUFBTSxNQUFN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QUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IE1lbW9yeVN0cmVhbSB9IGZyb20gJy4vY29ya2luZyc7XG5cbmNvbnN0IFNLSVBfVEVTVFMgPSBbXG4gIC4uLnJlYWRTa2lwRmlsZShwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnc2tpcC10ZXN0cy50eHQnKSksXG4gIC4uLnJlYWRTa2lwRmlsZShwcm9jZXNzLmVudi5DREtfSU5URUdfU0tJUF9URVNUU19GSUxFKSxcbiAgLi4uKHByb2Nlc3MuZW52LkNES19JTlRFR19TS0lQX1RFU1RTID8/ICcnKS5zcGxpdCgnLCcpLFxuXS5tYXAoeCA9PiB4LnRyaW0oKSlcbiAgLmZpbHRlcih4ID0+IHggJiYgIXguc3RhcnRzV2l0aCgnIycpKTtcblxuaWYgKFNLSVBfVEVTVFMubGVuZ3RoID4gMCkge1xuICBwcm9jZXNzLnN0ZGVyci53cml0ZShg4oS577iPIFNraXBwaW5nIHRlc3RzOiAke0pTT04uc3RyaW5naWZ5KFNLSVBfVEVTVFMpfVxcbmApO1xufVxuXG4vLyBXaGV0aGVyIHdlIHdhbnQgdG8gc3RvcCBhZnRlciB0aGUgZmlyc3QgZmFpbHVyZSwgZm9yIHF1aWNrZXIgZGVidWdnaW5nIChob3BlZnVsbHkpLlxuY29uc3QgRkFJTF9GQVNUID0gcHJvY2Vzcy5lbnYuRkFJTF9GQVNUID09PSAndHJ1ZSc7XG5cbi8vIEtlZXAgdHJhY2sgb2Ygd2hldGhlciB0aGUgc3VpdGUgaGFzIGZhaWxlZC4gSWYgc28sIHdlIHN0b3AgcnVubmluZy5cbmxldCBmYWlsZWQgPSBmYWxzZTtcblxuZXhwb3J0IGludGVyZmFjZSBUZXN0Q29udGV4dCB7XG4gIHJlYWRvbmx5IHJhbmRvbVN0cmluZzogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dDogTm9kZUpTLldyaXRhYmxlU3RyZWFtO1xuICBsb2coczogc3RyaW5nKTogdm9pZDtcbiAgcmVwb3J0V2FpdFRpbWUobXM6IG51bWJlcik6IHZvaWQ7XG59XG5cbi8qKlxuICogQSB3cmFwcGVyIGZvciBqZXN0J3MgJ3Rlc3QnIHdoaWNoIHRha2VzIHJlZ3Jlc3Npb24tZGlzYWJsZWQgdGVzdHMgaW50byBhY2NvdW50IGFuZCBwcmludHMgYSBiYW5uZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludGVnVGVzdChcbiAgbmFtZTogc3RyaW5nLFxuICBjYWxsYmFjazogKGNvbnRleHQ6IFRlc3RDb250ZXh0KSA9PiBQcm9taXNlPHZvaWQ+LFxuICB0aW1lb3V0TWlsbGlzPzogbnVtYmVyLFxuKTogdm9pZCB7XG4gIGNvbnN0IHJ1bm5lciA9IHNob3VsZFNraXAobmFtZSkgPyB0ZXN0LnNraXAgOiB0ZXN0O1xuXG4gIC8vIHdlJ3JlIHF1aXRlIGEgYml0IG9mIHNwb3JhZGljIGZhaWx1cmVzIGR1ZSB0byBlbnZpcm9ubWVudGFsIGNhdXNlcy5cbiAgLy8gbGV0cyByZXRyeSAzIHRpbWVzIHRvIHRyeSBhbmQgbWl0aWdhdGUgdGhhdC5cbiAgamVzdC5yZXRyeVRpbWVzKDMpO1xuXG4gIHJ1bm5lcihuYW1lLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3V0cHV0ID0gbmV3IE1lbW9yeVN0cmVhbSgpO1xuXG4gICAgb3V0cHV0LndyaXRlKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuJyk7XG4gICAgb3V0cHV0LndyaXRlKGAke25hbWV9XFxuYCk7XG4gICAgb3V0cHV0LndyaXRlKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuJyk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IHdhaXRUaW1lID0gMDtcblxuICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGBbSU5URUcgVEVTVDo6JHtuYW1lfV0gU3RhcnRpbmcgKHBpZCAke3Byb2Nlc3MucGlkfSkuLi5cXG5gKTtcbiAgICBtYXliZVByaW50TWVtb3J5VXNhZ2UobmFtZSk7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChGQUlMX0ZBU1QgJiYgZmFpbGVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRkFJTF9GQVNUIHJlcXVlc3RlZCBhbmQgY3VycmVudGx5IGZhaWxpbmcuIFN0b3BwaW5nIHRlc3QgZWFybHkuJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJldCA9IGF3YWl0IGNhbGxiYWNrKHtcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICByYW5kb21TdHJpbmc6IHJhbmRvbVN0cmluZygpLFxuICAgICAgICBuYW1lLFxuICAgICAgICBsb2coczogc3RyaW5nKSB7XG4gICAgICAgICAgb3V0cHV0LndyaXRlKGAke3N9XFxuYCk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlcG9ydFdhaXRUaW1lKG4pIHtcbiAgICAgICAgICB3YWl0VGltZSArPSBuO1xuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHdyaXRlTG9nKG5hbWUsIHtcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgb3V0cHV0OiBvdXRwdXQudG9TdHJpbmcoKSxcbiAgICAgICAgdG90YWxEdXJhdGlvbjogRGF0ZS5ub3coKSAtIHN0YXJ0LFxuICAgICAgICB3YWl0VGltZSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgLy8gUHJpbnQgdGhlIGJ1ZmZlcmVkIG91dHB1dCwgb25seSBpZiB0aGUgdGVzdCBmYWlscy5cbiAgICAgIGZhaWxlZCA9IHRydWU7XG5cbiAgICAgIG91dHB1dC53cml0ZShlLm1lc3NhZ2UpO1xuICAgICAgb3V0cHV0LndyaXRlKGUuc3RhY2spO1xuXG4gICAgICBhd2FpdCB3cml0ZUxvZyhuYW1lLCB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBvdXRwdXQ6IG91dHB1dC50b1N0cmluZygpLFxuICAgICAgICB0b3RhbER1cmF0aW9uOiBEYXRlLm5vdygpIC0gc3RhcnQsXG4gICAgICAgIHdhaXRUaW1lLFxuICAgICAgfSk7XG4gICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShgW0lOVEVHIFRFU1Q6OiR7bmFtZX1dIEZhaWxlZDogJHtlfVxcbmApO1xuXG4gICAgICBjb25zdCBpc0dpdEh1YiA9ICEhcHJvY2Vzcy5lbnYuR0lUSFVCX1JVTl9JRDtcblxuICAgICAgaWYgKGlzR2l0SHViKSB7XG4gICAgICAgIC8vIEdpdEh1YiBBY3Rpb25zIGNvbXBhdGlibGUgb3V0cHV0IGZvcm1hdHRpbmdcbiAgICAgICAgLy8gaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy93cml0aW5nLXdvcmtmbG93cy9jaG9vc2luZy13aGF0LXlvdXItd29ya2Zsb3ctZG9lcy93b3JrZmxvdy1jb21tYW5kcy1mb3ItZ2l0aHViLWFjdGlvbnMjc2V0dGluZy1hbi1lcnJvci1tZXNzYWdlXG4gICAgICAgIGxldCB3cml0dGVuID0gcHJvY2Vzcy5zdGRlcnIud3JpdGUoYDo6ZXJyb3IgdGl0bGU9RmFpbGVkICR7bmFtZX06OiR7ZS5tZXNzYWdlfVxcbmApO1xuICAgICAgICBpZiAoIXdyaXR0ZW4pIHtcbiAgICAgICAgICAvLyBXYWl0IGZvciBkcmFpblxuICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChvaykgPT4gcHJvY2Vzcy5zdGRlcnIub25jZSgnZHJhaW4nLCBvaykpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJpbnQgb3V0cHV0IG9ubHkgaWYgdGhlIHRlc3QgZmFpbHMuIFVzZSAnY29uc29sZS5sb2cnIHNvIHRoZSBvdXRwdXQgaXMgYnVmZmVyZWQgYnlcbiAgICAgICAgLy8gamVzdCBhbmQgcHJpbnRzIHdpdGhvdXQgYSBzdGFjayB0cmFjZSAoaWYgdmVyYm9zZTogZmFsc2UpLlxuICAgICAgICB3cml0dGVuID0gcHJvY2Vzcy5zdGRvdXQud3JpdGUoW1xuICAgICAgICAgIGA6Omdyb3VwOjpGYWlsdXJlIGRldGFpbHM6ICR7bmFtZX0gKGNsaWNrIHRvIGV4cGFuZClcXG5gLFxuICAgICAgICAgIGAke291dHB1dC5idWZmZXIoKS50b1N0cmluZygpfVxcbmAsXG4gICAgICAgICAgJzo6ZW5kZ3JvdXA6OlxcbicsXG4gICAgICAgIF0uam9pbignJykpO1xuICAgICAgICBpZiAoIXdyaXR0ZW4pIHtcbiAgICAgICAgICAvLyBXYWl0IGZvciBkcmFpblxuICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChvaykgPT4gcHJvY2Vzcy5zdGRvdXQub25jZSgnZHJhaW4nLCBvaykpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBVc2UgJ2NvbnNvbGUubG9nJyBzbyB0aGUgb3V0cHV0IGlzIGJ1ZmZlcmVkIGJ5XG4gICAgICAgIC8vIGplc3QgYW5kIHByaW50cyB3aXRob3V0IGEgc3RhY2sgdHJhY2UgKGlmIHZlcmJvc2U6IGZhbHNlKS5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5sb2cob3V0cHV0LmJ1ZmZlcigpLnRvU3RyaW5nKCkpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnQ7XG4gICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShgW0lOVEVHIFRFU1Q6OiR7bmFtZX1dIERvbmUgKCR7aHVtYW5UaW1lKGR1cmF0aW9uKX0pLlxcbmApO1xuICAgICAgbWF5YmVQcmludE1lbW9yeVVzYWdlKG5hbWUpO1xuICAgIH1cbiAgfSwgdGltZW91dE1pbGxpcyk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFNraXAodGVzdE5hbWU6IHN0cmluZykge1xuICByZXR1cm4gU0tJUF9URVNUUy5pbmNsdWRlcyh0ZXN0TmFtZSk7XG59XG5cbmZ1bmN0aW9uIG1heWJlUHJpbnRNZW1vcnlVc2FnZSh0ZXN0TmFtZTogc3RyaW5nKSB7XG4gIGlmIChwcm9jZXNzLmVudi5JTlRFR19NRU1PUllfREVCVUcgIT09ICd0cnVlJykge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBtZW1vcnlVc2FnZSA9IHByb2Nlc3MubWVtb3J5VXNhZ2UoKSBhcyBhbnk7XG4gIGNvbnN0IHJlcG9ydDogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG1lbW9yeVVzYWdlKSkge1xuICAgIHJlcG9ydFtrZXldID0gYCR7TWF0aC5yb3VuZCh2YWx1ZSBhcyBudW1iZXIgLyAxMDI0IC8gMTAyNCl9IE1CYDtcbiAgfVxuICBwcm9jZXNzLnN0ZGVyci53cml0ZShgW0lOVEVHIFRFU1Q6OiR7dGVzdE5hbWV9XSBNZW1vcnkgVXNhZ2U6ICR7SlNPTi5zdHJpbmdpZnkocmVwb3J0KX1gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbVN0cmluZygpIHtcbiAgLy8gQ3JhenlcbiAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnJlcGxhY2UoL1teYS16MC05XSsvZywgJycpO1xufVxuXG4vKipcbiAqIFdyaXRlIGxvZyBmaWxlc1xuICpcbiAqIFdyaXRlIGEgdGV4dCBsb2cgdG8gYCR7SU5URUdfTE9HU30vW0ZBSUxFRC1dZGVzY3JpcHRpb24tb2YtdGVzdC50eHRgLCBhbmQgYSBzaW5nbGVcbiAqIGxpbmUgb2YgYSBNYXJrZG93biB0YWJsZSB0byBgJHtJTlRFR19MT0dTfS9tZC8xLWRlc2NyaXB0aW9uLW9mLXRlc3QubWRgLlxuICpcbiAqIFRoZSBsYXR0ZXIgYXJlIGRlc2lnbmVkIHRvIGJlIGdsb2JjYXR0ZWQgdG8gJEdJVEhVQl9TVEVQX1NVTU1BUlkgYWZ0ZXIgdGVzdHNcbiAqICh3ZSBkb24ndCB3cml0ZSB0aGVyZSBkaXJlY3RseSB0byBhdm9pZCBjb25jdXJyZW5jeSBpc3N1ZXMgd2l0aCBtdWx0aXBsZSBwcm9jZXNzZXNcbiAqIHJlYWRpbmcgYW5kIG11dGF0aW5nIHRoZSBzYW1lIGZpbGUpLlxuICpcbiAqIFdlIGRvIHVzZSBgYXRvbWljV3JpdGVgIHRvIHdyaXRlIGZpbGVzIC0tIGl0J3Mgb25seSBuZWNlc3NhcnkgZm9yIHRoZSBoZWFkZXIgZmlsZSxcbiAqIHdoaWNoIGdldHMgb3ZlcndyaXR0ZW4gYnkgZXZlcnkgdGVzdCwganVzdCB0byBtYWtlIHN1cmUgaXQgcHJvcGVybHkgZXhpc3RzIChzaG91bGRuJ3RcbiAqIGVuZCB1cCBlbXB0eSBvciB3aXRoIGludGVybGVhdmVkIGNvbnRlbnRzKS4gVGhlIG90aGVyIHdyaXRlcyBhcmUgbm90XG4gKiBjb250ZW5kZWQgYW5kIGRvbid0IG5lZWQgdG8gYmUgYXRvbWljLCBidXQgdGhlIGZ1bmN0aW9uIGlzIGp1c3QgZXJnb25vbWljIHRvIHVzZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gd3JpdGVMb2codGVzdE5hbWU6IHN0cmluZywgcmVzdWx0OiB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIG91dHB1dDogc3RyaW5nO1xuICB0b3RhbER1cmF0aW9uOiBudW1iZXI7XG4gIHdhaXRUaW1lOiBudW1iZXI7XG59KSB7XG4gIGlmIChwcm9jZXNzLmVudi5JTlRFR19MT0dTKSB7XG4gICAgLy8gV3JpdGUgdGhlIGxvZyBmaWxlXG4gICAgY29uc3Qgc2x1ZyA9IHNsdWdpZnkodGVzdE5hbWUpO1xuICAgIGNvbnN0IGxvZ0ZpbGVOYW1lID0gYCR7cHJvY2Vzcy5lbnYuSU5URUdfTE9HU30vJHtyZXN1bHQuc3VjY2VzcyA/ICcnIDogJ0ZBSUxFRC0nfSR7c2x1Z30udHh0YDtcbiAgICBhd2FpdCBhdG9taWNXcml0ZShsb2dGaWxlTmFtZSwgcmVzdWx0Lm91dHB1dCk7XG5cbiAgICAvLyBXcml0ZSBhIHJvdyBmb3IgdGhlIG1hcmtkb3duIHRhYmxlXG4gICAgLy8gU29ydCBmYWlsdXJlcyBiZWZvcmUgc3VjY2Vzc2VzLCBhbmQgdGhlIHRhYmxlIGhlYWRlciBiZWZvcmUgYWxsXG4gICAgY29uc3QgbWRGaWxlTmFtZSA9IGAke3Byb2Nlc3MuZW52LklOVEVHX0xPR1N9L21kLyR7cmVzdWx0LnN1Y2Nlc3MgPyAnMicgOiAnMSd9LSR7c2x1Z30ubWRgO1xuICAgIGNvbnN0IGNvbHVtbnM6IEFycmF5PFtzdHJpbmcsIHN0cmluZ10+ID0gW1xuICAgICAgWydSZXN1bHQnLCByZXN1bHQuc3VjY2VzcyA/ICdwYXNzIOKchScgOiAnZmFpbCDinYwnXSxcbiAgICAgIFsnVGVzdCBOYW1lJywgdGVzdE5hbWVdLFxuICAgICAgWydUZXN0IER1cmF0aW9uJywgaHVtYW5UaW1lKHJlc3VsdC50b3RhbER1cmF0aW9uIC0gcmVzdWx0LndhaXRUaW1lKV0sXG4gICAgICBbJ1dhaXQgVGltZScsIHJlc3VsdC53YWl0VGltZSA+IDAgPyBodW1hblRpbWUocmVzdWx0LndhaXRUaW1lKSA6ICctJ10sXG4gICAgXTtcbiAgICBhd2FpdCBhdG9taWNXcml0ZShgJHtwcm9jZXNzLmVudi5JTlRFR19MT0dTfS9tZC8wLWhlYWRlci5tZGAsIFtcbiAgICAgIGB8ICR7Y29sdW1ucy5tYXAoKFtjb2wsIF92YWxdKSA9PiBjb2wpLmpvaW4oJyB8ICcpfSB8YCxcbiAgICAgIGB8ICR7Y29sdW1ucy5tYXAoKCkgPT4gJy0tLS0tLS0tLS0tJykuam9pbignIHwgJyl9IHxgLFxuICAgIF0ubWFwKHggPT4gYCR7eH1cXG5gKS5qb2luKCcnKSk7XG4gICAgYXdhaXQgYXRvbWljV3JpdGUobWRGaWxlTmFtZSxcbiAgICAgIGB8ICR7Y29sdW1ucy5tYXAoKFtfY29sLCB2YWxdKSA9PiB2YWwpLmpvaW4oJyB8ICcpfSB8XFxuYCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaHVtYW5UaW1lKGRlbHRhOiBudW1iZXIpIHtcbiAgY29uc3QgY29tcG9uZW50cyA9IFtdO1xuXG4gIGNvbnN0IFMgPSAxMDAwO1xuICBjb25zdCBNID0gNjAgKiBTO1xuICBjb25zdCBIID0gNjAgKiBNO1xuXG4gIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcihkZWx0YSAvIEgpO1xuICBpZiAoaG91cnMgPiAwKSB7XG4gICAgY29tcG9uZW50cy5wdXNoKGAke2hvdXJzfWhgKTtcbiAgICBkZWx0YSAtPSBob3VycyAqIEg7XG4gIH1cbiAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoZGVsdGEgLyBNKTtcbiAgaWYgKG1pbnV0ZXMgPiAwKSB7XG4gICAgY29tcG9uZW50cy5wdXNoKGAke21pbnV0ZXN9bWApO1xuICAgIGRlbHRhIC09IG1pbnV0ZXMgKiBNO1xuICB9XG4gIGNvbnN0IHNlY29uZHMgPSBNYXRoLmZsb29yKGRlbHRhIC8gUyk7XG4gIGlmIChzZWNvbmRzID4gMCkge1xuICAgIGNvbXBvbmVudHMucHVzaChgJHtzZWNvbmRzfXNgKTtcbiAgICBkZWx0YSAtPSBzZWNvbmRzICogUztcbiAgfVxuICBjb21wb25lbnRzLnB1c2goYCR7ZGVsdGF9bXNgKTtcblxuICAvLyBSZXRhaW4gdGhlIDIgbW9zdCBzaWduaWZpY2FudCBjb21wb25lbnRzXG4gIHJldHVybiBjb21wb25lbnRzLnNsaWNlKDAsIDIpLmpvaW4oJycpO1xufVxuXG5mdW5jdGlvbiBzbHVnaWZ5KHg6IHN0cmluZykge1xuICByZXR1cm4geC5yZXBsYWNlKC9bXmEtekEtWjAtOV8sXSsvZywgJy0nKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXRvbWljV3JpdGUoZmlsZU5hbWU6IHN0cmluZywgY29udGVudHM6IHN0cmluZykge1xuICBhd2FpdCBmcy5wcm9taXNlcy5ta2RpcihwYXRoLmRpcm5hbWUoZmlsZU5hbWUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBjb25zdCB0bXAgPSBgJHtmaWxlTmFtZX0uJHtwcm9jZXNzLnBpZH1gO1xuICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUodG1wLCBjb250ZW50cyk7XG4gIGF3YWl0IGZzLnByb21pc2VzLnJlbmFtZSh0bXAsIGZpbGVOYW1lKTtcbn1cblxuZnVuY3Rpb24gcmVhZFNraXBGaWxlKGZpbGVQYXRoPzogc3RyaW5nKTogc3RyaW5nW10ge1xuICBpZiAoIWZpbGVQYXRoKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KS5zcGxpdCgnXFxuJyk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuIl19
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWctdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImludGVnLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQ0EsOEJBZ0dDO0FBa0JELG9DQUdDO0FBckpELHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsdUNBQXlDO0FBRXpDLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUM7SUFDdEQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztDQUN2RCxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUNqQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFeEMsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQzFCLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RSxDQUFDO0FBRUQsc0ZBQXNGO0FBQ3RGLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQztBQUVuRCxzRUFBc0U7QUFDdEUsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBVW5COztHQUVHO0FBQ0gsU0FBZ0IsU0FBUyxDQUN2QixJQUFZLEVBQ1osUUFBaUQsRUFDakQsYUFBc0I7SUFFdEIsTUFBTSxNQUFN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UUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IE1lbW9yeVN0cmVhbSB9IGZyb20gJy4vY29ya2luZyc7XG5cbmNvbnN0IFNLSVBfVEVTVFMgPSBbXG4gIC4uLnJlYWRTa2lwRmlsZShwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnc2tpcC10ZXN0cy50eHQnKSksXG4gIC4uLnJlYWRTa2lwRmlsZShwcm9jZXNzLmVudi5DREtfSU5URUdfU0tJUF9URVNUU19GSUxFKSxcbiAgLi4uKHByb2Nlc3MuZW52LkNES19JTlRFR19TS0lQX1RFU1RTID8/ICcnKS5zcGxpdCgnLCcpLFxuXS5tYXAoeCA9PiB4LnRyaW0oKSlcbiAgLmZpbHRlcih4ID0+IHggJiYgIXguc3RhcnRzV2l0aCgnIycpKTtcblxuaWYgKFNLSVBfVEVTVFMubGVuZ3RoID4gMCkge1xuICBwcm9jZXNzLnN0ZGVyci53cml0ZShg4oS577iPIFNraXBwaW5nIHRlc3RzOiAke0pTT04uc3RyaW5naWZ5KFNLSVBfVEVTVFMpfVxcbmApO1xufVxuXG4vLyBXaGV0aGVyIHdlIHdhbnQgdG8gc3RvcCBhZnRlciB0aGUgZmlyc3QgZmFpbHVyZSwgZm9yIHF1aWNrZXIgZGVidWdnaW5nIChob3BlZnVsbHkpLlxuY29uc3QgRkFJTF9GQVNUID0gcHJvY2Vzcy5lbnYuRkFJTF9GQVNUID09PSAndHJ1ZSc7XG5cbi8vIEtlZXAgdHJhY2sgb2Ygd2hldGhlciB0aGUgc3VpdGUgaGFzIGZhaWxlZC4gSWYgc28sIHdlIHN0b3AgcnVubmluZy5cbmxldCBmYWlsZWQgPSBmYWxzZTtcblxuZXhwb3J0IGludGVyZmFjZSBUZXN0Q29udGV4dCB7XG4gIHJlYWRvbmx5IHJhbmRvbVN0cmluZzogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dDogTm9kZUpTLldyaXRhYmxlU3RyZWFtO1xuICBsb2coczogc3RyaW5nKTogdm9pZDtcbiAgcmVwb3J0V2FpdFRpbWUobXM6IG51bWJlcik6IHZvaWQ7XG59XG5cbi8qKlxuICogQSB3cmFwcGVyIGZvciBqZXN0J3MgJ3Rlc3QnIHdoaWNoIHRha2VzIHJlZ3Jlc3Npb24tZGlzYWJsZWQgdGVzdHMgaW50byBhY2NvdW50IGFuZCBwcmludHMgYSBiYW5uZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludGVnVGVzdChcbiAgbmFtZTogc3RyaW5nLFxuICBjYWxsYmFjazogKGNvbnRleHQ6IFRlc3RDb250ZXh0KSA9PiBQcm9taXNlPHZvaWQ+LFxuICB0aW1lb3V0TWlsbGlzPzogbnVtYmVyLFxuKTogdm9pZCB7XG4gIGNvbnN0IHJ1bm5lciA9IHNob3VsZFNraXAobmFtZSkgPyB0ZXN0LnNraXAgOiB0ZXN0O1xuXG4gIGplc3QucmV0cnlUaW1lcyhwYXJzZUludChwcm9jZXNzLmVudi5KRVNUX1JFVFJZX1RJTUVTID8/ICcwJykpO1xuXG4gIHJ1bm5lcihuYW1lLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3V0cHV0ID0gbmV3IE1lbW9yeVN0cmVhbSgpO1xuXG4gICAgb3V0cHV0LndyaXRlKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuJyk7XG4gICAgb3V0cHV0LndyaXRlKGAke25hbWV9XFxuYCk7XG4gICAgb3V0cHV0LndyaXRlKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XFxuJyk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IHdhaXRUaW1lID0gMDtcblxuICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGBbSU5URUcgVEVTVDo6JHtuYW1lfV0gU3RhcnRpbmcgKHBpZCAke3Byb2Nlc3MucGlkfSkuLi5cXG5gKTtcbiAgICBtYXliZVByaW50TWVtb3J5VXNhZ2UobmFtZSk7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChGQUlMX0ZBU1QgJiYgZmFpbGVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRkFJTF9GQVNUIHJlcXVlc3RlZCBhbmQgY3VycmVudGx5IGZhaWxpbmcuIFN0b3BwaW5nIHRlc3QgZWFybHkuJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJldCA9IGF3YWl0IGNhbGxiYWNrKHtcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICByYW5kb21TdHJpbmc6IHJhbmRvbVN0cmluZygpLFxuICAgICAgICBuYW1lLFxuICAgICAgICBsb2coczogc3RyaW5nKSB7XG4gICAgICAgICAgb3V0cHV0LndyaXRlKGAke3N9XFxuYCk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlcG9ydFdhaXRUaW1lKG4pIHtcbiAgICAgICAgICB3YWl0VGltZSArPSBuO1xuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHdyaXRlTG9nKG5hbWUsIHtcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgb3V0cHV0OiBvdXRwdXQudG9TdHJpbmcoKSxcbiAgICAgICAgdG90YWxEdXJhdGlvbjogRGF0ZS5ub3coKSAtIHN0YXJ0LFxuICAgICAgICB3YWl0VGltZSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgLy8gUHJpbnQgdGhlIGJ1ZmZlcmVkIG91dHB1dCwgb25seSBpZiB0aGUgdGVzdCBmYWlscy5cbiAgICAgIGZhaWxlZCA9IHRydWU7XG5cbiAgICAgIG91dHB1dC53cml0ZShlLm1lc3NhZ2UpO1xuICAgICAgb3V0cHV0LndyaXRlKGUuc3RhY2spO1xuXG4gICAgICBhd2FpdCB3cml0ZUxvZyhuYW1lLCB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBvdXRwdXQ6IG91dHB1dC50b1N0cmluZygpLFxuICAgICAgICB0b3RhbER1cmF0aW9uOiBEYXRlLm5vdygpIC0gc3RhcnQsXG4gICAgICAgIHdhaXRUaW1lLFxuICAgICAgfSk7XG4gICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShgW0lOVEVHIFRFU1Q6OiR7bmFtZX1dIEZhaWxlZDogJHtlfVxcbmApO1xuXG4gICAgICBjb25zdCBpc0dpdEh1YiA9ICEhcHJvY2Vzcy5lbnYuR0lUSFVCX1JVTl9JRDtcblxuICAgICAgaWYgKGlzR2l0SHViKSB7XG4gICAgICAgIC8vIEdpdEh1YiBBY3Rpb25zIGNvbXBhdGlibGUgb3V0cHV0IGZvcm1hdHRpbmdcbiAgICAgICAgLy8gaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vYWN0aW9ucy93cml0aW5nLXdvcmtmbG93cy9jaG9vc2luZy13aGF0LXlvdXItd29ya2Zsb3ctZG9lcy93b3JrZmxvdy1jb21tYW5kcy1mb3ItZ2l0aHViLWFjdGlvbnMjc2V0dGluZy1hbi1lcnJvci1tZXNzYWdlXG4gICAgICAgIGxldCB3cml0dGVuID0gcHJvY2Vzcy5zdGRlcnIud3JpdGUoYDo6ZXJyb3IgdGl0bGU9RmFpbGVkICR7bmFtZX06OiR7ZS5tZXNzYWdlfVxcbmApO1xuICAgICAgICBpZiAoIXdyaXR0ZW4pIHtcbiAgICAgICAgICAvLyBXYWl0IGZvciBkcmFpblxuICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChvaykgPT4gcHJvY2Vzcy5zdGRlcnIub25jZSgnZHJhaW4nLCBvaykpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJpbnQgb3V0cHV0IG9ubHkgaWYgdGhlIHRlc3QgZmFpbHMuIFVzZSAnY29uc29sZS5sb2cnIHNvIHRoZSBvdXRwdXQgaXMgYnVmZmVyZWQgYnlcbiAgICAgICAgLy8gamVzdCBhbmQgcHJpbnRzIHdpdGhvdXQgYSBzdGFjayB0cmFjZSAoaWYgdmVyYm9zZTogZmFsc2UpLlxuICAgICAgICB3cml0dGVuID0gcHJvY2Vzcy5zdGRvdXQud3JpdGUoW1xuICAgICAgICAgIGA6Omdyb3VwOjpGYWlsdXJlIGRldGFpbHM6ICR7bmFtZX0gKGNsaWNrIHRvIGV4cGFuZClcXG5gLFxuICAgICAgICAgIGAke291dHB1dC5idWZmZXIoKS50b1N0cmluZygpfVxcbmAsXG4gICAgICAgICAgJzo6ZW5kZ3JvdXA6OlxcbicsXG4gICAgICAgIF0uam9pbignJykpO1xuICAgICAgICBpZiAoIXdyaXR0ZW4pIHtcbiAgICAgICAgICAvLyBXYWl0IGZvciBkcmFpblxuICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChvaykgPT4gcHJvY2Vzcy5zdGRvdXQub25jZSgnZHJhaW4nLCBvaykpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBVc2UgJ2NvbnNvbGUubG9nJyBzbyB0aGUgb3V0cHV0IGlzIGJ1ZmZlcmVkIGJ5XG4gICAgICAgIC8vIGplc3QgYW5kIHByaW50cyB3aXRob3V0IGEgc3RhY2sgdHJhY2UgKGlmIHZlcmJvc2U6IGZhbHNlKS5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5sb2cob3V0cHV0LmJ1ZmZlcigpLnRvU3RyaW5nKCkpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnQ7XG4gICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShgW0lOVEVHIFRFU1Q6OiR7bmFtZX1dIERvbmUgKCR7aHVtYW5UaW1lKGR1cmF0aW9uKX0pLlxcbmApO1xuICAgICAgbWF5YmVQcmludE1lbW9yeVVzYWdlKG5hbWUpO1xuICAgIH1cbiAgfSwgdGltZW91dE1pbGxpcyk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFNraXAodGVzdE5hbWU6IHN0cmluZykge1xuICByZXR1cm4gU0tJUF9URVNUUy5pbmNsdWRlcyh0ZXN0TmFtZSk7XG59XG5cbmZ1bmN0aW9uIG1heWJlUHJpbnRNZW1vcnlVc2FnZSh0ZXN0TmFtZTogc3RyaW5nKSB7XG4gIGlmIChwcm9jZXNzLmVudi5JTlRFR19NRU1PUllfREVCVUcgIT09ICd0cnVlJykge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBtZW1vcnlVc2FnZSA9IHByb2Nlc3MubWVtb3J5VXNhZ2UoKSBhcyBhbnk7XG4gIGNvbnN0IHJlcG9ydDogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG1lbW9yeVVzYWdlKSkge1xuICAgIHJlcG9ydFtrZXldID0gYCR7TWF0aC5yb3VuZCh2YWx1ZSBhcyBudW1iZXIgLyAxMDI0IC8gMTAyNCl9IE1CYDtcbiAgfVxuICBwcm9jZXNzLnN0ZGVyci53cml0ZShgW0lOVEVHIFRFU1Q6OiR7dGVzdE5hbWV9XSBNZW1vcnkgVXNhZ2U6ICR7SlNPTi5zdHJpbmdpZnkocmVwb3J0KX1gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbVN0cmluZygpIHtcbiAgLy8gQ3JhenlcbiAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnJlcGxhY2UoL1teYS16MC05XSsvZywgJycpO1xufVxuXG4vKipcbiAqIFdyaXRlIGxvZyBmaWxlc1xuICpcbiAqIFdyaXRlIGEgdGV4dCBsb2cgdG8gYCR7SU5URUdfTE9HU30vW0ZBSUxFRC1dZGVzY3JpcHRpb24tb2YtdGVzdC50eHRgLCBhbmQgYSBzaW5nbGVcbiAqIGxpbmUgb2YgYSBNYXJrZG93biB0YWJsZSB0byBgJHtJTlRFR19MT0dTfS9tZC8xLWRlc2NyaXB0aW9uLW9mLXRlc3QubWRgLlxuICpcbiAqIFRoZSBsYXR0ZXIgYXJlIGRlc2lnbmVkIHRvIGJlIGdsb2JjYXR0ZWQgdG8gJEdJVEhVQl9TVEVQX1NVTU1BUlkgYWZ0ZXIgdGVzdHNcbiAqICh3ZSBkb24ndCB3cml0ZSB0aGVyZSBkaXJlY3RseSB0byBhdm9pZCBjb25jdXJyZW5jeSBpc3N1ZXMgd2l0aCBtdWx0aXBsZSBwcm9jZXNzZXNcbiAqIHJlYWRpbmcgYW5kIG11dGF0aW5nIHRoZSBzYW1lIGZpbGUpLlxuICpcbiAqIFdlIGRvIHVzZSBgYXRvbWljV3JpdGVgIHRvIHdyaXRlIGZpbGVzIC0tIGl0J3Mgb25seSBuZWNlc3NhcnkgZm9yIHRoZSBoZWFkZXIgZmlsZSxcbiAqIHdoaWNoIGdldHMgb3ZlcndyaXR0ZW4gYnkgZXZlcnkgdGVzdCwganVzdCB0byBtYWtlIHN1cmUgaXQgcHJvcGVybHkgZXhpc3RzIChzaG91bGRuJ3RcbiAqIGVuZCB1cCBlbXB0eSBvciB3aXRoIGludGVybGVhdmVkIGNvbnRlbnRzKS4gVGhlIG90aGVyIHdyaXRlcyBhcmUgbm90XG4gKiBjb250ZW5kZWQgYW5kIGRvbid0IG5lZWQgdG8gYmUgYXRvbWljLCBidXQgdGhlIGZ1bmN0aW9uIGlzIGp1c3QgZXJnb25vbWljIHRvIHVzZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gd3JpdGVMb2codGVzdE5hbWU6IHN0cmluZywgcmVzdWx0OiB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIG91dHB1dDogc3RyaW5nO1xuICB0b3RhbER1cmF0aW9uOiBudW1iZXI7XG4gIHdhaXRUaW1lOiBudW1iZXI7XG59KSB7XG4gIGlmIChwcm9jZXNzLmVudi5JTlRFR19MT0dTKSB7XG4gICAgLy8gV3JpdGUgdGhlIGxvZyBmaWxlXG4gICAgY29uc3Qgc2x1ZyA9IHNsdWdpZnkodGVzdE5hbWUpO1xuICAgIGNvbnN0IGxvZ0ZpbGVOYW1lID0gYCR7cHJvY2Vzcy5lbnYuSU5URUdfTE9HU30vJHtyZXN1bHQuc3VjY2VzcyA/ICcnIDogJ0ZBSUxFRC0nfSR7c2x1Z30udHh0YDtcbiAgICBhd2FpdCBhdG9taWNXcml0ZShsb2dGaWxlTmFtZSwgcmVzdWx0Lm91dHB1dCk7XG5cbiAgICAvLyBXcml0ZSBhIHJvdyBmb3IgdGhlIG1hcmtkb3duIHRhYmxlXG4gICAgLy8gU29ydCBmYWlsdXJlcyBiZWZvcmUgc3VjY2Vzc2VzLCBhbmQgdGhlIHRhYmxlIGhlYWRlciBiZWZvcmUgYWxsXG4gICAgY29uc3QgbWRGaWxlTmFtZSA9IGAke3Byb2Nlc3MuZW52LklOVEVHX0xPR1N9L21kLyR7cmVzdWx0LnN1Y2Nlc3MgPyAnMicgOiAnMSd9LSR7c2x1Z30ubWRgO1xuICAgIGNvbnN0IGNvbHVtbnM6IEFycmF5PFtzdHJpbmcsIHN0cmluZ10+ID0gW1xuICAgICAgWydSZXN1bHQnLCByZXN1bHQuc3VjY2VzcyA/ICdwYXNzIOKchScgOiAnZmFpbCDinYwnXSxcbiAgICAgIFsnVGVzdCBOYW1lJywgdGVzdE5hbWVdLFxuICAgICAgWydUZXN0IER1cmF0aW9uJywgaHVtYW5UaW1lKHJlc3VsdC50b3RhbER1cmF0aW9uIC0gcmVzdWx0LndhaXRUaW1lKV0sXG4gICAgICBbJ1dhaXQgVGltZScsIHJlc3VsdC53YWl0VGltZSA+IDAgPyBodW1hblRpbWUocmVzdWx0LndhaXRUaW1lKSA6ICctJ10sXG4gICAgXTtcbiAgICBhd2FpdCBhdG9taWNXcml0ZShgJHtwcm9jZXNzLmVudi5JTlRFR19MT0dTfS9tZC8wLWhlYWRlci5tZGAsIFtcbiAgICAgIGB8ICR7Y29sdW1ucy5tYXAoKFtjb2wsIF92YWxdKSA9PiBjb2wpLmpvaW4oJyB8ICcpfSB8YCxcbiAgICAgIGB8ICR7Y29sdW1ucy5tYXAoKCkgPT4gJy0tLS0tLS0tLS0tJykuam9pbignIHwgJyl9IHxgLFxuICAgIF0ubWFwKHggPT4gYCR7eH1cXG5gKS5qb2luKCcnKSk7XG4gICAgYXdhaXQgYXRvbWljV3JpdGUobWRGaWxlTmFtZSxcbiAgICAgIGB8ICR7Y29sdW1ucy5tYXAoKFtfY29sLCB2YWxdKSA9PiB2YWwpLmpvaW4oJyB8ICcpfSB8XFxuYCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaHVtYW5UaW1lKGRlbHRhOiBudW1iZXIpIHtcbiAgY29uc3QgY29tcG9uZW50cyA9IFtdO1xuXG4gIGNvbnN0IFMgPSAxMDAwO1xuICBjb25zdCBNID0gNjAgKiBTO1xuICBjb25zdCBIID0gNjAgKiBNO1xuXG4gIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcihkZWx0YSAvIEgpO1xuICBpZiAoaG91cnMgPiAwKSB7XG4gICAgY29tcG9uZW50cy5wdXNoKGAke2hvdXJzfWhgKTtcbiAgICBkZWx0YSAtPSBob3VycyAqIEg7XG4gIH1cbiAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoZGVsdGEgLyBNKTtcbiAgaWYgKG1pbnV0ZXMgPiAwKSB7XG4gICAgY29tcG9uZW50cy5wdXNoKGAke21pbnV0ZXN9bWApO1xuICAgIGRlbHRhIC09IG1pbnV0ZXMgKiBNO1xuICB9XG4gIGNvbnN0IHNlY29uZHMgPSBNYXRoLmZsb29yKGRlbHRhIC8gUyk7XG4gIGlmIChzZWNvbmRzID4gMCkge1xuICAgIGNvbXBvbmVudHMucHVzaChgJHtzZWNvbmRzfXNgKTtcbiAgICBkZWx0YSAtPSBzZWNvbmRzICogUztcbiAgfVxuICBjb21wb25lbnRzLnB1c2goYCR7ZGVsdGF9bXNgKTtcblxuICAvLyBSZXRhaW4gdGhlIDIgbW9zdCBzaWduaWZpY2FudCBjb21wb25lbnRzXG4gIHJldHVybiBjb21wb25lbnRzLnNsaWNlKDAsIDIpLmpvaW4oJycpO1xufVxuXG5mdW5jdGlvbiBzbHVnaWZ5KHg6IHN0cmluZykge1xuICByZXR1cm4geC5yZXBsYWNlKC9bXmEtekEtWjAtOV8sXSsvZywgJy0nKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXRvbWljV3JpdGUoZmlsZU5hbWU6IHN0cmluZywgY29udGVudHM6IHN0cmluZykge1xuICBhd2FpdCBmcy5wcm9taXNlcy5ta2RpcihwYXRoLmRpcm5hbWUoZmlsZU5hbWUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBjb25zdCB0bXAgPSBgJHtmaWxlTmFtZX0uJHtwcm9jZXNzLnBpZH1gO1xuICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUodG1wLCBjb250ZW50cyk7XG4gIGF3YWl0IGZzLnByb21pc2VzLnJlbmFtZSh0bXAsIGZpbGVOYW1lKTtcbn1cblxuZnVuY3Rpb24gcmVhZFNraXBGaWxlKGZpbGVQYXRoPzogc3RyaW5nKTogc3RyaW5nW10ge1xuICBpZiAoIWZpbGVQYXRoKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KS5zcGxpdCgnXFxuJyk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuIl19
|