@pipeline-builder/pipeline-manager 4.1.8 → 4.1.10
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/dist/boilerplate.js +3 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +5 -4
- package/dist/commands/audit-tokens.js +3 -3
- package/dist/commands/create-pipeline.d.ts.map +1 -1
- package/dist/commands/create-pipeline.js +4 -3
- package/dist/commands/instantiate-template.d.ts.map +1 -1
- package/dist/commands/instantiate-template.js +3 -2
- package/dist/commands/provision.d.ts +2 -4
- package/dist/commands/provision.d.ts.map +1 -1
- package/dist/commands/provision.js +3 -14
- package/dist/commands/register.d.ts.map +1 -1
- package/dist/commands/register.js +3 -2
- package/dist/commands/store-token.d.ts.map +1 -1
- package/dist/commands/store-token.js +3 -4
- package/dist/commands/upload-plugin.d.ts.map +1 -1
- package/dist/commands/upload-plugin.js +3 -2
- package/dist/commands/version.d.ts.map +1 -1
- package/dist/commands/version.js +3 -2
- package/dist/lambda/token-renew-handler.d.ts.map +1 -1
- package/dist/lambda/token-renew-handler.js +9 -7
- package/dist/templates/token-renew-stack.json +0 -5
- package/dist/utils/audit-log.d.ts.map +1 -1
- package/dist/utils/audit-log.js +3 -2
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +3 -2
- package/dist/utils/credential-store.d.ts.map +1 -1
- package/dist/utils/credential-store.js +3 -2
- package/dist/utils/deploy-runner.d.ts.map +1 -1
- package/dist/utils/deploy-runner.js +6 -5
- package/dist/utils/output-utils.d.ts.map +1 -1
- package/dist/utils/output-utils.js +4 -3
- package/dist/utils/plugin-resolver.d.ts.map +1 -1
- package/dist/utils/plugin-resolver.js +3 -2
- package/dist/utils/service-account.d.ts +0 -24
- package/dist/utils/service-account.d.ts.map +1 -1
- package/dist/utils/service-account.js +27 -2
- package/package.json +16 -4
package/dist/boilerplate.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
// Copyright 2026 Pipeline Builder Contributors
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import { errorMessage } from '@pipeline-builder/api-core';
|
|
4
5
|
import { PipelineBuilder } from '@pipeline-builder/pipeline-core/cdk';
|
|
5
6
|
import { App, Stack } from 'aws-cdk-lib';
|
|
6
7
|
import pico from 'picocolors';
|
|
@@ -45,10 +46,10 @@ try {
|
|
|
45
46
|
main();
|
|
46
47
|
}
|
|
47
48
|
catch (error) {
|
|
48
|
-
console.error(bold(red('[BUILD FAILED]')),
|
|
49
|
+
console.error(bold(red('[BUILD FAILED]')), errorMessage(error));
|
|
49
50
|
if (error instanceof Error && error.stack) {
|
|
50
51
|
console.error(dim(error.stack));
|
|
51
52
|
}
|
|
52
53
|
process.exit(1);
|
|
53
54
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9pbGVycGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYm9pbGVycGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQXFCLE1BQU0scUNBQXFDLENBQUM7QUFDekYsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWhFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUV0RCxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBRXRCOzs7R0FHRztBQUNILFNBQVMsS0FBSztJQUNaLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDO0lBRWhELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUNiLGtEQUFrRDtZQUNsRCw0R0FBNEcsQ0FDN0csQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBaUIsQ0FBQztJQUM3QyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQ2IsbUNBQW1DLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixFQUFFLENBQzNHLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsSUFBSTtJQUNYLE1BQU0sV0FBVyxHQUFHLG1CQUFtQixFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFeEQsT0FBTyxDQUFDLEdBQUcsQ0FDVCxHQUFHLE9BQU8sQ0FBQyxZQUFZLFdBQVcsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FDOUUsQ0FBQztJQUVGLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxDQUFDO0lBRXRCLE1BQU0sU0FBUyxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekUsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQUM7SUFFdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRTtRQUNyQyxTQUFTO1FBQ1QsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtRQUNoQyxXQUFXO0tBQ1osQ0FBQyxDQUFDO0lBRUgsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QyxJQUFJLGVBQWUsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRS9DLE9BQU8sQ0FBQyxHQUFHLENBQ1QsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUN0QixLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FDakQsQ0FBQztBQUNKLENBQUM7QUFFRCxJQUFJLENBQUM7SUFDSCxJQUFJLEVBQUUsQ0FBQztBQUNULENBQUM7QUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO0lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FDWCxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFDM0IsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUNwQixDQUFDO0lBRUYsSUFBSSxLQUFLLFlBQVksS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGVycm9yTWVzc2FnZSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IFBpcGVsaW5lQnVpbGRlciwgdHlwZSBCdWlsZGVyUHJvcHMgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1jb3JlL2Nkayc7XG5pbXBvcnQgeyBBcHAsIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBnZW5lcmF0ZUV4ZWN1dGlvbklkIH0gZnJvbSAnLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5cbmNvbnN0IHsgY3lhbiwgZ3JlZW4sIGRpbSwgYm9sZCwgbWFnZW50YSwgcmVkIH0gPSBwaWNvO1xuXG5jb25zdCBhcHAgPSBuZXcgQXBwKCk7XG5cbi8qKlxuICogUGFyc2UgUElQRUxJTkVfUFJPUFMgZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZSAoYmFzZTY0LWVuY29kZWQgSlNPTikuXG4gKiBUaGlzIGlzIGFsd2F5cyBzZXQgYnkgdGhlIGBzeW50aGAgb3IgYGRlcGxveWAgY29tbWFuZCBiZWZvcmUgaW52b2tpbmcgYm9pbGVycGxhdGUuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlKCk6IEJ1aWxkZXJQcm9wcyB7XG4gIGNvbnN0IGVuY29kZWRQcm9wcyA9IHByb2Nlc3MuZW52LlBJUEVMSU5FX1BST1BTO1xuXG4gIGlmICghZW5jb2RlZFByb3BzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1BJUEVMSU5FX1BST1BTIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG1pc3NpbmcuICcgK1xuICAgICAgJ1VzZSBcInBpcGVsaW5lLW1hbmFnZXIgcGlwZWxpbmUgc3ludGggLS1pZCA8aWQ+XCIgb3IgXCJwaXBlbGluZS1tYW5hZ2VyIHBpcGVsaW5lIGRlcGxveSAtLWlkIDxpZD5cIiB0byBzZXQgaXQuJyxcbiAgICApO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBkZWNvZGVkID0gQnVmZmVyLmZyb20oZW5jb2RlZFByb3BzLCAnYmFzZTY0JykudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoZGVjb2RlZCkgYXMgQnVpbGRlclByb3BzO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBGYWlsZWQgdG8gcGFyc2UgUElQRUxJTkVfUFJPUFM6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnSW52YWxpZCBCYXNlNjQvSlNPTiBmb3JtYXQnfWAsXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtYWluKCk6IHZvaWQge1xuICBjb25zdCBleGVjdXRpb25JZCA9IGdlbmVyYXRlRXhlY3V0aW9uSWQoKS50b1VwcGVyQ2FzZSgpO1xuXG4gIGNvbnNvbGUubG9nKFxuICAgIGAke21hZ2VudGEoYFtDREstQVBQLSR7ZXhlY3V0aW9uSWR9XWApfSAke2N5YW4oJ1BpcGVsaW5lIGJ1aWxkZXIgc3RhcnRpbmcnKX1gLFxuICApO1xuXG4gIGNvbnN0IHByb3BzID0gcGFyc2UoKTtcblxuICBjb25zdCBzdGFja05hbWUgPSBgJHtwcm9wcy5wcm9qZWN0fS0ke3Byb3BzLm9yZ2FuaXphdGlvbn1gLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IGNvbXBvbmVudElkID0gJ3BpcGVsaW5lLWJ1aWxkZXInO1xuXG4gIGNvbnNvbGUubG9nKCdQaXBlbGluZSBjb25maWd1cmF0aW9uOicsIHtcbiAgICBzdGFja05hbWUsXG4gICAgcHJvamVjdDogcHJvcHMucHJvamVjdCxcbiAgICBvcmdhbml6YXRpb246IHByb3BzLm9yZ2FuaXphdGlvbixcbiAgICBjb21wb25lbnRJZCxcbiAgfSk7XG5cbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCBzdGFja05hbWUsIHt9KTtcbiAgbmV3IFBpcGVsaW5lQnVpbGRlcihzdGFjaywgY29tcG9uZW50SWQsIHByb3BzKTtcblxuICBjb25zb2xlLmxvZyhcbiAgICBncmVlbihib2xkKCdTdWNjZXNzJykpLFxuICAgIGdyZWVuKCdDREsgY29uc3RydWN0cyBzeW50aGVzaXplZCBzdWNjZXNzZnVsbHknKSxcbiAgKTtcbn1cblxudHJ5IHtcbiAgbWFpbigpO1xufSBjYXRjaCAoZXJyb3IpIHtcbiAgY29uc29sZS5lcnJvcihcbiAgICBib2xkKHJlZCgnW0JVSUxEIEZBSUxFRF0nKSksXG4gICAgZXJyb3JNZXNzYWdlKGVycm9yKSxcbiAgKTtcblxuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiBlcnJvci5zdGFjaykge1xuICAgIGNvbnNvbGUuZXJyb3IoZGltKGVycm9yLnN0YWNrKSk7XG4gIH1cblxuICBwcm9jZXNzLmV4aXQoMSk7XG59XG4iXX0=
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAgDA;;GAEG;AACH,UAAU,UAAU;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAoTD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,UAAe,GAAG,IAAI,CAyD5D;AAiDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAAC,OAAO,GAAE,UAAe,GAAG,IAAI,CA0BnD"}
|
package/dist/cli.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
import { realpathSync } from 'node:fs';
|
|
5
5
|
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { errorMessage } from '@pipeline-builder/api-core';
|
|
6
7
|
import { program } from 'commander';
|
|
7
8
|
import { auditStacks } from './commands/audit-stacks.js';
|
|
8
9
|
import { auditTokens } from './commands/audit-tokens.js';
|
|
@@ -290,7 +291,7 @@ function setupErrorHandlers() {
|
|
|
290
291
|
process.on('unhandledRejection', (reason) => {
|
|
291
292
|
console.error(''); // Empty line
|
|
292
293
|
printError('Unhandled promise rejection', {
|
|
293
|
-
reason:
|
|
294
|
+
reason: errorMessage(reason),
|
|
294
295
|
});
|
|
295
296
|
const error = reason instanceof Error ? reason : new Error(String(reason));
|
|
296
297
|
handleError(error, ERROR_CODES.GENERAL, {
|
|
@@ -356,7 +357,7 @@ export function initializeCli(options = {}) {
|
|
|
356
357
|
}
|
|
357
358
|
catch (error) {
|
|
358
359
|
printError('CLI initialization failed', {
|
|
359
|
-
error:
|
|
360
|
+
error: errorMessage(error),
|
|
360
361
|
});
|
|
361
362
|
handleError(error, ERROR_CODES.CONFIGURATION, {
|
|
362
363
|
debug: debug || isDebugMode(),
|
|
@@ -440,7 +441,7 @@ export function main(options = {}) {
|
|
|
440
441
|
// Final catch-all error handler
|
|
441
442
|
console.error(''); // Empty line
|
|
442
443
|
printError('Fatal CLI error', {
|
|
443
|
-
error:
|
|
444
|
+
error: errorMessage(error),
|
|
444
445
|
});
|
|
445
446
|
handleError(error, ERROR_CODES.GENERAL, {
|
|
446
447
|
debug: isDebugMode(options),
|
|
@@ -470,4 +471,4 @@ if (isMainModule) {
|
|
|
470
471
|
};
|
|
471
472
|
main(options);
|
|
472
473
|
}
|
|
473
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9B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SSxFQUFFLElBQUk7WUFDVixPQUFPLEVBQUU7Z0JBQ1AsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsT0FBTzthQUNSO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QyxNQUFNLFlBQVksR0FBRyxhQUFhLEtBQUssU0FBUztPQUMzQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssWUFBWSxDQUFDLGFBQWEsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLElBQUksWUFBWSxFQUFFLENBQUM7SUFDakIscURBQXFEO0lBQ3JELE1BQU0sT0FBTyxHQUFlO1FBQzFCLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxNQUFNO1FBQ25DLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDdkMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUMzQyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssR0FBRztLQUM3RSxDQUFDO0lBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG4vLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgcmVhbHBhdGhTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHsgcHJvZ3JhbSB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgeyBhdWRpdFN0YWNrcyB9IGZyb20gJy4vY29tbWFuZHMvYXVkaXQtc3RhY2tzLmpzJztcbmltcG9ydCB7IGF1ZGl0VG9rZW5zIH0gZnJvbSAnLi9jb21tYW5kcy9hdWRpdC10b2tlbnMuanMnO1xuaW1wb3J0IHsgYm9vdHN0cmFwIH0gZnJvbSAnLi9jb21tYW5kcy9ib290c3RyYXAuanMnO1xuaW1wb3J0IHsgY3JlYXRlUGF0IH0gZnJvbSAnLi9jb21tYW5kcy9jcmVhdGUtcGF0LmpzJztcbmltcG9ydCB7IGNyZWF0ZVBpcGVsaW5lIH0gZnJvbSAnLi9jb21tYW5kcy9jcmVhdGUtcGlwZWxpbmUuanMnO1xuaW1wb3J0IHsgZGVwbG95IH0gZnJvbSAnLi9jb21tYW5kcy9kZXBsb3kuanMnO1xuaW1wb3J0IHsgZ2V0UGlwZWxpbmUgfSBmcm9tICcuL2NvbW1hbmRzL2dldC1waXBlbGluZS5qcyc7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tICcuL2NvbW1hbmRzL2dldC1wbHVnaW4uanMnO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVUZW1wbGF0ZSB9IGZyb20gJy4vY29tbWFuZHMvaW5zdGFudGlhdGUtdGVtcGxhdGUuanMnO1xuaW1wb3J0IHsgbGlzdFBpcGVsaW5lcyB9IGZyb20gJy4vY29tbWFuZHMvbGlzdC1waXBlbGluZXMuanMnO1xuaW1wb3J0IHsgbGlzdFBsdWdpbnMgfSBmcm9tICcuL2NvbW1hbmRzL2xpc3QtcGx1Z2lucy5qcyc7XG5pbXBvcnQgeyBsb2dpbiB9IGZyb20gJy4vY29tbWFuZHMvbG9naW4uanMnO1xuaW1wb3J0IHsgbmV3UGx1Z2luIH0gZnJvbSAnLi9jb21tYW5kcy9uZXctcGx1Z2luLmpzJztcbmltcG9ydCB7IG9yZ0V4cG9ydCB9IGZyb20gJy4vY29tbWFuZHMvb3JnLWV4cG9ydC5qcyc7XG5pbXBvcnQgeyBwcm92aXNpb24gfSBmcm9tICcuL2NvbW1hbmRzL3Byb3Zpc2lvbi5qcyc7XG5pbXBvcnQgeyByZWRyaXZlRXZlbnRzIH0gZnJvbSAnLi9jb21tYW5kcy9yZWRyaXZlLWV2ZW50cy5qcyc7XG5pbXBvcnQgeyByZWdpc3RlciB9IGZyb20gJy4vY29tbWFuZHMvcmVnaXN0ZXIuanMnO1xuaW1wb3J0IHsgc2V0dXBFdmVudHMgfSBmcm9tICcuL2NvbW1hbmRzL3NldHVwLWV2ZW50cy5qcyc7XG5pbXBvcnQgeyBzdGF0dXMgfSBmcm9tICcuL2NvbW1hbmRzL3N0YXR1cy5qcyc7XG5pbXBvcnQgeyBzdG9yZVRva2VuIH0gZnJvbSAnLi9jb21tYW5kcy9zdG9yZS10b2tlbi5qcyc7XG5pbXBvcnQgeyBzeW50aCB9IGZyb20gJy4vY29tbWFuZHMvc3ludGguanMnO1xuaW1wb3J0IHsgdXBsb2FkUGx1Z2luIH0gZnJvbSAnLi9jb21tYW5kcy91cGxvYWQtcGx1Z2luLmpzJztcbmltcG9ydCB7IHZhbGlkYXRlUGx1Z2luIH0gZnJvbSAnLi9jb21tYW5kcy92YWxpZGF0ZS1wbHVnaW4uanMnO1xuaW1wb3J0IHsgdmFsaWRhdGVUZW1wbGF0ZXNDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy92YWxpZGF0ZS10ZW1wbGF0ZXMuanMnO1xuaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gJy4vY29tbWFuZHMvdmVyc2lvbi5qcyc7XG5pbXBvcnQge1xuICBBUFBfTkFNRSxcbiAgQVBQX0RFU0NSSVBUSU9OLFxuICBBUFBfVkVSU0lPTixcbiAgRU5WX1ZBUlMsXG4gIGlzRGVidWdNb2RlLFxuICBnZW5lcmF0ZUV4ZWN1dGlvbklkLFxufSBmcm9tICcuL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IGJhbm5lciwgbWluaUJhbm5lciB9IGZyb20gJy4vdXRpbHMvYmFubmVyLmpzJztcbmltcG9ydCB7IGdldEFwaUNvbmZpZyB9IGZyb20gJy4vdXRpbHMvY29uZmlnLWxvYWRlci5qcyc7XG5pbXBvcnQgeyBsb2FkU2Vzc2lvbiB9IGZyb20gJy4vdXRpbHMvY3JlZGVudGlhbC1zdG9yZS5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IgfSBmcm9tICcuL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgcHJpbnRJbmZvLCBwcmludEVycm9yLCBwcmludFdhcm5pbmcsIHByaW50RGVidWcsIHByaW50U2VjdGlvbiB9IGZyb20gJy4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IHByZWZsaWdodENvbW1hbmRUb29scyB9IGZyb20gJy4vdXRpbHMvcHJlZmxpZ2h0LmpzJztcblxuLyoqXG4gKiBDTEkgaW5pdGlhbGl6YXRpb24gb3B0aW9uc1xuICovXG5pbnRlcmZhY2UgQ2xpT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTaG93IGJhbm5lciBvbiBzdGFydHVwXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHNob3dCYW5uZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNaW5pbWFsIGJhbm5lciAobm8gQVNDSUkgYXJ0KVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbWluaW1hbEJhbm5lcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERlYnVnIG1vZGVcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRlYnVnPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVmVyYm9zZSBvdXRwdXRcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHZlcmJvc2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBRdWlldCBtb2RlIChtaW5pbWFsIG91dHB1dClcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHF1aWV0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTm8gY29sb3Igb3V0cHV0XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBub0NvbG9yPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDaGVjayBlbnZpcm9ubWVudCBhbmQgZGlzcGxheSB3YXJuaW5nc1xuICovXG5mdW5jdGlvbiBjaGVja0Vudmlyb25tZW50KCk6IHZvaWQge1xuICBjb25zdCB3YXJuaW5nczogc3RyaW5nW10gPSBbXTtcblxuICAvLyBOb3Qgc2lnbmVkIGluIEFUIEFMTDogbmVpdGhlciBhbiBleHBsaWNpdCB0b2tlbiBub3IgYSBzdG9yZWQgYnJvd3NlclxuICAvLyBzaWduLWluLiBFaXRoZXIgYWxvbmUgaXMgZW5vdWdoLCBzbyB0aGUgd2FybmluZyBvbmx5IGZpcmVzIHdoZW4gYm90aCBhcmVcbiAgLy8gbWlzc2luZyDigJQgb3RoZXJ3aXNlIGBhdXRoIGxvZ2luYCB1c2VycyB3b3VsZCBiZSBuYWdnZWQgb24gZXZlcnkgY29tbWFuZC5cbiAgaWYgKCFwcm9jZXNzLmVudltFTlZfVkFSUy5QTEFURk9STV9UT0tFTl0gJiYgIWxvYWRTZXNzaW9uKGdldEFwaUNvbmZpZygpLmFwaS5iYXNlVXJsKSkge1xuICAgIHdhcm5pbmdzLnB1c2goJ05vdCBzaWduZWQgaW4gKG5vIFBMQVRGT1JNX1RPS0VOLCBubyBzdG9yZWQgc2Vzc2lvbiknKTtcbiAgICB3YXJuaW5ncy5wdXNoKCdSdW4gXCJwaXBlbGluZS1tYW5hZ2VyIGF1dGggbG9naW5cIiDigJQgQVBJIG9wZXJhdGlvbnMgd2lsbCBmYWlsIHVudGlsIHlvdSBkbycpO1xuICB9XG5cbiAgLy8gQ2hlY2sgTm9kZSB2ZXJzaW9uXG4gIGNvbnN0IG5vZGVWZXJzaW9uID0gcHJvY2Vzcy52ZXJzaW9uO1xuICBjb25zdCBtYWpvclZlcnNpb24gPSBwYXJzZUludChub2RlVmVyc2lvbi5zbGljZSgxKS5zcGxpdCgnLicpWzBdIHx8ICcwJywgMTApO1xuICBpZiAobWFqb3JWZXJzaW9uIDwgMjQpIHtcbiAgICB3YXJuaW5ncy5wdXNoKGBOb2RlLmpzICR7bm9kZVZlcnNpb259IGRldGVjdGVkIC0gdmVyc2lvbiAyNCsgcmVxdWlyZWQgKHNlZSBwYWNrYWdlLmpzb24gZW5naW5lcylgKTtcbiAgfVxuXG4gIC8vIERpc3BsYXkgd2FybmluZ3NcbiAgaWYgKHdhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICBwcmludFNlY3Rpb24oJ0Vudmlyb25tZW50IFdhcm5pbmdzJyk7XG4gICAgd2FybmluZ3MuZm9yRWFjaCh3YXJuaW5nID0+IHtcbiAgICAgIHByaW50V2FybmluZyh3YXJuaW5nKTtcbiAgICB9KTtcbiAgICBjb25zb2xlLmxvZygnJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBEaXNwbGF5IHN0YXJ0dXAgaW5mb3JtYXRpb25cbiAqL1xuZnVuY3Rpb24gZGlzcGxheVN0YXJ0dXBJbmZvKG9wdGlvbnM6IENsaU9wdGlvbnMpOiB2b2lkIHtcbiAgaWYgKG9wdGlvbnMucXVpZXQpIHJldHVybjtcblxuICBjb25zdCBleGVjdXRpb25JZCA9IGdlbmVyYXRlRXhlY3V0aW9uSWQoKTtcblxuICBpZiAob3B0aW9ucy5kZWJ1ZyB8fCBvcHRpb25zLnZlcmJvc2UpIHtcbiAgICBwcmludERlYnVnKCdDTEkgQ29uZmlndXJhdGlvbicsIHtcbiAgICAgIG5hbWU6IEFQUF9OQU1FLFxuICAgICAgdmVyc2lvbjogQVBQX1ZFUlNJT04sXG4gICAgICBleGVjdXRpb25JZCxcbiAgICAgIG5vZGU6IHByb2Nlc3MudmVyc2lvbixcbiAgICAgIHBsYXRmb3JtOiBwcm9jZXNzLnBsYXRmb3JtLFxuICAgICAgYXJjaDogcHJvY2Vzcy5hcmNoLFxuICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgZW52OiB7XG4gICAgICAgIGRlYnVnOiBwcm9jZXNzLmVudi5ERUJVRyxcbiAgICAgICAgdG9rZW46IHByb2Nlc3MuZW52W0VOVl9WQVJTLlBMQVRGT1JNX1RPS0VOXSA/ICdzZXQnOiAnbm90IHNldCcsXG4gICAgICAgIHVybDogcHJvY2Vzcy5lbnZbRU5WX1ZBUlMuUExBVEZPUk1fQkFTRV9VUkxdIHx8ICdkZWZhdWx0JyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcHJpbnREZWJ1ZygnU3RhcnRpbmcgQ0xJJywge1xuICAgICAgdmVyc2lvbjogQVBQX1ZFUlNJT04sXG4gICAgICBleGVjdXRpb25JZCxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVyIGFsbCBDTEkgY29tbWFuZHNcbiAqL1xuZnVuY3Rpb24gcmVnaXN0ZXJDb21tYW5kcygpOiB2b2lkIHtcbiAgcHJpbnREZWJ1ZygnUmVnaXN0ZXJpbmcgY29tbWFuZHMnKTtcblxuICAvLyBDb25maWd1cmUgcHJvZ3JhbVxuICBwcm9ncmFtXG4gICAgLm5hbWUoQVBQX05BTUUpXG4gICAgLmRlc2NyaXB0aW9uKEFQUF9ERVNDUklQVElPTilcbiAgICAudmVyc2lvbihBUFBfVkVSU0lPTiwgJy12LCAtLXZlcnNpb24nLCAnU2hvdyBDTEkgdmVyc2lvbicpXG4gICAgLm9wdGlvbignLS1kZWJ1ZycsICdFbmFibGUgZGVidWcgb3V0cHV0IHdpdGggc3RhY2sgdHJhY2VzJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS12ZXJib3NlJywgJ1Nob3cgZGV0YWlsZWQgaW5mb3JtYXRpb24nLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLXF1aWV0JywgJ01pbmltYWwgb3V0cHV0IChlcnJvcnMgb25seSknLCBmYWxzZSlcbiAgICAub3B0aW9uKCctLW5vLWNvbG9yJywgJ0Rpc2FibGUgY29sb3JlZCBvdXRwdXQnLCBmYWxzZSlcbiAgICAuYWRkSGVscFRleHQoJ2FmdGVyJywgYFxuQ29tbWFuZCBncm91cHM6XG4gIGF1dGggICAgICBBdXRoZW50aWNhdGUgYW5kIG1hbmFnZSBjcmVkZW50aWFscyAobG9naW4sIHBhdClcbiAgcGlwZWxpbmUgIENyZWF0ZSwgaW5zcGVjdCwgYW5kIGRlcGxveSBwaXBlbGluZXMgKGNyZWF0ZSwgbGlzdCwgZ2V0LCByZWdpc3Rlciwgc3ludGgsIGRlcGxveSlcbiAgcGx1Z2luICAgIEF1dGhvciwgdmFsaWRhdGUsIGFuZCBwdWJsaXNoIHBsdWdpbnMgKG5ldywgdmFsaWRhdGUsIHVwbG9hZCwgZ2V0LCBsaXN0KVxuICB0ZW1wbGF0ZSAgSW5zdGFudGlhdGUgZ29sZGVuLXBhdGggcGlwZWxpbmUgdGVtcGxhdGVzIGFuZCB2YWxpZGF0ZSB7eyAuLi4gfX0gc3ludGF4IChpbnN0YW50aWF0ZSwgdmFsaWRhdGUpXG4gIGluZnJhICAgICBTZXQgdXAgYW5kIG9wZXJhdGUgcGxhdGZvcm0gaW5mcmFzdHJ1Y3R1cmUgKGJvb3RzdHJhcCwgc2V0dXAtZXZlbnRzLCByZWRyaXZlLWV2ZW50cywgc3RvcmUtdG9rZW4sIHByb3Zpc2lvbilcbiAgYXVkaXQgICAgIE9wZXJhdG9yIGF1ZGl0cywgY3Jvbi1mcmllbmRseSAodG9rZW5zLCBzdGFja3MpXG4gIG9yZyAgICAgICBPcmdhbml6YXRpb24gZGF0YSBvcGVyYXRpb25zIChleHBvcnQpXG4gIHN0YXR1cyAvIHZlcnNpb24gLyBjb21wbGV0aW9uc1xuXG5BdXRoZW50aWNhdGlvbjpcbiAgUnVuICcke0FQUF9OQU1FfSBhdXRoIGxvZ2luJyBvbmNlIHBlciBwbGF0Zm9ybSDigJQgaXQgc2lnbnMgeW91IGluIHRocm91Z2ggeW91clxuICBicm93c2VyIChubyBwYXNzd29yZCBvbiB0aGUgY29tbWFuZCBsaW5lKSBhbmQgc3RvcmVzIHRoZSBzZXNzaW9uIHVuZGVyXG4gIH4vLnBpcGVsaW5lLW1hbmFnZXIvY3JlZGVudGlhbHMuanNvbi4gRm9yIENJLCBjcmVhdGUgYW4gYWNjZXNzIGtleSB3aXRoXG4gICcke0FQUF9OQU1FfSBhdXRoIHBhdCcgYW5kIGV4cG9ydCBpdCBhcyAke0VOVl9WQVJTLlBMQVRGT1JNX1RPS0VOfSwgd2hpY2ggYWx3YXlzIHdpbnMuXG5cbkVudmlyb25tZW50IFZhcmlhYmxlczpcbiAgJHtFTlZfVkFSUy5QTEFURk9STV9UT0tFTn0gQWNjZXNzIGtleSBvciB0b2tlbiAob3ZlcnJpZGVzIHRoZSBzdG9yZWQgc2Vzc2lvbilcbiAgJHtFTlZfVkFSUy5QTEFURk9STV9CQVNFX1VSTH0gQVBJIGJhc2UgVVJMIChvcHRpb25hbClcbiAgJHtFTlZfVkFSUy5DTElfQ09ORklHX1BBVEh9IENvbmZpZyBmaWxlIHBhdGggKG9wdGlvbmFsKVxuICAke0VOVl9WQVJTLlRMU19SRUpFQ1RfVU5BVVRIT1JJWkVEfSBEaXNhYmxlIFNTTCB2ZXJpZmljYXRpb24gaWYgJzAnXG4gICR7RU5WX1ZBUlMuREVCVUd9IEVuYWJsZSBkZWJ1ZyBtb2RlIGlmICd0cnVlJ1xuXG5FeGFtcGxlczpcbiAgJCAke0FQUF9OQU1FfSB2ZXJzaW9uXG4gICQgJHtBUFBfTkFNRX0gYXV0aCBsb2dpblxuICAkICR7QVBQX05BTUV9IHBpcGVsaW5lIGxpc3QgLS1wcm9qZWN0IG15LWFwcFxuICAkICR7QVBQX05BTUV9IHBpcGVsaW5lIGdldCAtLWlkIHBpcGUtMTIzIC0tZm9ybWF0IGpzb25cbiAgJCAke0FQUF9OQU1FfSBwaXBlbGluZSBjcmVhdGUgLWYgcHJvcHMuanNvbiAtLWRlcGxveSAtLXByb2ZpbGUgcHJvZHVjdGlvblxuICAkICR7QVBQX05BTUV9IHRlbXBsYXRlIGluc3RhbnRpYXRlIC1uIHJlYWN0LWphdmFzY3JpcHQgLXAgcmVhY3QgLW8gYWNtZSAtLWlucHV0IG9yZ0lkPTx1dWlkPiAtLW91dHB1dCBwcm9wcy5qc29uXG4gICQgJHtBUFBfTkFNRX0gcGx1Z2luIHVwbG9hZCAtLWZpbGUgcGx1Z2luLnppcCAtLW9yZ2FuaXphdGlvbiBhY21lXG4gICQgJHtBUFBfTkFNRX0gaW5mcmEgc3RvcmUtdG9rZW4gLS1kYXlzIDMwIC0tcmVnaW9uIHVzLWVhc3QtMVxuICAkICR7QVBQX05BTUV9IGluZnJhIGJvb3RzdHJhcCAtLWFjY291bnQgMTIzNDU2Nzg5MDEyIC0tcmVnaW9uIHVzLWVhc3QtMVxuICAkICR7QVBQX05BTUV9IHBpcGVsaW5lIGRlcGxveSAtLWlkIHBpcGUtMTIzIC0tcHJvZmlsZSBwcm9kdWN0aW9uXG5cbkV4aXQgY29kZXMgKDAgPSBzdWNjZXNzOyBmYWlsdXJlcyB1c2UgYSBzdGFuZGFyZCBjb2RlIGJ5IGVycm9yIHR5cGUpOlxuICAxIGdlbmVyYWwgwrcgMiB2YWxpZGF0aW9uIMK3IDMgYXBpLXJlcXVlc3QgwrcgNCBhdXRoIMK3IDUgZm9yYmlkZGVuXG4gIDYgbm90LWZvdW5kIMK3IDcgbmV0d29yayDCtyA4IGNvbmZpZyDCtyA5IGZpbGUtc3lzdGVtIMK3IDEwIHRpbWVvdXRcblxuUnVuICcke0FQUF9OQU1FfSA8Z3JvdXA+IC0taGVscCcgdG8gc2VlIGEgZ3JvdXAncyBzdWJjb21tYW5kcy5cbmApO1xuXG4gIC8vIEZhaWwtZmFzdCBwcmVmbGlnaHQ6IGJlZm9yZSBBTlkgY29tbWFuZCdzIGFjdGlvbiBydW5zLCB2ZXJpZnkgdGhlIGxvY2FsXG4gIC8vIHRvb2xzIHRoYXQgY29tbWFuZCBuZWVkcy4gQ29tbWFuZGVyIHNraXBzIHRoaXMgZm9yIC0taGVscC8tLXZlcnNpb24gYW5kIGZvclxuICAvLyBoZWxwIG91dHB1dCwgc28gdGhvc2UgYWx3YXlzIHdvcms7IEFQSS1vbmx5IGNvbW1hbmRzIGRlY2xhcmUgbm8gcmVxdWlyZW1lbnRzXG4gIC8vIGFuZCBwYXNzIHRocm91Z2ggdW50b3VjaGVkLlxuICBwcm9ncmFtLmhvb2soJ3ByZUFjdGlvbicsIChfdGhpc0NvbW1hbmQsIGFjdGlvbkNvbW1hbmQpID0+IHByZWZsaWdodENvbW1hbmRUb29scyhhY3Rpb25Db21tYW5kKSk7XG5cbiAgLy8gVG9wLWxldmVsIG1ldGEgY29tbWFuZHMgKG5vIG5hbWVzcGFjZSkuXG4gIHZlcnNpb24ocHJvZ3JhbSk7XG4gIHN0YXR1cyhwcm9ncmFtKTsgLy8gU2hvdyBlbnZpcm9ubWVudCBhbmQgY29ubmVjdGl2aXR5IHN0YXR1c1xuXG4gIC8vIFRhc2sgbmFtZXNwYWNlcyDigJQgY29tbWFuZHMgYXJlIGdyb3VwZWQgYnkgdGhlIGpvYiB0aGUgdXNlciBpcyBkb2luZywgbm90IGJ5XG4gIC8vIGltcGxlbWVudGF0aW9uLiBFYWNoIHBhcmVudCBpcyBhIHN1YmNvbW1hbmQgY29udGFpbmVyOyB0aGUgbGVhZiB2ZXJiIGxpdmVzIGluXG4gIC8vIHRoZSBjb21tYW5kIGZpbGUgKGUuZy4gYC5jb21tYW5kKCdsaXN0JylgKSwgc28gYHBpcGVsaW5lIGxpc3RgIHJlYWRzIGFzIGEgdGFzay5cbiAgcHJpbnREZWJ1ZygnUmVnaXN0ZXJpbmcgdGFzayBuYW1lc3BhY2VzJyk7XG5cbiAgLy8gYXV0aCDigJQgYXV0aGVudGljYXRlIGFuZCBtYW5hZ2UgY3JlZGVudGlhbHNcbiAgY29uc3QgYXV0aCA9IHByb2dyYW0uY29tbWFuZCgnYXV0aCcpLmRlc2NyaXB0aW9uKCdBdXRoZW50aWNhdGUgYW5kIG1hbmFnZSBjcmVkZW50aWFscycpO1xuICBsb2dpbihhdXRoKTsgLy8gYXV0aCBsb2dpbiDigJQgYnJvd3NlciAoZGV2aWNlLWF1dGhvcml6YXRpb24pIHNpZ24taW4sIHN0b3JlZCBsb2NhbGx5XG4gIGNyZWF0ZVBhdChhdXRoKTsgLy8gYXV0aCBwYXQg4oCUIGNyZWF0ZSBhIG5hbWVkIGFjY2VzcyBrZXkgKGRldmljZSBzaWduLWluICsgYnJvd3NlciBzdGVwLXVwKVxuXG4gIC8vIHBpcGVsaW5lIOKAlCBjcmVhdGUsIGluc3BlY3QsIGFuZCBkZXBsb3kgcGlwZWxpbmVzXG4gIGNvbnN0IHBpcGVsaW5lID0gcHJvZ3JhbS5jb21tYW5kKCdwaXBlbGluZScpLmRlc2NyaXB0aW9uKCdDcmVhdGUsIGluc3BlY3QsIGFuZCBkZXBsb3kgcGlwZWxpbmVzJyk7XG4gIGNyZWF0ZVBpcGVsaW5lKHBpcGVsaW5lKTsgLy8gcGlwZWxpbmUgY3JlYXRlXG4gIGxpc3RQaXBlbGluZXMocGlwZWxpbmUpOyAvLyBwaXBlbGluZSBsaXN0XG4gIGdldFBpcGVsaW5lKHBpcGVsaW5lKTsgLy8gcGlwZWxpbmUgZ2V0XG4gIHJlZ2lzdGVyKHBpcGVsaW5lKTsgLy8gcGlwZWxpbmUgcmVnaXN0ZXIg4oCUIHJlLXJlZ2lzdGVyIGEgZGVwbG95ZWQgQVJOICsgZHJhaW4gcGVuZGluZyBpbnRlbnRzXG4gIHN5bnRoKHBpcGVsaW5lKTsgLy8gcGlwZWxpbmUgc3ludGgg4oCUIENESyBzeW50aGVzaXMgZnJvbSBwaXBlbGluZSBjb25maWdcbiAgZGVwbG95KHBpcGVsaW5lKTsgLy8gcGlwZWxpbmUgZGVwbG95IOKAlCBDREsgZGVwbG95ICgtLWFwcCBwcmludHMgYm9pbGVycGxhdGUgcGF0aClcblxuICAvLyBwbHVnaW4g4oCUIGF1dGhvciwgdmFsaWRhdGUsIGFuZCBwdWJsaXNoIHBsdWdpbnNcbiAgY29uc3QgcGx1Z2luID0gcHJvZ3JhbS5jb21tYW5kKCdwbHVnaW4nKS5kZXNjcmlwdGlvbignQXV0aG9yLCB2YWxpZGF0ZSwgYW5kIHB1Ymxpc2ggcGx1Z2lucycpO1xuICBuZXdQbHVnaW4ocGx1Z2luKTsgLy8gcGx1Z2luIG5ldyDigJQgc2NhZmZvbGQgYSBsb2NhbCBwbHVnaW4gZGlyZWN0b3J5XG4gIHZhbGlkYXRlUGx1Z2luKHBsdWdpbik7IC8vIHBsdWdpbiB2YWxpZGF0ZSDigJQgdmFsaWRhdGUgYSBsb2NhbCBwbHVnaW4gYmVmb3JlIHVwbG9hZFxuICB1cGxvYWRQbHVnaW4ocGx1Z2luKTsgLy8gcGx1Z2luIHVwbG9hZCDigJQgdXBsb2FkIGFuZCBkZXBsb3lcbiAgZ2V0UGx1Z2luKHBsdWdpbik7IC8vIHBsdWdpbiBnZXRcbiAgbGlzdFBsdWdpbnMocGx1Z2luKTsgLy8gcGx1Z2luIGxpc3RcblxuICAvLyB0ZW1wbGF0ZSDigJQgaW5zdGFudGlhdGUgZ29sZGVuLXBhdGggcGlwZWxpbmUgdGVtcGxhdGVzLCB2YWxpZGF0ZSB7eyAuLi4gfX0gc3ludGF4XG4gIGNvbnN0IHRlbXBsYXRlID0gcHJvZ3JhbS5jb21tYW5kKCd0ZW1wbGF0ZScpLmRlc2NyaXB0aW9uKCdJbnN0YW50aWF0ZSBwaXBlbGluZSB0ZW1wbGF0ZXMgYW5kIHZhbGlkYXRlIHt7IC4uLiB9fSB0ZW1wbGF0ZSBzeW50YXgnKTtcbiAgaW5zdGFudGlhdGVUZW1wbGF0ZSh0ZW1wbGF0ZSk7IC8vIHRlbXBsYXRlIGluc3RhbnRpYXRlIOKAlCByZW5kZXIgYSB0ZW1wbGF0ZSBpbnRvIHBpcGVsaW5lIHByb3BzXG4gIHZhbGlkYXRlVGVtcGxhdGVzQ29tbWFuZCh0ZW1wbGF0ZSk7IC8vIHRlbXBsYXRlIHZhbGlkYXRlXG5cbiAgLy8gaW5mcmEg4oCUIHNldCB1cCBhbmQgb3BlcmF0ZSBwbGF0Zm9ybSBpbmZyYXN0cnVjdHVyZVxuICBjb25zdCBpbmZyYSA9IHByb2dyYW0uY29tbWFuZCgnaW5mcmEnKS5kZXNjcmlwdGlvbignU2V0IHVwIGFuZCBvcGVyYXRlIHBsYXRmb3JtIGluZnJhc3RydWN0dXJlJyk7XG4gIGJvb3RzdHJhcChpbmZyYSk7IC8vIGluZnJhIGJvb3RzdHJhcCDigJQgQ0RLIHRvb2xraXQgc3RhY2tcbiAgc2V0dXBFdmVudHMoaW5mcmEpOyAvLyBpbmZyYSBzZXR1cC1ldmVudHMg4oCUIEV2ZW50QnJpZGdlIGV2ZW50IGluZ2VzdGlvblxuICByZWRyaXZlRXZlbnRzKGluZnJhKTsgLy8gaW5mcmEgcmVkcml2ZS1ldmVudHMg4oCUIG1hbnVhbCBETFEg4oaSIHF1ZXVlIHJlZHJpdmUgZmFsbGJhY2tcbiAgc3RvcmVUb2tlbihpbmZyYSk7IC8vIGluZnJhIHN0b3JlLXRva2VuIOKAlCBKV1QgdG9rZW4gaW4gU2VjcmV0cyBNYW5hZ2VyIGZvciBDREtcbiAgcHJvdmlzaW9uKGluZnJhKTsgLy8gaW5mcmEgcHJvdmlzaW9uIOKAlCBBSS1hc3Npc3RlZCBkZXBsb3kvdGVhcmRvd24gb2YgdGhlIHBsYXRmb3JtXG5cbiAgLy8gYXVkaXQg4oCUIG9wZXJhdG9yIGF1ZGl0cyAoY3Jvbi1mcmllbmRseTogZXhpdCAxIG9uIGZpbmRpbmdzKVxuICBjb25zdCBhdWRpdCA9IHByb2dyYW0uY29tbWFuZCgnYXVkaXQnKS5kZXNjcmlwdGlvbignT3BlcmF0b3IgYXVkaXRzIChjcm9uLWZyaWVuZGx5OiBleGl0IDEgb24gZmluZGluZ3MpJyk7XG4gIGF1ZGl0VG9rZW5zKGF1ZGl0KTsgLy8gYXVkaXQgdG9rZW5zIOKAlCBleHBpcmluZyBwbGF0Zm9ybSB0b2tlbnMgaW4gU2VjcmV0cyBNYW5hZ2VyXG4gIGF1ZGl0U3RhY2tzKGF1ZGl0KTsgLy8gYXVkaXQgc3RhY2tzIOKAlCBDRk4gc3RhY2tzIHZzIHBpcGVsaW5lX3JlZ2lzdHJ5IGRyaWZ0XG5cbiAgLy8gb3JnIOKAlCBvcmdhbml6YXRpb24gZGF0YSBvcGVyYXRpb25zXG4gIGNvbnN0IG9yZyA9IHByb2dyYW0uY29tbWFuZCgnb3JnJykuZGVzY3JpcHRpb24oJ09yZ2FuaXphdGlvbiBkYXRhIG9wZXJhdGlvbnMnKTtcbiAgb3JnRXhwb3J0KG9yZyk7IC8vIG9yZyBleHBvcnQg4oCUIEdEUFIgcG9ydGFiaWxpdHkgZXhwb3J0XG5cbiAgLy8gU2hlbGwgY29tcGxldGlvbnNcbiAgcHJpbnREZWJ1ZygnUmVnaXN0ZXJpbmcgY29tcGxldGlvbnMgY29tbWFuZCcpO1xuICBwcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2NvbXBsZXRpb25zJylcbiAgICAuZGVzY3JpcHRpb24oJ0dlbmVyYXRlIHNoZWxsIGNvbXBsZXRpb25zIChiYXNoLCB6c2gsIGZpc2gpJylcbiAgICAuYXJndW1lbnQoJzxzaGVsbD4nLCAnU2hlbGwgdHlwZTogYmFzaCwgenNoLCBvciBmaXNoJylcbiAgICAuYWN0aW9uKChzaGVsbDogc3RyaW5nKSA9PiB7XG4gICAgICAvLyBXYWxrIGNvbW1hbmRlcidzIHJlZ2lzdGVyZWQgdHJlZSBzbyBjb21wbGV0aW9ucyBuZXZlciBkcmlmdCBmcm9tIHRoZSBhY3R1YWxcbiAgICAgIC8vIHN1cmZhY2UuIGB0b3BMZXZlbGAgaXMgdGhlIGZpcnN0LXdvcmQgc2V0IChuYW1lc3BhY2VzICsgbWV0YSBjb21tYW5kcyk7XG4gICAgICAvLyBgc3Vic2AgbWFwcyBlYWNoIG5hbWVzcGFjZSB0byBpdHMgbGVhZiB2ZXJicyBmb3Igc2Vjb25kLXdvcmQgY29tcGxldGlvbi5cbiAgICAgIGNvbnN0IHRvcExldmVsID0gcHJvZ3JhbS5jb21tYW5kcy5tYXAoYyA9PiBjLm5hbWUoKSkuc29ydCgpO1xuICAgICAgY29uc3Qgc3ViczogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge307XG4gICAgICBmb3IgKGNvbnN0IGMgb2YgcHJvZ3JhbS5jb21tYW5kcykge1xuICAgICAgICBpZiAoYy5jb21tYW5kcy5sZW5ndGggPiAwKSBzdWJzW2MubmFtZSgpXSA9IGMuY29tbWFuZHMubWFwKHMgPT4gcy5uYW1lKCkpLnNvcnQoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRvcExldmVsU3RyID0gdG9wTGV2ZWwuam9pbignICcpO1xuICAgICAgc3dpdGNoIChzaGVsbCkge1xuICAgICAgICBjYXNlICdiYXNoJzoge1xuICAgICAgICAgIC8vIFR3by1sZXZlbDogY29tcGxldGUgdGhlIGdyb3VwIGF0IHdvcmQgMSwgaXRzIHN1YmNvbW1hbmRzIGF0IHdvcmQgMi5cbiAgICAgICAgICBjb25zdCBjYXNlcyA9IE9iamVjdC5lbnRyaWVzKHN1YnMpXG4gICAgICAgICAgICAubWFwKChbbnMsIGxlYXZlc10pID0+IGAgICAgICAke25zfSkgQ09NUFJFUExZPSgkKGNvbXBnZW4gLVcgXCIke2xlYXZlcy5qb2luKCcgJyl9XCIgLS0gXCJcXCR7Y3VyfVwiKSk7O2ApXG4gICAgICAgICAgICAuam9pbignXFxuJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coYCMgcGlwZWxpbmUtbWFuYWdlciBiYXNoIGNvbXBsZXRpb25zXG5fcGlwZWxpbmVfbWFuYWdlcl9jb21wbGV0aW9ucygpIHtcbiAgbG9jYWwgY3VyPVwiXFwke0NPTVBfV09SRFNbQ09NUF9DV09SRF19XCJcbiAgaWYgWyBcIlxcJHtDT01QX0NXT1JEfVwiIC1lcSAxIF07IHRoZW5cbiAgICBDT01QUkVQTFk9KCQoY29tcGdlbiAtVyBcIiR7dG9wTGV2ZWxTdHJ9XCIgLS0gXCJcXCR7Y3VyfVwiKSlcbiAgICByZXR1cm5cbiAgZmlcbiAgY2FzZSBcIlxcJHtDT01QX1dPUkRTWzFdfVwiIGluXG4ke2Nhc2VzfVxuICBlc2FjXG59XG5jb21wbGV0ZSAtRiBfcGlwZWxpbmVfbWFuYWdlcl9jb21wbGV0aW9ucyBwaXBlbGluZS1tYW5hZ2VyYCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnenNoJzoge1xuICAgICAgICAgIGNvbnN0IGNhc2VzID0gT2JqZWN0LmVudHJpZXMoc3VicylcbiAgICAgICAgICAgIC5tYXAoKFtucywgbGVhdmVzXSkgPT4gYCAgICAgICAgJHtuc30pIF92YWx1ZXMgJ3N1YmNvbW1hbmQnICR7bGVhdmVzLmpvaW4oJyAnKX07O2ApXG4gICAgICAgICAgICAuam9pbignXFxuJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coYCMgcGlwZWxpbmUtbWFuYWdlciB6c2ggY29tcGxldGlvbnNcbl9waXBlbGluZV9tYW5hZ2VyKCkge1xuICBpZiAoKCBDVVJSRU5UID09IDIgKSk7IHRoZW5cbiAgICBfdmFsdWVzICdjb21tYW5kJyAke3RvcExldmVsLmpvaW4oJyAnKX1cbiAgICByZXR1cm5cbiAgZmlcbiAgY2FzZSBcIlxcJHt3b3Jkc1syXX1cIiBpblxuJHtjYXNlc31cbiAgZXNhY1xufVxuY29tcGRlZiBfcGlwZWxpbmVfbWFuYWdlciBwaXBlbGluZS1tYW5hZ2VyYCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnZmlzaCc6IHtcbiAgICAgICAgICBjb25zdCBsaW5lcyA9IFtcbiAgICAgICAgICAgIGBjb21wbGV0ZSAtYyBwaXBlbGluZS1tYW5hZ2VyIC1uICdfX2Zpc2hfdXNlX3N1YmNvbW1hbmQnIC1hICcke3RvcExldmVsU3RyfSdgLFxuICAgICAgICAgICAgLi4uT2JqZWN0LmVudHJpZXMoc3VicykubWFwKChbbnMsIGxlYXZlc10pID0+XG4gICAgICAgICAgICAgIGBjb21wbGV0ZSAtYyBwaXBlbGluZS1tYW5hZ2VyIC1uICdfX2Zpc2hfc2Vlbl9zdWJjb21tYW5kX2Zyb20gJHtuc30nIC1hICcke2xlYXZlcy5qb2luKCcgJyl9J2ApLFxuICAgICAgICAgIF07XG4gICAgICAgICAgY29uc29sZS5sb2coYCMgcGlwZWxpbmUtbWFuYWdlciBmaXNoIGNvbXBsZXRpb25zXFxuJHtsaW5lcy5qb2luKCdcXG4nKX1gKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFVua25vd24gc2hlbGw6ICR7c2hlbGx9LiBVc2UgYmFzaCwgenNoLCBvciBmaXNoLmApO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBwcmludERlYnVnKCdBbGwgY29tbWFuZHMgcmVnaXN0ZXJlZCBzdWNjZXNzZnVsbHknKTtcbn1cblxuLyoqXG4gKiBIYW5kbGUgcHJvZ3JhbSBlcnJvcnNcbiAqL1xuZnVuY3Rpb24gc2V0dXBFcnJvckhhbmRsZXJzKCk6IHZvaWQge1xuICAvLyBIYW5kbGUgdW5jYXVnaHQgZXhjZXB0aW9uc1xuICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgIHByaW50RXJyb3IoJ1VuY2F1Z2h0IGV4Y2VwdGlvbicsIHtcbiAgICAgIGVycm9yOiBlcnJvci5tZXNzYWdlLFxuICAgICAgbmFtZTogZXJyb3IubmFtZSxcbiAgICB9KTtcblxuICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5HRU5FUkFMLCB7XG4gICAgICBkZWJ1ZzogaXNEZWJ1Z01vZGUocHJvZ3JhbS5vcHRzKCkpLFxuICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgdHlwZTogJ3VuY2F1Z2h0RXhjZXB0aW9uJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIEhhbmRsZSB1bmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb25zXG4gIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChyZWFzb246IHVua25vd24pID0+IHtcbiAgICBjb25zb2xlLmVycm9yKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgIHByaW50RXJyb3IoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHtcbiAgICAgIHJlYXNvbjogcmVhc29uIGluc3RhbmNlb2YgRXJyb3IgPyByZWFzb24ubWVzc2FnZTogU3RyaW5nKHJlYXNvbiksXG4gICAgfSk7XG5cbiAgICBjb25zdCBlcnJvciA9IHJlYXNvbiBpbnN0YW5jZW9mIEVycm9yID8gcmVhc29uOiBuZXcgRXJyb3IoU3RyaW5nKHJlYXNvbikpO1xuXG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkdFTkVSQUwsIHtcbiAgICAgIGRlYnVnOiBpc0RlYnVnTW9kZShwcm9ncmFtLm9wdHMoKSksXG4gICAgICBleGl0OiB0cnVlLFxuICAgICAgY29udGV4dDoge1xuICAgICAgICB0eXBlOiAndW5oYW5kbGVkUmVqZWN0aW9uJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIEhhbmRsZSBTSUdJTlQgKEN0cmwrQylcbiAgcHJvY2Vzcy5vbignU0lHSU5UJywgKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgIHByaW50V2FybmluZygnUHJvY2VzcyBpbnRlcnJ1cHRlZCBieSB1c2VyIChTSUdJTlQpJyk7XG4gICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJvY2Vzcy5leGl0KDEzMCk7IC8vIFN0YW5kYXJkIGV4aXQgY29kZSBmb3IgU0lHSU5UXG4gIH0pO1xuXG4gIC8vIEhhbmRsZSBTSUdURVJNXG4gIHByb2Nlc3Mub24oJ1NJR1RFUk0nLCAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJpbnRXYXJuaW5nKCdQcm9jZXNzIHRlcm1pbmF0ZWQgKFNJR1RFUk0pJyk7XG4gICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgcHJvY2Vzcy5leGl0KDE0Myk7IC8vIFN0YW5kYXJkIGV4aXQgY29kZSBmb3IgU0lHVEVSTVxuICB9KTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplIENMSSB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENMSSBpbml0aWFsaXphdGlvbiBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplQ2xpKG9wdGlvbnM6IENsaU9wdGlvbnMgPSB7fSk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgc2hvd0Jhbm5lciA9IHRydWUsXG4gICAgbWluaW1hbEJhbm5lciA9IGZhbHNlLFxuICAgIGRlYnVnID0gZmFsc2UsXG4gICAgdmVyYm9zZSA9IGZhbHNlLFxuICAgIHF1aWV0ID0gZmFsc2UsXG4gICAgbm9Db2xvciA9IGZhbHNlLFxuICB9ID0gb3B0aW9ucztcblxuICAvLyBIYW5kbGUgY29sb3Igb3V0cHV0XG4gIGlmIChub0NvbG9yKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9fQ09MT1IgPSAnMSc7XG4gIH1cblxuICAvLyBEaXNwbGF5IGJhbm5lclxuICBpZiAoc2hvd0Jhbm5lciAmJiAhcXVpZXQpIHtcbiAgICBpZiAobWluaW1hbEJhbm5lcikge1xuICAgICAgbWluaUJhbm5lcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBiYW5uZXIoe1xuICAgICAgICBtaW5pbWFsOiBmYWxzZSxcbiAgICAgICAgc2hvd0Rlc2NyaXB0aW9uOiB0cnVlLFxuICAgICAgICBzaG93VGltZXN0YW1wOiBkZWJ1ZyB8fCB2ZXJib3NlLFxuICAgICAgICBzaG93RXhlY3V0aW9uSWQ6IGRlYnVnLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRGlzcGxheSBzdGFydHVwIGluZm9cbiAgZGlzcGxheVN0YXJ0dXBJbmZvKHsgZGVidWcsIHZlcmJvc2UsIHF1aWV0IH0pO1xuXG4gIC8vIENoZWNrIGVudmlyb25tZW50XG4gIGlmICghcXVpZXQpIHtcbiAgICBjaGVja0Vudmlyb25tZW50KCk7XG4gIH1cblxuICAvLyBTZXR1cCBlcnJvciBoYW5kbGVyc1xuICBzZXR1cEVycm9ySGFuZGxlcnMoKTtcblxuICAvLyBSZWdpc3RlciBjb21tYW5kc1xuICB0cnkge1xuICAgIHJlZ2lzdGVyQ29tbWFuZHMoKTtcbiAgICBwcmludERlYnVnKCdDTEkgaW5pdGlhbGl6YXRpb24gY29tcGxldGUnKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBwcmludEVycm9yKCdDTEkgaW5pdGlhbGl6YXRpb24gZmFpbGVkJywge1xuICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlOiBTdHJpbmcoZXJyb3IpLFxuICAgIH0pO1xuXG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkNPTkZJR1VSQVRJT04sIHtcbiAgICAgIGRlYnVnOiBkZWJ1ZyB8fCBpc0RlYnVnTW9kZSgpLFxuICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgc3RhZ2U6ICdpbml0aWFsaXphdGlvbicsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogUGFyc2UgY29tbWFuZCBsaW5lIGFyZ3VtZW50c1xuICovXG5mdW5jdGlvbiBwYXJzZUFyZ3VtZW50cygpOiB2b2lkIHtcbiAgdHJ5IHtcbiAgICBwcm9ncmFtLnBhcnNlKHByb2Nlc3MuYXJndik7XG5cbiAgICAvLyBTaG93IGhlbHAgaWYgbm8gY29tbWFuZCBwcm92aWRlZFxuICAgIGNvbnN0IGFyZ3MgPSBwcm9jZXNzLmFyZ3Yuc2xpY2UoMik7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICBwcmludEluZm8oJ05vIGNvbW1hbmQgc3BlY2lmaWVkIC0gZGlzcGxheWluZyBoZWxwJyk7XG4gICAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICAgIHByb2dyYW0ub3V0cHV0SGVscCgpO1xuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGNvbW1hbmQgZXhpc3RzXG4gICAgY29uc3QgY29tbWFuZCA9IGFyZ3NbMF07XG4gICAgaWYgKGNvbW1hbmQgJiYgIWNvbW1hbmQuc3RhcnRzV2l0aCgnLScpKSB7XG4gICAgICBjb25zdCBjb21tYW5kRXhpc3RzID0gcHJvZ3JhbS5jb21tYW5kcy5zb21lKGNtZCA9PiBjbWQubmFtZSgpID09PSBjb21tYW5kKTtcblxuICAgICAgaWYgKCFjb21tYW5kRXhpc3RzKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgICAgICBwcmludEVycm9yKGBVbmtub3duIGNvbW1hbmQ6ICR7Y29tbWFuZH1gKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgICAgIHByaW50SW5mbygnQXZhaWxhYmxlIGNvbW1hbmRzOicpO1xuICAgICAgICBwcm9ncmFtLmNvbW1hbmRzLmZvckVhY2goY21kID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgIOKAoiAke2NtZC5uYW1lKCl9IC0gJHtjbWQuZGVzY3JpcHRpb24oKX1gKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJpbnREZWJ1ZygnQ29tbWFuZCBsaW5lIGFyZ3VtZW50cyBwYXJzZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkdFTkVSQUwsIHtcbiAgICAgIGRlYnVnOiBpc0RlYnVnTW9kZShwcm9ncmFtLm9wdHMoKSksXG4gICAgICBleGl0OiB0cnVlLFxuICAgICAgY29udGV4dDoge1xuICAgICAgICBzdGFnZTogJ2FyZ3VtZW50LXBhcnNpbmcnLFxuICAgICAgICBhcmd2OiBwcm9jZXNzLmFyZ3YsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogTWFpbiBDTEkgZW50cnkgcG9pbnRcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENMSSBpbml0aWFsaXphdGlvbiBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIFN0YW5kYXJkIGluaXRpYWxpemF0aW9uXG4gKiBtYWluKCk7XG4gKlxuICogLy8gTWluaW1hbCBtb2RlXG4gKiBtYWluKHsgbWluaW1hbEJhbm5lcjogdHJ1ZSwgcXVpZXQ6IHRydWUgfSk7XG4gKlxuICogLy8gRGVidWcgbW9kZVxuICogbWFpbih7IGRlYnVnOiB0cnVlLCB2ZXJib3NlOiB0cnVlIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWluKG9wdGlvbnM6IENsaU9wdGlvbnMgPSB7fSk6IHZvaWQge1xuICB0cnkge1xuICAgIC8vIEluaXRpYWxpemUgQ0xJXG4gICAgaW5pdGlhbGl6ZUNsaShvcHRpb25zKTtcblxuICAgIC8vIFBhcnNlIGFyZ3VtZW50cyBhbmQgZXhlY3V0ZSBjb21tYW5kXG4gICAgcGFyc2VBcmd1bWVudHMoKTtcblxuICAgIC8vIElmIHdlIHJlYWNoIGhlcmUsIGNvbW1hbmQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseVxuICAgIHByaW50RGVidWcoJ0NMSSBleGVjdXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseScpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIEZpbmFsIGNhdGNoLWFsbCBlcnJvciBoYW5kbGVyXG4gICAgY29uc29sZS5lcnJvcignJyk7IC8vIEVtcHR5IGxpbmVcbiAgICBwcmludEVycm9yKCdGYXRhbCBDTEkgZXJyb3InLCB7XG4gICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2U6IFN0cmluZyhlcnJvciksXG4gICAgfSk7XG5cbiAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuR0VORVJBTCwge1xuICAgICAgZGVidWc6IGlzRGVidWdNb2RlKG9wdGlvbnMpLFxuICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgc3RhZ2U6ICdtYWluJyxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSdW4gQ0xJIGlmIGV4ZWN1dGVkIGRpcmVjdGx5LiBFU00gaGFzIG5vIGByZXF1aXJlLm1haW5gOyBjb21wYXJlIHRoZSBpbnZva2VkXG4gKiBzY3JpcHQgdG8gdGhpcyBtb2R1bGUncyBwYXRoLCByZXNvbHZpbmcgc3ltbGlua3Mgb24gYm90aCBzaWRlcyBzbyB0aGUgYGJpbmBcbiAqIHN5bWxpbmsgKG5vZGVfbW9kdWxlcy8uYmluL3BpcGVsaW5lLW1hbmFnZXIg4oaSIGRpc3QvY2xpLmpzKSBzdGlsbCBtYXRjaGVzLlxuICovXG5jb25zdCBpbnZva2VkU2NyaXB0ID0gcHJvY2Vzcy5hcmd2WzFdO1xuY29uc3QgaXNNYWluTW9kdWxlID0gaW52b2tlZFNjcmlwdCAhPT0gdW5kZWZpbmVkXG4gICYmIHJlYWxwYXRoU3luYyhpbnZva2VkU2NyaXB0KSA9PT0gcmVhbHBhdGhTeW5jKGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKSk7XG5pZiAoaXNNYWluTW9kdWxlKSB7XG4gIC8vIFBhcnNlIENMSSBvcHRpb25zIGZyb20gZW52aXJvbm1lbnQgb3IgY29tbWFuZCBsaW5lXG4gIGNvbnN0IG9wdGlvbnM6IENsaU9wdGlvbnMgPSB7XG4gICAgZGVidWc6IHByb2Nlc3MuZW52LkRFQlVHID09PSAndHJ1ZScsXG4gICAgcXVpZXQ6IHByb2Nlc3MuYXJndi5pbmNsdWRlcygnLS1xdWlldCcpLFxuICAgIHZlcmJvc2U6IHByb2Nlc3MuYXJndi5pbmNsdWRlcygnLS12ZXJib3NlJyksXG4gICAgbm9Db2xvcjogcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKCctLW5vLWNvbG9yJykgfHwgcHJvY2Vzcy5lbnYuTk9fQ09MT1IgPT09ICcxJyxcbiAgfTtcblxuICBtYWluKG9wdGlvbnMpO1xufSJdfQ==
|
|
474
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9B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Q0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEMsTUFBTSxZQUFZLEdBQUcsYUFBYSxLQUFLLFNBQVM7T0FDM0MsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLFlBQVksQ0FBQyxhQUFhLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsRixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ2pCLHFEQUFxRDtJQUNyRCxNQUFNLE9BQU8sR0FBZTtRQUMxQixLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssTUFBTTtRQUNuQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQ3ZDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDM0MsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLEdBQUc7S0FDN0UsQ0FBQztJQUVGLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IHJlYWxwYXRoU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCB7IGVycm9yTWVzc2FnZSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IHByb2dyYW0gfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgYXVkaXRTdGFja3MgfSBmcm9tICcuL2NvbW1hbmRzL2F1ZGl0LXN0YWNrcy5qcyc7XG5pbXBvcnQgeyBhdWRpdFRva2VucyB9IGZyb20gJy4vY29tbWFuZHMvYXVkaXQtdG9rZW5zLmpzJztcbmltcG9ydCB7IGJvb3RzdHJhcCB9IGZyb20gJy4vY29tbWFuZHMvYm9vdHN0cmFwLmpzJztcbmltcG9ydCB7IGNyZWF0ZVBhdCB9IGZyb20gJy4vY29tbWFuZHMvY3JlYXRlLXBhdC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVQaXBlbGluZSB9IGZyb20gJy4vY29tbWFuZHMvY3JlYXRlLXBpcGVsaW5lLmpzJztcbmltcG9ydCB7IGRlcGxveSB9IGZyb20gJy4vY29tbWFuZHMvZGVwbG95LmpzJztcbmltcG9ydCB7IGdldFBpcGVsaW5lIH0gZnJvbSAnLi9jb21tYW5kcy9nZXQtcGlwZWxpbmUuanMnO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSAnLi9jb21tYW5kcy9nZXQtcGx1Z2luLmpzJztcbmltcG9ydCB7IGluc3RhbnRpYXRlVGVtcGxhdGUgfSBmcm9tICcuL2NvbW1hbmRzL2luc3RhbnRpYXRlLXRlbXBsYXRlLmpzJztcbmltcG9ydCB7IGxpc3RQaXBlbGluZXMgfSBmcm9tICcuL2NvbW1hbmRzL2xpc3QtcGlwZWxpbmVzLmpzJztcbmltcG9ydCB7IGxpc3RQbHVnaW5zIH0gZnJvbSAnLi9jb21tYW5kcy9saXN0LXBsdWdpbnMuanMnO1xuaW1wb3J0IHsgbG9naW4gfSBmcm9tICcuL2NvbW1hbmRzL2xvZ2luLmpzJztcbmltcG9ydCB7IG5ld1BsdWdpbiB9IGZyb20gJy4vY29tbWFuZHMvbmV3LXBsdWdpbi5qcyc7XG5pbXBvcnQgeyBvcmdFeHBvcnQgfSBmcm9tICcuL2NvbW1hbmRzL29yZy1leHBvcnQuanMnO1xuaW1wb3J0IHsgcHJvdmlzaW9uIH0gZnJvbSAnLi9jb21tYW5kcy9wcm92aXNpb24uanMnO1xuaW1wb3J0IHsgcmVkcml2ZUV2ZW50cyB9IGZyb20gJy4vY29tbWFuZHMvcmVkcml2ZS1ldmVudHMuanMnO1xuaW1wb3J0IHsgcmVnaXN0ZXIgfSBmcm9tICcuL2NvbW1hbmRzL3JlZ2lzdGVyLmpzJztcbmltcG9ydCB7IHNldHVwRXZlbnRzIH0gZnJvbSAnLi9jb21tYW5kcy9zZXR1cC1ldmVudHMuanMnO1xuaW1wb3J0IHsgc3RhdHVzIH0gZnJvbSAnLi9jb21tYW5kcy9zdGF0dXMuanMnO1xuaW1wb3J0IHsgc3RvcmVUb2tlbiB9IGZyb20gJy4vY29tbWFuZHMvc3RvcmUtdG9rZW4uanMnO1xuaW1wb3J0IHsgc3ludGggfSBmcm9tICcuL2NvbW1hbmRzL3N5bnRoLmpzJztcbmltcG9ydCB7IHVwbG9hZFBsdWdpbiB9IGZyb20gJy4vY29tbWFuZHMvdXBsb2FkLXBsdWdpbi5qcyc7XG5pbXBvcnQgeyB2YWxpZGF0ZVBsdWdpbiB9IGZyb20gJy4vY29tbWFuZHMvdmFsaWRhdGUtcGx1Z2luLmpzJztcbmltcG9ydCB7IHZhbGlkYXRlVGVtcGxhdGVzQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvdmFsaWRhdGUtdGVtcGxhdGVzLmpzJztcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuL2NvbW1hbmRzL3ZlcnNpb24uanMnO1xuaW1wb3J0IHtcbiAgQVBQX05BTUUsXG4gIEFQUF9ERVNDUklQVElPTixcbiAgQVBQX1ZFUlNJT04sXG4gIEVOVl9WQVJTLFxuICBpc0RlYnVnTW9kZSxcbiAgZ2VuZXJhdGVFeGVjdXRpb25JZCxcbn0gZnJvbSAnLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBiYW5uZXIsIG1pbmlCYW5uZXIgfSBmcm9tICcuL3V0aWxzL2Jhbm5lci5qcyc7XG5pbXBvcnQgeyBnZXRBcGlDb25maWcgfSBmcm9tICcuL3V0aWxzL2NvbmZpZy1sb2FkZXIuanMnO1xuaW1wb3J0IHsgbG9hZFNlc3Npb24gfSBmcm9tICcuL3V0aWxzL2NyZWRlbnRpYWwtc3RvcmUuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IHByaW50SW5mbywgcHJpbnRFcnJvciwgcHJpbnRXYXJuaW5nLCBwcmludERlYnVnLCBwcmludFNlY3Rpb24gfSBmcm9tICcuL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyBwcmVmbGlnaHRDb21tYW5kVG9vbHMgfSBmcm9tICcuL3V0aWxzL3ByZWZsaWdodC5qcyc7XG5cbi8qKlxuICogQ0xJIGluaXRpYWxpemF0aW9uIG9wdGlvbnNcbiAqL1xuaW50ZXJmYWNlIENsaU9wdGlvbnMge1xuICAvKipcbiAgICogU2hvdyBiYW5uZXIgb24gc3RhcnR1cFxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBzaG93QmFubmVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTWluaW1hbCBiYW5uZXIgKG5vIEFTQ0lJIGFydClcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG1pbmltYWxCYW5uZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZWJ1ZyBtb2RlXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkZWJ1Zz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFZlcmJvc2Ugb3V0cHV0XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICB2ZXJib3NlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUXVpZXQgbW9kZSAobWluaW1hbCBvdXRwdXQpXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBxdWlldD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE5vIGNvbG9yIG91dHB1dFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbm9Db2xvcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ2hlY2sgZW52aXJvbm1lbnQgYW5kIGRpc3BsYXkgd2FybmluZ3NcbiAqL1xuZnVuY3Rpb24gY2hlY2tFbnZpcm9ubWVudCgpOiB2b2lkIHtcbiAgY29uc3Qgd2FybmluZ3M6IHN0cmluZ1tdID0gW107XG5cbiAgLy8gTm90IHNpZ25lZCBpbiBBVCBBTEw6IG5laXRoZXIgYW4gZXhwbGljaXQgdG9rZW4gbm9yIGEgc3RvcmVkIGJyb3dzZXJcbiAgLy8gc2lnbi1pbi4gRWl0aGVyIGFsb25lIGlzIGVub3VnaCwgc28gdGhlIHdhcm5pbmcgb25seSBmaXJlcyB3aGVuIGJvdGggYXJlXG4gIC8vIG1pc3Npbmcg4oCUIG90aGVyd2lzZSBgYXV0aCBsb2dpbmAgdXNlcnMgd291bGQgYmUgbmFnZ2VkIG9uIGV2ZXJ5IGNvbW1hbmQuXG4gIGlmICghcHJvY2Vzcy5lbnZbRU5WX1ZBUlMuUExBVEZPUk1fVE9LRU5dICYmICFsb2FkU2Vzc2lvbihnZXRBcGlDb25maWcoKS5hcGkuYmFzZVVybCkpIHtcbiAgICB3YXJuaW5ncy5wdXNoKCdOb3Qgc2lnbmVkIGluIChubyBQTEFURk9STV9UT0tFTiwgbm8gc3RvcmVkIHNlc3Npb24pJyk7XG4gICAgd2FybmluZ3MucHVzaCgnUnVuIFwicGlwZWxpbmUtbWFuYWdlciBhdXRoIGxvZ2luXCIg4oCUIEFQSSBvcGVyYXRpb25zIHdpbGwgZmFpbCB1bnRpbCB5b3UgZG8nKTtcbiAgfVxuXG4gIC8vIENoZWNrIE5vZGUgdmVyc2lvblxuICBjb25zdCBub2RlVmVyc2lvbiA9IHByb2Nlc3MudmVyc2lvbjtcbiAgY29uc3QgbWFqb3JWZXJzaW9uID0gcGFyc2VJbnQobm9kZVZlcnNpb24uc2xpY2UoMSkuc3BsaXQoJy4nKVswXSB8fCAnMCcsIDEwKTtcbiAgaWYgKG1ham9yVmVyc2lvbiA8IDI0KSB7XG4gICAgd2FybmluZ3MucHVzaChgTm9kZS5qcyAke25vZGVWZXJzaW9ufSBkZXRlY3RlZCAtIHZlcnNpb24gMjQrIHJlcXVpcmVkIChzZWUgcGFja2FnZS5qc29uIGVuZ2luZXMpYCk7XG4gIH1cblxuICAvLyBEaXNwbGF5IHdhcm5pbmdzXG4gIGlmICh3YXJuaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgcHJpbnRTZWN0aW9uKCdFbnZpcm9ubWVudCBXYXJuaW5ncycpO1xuICAgIHdhcm5pbmdzLmZvckVhY2god2FybmluZyA9PiB7XG4gICAgICBwcmludFdhcm5pbmcod2FybmluZyk7XG4gICAgfSk7XG4gICAgY29uc29sZS5sb2coJycpO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGxheSBzdGFydHVwIGluZm9ybWF0aW9uXG4gKi9cbmZ1bmN0aW9uIGRpc3BsYXlTdGFydHVwSW5mbyhvcHRpb25zOiBDbGlPcHRpb25zKTogdm9pZCB7XG4gIGlmIChvcHRpb25zLnF1aWV0KSByZXR1cm47XG5cbiAgY29uc3QgZXhlY3V0aW9uSWQgPSBnZW5lcmF0ZUV4ZWN1dGlvbklkKCk7XG5cbiAgaWYgKG9wdGlvbnMuZGVidWcgfHwgb3B0aW9ucy52ZXJib3NlKSB7XG4gICAgcHJpbnREZWJ1ZygnQ0xJIENvbmZpZ3VyYXRpb24nLCB7XG4gICAgICBuYW1lOiBBUFBfTkFNRSxcbiAgICAgIHZlcnNpb246IEFQUF9WRVJTSU9OLFxuICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICBub2RlOiBwcm9jZXNzLnZlcnNpb24sXG4gICAgICBwbGF0Zm9ybTogcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgICAgIGFyY2g6IHByb2Nlc3MuYXJjaCxcbiAgICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICAgIGVudjoge1xuICAgICAgICBkZWJ1ZzogcHJvY2Vzcy5lbnYuREVCVUcsXG4gICAgICAgIHRva2VuOiBwcm9jZXNzLmVudltFTlZfVkFSUy5QTEFURk9STV9UT0tFTl0gPyAnc2V0JzogJ25vdCBzZXQnLFxuICAgICAgICB1cmw6IHByb2Nlc3MuZW52W0VOVl9WQVJTLlBMQVRGT1JNX0JBU0VfVVJMXSB8fCAnZGVmYXVsdCcsXG4gICAgICB9LFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHByaW50RGVidWcoJ1N0YXJ0aW5nIENMSScsIHtcbiAgICAgIHZlcnNpb246IEFQUF9WRVJTSU9OLFxuICAgICAgZXhlY3V0aW9uSWQsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWdpc3RlciBhbGwgQ0xJIGNvbW1hbmRzXG4gKi9cbmZ1bmN0aW9uIHJlZ2lzdGVyQ29tbWFuZHMoKTogdm9pZCB7XG4gIHByaW50RGVidWcoJ1JlZ2lzdGVyaW5nIGNvbW1hbmRzJyk7XG5cbiAgLy8gQ29uZmlndXJlIHByb2dyYW1cbiAgcHJvZ3JhbVxuICAgIC5uYW1lKEFQUF9OQU1FKVxuICAgIC5kZXNjcmlwdGlvbihBUFBfREVTQ1JJUFRJT04pXG4gICAgLnZlcnNpb24oQVBQX1ZFUlNJT04sICctdiwgLS12ZXJzaW9uJywgJ1Nob3cgQ0xJIHZlcnNpb24nKVxuICAgIC5vcHRpb24oJy0tZGVidWcnLCAnRW5hYmxlIGRlYnVnIG91dHB1dCB3aXRoIHN0YWNrIHRyYWNlcycsIGZhbHNlKVxuICAgIC5vcHRpb24oJy0tdmVyYm9zZScsICdTaG93IGRldGFpbGVkIGluZm9ybWF0aW9uJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1xdWlldCcsICdNaW5pbWFsIG91dHB1dCAoZXJyb3JzIG9ubHkpJywgZmFsc2UpXG4gICAgLm9wdGlvbignLS1uby1jb2xvcicsICdEaXNhYmxlIGNvbG9yZWQgb3V0cHV0JywgZmFsc2UpXG4gICAgLmFkZEhlbHBUZXh0KCdhZnRlcicsIGBcbkNvbW1hbmQgZ3JvdXBzOlxuICBhdXRoICAgICAgQXV0aGVudGljYXRlIGFuZCBtYW5hZ2UgY3JlZGVudGlhbHMgKGxvZ2luLCBwYXQpXG4gIHBpcGVsaW5lICBDcmVhdGUsIGluc3BlY3QsIGFuZCBkZXBsb3kgcGlwZWxpbmVzIChjcmVhdGUsIGxpc3QsIGdldCwgcmVnaXN0ZXIsIHN5bnRoLCBkZXBsb3kpXG4gIHBsdWdpbiAgICBBdXRob3IsIHZhbGlkYXRlLCBhbmQgcHVibGlzaCBwbHVnaW5zIChuZXcsIHZhbGlkYXRlLCB1cGxvYWQsIGdldCwgbGlzdClcbiAgdGVtcGxhdGUgIEluc3RhbnRpYXRlIGdvbGRlbi1wYXRoIHBpcGVsaW5lIHRlbXBsYXRlcyBhbmQgdmFsaWRhdGUge3sgLi4uIH19IHN5bnRheCAoaW5zdGFudGlhdGUsIHZhbGlkYXRlKVxuICBpbmZyYSAgICAgU2V0IHVwIGFuZCBvcGVyYXRlIHBsYXRmb3JtIGluZnJhc3RydWN0dXJlIChib290c3RyYXAsIHNldHVwLWV2ZW50cywgcmVkcml2ZS1ldmVudHMsIHN0b3JlLXRva2VuLCBwcm92aXNpb24pXG4gIGF1ZGl0ICAgICBPcGVyYXRvciBhdWRpdHMsIGNyb24tZnJpZW5kbHkgKHRva2Vucywgc3RhY2tzKVxuICBvcmcgICAgICAgT3JnYW5pemF0aW9uIGRhdGEgb3BlcmF0aW9ucyAoZXhwb3J0KVxuICBzdGF0dXMgLyB2ZXJzaW9uIC8gY29tcGxldGlvbnNcblxuQXV0aGVudGljYXRpb246XG4gIFJ1biAnJHtBUFBfTkFNRX0gYXV0aCBsb2dpbicgb25jZSBwZXIgcGxhdGZvcm0g4oCUIGl0IHNpZ25zIHlvdSBpbiB0aHJvdWdoIHlvdXJcbiAgYnJvd3NlciAobm8gcGFzc3dvcmQgb24gdGhlIGNvbW1hbmQgbGluZSkgYW5kIHN0b3JlcyB0aGUgc2Vzc2lvbiB1bmRlclxuICB+Ly5waXBlbGluZS1tYW5hZ2VyL2NyZWRlbnRpYWxzLmpzb24uIEZvciBDSSwgY3JlYXRlIGFuIGFjY2VzcyBrZXkgd2l0aFxuICAnJHtBUFBfTkFNRX0gYXV0aCBwYXQnIGFuZCBleHBvcnQgaXQgYXMgJHtFTlZfVkFSUy5QTEFURk9STV9UT0tFTn0sIHdoaWNoIGFsd2F5cyB3aW5zLlxuXG5FbnZpcm9ubWVudCBWYXJpYWJsZXM6XG4gICR7RU5WX1ZBUlMuUExBVEZPUk1fVE9LRU59IEFjY2VzcyBrZXkgb3IgdG9rZW4gKG92ZXJyaWRlcyB0aGUgc3RvcmVkIHNlc3Npb24pXG4gICR7RU5WX1ZBUlMuUExBVEZPUk1fQkFTRV9VUkx9IEFQSSBiYXNlIFVSTCAob3B0aW9uYWwpXG4gICR7RU5WX1ZBUlMuQ0xJX0NPTkZJR19QQVRIfSBDb25maWcgZmlsZSBwYXRoIChvcHRpb25hbClcbiAgJHtFTlZfVkFSUy5UTFNfUkVKRUNUX1VOQVVUSE9SSVpFRH0gRGlzYWJsZSBTU0wgdmVyaWZpY2F0aW9uIGlmICcwJ1xuICAke0VOVl9WQVJTLkRFQlVHfSBFbmFibGUgZGVidWcgbW9kZSBpZiAndHJ1ZSdcblxuRXhhbXBsZXM6XG4gICQgJHtBUFBfTkFNRX0gdmVyc2lvblxuICAkICR7QVBQX05BTUV9IGF1dGggbG9naW5cbiAgJCAke0FQUF9OQU1FfSBwaXBlbGluZSBsaXN0IC0tcHJvamVjdCBteS1hcHBcbiAgJCAke0FQUF9OQU1FfSBwaXBlbGluZSBnZXQgLS1pZCBwaXBlLTEyMyAtLWZvcm1hdCBqc29uXG4gICQgJHtBUFBfTkFNRX0gcGlwZWxpbmUgY3JlYXRlIC1mIHByb3BzLmpzb24gLS1kZXBsb3kgLS1wcm9maWxlIHByb2R1Y3Rpb25cbiAgJCAke0FQUF9OQU1FfSB0ZW1wbGF0ZSBpbnN0YW50aWF0ZSAtbiByZWFjdC1qYXZhc2NyaXB0IC1wIHJlYWN0IC1vIGFjbWUgLS1pbnB1dCBvcmdJZD08dXVpZD4gLS1vdXRwdXQgcHJvcHMuanNvblxuICAkICR7QVBQX05BTUV9IHBsdWdpbiB1cGxvYWQgLS1maWxlIHBsdWdpbi56aXAgLS1vcmdhbml6YXRpb24gYWNtZVxuICAkICR7QVBQX05BTUV9IGluZnJhIHN0b3JlLXRva2VuIC0tZGF5cyAzMCAtLXJlZ2lvbiB1cy1lYXN0LTFcbiAgJCAke0FQUF9OQU1FfSBpbmZyYSBib290c3RyYXAgLS1hY2NvdW50IDEyMzQ1Njc4OTAxMiAtLXJlZ2lvbiB1cy1lYXN0LTFcbiAgJCAke0FQUF9OQU1FfSBwaXBlbGluZSBkZXBsb3kgLS1pZCBwaXBlLTEyMyAtLXByb2ZpbGUgcHJvZHVjdGlvblxuXG5FeGl0IGNvZGVzICgwID0gc3VjY2VzczsgZmFpbHVyZXMgdXNlIGEgc3RhbmRhcmQgY29kZSBieSBlcnJvciB0eXBlKTpcbiAgMSBnZW5lcmFsIMK3IDIgdmFsaWRhdGlvbiDCtyAzIGFwaS1yZXF1ZXN0IMK3IDQgYXV0aCDCtyA1IGZvcmJpZGRlblxuICA2IG5vdC1mb3VuZCDCtyA3IG5ldHdvcmsgwrcgOCBjb25maWcgwrcgOSBmaWxlLXN5c3RlbSDCtyAxMCB0aW1lb3V0XG5cblJ1biAnJHtBUFBfTkFNRX0gPGdyb3VwPiAtLWhlbHAnIHRvIHNlZSBhIGdyb3VwJ3Mgc3ViY29tbWFuZHMuXG5gKTtcblxuICAvLyBGYWlsLWZhc3QgcHJlZmxpZ2h0OiBiZWZvcmUgQU5ZIGNvbW1hbmQncyBhY3Rpb24gcnVucywgdmVyaWZ5IHRoZSBsb2NhbFxuICAvLyB0b29scyB0aGF0IGNvbW1hbmQgbmVlZHMuIENvbW1hbmRlciBza2lwcyB0aGlzIGZvciAtLWhlbHAvLS12ZXJzaW9uIGFuZCBmb3JcbiAgLy8gaGVscCBvdXRwdXQsIHNvIHRob3NlIGFsd2F5cyB3b3JrOyBBUEktb25seSBjb21tYW5kcyBkZWNsYXJlIG5vIHJlcXVpcmVtZW50c1xuICAvLyBhbmQgcGFzcyB0aHJvdWdoIHVudG91Y2hlZC5cbiAgcHJvZ3JhbS5ob29rKCdwcmVBY3Rpb24nLCAoX3RoaXNDb21tYW5kLCBhY3Rpb25Db21tYW5kKSA9PiBwcmVmbGlnaHRDb21tYW5kVG9vbHMoYWN0aW9uQ29tbWFuZCkpO1xuXG4gIC8vIFRvcC1sZXZlbCBtZXRhIGNvbW1hbmRzIChubyBuYW1lc3BhY2UpLlxuICB2ZXJzaW9uKHByb2dyYW0pO1xuICBzdGF0dXMocHJvZ3JhbSk7IC8vIFNob3cgZW52aXJvbm1lbnQgYW5kIGNvbm5lY3Rpdml0eSBzdGF0dXNcblxuICAvLyBUYXNrIG5hbWVzcGFjZXMg4oCUIGNvbW1hbmRzIGFyZSBncm91cGVkIGJ5IHRoZSBqb2IgdGhlIHVzZXIgaXMgZG9pbmcsIG5vdCBieVxuICAvLyBpbXBsZW1lbnRhdGlvbi4gRWFjaCBwYXJlbnQgaXMgYSBzdWJjb21tYW5kIGNvbnRhaW5lcjsgdGhlIGxlYWYgdmVyYiBsaXZlcyBpblxuICAvLyB0aGUgY29tbWFuZCBmaWxlIChlLmcuIGAuY29tbWFuZCgnbGlzdCcpYCksIHNvIGBwaXBlbGluZSBsaXN0YCByZWFkcyBhcyBhIHRhc2suXG4gIHByaW50RGVidWcoJ1JlZ2lzdGVyaW5nIHRhc2sgbmFtZXNwYWNlcycpO1xuXG4gIC8vIGF1dGgg4oCUIGF1dGhlbnRpY2F0ZSBhbmQgbWFuYWdlIGNyZWRlbnRpYWxzXG4gIGNvbnN0IGF1dGggPSBwcm9ncmFtLmNvbW1hbmQoJ2F1dGgnKS5kZXNjcmlwdGlvbignQXV0aGVudGljYXRlIGFuZCBtYW5hZ2UgY3JlZGVudGlhbHMnKTtcbiAgbG9naW4oYXV0aCk7IC8vIGF1dGggbG9naW4g4oCUIGJyb3dzZXIgKGRldmljZS1hdXRob3JpemF0aW9uKSBzaWduLWluLCBzdG9yZWQgbG9jYWxseVxuICBjcmVhdGVQYXQoYXV0aCk7IC8vIGF1dGggcGF0IOKAlCBjcmVhdGUgYSBuYW1lZCBhY2Nlc3Mga2V5IChkZXZpY2Ugc2lnbi1pbiArIGJyb3dzZXIgc3RlcC11cClcblxuICAvLyBwaXBlbGluZSDigJQgY3JlYXRlLCBpbnNwZWN0LCBhbmQgZGVwbG95IHBpcGVsaW5lc1xuICBjb25zdCBwaXBlbGluZSA9IHByb2dyYW0uY29tbWFuZCgncGlwZWxpbmUnKS5kZXNjcmlwdGlvbignQ3JlYXRlLCBpbnNwZWN0LCBhbmQgZGVwbG95IHBpcGVsaW5lcycpO1xuICBjcmVhdGVQaXBlbGluZShwaXBlbGluZSk7IC8vIHBpcGVsaW5lIGNyZWF0ZVxuICBsaXN0UGlwZWxpbmVzKHBpcGVsaW5lKTsgLy8gcGlwZWxpbmUgbGlzdFxuICBnZXRQaXBlbGluZShwaXBlbGluZSk7IC8vIHBpcGVsaW5lIGdldFxuICByZWdpc3RlcihwaXBlbGluZSk7IC8vIHBpcGVsaW5lIHJlZ2lzdGVyIOKAlCByZS1yZWdpc3RlciBhIGRlcGxveWVkIEFSTiArIGRyYWluIHBlbmRpbmcgaW50ZW50c1xuICBzeW50aChwaXBlbGluZSk7IC8vIHBpcGVsaW5lIHN5bnRoIOKAlCBDREsgc3ludGhlc2lzIGZyb20gcGlwZWxpbmUgY29uZmlnXG4gIGRlcGxveShwaXBlbGluZSk7IC8vIHBpcGVsaW5lIGRlcGxveSDigJQgQ0RLIGRlcGxveSAoLS1hcHAgcHJpbnRzIGJvaWxlcnBsYXRlIHBhdGgpXG5cbiAgLy8gcGx1Z2luIOKAlCBhdXRob3IsIHZhbGlkYXRlLCBhbmQgcHVibGlzaCBwbHVnaW5zXG4gIGNvbnN0IHBsdWdpbiA9IHByb2dyYW0uY29tbWFuZCgncGx1Z2luJykuZGVzY3JpcHRpb24oJ0F1dGhvciwgdmFsaWRhdGUsIGFuZCBwdWJsaXNoIHBsdWdpbnMnKTtcbiAgbmV3UGx1Z2luKHBsdWdpbik7IC8vIHBsdWdpbiBuZXcg4oCUIHNjYWZmb2xkIGEgbG9jYWwgcGx1Z2luIGRpcmVjdG9yeVxuICB2YWxpZGF0ZVBsdWdpbihwbHVnaW4pOyAvLyBwbHVnaW4gdmFsaWRhdGUg4oCUIHZhbGlkYXRlIGEgbG9jYWwgcGx1Z2luIGJlZm9yZSB1cGxvYWRcbiAgdXBsb2FkUGx1Z2luKHBsdWdpbik7IC8vIHBsdWdpbiB1cGxvYWQg4oCUIHVwbG9hZCBhbmQgZGVwbG95XG4gIGdldFBsdWdpbihwbHVnaW4pOyAvLyBwbHVnaW4gZ2V0XG4gIGxpc3RQbHVnaW5zKHBsdWdpbik7IC8vIHBsdWdpbiBsaXN0XG5cbiAgLy8gdGVtcGxhdGUg4oCUIGluc3RhbnRpYXRlIGdvbGRlbi1wYXRoIHBpcGVsaW5lIHRlbXBsYXRlcywgdmFsaWRhdGUge3sgLi4uIH19IHN5bnRheFxuICBjb25zdCB0ZW1wbGF0ZSA9IHByb2dyYW0uY29tbWFuZCgndGVtcGxhdGUnKS5kZXNjcmlwdGlvbignSW5zdGFudGlhdGUgcGlwZWxpbmUgdGVtcGxhdGVzIGFuZCB2YWxpZGF0ZSB7eyAuLi4gfX0gdGVtcGxhdGUgc3ludGF4Jyk7XG4gIGluc3RhbnRpYXRlVGVtcGxhdGUodGVtcGxhdGUpOyAvLyB0ZW1wbGF0ZSBpbnN0YW50aWF0ZSDigJQgcmVuZGVyIGEgdGVtcGxhdGUgaW50byBwaXBlbGluZSBwcm9wc1xuICB2YWxpZGF0ZVRlbXBsYXRlc0NvbW1hbmQodGVtcGxhdGUpOyAvLyB0ZW1wbGF0ZSB2YWxpZGF0ZVxuXG4gIC8vIGluZnJhIOKAlCBzZXQgdXAgYW5kIG9wZXJhdGUgcGxhdGZvcm0gaW5mcmFzdHJ1Y3R1cmVcbiAgY29uc3QgaW5mcmEgPSBwcm9ncmFtLmNvbW1hbmQoJ2luZnJhJykuZGVzY3JpcHRpb24oJ1NldCB1cCBhbmQgb3BlcmF0ZSBwbGF0Zm9ybSBpbmZyYXN0cnVjdHVyZScpO1xuICBib290c3RyYXAoaW5mcmEpOyAvLyBpbmZyYSBib290c3RyYXAg4oCUIENESyB0b29sa2l0IHN0YWNrXG4gIHNldHVwRXZlbnRzKGluZnJhKTsgLy8gaW5mcmEgc2V0dXAtZXZlbnRzIOKAlCBFdmVudEJyaWRnZSBldmVudCBpbmdlc3Rpb25cbiAgcmVkcml2ZUV2ZW50cyhpbmZyYSk7IC8vIGluZnJhIHJlZHJpdmUtZXZlbnRzIOKAlCBtYW51YWwgRExRIOKGkiBxdWV1ZSByZWRyaXZlIGZhbGxiYWNrXG4gIHN0b3JlVG9rZW4oaW5mcmEpOyAvLyBpbmZyYSBzdG9yZS10b2tlbiDigJQgSldUIHRva2VuIGluIFNlY3JldHMgTWFuYWdlciBmb3IgQ0RLXG4gIHByb3Zpc2lvbihpbmZyYSk7IC8vIGluZnJhIHByb3Zpc2lvbiDigJQgQUktYXNzaXN0ZWQgZGVwbG95L3RlYXJkb3duIG9mIHRoZSBwbGF0Zm9ybVxuXG4gIC8vIGF1ZGl0IOKAlCBvcGVyYXRvciBhdWRpdHMgKGNyb24tZnJpZW5kbHk6IGV4aXQgMSBvbiBmaW5kaW5ncylcbiAgY29uc3QgYXVkaXQgPSBwcm9ncmFtLmNvbW1hbmQoJ2F1ZGl0JykuZGVzY3JpcHRpb24oJ09wZXJhdG9yIGF1ZGl0cyAoY3Jvbi1mcmllbmRseTogZXhpdCAxIG9uIGZpbmRpbmdzKScpO1xuICBhdWRpdFRva2VucyhhdWRpdCk7IC8vIGF1ZGl0IHRva2VucyDigJQgZXhwaXJpbmcgcGxhdGZvcm0gdG9rZW5zIGluIFNlY3JldHMgTWFuYWdlclxuICBhdWRpdFN0YWNrcyhhdWRpdCk7IC8vIGF1ZGl0IHN0YWNrcyDigJQgQ0ZOIHN0YWNrcyB2cyBwaXBlbGluZV9yZWdpc3RyeSBkcmlmdFxuXG4gIC8vIG9yZyDigJQgb3JnYW5pemF0aW9uIGRhdGEgb3BlcmF0aW9uc1xuICBjb25zdCBvcmcgPSBwcm9ncmFtLmNvbW1hbmQoJ29yZycpLmRlc2NyaXB0aW9uKCdPcmdhbml6YXRpb24gZGF0YSBvcGVyYXRpb25zJyk7XG4gIG9yZ0V4cG9ydChvcmcpOyAvLyBvcmcgZXhwb3J0IOKAlCBHRFBSIHBvcnRhYmlsaXR5IGV4cG9ydFxuXG4gIC8vIFNoZWxsIGNvbXBsZXRpb25zXG4gIHByaW50RGVidWcoJ1JlZ2lzdGVyaW5nIGNvbXBsZXRpb25zIGNvbW1hbmQnKTtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKCdjb21wbGV0aW9ucycpXG4gICAgLmRlc2NyaXB0aW9uKCdHZW5lcmF0ZSBzaGVsbCBjb21wbGV0aW9ucyAoYmFzaCwgenNoLCBmaXNoKScpXG4gICAgLmFyZ3VtZW50KCc8c2hlbGw+JywgJ1NoZWxsIHR5cGU6IGJhc2gsIHpzaCwgb3IgZmlzaCcpXG4gICAgLmFjdGlvbigoc2hlbGw6IHN0cmluZykgPT4ge1xuICAgICAgLy8gV2FsayBjb21tYW5kZXIncyByZWdpc3RlcmVkIHRyZWUgc28gY29tcGxldGlvbnMgbmV2ZXIgZHJpZnQgZnJvbSB0aGUgYWN0dWFsXG4gICAgICAvLyBzdXJmYWNlLiBgdG9wTGV2ZWxgIGlzIHRoZSBmaXJzdC13b3JkIHNldCAobmFtZXNwYWNlcyArIG1ldGEgY29tbWFuZHMpO1xuICAgICAgLy8gYHN1YnNgIG1hcHMgZWFjaCBuYW1lc3BhY2UgdG8gaXRzIGxlYWYgdmVyYnMgZm9yIHNlY29uZC13b3JkIGNvbXBsZXRpb24uXG4gICAgICBjb25zdCB0b3BMZXZlbCA9IHByb2dyYW0uY29tbWFuZHMubWFwKGMgPT4gYy5uYW1lKCkpLnNvcnQoKTtcbiAgICAgIGNvbnN0IHN1YnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuICAgICAgZm9yIChjb25zdCBjIG9mIHByb2dyYW0uY29tbWFuZHMpIHtcbiAgICAgICAgaWYgKGMuY29tbWFuZHMubGVuZ3RoID4gMCkgc3Vic1tjLm5hbWUoKV0gPSBjLmNvbW1hbmRzLm1hcChzID0+IHMubmFtZSgpKS5zb3J0KCk7XG4gICAgICB9XG4gICAgICBjb25zdCB0b3BMZXZlbFN0ciA9IHRvcExldmVsLmpvaW4oJyAnKTtcbiAgICAgIHN3aXRjaCAoc2hlbGwpIHtcbiAgICAgICAgY2FzZSAnYmFzaCc6IHtcbiAgICAgICAgICAvLyBUd28tbGV2ZWw6IGNvbXBsZXRlIHRoZSBncm91cCBhdCB3b3JkIDEsIGl0cyBzdWJjb21tYW5kcyBhdCB3b3JkIDIuXG4gICAgICAgICAgY29uc3QgY2FzZXMgPSBPYmplY3QuZW50cmllcyhzdWJzKVxuICAgICAgICAgICAgLm1hcCgoW25zLCBsZWF2ZXNdKSA9PiBgICAgICAgJHtuc30pIENPTVBSRVBMWT0oJChjb21wZ2VuIC1XIFwiJHtsZWF2ZXMuam9pbignICcpfVwiIC0tIFwiXFwke2N1cn1cIikpOztgKVxuICAgICAgICAgICAgLmpvaW4oJ1xcbicpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAjIHBpcGVsaW5lLW1hbmFnZXIgYmFzaCBjb21wbGV0aW9uc1xuX3BpcGVsaW5lX21hbmFnZXJfY29tcGxldGlvbnMoKSB7XG4gIGxvY2FsIGN1cj1cIlxcJHtDT01QX1dPUkRTW0NPTVBfQ1dPUkRdfVwiXG4gIGlmIFsgXCJcXCR7Q09NUF9DV09SRH1cIiAtZXEgMSBdOyB0aGVuXG4gICAgQ09NUFJFUExZPSgkKGNvbXBnZW4gLVcgXCIke3RvcExldmVsU3RyfVwiIC0tIFwiXFwke2N1cn1cIikpXG4gICAgcmV0dXJuXG4gIGZpXG4gIGNhc2UgXCJcXCR7Q09NUF9XT1JEU1sxXX1cIiBpblxuJHtjYXNlc31cbiAgZXNhY1xufVxuY29tcGxldGUgLUYgX3BpcGVsaW5lX21hbmFnZXJfY29tcGxldGlvbnMgcGlwZWxpbmUtbWFuYWdlcmApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3pzaCc6IHtcbiAgICAgICAgICBjb25zdCBjYXNlcyA9IE9iamVjdC5lbnRyaWVzKHN1YnMpXG4gICAgICAgICAgICAubWFwKChbbnMsIGxlYXZlc10pID0+IGAgICAgICAgICR7bnN9KSBfdmFsdWVzICdzdWJjb21tYW5kJyAke2xlYXZlcy5qb2luKCcgJyl9OztgKVxuICAgICAgICAgICAgLmpvaW4oJ1xcbicpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAjIHBpcGVsaW5lLW1hbmFnZXIgenNoIGNvbXBsZXRpb25zXG5fcGlwZWxpbmVfbWFuYWdlcigpIHtcbiAgaWYgKCggQ1VSUkVOVCA9PSAyICkpOyB0aGVuXG4gICAgX3ZhbHVlcyAnY29tbWFuZCcgJHt0b3BMZXZlbC5qb2luKCcgJyl9XG4gICAgcmV0dXJuXG4gIGZpXG4gIGNhc2UgXCJcXCR7d29yZHNbMl19XCIgaW5cbiR7Y2FzZXN9XG4gIGVzYWNcbn1cbmNvbXBkZWYgX3BpcGVsaW5lX21hbmFnZXIgcGlwZWxpbmUtbWFuYWdlcmApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2Zpc2gnOiB7XG4gICAgICAgICAgY29uc3QgbGluZXMgPSBbXG4gICAgICAgICAgICBgY29tcGxldGUgLWMgcGlwZWxpbmUtbWFuYWdlciAtbiAnX19maXNoX3VzZV9zdWJjb21tYW5kJyAtYSAnJHt0b3BMZXZlbFN0cn0nYCxcbiAgICAgICAgICAgIC4uLk9iamVjdC5lbnRyaWVzKHN1YnMpLm1hcCgoW25zLCBsZWF2ZXNdKSA9PlxuICAgICAgICAgICAgICBgY29tcGxldGUgLWMgcGlwZWxpbmUtbWFuYWdlciAtbiAnX19maXNoX3NlZW5fc3ViY29tbWFuZF9mcm9tICR7bnN9JyAtYSAnJHtsZWF2ZXMuam9pbignICcpfSdgKSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAjIHBpcGVsaW5lLW1hbmFnZXIgZmlzaCBjb21wbGV0aW9uc1xcbiR7bGluZXMuam9pbignXFxuJyl9YCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBVbmtub3duIHNoZWxsOiAke3NoZWxsfS4gVXNlIGJhc2gsIHpzaCwgb3IgZmlzaC5gKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgcHJpbnREZWJ1ZygnQWxsIGNvbW1hbmRzIHJlZ2lzdGVyZWQgc3VjY2Vzc2Z1bGx5Jyk7XG59XG5cbi8qKlxuICogSGFuZGxlIHByb2dyYW0gZXJyb3JzXG4gKi9cbmZ1bmN0aW9uIHNldHVwRXJyb3JIYW5kbGVycygpOiB2b2lkIHtcbiAgLy8gSGFuZGxlIHVuY2F1Z2h0IGV4Y2VwdGlvbnNcbiAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgY29uc29sZS5lcnJvcignJyk7IC8vIEVtcHR5IGxpbmVcbiAgICBwcmludEVycm9yKCdVbmNhdWdodCBleGNlcHRpb24nLCB7XG4gICAgICBlcnJvcjogZXJyb3IubWVzc2FnZSxcbiAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgfSk7XG5cbiAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuR0VORVJBTCwge1xuICAgICAgZGVidWc6IGlzRGVidWdNb2RlKHByb2dyYW0ub3B0cygpKSxcbiAgICAgIGV4aXQ6IHRydWUsXG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIHR5cGU6ICd1bmNhdWdodEV4Y2VwdGlvbicsXG4gICAgICB9LFxuICAgIH0pO1xuICB9KTtcblxuICAvLyBIYW5kbGUgdW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uc1xuICBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAocmVhc29uOiB1bmtub3duKSA9PiB7XG4gICAgY29uc29sZS5lcnJvcignJyk7IC8vIEVtcHR5IGxpbmVcbiAgICBwcmludEVycm9yKCdVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb24nLCB7XG4gICAgICByZWFzb246IGVycm9yTWVzc2FnZShyZWFzb24pLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZXJyb3IgPSByZWFzb24gaW5zdGFuY2VvZiBFcnJvciA/IHJlYXNvbjogbmV3IEVycm9yKFN0cmluZyhyZWFzb24pKTtcblxuICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5HRU5FUkFMLCB7XG4gICAgICBkZWJ1ZzogaXNEZWJ1Z01vZGUocHJvZ3JhbS5vcHRzKCkpLFxuICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgdHlwZTogJ3VuaGFuZGxlZFJlamVjdGlvbicsXG4gICAgICB9LFxuICAgIH0pO1xuICB9KTtcblxuICAvLyBIYW5kbGUgU0lHSU5UIChDdHJsK0MpXG4gIHByb2Nlc3Mub24oJ1NJR0lOVCcsICgpID0+IHtcbiAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICBwcmludFdhcm5pbmcoJ1Byb2Nlc3MgaW50ZXJydXB0ZWQgYnkgdXNlciAoU0lHSU5UKScpO1xuICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgIHByb2Nlc3MuZXhpdCgxMzApOyAvLyBTdGFuZGFyZCBleGl0IGNvZGUgZm9yIFNJR0lOVFxuICB9KTtcblxuICAvLyBIYW5kbGUgU0lHVEVSTVxuICBwcm9jZXNzLm9uKCdTSUdURVJNJywgKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgIHByaW50V2FybmluZygnUHJvY2VzcyB0ZXJtaW5hdGVkIChTSUdURVJNKScpO1xuICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgIHByb2Nlc3MuZXhpdCgxNDMpOyAvLyBTdGFuZGFyZCBleGl0IGNvZGUgZm9yIFNJR1RFUk1cbiAgfSk7XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBDTEkgd2l0aCBvcHRpb25zXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBDTEkgaW5pdGlhbGl6YXRpb24gb3B0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZUNsaShvcHRpb25zOiBDbGlPcHRpb25zID0ge30pOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIHNob3dCYW5uZXIgPSB0cnVlLFxuICAgIG1pbmltYWxCYW5uZXIgPSBmYWxzZSxcbiAgICBkZWJ1ZyA9IGZhbHNlLFxuICAgIHZlcmJvc2UgPSBmYWxzZSxcbiAgICBxdWlldCA9IGZhbHNlLFxuICAgIG5vQ29sb3IgPSBmYWxzZSxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgLy8gSGFuZGxlIGNvbG9yIG91dHB1dFxuICBpZiAobm9Db2xvcikge1xuICAgIHByb2Nlc3MuZW52Lk5PX0NPTE9SID0gJzEnO1xuICB9XG5cbiAgLy8gRGlzcGxheSBiYW5uZXJcbiAgaWYgKHNob3dCYW5uZXIgJiYgIXF1aWV0KSB7XG4gICAgaWYgKG1pbmltYWxCYW5uZXIpIHtcbiAgICAgIG1pbmlCYW5uZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYmFubmVyKHtcbiAgICAgICAgbWluaW1hbDogZmFsc2UsXG4gICAgICAgIHNob3dEZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgICAgc2hvd1RpbWVzdGFtcDogZGVidWcgfHwgdmVyYm9zZSxcbiAgICAgICAgc2hvd0V4ZWN1dGlvbklkOiBkZWJ1ZyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIERpc3BsYXkgc3RhcnR1cCBpbmZvXG4gIGRpc3BsYXlTdGFydHVwSW5mbyh7IGRlYnVnLCB2ZXJib3NlLCBxdWlldCB9KTtcblxuICAvLyBDaGVjayBlbnZpcm9ubWVudFxuICBpZiAoIXF1aWV0KSB7XG4gICAgY2hlY2tFbnZpcm9ubWVudCgpO1xuICB9XG5cbiAgLy8gU2V0dXAgZXJyb3IgaGFuZGxlcnNcbiAgc2V0dXBFcnJvckhhbmRsZXJzKCk7XG5cbiAgLy8gUmVnaXN0ZXIgY29tbWFuZHNcbiAgdHJ5IHtcbiAgICByZWdpc3RlckNvbW1hbmRzKCk7XG4gICAgcHJpbnREZWJ1ZygnQ0xJIGluaXRpYWxpemF0aW9uIGNvbXBsZXRlJyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcHJpbnRFcnJvcignQ0xJIGluaXRpYWxpemF0aW9uIGZhaWxlZCcsIHtcbiAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyb3IpLFxuICAgIH0pO1xuXG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkNPTkZJR1VSQVRJT04sIHtcbiAgICAgIGRlYnVnOiBkZWJ1ZyB8fCBpc0RlYnVnTW9kZSgpLFxuICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgc3RhZ2U6ICdpbml0aWFsaXphdGlvbicsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogUGFyc2UgY29tbWFuZCBsaW5lIGFyZ3VtZW50c1xuICovXG5mdW5jdGlvbiBwYXJzZUFyZ3VtZW50cygpOiB2b2lkIHtcbiAgdHJ5IHtcbiAgICBwcm9ncmFtLnBhcnNlKHByb2Nlc3MuYXJndik7XG5cbiAgICAvLyBTaG93IGhlbHAgaWYgbm8gY29tbWFuZCBwcm92aWRlZFxuICAgIGNvbnN0IGFyZ3MgPSBwcm9jZXNzLmFyZ3Yuc2xpY2UoMik7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICBwcmludEluZm8oJ05vIGNvbW1hbmQgc3BlY2lmaWVkIC0gZGlzcGxheWluZyBoZWxwJyk7XG4gICAgICBjb25zb2xlLmxvZygnJyk7IC8vIEVtcHR5IGxpbmVcbiAgICAgIHByb2dyYW0ub3V0cHV0SGVscCgpO1xuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGNvbW1hbmQgZXhpc3RzXG4gICAgY29uc3QgY29tbWFuZCA9IGFyZ3NbMF07XG4gICAgaWYgKGNvbW1hbmQgJiYgIWNvbW1hbmQuc3RhcnRzV2l0aCgnLScpKSB7XG4gICAgICBjb25zdCBjb21tYW5kRXhpc3RzID0gcHJvZ3JhbS5jb21tYW5kcy5zb21lKGNtZCA9PiBjbWQubmFtZSgpID09PSBjb21tYW5kKTtcblxuICAgICAgaWYgKCFjb21tYW5kRXhpc3RzKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgICAgICBwcmludEVycm9yKGBVbmtub3duIGNvbW1hbmQ6ICR7Y29tbWFuZH1gKTtcbiAgICAgICAgY29uc29sZS5sb2coJycpOyAvLyBFbXB0eSBsaW5lXG4gICAgICAgIHByaW50SW5mbygnQXZhaWxhYmxlIGNvbW1hbmRzOicpO1xuICAgICAgICBwcm9ncmFtLmNvbW1hbmRzLmZvckVhY2goY21kID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgIOKAoiAke2NtZC5uYW1lKCl9IC0gJHtjbWQuZGVzY3JpcHRpb24oKX1gKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTsgLy8gRW1wdHkgbGluZVxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJpbnREZWJ1ZygnQ29tbWFuZCBsaW5lIGFyZ3VtZW50cyBwYXJzZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkdFTkVSQUwsIHtcbiAgICAgIGRlYnVnOiBpc0RlYnVnTW9kZShwcm9ncmFtLm9wdHMoKSksXG4gICAgICBleGl0OiB0cnVlLFxuICAgICAgY29udGV4dDoge1xuICAgICAgICBzdGFnZTogJ2FyZ3VtZW50LXBhcnNpbmcnLFxuICAgICAgICBhcmd2OiBwcm9jZXNzLmFyZ3YsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogTWFpbiBDTEkgZW50cnkgcG9pbnRcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENMSSBpbml0aWFsaXphdGlvbiBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIFN0YW5kYXJkIGluaXRpYWxpemF0aW9uXG4gKiBtYWluKCk7XG4gKlxuICogLy8gTWluaW1hbCBtb2RlXG4gKiBtYWluKHsgbWluaW1hbEJhbm5lcjogdHJ1ZSwgcXVpZXQ6IHRydWUgfSk7XG4gKlxuICogLy8gRGVidWcgbW9kZVxuICogbWFpbih7IGRlYnVnOiB0cnVlLCB2ZXJib3NlOiB0cnVlIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWluKG9wdGlvbnM6IENsaU9wdGlvbnMgPSB7fSk6IHZvaWQge1xuICB0cnkge1xuICAgIC8vIEluaXRpYWxpemUgQ0xJXG4gICAgaW5pdGlhbGl6ZUNsaShvcHRpb25zKTtcblxuICAgIC8vIFBhcnNlIGFyZ3VtZW50cyBhbmQgZXhlY3V0ZSBjb21tYW5kXG4gICAgcGFyc2VBcmd1bWVudHMoKTtcblxuICAgIC8vIElmIHdlIHJlYWNoIGhlcmUsIGNvbW1hbmQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseVxuICAgIHByaW50RGVidWcoJ0NMSSBleGVjdXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseScpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIEZpbmFsIGNhdGNoLWFsbCBlcnJvciBoYW5kbGVyXG4gICAgY29uc29sZS5lcnJvcignJyk7IC8vIEVtcHR5IGxpbmVcbiAgICBwcmludEVycm9yKCdGYXRhbCBDTEkgZXJyb3InLCB7XG4gICAgICBlcnJvcjogZXJyb3JNZXNzYWdlKGVycm9yKSxcbiAgICB9KTtcblxuICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5HRU5FUkFMLCB7XG4gICAgICBkZWJ1ZzogaXNEZWJ1Z01vZGUob3B0aW9ucyksXG4gICAgICBleGl0OiB0cnVlLFxuICAgICAgY29udGV4dDoge1xuICAgICAgICBzdGFnZTogJ21haW4nLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFJ1biBDTEkgaWYgZXhlY3V0ZWQgZGlyZWN0bHkuIEVTTSBoYXMgbm8gYHJlcXVpcmUubWFpbmA7IGNvbXBhcmUgdGhlIGludm9rZWRcbiAqIHNjcmlwdCB0byB0aGlzIG1vZHVsZSdzIHBhdGgsIHJlc29sdmluZyBzeW1saW5rcyBvbiBib3RoIHNpZGVzIHNvIHRoZSBgYmluYFxuICogc3ltbGluayAobm9kZV9tb2R1bGVzLy5iaW4vcGlwZWxpbmUtbWFuYWdlciDihpIgZGlzdC9jbGkuanMpIHN0aWxsIG1hdGNoZXMuXG4gKi9cbmNvbnN0IGludm9rZWRTY3JpcHQgPSBwcm9jZXNzLmFyZ3ZbMV07XG5jb25zdCBpc01haW5Nb2R1bGUgPSBpbnZva2VkU2NyaXB0ICE9PSB1bmRlZmluZWRcbiAgJiYgcmVhbHBhdGhTeW5jKGludm9rZWRTY3JpcHQpID09PSByZWFscGF0aFN5bmMoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKTtcbmlmIChpc01haW5Nb2R1bGUpIHtcbiAgLy8gUGFyc2UgQ0xJIG9wdGlvbnMgZnJvbSBlbnZpcm9ubWVudCBvciBjb21tYW5kIGxpbmVcbiAgY29uc3Qgb3B0aW9uczogQ2xpT3B0aW9ucyA9IHtcbiAgICBkZWJ1ZzogcHJvY2Vzcy5lbnYuREVCVUcgPT09ICd0cnVlJyxcbiAgICBxdWlldDogcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKCctLXF1aWV0JyksXG4gICAgdmVyYm9zZTogcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKCctLXZlcmJvc2UnKSxcbiAgICBub0NvbG9yOiBwcm9jZXNzLmFyZ3YuaW5jbHVkZXMoJy0tbm8tY29sb3InKSB8fCBwcm9jZXNzLmVudi5OT19DT0xPUiA9PT0gJzEnLFxuICB9O1xuXG4gIG1haW4ob3B0aW9ucyk7XG59Il19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { isOpaqueApiKey } from '@pipeline-builder/api-core';
|
|
3
|
+
import { errorMessage, isOpaqueApiKey } from '@pipeline-builder/api-core';
|
|
4
4
|
import { CoreConstants } from '@pipeline-builder/pipeline-core';
|
|
5
5
|
import { Command } from 'commander';
|
|
6
6
|
import { resolveAwsRegion } from '../utils/aws-env.js';
|
|
@@ -66,7 +66,7 @@ export function auditTokens(program) {
|
|
|
66
66
|
raw = await getSecretValue(s.name, { region, profile: options.profile });
|
|
67
67
|
}
|
|
68
68
|
catch (err) {
|
|
69
|
-
printWarning(`Could not read ${s.name}: ${
|
|
69
|
+
printWarning(`Could not read ${s.name}: ${errorMessage(err)}`);
|
|
70
70
|
continue;
|
|
71
71
|
}
|
|
72
72
|
let parsed;
|
|
@@ -161,4 +161,4 @@ export function auditTokens(program) {
|
|
|
161
161
|
}
|
|
162
162
|
});
|
|
163
163
|
}
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtdG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2F1ZGl0LXRva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQVkzRzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLE9BQWdCO0lBQzFDLGlCQUFpQixDQUNmLGdCQUFnQixDQUFDLE9BQU87U0FDckIsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUNqQixXQUFXLENBQUMsb0ZBQW9GLENBQUMsQ0FBQyxDQUN0RztTQUNFLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSwrQ0FBK0MsRUFBRSxHQUFHLENBQUM7U0FDbEYsTUFBTSxDQUFDLG1CQUFtQixFQUFFLHFDQUFxQyxFQUFFLEdBQUcsYUFBYSxDQUFDLG1CQUFtQixHQUFHLENBQUM7U0FDM0csTUFBTSxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxL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QUU7Z0NBQzFCLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxlQUFlLE9BQU8sQ0FBQyxDQUFDLGVBQWUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ2pGLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQztvQkFDN0MsQ0FBQztvQkFDRCxVQUFVLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxVQUFVLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcseUhBQXlILENBQUMsQ0FBQztnQkFDaE0sQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsV0FBVyxFQUFFO2dCQUMxQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUs7Z0JBQzNCLElBQUksRUFBRSxLQUFLO2dCQUNYLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFO2FBQ2xELENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBpc09wYXF1ZUFwaUtleSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IENvcmVDb25zdGFudHMgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1jb3JlJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgcmVzb2x2ZUF3c1JlZ2lvbiB9IGZyb20gJy4uL3V0aWxzL2F3cy1lbnYuanMnO1xuaW1wb3J0IHsgZ2V0U2VjcmV0VmFsdWUsIGxpc3RTZWNyZXRzIH0gZnJvbSAnLi4vdXRpbHMvYXdzLXNlY3JldHMuanMnO1xuaW1wb3J0IHsgcHJpbnRDb21tYW5kSGVhZGVyLCB3aXRoUHJvZmlsZU9wdGlvbiwgd2l0aFJlZ2lvbk9wdGlvbiB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuXG5pbnRlcmZhY2UgVG9rZW5BdWRpdEVudHJ5IHtcbiAgc2VjcmV0TmFtZTogc3RyaW5nO1xuICBhcm46IHN0cmluZztcbiAgZXhwaXJlc0F0OiBEYXRlO1xuICBkYXlzVW50aWxFeHBpcnk6IG51bWJlcjtcbiAgc3RhdHVzOiAnZXhwaXJlZCcgfCAnZXhwaXJpbmctc29vbicgfCAndW52ZXJpZmlhYmxlJyB8ICdvayc7XG4gIC8qKiBXaHkgdGhlIHN0b3JlZCB0b2tlbiBmYWlsZWQgdmVyaWZpY2F0aW9uLCB3aGVuIGBzdGF0dXNgIGlzIGB1bnZlcmlmaWFibGVgLiAqL1xuICByZWFzb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgYXVkaXQtdG9rZW5zYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIFNjYW5zIEFXUyBTZWNyZXRzIE1hbmFnZXIgZm9yIHN0b3JlZCBwbGF0Zm9ybSBKV1RzIChtYXRjaGluZyB0aGVcbiAqIGBwaXBlbGluZS1idWlsZGVyLzxvcmdJZD4vcGxhdGZvcm1gIG5hbWluZyBjb252ZW50aW9uIHVzZWQgYnkgYHN0b3JlLXRva2VuYClcbiAqIGFuZCByZXBvcnRzIHdoaWNoIHNlY3JldHMgYXJlIGV4cGlyZWQgb3IgY2xvc2UgdG8gZXhwaXJpbmcuXG4gKlxuICogRGVzaWduZWQgZm9yIGNyb24gdXNlOlxuICogICAtIEV4aXRzIDAgd2hlbiBub3RoaW5nIGlzIGF0LXJpc2suXG4gKiAgIC0gRXhpdHMgMSB3aGVuIGF0IGxlYXN0IG9uZSBzZWNyZXQgaXMgZXhwaXJlZCBvciBleHBpcmVzIHdpdGhpbiBgLS13YXJuLWRheXNgLlxuICogICAtIEV4aXRzIDIgb24gQVdTIGVycm9ycyAvIHNjYW4gZmFpbHVyZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXVkaXQgdG9rZW5zIC0tcmVnaW9uIHVzLWVhc3QtMSAtLXdhcm4tZGF5cyA3XG4gKiBwaXBlbGluZS1tYW5hZ2VyIGF1ZGl0IHRva2VucyAtLXJlZ2lvbiB1cy1lYXN0LTEgLS1qc29uXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF1ZGl0VG9rZW5zKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgd2l0aFByb2ZpbGVPcHRpb24oXG4gICAgd2l0aFJlZ2lvbk9wdGlvbihwcm9ncmFtXG4gICAgICAuY29tbWFuZCgndG9rZW5zJylcbiAgICAgIC5kZXNjcmlwdGlvbignU2NhbiBzdG9yZWQgcGxhdGZvcm0gdG9rZW5zIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIgYW5kIHJlcG9ydCB1cGNvbWluZyBleHBpcmF0aW9ucycpKSxcbiAgKVxuICAgIC5vcHRpb24oJy0td2Fybi1kYXlzIDxkYXlzPicsICdGbGFnIHRva2VucyBleHBpcmluZyB3aXRoaW4gTiBkYXlzIGFzIGF0LXJpc2snLCAnNycpXG4gICAgLm9wdGlvbignLS1wcmVmaXggPHByZWZpeD4nLCAnU2VjcmV0cyBNYW5hZ2VyIG5hbWUgcHJlZml4IHRvIHNjYW4nLCBgJHtDb3JlQ29uc3RhbnRzLlNFQ1JFVFNfUEFUSF9QUkVGSVh9L2ApXG4gICAgLm9wdGlvbignLS1qc29uJywgJ091dHB1dCByZXN1bHRzIGFzIEpTT04nLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignQXVkaXQgVG9rZW5zJywgdW5kZWZpbmVkLCB7IHF1aWV0OiBvcHRpb25zLmpzb24gfSk7XG4gICAgICBjb25zdCByZWdpb24gPSByZXNvbHZlQXdzUmVnaW9uKG9wdGlvbnMucmVnaW9uKTtcbiAgICAgIGNvbnN0IHdhcm5EYXlzID0gcGFyc2VJbnQob3B0aW9ucy53YXJuRGF5cywgMTApO1xuICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUod2FybkRheXMpIHx8IHdhcm5EYXlzIDwgMCkge1xuICAgICAgICBwcmludEVycm9yKCdJbnZhbGlkIC0td2Fybi1kYXlzIHZhbHVlJywgeyBwcm92aWRlZDogb3B0aW9ucy53YXJuRGF5cyB9KTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDIpO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBQcm9ncmVzcyBnb2VzIHRvIHN0ZG91dCwgc28gc3VwcHJlc3MgaXQgaW4gLS1qc29uIG1vZGUgdG8ga2VlcCB0aGUgSlNPTiBwYXlsb2FkIGNsZWFuIGZvciBwaXBpbmcuXG4gICAgICAgIGlmICghb3B0aW9ucy5qc29uKSBwcmludEluZm8oJ0xpc3Rpbmcgc2VjcmV0cycsIHsgcmVnaW9uLCBwcmVmaXg6IG9wdGlvbnMucHJlZml4IH0pO1xuICAgICAgICBjb25zdCB7IHNlY3JldHMsIHRydW5jYXRlZCB9ID0gYXdhaXQgbGlzdFNlY3JldHMob3B0aW9ucy5wcmVmaXgsIHsgcmVnaW9uLCBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfSk7XG4gICAgICAgIGlmICh0cnVuY2F0ZWQpIHtcbiAgICAgICAgICAvLyBBIHRydW5jYXRlZCBzd2VlcCBtZWFucyBhbiBleHBpcmluZyB0b2tlbiBwYXN0IHRoZSBjYXAgY291bGQgYmUgbWlzc2VkIOKAlFxuICAgICAgICAgIC8vIG5ldmVyIHJlcG9ydCBcImFsbCBjbGVhclwiIGZyb20gYW4gaW5jb21wbGV0ZSBzY2FuIChtaXJyb3JzIGF1ZGl0LXN0YWNrcykuXG4gICAgICAgICAgcHJpbnRXYXJuaW5nKCdTZWNyZXQgbGlzdGluZyB3YXMgVFJVTkNBVEVEIChwYWdpbmcgY2FwIGhpdCkg4oCUIHJlc3VsdHMgbWF5IGJlIElOQ09NUExFVEUgYW5kIGFuIGV4cGlyaW5nIHRva2VuIGNvdWxkIGJlIG1pc3NlZC4gTmFycm93IGJ5IC0tcHJlZml4Ly0tcmVnaW9uLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXVkaXQgZXZlcnkgc3RvcmVkIG1hY2hpbmUgY3JlZGVudGlhbDogdGhlIGZ1bGwtcHJpdmlsZWdlIHBsYXRmb3JtIGtleVxuICAgICAgICAvLyAoYDxwcmVmaXg+LzxvcmdJZD4vcGxhdGZvcm1gKSBhbmQgZWFjaCBTQ09QRUQgb25lIChgLi4uL3JlcG9ydGluZy1pbmdlc3RgLFxuICAgICAgICAvLyBgLi4uL3JlZ2lzdHJ5LXB1c2hgLCBmcm9tIGBzdG9yZS10b2tlbiAtLXNjb3BlIOKApmApLiBBbGwgZXhwaXJlIGFuZCBhbGxcbiAgICAgICAgLy8gYXJlIGF1dG8tcm90YXRlZCwgc28gYSBzdGFsbGVkIHJvdGF0aW9uIG9uIGFueSBvZiB0aGVtIG11c3Qgc3VyZmFjZSBoZXJlLlxuICAgICAgICBjb25zdCBDUkVERU5USUFMX0xFQVZFUyA9IFsnL3BsYXRmb3JtJywgJy9yZXBvcnRpbmctaW5nZXN0JywgJy9yZWdpc3RyeS1wdXNoJ107XG4gICAgICAgIGNvbnN0IHBsYXRmb3JtU2VjcmV0cyA9IHNlY3JldHMuZmlsdGVyKChzKSA9PiBDUkVERU5USUFMX0xFQVZFUy5zb21lKChsZWFmKSA9PiBzLm5hbWUuZW5kc1dpdGgobGVhZikpKTtcblxuICAgICAgICBjb25zdCBlbnRyaWVzOiBUb2tlbkF1ZGl0RW50cnlbXSA9IFtdO1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCB3YXJuQ3V0b2ZmID0gbm93ICsgd2FybkRheXMgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4gICAgICAgIGZvciAoY29uc3QgcyBvZiBwbGF0Zm9ybVNlY3JldHMpIHtcbiAgICAgICAgICBsZXQgcmF3OiBzdHJpbmc7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJhdyA9IGF3YWl0IGdldFNlY3JldFZhbHVlKHMubmFtZSwgeyByZWdpb24sIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSB9KTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHByaW50V2FybmluZyhgQ291bGQgbm90IHJlYWQgJHtzLm5hbWV9OiAke2VyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKX1gKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBwYXJzZWQ6IHsgcGFzc3dvcmQ/OiBzdHJpbmc7IGV4cGlyZXNBdD86IHN0cmluZzsgcGxhdGZvcm1Vcmw/OiBzdHJpbmcgfTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcGFyc2VkID0gSlNPTi5wYXJzZShyYXcpO1xuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGBTZWNyZXQgJHtzLm5hbWV9IGlzIG5vdCB2YWxpZCBKU09OLCBza2lwcGluZ2ApO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gYGV4cGlyZXNBdGAgaXMgdGhlIE9OTFkgZXhwaXJ5IHNvdXJjZSBub3cuIFRoZSBzdG9yZWQgY3JlZGVudGlhbCBpcyBhblxuICAgICAgICAgIC8vIG9wYXF1ZSBzZXJ2aWNlLWFjY291bnQga2V5OiBpdCBjYXJyaWVzIG5vIGNsYWltcywgc28gdGhlcmUgaXMgbm8gYGV4cGBcbiAgICAgICAgICAvLyB0byBkZWNvZGUgYXMgYSBmYWxsYmFjayDigJQgd2hpY2ggaXMgZXhhY3RseSB3aHkgc3RvcmUtdG9rZW4gYW5kIHRoZVxuICAgICAgICAgIC8vIHJvdGF0b3IgYm90aCB3cml0ZSB0aGUgZmllbGQuXG4gICAgICAgICAgbGV0IGV4cGlyZXNBdDogRGF0ZSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBpZiAocGFyc2VkLmV4cGlyZXNBdCkge1xuICAgICAgICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKHBhcnNlZC5leHBpcmVzQXQpO1xuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4oZC5nZXRUaW1lKCkpKSBleHBpcmVzQXQgPSBkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWV4cGlyZXNBdCkge1xuICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGBTZWNyZXQgJHtzLm5hbWV9IGhhcyBubyBleHBpcnkgaW5mb3JtYXRpb24sIHNraXBwaW5nYCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBkYXlzVW50aWxFeHBpcnkgPSBNYXRoLmZsb29yKChleHBpcmVzQXQuZ2V0VGltZSgpIC0gbm93KSAvICgyNCAqIDYwICogNjAgKiAxMDAwKSk7XG4gICAgICAgICAgbGV0IHN0YXR1czogVG9rZW5BdWRpdEVudHJ5WydzdGF0dXMnXSA9XG4gICAgICAgICAgICBleHBpcmVzQXQuZ2V0VGltZSgpIDwgbm93ID8gJ2V4cGlyZWQnXG4gICAgICAgICAgICAgIDogZXhwaXJlc0F0LmdldFRpbWUoKSA8IHdhcm5DdXRvZmYgPyAnZXhwaXJpbmctc29vbidcbiAgICAgICAgICAgICAgICA6ICdvayc7XG5cbiAgICAgICAgICAvLyBBIHNlY3JldCB0aGF0IHN0aWxsIGhhcyBtb250aHMgb2YgbGlmZSBidXQgaG9sZHMgdGhlIFdST05HIEtJTkQgb2ZcbiAgICAgICAgICAvLyBjcmVkZW50aWFsIGlzIGp1c3QgYXMgZGVhZCBhcyBhbiBleHBpcmVkIG9uZS4gQWZ0ZXIgdGhlIHNlcnZpY2UtYWNjb3VudFxuICAgICAgICAgIC8vIGN1dG92ZXIgdGhlIHN0b3JlZCB2YWx1ZSBtdXN0IGJlIGFuIG9wYXF1ZSBgcGJfc2Ff4oCmYCBrZXk7IGEgc2VjcmV0IGxlZnRcbiAgICAgICAgICAvLyBob2xkaW5nIGEgcHJlLWN1dG92ZXIgbWFjaGluZS1zZXNzaW9uIEpXVCBpcyByZWZ1c2VkIGJ5IGV2ZXJ5IGNvbnN1bWVyLFxuICAgICAgICAgIC8vIGFuZCB0aGlzIGlzIHRoZSBzY2FuIHRoYXQgbmFtZXMgaXQgaW5zdGVhZCBvZiBsZWF2aW5nIHRocmVlIHNlcnZpY2VzIHRvXG4gICAgICAgICAgLy8gZmFpbCB3aXRoIGFuIG9wYXF1ZSA0MDEuXG4gICAgICAgICAgbGV0IHJlYXNvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdleHBpcmVkJyAmJiBwYXJzZWQucGFzc3dvcmQgJiYgIWlzT3BhcXVlQXBpS2V5KHBhcnNlZC5wYXNzd29yZCkpIHtcbiAgICAgICAgICAgIHN0YXR1cyA9ICd1bnZlcmlmaWFibGUnO1xuICAgICAgICAgICAgcmVhc29uID0gcGFyc2VkLnBhc3N3b3JkLnNwbGl0KCcuJykubGVuZ3RoID09PSAzXG4gICAgICAgICAgICAgID8gJ2hvbGRzIGEgcHJlLWN1dG92ZXIgSldULCBub3QgYSBzZXJ2aWNlLWFjY291bnQga2V5IOKAlCByZS1ydW4gXCJwaXBlbGluZS1tYW5hZ2VyIGluZnJhIHN0b3JlLXRva2VuXCInXG4gICAgICAgICAgICAgIDogJ2RvZXMgbm90IGhvbGQgYW4gb3BhcXVlIHNlcnZpY2UtYWNjb3VudCBrZXkgKGV4cGVjdGVkIGEgXCJwYl9zYV/igKZcIiB2YWx1ZSknO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbnRyaWVzLnB1c2goeyBzZWNyZXROYW1lOiBzLm5hbWUsIGFybjogcy5hcm4sIGV4cGlyZXNBdCwgZGF5c1VudGlsRXhwaXJ5LCBzdGF0dXMsIC4uLihyZWFzb24gPyB7IHJlYXNvbiB9IDoge30pIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXRSaXNrID0gZW50cmllcy5maWx0ZXIoKGUpID0+IGUuc3RhdHVzICE9PSAnb2snKTtcbiAgICAgICAgLy8gQSB0cnVuY2F0ZWQgc2NhbiBpcyBpdHNlbGYgYSBmYWlsdXJlIGNvbmRpdGlvbjogZXhpdCBub24temVybyBzbyBjcm9uXG4gICAgICAgIC8vIGRvZXNuJ3QgcmVhZCBhbiBpbmNvbXBsZXRlIFwiYWxsIGNsZWFyXCIgYXMgc3VjY2Vzcy5cbiAgICAgICAgY29uc3QgZXhpdENvZGUgPSAoYXRSaXNrLmxlbmd0aCA+IDAgfHwgdHJ1bmNhdGVkKSA/IDEgOiAwO1xuXG4gICAgICAgIGlmIChvcHRpb25zLmpzb24pIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBzY2FubmVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICAgIHdhcm5EYXlzLFxuICAgICAgICAgICAgdG90YWxTY2FubmVkOiBlbnRyaWVzLmxlbmd0aCxcbiAgICAgICAgICAgIGF0Umlza0NvdW50OiBhdFJpc2subGVuZ3RoLFxuICAgICAgICAgICAgdHJ1bmNhdGVkLFxuICAgICAgICAgICAgZW50cmllczogZW50cmllcy5tYXAoKGUpID0+ICh7IC4uLmUsIGV4cGlyZXNBdDogZS5leHBpcmVzQXQudG9JU09TdHJpbmcoKSB9KSksXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICB9LCBudWxsLCAyKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJpbnRTZWN0aW9uKCdBdWRpdCBSZXN1bHRzJyk7XG4gICAgICAgICAgcHJpbnRJbmZvKGBTY2FubmVkICR7ZW50cmllcy5sZW5ndGh9IHBsYXRmb3JtIHNlY3JldCR7ZW50cmllcy5sZW5ndGggPT09IDEgPyAnJyA6ICdzJ31gKTtcbiAgICAgICAgICBpZiAoYXRSaXNrLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKHRydW5jYXRlZCkge1xuICAgICAgICAgICAgICBwcmludFdhcm5pbmcoJ05vIGF0LXJpc2sgdG9rZW5zIGluIHRoZSBzY2FubmVkIHBhZ2VzLCBidXQgdGhlIHNjYW4gd2FzIHRydW5jYXRlZCDigJQgc29tZSBzZWNyZXRzIHdlcmUgbm90IGNoZWNrZWQuJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwcmludFN1Y2Nlc3MoYEFsbCBzdG9yZWQga2V5cyB2YWxpZCBmb3IgYXQgbGVhc3QgJHt3YXJuRGF5c30gZGF5c2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGUgb2YgYXRSaXNrKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gZS5zdGF0dXMgPT09ICdleHBpcmVkJ1xuICAgICAgICAgICAgICAgID8gYEVYUElSRUQgJHtNYXRoLmFicyhlLmRheXNVbnRpbEV4cGlyeSl9IGRheSR7ZS5kYXlzVW50aWxFeHBpcnkgPT09IC0xID8gJycgOiAncyd9IGFnb2BcbiAgICAgICAgICAgICAgICA6IGUuc3RhdHVzID09PSAndW52ZXJpZmlhYmxlJ1xuICAgICAgICAgICAgICAgICAgPyBgVU5VU0FCTEUg4oCUICR7ZS5yZWFzb259YFxuICAgICAgICAgICAgICAgICAgOiBgZXhwaXJlcyBpbiAke2UuZGF5c1VudGlsRXhwaXJ5fSBkYXkke2UuZGF5c1VudGlsRXhwaXJ5ID09PSAxID8gJycgOiAncyd9YDtcbiAgICAgICAgICAgICAgcHJpbnRXYXJuaW5nKGAke2Uuc2VjcmV0TmFtZX0g4oCUICR7bGFiZWx9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmludEVycm9yKGAke2F0Umlzay5sZW5ndGh9IHNlY3JldCR7YXRSaXNrLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnfSBuZWVkIHJvdGF0aW9uLiBSdW4gXFxgcGlwZWxpbmUtbWFuYWdlciBpbmZyYSBzdG9yZS10b2tlbiAtLWRheXMgPE4+XFxgIChhZGQgLS1zY29wZSBmb3IgYSBzY29wZWQgY3JlZGVudGlhbCkgdG8gcmVpc3N1ZS5gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzcy5leGl0KGV4aXRDb2RlKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiBmYWxzZSxcbiAgICAgICAgICBjb250ZXh0OiB7IGNvbW1hbmQ6ICdhdWRpdC10b2tlbnMnLCBleGVjdXRpb25JZCB9LFxuICAgICAgICB9KTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDIpO1xuICAgICAgfVxuICAgIH0pO1xufVxuIl19
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtdG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2F1ZGl0LXRva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFZM0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxPQUFnQjtJQUMxQyxpQkFBaUIsQ0FDZixnQkFBZ0IsQ0FBQyxPQUFPO1NBQ3JCLE9BQU8sQ0FBQyxRQUFRLENBQUM7U0FDakIsV0FBVyxDQUFDLG9GQUFvRixDQUFDLENBQUMsQ0FDdEc7U0FDRSxNQUFNLENBQUMsb0JBQW9CLEVBQUUsK0NBQStDLEVBQUUsR0FBRyxDQUFDO1NBQ2xGLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxxQ0FBcUMsRUFBRSxHQUFHLGFBQWEsQ0FBQyxtQkFBbUIsR0FBRyxDQUFDO1NBQzNHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxDQUFDO1NBQ2pELE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDeEIsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQUMsY0FBYyxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzRixNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9DLFVBQVUsQ0FBQywyQkFBMkIsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUN4RSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDSCxvR0FBb0c7WUFDcEcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO2dCQUFFLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDcEYsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUN2RyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLDJFQUEyRTtnQkFDM0UsMkVBQTJFO2dCQUMzRSxZQUFZLENBQUMsK0lBQStJLENBQUMsQ0FBQztZQUNoSyxDQUFDO1lBRUQseUVBQXlFO1lBQ3pFLDZFQUE2RTtZQUM3RSx5RUFBeUU7WUFDekUsNEVBQTRFO1lBQzVFLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUMvRSxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV2RyxNQUFNLE9BQU8sR0FBc0IsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2QixNQUFNLFVBQVUsR0FBRyxHQUFHLEdBQUcsUUFBUSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztZQUV4RCxLQUFLLE1BQU0sQ0FBQyxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLEdBQVcsQ0FBQztnQkFDaEIsSUFBSSxDQUFDO29CQUNILEdBQUcsR0FBRyxNQUFNLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDM0UsQ0FBQztnQkFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO29CQUNiLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUMvRCxTQUFTO2dCQUNYLENBQUM7Z0JBRUQsSUFBSSxNQUF1RSxDQUFDO2dCQUM1RSxJQUFJLENBQUM7b0JBQ0gsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNCLENBQUM7Z0JBQUMsTUFBTSxDQUFDO29CQUNQLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLDhCQUE4QixDQUFDLENBQUM7b0JBQzdELFNBQVM7Z0JBQ1gsQ0FBQztnQkFFRCx5RUFBeUU7Z0JBQ3pFLHlFQUF5RTtnQkFDekUscUVBQXFFO2dCQUNyRSxnQ0FBZ0M7Z0JBQ2hDLElBQUksU0FBMkIsQ0FBQztnQkFDaEMsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ3JCLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUFFLFNBQVMsR0FBRyxDQUFDLENBQUM7Z0JBQ2hELENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNmLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLHNDQUFzQyxDQUFDLENBQUM7b0JBQ3JFLFNBQVM7Z0JBQ1gsQ0FBQztnQkFFRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDeEYsSUFBSSxNQUFNLEdBQ1IsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUztvQkFDbkMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLGVBQWU7d0JBQ2xELENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBRWIscUVBQXFFO2dCQUNyRSwwRUFBMEU7Z0JBQzFFLDBFQUEwRTtnQkFDMUUsMEVBQTBFO2dCQUMxRSwwRUFBMEU7Z0JBQzFFLDJCQUEyQjtnQkFDM0IsSUFBSSxNQUEwQixDQUFDO2dCQUMvQixJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDaEYsTUFBTSxHQUFHLGNBQWMsQ0FBQztvQkFDeEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDO3dCQUM5QyxDQUFDLENBQUMsa0dBQWtHO3dCQUNwRyxDQUFDLENBQUMsMEVBQTBFLENBQUM7Z0JBQ2pGLENBQUM7Z0JBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0SCxDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQztZQUN4RCx3RUFBd0U7WUFDeEUscURBQXFEO1lBQ3JELE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTFELElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7b0JBQ3pCLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtvQkFDbkMsTUFBTTtvQkFDTixRQUFRO29CQUNSLFlBQVksRUFBRSxPQUFPLENBQUMsTUFBTTtvQkFDNUIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxNQUFNO29CQUMxQixTQUFTO29CQUNULE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUM3RSxXQUFXO2lCQUNaLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUM5QixTQUFTLENBQUMsV0FBVyxPQUFPLENBQUMsTUFBTSxtQkFBbUIsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDekYsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUN4QixJQUFJLFNBQVMsRUFBRSxDQUFDO3dCQUNkLFlBQVksQ0FBQyxxR0FBcUcsQ0FBQyxDQUFDO29CQUN0SCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sWUFBWSxDQUFDLHNDQUFzQyxRQUFRLE9BQU8sQ0FBQyxDQUFDO29CQUN0RSxDQUFDO2dCQUNILENBQUM7cUJBQU0sQ0FBQztvQkFDTixLQUFLLE1BQU0sQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDO3dCQUN2QixNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsTUFBTSxLQUFLLFNBQVM7NEJBQ2xDLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNOzRCQUN4RixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxjQUFjO2dDQUMzQixDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxFQUFFO2dDQUMxQixDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsZUFBZSxPQUFPLENBQUMsQ0FBQyxlQUFlLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNqRixZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUM7b0JBQzdDLENBQUM7b0JBQ0QsVUFBVSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sVUFBVSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLHlIQUF5SCxDQUFDLENBQUM7Z0JBQ2hNLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFDMUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLO2dCQUMzQixJQUFJLEVBQUUsS0FBSztnQkFDWCxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRTthQUNsRCxDQUFDLENBQUM7WUFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgZXJyb3JNZXNzYWdlLCBpc09wYXF1ZUFwaUtleSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IENvcmVDb25zdGFudHMgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1jb3JlJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IHsgcmVzb2x2ZUF3c1JlZ2lvbiB9IGZyb20gJy4uL3V0aWxzL2F3cy1lbnYuanMnO1xuaW1wb3J0IHsgZ2V0U2VjcmV0VmFsdWUsIGxpc3RTZWNyZXRzIH0gZnJvbSAnLi4vdXRpbHMvYXdzLXNlY3JldHMuanMnO1xuaW1wb3J0IHsgcHJpbnRDb21tYW5kSGVhZGVyLCB3aXRoUHJvZmlsZU9wdGlvbiwgd2l0aFJlZ2lvbk9wdGlvbiB9IGZyb20gJy4uL3V0aWxzL2NvbW1hbmQtdXRpbHMuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuXG5pbnRlcmZhY2UgVG9rZW5BdWRpdEVudHJ5IHtcbiAgc2VjcmV0TmFtZTogc3RyaW5nO1xuICBhcm46IHN0cmluZztcbiAgZXhwaXJlc0F0OiBEYXRlO1xuICBkYXlzVW50aWxFeHBpcnk6IG51bWJlcjtcbiAgc3RhdHVzOiAnZXhwaXJlZCcgfCAnZXhwaXJpbmctc29vbicgfCAndW52ZXJpZmlhYmxlJyB8ICdvayc7XG4gIC8qKiBXaHkgdGhlIHN0b3JlZCB0b2tlbiBmYWlsZWQgdmVyaWZpY2F0aW9uLCB3aGVuIGBzdGF0dXNgIGlzIGB1bnZlcmlmaWFibGVgLiAqL1xuICByZWFzb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgYXVkaXQtdG9rZW5zYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIFNjYW5zIEFXUyBTZWNyZXRzIE1hbmFnZXIgZm9yIHN0b3JlZCBwbGF0Zm9ybSBKV1RzIChtYXRjaGluZyB0aGVcbiAqIGBwaXBlbGluZS1idWlsZGVyLzxvcmdJZD4vcGxhdGZvcm1gIG5hbWluZyBjb252ZW50aW9uIHVzZWQgYnkgYHN0b3JlLXRva2VuYClcbiAqIGFuZCByZXBvcnRzIHdoaWNoIHNlY3JldHMgYXJlIGV4cGlyZWQgb3IgY2xvc2UgdG8gZXhwaXJpbmcuXG4gKlxuICogRGVzaWduZWQgZm9yIGNyb24gdXNlOlxuICogICAtIEV4aXRzIDAgd2hlbiBub3RoaW5nIGlzIGF0LXJpc2suXG4gKiAgIC0gRXhpdHMgMSB3aGVuIGF0IGxlYXN0IG9uZSBzZWNyZXQgaXMgZXhwaXJlZCBvciBleHBpcmVzIHdpdGhpbiBgLS13YXJuLWRheXNgLlxuICogICAtIEV4aXRzIDIgb24gQVdTIGVycm9ycyAvIHNjYW4gZmFpbHVyZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIHBpcGVsaW5lLW1hbmFnZXIgYXVkaXQgdG9rZW5zIC0tcmVnaW9uIHVzLWVhc3QtMSAtLXdhcm4tZGF5cyA3XG4gKiBwaXBlbGluZS1tYW5hZ2VyIGF1ZGl0IHRva2VucyAtLXJlZ2lvbiB1cy1lYXN0LTEgLS1qc29uXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF1ZGl0VG9rZW5zKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgd2l0aFByb2ZpbGVPcHRpb24oXG4gICAgd2l0aFJlZ2lvbk9wdGlvbihwcm9ncmFtXG4gICAgICAuY29tbWFuZCgndG9rZW5zJylcbiAgICAgIC5kZXNjcmlwdGlvbignU2NhbiBzdG9yZWQgcGxhdGZvcm0gdG9rZW5zIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIgYW5kIHJlcG9ydCB1cGNvbWluZyBleHBpcmF0aW9ucycpKSxcbiAgKVxuICAgIC5vcHRpb24oJy0td2Fybi1kYXlzIDxkYXlzPicsICdGbGFnIHRva2VucyBleHBpcmluZyB3aXRoaW4gTiBkYXlzIGFzIGF0LXJpc2snLCAnNycpXG4gICAgLm9wdGlvbignLS1wcmVmaXggPHByZWZpeD4nLCAnU2VjcmV0cyBNYW5hZ2VyIG5hbWUgcHJlZml4IHRvIHNjYW4nLCBgJHtDb3JlQ29uc3RhbnRzLlNFQ1JFVFNfUEFUSF9QUkVGSVh9L2ApXG4gICAgLm9wdGlvbignLS1qc29uJywgJ091dHB1dCByZXN1bHRzIGFzIEpTT04nLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignQXVkaXQgVG9rZW5zJywgdW5kZWZpbmVkLCB7IHF1aWV0OiBvcHRpb25zLmpzb24gfSk7XG4gICAgICBjb25zdCByZWdpb24gPSByZXNvbHZlQXdzUmVnaW9uKG9wdGlvbnMucmVnaW9uKTtcbiAgICAgIGNvbnN0IHdhcm5EYXlzID0gcGFyc2VJbnQob3B0aW9ucy53YXJuRGF5cywgMTApO1xuICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUod2FybkRheXMpIHx8IHdhcm5EYXlzIDwgMCkge1xuICAgICAgICBwcmludEVycm9yKCdJbnZhbGlkIC0td2Fybi1kYXlzIHZhbHVlJywgeyBwcm92aWRlZDogb3B0aW9ucy53YXJuRGF5cyB9KTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDIpO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBQcm9ncmVzcyBnb2VzIHRvIHN0ZG91dCwgc28gc3VwcHJlc3MgaXQgaW4gLS1qc29uIG1vZGUgdG8ga2VlcCB0aGUgSlNPTiBwYXlsb2FkIGNsZWFuIGZvciBwaXBpbmcuXG4gICAgICAgIGlmICghb3B0aW9ucy5qc29uKSBwcmludEluZm8oJ0xpc3Rpbmcgc2VjcmV0cycsIHsgcmVnaW9uLCBwcmVmaXg6IG9wdGlvbnMucHJlZml4IH0pO1xuICAgICAgICBjb25zdCB7IHNlY3JldHMsIHRydW5jYXRlZCB9ID0gYXdhaXQgbGlzdFNlY3JldHMob3B0aW9ucy5wcmVmaXgsIHsgcmVnaW9uLCBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfSk7XG4gICAgICAgIGlmICh0cnVuY2F0ZWQpIHtcbiAgICAgICAgICAvLyBBIHRydW5jYXRlZCBzd2VlcCBtZWFucyBhbiBleHBpcmluZyB0b2tlbiBwYXN0IHRoZSBjYXAgY291bGQgYmUgbWlzc2VkIOKAlFxuICAgICAgICAgIC8vIG5ldmVyIHJlcG9ydCBcImFsbCBjbGVhclwiIGZyb20gYW4gaW5jb21wbGV0ZSBzY2FuIChtaXJyb3JzIGF1ZGl0LXN0YWNrcykuXG4gICAgICAgICAgcHJpbnRXYXJuaW5nKCdTZWNyZXQgbGlzdGluZyB3YXMgVFJVTkNBVEVEIChwYWdpbmcgY2FwIGhpdCkg4oCUIHJlc3VsdHMgbWF5IGJlIElOQ09NUExFVEUgYW5kIGFuIGV4cGlyaW5nIHRva2VuIGNvdWxkIGJlIG1pc3NlZC4gTmFycm93IGJ5IC0tcHJlZml4Ly0tcmVnaW9uLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXVkaXQgZXZlcnkgc3RvcmVkIG1hY2hpbmUgY3JlZGVudGlhbDogdGhlIGZ1bGwtcHJpdmlsZWdlIHBsYXRmb3JtIGtleVxuICAgICAgICAvLyAoYDxwcmVmaXg+LzxvcmdJZD4vcGxhdGZvcm1gKSBhbmQgZWFjaCBTQ09QRUQgb25lIChgLi4uL3JlcG9ydGluZy1pbmdlc3RgLFxuICAgICAgICAvLyBgLi4uL3JlZ2lzdHJ5LXB1c2hgLCBmcm9tIGBzdG9yZS10b2tlbiAtLXNjb3BlIOKApmApLiBBbGwgZXhwaXJlIGFuZCBhbGxcbiAgICAgICAgLy8gYXJlIGF1dG8tcm90YXRlZCwgc28gYSBzdGFsbGVkIHJvdGF0aW9uIG9uIGFueSBvZiB0aGVtIG11c3Qgc3VyZmFjZSBoZXJlLlxuICAgICAgICBjb25zdCBDUkVERU5USUFMX0xFQVZFUyA9IFsnL3BsYXRmb3JtJywgJy9yZXBvcnRpbmctaW5nZXN0JywgJy9yZWdpc3RyeS1wdXNoJ107XG4gICAgICAgIGNvbnN0IHBsYXRmb3JtU2VjcmV0cyA9IHNlY3JldHMuZmlsdGVyKChzKSA9PiBDUkVERU5USUFMX0xFQVZFUy5zb21lKChsZWFmKSA9PiBzLm5hbWUuZW5kc1dpdGgobGVhZikpKTtcblxuICAgICAgICBjb25zdCBlbnRyaWVzOiBUb2tlbkF1ZGl0RW50cnlbXSA9IFtdO1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCB3YXJuQ3V0b2ZmID0gbm93ICsgd2FybkRheXMgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4gICAgICAgIGZvciAoY29uc3QgcyBvZiBwbGF0Zm9ybVNlY3JldHMpIHtcbiAgICAgICAgICBsZXQgcmF3OiBzdHJpbmc7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJhdyA9IGF3YWl0IGdldFNlY3JldFZhbHVlKHMubmFtZSwgeyByZWdpb24sIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSB9KTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHByaW50V2FybmluZyhgQ291bGQgbm90IHJlYWQgJHtzLm5hbWV9OiAke2Vycm9yTWVzc2FnZShlcnIpfWApO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHBhcnNlZDogeyBwYXNzd29yZD86IHN0cmluZzsgZXhwaXJlc0F0Pzogc3RyaW5nOyBwbGF0Zm9ybVVybD86IHN0cmluZyB9O1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBwYXJzZWQgPSBKU09OLnBhcnNlKHJhdyk7XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICBwcmludFdhcm5pbmcoYFNlY3JldCAke3MubmFtZX0gaXMgbm90IHZhbGlkIEpTT04sIHNraXBwaW5nYCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBgZXhwaXJlc0F0YCBpcyB0aGUgT05MWSBleHBpcnkgc291cmNlIG5vdy4gVGhlIHN0b3JlZCBjcmVkZW50aWFsIGlzIGFuXG4gICAgICAgICAgLy8gb3BhcXVlIHNlcnZpY2UtYWNjb3VudCBrZXk6IGl0IGNhcnJpZXMgbm8gY2xhaW1zLCBzbyB0aGVyZSBpcyBubyBgZXhwYFxuICAgICAgICAgIC8vIHRvIGRlY29kZSBhcyBhIGZhbGxiYWNrIOKAlCB3aGljaCBpcyBleGFjdGx5IHdoeSBzdG9yZS10b2tlbiBhbmQgdGhlXG4gICAgICAgICAgLy8gcm90YXRvciBib3RoIHdyaXRlIHRoZSBmaWVsZC5cbiAgICAgICAgICBsZXQgZXhwaXJlc0F0OiBEYXRlIHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGlmIChwYXJzZWQuZXhwaXJlc0F0KSB7XG4gICAgICAgICAgICBjb25zdCBkID0gbmV3IERhdGUocGFyc2VkLmV4cGlyZXNBdCk7XG4gICAgICAgICAgICBpZiAoIU51bWJlci5pc05hTihkLmdldFRpbWUoKSkpIGV4cGlyZXNBdCA9IGQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZXhwaXJlc0F0KSB7XG4gICAgICAgICAgICBwcmludFdhcm5pbmcoYFNlY3JldCAke3MubmFtZX0gaGFzIG5vIGV4cGlyeSBpbmZvcm1hdGlvbiwgc2tpcHBpbmdgKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGRheXNVbnRpbEV4cGlyeSA9IE1hdGguZmxvb3IoKGV4cGlyZXNBdC5nZXRUaW1lKCkgLSBub3cpIC8gKDI0ICogNjAgKiA2MCAqIDEwMDApKTtcbiAgICAgICAgICBsZXQgc3RhdHVzOiBUb2tlbkF1ZGl0RW50cnlbJ3N0YXR1cyddID1cbiAgICAgICAgICAgIGV4cGlyZXNBdC5nZXRUaW1lKCkgPCBub3cgPyAnZXhwaXJlZCdcbiAgICAgICAgICAgICAgOiBleHBpcmVzQXQuZ2V0VGltZSgpIDwgd2FybkN1dG9mZiA/ICdleHBpcmluZy1zb29uJ1xuICAgICAgICAgICAgICAgIDogJ29rJztcblxuICAgICAgICAgIC8vIEEgc2VjcmV0IHRoYXQgc3RpbGwgaGFzIG1vbnRocyBvZiBsaWZlIGJ1dCBob2xkcyB0aGUgV1JPTkcgS0lORCBvZlxuICAgICAgICAgIC8vIGNyZWRlbnRpYWwgaXMganVzdCBhcyBkZWFkIGFzIGFuIGV4cGlyZWQgb25lLiBBZnRlciB0aGUgc2VydmljZS1hY2NvdW50XG4gICAgICAgICAgLy8gY3V0b3ZlciB0aGUgc3RvcmVkIHZhbHVlIG11c3QgYmUgYW4gb3BhcXVlIGBwYl9zYV/igKZgIGtleTsgYSBzZWNyZXQgbGVmdFxuICAgICAgICAgIC8vIGhvbGRpbmcgYSBwcmUtY3V0b3ZlciBtYWNoaW5lLXNlc3Npb24gSldUIGlzIHJlZnVzZWQgYnkgZXZlcnkgY29uc3VtZXIsXG4gICAgICAgICAgLy8gYW5kIHRoaXMgaXMgdGhlIHNjYW4gdGhhdCBuYW1lcyBpdCBpbnN0ZWFkIG9mIGxlYXZpbmcgdGhyZWUgc2VydmljZXMgdG9cbiAgICAgICAgICAvLyBmYWlsIHdpdGggYW4gb3BhcXVlIDQwMS5cbiAgICAgICAgICBsZXQgcmVhc29uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ2V4cGlyZWQnICYmIHBhcnNlZC5wYXNzd29yZCAmJiAhaXNPcGFxdWVBcGlLZXkocGFyc2VkLnBhc3N3b3JkKSkge1xuICAgICAgICAgICAgc3RhdHVzID0gJ3VudmVyaWZpYWJsZSc7XG4gICAgICAgICAgICByZWFzb24gPSBwYXJzZWQucGFzc3dvcmQuc3BsaXQoJy4nKS5sZW5ndGggPT09IDNcbiAgICAgICAgICAgICAgPyAnaG9sZHMgYSBwcmUtY3V0b3ZlciBKV1QsIG5vdCBhIHNlcnZpY2UtYWNjb3VudCBrZXkg4oCUIHJlLXJ1biBcInBpcGVsaW5lLW1hbmFnZXIgaW5mcmEgc3RvcmUtdG9rZW5cIidcbiAgICAgICAgICAgICAgOiAnZG9lcyBub3QgaG9sZCBhbiBvcGFxdWUgc2VydmljZS1hY2NvdW50IGtleSAoZXhwZWN0ZWQgYSBcInBiX3NhX+KAplwiIHZhbHVlKSc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVudHJpZXMucHVzaCh7IHNlY3JldE5hbWU6IHMubmFtZSwgYXJuOiBzLmFybiwgZXhwaXJlc0F0LCBkYXlzVW50aWxFeHBpcnksIHN0YXR1cywgLi4uKHJlYXNvbiA/IHsgcmVhc29uIH0gOiB7fSkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhdFJpc2sgPSBlbnRyaWVzLmZpbHRlcigoZSkgPT4gZS5zdGF0dXMgIT09ICdvaycpO1xuICAgICAgICAvLyBBIHRydW5jYXRlZCBzY2FuIGlzIGl0c2VsZiBhIGZhaWx1cmUgY29uZGl0aW9uOiBleGl0IG5vbi16ZXJvIHNvIGNyb25cbiAgICAgICAgLy8gZG9lc24ndCByZWFkIGFuIGluY29tcGxldGUgXCJhbGwgY2xlYXJcIiBhcyBzdWNjZXNzLlxuICAgICAgICBjb25zdCBleGl0Q29kZSA9IChhdFJpc2subGVuZ3RoID4gMCB8fCB0cnVuY2F0ZWQpID8gMSA6IDA7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuanNvbikge1xuICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIHNjYW5uZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgd2FybkRheXMsXG4gICAgICAgICAgICB0b3RhbFNjYW5uZWQ6IGVudHJpZXMubGVuZ3RoLFxuICAgICAgICAgICAgYXRSaXNrQ291bnQ6IGF0Umlzay5sZW5ndGgsXG4gICAgICAgICAgICB0cnVuY2F0ZWQsXG4gICAgICAgICAgICBlbnRyaWVzOiBlbnRyaWVzLm1hcCgoZSkgPT4gKHsgLi4uZSwgZXhwaXJlc0F0OiBlLmV4cGlyZXNBdC50b0lTT1N0cmluZygpIH0pKSxcbiAgICAgICAgICAgIGV4ZWN1dGlvbklkLFxuICAgICAgICAgIH0sIG51bGwsIDIpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmludFNlY3Rpb24oJ0F1ZGl0IFJlc3VsdHMnKTtcbiAgICAgICAgICBwcmludEluZm8oYFNjYW5uZWQgJHtlbnRyaWVzLmxlbmd0aH0gcGxhdGZvcm0gc2VjcmV0JHtlbnRyaWVzLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnfWApO1xuICAgICAgICAgIGlmIChhdFJpc2subGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBpZiAodHJ1bmNhdGVkKSB7XG4gICAgICAgICAgICAgIHByaW50V2FybmluZygnTm8gYXQtcmlzayB0b2tlbnMgaW4gdGhlIHNjYW5uZWQgcGFnZXMsIGJ1dCB0aGUgc2NhbiB3YXMgdHJ1bmNhdGVkIOKAlCBzb21lIHNlY3JldHMgd2VyZSBub3QgY2hlY2tlZC4nKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHByaW50U3VjY2VzcyhgQWxsIHN0b3JlZCBrZXlzIHZhbGlkIGZvciBhdCBsZWFzdCAke3dhcm5EYXlzfSBkYXlzYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiBhdFJpc2spIHtcbiAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBlLnN0YXR1cyA9PT0gJ2V4cGlyZWQnXG4gICAgICAgICAgICAgICAgPyBgRVhQSVJFRCAke01hdGguYWJzKGUuZGF5c1VudGlsRXhwaXJ5KX0gZGF5JHtlLmRheXNVbnRpbEV4cGlyeSA9PT0gLTEgPyAnJyA6ICdzJ30gYWdvYFxuICAgICAgICAgICAgICAgIDogZS5zdGF0dXMgPT09ICd1bnZlcmlmaWFibGUnXG4gICAgICAgICAgICAgICAgICA/IGBVTlVTQUJMRSDigJQgJHtlLnJlYXNvbn1gXG4gICAgICAgICAgICAgICAgICA6IGBleHBpcmVzIGluICR7ZS5kYXlzVW50aWxFeHBpcnl9IGRheSR7ZS5kYXlzVW50aWxFeHBpcnkgPT09IDEgPyAnJyA6ICdzJ31gO1xuICAgICAgICAgICAgICBwcmludFdhcm5pbmcoYCR7ZS5zZWNyZXROYW1lfSDigJQgJHtsYWJlbH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByaW50RXJyb3IoYCR7YXRSaXNrLmxlbmd0aH0gc2VjcmV0JHthdFJpc2subGVuZ3RoID09PSAxID8gJycgOiAncyd9IG5lZWQgcm90YXRpb24uIFJ1biBcXGBwaXBlbGluZS1tYW5hZ2VyIGluZnJhIHN0b3JlLXRva2VuIC0tZGF5cyA8Tj5cXGAgKGFkZCAtLXNjb3BlIGZvciBhIHNjb3BlZCBjcmVkZW50aWFsKSB0byByZWlzc3VlLmApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwcm9jZXNzLmV4aXQoZXhpdENvZGUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IGZhbHNlLFxuICAgICAgICAgIGNvbnRleHQ6IHsgY29tbWFuZDogJ2F1ZGl0LXRva2VucycsIGV4ZWN1dGlvbklkIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMik7XG4gICAgICB9XG4gICAgfSk7XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-pipeline.d.ts","sourceRoot":"","sources":["../../src/commands/create-pipeline.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-pipeline.d.ts","sourceRoot":"","sources":["../../src/commands/create-pipeline.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuUrD"}
|