construct-hub 0.4.430 → 0.4.432
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/.jsii +9 -9
- package/docs/operator-runbook.md +96 -0
- package/lib/backend/orchestration/index.d.ts +5 -1
- package/lib/backend/orchestration/index.js +9 -2
- package/lib/backend/orchestration/read-uninstallable-report.d.ts +7 -0
- package/lib/backend/orchestration/read-uninstallable-report.js +20 -0
- package/lib/backend/orchestration/read-uninstallable-report.lambda.bundle/index.js +60016 -0
- package/lib/backend/orchestration/read-uninstallable-report.lambda.bundle/index.js.map +7 -0
- package/lib/backend/orchestration/read-uninstallable-report.lambda.d.ts +13 -0
- package/lib/backend/orchestration/read-uninstallable-report.lambda.js +33 -0
- package/lib/backend/orchestration/retry-uninstallable-packages.d.ts +19 -0
- package/lib/backend/orchestration/retry-uninstallable-packages.js +100 -0
- package/lib/backend/package-stats/index.d.ts +15 -2
- package/lib/backend/package-stats/index.js +79 -21
- package/lib/backend/package-stats/package-stats-aggregator.d.ts +7 -0
- package/lib/backend/package-stats/package-stats-aggregator.js +20 -0
- package/lib/backend/package-stats/package-stats-aggregator.lambda.bundle/index.js +62489 -0
- package/lib/backend/package-stats/{package-stats.lambda.bundle → package-stats-aggregator.lambda.bundle}/index.js.map +4 -4
- package/lib/backend/package-stats/package-stats-aggregator.lambda.d.ts +13 -0
- package/lib/backend/package-stats/package-stats-aggregator.lambda.js +78 -0
- package/lib/backend/package-stats/package-stats-chunker.d.ts +7 -0
- package/lib/backend/package-stats/package-stats-chunker.js +20 -0
- package/lib/backend/package-stats/package-stats-chunker.lambda.bundle/index.js +60075 -0
- package/lib/backend/package-stats/package-stats-chunker.lambda.bundle/index.js.map +7 -0
- package/lib/backend/package-stats/package-stats-chunker.lambda.d.ts +6 -0
- package/lib/backend/package-stats/package-stats-chunker.lambda.js +25 -0
- package/lib/backend/package-stats/package-stats-processor.d.ts +7 -0
- package/lib/backend/package-stats/package-stats-processor.js +20 -0
- package/lib/backend/package-stats/{package-stats.lambda.bundle → package-stats-processor.lambda.bundle}/index.js +36 -2556
- package/lib/backend/package-stats/package-stats-processor.lambda.bundle/index.js.map +7 -0
- package/lib/backend/package-stats/package-stats-processor.lambda.d.ts +10 -0
- package/lib/backend/package-stats/package-stats-processor.lambda.js +41 -0
- package/lib/backend-dashboard.js +11 -6
- package/lib/construct-hub.d.ts +1 -1
- package/lib/construct-hub.js +12 -4
- package/lib/package-sources/code-artifact.js +1 -1
- package/lib/package-sources/npmjs.js +1 -1
- package/lib/package-tag/index.js +3 -3
- package/lib/package-tag-group/index.js +2 -2
- package/lib/preload-file/index.js +1 -1
- package/lib/s3/storage.js +1 -1
- package/lib/spdx-license.js +1 -1
- package/package.json +9 -3
- package/lib/backend/package-stats/package-stats.d.ts +0 -7
- package/lib/backend/package-stats/package-stats.js +0 -20
- package/lib/backend/package-stats/package-stats.lambda.d.ts +0 -25
- package/lib/backend/package-stats/package-stats.lambda.js +0 -79
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handler = handler;
|
|
4
|
+
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
5
|
+
const got_1 = require("got");
|
|
6
|
+
const npm_downloads_lambda_shared_1 = require("./npm-downloads.lambda-shared");
|
|
7
|
+
const aws_lambda_shared_1 = require("../shared/aws.lambda-shared");
|
|
8
|
+
const env_lambda_shared_1 = require("../shared/env.lambda-shared");
|
|
9
|
+
async function handler(event) {
|
|
10
|
+
const { packages, chunkIndex } = event;
|
|
11
|
+
const STATS_BUCKET_NAME = (0, env_lambda_shared_1.requireEnv)('STATS_BUCKET_NAME');
|
|
12
|
+
console.log(`Processing chunk ${chunkIndex} with ${packages.length} packages`);
|
|
13
|
+
const npmClient = new npm_downloads_lambda_shared_1.NpmDownloadsClient(got_1.default);
|
|
14
|
+
const npmDownloads = await npmClient.getDownloads(packages, {
|
|
15
|
+
period: npm_downloads_lambda_shared_1.NpmDownloadsPeriod.LAST_WEEK,
|
|
16
|
+
throwErrors: false,
|
|
17
|
+
});
|
|
18
|
+
const chunkStats = {};
|
|
19
|
+
for (const [pkgName, entry] of npmDownloads.entries()) {
|
|
20
|
+
chunkStats[pkgName] = {
|
|
21
|
+
downloads: {
|
|
22
|
+
npm: entry.downloads,
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
// Store chunk result in S3
|
|
27
|
+
const chunkKey = `stats-chunks/chunk-${chunkIndex}.json`;
|
|
28
|
+
await aws_lambda_shared_1.S3_CLIENT.send(new client_s3_1.PutObjectCommand({
|
|
29
|
+
Bucket: STATS_BUCKET_NAME,
|
|
30
|
+
Key: chunkKey,
|
|
31
|
+
Body: JSON.stringify(chunkStats),
|
|
32
|
+
ContentType: 'application/json',
|
|
33
|
+
}));
|
|
34
|
+
console.log(`Processed chunk ${chunkIndex}: ${Object.keys(chunkStats).length} packages with stats`);
|
|
35
|
+
return {
|
|
36
|
+
chunkIndex,
|
|
37
|
+
chunkKey,
|
|
38
|
+
packageCount: Object.keys(chunkStats).length,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS1zdGF0cy1wcm9jZXNzb3IubGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tlbmQvcGFja2FnZS1zdGF0cy9wYWNrYWdlLXN0YXRzLXByb2Nlc3Nvci5sYW1iZGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFjQSwwQkE4Q0M7QUE1REQsa0RBQXNEO0FBQ3RELDZCQUFzQjtBQUN0QiwrRUFHdUM7QUFDdkMsbUVBQXdEO0FBQ3hELG1FQUF5RDtBQU9sRCxLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQWlCO0lBQzdDLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ3ZDLE1BQU0saUJBQWlCLEdBQUcsSUFBQSw4QkFBVSxFQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFMUQsT0FBTyxDQUFDLEdBQUcsQ0FDVCxvQkFBb0IsVUFBVSxTQUFTLFFBQVEsQ0FBQyxNQUFNLFdBQVcsQ0FDbEUsQ0FBQztJQUVGLE1BQU0sU0FBUyxHQUFHLElBQUksZ0RBQWtCLENBQUMsYUFBRyxDQUFDLENBQUM7SUFDOUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRTtRQUMxRCxNQUFNLEVBQUUsZ0RBQWtCLENBQUMsU0FBUztRQUNwQyxXQUFXLEVBQUUsS0FBSztLQUNuQixDQUFDLENBQUM7SUFFSCxNQUFNLFVBQVUsR0FBc0QsRUFBRSxDQUFDO0lBRXpFLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUN0RCxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUc7WUFDcEIsU0FBUyxFQUFFO2dCQUNULEdBQUcsRUFBRSxLQUFLLENBQUMsU0FBUzthQUNyQjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsMkJBQTJCO0lBQzNCLE1BQU0sUUFBUSxHQUFHLHNCQUFzQixVQUFVLE9BQU8sQ0FBQztJQUN6RCxNQUFNLDZCQUFTLENBQUMsSUFBSSxDQUNsQixJQUFJLDRCQUFnQixDQUFDO1FBQ25CLE1BQU0sRUFBRSxpQkFBaUI7UUFDekIsR0FBRyxFQUFFLFFBQVE7UUFDYixJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7UUFDaEMsV0FBVyxFQUFFLGtCQUFrQjtLQUNoQyxDQUFDLENBQ0gsQ0FBQztJQUVGLE9BQU8sQ0FBQyxHQUFHLENBQ1QsbUJBQW1CLFVBQVUsS0FDM0IsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUMxQixzQkFBc0IsQ0FDdkIsQ0FBQztJQUVGLE9BQU87UUFDTCxVQUFVO1FBQ1YsUUFBUTtRQUNSLFlBQVksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU07S0FDN0MsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQdXRPYmplY3RDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCBnb3QgZnJvbSAnZ290JztcbmltcG9ydCB7XG4gIE5wbURvd25sb2Fkc0NsaWVudCxcbiAgTnBtRG93bmxvYWRzUGVyaW9kLFxufSBmcm9tICcuL25wbS1kb3dubG9hZHMubGFtYmRhLXNoYXJlZCc7XG5pbXBvcnQgeyBTM19DTElFTlQgfSBmcm9tICcuLi9zaGFyZWQvYXdzLmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgcmVxdWlyZUVudiB9IGZyb20gJy4uL3NoYXJlZC9lbnYubGFtYmRhLXNoYXJlZCc7XG5cbmludGVyZmFjZSBDaHVua0lucHV0IHtcbiAgcGFja2FnZXM6IHN0cmluZ1tdO1xuICBjaHVua0luZGV4OiBudW1iZXI7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50OiBDaHVua0lucHV0KSB7XG4gIGNvbnN0IHsgcGFja2FnZXMsIGNodW5rSW5kZXggfSA9IGV2ZW50O1xuICBjb25zdCBTVEFUU19CVUNLRVRfTkFNRSA9IHJlcXVpcmVFbnYoJ1NUQVRTX0JVQ0tFVF9OQU1FJyk7XG5cbiAgY29uc29sZS5sb2coXG4gICAgYFByb2Nlc3NpbmcgY2h1bmsgJHtjaHVua0luZGV4fSB3aXRoICR7cGFja2FnZXMubGVuZ3RofSBwYWNrYWdlc2BcbiAgKTtcblxuICBjb25zdCBucG1DbGllbnQgPSBuZXcgTnBtRG93bmxvYWRzQ2xpZW50KGdvdCk7XG4gIGNvbnN0IG5wbURvd25sb2FkcyA9IGF3YWl0IG5wbUNsaWVudC5nZXREb3dubG9hZHMocGFja2FnZXMsIHtcbiAgICBwZXJpb2Q6IE5wbURvd25sb2Fkc1BlcmlvZC5MQVNUX1dFRUssXG4gICAgdGhyb3dFcnJvcnM6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCBjaHVua1N0YXRzOiB7IFtrZXk6IHN0cmluZ106IHsgZG93bmxvYWRzOiB7IG5wbTogbnVtYmVyIH0gfSB9ID0ge307XG5cbiAgZm9yIChjb25zdCBbcGtnTmFtZSwgZW50cnldIG9mIG5wbURvd25sb2Fkcy5lbnRyaWVzKCkpIHtcbiAgICBjaHVua1N0YXRzW3BrZ05hbWVdID0ge1xuICAgICAgZG93bmxvYWRzOiB7XG4gICAgICAgIG5wbTogZW50cnkuZG93bmxvYWRzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLy8gU3RvcmUgY2h1bmsgcmVzdWx0IGluIFMzXG4gIGNvbnN0IGNodW5rS2V5ID0gYHN0YXRzLWNodW5rcy9jaHVuay0ke2NodW5rSW5kZXh9Lmpzb25gO1xuICBhd2FpdCBTM19DTElFTlQuc2VuZChcbiAgICBuZXcgUHV0T2JqZWN0Q29tbWFuZCh7XG4gICAgICBCdWNrZXQ6IFNUQVRTX0JVQ0tFVF9OQU1FLFxuICAgICAgS2V5OiBjaHVua0tleSxcbiAgICAgIEJvZHk6IEpTT04uc3RyaW5naWZ5KGNodW5rU3RhdHMpLFxuICAgICAgQ29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICB9KVxuICApO1xuXG4gIGNvbnNvbGUubG9nKFxuICAgIGBQcm9jZXNzZWQgY2h1bmsgJHtjaHVua0luZGV4fTogJHtcbiAgICAgIE9iamVjdC5rZXlzKGNodW5rU3RhdHMpLmxlbmd0aFxuICAgIH0gcGFja2FnZXMgd2l0aCBzdGF0c2BcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIGNodW5rSW5kZXgsXG4gICAgY2h1bmtLZXksXG4gICAgcGFja2FnZUNvdW50OiBPYmplY3Qua2V5cyhjaHVua1N0YXRzKS5sZW5ndGgsXG4gIH07XG59XG4iXX0=
|
package/lib/backend-dashboard.js
CHANGED
|
@@ -20,6 +20,8 @@ class BackendDashboard extends constructs_1.Construct {
|
|
|
20
20
|
"These packages could not be installed. Note that currently they will also appear in the 'missing' documentation reports.",
|
|
21
21
|
'',
|
|
22
22
|
"The specific error can be found in the package directory inside a file named 'uninstallable'",
|
|
23
|
+
'',
|
|
24
|
+
`[button:primary:Retry Uninstallable Packages](${(0, deep_link_1.stateMachineUrl)(props.orchestration.retryUninstallablePackages)})`,
|
|
23
25
|
].join('\n'),
|
|
24
26
|
bucket: props.packageData,
|
|
25
27
|
key: constants_1.UNINSTALLABLE_PACKAGES_REPORT,
|
|
@@ -226,6 +228,7 @@ class BackendDashboard extends constructs_1.Construct {
|
|
|
226
228
|
`[button:DLQ](${(0, deep_link_1.sqsQueueUrl)(props.orchestration.deadLetterQueue)})`,
|
|
227
229
|
`[button:Redrive DLQ](${(0, deep_link_1.lambdaFunctionUrl)(props.orchestration.redriveFunction)})`,
|
|
228
230
|
`[button:Regenerate All Documentation](${(0, deep_link_1.stateMachineUrl)(props.orchestration.regenerateAllDocumentation)})`,
|
|
231
|
+
`[button:Retry Uninstallable Packages](${(0, deep_link_1.stateMachineUrl)(props.orchestration.retryUninstallablePackages)})`,
|
|
229
232
|
].join('\n'),
|
|
230
233
|
}),
|
|
231
234
|
],
|
|
@@ -575,8 +578,10 @@ function renderPackageStatsWidgets(packageStats) {
|
|
|
575
578
|
'# Package Stats',
|
|
576
579
|
'',
|
|
577
580
|
`[button:primary:Package Stats Object](${(0, deep_link_1.s3ObjectUrl)(packageStats.bucket, packageStats.statsKey)})`,
|
|
578
|
-
`[button:Package Stats
|
|
579
|
-
`[button:
|
|
581
|
+
`[button:Package Stats State Machine](${(0, deep_link_1.stateMachineUrl)(packageStats.stateMachine)})`,
|
|
582
|
+
`[button:Chunker Function](${(0, deep_link_1.lambdaFunctionUrl)(packageStats.chunkerFunction)})`,
|
|
583
|
+
`[button:Processor Function](${(0, deep_link_1.lambdaFunctionUrl)(packageStats.processorFunction)})`,
|
|
584
|
+
`[button:Aggregator Function](${(0, deep_link_1.lambdaFunctionUrl)(packageStats.aggregatorFunction)})`,
|
|
580
585
|
].join('\n'),
|
|
581
586
|
}),
|
|
582
587
|
],
|
|
@@ -594,13 +599,13 @@ function renderPackageStatsWidgets(packageStats) {
|
|
|
594
599
|
height: 6,
|
|
595
600
|
width: 12,
|
|
596
601
|
title: 'Invocation Duration',
|
|
597
|
-
left: [packageStats.
|
|
602
|
+
left: [packageStats.stateMachine.metricTime({ label: 'Duration' })],
|
|
598
603
|
leftYAxis: { min: 0 },
|
|
599
604
|
rightAnnotations: [
|
|
600
605
|
{
|
|
601
606
|
color: '#ffa500',
|
|
602
|
-
label: '
|
|
603
|
-
value: aws_cdk_lib_1.Duration.
|
|
607
|
+
label: '6 hours (State Machine timeout)',
|
|
608
|
+
value: aws_cdk_lib_1.Duration.hours(6).toSeconds(),
|
|
604
609
|
},
|
|
605
610
|
],
|
|
606
611
|
}),
|
|
@@ -723,4 +728,4 @@ function renderReleaseNotesWidgets(releaseNotes) {
|
|
|
723
728
|
],
|
|
724
729
|
];
|
|
725
730
|
}
|
|
726
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC1kYXNoYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYmFja2VuZC1kYXNoYm9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVDO0FBQ3ZDLCtEQVVvQztBQUVwQywyQ0FBdUM7QUFJdkMscUdBQStGO0FBSS9GLDBEQUtvQztBQUNwQyx3REFBa0U7QUFFbEUsMkNBUXFCO0FBQ3JCLGlEQUE0QztBQWdCNUMsTUFBYSxnQkFBaUIsU0FBUSxzQkFBUztJQUM3QyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUE0QjtRQUU1QixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sT0FBTyxHQUFnQjtZQUMzQjtnQkFDRSxJQUFJLDBEQUEwQixDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRTtvQkFDNUQsS0FBSyxFQUFFLHlDQUF5QztvQkFDaEQsV0FBVyxFQUFFO3dCQUNYLDBIQUEwSDt3QkFDMUgsRUFBRTt3QkFDRiw4RkFBOEY7cUJBQy9GLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztvQkFDWixNQUFNLEVBQUUsS0FBSyxDQUFDLFdBQVc7b0JBQ3pCLEdBQUcsRUFBRSx5Q0FBNkI7b0JBQ2xDLE1BQU0sRUFBRSxDQUFDO29CQUNULEtBQUssRUFBRSxFQUFFO2lCQUNWLENBQUM7YUFDSDtTQUNGLENBQUM7UUFFRixLQUFLLE1BQU0sUUFBUSxJQUFJLGdDQUFxQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2pELEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUMxQyxRQUFRLEVBQ1IsS0FBSyxDQUFDLFdBQVcsQ0FDbEIsRUFBRSxDQUFDO2dCQUNGLGlDQUFpQztnQkFDakMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxLQUFL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LDRCQUFXLENBQUM7Z0JBQ2QsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFLHdCQUF3QjtnQkFDL0IsSUFBSSxFQUFFO29CQUNKLElBQUEseUJBQVUsRUFDUixZQUFZLENBQUMsc0JBQXNCLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFDdkQsUUFBUSxDQUNUO29CQUNELElBQUEseUJBQVUsRUFDUixZQUFZLENBQUMscUJBQXFCLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFDckQsUUFBUSxDQUNUO29CQUNELElBQUEseUJBQVUsRUFDUixZQUFZLENBQUMsMEJBQTBCLENBQUM7d0JBQ3RDLEtBQUssRUFBRSxXQUFXO3FCQUNuQixDQUFDLEVBQ0YsUUFBUSxDQUNUO2lCQUNGO2FBQ0YsQ0FBQztTQUNIO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIERhc2hib2FyZCxcbiAgR3JhcGhXaWRnZXQsXG4gIEdyYXBoV2lkZ2V0VmlldyxcbiAgVGV4dFdpZGdldCxcbiAgSVdpZGdldCxcbiAgTWF0aEV4cHJlc3Npb24sXG4gIE1ldHJpYyxcbiAgU3RhdGlzdGljLFxuICBQZXJpb2RPdmVycmlkZSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgSUJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERlbnlMaXN0IH0gZnJvbSAnLi9iYWNrZW5kL2RlbnktbGlzdCc7XG5pbXBvcnQgeyBJbmdlc3Rpb24gfSBmcm9tICcuL2JhY2tlbmQvaW5nZXN0aW9uJztcbmltcG9ydCB7IEludmVudG9yeSB9IGZyb20gJy4vYmFja2VuZC9pbnZlbnRvcnknO1xuaW1wb3J0IHsgUGFja2FnZVZlcnNpb25zVGFibGVXaWRnZXQgfSBmcm9tICcuL2JhY2tlbmQvaW52ZW50b3J5L3BhY2thZ2UtdmVyc2lvbnMtdGFibGUtd2lkZ2V0JztcbmltcG9ydCB7IE9yY2hlc3RyYXRpb24gfSBmcm9tICcuL2JhY2tlbmQvb3JjaGVzdHJhdGlvbic7XG5pbXBvcnQgeyBQYWNrYWdlU3RhdHMgfSBmcm9tICcuL2JhY2tlbmQvcGFja2FnZS1zdGF0cyc7XG5pbXBvcnQgeyBSZWxlYXNlTm90ZUZldGNoZXIgfSBmcm9tICcuL2JhY2tlbmQvcmVsZWFzZS1ub3Rlcyc7XG5pbXBvcnQge1xuICBtaXNzaW5nRG9jdW1lbnRhdGlvblJlcG9ydCxcbiAgVU5JTlNUQUxMQUJMRV9QQUNLQUdFU19SRVBPUlQsXG4gIGNvcnJ1cHRBc3NlbWJseVJlcG9ydCxcbiAgVkVSU0lPTl9UUkFDS0VSX0tFWSxcbn0gZnJvbSAnLi9iYWNrZW5kL3NoYXJlZC9jb25zdGFudHMnO1xuaW1wb3J0IHsgRG9jdW1lbnRhdGlvbkxhbmd1YWdlIH0gZnJvbSAnLi9iYWNrZW5kL3NoYXJlZC9sYW5ndWFnZSc7XG5pbXBvcnQgeyBWZXJzaW9uVHJhY2tlciB9IGZyb20gJy4vYmFja2VuZC92ZXJzaW9uLXRyYWNrZXInO1xuaW1wb3J0IHtcbiAgZWNzQ2x1c3RlclVybCxcbiAgbGFtYmRhRnVuY3Rpb25VcmwsXG4gIGxhbWJkYVNlYXJjaExvZ0dyb3VwVXJsLFxuICBsb2dHcm91cFVybCxcbiAgczNPYmplY3RVcmwsXG4gIHNxc1F1ZXVlVXJsLFxuICBzdGF0ZU1hY2hpbmVVcmwsXG59IGZyb20gJy4vZGVlcC1saW5rJztcbmltcG9ydCB7IGZpbGxNZXRyaWMgfSBmcm9tICcuL21ldHJpYy11dGlscyc7XG5pbXBvcnQgeyBQYWNrYWdlU291cmNlQmluZFJlc3VsdCB9IGZyb20gJy4vcGFja2FnZS1zb3VyY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhY2tlbmREYXNoYm9hcmRQcm9wcyB7XG4gIHJlYWRvbmx5IGRhc2hib2FyZE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhY2thZ2VTb3VyY2VzOiBQYWNrYWdlU291cmNlQmluZFJlc3VsdFtdO1xuICByZWFkb25seSBpbmdlc3Rpb246IEluZ2VzdGlvbjtcbiAgcmVhZG9ubHkgb3JjaGVzdHJhdGlvbjogT3JjaGVzdHJhdGlvbjtcbiAgcmVhZG9ubHkgaW52ZW50b3J5OiBJbnZlbnRvcnk7XG4gIHJlYWRvbmx5IGRlbnlMaXN0OiBEZW55TGlzdDtcbiAgcmVhZG9ubHkgcGFja2FnZURhdGE6IElCdWNrZXQ7XG4gIHJlYWRvbmx5IHBhY2thZ2VTdGF0cz86IFBhY2thZ2VTdGF0cztcbiAgcmVhZG9ubHkgdmVyc2lvblRyYWNrZXI6IFZlcnNpb25UcmFja2VyO1xuICByZWFkb25seSByZWxlYXNlTm90ZXM/OiBSZWxlYXNlTm90ZUZldGNoZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBCYWNrZW5kRGFzaGJvYXJkIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQmFja2VuZERhc2hib2FyZFByb3BzXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCByZXBvcnRzOiBJV2lkZ2V0W11bXSA9IFtcbiAgICAgIFtcbiAgICAgICAgbmV3IFBhY2thZ2VWZXJzaW9uc1RhYmxlV2lkZ2V0KHRoaXMsICdVbmluc3RhbGxhYmxlUGFja2FnZXMnLCB7XG4gICAgICAgICAgdGl0bGU6ICdQYWNrYWdlIFZlcnNpb25zIFJlcG9ydCB8IFVuaW5zdGFsbGFibGUnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgICBcIlRoZXNlIHBhY2thZ2VzIGNvdWxkIG5vdCBiZSBpbnN0YWxsZWQuIE5vdGUgdGhhdCBjdXJyZW50bHkgdGhleSB3aWxsIGFsc28gYXBwZWFyIGluIHRoZSAnbWlzc2luZycgZG9jdW1lbnRhdGlvbiByZXBvcnRzLlwiLFxuICAgICAgICAgICAgJycsXG4gICAgICAgICAgICBcIlRoZSBzcGVjaWZpYyBlcnJvciBjYW4gYmUgZm91bmQgaW4gdGhlIHBhY2thZ2UgZGlyZWN0b3J5IGluc2lkZSBhIGZpbGUgbmFtZWQgJ3VuaW5zdGFsbGFibGUnXCIsXG4gICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICBidWNrZXQ6IHByb3BzLnBhY2thZ2VEYXRhLFxuICAgICAgICAgIGtleTogVU5JTlNUQUxMQUJMRV9QQUNLQUdFU19SRVBPUlQsXG4gICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIF07XG5cbiAgICBmb3IgKGNvbnN0IGxhbmd1YWdlIG9mIERvY3VtZW50YXRpb25MYW5ndWFnZS5BTEwpIHtcbiAgICAgIGZvciAoY29uc3QgcmVwb3J0IG9mIHRoaXMucGVyTGFuZ3VhZ2VSZXBvcnRzKFxuICAgICAgICBsYW5ndWFnZSxcbiAgICAgICAgcHJvcHMucGFja2FnZURhdGFcbiAgICAgICkpIHtcbiAgICAgICAgLy8gcHV0IGV2ZXJ5IHJlcG9ydCBpbiBhIG5ldyBsaW5lXG4gICAgICAgIHJlcG9ydHMucHVzaChbcmVwb3J0XSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGFzaGJvYXJkTmFtZSA9IHByb3BzLmRhc2hib2FyZE5hbWUgPz8gJ0NvbnN0cnVjdEh1YkJhY2tlbmQnO1xuXG4gICAgbmV3IERhc2hib2FyZCh0aGlzLCAnUmVwb3J0cycsIHtcbiAgICAgIGRhc2hib2FyZE5hbWU6IGAke2Rhc2hib2FyZE5hbWV9LXJlcG9ydHNgLFxuICAgICAgcGVyaW9kT3ZlcnJpZGU6IFBlcmlvZE92ZXJyaWRlLkFVVE8sXG4gICAgICBzdGFydDogJy1QMVcnLCAvLyBTaG93IDEgd2VlayBieSBkZWZhdWx0XG4gICAgICB3aWRnZXRzOiByZXBvcnRzLFxuICAgIH0pO1xuXG4gICAgbmV3IERhc2hib2FyZCh0aGlzLCAnR3JhcGhzJywge1xuICAgICAgZGFzaGJvYXJkTmFtZTogYCR7ZGFzaGJvYXJkTmFtZX0tZ3JhcGhzYCxcbiAgICAgIHBlcmlvZE92ZXJyaWRlOiBQZXJpb2RPdmVycmlkZS5BVVRPLFxuICAgICAgc3RhcnQ6ICctUDFXJywgLy8gU2hvdyAxIHdlZWsgYnkgZGVmYXVsdFxuICAgICAgd2lkZ2V0czogW1xuICAgICAgICBbXG4gICAgICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgICAgICAgbWFya2Rvd246IFtcbiAgICAgICAgICAgICAgJyMgQ2F0YWxvZyBPdmVydmlldycsXG4gICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpwcmltYXJ5OlBhY2thZ2UgRGF0YV0oJHtzM09iamVjdFVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5wYWNrYWdlRGF0YVxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpDYXRhbG9nIEJ1aWxkZXJdKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5jYXRhbG9nQnVpbGRlci5mdW5jdGlvblxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpJbnZlbnRvcnkgQ2FuYXJ5XSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5mdW5jdGlvblxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpTZWFyY2ggQ2FuYXJ5IExvZyBHcm91cF0oJHtsYW1iZGFTZWFyY2hMb2dHcm91cFVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkuZnVuY3Rpb25cbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdDYXRhbG9nIFNpemUnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkubWV0cmljU3VibW9kdWxlQ291bnQoeyBsYWJlbDogJ1N1Ym1vZHVsZXMnIH0pLFxuICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkubWV0cmljUGFja2FnZVZlcnNpb25Db3VudCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdQYWNrYWdlIFZlcnNpb25zJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5tZXRyaWNQYWNrYWdlTWFqb3JDb3VudCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdQYWNrYWdlIE1ham9ycycsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkubWV0cmljUGFja2FnZUNvdW50KHsgbGFiZWw6ICdQYWNrYWdlcycgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0NhdGFsb2cgSXNzdWVzJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgcHJvcHMuaW52ZW50b3J5Lm1ldHJpY1Vua25vd25PYmplY3RDb3VudCh7IGxhYmVsOiAnVW5rbm93bicgfSksXG4gICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5tZXRyaWNNaXNzaW5nQXNzZW1ibHlDb3VudCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdNaXNzaW5nIEFzc2VtYmx5JyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5tZXRyaWNNaXNzaW5nUGFja2FnZU1ldGFkYXRhQ291bnQoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTWlzc2luZyBNZXRhZGF0YScsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkubWV0cmljTWlzc2luZ1BhY2thZ2VUYXJiYWxsQ291bnQoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTWlzc2luZyBUYXJiYWxsJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5tZXRyaWNVbmluc3RhbGxhYmxlUGFja2FnZUNvdW50KHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1VuaW5zdGFsbGFibGUgUGFja2FnZScsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uY2F0YWxvZ0J1aWxkZXIubWV0cmljTWlzc2luZ0NvbnN0cnVjdEZyYW1ld29ya0NvdW50KFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdObyBDb25zdHJ1Y3QgRnJhbWV3b3JrJyB9XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uY2F0YWxvZ0J1aWxkZXIubWV0cmljTWlzc2luZ0NvbnN0cnVjdEZyYW1ld29ya1ZlcnNpb25Db3VudChcbiAgICAgICAgICAgICAgICB7IGxhYmVsOiAnTm8gQ29uc3RydWN0IEZyYW1ld29yayBWZXJzaW9uJyB9XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgLi4udGhpcy5jYXRhbG9nT3ZlcnZpZXdMYW5ndWFnZVNlY3Rpb25zKHByb3BzKSxcbiAgICAgICAgLi4ucmVuZGVyUGFja2FnZVNvdXJjZXNXaWRnZXRzKHByb3BzLnBhY2thZ2VTb3VyY2VzKSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogMixcbiAgICAgICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgICAgIG1hcmtkb3duOiBbXG4gICAgICAgICAgICAgICcjIEluZ2VzdGlvbiBGdW5jdGlvbicsXG4gICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpJbmdlc3Rpb24gRnVuY3Rpb25dKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLmZ1bmN0aW9uXG4gICAgICAgICAgICAgICl9KWAsXG4gICAgICAgICAgICAgIGBbYnV0dG9uOnByaW1hcnk6U2VhcmNoIExvZyBHcm91cF0oJHtsYW1iZGFTZWFyY2hMb2dHcm91cFVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24uZnVuY3Rpb25cbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgICAgYFtidXR0b246RExRXSgke3Nxc1F1ZXVlVXJsKHByb3BzLmluZ2VzdGlvbi5kZWFkTGV0dGVyUXVldWUpfSlgLFxuICAgICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0Z1bmN0aW9uIEhlYWx0aCcsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLmZ1bmN0aW9uLm1ldHJpY0ludm9jYXRpb25zKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnSW52b2NhdGlvbnMnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLmZ1bmN0aW9uLm1ldHJpY0Vycm9ycyh7IGxhYmVsOiAnRXJyb3JzJyB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdJbnB1dCBRdWV1ZScsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIHByb3BzLmluZ2VzdGlvbi5xdWV1ZS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNWaXNpYmxlKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1Zpc2libGUgTWVzc2FnZXMnLFxuICAgICAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHByb3BzLmluZ2VzdGlvbi5xdWV1ZS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNOb3RWaXNpYmxlKFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdIaWRkZW4gTWVzc2FnZXMnLCBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSkgfVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIHByb3BzLmluZ2VzdGlvbi5xdWV1ZS5tZXRyaWNBcHByb3hpbWF0ZUFnZU9mT2xkZXN0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdPbGRlc3QgTWVzc2FnZSBBZ2UnLFxuICAgICAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRBbm5vdGF0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICcjZmZhNTAwJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJzEwIE1pbnV0ZXMnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBEdXJhdGlvbi5taW51dGVzKDEwKS50b1NlY29uZHMoKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByaWdodFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnSW5wdXQgUXVhbGl0eScsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLm1ldHJpY0ludmFsaWRBc3NlbWJseSh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ0ludmFsaWQgQXNzZW1ibGllcycsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24ubWV0cmljSW52YWxpZFRhcmJhbGwoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdJbnZhbGlkIFRhcmJhbGwnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLm1ldHJpY0luZWxpZ2libGVMaWNlbnNlKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnSW5lbGlnaWJsZSBMaWNlbnNlJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHByb3BzLmluZ2VzdGlvbi5tZXRyaWNNaXNtYXRjaGVkSWRlbnRpdHlSZWplY3Rpb25zKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnTWlzbWF0Y2hlZCBJZGVudGl0eScsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24ubWV0cmljRm91bmRMaWNlbnNlRmlsZSh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ0ZvdW5kIExpY2Vuc2UgZmlsZScsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbGFiZWw6ICdDb3VudCcsIG1pbjogMCwgc2hvd1VuaXRzOiBmYWxzZSB9LFxuICAgICAgICAgICAgc3RhY2tlZDogdHJ1ZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdEZWFkIExldHRlcnMnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24uZGVhZExldHRlclF1ZXVlLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc1Zpc2libGUoXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ1Zpc2libGUgTWVzc2FnZXMnIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLmRlYWRMZXR0ZXJRdWV1ZS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNOb3RWaXNpYmxlKFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdJbnZpc2libGUgTWVzc2FnZXMnIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW1xuICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24uZGVhZExldHRlclF1ZXVlLm1ldHJpY0FwcHJveGltYXRlQWdlT2ZPbGRlc3RNZXNzYWdlKFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdPbGRlc3QgTWVzc2FnZSBBZ2UnIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByaWdodEFubm90YXRpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJyNmZjdmMGUnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnMTAgZGF5cycsXG4gICAgICAgICAgICAgICAgdmFsdWU6IER1cmF0aW9uLmRheXMoMTApLnRvU2Vjb25kcygpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICcjZmYwMDAwJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJzE0IGRheXMgKERMUSBSZXRlbnRpb24pJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogRHVyYXRpb24uZGF5cygxNCkudG9TZWNvbmRzKCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogMixcbiAgICAgICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgICAgIG1hcmtkb3duOiBbXG4gICAgICAgICAgICAgICcjIE9yY2hlc3RyYXRpb24nLFxuICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgYFtidXR0b246cHJpbWFyeTpTdGF0ZSBNYWNoaW5lXSgke3N0YXRlTWFjaGluZVVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLnN0YXRlTWFjaGluZVxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpETFFdKCR7c3FzUXVldWVVcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5kZWFkTGV0dGVyUXVldWVcbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgICAgYFtidXR0b246UmVkcml2ZSBETFFdKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5yZWRyaXZlRnVuY3Rpb25cbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgICAgYFtidXR0b246UmVnZW5lcmF0ZSBBbGwgRG9jdW1lbnRhdGlvbl0oJHtzdGF0ZU1hY2hpbmVVcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5yZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvblxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ1N0YXRlIE1hY2hpbmUgRXhlY3V0aW9ucycsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5zdGF0ZU1hY2hpbmUubWV0cmljU3RhcnRlZCh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ1N0YXJ0ZWQnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5zdGF0ZU1hY2hpbmUubWV0cmljU3VjY2VlZGVkKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnU3VjY2VlZGVkJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAsIGxhYmVsOiAnQ291bnQnLCBzaG93VW5pdHM6IGZhbHNlIH0sXG4gICAgICAgICAgICByaWdodDogW1xuICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLnN0YXRlTWFjaGluZS5tZXRyaWNUaW1lKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0R1cmF0aW9uJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdTdGF0ZSBNYWNoaW5lIEZhaWx1cmVzJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLnN0YXRlTWFjaGluZS5tZXRyaWNBYm9ydGVkKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQWJvcnRlZCcsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLnN0YXRlTWFjaGluZS5tZXRyaWNGYWlsZWQoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdGYWlsZWQnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5zdGF0ZU1hY2hpbmUubWV0cmljVGhyb3R0bGVkKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnVGhyb3R0bGVkJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uc3RhdGVNYWNoaW5lLm1ldHJpY1RpbWVkT3V0KHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnVGltZWQgT3V0JyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAsIGxhYmVsOiAnQ291bnQnLCBzaG93VW5pdHM6IGZhbHNlIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnRGVhZCBMZXR0ZXIgUXVldWUnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLmRlYWRMZXR0ZXJRdWV1ZS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNWaXNpYmxlKFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdWaXNpYmxlIE1lc3NhZ2VzJyB9XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uZGVhZExldHRlclF1ZXVlLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc05vdFZpc2libGUoXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ0ludmlzaWJsZSBNZXNzYWdlcycgfVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uZGVhZExldHRlclF1ZXVlLm1ldHJpY0FwcHJveGltYXRlQWdlT2ZPbGRlc3RNZXNzYWdlKFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdPbGRlc3QgTWVzc2FnZSBBZ2UnIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByaWdodEFubm90YXRpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJyNmZjdmMGUnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnMTAgZGF5cycsXG4gICAgICAgICAgICAgICAgdmFsdWU6IER1cmF0aW9uLmRheXMoMTApLnRvU2Vjb25kcygpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICcjZmYwMDAwJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJzE0IGRheXMgKERMUSBSZXRlbnRpb24pJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogRHVyYXRpb24uZGF5cygxNCkudG9TZWNvbmRzKCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcblxuICAgICAgICAvLyBkZW55IGxpc3RcbiAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICBbXG4gICAgICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgICAgICAgbWFya2Rvd246IFtcbiAgICAgICAgICAgICAgJyMgRGVueSBMaXN0JyxcbiAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgIGBbYnV0dG9uOnByaW1hcnk6RGVueSBMaXN0IE9iamVjdF0oJHtzM09iamVjdFVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5kZW55TGlzdC5idWNrZXQsXG4gICAgICAgICAgICAgICAgcHJvcHMuZGVueUxpc3Qub2JqZWN0S2V5XG4gICAgICAgICAgICAgICl9KWAsXG4gICAgICAgICAgICAgIGBbYnV0dG9uOlBydW5lIEZ1bmN0aW9uXSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgICAgIHByb3BzLmRlbnlMaXN0LnBydW5lLnBydW5lSGFuZGxlclxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpQcnVuZSBMb2dzXSgke2xhbWJkYVNlYXJjaExvZ0dyb3VwVXJsKFxuICAgICAgICAgICAgICAgIHByb3BzLmRlbnlMaXN0LnBydW5lLnBydW5lSGFuZGxlclxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpEZWxldGUgUXVldWVdKCR7c3FzUXVldWVVcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMuZGVueUxpc3QucHJ1bmUucXVldWVcbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgICAgYFtidXR0b246RGVsZXRlIExvZ3NdKCR7bGFtYmRhU2VhcmNoTG9nR3JvdXBVcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMuZGVueUxpc3QucHJ1bmUuZGVsZXRlSGFuZGxlclxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0RlbnkgTGlzdCcsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMuZGVueUxpc3QubWV0cmljRGVueUxpc3RSdWxlcyh7IGxhYmVsOiAnUnVsZXMnIH0pLFxuICAgICAgICAgICAgICAgICdSRVBFQVQnXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHByb3BzLmRlbnlMaXN0LnBydW5lLnF1ZXVlLm1ldHJpY051bWJlck9mTWVzc2FnZXNEZWxldGVkKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0RlbGV0ZWQgRmlsZXMnLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnUHJ1bmUgRnVuY3Rpb24gSGVhbHRoJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5kZW55TGlzdC5wcnVuZS5wcnVuZUhhbmRsZXIubWV0cmljSW52b2NhdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdJbnZvY2F0aW9ucycsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5kZW55TGlzdC5wcnVuZS5wcnVuZUhhbmRsZXIubWV0cmljRXJyb3JzKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnRXJyb3JzJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcblxuICAgICAgICAuLi4ocHJvcHMucGFja2FnZVN0YXRzXG4gICAgICAgICAgPyByZW5kZXJQYWNrYWdlU3RhdHNXaWRnZXRzKHByb3BzLnBhY2thZ2VTdGF0cylcbiAgICAgICAgICA6IFtdKSxcbiAgICAgICAgLi4ucmVuZGVyVmVyc2lvblRyYWNrZXJXaWRnZXRzKHByb3BzLnZlcnNpb25UcmFja2VyKSxcbiAgICAgICAgLi4uKHByb3BzLnJlbGVhc2VOb3Rlc1xuICAgICAgICAgID8gcmVuZGVyUmVsZWFzZU5vdGVzV2lkZ2V0cyhwcm9wcy5yZWxlYXNlTm90ZXMpXG4gICAgICAgICAgOiBbXSksXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwZXJMYW5ndWFnZVJlcG9ydHMoXG4gICAgbGFuZ3VhZ2U6IERvY3VtZW50YXRpb25MYW5ndWFnZSxcbiAgICBwYWNrYWdlRGF0YTogSUJ1Y2tldFxuICApOiBJV2lkZ2V0W10ge1xuICAgIHJldHVybiBbXG4gICAgICBuZXcgUGFja2FnZVZlcnNpb25zVGFibGVXaWRnZXQodGhpcywgYE1pc3NpbmdEb2NzLSR7bGFuZ3VhZ2UubmFtZX1gLCB7XG4gICAgICAgIHRpdGxlOiBgUGFja2FnZSBWZXJzaW9ucyBSZXBvcnQgfCBNaXNzaW5nIERvY3VtZW50YXRpb24gfCBfJHtsYW5ndWFnZS5uYW1lfV9gLFxuICAgICAgICBkZXNjcmlwdGlvbjogW1xuICAgICAgICAgIGBUaGVzZSBwYWNrYWdlcyBhcmUgbWlzc2luZyAke2xhbmd1YWdlLm5hbWV9IGRvY3VtZW50YXRpb24uYCxcbiAgICAgICAgICAnQXBhcnQgZnJvbSB0aGUgdW5pbnN0YWxsYWJsZSBwYWNrYWdlcywgdGhpcyByZXBvcnQgc2hvdWxkIHN0YXkgZW1wdHknLFxuICAgICAgICAgICcnLFxuICAgICAgICAgICdUbyBpbnZlc3RpZ2F0ZSBpbnNwZWN0IHRoZSBvcmNoZXN0cmF0aW9uIERMUS4nLFxuICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgICBrZXk6IG1pc3NpbmdEb2N1bWVudGF0aW9uUmVwb3J0KGxhbmd1YWdlKSxcbiAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICB9KSxcbiAgICAgIG5ldyBQYWNrYWdlVmVyc2lvbnNUYWJsZVdpZGdldChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYENvcnJ1cHRBc3NlbWJseURvY3MtJHtsYW5ndWFnZS5uYW1lfWAsXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogYFBhY2thZ2UgVmVyc2lvbnMgUmVwb3J0IHwgQ29ycnVwdCBBc3NlbWJseSB8IF8ke2xhbmd1YWdlLm5hbWV9X2AsXG4gICAgICAgICAgZGVzY3JpcHRpb246IFtcbiAgICAgICAgICAgIGBUaGVzZSBwYWNrYWdlcyBhcmUgbWlzc2luZyAke2xhbmd1YWdlLm5hbWV9IGRvY3VtZW50YXRpb24gYmVjYXVzZSBvZiBhIGNvcnJ1cHRlZCBhc3NlbWJseS5gLFxuICAgICAgICAgICAgJycsXG4gICAgICAgICAgICBcIlRoZSBzcGVjaWZpYyBlcnJvciBjYW4gYmUgZm91bmQgaW4gdGhlIHBhY2thZ2UgZGlyZWN0b3J5IGluc2lkZSBmaWxlcyBzdWZmaXhlZCB3aXRoICcuY29ycnVwdGFzc2VtYmx5J1wiLFxuICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgICAgYnVja2V0OiBwYWNrYWdlRGF0YSxcbiAgICAgICAgICBrZXk6IGNvcnJ1cHRBc3NlbWJseVJlcG9ydChsYW5ndWFnZSksXG4gICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSAqY2F0YWxvZ092ZXJ2aWV3TGFuZ3VhZ2VTZWN0aW9ucyh7XG4gICAgaW52ZW50b3J5LFxuICAgIG9yY2hlc3RyYXRpb24sXG4gIH06IEJhY2tlbmREYXNoYm9hcmRQcm9wcyk6IEdlbmVyYXRvcjxJV2lkZ2V0W10+IHtcbiAgICB5aWVsZCBbXG4gICAgICBuZXcgVGV4dFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogMixcbiAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgICBtYXJrZG93bjogW1xuICAgICAgICAgICcjIERvY3VtZW50YXRpb24gR2VuZXJhdGlvbicsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYFtidXR0b246cHJpbWFyeTpUcmFuc2xpdGVyYXRvciBMb2dzXSgke2xvZ0dyb3VwVXJsKFxuICAgICAgICAgICAgb3JjaGVzdHJhdGlvbi50cmFuc2xpdGVyYXRvci5sb2dHcm91cFxuICAgICAgICAgICl9KWAsXG4gICAgICAgICAgYFtidXR0b246VHJhbnNsaXRlcmF0b3IgRUNTIENsdXN0ZXJdKCR7ZWNzQ2x1c3RlclVybChcbiAgICAgICAgICAgIG9yY2hlc3RyYXRpb24uZWNzQ2x1c3RlclxuICAgICAgICAgICl9KWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICB9KSxcbiAgICBdO1xuICAgIGNvbnN0IG1GYXJnYXRlVXNhZ2UgPSBuZXcgTWV0cmljKHtcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgQ2xhc3M6ICdTdGFuZGFyZC9PbkRlbWFuZCcsXG4gICAgICAgIFJlc291cmNlOiAndkNQVScsXG4gICAgICAgIFNlcnZpY2U6ICdGYXJnYXRlJyxcbiAgICAgICAgVHlwZTogJ1Jlc291cmNlJyxcbiAgICAgIH0sXG4gICAgICBtZXRyaWNOYW1lOiAnUmVzb3VyY2VDb3VudCcsXG4gICAgICBuYW1lc3BhY2U6ICdBV1MvVXNhZ2UnLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICB9KTtcblxuICAgIHlpZWxkIFtcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ0ZhcmdhdGUgUmVzb3VyY2VzJyxcbiAgICAgICAgbGVmdDogW1xuICAgICAgICAgIG1GYXJnYXRlVXNhZ2Uud2l0aCh7IGxhYmVsOiAnRmFyZ2F0ZSB2Q1BVIFVzYWdlIChPbi1EZW1hbmQpJyB9KSxcbiAgICAgICAgICBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgZXhwcmVzc2lvbjogJ1NFUlZJQ0VfUVVPVEEobUZhcmdhdGVVc2FnZSknLFxuICAgICAgICAgICAgbGFiZWw6ICdGYXJnYXRlIHZDUFUgUXVvdGEgKE9uLURlbWFuZCknLFxuICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB7IG1GYXJnYXRlVXNhZ2UgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICByaWdodDogW1xuICAgICAgICAgIG9yY2hlc3RyYXRpb24ubWV0cmljRWNzQ3B1VXRpbGl6YXRpb24oeyBsYWJlbDogJ0NQVSBVdGlsaXphdGlvbicgfSksXG4gICAgICAgICAgb3JjaGVzdHJhdGlvbi5tZXRyaWNFY3NNZW1vcnlVdGlsaXphdGlvbih7XG4gICAgICAgICAgICBsYWJlbDogJ01lbW9yeSBVdGlsaXphdGlvbicsXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIHJpZ2h0WUF4aXM6IHsgbGFiZWw6ICdQZXJjZW50JywgbWluOiAwLCBtYXg6IDEwMCwgc2hvd1VuaXRzOiBmYWxzZSB9LFxuICAgICAgfSksXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgdGl0bGU6ICdFQ1MgUmVzb3VyY2VzJyxcbiAgICAgICAgbGVmdDogW1xuICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICBvcmNoZXN0cmF0aW9uLm1ldHJpY0Vjc05ldHdvcmtSeEJ5dGVzKHsgbGFiZWw6ICdSZWNlaXZlZCBCeXRlcycgfSlcbiAgICAgICAgICApLFxuICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICBvcmNoZXN0cmF0aW9uLm1ldHJpY0Vjc05ldHdvcmtUeEJ5dGVzKHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdUcmFuc21pdHRlZCBCeXRlcycsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgcmlnaHQ6IFtcbiAgICAgICAgICBmaWxsTWV0cmljKG9yY2hlc3RyYXRpb24ubWV0cmljRWNzVGFza0NvdW50KHsgbGFiZWw6ICdUYXNrIENvdW50JyB9KSksXG4gICAgICAgIF0sXG4gICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICB9KSxcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ0VDUyBUYXNrIE1vbml0b3InLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgb3JjaGVzdHJhdGlvbi5lY3NUYXNrTW9uaXRvci5tZXRyaWNBY3RpdmVUYXNrQ291bnQoe1xuICAgICAgICAgICAgbGFiZWw6ICdBY3RpdmUgVGFzayBDb3VudCcsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgb3JjaGVzdHJhdGlvbi5lY3NUYXNrTW9uaXRvci5tZXRyaWNLaWxsZWRUYXNrQ291bnQoe1xuICAgICAgICAgICAgbGFiZWw6ICdLaWxsZWQgVGFzayBDb3VudCcsXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgcmlnaHQ6IFtcbiAgICAgICAgICBvcmNoZXN0cmF0aW9uLmVjc1Rhc2tNb25pdG9yLm1ldHJpY0FjdGl2ZVRhc2tBZ2Uoe1xuICAgICAgICAgICAgbGFiZWw6ICdBY3RpdmUgVGFzayBBZ2UgKE1heCknLFxuICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBvcmNoZXN0cmF0aW9uLmVjc1Rhc2tNb25pdG9yLm1ldHJpY0FjdGl2ZVRhc2tBZ2Uoe1xuICAgICAgICAgICAgbGFiZWw6ICdBY3RpdmUgVGFzayBBZ2UgKEF2ZyknLFxuICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuQVZFUkFHRSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBvcmNoZXN0cmF0aW9uLmVjc1Rhc2tNb25pdG9yLm1ldHJpY0FjdGl2ZVRhc2tBZ2Uoe1xuICAgICAgICAgICAgbGFiZWw6ICdBY3RpdmUgVGFzayBBZ2UgKE1pbiknLFxuICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUlOSU1VTSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgIH0pLFxuICAgIF07XG5cbiAgICBmb3IgKGNvbnN0IGxhbmd1YWdlIG9mIERvY3VtZW50YXRpb25MYW5ndWFnZS5BTEwpIHtcbiAgICAgIHlpZWxkIFtcbiAgICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgICB3aWR0aDogMjQsXG4gICAgICAgICAgbWFya2Rvd246IGAjIyBMYW5ndWFnZTogJHtsYW5ndWFnZS50b1N0cmluZygpfWAsXG4gICAgICAgIH0pLFxuICAgICAgXTtcbiAgICAgIHlpZWxkIFtcbiAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgIHRpdGxlOiAnUGFja2FnZSBWZXJzaW9ucycsXG4gICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgaW52ZW50b3J5Lm1ldHJpY1N1cHBvcnRlZFBhY2thZ2VWZXJzaW9uQ291bnQobGFuZ3VhZ2UsIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdBdmFpbGFibGUnLFxuICAgICAgICAgICAgICBjb2xvcjogJyMyY2EwMmMnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljQ29ycnVwdEFzc2VtYmx5UGFja2FnZVZlcnNpb25Db3VudChsYW5ndWFnZSwge1xuICAgICAgICAgICAgICBsYWJlbDogJ0NvcnJ1cHQgQXNzZW1ibHknLFxuICAgICAgICAgICAgICBjb2xvcjogJyMzNTQyRDcnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljVHJhbnNsaXRlcmF0aW9uRXJyb3JQYWNrYWdlVmVyc2lvbkNvdW50KGxhbmd1YWdlLCB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnVHJhbnNsaXRlcmF0aW9uIEVycm9yJyxcbiAgICAgICAgICAgICAgY29sb3I6ICcjRkY4QzAwJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaW52ZW50b3J5Lm1ldHJpY1Vuc3VwcG9ydGVkUGFja2FnZVZlcnNpb25Db3VudChsYW5ndWFnZSwge1xuICAgICAgICAgICAgICBsYWJlbDogJ1Vuc3VwcG9ydGVkJyxcbiAgICAgICAgICAgICAgY29sb3I6ICcjOTQ2N2JkJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaW52ZW50b3J5Lm1ldHJpY01pc3NpbmdQYWNrYWdlVmVyc2lvbkNvdW50KGxhbmd1YWdlLCB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnTWlzc2luZycsXG4gICAgICAgICAgICAgIGNvbG9yOiAnI2Q2MjcyOCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGxlZnRZQXhpczogeyBzaG93VW5pdHM6IGZhbHNlIH0sXG4gICAgICAgICAgdmlldzogR3JhcGhXaWRnZXRWaWV3LlBJRSxcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICB0aXRsZTogJ1BhY2thZ2UgVmVyc2lvbiBTdWJtb2R1bGVzJyxcbiAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljU3VwcG9ydGVkU3VibW9kdWxlQ291bnQobGFuZ3VhZ2UsIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdBdmFpbGFibGUnLFxuICAgICAgICAgICAgICBjb2xvcjogJyMyY2EwMmMnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljQ29ycnVwdEFzc2VtYmx5U3VibW9kdWxlQ291bnQobGFuZ3VhZ2UsIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdDb3JydXB0IEFzc2VtYmx5JyxcbiAgICAgICAgICAgICAgY29sb3I6ICcjMzU0MkQ3JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaW52ZW50b3J5Lm1ldHJpY1RyYW5zbGl0ZXJhdGlvbkVycm9yU3VibW9kdWxlQ291bnQobGFuZ3VhZ2UsIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdUcmFuc2xpdGVyYXRpb24gRXJyb3InLFxuICAgICAgICAgICAgICBjb2xvcjogJyNGRjhDMDAnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljVW5zdXBwb3J0ZWRTdWJtb2R1bGVDb3VudChsYW5ndWFnZSwge1xuICAgICAgICAgICAgICBsYWJlbDogJ1Vuc3VwcG9ydGVkJyxcbiAgICAgICAgICAgICAgY29sb3I6ICcjOTQ2N2JkJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaW52ZW50b3J5Lm1ldHJpY01pc3NpbmdTdWJtb2R1bGVDb3VudChsYW5ndWFnZSwge1xuICAgICAgICAgICAgICBsYWJlbDogJ01pc3NpbmcnLFxuICAgICAgICAgICAgICBjb2xvcjogJyNkNjI3MjgnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgICBsZWZ0WUF4aXM6IHsgc2hvd1VuaXRzOiBmYWxzZSB9LFxuICAgICAgICAgIHZpZXc6IEdyYXBoV2lkZ2V0Vmlldy5QSUUsXG4gICAgICAgIH0pLFxuICAgICAgXTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24qIHJlbmRlclBhY2thZ2VTb3VyY2VzV2lkZ2V0cyhcbiAgcGFja2FnZVNvdXJjZXM6IFBhY2thZ2VTb3VyY2VCaW5kUmVzdWx0W11cbik6IEdlbmVyYXRvcjxJV2lkZ2V0W10sIHVuZGVmaW5lZCwgdW5kZWZpbmVkPiB7XG4gIGZvciAoY29uc3QgcGFja2FnZVNvdXJjZSBvZiBwYWNrYWdlU291cmNlcykge1xuICAgIHlpZWxkIFtcbiAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICAgIG1hcmtkb3duOiBbXG4gICAgICAgICAgYCMgJHtwYWNrYWdlU291cmNlLm5hbWV9YCxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICAuLi4ocGFja2FnZVNvdXJjZS5saW5rcyA/PyBbXSkubWFwKFxuICAgICAgICAgICAgKHsgbmFtZSwgcHJpbWFyeSwgdXJsIH0pID0+XG4gICAgICAgICAgICAgIGBbJHtwcmltYXJ5ID8gJ2J1dHRvbjpwcmltYXJ5JyA6ICdidXR0b24nfToke25hbWV9XSgke3VybH0pYFxuICAgICAgICAgICksXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICB9KSxcbiAgICBdO1xuICAgIHlpZWxkKiBwYWNrYWdlU291cmNlLmRhc2hib2FyZFdpZGdldHM7XG4gIH1cbiAgcmV0dXJuO1xufVxuXG5mdW5jdGlvbiByZW5kZXJQYWNrYWdlU3RhdHNXaWRnZXRzKHBhY2thZ2VTdGF0czogUGFja2FnZVN0YXRzKTogSVdpZGdldFtdW10ge1xuICByZXR1cm4gW1xuICAgIFtcbiAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICAgIG1hcmtkb3duOiBbXG4gICAgICAgICAgJyMgUGFja2FnZSBTdGF0cycsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYFtidXR0b246cHJpbWFyeTpQYWNrYWdlIFN0YXRzIE9iamVjdF0oJHtzM09iamVjdFVybChcbiAgICAgICAgICAgIHBhY2thZ2VTdGF0cy5idWNrZXQsXG4gICAgICAgICAgICBwYWNrYWdlU3RhdHMuc3RhdHNLZXlcbiAgICAgICAgICApfSlgLFxuICAgICAgICAgIGBbYnV0dG9uOlBhY2thZ2UgU3RhdHMgRnVuY3Rpb25dKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICBwYWNrYWdlU3RhdHMuaGFuZGxlclxuICAgICAgICAgICl9KWAsXG4gICAgICAgICAgYFtidXR0b246UGFja2FnZSBTdGF0cyBMb2dzXSgke2xhbWJkYVNlYXJjaExvZ0dyb3VwVXJsKFxuICAgICAgICAgICAgcGFja2FnZVN0YXRzLmhhbmRsZXJcbiAgICAgICAgICApfSlgLFxuICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgfSksXG4gICAgXSxcbiAgICBbXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgdGl0bGU6ICdOdW1iZXIgb2YgUGFja2FnZSBTdGF0cyBSZWNvcmRlZCcsXG4gICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgcGFja2FnZVN0YXRzLm1ldHJpY1BhY2thZ2VzQ291bnQoeyBsYWJlbDogJ1BhY2thZ2VzIHdpdGggc3RhdHMnIH0pLFxuICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICB9KSxcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ0ludm9jYXRpb24gRHVyYXRpb24nLFxuICAgICAgICBsZWZ0OiBbcGFja2FnZVN0YXRzLmhhbmRsZXIubWV0cmljRHVyYXRpb24oeyBsYWJlbDogJ0R1cmF0aW9uJyB9KV0sXG4gICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgcmlnaHRBbm5vdGF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbG9yOiAnI2ZmYTUwMCcsXG4gICAgICAgICAgICBsYWJlbDogJzE1IG1pbnV0ZXMgKExhbWJkYSB0aW1lb3V0KScsXG4gICAgICAgICAgICB2YWx1ZTogRHVyYXRpb24ubWludXRlcygxNSkudG9TZWNvbmRzKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgIF0sXG4gIF07XG59XG5cbmZ1bmN0aW9uIHJlbmRlclZlcnNpb25UcmFja2VyV2lkZ2V0cyhcbiAgdmVyc2lvblRyYWNrZXI6IFZlcnNpb25UcmFja2VyXG4pOiBJV2lkZ2V0W11bXSB7XG4gIHJldHVybiBbXG4gICAgW1xuICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgbWFya2Rvd246IFtcbiAgICAgICAgICAnIyBWZXJzaW9uIFRyYWNrZXInLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBbYnV0dG9uOnByaW1hcnk6VmVyc2lvbnMgT2JqZWN0XSgke3MzT2JqZWN0VXJsKFxuICAgICAgICAgICAgdmVyc2lvblRyYWNrZXIuYnVja2V0LFxuICAgICAgICAgICAgVkVSU0lPTl9UUkFDS0VSX0tFWVxuICAgICAgICAgICl9KWAsXG4gICAgICAgICAgYFtidXR0b246VmVyc2lvbiBUcmFja2VyIEZ1bmN0aW9uXSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgdmVyc2lvblRyYWNrZXIuaGFuZGxlclxuICAgICAgICAgICl9KWAsXG4gICAgICAgICAgYFtidXR0b246VmVyc2lvbiBUcmFja2VyIExvZ3NdKCR7bGFtYmRhU2VhcmNoTG9nR3JvdXBVcmwoXG4gICAgICAgICAgICB2ZXJzaW9uVHJhY2tlci5oYW5kbGVyXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0pLFxuICAgIF0sXG4gICAgW1xuICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgIHRpdGxlOiAnTnVtYmVyIG9mIFBhY2thZ2UgVmVyc2lvbnMgUmVjb3JkZWQnLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgIHZlcnNpb25UcmFja2VyLm1ldHJpY1RyYWNrZWRWZXJzaW9uc0NvdW50KHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdQYWNrYWdlIHZlcnNpb25zIHJlY29yZGVkJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICB9KSxcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ0ludm9jYXRpb24gRHVyYXRpb24nLFxuICAgICAgICBsZWZ0OiBbdmVyc2lvblRyYWNrZXIuaGFuZGxlci5tZXRyaWNEdXJhdGlvbih7IGxhYmVsOiAnRHVyYXRpb24nIH0pXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICByaWdodEFubm90YXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29sb3I6ICcjZmZhNTAwJyxcbiAgICAgICAgICAgIGxhYmVsOiAnMSBtaW51dGVzIChMYW1iZGEgdGltZW91dCknLFxuICAgICAgICAgICAgdmFsdWU6IER1cmF0aW9uLm1pbnV0ZXMoMSkudG9TZWNvbmRzKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgIF0sXG4gIF07XG59XG5cbmZ1bmN0aW9uIHJlbmRlclJlbGVhc2VOb3Rlc1dpZGdldHMoXG4gIHJlbGVhc2VOb3RlczogUmVsZWFzZU5vdGVGZXRjaGVyXG4pOiBJV2lkZ2V0W11bXSB7XG4gIHJldHVybiBbXG4gICAgW1xuICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgbWFya2Rvd246IFtcbiAgICAgICAgICAnIyBSZWxlYXNlIE5vdGVzJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgW2J1dHRvbjpwcmltYXJ5OlN0YXRlTWFjaGluZV0oJHtzdGF0ZU1hY2hpbmVVcmwoXG4gICAgICAgICAgICByZWxlYXNlTm90ZXMuc3RhdGVNYWNoaW5lXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgICBgW2J1dHRvbjpyZWxlYXNlTm90ZXNUcmlnZ2VyXSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgcmVsZWFzZU5vdGVzLnJlbGVhc2VOb3Rlc1RyaWdnZXJMYW1iZGFcbiAgICAgICAgICApfSlgLFxuICAgICAgICAgIGBbYnV0dG9uOmdlbmVyYXRlUmVsZWFzZU5vdGVzXSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgcmVsZWFzZU5vdGVzLmdlbmVyYXRlUmVsZWFzZU5vdGVzTGFtYmRhXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgICBgW2J1dHRvbjp1cGRhdGVGZWVkXSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgcmVsZWFzZU5vdGVzLnVwZGF0ZUZlZWRGdW5jdGlvblxuICAgICAgICAgICl9KWAsXG4gICAgICAgICAgYFtidXR0b246cXVldWVdKCR7c3FzUXVldWVVcmwocmVsZWFzZU5vdGVzLnF1ZXVlKX0pYCxcbiAgICAgICAgICBgW2J1dHRvbjp3b3JrZXJRdWV1ZV0oJHtzcXNRdWV1ZVVybChyZWxlYXNlTm90ZXMud29ya2VyUXVldWUpfSlgLFxuICAgICAgICAgIGBbYnV0dG9uOndvcmtlckRMUV0oJHtzcXNRdWV1ZVVybChyZWxlYXNlTm90ZXMud29ya2VyRExRKX0pYCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0pLFxuICAgIF0sXG4gICAgW1xuICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgIHRpdGxlOiAnTnVtYmVyIG9mIHJlbGVhc2UgTm90ZXMnLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgIHJlbGVhc2VOb3Rlcy5tZXRyaWNQYWNrYWdlc1dpdGhSZWxlYXNlTm90ZXNDb3VudCh7XG4gICAgICAgICAgICAgIGxhYmVsOiAnUGFja2FnZXMgd2l0aCByZWxlYXNlIG5vdGVzJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICB9KSxcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ1JlbGVhc2Ugbm90ZXMgZ2VuZXJhdGlvbiBFcnJvcnMnLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgcmVsZWFzZU5vdGVzLm1ldHJpY0NoYW5nZUxvZ0FsbEVycm9yKHsgbGFiZWw6ICdBbGwgRXJyb3JzJyB9KSxcbiAgICAgICAgICByZWxlYXNlTm90ZXMubWV0cmljUmVxdWVzdFVua25vd25FcnJvcih7IGxhYmVsOiAnVW5rbm93bkVycm9yJyB9KSxcbiAgICAgICAgICByZWxlYXNlTm90ZXMubWV0cmljSW52YWxpZENyZWRlbnRpYWxzKHtcbiAgICAgICAgICAgIGxhYmVsOiAnSW52YWxpZENyZWRlbnRpYWxzJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICByZWxlYXNlTm90ZXMubWV0cmljUmVxdWVzdFF1b3RhRXhoYXVzdGVkKHtcbiAgICAgICAgICAgIGxhYmVsOiAnUmVxdWVzdFF1b3RhRXhoYXVzdGVkJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICByZWxlYXNlTm90ZXMubWV0cmljUmVxdWVzdFVuU3VwcG9ydGVkUmVwbyh7XG4gICAgICAgICAgICBsYWJlbDogJ1VuU3VwcG9ydGVkUmVwbycsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgcmVsZWFzZU5vdGVzLm1ldHJpY1JlcXVlc3RJbnZhbGlkUGFja2FnZUpzb24oe1xuICAgICAgICAgICAgbGFiZWw6ICdJbnZhbGlkUGFja2FnZUpzb24nLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHJlbGVhc2VOb3Rlcy5tZXRyaWNDaGFuZ2VMb2dGZXRjaEVycm9yKHtcbiAgICAgICAgICAgIGxhYmVsOiAnQ2hhbmdlTG9nRmV0Y2hFcnJvcicsXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICBdLFxuICAgIFtcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ0dpdEh1YiBBUEkgUmF0ZSBMaW1pdHMnLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgIHJlbGVhc2VOb3Rlcy5tZXRyaWNHaFJhdGVMaW1pdExpbWl0KHsgbGFiZWw6ICdMaW1pdCcgfSksXG4gICAgICAgICAgICAnUkVQRUFUJ1xuICAgICAgICAgICksXG4gICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgIHJlbGVhc2VOb3Rlcy5tZXRyaWNHaFJhdGVMaW1pdFVzZWQoeyBsYWJlbDogJ1VzZWQnIH0pLFxuICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICApLFxuICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICByZWxlYXNlTm90ZXMubWV0cmljR2hSYXRlTGltaXRSZW1haW5pbmcoe1xuICAgICAgICAgICAgICBsYWJlbDogJ1JlbWFpbmluZycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICdSRVBFQVQnXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgIF0sXG4gIF07XG59XG4iXX0=
|
|
731
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC1kYXNoYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYmFja2VuZC1kYXNoYm9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVDO0FBQ3ZDLCtEQVVvQztBQUVwQywyQ0FBdUM7QUFJdkMscUdBQStGO0FBSS9GLDBEQUtvQztBQUNwQyx3REFBa0U7QUFFbEUsMkNBUXFCO0FBQ3JCLGlEQUE0QztBQWdCNUMsTUFBYSxnQkFBaUIsU0FBUSxzQkFBUztJQUM3QyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUE0QjtRQUU1QixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sT0FBTyxHQUFnQjtZQUMzQjtnQkFDRSxJQUFJLDBEQUEwQixDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRTtvQkFDNUQsS0FBSyxFQUFFLHlDQUF5QztvQkFDaEQsV0FBVyxFQUFFO3dCQUNYLDBIQUEwSDt3QkFDMUgsRUFBRTt3QkFDRiw4RkFBOEY7d0JBQzlGLEVBQUU7d0JBQ0YsaURBQWlELElBQUEsMkJBQWUsRUFDOUQsS0FBSyxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsQ0FDL0MsR0FBRztxQkFDTCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ1osTUFBTSxFQUFFLEtBQUssQ0FBQyxXQUFXO29CQUN6QixHQUFHLEVBQUUseUNBQTZCO29CQUNsQyxNQUFNLEVBQUUsQ0FBQztvQkFDVCxLQUFLLEVBQUUsRUFBRTtpQkFDVixDQUFDO2FBQ0g7U0FDRixDQUFDO1FBRUYsS0FBSyxNQUFNLFFBQVEsSUFBSSxnQ0FBcUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNqRCxLQUFLLE1BQU0sTUFBTSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FDMUMsUUFBUSxFQUNSLEtBQUssQ0FBQyxXQUFXLENBQ2xCLEVBQUUsQ0FBQztnQkFDRixpQ0FBaUM7Z0JBQ2pDLE9BQU8sQ0FBQyxJ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O3dCQUN2QyxLQUFLLEVBQUUsdUJBQXVCO3FCQUMvQixDQUFDO29CQUNGLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQzt3QkFDeEMsS0FBSyxFQUFFLGlCQUFpQjtxQkFDekIsQ0FBQztvQkFDRixZQUFZLENBQUMsK0JBQStCLENBQUM7d0JBQzNDLEtBQUssRUFBRSxvQkFBb0I7cUJBQzVCLENBQUM7b0JBQ0YsWUFBWSxDQUFDLHlCQUF5QixDQUFDO3dCQUNyQyxLQUFLLEVBQUUscUJBQXFCO3FCQUM3QixDQUFDO2lCQUNIO2FBQ0YsQ0FBQztTQUNIO1FBQ0Q7WUFDRSxJQUFJLDRCQUFXLENBQUM7Z0JBQ2QsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFLHdCQUF3QjtnQkFDL0IsSUFBSSxFQUFFO29CQUNKLElBQUEseUJBQVUsRUFDUixZQUFZLENBQUMsc0JBQXNCLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFDdkQsUUFBUSxDQUNUO29CQUNELElBQUEseUJBQVUsRUFDUixZQUFZLENBQUMscUJBQXFCLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFDckQsUUFBUSxDQUNUO29CQUNELElBQUEseUJBQVUsRUFDUixZQUFZLENBQUMsMEJBQTBCLENBQUM7d0JBQ3RDLEtBQUssRUFBRSxXQUFXO3FCQUNuQixDQUFDLEVBQ0YsUUFBUSxDQUNUO2lCQUNGO2FBQ0YsQ0FBQztTQUNIO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIERhc2hib2FyZCxcbiAgR3JhcGhXaWRnZXQsXG4gIEdyYXBoV2lkZ2V0VmlldyxcbiAgVGV4dFdpZGdldCxcbiAgSVdpZGdldCxcbiAgTWF0aEV4cHJlc3Npb24sXG4gIE1ldHJpYyxcbiAgU3RhdGlzdGljLFxuICBQZXJpb2RPdmVycmlkZSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgSUJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERlbnlMaXN0IH0gZnJvbSAnLi9iYWNrZW5kL2RlbnktbGlzdCc7XG5pbXBvcnQgeyBJbmdlc3Rpb24gfSBmcm9tICcuL2JhY2tlbmQvaW5nZXN0aW9uJztcbmltcG9ydCB7IEludmVudG9yeSB9IGZyb20gJy4vYmFja2VuZC9pbnZlbnRvcnknO1xuaW1wb3J0IHsgUGFja2FnZVZlcnNpb25zVGFibGVXaWRnZXQgfSBmcm9tICcuL2JhY2tlbmQvaW52ZW50b3J5L3BhY2thZ2UtdmVyc2lvbnMtdGFibGUtd2lkZ2V0JztcbmltcG9ydCB7IE9yY2hlc3RyYXRpb24gfSBmcm9tICcuL2JhY2tlbmQvb3JjaGVzdHJhdGlvbic7XG5pbXBvcnQgeyBQYWNrYWdlU3RhdHMgfSBmcm9tICcuL2JhY2tlbmQvcGFja2FnZS1zdGF0cyc7XG5pbXBvcnQgeyBSZWxlYXNlTm90ZUZldGNoZXIgfSBmcm9tICcuL2JhY2tlbmQvcmVsZWFzZS1ub3Rlcyc7XG5pbXBvcnQge1xuICBtaXNzaW5nRG9jdW1lbnRhdGlvblJlcG9ydCxcbiAgVU5JTlNUQUxMQUJMRV9QQUNLQUdFU19SRVBPUlQsXG4gIGNvcnJ1cHRBc3NlbWJseVJlcG9ydCxcbiAgVkVSU0lPTl9UUkFDS0VSX0tFWSxcbn0gZnJvbSAnLi9iYWNrZW5kL3NoYXJlZC9jb25zdGFudHMnO1xuaW1wb3J0IHsgRG9jdW1lbnRhdGlvbkxhbmd1YWdlIH0gZnJvbSAnLi9iYWNrZW5kL3NoYXJlZC9sYW5ndWFnZSc7XG5pbXBvcnQgeyBWZXJzaW9uVHJhY2tlciB9IGZyb20gJy4vYmFja2VuZC92ZXJzaW9uLXRyYWNrZXInO1xuaW1wb3J0IHtcbiAgZWNzQ2x1c3RlclVybCxcbiAgbGFtYmRhRnVuY3Rpb25VcmwsXG4gIGxhbWJkYVNlYXJjaExvZ0dyb3VwVXJsLFxuICBsb2dHcm91cFVybCxcbiAgczNPYmplY3RVcmwsXG4gIHNxc1F1ZXVlVXJsLFxuICBzdGF0ZU1hY2hpbmVVcmwsXG59IGZyb20gJy4vZGVlcC1saW5rJztcbmltcG9ydCB7IGZpbGxNZXRyaWMgfSBmcm9tICcuL21ldHJpYy11dGlscyc7XG5pbXBvcnQgeyBQYWNrYWdlU291cmNlQmluZFJlc3VsdCB9IGZyb20gJy4vcGFja2FnZS1zb3VyY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhY2tlbmREYXNoYm9hcmRQcm9wcyB7XG4gIHJlYWRvbmx5IGRhc2hib2FyZE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhY2thZ2VTb3VyY2VzOiBQYWNrYWdlU291cmNlQmluZFJlc3VsdFtdO1xuICByZWFkb25seSBpbmdlc3Rpb246IEluZ2VzdGlvbjtcbiAgcmVhZG9ubHkgb3JjaGVzdHJhdGlvbjogT3JjaGVzdHJhdGlvbjtcbiAgcmVhZG9ubHkgaW52ZW50b3J5OiBJbnZlbnRvcnk7XG4gIHJlYWRvbmx5IGRlbnlMaXN0OiBEZW55TGlzdDtcbiAgcmVhZG9ubHkgcGFja2FnZURhdGE6IElCdWNrZXQ7XG4gIHJlYWRvbmx5IHBhY2thZ2VTdGF0cz86IFBhY2thZ2VTdGF0cztcbiAgcmVhZG9ubHkgdmVyc2lvblRyYWNrZXI6IFZlcnNpb25UcmFja2VyO1xuICByZWFkb25seSByZWxlYXNlTm90ZXM/OiBSZWxlYXNlTm90ZUZldGNoZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBCYWNrZW5kRGFzaGJvYXJkIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQmFja2VuZERhc2hib2FyZFByb3BzXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCByZXBvcnRzOiBJV2lkZ2V0W11bXSA9IFtcbiAgICAgIFtcbiAgICAgICAgbmV3IFBhY2thZ2VWZXJzaW9uc1RhYmxlV2lkZ2V0KHRoaXMsICdVbmluc3RhbGxhYmxlUGFja2FnZXMnLCB7XG4gICAgICAgICAgdGl0bGU6ICdQYWNrYWdlIFZlcnNpb25zIFJlcG9ydCB8IFVuaW5zdGFsbGFibGUnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgICBcIlRoZXNlIHBhY2thZ2VzIGNvdWxkIG5vdCBiZSBpbnN0YWxsZWQuIE5vdGUgdGhhdCBjdXJyZW50bHkgdGhleSB3aWxsIGFsc28gYXBwZWFyIGluIHRoZSAnbWlzc2luZycgZG9jdW1lbnRhdGlvbiByZXBvcnRzLlwiLFxuICAgICAgICAgICAgJycsXG4gICAgICAgICAgICBcIlRoZSBzcGVjaWZpYyBlcnJvciBjYW4gYmUgZm91bmQgaW4gdGhlIHBhY2thZ2UgZGlyZWN0b3J5IGluc2lkZSBhIGZpbGUgbmFtZWQgJ3VuaW5zdGFsbGFibGUnXCIsXG4gICAgICAgICAgICAnJyxcbiAgICAgICAgICAgIGBbYnV0dG9uOnByaW1hcnk6UmV0cnkgVW5pbnN0YWxsYWJsZSBQYWNrYWdlc10oJHtzdGF0ZU1hY2hpbmVVcmwoXG4gICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24ucmV0cnlVbmluc3RhbGxhYmxlUGFja2FnZXNcbiAgICAgICAgICAgICl9KWAsXG4gICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICBidWNrZXQ6IHByb3BzLnBhY2thZ2VEYXRhLFxuICAgICAgICAgIGtleTogVU5JTlNUQUxMQUJMRV9QQUNLQUdFU19SRVBPUlQsXG4gICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIF07XG5cbiAgICBmb3IgKGNvbnN0IGxhbmd1YWdlIG9mIERvY3VtZW50YXRpb25MYW5ndWFnZS5BTEwpIHtcbiAgICAgIGZvciAoY29uc3QgcmVwb3J0IG9mIHRoaXMucGVyTGFuZ3VhZ2VSZXBvcnRzKFxuICAgICAgICBsYW5ndWFnZSxcbiAgICAgICAgcHJvcHMucGFja2FnZURhdGFcbiAgICAgICkpIHtcbiAgICAgICAgLy8gcHV0IGV2ZXJ5IHJlcG9ydCBpbiBhIG5ldyBsaW5lXG4gICAgICAgIHJlcG9ydHMucHVzaChbcmVwb3J0XSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGFzaGJvYXJkTmFtZSA9IHByb3BzLmRhc2hib2FyZE5hbWUgPz8gJ0NvbnN0cnVjdEh1YkJhY2tlbmQnO1xuXG4gICAgbmV3IERhc2hib2FyZCh0aGlzLCAnUmVwb3J0cycsIHtcbiAgICAgIGRhc2hib2FyZE5hbWU6IGAke2Rhc2hib2FyZE5hbWV9LXJlcG9ydHNgLFxuICAgICAgcGVyaW9kT3ZlcnJpZGU6IFBlcmlvZE92ZXJyaWRlLkFVVE8sXG4gICAgICBzdGFydDogJy1QMVcnLCAvLyBTaG93IDEgd2VlayBieSBkZWZhdWx0XG4gICAgICB3aWRnZXRzOiByZXBvcnRzLFxuICAgIH0pO1xuXG4gICAgbmV3IERhc2hib2FyZCh0aGlzLCAnR3JhcGhzJywge1xuICAgICAgZGFzaGJvYXJkTmFtZTogYCR7ZGFzaGJvYXJkTmFtZX0tZ3JhcGhzYCxcbiAgICAgIHBlcmlvZE92ZXJyaWRlOiBQZXJpb2RPdmVycmlkZS5BVVRPLFxuICAgICAgc3RhcnQ6ICctUDFXJywgLy8gU2hvdyAxIHdlZWsgYnkgZGVmYXVsdFxuICAgICAgd2lkZ2V0czogW1xuICAgICAgICBbXG4gICAgICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgICAgICAgbWFya2Rvd246IFtcbiAgICAgICAgICAgICAgJyMgQ2F0YWxvZyBPdmVydmlldycsXG4gICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpwcmltYXJ5OlBhY2thZ2UgRGF0YV0oJHtzM09iamVjdFVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5wYWNrYWdlRGF0YVxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpDYXRhbG9nIEJ1aWxkZXJdKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5jYXRhbG9nQnVpbGRlci5mdW5jdGlvblxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpJbnZlbnRvcnkgQ2FuYXJ5XSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5mdW5jdGlvblxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpTZWFyY2ggQ2FuYXJ5IExvZyBHcm91cF0oJHtsYW1iZGFTZWFyY2hMb2dHcm91cFVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkuZnVuY3Rpb25cbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdDYXRhbG9nIFNpemUnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkubWV0cmljU3VibW9kdWxlQ291bnQoeyBsYWJlbDogJ1N1Ym1vZHVsZXMnIH0pLFxuICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkubWV0cmljUGFja2FnZVZlcnNpb25Db3VudCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdQYWNrYWdlIFZlcnNpb25zJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5tZXRyaWNQYWNrYWdlTWFqb3JDb3VudCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdQYWNrYWdlIE1ham9ycycsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkubWV0cmljUGFja2FnZUNvdW50KHsgbGFiZWw6ICdQYWNrYWdlcycgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0NhdGFsb2cgSXNzdWVzJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgcHJvcHMuaW52ZW50b3J5Lm1ldHJpY1Vua25vd25PYmplY3RDb3VudCh7IGxhYmVsOiAnVW5rbm93bicgfSksXG4gICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5tZXRyaWNNaXNzaW5nQXNzZW1ibHlDb3VudCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdNaXNzaW5nIEFzc2VtYmx5JyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5tZXRyaWNNaXNzaW5nUGFja2FnZU1ldGFkYXRhQ291bnQoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTWlzc2luZyBNZXRhZGF0YScsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBwcm9wcy5pbnZlbnRvcnkubWV0cmljTWlzc2luZ1BhY2thZ2VUYXJiYWxsQ291bnQoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnTWlzc2luZyBUYXJiYWxsJyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHByb3BzLmludmVudG9yeS5tZXRyaWNVbmluc3RhbGxhYmxlUGFja2FnZUNvdW50KHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1VuaW5zdGFsbGFibGUgUGFja2FnZScsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uY2F0YWxvZ0J1aWxkZXIubWV0cmljTWlzc2luZ0NvbnN0cnVjdEZyYW1ld29ya0NvdW50KFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdObyBDb25zdHJ1Y3QgRnJhbWV3b3JrJyB9XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uY2F0YWxvZ0J1aWxkZXIubWV0cmljTWlzc2luZ0NvbnN0cnVjdEZyYW1ld29ya1ZlcnNpb25Db3VudChcbiAgICAgICAgICAgICAgICB7IGxhYmVsOiAnTm8gQ29uc3RydWN0IEZyYW1ld29yayBWZXJzaW9uJyB9XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgLi4udGhpcy5jYXRhbG9nT3ZlcnZpZXdMYW5ndWFnZVNlY3Rpb25zKHByb3BzKSxcbiAgICAgICAgLi4ucmVuZGVyUGFja2FnZVNvdXJjZXNXaWRnZXRzKHByb3BzLnBhY2thZ2VTb3VyY2VzKSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogMixcbiAgICAgICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgICAgIG1hcmtkb3duOiBbXG4gICAgICAgICAgICAgICcjIEluZ2VzdGlvbiBGdW5jdGlvbicsXG4gICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpJbmdlc3Rpb24gRnVuY3Rpb25dKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLmZ1bmN0aW9uXG4gICAgICAgICAgICAgICl9KWAsXG4gICAgICAgICAgICAgIGBbYnV0dG9uOnByaW1hcnk6U2VhcmNoIExvZyBHcm91cF0oJHtsYW1iZGFTZWFyY2hMb2dHcm91cFVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24uZnVuY3Rpb25cbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgICAgYFtidXR0b246RExRXSgke3Nxc1F1ZXVlVXJsKHByb3BzLmluZ2VzdGlvbi5kZWFkTGV0dGVyUXVldWUpfSlgLFxuICAgICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0Z1bmN0aW9uIEhlYWx0aCcsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLmZ1bmN0aW9uLm1ldHJpY0ludm9jYXRpb25zKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnSW52b2NhdGlvbnMnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLmZ1bmN0aW9uLm1ldHJpY0Vycm9ycyh7IGxhYmVsOiAnRXJyb3JzJyB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdJbnB1dCBRdWV1ZScsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIHByb3BzLmluZ2VzdGlvbi5xdWV1ZS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNWaXNpYmxlKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1Zpc2libGUgTWVzc2FnZXMnLFxuICAgICAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHByb3BzLmluZ2VzdGlvbi5xdWV1ZS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNOb3RWaXNpYmxlKFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdIaWRkZW4gTWVzc2FnZXMnLCBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSkgfVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIHByb3BzLmluZ2VzdGlvbi5xdWV1ZS5tZXRyaWNBcHByb3hpbWF0ZUFnZU9mT2xkZXN0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdPbGRlc3QgTWVzc2FnZSBBZ2UnLFxuICAgICAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRBbm5vdGF0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICcjZmZhNTAwJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJzEwIE1pbnV0ZXMnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBEdXJhdGlvbi5taW51dGVzKDEwKS50b1NlY29uZHMoKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByaWdodFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnSW5wdXQgUXVhbGl0eScsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLm1ldHJpY0ludmFsaWRBc3NlbWJseSh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ0ludmFsaWQgQXNzZW1ibGllcycsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24ubWV0cmljSW52YWxpZFRhcmJhbGwoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdJbnZhbGlkIFRhcmJhbGwnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLm1ldHJpY0luZWxpZ2libGVMaWNlbnNlKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnSW5lbGlnaWJsZSBMaWNlbnNlJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHByb3BzLmluZ2VzdGlvbi5tZXRyaWNNaXNtYXRjaGVkSWRlbnRpdHlSZWplY3Rpb25zKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnTWlzbWF0Y2hlZCBJZGVudGl0eScsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24ubWV0cmljRm91bmRMaWNlbnNlRmlsZSh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ0ZvdW5kIExpY2Vuc2UgZmlsZScsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbGFiZWw6ICdDb3VudCcsIG1pbjogMCwgc2hvd1VuaXRzOiBmYWxzZSB9LFxuICAgICAgICAgICAgc3RhY2tlZDogdHJ1ZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdEZWFkIExldHRlcnMnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24uZGVhZExldHRlclF1ZXVlLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc1Zpc2libGUoXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ1Zpc2libGUgTWVzc2FnZXMnIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgcHJvcHMuaW5nZXN0aW9uLmRlYWRMZXR0ZXJRdWV1ZS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNOb3RWaXNpYmxlKFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdJbnZpc2libGUgTWVzc2FnZXMnIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW1xuICAgICAgICAgICAgICBwcm9wcy5pbmdlc3Rpb24uZGVhZExldHRlclF1ZXVlLm1ldHJpY0FwcHJveGltYXRlQWdlT2ZPbGRlc3RNZXNzYWdlKFxuICAgICAgICAgICAgICAgIHsgbGFiZWw6ICdPbGRlc3QgTWVzc2FnZSBBZ2UnIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByaWdodEFubm90YXRpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJyNmZjdmMGUnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnMTAgZGF5cycsXG4gICAgICAgICAgICAgICAgdmFsdWU6IER1cmF0aW9uLmRheXMoMTApLnRvU2Vjb25kcygpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICcjZmYwMDAwJyxcbiAgICAgICAgICAgICAgICBsYWJlbDogJzE0IGRheXMgKERMUSBSZXRlbnRpb24pJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogRHVyYXRpb24uZGF5cygxNCkudG9TZWNvbmRzKCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogMixcbiAgICAgICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgICAgIG1hcmtkb3duOiBbXG4gICAgICAgICAgICAgICcjIE9yY2hlc3RyYXRpb24nLFxuICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgYFtidXR0b246cHJpbWFyeTpTdGF0ZSBNYWNoaW5lXSgke3N0YXRlTWFjaGluZVVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLnN0YXRlTWFjaGluZVxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpETFFdKCR7c3FzUXVldWVVcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5kZWFkTGV0dGVyUXVldWVcbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgICAgYFtidXR0b246UmVkcml2ZSBETFFdKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5yZWRyaXZlRnVuY3Rpb25cbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgICAgYFtidXR0b246UmVnZW5lcmF0ZSBBbGwgRG9jdW1lbnRhdGlvbl0oJHtzdGF0ZU1hY2hpbmVVcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5yZWdlbmVyYXRlQWxsRG9jdW1lbnRhdGlvblxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpSZXRyeSBVbmluc3RhbGxhYmxlIFBhY2thZ2VzXSgke3N0YXRlTWFjaGluZVVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLnJldHJ5VW5pbnN0YWxsYWJsZVBhY2thZ2VzXG4gICAgICAgICAgICAgICl9KWAsXG4gICAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnU3RhdGUgTWFjaGluZSBFeGVjdXRpb25zJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLnN0YXRlTWFjaGluZS5tZXRyaWNTdGFydGVkKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnU3RhcnRlZCcsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLnN0YXRlTWFjaGluZS5tZXRyaWNTdWNjZWVkZWQoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdTdWNjZWVkZWQnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCwgbGFiZWw6ICdDb3VudCcsIHNob3dVbml0czogZmFsc2UgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uc3RhdGVNYWNoaW5lLm1ldHJpY1RpbWUoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnRHVyYXRpb24nLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByaWdodFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ1N0YXRlIE1hY2hpbmUgRmFpbHVyZXMnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uc3RhdGVNYWNoaW5lLm1ldHJpY0Fib3J0ZWQoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdBYm9ydGVkJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uc3RhdGVNYWNoaW5lLm1ldHJpY0ZhaWxlZCh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ0ZhaWxlZCcsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5vcmNoZXN0cmF0aW9uLnN0YXRlTWFjaGluZS5tZXRyaWNUaHJvdHRsZWQoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdUaHJvdHRsZWQnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5zdGF0ZU1hY2hpbmUubWV0cmljVGltZWRPdXQoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdUaW1lZCBPdXQnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCwgbGFiZWw6ICdDb3VudCcsIHNob3dVbml0czogZmFsc2UgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdEZWFkIExldHRlciBRdWV1ZScsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIHByb3BzLm9yY2hlc3RyYXRpb24uZGVhZExldHRlclF1ZXVlLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc1Zpc2libGUoXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ1Zpc2libGUgTWVzc2FnZXMnIH1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5kZWFkTGV0dGVyUXVldWUubWV0cmljQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzTm90VmlzaWJsZShcbiAgICAgICAgICAgICAgICB7IGxhYmVsOiAnSW52aXNpYmxlIE1lc3NhZ2VzJyB9XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcmlnaHQ6IFtcbiAgICAgICAgICAgICAgcHJvcHMub3JjaGVzdHJhdGlvbi5kZWFkTGV0dGVyUXVldWUubWV0cmljQXBwcm94aW1hdGVBZ2VPZk9sZGVzdE1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgeyBsYWJlbDogJ09sZGVzdCBNZXNzYWdlIEFnZScgfVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJpZ2h0QW5ub3RhdGlvbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAnI2ZmN2YwZScsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICcxMCBkYXlzJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogRHVyYXRpb24uZGF5cygxMCkudG9TZWNvbmRzKCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJyNmZjAwMDAnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnMTQgZGF5cyAoRExRIFJldGVudGlvbiknLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBEdXJhdGlvbi5kYXlzKDE0KS50b1NlY29uZHMoKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByaWdodFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuXG4gICAgICAgIC8vIGRlbnkgbGlzdFxuICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgVGV4dFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgICAgICB3aWR0aDogMjQsXG4gICAgICAgICAgICBtYXJrZG93bjogW1xuICAgICAgICAgICAgICAnIyBEZW55IExpc3QnLFxuICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgYFtidXR0b246cHJpbWFyeTpEZW55IExpc3QgT2JqZWN0XSgke3MzT2JqZWN0VXJsKFxuICAgICAgICAgICAgICAgIHByb3BzLmRlbnlMaXN0LmJ1Y2tldCxcbiAgICAgICAgICAgICAgICBwcm9wcy5kZW55TGlzdC5vYmplY3RLZXlcbiAgICAgICAgICAgICAgKX0pYCxcbiAgICAgICAgICAgICAgYFtidXR0b246UHJ1bmUgRnVuY3Rpb25dKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMuZGVueUxpc3QucHJ1bmUucHJ1bmVIYW5kbGVyXG4gICAgICAgICAgICAgICl9KWAsXG4gICAgICAgICAgICAgIGBbYnV0dG9uOlBydW5lIExvZ3NdKCR7bGFtYmRhU2VhcmNoTG9nR3JvdXBVcmwoXG4gICAgICAgICAgICAgICAgcHJvcHMuZGVueUxpc3QucHJ1bmUucHJ1bmVIYW5kbGVyXG4gICAgICAgICAgICAgICl9KWAsXG4gICAgICAgICAgICAgIGBbYnV0dG9uOkRlbGV0ZSBRdWV1ZV0oJHtzcXNRdWV1ZVVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5kZW55TGlzdC5wcnVuZS5xdWV1ZVxuICAgICAgICAgICAgICApfSlgLFxuICAgICAgICAgICAgICBgW2J1dHRvbjpEZWxldGUgTG9nc10oJHtsYW1iZGFTZWFyY2hMb2dHcm91cFVybChcbiAgICAgICAgICAgICAgICBwcm9wcy5kZW55TGlzdC5wcnVuZS5kZWxldGVIYW5kbGVyXG4gICAgICAgICAgICAgICl9KWAsXG4gICAgICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnRGVueSBMaXN0JyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICBwcm9wcy5kZW55TGlzdC5tZXRyaWNEZW55TGlzdFJ1bGVzKHsgbGFiZWw6ICdSdWxlcycgfSksXG4gICAgICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgcHJvcHMuZGVueUxpc3QucHJ1bmUucXVldWUubWV0cmljTnVtYmVyT2ZNZXNzYWdlc0RlbGV0ZWQoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnRGVsZXRlZCBGaWxlcycsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdQcnVuZSBGdW5jdGlvbiBIZWFsdGgnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHByb3BzLmRlbnlMaXN0LnBydW5lLnBydW5lSGFuZGxlci5tZXRyaWNJbnZvY2F0aW9ucyh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogJ0ludm9jYXRpb25zJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHByb3BzLmRlbnlMaXN0LnBydW5lLnBydW5lSGFuZGxlci5tZXRyaWNFcnJvcnMoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdFcnJvcnMnLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuXG4gICAgICAgIC4uLihwcm9wcy5wYWNrYWdlU3RhdHNcbiAgICAgICAgICA/IHJlbmRlclBhY2thZ2VTdGF0c1dpZGdldHMocHJvcHMucGFja2FnZVN0YXRzKVxuICAgICAgICAgIDogW10pLFxuICAgICAgICAuLi5yZW5kZXJWZXJzaW9uVHJhY2tlcldpZGdldHMocHJvcHMudmVyc2lvblRyYWNrZXIpLFxuICAgICAgICAuLi4ocHJvcHMucmVsZWFzZU5vdGVzXG4gICAgICAgICAgPyByZW5kZXJSZWxlYXNlTm90ZXNXaWRnZXRzKHByb3BzLnJlbGVhc2VOb3RlcylcbiAgICAgICAgICA6IFtdKSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHBlckxhbmd1YWdlUmVwb3J0cyhcbiAgICBsYW5ndWFnZTogRG9jdW1lbnRhdGlvbkxhbmd1YWdlLFxuICAgIHBhY2thZ2VEYXRhOiBJQnVja2V0XG4gICk6IElXaWRnZXRbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIG5ldyBQYWNrYWdlVmVyc2lvbnNUYWJsZVdpZGdldCh0aGlzLCBgTWlzc2luZ0RvY3MtJHtsYW5ndWFnZS5uYW1lfWAsIHtcbiAgICAgICAgdGl0bGU6IGBQYWNrYWdlIFZlcnNpb25zIFJlcG9ydCB8IE1pc3NpbmcgRG9jdW1lbnRhdGlvbiB8IF8ke2xhbmd1YWdlLm5hbWV9X2AsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgYFRoZXNlIHBhY2thZ2VzIGFyZSBtaXNzaW5nICR7bGFuZ3VhZ2UubmFtZX0gZG9jdW1lbnRhdGlvbi5gLFxuICAgICAgICAgICdBcGFydCBmcm9tIHRoZSB1bmluc3RhbGxhYmxlIHBhY2thZ2VzLCB0aGlzIHJlcG9ydCBzaG91bGQgc3RheSBlbXB0eScsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgJ1RvIGludmVzdGlnYXRlIGluc3BlY3QgdGhlIG9yY2hlc3RyYXRpb24gRExRLicsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIGJ1Y2tldDogcGFja2FnZURhdGEsXG4gICAgICAgIGtleTogbWlzc2luZ0RvY3VtZW50YXRpb25SZXBvcnQobGFuZ3VhZ2UpLFxuICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgIHdpZHRoOiAyNCxcbiAgICAgIH0pLFxuICAgICAgbmV3IFBhY2thZ2VWZXJzaW9uc1RhYmxlV2lkZ2V0KFxuICAgICAgICB0aGlzLFxuICAgICAgICBgQ29ycnVwdEFzc2VtYmx5RG9jcy0ke2xhbmd1YWdlLm5hbWV9YCxcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiBgUGFja2FnZSBWZXJzaW9ucyBSZXBvcnQgfCBDb3JydXB0IEFzc2VtYmx5IHwgXyR7bGFuZ3VhZ2UubmFtZX1fYCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogW1xuICAgICAgICAgICAgYFRoZXNlIHBhY2thZ2VzIGFyZSBtaXNzaW5nICR7bGFuZ3VhZ2UubmFtZX0gZG9jdW1lbnRhdGlvbiBiZWNhdXNlIG9mIGEgY29ycnVwdGVkIGFzc2VtYmx5LmAsXG4gICAgICAgICAgICAnJyxcbiAgICAgICAgICAgIFwiVGhlIHNwZWNpZmljIGVycm9yIGNhbiBiZSBmb3VuZCBpbiB0aGUgcGFja2FnZSBkaXJlY3RvcnkgaW5zaWRlIGZpbGVzIHN1ZmZpeGVkIHdpdGggJy5jb3JydXB0YXNzZW1ibHknXCIsXG4gICAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgICBidWNrZXQ6IHBhY2thZ2VEYXRhLFxuICAgICAgICAgIGtleTogY29ycnVwdEFzc2VtYmx5UmVwb3J0KGxhbmd1YWdlKSxcbiAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgICB9XG4gICAgICApLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlICpjYXRhbG9nT3ZlcnZpZXdMYW5ndWFnZVNlY3Rpb25zKHtcbiAgICBpbnZlbnRvcnksXG4gICAgb3JjaGVzdHJhdGlvbixcbiAgfTogQmFja2VuZERhc2hib2FyZFByb3BzKTogR2VuZXJhdG9yPElXaWRnZXRbXT4ge1xuICAgIHlpZWxkIFtcbiAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICAgIG1hcmtkb3duOiBbXG4gICAgICAgICAgJyMgRG9jdW1lbnRhdGlvbiBHZW5lcmF0aW9uJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgW2J1dHRvbjpwcmltYXJ5OlRyYW5zbGl0ZXJhdG9yIExvZ3NdKCR7bG9nR3JvdXBVcmwoXG4gICAgICAgICAgICBvcmNoZXN0cmF0aW9uLnRyYW5zbGl0ZXJhdG9yLmxvZ0dyb3VwXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgICBgW2J1dHRvbjpUcmFuc2xpdGVyYXRvciBFQ1MgQ2x1c3Rlcl0oJHtlY3NDbHVzdGVyVXJsKFxuICAgICAgICAgICAgb3JjaGVzdHJhdGlvbi5lY3NDbHVzdGVyXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0pLFxuICAgIF07XG4gICAgY29uc3QgbUZhcmdhdGVVc2FnZSA9IG5ldyBNZXRyaWMoe1xuICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICBDbGFzczogJ1N0YW5kYXJkL09uRGVtYW5kJyxcbiAgICAgICAgUmVzb3VyY2U6ICd2Q1BVJyxcbiAgICAgICAgU2VydmljZTogJ0ZhcmdhdGUnLFxuICAgICAgICBUeXBlOiAnUmVzb3VyY2UnLFxuICAgICAgfSxcbiAgICAgIG1ldHJpY05hbWU6ICdSZXNvdXJjZUNvdW50JyxcbiAgICAgIG5hbWVzcGFjZTogJ0FXUy9Vc2FnZScsXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NQVhJTVVNLFxuICAgIH0pO1xuXG4gICAgeWllbGQgW1xuICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgIHRpdGxlOiAnRmFyZ2F0ZSBSZXNvdXJjZXMnLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgbUZhcmdhdGVVc2FnZS53aXRoKHsgbGFiZWw6ICdGYXJnYXRlIHZDUFUgVXNhZ2UgKE9uLURlbWFuZCknIH0pLFxuICAgICAgICAgIG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgICAgICBleHByZXNzaW9uOiAnU0VSVklDRV9RVU9UQShtRmFyZ2F0ZVVzYWdlKScsXG4gICAgICAgICAgICBsYWJlbDogJ0ZhcmdhdGUgdkNQVSBRdW90YSAoT24tRGVtYW5kKScsXG4gICAgICAgICAgICB1c2luZ01ldHJpY3M6IHsgbUZhcmdhdGVVc2FnZSB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgb3JjaGVzdHJhdGlvbi5tZXRyaWNFY3NDcHVVdGlsaXphdGlvbih7IGxhYmVsOiAnQ1BVIFV0aWxpemF0aW9uJyB9KSxcbiAgICAgICAgICBvcmNoZXN0cmF0aW9uLm1ldHJpY0Vjc01lbW9yeVV0aWxpemF0aW9uKHtcbiAgICAgICAgICAgIGxhYmVsOiAnTWVtb3J5IFV0aWxpemF0aW9uJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgcmlnaHRZQXhpczogeyBsYWJlbDogJ1BlcmNlbnQnLCBtaW46IDAsIG1heDogMTAwLCBzaG93VW5pdHM6IGZhbHNlIH0sXG4gICAgICB9KSxcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ0VDUyBSZXNvdXJjZXMnLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgIG9yY2hlc3RyYXRpb24ubWV0cmljRWNzTmV0d29ya1J4Qnl0ZXMoeyBsYWJlbDogJ1JlY2VpdmVkIEJ5dGVzJyB9KVxuICAgICAgICAgICksXG4gICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgIG9yY2hlc3RyYXRpb24ubWV0cmljRWNzTmV0d29ya1R4Qnl0ZXMoe1xuICAgICAgICAgICAgICBsYWJlbDogJ1RyYW5zbWl0dGVkIEJ5dGVzJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICByaWdodDogW1xuICAgICAgICAgIGZpbGxNZXRyaWMob3JjaGVzdHJhdGlvbi5tZXRyaWNFY3NUYXNrQ291bnQoeyBsYWJlbDogJ1Rhc2sgQ291bnQnIH0pKSxcbiAgICAgICAgXSxcbiAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgIH0pLFxuICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgIHRpdGxlOiAnRUNTIFRhc2sgTW9uaXRvcicsXG4gICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICBvcmNoZXN0cmF0aW9uLmVjc1Rhc2tNb25pdG9yLm1ldHJpY0FjdGl2ZVRhc2tDb3VudCh7XG4gICAgICAgICAgICBsYWJlbDogJ0FjdGl2ZSBUYXNrIENvdW50JyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBvcmNoZXN0cmF0aW9uLmVjc1Rhc2tNb25pdG9yLm1ldHJpY0tpbGxlZFRhc2tDb3VudCh7XG4gICAgICAgICAgICBsYWJlbDogJ0tpbGxlZCBUYXNrIENvdW50JyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICByaWdodDogW1xuICAgICAgICAgIG9yY2hlc3RyYXRpb24uZWNzVGFza01vbml0b3IubWV0cmljQWN0aXZlVGFza0FnZSh7XG4gICAgICAgICAgICBsYWJlbDogJ0FjdGl2ZSBUYXNrIEFnZSAoTWF4KScsXG4gICAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NQVhJTVVNLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG9yY2hlc3RyYXRpb24uZWNzVGFza01vbml0b3IubWV0cmljQWN0aXZlVGFza0FnZSh7XG4gICAgICAgICAgICBsYWJlbDogJ0FjdGl2ZSBUYXNrIEFnZSAoQXZnKScsXG4gICAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5BVkVSQUdFLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG9yY2hlc3RyYXRpb24uZWNzVGFza01vbml0b3IubWV0cmljQWN0aXZlVGFza0FnZSh7XG4gICAgICAgICAgICBsYWJlbDogJ0FjdGl2ZSBUYXNrIEFnZSAoTWluKScsXG4gICAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5NSU5JTVVNLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICByaWdodFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgfSksXG4gICAgXTtcblxuICAgIGZvciAoY29uc3QgbGFuZ3VhZ2Ugb2YgRG9jdW1lbnRhdGlvbkxhbmd1YWdlLkFMTCkge1xuICAgICAgeWllbGQgW1xuICAgICAgICBuZXcgVGV4dFdpZGdldCh7XG4gICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgICBtYXJrZG93bjogYCMjIExhbmd1YWdlOiAke2xhbmd1YWdlLnRvU3RyaW5nKCl9YCxcbiAgICAgICAgfSksXG4gICAgICBdO1xuICAgICAgeWllbGQgW1xuICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgdGl0bGU6ICdQYWNrYWdlIFZlcnNpb25zJyxcbiAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljU3VwcG9ydGVkUGFja2FnZVZlcnNpb25Db3VudChsYW5ndWFnZSwge1xuICAgICAgICAgICAgICBsYWJlbDogJ0F2YWlsYWJsZScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnIzJjYTAyYycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGludmVudG9yeS5tZXRyaWNDb3JydXB0QXNzZW1ibHlQYWNrYWdlVmVyc2lvbkNvdW50KGxhbmd1YWdlLCB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnQ29ycnVwdCBBc3NlbWJseScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnIzM1NDJENycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGludmVudG9yeS5tZXRyaWNUcmFuc2xpdGVyYXRpb25FcnJvclBhY2thZ2VWZXJzaW9uQ291bnQobGFuZ3VhZ2UsIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdUcmFuc2xpdGVyYXRpb24gRXJyb3InLFxuICAgICAgICAgICAgICBjb2xvcjogJyNGRjhDMDAnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljVW5zdXBwb3J0ZWRQYWNrYWdlVmVyc2lvbkNvdW50KGxhbmd1YWdlLCB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnVW5zdXBwb3J0ZWQnLFxuICAgICAgICAgICAgICBjb2xvcjogJyM5NDY3YmQnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljTWlzc2luZ1BhY2thZ2VWZXJzaW9uQ291bnQobGFuZ3VhZ2UsIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdNaXNzaW5nJyxcbiAgICAgICAgICAgICAgY29sb3I6ICcjZDYyNzI4JyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgbGVmdFlBeGlzOiB7IHNob3dVbml0czogZmFsc2UgfSxcbiAgICAgICAgICB2aWV3OiBHcmFwaFdpZGdldFZpZXcuUElFLFxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgIHRpdGxlOiAnUGFja2FnZSBWZXJzaW9uIFN1Ym1vZHVsZXMnLFxuICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgIGludmVudG9yeS5tZXRyaWNTdXBwb3J0ZWRTdWJtb2R1bGVDb3VudChsYW5ndWFnZSwge1xuICAgICAgICAgICAgICBsYWJlbDogJ0F2YWlsYWJsZScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnIzJjYTAyYycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGludmVudG9yeS5tZXRyaWNDb3JydXB0QXNzZW1ibHlTdWJtb2R1bGVDb3VudChsYW5ndWFnZSwge1xuICAgICAgICAgICAgICBsYWJlbDogJ0NvcnJ1cHQgQXNzZW1ibHknLFxuICAgICAgICAgICAgICBjb2xvcjogJyMzNTQyRDcnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljVHJhbnNsaXRlcmF0aW9uRXJyb3JTdWJtb2R1bGVDb3VudChsYW5ndWFnZSwge1xuICAgICAgICAgICAgICBsYWJlbDogJ1RyYW5zbGl0ZXJhdGlvbiBFcnJvcicsXG4gICAgICAgICAgICAgIGNvbG9yOiAnI0ZGOEMwMCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGludmVudG9yeS5tZXRyaWNVbnN1cHBvcnRlZFN1Ym1vZHVsZUNvdW50KGxhbmd1YWdlLCB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnVW5zdXBwb3J0ZWQnLFxuICAgICAgICAgICAgICBjb2xvcjogJyM5NDY3YmQnLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbnZlbnRvcnkubWV0cmljTWlzc2luZ1N1Ym1vZHVsZUNvdW50KGxhbmd1YWdlLCB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnTWlzc2luZycsXG4gICAgICAgICAgICAgIGNvbG9yOiAnI2Q2MjcyOCcsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGxlZnRZQXhpczogeyBzaG93VW5pdHM6IGZhbHNlIH0sXG4gICAgICAgICAgdmlldzogR3JhcGhXaWRnZXRWaWV3LlBJRSxcbiAgICAgICAgfSksXG4gICAgICBdO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiogcmVuZGVyUGFja2FnZVNvdXJjZXNXaWRnZXRzKFxuICBwYWNrYWdlU291cmNlczogUGFja2FnZVNvdXJjZUJpbmRSZXN1bHRbXVxuKTogR2VuZXJhdG9yPElXaWRnZXRbXSwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+IHtcbiAgZm9yIChjb25zdCBwYWNrYWdlU291cmNlIG9mIHBhY2thZ2VTb3VyY2VzKSB7XG4gICAgeWllbGQgW1xuICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgbWFya2Rvd246IFtcbiAgICAgICAgICBgIyAke3BhY2thZ2VTb3VyY2UubmFtZX1gLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIC4uLihwYWNrYWdlU291cmNlLmxpbmtzID8/IFtdKS5tYXAoXG4gICAgICAgICAgICAoeyBuYW1lLCBwcmltYXJ5LCB1cmwgfSkgPT5cbiAgICAgICAgICAgICAgYFske3ByaW1hcnkgPyAnYnV0dG9uOnByaW1hcnknIDogJ2J1dHRvbid9OiR7bmFtZX1dKCR7dXJsfSlgXG4gICAgICAgICAgKSxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0pLFxuICAgIF07XG4gICAgeWllbGQqIHBhY2thZ2VTb3VyY2UuZGFzaGJvYXJkV2lkZ2V0cztcbiAgfVxuICByZXR1cm47XG59XG5cbmZ1bmN0aW9uIHJlbmRlclBhY2thZ2VTdGF0c1dpZGdldHMocGFja2FnZVN0YXRzOiBQYWNrYWdlU3RhdHMpOiBJV2lkZ2V0W11bXSB7XG4gIHJldHVybiBbXG4gICAgW1xuICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgbWFya2Rvd246IFtcbiAgICAgICAgICAnIyBQYWNrYWdlIFN0YXRzJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgW2J1dHRvbjpwcmltYXJ5OlBhY2thZ2UgU3RhdHMgT2JqZWN0XSgke3MzT2JqZWN0VXJsKFxuICAgICAgICAgICAgcGFja2FnZVN0YXRzLmJ1Y2tldCxcbiAgICAgICAgICAgIHBhY2thZ2VTdGF0cy5zdGF0c0tleVxuICAgICAgICAgICl9KWAsXG4gICAgICAgICAgYFtidXR0b246UGFja2FnZSBTdGF0cyBTdGF0ZSBNYWNoaW5lXSgke3N0YXRlTWFjaGluZVVybChcbiAgICAgICAgICAgIHBhY2thZ2VTdGF0cy5zdGF0ZU1hY2hpbmVcbiAgICAgICAgICApfSlgLFxuICAgICAgICAgIGBbYnV0dG9uOkNodW5rZXIgRnVuY3Rpb25dKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICBwYWNrYWdlU3RhdHMuY2h1bmtlckZ1bmN0aW9uXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgICBgW2J1dHRvbjpQcm9jZXNzb3IgRnVuY3Rpb25dKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICBwYWNrYWdlU3RhdHMucHJvY2Vzc29yRnVuY3Rpb25cbiAgICAgICAgICApfSlgLFxuICAgICAgICAgIGBbYnV0dG9uOkFnZ3JlZ2F0b3IgRnVuY3Rpb25dKCR7bGFtYmRhRnVuY3Rpb25VcmwoXG4gICAgICAgICAgICBwYWNrYWdlU3RhdHMuYWdncmVnYXRvckZ1bmN0aW9uXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0pLFxuICAgIF0sXG4gICAgW1xuICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgIHRpdGxlOiAnTnVtYmVyIG9mIFBhY2thZ2UgU3RhdHMgUmVjb3JkZWQnLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgIHBhY2thZ2VTdGF0cy5tZXRyaWNQYWNrYWdlc0NvdW50KHsgbGFiZWw6ICdQYWNrYWdlcyB3aXRoIHN0YXRzJyB9KSxcbiAgICAgICAgICAgICdSRVBFQVQnXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgfSksXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgdGl0bGU6ICdJbnZvY2F0aW9uIER1cmF0aW9uJyxcbiAgICAgICAgbGVmdDogW3BhY2thZ2VTdGF0cy5zdGF0ZU1hY2hpbmUubWV0cmljVGltZSh7IGxhYmVsOiAnRHVyYXRpb24nIH0pXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICByaWdodEFubm90YXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29sb3I6ICcjZmZhNTAwJyxcbiAgICAgICAgICAgIGxhYmVsOiAnNiBob3VycyAoU3RhdGUgTWFjaGluZSB0aW1lb3V0KScsXG4gICAgICAgICAgICB2YWx1ZTogRHVyYXRpb24uaG91cnMoNikudG9TZWNvbmRzKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgIF0sXG4gIF07XG59XG5cbmZ1bmN0aW9uIHJlbmRlclZlcnNpb25UcmFja2VyV2lkZ2V0cyhcbiAgdmVyc2lvblRyYWNrZXI6IFZlcnNpb25UcmFja2VyXG4pOiBJV2lkZ2V0W11bXSB7XG4gIHJldHVybiBbXG4gICAgW1xuICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgbWFya2Rvd246IFtcbiAgICAgICAgICAnIyBWZXJzaW9uIFRyYWNrZXInLFxuICAgICAgICAgICcnLFxuICAgICAgICAgIGBbYnV0dG9uOnByaW1hcnk6VmVyc2lvbnMgT2JqZWN0XSgke3MzT2JqZWN0VXJsKFxuICAgICAgICAgICAgdmVyc2lvblRyYWNrZXIuYnVja2V0LFxuICAgICAgICAgICAgVkVSU0lPTl9UUkFDS0VSX0tFWVxuICAgICAgICAgICl9KWAsXG4gICAgICAgICAgYFtidXR0b246VmVyc2lvbiBUcmFja2VyIEZ1bmN0aW9uXSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgdmVyc2lvblRyYWNrZXIuaGFuZGxlclxuICAgICAgICAgICl9KWAsXG4gICAgICAgICAgYFtidXR0b246VmVyc2lvbiBUcmFja2VyIExvZ3NdKCR7bGFtYmRhU2VhcmNoTG9nR3JvdXBVcmwoXG4gICAgICAgICAgICB2ZXJzaW9uVHJhY2tlci5oYW5kbGVyXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0pLFxuICAgIF0sXG4gICAgW1xuICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgIHRpdGxlOiAnTnVtYmVyIG9mIFBhY2thZ2UgVmVyc2lvbnMgUmVjb3JkZWQnLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgIHZlcnNpb25UcmFja2VyLm1ldHJpY1RyYWNrZWRWZXJzaW9uc0NvdW50KHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdQYWNrYWdlIHZlcnNpb25zIHJlY29yZGVkJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICB9KSxcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ0ludm9jYXRpb24gRHVyYXRpb24nLFxuICAgICAgICBsZWZ0OiBbdmVyc2lvblRyYWNrZXIuaGFuZGxlci5tZXRyaWNEdXJhdGlvbih7IGxhYmVsOiAnRHVyYXRpb24nIH0pXSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICByaWdodEFubm90YXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29sb3I6ICcjZmZhNTAwJyxcbiAgICAgICAgICAgIGxhYmVsOiAnMSBtaW51dGVzIChMYW1iZGEgdGltZW91dCknLFxuICAgICAgICAgICAgdmFsdWU6IER1cmF0aW9uLm1pbnV0ZXMoMSkudG9TZWNvbmRzKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgIF0sXG4gIF07XG59XG5cbmZ1bmN0aW9uIHJlbmRlclJlbGVhc2VOb3Rlc1dpZGdldHMoXG4gIHJlbGVhc2VOb3RlczogUmVsZWFzZU5vdGVGZXRjaGVyXG4pOiBJV2lkZ2V0W11bXSB7XG4gIHJldHVybiBbXG4gICAgW1xuICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgbWFya2Rvd246IFtcbiAgICAgICAgICAnIyBSZWxlYXNlIE5vdGVzJyxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgW2J1dHRvbjpwcmltYXJ5OlN0YXRlTWFjaGluZV0oJHtzdGF0ZU1hY2hpbmVVcmwoXG4gICAgICAgICAgICByZWxlYXNlTm90ZXMuc3RhdGVNYWNoaW5lXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgICBgW2J1dHRvbjpyZWxlYXNlTm90ZXNUcmlnZ2VyXSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgcmVsZWFzZU5vdGVzLnJlbGVhc2VOb3Rlc1RyaWdnZXJMYW1iZGFcbiAgICAgICAgICApfSlgLFxuICAgICAgICAgIGBbYnV0dG9uOmdlbmVyYXRlUmVsZWFzZU5vdGVzXSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgcmVsZWFzZU5vdGVzLmdlbmVyYXRlUmVsZWFzZU5vdGVzTGFtYmRhXG4gICAgICAgICAgKX0pYCxcbiAgICAgICAgICBgW2J1dHRvbjp1cGRhdGVGZWVkXSgke2xhbWJkYUZ1bmN0aW9uVXJsKFxuICAgICAgICAgICAgcmVsZWFzZU5vdGVzLnVwZGF0ZUZlZWRGdW5jdGlvblxuICAgICAgICAgICl9KWAsXG4gICAgICAgICAgYFtidXR0b246cXVldWVdKCR7c3FzUXVldWVVcmwocmVsZWFzZU5vdGVzLnF1ZXVlKX0pYCxcbiAgICAgICAgICBgW2J1dHRvbjp3b3JrZXJRdWV1ZV0oJHtzcXNRdWV1ZVVybChyZWxlYXNlTm90ZXMud29ya2VyUXVldWUpfSlgLFxuICAgICAgICAgIGBbYnV0dG9uOndvcmtlckRMUV0oJHtzcXNRdWV1ZVVybChyZWxlYXNlTm90ZXMud29ya2VyRExRKX0pYCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIH0pLFxuICAgIF0sXG4gICAgW1xuICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgIHRpdGxlOiAnTnVtYmVyIG9mIHJlbGVhc2UgTm90ZXMnLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgIHJlbGVhc2VOb3Rlcy5tZXRyaWNQYWNrYWdlc1dpdGhSZWxlYXNlTm90ZXNDb3VudCh7XG4gICAgICAgICAgICAgIGxhYmVsOiAnUGFja2FnZXMgd2l0aCByZWxlYXNlIG5vdGVzJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICB9KSxcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ1JlbGVhc2Ugbm90ZXMgZ2VuZXJhdGlvbiBFcnJvcnMnLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgcmVsZWFzZU5vdGVzLm1ldHJpY0NoYW5nZUxvZ0FsbEVycm9yKHsgbGFiZWw6ICdBbGwgRXJyb3JzJyB9KSxcbiAgICAgICAgICByZWxlYXNlTm90ZXMubWV0cmljUmVxdWVzdFVua25vd25FcnJvcih7IGxhYmVsOiAnVW5rbm93bkVycm9yJyB9KSxcbiAgICAgICAgICByZWxlYXNlTm90ZXMubWV0cmljSW52YWxpZENyZWRlbnRpYWxzKHtcbiAgICAgICAgICAgIGxhYmVsOiAnSW52YWxpZENyZWRlbnRpYWxzJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICByZWxlYXNlTm90ZXMubWV0cmljUmVxdWVzdFF1b3RhRXhoYXVzdGVkKHtcbiAgICAgICAgICAgIGxhYmVsOiAnUmVxdWVzdFF1b3RhRXhoYXVzdGVkJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICByZWxlYXNlTm90ZXMubWV0cmljUmVxdWVzdFVuU3VwcG9ydGVkUmVwbyh7XG4gICAgICAgICAgICBsYWJlbDogJ1VuU3VwcG9ydGVkUmVwbycsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgcmVsZWFzZU5vdGVzLm1ldHJpY1JlcXVlc3RJbnZhbGlkUGFja2FnZUpzb24oe1xuICAgICAgICAgICAgbGFiZWw6ICdJbnZhbGlkUGFja2FnZUpzb24nLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHJlbGVhc2VOb3Rlcy5tZXRyaWNDaGFuZ2VMb2dGZXRjaEVycm9yKHtcbiAgICAgICAgICAgIGxhYmVsOiAnQ2hhbmdlTG9nRmV0Y2hFcnJvcicsXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICBdLFxuICAgIFtcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogNixcbiAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICB0aXRsZTogJ0dpdEh1YiBBUEkgUmF0ZSBMaW1pdHMnLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgIHJlbGVhc2VOb3Rlcy5tZXRyaWNHaFJhdGVMaW1pdExpbWl0KHsgbGFiZWw6ICdMaW1pdCcgfSksXG4gICAgICAgICAgICAnUkVQRUFUJ1xuICAgICAgICAgICksXG4gICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgIHJlbGVhc2VOb3Rlcy5tZXRyaWNHaFJhdGVMaW1pdFVzZWQoeyBsYWJlbDogJ1VzZWQnIH0pLFxuICAgICAgICAgICAgJ1JFUEVBVCdcbiAgICAgICAgICApLFxuICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICByZWxlYXNlTm90ZXMubWV0cmljR2hSYXRlTGltaXRSZW1haW5pbmcoe1xuICAgICAgICAgICAgICBsYWJlbDogJ1JlbWFpbmluZycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICdSRVBFQVQnXG4gICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgIF0sXG4gIF07XG59XG4iXX0=
|
package/lib/construct-hub.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import * as iam from 'aws-cdk-lib/aws-iam';
|
|
|
4
4
|
import { RetentionDays } from 'aws-cdk-lib/aws-logs';
|
|
5
5
|
import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager';
|
|
6
6
|
import * as sqs from 'aws-cdk-lib/aws-sqs';
|
|
7
|
+
import { IStateMachine } from 'aws-cdk-lib/aws-stepfunctions';
|
|
7
8
|
import { Construct } from 'constructs';
|
|
8
9
|
import { AlarmActions, AlarmSeverities, Domain } from './api';
|
|
9
10
|
import { DenyListRule } from './backend/deny-list/api';
|
|
@@ -14,7 +15,6 @@ import { PackageTagGroup } from './package-tag-group';
|
|
|
14
15
|
import { PreloadFile } from './preload-file';
|
|
15
16
|
import { SpdxLicense } from './spdx-license';
|
|
16
17
|
import { PackageLinkConfig, FeaturedPackages, FeatureFlags, Category } from './webapp';
|
|
17
|
-
import { IStateMachine } from 'aws-cdk-lib/aws-stepfunctions';
|
|
18
18
|
/**
|
|
19
19
|
* Configuration for generating RSS and ATOM feed for the latest packages
|
|
20
20
|
*/
|