cdk-serverless 2.12.0 → 2.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -32,12 +32,15 @@ class AssetCdn extends constructs_1.Construct {
|
|
|
32
32
|
});
|
|
33
33
|
this.assetDomainName = `${props.hostName}.${props.domainName}`;
|
|
34
34
|
new aws_cdk_lib_1.CfnOutput(this, outputs_1.CFN_OUTPUT_SUFFIX_ASSETCDN_BUCKETNAME, {
|
|
35
|
+
key: outputs_1.CFN_OUTPUT_SUFFIX_ASSETCDN_BUCKETNAME,
|
|
35
36
|
value: this.assetBucket.bucketName,
|
|
36
37
|
});
|
|
37
38
|
new aws_cdk_lib_1.CfnOutput(this, outputs_1.CFN_OUTPUT_SUFFIX_ASSETCDN_DOMAINNAME, {
|
|
39
|
+
key: outputs_1.CFN_OUTPUT_SUFFIX_ASSETCDN_DOMAINNAME,
|
|
38
40
|
value: this.assetDomainName,
|
|
39
41
|
});
|
|
40
42
|
new aws_cdk_lib_1.CfnOutput(this, outputs_1.CFN_OUTPUT_SUFFIX_ASSETCDN_URL, {
|
|
43
|
+
key: outputs_1.CFN_OUTPUT_SUFFIX_ASSETCDN_URL,
|
|
41
44
|
value: 'https://' + this.assetDomainName,
|
|
42
45
|
});
|
|
43
46
|
// TODO this will be deprecated soon; find other solution
|
|
@@ -73,4 +76,4 @@ class AssetCdn extends constructs_1.Construct {
|
|
|
73
76
|
}
|
|
74
77
|
}
|
|
75
78
|
exports.AssetCdn = AssetCdn;
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtY2RuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0cnVjdHMvYXNzZXQtY2RuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQU9xQjtBQUNyQiwyQ0FBdUM7QUFDdkMsK0NBQWlKO0FBaUJqSjs7OztHQUlHO0FBQ0gsTUFBYSxRQUFTLFNBQVEsc0JBQVM7SUFpQnJDOzs7Ozs7T0FNRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsSUFBSSxHQUFHLHlCQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQzVELFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtTQUM3QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksb0JBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUNwRCxpQkFBaUIsRUFBRSxvQkFBRSxDQUFDLGlCQUFpQixDQUFDLFNBQVM7U0FDbEQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7WUFDM0IsY0FBYyxFQUFFLENBQUMsR0FBRyxDQUFDO1lBQ3JCLGNBQWMsRUFBRSxDQUFDLG9CQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztZQUNwQyxjQUFjLEVBQUUsQ0FBQyxHQUFHLENBQUM7U0FDdEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRy9ELElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsK0NBQXFDLEVBQUU7WUFDekQsR0FBRyxFQUFFLCtDQUFxQztZQUMxQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVO1NBQ25DLENBQUMsQ0FBQztRQUNILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsK0NBQXFDLEVBQUU7WUFDekQsR0FBRyxFQUFFLCtDQUFxQztZQUMxQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWU7U0FDNUIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSx3Q0FBOEIsRUFBRTtZQUNsRCxHQUFHLEVBQUUsd0NBQThCO1lBQ25DLEtBQUssRUFBRSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWU7U0FDekMsQ0FBQyxDQUFDO1FBRUgseURBQXlEO1FBQ3pELE1BQU0sSUFBSSxHQUFHLElBQUksb0NBQWtCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUMvRSxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDckIsVUFBVSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ2hDLE1BQU0sRUFBRSxXQUFXO1NBQ3BCLENBQUMsQ0FBQztRQUVILE1BQU0sb0JBQW9CLEdBQUcsSUFBSSw0QkFBVSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsZUFBZSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2xJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFakQsTUFBTSxZQUFZLEdBQUcsSUFBSSw0QkFBVSxDQUFDLHlCQUF5QixDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDbEYsYUFBYSxFQUFFO2dCQUNiO29CQUNFLFNBQVMsRUFBRSxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUM7b0JBQ3hDLGNBQWMsRUFBRTt3QkFDZCxjQUFjLEVBQUUsSUFBSSxDQUFDLFdBQVc7d0JBQ2hDLG9CQUFvQjtxQkFDckI7aUJBQ0Y7YUFDRjtZQUNELGlCQUFpQixFQUFFLDRCQUFVLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFO2dCQUN2RSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO2FBQ2hDLENBQUM7WUFDRixPQUFPLEVBQUUsc0JBQXNCLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDckQsVUFBVSxFQUFFLDRCQUFVLENBQUMsVUFBVSxDQUFDLGVBQWU7WUFDakQsb0JBQW9CLEVBQUUsNEJBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUI7U0FDeEUsQ0FBQyxDQUFDO1FBRUgsSUFBSSx5QkFBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ3ZDLFVBQVUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNoQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixNQUFNLEVBQUUseUJBQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksaUNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMxRixDQUFDLENBQUM7SUFFTCxDQUFDO0NBQ0Y7QUEzRkQsNEJBMkZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2ZuT3V0cHV0LFxuICBhd3NfY2VydGlmaWNhdGVtYW5hZ2VyIGFzIGNlcnRpZmljYXRlbWFuYWdlcixcbiAgYXdzX2Nsb3VkZnJvbnQgYXMgY2xvdWRmcm9udCxcbiAgYXdzX3JvdXRlNTMgYXMgcm91dGU1MyxcbiAgYXdzX3JvdXRlNTNfdGFyZ2V0cyBhcyByb3V0ZTUzVGFyZ2V0cyxcbiAgYXdzX3MzIGFzIHMzLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IENGTl9PVVRQVVRfU1VGRklYX0FTU0VUQ0ROX0JVQ0tFVE5BTUUsIENGTl9PVVRQVVRfU1VGRklYX0FTU0VUQ0ROX0RPTUFJTk5BTUUsIENGTl9PVVRQVVRfU1VGRklYX0FTU0VUQ0ROX1VSTCB9IGZyb20gJy4uL3NoYXJlZC9vdXRwdXRzJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBBc3NldENkbiBMMyBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldENkblByb3BzIHtcbiAgLyoqXG4gICAqIERvbWFpbiBuYW1lIG9mIHRoZSBhc3NldCBjb250ZW50IGRlbGl2ZXJ5IG5ldHdvcmsgKGUuZy4gZXhhbXBsZS5jb20pXG4gICAqL1xuICBkb21haW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEhvc3RuYW1lIG9mIHRoZSBhc3NldCBjb250ZW50IGRlbGl2ZXJ5IG5ldHdvcmsgKGUuZy4gY2RuKVxuICAgKi9cbiAgaG9zdE5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgQXNzZXRDZG4gY29uc3RydWN0IGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIGFuIFMzIGJ1Y2tldCBmb3IgYXNzZXQgc3RvcmFnZVxuICogYW5kIGEgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24gdG8gc2VydmUgdGhlIGFzc2V0cyBzZWN1cmVseSB3aXRoIEhUVFBTLiBJdCBhbHNvXG4gKiBjb25maWd1cmVzIGEgUm91dGUgNTMgRE5TIHJlY29yZCB0byBwb2ludCB0byB0aGUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBBc3NldENkbiBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgLyoqXG4gICAqIFRoZSBSb3V0ZSA1MyBob3N0ZWQgem9uZSBmb3IgdGhlIGFzc2V0IGRvbWFpbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB6b25lOiByb3V0ZTUzLklIb3N0ZWRab25lO1xuXG4gIC8qKlxuICAgKiBUaGUgUzMgYnVja2V0IHVzZWQgdG8gc3RvcmUgdGhlIGFzc2V0cy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhc3NldEJ1Y2tldDogczMuQnVja2V0O1xuXG4gIC8qKlxuICAgKiBUaGUgZG9tYWluIG5hbWUgdXNlZCBmb3IgYWNjZXNzaW5nIHRoZSBhc3NldHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXNzZXREb21haW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgQXNzZXRDZG4uXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0aGlzIGNvbnN0cnVjdCBpcyBkZWZpbmVkLlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgc2NvcGVkIGNvbnN0cnVjdCBJRC5cbiAgICogQHBhcmFtIHByb3BzIC0gVGhlIHByb3BlcnRpZXMgb2YgdGhlIEFzc2V0Q2RuIGNvbnN0cnVjdC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBc3NldENkblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuem9uZSA9IHJvdXRlNTMuSG9zdGVkWm9uZS5mcm9tTG9va3VwKHRoaXMsICdIb3N0ZWRab25lJywge1xuICAgICAgZG9tYWluTmFtZTogcHJvcHMuZG9tYWluTmFtZSxcbiAgICB9KTtcblxuICAgIHRoaXMuYXNzZXRCdWNrZXQgPSBuZXcgczMuQnVja2V0KHRoaXMsICdBc3NldEJ1Y2tldCcsIHtcbiAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBzMy5CbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTEwsXG4gICAgfSk7XG4gICAgdGhpcy5hc3NldEJ1Y2tldC5hZGRDb3JzUnVsZSh7XG4gICAgICBhbGxvd2VkSGVhZGVyczogWycqJ10sXG4gICAgICBhbGxvd2VkTWV0aG9kczogW3MzLkh0dHBNZXRob2RzLlBVVF0sXG4gICAgICBhbGxvd2VkT3JpZ2luczogWycqJ10sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFzc2V0RG9tYWluTmFtZSA9IGAke3Byb3BzLmhvc3ROYW1lfS4ke3Byb3BzLmRvbWFpbk5hbWV9YDtcblxuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBDRk5fT1VUUFVUX1NVRkZJWF9BU1NFVENETl9CVUNLRVROQU1FLCB7XG4gICAgICBrZXk6IENGTl9PVVRQVVRfU1VGRklYX0FTU0VUQ0ROX0JVQ0tFVE5BTUUsXG4gICAgICB2YWx1ZTogdGhpcy5hc3NldEJ1Y2tldC5idWNrZXROYW1lLFxuICAgIH0pO1xuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgQ0ZOX09VVFBVVF9TVUZGSVhfQVNTRVRDRE5fRE9NQUlOTkFNRSwge1xuICAgICAga2V5OiBDRk5fT1VUUFVUX1NVRkZJWF9BU1NFVENETl9ET01BSU5OQU1FLFxuICAgICAgdmFsdWU6IHRoaXMuYXNzZXREb21haW5OYW1lLFxuICAgIH0pO1xuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgQ0ZOX09VVFBVVF9TVUZGSVhfQVNTRVRDRE5fVVJMLCB7XG4gICAgICBrZXk6IENGTl9PVVRQVVRfU1VGRklYX0FTU0VUQ0ROX1VSTCxcbiAgICAgIHZhbHVlOiAnaHR0cHM6Ly8nICsgdGhpcy5hc3NldERvbWFpbk5hbWUsXG4gICAgfSk7XG5cbiAgICAvLyBUT0RPIHRoaXMgd2lsbCBiZSBkZXByZWNhdGVkIHNvb247IGZpbmQgb3RoZXIgc29sdXRpb25cbiAgICBjb25zdCBjZXJ0ID0gbmV3IGNlcnRpZmljYXRlbWFuYWdlci5EbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZSh0aGlzLCAnQ2VydGlmaWNhdGUnLCB7XG4gICAgICBob3N0ZWRab25lOiB0aGlzLnpvbmUsXG4gICAgICBkb21haW5OYW1lOiB0aGlzLmFzc2V0RG9tYWluTmFtZSxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgfSk7XG5cbiAgICBjb25zdCBvcmlnaW5BY2Nlc3NJZGVudGl0eSA9IG5ldyBjbG91ZGZyb250Lk9yaWdpbkFjY2Vzc0lkZW50aXR5KHRoaXMsICdPQUknLCB7IGNvbW1lbnQ6IGBTMyBGcm9udGVuZCAke3RoaXMuYXNzZXREb21haW5OYW1lfWAgfSk7XG4gICAgdGhpcy5hc3NldEJ1Y2tldC5ncmFudFJlYWQob3JpZ2luQWNjZXNzSWRlbnRpdHkpO1xuXG4gICAgY29uc3QgZGlzdHJpYnV0aW9uID0gbmV3IGNsb3VkZnJvbnQuQ2xvdWRGcm9udFdlYkRpc3RyaWJ1dGlvbih0aGlzLCAnRGlzdHJpYnV0aW9uJywge1xuICAgICAgb3JpZ2luQ29uZmlnczogW1xuICAgICAgICB7XG4gICAgICAgICAgYmVoYXZpb3JzOiBbeyBpc0RlZmF1bHRCZWhhdmlvcjogdHJ1ZSB9XSxcbiAgICAgICAgICBzM09yaWdpblNvdXJjZToge1xuICAgICAgICAgICAgczNCdWNrZXRTb3VyY2U6IHRoaXMuYXNzZXRCdWNrZXQsXG4gICAgICAgICAgICBvcmlnaW5BY2Nlc3NJZGVudGl0eSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHZpZXdlckNlcnRpZmljYXRlOiBjbG91ZGZyb250LlZpZXdlckNlcnRpZmljYXRlLmZyb21BY21DZXJ0aWZpY2F0ZShjZXJ0LCB7XG4gICAgICAgIGFsaWFzZXM6IFt0aGlzLmFzc2V0RG9tYWluTmFtZV0sXG4gICAgICB9KSxcbiAgICAgIGNvbW1lbnQ6IGBBc3NldCBlbmRwb2ludCBmb3IgJHt0aGlzLmFzc2V0RG9tYWluTmFtZX1gLFxuICAgICAgcHJpY2VDbGFzczogY2xvdWRmcm9udC5QcmljZUNsYXNzLlBSSUNFX0NMQVNTX0FMTCxcbiAgICAgIHZpZXdlclByb3RvY29sUG9saWN5OiBjbG91ZGZyb250LlZpZXdlclByb3RvY29sUG9saWN5LlJFRElSRUNUX1RPX0hUVFBTLFxuICAgIH0pO1xuXG4gICAgbmV3IHJvdXRlNTMuQVJlY29yZCh0aGlzLCAnQWxpYXNSZWNvcmQnLCB7XG4gICAgICByZWNvcmROYW1lOiB0aGlzLmFzc2V0RG9tYWluTmFtZSxcbiAgICAgIHpvbmU6IHRoaXMuem9uZSxcbiAgICAgIHRhcmdldDogcm91dGU1My5SZWNvcmRUYXJnZXQuZnJvbUFsaWFzKG5ldyByb3V0ZTUzVGFyZ2V0cy5DbG91ZEZyb250VGFyZ2V0KGRpc3RyaWJ1dGlvbikpLFxuICAgIH0pO1xuXG4gIH1cbn1cbiJdfQ==
|
|
@@ -174,7 +174,7 @@ class CognitoAuthentication extends constructs_1.Construct {
|
|
|
174
174
|
});
|
|
175
175
|
}
|
|
176
176
|
}
|
|
177
|
-
new aws_cdk_lib_1.CfnOutput(this, outputs_1.CFN_OUTPUT_SUFFIX_AUTH_USERPOOLID, { value: this.userpool.userPoolId });
|
|
177
|
+
new aws_cdk_lib_1.CfnOutput(this, outputs_1.CFN_OUTPUT_SUFFIX_AUTH_USERPOOLID, { key: outputs_1.CFN_OUTPUT_SUFFIX_AUTH_USERPOOLID, value: this.userpool.userPoolId });
|
|
178
178
|
if (props.identityPool) {
|
|
179
179
|
this.identityPool = new identitypool.IdentityPool(this, 'IdentityPool', {
|
|
180
180
|
allowUnauthenticatedIdentities: true,
|
|
@@ -185,18 +185,28 @@ class CognitoAuthentication extends constructs_1.Construct {
|
|
|
185
185
|
...(_e = props.identityPool.poolConfig) === null || _e === void 0 ? void 0 : _e.authenticationProviders,
|
|
186
186
|
},
|
|
187
187
|
});
|
|
188
|
-
new aws_cdk_lib_1.CfnOutput(this, outputs_1.CFN_OUTPUT_SUFFIX_AUTH_IDENTITYPOOL_ID, {
|
|
189
|
-
|
|
190
|
-
|
|
188
|
+
new aws_cdk_lib_1.CfnOutput(this, outputs_1.CFN_OUTPUT_SUFFIX_AUTH_IDENTITYPOOL_ID, {
|
|
189
|
+
key: outputs_1.CFN_OUTPUT_SUFFIX_AUTH_IDENTITYPOOL_ID,
|
|
190
|
+
value: this.identityPool.identityPoolId,
|
|
191
|
+
});
|
|
192
|
+
new aws_cdk_lib_1.CfnOutput(this, outputs_1.CFN_OUTPUT_SUFFIX_AUTH_IDENTITYPOOL_AUTH_ROLEARN, {
|
|
193
|
+
key: outputs_1.CFN_OUTPUT_SUFFIX_AUTH_IDENTITYPOOL_AUTH_ROLEARN,
|
|
194
|
+
value: this.identityPool.authenticatedRole.roleArn,
|
|
195
|
+
});
|
|
196
|
+
new aws_cdk_lib_1.CfnOutput(this, outputs_1.CFN_OUTPUT_SUFFIX_AUTH_IDENTITYPOOL_UNAUTH_ROLEARN, {
|
|
197
|
+
key: outputs_1.CFN_OUTPUT_SUFFIX_AUTH_IDENTITYPOOL_UNAUTH_ROLEARN,
|
|
198
|
+
value: this.identityPool.unauthenticatedRole.roleArn,
|
|
199
|
+
});
|
|
191
200
|
}
|
|
192
201
|
}
|
|
193
202
|
addUserPoolClient(id, options) {
|
|
194
203
|
const client = this.userpool.addClient(id, options);
|
|
195
204
|
new aws_cdk_lib_1.CfnOutput(this, `${outputs_1.CFN_OUTPUT_SUFFIX_AUTH_USERPOOL_CLIENTID}${id}`, {
|
|
205
|
+
key: `${outputs_1.CFN_OUTPUT_SUFFIX_AUTH_USERPOOL_CLIENTID}${id}`,
|
|
196
206
|
value: client.userPoolClientId,
|
|
197
207
|
});
|
|
198
208
|
return client;
|
|
199
209
|
}
|
|
200
210
|
}
|
|
201
211
|
exports.CognitoAuthentication = CognitoAuthentication;
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RydWN0cy9hdXRoZW50aWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QixzRkFBd0U7QUFDeEUsNkNBR3FCO0FBRXJCLDJDQUF1QztBQUN2QyxpQ0FBd0M7QUFDeEMsK0NBQThQO0FBaUc5UDs7O0dBR0c7QUFDSCxNQUFhLHFCQUFzQixTQUFRLHNCQUFTO0lBMkJsRDs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlDOztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx5QkFBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ3JELFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQzNCLGNBQWMsRUFBRTtnQkFDZCxTQUFTLEVBQUUsRUFBRTtnQkFDYixhQUFhLEVBQUUsS0FBSztnQkFDcEIsZ0JBQWdCLEVBQUUsS0FBSztnQkFDdkIsY0FBYyxFQUFFLEtBQUs7Z0JBQ3JCLGdCQUFnQixFQUFFLEtBQUs7YUFDeEI7WUFDRCxrQkFBa0IsRUFBRTtnQkFDbEIsUUFBUSxFQUFFO29CQUNSLE9BQU8sRUFBRSxJQUFJO29CQUNiLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2dCQUNELEtBQUssRUFBRTtvQkFDTCxPQUFPLEVBQUUsS0FBSztvQkFDZCxRQUFRLEVBQUUsSUFBSTtpQkFDZjthQUNGO1lBQ0QsaUJBQWlCLEVBQUUsS0FBSztZQUN4QixhQUFhLEVBQUU7Z0JBQ2IsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNELG1CQUFtQixFQUFFLEtBQUs7WUFDMUIsR0FBRyxL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QUFTLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztvQkFDekYsR0FBRyxNQUFBLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSwwQ0FBRSx1QkFBdUI7aUJBQzFEO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxnREFBc0MsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFDekcsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSwwREFBZ0QsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDOUgsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSw0REFBa0QsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDbkk7SUFDSCxDQUFDO0lBRU0saUJBQWlCLENBQUMsRUFBVSxFQUFFLE9BQThCO1FBQ2pFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsa0RBQXdDLEdBQUcsRUFBRSxFQUFFLEVBQUU7WUFDdEUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7U0FDL0IsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUVGO0FBNU1ELHNEQTRNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIGlkZW50aXR5cG9vbCBmcm9tICdAYXdzLWNkay9hd3MtY29nbml0by1pZGVudGl0eXBvb2wtYWxwaGEnO1xuaW1wb3J0IHtcbiAgYXdzX2NvZ25pdG8gYXMgY29nbml0bywgQ2ZuT3V0cHV0LCBEdXJhdGlvbiwgU3RhY2ssXG5cbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgVXNlclBvb2xDbGllbnQsIFVzZXJQb29sQ2xpZW50T3B0aW9ucyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2duaXRvJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24gfSBmcm9tICcuL2Z1bmMnO1xuaW1wb3J0IHsgQ0ZOX09VVFBVVF9TVUZGSVhfQVVUSF9JREVOVElUWVBPT0xfQVVUSF9ST0xFQVJOLCBDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX0lERU5USVRZUE9PTF9JRCwgQ0ZOX09VVFBVVF9TVUZGSVhfQVVUSF9JREVOVElUWVBPT0xfVU5BVVRIX1JPTEVBUk4sIENGTl9PVVRQVVRfU1VGRklYX0FVVEhfVVNFUlBPT0xJRCwgQ0ZOX09VVFBVVF9TVUZGSVhfQVVUSF9VU0VSUE9PTF9DTElFTlRJRCB9IGZyb20gJy4uL3NoYXJlZC9vdXRwdXRzJztcblxuZXhwb3J0IGludGVyZmFjZSBJQ29nbml0b0F1dGhlbnRpY2F0aW9uIHtcbiAgLyoqIFRoZSBDb2duaXRvIHVzZXIgcG9vbCB0aGF0IGhvbGRzIHVzZXIgaW5mb3JtYXRpb24gKi9cbiAgcmVhZG9ubHkgdXNlcnBvb2w6IGNvZ25pdG8uSVVzZXJQb29sO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElKd3RBdXRoZW50aWNhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgSldUIGlzc3VlciBlbmRwb2ludCBVUkxcbiAgICovXG4gIHJlYWRvbmx5IGlzc3VlclVybDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVuZHBvaW50J3MgYXVkaWVuY2UuIFdpbGwgb25seSBiZSBjaGVja2VkIGlmIHByZXNlbnQuXG4gICAqL1xuICByZWFkb25seSBhdWRpZW5jZT86IHN0cmluZ1tdO1xuICAvKipcbiAgICogVGhlIEpXVCBlbmRwb2ludHMgSldLUyBzdG9yZS4gVW5sZXNzIHRoaXMgaXMgcHJvdmlkZWQsIE9JREMgZGlzY292ZXJ5IHdpbGwgYmUgdXNlZCB0byBmaW5kIHRoaXMuXG4gICAqL1xuICByZWFkb25seSBqd2tzVXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvZ25pdG9BdXRoZW50aWNhdGlvblByb3BzIHtcblxuICAvKiogTmFtZSBmb3IgdGhlIENvZ25pdG8gdXNlciBwb29sICovXG4gIHJlYWRvbmx5IHVzZXJQb29sTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgQ29nbml0byBMYW1iZGEgdHJpZ2dlcnNcbiAgICovXG4gIHJlYWRvbmx5IHRyaWdnZXJzPzoge1xuICAgIC8qKlxuICAgICAqIEF0dGFjaGVzIGEgbGFtYmRhIGZ1bmN0aW9uIHRvIHRoZSBjdXN0b20gbWVzc2FnZSB0cmlnZ2VyXG4gICAgICpcbiAgICAgKiBDb2RlIGhhcyB0byByZXNpZGUgaW4gJy4vc3JjL2xhbWJkYS9jb2duaXRvLmN1c3RvbS1tZXNzYWdlLnRzJyB3aXRoIGEgbWV0aG9kICdoYW5kbGVyJ1xuICAgICAqXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICByZWFkb25seSBjdXN0b21NZXNzYWdlcz86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBBdHRhY2hlcyBhIGxhbWJkYSBmdW5jdGlvbiB0byB0aGUgcHJlIHRva2VuIGdlbmVyYXRpb24gdHJpZ2dlclxuICAgICAqXG4gICAgICogQ29kZSBoYXMgdG8gcmVzaWRlIGluICcuL3NyYy9sYW1iZGEvY29nbml0by5wcmUtdG9rZW4tZ2VuZXJhdGlvbi50cycgd2l0aCBhIG1ldGhvZCAnaGFuZGxlcidcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcmVhZG9ubHkgcHJlVG9rZW5HZW5lcmF0aW9uPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBBdHRhY2hlcyBhIGxhbWJkYSBmdW5jdGlvbiB0byB0aGUgcHJlIHNpZ24tdXAgdHJpZ2dlclxuICAgICAqXG4gICAgICogQ29kZSBoYXMgdG8gcmVzaWRlIGluICcuL3NyYy9sYW1iZGEvY29nbml0by5wcmUtc2lnbnVwLnRzJyB3aXRoIGEgbWV0aG9kICdoYW5kbGVyJ1xuICAgICAqXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICByZWFkb25seSBwcmVTaWduVXA/OiBib29sZWFuO1xuICB9O1xuXG4gIC8qKlxuICAgKiBQcm9wZXJ0aWVzIG9mIHRoZSBDb2duaXRvIHVzZXIgcG9vbFxuICAgKi9cbiAgcmVhZG9ubHkgdXNlclBvb2xQcm9wcz86IGNvZ25pdG8uVXNlclBvb2xQcm9wcztcblxuICAvKipcbiAgICogQ29uZmlndXJlIFNFUyBtYWlsIHNlbmRpbmdcbiAgICovXG4gIHJlYWRvbmx5IHNlc0VtYWlsU2VuZGVyPzoge1xuICAgIC8qKlxuICAgICAqIEFXUyByZWdpb24gdG8gdXNlIGZvciBTRVNcbiAgICAgKi9cbiAgICByZWFkb25seSByZWdpb246IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBTZW5kZXIgbmFtZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBTZW5kZXIgZW1haWwuIE5lZWRzIHRvIGJlIGFscmVhZHkgdmVyaWZpZWQgaW4gU0VTXG4gICAgICovXG4gICAgcmVhZG9ubHkgZW1haWw6IHN0cmluZztcbiAgfTtcblxuICAvKipcbiAgICogR3JvdXBzIHRvIGNyZWF0ZSBpbiBDb2duaXRvIHVzZXIgcG9vbFxuICAgKiBLZXk6IGdyb3VwIG5hbWVcbiAgICogVmFsdWU6IGdyb3VwIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBncm91cHM/OiB7XG4gICAgcmVhZG9ubHkgW25hbWU6IHN0cmluZ106IHN0cmluZztcbiAgfTtcblxuICAvKiogQ3JlYXRlIGEgbmV3IENvZ25pdG8gSWRlbnRpdHkgUG9vbCBmb3IgdGhlIFVzZXIgcG9vbCAqL1xuICByZWFkb25seSBpZGVudGl0eVBvb2w/OiB7XG4gICAgLyoqIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGlkZW50aXR5IHBvb2wgKi9cbiAgICByZWFkb25seSBwb29sQ29uZmlnPzogaWRlbnRpdHlwb29sLklkZW50aXR5UG9vbFByb3BzO1xuICB9O1xufVxuXG4vKipcbiAqIFRoZSBDb2duaXRvQXV0aGVudGljYXRpb24gY29uc3RydWN0IHNldHMgdXAgYSBDb2duaXRvIFVzZXIgUG9vbCB3aXRoIG9wdGlvbmFsIHRyaWdnZXJzIGFuZCBhbiBvcHRpb25hbCBDb2duaXRvIElkZW50aXR5IFBvb2wuXG4gKiBJdCBhbHNvIGNvbmZpZ3VyZXMgdmFyaW91cyBMYW1iZGEgdHJpZ2dlcnMgZm9yIGN1c3RvbSBtZXNzYWdlLCBwcmUtc2lnbiB1cCwgYW5kIHByZS10b2tlbiBnZW5lcmF0aW9uIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIENvZ25pdG9BdXRoZW50aWNhdGlvbiBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElDb2duaXRvQXV0aGVudGljYXRpb24ge1xuXG4gIC8qKlxuICAgKiBUaGUgQ29nbml0byBVc2VyIFBvb2wgZm9yIHVzZXIgYXV0aGVudGljYXRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXNlcnBvb2w6IGNvZ25pdG8uVXNlclBvb2w7XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25hbCBDb2duaXRvIElkZW50aXR5IFBvb2wgZm9yIGZlZGVyYXRlZCBpZGVudGl0aWVzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlkZW50aXR5UG9vbD86IGlkZW50aXR5cG9vbC5JZGVudGl0eVBvb2w7XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25hbCBMYW1iZGEgZnVuY3Rpb24gZm9yIGN1c3RvbSBtZXNzYWdlIHRyaWdnZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3VzdG9tTWVzc2FnZUZ1bmN0aW9uPzogTGFtYmRhRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25hbCBMYW1iZGEgZnVuY3Rpb24gZm9yIHByZS1zaWduIHVwIHRyaWdnZXIuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJlU2lnblVwRnVuY3Rpb24/OiBMYW1iZGFGdW5jdGlvbjtcblxuICAvKipcbiAgICogVGhlIG9wdGlvbmFsIExhbWJkYSBmdW5jdGlvbiBmb3IgcHJlLXRva2VuIGdlbmVyYXRpb24gdHJpZ2dlci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcmVUb2tlbkdlbmVyYXRpb25GdW5jdGlvbj86IExhbWJkYUZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIENvZ25pdG9BdXRoZW50aWNhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIHNjb3BlIGluIHdoaWNoIHRoaXMgY29uc3RydWN0IGlzIGRlZmluZWQuXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBzY29wZWQgY29uc3RydWN0IElELlxuICAgKiBAcGFyYW0gcHJvcHMgLSBUaGUgcHJvcGVydGllcyBvZiB0aGUgQ29nbml0b0F1dGhlbnRpY2F0aW9uIGNvbnN0cnVjdC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDb2duaXRvQXV0aGVudGljYXRpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnVzZXJwb29sID0gbmV3IGNvZ25pdG8uVXNlclBvb2wodGhpcywgJ1VzZXJQb29sJywge1xuICAgICAgdXNlclBvb2xOYW1lOiBwcm9wcy51c2VyUG9vbE5hbWUsXG4gICAgICBhdXRvVmVyaWZ5OiB7IGVtYWlsOiB0cnVlIH0sXG4gICAgICBwYXNzd29yZFBvbGljeToge1xuICAgICAgICBtaW5MZW5ndGg6IDEyLFxuICAgICAgICByZXF1aXJlRGlnaXRzOiBmYWxzZSxcbiAgICAgICAgcmVxdWlyZUxvd2VyY2FzZTogZmFsc2UsXG4gICAgICAgIHJlcXVpcmVTeW1ib2xzOiBmYWxzZSxcbiAgICAgICAgcmVxdWlyZVVwcGVyY2FzZTogZmFsc2UsXG4gICAgICB9LFxuICAgICAgc3RhbmRhcmRBdHRyaWJ1dGVzOiB7XG4gICAgICAgIGZ1bGxuYW1lOiB7XG4gICAgICAgICAgbXV0YWJsZTogdHJ1ZSxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZW1haWw6IHtcbiAgICAgICAgICBtdXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzZWxmU2lnblVwRW5hYmxlZDogZmFsc2UsXG4gICAgICBzaWduSW5BbGlhc2VzOiB7XG4gICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIHNpZ25JbkNhc2VTZW5zaXRpdmU6IGZhbHNlLFxuICAgICAgLi4ucHJvcHMudXNlclBvb2xQcm9wcyxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy50cmlnZ2Vycz8uY3VzdG9tTWVzc2FnZXMpIHtcbiAgICAgIGNvbnN0IGVudHJ5RmlsZSA9ICcuL3NyYy9sYW1iZGEvY29nbml0by5jdXN0b20tbWVzc2FnZS50cyc7XG5cbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhlbnRyeUZpbGUpKSB7XG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZW50cnlGaWxlLCBgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQ6IEFXU0xhbWJkYS5DdXN0b21NZXNzYWdlVHJpZ2dlckV2ZW50KTogUHJvbWlzZTxBV1NMYW1iZGEuQ3VzdG9tTWVzc2FnZVRyaWdnZXJFdmVudD4ge1xuICBjb25zb2xlLmxvZyhldmVudCk7XG5cbiAgaWYgKGV2ZW50LnRyaWdnZXJTb3VyY2UgPT09ICdDdXN0b21NZXNzYWdlX0FkbWluQ3JlYXRlVXNlcicpIHtcbiAgICAvLyBldmVudC5yZXNwb25zZS5lbWFpbFN1YmplY3QgPSAnJztcbiAgICAvLyBldmVudC5yZXNwb25zZS5lbWFpbE1lc3NhZ2UgPSAnJztcbiAgfSBlbHNlIGlmIChldmVudC50cmlnZ2VyU291cmNlID09PSAnQ3VzdG9tTWVzc2FnZV9Gb3Jnb3RQYXNzd29yZCcpIHtcbiAgICAvLyBldmVudC5yZXNwb25zZS5lbWFpbFN1YmplY3QgPSAnJztcbiAgICAvLyBldmVudC5yZXNwb25zZS5lbWFpbE1lc3NhZ2UgPSAnJztcbiAgfSAvLyAuLi5cblxuICByZXR1cm4gZXZlbnQ7XG59YCwge1xuICAgICAgICAgIGVuY29kaW5nOiAndXRmLTgnLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jdXN0b21NZXNzYWdlRnVuY3Rpb24gPSBuZXcgTGFtYmRhRnVuY3Rpb24odGhpcywgJ0N1c3RvbU1lc3NhZ2VGdW5jdGlvbicsIHtcbiAgICAgICAgZW50cnk6IGVudHJ5RmlsZSxcbiAgICAgICAgbGFtYmRhT3B0aW9uczoge1xuICAgICAgICAgIGJ1bmRsaW5nOiB7XG4gICAgICAgICAgICBsb2FkZXI6IHtcbiAgICAgICAgICAgICAgJy5odG1sJzogJ3RleHQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMudXNlcnBvb2wuYWRkVHJpZ2dlcihjb2duaXRvLlVzZXJQb29sT3BlcmF0aW9uLkNVU1RPTV9NRVNTQUdFLCB0aGlzLmN1c3RvbU1lc3NhZ2VGdW5jdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnRyaWdnZXJzPy5wcmVUb2tlbkdlbmVyYXRpb24pIHtcbiAgICAgIGNvbnN0IGVudHJ5RmlsZSA9ICcuL3NyYy9sYW1iZGEvY29nbml0by5wcmUtdG9rZW4tZ2VuZXJhdGlvbi50cyc7XG5cbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhlbnRyeUZpbGUpKSB7XG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZW50cnlGaWxlLCBgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQ6IEFXU0xhbWJkYS5QcmVUb2tlbkdlbmVyYXRpb25UcmlnZ2VyRXZlbnQpOiBQcm9taXNlPEFXU0xhbWJkYS5QcmVUb2tlbkdlbmVyYXRpb25UcmlnZ2VyRXZlbnQ+IHtcbiAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZXZlbnQpKTtcblxuICAvLyBtb2RpZnkgZXZlbnQucmVzcG9uc2UgaGVyZSAuLi5cblxuICByZXR1cm4gZXZlbnQ7XG59YCwge1xuICAgICAgICAgIGVuY29kaW5nOiAndXRmLTgnLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wcmVUb2tlbkdlbmVyYXRpb25GdW5jdGlvbiA9IG5ldyBMYW1iZGFGdW5jdGlvbih0aGlzLCAnUHJlVG9rZW5HZW5lcmF0aW9uRnVuY3Rpb24nLCB7XG4gICAgICAgIGxhbWJkYU9wdGlvbnM6IHtcbiAgICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDUpLFxuICAgICAgICB9LFxuICAgICAgICBlbnRyeTogZW50cnlGaWxlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnVzZXJwb29sLmFkZFRyaWdnZXIoY29nbml0by5Vc2VyUG9vbE9wZXJhdGlvbi5QUkVfVE9LRU5fR0VORVJBVElPTiwgdGhpcy5wcmVUb2tlbkdlbmVyYXRpb25GdW5jdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnRyaWdnZXJzPy5wcmVTaWduVXApIHtcbiAgICAgIGNvbnN0IGVudHJ5RmlsZSA9ICcuL3NyYy9sYW1iZGEvY29nbml0by5wcmUtc2lnbnVwLnRzJztcblxuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGVudHJ5RmlsZSkpIHtcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhlbnRyeUZpbGUsIGBleHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogQVdTTGFtYmRhLlByZVNpZ25VcFRyaWdnZXJFdmVudCk6IFByb21pc2U8QVdTTGFtYmRhLlByZVNpZ25VcFRyaWdnZXJFdmVudD4ge1xuICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShldmVudCkpO1xuXG4gIC8vIENvbmZpcm0gdGhlIHVzZXJcbiAgLy8gZXZlbnQucmVzcG9uc2UuYXV0b0NvbmZpcm1Vc2VyID0gdHJ1ZTtcblxuICAvLyBTZXQgdGhlIGVtYWlsIGFzIHZlcmlmaWVkIGlmIGl0IGlzIGluIHRoZSByZXF1ZXN0XG4gIC8vIGlmIChldmVudC5yZXF1ZXN0LnVzZXJBdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KCdlbWFpbCcpKSB7XG4gIC8vICAgZXZlbnQucmVzcG9uc2UuYXV0b1ZlcmlmeUVtYWlsID0gdHJ1ZTtcbiAgLy8gfVxuXG4gIC8vIFNldCB0aGUgcGhvbmUgbnVtYmVyIGFzIHZlcmlmaWVkIGlmIGl0IGlzIGluIHRoZSByZXF1ZXN0XG4gIC8vIGlmIChldmVudC5yZXF1ZXN0LnVzZXJBdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KCdwaG9uZV9udW1iZXInKSkge1xuICAvLyAgIGV2ZW50LnJlc3BvbnNlLmF1dG9WZXJpZnlQaG9uZSA9IHRydWU7XG4gIC8vIH1cblxuICByZXR1cm4gZXZlbnQ7XG59YCwge1xuICAgICAgICAgIGVuY29kaW5nOiAndXRmLTgnLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wcmVTaWduVXBGdW5jdGlvbiA9IG5ldyBMYW1iZGFGdW5jdGlvbih0aGlzLCAnUHJlU2lnblVwRnVuY3Rpb24nLCB7XG4gICAgICAgIGxhbWJkYU9wdGlvbnM6IHtcbiAgICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDUpLFxuICAgICAgICB9LFxuICAgICAgICBlbnRyeTogZW50cnlGaWxlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnVzZXJwb29sLmFkZFRyaWdnZXIoY29nbml0by5Vc2VyUG9vbE9wZXJhdGlvbi5QUkVfU0lHTl9VUCwgdGhpcy5wcmVTaWduVXBGdW5jdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnNlc0VtYWlsU2VuZGVyKSB7XG4gICAgICAodGhpcy51c2VycG9vbC5ub2RlLmRlZmF1bHRDaGlsZCBhcyBjb2duaXRvLkNmblVzZXJQb29sKS5lbWFpbENvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAgIGVtYWlsU2VuZGluZ0FjY291bnQ6ICdERVZFTE9QRVInLFxuICAgICAgICBmcm9tOiBgJHtwcm9wcy5zZXNFbWFpbFNlbmRlci5uYW1lfSA8JHtwcm9wcy5zZXNFbWFpbFNlbmRlci5lbWFpbH0+YCxcbiAgICAgICAgc291cmNlQXJuOiBgYXJuOmF3czpzZXM6JHtwcm9wcy5zZXNFbWFpbFNlbmRlci5yZWdpb24gPz8gU3RhY2sub2YodGhpcykucmVnaW9ufToke1N0YWNrLm9mKHRoaXMpLmFjY291bnR9OmlkZW50aXR5LyR7cHJvcHMuc2VzRW1haWxTZW5kZXIuZW1haWx9YCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBncm91cE5hbWUgaW4gcHJvcHMuZ3JvdXBzKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLmdyb3VwcywgZ3JvdXBOYW1lKSkge1xuICAgICAgICBjb25zdCBncm91cERlc2NyaXB0aW9uID0gcHJvcHMuZ3JvdXBzW2dyb3VwTmFtZV07XG4gICAgICAgIG5ldyBjb2duaXRvLkNmblVzZXJQb29sR3JvdXAodGhpcywgYEdyb3VwJHtncm91cE5hbWV9YCwge1xuICAgICAgICAgIHVzZXJQb29sSWQ6IHRoaXMudXNlcnBvb2wudXNlclBvb2xJZCxcbiAgICAgICAgICBncm91cE5hbWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IGdyb3VwRGVzY3JpcHRpb24sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgQ0ZOX09VVFBVVF9TVUZGSVhfQVVUSF9VU0VSUE9PTElELCB7IHZhbHVlOiB0aGlzLnVzZXJwb29sLnVzZXJQb29sSWQgfSk7XG5cbiAgICBpZiAocHJvcHMuaWRlbnRpdHlQb29sKSB7XG4gICAgICB0aGlzLmlkZW50aXR5UG9vbCA9IG5ldyBpZGVudGl0eXBvb2wuSWRlbnRpdHlQb29sKHRoaXMsICdJZGVudGl0eVBvb2wnLCB7XG4gICAgICAgIGFsbG93VW5hdXRoZW50aWNhdGVkSWRlbnRpdGllczogdHJ1ZSxcbiAgICAgICAgaWRlbnRpdHlQb29sTmFtZTogcHJvcHMudXNlclBvb2xOYW1lICsgJy1pZGVudGl0eScsXG4gICAgICAgIC4uLnByb3BzLmlkZW50aXR5UG9vbC5wb29sQ29uZmlnLFxuICAgICAgICBhdXRoZW50aWNhdGlvblByb3ZpZGVyczoge1xuICAgICAgICAgIHVzZXJQb29sczogW25ldyBpZGVudGl0eXBvb2wuVXNlclBvb2xBdXRoZW50aWNhdGlvblByb3ZpZGVyKHsgdXNlclBvb2w6IHRoaXMudXNlcnBvb2wgfSldLFxuICAgICAgICAgIC4uLnByb3BzLmlkZW50aXR5UG9vbC5wb29sQ29uZmlnPy5hdXRoZW50aWNhdGlvblByb3ZpZGVycyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX0lERU5USVRZUE9PTF9JRCwgeyB2YWx1ZTogdGhpcy5pZGVudGl0eVBvb2wuaWRlbnRpdHlQb29sSWQgfSk7XG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIENGTl9PVVRQVVRfU1VGRklYX0FVVEhfSURFTlRJVFlQT09MX0FVVEhfUk9MRUFSTiwgeyB2YWx1ZTogdGhpcy5pZGVudGl0eVBvb2wuYXV0aGVudGljYXRlZFJvbGUucm9sZUFybiB9KTtcbiAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgQ0ZOX09VVFBVVF9TVUZGSVhfQVVUSF9JREVOVElUWVBPT0xfVU5BVVRIX1JPTEVBUk4sIHsgdmFsdWU6IHRoaXMuaWRlbnRpdHlQb29sLnVuYXV0aGVudGljYXRlZFJvbGUucm9sZUFybiB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkVXNlclBvb2xDbGllbnQoaWQ6IHN0cmluZywgb3B0aW9uczogVXNlclBvb2xDbGllbnRPcHRpb25zKTogVXNlclBvb2xDbGllbnQge1xuICAgIGNvbnN0IGNsaWVudCA9IHRoaXMudXNlcnBvb2wuYWRkQ2xpZW50KGlkLCBvcHRpb25zKTtcbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke0NGTl9PVVRQVVRfU1VGRklYX0FVVEhfVVNFUlBPT0xfQ0xJRU5USUR9JHtpZH1gLCB7XG4gICAgICB2YWx1ZTogY2xpZW50LnVzZXJQb29sQ2xpZW50SWQsXG4gICAgfSk7XG4gICAgcmV0dXJuIGNsaWVudDtcbiAgfVxuXG59Il19
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RydWN0cy9hdXRoZW50aWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QixzRkFBd0U7QUFDeEUsNkNBR3FCO0FBRXJCLDJDQUF1QztBQUN2QyxpQ0FBd0M7QUFDeEMsK0NBQThQO0FBaUc5UDs7O0dBR0c7QUFDSCxNQUFhLHFCQUFzQixTQUFRLHNCQUFTO0lBMkJsRDs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlDOztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx5QkFBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ3JELFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQzNCLGNBQWMsRUFBRTtnQkFDZCxTQUFTLEVBQUUsRUFBRTtnQkFDYixhQUFhLEVBQUUsS0FBSztnQkFDcEIsZ0JBQWdCLEVBQUUsS0FBSztnQkFDdkIsY0FBYyxFQUFFLEtBQUs7Z0JBQ3JCLGdCQUFnQixFQUFFLEtBQUs7YUFDeEI7WUFDRCxrQkFBa0IsRUFBRTtnQkFDbEIsUUFBUSxFQUFFO29CQUNSLE9BQU8sRUFBRSxJQUFJO29CQUNiLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2dCQUNELEtBQUssRUFBRTtvQkFDTCxPQUFPLEVBQUUsS0FBSztvQkFDZCxRQUFRLEVBQUUsSUFBSTtpQkFDZjthQUNGO1lBQ0QsaUJBQWlCLEVBQUUsS0FBSztZQUN4QixhQUFhLEVBQUU7Z0JBQ2IsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNELG1CQUFtQixFQUFFLEtBQUs7WUFDMUIsR0FBRyxLQUFLLENBQUMsYUFBYTtTQUN2QixDQUFDLENBQUM7UUFFSCxJQUFJLE1BQUEsS0FBSyxDQUFDLFFBQVEsMENBQUUsY0FBYyxFQUFFO1lBQ2xDLE1BQU0sU0FBUyxHQUFHLHdDQUF3QyxDQUFDO1lBRTNELElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUM3QixFQUFFLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRTs7Ozs7Ozs7Ozs7O0VBWWxDLEVBQUU7b0JBQ00sUUFBUSxFQUFFLE9BQU87aUJBQ2xCLENBQUMsQ0FBQzthQUNKO1lBRUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUkscUJBQWMsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7Z0JBQzdFLEtBQUssRUFBRSxTQUFTO2dCQUNoQixhQUFhLEVBQUU7b0JBQ2IsUUFBUSxFQUFFO3dCQUNSLE1BQU0sRUFBRTs0QkFDTixPQUFPLEVBQUUsTUFBTTt5QkFDaEI7cUJBQ0Y7b0JBQ0QsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztpQkFDN0I7YUFDRixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyx5QkFBTyxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUNoRztRQUVELElBQUksTUFBQSxLQUFLLENBQUMsUUFBUSwwQ0FBRSxrQkFBa0IsRUFBRTtZQUN0QyxNQUFNLFNBQVMsR0FBRyw4Q0FBOEMsQ0FBQztZQUVqRSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDN0IsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUU7Ozs7OztFQU1sQyxFQUFFO29CQUNNLFFBQVEsRUFBRSxPQUFPO2lCQUNsQixDQUFDLENBQUM7YUFDSjtZQUVELElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLHFCQUFjLENBQUMsSUFBSSxFQUFFLDRCQUE0QixFQUFFO2dCQUN2RixhQUFhLEVBQUU7b0JBQ2IsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztpQkFDN0I7Z0JBQ0QsS0FBSyxFQUFFLFNBQVM7YUFDakIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMseUJBQU8sQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztTQUMzRztRQUVELElBQUksTUFBQSxLQUFLLENBQUMsUUFBUSwwQ0FBRSxTQUFTLEVBQUU7WUFDN0IsTUFBTSxTQUFTLEdBQUcsb0NBQW9DLENBQUM7WUFFdkQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQzdCLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7OztFQWlCbEMsRUFBRTtvQkFDTSxRQUFRLEVBQUUsT0FBTztpQkFDbEIsQ0FBQyxDQUFDO2FBQ0o7WUFFRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxxQkFBYyxDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRTtnQkFDckUsYUFBYSxFQUFFO29CQUNiLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7aUJBQzdCO2dCQUNELEtBQUssRUFBRSxTQUFTO2FBQ2pCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLHlCQUFPLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3pGO1FBRUQsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQW9DLENBQUMsa0JBQWtCLEdBQUc7Z0JBQzVFLG1CQUFtQixFQUFFLFdBQVc7Z0JBQ2hDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFHO2dCQUNwRSxTQUFTLEVBQUUsZUFBZSxNQUFBLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxtQ0FBSSxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxhQUFhLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFO2FBQ2xKLENBQUM7U0FDSDtRQUVELEtBQUssTUFBTSxTQUFTLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNwQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxFQUFFO2dCQUNqRSxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2pELElBQUkseUJBQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxTQUFTLEVBQUUsRUFBRTtvQkFDdEQsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVTtvQkFDcEMsU0FBUztvQkFDVCxXQUFXLEVBQUUsZ0JBQWdCO2lCQUM5QixDQUFDLENBQUM7YUFDSjtTQUNGO1FBRUQsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSwyQ0FBaUMsRUFBRSxFQUFFLEdBQUcsRUFBRSwyQ0FBaUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBRXBJLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRTtZQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO2dCQUN0RSw4QkFBOEIsRUFBRSxJQUFJO2dCQUNwQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsWUFBWSxHQUFHLFdBQVc7Z0JBQ2xELEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFVO2dCQUNoQyx1QkFBdUIsRUFBRTtvQkFDdkIsU0FBUyxFQUFFLENBQUMsSUFBSSxZQUFZLENBQUMsOEJBQThCLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7b0JBQ3pGLEdBQUcsTUFBQSxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsMENBQUUsdUJBQXVCO2lCQUMxRDthQUNGLENBQUMsQ0FBQztZQUNILElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsZ0RBQXNDLEVBQUU7Z0JBQzFELEdBQUcsRUFBRSxnREFBc0M7Z0JBQzNDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWM7YUFDeEMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSwwREFBZ0QsRUFBRTtnQkFDcEUsR0FBRyxFQUFFLDBEQUFnRDtnQkFDckQsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsT0FBTzthQUNuRCxDQUFDLENBQUM7WUFDSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLDREQUFrRCxFQUFFO2dCQUN0RSxHQUFHLEVBQUUsNERBQWtEO2dCQUN2RCxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPO2FBQ3JELENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEVBQVUsRUFBRSxPQUE4QjtRQUNqRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEQsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxHQUFHLGtEQUF3QyxHQUFHLEVBQUUsRUFBRSxFQUFFO1lBQ3RFLEdBQUcsRUFBRSxHQUFHLGtEQUF3QyxHQUFHLEVBQUUsRUFBRTtZQUN2RCxLQUFLLEVBQUUsTUFBTSxDQUFDLGdCQUFnQjtTQUMvQixDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBRUY7QUF0TkQsc0RBc05DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgaWRlbnRpdHlwb29sIGZyb20gJ0Bhd3MtY2RrL2F3cy1jb2duaXRvLWlkZW50aXR5cG9vbC1hbHBoYSc7XG5pbXBvcnQge1xuICBhd3NfY29nbml0byBhcyBjb2duaXRvLCBDZm5PdXRwdXQsIER1cmF0aW9uLCBTdGFjayxcblxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBVc2VyUG9vbENsaWVudCwgVXNlclBvb2xDbGllbnRPcHRpb25zIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZ25pdG8nO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBMYW1iZGFGdW5jdGlvbiB9IGZyb20gJy4vZnVuYyc7XG5pbXBvcnQgeyBDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX0lERU5USVRZUE9PTF9BVVRIX1JPTEVBUk4sIENGTl9PVVRQVVRfU1VGRklYX0FVVEhfSURFTlRJVFlQT09MX0lELCBDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX0lERU5USVRZUE9PTF9VTkFVVEhfUk9MRUFSTiwgQ0ZOX09VVFBVVF9TVUZGSVhfQVVUSF9VU0VSUE9PTElELCBDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX1VTRVJQT09MX0NMSUVOVElEIH0gZnJvbSAnLi4vc2hhcmVkL291dHB1dHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDb2duaXRvQXV0aGVudGljYXRpb24ge1xuICAvKiogVGhlIENvZ25pdG8gdXNlciBwb29sIHRoYXQgaG9sZHMgdXNlciBpbmZvcm1hdGlvbiAqL1xuICByZWFkb25seSB1c2VycG9vbDogY29nbml0by5JVXNlclBvb2w7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUp3dEF1dGhlbnRpY2F0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBKV1QgaXNzdWVyIGVuZHBvaW50IFVSTFxuICAgKi9cbiAgcmVhZG9ubHkgaXNzdWVyVXJsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZW5kcG9pbnQncyBhdWRpZW5jZS4gV2lsbCBvbmx5IGJlIGNoZWNrZWQgaWYgcHJlc2VudC5cbiAgICovXG4gIHJlYWRvbmx5IGF1ZGllbmNlPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgSldUIGVuZHBvaW50cyBKV0tTIHN0b3JlLiBVbmxlc3MgdGhpcyBpcyBwcm92aWRlZCwgT0lEQyBkaXNjb3Zlcnkgd2lsbCBiZSB1c2VkIHRvIGZpbmQgdGhpcy5cbiAgICovXG4gIHJlYWRvbmx5IGp3a3NVcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29nbml0b0F1dGhlbnRpY2F0aW9uUHJvcHMge1xuXG4gIC8qKiBOYW1lIGZvciB0aGUgQ29nbml0byB1c2VyIHBvb2wgKi9cbiAgcmVhZG9ubHkgdXNlclBvb2xOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBDb2duaXRvIExhbWJkYSB0cmlnZ2Vyc1xuICAgKi9cbiAgcmVhZG9ubHkgdHJpZ2dlcnM/OiB7XG4gICAgLyoqXG4gICAgICogQXR0YWNoZXMgYSBsYW1iZGEgZnVuY3Rpb24gdG8gdGhlIGN1c3RvbSBtZXNzYWdlIHRyaWdnZXJcbiAgICAgKlxuICAgICAqIENvZGUgaGFzIHRvIHJlc2lkZSBpbiAnLi9zcmMvbGFtYmRhL2NvZ25pdG8uY3VzdG9tLW1lc3NhZ2UudHMnIHdpdGggYSBtZXRob2QgJ2hhbmRsZXInXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGN1c3RvbU1lc3NhZ2VzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEF0dGFjaGVzIGEgbGFtYmRhIGZ1bmN0aW9uIHRvIHRoZSBwcmUgdG9rZW4gZ2VuZXJhdGlvbiB0cmlnZ2VyXG4gICAgICpcbiAgICAgKiBDb2RlIGhhcyB0byByZXNpZGUgaW4gJy4vc3JjL2xhbWJkYS9jb2duaXRvLnByZS10b2tlbi1nZW5lcmF0aW9uLnRzJyB3aXRoIGEgbWV0aG9kICdoYW5kbGVyJ1xuICAgICAqXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICByZWFkb25seSBwcmVUb2tlbkdlbmVyYXRpb24/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEF0dGFjaGVzIGEgbGFtYmRhIGZ1bmN0aW9uIHRvIHRoZSBwcmUgc2lnbi11cCB0cmlnZ2VyXG4gICAgICpcbiAgICAgKiBDb2RlIGhhcyB0byByZXNpZGUgaW4gJy4vc3JjL2xhbWJkYS9jb2duaXRvLnByZS1zaWdudXAudHMnIHdpdGggYSBtZXRob2QgJ2hhbmRsZXInXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IHByZVNpZ25VcD86IGJvb2xlYW47XG4gIH07XG5cbiAgLyoqXG4gICAqIFByb3BlcnRpZXMgb2YgdGhlIENvZ25pdG8gdXNlciBwb29sXG4gICAqL1xuICByZWFkb25seSB1c2VyUG9vbFByb3BzPzogY29nbml0by5Vc2VyUG9vbFByb3BzO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgU0VTIG1haWwgc2VuZGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgc2VzRW1haWxTZW5kZXI/OiB7XG4gICAgLyoqXG4gICAgICogQVdTIHJlZ2lvbiB0byB1c2UgZm9yIFNFU1xuICAgICAqL1xuICAgIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFNlbmRlciBuYW1lXG4gICAgICovXG4gICAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFNlbmRlciBlbWFpbC4gTmVlZHMgdG8gYmUgYWxyZWFkeSB2ZXJpZmllZCBpbiBTRVNcbiAgICAgKi9cbiAgICByZWFkb25seSBlbWFpbDogc3RyaW5nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBHcm91cHMgdG8gY3JlYXRlIGluIENvZ25pdG8gdXNlciBwb29sXG4gICAqIEtleTogZ3JvdXAgbmFtZVxuICAgKiBWYWx1ZTogZ3JvdXAgZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGdyb3Vwcz86IHtcbiAgICByZWFkb25seSBbbmFtZTogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xuXG4gIC8qKiBDcmVhdGUgYSBuZXcgQ29nbml0byBJZGVudGl0eSBQb29sIGZvciB0aGUgVXNlciBwb29sICovXG4gIHJlYWRvbmx5IGlkZW50aXR5UG9vbD86IHtcbiAgICAvKiogY29uZmlndXJhdGlvbiBvZiB0aGUgaWRlbnRpdHkgcG9vbCAqL1xuICAgIHJlYWRvbmx5IHBvb2xDb25maWc/OiBpZGVudGl0eXBvb2wuSWRlbnRpdHlQb29sUHJvcHM7XG4gIH07XG59XG5cbi8qKlxuICogVGhlIENvZ25pdG9BdXRoZW50aWNhdGlvbiBjb25zdHJ1Y3Qgc2V0cyB1cCBhIENvZ25pdG8gVXNlciBQb29sIHdpdGggb3B0aW9uYWwgdHJpZ2dlcnMgYW5kIGFuIG9wdGlvbmFsIENvZ25pdG8gSWRlbnRpdHkgUG9vbC5cbiAqIEl0IGFsc28gY29uZmlndXJlcyB2YXJpb3VzIExhbWJkYSB0cmlnZ2VycyBmb3IgY3VzdG9tIG1lc3NhZ2UsIHByZS1zaWduIHVwLCBhbmQgcHJlLXRva2VuIGdlbmVyYXRpb24gZXZlbnRzLlxuICovXG5leHBvcnQgY2xhc3MgQ29nbml0b0F1dGhlbnRpY2F0aW9uIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNvZ25pdG9BdXRoZW50aWNhdGlvbiB7XG5cbiAgLyoqXG4gICAqIFRoZSBDb2duaXRvIFVzZXIgUG9vbCBmb3IgdXNlciBhdXRoZW50aWNhdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VycG9vbDogY29nbml0by5Vc2VyUG9vbDtcblxuICAvKipcbiAgICogVGhlIG9wdGlvbmFsIENvZ25pdG8gSWRlbnRpdHkgUG9vbCBmb3IgZmVkZXJhdGVkIGlkZW50aXRpZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaWRlbnRpdHlQb29sPzogaWRlbnRpdHlwb29sLklkZW50aXR5UG9vbDtcblxuICAvKipcbiAgICogVGhlIG9wdGlvbmFsIExhbWJkYSBmdW5jdGlvbiBmb3IgY3VzdG9tIG1lc3NhZ2UgdHJpZ2dlci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjdXN0b21NZXNzYWdlRnVuY3Rpb24/OiBMYW1iZGFGdW5jdGlvbjtcblxuICAvKipcbiAgICogVGhlIG9wdGlvbmFsIExhbWJkYSBmdW5jdGlvbiBmb3IgcHJlLXNpZ24gdXAgdHJpZ2dlci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcmVTaWduVXBGdW5jdGlvbj86IExhbWJkYUZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgb3B0aW9uYWwgTGFtYmRhIGZ1bmN0aW9uIGZvciBwcmUtdG9rZW4gZ2VuZXJhdGlvbiB0cmlnZ2VyLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByZVRva2VuR2VuZXJhdGlvbkZ1bmN0aW9uPzogTGFtYmRhRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgQ29nbml0b0F1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgc2NvcGUgaW4gd2hpY2ggdGhpcyBjb25zdHJ1Y3QgaXMgZGVmaW5lZC5cbiAgICogQHBhcmFtIGlkIC0gVGhlIHNjb3BlZCBjb25zdHJ1Y3QgSUQuXG4gICAqIEBwYXJhbSBwcm9wcyAtIFRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBDb2duaXRvQXV0aGVudGljYXRpb24gY29uc3RydWN0LlxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENvZ25pdG9BdXRoZW50aWNhdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMudXNlcnBvb2wgPSBuZXcgY29nbml0by5Vc2VyUG9vbCh0aGlzLCAnVXNlclBvb2wnLCB7XG4gICAgICB1c2VyUG9vbE5hbWU6IHByb3BzLnVzZXJQb29sTmFtZSxcbiAgICAgIGF1dG9WZXJpZnk6IHsgZW1haWw6IHRydWUgfSxcbiAgICAgIHBhc3N3b3JkUG9saWN5OiB7XG4gICAgICAgIG1pbkxlbmd0aDogMTIsXG4gICAgICAgIHJlcXVpcmVEaWdpdHM6IGZhbHNlLFxuICAgICAgICByZXF1aXJlTG93ZXJjYXNlOiBmYWxzZSxcbiAgICAgICAgcmVxdWlyZVN5bWJvbHM6IGZhbHNlLFxuICAgICAgICByZXF1aXJlVXBwZXJjYXNlOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBzdGFuZGFyZEF0dHJpYnV0ZXM6IHtcbiAgICAgICAgZnVsbG5hbWU6IHtcbiAgICAgICAgICBtdXRhYmxlOiB0cnVlLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBlbWFpbDoge1xuICAgICAgICAgIG11dGFibGU6IGZhbHNlLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHNlbGZTaWduVXBFbmFibGVkOiBmYWxzZSxcbiAgICAgIHNpZ25JbkFsaWFzZXM6IHtcbiAgICAgICAgZW1haWw6IHRydWUsXG4gICAgICB9LFxuICAgICAgc2lnbkluQ2FzZVNlbnNpdGl2ZTogZmFsc2UsXG4gICAgICAuLi5wcm9wcy51c2VyUG9vbFByb3BzLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLnRyaWdnZXJzPy5jdXN0b21NZXNzYWdlcykge1xuICAgICAgY29uc3QgZW50cnlGaWxlID0gJy4vc3JjL2xhbWJkYS9jb2duaXRvLmN1c3RvbS1tZXNzYWdlLnRzJztcblxuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGVudHJ5RmlsZSkpIHtcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhlbnRyeUZpbGUsIGBleHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogQVdTTGFtYmRhLkN1c3RvbU1lc3NhZ2VUcmlnZ2VyRXZlbnQpOiBQcm9taXNlPEFXU0xhbWJkYS5DdXN0b21NZXNzYWdlVHJpZ2dlckV2ZW50PiB7XG4gIGNvbnNvbGUubG9nKGV2ZW50KTtcblxuICBpZiAoZXZlbnQudHJpZ2dlclNvdXJjZSA9PT0gJ0N1c3RvbU1lc3NhZ2VfQWRtaW5DcmVhdGVVc2VyJykge1xuICAgIC8vIGV2ZW50LnJlc3BvbnNlLmVtYWlsU3ViamVjdCA9ICcnO1xuICAgIC8vIGV2ZW50LnJlc3BvbnNlLmVtYWlsTWVzc2FnZSA9ICcnO1xuICB9IGVsc2UgaWYgKGV2ZW50LnRyaWdnZXJTb3VyY2UgPT09ICdDdXN0b21NZXNzYWdlX0ZvcmdvdFBhc3N3b3JkJykge1xuICAgIC8vIGV2ZW50LnJlc3BvbnNlLmVtYWlsU3ViamVjdCA9ICcnO1xuICAgIC8vIGV2ZW50LnJlc3BvbnNlLmVtYWlsTWVzc2FnZSA9ICcnO1xuICB9IC8vIC4uLlxuXG4gIHJldHVybiBldmVudDtcbn1gLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6ICd1dGYtOCcsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1c3RvbU1lc3NhZ2VGdW5jdGlvbiA9IG5ldyBMYW1iZGFGdW5jdGlvbih0aGlzLCAnQ3VzdG9tTWVzc2FnZUZ1bmN0aW9uJywge1xuICAgICAgICBlbnRyeTogZW50cnlGaWxlLFxuICAgICAgICBsYW1iZGFPcHRpb25zOiB7XG4gICAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICAgIGxvYWRlcjoge1xuICAgICAgICAgICAgICAnLmh0bWwnOiAndGV4dCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy51c2VycG9vbC5hZGRUcmlnZ2VyKGNvZ25pdG8uVXNlclBvb2xPcGVyYXRpb24uQ1VTVE9NX01FU1NBR0UsIHRoaXMuY3VzdG9tTWVzc2FnZUZ1bmN0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMudHJpZ2dlcnM/LnByZVRva2VuR2VuZXJhdGlvbikge1xuICAgICAgY29uc3QgZW50cnlGaWxlID0gJy4vc3JjL2xhbWJkYS9jb2duaXRvLnByZS10b2tlbi1nZW5lcmF0aW9uLnRzJztcblxuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGVudHJ5RmlsZSkpIHtcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhlbnRyeUZpbGUsIGBleHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogQVdTTGFtYmRhLlByZVRva2VuR2VuZXJhdGlvblRyaWdnZXJFdmVudCk6IFByb21pc2U8QVdTTGFtYmRhLlByZVRva2VuR2VuZXJhdGlvblRyaWdnZXJFdmVudD4ge1xuICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShldmVudCkpO1xuXG4gIC8vIG1vZGlmeSBldmVudC5yZXNwb25zZSBoZXJlIC4uLlxuXG4gIHJldHVybiBldmVudDtcbn1gLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6ICd1dGYtOCcsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnByZVRva2VuR2VuZXJhdGlvbkZ1bmN0aW9uID0gbmV3IExhbWJkYUZ1bmN0aW9uKHRoaXMsICdQcmVUb2tlbkdlbmVyYXRpb25GdW5jdGlvbicsIHtcbiAgICAgICAgbGFtYmRhT3B0aW9uczoge1xuICAgICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgICAgIH0sXG4gICAgICAgIGVudHJ5OiBlbnRyeUZpbGUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMudXNlcnBvb2wuYWRkVHJpZ2dlcihjb2duaXRvLlVzZXJQb29sT3BlcmF0aW9uLlBSRV9UT0tFTl9HRU5FUkFUSU9OLCB0aGlzLnByZVRva2VuR2VuZXJhdGlvbkZ1bmN0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMudHJpZ2dlcnM/LnByZVNpZ25VcCkge1xuICAgICAgY29uc3QgZW50cnlGaWxlID0gJy4vc3JjL2xhbWJkYS9jb2duaXRvLnByZS1zaWdudXAudHMnO1xuXG4gICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZW50cnlGaWxlKSkge1xuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGVudHJ5RmlsZSwgYGV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50OiBBV1NMYW1iZGEuUHJlU2lnblVwVHJpZ2dlckV2ZW50KTogUHJvbWlzZTxBV1NMYW1iZGEuUHJlU2lnblVwVHJpZ2dlckV2ZW50PiB7XG4gIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGV2ZW50KSk7XG5cbiAgLy8gQ29uZmlybSB0aGUgdXNlclxuICAvLyBldmVudC5yZXNwb25zZS5hdXRvQ29uZmlybVVzZXIgPSB0cnVlO1xuXG4gIC8vIFNldCB0aGUgZW1haWwgYXMgdmVyaWZpZWQgaWYgaXQgaXMgaW4gdGhlIHJlcXVlc3RcbiAgLy8gaWYgKGV2ZW50LnJlcXVlc3QudXNlckF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoJ2VtYWlsJykpIHtcbiAgLy8gICBldmVudC5yZXNwb25zZS5hdXRvVmVyaWZ5RW1haWwgPSB0cnVlO1xuICAvLyB9XG5cbiAgLy8gU2V0IHRoZSBwaG9uZSBudW1iZXIgYXMgdmVyaWZpZWQgaWYgaXQgaXMgaW4gdGhlIHJlcXVlc3RcbiAgLy8gaWYgKGV2ZW50LnJlcXVlc3QudXNlckF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoJ3Bob25lX251bWJlcicpKSB7XG4gIC8vICAgZXZlbnQucmVzcG9uc2UuYXV0b1ZlcmlmeVBob25lID0gdHJ1ZTtcbiAgLy8gfVxuXG4gIHJldHVybiBldmVudDtcbn1gLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6ICd1dGYtOCcsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnByZVNpZ25VcEZ1bmN0aW9uID0gbmV3IExhbWJkYUZ1bmN0aW9uKHRoaXMsICdQcmVTaWduVXBGdW5jdGlvbicsIHtcbiAgICAgICAgbGFtYmRhT3B0aW9uczoge1xuICAgICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgICAgIH0sXG4gICAgICAgIGVudHJ5OiBlbnRyeUZpbGUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMudXNlcnBvb2wuYWRkVHJpZ2dlcihjb2duaXRvLlVzZXJQb29sT3BlcmF0aW9uLlBSRV9TSUdOX1VQLCB0aGlzLnByZVNpZ25VcEZ1bmN0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuc2VzRW1haWxTZW5kZXIpIHtcbiAgICAgICh0aGlzLnVzZXJwb29sLm5vZGUuZGVmYXVsdENoaWxkIGFzIGNvZ25pdG8uQ2ZuVXNlclBvb2wpLmVtYWlsQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgICAgZW1haWxTZW5kaW5nQWNjb3VudDogJ0RFVkVMT1BFUicsXG4gICAgICAgIGZyb206IGAke3Byb3BzLnNlc0VtYWlsU2VuZGVyLm5hbWV9IDwke3Byb3BzLnNlc0VtYWlsU2VuZGVyLmVtYWlsfT5gLFxuICAgICAgICBzb3VyY2VBcm46IGBhcm46YXdzOnNlczoke3Byb3BzLnNlc0VtYWlsU2VuZGVyLnJlZ2lvbiA/PyBTdGFjay5vZih0aGlzKS5yZWdpb259OiR7U3RhY2sub2YodGhpcykuYWNjb3VudH06aWRlbnRpdHkvJHtwcm9wcy5zZXNFbWFpbFNlbmRlci5lbWFpbH1gLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGdyb3VwTmFtZSBpbiBwcm9wcy5ncm91cHMpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocHJvcHMuZ3JvdXBzLCBncm91cE5hbWUpKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwRGVzY3JpcHRpb24gPSBwcm9wcy5ncm91cHNbZ3JvdXBOYW1lXTtcbiAgICAgICAgbmV3IGNvZ25pdG8uQ2ZuVXNlclBvb2xHcm91cCh0aGlzLCBgR3JvdXAke2dyb3VwTmFtZX1gLCB7XG4gICAgICAgICAgdXNlclBvb2xJZDogdGhpcy51c2VycG9vbC51c2VyUG9vbElkLFxuICAgICAgICAgIGdyb3VwTmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZ3JvdXBEZXNjcmlwdGlvbixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX1VTRVJQT09MSUQsIHsga2V5OiBDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX1VTRVJQT09MSUQsIHZhbHVlOiB0aGlzLnVzZXJwb29sLnVzZXJQb29sSWQgfSk7XG5cbiAgICBpZiAocHJvcHMuaWRlbnRpdHlQb29sKSB7XG4gICAgICB0aGlzLmlkZW50aXR5UG9vbCA9IG5ldyBpZGVudGl0eXBvb2wuSWRlbnRpdHlQb29sKHRoaXMsICdJZGVudGl0eVBvb2wnLCB7XG4gICAgICAgIGFsbG93VW5hdXRoZW50aWNhdGVkSWRlbnRpdGllczogdHJ1ZSxcbiAgICAgICAgaWRlbnRpdHlQb29sTmFtZTogcHJvcHMudXNlclBvb2xOYW1lICsgJy1pZGVudGl0eScsXG4gICAgICAgIC4uLnByb3BzLmlkZW50aXR5UG9vbC5wb29sQ29uZmlnLFxuICAgICAgICBhdXRoZW50aWNhdGlvblByb3ZpZGVyczoge1xuICAgICAgICAgIHVzZXJQb29sczogW25ldyBpZGVudGl0eXBvb2wuVXNlclBvb2xBdXRoZW50aWNhdGlvblByb3ZpZGVyKHsgdXNlclBvb2w6IHRoaXMudXNlcnBvb2wgfSldLFxuICAgICAgICAgIC4uLnByb3BzLmlkZW50aXR5UG9vbC5wb29sQ29uZmlnPy5hdXRoZW50aWNhdGlvblByb3ZpZGVycyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX0lERU5USVRZUE9PTF9JRCwge1xuICAgICAgICBrZXk6IENGTl9PVVRQVVRfU1VGRklYX0FVVEhfSURFTlRJVFlQT09MX0lELFxuICAgICAgICB2YWx1ZTogdGhpcy5pZGVudGl0eVBvb2wuaWRlbnRpdHlQb29sSWQsXG4gICAgICB9KTtcbiAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgQ0ZOX09VVFBVVF9TVUZGSVhfQVVUSF9JREVOVElUWVBPT0xfQVVUSF9ST0xFQVJOLCB7XG4gICAgICAgIGtleTogQ0ZOX09VVFBVVF9TVUZGSVhfQVVUSF9JREVOVElUWVBPT0xfQVVUSF9ST0xFQVJOLFxuICAgICAgICB2YWx1ZTogdGhpcy5pZGVudGl0eVBvb2wuYXV0aGVudGljYXRlZFJvbGUucm9sZUFybixcbiAgICAgIH0pO1xuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX0lERU5USVRZUE9PTF9VTkFVVEhfUk9MRUFSTiwge1xuICAgICAgICBrZXk6IENGTl9PVVRQVVRfU1VGRklYX0FVVEhfSURFTlRJVFlQT09MX1VOQVVUSF9ST0xFQVJOLFxuICAgICAgICB2YWx1ZTogdGhpcy5pZGVudGl0eVBvb2wudW5hdXRoZW50aWNhdGVkUm9sZS5yb2xlQXJuLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZFVzZXJQb29sQ2xpZW50KGlkOiBzdHJpbmcsIG9wdGlvbnM6IFVzZXJQb29sQ2xpZW50T3B0aW9ucyk6IFVzZXJQb29sQ2xpZW50IHtcbiAgICBjb25zdCBjbGllbnQgPSB0aGlzLnVzZXJwb29sLmFkZENsaWVudChpZCwgb3B0aW9ucyk7XG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX1VTRVJQT09MX0NMSUVOVElEfSR7aWR9YCwge1xuICAgICAga2V5OiBgJHtDRk5fT1VUUFVUX1NVRkZJWF9BVVRIX1VTRVJQT09MX0NMSUVOVElEfSR7aWR9YCxcbiAgICAgIHZhbHVlOiBjbGllbnQudXNlclBvb2xDbGllbnRJZCxcbiAgICB9KTtcbiAgICByZXR1cm4gY2xpZW50O1xuICB9XG5cbn0iXX0=
|
|
@@ -82,7 +82,8 @@ class GraphQlApi extends base_api_1.BaseApi {
|
|
|
82
82
|
validation: aws_cdk_lib_1.aws_certificatemanager.CertificateValidation.fromDns(this.hostedZone),
|
|
83
83
|
}),
|
|
84
84
|
};
|
|
85
|
-
new aws_cdk_lib_1.CfnOutput(this,
|
|
85
|
+
new aws_cdk_lib_1.CfnOutput(this, 'GraphQlApiDomainName', {
|
|
86
|
+
key: `${this.props.apiName}${outputs_1.CFN_OUTPUT_SUFFIX_GRAPHQL_DOMAINNAME}`,
|
|
86
87
|
value: this.apiFQDN,
|
|
87
88
|
});
|
|
88
89
|
}
|
|
@@ -450,4 +451,4 @@ function exec(cmd, args, options) {
|
|
|
450
451
|
}
|
|
451
452
|
return proc;
|
|
452
453
|
}
|
|
453
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdHJ1Y3RzL2dyYXBocWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0QkFBNEI7QUFDNUIsaURBQTREO0FBQzVELHVDQUF5QjtBQUN6Qix1Q0FBeUI7QUFDekIsNkNBQWdMO0FBR2hMLHlDQUFtRDtBQUNuRCxpQ0FBd0M7QUFDeEMsK0NBQXlFO0FBNEN6RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBYSxVQUFzQixTQUFRLGtCQUFPO0lBc0JoRDs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFVLEtBQXNCOztRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUR3QixVQUFLLEdBQUwsS0FBSyxDQUFpQjtRQWpCeEU7O1dBRUc7UUFDSyxlQUFVLEdBQThDLEVBQUUsQ0FBQztRQWlCakUsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsY0FBdUMsQ0FBQztRQUVqRSxJQUFJLGdCQUF1RCxDQUFDO1FBQzVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixnQkFBZ0IsR0FBRztnQkFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUN4QixXQUFXLEVBQUUsSUFBSSxvQ0FBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO29CQUM1RSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVc7b0JBQzVCLE1BQU0sRUFBRSxXQUFXO29CQUNuQixVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ3hCLFVBQVUsRUFBRSxvQ0FBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztpQkFDbEYsQ0FBQzthQUNILENBQUM7WUFDRixJQUFJLHVCQUFTLENBQUMsSUFB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RSxHQUFHLEVBQUMsQ0FBQyxDQUFDLG9CQUFvQixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsdUJBQXVCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0tBQ3hJO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuaW1wb3J0IHsgU3Bhd25TeW5jT3B0aW9ucywgc3Bhd25TeW5jIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgeyBBc3NldEhhc2hUeXBlLCBCdW5kbGluZ09wdGlvbnMsIEJ1bmRsaW5nT3V0cHV0LCBDZm5PdXRwdXQsIERvY2tlckltYWdlLCBUYWdzLCBhd3NfYXBwc3luYywgYXdzX2NlcnRpZmljYXRlbWFuYWdlciwgYXdzX2lhbSwgYXdzX2xvZ3MsIGF3c19yb3V0ZTUzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBDb2duaXRvQXV0aGVudGljYXRpb24gfSBmcm9tICcuL2F1dGhlbnRpY2F0aW9uJztcbmltcG9ydCB7IEJhc2VBcGksIEJhc2VBcGlQcm9wcyB9IGZyb20gJy4vYmFzZS1hcGknO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24gfSBmcm9tICcuL2Z1bmMnO1xuaW1wb3J0IHsgQ0ZOX09VVFBVVF9TVUZGSVhfR1JBUEhRTF9ET01BSU5OQU1FIH0gZnJvbSAnLi4vc2hhcmVkL291dHB1dHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoUWxBcGlQcm9wcyBleHRlbmRzIEJhc2VBcGlQcm9wcyB7XG4gIGRlZmluaXRpb25GaWxlTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZ0bFJlc29sdmVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgZGF0YXNvdXJjZSB0aGUgVlRMIHJlc29sdmVyIHRhcmdldHNcbiAgICovXG4gIGRhdGFTb3VyY2U6IGF3c19hcHBzeW5jLkJhc2VEYXRhU291cmNlO1xuXG4gIC8qKlxuICAgKiBzdHJpbmcgcmVwbGFjZW1lbnRzIHRvIHByb2Nlc3Mgb24gdGhlIFZUTFxuICAgKlxuICAgKiBAZGVmYXVsdCBubyB2YXJpYWJsZSBleHBhbnNpb25zXG4gICAqL1xuICB2YXJpYWJsZXM/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKc1Jlc29sdmVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBWYXJpYWJsZXMgdGhhdCB3aWxsIGJlIHB1dCBpbnRvIHRoZSBcInN0YXNoXCIgb2YgdGhlIHJlc29sdmVyIHBpcGVsaW5lXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXNoVmFsdWVzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogbmFtZSBvZiB0aGUgcGlwZWxpbmUgc3RlcHMgdG8gY3JlYXRlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gb25seSBhIGRlZmF1bHQgc3RlcCB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lU3RlcE5hbWVzPzogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBKc1Jlc29sdmVyQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBpbmRleDogbnVtYmVyO1xuICBzdGVwQ291bnQ6IG51bWJlcjtcbiAgZW50cnlGaWxlOiBzdHJpbmc7XG4gIGZ1bmN0aW9uSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgR3JhcGhRbEFwaSBjb25zdHJ1Y3Qgc2V0cyB1cCBhbiBBV1MgQXBwU3luYyBHcmFwaFFMIEFQSSBpbnRlZ3JhdGVkIHdpdGggQ29nbml0byBmb3IgYXV0aGVudGljYXRpb24gYW5kIER5bmFtb0RCIGZvciBkYXRhIHN0b3JhZ2UuXG4gKiBUaGlzIGNvbnN0cnVjdCBmYWNpbGl0YXRlcyB0aGUgY3JlYXRpb24gb2YgYSBHcmFwaFFMIEFQSSB3aXRoIHZhcmlvdXMgY29uZmlndXJhdGlvbnMsIGluY2x1ZGluZyBjdXN0b20gZG9tYWluLCBsb2dnaW5nLCBzY2hlbWEgZGVmaW5pdGlvbixcbiAqIGFuZCBhdXRob3JpemF0aW9uIHVzaW5nIENvZ25pdG8gVXNlciBQb29sIGFuZCBJZGVudGl0eSBQb29sLiBJdCBhbHNvIHByb3ZpZGVzIG1ldGhvZHMgdG8gZHluYW1pY2FsbHkgYWRkIHJlc29sdmVycyBhbmQgZ3JhbnQgYWNjZXNzIHRvIHNwZWNpZmljIGZpZWxkcy5cbiAqXG4gKiBAdGVtcGxhdGUgUkVTT0xWRVJTIC0gVGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIEdyYXBoUUwgcmVzb2x2ZXJzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBhcGkgPSBuZXcgR3JhcGhRbEFwaSh0aGlzLCAnTXlHcmFwaFFsQXBpJywge1xuICogICBhcGlOYW1lOiAnTXlBUEknLFxuICogICBzdGFnZU5hbWU6ICdkZXYnLFxuICogICBkZWZpbml0aW9uRmlsZU5hbWU6ICdzY2hlbWEuZ3JhcGhxbCcsXG4gKiAgIGF1dGhlbnRpY2F0aW9uOiBteUNvZ25pdG9BdXRoLFxuICogICBzaW5nbGVUYWJsZURhdGFzdG9yZTogbXlEeW5hbW9EQlRhYmxlLFxuICogfSk7XG4gKlxuICogLy8gQWRkIGEgTGFtYmRhIHJlc29sdmVyXG4gKiBhcGkuYWRkTGFtYmRhUmVzb2x2ZXIoJ1F1ZXJ5JywgJ2dldEl0ZW0nKTtcbiAqXG4gKiAvLyBHcmFudCBhY2Nlc3MgdG8gdW5hdXRoZW50aWNhdGVkIHVzZXJzIGZvciBhIHNwZWNpZmljIHF1ZXJ5XG4gKiBhcGkuZ3JhbnRBY2Nlc3NVbkF1dGgoJ1F1ZXJ5JywgJ2dldEl0ZW0nKTtcbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoUWxBcGk8UkVTT0xWRVJTPiBleHRlbmRzIEJhc2VBcGkge1xuXG4gIC8qKlxuICAgKiBUaGUgQVdTIEFwcFN5bmMgR3JhcGhRTCBBUEkgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXBpOiBhd3NfYXBwc3luYy5HcmFwaHFsQXBpO1xuXG4gIC8qKlxuICAgKiBUaGUgb3B0aW9uYWwgRHluYW1vREIgZGF0YSBzb3VyY2UgZm9yIHRoZSBHcmFwaFFMIEFQSS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWJsZURhdGFTb3VyY2U/OiBhd3NfYXBwc3luYy5EeW5hbW9EYkRhdGFTb3VyY2U7XG5cbiAgLyoqXG4gICAqIEEgY29sbGVjdGlvbiBvZiBMYW1iZGEgZnVuY3Rpb25zIHVzZWQgYXMgcmVzb2x2ZXJzIGZvciB0aGUgR3JhcGhRTCBBUEkuXG4gICAqL1xuICBwcml2YXRlIF9mdW5jdGlvbnM6IHsgW29wZXJhdGlvbklkOiBzdHJpbmddOiBMYW1iZGFGdW5jdGlvbiB9ID0ge307XG5cbiAgLyoqXG4gICAqIFRoZSBDb2duaXRvIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwcml2YXRlIGNvZ25pdG9BdXRoOiBDb2duaXRvQXV0aGVudGljYXRpb247XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgR3JhcGhRbEFwaS5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIHNjb3BlIGluIHdoaWNoIHRoaXMgY29uc3RydWN0IGlzIGRlZmluZWQuXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBzY29wZWQgY29uc3RydWN0IElELlxuICAgKiBAcGFyYW0gcHJvcHMgLSBUaGUgcHJvcGVydGllcyBvZiB0aGUgR3JhcGhRbEFwaSBjb25zdHJ1Y3QuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcml2YXRlIHByb3BzOiBHcmFwaFFsQXBpUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHRoaXMuY29nbml0b0F1dGggPSBwcm9wcy5hdXRoZW50aWNhdGlvbiBhcyBDb2duaXRvQXV0aGVudGljYXRpb247XG5cbiAgICBsZXQgY3VzdG9tRG9tYWluTmFtZTogYXdzX2FwcHN5bmMuRG9tYWluT3B0aW9ucyB8IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5hcGlGUUROKSB7XG4gICAgICBjdXN0b21Eb21haW5OYW1lID0ge1xuICAgICAgICBkb21haW5OYW1lOiB0aGlzLmFwaUZRRE4sXG4gICAgICAgIGNlcnRpZmljYXRlOiBuZXcgYXdzX2NlcnRpZmljYXRlbWFuYWdlci5EbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZSh0aGlzLCAnQ2VydCcsIHtcbiAgICAgICAgICBob3N0ZWRab25lOiB0aGlzLmhvc3RlZFpvbmUhLFxuICAgICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgICAgZG9tYWluTmFtZTogdGhpcy5hcGlGUUROLFxuICAgICAgICAgIHZhbGlkYXRpb246IGF3c19jZXJ0aWZpY2F0ZW1hbmFnZXIuQ2VydGlmaWNhdGVWYWxpZGF0aW9uLmZyb21EbnModGhpcy5ob3N0ZWRab25lKSxcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHt0aGlzLnByb3BzLmFwaU5hbWV9JHtDRk5fT1VUUFVUX1NVRkZJWF9HUkFQSFFMX0RPTUFJTk5BTUV9YCwge1xuICAgICAgICB2YWx1ZTogdGhpcy5hcGlGUUROLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5hcGkgPSBuZXcgYXdzX2FwcHN5bmMuR3JhcGhxbEFwaSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiBgJHtwcm9wcy5hcGlOYW1lfSBbJHtwcm9wcy5zdGFnZU5hbWV9XWAsXG4gICAgICBsb2dDb25maWc6IHtcbiAgICAgICAgZmllbGRMb2dMZXZlbDogYXdzX2FwcHN5bmMuRmllbGRMb2dMZXZlbC5BTEwsXG4gICAgICAgIHJldGVudGlvbjogYXdzX2xvZ3MuUmV0ZW50aW9uRGF5cy5UV09fTU9OVEhTLFxuICAgICAgfSxcbiAgICAgIHNjaGVtYTogYXdzX2FwcHN5bmMuU2NoZW1hRmlsZS5mcm9tQXNzZXQocHJvcHMuZGVmaW5pdGlvbkZpbGVOYW1lKSxcbiAgICAgIGRvbWFpbk5hbWU6IGN1c3RvbURvbWFpbk5hbWUsXG4gICAgICAuLi50aGlzLmNvZ25pdG9BdXRoICYmIHtcbiAgICAgICAgYXV0aG9yaXphdGlvbkNvbmZpZzoge1xuICAgICAgICAgIGFkZGl0aW9uYWxBdXRob3JpemF0aW9uTW9kZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYXV0aG9yaXphdGlvblR5cGU6IGF3c19hcHBzeW5jLkF1dGhvcml6YXRpb25UeXBlLlVTRVJfUE9PTCxcbiAgICAgICAgICAgICAgdXNlclBvb2xDb25maWc6IHtcbiAgICAgICAgICAgICAgICB1c2VyUG9vbDogdGhpcy5jb2duaXRvQXV0aC51c2VycG9vbCxcbiAgICAgICAgICAgICAgICBkZWZhdWx0QWN0aW9uOiBhd3NfYXBwc3luYy5Vc2VyUG9vbERlZmF1bHRBY3Rpb24uREVOWSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAuLi50aGlzLmNvZ25pdG9BdXRoLmlkZW50aXR5UG9vbCA/IFt7IGF1dGhvcml6YXRpb25UeXBlOiBhd3NfYXBwc3luYy5BdXRob3JpemF0aW9uVHlwZS5JQU0gfV0gOiBbXSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBpZiAoY3VzdG9tRG9tYWluTmFtZSAmJiB0aGlzLmFwaS5hcHBTeW5jRG9tYWluTmFtZSkge1xuICAgICAgbmV3IGF3c19yb3V0ZTUzLkNuYW1lUmVjb3JkKHRoaXMsICdEbnNSZWNvcmQnLCB7XG4gICAgICAgIHpvbmU6IHRoaXMuaG9zdGVkWm9uZSEsXG4gICAgICAgIHJlY29yZE5hbWU6IGN1c3RvbURvbWFpbk5hbWUuZG9tYWluTmFtZSxcbiAgICAgICAgZG9tYWluTmFtZTogdGhpcy5hcGkuYXBwU3luY0RvbWFpbk5hbWUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBpZiAoKHByb3BzLm1vbml0b3JpbmcgPz8gdHJ1ZSkgJiYgdGhpcy5tb25pdG9yaW5nKSB7XG4gICAgLy8gICB0aGlzLm1vbml0b3JpbmcuYXBpRXJyb3JzV2lkZ2V0LmFkZExlZnRNZXRyaWMobmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAvLyAgICAgbmFtZXNwYWNlOiAnQVdTL0FwcFN5bmMnLFxuICAgIC8vICAgICBtZXRyaWNOYW1lOiAnNVhYRXJyb3InLFxuICAgIC8vICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgLy8gICAgICAgR3JhcGhRTEFQSUlkOiB0aGlzLmFwaS5hcGlJZCxcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAgc3RhdGlzdGljOiAnc3VtJyxcbiAgICAvLyAgIH0pKTtcbiAgICAvLyAgIHRoaXMubW9uaXRvcmluZy5hcGlFcnJvcnNXaWRnZXQuYWRkTGVmdE1ldHJpYyhuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgIC8vICAgICBuYW1lc3BhY2U6ICdBV1MvQXBwU3luYycsXG4gICAgLy8gICAgIG1ldHJpY05hbWU6ICc0WFhFcnJvcicsXG4gICAgLy8gICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAvLyAgICAgICBHcmFwaFFMQVBJSWQ6IHRoaXMuYXBpLmFwaUlkLFxuICAgIC8vICAgICB9LFxuICAgIC8vICAgICBzdGF0aXN0aWM6ICdzdW0nLFxuICAgIC8vICAgfSkpO1xuICAgIC8vICAgdGhpcy5tb25pdG9yaW5nLmFwaUxhdGVuY3lXaWRnZXQuYWRkTGVmdE1ldHJpYyhuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgIC8vICAgICBuYW1lc3BhY2U6ICdBV1MvQXBwU3luYycsXG4gICAgLy8gICAgIG1ldHJpY05hbWU6ICdMYXRlbmN5JyxcbiAgICAvLyAgICAgZGltZW5zaW9uc01hcDoge1xuICAgIC8vICAgICAgIEdyYXBoUUxBUElJZDogdGhpcy5hcGkuYXBpSWQsXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICAgIHN0YXRpc3RpYzogJ0F2ZXJhZ2UnLFxuICAgIC8vICAgfSkpO1xuICAgIC8vICAgdGhpcy5tb25pdG9yaW5nLmFwaUxhdGVuY3lXaWRnZXQuYWRkTGVmdE1ldHJpYyhuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgIC8vICAgICBuYW1lc3BhY2U6ICdBV1MvQXBwU3luYycsXG4gICAgLy8gICAgIG1ldHJpY05hbWU6ICdMYXRlbmN5JyxcbiAgICAvLyAgICAgZGltZW5zaW9uc01hcDoge1xuICAgIC8vICAgICAgIEdyYXBoUUxBUElJZDogdGhpcy5hcGkuYXBpSWQsXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICAgIHN0YXRpc3RpYzogJ3A5MCcsXG4gICAgLy8gICB9KSk7XG4gICAgLy8gICB0aGlzLm1vbml0b3JpbmcuYXBpTGF0ZW5jeVRhaWxXaWRnZXQuYWRkTGVmdE1ldHJpYyhuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgIC8vICAgICBuYW1lc3BhY2U6ICdBV1MvQXBwU3luYycsXG4gICAgLy8gICAgIG1ldHJpY05hbWU6ICdMYXRlbmN5JyxcbiAgICAvLyAgICAgZGltZW5zaW9uc01hcDoge1xuICAgIC8vICAgICAgIEdyYXBoUUxBUElJZDogdGhpcy5hcGkuYXBpSWQsXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICAgIHN0YXRpc3RpYzogJ3A5NScsXG4gICAgLy8gICB9KSk7XG4gICAgLy8gICB0aGlzLm1vbml0b3JpbmcuYXBpTGF0ZW5jeVRhaWxXaWRnZXQuYWRkTGVmdE1ldHJpYyhuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgIC8vICAgICBuYW1lc3BhY2U6ICdBV1MvQXBwU3luYycsXG4gICAgLy8gICAgIG1ldHJpY05hbWU6ICdMYXRlbmN5JyxcbiAgICAvLyAgICAgZGltZW5zaW9uc01hcDoge1xuICAgIC8vICAgICAgIEdyYXBoUUxBUElJZDogdGhpcy5hcGkuYXBpSWQsXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICAgIHN0YXRpc3RpYzogJ3A5OScsXG4gICAgLy8gICB9KSk7XG4gICAgLy8gfVxuXG4gICAgaWYgKHByb3BzLnNpbmdsZVRhYmxlRGF0YXN0b3JlKSB7XG4gICAgICB0aGlzLnRhYmxlRGF0YVNvdXJjZSA9IG5ldyBhd3NfYXBwc3luYy5EeW5hbW9EYkRhdGFTb3VyY2UodGhpcywgJ1NpbmdsZVRhYmxlU291cmNlJywge1xuICAgICAgICBhcGk6IHRoaXMuYXBpLFxuICAgICAgICB0YWJsZTogcHJvcHMuc2luZ2xlVGFibGVEYXRhc3RvcmU/LnRhYmxlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRBY2Nlc3M8VFlQRSBleHRlbmRzIGtleW9mIFJFU09MVkVSUywgRklFTERUWVBFIGV4dGVuZHMgTm9uTnVsbGFibGU8UkVTT0xWRVJTW1RZUEVdPj4oZ3JhbnRlZTogYXdzX2lhbS5JR3JhbnRhYmxlLCB0eXBlTmFtZTogVFlQRSwgLi4uZmllbGROYW1lczogKGtleW9mIEZJRUxEVFlQRSlbXSk6IHZvaWQge1xuICAgIHRoaXMuYXBpLmdyYW50KGdyYW50ZWUsIGF3c19hcHBzeW5jLklhbVJlc291cmNlLm9mVHlwZSh0eXBlTmFtZSBhcyBzdHJpbmcsIC4uLmZpZWxkTmFtZXMgYXMgc3RyaW5nW10pLCAnYXBwc3luYzpHcmFwaFFMJyk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICovXG4gIHB1YmxpYyBncmFudEFjY2Vzc1VuQXV0aDxUWVBFIGV4dGVuZHMga2V5b2YgUkVTT0xWRVJTLCBGSUVMRFRZUEUgZXh0ZW5kcyBOb25OdWxsYWJsZTxSRVNPTFZFUlNbVFlQRV0+Pih0eXBlTmFtZTogVFlQRSwgLi4uZmllbGROYW1lczogKGtleW9mIEZJRUxEVFlQRSlbXSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb2duaXRvQXV0aC5pZGVudGl0eVBvb2wpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGdyYW50IHRvIENvZ25pdG8gaWRlbnRpdHkgcG9vbCBhcyBub25lIGlzIHByb3ZpZGVkJyk7XG4gICAgfVxuICAgIHRoaXMuZ3JhbnRBY2Nlc3ModGhpcy5jb2duaXRvQXV0aC5pZGVudGl0eVBvb2wudW5hdXRoZW50aWNhdGVkUm9sZSwgdHlwZU5hbWUsIC4uLmZpZWxkTmFtZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRBY2Nlc3NBdXRoPFRZUEUgZXh0ZW5kcyBrZXlvZiBSRVNPTFZFUlMsIEZJRUxEVFlQRSBleHRlbmRzIE5vbk51bGxhYmxlPFJFU09MVkVSU1tUWVBFXT4+KHR5cGVOYW1lOiBUWVBFLCAuLi5maWVsZE5hbWVzOiAoa2V5b2YgRklFTERUWVBFKVtdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvZ25pdG9BdXRoLmlkZW50aXR5UG9vbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZ3JhbnQgdG8gQ29nbml0byBpZGVudGl0eSBwb29sIGFzIG5vbmUgaXMgcHJvdmlkZWQnKTtcbiAgICB9XG4gICAgdGhpcy5ncmFudEFjY2Vzcyh0aGlzLmNvZ25pdG9BdXRoLmlkZW50aXR5UG9vbC5hdXRoZW50aWNhdGVkUm9sZSwgdHlwZU5hbWUsIC4uLmZpZWxkTmFtZXMpO1xuICB9XG5cblxuICAvKipcbiAgICogZ2V0RnVuY3Rpb25Gb3JPcGVyYXRpb25cbiAgICovXG4gIHB1YmxpYyBnZXRGdW5jdGlvbkZvck9wZXJhdGlvbjxUWVBFIGV4dGVuZHMga2V5b2YgUkVTT0xWRVJTLCBGSUVMRFRZUEUgZXh0ZW5kcyBOb25OdWxsYWJsZTxSRVNPTFZFUlNbVFlQRV0+Pih0eXBlTmFtZTogVFlQRSwgZmllbGROYW1lOiBrZXlvZiBGSUVMRFRZUEUpOiBMYW1iZGFGdW5jdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Z1bmN0aW9uc1tgJHt0eXBlTmFtZSBhcyBzdHJpbmd9LiR7ZmllbGROYW1lIGFzIFN0cmluZ31gXTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRMYW1iZGFSZXNvbHZlcjxUWVBFIGV4dGVuZHMga2V5b2YgUkVTT0xWRVJTLCBGSUVMRFRZUEUgZXh0ZW5kcyBOb25OdWxsYWJsZTxSRVNPTFZFUlNbVFlQRV0+Pih0eXBlTmFtZTogVFlQRSwgZmllbGROYW1lOiBrZXlvZiBGSUVMRFRZUEUpOiBMYW1iZGFGdW5jdGlvbiB7XG4gICAgY29uc3Qgb3BlcmF0aW9uSWQgPSBgJHt0eXBlTmFtZSBhcyBzdHJpbmd9LiR7ZmllbGROYW1lIGFzIFN0cmluZ31gO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYFR5cGUgJHt0eXBlTmFtZSBhcyBzdHJpbmd9IEZpZWxkICR7ZmllbGROYW1lIGFzIFN0cmluZ30gUmVzb2x2ZXJgO1xuXG4gICAgY29uc3QgZW50cnlGaWxlID0gYC4vc3JjL2xhbWJkYS8ke29wZXJhdGlvbklkfS50c2A7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGVudHJ5RmlsZSkpIHtcbiAgICAgIGZzLm1rZGlyU3luYygnLi9zcmMvbGFtYmRhLycsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgdGhpcy5jcmVhdGVFbnRyeUZpbGUoZW50cnlGaWxlLCB0eXBlTmFtZSBhcyBzdHJpbmcsIGZpZWxkTmFtZSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIGNvbnN0IGZuID0gbmV3IExhbWJkYUZ1bmN0aW9uKHRoaXMsIGBGbiR7b3BlcmF0aW9uSWR9YCwge1xuICAgICAgc3RhZ2VOYW1lOiB0aGlzLnByb3BzLnN0YWdlTmFtZSxcbiAgICAgIGFkZGl0aW9uYWxFbnY6IHRoaXMucHJvcHMuYWRkaXRpb25hbEVudixcbiAgICAgIGVudHJ5OiBlbnRyeUZpbGUsXG4gICAgICBkZXNjcmlwdGlvbjogYFske3RoaXMucHJvcHMuc3RhZ2VOYW1lfV0gJHtkZXNjcmlwdGlvbn1gLFxuICAgICAgLi4udGhpcy5wcm9wcy5hdXRoZW50aWNhdGlvbiAmJiB7XG4gICAgICAgIHVzZXJQb29sOiAodGhpcy5wcm9wcy5hdXRoZW50aWNhdGlvbiBhcyBDb2duaXRvQXV0aGVudGljYXRpb24pLnVzZXJwb29sLFxuICAgICAgfSxcbiAgICAgIC4uLnRoaXMucHJvcHMuc2luZ2xlVGFibGVEYXRhc3RvcmUgJiYge1xuICAgICAgICB0YWJsZTogdGhpcy5wcm9wcy5zaW5nbGVUYWJsZURhdGFzdG9yZS50YWJsZSxcbiAgICAgICAgdGFibGVXcml0ZXM6IHR5cGVOYW1lID09PSAnTXV0YXRpb24nLFxuICAgICAgfSxcbiAgICAgIC4uLnRoaXMucHJvcHMuYXNzZXRDZG4gJiYge1xuICAgICAgICBhc3NldERvbWFpbk5hbWU6IHRoaXMucHJvcHMuYXNzZXRDZG4uYXNzZXREb21haW5OYW1lLFxuICAgICAgICBhc3NldEJ1Y2tldDogdGhpcy5wcm9wcy5hc3NldENkbi5hc3NldEJ1Y2tldCxcbiAgICAgIH0sXG4gICAgICBsYW1iZGFPcHRpb25zOiB0aGlzLnByb3BzLmxhbWJkYU9wdGlvbnMsXG4gICAgICBsYW1iZGFUcmFjaW5nOiB0aGlzLnByb3BzLmxhbWJkYVRyYWNpbmcsXG4gICAgfSk7XG4gICAgdGhpcy5fZnVuY3Rpb25zW29wZXJhdGlvbklkXSA9IGZuO1xuICAgIFRhZ3Mub2YoZm4pLmFkZCgnR3JhcGhRTCcsIGRlc2NyaXB0aW9uKTtcblxuICAgIC8vIGlmICh0aGlzLm1vbml0b3JpbmcpIHtcbiAgICAvLyAgIHRoaXMubW9uaXRvcmluZy5sYW1iZGFEdXJhdGlvbnNXaWRnZXQuYWRkTGVmdE1ldHJpYyhmbi5tZXRyaWNEdXJhdGlvbigpKTtcbiAgICAvLyAgIHRoaXMubW9uaXRvcmluZy5sYW1iZGFJbnZva2VzV2lkZ2V0LmFkZExlZnRNZXRyaWMoZm4ubWV0cmljSW52b2NhdGlvbnMoKSk7XG4gICAgLy8gICB0aGlzLm1vbml0b3JpbmcubGFtYmRhRXJyb3JzV2lkZ2V0LmFkZExlZnRNZXRyaWMoZm4ubWV0cmljRXJyb3JzKCkpO1xuICAgIC8vICAgdGhpcy5tb25pdG9yaW5nLmxhbWJkYUVycm9yc1dpZGdldC5hZGRMZWZ0TWV0cmljKGZuLm1ldHJpY1Rocm90dGxlcygpKTtcbiAgICAvLyB9XG5cbiAgICBjb25zdCBkYXRhU291cmNlID0gbmV3IGF3c19hcHBzeW5jLkxhbWJkYURhdGFTb3VyY2UodGhpcywgYExhbWJkYURTJHtvcGVyYXRpb25JZH1gLCB7XG4gICAgICBhcGk6IHRoaXMuYXBpLFxuICAgICAgbmFtZTogYExhbWJkYV8ke3R5cGVOYW1lIGFzIHN0cmluZ31fJHtmaWVsZE5hbWUgYXMgU3RyaW5nfWAsXG4gICAgICBsYW1iZGFGdW5jdGlvbjogZm4sXG4gICAgfSk7XG5cbiAgICBuZXcgYXdzX2FwcHN5bmMuUmVzb2x2ZXIodGhpcywgYFJlc29sdmVyJHtvcGVyYXRpb25JZH1gLCB7XG4gICAgICBhcGk6IHRoaXMuYXBpLFxuICAgICAgdHlwZU5hbWU6IHR5cGVOYW1lIGFzIHN0cmluZyxcbiAgICAgIGZpZWxkTmFtZTogZmllbGROYW1lIGFzIHN0cmluZyxcbiAgICAgIGRhdGFTb3VyY2UsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgcHVibGljIGFkZER5bmFtb0RiVnRsUmVzb2x2ZXI8VFlQRSBleHRlbmRzIGtleW9mIFJFU09MVkVSUywgRklFTERUWVBFIGV4dGVuZHMgTm9uTnVsbGFibGU8UkVTT0xWRVJTW1RZUEVdPj4odHlwZU5hbWU6IFRZUEUsIGZpZWxkTmFtZToga2V5b2YgRklFTERUWVBFLCBvcHRpb25zPzogT21pdDxWdGxSZXNvbHZlck9wdGlvbnMsICdkYXRhU291cmNlJz4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudGFibGVEYXRhU291cmNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0R5bmFtb0RCIGlzIG5vdCBpbml0aWFsaXplZCcpO1xuICAgIH1cbiAgICB0aGlzLmFkZFZ0bFJlc29sdmVyKHR5cGVOYW1lLCBmaWVsZE5hbWUsIHtcbiAgICAgIGRhdGFTb3VyY2U6IHRoaXMudGFibGVEYXRhU291cmNlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGREeW5hbW9EYkpTUmVzb2x2ZXI8VFlQRSBleHRlbmRzIGtleW9mIFJFU09MVkVSUywgRklFTERUWVBFIGV4dGVuZHMgTm9uTnVsbGFibGU8UkVTT0xWRVJTW1RZUEVdPj4odHlwZU5hbWU6IFRZUEUsIGZpZWxkTmFtZToga2V5b2YgRklFTERUWVBFLCBvcHRpb25zPzogSnNSZXNvbHZlck9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudGFibGVEYXRhU291cmNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0R5bmFtb0RCIGlzIG5vdCBpbml0aWFsaXplZCcpO1xuICAgIH1cbiAgICB0aGlzLmFkZEpTUmVzb2x2ZXIodHlwZU5hbWUsIGZpZWxkTmFtZSwgdGhpcy50YWJsZURhdGFTb3VyY2UsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBzdGFzaFZhbHVlczoge1xuICAgICAgICAuLi5vcHRpb25zPy5zdGFzaFZhbHVlcyA/PyB7fSxcbiAgICAgICAgdGFibGU6IHRoaXMucHJvcHMuc2luZ2xlVGFibGVEYXRhc3RvcmUhLnRhYmxlLnRhYmxlTmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkSlNSZXNvbHZlcjxUWVBFIGV4dGVuZHMga2V5b2YgUkVTT0xWRVJTLCBGSUVMRFRZUEUgZXh0ZW5kcyBOb25OdWxsYWJsZTxSRVNPTFZFUlNbVFlQRV0+Pih0eXBlTmFtZTogVFlQRSwgZmllbGROYW1lOiBrZXlvZiBGSUVMRFRZUEUsIGRhdGFTb3VyY2U6IGF3c19hcHBzeW5jLkJhc2VEYXRhU291cmNlLCBvcHRpb25zPzogSnNSZXNvbHZlck9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBvcGVyYXRpb25JZCA9IGAke3R5cGVOYW1lIGFzIHN0cmluZ30uJHtmaWVsZE5hbWUgYXMgU3RyaW5nfWA7XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSBgVHlwZSAke3R5cGVOYW1lIGFzIHN0cmluZ30gRmllbGQgJHtmaWVsZE5hbWUgYXMgU3RyaW5nfSBSZXNvbHZlcmA7XG5cbiAgICBjb25zdCByZXNvbHZlckRpciA9ICcuL3NyYy9qcy1yZXNvbHZlci8nO1xuICAgIGNvbnN0IGZ1bmN0aW9uczogSnNSZXNvbHZlckNvbmZpZ1tdID0gW107XG5cbiAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMucGlwZWxpbmVTdGVwTmFtZXMgfHwgb3B0aW9ucy5waXBlbGluZVN0ZXBOYW1lcy5sZW5ndGggPT0gMCkge1xuICAgICAgZnVuY3Rpb25zLnB1c2goe1xuICAgICAgICBuYW1lOiAnZGVmYXVsdCcsXG4gICAgICAgIGluZGV4OiAwLFxuICAgICAgICBzdGVwQ291bnQ6IDEsXG4gICAgICAgIGVudHJ5RmlsZTogYCR7cmVzb2x2ZXJEaXJ9LyR7b3BlcmF0aW9uSWR9LnRzYCxcbiAgICAgICAgZnVuY3Rpb25JZDogYEpTRnVuY3Rpb24ke29wZXJhdGlvbklkfWAsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZnVuY3Rpb25zLnB1c2goLi4ub3B0aW9ucy5waXBlbGluZVN0ZXBOYW1lcy5tYXAoKG5hbWUsIGluZGV4KSA9PiAoe1xuICAgICAgICBuYW1lLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgc3RlcENvdW50OiBvcHRpb25zLnBpcGVsaW5lU3RlcE5hbWVzIS5sZW5ndGgsXG4gICAgICAgIGVudHJ5RmlsZTogYCR7cmVzb2x2ZXJEaXJ9LyR7b3BlcmF0aW9uSWR9LiR7bmFtZX0udHNgLFxuICAgICAgICBmdW5jdGlvbklkOiBgSlNGdW5jdGlvbiR7b3BlcmF0aW9uSWR9JHtuYW1lfWAsXG4gICAgICB9KSkpO1xuICAgIH1cblxuICAgIGNvbnN0IHBpcGVsaW5lQ29uZmlnID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGZuIG9mIGZ1bmN0aW9ucykge1xuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGZuLmVudHJ5RmlsZSkpIHtcbiAgICAgICAgZnMubWtkaXJTeW5jKHJlc29sdmVyRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgdGhpcy5jcmVhdGVKU1Jlc29sdmVyRmlsZShmbiwgdHlwZU5hbWUgYXMgc3RyaW5nLCBmaWVsZE5hbWUgYXMgc3RyaW5nKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QganNGdW5jdGlvbiA9IG5ldyBhd3NfYXBwc3luYy5BcHBzeW5jRnVuY3Rpb24odGhpcywgZm4uZnVuY3Rpb25JZCwge1xuICAgICAgICBhcGk6IHRoaXMuYXBpLFxuICAgICAgICBuYW1lOiBvcGVyYXRpb25JZC5yZXBsYWNlKC9cXC4vZywgJycpLFxuICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgY29kZTogYXdzX2FwcHN5bmMuQ29kZS5mcm9tQXNzZXQoJy4nLCB7XG4gICAgICAgICAgYXNzZXRIYXNoVHlwZTogQXNzZXRIYXNoVHlwZS5PVVRQVVQsXG4gICAgICAgICAgZGVwbG95VGltZTogdHJ1ZSxcbiAgICAgICAgICBidW5kbGluZzoge1xuICAgICAgICAgICAgaW1hZ2U6IERvY2tlckltYWdlLmZyb21SZWdpc3RyeSgnZHVtbXknKSwgLy8gV2lsbCBuZXZlciBiZSB1c2VkIGR1ZSB0byBsb2NhbCBidW5kbGluZ1xuICAgICAgICAgICAgb3V0cHV0VHlwZTogQnVuZGxpbmdPdXRwdXQuU0lOR0xFX0ZJTEUsXG4gICAgICAgICAgICBmdW5jdGlvbklkOiBmbi5mdW5jdGlvbklkLFxuICAgICAgICAgICAgbG9jYWw6IHtcbiAgICAgICAgICAgICAgdHJ5QnVuZGxlKG91dHB1dERpcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9zUGxhdGZvcm0gPSBvcy5wbGF0Zm9ybSgpO1xuICAgICAgICAgICAgICAgIGV4ZWMoXG4gICAgICAgICAgICAgICAgICBvc1BsYXRmb3JtID09PSAnd2luMzInID8gJ2NtZCcgOiAnYmFzaCcsXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIG9zUGxhdGZvcm0gPT09ICd3aW4zMicgPyAnL2MnIDogJy1jJyxcbiAgICAgICAgICAgICAgICAgICAgYGVzYnVpbGQgLS1idW5kbGUgLS1zb3VyY2VtYXA9aW5saW5lIC0tc291cmNlcy1jb250ZW50PWZhbHNlIC0tdGFyZ2V0PWVzbmV4dCAtLXBsYXRmb3JtPW5vZGUgLS1mb3JtYXQ9ZXNtIC0tZXh0ZXJuYWw6QGF3cy1hcHBzeW5jL3V0aWxzIC0tb3V0ZGlyPSR7b3V0cHV0RGlyfSAke2ZuLmVudHJ5RmlsZX1gLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZW52OiB7IC4uLnByb2Nlc3MuZW52IH0sXG4gICAgICAgICAgICAgICAgICAgIHN0ZGlvOiBbIC8vIHNob3cgb3V0cHV0XG4gICAgICAgICAgICAgICAgICAgICAgJ2lnbm9yZScsIC8vIGlnbm9yZSBzdGRpb1xuICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLCAvLyByZWRpcmVjdCBzdGRvdXQgdG8gc3RkZXJyXG4gICAgICAgICAgICAgICAgICAgICAgJ2luaGVyaXQnLCAvLyBpbmhlcml0IHN0ZGVyclxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICB3aW5kb3dzVmVyYmF0aW1Bcmd1bWVudHM6IG9zUGxhdGZvcm0gPT09ICd3aW4zMicsXG4gICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9IGFzIEJ1bmRsaW5nT3B0aW9ucyxcbiAgICAgICAgfSksXG4gICAgICAgIHJ1bnRpbWU6IGF3c19hcHBzeW5jLkZ1bmN0aW9uUnVudGltZS5KU18xXzBfMCxcbiAgICAgIH0pO1xuICAgICAgcGlwZWxpbmVDb25maWcucHVzaChqc0Z1bmN0aW9uKTtcbiAgICB9XG5cbiAgICBuZXcgYXdzX2FwcHN5bmMuUmVzb2x2ZXIodGhpcywgYFJlc29sdmVyJHtvcGVyYXRpb25JZH1gLCB7XG4gICAgICBhcGk6IHRoaXMuYXBpLFxuICAgICAgdHlwZU5hbWU6IHR5cGVOYW1lIGFzIHN0cmluZyxcbiAgICAgIGZpZWxkTmFtZTogZmllbGROYW1lIGFzIHN0cmluZyxcbiAgICAgIHJ1bnRpbWU6IGF3c19hcHBzeW5jLkZ1bmN0aW9uUnVudGltZS5KU18xXzBfMCxcbiAgICAgIHBpcGVsaW5lQ29uZmlnLFxuICAgICAgY29kZTogYXdzX2FwcHN5bmMuQ29kZS5mcm9tSW5saW5lKGBcbiAgICAvLyBUaGUgYmVmb3JlIHN0ZXBcbiAgICBleHBvcnQgZnVuY3Rpb24gcmVxdWVzdChjdHgpIHtcbiAgICAgIGNvbnNvbGUubG9nKGN0eCk7XG4ke09iamVjdC5lbnRyaWVzKG9wdGlvbnM/LnN0YXNoVmFsdWVzID8/IFtdKS5tYXAodmFsID0+IGAgICAgICBjdHguc3Rhc2guJHt2YWxbMF19ID0gJyR7dmFsWzFdfSdgKS5qb2luKCdcXG4nKX1cbiAgICAgIHJldHVybiB7fVxuICAgIH1cblxuICAgIC8vIFRoZSBhZnRlciBzdGVwXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbnNlKGN0eCkge1xuICAgICAgcmV0dXJuIGN0eC5wcmV2LnJlc3VsdFxuICAgIH1cbiAgYCksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkVnRsUmVzb2x2ZXI8VFlQRSBleHRlbmRzIGtleW9mIFJFU09MVkVSUywgRklFTERUWVBFIGV4dGVuZHMgTm9uTnVsbGFibGU8UkVTT0xWRVJTW1RZUEVdPj4odHlwZU5hbWU6IFRZUEUsIGZpZWxkTmFtZToga2V5b2YgRklFTERUWVBFLCBvcHRpb25zOiBWdGxSZXNvbHZlck9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBvcGVyYXRpb25JZCA9IGAke3R5cGVOYW1lIGFzIHN0cmluZ30uJHtmaWVsZE5hbWUgYXMgU3RyaW5nfWA7XG5cbiAgICBjb25zdCBtYXBwaW5nUmVxRmlsZSA9IGAuL3NyYy92dGwvJHtvcGVyYXRpb25JZH0ucmVxLnZ0bGA7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKG1hcHBpbmdSZXFGaWxlKSkge1xuICAgICAgZnMubWtkaXJTeW5jKCcuL3NyYy92dGwvJywgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKG1hcHBpbmdSZXFGaWxlLCAnIyMgUmVxdWVzdCBtYXBwaW5nJywgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcbiAgICB9XG4gICAgY29uc3QgbWFwcGluZ1Jlc0ZpbGUgPSBgLi9zcmMvdnRsLyR7b3BlcmF0aW9uSWR9LnJlcy52dGxgO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhtYXBwaW5nUmVzRmlsZSkpIHtcbiAgICAgIGZzLm1rZGlyU3luYygnLi9zcmMvdnRsLycsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgZnMud3JpdGVGaWxlU3luYyhtYXBwaW5nUmVzRmlsZSwgJyR1dGlsLnRvSnNvbigkY3R4LnJlc3VsdCknLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pO1xuICAgIH1cblxuICAgIG5ldyBhd3NfYXBwc3luYy5SZXNvbHZlcih0aGlzLCBgUmVzb2x2ZXIke29wZXJhdGlvbklkfWAsIHtcbiAgICAgIGFwaTogdGhpcy5hcGksXG4gICAgICB0eXBlTmFtZTogdHlwZU5hbWUgYXMgc3RyaW5nLFxuICAgICAgZmllbGROYW1lOiBmaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgZGF0YVNvdXJjZTogb3B0aW9ucy5kYXRhU291cmNlLFxuICAgICAgcmVxdWVzdE1hcHBpbmdUZW1wbGF0ZTogYXdzX2FwcHN5bmMuTWFwcGluZ1RlbXBsYXRlLmZyb21TdHJpbmcodGhpcy5zdWJzdFZhcmlhYmxlcyhmcy5yZWFkRmlsZVN5bmMobWFwcGluZ1JlcUZpbGUpLnRvU3RyaW5nKCd1dGYtOCcpLCBvcHRpb25zLnZhcmlhYmxlcykpLFxuICAgICAgcmVzcG9uc2VNYXBwaW5nVGVtcGxhdGU6IGF3c19hcHBzeW5jLk1hcHBpbmdUZW1wbGF0ZS5mcm9tU3RyaW5nKHRoaXMuc3Vic3RWYXJpYWJsZXMoZnMucmVhZEZpbGVTeW5jKG1hcHBpbmdSZXNGaWxlKS50b1N0cmluZygndXRmLTgnKSwgb3B0aW9ucy52YXJpYWJsZXMpKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic3RWYXJpYWJsZXMoZGF0YTogc3RyaW5nLCB2YXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9KTogc3RyaW5nIHtcbiAgICBsZXQgcmVzID0gZGF0YTtcbiAgICBmb3IgKGNvbnN0IG5hbWUgaW4gdmFycykge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YXJzLCBuYW1lKSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHZhcnNbbmFtZV07XG4gICAgICAgIHJlcyA9IHJlcy5yZXBsYWNlKG5ldyBSZWdFeHAoYFxcXFwkXFx7JHtuYW1lfVxcfWAsICdnJyksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRW50cnlGaWxlKGVudHJ5RmlsZTogc3RyaW5nLCB0eXBlTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGFyZ1R5cGUgPSBgJHt0eXBlTmFtZX0ke3VwcGVyY2FzZUZpcnN0KGZpZWxkTmFtZSl9QXJnc2A7XG4gICAgZnMud3JpdGVGaWxlU3luYyhlbnRyeUZpbGUsIGBpbXBvcnQgeyBhcGkgfSBmcm9tICdjZGstc2VydmVybGVzcy9saWIvbGFtYmRhJztcbmltcG9ydCB7ICR7dHlwZU5hbWV9LCAke2FyZ1R5cGV9IH0gZnJvbSAnLi4vZ2VuZXJhdGVkL2dyYXBocWwuJHt0aGlzLnByb3BzLmFwaU5hbWUudG9Mb3dlckNhc2UoKX0tbW9kZWwuZ2VuZXJhdGVkJztcblxuZXhwb3J0IGNvbnN0IGhhbmRsZXIgPSBhcGkuY3JlYXRlQXBwU3luY0hhbmRsZXI8JHthcmdUeXBlfSwgJHt0eXBlTmFtZX1bJyR7ZmllbGROYW1lfSddPihhc3luYyAoY3R4KSA9PiB7XG4gIGN0eC5sb2dnZXIuaW5mbyhKU09OLnN0cmluZ2lmeShjdHguZXZlbnQpKTtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3QgeWV0IGltcGxlbWVudGVkJyk7XG59KTtgLCB7XG4gICAgICBlbmNvZGluZzogJ3V0Zi04JyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSlNSZXNvbHZlckZpbGUoZm46IEpzUmVzb2x2ZXJDb25maWcsIHR5cGVOYW1lOiBzdHJpbmcsIGZpZWxkTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYXJnVHlwZSA9IGAke3R5cGVOYW1lfSR7dXBwZXJjYXNlRmlyc3QoZmllbGROYW1lKX1BcmdzYDtcbiAgICBjb25zdCByZXR1cm5UeXBlID0gKGZuLmluZGV4ID09IChmbi5zdGVwQ291bnQgLSAxKSkgPyBgJHt0eXBlTmFtZX1bJyR7ZmllbGROYW1lfSddYCA6ICdhbnknO1xuXG4gICAgZnMud3JpdGVGaWxlU3luYyhmbi5lbnRyeUZpbGUsIGBpbXBvcnQgeyBDb250ZXh0LCB1dGlsIH0gZnJvbSAnQGF3cy1hcHBzeW5jL3V0aWxzJztcbmltcG9ydCB7ICR7dHlwZU5hbWV9LCAke2FyZ1R5cGV9IH0gZnJvbSAnLi4vZ2VuZXJhdGVkL2dyYXBocWwuJHt0aGlzLnByb3BzLmFwaU5hbWUudG9Mb3dlckNhc2UoKX0tbW9kZWwuZ2VuZXJhdGVkJztcblxuLyoqXG4gKiBSZXF1ZXN0IGZvciAke3R5cGVOYW1lfS4ke2ZpZWxkTmFtZX0gKFN0ZXA6ICR7Zm4ubmFtZX0gJHtmbi5pbmRleCArIDF9LyR7Zm4uc3RlcENvdW50fSlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVlc3QoY3R4OiBDb250ZXh0PCR7YXJnVHlwZX0+KTogYW55IHtcbiAgY29uc29sZS5sb2coY3R4KTtcbiAgcmV0dXJuIHt9O1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGZvciAke3R5cGVOYW1lfS4ke2ZpZWxkTmFtZX0gKFN0ZXA6ICR7Zm4ubmFtZX0gJHtmbi5pbmRleCArIDF9LyR7Zm4uc3RlcENvdW50fSlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbnNlKGN0eDogQ29udGV4dDwke2FyZ1R5cGV9Pik6ICR7cmV0dXJuVHlwZX0ge1xuICBjb25zb2xlLmxvZyhjdHgpO1xuICByZXR1cm4gY3R4LnJlc3VsdC5pdGVtcztcbn1gLCB7XG4gICAgICBlbmNvZGluZzogJ3V0Zi04JyxcbiAgICB9KTtcbiAgfVxuXG59XG5cbmZ1bmN0aW9uIHVwcGVyY2FzZUZpcnN0KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdmFsdWUuc3Vic3RyaW5nKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB2YWx1ZS5zdWJzdHJpbmcoMSk7XG59XG5cbi8qKlxuICogQ29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvbWFpbi9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcy9saWIvdXRpbC50c1xuICogYXMgaXQgaXMgbm90IGV4cG9ydGVkIGJ5IGF3cy1jZGstbGliXG4gKi9cbmZ1bmN0aW9uIGV4ZWMoY21kOiBzdHJpbmcsIGFyZ3M6IHN0cmluZ1tdLCBvcHRpb25zPzogU3Bhd25TeW5jT3B0aW9ucykge1xuICBjb25zdCBwcm9jID0gc3Bhd25TeW5jKGNtZCwgYXJncywgb3B0aW9ucyk7XG5cbiAgaWYgKHByb2MuZXJyb3IpIHtcbiAgICB0aHJvdyBwcm9jLmVycm9yO1xuICB9XG5cbiAgaWYgKHByb2Muc3RhdHVzICE9PSAwKSB7XG4gICAgaWYgKHByb2Muc3Rkb3V0IHx8IHByb2Muc3RkZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFtTdGF0dXMgJHtwcm9jLnN0YXR1c31dIHN0ZG91dDogJHtwcm9jLnN0ZG91dD8udG9TdHJpbmcoKS50cmltKCl9XFxuXFxuXFxuc3RkZXJyOiAke3Byb2Muc3RkZXJyPy50b1N0cmluZygpLnRyaW0oKX1gKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke2NtZH0gJHthcmdzLmpvaW4oJyAnKX0gJHtvcHRpb25zPy5jd2QgPyBgcnVuIGluIGRpcmVjdG9yeSAke29wdGlvbnMuY3dkfWAgOiAnJ30gZXhpdGVkIHdpdGggc3RhdHVzICR7cHJvYy5zdGF0dXN9YCk7XG4gIH1cblxuICByZXR1cm4gcHJvYztcbn1cblxuIl19
|
|
454
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdHJ1Y3RzL2dyYXBocWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0QkFBNEI7QUFDNUIsaURBQTREO0FBQzVELHVDQUF5QjtBQUN6Qix1Q0FBeUI7QUFDekIsNkNBQWdMO0FBR2hMLHlDQUFtRDtBQUNuRCxpQ0FBd0M7QUFDeEMsK0NBQXlFO0FBNEN6RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBYSxVQUFzQixTQUFRLGtCQUFPO0lBc0JoRDs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFVLEtBQXNCOztRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUR3QixVQUFLLEdBQUwsS0FBSyxDQUFpQjtRQWpCeEU7O1dBRUc7UUFDSyxlQUFVLEdBQThDLEVBQUUsQ0FBQztRQWlCakUsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsY0FBdUMsQ0FBQztRQUVqRSxJQUFJLGdCQUF1RCxDQUFDO1FBQzVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixnQkFBZ0IsR0FBRztnQkFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUN4QixXQUFXLEVBQUUsSUFBSSxvQ0FBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO29CQUM1RSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVc7b0JBQzVCLE1BQU0sRUFBRSxXQUFXO29CQUNuQixVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ3hCLFVBQVUsRUFBRSxvQ0FBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztpQkFDbEYsQ0FBQzthQUNILENBQUM7WUFDRixJQUFJLHVCQUFTLENBQUMsSUFB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YUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDLG9CQUFvQixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsdUJBQXVCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0tBQ3hJO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuaW1wb3J0IHsgU3Bhd25TeW5jT3B0aW9ucywgc3Bhd25TeW5jIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgeyBBc3NldEhhc2hUeXBlLCBCdW5kbGluZ09wdGlvbnMsIEJ1bmRsaW5nT3V0cHV0LCBDZm5PdXRwdXQsIERvY2tlckltYWdlLCBUYWdzLCBhd3NfYXBwc3luYywgYXdzX2NlcnRpZmljYXRlbWFuYWdlciwgYXdzX2lhbSwgYXdzX2xvZ3MsIGF3c19yb3V0ZTUzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBDb2duaXRvQXV0aGVudGljYXRpb24gfSBmcm9tICcuL2F1dGhlbnRpY2F0aW9uJztcbmltcG9ydCB7IEJhc2VBcGksIEJhc2VBcGlQcm9wcyB9IGZyb20gJy4vYmFzZS1hcGknO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24gfSBmcm9tICcuL2Z1bmMnO1xuaW1wb3J0IHsgQ0ZOX09VVFBVVF9TVUZGSVhfR1JBUEhRTF9ET01BSU5OQU1FIH0gZnJvbSAnLi4vc2hhcmVkL291dHB1dHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoUWxBcGlQcm9wcyBleHRlbmRzIEJhc2VBcGlQcm9wcyB7XG4gIGRlZmluaXRpb25GaWxlTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZ0bFJlc29sdmVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgZGF0YXNvdXJjZSB0aGUgVlRMIHJlc29sdmVyIHRhcmdldHNcbiAgICovXG4gIGRhdGFTb3VyY2U6IGF3c19hcHBzeW5jLkJhc2VEYXRhU291cmNlO1xuXG4gIC8qKlxuICAgKiBzdHJpbmcgcmVwbGFjZW1lbnRzIHRvIHByb2Nlc3Mgb24gdGhlIFZUTFxuICAgKlxuICAgKiBAZGVmYXVsdCBubyB2YXJpYWJsZSBleHBhbnNpb25zXG4gICAqL1xuICB2YXJpYWJsZXM/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKc1Jlc29sdmVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBWYXJpYWJsZXMgdGhhdCB3aWxsIGJlIHB1dCBpbnRvIHRoZSBcInN0YXNoXCIgb2YgdGhlIHJlc29sdmVyIHBpcGVsaW5lXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXNoVmFsdWVzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogbmFtZSBvZiB0aGUgcGlwZWxpbmUgc3RlcHMgdG8gY3JlYXRlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gb25seSBhIGRlZmF1bHQgc3RlcCB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lU3RlcE5hbWVzPzogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBKc1Jlc29sdmVyQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICBpbmRleDogbnVtYmVyO1xuICBzdGVwQ291bnQ6IG51bWJlcjtcbiAgZW50cnlGaWxlOiBzdHJpbmc7XG4gIGZ1bmN0aW9uSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgR3JhcGhRbEFwaSBjb25zdHJ1Y3Qgc2V0cyB1cCBhbiBBV1MgQXBwU3luYyBHcmFwaFFMIEFQSSBpbnRlZ3JhdGVkIHdpdGggQ29nbml0byBmb3IgYXV0aGVudGljYXRpb24gYW5kIER5bmFtb0RCIGZvciBkYXRhIHN0b3JhZ2UuXG4gKiBUaGlzIGNvbnN0cnVjdCBmYWNpbGl0YXRlcyB0aGUgY3JlYXRpb24gb2YgYSBHcmFwaFFMIEFQSSB3aXRoIHZhcmlvdXMgY29uZmlndXJhdGlvbnMsIGluY2x1ZGluZyBjdXN0b20gZG9tYWluLCBsb2dnaW5nLCBzY2hlbWEgZGVmaW5pdGlvbixcbiAqIGFuZCBhdXRob3JpemF0aW9uIHVzaW5nIENvZ25pdG8gVXNlciBQb29sIGFuZCBJZGVudGl0eSBQb29sLiBJdCBhbHNvIHByb3ZpZGVzIG1ldGhvZHMgdG8gZHluYW1pY2FsbHkgYWRkIHJlc29sdmVycyBhbmQgZ3JhbnQgYWNjZXNzIHRvIHNwZWNpZmljIGZpZWxkcy5cbiAqXG4gKiBAdGVtcGxhdGUgUkVTT0xWRVJTIC0gVGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIEdyYXBoUUwgcmVzb2x2ZXJzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBhcGkgPSBuZXcgR3JhcGhRbEFwaSh0aGlzLCAnTXlHcmFwaFFsQXBpJywge1xuICogICBhcGlOYW1lOiAnTXlBUEknLFxuICogICBzdGFnZU5hbWU6ICdkZXYnLFxuICogICBkZWZpbml0aW9uRmlsZU5hbWU6ICdzY2hlbWEuZ3JhcGhxbCcsXG4gKiAgIGF1dGhlbnRpY2F0aW9uOiBteUNvZ25pdG9BdXRoLFxuICogICBzaW5nbGVUYWJsZURhdGFzdG9yZTogbXlEeW5hbW9EQlRhYmxlLFxuICogfSk7XG4gKlxuICogLy8gQWRkIGEgTGFtYmRhIHJlc29sdmVyXG4gKiBhcGkuYWRkTGFtYmRhUmVzb2x2ZXIoJ1F1ZXJ5JywgJ2dldEl0ZW0nKTtcbiAqXG4gKiAvLyBHcmFudCBhY2Nlc3MgdG8gdW5hdXRoZW50aWNhdGVkIHVzZXJzIGZvciBhIHNwZWNpZmljIHF1ZXJ5XG4gKiBhcGkuZ3JhbnRBY2Nlc3NVbkF1dGgoJ1F1ZXJ5JywgJ2dldEl0ZW0nKTtcbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoUWxBcGk8UkVTT0xWRVJTPiBleHRlbmRzIEJhc2VBcGkge1xuXG4gIC8qKlxuICAgKiBUaGUgQVdTIEFwcFN5bmMgR3JhcGhRTCBBUEkgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXBpOiBhd3NfYXBwc3luYy5HcmFwaHFsQXBpO1xuXG4gIC8qKlxuICAgKiBUaGUgb3B0aW9uYWwgRHluYW1vREIgZGF0YSBzb3VyY2UgZm9yIHRoZSBHcmFwaFFMIEFQSS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWJsZURhdGFTb3VyY2U/OiBhd3NfYXBwc3luYy5EeW5hbW9EYkRhdGFTb3VyY2U7XG5cbiAgLyoqXG4gICAqIEEgY29sbGVjdGlvbiBvZiBMYW1iZGEgZnVuY3Rpb25zIHVzZWQgYXMgcmVzb2x2ZXJzIGZvciB0aGUgR3JhcGhRTCBBUEkuXG4gICAqL1xuICBwcml2YXRlIF9mdW5jdGlvbnM6IHsgW29wZXJhdGlvbklkOiBzdHJpbmddOiBMYW1iZGFGdW5jdGlvbiB9ID0ge307XG5cbiAgLyoqXG4gICAqIFRoZSBDb2duaXRvIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwcml2YXRlIGNvZ25pdG9BdXRoOiBDb2duaXRvQXV0aGVudGljYXRpb247XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgR3JhcGhRbEFwaS5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIHNjb3BlIGluIHdoaWNoIHRoaXMgY29uc3RydWN0IGlzIGRlZmluZWQuXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBzY29wZWQgY29uc3RydWN0IElELlxuICAgKiBAcGFyYW0gcHJvcHMgLSBUaGUgcHJvcGVydGllcyBvZiB0aGUgR3JhcGhRbEFwaSBjb25zdHJ1Y3QuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcml2YXRlIHByb3BzOiBHcmFwaFFsQXBpUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHRoaXMuY29nbml0b0F1dGggPSBwcm9wcy5hdXRoZW50aWNhdGlvbiBhcyBDb2duaXRvQXV0aGVudGljYXRpb247XG5cbiAgICBsZXQgY3VzdG9tRG9tYWluTmFtZTogYXdzX2FwcHN5bmMuRG9tYWluT3B0aW9ucyB8IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5hcGlGUUROKSB7XG4gICAgICBjdXN0b21Eb21haW5OYW1lID0ge1xuICAgICAgICBkb21haW5OYW1lOiB0aGlzLmFwaUZRRE4sXG4gICAgICAgIGNlcnRpZmljYXRlOiBuZXcgYXdzX2NlcnRpZmljYXRlbWFuYWdlci5EbnNWYWxpZGF0ZWRDZXJ0aWZpY2F0ZSh0aGlzLCAnQ2VydCcsIHtcbiAgICAgICAgICBob3N0ZWRab25lOiB0aGlzLmhvc3RlZFpvbmUhLFxuICAgICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgICAgZG9tYWluTmFtZTogdGhpcy5hcGlGUUROLFxuICAgICAgICAgIHZhbGlkYXRpb246IGF3c19jZXJ0aWZpY2F0ZW1hbmFnZXIuQ2VydGlmaWNhdGVWYWxpZGF0aW9uLmZyb21EbnModGhpcy5ob3N0ZWRab25lKSxcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCAnR3JhcGhRbEFwaURvbWFpbk5hbWUnLCB7XG4gICAgICAgIGtleTogYCR7dGhpcy5wcm9wcy5hcGlOYW1lfSR7Q0ZOX09VVFBVVF9TVUZGSVhfR1JBUEhRTF9ET01BSU5OQU1FfWAsXG4gICAgICAgIHZhbHVlOiB0aGlzLmFwaUZRRE4sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmFwaSA9IG5ldyBhd3NfYXBwc3luYy5HcmFwaHFsQXBpKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG5hbWU6IGAke3Byb3BzLmFwaU5hbWV9IFske3Byb3BzLnN0YWdlTmFtZX1dYCxcbiAgICAgIGxvZ0NvbmZpZzoge1xuICAgICAgICBmaWVsZExvZ0xldmVsOiBhd3NfYXBwc3luYy5GaWVsZExvZ0xldmVsLkFMTCxcbiAgICAgICAgcmV0ZW50aW9uOiBhd3NfbG9ncy5SZXRlbnRpb25EYXlzLlRXT19NT05USFMsXG4gICAgICB9LFxuICAgICAgc2NoZW1hOiBhd3NfYXBwc3luYy5TY2hlbWFGaWxlLmZyb21Bc3NldChwcm9wcy5kZWZpbml0aW9uRmlsZU5hbWUpLFxuICAgICAgZG9tYWluTmFtZTogY3VzdG9tRG9tYWluTmFtZSxcbiAgICAgIC4uLnRoaXMuY29nbml0b0F1dGggJiYge1xuICAgICAgICBhdXRob3JpemF0aW9uQ29uZmlnOiB7XG4gICAgICAgICAgYWRkaXRpb25hbEF1dGhvcml6YXRpb25Nb2RlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdXRob3JpemF0aW9uVHlwZTogYXdzX2FwcHN5bmMuQXV0aG9yaXphdGlvblR5cGUuVVNFUl9QT09MLFxuICAgICAgICAgICAgICB1c2VyUG9vbENvbmZpZzoge1xuICAgICAgICAgICAgICAgIHVzZXJQb29sOiB0aGlzLmNvZ25pdG9BdXRoLnVzZXJwb29sLFxuICAgICAgICAgICAgICAgIGRlZmF1bHRBY3Rpb246IGF3c19hcHBzeW5jLlVzZXJQb29sRGVmYXVsdEFjdGlvbi5ERU5ZLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC4uLnRoaXMuY29nbml0b0F1dGguaWRlbnRpdHlQb29sID8gW3sgYXV0aG9yaXphdGlvblR5cGU6IGF3c19hcHBzeW5jLkF1dGhvcml6YXRpb25UeXBlLklBTSB9XSA6IFtdLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGlmIChjdXN0b21Eb21haW5OYW1lICYmIHRoaXMuYXBpLmFwcFN5bmNEb21haW5OYW1lKSB7XG4gICAgICBuZXcgYXdzX3JvdXRlNTMuQ25hbWVSZWNvcmQodGhpcywgJ0Ruc1JlY29yZCcsIHtcbiAgICAgICAgem9uZTogdGhpcy5ob3N0ZWRab25lISxcbiAgICAgICAgcmVjb3JkTmFtZTogY3VzdG9tRG9tYWluTmFtZS5kb21haW5OYW1lLFxuICAgICAgICBkb21haW5OYW1lOiB0aGlzLmFwaS5hcHBTeW5jRG9tYWluTmFtZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIGlmICgocHJvcHMubW9uaXRvcmluZyA/PyB0cnVlKSAmJiB0aGlzLm1vbml0b3JpbmcpIHtcbiAgICAvLyAgIHRoaXMubW9uaXRvcmluZy5hcGlFcnJvcnNXaWRnZXQuYWRkTGVmdE1ldHJpYyhuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgIC8vICAgICBuYW1lc3BhY2U6ICdBV1MvQXBwU3luYycsXG4gICAgLy8gICAgIG1ldHJpY05hbWU6ICc1WFhFcnJvcicsXG4gICAgLy8gICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAvLyAgICAgICBHcmFwaFFMQVBJSWQ6IHRoaXMuYXBpLmFwaUlkLFxuICAgIC8vICAgICB9LFxuICAgIC8vICAgICBzdGF0aXN0aWM6ICdzdW0nLFxuICAgIC8vICAgfSkpO1xuICAgIC8vICAgdGhpcy5tb25pdG9yaW5nLmFwaUVycm9yc1dpZGdldC5hZGRMZWZ0TWV0cmljKG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgLy8gICAgIG5hbWVzcGFjZTogJ0FXUy9BcHBTeW5jJyxcbiAgICAvLyAgICAgbWV0cmljTmFtZTogJzRYWEVycm9yJyxcbiAgICAvLyAgICAgZGltZW5zaW9uc01hcDoge1xuICAgIC8vICAgICAgIEdyYXBoUUxBUElJZDogdGhpcy5hcGkuYXBpSWQsXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICAgIHN0YXRpc3RpYzogJ3N1bScsXG4gICAgLy8gICB9KSk7XG4gICAgLy8gICB0aGlzLm1vbml0b3JpbmcuYXBpTGF0ZW5jeVdpZGdldC5hZGRMZWZ0TWV0cmljKG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgLy8gICAgIG5hbWVzcGFjZTogJ0FXUy9BcHBTeW5jJyxcbiAgICAvLyAgICAgbWV0cmljTmFtZTogJ0xhdGVuY3knLFxuICAgIC8vICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgLy8gICAgICAgR3JhcGhRTEFQSUlkOiB0aGlzLmFwaS5hcGlJZCxcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAgc3RhdGlzdGljOiAnQXZlcmFnZScsXG4gICAgLy8gICB9KSk7XG4gICAgLy8gICB0aGlzLm1vbml0b3JpbmcuYXBpTGF0ZW5jeVdpZGdldC5hZGRMZWZ0TWV0cmljKG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgLy8gICAgIG5hbWVzcGFjZTogJ0FXUy9BcHBTeW5jJyxcbiAgICAvLyAgICAgbWV0cmljTmFtZTogJ0xhdGVuY3knLFxuICAgIC8vICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgLy8gICAgICAgR3JhcGhRTEFQSUlkOiB0aGlzLmFwaS5hcGlJZCxcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAgc3RhdGlzdGljOiAncDkwJyxcbiAgICAvLyAgIH0pKTtcbiAgICAvLyAgIHRoaXMubW9uaXRvcmluZy5hcGlMYXRlbmN5VGFpbFdpZGdldC5hZGRMZWZ0TWV0cmljKG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgLy8gICAgIG5hbWVzcGFjZTogJ0FXUy9BcHBTeW5jJyxcbiAgICAvLyAgICAgbWV0cmljTmFtZTogJ0xhdGVuY3knLFxuICAgIC8vICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgLy8gICAgICAgR3JhcGhRTEFQSUlkOiB0aGlzLmFwaS5hcGlJZCxcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAgc3RhdGlzdGljOiAncDk1JyxcbiAgICAvLyAgIH0pKTtcbiAgICAvLyAgIHRoaXMubW9uaXRvcmluZy5hcGlMYXRlbmN5VGFpbFdpZGdldC5hZGRMZWZ0TWV0cmljKG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgLy8gICAgIG5hbWVzcGFjZTogJ0FXUy9BcHBTeW5jJyxcbiAgICAvLyAgICAgbWV0cmljTmFtZTogJ0xhdGVuY3knLFxuICAgIC8vICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgLy8gICAgICAgR3JhcGhRTEFQSUlkOiB0aGlzLmFwaS5hcGlJZCxcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAgc3RhdGlzdGljOiAncDk5JyxcbiAgICAvLyAgIH0pKTtcbiAgICAvLyB9XG5cbiAgICBpZiAocHJvcHMuc2luZ2xlVGFibGVEYXRhc3RvcmUpIHtcbiAgICAgIHRoaXMudGFibGVEYXRhU291cmNlID0gbmV3IGF3c19hcHBzeW5jLkR5bmFtb0RiRGF0YVNvdXJjZSh0aGlzLCAnU2luZ2xlVGFibGVTb3VyY2UnLCB7XG4gICAgICAgIGFwaTogdGhpcy5hcGksXG4gICAgICAgIHRhYmxlOiBwcm9wcy5zaW5nbGVUYWJsZURhdGFzdG9yZT8udGFibGUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICovXG4gIHB1YmxpYyBncmFudEFjY2VzczxUWVBFIGV4dGVuZHMga2V5b2YgUkVTT0xWRVJTLCBGSUVMRFRZUEUgZXh0ZW5kcyBOb25OdWxsYWJsZTxSRVNPTFZFUlNbVFlQRV0+PihncmFudGVlOiBhd3NfaWFtLklHcmFudGFibGUsIHR5cGVOYW1lOiBUWVBFLCAuLi5maWVsZE5hbWVzOiAoa2V5b2YgRklFTERUWVBFKVtdKTogdm9pZCB7XG4gICAgdGhpcy5hcGkuZ3JhbnQoZ3JhbnRlZSwgYXdzX2FwcHN5bmMuSWFtUmVzb3VyY2Uub2ZUeXBlKHR5cGVOYW1lIGFzIHN0cmluZywgLi4uZmllbGROYW1lcyBhcyBzdHJpbmdbXSksICdhcHBzeW5jOkdyYXBoUUwnKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKi9cbiAgcHVibGljIGdyYW50QWNjZXNzVW5BdXRoPFRZUEUgZXh0ZW5kcyBrZXlvZiBSRVNPTFZFUlMsIEZJRUxEVFlQRSBleHRlbmRzIE5vbk51bGxhYmxlPFJFU09MVkVSU1tUWVBFXT4+KHR5cGVOYW1lOiBUWVBFLCAuLi5maWVsZE5hbWVzOiAoa2V5b2YgRklFTERUWVBFKVtdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvZ25pdG9BdXRoLmlkZW50aXR5UG9vbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZ3JhbnQgdG8gQ29nbml0byBpZGVudGl0eSBwb29sIGFzIG5vbmUgaXMgcHJvdmlkZWQnKTtcbiAgICB9XG4gICAgdGhpcy5ncmFudEFjY2Vzcyh0aGlzLmNvZ25pdG9BdXRoLmlkZW50aXR5UG9vbC51bmF1dGhlbnRpY2F0ZWRSb2xlLCB0eXBlTmFtZSwgLi4uZmllbGROYW1lcyk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICovXG4gIHB1YmxpYyBncmFudEFjY2Vzc0F1dGg8VFlQRSBleHRlbmRzIGtleW9mIFJFU09MVkVSUywgRklFTERUWVBFIGV4dGVuZHMgTm9uTnVsbGFibGU8UkVTT0xWRVJTW1RZUEVdPj4odHlwZU5hbWU6IFRZUEUsIC4uLmZpZWxkTmFtZXM6IChrZXlvZiBGSUVMRFRZUEUpW10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29nbml0b0F1dGguaWRlbnRpdHlQb29sKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBncmFudCB0byBDb2duaXRvIGlkZW50aXR5IHBvb2wgYXMgbm9uZSBpcyBwcm92aWRlZCcpO1xuICAgIH1cbiAgICB0aGlzLmdyYW50QWNjZXNzKHRoaXMuY29nbml0b0F1dGguaWRlbnRpdHlQb29sLmF1dGhlbnRpY2F0ZWRSb2xlLCB0eXBlTmFtZSwgLi4uZmllbGROYW1lcyk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBnZXRGdW5jdGlvbkZvck9wZXJhdGlvblxuICAgKi9cbiAgcHVibGljIGdldEZ1bmN0aW9uRm9yT3BlcmF0aW9uPFRZUEUgZXh0ZW5kcyBrZXlvZiBSRVNPTFZFUlMsIEZJRUxEVFlQRSBleHRlbmRzIE5vbk51bGxhYmxlPFJFU09MVkVSU1tUWVBFXT4+KHR5cGVOYW1lOiBUWVBFLCBmaWVsZE5hbWU6IGtleW9mIEZJRUxEVFlQRSk6IExhbWJkYUZ1bmN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fZnVuY3Rpb25zW2Ake3R5cGVOYW1lIGFzIHN0cmluZ30uJHtmaWVsZE5hbWUgYXMgU3RyaW5nfWBdO1xuICB9XG5cbiAgcHVibGljIGFkZExhbWJkYVJlc29sdmVyPFRZUEUgZXh0ZW5kcyBrZXlvZiBSRVNPTFZFUlMsIEZJRUxEVFlQRSBleHRlbmRzIE5vbk51bGxhYmxlPFJFU09MVkVSU1tUWVBFXT4+KHR5cGVOYW1lOiBUWVBFLCBmaWVsZE5hbWU6IGtleW9mIEZJRUxEVFlQRSk6IExhbWJkYUZ1bmN0aW9uIHtcbiAgICBjb25zdCBvcGVyYXRpb25JZCA9IGAke3R5cGVOYW1lIGFzIHN0cmluZ30uJHtmaWVsZE5hbWUgYXMgU3RyaW5nfWA7XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSBgVHlwZSAke3R5cGVOYW1lIGFzIHN0cmluZ30gRmllbGQgJHtmaWVsZE5hbWUgYXMgU3RyaW5nfSBSZXNvbHZlcmA7XG5cbiAgICBjb25zdCBlbnRyeUZpbGUgPSBgLi9zcmMvbGFtYmRhLyR7b3BlcmF0aW9uSWR9LnRzYDtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZW50cnlGaWxlKSkge1xuICAgICAgZnMubWtkaXJTeW5jKCcuL3NyYy9sYW1iZGEvJywgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICB0aGlzLmNyZWF0ZUVudHJ5RmlsZShlbnRyeUZpbGUsIHR5cGVOYW1lIGFzIHN0cmluZywgZmllbGROYW1lIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgY29uc3QgZm4gPSBuZXcgTGFtYmRhRnVuY3Rpb24odGhpcywgYEZuJHtvcGVyYXRpb25JZH1gLCB7XG4gICAgICBzdGFnZU5hbWU6IHRoaXMucHJvcHMuc3RhZ2VOYW1lLFxuICAgICAgYWRkaXRpb25hbEVudjogdGhpcy5wcm9wcy5hZGRpdGlvbmFsRW52LFxuICAgICAgZW50cnk6IGVudHJ5RmlsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgWyR7dGhpcy5wcm9wcy5zdGFnZU5hbWV9XSAke2Rlc2NyaXB0aW9ufWAsXG4gICAgICAuLi50aGlzLnByb3BzLmF1dGhlbnRpY2F0aW9uICYmIHtcbiAgICAgICAgdXNlclBvb2w6ICh0aGlzLnByb3BzLmF1dGhlbnRpY2F0aW9uIGFzIENvZ25pdG9BdXRoZW50aWNhdGlvbikudXNlcnBvb2wsXG4gICAgICB9LFxuICAgICAgLi4udGhpcy5wcm9wcy5zaW5nbGVUYWJsZURhdGFzdG9yZSAmJiB7XG4gICAgICAgIHRhYmxlOiB0aGlzLnByb3BzLnNpbmdsZVRhYmxlRGF0YXN0b3JlLnRhYmxlLFxuICAgICAgICB0YWJsZVdyaXRlczogdHlwZU5hbWUgPT09ICdNdXRhdGlvbicsXG4gICAgICB9LFxuICAgICAgLi4udGhpcy5wcm9wcy5hc3NldENkbiAmJiB7XG4gICAgICAgIGFzc2V0RG9tYWluTmFtZTogdGhpcy5wcm9wcy5hc3NldENkbi5hc3NldERvbWFpbk5hbWUsXG4gICAgICAgIGFzc2V0QnVja2V0OiB0aGlzLnByb3BzLmFzc2V0Q2RuLmFzc2V0QnVja2V0LFxuICAgICAgfSxcbiAgICAgIGxhbWJkYU9wdGlvbnM6IHRoaXMucHJvcHMubGFtYmRhT3B0aW9ucyxcbiAgICAgIGxhbWJkYVRyYWNpbmc6IHRoaXMucHJvcHMubGFtYmRhVHJhY2luZyxcbiAgICB9KTtcbiAgICB0aGlzLl9mdW5jdGlvbnNbb3BlcmF0aW9uSWRdID0gZm47XG4gICAgVGFncy5vZihmbikuYWRkKCdHcmFwaFFMJywgZGVzY3JpcHRpb24pO1xuXG4gICAgLy8gaWYgKHRoaXMubW9uaXRvcmluZykge1xuICAgIC8vICAgdGhpcy5tb25pdG9yaW5nLmxhbWJkYUR1cmF0aW9uc1dpZGdldC5hZGRMZWZ0TWV0cmljKGZuLm1ldHJpY0R1cmF0aW9uKCkpO1xuICAgIC8vICAgdGhpcy5tb25pdG9yaW5nLmxhbWJkYUludm9rZXNXaWRnZXQuYWRkTGVmdE1ldHJpYyhmbi5tZXRyaWNJbnZvY2F0aW9ucygpKTtcbiAgICAvLyAgIHRoaXMubW9uaXRvcmluZy5sYW1iZGFFcnJvcnNXaWRnZXQuYWRkTGVmdE1ldHJpYyhmbi5tZXRyaWNFcnJvcnMoKSk7XG4gICAgLy8gICB0aGlzLm1vbml0b3JpbmcubGFtYmRhRXJyb3JzV2lkZ2V0LmFkZExlZnRNZXRyaWMoZm4ubWV0cmljVGhyb3R0bGVzKCkpO1xuICAgIC8vIH1cblxuICAgIGNvbnN0IGRhdGFTb3VyY2UgPSBuZXcgYXdzX2FwcHN5bmMuTGFtYmRhRGF0YVNvdXJjZSh0aGlzLCBgTGFtYmRhRFMke29wZXJhdGlvbklkfWAsIHtcbiAgICAgIGFwaTogdGhpcy5hcGksXG4gICAgICBuYW1lOiBgTGFtYmRhXyR7dHlwZU5hbWUgYXMgc3RyaW5nfV8ke2ZpZWxkTmFtZSBhcyBTdHJpbmd9YCxcbiAgICAgIGxhbWJkYUZ1bmN0aW9uOiBmbixcbiAgICB9KTtcblxuICAgIG5ldyBhd3NfYXBwc3luYy5SZXNvbHZlcih0aGlzLCBgUmVzb2x2ZXIke29wZXJhdGlvbklkfWAsIHtcbiAgICAgIGFwaTogdGhpcy5hcGksXG4gICAgICB0eXBlTmFtZTogdHlwZU5hbWUgYXMgc3RyaW5nLFxuICAgICAgZmllbGROYW1lOiBmaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgZGF0YVNvdXJjZSxcbiAgICB9KTtcbiAgICByZXR1cm4gZm47XG4gIH1cblxuICBwdWJsaWMgYWRkRHluYW1vRGJWdGxSZXNvbHZlcjxUWVBFIGV4dGVuZHMga2V5b2YgUkVTT0xWRVJTLCBGSUVMRFRZUEUgZXh0ZW5kcyBOb25OdWxsYWJsZTxSRVNPTFZFUlNbVFlQRV0+Pih0eXBlTmFtZTogVFlQRSwgZmllbGROYW1lOiBrZXlvZiBGSUVMRFRZUEUsIG9wdGlvbnM/OiBPbWl0PFZ0bFJlc29sdmVyT3B0aW9ucywgJ2RhdGFTb3VyY2UnPik6IHZvaWQge1xuICAgIGlmICghdGhpcy50YWJsZURhdGFTb3VyY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRHluYW1vREIgaXMgbm90IGluaXRpYWxpemVkJyk7XG4gICAgfVxuICAgIHRoaXMuYWRkVnRsUmVzb2x2ZXIodHlwZU5hbWUsIGZpZWxkTmFtZSwge1xuICAgICAgZGF0YVNvdXJjZTogdGhpcy50YWJsZURhdGFTb3VyY2UsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZER5bmFtb0RiSlNSZXNvbHZlcjxUWVBFIGV4dGVuZHMga2V5b2YgUkVTT0xWRVJTLCBGSUVMRFRZUEUgZXh0ZW5kcyBOb25OdWxsYWJsZTxSRVNPTFZFUlNbVFlQRV0+Pih0eXBlTmFtZTogVFlQRSwgZmllbGROYW1lOiBrZXlvZiBGSUVMRFRZUEUsIG9wdGlvbnM/OiBKc1Jlc29sdmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghdGhpcy50YWJsZURhdGFTb3VyY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRHluYW1vREIgaXMgbm90IGluaXRpYWxpemVkJyk7XG4gICAgfVxuICAgIHRoaXMuYWRkSlNSZXNvbHZlcih0eXBlTmFtZSwgZmllbGROYW1lLCB0aGlzLnRhYmxlRGF0YVNvdXJjZSwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHN0YXNoVmFsdWVzOiB7XG4gICAgICAgIC4uLm9wdGlvbnM/LnN0YXNoVmFsdWVzID8/IHt9LFxuICAgICAgICB0YWJsZTogdGhpcy5wcm9wcy5zaW5nbGVUYWJsZURhdGFzdG9yZSEudGFibGUudGFibGVOYW1lLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRKU1Jlc29sdmVyPFRZUEUgZXh0ZW5kcyBrZXlvZiBSRVNPTFZFUlMsIEZJRUxEVFlQRSBleHRlbmRzIE5vbk51bGxhYmxlPFJFU09MVkVSU1tUWVBFXT4+KHR5cGVOYW1lOiBUWVBFLCBmaWVsZE5hbWU6IGtleW9mIEZJRUxEVFlQRSwgZGF0YVNvdXJjZTogYXdzX2FwcHN5bmMuQmFzZURhdGFTb3VyY2UsIG9wdGlvbnM/OiBKc1Jlc29sdmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IG9wZXJhdGlvbklkID0gYCR7dHlwZU5hbWUgYXMgc3RyaW5nfS4ke2ZpZWxkTmFtZSBhcyBTdHJpbmd9YDtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGBUeXBlICR7dHlwZU5hbWUgYXMgc3RyaW5nfSBGaWVsZCAke2ZpZWxkTmFtZSBhcyBTdHJpbmd9IFJlc29sdmVyYDtcblxuICAgIGNvbnN0IHJlc29sdmVyRGlyID0gJy4vc3JjL2pzLXJlc29sdmVyLyc7XG4gICAgY29uc3QgZnVuY3Rpb25zOiBKc1Jlc29sdmVyQ29uZmlnW10gPSBbXTtcblxuICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5waXBlbGluZVN0ZXBOYW1lcyB8fCBvcHRpb25zLnBpcGVsaW5lU3RlcE5hbWVzLmxlbmd0aCA9PSAwKSB7XG4gICAgICBmdW5jdGlvbnMucHVzaCh7XG4gICAgICAgIG5hbWU6ICdkZWZhdWx0JyxcbiAgICAgICAgaW5kZXg6IDAsXG4gICAgICAgIHN0ZXBDb3VudDogMSxcbiAgICAgICAgZW50cnlGaWxlOiBgJHtyZXNvbHZlckRpcn0vJHtvcGVyYXRpb25JZH0udHNgLFxuICAgICAgICBmdW5jdGlvbklkOiBgSlNGdW5jdGlvbiR7b3BlcmF0aW9uSWR9YCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBmdW5jdGlvbnMucHVzaCguLi5vcHRpb25zLnBpcGVsaW5lU3RlcE5hbWVzLm1hcCgobmFtZSwgaW5kZXgpID0+ICh7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIGluZGV4LFxuICAgICAgICBzdGVwQ291bnQ6IG9wdGlvbnMucGlwZWxpbmVTdGVwTmFtZXMhLmxlbmd0aCxcbiAgICAgICAgZW50cnlGaWxlOiBgJHtyZXNvbHZlckRpcn0vJHtvcGVyYXRpb25JZH0uJHtuYW1lfS50c2AsXG4gICAgICAgIGZ1bmN0aW9uSWQ6IGBKU0Z1bmN0aW9uJHtvcGVyYXRpb25JZH0ke25hbWV9YCxcbiAgICAgIH0pKSk7XG4gICAgfVxuXG4gICAgY29uc3QgcGlwZWxpbmVDb25maWcgPSBbXTtcblxuICAgIGZvciAoY29uc3QgZm4gb2YgZnVuY3Rpb25zKSB7XG4gICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZm4uZW50cnlGaWxlKSkge1xuICAgICAgICBmcy5ta2RpclN5bmMocmVzb2x2ZXJEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICB0aGlzLmNyZWF0ZUpTUmVzb2x2ZXJGaWxlKGZuLCB0eXBlTmFtZSBhcyBzdHJpbmcsIGZpZWxkTmFtZSBhcyBzdHJpbmcpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBqc0Z1bmN0aW9uID0gbmV3IGF3c19hcHBzeW5jLkFwcHN5bmNGdW5jdGlvbih0aGlzLCBmbi5mdW5jdGlvbklkLCB7XG4gICAgICAgIGFwaTogdGhpcy5hcGksXG4gICAgICAgIG5hbWU6IG9wZXJhdGlvbklkLnJlcGxhY2UoL1xcLi9nLCAnJyksXG4gICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICBkYXRhU291cmNlLFxuICAgICAgICBjb2RlOiBhd3NfYXBwc3luYy5Db2RlLmZyb21Bc3NldCgnLicsIHtcbiAgICAgICAgICBhc3NldEhhc2hUeXBlOiBBc3NldEhhc2hUeXBlLk9VVFBVVCxcbiAgICAgICAgICBkZXBsb3lUaW1lOiB0cnVlLFxuICAgICAgICAgIGJ1bmRsaW5nOiB7XG4gICAgICAgICAgICBpbWFnZTogRG9ja2VySW1hZ2UuZnJvbVJlZ2lzdHJ5KCdkdW1teScpLCAvLyBXaWxsIG5ldmVyIGJlIHVzZWQgZHVlIHRvIGxvY2FsIGJ1bmRsaW5nXG4gICAgICAgICAgICBvdXRwdXRUeXBlOiBCdW5kbGluZ091dHB1dC5TSU5HTEVfRklMRSxcbiAgICAgICAgICAgIGZ1bmN0aW9uSWQ6IGZuLmZ1bmN0aW9uSWQsXG4gICAgICAgICAgICBsb2NhbDoge1xuICAgICAgICAgICAgICB0cnlCdW5kbGUob3V0cHV0RGlyKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3NQbGF0Zm9ybSA9IG9zLnBsYXRmb3JtKCk7XG4gICAgICAgICAgICAgICAgZXhlYyhcbiAgICAgICAgICAgICAgICAgIG9zUGxhdGZvcm0gPT09ICd3aW4zMicgPyAnY21kJyA6ICdiYXNoJyxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgb3NQbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/ICcvYycgOiAnLWMnLFxuICAgICAgICAgICAgICAgICAgICBgZXNidWlsZCAtLWJ1bmRsZSAtLXNvdXJjZW1hcD1pbmxpbmUgLS1zb3VyY2VzLWNvbnRlbnQ9ZmFsc2UgLS10YXJnZXQ9ZXNuZXh0IC0tcGxhdGZvcm09bm9kZSAtLWZvcm1hdD1lc20gLS1leHRlcm5hbDpAYXdzLWFwcHN5bmMvdXRpbHMgLS1vdXRkaXI9JHtvdXRwdXREaXJ9ICR7Zm4uZW50cnlGaWxlfWAsXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBlbnY6IHsgLi4ucHJvY2Vzcy5lbnYgfSxcbiAgICAgICAgICAgICAgICAgICAgc3RkaW86IFsgLy8gc2hvdyBvdXRwdXRcbiAgICAgICAgICAgICAgICAgICAgICAnaWdub3JlJywgLy8gaWdub3JlIHN0ZGlvXG4gICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5zdGRlcnIsIC8vIHJlZGlyZWN0IHN0ZG91dCB0byBzdGRlcnJcbiAgICAgICAgICAgICAgICAgICAgICAnaW5oZXJpdCcsIC8vIGluaGVyaXQgc3RkZXJyXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvd3NWZXJiYXRpbUFyZ3VtZW50czogb3NQbGF0Zm9ybSA9PT0gJ3dpbjMyJyxcbiAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0gYXMgQnVuZGxpbmdPcHRpb25zLFxuICAgICAgICB9KSxcbiAgICAgICAgcnVudGltZTogYXdzX2FwcHN5bmMuRnVuY3Rpb25SdW50aW1lLkpTXzFfMF8wLFxuICAgICAgfSk7XG4gICAgICBwaXBlbGluZUNvbmZpZy5wdXNoKGpzRnVuY3Rpb24pO1xuICAgIH1cblxuICAgIG5ldyBhd3NfYXBwc3luYy5SZXNvbHZlcih0aGlzLCBgUmVzb2x2ZXIke29wZXJhdGlvbklkfWAsIHtcbiAgICAgIGFwaTogdGhpcy5hcGksXG4gICAgICB0eXBlTmFtZTogdHlwZU5hbWUgYXMgc3RyaW5nLFxuICAgICAgZmllbGROYW1lOiBmaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgcnVudGltZTogYXdzX2FwcHN5bmMuRnVuY3Rpb25SdW50aW1lLkpTXzFfMF8wLFxuICAgICAgcGlwZWxpbmVDb25maWcsXG4gICAgICBjb2RlOiBhd3NfYXBwc3luYy5Db2RlLmZyb21JbmxpbmUoYFxuICAgIC8vIFRoZSBiZWZvcmUgc3RlcFxuICAgIGV4cG9ydCBmdW5jdGlvbiByZXF1ZXN0KGN0eCkge1xuICAgICAgY29uc29sZS5sb2coY3R4KTtcbiR7T2JqZWN0LmVudHJpZXMob3B0aW9ucz8uc3Rhc2hWYWx1ZXMgPz8gW10pLm1hcCh2YWwgPT4gYCAgICAgIGN0eC5zdGFzaC4ke3ZhbFswXX0gPSAnJHt2YWxbMV19J2ApLmpvaW4oJ1xcbicpfVxuICAgICAgcmV0dXJuIHt9XG4gICAgfVxuXG4gICAgLy8gVGhlIGFmdGVyIHN0ZXBcbiAgICBleHBvcnQgZnVuY3Rpb24gcmVzcG9uc2UoY3R4KSB7XG4gICAgICByZXR1cm4gY3R4LnByZXYucmVzdWx0XG4gICAgfVxuICBgKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRWdGxSZXNvbHZlcjxUWVBFIGV4dGVuZHMga2V5b2YgUkVTT0xWRVJTLCBGSUVMRFRZUEUgZXh0ZW5kcyBOb25OdWxsYWJsZTxSRVNPTFZFUlNbVFlQRV0+Pih0eXBlTmFtZTogVFlQRSwgZmllbGROYW1lOiBrZXlvZiBGSUVMRFRZUEUsIG9wdGlvbnM6IFZ0bFJlc29sdmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IG9wZXJhdGlvbklkID0gYCR7dHlwZU5hbWUgYXMgc3RyaW5nfS4ke2ZpZWxkTmFtZSBhcyBTdHJpbmd9YDtcblxuICAgIGNvbnN0IG1hcHBpbmdSZXFGaWxlID0gYC4vc3JjL3Z0bC8ke29wZXJhdGlvbklkfS5yZXEudnRsYDtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMobWFwcGluZ1JlcUZpbGUpKSB7XG4gICAgICBmcy5ta2RpclN5bmMoJy4vc3JjL3Z0bC8nLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMobWFwcGluZ1JlcUZpbGUsICcjIyBSZXF1ZXN0IG1hcHBpbmcnLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pO1xuICAgIH1cbiAgICBjb25zdCBtYXBwaW5nUmVzRmlsZSA9IGAuL3NyYy92dGwvJHtvcGVyYXRpb25JZH0ucmVzLnZ0bGA7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKG1hcHBpbmdSZXNGaWxlKSkge1xuICAgICAgZnMubWtkaXJTeW5jKCcuL3NyYy92dGwvJywgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKG1hcHBpbmdSZXNGaWxlLCAnJHV0aWwudG9Kc29uKCRjdHgucmVzdWx0KScsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSk7XG4gICAgfVxuXG4gICAgbmV3IGF3c19hcHBzeW5jLlJlc29sdmVyKHRoaXMsIGBSZXNvbHZlciR7b3BlcmF0aW9uSWR9YCwge1xuICAgICAgYXBpOiB0aGlzLmFwaSxcbiAgICAgIHR5cGVOYW1lOiB0eXBlTmFtZSBhcyBzdHJpbmcsXG4gICAgICBmaWVsZE5hbWU6IGZpZWxkTmFtZSBhcyBzdHJpbmcsXG4gICAgICBkYXRhU291cmNlOiBvcHRpb25zLmRhdGFTb3VyY2UsXG4gICAgICByZXF1ZXN0TWFwcGluZ1RlbXBsYXRlOiBhd3NfYXBwc3luYy5NYXBwaW5nVGVtcGxhdGUuZnJvbVN0cmluZyh0aGlzLnN1YnN0VmFyaWFibGVzKGZzLnJlYWRGaWxlU3luYyhtYXBwaW5nUmVxRmlsZSkudG9TdHJpbmcoJ3V0Zi04JyksIG9wdGlvbnMudmFyaWFibGVzKSksXG4gICAgICByZXNwb25zZU1hcHBpbmdUZW1wbGF0ZTogYXdzX2FwcHN5bmMuTWFwcGluZ1RlbXBsYXRlLmZyb21TdHJpbmcodGhpcy5zdWJzdFZhcmlhYmxlcyhmcy5yZWFkRmlsZVN5bmMobWFwcGluZ1Jlc0ZpbGUpLnRvU3RyaW5nKCd1dGYtOCcpLCBvcHRpb25zLnZhcmlhYmxlcykpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzdFZhcmlhYmxlcyhkYXRhOiBzdHJpbmcsIHZhcnM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge30pOiBzdHJpbmcge1xuICAgIGxldCByZXMgPSBkYXRhO1xuICAgIGZvciAoY29uc3QgbmFtZSBpbiB2YXJzKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhcnMsIG5hbWUpKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdmFyc1tuYW1lXTtcbiAgICAgICAgcmVzID0gcmVzLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCRcXHske25hbWV9XFx9YCwgJ2cnKSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVFbnRyeUZpbGUoZW50cnlGaWxlOiBzdHJpbmcsIHR5cGVOYW1lOiBzdHJpbmcsIGZpZWxkTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYXJnVHlwZSA9IGAke3R5cGVOYW1lfSR7dXBwZXJjYXNlRmlyc3QoZmllbGROYW1lKX1BcmdzYDtcbiAgICBmcy53cml0ZUZpbGVTeW5jKGVudHJ5RmlsZSwgYGltcG9ydCB7IGFwaSB9IGZyb20gJ2Nkay1zZXJ2ZXJsZXNzL2xpYi9sYW1iZGEnO1xuaW1wb3J0IHsgJHt0eXBlTmFtZX0sICR7YXJnVHlwZX0gfSBmcm9tICcuLi9nZW5lcmF0ZWQvZ3JhcGhxbC4ke3RoaXMucHJvcHMuYXBpTmFtZS50b0xvd2VyQ2FzZSgpfS1tb2RlbC5nZW5lcmF0ZWQnO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlciA9IGFwaS5jcmVhdGVBcHBTeW5jSGFuZGxlcjwke2FyZ1R5cGV9LCAke3R5cGVOYW1lfVsnJHtmaWVsZE5hbWV9J10+KGFzeW5jIChjdHgpID0+IHtcbiAgY3R4LmxvZ2dlci5pbmZvKEpTT04uc3RyaW5naWZ5KGN0eC5ldmVudCkpO1xuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCB5ZXQgaW1wbGVtZW50ZWQnKTtcbn0pO2AsIHtcbiAgICAgIGVuY29kaW5nOiAndXRmLTgnLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVKU1Jlc29sdmVyRmlsZShmbjogSnNSZXNvbHZlckNvbmZpZywgdHlwZU5hbWU6IHN0cmluZywgZmllbGROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhcmdUeXBlID0gYCR7dHlwZU5hbWV9JHt1cHBlcmNhc2VGaXJzdChmaWVsZE5hbWUpfUFyZ3NgO1xuICAgIGNvbnN0IHJldHVyblR5cGUgPSAoZm4uaW5kZXggPT0gKGZuLnN0ZXBDb3VudCAtIDEpKSA/IGAke3R5cGVOYW1lfVsnJHtmaWVsZE5hbWV9J11gIDogJ2FueSc7XG5cbiAgICBmcy53cml0ZUZpbGVTeW5jKGZuLmVudHJ5RmlsZSwgYGltcG9ydCB7IENvbnRleHQsIHV0aWwgfSBmcm9tICdAYXdzLWFwcHN5bmMvdXRpbHMnO1xuaW1wb3J0IHsgJHt0eXBlTmFtZX0sICR7YXJnVHlwZX0gfSBmcm9tICcuLi9nZW5lcmF0ZWQvZ3JhcGhxbC4ke3RoaXMucHJvcHMuYXBpTmFtZS50b0xvd2VyQ2FzZSgpfS1tb2RlbC5nZW5lcmF0ZWQnO1xuXG4vKipcbiAqIFJlcXVlc3QgZm9yICR7dHlwZU5hbWV9LiR7ZmllbGROYW1lfSAoU3RlcDogJHtmbi5uYW1lfSAke2ZuLmluZGV4ICsgMX0vJHtmbi5zdGVwQ291bnR9KVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWVzdChjdHg6IENvbnRleHQ8JHthcmdUeXBlfT4pOiBhbnkge1xuICBjb25zb2xlLmxvZyhjdHgpO1xuICByZXR1cm4ge307XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZm9yICR7dHlwZU5hbWV9LiR7ZmllbGROYW1lfSAoU3RlcDogJHtmbi5uYW1lfSAke2ZuLmluZGV4ICsgMX0vJHtmbi5zdGVwQ291bnR9KVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzcG9uc2UoY3R4OiBDb250ZXh0PCR7YXJnVHlwZX0+KTogJHtyZXR1cm5UeXBlfSB7XG4gIGNvbnNvbGUubG9nKGN0eCk7XG4gIHJldHVybiBjdHgucmVzdWx0Lml0ZW1zO1xufWAsIHtcbiAgICAgIGVuY29kaW5nOiAndXRmLTgnLFxuICAgIH0pO1xuICB9XG5cbn1cblxuZnVuY3Rpb24gdXBwZXJjYXNlRmlyc3QodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZS5zdWJzdHJpbmcoMCwgMSkudG9VcHBlckNhc2UoKSArIHZhbHVlLnN1YnN0cmluZygxKTtcbn1cblxuLyoqXG4gKiBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi9tYWluL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzL2xpYi91dGlsLnRzXG4gKiBhcyBpdCBpcyBub3QgZXhwb3J0ZWQgYnkgYXdzLWNkay1saWJcbiAqL1xuZnVuY3Rpb24gZXhlYyhjbWQ6IHN0cmluZywgYXJnczogc3RyaW5nW10sIG9wdGlvbnM/OiBTcGF3blN5bmNPcHRpb25zKSB7XG4gIGNvbnN0IHByb2MgPSBzcGF3blN5bmMoY21kLCBhcmdzLCBvcHRpb25zKTtcblxuICBpZiAocHJvYy5lcnJvcikge1xuICAgIHRocm93IHByb2MuZXJyb3I7XG4gIH1cblxuICBpZiAocHJvYy5zdGF0dXMgIT09IDApIHtcbiAgICBpZiAocHJvYy5zdGRvdXQgfHwgcHJvYy5zdGRlcnIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgW1N0YXR1cyAke3Byb2Muc3RhdHVzfV0gc3Rkb3V0OiAke3Byb2Muc3Rkb3V0Py50b1N0cmluZygpLnRyaW0oKX1cXG5cXG5cXG5zdGRlcnI6ICR7cHJvYy5zdGRlcnI/LnRvU3RyaW5nKCkudHJpbSgpfWApO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7Y21kfSAke2FyZ3Muam9pbignICcpfSAke29wdGlvbnM/LmN3ZCA/IGBydW4gaW4gZGlyZWN0b3J5ICR7b3B0aW9ucy5jd2R9YCA6ICcnfSBleGl0ZWQgd2l0aCBzdGF0dXMgJHtwcm9jLnN0YXR1c31gKTtcbiAgfVxuXG4gIHJldHVybiBwcm9jO1xufVxuXG4iXX0=
|
|
@@ -82,10 +82,12 @@ class RestApi extends base_api_1.BaseApi {
|
|
|
82
82
|
validation: aws_cdk_lib_1.aws_certificatemanager.CertificateValidation.fromDns(this.hostedZone),
|
|
83
83
|
}),
|
|
84
84
|
};
|
|
85
|
-
new cdk.CfnOutput(this,
|
|
85
|
+
new cdk.CfnOutput(this, 'RestApiDomainName', {
|
|
86
|
+
key: `${this.props.apiName}${outputs_1.CFN_OUTPUT_SUFFIX_RESTAPI_DOMAINNAME}`,
|
|
86
87
|
value: this.apiFQDN,
|
|
87
88
|
});
|
|
88
|
-
new cdk.CfnOutput(this,
|
|
89
|
+
new cdk.CfnOutput(this, 'RestApiUrlOutput', {
|
|
90
|
+
key: `${this.props.apiName}${outputs_1.CFN_OUTPUT_SUFFIX_RESTAPI_URL}`,
|
|
89
91
|
value: 'https://' + this.apiFQDN,
|
|
90
92
|
});
|
|
91
93
|
}
|
|
@@ -366,4 +368,4 @@ class RestApi extends base_api_1.BaseApi {
|
|
|
366
368
|
}
|
|
367
369
|
}
|
|
368
370
|
exports.RestApi = RestApi;
|
|
369
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RydWN0cy9yZXN0LWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6Qiw2Q0FNcUI7QUFDckIsaURBQW1DO0FBRW5DLDhDQUFnQztBQUdoQyx5Q0FBbUQ7QUFDbkQsaUNBQXVEO0FBQ3ZELCtDQUF3RztBQThCeEc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBQ0gsTUFBYSxPQUFvQixTQUFRLGtCQUFPO0lBa0I5Qzs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFVLEtBQXdCOztRQUN4RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUR3QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQWIxRTs7O1dBR0c7UUFDSyxlQUFVLEdBQThDLEVBQUUsQ0FBQztRQVlqRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBYSxDQUFDO1FBRTNGLElBQUksZ0JBQThELENBQUM7UUFDbkUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLGdCQUFnQixHQUFHO2dCQUNqQixVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ3hCLFdBQVcsRUFBRSxJQUFJLG9DQUFzQixDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO29CQUNoRSxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ3hCLFVBQVUsRUFBRSxvQ0FBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztpQkFDbEYsQ0FBQzthQUNILENBQUM7WUFDRixJQUFJLEdBQUcsQ0FBQyxTQUFT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SSxFQUFFO1lBQ3RCLEtBQUssTUFBTSxRQUFRLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxFQUFFO2dCQUN0RCxLQUFLLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRTtvQkFDMUIsd0dBQXdHO29CQUN4RyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQ2xDLFNBQVMsQ0FBQyxxQ0FBcUM7cUJBQ2hEO29CQUVELE1BQU0sVUFBVSxHQUFJLFFBQTJCLENBQUMsR0FBMkIsQ0FBRSxDQUFDO29CQUM5RSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLEVBQUU7d0JBQy9CLFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztxQkFDckM7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUN0QjtJQUNILENBQUM7Q0FFRjtBQWpXRCwwQkFpV0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQge1xuICBhd3NfY2VydGlmaWNhdGVtYW5hZ2VyLFxuICBhd3NfaWFtLFxuICBhd3Nfcm91dGU1MyxcbiAgYXdzX3JvdXRlNTNfdGFyZ2V0cyxcbiAgYXdzX2FwaWdhdGV3YXksXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAnanMteWFtbCc7XG5pbXBvcnQgeyBPcGVuQVBJMywgT3BlcmF0aW9uT2JqZWN0LCBQYXRoSXRlbU9iamVjdCB9IGZyb20gJ29wZW5hcGktdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBJQ29nbml0b0F1dGhlbnRpY2F0aW9uLCBJSnd0QXV0aGVudGljYXRpb24gfSBmcm9tICcuL2F1dGhlbnRpY2F0aW9uJztcbmltcG9ydCB7IEJhc2VBcGksIEJhc2VBcGlQcm9wcyB9IGZyb20gJy4vYmFzZS1hcGknO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24sIExhbWJkYU9wdGlvbnMgfSBmcm9tICcuL2Z1bmMnO1xuaW1wb3J0IHsgQ0ZOX09VVFBVVF9TVUZGSVhfUkVTVEFQSV9ET01BSU5OQU1FLCBDRk5fT1VUUFVUX1NVRkZJWF9SRVNUQVBJX1VSTCB9IGZyb20gJy4uL3NoYXJlZC9vdXRwdXRzJztcblxuZXhwb3J0IGludGVyZmFjZSBSZXN0QXBpUHJvcHM8T1BTPiBleHRlbmRzIEJhc2VBcGlQcm9wcyB7XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHJvdXRlcyBmb3IgYWxsIGVuZHBvaW50cyBjb25maWd1cmVkIGluIHRoZSBvcGVuYXBpLnlhbWwgZmlsZVxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBhdXRvR2VuZXJhdGVSb3V0ZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBjdXN0b20gb3B0aW9ucyBmb3IgdGhlIGNyZWF0ZWQgSHR0cEFwaVxuICAgKlxuICAgKiBAZGVmYXVsdCAtXG4gICAqL1xuICByZXN0QXBpUHJvcHM/OiBhd3NfYXBpZ2F0ZXdheS5SZXN0QXBpQmFzZVByb3BzO1xuXG4gIC8qKlxuICAgKiBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSB1bmRlcmx5aW5nIExhbWJkYSBmdW5jdGlvbiBjb25zdHJ1Y3QgcGVyIG9wZXJhdGlvbklkXG4gICAqXG4gICAqIEBkZWZhdWx0IC1cbiAgICovXG4gIGxhbWJkYU9wdGlvbnNCeU9wZXJhdGlvbj86IHsgW29wZXJhdGlvbklkIGluIGtleW9mIE9QU10/OiBMYW1iZGFPcHRpb25zIH07XG5cbiAgZGVmaW5pdGlvbkZpbGVOYW1lOiBzdHJpbmc7XG5cbiAgY29yczogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgUmVzdEFwaSBjb25zdHJ1Y3Qgc2V0cyB1cCBhbiBBV1MgQVBJIEdhdGV3YXkgUkVTVCBBUEkgdXNpbmcgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLlxuICogVGhpcyBjb25zdHJ1Y3QgZmFjaWxpdGF0ZXMgdGhlIGNyZWF0aW9uIG9mIGEgUkVTVCBBUEkgd2l0aCB2YXJpb3VzIGNvbmZpZ3VyYXRpb25zLCBpbmNsdWRpbmcgY3VzdG9tIGRvbWFpbiwgQ09SUyBzdXBwb3J0LCBhbmQgaW50ZWdyYXRpb24gd2l0aCBMYW1iZGEgZnVuY3Rpb25zLlxuICogSXQgYWxsb3dzIGF1dG8tZ2VuZXJhdGluZyByb3V0ZXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIE9wZW5BUEkgZGVmaW5pdGlvbiBhbmQgcHJvdmlkZXMgbWV0aG9kcyB0byBkeW5hbWljYWxseSBhZGQgY3VzdG9tIHJvdXRlcyBhbmQgbWFuYWdlIExhbWJkYSBmdW5jdGlvbiBpbnRlZ3JhdGlvbnMuXG4gKlxuICogQHRlbXBsYXRlIFBBVEhTIC0gVGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIEFQSSBwYXRocy5cbiAqIEB0ZW1wbGF0ZSBPUFMgLSBUaGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgQVBJIG9wZXJhdGlvbnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGFwaSA9IG5ldyBSZXN0QXBpKHRoaXMsICdNeVJlc3RBcGknLCB7XG4gKiAgIGFwaU5hbWU6ICdNeUFQSScsXG4gKiAgIHN0YWdlTmFtZTogJ2RldicsXG4gKiAgIGRlZmluaXRpb25GaWxlTmFtZTogJ29wZW5hcGkueWFtbCcsXG4gKiAgIGF1dGhlbnRpY2F0aW9uOiBteUNvZ25pdG9BdXRoLFxuICogICBzaW5nbGVUYWJsZURhdGFzdG9yZTogbXlEeW5hbW9EQlRhYmxlLFxuICogICBhdXRvR2VuZXJhdGVSb3V0ZXM6IHRydWUsXG4gKiB9KTtcbiAqXG4gKiAvLyBBZGQgYSBjdXN0b20gUkVTVCByZXNvdXJjZVxuICogYXBpLmFkZFJlc3RSZXNvdXJjZSgnL2l0ZW1zJywgJ2dldCcpO1xuICpcbiAqIC8vIEdldCB0aGUgTGFtYmRhIGZ1bmN0aW9uIGZvciBhIHNwZWNpZmljIG9wZXJhdGlvblxuICogY29uc3QgbGFtYmRhRnVuY3Rpb24gPSBhcGkuZ2V0RnVuY3Rpb25Gb3JPcGVyYXRpb24oJ2dldEl0ZW1zJyk7XG4gKi9cbmV4cG9ydCBjbGFzcyBSZXN0QXBpPFBBVEhTLCBPUFM+IGV4dGVuZHMgQmFzZUFwaSB7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgQVBJIEdhdGV3YXkgUkVTVCBBUEkgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXBpOiBhd3NfYXBpZ2F0ZXdheS5TcGVjUmVzdEFwaTtcblxuICAvKipcbiAgICogVGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIFJFU1QgQVBJLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFwaVNwZWM6IE9wZW5BUEkzO1xuXG4gIC8qKlxuICAgKiBBIGNvbGxlY3Rpb24gb2YgTGFtYmRhIGZ1bmN0aW9ucyB1c2VkIGFzIGludGVncmF0aW9ucyBmb3IgdGhlIEFQSSBvcGVyYXRpb25zLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfZnVuY3Rpb25zOiB7IFtvcGVyYXRpb25JZDogc3RyaW5nXTogTGFtYmRhRnVuY3Rpb24gfSA9IHt9O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFJlc3RBcGkuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0aGlzIGNvbnN0cnVjdCBpcyBkZWZpbmVkLlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgc2NvcGVkIGNvbnN0cnVjdCBJRC5cbiAgICogQHBhcmFtIHByb3BzIC0gVGhlIHByb3BlcnRpZXMgb2YgdGhlIFJlc3RBcGkgY29uc3RydWN0LlxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJpdmF0ZSBwcm9wczogUmVzdEFwaVByb3BzPE9QUz4pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHRoaXMuYXBpU3BlYyA9IHlhbWwubG9hZChmcy5yZWFkRmlsZVN5bmMocHJvcHMuZGVmaW5pdGlvbkZpbGVOYW1lKS50b1N0cmluZygpKSBhcyBPcGVuQVBJMztcblxuICAgIGxldCBjdXN0b21Eb21haW5OYW1lOiBhd3NfYXBpZ2F0ZXdheS5Eb21haW5OYW1lT3B0aW9ucyB8IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5hcGlGUUROKSB7XG4gICAgICBjdXN0b21Eb21haW5OYW1lID0ge1xuICAgICAgICBkb21haW5OYW1lOiB0aGlzLmFwaUZRRE4sXG4gICAgICAgIGNlcnRpZmljYXRlOiBuZXcgYXdzX2NlcnRpZmljYXRlbWFuYWdlci5DZXJ0aWZpY2F0ZSh0aGlzLCAnQ2VydCcsIHtcbiAgICAgICAgICBkb21haW5OYW1lOiB0aGlzLmFwaUZRRE4sXG4gICAgICAgICAgdmFsaWRhdGlvbjogYXdzX2NlcnRpZmljYXRlbWFuYWdlci5DZXJ0aWZpY2F0ZVZhbGlkYXRpb24uZnJvbURucyh0aGlzLmhvc3RlZFpvbmUpLFxuICAgICAgICB9KSxcbiAgICAgIH07XG4gICAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCBgJHt0aGlzLnByb3BzLmFwaU5hbWV9JHtDRk5fT1VUUFVUX1NVRkZJWF9SRVNUQVBJX0RPTUFJTk5BTUV9YCwge1xuICAgICAgICB2YWx1ZTogdGhpcy5hcGlGUUROLFxuICAgICAgfSk7XG4gICAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCBgJHt0aGlzLnByb3BzLmFwaU5hbWV9JHtDRk5fT1VUUFVUX1NVRkZJWF9SRVNUQVBJX1VSTH1gLCB7XG4gICAgICAgIHZhbHVlOiAnaHR0cHM6Ly8nICsgdGhpcy5hcGlGUUROLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gaWYgKChwcm9wcy5tb25pdG9yaW5nID8/IHRydWUpICYmIHRoaXMubW9uaXRvcmluZykge1xuICAgIC8vICAgdGhpcy5tb25pdG9yaW5nLmFwaUVycm9yc1dpZGdldC5hZGRMZWZ0TWV0cmljKHRoaXMuYXBpLm1ldHJpY1NlcnZlckVycm9yKHtcbiAgICAvLyAgICAgc3RhdGlzdGljOiAnc3VtJyxcbiAgICAvLyAgIH0pKTtcbiAgICAvLyAgIHRoaXMubW9uaXRvcmluZy5hcGlFcnJvcnNXaWRnZXQuYWRkTGVmdE1ldHJpYyh0aGlzLmFwaS5tZXRyaWNDbGllbnRFcnJvcih7XG4gICAgLy8gICAgIHN0YXRpc3RpYzogJ3N1bScsXG4gICAgLy8gICB9KSk7XG5cbiAgICAvLyAgIHRoaXMubW9uaXRvcmluZy5hcGlMYXRlbmN5V2lkZ2V0LmFkZExlZnRNZXRyaWModGhpcy5hcGkubWV0cmljTGF0ZW5jeSh7XG4gICAgLy8gICAgIHN0YXRpc3RpYzogJ0F2ZXJhZ2UnLFxuICAgIC8vICAgfSkpO1xuICAgIC8vICAgdGhpcy5tb25pdG9yaW5nLmFwaUxhdGVuY3lXaWRnZXQuYWRkTGVmdE1ldHJpYyh0aGlzLmFwaS5tZXRyaWNMYXRlbmN5KHtcbiAgICAvLyAgICAgc3RhdGlzdGljOiAncDkwJyxcbiAgICAvLyAgIH0pKTtcbiAgICAvLyAgIHRoaXMubW9uaXRvcmluZy5hcGlMYXRlbmN5VGFpbFdpZGdldC5hZGRMZWZ0TWV0cmljKHRoaXMuYXBpLm1ldHJpY0xhdGVuY3koe1xuICAgIC8vICAgICBzdGF0aXN0aWM6ICdwOTUnLFxuICAgIC8vICAgfSkpO1xuICAgIC8vICAgdGhpcy5tb25pdG9yaW5nLmFwaUxhdGVuY3lUYWlsV2lkZ2V0LmFkZExlZnRNZXRyaWModGhpcy5hcGkubWV0cmljTGF0ZW5jeSh7XG4gICAgLy8gICAgIHN0YXRpc3RpYzogJ3A5OScsXG4gICAgLy8gICB9KSk7XG4gICAgLy8gfVxuXG4gICAgaWYgKHByb3BzLmF1dG9HZW5lcmF0ZVJvdXRlcyA/PyB0cnVlKSB7XG4gICAgICBmb3IgKGNvbnN0IHBhdGggaW4gdGhpcy5hcGlTcGVjLnBhdGhzKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5hcGlTcGVjLnBhdGhzLCBwYXRoKSkge1xuICAgICAgICAgIGNvbnN0IHBhdGhJdGVtID0gdGhpcy5hcGlTcGVjLnBhdGhzW3BhdGhdO1xuICAgICAgICAgIGZvciAoY29uc3QgbWV0aG9kIGluIHBhdGhJdGVtKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhdGhJdGVtLCBtZXRob2QpICYmXG4gICAgICAgICAgICAgIFsnZ2V0JywgJ3Bvc3QnLCAncHV0JywgJ2RlbGV0ZScsICdwYXRjaCcsICdvcHRpb25zJywgJ2hlYWQnXS5pbmRleE9mKG1ldGhvZCkgPj0gMCkge1xuICAgICAgICAgICAgICAvLyBBZGQgYWxsIG9wZXJhdGlvbnNcbiAgICAgICAgICAgICAgdGhpcy5hZGRSZXN0UmVzb3VyY2UocGF0aCBhcyBhbnksIG1ldGhvZCBhcyBhbnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBfc3BlYyBFbmRwb2ludFxuICAgIHRoaXMuYXBpU3BlYy5wYXRocyFbJy9vcGVuYXBpLmpzb24nXSA9IHtcbiAgICAgIGdldDoge1xuICAgICAgICAnc3VtbWFyeSc6ICdSZXR1cm5zIHRoZSByYXcgT3BlbkFQSSBzcGVjIG9mIHRoaXMgQVBJJyxcbiAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ1JldHVybnMgdGhlIHJhdyBPcGVuQVBJIHNwZWMgb2YgdGhpcyBBUEknLFxuICAgICAgICAnb3BlcmF0aW9uSWQnOiAnX3NwZWMnLFxuICAgICAgICAncmVzcG9uc2VzJzoge1xuICAgICAgICAgIDIwMDoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdPcGVuQVBJIHNwZWMgb2YgdGhpcyBBUEknLFxuICAgICAgICAgICAgY29udGVudDoge1xuICAgICAgICAgICAgICAnYXBwbGljYXRpb24vb3BlbmFwaStqc29uJzoge30sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC8vIEB0cy1pZ25vcmUgQ3VzdG9tIHByb3BlcnR5IGZvciBBV1NcbiAgICAgICAgJ3gtYW1hem9uLWFwaWdhdGV3YXktaW50ZWdyYXRpb24nOiB7XG4gICAgICAgICAgdHlwZTogJ21vY2snLFxuICAgICAgICAgIGh0dHBNZXRob2Q6ICdHRVQnLFxuICAgICAgICAgIHBheWxvYWRGb3JtYXRWZXJzaW9uOiAnMS4wJyxcbiAgICAgICAgICByZXF1ZXN0VGVtcGxhdGVzOiB7XG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbic6ICd7XFwnc3RhdHVzQ29kZVxcJzogMjAwfScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNwb25zZXM6IHtcbiAgICAgICAgICAgIDIwMDoge1xuICAgICAgICAgICAgICBzdGF0dXNDb2RlOiAyMDAsXG4gICAgICAgICAgICAgIHJlc3BvbnNlVGVtcGxhdGVzOiB7XG4gICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL29wZW5hcGkranNvbic6IEpTT04uc3RyaW5naWZ5KHRoaXMuY2xlYW51cFNwZWMoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSgodGhpcy5hcGlTcGVjKSkpKSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAocHJvcHMuY29ycykge1xuICAgICAgdGhpcy5hcGlTcGVjLnBhdGhzIVsnL3twcm94eSt9J10gPSB7XG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAnc3VtbWFyeSc6ICdDT1JTIHN1cHBvcnQnLFxuICAgICAgICAgICdkZXNjcmlwdGlvbic6ICdFbmFibGUgQ09SUyBieSByZXR1cm5pbmcgY29ycmVjdCBoZWFkZXJzJyxcbiAgICAgICAgICAndGFncyc6IFsnQ09SUyddLFxuICAgICAgICAgICdyZXNwb25zZXMnOiB7XG4gICAgICAgICAgICAyMDA6IHtcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdEZWZhdWx0IHJlc3BvbnNlIGZvciBDT1JTIG1ldGhvZCcsXG4gICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJzogeyBzY2hlbWE6IHsgdHlwZTogJ3N0cmluZycgfSB9LFxuICAgICAgICAgICAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJzogeyBzY2hlbWE6IHsgdHlwZTogJ3N0cmluZycgfSB9LFxuICAgICAgICAgICAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFscyc6IHsgc2NoZW1hOiB7IHR5cGU6ICdzdHJpbmcnIH0gfSxcbiAgICAgICAgICAgICAgICAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyc6IHsgc2NoZW1hOiB7IHR5cGU6ICdzdHJpbmcnIH0gfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgY29udGVudDoge30sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ3gtYW1hem9uLWFwaWdhdGV3YXktaW50ZWdyYXRpb24nOiB7XG4gICAgICAgICAgICB0eXBlOiAnbW9jaycsXG4gICAgICAgICAgICByZXF1ZXN0VGVtcGxhdGVzOiB7XG4gICAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzogJyNzZXQoJGNvbnRleHQucmVxdWVzdE92ZXJyaWRlLmhlYWRlci5vcmlnaW4gPSAkbWV0aG9kLnJlcXVlc3QuaGVhZGVyLm9yaWdpbilcXG57XFxuICBcInN0YXR1c0NvZGVcIiA6IDIwMFxcbn1cXG4nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3BvbnNlczoge1xuICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgc3RhdHVzQ29kZTogJzIwMCcsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAnbWV0aG9kLnJlc3BvbnNlLmhlYWRlci5BY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJzogXCInQ29udGVudC1UeXBlLFgtQW16LURhdGUsQXV0aG9yaXphdGlvbixYLUFwaS1LZXknXCIsXG4gICAgICAgICAgICAgICAgICAnbWV0aG9kLnJlc3BvbnNlLmhlYWRlci5BY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFscyc6IFwiJ3RydWUnXCIsXG4gICAgICAgICAgICAgICAgICAnbWV0aG9kLnJlc3BvbnNlLmhlYWRlci5BY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJzogXCInUFVULEdFVCxQT1NULERFTEVURSxQQVRDSCxIRUFELE9QVElPTlMnXCIsXG4gICAgICAgICAgICAgICAgICAnbWV0aG9kLnJlc3BvbnNlLmhlYWRlci5BY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nOiAnY29udGV4dC5yZXF1ZXN0T3ZlcnJpZGUuaGVhZGVyLm9yaWdpbicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByZXNwb25zZVRlbXBsYXRlczoge1xuICAgICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiAne30nLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMucGF0Y2hTZWN1cml0eSh0aGlzLmFwaVNwZWMpO1xuXG4gICAgLy8gVE9ETyBwYXRjaCBzcGVjIGZvciBDb2duaXRvIHVzZXIgcG9vbFxuXG4gICAgdGhpcy5hcGkgPSBuZXcgYXdzX2FwaWdhdGV3YXkuU3BlY1Jlc3RBcGkodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgcmVzdEFwaU5hbWU6IGAke3Byb3BzLmFwaU5hbWV9IFske3Byb3BzLnN0YWdlTmFtZX1dYCxcbiAgICAgIGRvbWFpbk5hbWU6IGN1c3RvbURvbWFpbk5hbWUsXG4gICAgICBhcGlEZWZpbml0aW9uOiBhd3NfYXBpZ2F0ZXdheS5BcGlEZWZpbml0aW9uLmZyb21JbmxpbmUodGhpcy5hcGlTcGVjKSxcbiAgICAgIC4uLnByb3BzLnJlc3RBcGlQcm9wcyxcbiAgICB9KTtcblxuICAgIC8vIGFkZCBpbnZva2UgcGVybWlzc2lvbnMgdG8gTGFtYmRhIGZ1bmN0aW9uc1xuICAgIGZvciAoY29uc3QgZm4gb2YgT2JqZWN0LnZhbHVlcyh0aGlzLl9mdW5jdGlvbnMpKSB7XG4gICAgICBmbi5hZGRQZXJtaXNzaW9uKCdSZXN0QXBpSW52b2tlJywge1xuICAgICAgICBwcmluY2lwYWw6IG5ldyBhd3NfaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2FwaWdhdGV3YXkuYW1hem9uYXdzLmNvbScpLFxuICAgICAgICBhY3Rpb246ICdsYW1iZGE6SW52b2tlRnVuY3Rpb24nLFxuICAgICAgICBzb3VyY2VBcm46IHRoaXMuYXBpLmFybkZvckV4ZWN1dGVBcGkoKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjdXN0b21Eb21haW5OYW1lICYmIHRoaXMuYXBpLmRvbWFpbk5hbWUpIHtcbiAgICAgIG5ldyBhd3Nfcm91dGU1My5BUmVjb3JkKHRoaXMsICdEbnNSZWNvcmQnLCB7XG4gICAgICAgIHpvbmU6IHRoaXMuaG9zdGVkWm9uZSEsXG4gICAgICAgIHJlY29yZE5hbWU6IGN1c3RvbURvbWFpbk5hbWUuZG9tYWluTmFtZSxcbiAgICAgICAgdGFyZ2V0OiBhd3Nfcm91dGU1My5SZWNvcmRUYXJnZXQuZnJvbUFsaWFzKFxuICAgICAgICAgIG5ldyBhd3Nfcm91dGU1M190YXJnZXRzLkFwaUdhdGV3YXlEb21haW4odGhpcy5hcGkuZG9tYWluTmFtZSksXG4gICAgICAgICksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBjbGVhbnVwU3BlYyhzcGVjOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgT2JqZWN0LmVudHJpZXMoc3BlYykuZm9yRWFjaCgoW3Byb3AsIHZhbHVlXTogW3N0cmluZywgYW55XSkgPT4ge1xuICAgICAgaWYgKHByb3Auc3RhcnRzV2l0aCgneC0nKSkge1xuICAgICAgICBkZWxldGUgc3BlY1twcm9wXTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICB0aGlzLmNsZWFudXBTcGVjKHNwZWNbcHJvcF0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNwZWM7XG4gIH1cblxuICAvKipcbiAgICogcmV0dXJuIHRoZSBnZW5lcmF0ZWQgTGFtYmRhIGZ1bmN0aW9uIGZvciB0aGUgc3BlY2lmaWVkIEFQSSBvcGVyYXRpb25cbiAgICovXG4gIHB1YmxpYyBnZXRGdW5jdGlvbkZvck9wZXJhdGlvbihvcGVyYXRpb25JZDoga2V5b2YgT1BTKTogTGFtYmRhRnVuY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9mdW5jdGlvbnNbb3BlcmF0aW9uSWQgYXMgc3RyaW5nXTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm4gYSBsaXN0IG9mIGFsbCBnZW5lcmF0ZWQgTGFtYmRhIGZ1bmN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdldEZ1bmN0aW9ucygpOiBMYW1iZGFGdW5jdGlvbltdIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9mdW5jdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZpc2l0b3IgbWV0aG9kIHRvIG1vZGlmeSB0aGUgZ2l2ZW4gZnVuY3Rpb25zXG4gICAqXG4gICAqIEBwYXJhbSBvcGVyYXRpb25JZHMgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHZpc2l0XG4gICAqIEBwYXJhbSBvcCB0aGUgZnVuY3Rpb24gdG8gY2FsbCBmb3IgZXZlcnkgZnVuY3Rpb25cbiAgICovXG4gIHB1YmxpYyBtb2RpZnlPcGVyYXRpb25GdW5jdGlvbnMob3BlcmF0aW9uSWRzOiAoa2V5b2YgT1BTKVtdLCBvcDogKGZuOiBMYW1iZGFGdW5jdGlvbikgPT4gdm9pZCkge1xuICAgIGZvciAoY29uc3Qgb3BlcmF0aW9uSWQgb2Ygb3BlcmF0aW9uSWRzKSB7XG4gICAgICBvcCh0aGlzLmdldEZ1bmN0aW9uRm9yT3BlcmF0aW9uKG9wZXJhdGlvbklkKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZFJlc3RSZXNvdXJjZTxQIGV4dGVuZHMga2V5b2YgUEFUSFM+KHBhdGg6IFAsIG1ldGhvZDoga2V5b2YgUEFUSFNbUF0pIHtcbiAgICBjb25zdCBvYVBhdGggPSB0aGlzLmFwaVNwZWMucGF0aHMhW3BhdGggYXMgc3RyaW5nXSBhcyBQYXRoSXRlbU9iamVjdDtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBvYVBhdGhbbWV0aG9kIGFzIGtleW9mIFBhdGhJdGVtT2JqZWN0XSBhcyBPcGVyYXRpb25PYmplY3Q7XG4gICAgY29uc3Qgb3BlcmF0aW9uSWQgPSBvcGVyYXRpb24ub3BlcmF0aW9uSWQhO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYCR7bWV0aG9kIGFzIHN0cmluZ30gJHtwYXRoIGFzIHN0cmluZ30gLSAke29wZXJhdGlvbi5zdW1tYXJ5fWA7XG5cbiAgICBjb25zdCBjdXN0b21MYW1iZGFPcHRpb25zID0gdGhpcy5wcm9wcy5sYW1iZGFPcHRpb25zQnlPcGVyYXRpb24gPyB0aGlzLnByb3BzLmxhbWJkYU9wdGlvbnNCeU9wZXJhdGlvbltvcGVyYXRpb25JZCBhcyBrZXlvZiBPUFNdIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiB0aGlzLmFkZEN1c3RvbVJlc3RSZXNvdXJjZShvcGVyYXRpb24sIG1ldGhvZCBhcyBzdHJpbmcsIGRlc2NyaXB0aW9uLCBjdXN0b21MYW1iZGFPcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRDdXN0b21SZXN0UmVzb3VyY2Uob3BlcmF0aW9uOiBPcGVyYXRpb25PYmplY3QsIG1ldGhvZDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nLCBhZGRpdGlvbmFsTGFtYmRhT3B0aW9uczogTGFtYmRhT3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKCd4LWFtYXpvbi1hcGlnYXRld2F5LWludGVncmF0aW9uJyBpbiBvcGVyYXRpb24pIHtcbiAgICAgIHJldHVybjsgLy8gU2tpcCBpZiBvcGVyYXRpb24gd2FzIGRlY2xhcmVkIGluIHNwZWMgZmlsZSBhbHJlYWR5IVxuICAgIH1cblxuICAgIGNvbnN0IGVudHJ5RmlsZSA9IGAuL3NyYy9sYW1iZGEvcmVzdC4ke3RoaXMucHJvcHMuYXBpTmFtZS50b0xvd2VyQ2FzZSgpfS4ke29wZXJhdGlvbi5vcGVyYXRpb25JZH0udHNgO1xuXG4gICAgY29uc3QgbGFtYmRhT3B0aW9ucyA9IHtcbiAgICAgIC4uLnRoaXMucHJvcHMubGFtYmRhT3B0aW9ucyAmJiB7XG4gICAgICAgIC4uLnRoaXMucHJvcHMubGFtYmRhT3B0aW9ucyxcbiAgICAgIH0sXG4gICAgICAuLi5hZGRpdGlvbmFsTGFtYmRhT3B0aW9ucyxcbiAgICB9O1xuXG4gICAgY29uc3QgYXV0aGVudGljYXRpb24gPSB0aGlzLnByb3BzLmF1dGhlbnRpY2F0aW9uICYmICh0aGlzLnByb3BzLmF1dGhlbnRpY2F0aW9uLmhhc093blByb3BlcnR5KCd1c2VycG9vbCcpXG4gICAgICA/IHsgdXNlclBvb2w6ICh0aGlzLnByb3BzLmF1dGhlbnRpY2F0aW9uIGFzIElDb2duaXRvQXV0aGVudGljYXRpb24pLnVzZXJwb29sIH1cbiAgICAgIDogeyBqd3Q6IHRoaXMucHJvcHMuYXV0aGVudGljYXRpb24gYXMgSUp3dEF1dGhlbnRpY2F0aW9uIH0pO1xuXG4gICAgY29uc3QgZm4gPSBuZXcgTGFtYmRhRnVuY3Rpb24odGhpcywgYEZuJHtvcGVyYXRpb24ub3BlcmF0aW9uSWR9YCwge1xuICAgICAgc3RhZ2VOYW1lOiB0aGlzLnByb3BzLnN0YWdlTmFtZSxcbiAgICAgIGFkZGl0aW9uYWxFbnY6IHtcbiAgICAgICAgLi4udGhpcy5wcm9wcy5kb21haW5OYW1lICYmIHtcbiAgICAgICAgICBET01BSU5fTkFNRTogdGhpcy5wcm9wcy5kb21haW5OYW1lLFxuICAgICAgICB9LFxuICAgICAgICAuLi50aGlzLnByb3BzLmFkZGl0aW9uYWxFbnYsXG4gICAgICB9LFxuICAgICAgZW50cnk6IGVudHJ5RmlsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgWyR7dGhpcy5wcm9wcy5zdGFnZU5hbWV9XSAke2Rlc2NyaXB0aW9ufWAsXG4gICAgICAuLi5hdXRoZW50aWNhdGlvbixcbiAgICAgIC4uLnRoaXMucHJvcHMuc2luZ2xlVGFibGVEYXRhc3RvcmUgJiYge1xuICAgICAgICB0YWJsZTogdGhpcy5wcm9wcy5zaW5nbGVUYWJsZURhdGFzdG9yZS50YWJsZSxcbiAgICAgICAgdGFibGVXcml0ZXM6IHRoaXMudGFibGVXcml0ZUFjY2Vzc0Zvck1ldGhvZChtZXRob2QpLFxuICAgICAgfSxcbiAgICAgIC4uLnRoaXMucHJvcHMuYXNzZXRDZG4gJiYge1xuICAgICAgICBhc3NldERvbWFpbk5hbWU6IHRoaXMucHJvcHMuYXNzZXRDZG4uYXNzZXREb21haW5OYW1lLFxuICAgICAgICBhc3NldEJ1Y2tldDogdGhpcy5wcm9wcy5hc3NldENkbi5hc3NldEJ1Y2tldCxcbiAgICAgIH0sXG4gICAgICBsYW1iZGFPcHRpb25zLFxuICAgICAgbGFtYmRhVHJhY2luZzogdGhpcy5wcm9wcy5sYW1iZGFUcmFjaW5nLFxuICAgIH0pO1xuICAgIHRoaXMuX2Z1bmN0aW9uc1tvcGVyYXRpb24ub3BlcmF0aW9uSWQhXSA9IGZuO1xuICAgIGNkay5UYWdzLm9mKGZuKS5hZGQoJ09wZW5BUEknLCBkZXNjcmlwdGlvbi5yZXBsYWNlKC9bXlxcd1xcc1xcZF8uOi89K1xcLUBdL2csICcnKSk7XG5cbiAgICAvLyBpZiAodGhpcy5tb25pdG9yaW5nKSB7XG4gICAgLy8gICB0aGlzLm1vbml0b3JpbmcubGFtYmRhRHVyYXRpb25zV2lkZ2V0LmFkZExlZnRNZXRyaWMoZm4ubWV0cmljRHVyYXRpb24oKSk7XG4gICAgLy8gICB0aGlzLm1vbml0b3JpbmcubGFtYmRhSW52b2tlc1dpZGdldC5hZGRMZWZ0TWV0cmljKGZuLm1ldHJpY0ludm9jYXRpb25zKCkpO1xuICAgIC8vICAgdGhpcy5tb25pdG9yaW5nLmxhbWJkYUVycm9yc1dpZGdldC5hZGRMZWZ0TWV0cmljKGZuLm1ldHJpY0Vycm9ycygpKTtcbiAgICAvLyAgIHRoaXMubW9uaXRvcmluZy5sYW1iZGFFcnJvcnNXaWRnZXQuYWRkTGVmdE1ldHJpYyhmbi5tZXRyaWNUaHJvdHRsZXMoKSk7XG4gICAgLy8gfVxuXG4gICAgY29uc3QgaGFzVmVyc2lvbkNvbmZpZyA9IGxhbWJkYU9wdGlvbnMuY3VycmVudFZlcnNpb25PcHRpb25zICE9IHVuZGVmaW5lZDtcblxuICAgIG9wZXJhdGlvblsneC1hbWF6b24tYXBpZ2F0ZXdheS1pbnRlZ3JhdGlvbiddID0ge1xuICAgICAgdHlwZTogJ2F3c19wcm94eScsXG4gICAgICBodHRwTWV0aG9kOiAnUE9TVCcsXG4gICAgICB1cmk6IGNkay5TdGFjay5vZih0aGlzKS5mb3JtYXRBcm4oe1xuICAgICAgICByZXNvdXJjZTogJ3BhdGgnLFxuICAgICAgICBzZXJ2aWNlOiAnYXBpZ2F0ZXdheScsXG4gICAgICAgIGFjY291bnQ6ICdsYW1iZGEnLFxuICAgICAgICBhcm5Gb3JtYXQ6IGNkay5Bcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBgMjAxNS0wMy0zMS9mdW5jdGlvbnMvJHsoaGFzVmVyc2lvbkNvbmZpZyA/IGZuLmN1cnJlbnRWZXJzaW9uIDogZm4pLmZ1bmN0aW9uQXJufS9pbnZvY2F0aW9uc2AsXG4gICAgICAgIC8vICAgICAgICAgICAgIF5eXl5eXl5eXl4gLSBUSElTIE5FRURTIFRPIEJFIFRISVMgREFURS4gRVhBQ1RMWSFcbiAgICAgIH0pLFxuICAgICAgcGFzc3Rocm91Z2hCZWhhdmlvcjogJ3doZW5fbm9fdGVtcGxhdGVzJyxcbiAgICAgIHBheWxvYWRGb3JtYXRWZXJzaW9uOiAnMS4wJyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgcHJpdmF0ZSB0YWJsZVdyaXRlQWNjZXNzRm9yTWV0aG9kKG1ldGhvZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoIChtZXRob2QudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgIGNhc2UgJ3Bvc3QnOlxuICAgICAgY2FzZSAncHV0JzpcbiAgICAgIGNhc2UgJ3BhdGNoJzpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlICdvcHRpb25zJzpcbiAgICAgIGNhc2UgJ2dldCc6XG4gICAgICBjYXNlICdoZWFkJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQVdTIGRvZXMgbm90IHByb3Blcmx5IGFwcGx5IHRoZSAnc2VjdXJpdHknIG9wdGlvbiB0byBldmVyeSBzaW5nbGUgcGF0aC1tZXRob2QuXG4gICAqIEFjY29yZGluZyB0byBkb2N1bWVudGF0aW9uLCBnbG9iYWwgc2VjdXJpdHkgZ2V0cyBhcHBsaWVkLCBpZiB0aGVyZSBpcyBubyBzZWN1cml0eVxuICAgKiBzZXQgZm9yIHRoZSBwYXJ0aWN1bGFyIHBhdGgtbWV0aG9kLiBJZiB0aGVyZSBpcyBhbnksIGV2ZW4gZW1wdHksIGl0IHdpbGwgZ2V0IHByZWNlZGVuY2UuXG4gICAqIFRISVMgRE9FUyBOT1QgSEFQUEVOIE9OIEFXUy4gSVQgSlVTVCBBTFdBWVMgVVNFUyBUSEUgR0xPQkFMIFNFVFRJTkchXG4gICAqXG4gICAqICdzZWN1cml0eSBhcHBsaWVzIFsuLi5dIHNjaGVtZXMgZ2xvYmFsbHkgdG8gYWxsIEFQSSBvcGVyYXRpb25zLCB1bmxlc3Mgb3ZlcnJpZGRlbiBvbiB0aGUgb3BlcmF0aW9uIGxldmVsJ1xuICAgKiBAc2VlIGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vYXV0aGVudGljYXRpb24vXG4gICAqL1xuICBwcm90ZWN0ZWQgcGF0Y2hTZWN1cml0eShzcGVjOiBPcGVuQVBJMykge1xuICAgIGlmICgnc2VjdXJpdHknIGluIHNwZWMpIHtcbiAgICAgIGZvciAoY29uc3Qgc3BlY1BhdGggb2YgT2JqZWN0LnZhbHVlcyhzcGVjLnBhdGhzIHx8IFtdKSkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzcGVjUGF0aCkge1xuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLT4gVGhlcmUgaXMgYSB3cm9uZyBkZWZpbml0aW9uIGZvciBtZXRob2QgaW5jbHVkZXMhIEl0IGFsbG93cyBhbnkgdmFsdWUgdG8gYmUgZ2l2ZW4hXG4gICAgICAgICAgaWYgKCF0aGlzLmFwaU1ldGhvZHMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgY29udGludWU7IC8vIFNraXAgaWYgbm90IGh0dHAgbWV0aG9kIGRlZmluaXRpb25cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzcGVjTWV0aG9kID0gKHNwZWNQYXRoIGFzIFBhdGhJdGVtT2JqZWN0KVtrZXkgYXMga2V5b2YgUGF0aEl0ZW1PYmplY3RdITtcbiAgICAgICAgICBpZiAoISgnc2VjdXJpdHknIGluIHNwZWNNZXRob2QpKSB7XG4gICAgICAgICAgICBzcGVjTWV0aG9kLnNlY3VyaXR5ID0gc3BlYy5zZWN1cml0eTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRlbGV0ZSBzcGVjLnNlY3VyaXR5O1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
|
|
371
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RydWN0cy9yZXN0LWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6Qiw2Q0FNcUI7QUFDckIsaURBQW1DO0FBRW5DLDhDQUFnQztBQUdoQyx5Q0FBbUQ7QUFDbkQsaUNBQXVEO0FBQ3ZELCtDQUF3RztBQThCeEc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBQ0gsTUFBYSxPQUFvQixTQUFRLGtCQUFPO0lBa0I5Qzs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFVLEtBQXdCOztRQUN4RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUR3QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQWIxRTs7O1dBR0c7UUFDSyxlQUFVLEdBQThDLEVBQUUsQ0FBQztRQVlqRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBYSxDQUFDO1FBRTNGLElBQUksZ0JBQThELENBQUM7UUFDbkUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLGdCQUFnQixHQUFHO2dCQUNqQixVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ3hCLFdBQVcsRUFBRSxJQUFJLG9DQUFzQixDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO29CQUNoRSxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ3hCLFVBQVUsRUFBRSxvQ0FBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztpQkFDbEYsQ0FBQzthQUNILENBQUM7WUFDRixJQUFJLEdBQUcsQ0FBQyxTQUFT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QVFHO0lBQ08sYUFBYSxDQUFDLElBQWM7UUFDcEMsSUFBSSxVQUFVLElBQUksSUFBSSxFQUFFO1lBQ3RCLEtBQUssTUFBTSxRQUFRLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxFQUFFO2dCQUN0RCxLQUFLLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRTtvQkFDMUIsd0dBQXdHO29CQUN4RyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQ2xDLFNBQVMsQ0FBQyxxQ0FBcUM7cUJBQ2hEO29CQUVELE1BQU0sVUFBVSxHQUFJLFFBQTJCLENBQUMsR0FBMkIsQ0FBRSxDQUFDO29CQUM5RSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLEVBQUU7d0JBQy9CLFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztxQkFDckM7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUN0QjtJQUNILENBQUM7Q0FFRjtBQW5XRCwwQkFtV0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQge1xuICBhd3NfY2VydGlmaWNhdGVtYW5hZ2VyLFxuICBhd3NfaWFtLFxuICBhd3Nfcm91dGU1MyxcbiAgYXdzX3JvdXRlNTNfdGFyZ2V0cyxcbiAgYXdzX2FwaWdhdGV3YXksXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAnanMteWFtbCc7XG5pbXBvcnQgeyBPcGVuQVBJMywgT3BlcmF0aW9uT2JqZWN0LCBQYXRoSXRlbU9iamVjdCB9IGZyb20gJ29wZW5hcGktdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBJQ29nbml0b0F1dGhlbnRpY2F0aW9uLCBJSnd0QXV0aGVudGljYXRpb24gfSBmcm9tICcuL2F1dGhlbnRpY2F0aW9uJztcbmltcG9ydCB7IEJhc2VBcGksIEJhc2VBcGlQcm9wcyB9IGZyb20gJy4vYmFzZS1hcGknO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24sIExhbWJkYU9wdGlvbnMgfSBmcm9tICcuL2Z1bmMnO1xuaW1wb3J0IHsgQ0ZOX09VVFBVVF9TVUZGSVhfUkVTVEFQSV9ET01BSU5OQU1FLCBDRk5fT1VUUFVUX1NVRkZJWF9SRVNUQVBJX1VSTCB9IGZyb20gJy4uL3NoYXJlZC9vdXRwdXRzJztcblxuZXhwb3J0IGludGVyZmFjZSBSZXN0QXBpUHJvcHM8T1BTPiBleHRlbmRzIEJhc2VBcGlQcm9wcyB7XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHJvdXRlcyBmb3IgYWxsIGVuZHBvaW50cyBjb25maWd1cmVkIGluIHRoZSBvcGVuYXBpLnlhbWwgZmlsZVxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBhdXRvR2VuZXJhdGVSb3V0ZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBjdXN0b20gb3B0aW9ucyBmb3IgdGhlIGNyZWF0ZWQgSHR0cEFwaVxuICAgKlxuICAgKiBAZGVmYXVsdCAtXG4gICAqL1xuICByZXN0QXBpUHJvcHM/OiBhd3NfYXBpZ2F0ZXdheS5SZXN0QXBpQmFzZVByb3BzO1xuXG4gIC8qKlxuICAgKiBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSB1bmRlcmx5aW5nIExhbWJkYSBmdW5jdGlvbiBjb25zdHJ1Y3QgcGVyIG9wZXJhdGlvbklkXG4gICAqXG4gICAqIEBkZWZhdWx0IC1cbiAgICovXG4gIGxhbWJkYU9wdGlvbnNCeU9wZXJhdGlvbj86IHsgW29wZXJhdGlvbklkIGluIGtleW9mIE9QU10/OiBMYW1iZGFPcHRpb25zIH07XG5cbiAgZGVmaW5pdGlvbkZpbGVOYW1lOiBzdHJpbmc7XG5cbiAgY29yczogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgUmVzdEFwaSBjb25zdHJ1Y3Qgc2V0cyB1cCBhbiBBV1MgQVBJIEdhdGV3YXkgUkVTVCBBUEkgdXNpbmcgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLlxuICogVGhpcyBjb25zdHJ1Y3QgZmFjaWxpdGF0ZXMgdGhlIGNyZWF0aW9uIG9mIGEgUkVTVCBBUEkgd2l0aCB2YXJpb3VzIGNvbmZpZ3VyYXRpb25zLCBpbmNsdWRpbmcgY3VzdG9tIGRvbWFpbiwgQ09SUyBzdXBwb3J0LCBhbmQgaW50ZWdyYXRpb24gd2l0aCBMYW1iZGEgZnVuY3Rpb25zLlxuICogSXQgYWxsb3dzIGF1dG8tZ2VuZXJhdGluZyByb3V0ZXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIE9wZW5BUEkgZGVmaW5pdGlvbiBhbmQgcHJvdmlkZXMgbWV0aG9kcyB0byBkeW5hbWljYWxseSBhZGQgY3VzdG9tIHJvdXRlcyBhbmQgbWFuYWdlIExhbWJkYSBmdW5jdGlvbiBpbnRlZ3JhdGlvbnMuXG4gKlxuICogQHRlbXBsYXRlIFBBVEhTIC0gVGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIEFQSSBwYXRocy5cbiAqIEB0ZW1wbGF0ZSBPUFMgLSBUaGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgQVBJIG9wZXJhdGlvbnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGFwaSA9IG5ldyBSZXN0QXBpKHRoaXMsICdNeVJlc3RBcGknLCB7XG4gKiAgIGFwaU5hbWU6ICdNeUFQSScsXG4gKiAgIHN0YWdlTmFtZTogJ2RldicsXG4gKiAgIGRlZmluaXRpb25GaWxlTmFtZTogJ29wZW5hcGkueWFtbCcsXG4gKiAgIGF1dGhlbnRpY2F0aW9uOiBteUNvZ25pdG9BdXRoLFxuICogICBzaW5nbGVUYWJsZURhdGFzdG9yZTogbXlEeW5hbW9EQlRhYmxlLFxuICogICBhdXRvR2VuZXJhdGVSb3V0ZXM6IHRydWUsXG4gKiB9KTtcbiAqXG4gKiAvLyBBZGQgYSBjdXN0b20gUkVTVCByZXNvdXJjZVxuICogYXBpLmFkZFJlc3RSZXNvdXJjZSgnL2l0ZW1zJywgJ2dldCcpO1xuICpcbiAqIC8vIEdldCB0aGUgTGFtYmRhIGZ1bmN0aW9uIGZvciBhIHNwZWNpZmljIG9wZXJhdGlvblxuICogY29uc3QgbGFtYmRhRnVuY3Rpb24gPSBhcGkuZ2V0RnVuY3Rpb25Gb3JPcGVyYXRpb24oJ2dldEl0ZW1zJyk7XG4gKi9cbmV4cG9ydCBjbGFzcyBSZXN0QXBpPFBBVEhTLCBPUFM+IGV4dGVuZHMgQmFzZUFwaSB7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgQVBJIEdhdGV3YXkgUkVTVCBBUEkgaW5zdGFuY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXBpOiBhd3NfYXBpZ2F0ZXdheS5TcGVjUmVzdEFwaTtcblxuICAvKipcbiAgICogVGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIFJFU1QgQVBJLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFwaVNwZWM6IE9wZW5BUEkzO1xuXG4gIC8qKlxuICAgKiBBIGNvbGxlY3Rpb24gb2YgTGFtYmRhIGZ1bmN0aW9ucyB1c2VkIGFzIGludGVncmF0aW9ucyBmb3IgdGhlIEFQSSBvcGVyYXRpb25zLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfZnVuY3Rpb25zOiB7IFtvcGVyYXRpb25JZDogc3RyaW5nXTogTGFtYmRhRnVuY3Rpb24gfSA9IHt9O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFJlc3RBcGkuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0aGlzIGNvbnN0cnVjdCBpcyBkZWZpbmVkLlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgc2NvcGVkIGNvbnN0cnVjdCBJRC5cbiAgICogQHBhcmFtIHByb3BzIC0gVGhlIHByb3BlcnRpZXMgb2YgdGhlIFJlc3RBcGkgY29uc3RydWN0LlxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJpdmF0ZSBwcm9wczogUmVzdEFwaVByb3BzPE9QUz4pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHRoaXMuYXBpU3BlYyA9IHlhbWwubG9hZChmcy5yZWFkRmlsZVN5bmMocHJvcHMuZGVmaW5pdGlvbkZpbGVOYW1lKS50b1N0cmluZygpKSBhcyBPcGVuQVBJMztcblxuICAgIGxldCBjdXN0b21Eb21haW5OYW1lOiBhd3NfYXBpZ2F0ZXdheS5Eb21haW5OYW1lT3B0aW9ucyB8IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5hcGlGUUROKSB7XG4gICAgICBjdXN0b21Eb21haW5OYW1lID0ge1xuICAgICAgICBkb21haW5OYW1lOiB0aGlzLmFwaUZRRE4sXG4gICAgICAgIGNlcnRpZmljYXRlOiBuZXcgYXdzX2NlcnRpZmljYXRlbWFuYWdlci5DZXJ0aWZpY2F0ZSh0aGlzLCAnQ2VydCcsIHtcbiAgICAgICAgICBkb21haW5OYW1lOiB0aGlzLmFwaUZRRE4sXG4gICAgICAgICAgdmFsaWRhdGlvbjogYXdzX2NlcnRpZmljYXRlbWFuYWdlci5DZXJ0aWZpY2F0ZVZhbGlkYXRpb24uZnJvbURucyh0aGlzLmhvc3RlZFpvbmUpLFxuICAgICAgICB9KSxcbiAgICAgIH07XG4gICAgICBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCAnUmVzdEFwaURvbWFpbk5hbWUnLCB7XG4gICAgICAgIGtleTogYCR7dGhpcy5wcm9wcy5hcGlOYW1lfSR7Q0ZOX09VVFBVVF9TVUZGSVhfUkVTVEFQSV9ET01BSU5OQU1FfWAsXG4gICAgICAgIHZhbHVlOiB0aGlzLmFwaUZRRE4sXG4gICAgICB9KTtcbiAgICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsICdSZXN0QXBpVXJsT3V0cHV0Jywge1xuICAgICAgICBrZXk6IGAke3RoaXMucHJvcHMuYXBpTmFtZX0ke0NGTl9PVVRQVVRfU1VGRklYX1JFU1RBUElfVVJMfWAsXG4gICAgICAgIHZhbHVlOiAnaHR0cHM6Ly8nICsgdGhpcy5hcGlGUUROLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gaWYgKChwcm9wcy5tb25pdG9yaW5nID8/IHRydWUpICYmIHRoaXMubW9uaXRvcmluZykge1xuICAgIC8vICAgdGhpcy5tb25pdG9yaW5nLmFwaUVycm9yc1dpZGdldC5hZGRMZWZ0TWV0cmljKHRoaXMuYXBpLm1ldHJpY1NlcnZlckVycm9yKHtcbiAgICAvLyAgICAgc3RhdGlzdGljOiAnc3VtJyxcbiAgICAvLyAgIH0pKTtcbiAgICAvLyAgIHRoaXMubW9uaXRvcmluZy5hcGlFcnJvcnNXaWRnZXQuYWRkTGVmdE1ldHJpYyh0aGlzLmFwaS5tZXRyaWNDbGllbnRFcnJvcih7XG4gICAgLy8gICAgIHN0YXRpc3RpYzogJ3N1bScsXG4gICAgLy8gICB9KSk7XG5cbiAgICAvLyAgIHRoaXMubW9uaXRvcmluZy5hcGlMYXRlbmN5V2lkZ2V0LmFkZExlZnRNZXRyaWModGhpcy5hcGkubWV0cmljTGF0ZW5jeSh7XG4gICAgLy8gICAgIHN0YXRpc3RpYzogJ0F2ZXJhZ2UnLFxuICAgIC8vICAgfSkpO1xuICAgIC8vICAgdGhpcy5tb25pdG9yaW5nLmFwaUxhdGVuY3lXaWRnZXQuYWRkTGVmdE1ldHJpYyh0aGlzLmFwaS5tZXRyaWNMYXRlbmN5KHtcbiAgICAvLyAgICAgc3RhdGlzdGljOiAncDkwJyxcbiAgICAvLyAgIH0pKTtcbiAgICAvLyAgIHRoaXMubW9uaXRvcmluZy5hcGlMYXRlbmN5VGFpbFdpZGdldC5hZGRMZWZ0TWV0cmljKHRoaXMuYXBpLm1ldHJpY0xhdGVuY3koe1xuICAgIC8vICAgICBzdGF0aXN0aWM6ICdwOTUnLFxuICAgIC8vICAgfSkpO1xuICAgIC8vICAgdGhpcy5tb25pdG9yaW5nLmFwaUxhdGVuY3lUYWlsV2lkZ2V0LmFkZExlZnRNZXRyaWModGhpcy5hcGkubWV0cmljTGF0ZW5jeSh7XG4gICAgLy8gICAgIHN0YXRpc3RpYzogJ3A5OScsXG4gICAgLy8gICB9KSk7XG4gICAgLy8gfVxuXG4gICAgaWYgKHByb3BzLmF1dG9HZW5lcmF0ZVJvdXRlcyA/PyB0cnVlKSB7XG4gICAgICBmb3IgKGNvbnN0IHBhdGggaW4gdGhpcy5hcGlTcGVjLnBhdGhzKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5hcGlTcGVjLnBhdGhzLCBwYXRoKSkge1xuICAgICAgICAgIGNvbnN0IHBhdGhJdGVtID0gdGhpcy5hcGlTcGVjLnBhdGhzW3BhdGhdO1xuICAgICAgICAgIGZvciAoY29uc3QgbWV0aG9kIGluIHBhdGhJdGVtKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhdGhJdGVtLCBtZXRob2QpICYmXG4gICAgICAgICAgICAgIFsnZ2V0JywgJ3Bvc3QnLCAncHV0JywgJ2RlbGV0ZScsICdwYXRjaCcsICdvcHRpb25zJywgJ2hlYWQnXS5pbmRleE9mKG1ldGhvZCkgPj0gMCkge1xuICAgICAgICAgICAgICAvLyBBZGQgYWxsIG9wZXJhdGlvbnNcbiAgICAgICAgICAgICAgdGhpcy5hZGRSZXN0UmVzb3VyY2UocGF0aCBhcyBhbnksIG1ldGhvZCBhcyBhbnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBfc3BlYyBFbmRwb2ludFxuICAgIHRoaXMuYXBpU3BlYy5wYXRocyFbJy9vcGVuYXBpLmpzb24nXSA9IHtcbiAgICAgIGdldDoge1xuICAgICAgICAnc3VtbWFyeSc6ICdSZXR1cm5zIHRoZSByYXcgT3BlbkFQSSBzcGVjIG9mIHRoaXMgQVBJJyxcbiAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ1JldHVybnMgdGhlIHJhdyBPcGVuQVBJIHNwZWMgb2YgdGhpcyBBUEknLFxuICAgICAgICAnb3BlcmF0aW9uSWQnOiAnX3NwZWMnLFxuICAgICAgICAncmVzcG9uc2VzJzoge1xuICAgICAgICAgIDIwMDoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdPcGVuQVBJIHNwZWMgb2YgdGhpcyBBUEknLFxuICAgICAgICAgICAgY29udGVudDoge1xuICAgICAgICAgICAgICAnYXBwbGljYXRpb24vb3BlbmFwaStqc29uJzoge30sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC8vIEB0cy1pZ25vcmUgQ3VzdG9tIHByb3BlcnR5IGZvciBBV1NcbiAgICAgICAgJ3gtYW1hem9uLWFwaWdhdGV3YXktaW50ZWdyYXRpb24nOiB7XG4gICAgICAgICAgdHlwZTogJ21vY2snLFxuICAgICAgICAgIGh0dHBNZXRob2Q6ICdHRVQnLFxuICAgICAgICAgIHBheWxvYWRGb3JtYXRWZXJzaW9uOiAnMS4wJyxcbiAgICAgICAgICByZXF1ZXN0VGVtcGxhdGVzOiB7XG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbic6ICd7XFwnc3RhdHVzQ29kZVxcJzogMjAwfScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNwb25zZXM6IHtcbiAgICAgICAgICAgIDIwMDoge1xuICAgICAgICAgICAgICBzdGF0dXNDb2RlOiAyMDAsXG4gICAgICAgICAgICAgIHJlc3BvbnNlVGVtcGxhdGVzOiB7XG4gICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL29wZW5hcGkranNvbic6IEpTT04uc3RyaW5naWZ5KHRoaXMuY2xlYW51cFNwZWMoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSgodGhpcy5hcGlTcGVjKSkpKSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAocHJvcHMuY29ycykge1xuICAgICAgdGhpcy5hcGlTcGVjLnBhdGhzIVsnL3twcm94eSt9J10gPSB7XG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAnc3VtbWFyeSc6ICdDT1JTIHN1cHBvcnQnLFxuICAgICAgICAgICdkZXNjcmlwdGlvbic6ICdFbmFibGUgQ09SUyBieSByZXR1cm5pbmcgY29ycmVjdCBoZWFkZXJzJyxcbiAgICAgICAgICAndGFncyc6IFsnQ09SUyddLFxuICAgICAgICAgICdyZXNwb25zZXMnOiB7XG4gICAgICAgICAgICAyMDA6IHtcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdEZWZhdWx0IHJlc3BvbnNlIGZvciBDT1JTIG1ldGhvZCcsXG4gICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJzogeyBzY2hlbWE6IHsgdHlwZTogJ3N0cmluZycgfSB9LFxuICAgICAgICAgICAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJzogeyBzY2hlbWE6IHsgdHlwZTogJ3N0cmluZycgfSB9LFxuICAgICAgICAgICAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFscyc6IHsgc2NoZW1hOiB7IHR5cGU6ICdzdHJpbmcnIH0gfSxcbiAgICAgICAgICAgICAgICAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyc6IHsgc2NoZW1hOiB7IHR5cGU6ICdzdHJpbmcnIH0gfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgY29udGVudDoge30sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ3gtYW1hem9uLWFwaWdhdGV3YXktaW50ZWdyYXRpb24nOiB7XG4gICAgICAgICAgICB0eXBlOiAnbW9jaycsXG4gICAgICAgICAgICByZXF1ZXN0VGVtcGxhdGVzOiB7XG4gICAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzogJyNzZXQoJGNvbnRleHQucmVxdWVzdE92ZXJyaWRlLmhlYWRlci5vcmlnaW4gPSAkbWV0aG9kLnJlcXVlc3QuaGVhZGVyLm9yaWdpbilcXG57XFxuICBcInN0YXR1c0NvZGVcIiA6IDIwMFxcbn1cXG4nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc3BvbnNlczoge1xuICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgc3RhdHVzQ29kZTogJzIwMCcsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAnbWV0aG9kLnJlc3BvbnNlLmhlYWRlci5BY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJzogXCInQ29udGVudC1UeXBlLFgtQW16LURhdGUsQXV0aG9yaXphdGlvbixYLUFwaS1LZXknXCIsXG4gICAgICAgICAgICAgICAgICAnbWV0aG9kLnJlc3BvbnNlLmhlYWRlci5BY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFscyc6IFwiJ3RydWUnXCIsXG4gICAgICAgICAgICAgICAgICAnbWV0aG9kLnJlc3BvbnNlLmhlYWRlci5BY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJzogXCInUFVULEdFVCxQT1NULERFTEVURSxQQVRDSCxIRUFELE9QVElPTlMnXCIsXG4gICAgICAgICAgICAgICAgICAnbWV0aG9kLnJlc3BvbnNlLmhlYWRlci5BY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nOiAnY29udGV4dC5yZXF1ZXN0T3ZlcnJpZGUuaGVhZGVyLm9yaWdpbicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByZXNwb25zZVRlbXBsYXRlczoge1xuICAgICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiAne30nLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMucGF0Y2hTZWN1cml0eSh0aGlzLmFwaVNwZWMpO1xuXG4gICAgLy8gVE9ETyBwYXRjaCBzcGVjIGZvciBDb2duaXRvIHVzZXIgcG9vbFxuXG4gICAgdGhpcy5hcGkgPSBuZXcgYXdzX2FwaWdhdGV3YXkuU3BlY1Jlc3RBcGkodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgcmVzdEFwaU5hbWU6IGAke3Byb3BzLmFwaU5hbWV9IFske3Byb3BzLnN0YWdlTmFtZX1dYCxcbiAgICAgIGRvbWFpbk5hbWU6IGN1c3RvbURvbWFpbk5hbWUsXG4gICAgICBhcGlEZWZpbml0aW9uOiBhd3NfYXBpZ2F0ZXdheS5BcGlEZWZpbml0aW9uLmZyb21JbmxpbmUodGhpcy5hcGlTcGVjKSxcbiAgICAgIC4uLnByb3BzLnJlc3RBcGlQcm9wcyxcbiAgICB9KTtcblxuICAgIC8vIGFkZCBpbnZva2UgcGVybWlzc2lvbnMgdG8gTGFtYmRhIGZ1bmN0aW9uc1xuICAgIGZvciAoY29uc3QgZm4gb2YgT2JqZWN0LnZhbHVlcyh0aGlzLl9mdW5jdGlvbnMpKSB7XG4gICAgICBmbi5hZGRQZXJtaXNzaW9uKCdSZXN0QXBpSW52b2tlJywge1xuICAgICAgICBwcmluY2lwYWw6IG5ldyBhd3NfaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2FwaWdhdGV3YXkuYW1hem9uYXdzLmNvbScpLFxuICAgICAgICBhY3Rpb246ICdsYW1iZGE6SW52b2tlRnVuY3Rpb24nLFxuICAgICAgICBzb3VyY2VBcm46IHRoaXMuYXBpLmFybkZvckV4ZWN1dGVBcGkoKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjdXN0b21Eb21haW5OYW1lICYmIHRoaXMuYXBpLmRvbWFpbk5hbWUpIHtcbiAgICAgIG5ldyBhd3Nfcm91dGU1My5BUmVjb3JkKHRoaXMsICdEbnNSZWNvcmQnLCB7XG4gICAgICAgIHpvbmU6IHRoaXMuaG9zdGVkWm9uZSEsXG4gICAgICAgIHJlY29yZE5hbWU6IGN1c3RvbURvbWFpbk5hbWUuZG9tYWluTmFtZSxcbiAgICAgICAgdGFyZ2V0OiBhd3Nfcm91dGU1My5SZWNvcmRUYXJnZXQuZnJvbUFsaWFzKFxuICAgICAgICAgIG5ldyBhd3Nfcm91dGU1M190YXJnZXRzLkFwaUdhdGV3YXlEb21haW4odGhpcy5hcGkuZG9tYWluTmFtZSksXG4gICAgICAgICksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBjbGVhbnVwU3BlYyhzcGVjOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgT2JqZWN0LmVudHJpZXMoc3BlYykuZm9yRWFjaCgoW3Byb3AsIHZhbHVlXTogW3N0cmluZywgYW55XSkgPT4ge1xuICAgICAgaWYgKHByb3Auc3RhcnRzV2l0aCgneC0nKSkge1xuICAgICAgICBkZWxldGUgc3BlY1twcm9wXTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICB0aGlzLmNsZWFudXBTcGVjKHNwZWNbcHJvcF0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNwZWM7XG4gIH1cblxuICAvKipcbiAgICogcmV0dXJuIHRoZSBnZW5lcmF0ZWQgTGFtYmRhIGZ1bmN0aW9uIGZvciB0aGUgc3BlY2lmaWVkIEFQSSBvcGVyYXRpb25cbiAgICovXG4gIHB1YmxpYyBnZXRGdW5jdGlvbkZvck9wZXJhdGlvbihvcGVyYXRpb25JZDoga2V5b2YgT1BTKTogTGFtYmRhRnVuY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9mdW5jdGlvbnNbb3BlcmF0aW9uSWQgYXMgc3RyaW5nXTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm4gYSBsaXN0IG9mIGFsbCBnZW5lcmF0ZWQgTGFtYmRhIGZ1bmN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdldEZ1bmN0aW9ucygpOiBMYW1iZGFGdW5jdGlvbltdIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9mdW5jdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZpc2l0b3IgbWV0aG9kIHRvIG1vZGlmeSB0aGUgZ2l2ZW4gZnVuY3Rpb25zXG4gICAqXG4gICAqIEBwYXJhbSBvcGVyYXRpb25JZHMgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHZpc2l0XG4gICAqIEBwYXJhbSBvcCB0aGUgZnVuY3Rpb24gdG8gY2FsbCBmb3IgZXZlcnkgZnVuY3Rpb25cbiAgICovXG4gIHB1YmxpYyBtb2RpZnlPcGVyYXRpb25GdW5jdGlvbnMob3BlcmF0aW9uSWRzOiAoa2V5b2YgT1BTKVtdLCBvcDogKGZuOiBMYW1iZGFGdW5jdGlvbikgPT4gdm9pZCkge1xuICAgIGZvciAoY29uc3Qgb3BlcmF0aW9uSWQgb2Ygb3BlcmF0aW9uSWRzKSB7XG4gICAgICBvcCh0aGlzLmdldEZ1bmN0aW9uRm9yT3BlcmF0aW9uKG9wZXJhdGlvbklkKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZFJlc3RSZXNvdXJjZTxQIGV4dGVuZHMga2V5b2YgUEFUSFM+KHBhdGg6IFAsIG1ldGhvZDoga2V5b2YgUEFUSFNbUF0pIHtcbiAgICBjb25zdCBvYVBhdGggPSB0aGlzLmFwaVNwZWMucGF0aHMhW3BhdGggYXMgc3RyaW5nXSBhcyBQYXRoSXRlbU9iamVjdDtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBvYVBhdGhbbWV0aG9kIGFzIGtleW9mIFBhdGhJdGVtT2JqZWN0XSBhcyBPcGVyYXRpb25PYmplY3Q7XG4gICAgY29uc3Qgb3BlcmF0aW9uSWQgPSBvcGVyYXRpb24ub3BlcmF0aW9uSWQhO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYCR7bWV0aG9kIGFzIHN0cmluZ30gJHtwYXRoIGFzIHN0cmluZ30gLSAke29wZXJhdGlvbi5zdW1tYXJ5fWA7XG5cbiAgICBjb25zdCBjdXN0b21MYW1iZGFPcHRpb25zID0gdGhpcy5wcm9wcy5sYW1iZGFPcHRpb25zQnlPcGVyYXRpb24gPyB0aGlzLnByb3BzLmxhbWJkYU9wdGlvbnNCeU9wZXJhdGlvbltvcGVyYXRpb25JZCBhcyBrZXlvZiBPUFNdIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiB0aGlzLmFkZEN1c3RvbVJlc3RSZXNvdXJjZShvcGVyYXRpb24sIG1ldGhvZCBhcyBzdHJpbmcsIGRlc2NyaXB0aW9uLCBjdXN0b21MYW1iZGFPcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRDdXN0b21SZXN0UmVzb3VyY2Uob3BlcmF0aW9uOiBPcGVyYXRpb25PYmplY3QsIG1ldGhvZDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nLCBhZGRpdGlvbmFsTGFtYmRhT3B0aW9uczogTGFtYmRhT3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKCd4LWFtYXpvbi1hcGlnYXRld2F5LWludGVncmF0aW9uJyBpbiBvcGVyYXRpb24pIHtcbiAgICAgIHJldHVybjsgLy8gU2tpcCBpZiBvcGVyYXRpb24gd2FzIGRlY2xhcmVkIGluIHNwZWMgZmlsZSBhbHJlYWR5IVxuICAgIH1cblxuICAgIGNvbnN0IGVudHJ5RmlsZSA9IGAuL3NyYy9sYW1iZGEvcmVzdC4ke3RoaXMucHJvcHMuYXBpTmFtZS50b0xvd2VyQ2FzZSgpfS4ke29wZXJhdGlvbi5vcGVyYXRpb25JZH0udHNgO1xuXG4gICAgY29uc3QgbGFtYmRhT3B0aW9ucyA9IHtcbiAgICAgIC4uLnRoaXMucHJvcHMubGFtYmRhT3B0aW9ucyAmJiB7XG4gICAgICAgIC4uLnRoaXMucHJvcHMubGFtYmRhT3B0aW9ucyxcbiAgICAgIH0sXG4gICAgICAuLi5hZGRpdGlvbmFsTGFtYmRhT3B0aW9ucyxcbiAgICB9O1xuXG4gICAgY29uc3QgYXV0aGVudGljYXRpb24gPSB0aGlzLnByb3BzLmF1dGhlbnRpY2F0aW9uICYmICh0aGlzLnByb3BzLmF1dGhlbnRpY2F0aW9uLmhhc093blByb3BlcnR5KCd1c2VycG9vbCcpXG4gICAgICA/IHsgdXNlclBvb2w6ICh0aGlzLnByb3BzLmF1dGhlbnRpY2F0aW9uIGFzIElDb2duaXRvQXV0aGVudGljYXRpb24pLnVzZXJwb29sIH1cbiAgICAgIDogeyBqd3Q6IHRoaXMucHJvcHMuYXV0aGVudGljYXRpb24gYXMgSUp3dEF1dGhlbnRpY2F0aW9uIH0pO1xuXG4gICAgY29uc3QgZm4gPSBuZXcgTGFtYmRhRnVuY3Rpb24odGhpcywgYEZuJHtvcGVyYXRpb24ub3BlcmF0aW9uSWR9YCwge1xuICAgICAgc3RhZ2VOYW1lOiB0aGlzLnByb3BzLnN0YWdlTmFtZSxcbiAgICAgIGFkZGl0aW9uYWxFbnY6IHtcbiAgICAgICAgLi4udGhpcy5wcm9wcy5kb21haW5OYW1lICYmIHtcbiAgICAgICAgICBET01BSU5fTkFNRTogdGhpcy5wcm9wcy5kb21haW5OYW1lLFxuICAgICAgICB9LFxuICAgICAgICAuLi50aGlzLnByb3BzLmFkZGl0aW9uYWxFbnYsXG4gICAgICB9LFxuICAgICAgZW50cnk6IGVudHJ5RmlsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgWyR7dGhpcy5wcm9wcy5zdGFnZU5hbWV9XSAke2Rlc2NyaXB0aW9ufWAsXG4gICAgICAuLi5hdXRoZW50aWNhdGlvbixcbiAgICAgIC4uLnRoaXMucHJvcHMuc2luZ2xlVGFibGVEYXRhc3RvcmUgJiYge1xuICAgICAgICB0YWJsZTogdGhpcy5wcm9wcy5zaW5nbGVUYWJsZURhdGFzdG9yZS50YWJsZSxcbiAgICAgICAgdGFibGVXcml0ZXM6IHRoaXMudGFibGVXcml0ZUFjY2Vzc0Zvck1ldGhvZChtZXRob2QpLFxuICAgICAgfSxcbiAgICAgIC4uLnRoaXMucHJvcHMuYXNzZXRDZG4gJiYge1xuICAgICAgICBhc3NldERvbWFpbk5hbWU6IHRoaXMucHJvcHMuYXNzZXRDZG4uYXNzZXREb21haW5OYW1lLFxuICAgICAgICBhc3NldEJ1Y2tldDogdGhpcy5wcm9wcy5hc3NldENkbi5hc3NldEJ1Y2tldCxcbiAgICAgIH0sXG4gICAgICBsYW1iZGFPcHRpb25zLFxuICAgICAgbGFtYmRhVHJhY2luZzogdGhpcy5wcm9wcy5sYW1iZGFUcmFjaW5nLFxuICAgIH0pO1xuICAgIHRoaXMuX2Z1bmN0aW9uc1tvcGVyYXRpb24ub3BlcmF0aW9uSWQhXSA9IGZuO1xuICAgIGNkay5UYWdzLm9mKGZuKS5hZGQoJ09wZW5BUEknLCBkZXNjcmlwdGlvbi5yZXBsYWNlKC9bXlxcd1xcc1xcZF8uOi89K1xcLUBdL2csICcnKSk7XG5cbiAgICAvLyBpZiAodGhpcy5tb25pdG9yaW5nKSB7XG4gICAgLy8gICB0aGlzLm1vbml0b3JpbmcubGFtYmRhRHVyYXRpb25zV2lkZ2V0LmFkZExlZnRNZXRyaWMoZm4ubWV0cmljRHVyYXRpb24oKSk7XG4gICAgLy8gICB0aGlzLm1vbml0b3JpbmcubGFtYmRhSW52b2tlc1dpZGdldC5hZGRMZWZ0TWV0cmljKGZuLm1ldHJpY0ludm9jYXRpb25zKCkpO1xuICAgIC8vICAgdGhpcy5tb25pdG9yaW5nLmxhbWJkYUVycm9yc1dpZGdldC5hZGRMZWZ0TWV0cmljKGZuLm1ldHJpY0Vycm9ycygpKTtcbiAgICAvLyAgIHRoaXMubW9uaXRvcmluZy5sYW1iZGFFcnJvcnNXaWRnZXQuYWRkTGVmdE1ldHJpYyhmbi5tZXRyaWNUaHJvdHRsZXMoKSk7XG4gICAgLy8gfVxuXG4gICAgY29uc3QgaGFzVmVyc2lvbkNvbmZpZyA9IGxhbWJkYU9wdGlvbnMuY3VycmVudFZlcnNpb25PcHRpb25zICE9IHVuZGVmaW5lZDtcblxuICAgIG9wZXJhdGlvblsneC1hbWF6b24tYXBpZ2F0ZXdheS1pbnRlZ3JhdGlvbiddID0ge1xuICAgICAgdHlwZTogJ2F3c19wcm94eScsXG4gICAgICBodHRwTWV0aG9kOiAnUE9TVCcsXG4gICAgICB1cmk6IGNkay5TdGFjay5vZih0aGlzKS5mb3JtYXRBcm4oe1xuICAgICAgICByZXNvdXJjZTogJ3BhdGgnLFxuICAgICAgICBzZXJ2aWNlOiAnYXBpZ2F0ZXdheScsXG4gICAgICAgIGFjY291bnQ6ICdsYW1iZGEnLFxuICAgICAgICBhcm5Gb3JtYXQ6IGNkay5Bcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBgMjAxNS0wMy0zMS9mdW5jdGlvbnMvJHsoaGFzVmVyc2lvbkNvbmZpZyA/IGZuLmN1cnJlbnRWZXJzaW9uIDogZm4pLmZ1bmN0aW9uQXJufS9pbnZvY2F0aW9uc2AsXG4gICAgICAgIC8vICAgICAgICAgICAgIF5eXl5eXl5eXl4gLSBUSElTIE5FRURTIFRPIEJFIFRISVMgREFURS4gRVhBQ1RMWSFcbiAgICAgIH0pLFxuICAgICAgcGFzc3Rocm91Z2hCZWhhdmlvcjogJ3doZW5fbm9fdGVtcGxhdGVzJyxcbiAgICAgIHBheWxvYWRGb3JtYXRWZXJzaW9uOiAnMS4wJyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgcHJpdmF0ZSB0YWJsZVdyaXRlQWNjZXNzRm9yTWV0aG9kKG1ldGhvZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoIChtZXRob2QudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgIGNhc2UgJ3Bvc3QnOlxuICAgICAgY2FzZSAncHV0JzpcbiAgICAgIGNhc2UgJ3BhdGNoJzpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlICdvcHRpb25zJzpcbiAgICAgIGNhc2UgJ2dldCc6XG4gICAgICBjYXNlICdoZWFkJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQVdTIGRvZXMgbm90IHByb3Blcmx5IGFwcGx5IHRoZSAnc2VjdXJpdHknIG9wdGlvbiB0byBldmVyeSBzaW5nbGUgcGF0aC1tZXRob2QuXG4gICAqIEFjY29yZGluZyB0byBkb2N1bWVudGF0aW9uLCBnbG9iYWwgc2VjdXJpdHkgZ2V0cyBhcHBsaWVkLCBpZiB0aGVyZSBpcyBubyBzZWN1cml0eVxuICAgKiBzZXQgZm9yIHRoZSBwYXJ0aWN1bGFyIHBhdGgtbWV0aG9kLiBJZiB0aGVyZSBpcyBhbnksIGV2ZW4gZW1wdHksIGl0IHdpbGwgZ2V0IHByZWNlZGVuY2UuXG4gICAqIFRISVMgRE9FUyBOT1QgSEFQUEVOIE9OIEFXUy4gSVQgSlVTVCBBTFdBWVMgVVNFUyBUSEUgR0xPQkFMIFNFVFRJTkchXG4gICAqXG4gICAqICdzZWN1cml0eSBhcHBsaWVzIFsuLi5dIHNjaGVtZXMgZ2xvYmFsbHkgdG8gYWxsIEFQSSBvcGVyYXRpb25zLCB1bmxlc3Mgb3ZlcnJpZGRlbiBvbiB0aGUgb3BlcmF0aW9uIGxldmVsJ1xuICAgKiBAc2VlIGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vYXV0aGVudGljYXRpb24vXG4gICAqL1xuICBwcm90ZWN0ZWQgcGF0Y2hTZWN1cml0eShzcGVjOiBPcGVuQVBJMykge1xuICAgIGlmICgnc2VjdXJpdHknIGluIHNwZWMpIHtcbiAgICAgIGZvciAoY29uc3Qgc3BlY1BhdGggb2YgT2JqZWN0LnZhbHVlcyhzcGVjLnBhdGhzIHx8IFtdKSkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzcGVjUGF0aCkge1xuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLT4gVGhlcmUgaXMgYSB3cm9uZyBkZWZpbml0aW9uIGZvciBtZXRob2QgaW5jbHVkZXMhIEl0IGFsbG93cyBhbnkgdmFsdWUgdG8gYmUgZ2l2ZW4hXG4gICAgICAgICAgaWYgKCF0aGlzLmFwaU1ldGhvZHMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgY29udGludWU7IC8vIFNraXAgaWYgbm90IGh0dHAgbWV0aG9kIGRlZmluaXRpb25cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzcGVjTWV0aG9kID0gKHNwZWNQYXRoIGFzIFBhdGhJdGVtT2JqZWN0KVtrZXkgYXMga2V5b2YgUGF0aEl0ZW1PYmplY3RdITtcbiAgICAgICAgICBpZiAoISgnc2VjdXJpdHknIGluIHNwZWNNZXRob2QpKSB7XG4gICAgICAgICAgICBzcGVjTWV0aG9kLnNlY3VyaXR5ID0gc3BlYy5zZWN1cml0eTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRlbGV0ZSBzcGVjLnNlY3VyaXR5O1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
|
package/lib/projen/datastore.js
CHANGED
|
@@ -90,7 +90,7 @@ import { Dynamo } from 'dynamodb-onetable/Dynamo';
|
|
|
90
90
|
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
|
|
91
91
|
|
|
92
92
|
export const dynamoClient = new Dynamo({ client: new DynamoDBClient({}) })
|
|
93
|
-
export const TABLE_NAME: string = env.TABLE
|
|
93
|
+
export const TABLE_NAME: string = env.TABLE ?? 'dummy-table';
|
|
94
94
|
|
|
95
95
|
${Object.entries(model.indexes).map(([idx, data]) => `export const Index_${idx}_Name = '${idx}';
|
|
96
96
|
export const Index_${idx}_HashKey = '${data.hash}';
|
|
@@ -179,11 +179,14 @@ export class ${this.options.modelName}Datastore extends SingleTableDatastore {
|
|
|
179
179
|
],
|
|
180
180
|
}
|
|
181
181
|
});
|
|
182
|
-
new CfnOutput(this, '${this.options.modelName}${outputs_1.CFN_OUTPUT_SUFFIX_DATASTORE_TABLENAME}', {
|
|
182
|
+
new CfnOutput(this, '${this.options.modelName}${outputs_1.CFN_OUTPUT_SUFFIX_DATASTORE_TABLENAME}', {
|
|
183
|
+
key: '${this.options.modelName}${outputs_1.CFN_OUTPUT_SUFFIX_DATASTORE_TABLENAME}',
|
|
184
|
+
value: this.table.tableName,
|
|
185
|
+
});
|
|
183
186
|
}
|
|
184
187
|
|
|
185
188
|
}`;
|
|
186
189
|
}
|
|
187
190
|
}
|
|
188
191
|
exports.Datastore = Datastore;
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb2plbi9kYXRhc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsK0JBQTRCO0FBRTVCLDJDQUE2QjtBQUM3QixpQ0FBc0M7QUFDdEMsbURBQStDO0FBQy9DLCtDQUEwRTtBQU8xRTs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsRUFBRSxDQUFDLFNBQVM7SUFFekMsWUFBWSxHQUFrQyxFQUFZLE9BQXlCO1FBQ2pGLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUQ2QyxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUdqRixHQUFHLENBQUMsT0FBTyxDQUNULG1CQUFtQixFQUNuQiwwQkFBMEIsRUFDMUIsdUJBQXVCLEVBQ3ZCLE1BQU0sQ0FDUCxDQUFDO1FBQ0YsR0FBRyxDQUFDLFVBQVUsQ0FDWixhQUFhLENBQ2QsQ0FBQztRQUVGLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFO1lBQzNELFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUN2QixNQUFNLEVBQUUsZ0JBQWdCO2dCQUN4QixPQUFPLEVBQUUsT0FBTztnQkFDaEIsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRTt3QkFDUCxJQUFJLEVBQUUsSUFBSTt3QkFDVixJQUFJLEVBQUUsSUFBSTtxQkFDWDtpQkFDRjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sSUFBSSxFQUFFO3dCQUNKLEVBQUUsRUFBRTs0QkFDRixJQUFJLEVBQUUsUUFBUTs0QkFDZCxRQUFRLEVBQUUsSUFBSTs0QkFDZCxLQUFLLEVBQUUsY0FBYzt5QkFDdEI7d0JBQ0QsRUFBRSxFQUFFOzRCQUNGLElBQUksRUFBRSxRQUFROzRCQUNkLFFBQVEsRUFB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LENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3hHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDOzs7WUFHYixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7MEJBQ2xGLEdBQUc7O3VCQUVOLElBQUksQ0FBQyxJQUFJOzs7NkNBR2EsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUztjQUMxRixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3hHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDOzs7OzJCQUlFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLCtDQUFxQzs7O0VBR3ZGLENBQUM7SUFDRCxDQUFDO0NBRUY7QUFoS0QsOEJBZ0tDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgT25lU2NoZW1hIH0gZnJvbSAnZHluYW1vZGItb25ldGFibGUnO1xuaW1wb3J0ICogYXMgcGogZnJvbSAncHJvamVuJztcbmltcG9ydCB7IFBBQ0tBR0VfTkFNRSB9IGZyb20gJy4vY29yZSc7XG5pbXBvcnQgeyBMYXp5VGV4dEZpbGUgfSBmcm9tICcuL2xhenktdGV4dGZpbGUnO1xuaW1wb3J0IHsgQ0ZOX09VVFBVVF9TVUZGSVhfREFUQVNUT1JFX1RBQkxFTkFNRSB9IGZyb20gJy4uL3NoYXJlZC9vdXRwdXRzJztcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhc3RvcmVPcHRpb25zIHtcbiAgcmVhZG9ubHkgbW9kZWxOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlZmluaXRpb25GaWxlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIERhdGFzdG9yZSBjb25zdHJ1Y3Qgc2V0cyB1cCBhIER5bmFtb0RCIHNpbmdsZS10YWJsZSBkZXNpZ24gZm9yIGEgc2VydmVybGVzcyBwcm9qZWN0IHVzaW5nIHByb2plbi5cbiAqIFRoaXMgY29uc3RydWN0IGV4dGVuZHMgdGhlIHByb2plbiBDb21wb25lbnQgdG8gaW5jbHVkZSBkZXBlbmRlbmNpZXMgYW5kIGRldmVsb3BtZW50IGRlcGVuZGVuY2llcyByZXF1aXJlZCBmb3IgRHluYW1vREIgYW5kIHByb3ZpZGVzXG4gKiBtZXRob2RzIHRvIGdlbmVyYXRlIG1vZGVsIGFuZCBjb25zdHJ1Y3QgZmlsZXMgYmFzZWQgb24gYSBzY2hlbWEgZGVmaW5pdGlvbiBmaWxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBkYXRhc3RvcmUgPSBuZXcgRGF0YXN0b3JlKGFwcCwge1xuICogICBtb2RlbE5hbWU6ICdVc2VyJyxcbiAqICAgZGVmaW5pdGlvbkZpbGU6ICdzcmMvbW9kZWxzL3VzZXIuc2NoZW1hLmpzb24nLFxuICogfSk7XG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhc3RvcmUgZXh0ZW5kcyBwai5Db21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKGFwcDogcGouYXdzY2RrLkF3c0Nka1R5cGVTY3JpcHRBcHAsIHByb3RlY3RlZCBvcHRpb25zOiBEYXRhc3RvcmVPcHRpb25zKSB7XG4gICAgc3VwZXIoYXBwKTtcblxuICAgIGFwcC5hZGREZXBzKFxuICAgICAgJ2R5bmFtb2RiLW9uZXRhYmxlJyxcbiAgICAgICdAYXdzLXNkay9jbGllbnQtZHluYW1vZGInLFxuICAgICAgJ0Bhd3Mtc2RrL2xpYi1keW5hbW9kYicsXG4gICAgICAndXVpZCcsXG4gICAgKTtcbiAgICBhcHAuYWRkRGV2RGVwcyhcbiAgICAgICdAdHlwZXMvdXVpZCcsXG4gICAgKTtcblxuICAgIG5ldyBwai5TYW1wbGVGaWxlKHRoaXMucHJvamVjdCwgdGhpcy5vcHRpb25zLmRlZmluaXRpb25GaWxlLCB7XG4gICAgICBjb250ZW50czogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBmb3JtYXQ6ICdvbmV0YWJsZToxLjAuMCcsXG4gICAgICAgIHZlcnNpb246ICcwLjEuMCcsXG4gICAgICAgIGluZGV4ZXM6IHtcbiAgICAgICAgICBwcmltYXJ5OiB7XG4gICAgICAgICAgICBoYXNoOiAnUEsnLFxuICAgICAgICAgICAgc29ydDogJ1NLJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBtb2RlbHM6IHtcbiAgICAgICAgICBVc2VyOiB7XG4gICAgICAgICAgICBQSzoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgIHZhbHVlOiAnVXNlciMke25hbWV9JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBTSzoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgIHZhbHVlOiAnVXNlciMke25hbWV9JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgbmV3IExhenlUZXh0RmlsZSh0aGlzLnByb2plY3QsIGBzcmMvZ2VuZXJhdGVkL2RhdGFzdG9yZS4ke3RoaXMub3B0aW9ucy5tb2RlbE5hbWUudG9Mb3dlckNhc2UoKX0tbW9kZWwuZ2VuZXJhdGVkLnRzYCwgeyBjb250ZW50OiB0aGlzLmNyZWF0ZU1vZGVsRmlsZS5iaW5kKHRoaXMpIH0pO1xuICAgIG5ldyBMYXp5VGV4dEZpbGUodGhpcy5wcm9qZWN0LCBgc3JjL2dlbmVyYXRlZC9kYXRhc3RvcmUuJHt0aGlzLm9wdGlvbnMubW9kZWxOYW1lLnRvTG93ZXJDYXNlKCl9LWNvbnN0cnVjdC5nZW5lcmF0ZWQudHNgLCB7IGNvbnRlbnQ6IHRoaXMuY3JlYXRlQ29uc3RydWN0RmlsZS5iaW5kKHRoaXMpIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZU1vZGVsRmlsZShmaWxlOiBwai5GaWxlQmFzZSk6IHN0cmluZyB7XG4gICAgY29uc3QgbW9kZWwgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhqb2luKHRoaXMucHJvamVjdC5vdXRkaXIsIHRoaXMub3B0aW9ucy5kZWZpbml0aW9uRmlsZSkpLnRvU3RyaW5nKCkpIGFzIE9uZVNjaGVtYTtcblxuICAgIHJldHVybiBgLy8gJHtmaWxlLm1hcmtlcn1cbi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgeyBNb2RlbCwgVGFibGUsIEVudGl0eSB9IGZyb20gJ2R5bmFtb2RiLW9uZXRhYmxlJztcbmltcG9ydCB7IGVudiB9IGZyb20gJ3Byb2Nlc3MnO1xuaW1wb3J0IHsgRHluYW1vIH0gZnJvbSAnZHluYW1vZGItb25ldGFibGUvRHluYW1vJztcbmltcG9ydCB7IER5bmFtb0RCQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWR5bmFtb2RiJztcblxuZXhwb3J0IGNvbnN0IGR5bmFtb0NsaWVudCA9IG5ldyBEeW5hbW8oeyBjbGllbnQ6IG5ldyBEeW5hbW9EQkNsaWVudCh7fSkgfSlcbmV4cG9ydCBjb25zdCBUQUJMRV9OQU1FOiBzdHJpbmcgPSBlbnYuVEFCTEUhO1xuXG4ke09iamVjdC5lbnRyaWVzKG1vZGVsLmluZGV4ZXMpLm1hcCgoW2lkeCwgZGF0YV0pID0+IGBleHBvcnQgY29uc3QgSW5kZXhfJHtpZHh9X05hbWUgPSAnJHtpZHh9JztcbmV4cG9ydCBjb25zdCBJbmRleF8ke2lkeH1fSGFzaEtleSA9ICcke2RhdGEuaGFzaH0nO1xuZXhwb3J0IGNvbnN0IEluZGV4XyR7aWR4fV9Tb3J0S2V5ID0gJyR7ZGF0YS5zb3J0fSc7XG5gKS5qb2luKCdcXG4nKX1cblxuZXhwb3J0IGNvbnN0IFNjaGVtYSA9ICR7dGhpcy5zdHJpbmdpZnlNb2RlbChtb2RlbCl9O1xuXG5leHBvcnQgY29uc3QgdGFibGUgPSBuZXcgVGFibGUoe1xuICBjbGllbnQ6IGR5bmFtb0NsaWVudCxcbiAgbmFtZTogVEFCTEVfTkFNRSxcbiAgc2NoZW1hOiBTY2hlbWEsXG4gIGlzb0RhdGVzOiB0cnVlLFxuICAvLyBsb2dnZXI6IHRydWUsXG4gIGhpZGRlbjogZmFsc2UsXG59KTtcblxuJHtPYmplY3QuZW50cmllcyhtb2RlbC5tb2RlbHMpLm1hcCgoW3R5cGVOYW1lLCBfXSkgPT4gYGV4cG9ydCB0eXBlICR7dHlwZU5hbWV9VHlwZSA9IEVudGl0eTx0eXBlb2YgU2NoZW1hLm1vZGVscy4ke3R5cGVOYW1lfT47XG5leHBvcnQgY29uc3QgJHt0eXBlTmFtZX06IE1vZGVsPCR7dHlwZU5hbWV9VHlwZT4gPSB0YWJsZS5nZXRNb2RlbDwke3R5cGVOYW1lfVR5cGU+KCcke3R5cGVOYW1lfScpO1xuYCkuam9pbignXFxuJyl9XG5cbmA7XG4gIH1cblxuICBwcml2YXRlIHN0cmluZ2lmeU1vZGVsKG1vZGVsOiBPbmVTY2hlbWEpIHtcbiAgICAvLyBhcnJheSwgYmluYXJ5LCBib29sZWFuLCAgICAgICAgIGRhdGUsIG51bWJlciwgb2JqZWN0LCBzZXQsIHN0cmluZ1xuICAgIC8vIEFycmF5LCBCaW5hcnksIEJvb2xlYW4sIEJ1ZmZlciwgRGF0ZSwgTnVtYmVyLCBPYmplY3QsIFNldCwgU3RyaW5nXG5cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobW9kZWwsIG51bGwsIDIpXG4gICAgICAucmVwbGFjZSgvXCJ0eXBlXCI6IFwiYXJyYXlcIi9nLCAnXCJ0eXBlXCI6IEFycmF5JylcbiAgICAgIC5yZXBsYWNlKC9cInR5cGVcIjogXCJiaW5hcnlcIi9nLCAnXCJ0eXBlXCI6IEJpbmFyeScpXG4gICAgICAucmVwbGFjZSgvXCJ0eXBlXCI6IFwiYm9vbGVhblwiL2csICdcInR5cGVcIjogQm9vbGVhbicpXG4gICAgICAucmVwbGFjZSgvXCJ0eXBlXCI6IFwiZGF0ZVwiL2csICdcInR5cGVcIjogRGF0ZScpXG4gICAgICAucmVwbGFjZSgvXCJ0eXBlXCI6IFwibnVtYmVyXCIvZywgJ1widHlwZVwiOiBOdW1iZXInKVxuICAgICAgLnJlcGxhY2UoL1widHlwZVwiOiBcIm9iamVjdFwiL2csICdcInR5cGVcIjogT2JqZWN0JylcbiAgICAgIC5yZXBsYWNlKC9cInR5cGVcIjogXCJzZXRcIi9nLCAnXCJ0eXBlXCI6IFNldCcpXG4gICAgICAucmVwbGFjZSgvXCJ0eXBlXCI6IFwic3RyaW5nXCIvZywgJ1widHlwZVwiOiBTdHJpbmcnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVDb25zdHJ1Y3RGaWxlKGZpbGU6IHBqLkZpbGVCYXNlKTogc3RyaW5nIHtcbiAgICBjb25zdCBtb2RlbCA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGpvaW4odGhpcy5wcm9qZWN0Lm91dGRpciwgdGhpcy5vcHRpb25zLmRlZmluaXRpb25GaWxlKSkudG9TdHJpbmcoKSkgYXMgT25lU2NoZW1hO1xuXG4gICAgcmV0dXJuIGAvLyAke2ZpbGUubWFya2VyfVxuLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IEF0dHJpYnV0ZVR5cGUsIFByb2plY3Rpb25UeXBlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWR5bmFtb2RiJztcbmltcG9ydCB7IENmbk91dHB1dCB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgU2luZ2xlVGFibGVEYXRhc3RvcmUsIFNpbmdsZVRhYmxlRGF0YXN0b3JlUHJvcHMgfSBmcm9tICcke1BBQ0tBR0VfTkFNRX0vbGliL2NvbnN0cnVjdHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlICR7dGhpcy5vcHRpb25zLm1vZGVsTmFtZX1EYXRhc3RvcmVQcm9wcyBleHRlbmRzIE9taXQ8U2luZ2xlVGFibGVEYXRhc3RvcmVQcm9wcywgJ2Rlc2lnbic+IHtcbiAgLy9cbn1cblxuZXhwb3J0IGNsYXNzICR7dGhpcy5vcHRpb25zLm1vZGVsTmFtZX1EYXRhc3RvcmUgZXh0ZW5kcyBTaW5nbGVUYWJsZURhdGFzdG9yZSB7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6ICR7dGhpcy5vcHRpb25zLm1vZGVsTmFtZX1EYXRhc3RvcmVQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGRlc2lnbjoge1xuICAgICAgICBwcmltYXJ5S2V5OiB7XG4gICAgICAgICAgcGFydGl0aW9uS2V5OiAnJHttb2RlbC5pbmRleGVzLnByaW1hcnkuaGFzaH0nLFxuICAgICAgICAgICR7bW9kZWwuaW5kZXhlcy5wcmltYXJ5LnNvcnQgPyBgc29ydEtleTogJyR7bW9kZWwuaW5kZXhlcy5wcmltYXJ5LnNvcnR9JyxgIDogJyd9XG4gICAgICAgIH0sXG4gICAgICAgIC8vIHRpbWVUb0xpdmVBdHRyaWJ1dGU6ICdUT0RPJyxcbiAgICAgICAgZ2xvYmFsSW5kZXhlczogW1xuICAgICAgICAgICR7T2JqZWN0LmVudHJpZXMobW9kZWwuaW5kZXhlcykuZmlsdGVyKChbaWR4LCBkYXRhXSkgPT4gaWR4ICE9PSAncHJpbWFyeScgJiYgZGF0YS50eXBlICE9PSAnbG9jYWwnKS5tYXAoKFtpZHgsIGRhdGFdKSA9PiBge1xuICAgICAgICAgICAgaW5kZXhOYW1lOiAnJHtpZHh9JyxcbiAgICAgICAgICAgIHBhcnRpdGlvbktleToge1xuICAgICAgICAgICAgICBuYW1lOiAnJHtkYXRhLmhhc2h9JyxcbiAgICAgICAgICAgICAgdHlwZTogQXR0cmlidXRlVHlwZS5TVFJJTkcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJHtkYXRhLnNvcnQgPyBgc29ydEtleToge1xuICAgICAgICAgICAgICBuYW1lOiAnJHtkYXRhLnNvcnR9JyxcbiAgICAgICAgICAgICAgdHlwZTogQXR0cmlidXRlVHlwZS5TVFJJTkcsXG4gICAgICAgICAgICB9LGAgOiAnJ31cbiAgICAgICAgICAgIHByb2plY3Rpb25UeXBlOiBQcm9qZWN0aW9uVHlwZS4ke3R5cGVvZiBkYXRhLnByb2plY3QgPT09ICdzdHJpbmcnID8gZGF0YS5wcm9qZWN0LnRvVXBwZXJDYXNlKCkgOiAnSU5DTFVERSd9LFxuICAgICAgICAgICAgJHtBcnJheS5pc0FycmF5KGRhdGEucHJvamVjdCkgPyBgbm9uS2V5QXR0cmlidXRlczogWyR7ZGF0YS5wcm9qZWN0Lm1hcChlID0+IGAnJHtlfSdgKS5qb2luKCcsJyl9XSxgIDogJyd9XG4gICAgICAgICAgfWApLmpvaW4oJyxcXG4nKX1cbiAgICAgICAgXSxcbiAgICAgICAgbG9jYWxJbmRleGVzOiBbXG4gICAgICAgICAgJHtPYmplY3QuZW50cmllcyhtb2RlbC5pbmRleGVzKS5maWx0ZXIoKFtfLCBkYXRhXSkgPT4gZGF0YS50eXBlID09PSAnbG9jYWwnKS5tYXAoKFtpZHgsIGRhdGFdKSA9PiBge1xuICAgICAgICAgICAgaW5kZXhOYW1lOiAnJHtpZHh9JyxcbiAgICAgICAgICAgIHNvcnRLZXk6IHtcbiAgICAgICAgICAgICAgbmFtZTogJyR7ZGF0YS5zb3J0fScsXG4gICAgICAgICAgICAgIHR5cGU6IEF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByb2plY3Rpb25UeXBlOiBQcm9qZWN0aW9uVHlwZS4ke3R5cGVvZiBkYXRhLnByb2plY3QgPT09ICdzdHJpbmcnID8gZGF0YS5wcm9qZWN0IDogJ0lOQ0xVREUnfSxcbiAgICAgICAgICAgICR7QXJyYXkuaXNBcnJheShkYXRhLnByb2plY3QpID8gYG5vbktleUF0dHJpYnV0ZXM6IFske2RhdGEucHJvamVjdC5tYXAoZSA9PiBgJyR7ZX0nYCkuam9pbignLCcpfV0sYCA6ICcnfVxuICAgICAgICAgIH1gKS5qb2luKCcsXFxuJyl9XG4gICAgICAgIF0sXG4gICAgICB9XG4gICAgfSk7XG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCAnJHt0aGlzLm9wdGlvbnMubW9kZWxOYW1lfSR7Q0ZOX09VVFBVVF9TVUZGSVhfREFUQVNUT1JFX1RBQkxFTkFNRX0nLCB7IHZhbHVlOiB0aGlzLnRhYmxlLnRhYmxlTmFtZSB9KTtcbiAgfVxuXG59YDtcbiAgfVxuXG59Il19
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb2plbi9kYXRhc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsK0JBQTRCO0FBRTVCLDJDQUE2QjtBQUM3QixpQ0FBc0M7QUFDdEMsbURBQStDO0FBQy9DLCtDQUEwRTtBQU8xRTs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsRUFBRSxDQUFDLFNBQVM7SUFFekMsWUFBWSxHQUFrQyxFQUFZLE9BQXlCO1FBQ2pGLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUQ2QyxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUdqRixHQUFHLENBQUMsT0FBTyxDQUNULG1CQUFtQixFQUNuQiwwQkFBMEIsRUFDMUIsdUJBQXVCLEVBQ3ZCLE1BQU0sQ0FDUCxDQUFDO1FBQ0YsR0FBRyxDQUFDLFVBQVUsQ0FDWixhQUFhLENBQ2QsQ0FBQztRQUVGLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFO1lBQzNELFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUN2QixNQUFNLEVBQUUsZ0JBQWdCO2dCQUN4QixPQUFPLEVBQUUsT0FBTztnQkFDaEIsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRTt3QkFDUCxJQUFJLEVBQUUsSUFBSTt3QkFDVixJQUFJLEVBQUUsSUFBSTtxQkFDWDtpQkFDRjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sSUFBSSxFQUFFO3dCQUNKLEVBQUUsRUFBRTs0QkFDRixJQUFJLEVBQUUsUUFBUTs0QkFDZCxRQUFRLEVBQUUsSUFBSTs0QkFDZCxLQUFLLEVBQUUsY0FBYzt5QkFDdEI7d0JBQ0QsRUFBRSxFQUFFOzRCQUNGLElBQUksRUFBRSxRQUFROzRCQUNkLFFBQVEsRUFB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LENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3hHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDOzs7WUFHYixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7MEJBQ2xGLEdBQUc7O3VCQUVOLElBQUksQ0FBQyxJQUFJOzs7NkNBR2EsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUztjQUMxRixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3hHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDOzs7OzJCQUlFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLCtDQUFxQztjQUMzRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRywrQ0FBcUM7Ozs7O0VBSzFFLENBQUM7SUFDRCxDQUFDO0NBRUY7QUFuS0QsOEJBbUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgT25lU2NoZW1hIH0gZnJvbSAnZHluYW1vZGItb25ldGFibGUnO1xuaW1wb3J0ICogYXMgcGogZnJvbSAncHJvamVuJztcbmltcG9ydCB7IFBBQ0tBR0VfTkFNRSB9IGZyb20gJy4vY29yZSc7XG5pbXBvcnQgeyBMYXp5VGV4dEZpbGUgfSBmcm9tICcuL2xhenktdGV4dGZpbGUnO1xuaW1wb3J0IHsgQ0ZOX09VVFBVVF9TVUZGSVhfREFUQVNUT1JFX1RBQkxFTkFNRSB9IGZyb20gJy4uL3NoYXJlZC9vdXRwdXRzJztcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhc3RvcmVPcHRpb25zIHtcbiAgcmVhZG9ubHkgbW9kZWxOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlZmluaXRpb25GaWxlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIERhdGFzdG9yZSBjb25zdHJ1Y3Qgc2V0cyB1cCBhIER5bmFtb0RCIHNpbmdsZS10YWJsZSBkZXNpZ24gZm9yIGEgc2VydmVybGVzcyBwcm9qZWN0IHVzaW5nIHByb2plbi5cbiAqIFRoaXMgY29uc3RydWN0IGV4dGVuZHMgdGhlIHByb2plbiBDb21wb25lbnQgdG8gaW5jbHVkZSBkZXBlbmRlbmNpZXMgYW5kIGRldmVsb3BtZW50IGRlcGVuZGVuY2llcyByZXF1aXJlZCBmb3IgRHluYW1vREIgYW5kIHByb3ZpZGVzXG4gKiBtZXRob2RzIHRvIGdlbmVyYXRlIG1vZGVsIGFuZCBjb25zdHJ1Y3QgZmlsZXMgYmFzZWQgb24gYSBzY2hlbWEgZGVmaW5pdGlvbiBmaWxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBkYXRhc3RvcmUgPSBuZXcgRGF0YXN0b3JlKGFwcCwge1xuICogICBtb2RlbE5hbWU6ICdVc2VyJyxcbiAqICAgZGVmaW5pdGlvbkZpbGU6ICdzcmMvbW9kZWxzL3VzZXIuc2NoZW1hLmpzb24nLFxuICogfSk7XG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhc3RvcmUgZXh0ZW5kcyBwai5Db21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKGFwcDogcGouYXdzY2RrLkF3c0Nka1R5cGVTY3JpcHRBcHAsIHByb3RlY3RlZCBvcHRpb25zOiBEYXRhc3RvcmVPcHRpb25zKSB7XG4gICAgc3VwZXIoYXBwKTtcblxuICAgIGFwcC5hZGREZXBzKFxuICAgICAgJ2R5bmFtb2RiLW9uZXRhYmxlJyxcbiAgICAgICdAYXdzLXNkay9jbGllbnQtZHluYW1vZGInLFxuICAgICAgJ0Bhd3Mtc2RrL2xpYi1keW5hbW9kYicsXG4gICAgICAndXVpZCcsXG4gICAgKTtcbiAgICBhcHAuYWRkRGV2RGVwcyhcbiAgICAgICdAdHlwZXMvdXVpZCcsXG4gICAgKTtcblxuICAgIG5ldyBwai5TYW1wbGVGaWxlKHRoaXMucHJvamVjdCwgdGhpcy5vcHRpb25zLmRlZmluaXRpb25GaWxlLCB7XG4gICAgICBjb250ZW50czogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBmb3JtYXQ6ICdvbmV0YWJsZToxLjAuMCcsXG4gICAgICAgIHZlcnNpb246ICcwLjEuMCcsXG4gICAgICAgIGluZGV4ZXM6IHtcbiAgICAgICAgICBwcmltYXJ5OiB7XG4gICAgICAgICAgICBoYXNoOiAnUEsnLFxuICAgICAgICAgICAgc29ydDogJ1NLJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBtb2RlbHM6IHtcbiAgICAgICAgICBVc2VyOiB7XG4gICAgICAgICAgICBQSzoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgIHZhbHVlOiAnVXNlciMke25hbWV9JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBTSzoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgIHZhbHVlOiAnVXNlciMke25hbWV9JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgbmV3IExhenlUZXh0RmlsZSh0aGlzLnByb2plY3QsIGBzcmMvZ2VuZXJhdGVkL2RhdGFzdG9yZS4ke3RoaXMub3B0aW9ucy5tb2RlbE5hbWUudG9Mb3dlckNhc2UoKX0tbW9kZWwuZ2VuZXJhdGVkLnRzYCwgeyBjb250ZW50OiB0aGlzLmNyZWF0ZU1vZGVsRmlsZS5iaW5kKHRoaXMpIH0pO1xuICAgIG5ldyBMYXp5VGV4dEZpbGUodGhpcy5wcm9qZWN0LCBgc3JjL2dlbmVyYXRlZC9kYXRhc3RvcmUuJHt0aGlzLm9wdGlvbnMubW9kZWxOYW1lLnRvTG93ZXJDYXNlKCl9LWNvbnN0cnVjdC5nZW5lcmF0ZWQudHNgLCB7IGNvbnRlbnQ6IHRoaXMuY3JlYXRlQ29uc3RydWN0RmlsZS5iaW5kKHRoaXMpIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZU1vZGVsRmlsZShmaWxlOiBwai5GaWxlQmFzZSk6IHN0cmluZyB7XG4gICAgY29uc3QgbW9kZWwgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhqb2luKHRoaXMucHJvamVjdC5vdXRkaXIsIHRoaXMub3B0aW9ucy5kZWZpbml0aW9uRmlsZSkpLnRvU3RyaW5nKCkpIGFzIE9uZVNjaGVtYTtcblxuICAgIHJldHVybiBgLy8gJHtmaWxlLm1hcmtlcn1cbi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgeyBNb2RlbCwgVGFibGUsIEVudGl0eSB9IGZyb20gJ2R5bmFtb2RiLW9uZXRhYmxlJztcbmltcG9ydCB7IGVudiB9IGZyb20gJ3Byb2Nlc3MnO1xuaW1wb3J0IHsgRHluYW1vIH0gZnJvbSAnZHluYW1vZGItb25ldGFibGUvRHluYW1vJztcbmltcG9ydCB7IER5bmFtb0RCQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWR5bmFtb2RiJztcblxuZXhwb3J0IGNvbnN0IGR5bmFtb0NsaWVudCA9IG5ldyBEeW5hbW8oeyBjbGllbnQ6IG5ldyBEeW5hbW9EQkNsaWVudCh7fSkgfSlcbmV4cG9ydCBjb25zdCBUQUJMRV9OQU1FOiBzdHJpbmcgPSBlbnYuVEFCTEUgPz8gJ2R1bW15LXRhYmxlJztcblxuJHtPYmplY3QuZW50cmllcyhtb2RlbC5pbmRleGVzKS5tYXAoKFtpZHgsIGRhdGFdKSA9PiBgZXhwb3J0IGNvbnN0IEluZGV4XyR7aWR4fV9OYW1lID0gJyR7aWR4fSc7XG5leHBvcnQgY29uc3QgSW5kZXhfJHtpZHh9X0hhc2hLZXkgPSAnJHtkYXRhLmhhc2h9JztcbmV4cG9ydCBjb25zdCBJbmRleF8ke2lkeH1fU29ydEtleSA9ICcke2RhdGEuc29ydH0nO1xuYCkuam9pbignXFxuJyl9XG5cbmV4cG9ydCBjb25zdCBTY2hlbWEgPSAke3RoaXMuc3RyaW5naWZ5TW9kZWwobW9kZWwpfTtcblxuZXhwb3J0IGNvbnN0IHRhYmxlID0gbmV3IFRhYmxlKHtcbiAgY2xpZW50OiBkeW5hbW9DbGllbnQsXG4gIG5hbWU6IFRBQkxFX05BTUUsXG4gIHNjaGVtYTogU2NoZW1hLFxuICBpc29EYXRlczogdHJ1ZSxcbiAgLy8gbG9nZ2VyOiB0cnVlLFxuICBoaWRkZW46IGZhbHNlLFxufSk7XG5cbiR7T2JqZWN0LmVudHJpZXMobW9kZWwubW9kZWxzKS5tYXAoKFt0eXBlTmFtZSwgX10pID0+IGBleHBvcnQgdHlwZSAke3R5cGVOYW1lfVR5cGUgPSBFbnRpdHk8dHlwZW9mIFNjaGVtYS5tb2RlbHMuJHt0eXBlTmFtZX0+O1xuZXhwb3J0IGNvbnN0ICR7dHlwZU5hbWV9OiBNb2RlbDwke3R5cGVOYW1lfVR5cGU+ID0gdGFibGUuZ2V0TW9kZWw8JHt0eXBlTmFtZX1UeXBlPignJHt0eXBlTmFtZX0nKTtcbmApLmpvaW4oJ1xcbicpfVxuXG5gO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpbmdpZnlNb2RlbChtb2RlbDogT25lU2NoZW1hKSB7XG4gICAgLy8gYXJyYXksIGJpbmFyeSwgYm9vbGVhbiwgICAgICAgICBkYXRlLCBudW1iZXIsIG9iamVjdCwgc2V0LCBzdHJpbmdcbiAgICAvLyBBcnJheSwgQmluYXJ5LCBCb29sZWFuLCBCdWZmZXIsIERhdGUsIE51bWJlciwgT2JqZWN0LCBTZXQsIFN0cmluZ1xuXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG1vZGVsLCBudWxsLCAyKVxuICAgICAgLnJlcGxhY2UoL1widHlwZVwiOiBcImFycmF5XCIvZywgJ1widHlwZVwiOiBBcnJheScpXG4gICAgICAucmVwbGFjZSgvXCJ0eXBlXCI6IFwiYmluYXJ5XCIvZywgJ1widHlwZVwiOiBCaW5hcnknKVxuICAgICAgLnJlcGxhY2UoL1widHlwZVwiOiBcImJvb2xlYW5cIi9nLCAnXCJ0eXBlXCI6IEJvb2xlYW4nKVxuICAgICAgLnJlcGxhY2UoL1widHlwZVwiOiBcImRhdGVcIi9nLCAnXCJ0eXBlXCI6IERhdGUnKVxuICAgICAgLnJlcGxhY2UoL1widHlwZVwiOiBcIm51bWJlclwiL2csICdcInR5cGVcIjogTnVtYmVyJylcbiAgICAgIC5yZXBsYWNlKC9cInR5cGVcIjogXCJvYmplY3RcIi9nLCAnXCJ0eXBlXCI6IE9iamVjdCcpXG4gICAgICAucmVwbGFjZSgvXCJ0eXBlXCI6IFwic2V0XCIvZywgJ1widHlwZVwiOiBTZXQnKVxuICAgICAgLnJlcGxhY2UoL1widHlwZVwiOiBcInN0cmluZ1wiL2csICdcInR5cGVcIjogU3RyaW5nJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlQ29uc3RydWN0RmlsZShmaWxlOiBwai5GaWxlQmFzZSk6IHN0cmluZyB7XG4gICAgY29uc3QgbW9kZWwgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhqb2luKHRoaXMucHJvamVjdC5vdXRkaXIsIHRoaXMub3B0aW9ucy5kZWZpbml0aW9uRmlsZSkpLnRvU3RyaW5nKCkpIGFzIE9uZVNjaGVtYTtcblxuICAgIHJldHVybiBgLy8gJHtmaWxlLm1hcmtlcn1cbi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgeyBBdHRyaWJ1dGVUeXBlLCBQcm9qZWN0aW9uVHlwZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1keW5hbW9kYic7XG5pbXBvcnQgeyBDZm5PdXRwdXQgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFNpbmdsZVRhYmxlRGF0YXN0b3JlLCBTaW5nbGVUYWJsZURhdGFzdG9yZVByb3BzIH0gZnJvbSAnJHtQQUNLQUdFX05BTUV9L2xpYi9jb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSAke3RoaXMub3B0aW9ucy5tb2RlbE5hbWV9RGF0YXN0b3JlUHJvcHMgZXh0ZW5kcyBPbWl0PFNpbmdsZVRhYmxlRGF0YXN0b3JlUHJvcHMsICdkZXNpZ24nPiB7XG4gIC8vXG59XG5cbmV4cG9ydCBjbGFzcyAke3RoaXMub3B0aW9ucy5tb2RlbE5hbWV9RGF0YXN0b3JlIGV4dGVuZHMgU2luZ2xlVGFibGVEYXRhc3RvcmUge1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiAke3RoaXMub3B0aW9ucy5tb2RlbE5hbWV9RGF0YXN0b3JlUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBkZXNpZ246IHtcbiAgICAgICAgcHJpbWFyeUtleToge1xuICAgICAgICAgIHBhcnRpdGlvbktleTogJyR7bW9kZWwuaW5kZXhlcy5wcmltYXJ5Lmhhc2h9JyxcbiAgICAgICAgICAke21vZGVsLmluZGV4ZXMucHJpbWFyeS5zb3J0ID8gYHNvcnRLZXk6ICcke21vZGVsLmluZGV4ZXMucHJpbWFyeS5zb3J0fScsYCA6ICcnfVxuICAgICAgICB9LFxuICAgICAgICAvLyB0aW1lVG9MaXZlQXR0cmlidXRlOiAnVE9ETycsXG4gICAgICAgIGdsb2JhbEluZGV4ZXM6IFtcbiAgICAgICAgICAke09iamVjdC5lbnRyaWVzKG1vZGVsLmluZGV4ZXMpLmZpbHRlcigoW2lkeCwgZGF0YV0pID0+IGlkeCAhPT0gJ3ByaW1hcnknICYmIGRhdGEudHlwZSAhPT0gJ2xvY2FsJykubWFwKChbaWR4LCBkYXRhXSkgPT4gYHtcbiAgICAgICAgICAgIGluZGV4TmFtZTogJyR7aWR4fScsXG4gICAgICAgICAgICBwYXJ0aXRpb25LZXk6IHtcbiAgICAgICAgICAgICAgbmFtZTogJyR7ZGF0YS5oYXNofScsXG4gICAgICAgICAgICAgIHR5cGU6IEF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICR7ZGF0YS5zb3J0ID8gYHNvcnRLZXk6IHtcbiAgICAgICAgICAgICAgbmFtZTogJyR7ZGF0YS5zb3J0fScsXG4gICAgICAgICAgICAgIHR5cGU6IEF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgICAgICAgfSxgIDogJyd9XG4gICAgICAgICAgICBwcm9qZWN0aW9uVHlwZTogUHJvamVjdGlvblR5cGUuJHt0eXBlb2YgZGF0YS5wcm9qZWN0ID09PSAnc3RyaW5nJyA/IGRhdGEucHJvamVjdC50b1VwcGVyQ2FzZSgpIDogJ0lOQ0xVREUnfSxcbiAgICAgICAgICAgICR7QXJyYXkuaXNBcnJheShkYXRhLnByb2plY3QpID8gYG5vbktleUF0dHJpYnV0ZXM6IFske2RhdGEucHJvamVjdC5tYXAoZSA9PiBgJyR7ZX0nYCkuam9pbignLCcpfV0sYCA6ICcnfVxuICAgICAgICAgIH1gKS5qb2luKCcsXFxuJyl9XG4gICAgICAgIF0sXG4gICAgICAgIGxvY2FsSW5kZXhlczogW1xuICAgICAgICAgICR7T2JqZWN0LmVudHJpZXMobW9kZWwuaW5kZXhlcykuZmlsdGVyKChbXywgZGF0YV0pID0+IGRhdGEudHlwZSA9PT0gJ2xvY2FsJykubWFwKChbaWR4LCBkYXRhXSkgPT4gYHtcbiAgICAgICAgICAgIGluZGV4TmFtZTogJyR7aWR4fScsXG4gICAgICAgICAgICBzb3J0S2V5OiB7XG4gICAgICAgICAgICAgIG5hbWU6ICcke2RhdGEuc29ydH0nLFxuICAgICAgICAgICAgICB0eXBlOiBBdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9qZWN0aW9uVHlwZTogUHJvamVjdGlvblR5cGUuJHt0eXBlb2YgZGF0YS5wcm9qZWN0ID09PSAnc3RyaW5nJyA/IGRhdGEucHJvamVjdCA6ICdJTkNMVURFJ30sXG4gICAgICAgICAgICAke0FycmF5LmlzQXJyYXkoZGF0YS5wcm9qZWN0KSA/IGBub25LZXlBdHRyaWJ1dGVzOiBbJHtkYXRhLnByb2plY3QubWFwKGUgPT4gYCcke2V9J2ApLmpvaW4oJywnKX1dLGAgOiAnJ31cbiAgICAgICAgICB9YCkuam9pbignLFxcbicpfVxuICAgICAgICBdLFxuICAgICAgfVxuICAgIH0pO1xuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJyR7dGhpcy5vcHRpb25zLm1vZGVsTmFtZX0ke0NGTl9PVVRQVVRfU1VGRklYX0RBVEFTVE9SRV9UQUJMRU5BTUV9Jywge1xuICAgICAga2V5OiAnJHt0aGlzLm9wdGlvbnMubW9kZWxOYW1lfSR7Q0ZOX09VVFBVVF9TVUZGSVhfREFUQVNUT1JFX1RBQkxFTkFNRX0nLFxuICAgICAgdmFsdWU6IHRoaXMudGFibGUudGFibGVOYW1lLFxuICAgIH0pO1xuICB9XG5cbn1gO1xuICB9XG5cbn0iXX0=
|
package/package.json
CHANGED
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"@aws-sdk/client-s3": "3.583.0",
|
|
39
39
|
"@aws-sdk/lib-dynamodb": "3.583.0",
|
|
40
40
|
"@hapi/boom": "^10.0.1",
|
|
41
|
-
"@taimos/projen": "0.0.
|
|
42
|
-
"@types/aws-lambda": "^8.10.
|
|
41
|
+
"@taimos/projen": "0.0.207",
|
|
42
|
+
"@types/aws-lambda": "^8.10.140",
|
|
43
43
|
"@types/jest": "^29.5.12",
|
|
44
44
|
"@types/js-yaml": "^4.0.9",
|
|
45
45
|
"@types/jsonwebtoken": "^9.0.6",
|
|
@@ -47,8 +47,8 @@
|
|
|
47
47
|
"@types/lambda-log": "^2.2.1",
|
|
48
48
|
"@types/node": "^16",
|
|
49
49
|
"@types/uuid": "^9.0.8",
|
|
50
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
51
|
-
"@typescript-eslint/parser": "^
|
|
50
|
+
"@typescript-eslint/eslint-plugin": "^7",
|
|
51
|
+
"@typescript-eslint/parser": "^7",
|
|
52
52
|
"aws-cdk-lib": "2.120.0",
|
|
53
53
|
"constructs": "^10.0.0",
|
|
54
54
|
"dynamodb-onetable": "~2.7.2",
|
|
@@ -58,21 +58,21 @@
|
|
|
58
58
|
"jest": "^29.7.0",
|
|
59
59
|
"jest-junit": "^15",
|
|
60
60
|
"openapi-typescript": "6.7.6",
|
|
61
|
-
"projen": "^0.
|
|
61
|
+
"projen": "^0.82.8",
|
|
62
62
|
"standard-version": "^9",
|
|
63
|
-
"ts-jest": "^29.1.
|
|
63
|
+
"ts-jest": "^29.1.5",
|
|
64
64
|
"ts-node": "^10.9.2",
|
|
65
65
|
"typedoc": "0.25.0",
|
|
66
66
|
"typescript": "^4.9.5"
|
|
67
67
|
},
|
|
68
68
|
"peerDependencies": {
|
|
69
69
|
"@aws-cdk/aws-cognito-identitypool-alpha": "^2.120.0-alpha.0",
|
|
70
|
-
"@aws-sdk/client-cognito-identity-provider": "^3.
|
|
71
|
-
"@aws-sdk/client-dynamodb": "^3.
|
|
72
|
-
"@aws-sdk/client-s3": "^3.
|
|
73
|
-
"@aws-sdk/lib-dynamodb": "^3.
|
|
70
|
+
"@aws-sdk/client-cognito-identity-provider": "^3.609.0",
|
|
71
|
+
"@aws-sdk/client-dynamodb": "^3.609.0",
|
|
72
|
+
"@aws-sdk/client-s3": "^3.609.0",
|
|
73
|
+
"@aws-sdk/lib-dynamodb": "^3.610.0",
|
|
74
74
|
"aws-cdk-lib": "^2.120.0",
|
|
75
|
-
"dynamodb-onetable": "^2.7.
|
|
75
|
+
"dynamodb-onetable": "^2.7.4",
|
|
76
76
|
"openapi-typescript": "^6.7.6"
|
|
77
77
|
},
|
|
78
78
|
"dependencies": {
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"jsonwebtoken": "^9.0.2",
|
|
84
84
|
"jwk-to-pem": "^2.0.5",
|
|
85
85
|
"lambda-log": "^3.1.0",
|
|
86
|
-
"projen": "^0.
|
|
86
|
+
"projen": "^0.82.8",
|
|
87
87
|
"uuid": "^9.0.1"
|
|
88
88
|
},
|
|
89
89
|
"keywords": [
|
|
@@ -101,8 +101,9 @@
|
|
|
101
101
|
"publishConfig": {
|
|
102
102
|
"access": "public"
|
|
103
103
|
},
|
|
104
|
-
"version": "2.12.
|
|
104
|
+
"version": "2.12.2",
|
|
105
105
|
"jest": {
|
|
106
|
+
"coverageProvider": "v8",
|
|
106
107
|
"testMatch": [
|
|
107
108
|
"<rootDir>/src/**/__tests__/**/*.ts?(x)",
|
|
108
109
|
"<rootDir>/@(test|src)/**/*(*.)@(spec|test).ts?(x)"
|