aws-delivlib 14.15.82 → 14.15.84
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/lib/auto-build.js +5 -6
- package/lib/chime-notifier/chime-notifier.js +2 -3
- package/lib/chime-notifier/handler/notifier-handler.js +6 -7
- package/lib/code-signing/code-signing-certificate.js +3 -5
- package/lib/package-integrity/handler/integrity.js +2 -3
- package/lib/package-integrity/handler/repository.js +3 -4
- package/lib/package-integrity/handler/validate.bundle.js +2 -3
- package/lib/package-integrity/handler/validate.js +2 -3
- package/lib/package-integrity/integrity.js +6 -7
- package/lib/pipeline-notifications/slack.js +2 -3
- package/lib/pipeline.js +18 -31
- package/lib/publishing.js +6 -10
- package/lib/pull-request/bump.js +9 -10
- package/lib/pull-request/merge-back.js +6 -7
- package/lib/pull-request/pr.js +8 -11
- package/lib/registry-sync/ecr-mirror.js +3 -5
- package/lib/registry-sync/mirror-source.js +3 -5
- package/lib/repo.js +2 -3
- package/lib/shellable.js +9 -12
- package/lib/signing.js +2 -3
- package/package.json +2 -2
package/lib/publishing.js
CHANGED
@@ -50,12 +50,11 @@ var NpmAccess;
|
|
50
50
|
*/
|
51
51
|
class PublishToMavenProject extends constructs_1.Construct {
|
52
52
|
constructor(parent, id, props) {
|
53
|
-
var _a;
|
54
53
|
super(parent, id);
|
55
54
|
const forReal = props.dryRun === undefined ? 'false' : (!props.dryRun).toString();
|
56
55
|
const shellable = new shellable_1.Shellable(this, 'Default', {
|
57
56
|
description: props.description,
|
58
|
-
platform: new shellable_1.LinuxPlatform(
|
57
|
+
platform: new shellable_1.LinuxPlatform(props.buildImage ?? aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.fromDockerRegistry(constants_1.DEFAULT_SUPERCHAIN_IMAGE)),
|
59
58
|
scriptDirectory: path.join(__dirname, 'publishing', 'maven'),
|
60
59
|
entrypoint: 'publish.sh',
|
61
60
|
environment: (0, util_1.noUndefined)({
|
@@ -90,10 +89,9 @@ exports.PublishToMavenProject = PublishToMavenProject;
|
|
90
89
|
*/
|
91
90
|
class PublishToNpmProject extends constructs_1.Construct {
|
92
91
|
constructor(parent, id, props) {
|
93
|
-
var _a;
|
94
92
|
super(parent, id);
|
95
93
|
const forReal = props.dryRun === undefined ? 'false' : (!props.dryRun).toString();
|
96
|
-
const access =
|
94
|
+
const access = props.access ?? NpmAccess.PUBLIC;
|
97
95
|
const shellable = new shellable_1.Shellable(this, 'Default', {
|
98
96
|
description: props.description,
|
99
97
|
platform: new shellable_1.LinuxPlatform(aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.STANDARD_7_0),
|
@@ -129,7 +127,6 @@ exports.PublishToNpmProject = PublishToNpmProject;
|
|
129
127
|
*/
|
130
128
|
class PublishToNuGetProject extends constructs_1.Construct {
|
131
129
|
constructor(parent, id, props) {
|
132
|
-
var _a;
|
133
130
|
super(parent, id);
|
134
131
|
const environment = {};
|
135
132
|
environment.FOR_REAL = props.dryRun === undefined ? 'false' : (!props.dryRun).toString();
|
@@ -148,7 +145,7 @@ class PublishToNuGetProject extends constructs_1.Construct {
|
|
148
145
|
}
|
149
146
|
const shellable = new shellable_1.Shellable(this, 'Default', {
|
150
147
|
description: props.description,
|
151
|
-
platform: new shellable_1.LinuxPlatform(
|
148
|
+
platform: new shellable_1.LinuxPlatform(props.buildImage ?? aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.fromDockerRegistry(constants_1.DEFAULT_SUPERCHAIN_IMAGE)),
|
152
149
|
scriptDirectory: path.join(__dirname, 'publishing', 'nuget'),
|
153
150
|
entrypoint: 'publish.sh',
|
154
151
|
environment,
|
@@ -342,9 +339,8 @@ exports.PublishToPyPi = PublishToPyPi;
|
|
342
339
|
*/
|
343
340
|
class PublishToGolang extends constructs_1.Construct {
|
344
341
|
constructor(scope, id, props) {
|
345
|
-
var _a;
|
346
342
|
super(scope, id);
|
347
|
-
const dryRun =
|
343
|
+
const dryRun = props.dryRun ?? false;
|
348
344
|
const shellable = new shellable_1.Shellable(this, 'Default', {
|
349
345
|
description: props.description,
|
350
346
|
platform: new shellable_1.LinuxPlatform(aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.STANDARD_7_0),
|
@@ -386,7 +382,7 @@ function grantSsmPrefix(role, ssmPrefix) {
|
|
386
382
|
if (ssmPrefix.endsWith('/')) {
|
387
383
|
throw new Error(`SSM prefix must not end with '/', got: ${ssmPrefix}`);
|
388
384
|
}
|
389
|
-
role
|
385
|
+
role?.addToPrincipalPolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
|
390
386
|
actions: ['ssm:PutParameter', 'ssm:GetParameter'],
|
391
387
|
resources: [aws_cdk_lib_1.Stack.of(role).formatArn({
|
392
388
|
service: 'ssm',
|
@@ -396,4 +392,4 @@ function grantSsmPrefix(role, ssmPrefix) {
|
|
396
392
|
}));
|
397
393
|
}
|
398
394
|
}
|
399
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInB1Ymxpc2hpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsNkNBT3FCO0FBQ3JCLDJDQUF1QztBQUV2QywyQ0FBdUQ7QUFFdkQsMkRBQTZDO0FBRzdDLDJDQUF1RDtBQUN2RCxpQ0FBcUM7QUFFckM7O0dBRUc7QUFDSCxJQUFZLFNBVVg7QUFWRCxXQUFZLFNBQVM7SUFDbkI7O09BRUc7SUFDSCw4QkFBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILHNDQUF5QixDQUFBO0FBQzNCLENBQUMsRUFWVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQVVwQjtBQXlERDs7R0FFRztBQUNILE1BQWEscUJBQXNCLFNBQVEsc0JBQVM7SUFJbEQsWUFBWSxNQUFpQixFQUFFLEVBQVUsRUFBRSxLQUFpQzs7UUFDMUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVsQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWxGLE1BQU0sU0FBUyxHQUFHLElBQUkscUJBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQy9DLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixRQUFRLEVBQUUsSUFBSSx5QkFBYSxDQUFDLE1BQUEsS0FBSyxDQUFDLFVBQVUsbUNBQUksMkJBQU0sQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsb0NBQXdCLENBQUMsQ0FBQztZQUNwSCxlQUFlLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQztZQUM1RCxVQUFVLEVBQUUsWUFB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QyxJQUFJLHFCQUFHLENBQUMsZUFBZSxDQUFDO1lBQ2pELE9BQU8sRUFBRSxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDO1lBQ2pELFNBQVMsRUFBRSxDQUFDLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztvQkFDbkMsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFlBQVksRUFBRSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7aUJBQ3hDLENBQUMsQ0FBQztTQUNKLENBQUMsQ0FBQyxDQUFDO0tBQ0w7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7XG4gIFN0YWNrLFxuICBhd3NfY29kZWJ1aWxkIGFzIGNidWlsZCxcbiAgYXdzX2NvZGVwaXBlbGluZSBhcyBjcGlwZWxpbmUsXG4gIGF3c19jb2RlcGlwZWxpbmVfYWN0aW9ucyBhcyBjcGlwZWxpbmVfYWN0aW9ucyxcbiAgYXdzX2lhbSBhcyBpYW0sXG4gIGF3c19zMyBhcyBzMyxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJQ29kZVNpZ25pbmdDZXJ0aWZpY2F0ZSB9IGZyb20gJy4vY29kZS1zaWduaW5nJztcbmltcG9ydCB7IERFRkFVTFRfU1VQRVJDSEFJTl9JTUFHRSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9wZW5QR1BLZXlQYWlyIH0gZnJvbSAnLi9vcGVuLXBncC1rZXktcGFpcic7XG5pbXBvcnQgKiBhcyBwZXJtaXNzaW9ucyBmcm9tICcuL3Blcm1pc3Npb25zJztcbmltcG9ydCB7IEFkZFRvUGlwZWxpbmVPcHRpb25zLCBJUHVibGlzaGVyIH0gZnJvbSAnLi9waXBlbGluZSc7XG5pbXBvcnQgeyBXcml0YWJsZUdpdEh1YlJlcG8gfSBmcm9tICcuL3JlcG8nO1xuaW1wb3J0IHsgTGludXhQbGF0Zm9ybSwgU2hlbGxhYmxlIH0gZnJvbSAnLi9zaGVsbGFibGUnO1xuaW1wb3J0IHsgbm9VbmRlZmluZWQgfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIFR5cGUgb2YgYWNjZXNzIHBlcm1pc3Npb25zIHRvIHJlcXVlc3QgZnJvbSBucG1qcy5cbiAqL1xuZXhwb3J0IGVudW0gTnBtQWNjZXNzIHtcbiAgLyoqXG4gICAqIE5vIGFjY2VzcyByZXN0cmljdGlvbi4gTm90ZSB0aGF0IHVuc2NvcGVkIHBhY2thZ2VzIG11c3QgYWx3YXlzIGJlIHB1YmxpYy5cbiAgICovXG4gIFBVQkxJQyA9ICdwdWJsaWMnLFxuXG4gIC8qKlxuICAgKiBMaW1pdCBhY2Nlc3MgdG8gd2hpdGVsaXN0ZWQgbnBtanMgdXNlcnMuXG4gICAqL1xuICBSRVNUUklDVEVEID0gJ3Jlc3RyaWN0ZWQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hUb01hdmVuUHJvamVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBzaWduaW5nIGtleSBpdHNlbGZcbiAgICovXG4gIHNpZ25pbmdLZXk6IE9wZW5QR1BLZXlQYWlyO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHNvbmF0eXBlIHN0YWdpbmcgcHJvZmlsZSAoZS5nLiBcIjY4YTA1MzYzMDgzMTc0XCIpLlxuICAgKi9cbiAgc3RhZ2luZ1Byb2ZpbGVJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIG9mIHRoZSBzZWNyZXQgdGhhdCBjb250YWlucyB0aGUgTWF2ZW4gbG9naW5cbiAgICovXG4gIG1hdmVuTG9naW5TZWNyZXQ6IHBlcm1pc3Npb25zLkV4dGVybmFsU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlIChkZWZhdWx0KSBwZXJmb3JtcyBhIGRyeS1ydW4gb25seSBpbnN0ZWFkIG9mIGFjdHVhbGx5IHB1Ymxpc2hpbmcuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBNYXZlbiBwdWJsaXNoaW5nIGVuZHBvaW50IHRvIGJlIHVzZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiaHR0cHM6Ly9vc3Muc29uYXR5cGUub3JnXCJcbiAgICovXG4gIG1hdmVuRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBidWlsZCBpbWFnZSB0byBkbyB0aGUgcHVibGlzaGluZyBpblxuICAgKlxuICAgKiBOZWVkcyB0byBoYXZlIE1hdmVuIHByZWluc3RhbGxlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgTGF0ZXN0IHN1cGVyY2hhaW5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkSW1hZ2U/OiBjYnVpbGQuSUJ1aWxkSW1hZ2U7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggdW5kZXIgd2hpY2ggdG8gcmVjb3JkIHRoZSBmYWN0IHRoYXQgdGhlIHB1Ymxpc2ggc3RlcCBleGVjdXRlZFxuICAgKlxuICAgKiBUaGlzIHdpbGwgd3JpdGUgYDxwcmVmaXg+L3ZlcnNpb25gIGFuZCBgPHByZWZpeD4vdGltZXN0YW1wYCB2YXJpYWJsZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBTU00gcGFyYW1ldGVyc1xuICAgKi9cbiAgc3NtUHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIENvZGVCdWlsZCBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgd2lsbCBwdWJsaXNoIGFsbCBwYWNrYWdlcyBpbiBhIHJlbGVhc2UgYnVuZGxlIHRvIE1hdmVuXG4gKi9cbmV4cG9ydCBjbGFzcyBQdWJsaXNoVG9NYXZlblByb2plY3QgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUHVibGlzaGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvTWF2ZW5Qcm9qZWN0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGZvclJlYWwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0ocHJvcHMuYnVpbGRJbWFnZSA/PyBjYnVpbGQuTGludXhCdWlsZEltYWdlLmZyb21Eb2NrZXJSZWdpc3RyeShERUZBVUxUX1NVUEVSQ0hBSU5fSU1BR0UpKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAnbWF2ZW4nKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiBub1VuZGVmaW5lZCh7XG4gICAgICAgIFNUQUdJTkdfUFJPRklMRV9JRDogcHJvcHMuc3RhZ2luZ1Byb2ZpbGVJZCxcbiAgICAgICAgU0lHTklOR19LRVlfQVJOOiBwcm9wcy5zaWduaW5nS2V5LmNyZWRlbnRpYWwuc2VjcmV0QXJuLFxuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgICAgTUFWRU5fTE9HSU5fU0VDUkVUOiBwcm9wcy5tYXZlbkxvZ2luU2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgTUFWRU5fRU5EUE9JTlQ6IHByb3BzLm1hdmVuRW5kcG9pbnQgfHwgJ2h0dHBzOi8vb3NzLnNvbmF0eXBlLm9yZycsXG4gICAgICAgIFNTTV9QUkVGSVg6IHByb3BzLnNzbVByZWZpeCxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgaWYgKHNoZWxsYWJsZS5yb2xlKSB7XG4gICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQocHJvcHMubWF2ZW5Mb2dpblNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgICAgcHJvcHMuc2lnbmluZ0tleS5ncmFudFJlYWQoc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cbiAgICBncmFudFNzbVByZWZpeChzaGVsbGFibGUucm9sZSwgcHJvcHMuc3NtUHJlZml4KTtcblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hUb05wbVByb2plY3RQcm9wcyB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIG9mIHRoZSBzZWNyZXQgdGhhdCBjb250YWlucyB0aGUgTlBNIHRva2VuXG4gICAqL1xuICBucG1Ub2tlblNlY3JldDogcGVybWlzc2lvbnMuRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCAoZGVmYXVsdCkgd2lsbCBvbmx5IHBlcmZvcm0gYSBkcnktcnVuIGJ1dCB3aWxsIG5vdCBhY3R1YWxseSBwdWJsaXNoLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBucG0gZGlzdC10YWcgdG8gdXNlIHdoZW4gcHVibGlzaGluZyBhcnRpZmFjdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbnBtIGRlZmF1bHQgYmVoYXZpb3IgKFwibGF0ZXN0XCIgdW5sZXNzIGRpc3QgdGFnIGlzIHNwZWNpZmllZCBpbiBwYWNrYWdlLmpzb24pXG4gICAqL1xuICBkaXN0VGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBucG0gLS1hY2Nlc3MgcHVibGljfHJlc3RyaWN0ZWRcbiAgICpcbiAgICogU2VlIGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vY2xpLWNvbW1hbmRzL3B1Ymxpc2gjOn46dGV4dD1UZWxscyUyMHRoZVxuICAgKlxuICAgKiBUZWxscyB0aGUgcmVnaXN0cnkgd2hldGhlciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHB1Ymxpc2hlZCBhcyBwdWJsaWMgb3IgcmVzdHJpY3RlZC5cbiAgICogT25seSBhcHBsaWVzIHRvIHNjb3BlZCBwYWNrYWdlcywgd2hpY2ggZGVmYXVsdCB0byByZXN0cmljdGVkLlxuICAgKiBJZiB5b3UgZG9u4oCZdCBoYXZlIGEgcGFpZCBhY2NvdW50LCB5b3UgbXVzdCBwdWJsaXNoIHdpdGggLS1hY2Nlc3MgcHVibGljIHRvIHB1Ymxpc2ggc2NvcGVkIHBhY2thZ2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOcG1BY2Nlc3MuUFVCTElDXG4gICAqL1xuICBhY2Nlc3M/OiBOcG1BY2Nlc3M7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggdW5kZXIgd2hpY2ggdG8gcmVjb3JkIHRoZSBmYWN0IHRoYXQgdGhlIHB1Ymxpc2ggc3RlcCBleGVjdXRlZFxuICAgKlxuICAgKiBUaGlzIHdpbGwgd3JpdGUgYDxwcmVmaXg+L3ZlcnNpb25gIGFuZCBgPHByZWZpeD4vdGltZXN0YW1wYCB2YXJpYWJsZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBTU00gcGFyYW1ldGVyc1xuICAgKi9cbiAgc3NtUHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIENvZGVCdWlsZCBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgd2lsbCBwdWJsaXNoIGFsbCBwYWNrYWdlcyBpbiBhIHJlbGVhc2UgYnVuZGxlIHRvIE5QTVxuICovXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvTnBtUHJvamVjdCBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElQdWJsaXNoZXIge1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZT86IGlhbS5JUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvTnBtUHJvamVjdFByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICBjb25zdCBmb3JSZWFsID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG5cbiAgICBjb25zdCBhY2Nlc3MgPSBwcm9wcy5hY2Nlc3MgPz8gTnBtQWNjZXNzLlBVQkxJQztcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICducG0nKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiBub1VuZGVmaW5lZCh7XG4gICAgICAgIEZPUl9SRUFMOiBmb3JSZWFsLFxuICAgICAgICBOUE1fVE9LRU5fU0VDUkVUOiBwcm9wcy5ucG1Ub2tlblNlY3JldC5zZWNyZXRBcm4sXG4gICAgICAgIERJU1RUQUc6IHByb3BzLmRpc3RUYWcgfHwgJycsXG4gICAgICAgIEFDQ0VTUzogYWNjZXNzLFxuICAgICAgICBTU01fUFJFRklYOiBwcm9wcy5zc21QcmVmaXgsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGlmIChzaGVsbGFibGUucm9sZSkge1xuICAgICAgcGVybWlzc2lvbnMuZ3JhbnRTZWNyZXRSZWFkKHByb3BzLm5wbVRva2VuU2VjcmV0LCBzaGVsbGFibGUucm9sZSk7XG4gICAgfVxuXG4gICAgZ3JhbnRTc21QcmVmaXgoc2hlbGxhYmxlLnJvbGUsIHByb3BzLnNzbVByZWZpeCk7XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9OdUdldFByb2plY3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgU2VjcmV0c01hbmFnZXIgc2VjcmV0IHdoaWNoIHN0b3JlcyB0aGUgTnVnZXQgQVBJIGtleS5cbiAgICovXG4gIG51Z2V0QXBpS2V5U2VjcmV0OiBwZXJtaXNzaW9ucy5FeHRlcm5hbFNlY3JldDtcblxuICAvKipcbiAgICogSWYgYHRydWVgIChkZWZhdWx0KSB3aWxsIG9ubHkgcGVyZm9ybSBhIGRyeS1ydW4gYnV0IHdpbGwgbm90IGFjdHVhbGx5IHB1Ymxpc2guXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgY29kZSBzaWduaW5nIGNlcnRpZmljYXRlIHRvIHVzZSB0byBzaWduIGFzc2VtYmxpZXMuXG4gICAqIEBkZWZhdWx0IE5vIHNpZ25pbmdcbiAgICovXG4gIGNvZGVTaWduPzogSUNvZGVTaWduaW5nQ2VydGlmaWNhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBidWlsZCBpbWFnZSB0byBkbyB0aGUgcHVibGlzaGluZyBpblxuICAgKlxuICAgKiBOZWVkcyB0byBoYXZlIE51R2V0IHByZWluc3RhbGxlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgTGF0ZXN0IHN1cGVyY2hhaW5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkSW1hZ2U/OiBjYnVpbGQuSUJ1aWxkSW1hZ2U7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggdW5kZXIgd2hpY2ggdG8gcmVjb3JkIHRoZSBmYWN0IHRoYXQgdGhlIHB1Ymxpc2ggc3RlcCBleGVjdXRlZFxuICAgKlxuICAgKiBUaGlzIHdpbGwgd3JpdGUgYDxwcmVmaXg+L3ZlcnNpb25gIGFuZCBgPHByZWZpeD4vdGltZXN0YW1wYCB2YXJpYWJsZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBTU00gcGFyYW1ldGVyc1xuICAgKi9cbiAgc3NtUHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIENvZGVCdWlsZCBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgd2lsbCBwdWJsaXNoIGFsbCBwYWNrYWdlcyBpbiBhIHJlbGVhc2UgYnVuZGxlIHRvIE51R2V0XG4gKi9cbmV4cG9ydCBjbGFzcyBQdWJsaXNoVG9OdUdldFByb2plY3QgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUHVibGlzaGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvTnVHZXRQcm9qZWN0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGVudmlyb25tZW50OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgICBlbnZpcm9ubWVudC5GT1JfUkVBTCA9IHByb3BzLmRyeVJ1biA9PT0gdW5kZWZpbmVkID8gJ2ZhbHNlJyA6ICghcHJvcHMuZHJ5UnVuKS50b1N0cmluZygpO1xuXG4gICAgaWYgKHByb3BzLm51Z2V0QXBpS2V5U2VjcmV0LmFzc3VtZVJvbGVBcm4pIHtcbiAgICAgIGVudmlyb25tZW50Lk5VR0VUX1JPTEVfQVJOID0gcHJvcHMubnVnZXRBcGlLZXlTZWNyZXQuYXNzdW1lUm9sZUFybjtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMubnVnZXRBcGlLZXlTZWNyZXQucmVnaW9uKSB7XG4gICAgICBlbnZpcm9ubWVudC5OVUdFVF9TRUNSRVRfUkVHSU9OID0gcHJvcHMubnVnZXRBcGlLZXlTZWNyZXQucmVnaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbnZpcm9ubWVudC5OVUdFVF9TRUNSRVRfUkVHSU9OID0gU3RhY2sub2YodGhpcykucmVnaW9uO1xuICAgIH1cblxuICAgIGVudmlyb25tZW50Lk5VR0VUX1NFQ1JFVF9JRCA9IHByb3BzLm51Z2V0QXBpS2V5U2VjcmV0LnNlY3JldEFybjtcbiAgICBpZiAocHJvcHMuc3NtUHJlZml4KSB7XG4gICAgICBlbnZpcm9ubWVudC5TU01fUFJFRklYID0gcHJvcHMuc3NtUHJlZml4O1xuICAgIH1cblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0ocHJvcHMuYnVpbGRJbWFnZSA/PyBjYnVpbGQuTGludXhCdWlsZEltYWdlLmZyb21Eb2NrZXJSZWdpc3RyeShERUZBVUxUX1NVUEVSQ0hBSU5fSU1BR0UpKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAnbnVnZXQnKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50LFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLmNvZGVTaWduKSB7XG4gICAgICBlbnZpcm9ubWVudC5DT0RFX1NJR05JTkdfU0VDUkVUX0lEID0gcHJvcHMuY29kZVNpZ24uY3JlZGVudGlhbC5zZWNyZXRBcm47XG4gICAgICBlbnZpcm9ubWVudC5DT0RFX1NJR05JTkdfUEFSQU1FVEVSX05BTUUgPSBwcm9wcy5jb2RlU2lnbi5wcmluY2lwYWwucGFyYW1ldGVyTmFtZTtcbiAgICB9XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIGlmIChwcm9wcy5udWdldEFwaUtleVNlY3JldC5hc3N1bWVSb2xlQXJuKSB7XG4gICAgICAgIHBlcm1pc3Npb25zLmdyYW50QXNzdW1lUm9sZShwcm9wcy5udWdldEFwaUtleVNlY3JldC5hc3N1bWVSb2xlQXJuLCBzaGVsbGFibGUucm9sZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQocHJvcHMubnVnZXRBcGlLZXlTZWNyZXQsIHNoZWxsYWJsZS5yb2xlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BzLmNvZGVTaWduKSB7XG4gICAgICAgIHByb3BzLmNvZGVTaWduLmdyYW50RGVjcnlwdChzaGVsbGFibGUucm9sZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ3JhbnRTc21QcmVmaXgoc2hlbGxhYmxlLnJvbGUsIHByb3BzLnNzbVByZWZpeCk7XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoRG9jc1RvR2l0SHViUHJvamVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSByZXBvc2l0b3J5IHRvIHB1Ymxpc2ggdG9cbiAgICovXG4gIGdpdGh1YlJlcG86IFdyaXRhYmxlR2l0SHViUmVwbztcblxuICAvKipcbiAgICogSWYgYHRydWVgIChkZWZhdWx0KSB3aWxsIG9ubHkgcGVyZm9ybSBhIGRyeS1ydW4gYnV0IHdpbGwgbm90IGFjdHVhbGx5IHB1Ymxpc2guXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBidWlsZCBtYW5pZmVzdCBKU09OIGZpbGUgKG11c3QgaW5jbHVkZSBcIm5hbWVcIiBhbmQgXCJ2ZXJzaW9uXCIgZmllbGRzKS5cbiAgICogUmVsYXRpdmUgdG8gdGhlIGFydGlmYWN0cyByb290LlxuICAgKiBAZGVmYXVsdCBcIi4vYnVpbGQuanNvblwiXG4gICAqL1xuICBidWlsZE1hbmlmZXN0RmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdpdEh1YiBQYWdlcyBicmFuY2ggdG8gcHVzaCB0by5cbiAgICogQGRlZmF1bHQgZ2gtcGFnZXNcbiAgICovXG4gIGJyYW5jaD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByZWZpeCB1bmRlciB3aGljaCB0byByZWNvcmQgdGhlIGZhY3QgdGhhdCB0aGUgcHVibGlzaCBzdGVwIGV4ZWN1dGVkXG4gICAqXG4gICAqIFRoaXMgd2lsbCB3cml0ZSBgPHByZWZpeD4vdmVyc2lvbmAgYW5kIGA8cHJlZml4Pi90aW1lc3RhbXBgIHZhcmlhYmxlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIFNTTSBwYXJhbWV0ZXJzXG4gICAqL1xuICBzc21QcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIHByb2plY3RcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29kZUJ1aWxkIHByb2plY3QgdGhhdCB3aWxsIHB1Ymxpc2ggYWxsIHBhY2thZ2VzIGluIGEgcmVsZWFzZSBidW5kbGUgdG8gTnVHZXRcbiAqL1xuZXhwb3J0IGNsYXNzIFB1Ymxpc2hEb2NzVG9HaXRIdWJQcm9qZWN0IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hEb2NzVG9HaXRIdWJQcm9qZWN0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGZvclJlYWwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdkb2NzJyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudDogbm9VbmRlZmluZWQoe1xuICAgICAgICAvLyBNdXN0IGJlIFNTSCBiZWNhdXNlIHdlIHVzZSBhbiBTU0gga2V5IHRvIGF1dGhlbnRpY2F0ZVxuICAgICAgICBHSVRIVUJfUkVQTzogcHJvcHMuZ2l0aHViUmVwby5yZXBvc2l0b3J5VXJsU3NoLFxuICAgICAgICBHSVRIVUJfUEFHRVNfQlJBTkNIOiBwcm9wcy5icmFuY2ggfHwgJ2doLXBhZ2VzJyxcbiAgICAgICAgU1NIX0tFWV9TRUNSRVQ6IHByb3BzLmdpdGh1YlJlcG8uc3NoS2V5U2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgRk9SX1JFQUw6IGZvclJlYWwsXG4gICAgICAgIENPTU1JVF9VU0VSTkFNRTogcHJvcHMuZ2l0aHViUmVwby5jb21taXRVc2VybmFtZSxcbiAgICAgICAgQ09NTUlUX0VNQUlMOiBwcm9wcy5naXRodWJSZXBvLmNvbW1pdEVtYWlsLFxuICAgICAgICBCVUlMRF9NQU5JRkVTVDogcHJvcHMuYnVpbGRNYW5pZmVzdEZpbGVOYW1lIHx8ICcuL2J1aWxkLmpzb24nLFxuICAgICAgICBTU01fUFJFRklYOiBwcm9wcy5zc21QcmVmaXgsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGlmIChzaGVsbGFibGUucm9sZSkge1xuICAgICAgcGVybWlzc2lvbnMuZ3JhbnRTZWNyZXRSZWFkKHByb3BzLmdpdGh1YlJlcG8uc3NoS2V5U2VjcmV0LCBzaGVsbGFibGUucm9sZSk7XG4gICAgfVxuXG4gICAgZ3JhbnRTc21QcmVmaXgoc2hlbGxhYmxlLnJvbGUsIHByb3BzLnNzbVByZWZpeCk7XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9HaXRIdWJQcm9wcyB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgKGRlZmF1bHQpIHdpbGwgb25seSBwZXJmb3JtIGEgZHJ5LXJ1biBidXQgd2lsbCBub3QgYWN0dWFsbHkgcHVibGlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgdG8gY3JlYXRlIGEgcmVsZWFzZSBpbi5cbiAgICovXG4gIGdpdGh1YlJlcG86IFdyaXRhYmxlR2l0SHViUmVwbztcblxuICAvKipcbiAgICogVGhlIHNpZ25pZ24ga2V5IHRvIHVzZSB0byBjcmVhdGUgYSBHUEcgc2lnbmF0dXJlIG9mIHRoZSBhcnRpZmFjdC5cbiAgICovXG4gIHNpZ25pbmdLZXk6IE9wZW5QR1BLZXlQYWlyO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYnVpbGQgbWFuaWZlc3QgSlNPTiBmaWxlIChtdXN0IGluY2x1ZGUgXCJuYW1lXCIgYW5kIFwidmVyc2lvblwiIGZpZWxkcykuXG4gICAqIFJlbGF0aXZlIHRvIHRoZSBhcnRpZmFjdHMgcm9vdC5cbiAgICogQGRlZmF1bHQgXCIuL2J1aWxkLmpzb25cIlxuICAgKi9cbiAgYnVpbGRNYW5pZmVzdEZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2hhbmdlbG9nIG1hcmtkb3duIGZpbGUsIHVzZWQgdG8gY3JlYXRlIHJlbGVhc2Ugbm90ZXMuXG4gICAqIFJlbGF0aXZlIHRvIHRoZSBhcnRpZmFjdHMgcm9vdC5cbiAgICogQGRlZmF1bHQgXCIuL0NIQU5HRUxPRy5tZFwiXG4gICAqL1xuICBjaGFuZ2Vsb2dGaWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHJlbGVhc2Ugbm90ZXMgZmlsZSwgY29udGFpbmluZyB0aGUgY29tcGxldGVkIHJlbGVhc2Ugbm90ZXNcbiAgICogZm9yIHRoZSBjdXJyZW50IHJlbGVhc2UuXG4gICAqIFJlbGF0aXZlIHRvIHRoZSBhcnRpZmFjdHMgcm9vdC5cbiAgICogTk9URSAtIElmIHRoaXMgdmFsdWUgaXMgc2V0IGFuZCBwb2ludHMgdG8gYSB2YWxpZCBmaWxlLCB0aGUgZmlsZSBpbiBpdHMgZW50aXJldHlcbiAgICogd2lsbCBiZSByZWFkIGFuZCB1c2VkIGZvciB0aGUgcmVsZWFzZSBub3Rlcy4gVGhlIHZhbHVlIG9mIGBjaGFuZ2Vsb2dGaWxlTmFtZWAgd2lsbFxuICAgKiBiZSBpZ25vcmVkLlxuICAgKiBAZGVmYXVsdCBcIi4vUkVMRUFTRV9OT1RFUy5tZFwiXG4gICAqL1xuICByZWxlYXNlTm90ZXNGaWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBpbnB1dCBhcnRpZmFjdHMgdG8gcHVibGlzaCBiaW5hcmllcyBmcm9tIHRvIEdpdEh1YiByZWxlYXNlXG4gICAqL1xuICBhZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHM/OiBjcGlwZWxpbmUuQXJ0aWZhY3RbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBzaWduIHRoZSBhZGRpdGlvbmFsIGFydGlmYWN0c1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBzaWduQWRkaXRpb25hbEFydGlmYWN0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggdW5kZXIgd2hpY2ggdG8gcmVjb3JkIHRoZSBmYWN0IHRoYXQgdGhlIHB1Ymxpc2ggc3RlcCBleGVjdXRlZFxuICAgKlxuICAgKiBUaGlzIHdpbGwgd3JpdGUgYDxwcmVmaXg+L3ZlcnNpb25gIGFuZCBgPHByZWZpeD4vdGltZXN0YW1wYCB2YXJpYWJsZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBTU00gcGFyYW1ldGVyc1xuICAgKi9cbiAgc3NtUHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIENvZGVCdWlsZCBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvR2l0SHViIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcbiAgcHJpdmF0ZSByZWFkb25seSBhZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHM/OiBjcGlwZWxpbmUuQXJ0aWZhY3RbXTtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb0dpdEh1YlByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICBjb25zdCBmb3JSZWFsID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG4gICAgdGhpcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHMgPSBwcm9wcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHM7XG5cbiAgICAvLyBUaGUgcmVsZWFzZSBub3RlcywgaWYgc2V0IGFuZCBhIHZhbGlkIGZpbGUsIG92ZXJyaWRlcyBhbnkgdXNhZ2VzIG9mIHRoZSBjaGFuZ2Vsb2cuXG4gICAgaWYgKHByb3BzLmNoYW5nZWxvZ0ZpbGVOYW1lICYmIHByb3BzLnJlbGVhc2VOb3Rlc0ZpbGVOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JvdGggYHJlbGVhc2VOb3Rlc0ZpbGVOYW1lYCBhbmQgYGNoYW5nZWxvZ0ZpbGVOYW1lYCBjYW5ub3QgYmUgc3BlY2lmaWVkOyB1c2Ugb25lIG9yIHRoZSBvdGhlcicpO1xuICAgIH1cblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdnaXRodWInKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiBub1VuZGVmaW5lZCh7XG4gICAgICAgIEJVSUxEX01BTklGRVNUOiBwcm9wcy5idWlsZE1hbmlmZXN0RmlsZU5hbWUgfHwgJy4vYnVpbGQuanNvbicsXG4gICAgICAgIENIQU5HRUxPRzogcHJvcHMuY2hhbmdlbG9nRmlsZU5hbWUgfHwgJy4vQ0hBTkdFTE9HLm1kJyxcbiAgICAgICAgUkVMRUFTRV9OT1RFUzogcHJvcHMucmVsZWFzZU5vdGVzRmlsZU5hbWUgfHwgJy4vUkVMRUFTRV9OT1RFUy5tZCcsXG4gICAgICAgIFNJR05JTkdfS0VZX0FSTjogcHJvcHMuc2lnbmluZ0tleS5jcmVkZW50aWFsLnNlY3JldEFybixcbiAgICAgICAgR0lUSFVCX09XTkVSOiBwcm9wcy5naXRodWJSZXBvLm93bmVyLFxuICAgICAgICBHSVRIVUJfUkVQTzogcHJvcHMuZ2l0aHViUmVwby5yZXBvLFxuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgICAgLy8gVHJhbnNtaXQgdGhlIG5hbWVzIG9mIHRoZSBzZWNvbmRhcnkgc291cmNlcyB0byB0aGUgc2hlbGwgc2NyaXB0IChmb3IgZWFzaWVyIGl0ZXJhdGlvbilcbiAgICAgICAgU0VDT05EQVJZX1NPVVJDRV9OQU1FUzogcHJvcHMuYWRkaXRpb25hbElucHV0QXJ0aWZhY3RzID8gcHJvcHMuYWRkaXRpb25hbElucHV0QXJ0aWZhY3RzLm1hcChhID0+IGEuYXJ0aWZhY3ROYW1lKS5qb2luKCcgJykgOiB1bmRlZmluZWQsXG4gICAgICAgIFNJR05fQURESVRJT05BTF9BUlRJRkFDVFM6IHByb3BzLmFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cyAmJiBwcm9wcy5zaWduQWRkaXRpb25hbEFydGlmYWN0cyAhPT0gZmFsc2UgPyAndHJ1ZScgOiB1bmRlZmluZWQsXG4gICAgICAgIFNTTV9QUkVGSVg6IHByb3BzLnNzbVByZWZpeCxcbiAgICAgIH0pLFxuICAgICAgZW52aXJvbm1lbnRTZWNyZXRzOiB7XG4gICAgICAgIEdJVEhVQl9UT0tFTjogcHJvcHMuZ2l0aHViUmVwby50b2tlblNlY3JldEFybixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBhbGxvdyBzY3JpcHQgdG8gcmVhZCB0aGUgc2lnbmluZyBrZXlcbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHByb3BzLnNpZ25pbmdLZXkuZ3JhbnRSZWFkKHNoZWxsYWJsZS5yb2xlKTtcbiAgICB9XG5cbiAgICBncmFudFNzbVByZWZpeChzaGVsbGFibGUucm9sZSwgcHJvcHMuc3NtUHJlZml4KTtcbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBleHRyYUlucHV0czogdGhpcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHMsXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9TM1Byb3BzIHtcbiAgYnVja2V0OiBzMy5JQnVja2V0O1xuXG4gIC8qKlxuICAgKiBNYWtlIGZpbGVzIHB1YmxpY2x5IHJlYWRhYmxlXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwdWJsaWM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgKGRlZmF1bHQpIHdpbGwgb25seSBwZXJmb3JtIGEgZHJ5LXJ1biBidXQgd2lsbCBub3QgYWN0dWFsbHkgcHVibGlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGVzY3JpcHRpb24gZm9yIHRoZSBDb2RlQnVpbGQgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFB1Ymxpc2hUb1MzIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb1MzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgZm9yUmVhbCA9IHByb3BzLmRyeVJ1biA9PT0gdW5kZWZpbmVkID8gJ2ZhbHNlJyA6ICghcHJvcHMuZHJ5UnVuKS50b1N0cmluZygpO1xuXG4gICAgY29uc3Qgc2hlbGxhYmxlID0gbmV3IFNoZWxsYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHBsYXRmb3JtOiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzdfMCksXG4gICAgICBzY3JpcHREaXJlY3Rvcnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdwdWJsaXNoaW5nJywgJ3MzJyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudDogbm9VbmRlZmluZWQoe1xuICAgICAgICBCVUNLRVRfVVJMOiBgczM6Ly8ke3Byb3BzLmJ1Y2tldC5idWNrZXROYW1lfWAsXG4gICAgICAgIENIQU5HRUxPRzogcHJvcHMucHVibGljID8gJ3RydWUnIDogJ2ZhbHNlJyxcbiAgICAgICAgRk9SX1JFQUw6IGZvclJlYWwsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIC8vIEFsbG93IHNjcmlwdCB0byB3cml0ZSB0byBidWNrZXRcbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHByb3BzLmJ1Y2tldC5ncmFudFJlYWRXcml0ZShzaGVsbGFibGUucm9sZSk7XG4gICAgfVxuXG4gICAgdGhpcy5yb2xlID0gc2hlbGxhYmxlLnJvbGU7XG4gICAgdGhpcy5wcm9qZWN0ID0gc2hlbGxhYmxlLnByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkVG9QaXBlbGluZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBpZCxcbiAgICAgIGlucHV0OiBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgpLFxuICAgICAgcnVuT3JkZXI6IG9wdGlvbnMucnVuT3JkZXIsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGlzaFRvUHlQaVByb3BzIHtcbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhlIHNlY3JldCB0aGF0IGNvbnRhaW5zIHRoZSBQeVBJIGNyZWRlbnRpYWxzIHVuZGVyXG4gICAqIFwidXNlcm5hbWVcIiBhbmQgXCJwYXNzd29yZFwiIGtleXMuXG4gICAqL1xuICBsb2dpblNlY3JldDogcGVybWlzc2lvbnMuRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCAoZGVmYXVsdCkgd2lsbCBvbmx5IHBlcmZvcm0gYSBkcnktcnVuIGJ1dCB3aWxsIG5vdCBhY3R1YWxseSBwdWJsaXNoLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IHVuZGVyIHdoaWNoIHRvIHJlY29yZCB0aGUgZmFjdCB0aGF0IHRoZSBwdWJsaXNoIHN0ZXAgZXhlY3V0ZWRcbiAgICpcbiAgICogVGhpcyB3aWxsIHdyaXRlIGA8cHJlZml4Pi92ZXJzaW9uYCBhbmQgYDxwcmVmaXg+L3RpbWVzdGFtcGAgdmFyaWFibGVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gU1NNIHBhcmFtZXRlcnNcbiAgICovXG4gIHNzbVByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogRGVzY3JpcHRpb24gZm9yIHRoZSBDb2RlQnVpbGQgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFB1Ymxpc2hUb1B5UGkgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvUHlQaVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGZvclJlYWwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdweXBpJyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudDogbm9VbmRlZmluZWQoe1xuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgICAgUFlQSV9DUkVERU5USUFMU19TRUNSRVRfSUQ6IHByb3BzLmxvZ2luU2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgU1NNX1BSRUZJWDogcHJvcHMuc3NtUHJlZml4LFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChwcm9wcy5sb2dpblNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIGdyYW50U3NtUHJlZml4KHNoZWxsYWJsZS5yb2xlLCBwcm9wcy5zc21QcmVmaXgpO1xuXG4gICAgdGhpcy5yb2xlID0gc2hlbGxhYmxlLnJvbGU7XG4gICAgdGhpcy5wcm9qZWN0ID0gc2hlbGxhYmxlLnByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkVG9QaXBlbGluZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBpZCxcbiAgICAgIGlucHV0OiBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgpLFxuICAgICAgcnVuT3JkZXI6IG9wdGlvbnMucnVuT3JkZXIsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfSkpO1xuICB9XG59XG5cbi8qKlxuICogUHJvcHMgZm9yIEdvIHB1Ymxpc2hpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGlzaFRvR29sYW5nUHJvcHMge1xuICAvKipcbiAgICogSWRlbnRpZmllciBvZiB0aGUgc2VjcmV0IHRoYXQgY29udGFpbnMgdGhlIEdpdEh1YiBwZXJzb25hbCBhY2Nlc3MgdG9rZW5cbiAgICogdXNlZCB0byBwdXNoIHRoZSBnbyBjb2RlIHRvIHRoZSBnaXRodWIgcmVwb3NpdG9yeSBkZWZpbmVkIGJ5IGl0J3MgbmFtZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9naXRodWIvYXV0aGVudGljYXRpbmctdG8tZ2l0aHViL2NyZWF0aW5nLWEtcGVyc29uYWwtYWNjZXNzLXRva2VuXG4gICAqL1xuICByZWFkb25seSBnaXRodWJUb2tlblNlY3JldDogcGVybWlzc2lvbnMuRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIFVzZXJuYW1lIHRvIHBlcmZvcm0gdGhlIGNvbW1pdCB3aXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0VXNlck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRW1haWwgdG8gcGVyZm9ybSB0aGUgY29tbWl0IHdpdGguXG4gICAqL1xuICByZWFkb25seSBnaXRVc2VyRW1haWw6IHN0cmluZztcblxuICAvKipcbiAgICogU2V0IHRvIFwidHJ1ZVwiIGZvciBhIGRyeSBydW4uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNb2R1bGUgdmVyc2lvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0cyB0byB0aGUgdmFsdWUgaW4gdGhlICd2ZXJzaW9uJyBmaWxlIG9mIHRoZSBtb2R1bGVcbiAgICogZGlyZWN0b3J5LiBGYWlscyBpZiBpdCBkb2Vzbid0IGV4aXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQnJhbmNoIHRvIHB1c2ggdG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IFwibWFpblwiXG4gICAqL1xuICByZWFkb25seSBnaXRCcmFuY2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb21taXQgbWVzc2FnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJjaG9yZShyZWxlYXNlKTogJFZFUlNJT05cIlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0Q29tbWl0TWVzc2FnZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByZWZpeCB1bmRlciB3aGljaCB0byByZWNvcmQgdGhlIGZhY3QgdGhhdCB0aGUgcHVibGlzaCBzdGVwIGV4ZWN1dGVkXG4gICAqXG4gICAqIFRoaXMgd2lsbCB3cml0ZSBgPHByZWZpeD4vdmVyc2lvbmAgYW5kIGA8cHJlZml4Pi90aW1lc3RhbXBgIHZhcmlhYmxlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIFNTTSBwYXJhbWV0ZXJzXG4gICAqL1xuICBzc21QcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIHByb2plY3RcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHVzaGVzIGEgZGlyZWN0b3J5IG9mIGdvbGFuZyBtb2R1bGVzIHRvIGEgR2l0SHViIHJlcG9zaXRvcnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBQdWJsaXNoVG9Hb2xhbmcgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb0dvbGFuZ1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGRyeVJ1biA9IHByb3BzLmRyeVJ1biA/PyBmYWxzZTtcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdnb2xhbmcnKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiBub1VuZGVmaW5lZCh7XG4gICAgICAgIERSWVJVTjogZHJ5UnVuID8gJ3RydWUnIDogdW5kZWZpbmVkLFxuICAgICAgICBHSVRIVUJfVE9LRU5fU0VDUkVUOiBwcm9wcy5naXRodWJUb2tlblNlY3JldC5zZWNyZXRBcm4sXG4gICAgICAgIFZFUlNJT046IHByb3BzLnZlcnNpb24sXG4gICAgICAgIEdJVF9CUkFOQ0g6IHByb3BzLmdpdEJyYW5jaCxcbiAgICAgICAgR0lUX1VTRVJfTkFNRTogcHJvcHMuZ2l0VXNlck5hbWUsXG4gICAgICAgIEdJVF9VU0VSX0VNQUlMOiBwcm9wcy5naXRVc2VyRW1haWwsXG4gICAgICAgIEdJVF9DT01NSVRfTUVTU0FHRTogcHJvcHMuZ2l0Q29tbWl0TWVzc2FnZSxcbiAgICAgICAgU1NNX1BSRUZJWDogcHJvcHMuc3NtUHJlZml4LFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChwcm9wcy5naXRodWJUb2tlblNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIGdyYW50U3NtUHJlZml4KHNoZWxsYWJsZS5yb2xlLCBwcm9wcy5zc21QcmVmaXgpO1xuXG4gICAgdGhpcy5yb2xlID0gc2hlbGxhYmxlLnJvbGU7XG4gICAgdGhpcy5wcm9qZWN0ID0gc2hlbGxhYmxlLnByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkVG9QaXBlbGluZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBpZCxcbiAgICAgIGlucHV0OiBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgpLFxuICAgICAgcnVuT3JkZXI6IG9wdGlvbnMucnVuT3JkZXIsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdyYW50U3NtUHJlZml4KHJvbGU6IGlhbS5JUm9sZSwgc3NtUHJlZml4Pzogc3RyaW5nKSB7XG4gIGlmIChzc21QcmVmaXgpIHtcbiAgICBpZiAoIXNzbVByZWZpeC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU1NNIHByZWZpeCBzaG91bGQgc3RhcnQgd2l0aCAnLycsIGdvdDogJHtzc21QcmVmaXh9YCk7XG4gICAgfVxuICAgIGlmIChzc21QcmVmaXguZW5kc1dpdGgoJy8nKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTU00gcHJlZml4IG11c3Qgbm90IGVuZCB3aXRoICcvJywgZ290OiAke3NzbVByZWZpeH1gKTtcbiAgICB9XG5cbiAgICByb2xlPy5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbJ3NzbTpQdXRQYXJhbWV0ZXInLCAnc3NtOkdldFBhcmFtZXRlciddLFxuICAgICAgcmVzb3VyY2VzOiBbU3RhY2sub2Yocm9sZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ3NzbScsXG4gICAgICAgIHJlc291cmNlOiAncGFyYW1ldGVyJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBgJHtzc21QcmVmaXguc2xpY2UoMSl9LypgLFxuICAgICAgfSldLFxuICAgIH0pKTtcbiAgfVxufSJdfQ==
|
395
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInB1Ymxpc2hpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsNkNBT3FCO0FBQ3JCLDJDQUF1QztBQUV2QywyQ0FBdUQ7QUFFdkQsMkRBQTZDO0FBRzdDLDJDQUF1RDtBQUN2RCxpQ0FBcUM7QUFFckM7O0dBRUc7QUFDSCxJQUFZLFNBVVg7QUFWRCxXQUFZLFNBQVM7SUFDbkI7O09BRUc7SUFDSCw4QkFBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILHNDQUF5QixDQUFBO0FBQzNCLENBQUMsRUFWVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQVVwQjtBQXlERDs7R0FFRztBQUNILE1BQWEscUJBQXNCLFNBQVEsc0JBQVM7SUFJbEQsWUFBWSxNQUFpQixFQUFFLEVBQVUsRUFBRSxLQUFpQztRQUMxRSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFbEYsTUFBTSxTQUFTLEdBQUcsSUFBSSxxQkFBUyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDL0MsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFFBQVEsRUFBRSxJQUFJLHlCQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSwyQkFBTSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxvQ0FBd0IsQ0FBQyxDQUFDO1lBQ3BILGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDO1lBQzVELFVBQVUsRUFBRSxZQUFZO1lBQ3hC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a0JBQWtCLEVBQUUsa0JBQWtCLENBQUM7WUFDakQsU0FBUyxFQUFFLENBQUMsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO29CQUNuQyxPQUFPLEVBQUUsS0FBSztvQkFDZCxRQUFRLEVBQUUsV0FBVztvQkFDckIsWUFBWSxFQUFFLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtpQkFDeEMsQ0FBQyxDQUFDO1NBQ0osQ0FBQyxDQUFDLENBQUM7S0FDTDtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcbiAgU3RhY2ssXG4gIGF3c19jb2RlYnVpbGQgYXMgY2J1aWxkLFxuICBhd3NfY29kZXBpcGVsaW5lIGFzIGNwaXBlbGluZSxcbiAgYXdzX2NvZGVwaXBlbGluZV9hY3Rpb25zIGFzIGNwaXBlbGluZV9hY3Rpb25zLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX3MzIGFzIHMzLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElDb2RlU2lnbmluZ0NlcnRpZmljYXRlIH0gZnJvbSAnLi9jb2RlLXNpZ25pbmcnO1xuaW1wb3J0IHsgREVGQVVMVF9TVVBFUkNIQUlOX0lNQUdFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgT3BlblBHUEtleVBhaXIgfSBmcm9tICcuL29wZW4tcGdwLWtleS1wYWlyJztcbmltcG9ydCAqIGFzIHBlcm1pc3Npb25zIGZyb20gJy4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgQWRkVG9QaXBlbGluZU9wdGlvbnMsIElQdWJsaXNoZXIgfSBmcm9tICcuL3BpcGVsaW5lJztcbmltcG9ydCB7IFdyaXRhYmxlR2l0SHViUmVwbyB9IGZyb20gJy4vcmVwbyc7XG5pbXBvcnQgeyBMaW51eFBsYXRmb3JtLCBTaGVsbGFibGUgfSBmcm9tICcuL3NoZWxsYWJsZSc7XG5pbXBvcnQgeyBub1VuZGVmaW5lZCB9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogVHlwZSBvZiBhY2Nlc3MgcGVybWlzc2lvbnMgdG8gcmVxdWVzdCBmcm9tIG5wbWpzLlxuICovXG5leHBvcnQgZW51bSBOcG1BY2Nlc3Mge1xuICAvKipcbiAgICogTm8gYWNjZXNzIHJlc3RyaWN0aW9uLiBOb3RlIHRoYXQgdW5zY29wZWQgcGFja2FnZXMgbXVzdCBhbHdheXMgYmUgcHVibGljLlxuICAgKi9cbiAgUFVCTElDID0gJ3B1YmxpYycsXG5cbiAgLyoqXG4gICAqIExpbWl0IGFjY2VzcyB0byB3aGl0ZWxpc3RlZCBucG1qcyB1c2Vycy5cbiAgICovXG4gIFJFU1RSSUNURUQgPSAncmVzdHJpY3RlZCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGlzaFRvTWF2ZW5Qcm9qZWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIHNpZ25pbmcga2V5IGl0c2VsZlxuICAgKi9cbiAgc2lnbmluZ0tleTogT3BlblBHUEtleVBhaXI7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgc29uYXR5cGUgc3RhZ2luZyBwcm9maWxlIChlLmcuIFwiNjhhMDUzNjMwODMxNzRcIikuXG4gICAqL1xuICBzdGFnaW5nUHJvZmlsZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhlIHNlY3JldCB0aGF0IGNvbnRhaW5zIHRoZSBNYXZlbiBsb2dpblxuICAgKi9cbiAgbWF2ZW5Mb2dpblNlY3JldDogcGVybWlzc2lvbnMuRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIElmIHRydWUgKGRlZmF1bHQpIHBlcmZvcm1zIGEgZHJ5LXJ1biBvbmx5IGluc3RlYWQgb2YgYWN0dWFsbHkgcHVibGlzaGluZy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIE1hdmVuIHB1Ymxpc2hpbmcgZW5kcG9pbnQgdG8gYmUgdXNlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJodHRwczovL29zcy5zb25hdHlwZS5vcmdcIlxuICAgKi9cbiAgbWF2ZW5FbmRwb2ludD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGJ1aWxkIGltYWdlIHRvIGRvIHRoZSBwdWJsaXNoaW5nIGluXG4gICAqXG4gICAqIE5lZWRzIHRvIGhhdmUgTWF2ZW4gcHJlaW5zdGFsbGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBMYXRlc3Qgc3VwZXJjaGFpblxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRJbWFnZT86IGNidWlsZC5JQnVpbGRJbWFnZTtcblxuICAvKipcbiAgICogVGhlIHByZWZpeCB1bmRlciB3aGljaCB0byByZWNvcmQgdGhlIGZhY3QgdGhhdCB0aGUgcHVibGlzaCBzdGVwIGV4ZWN1dGVkXG4gICAqXG4gICAqIFRoaXMgd2lsbCB3cml0ZSBgPHByZWZpeD4vdmVyc2lvbmAgYW5kIGA8cHJlZml4Pi90aW1lc3RhbXBgIHZhcmlhYmxlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIFNTTSBwYXJhbWV0ZXJzXG4gICAqL1xuICBzc21QcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIHByb2plY3RcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29kZUJ1aWxkIHByb2plY3QgdGhhdCB3aWxsIHB1Ymxpc2ggYWxsIHBhY2thZ2VzIGluIGEgcmVsZWFzZSBidW5kbGUgdG8gTWF2ZW5cbiAqL1xuZXhwb3J0IGNsYXNzIFB1Ymxpc2hUb01hdmVuUHJvamVjdCBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElQdWJsaXNoZXIge1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQdWJsaXNoVG9NYXZlblByb2plY3RQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQpO1xuXG4gICAgY29uc3QgZm9yUmVhbCA9IHByb3BzLmRyeVJ1biA9PT0gdW5kZWZpbmVkID8gJ2ZhbHNlJyA6ICghcHJvcHMuZHJ5UnVuKS50b1N0cmluZygpO1xuXG4gICAgY29uc3Qgc2hlbGxhYmxlID0gbmV3IFNoZWxsYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHBsYXRmb3JtOiBuZXcgTGludXhQbGF0Zm9ybShwcm9wcy5idWlsZEltYWdlID8/IGNidWlsZC5MaW51eEJ1aWxkSW1hZ2UuZnJvbURvY2tlclJlZ2lzdHJ5KERFRkFVTFRfU1VQRVJDSEFJTl9JTUFHRSkpLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdtYXZlbicpLFxuICAgICAgZW50cnlwb2ludDogJ3B1Ymxpc2guc2gnLFxuICAgICAgZW52aXJvbm1lbnQ6IG5vVW5kZWZpbmVkKHtcbiAgICAgICAgU1RBR0lOR19QUk9GSUxFX0lEOiBwcm9wcy5zdGFnaW5nUHJvZmlsZUlkLFxuICAgICAgICBTSUdOSU5HX0tFWV9BUk46IHByb3BzLnNpZ25pbmdLZXkuY3JlZGVudGlhbC5zZWNyZXRBcm4sXG4gICAgICAgIEZPUl9SRUFMOiBmb3JSZWFsLFxuICAgICAgICBNQVZFTl9MT0dJTl9TRUNSRVQ6IHByb3BzLm1hdmVuTG9naW5TZWNyZXQuc2VjcmV0QXJuLFxuICAgICAgICBNQVZFTl9FTkRQT0lOVDogcHJvcHMubWF2ZW5FbmRwb2ludCB8fCAnaHR0cHM6Ly9vc3Muc29uYXR5cGUub3JnJyxcbiAgICAgICAgU1NNX1BSRUZJWDogcHJvcHMuc3NtUHJlZml4LFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChwcm9wcy5tYXZlbkxvZ2luU2VjcmV0LCBzaGVsbGFibGUucm9sZSk7XG4gICAgICBwcm9wcy5zaWduaW5nS2V5LmdyYW50UmVhZChzaGVsbGFibGUucm9sZSk7XG4gICAgfVxuICAgIGdyYW50U3NtUHJlZml4KHNoZWxsYWJsZS5yb2xlLCBwcm9wcy5zc21QcmVmaXgpO1xuXG4gICAgdGhpcy5yb2xlID0gc2hlbGxhYmxlLnJvbGU7XG4gICAgdGhpcy5wcm9qZWN0ID0gc2hlbGxhYmxlLnByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkVG9QaXBlbGluZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBpZCxcbiAgICAgIGlucHV0OiBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgpLFxuICAgICAgcnVuT3JkZXI6IG9wdGlvbnMucnVuT3JkZXIsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGlzaFRvTnBtUHJvamVjdFByb3BzIHtcbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhlIHNlY3JldCB0aGF0IGNvbnRhaW5zIHRoZSBOUE0gdG9rZW5cbiAgICovXG4gIG5wbVRva2VuU2VjcmV0OiBwZXJtaXNzaW9ucy5FeHRlcm5hbFNlY3JldDtcblxuICAvKipcbiAgICogSWYgYHRydWVgIChkZWZhdWx0KSB3aWxsIG9ubHkgcGVyZm9ybSBhIGRyeS1ydW4gYnV0IHdpbGwgbm90IGFjdHVhbGx5IHB1Ymxpc2guXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIG5wbSBkaXN0LXRhZyB0byB1c2Ugd2hlbiBwdWJsaXNoaW5nIGFydGlmYWN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBucG0gZGVmYXVsdCBiZWhhdmlvciAoXCJsYXRlc3RcIiB1bmxlc3MgZGlzdCB0YWcgaXMgc3BlY2lmaWVkIGluIHBhY2thZ2UuanNvbilcbiAgICovXG4gIGRpc3RUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIG5wbSAtLWFjY2VzcyBwdWJsaWN8cmVzdHJpY3RlZFxuICAgKlxuICAgKiBTZWUgaHR0cHM6Ly9kb2NzLm5wbWpzLmNvbS9jbGktY29tbWFuZHMvcHVibGlzaCM6fjp0ZXh0PVRlbGxzJTIwdGhlXG4gICAqXG4gICAqIFRlbGxzIHRoZSByZWdpc3RyeSB3aGV0aGVyIHRoaXMgcGFja2FnZSBzaG91bGQgYmUgcHVibGlzaGVkIGFzIHB1YmxpYyBvciByZXN0cmljdGVkLlxuICAgKiBPbmx5IGFwcGxpZXMgdG8gc2NvcGVkIHBhY2thZ2VzLCB3aGljaCBkZWZhdWx0IHRvIHJlc3RyaWN0ZWQuXG4gICAqIElmIHlvdSBkb27igJl0IGhhdmUgYSBwYWlkIGFjY291bnQsIHlvdSBtdXN0IHB1Ymxpc2ggd2l0aCAtLWFjY2VzcyBwdWJsaWMgdG8gcHVibGlzaCBzY29wZWQgcGFja2FnZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5wbUFjY2Vzcy5QVUJMSUNcbiAgICovXG4gIGFjY2Vzcz86IE5wbUFjY2VzcztcblxuICAvKipcbiAgICogVGhlIHByZWZpeCB1bmRlciB3aGljaCB0byByZWNvcmQgdGhlIGZhY3QgdGhhdCB0aGUgcHVibGlzaCBzdGVwIGV4ZWN1dGVkXG4gICAqXG4gICAqIFRoaXMgd2lsbCB3cml0ZSBgPHByZWZpeD4vdmVyc2lvbmAgYW5kIGA8cHJlZml4Pi90aW1lc3RhbXBgIHZhcmlhYmxlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIFNTTSBwYXJhbWV0ZXJzXG4gICAqL1xuICBzc21QcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIHByb2plY3RcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29kZUJ1aWxkIHByb2plY3QgdGhhdCB3aWxsIHB1Ymxpc2ggYWxsIHBhY2thZ2VzIGluIGEgcmVsZWFzZSBidW5kbGUgdG8gTlBNXG4gKi9cbmV4cG9ydCBjbGFzcyBQdWJsaXNoVG9OcG1Qcm9qZWN0IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQdWJsaXNoVG9OcG1Qcm9qZWN0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGZvclJlYWwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IGFjY2VzcyA9IHByb3BzLmFjY2VzcyA/PyBOcG1BY2Nlc3MuUFVCTElDO1xuXG4gICAgY29uc3Qgc2hlbGxhYmxlID0gbmV3IFNoZWxsYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHBsYXRmb3JtOiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzdfMCksXG4gICAgICBzY3JpcHREaXJlY3Rvcnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdwdWJsaXNoaW5nJywgJ25wbScpLFxuICAgICAgZW50cnlwb2ludDogJ3B1Ymxpc2guc2gnLFxuICAgICAgZW52aXJvbm1lbnQ6IG5vVW5kZWZpbmVkKHtcbiAgICAgICAgRk9SX1JFQUw6IGZvclJlYWwsXG4gICAgICAgIE5QTV9UT0tFTl9TRUNSRVQ6IHByb3BzLm5wbVRva2VuU2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgRElTVFRBRzogcHJvcHMuZGlzdFRhZyB8fCAnJyxcbiAgICAgICAgQUNDRVNTOiBhY2Nlc3MsXG4gICAgICAgIFNTTV9QUkVGSVg6IHByb3BzLnNzbVByZWZpeCxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgaWYgKHNoZWxsYWJsZS5yb2xlKSB7XG4gICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQocHJvcHMubnBtVG9rZW5TZWNyZXQsIHNoZWxsYWJsZS5yb2xlKTtcbiAgICB9XG5cbiAgICBncmFudFNzbVByZWZpeChzaGVsbGFibGUucm9sZSwgcHJvcHMuc3NtUHJlZml4KTtcblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hUb051R2V0UHJvamVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBTZWNyZXRzTWFuYWdlciBzZWNyZXQgd2hpY2ggc3RvcmVzIHRoZSBOdWdldCBBUEkga2V5LlxuICAgKi9cbiAgbnVnZXRBcGlLZXlTZWNyZXQ6IHBlcm1pc3Npb25zLkV4dGVybmFsU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgKGRlZmF1bHQpIHdpbGwgb25seSBwZXJmb3JtIGEgZHJ5LXJ1biBidXQgd2lsbCBub3QgYWN0dWFsbHkgcHVibGlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBjb2RlIHNpZ25pbmcgY2VydGlmaWNhdGUgdG8gdXNlIHRvIHNpZ24gYXNzZW1ibGllcy5cbiAgICogQGRlZmF1bHQgTm8gc2lnbmluZ1xuICAgKi9cbiAgY29kZVNpZ24/OiBJQ29kZVNpZ25pbmdDZXJ0aWZpY2F0ZTtcblxuICAvKipcbiAgICogVGhlIGJ1aWxkIGltYWdlIHRvIGRvIHRoZSBwdWJsaXNoaW5nIGluXG4gICAqXG4gICAqIE5lZWRzIHRvIGhhdmUgTnVHZXQgcHJlaW5zdGFsbGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBMYXRlc3Qgc3VwZXJjaGFpblxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRJbWFnZT86IGNidWlsZC5JQnVpbGRJbWFnZTtcblxuICAvKipcbiAgICogVGhlIHByZWZpeCB1bmRlciB3aGljaCB0byByZWNvcmQgdGhlIGZhY3QgdGhhdCB0aGUgcHVibGlzaCBzdGVwIGV4ZWN1dGVkXG4gICAqXG4gICAqIFRoaXMgd2lsbCB3cml0ZSBgPHByZWZpeD4vdmVyc2lvbmAgYW5kIGA8cHJlZml4Pi90aW1lc3RhbXBgIHZhcmlhYmxlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIFNTTSBwYXJhbWV0ZXJzXG4gICAqL1xuICBzc21QcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIHByb2plY3RcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29kZUJ1aWxkIHByb2plY3QgdGhhdCB3aWxsIHB1Ymxpc2ggYWxsIHBhY2thZ2VzIGluIGEgcmVsZWFzZSBidW5kbGUgdG8gTnVHZXRcbiAqL1xuZXhwb3J0IGNsYXNzIFB1Ymxpc2hUb051R2V0UHJvamVjdCBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElQdWJsaXNoZXIge1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQdWJsaXNoVG9OdUdldFByb2plY3RQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQpO1xuXG4gICAgY29uc3QgZW52aXJvbm1lbnQ6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcblxuICAgIGVudmlyb25tZW50LkZPUl9SRUFMID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAocHJvcHMubnVnZXRBcGlLZXlTZWNyZXQuYXNzdW1lUm9sZUFybikge1xuICAgICAgZW52aXJvbm1lbnQuTlVHRVRfUk9MRV9BUk4gPSBwcm9wcy5udWdldEFwaUtleVNlY3JldC5hc3N1bWVSb2xlQXJuO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5udWdldEFwaUtleVNlY3JldC5yZWdpb24pIHtcbiAgICAgIGVudmlyb25tZW50Lk5VR0VUX1NFQ1JFVF9SRUdJT04gPSBwcm9wcy5udWdldEFwaUtleVNlY3JldC5yZWdpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIGVudmlyb25tZW50Lk5VR0VUX1NFQ1JFVF9SRUdJT04gPSBTdGFjay5vZih0aGlzKS5yZWdpb247XG4gICAgfVxuXG4gICAgZW52aXJvbm1lbnQuTlVHRVRfU0VDUkVUX0lEID0gcHJvcHMubnVnZXRBcGlLZXlTZWNyZXQuc2VjcmV0QXJuO1xuICAgIGlmIChwcm9wcy5zc21QcmVmaXgpIHtcbiAgICAgIGVudmlyb25tZW50LlNTTV9QUkVGSVggPSBwcm9wcy5zc21QcmVmaXg7XG4gICAgfVxuXG4gICAgY29uc3Qgc2hlbGxhYmxlID0gbmV3IFNoZWxsYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHBsYXRmb3JtOiBuZXcgTGludXhQbGF0Zm9ybShwcm9wcy5idWlsZEltYWdlID8/IGNidWlsZC5MaW51eEJ1aWxkSW1hZ2UuZnJvbURvY2tlclJlZ2lzdHJ5KERFRkFVTFRfU1VQRVJDSEFJTl9JTUFHRSkpLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdudWdldCcpLFxuICAgICAgZW50cnlwb2ludDogJ3B1Ymxpc2guc2gnLFxuICAgICAgZW52aXJvbm1lbnQsXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuY29kZVNpZ24pIHtcbiAgICAgIGVudmlyb25tZW50LkNPREVfU0lHTklOR19TRUNSRVRfSUQgPSBwcm9wcy5jb2RlU2lnbi5jcmVkZW50aWFsLnNlY3JldEFybjtcbiAgICAgIGVudmlyb25tZW50LkNPREVfU0lHTklOR19QQVJBTUVURVJfTkFNRSA9IHByb3BzLmNvZGVTaWduLnByaW5jaXBhbC5wYXJhbWV0ZXJOYW1lO1xuICAgIH1cblxuICAgIGlmIChzaGVsbGFibGUucm9sZSkge1xuICAgICAgaWYgKHByb3BzLm51Z2V0QXBpS2V5U2VjcmV0LmFzc3VtZVJvbGVBcm4pIHtcbiAgICAgICAgcGVybWlzc2lvbnMuZ3JhbnRBc3N1bWVSb2xlKHByb3BzLm51Z2V0QXBpS2V5U2VjcmV0LmFzc3VtZVJvbGVBcm4sIHNoZWxsYWJsZS5yb2xlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChwcm9wcy5udWdldEFwaUtleVNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcHMuY29kZVNpZ24pIHtcbiAgICAgICAgcHJvcHMuY29kZVNpZ24uZ3JhbnREZWNyeXB0KHNoZWxsYWJsZS5yb2xlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBncmFudFNzbVByZWZpeChzaGVsbGFibGUucm9sZSwgcHJvcHMuc3NtUHJlZml4KTtcblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hEb2NzVG9HaXRIdWJQcm9qZWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgdG8gcHVibGlzaCB0b1xuICAgKi9cbiAgZ2l0aHViUmVwbzogV3JpdGFibGVHaXRIdWJSZXBvO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgKGRlZmF1bHQpIHdpbGwgb25seSBwZXJmb3JtIGEgZHJ5LXJ1biBidXQgd2lsbCBub3QgYWN0dWFsbHkgcHVibGlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGJ1aWxkIG1hbmlmZXN0IEpTT04gZmlsZSAobXVzdCBpbmNsdWRlIFwibmFtZVwiIGFuZCBcInZlcnNpb25cIiBmaWVsZHMpLlxuICAgKiBSZWxhdGl2ZSB0byB0aGUgYXJ0aWZhY3RzIHJvb3QuXG4gICAqIEBkZWZhdWx0IFwiLi9idWlsZC5qc29uXCJcbiAgICovXG4gIGJ1aWxkTWFuaWZlc3RGaWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogR2l0SHViIFBhZ2VzIGJyYW5jaCB0byBwdXNoIHRvLlxuICAgKiBAZGVmYXVsdCBnaC1wYWdlc1xuICAgKi9cbiAgYnJhbmNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IHVuZGVyIHdoaWNoIHRvIHJlY29yZCB0aGUgZmFjdCB0aGF0IHRoZSBwdWJsaXNoIHN0ZXAgZXhlY3V0ZWRcbiAgICpcbiAgICogVGhpcyB3aWxsIHdyaXRlIGA8cHJlZml4Pi92ZXJzaW9uYCBhbmQgYDxwcmVmaXg+L3RpbWVzdGFtcGAgdmFyaWFibGVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gU1NNIHBhcmFtZXRlcnNcbiAgICovXG4gIHNzbVByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogRGVzY3JpcHRpb24gZm9yIHRoZSBDb2RlQnVpbGQgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb2RlQnVpbGQgcHJvamVjdCB0aGF0IHdpbGwgcHVibGlzaCBhbGwgcGFja2FnZXMgaW4gYSByZWxlYXNlIGJ1bmRsZSB0byBOdUdldFxuICovXG5leHBvcnQgY2xhc3MgUHVibGlzaERvY3NUb0dpdEh1YlByb2plY3QgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUHVibGlzaGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaERvY3NUb0dpdEh1YlByb2plY3RQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQpO1xuXG4gICAgY29uc3QgZm9yUmVhbCA9IHByb3BzLmRyeVJ1biA9PT0gdW5kZWZpbmVkID8gJ2ZhbHNlJyA6ICghcHJvcHMuZHJ5UnVuKS50b1N0cmluZygpO1xuXG4gICAgY29uc3Qgc2hlbGxhYmxlID0gbmV3IFNoZWxsYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHBsYXRmb3JtOiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzdfMCksXG4gICAgICBzY3JpcHREaXJlY3Rvcnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdwdWJsaXNoaW5nJywgJ2RvY3MnKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiBub1VuZGVmaW5lZCh7XG4gICAgICAgIC8vIE11c3QgYmUgU1NIIGJlY2F1c2Ugd2UgdXNlIGFuIFNTSCBrZXkgdG8gYXV0aGVudGljYXRlXG4gICAgICAgIEdJVEhVQl9SRVBPOiBwcm9wcy5naXRodWJSZXBvLnJlcG9zaXRvcnlVcmxTc2gsXG4gICAgICAgIEdJVEhVQl9QQUdFU19CUkFOQ0g6IHByb3BzLmJyYW5jaCB8fCAnZ2gtcGFnZXMnLFxuICAgICAgICBTU0hfS0VZX1NFQ1JFVDogcHJvcHMuZ2l0aHViUmVwby5zc2hLZXlTZWNyZXQuc2VjcmV0QXJuLFxuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgICAgQ09NTUlUX1VTRVJOQU1FOiBwcm9wcy5naXRodWJSZXBvLmNvbW1pdFVzZXJuYW1lLFxuICAgICAgICBDT01NSVRfRU1BSUw6IHByb3BzLmdpdGh1YlJlcG8uY29tbWl0RW1haWwsXG4gICAgICAgIEJVSUxEX01BTklGRVNUOiBwcm9wcy5idWlsZE1hbmlmZXN0RmlsZU5hbWUgfHwgJy4vYnVpbGQuanNvbicsXG4gICAgICAgIFNTTV9QUkVGSVg6IHByb3BzLnNzbVByZWZpeCxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgaWYgKHNoZWxsYWJsZS5yb2xlKSB7XG4gICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQocHJvcHMuZ2l0aHViUmVwby5zc2hLZXlTZWNyZXQsIHNoZWxsYWJsZS5yb2xlKTtcbiAgICB9XG5cbiAgICBncmFudFNzbVByZWZpeChzaGVsbGFibGUucm9sZSwgcHJvcHMuc3NtUHJlZml4KTtcblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hUb0dpdEh1YlByb3BzIHtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCAoZGVmYXVsdCkgd2lsbCBvbmx5IHBlcmZvcm0gYSBkcnktcnVuIGJ1dCB3aWxsIG5vdCBhY3R1YWxseSBwdWJsaXNoLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVwb3NpdG9yeSB0byBjcmVhdGUgYSByZWxlYXNlIGluLlxuICAgKi9cbiAgZ2l0aHViUmVwbzogV3JpdGFibGVHaXRIdWJSZXBvO1xuXG4gIC8qKlxuICAgKiBUaGUgc2lnbmlnbiBrZXkgdG8gdXNlIHRvIGNyZWF0ZSBhIEdQRyBzaWduYXR1cmUgb2YgdGhlIGFydGlmYWN0LlxuICAgKi9cbiAgc2lnbmluZ0tleTogT3BlblBHUEtleVBhaXI7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBidWlsZCBtYW5pZmVzdCBKU09OIGZpbGUgKG11c3QgaW5jbHVkZSBcIm5hbWVcIiBhbmQgXCJ2ZXJzaW9uXCIgZmllbGRzKS5cbiAgICogUmVsYXRpdmUgdG8gdGhlIGFydGlmYWN0cyByb290LlxuICAgKiBAZGVmYXVsdCBcIi4vYnVpbGQuanNvblwiXG4gICAqL1xuICBidWlsZE1hbmlmZXN0RmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjaGFuZ2Vsb2cgbWFya2Rvd24gZmlsZSwgdXNlZCB0byBjcmVhdGUgcmVsZWFzZSBub3Rlcy5cbiAgICogUmVsYXRpdmUgdG8gdGhlIGFydGlmYWN0cyByb290LlxuICAgKiBAZGVmYXVsdCBcIi4vQ0hBTkdFTE9HLm1kXCJcbiAgICovXG4gIGNoYW5nZWxvZ0ZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcmVsZWFzZSBub3RlcyBmaWxlLCBjb250YWluaW5nIHRoZSBjb21wbGV0ZWQgcmVsZWFzZSBub3Rlc1xuICAgKiBmb3IgdGhlIGN1cnJlbnQgcmVsZWFzZS5cbiAgICogUmVsYXRpdmUgdG8gdGhlIGFydGlmYWN0cyByb290LlxuICAgKiBOT1RFIC0gSWYgdGhpcyB2YWx1ZSBpcyBzZXQgYW5kIHBvaW50cyB0byBhIHZhbGlkIGZpbGUsIHRoZSBmaWxlIGluIGl0cyBlbnRpcmV0eVxuICAgKiB3aWxsIGJlIHJlYWQgYW5kIHVzZWQgZm9yIHRoZSByZWxlYXNlIG5vdGVzLiBUaGUgdmFsdWUgb2YgYGNoYW5nZWxvZ0ZpbGVOYW1lYCB3aWxsXG4gICAqIGJlIGlnbm9yZWQuXG4gICAqIEBkZWZhdWx0IFwiLi9SRUxFQVNFX05PVEVTLm1kXCJcbiAgICovXG4gIHJlbGVhc2VOb3Rlc0ZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGlucHV0IGFydGlmYWN0cyB0byBwdWJsaXNoIGJpbmFyaWVzIGZyb20gdG8gR2l0SHViIHJlbGVhc2VcbiAgICovXG4gIGFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cz86IGNwaXBlbGluZS5BcnRpZmFjdFtdO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNpZ24gdGhlIGFkZGl0aW9uYWwgYXJ0aWZhY3RzXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHNpZ25BZGRpdGlvbmFsQXJ0aWZhY3RzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHByZWZpeCB1bmRlciB3aGljaCB0byByZWNvcmQgdGhlIGZhY3QgdGhhdCB0aGUgcHVibGlzaCBzdGVwIGV4ZWN1dGVkXG4gICAqXG4gICAqIFRoaXMgd2lsbCB3cml0ZSBgPHByZWZpeD4vdmVyc2lvbmAgYW5kIGA8cHJlZml4Pi90aW1lc3RhbXBgIHZhcmlhYmxlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIFNTTSBwYXJhbWV0ZXJzXG4gICAqL1xuICBzc21QcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIHByb2plY3RcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBQdWJsaXNoVG9HaXRIdWIgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUHVibGlzaGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuICBwcml2YXRlIHJlYWRvbmx5IGFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cz86IGNwaXBlbGluZS5BcnRpZmFjdFtdO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvR2l0SHViUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGZvclJlYWwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcbiAgICB0aGlzLmFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cyA9IHByb3BzLmFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cztcblxuICAgIC8vIFRoZSByZWxlYXNlIG5vdGVzLCBpZiBzZXQgYW5kIGEgdmFsaWQgZmlsZSwgb3ZlcnJpZGVzIGFueSB1c2FnZXMgb2YgdGhlIGNoYW5nZWxvZy5cbiAgICBpZiAocHJvcHMuY2hhbmdlbG9nRmlsZU5hbWUgJiYgcHJvcHMucmVsZWFzZU5vdGVzRmlsZU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYm90aCBgcmVsZWFzZU5vdGVzRmlsZU5hbWVgIGFuZCBgY2hhbmdlbG9nRmlsZU5hbWVgIGNhbm5vdCBiZSBzcGVjaWZpZWQ7IHVzZSBvbmUgb3IgdGhlIG90aGVyJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2hlbGxhYmxlID0gbmV3IFNoZWxsYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHBsYXRmb3JtOiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzdfMCksXG4gICAgICBzY3JpcHREaXJlY3Rvcnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdwdWJsaXNoaW5nJywgJ2dpdGh1YicpLFxuICAgICAgZW50cnlwb2ludDogJ3B1Ymxpc2guc2gnLFxuICAgICAgZW52aXJvbm1lbnQ6IG5vVW5kZWZpbmVkKHtcbiAgICAgICAgQlVJTERfTUFOSUZFU1Q6IHByb3BzLmJ1aWxkTWFuaWZlc3RGaWxlTmFtZSB8fCAnLi9idWlsZC5qc29uJyxcbiAgICAgICAgQ0hBTkdFTE9HOiBwcm9wcy5jaGFuZ2Vsb2dGaWxlTmFtZSB8fCAnLi9DSEFOR0VMT0cubWQnLFxuICAgICAgICBSRUxFQVNFX05PVEVTOiBwcm9wcy5yZWxlYXNlTm90ZXNGaWxlTmFtZSB8fCAnLi9SRUxFQVNFX05PVEVTLm1kJyxcbiAgICAgICAgU0lHTklOR19LRVlfQVJOOiBwcm9wcy5zaWduaW5nS2V5LmNyZWRlbnRpYWwuc2VjcmV0QXJuLFxuICAgICAgICBHSVRIVUJfT1dORVI6IHByb3BzLmdpdGh1YlJlcG8ub3duZXIsXG4gICAgICAgIEdJVEhVQl9SRVBPOiBwcm9wcy5naXRodWJSZXBvLnJlcG8sXG4gICAgICAgIEZPUl9SRUFMOiBmb3JSZWFsLFxuICAgICAgICAvLyBUcmFuc21pdCB0aGUgbmFtZXMgb2YgdGhlIHNlY29uZGFyeSBzb3VyY2VzIHRvIHRoZSBzaGVsbCBzY3JpcHQgKGZvciBlYXNpZXIgaXRlcmF0aW9uKVxuICAgICAgICBTRUNPTkRBUllfU09VUkNFX05BTUVTOiBwcm9wcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHMgPyBwcm9wcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHMubWFwKGEgPT4gYS5hcnRpZmFjdE5hbWUpLmpvaW4oJyAnKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgU0lHTl9BRERJVElPTkFMX0FSVElGQUNUUzogcHJvcHMuYWRkaXRpb25hbElucHV0QXJ0aWZhY3RzICYmIHByb3BzLnNpZ25BZGRpdGlvbmFsQXJ0aWZhY3RzICE9PSBmYWxzZSA/ICd0cnVlJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgU1NNX1BSRUZJWDogcHJvcHMuc3NtUHJlZml4LFxuICAgICAgfSksXG4gICAgICBlbnZpcm9ubWVudFNlY3JldHM6IHtcbiAgICAgICAgR0lUSFVCX1RPS0VOOiBwcm9wcy5naXRodWJSZXBvLnRva2VuU2VjcmV0QXJuLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIGFsbG93IHNjcmlwdCB0byByZWFkIHRoZSBzaWduaW5nIGtleVxuICAgIGlmIChzaGVsbGFibGUucm9sZSkge1xuICAgICAgcHJvcHMuc2lnbmluZ0tleS5ncmFudFJlYWQoc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIGdyYW50U3NtUHJlZml4KHNoZWxsYWJsZS5yb2xlLCBwcm9wcy5zc21QcmVmaXgpO1xuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIGV4dHJhSW5wdXRzOiB0aGlzLmFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cyxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hUb1MzUHJvcHMge1xuICBidWNrZXQ6IHMzLklCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIE1ha2UgZmlsZXMgcHVibGljbHkgcmVhZGFibGVcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHB1YmxpYz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCAoZGVmYXVsdCkgd2lsbCBvbmx5IHBlcmZvcm0gYSBkcnktcnVuIGJ1dCB3aWxsIG5vdCBhY3R1YWxseSBwdWJsaXNoLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIENvZGVCdWlsZCBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvUzMgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUHVibGlzaGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU/OiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvUzNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBmb3JSZWFsID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG5cbiAgICBjb25zdCBzaGVsbGFibGUgPSBuZXcgU2hlbGxhYmxlKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgcGxhdGZvcm06IG5ldyBMaW51eFBsYXRmb3JtKGNidWlsZC5MaW51eEJ1aWxkSW1hZ2UuU1RBTkRBUkRfN18wKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAnczMnKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiBub1VuZGVmaW5lZCh7XG4gICAgICAgIEJVQ0tFVF9VUkw6IGBzMzovLyR7cHJvcHMuYnVja2V0LmJ1Y2tldE5hbWV9YCxcbiAgICAgICAgQ0hBTkdFTE9HOiBwcm9wcy5wdWJsaWMgPyAndHJ1ZScgOiAnZmFsc2UnLFxuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgLy8gQWxsb3cgc2NyaXB0IHRvIHdyaXRlIHRvIGJ1Y2tldFxuICAgIGlmIChzaGVsbGFibGUucm9sZSkge1xuICAgICAgcHJvcHMuYnVja2V0LmdyYW50UmVhZFdyaXRlKHNoZWxsYWJsZS5yb2xlKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9QeVBpUHJvcHMge1xuICAvKipcbiAgICogSWRlbnRpZmllciBvZiB0aGUgc2VjcmV0IHRoYXQgY29udGFpbnMgdGhlIFB5UEkgY3JlZGVudGlhbHMgdW5kZXJcbiAgICogXCJ1c2VybmFtZVwiIGFuZCBcInBhc3N3b3JkXCIga2V5cy5cbiAgICovXG4gIGxvZ2luU2VjcmV0OiBwZXJtaXNzaW9ucy5FeHRlcm5hbFNlY3JldDtcblxuICAvKipcbiAgICogSWYgYHRydWVgIChkZWZhdWx0KSB3aWxsIG9ubHkgcGVyZm9ybSBhIGRyeS1ydW4gYnV0IHdpbGwgbm90IGFjdHVhbGx5IHB1Ymxpc2guXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggdW5kZXIgd2hpY2ggdG8gcmVjb3JkIHRoZSBmYWN0IHRoYXQgdGhlIHB1Ymxpc2ggc3RlcCBleGVjdXRlZFxuICAgKlxuICAgKiBUaGlzIHdpbGwgd3JpdGUgYDxwcmVmaXg+L3ZlcnNpb25gIGFuZCBgPHByZWZpeD4vdGltZXN0YW1wYCB2YXJpYWJsZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBTU00gcGFyYW1ldGVyc1xuICAgKi9cbiAgc3NtUHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIENvZGVCdWlsZCBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvUHlQaSBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQdWJsaXNoVG9QeVBpUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgZm9yUmVhbCA9IHByb3BzLmRyeVJ1biA9PT0gdW5kZWZpbmVkID8gJ2ZhbHNlJyA6ICghcHJvcHMuZHJ5UnVuKS50b1N0cmluZygpO1xuXG4gICAgY29uc3Qgc2hlbGxhYmxlID0gbmV3IFNoZWxsYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHBsYXRmb3JtOiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzdfMCksXG4gICAgICBzY3JpcHREaXJlY3Rvcnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdwdWJsaXNoaW5nJywgJ3B5cGknKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiBub1VuZGVmaW5lZCh7XG4gICAgICAgIEZPUl9SRUFMOiBmb3JSZWFsLFxuICAgICAgICBQWVBJX0NSRURFTlRJQUxTX1NFQ1JFVF9JRDogcHJvcHMubG9naW5TZWNyZXQuc2VjcmV0QXJuLFxuICAgICAgICBTU01fUFJFRklYOiBwcm9wcy5zc21QcmVmaXgsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGlmIChzaGVsbGFibGUucm9sZSkge1xuICAgICAgcGVybWlzc2lvbnMuZ3JhbnRTZWNyZXRSZWFkKHByb3BzLmxvZ2luU2VjcmV0LCBzaGVsbGFibGUucm9sZSk7XG4gICAgfVxuXG4gICAgZ3JhbnRTc21QcmVmaXgoc2hlbGxhYmxlLnJvbGUsIHByb3BzLnNzbVByZWZpeCk7XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgR28gcHVibGlzaGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9Hb2xhbmdQcm9wcyB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIG9mIHRoZSBzZWNyZXQgdGhhdCBjb250YWlucyB0aGUgR2l0SHViIHBlcnNvbmFsIGFjY2VzcyB0b2tlblxuICAgKiB1c2VkIHRvIHB1c2ggdGhlIGdvIGNvZGUgdG8gdGhlIGdpdGh1YiByZXBvc2l0b3J5IGRlZmluZWQgYnkgaXQncyBuYW1lLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2dpdGh1Yi9hdXRoZW50aWNhdGluZy10by1naXRodWIvY3JlYXRpbmctYS1wZXJzb25hbC1hY2Nlc3MtdG9rZW5cbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1YlRva2VuU2VjcmV0OiBwZXJtaXNzaW9ucy5FeHRlcm5hbFNlY3JldDtcblxuICAvKipcbiAgICogVXNlcm5hbWUgdG8gcGVyZm9ybSB0aGUgY29tbWl0IHdpdGguXG4gICAqL1xuICByZWFkb25seSBnaXRVc2VyTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbWFpbCB0byBwZXJmb3JtIHRoZSBjb21taXQgd2l0aC5cbiAgICovXG4gIHJlYWRvbmx5IGdpdFVzZXJFbWFpbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gXCJ0cnVlXCIgZm9yIGEgZHJ5IHJ1bi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE1vZHVsZSB2ZXJzaW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHRzIHRvIHRoZSB2YWx1ZSBpbiB0aGUgJ3ZlcnNpb24nIGZpbGUgb2YgdGhlIG1vZHVsZVxuICAgKiBkaXJlY3RvcnkuIEZhaWxzIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCcmFuY2ggdG8gcHVzaCB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJtYWluXCJcbiAgICovXG4gIHJlYWRvbmx5IGdpdEJyYW5jaD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNvbW1pdCBtZXNzYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImNob3JlKHJlbGVhc2UpOiAkVkVSU0lPTlwiXG4gICAqL1xuICByZWFkb25seSBnaXRDb21taXRNZXNzYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IHVuZGVyIHdoaWNoIHRvIHJlY29yZCB0aGUgZmFjdCB0aGF0IHRoZSBwdWJsaXNoIHN0ZXAgZXhlY3V0ZWRcbiAgICpcbiAgICogVGhpcyB3aWxsIHdyaXRlIGA8cHJlZml4Pi92ZXJzaW9uYCBhbmQgYDxwcmVmaXg+L3RpbWVzdGFtcGAgdmFyaWFibGVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gU1NNIHBhcmFtZXRlcnNcbiAgICovXG4gIHNzbVByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogRGVzY3JpcHRpb24gZm9yIHRoZSBDb2RlQnVpbGQgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQdXNoZXMgYSBkaXJlY3Rvcnkgb2YgZ29sYW5nIG1vZHVsZXMgdG8gYSBHaXRIdWIgcmVwb3NpdG9yeS5cbiAqL1xuZXhwb3J0IGNsYXNzIFB1Ymxpc2hUb0dvbGFuZyBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvR29sYW5nUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgZHJ5UnVuID0gcHJvcHMuZHJ5UnVuID8/IGZhbHNlO1xuXG4gICAgY29uc3Qgc2hlbGxhYmxlID0gbmV3IFNoZWxsYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHBsYXRmb3JtOiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzdfMCksXG4gICAgICBzY3JpcHREaXJlY3Rvcnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdwdWJsaXNoaW5nJywgJ2dvbGFuZycpLFxuICAgICAgZW50cnlwb2ludDogJ3B1Ymxpc2guc2gnLFxuICAgICAgZW52aXJvbm1lbnQ6IG5vVW5kZWZpbmVkKHtcbiAgICAgICAgRFJZUlVOOiBkcnlSdW4gPyAndHJ1ZScgOiB1bmRlZmluZWQsXG4gICAgICAgIEdJVEhVQl9UT0tFTl9TRUNSRVQ6IHByb3BzLmdpdGh1YlRva2VuU2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgVkVSU0lPTjogcHJvcHMudmVyc2lvbixcbiAgICAgICAgR0lUX0JSQU5DSDogcHJvcHMuZ2l0QnJhbmNoLFxuICAgICAgICBHSVRfVVNFUl9OQU1FOiBwcm9wcy5naXRVc2VyTmFtZSxcbiAgICAgICAgR0lUX1VTRVJfRU1BSUw6IHByb3BzLmdpdFVzZXJFbWFpbCxcbiAgICAgICAgR0lUX0NPTU1JVF9NRVNTQUdFOiBwcm9wcy5naXRDb21taXRNZXNzYWdlLFxuICAgICAgICBTU01fUFJFRklYOiBwcm9wcy5zc21QcmVmaXgsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGlmIChzaGVsbGFibGUucm9sZSkge1xuICAgICAgcGVybWlzc2lvbnMuZ3JhbnRTZWNyZXRSZWFkKHByb3BzLmdpdGh1YlRva2VuU2VjcmV0LCBzaGVsbGFibGUucm9sZSk7XG4gICAgfVxuXG4gICAgZ3JhbnRTc21QcmVmaXgoc2hlbGxhYmxlLnJvbGUsIHByb3BzLnNzbVByZWZpeCk7XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ3JhbnRTc21QcmVmaXgocm9sZTogaWFtLklSb2xlLCBzc21QcmVmaXg/OiBzdHJpbmcpIHtcbiAgaWYgKHNzbVByZWZpeCkge1xuICAgIGlmICghc3NtUHJlZml4LnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTU00gcHJlZml4IHNob3VsZCBzdGFydCB3aXRoICcvJywgZ290OiAke3NzbVByZWZpeH1gKTtcbiAgICB9XG4gICAgaWYgKHNzbVByZWZpeC5lbmRzV2l0aCgnLycpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNTTSBwcmVmaXggbXVzdCBub3QgZW5kIHdpdGggJy8nLCBnb3Q6ICR7c3NtUHJlZml4fWApO1xuICAgIH1cblxuICAgIHJvbGU/LmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFsnc3NtOlB1dFBhcmFtZXRlcicsICdzc206R2V0UGFyYW1ldGVyJ10sXG4gICAgICByZXNvdXJjZXM6IFtTdGFjay5vZihyb2xlKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnc3NtJyxcbiAgICAgICAgcmVzb3VyY2U6ICdwYXJhbWV0ZXInLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGAke3NzbVByZWZpeC5zbGljZSgxKX0vKmAsXG4gICAgICB9KV0sXG4gICAgfSkpO1xuICB9XG59Il19
|
package/lib/pull-request/bump.js
CHANGED
@@ -5,19 +5,18 @@ const constructs_1 = require("constructs");
|
|
5
5
|
const pr_1 = require("./pr");
|
6
6
|
class AutoBump extends constructs_1.Construct {
|
7
7
|
constructor(parent, id, props) {
|
8
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
9
8
|
super(parent, id);
|
10
|
-
const branchName =
|
11
|
-
const baseBranch =
|
12
|
-
const bumpCommand =
|
13
|
-
const versionCommand =
|
14
|
-
const title =
|
15
|
-
const body =
|
9
|
+
const branchName = props.head?.name ?? 'bump/$VERSION';
|
10
|
+
const baseBranch = props.base?.name ?? 'master';
|
11
|
+
const bumpCommand = props.bumpCommand ?? '/bin/sh ./bump.sh';
|
12
|
+
const versionCommand = props.versionCommand ?? 'git describe';
|
13
|
+
const title = props.title ?? 'chore(release): $VERSION';
|
14
|
+
const body = props.body ?? `See [CHANGELOG](https://github.com/${props.repo.owner}/${props.repo.repo}/blob/${branchName}/CHANGELOG.md)`;
|
16
15
|
this.pr = new pr_1.AutoPullRequest(this, 'AutoPullRequest', {
|
17
16
|
...props,
|
18
17
|
head: {
|
19
18
|
name: branchName,
|
20
|
-
source:
|
19
|
+
source: props.head?.source,
|
21
20
|
},
|
22
21
|
title,
|
23
22
|
body,
|
@@ -28,9 +27,9 @@ class AutoBump extends constructs_1.Construct {
|
|
28
27
|
},
|
29
28
|
// check if base is already released
|
30
29
|
condition: `git describe --exact-match ${baseBranch}`,
|
31
|
-
projectDescription:
|
30
|
+
projectDescription: props.projectDescription ?? `Release ${props.repo.owner}/${props.repo.repo}, branch ${baseBranch}`,
|
32
31
|
});
|
33
32
|
}
|
34
33
|
}
|
35
34
|
exports.AutoBump = AutoBump;
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVtcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1bXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDZCQUErRDtBQXFGL0QsTUFBYSxRQUFTLFNBQVEsc0JBQVM7SUFPckMsWUFBWSxNQUFpQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtRQUM3RCxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLGVBQWUsQ0FBQztRQUN2RCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxRQUFRLENBQUM7UUFDaEQsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsSUFBSSxtQkFBbUIsQ0FBQztRQUM3RCxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsY0FBYyxJQUFJLGNBQWMsQ0FBQztRQUM5RCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLDBCQUEwQixDQUFDO1FBQ3hELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksc0NBQXNDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLFVBQVUsZ0JBQWdCLENBQUM7UUFFeEksSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLG9CQUFlLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3JELEdBQUcsS0FBSztZQUNSLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsVUFBVTtnQkFDaEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTTthQUMzQjtZQUNELEtBQUs7WUFDTCxJQUFJO1lBQ0osUUFBUSxFQUFFLENBQUMsV0FBVyxDQUFDO1lBQ3ZCLE9BQU8sRUFBRTtnQkFDUCxHQUFHLEtBQUssQ0FBQyxPQUFPO2dCQUNoQixPQUFPLEVBQUUsY0FBYzthQUN4QjtZQUNELG9DQUFvQztZQUNwQyxTQUFTLEVBQUUsOEJBQThCLFVBQVUsRUFBRTtZQUNyRCxrQkFBa0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCLElBQUksV0FBVyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksWUFBWSxVQUFVLEVBQUU7U0FDdkgsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBbkNELDRCQW1DQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQXV0b1B1bGxSZXF1ZXN0LCBBdXRvUHVsbFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnLi9wcic7XG5pbXBvcnQgeyBXcml0YWJsZUdpdEh1YlJlcG8gfSBmcm9tICcuLi9yZXBvJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjb25maWd1cmluZyB0aGUgaGVhZCBicmFuY2ggb2YgdGhlIGJ1bXAgUFIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0J1bXBIZWFkIHtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgYnJhbmNoLiBXaWxsIGJlIGNyZWF0ZWQgaWYgaXQgZG9lc24ndCBleGlzdC5cbiAgICpcbiAgICogJFZFUlNJT04gd2lsbCBiZSBzdWJzdGl0dXRlZCBieSB0aGUgY3VycmVudCB2ZXJzaW9uIChvYnRhaW5lZCBieSBleGVjdXRpbmcgYHZlcnNpb25Db21tYW5kYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdidW1wLyRWRVJTSU9OJ1xuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNlZSAnc291cmNlJyBwcm9wZXJ0eSBpbiBBdXRvUHVsbFJlcXVlc3QuSGVhZFxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIGFuIEF1dG8gQnVtcCBwcm9qZWN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9CdW1wUHJvcHMgZXh0ZW5kcyBBdXRvUHVsbFJlcXVlc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSByZXBvc2l0b3J5IHRvIGNyZWF0ZSBhIFBSIGluLlxuICAgKi9cbiAgcmVwbzogV3JpdGFibGVHaXRIdWJSZXBvO1xuXG4gIC8qKlxuICAgKiBUaGUgY29tbWFuZCB0byBleGVjdXRlIGluIG9yZGVyIHRvIGJ1bXAgdGhlIHJlcG8uXG4gICAqXG4gICAqIFRoZSBidW1wIGNvbW1hbmQgaXMgcmVzcG9uc2libGUgdG8gYnVtcCBhbnkgdmVyc2lvbiBtZXRhZGF0YSwgdXBkYXRlXG4gICAqIENIQU5HRUxPRyBhbmQgY29tbWl0IHRoaXMgdG8gdGhlIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIEBkZWZhdWx0ICcvYmluL2Jhc2ggLi9idW1wLnNoJ1xuICAgKi9cbiAgYnVtcENvbW1hbmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb21tYW5kIHRvIGRldGVybWluZSB0aGUgY3VycmVudCB2ZXJzaW9uLlxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBldmFsdWF0ZSAkVkVSU0lPTi5cbiAgICpcbiAgICogQGRlZmF1bHQgJ2dpdCBkZXNjcmliZScgKHRoZSBsYXRlc3QgZ2l0IHRhZyB3aWxsIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBjdXJyZW50IHZlcnNpb24pXG4gICAqL1xuICB2ZXJzaW9uQ29tbWFuZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGl0bGUgb2YgdGhlIFBSLlxuICAgKlxuICAgKiAkVkVSU0lPTiB3aWxsIGJlIHN1YnN0aXR1dGVkIGJ5IHRoZSBjdXJyZW50IHZlcnNpb24gKG9idGFpbmVkIGJ5IGV4ZWN1dGluZyBgdmVyc2lvbkNvbW1hbmRgKS5cbiAgICpcbiAgICogQGRlZmF1bHQnIGNob3JlKHJlbGVhc2UpOiAkVkVSU0lPTidcbiAgICovXG4gIHRpdGxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCb2R5IG9mIHRoZSBQUi5cbiAgICpcbiAgICogQGRlZmF1bHQgJ1NlZSBbQ0hBTkdFTE9HXShodHRwczovL2dpdGh1Yi5jb20vJHtwcm9wcy5yZXBvLm93bmVyfS8ke3Byb3BzLnJlcG8ucmVwb30vYmxvYi8ke2hlYWR9L0NIQU5HRUxPRy5tZCknXG4gICAqIChMaW5rIHRvIHRoZSBDSEFOR0VMT0cgZmlsZSBvZiB0aGUgaGVhZCBicmFuY2gpXG4gICAqL1xuICBib2R5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaGVhZCBicmFuY2ggb2YgdGhlIFBSLlxuICAgKlxuICAgKiAkVkVSU0lPTiB3aWxsIGJlIHN1YnN0aXR1dGVkIGJ5IHRoZSBjdXJyZW50IHZlcnNpb24gKG9idGFpbmVkIGJ5IGV4ZWN1dGluZyBgdmVyc2lvbkNvbW1hbmRgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBXaWwgYmUgY3JlYXRlZCBmcm9tIG1hc3RlciBhbmQgbmFtZWQgJ2J1bXAvJFZFUlNJT04nXG4gICAqL1xuICBoZWFkPzogQXV0b0J1bXBIZWFkO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBzdHJpbmcgZm9yIHRoZSBDb2RlQnVpbGQgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEEgZGVmYXVsdCBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdERlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQXV0b0J1bXAgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIC8qKlxuICAgKiBUaGUgdW5kZXJseWluZyBBdXRvUHVsbFJlcXVlc3QgY29uc3RydWN0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByOiBBdXRvUHVsbFJlcXVlc3Q7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBdXRvQnVtcFByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICBjb25zdCBicmFuY2hOYW1lID0gcHJvcHMuaGVhZD8ubmFtZSA/PyAnYnVtcC8kVkVSU0lPTic7XG4gICAgY29uc3QgYmFzZUJyYW5jaCA9IHByb3BzLmJhc2U/Lm5hbWUgPz8gJ21hc3Rlcic7XG4gICAgY29uc3QgYnVtcENvbW1hbmQgPSBwcm9wcy5idW1wQ29tbWFuZCA/PyAnL2Jpbi9zaCAuL2J1bXAuc2gnO1xuICAgIGNvbnN0IHZlcnNpb25Db21tYW5kID0gcHJvcHMudmVyc2lvbkNvbW1hbmQgPz8gJ2dpdCBkZXNjcmliZSc7XG4gICAgY29uc3QgdGl0bGUgPSBwcm9wcy50aXRsZSA/PyAnY2hvcmUocmVsZWFzZSk6ICRWRVJTSU9OJztcbiAgICBjb25zdCBib2R5ID0gcHJvcHMuYm9keSA/PyBgU2VlIFtDSEFOR0VMT0ddKGh0dHBzOi8vZ2l0aHViLmNvbS8ke3Byb3BzLnJlcG8ub3duZXJ9LyR7cHJvcHMucmVwby5yZXBvfS9ibG9iLyR7YnJhbmNoTmFtZX0vQ0hBTkdFTE9HLm1kKWA7XG5cbiAgICB0aGlzLnByID0gbmV3IEF1dG9QdWxsUmVxdWVzdCh0aGlzLCAnQXV0b1B1bGxSZXF1ZXN0Jywge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBoZWFkOiB7XG4gICAgICAgIG5hbWU6IGJyYW5jaE5hbWUsXG4gICAgICAgIHNvdXJjZTogcHJvcHMuaGVhZD8uc291cmNlLFxuICAgICAgfSxcbiAgICAgIHRpdGxlLFxuICAgICAgYm9keSxcbiAgICAgIGNvbW1hbmRzOiBbYnVtcENvbW1hbmRdLFxuICAgICAgZXhwb3J0czoge1xuICAgICAgICAuLi5wcm9wcy5leHBvcnRzLFxuICAgICAgICBWRVJTSU9OOiB2ZXJzaW9uQ29tbWFuZCxcbiAgICAgIH0sXG4gICAgICAvLyBjaGVjayBpZiBiYXNlIGlzIGFscmVhZHkgcmVsZWFzZWRcbiAgICAgIGNvbmRpdGlvbjogYGdpdCBkZXNjcmliZSAtLWV4YWN0LW1hdGNoICR7YmFzZUJyYW5jaH1gLFxuICAgICAgcHJvamVjdERlc2NyaXB0aW9uOiBwcm9wcy5wcm9qZWN0RGVzY3JpcHRpb24gPz8gYFJlbGVhc2UgJHtwcm9wcy5yZXBvLm93bmVyfS8ke3Byb3BzLnJlcG8ucmVwb30sIGJyYW5jaCAke2Jhc2VCcmFuY2h9YCxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
@@ -28,19 +28,18 @@ const constructs_1 = require("constructs");
|
|
28
28
|
const pr = __importStar(require("./pr"));
|
29
29
|
class AutoMergeBack extends constructs_1.Construct {
|
30
30
|
constructor(parent, id, props) {
|
31
|
-
var _a, _b, _c, _d, _e, _f;
|
32
31
|
super(parent, id);
|
33
|
-
const versionCommand =
|
34
|
-
const headName =
|
35
|
-
const title =
|
36
|
-
const body =
|
32
|
+
const versionCommand = props.versionCommand ?? 'git describe';
|
33
|
+
const headName = props.head?.name ?? 'merge-back/$VERSION';
|
34
|
+
const title = props.title ?? 'chore(merge-back): $VERSION';
|
35
|
+
const body = props.body ?? `See [CHANGELOG](https://github.com/${props.repo.owner}/${props.repo.repo}/blob/${headName}/CHANGELOG.md)`;
|
37
36
|
this.pr = new pr.AutoPullRequest(this, 'AutoMergeBack', {
|
38
37
|
...props,
|
39
38
|
body,
|
40
39
|
title,
|
41
40
|
head: {
|
42
41
|
name: headName,
|
43
|
-
source:
|
42
|
+
source: props.head?.source,
|
44
43
|
},
|
45
44
|
exports: {
|
46
45
|
...props.exports,
|
@@ -50,4 +49,4 @@ class AutoMergeBack extends constructs_1.Construct {
|
|
50
49
|
}
|
51
50
|
}
|
52
51
|
exports.AutoMergeBack = AutoMergeBack;
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UtYmFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1lcmdlLWJhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBdUM7QUFDdkMseUNBQTJCO0FBMkczQixNQUFhLGFBQWMsU0FBUSxzQkFBUztJQU8xQyxZQUFZLE1BQWlCLEVBQUUsRUFBVSxFQUFFLEtBQXlCO1FBQ2xFLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbEIsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsSUFBSSxjQUFjLENBQUM7UUFDOUQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLElBQUkscUJBQXFCLENBQUM7UUFDM0QsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSw2QkFBNkIsQ0FBQztRQUMzRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLHNDQUFzQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxRQUFRLGdCQUFnQixDQUFDO1FBRXRJLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDdEQsR0FBRyxLQUFLO1lBQ1IsSUFBSTtZQUNKLEtBQUs7WUFDTCxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTTthQUMzQjtZQUNELE9BQU8sRUFBRTtnQkFDUCxHQUFHLEtBQUssQ0FBQyxPQUFPO2dCQUNoQixPQUFPLEVBQUUsY0FBYzthQUN4QjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTdCRCxzQ0E2QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIHByIGZyb20gJy4vcHInO1xuaW1wb3J0IHsgV3JpdGFibGVHaXRIdWJSZXBvIH0gZnJvbSAnLi4vcmVwbyc7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY29uZmlndXJpbmcgdGhlIGhlYWQgYnJhbmNoIG9mIHRoZSBidW1wIFBSLlxuICogKFRoZSBicmFuY2ggdGhlIFBSIHdpbGwgYmUgbWVyZ2VkIGZyb20pXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b01lcmdlQmFja0hlYWQge1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiBicmFuY2guIFdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2Vzbid0IGV4aXN0LlxuICAgKiAkVkVSU0lPTiB3aWxsIGJlIHN1YnN0aXR1dGVkIGJ5IHRoZSBjdXJyZW50IHZlcnNpb24gKG9idGFpbmVkIGJ5IGV4ZWN1dGluZyBgdmVyc2lvbkNvbW1hbmRgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgJ21lcmdlLWJhY2svJFZFUlNJT04nXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2VlICdzb3VyY2UnIHByb3BlcnR5IGluIEF1dG9QdWxsUmVxdWVzdC5IZWFkXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVyZ2VCYWNrU3RhZ2Uge1xuXG4gIC8qKlxuICAgKiBXaGljaCBzdGFnZSBzaG91bGQgdGhlIG1lcmdlIGJhY2sgYmUgcGFydCBvZi4gKENyZWF0ZWQgaWYgbWlzc2luZylcbiAgICpcbiAgICogQGRlZmF1bHQgJ01lcmdlQmFjaydcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFnZSB0aGF0IHRoZSBtZXJnZSBiYWNrIHN0YWdlIHNob3VsZCBnbyBhZnRlciBvZi4gKE11c3QgZXhpc3QpXG4gICAqL1xuICByZWFkb25seSBhZnRlcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9NZXJnZUJhY2tPcHRpb25zIGV4dGVuZHMgcHIuQXV0b1B1bGxSZXF1ZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgY29tbWFuZCB0byBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgdmVyc2lvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgJ2dpdCBkZXNjcmliZSdcbiAgICovXG4gIHZlcnNpb25Db21tYW5kPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaXRsZSBvZiB0aGUgUFIuXG4gICAqXG4gICAqICRWRVJTSU9OIHdpbGwgYmUgc3Vic3RpdHV0ZWQgYnkgdGhlIGN1cnJlbnQgdmVyc2lvbiAob2J0YWluZWQgYnkgZXhlY3V0aW5nIGB2ZXJzaW9uQ29tbWFuZGApLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnY2hvcmUocmVsZWFzZSk6IG1lcmdlIGJhY2sgJFZFUlNJT04nXG4gICAqL1xuICB0aXRsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQm9keSBvZiB0aGUgUFIuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdTZWUgW0NIQU5HRUxPR10oaHR0cHM6Ly9naXRodWIuY29tLyR7cHJvcHMucmVwby5vd25lcn0vJHtwcm9wcy5yZXBvLnJlcG99L2Jsb2IvJHtoZWFkfS9DSEFOR0VMT0cubWQpJ1xuICAgKiAoTGluayB0byB0aGUgQ0hBTkdFTE9HIGZpbGUgb2YgdGhlIGhlYWQgYnJhbmNoKVxuICAgKi9cbiAgYm9keT86IHN0cmluZztcblxuICAvKipcbiAgICogSGVhZCBicmFuY2ggb2YgdGhlIFBSLlxuICAgKlxuICAgKiAkVkVSU0lPTiB3aWxsIGJlIHN1YnN0aXR1dGVkIGJ5IHRoZSBjdXJyZW50IHZlcnNpb24gKG9idGFpbmVkIGJ5IGV4ZWN1dGluZyBgdmVyc2lvbkNvbW1hbmRgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBXaWxsIGJlIGNyZWF0ZWQgZnJvbSByZWxlYXNlIGFuZCBuYW1lZCAnbWVyZ2UtYmFjay8kVkVSU0lPTidcbiAgICovXG4gIGhlYWQ/OiBBdXRvTWVyZ2VCYWNrSGVhZDtcblxuICAvKipcbiAgICogVGhlIGV4aXQgY29kZSBvZiB0aGlzIGNvbW1hbmQgZGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0byBwcm9jZWVkIHdpdGggdGhlXG4gICAqIFBSIGNyZWF0aW9uLiBJZiBjb25maWd1cmVkLCB0aGlzIGNvbW1hbmQgaXMgdGhlIGZpcnN0IG9uZSB0byBydW4sIGFuZCBpZiBpdCBmYWlscywgYWxsXG4gICAqIG90aGVyIGNvbW1hbmRzIHdpbGwgYmUgc2tpcHBlZC5cbiAgICpcbiAgICogVGhpcyBjb21tYW5kIGlzIHRoZSBmaXJzdCB0byBleGVjdXRlLCBhbmQgc2hvdWxkIG5vdCBhc3N1bWUgYW55IHByZS1leGlzdGluZyBzdGF0ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjb25kaXRpb25cbiAgICovXG4gIGNvbmRpdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogRGVzY3JpcHRpb24gZm9yIHRoZSBDb2RlQnVpbGQgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICBwcm9qZWN0RGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b01lcmdlQmFja1BpcGVsaW5lT3B0aW9ucyBleHRlbmRzIEF1dG9NZXJnZUJhY2tPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNwZWNpZnkgc3RhZ2Ugb3B0aW9ucyB0byBjcmVhdGUgdGhlIG1lcmdlIGJhY2sgaW5zaWRlIGEgc3RhZ2Ugb2YgdGhlIHBpcGVsaW5lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBDb2RlQnVpbGQgcHJvamVjdCB3aWxsIGJlIGNyZWF0ZWQgaW5kZXBkZW50IG9mIGFueSBzdGFnZS5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWdlPzogTWVyZ2VCYWNrU3RhZ2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b01lcmdlQmFja1Byb3BzIGV4dGVuZHMgQXV0b01lcmdlQmFja09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgdG8gYnVtcC5cbiAgICovXG4gIHJlcG86IFdyaXRhYmxlR2l0SHViUmVwbztcbn1cblxuZXhwb3J0IGNsYXNzIEF1dG9NZXJnZUJhY2sgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIC8qKlxuICAgKiBUaGUgdW5kZXJseWluZyBBdXRvUHVsbFJlcXVlc3QgY29uc3RydWN0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByOiBwci5BdXRvUHVsbFJlcXVlc3Q7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBdXRvTWVyZ2VCYWNrUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IHZlcnNpb25Db21tYW5kID0gcHJvcHMudmVyc2lvbkNvbW1hbmQgPz8gJ2dpdCBkZXNjcmliZSc7XG4gICAgY29uc3QgaGVhZE5hbWUgPSBwcm9wcy5oZWFkPy5uYW1lID8/ICdtZXJnZS1iYWNrLyRWRVJTSU9OJztcbiAgICBjb25zdCB0aXRsZSA9IHByb3BzLnRpdGxlID8/ICdjaG9yZShtZXJnZS1iYWNrKTogJFZFUlNJT04nO1xuICAgIGNvbnN0IGJvZHkgPSBwcm9wcy5ib2R5ID8/IGBTZWUgW0NIQU5HRUxPR10oaHR0cHM6Ly9naXRodWIuY29tLyR7cHJvcHMucmVwby5vd25lcn0vJHtwcm9wcy5yZXBvLnJlcG99L2Jsb2IvJHtoZWFkTmFtZX0vQ0hBTkdFTE9HLm1kKWA7XG5cbiAgICB0aGlzLnByID0gbmV3IHByLkF1dG9QdWxsUmVxdWVzdCh0aGlzLCAnQXV0b01lcmdlQmFjaycsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgYm9keSxcbiAgICAgIHRpdGxlLFxuICAgICAgaGVhZDoge1xuICAgICAgICBuYW1lOiBoZWFkTmFtZSxcbiAgICAgICAgc291cmNlOiBwcm9wcy5oZWFkPy5zb3VyY2UsXG4gICAgICB9LFxuICAgICAgZXhwb3J0czoge1xuICAgICAgICAuLi5wcm9wcy5leHBvcnRzLFxuICAgICAgICBWRVJTSU9OOiB2ZXJzaW9uQ29tbWFuZCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|