@aws-solutions-constructs/core 2.54.1 → 2.56.0

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.
@@ -156,7 +156,7 @@ function addPermissions(role, props) {
156
156
  /**
157
157
  * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
158
158
  */
159
- function buildSagemakerNotebook(scope, props) {
159
+ function buildSagemakerNotebook(scope, id, props) {
160
160
  // Setup the notebook properties
161
161
  let sagemakerNotebookProps;
162
162
  let vpcInstance;
@@ -172,7 +172,7 @@ function buildSagemakerNotebook(scope, props) {
172
172
  }
173
173
  addPermissions(props.role);
174
174
  if (props.sagemakerNotebookProps?.kmsKeyId === undefined) {
175
- kmsKeyId = kms_helper_1.buildEncryptionKey(scope).keyId;
175
+ kmsKeyId = kms_helper_1.buildEncryptionKey(scope, id).keyId;
176
176
  }
177
177
  else {
178
178
  kmsKeyId = props.sagemakerNotebookProps.kmsKeyId;
@@ -228,11 +228,11 @@ function CheckNotebookVpcProps(props) {
228
228
  /**
229
229
  * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
230
230
  */
231
- function BuildSagemakerEndpoint(scope, props) {
231
+ function BuildSagemakerEndpoint(scope, id, props) {
232
232
  /** Conditional Sagemaker endpoint creation */
233
233
  if (!props.existingSagemakerEndpointObj) {
234
234
  if (props.modelProps) {
235
- const deploySagemakerEndpointResponse = deploySagemakerEndpoint(scope, props);
235
+ const deploySagemakerEndpointResponse = deploySagemakerEndpoint(scope, id, props);
236
236
  return { ...deploySagemakerEndpointResponse };
237
237
  }
238
238
  else {
@@ -248,7 +248,7 @@ exports.BuildSagemakerEndpoint = BuildSagemakerEndpoint;
248
248
  /**
249
249
  * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
250
250
  */
251
- function deploySagemakerEndpoint(scope, props) {
251
+ function deploySagemakerEndpoint(scope, id, props) {
252
252
  let model;
253
253
  let endpointConfig;
254
254
  let endpoint;
@@ -270,7 +270,7 @@ function deploySagemakerEndpoint(scope, props) {
270
270
  // Create Sagemaker Model
271
271
  model = createSagemakerModel(scope, props.modelProps, sagemakerRole, props.vpc);
272
272
  // Create Sagemaker EndpointConfig
273
- endpointConfig = createSagemakerEndpointConfig(scope, model.attrModelName, props.endpointConfigProps);
273
+ endpointConfig = createSagemakerEndpointConfig(scope, `${id}`, model.attrModelName, props.endpointConfigProps);
274
274
  // Add dependency on model
275
275
  endpointConfig.addDependency(model);
276
276
  // Create Sagemaker Endpoint
@@ -342,7 +342,7 @@ exports.createSagemakerModel = createSagemakerModel;
342
342
  /**
343
343
  * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
344
344
  */
345
- function createSagemakerEndpointConfig(scope, modelName, endpointConfigProps) {
345
+ function createSagemakerEndpointConfig(scope, id, modelName, endpointConfigProps) {
346
346
  let finalEndpointConfigProps;
347
347
  let kmsKeyId;
348
348
  let endpointConfig;
@@ -351,7 +351,7 @@ function createSagemakerEndpointConfig(scope, modelName, endpointConfigProps) {
351
351
  kmsKeyId = endpointConfigProps.kmsKeyId;
352
352
  }
353
353
  else {
354
- kmsKeyId = kms_helper_1.buildEncryptionKey(scope).keyId;
354
+ kmsKeyId = kms_helper_1.buildEncryptionKey(scope, id).keyId;
355
355
  }
356
356
  // Overwrite default EndpointConfig properties
357
357
  finalEndpointConfigProps = utils_1.consolidateProps(sagemaker_defaults_1.DefaultSagemakerEndpointConfigProps(modelName, kmsKeyId), endpointConfigProps);
@@ -385,4 +385,4 @@ function CheckSagemakerProps(propsObject) {
385
385
  }
386
386
  }
387
387
  exports.CheckSagemakerProps = CheckSagemakerProps;
388
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FnZW1ha2VyLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNhZ2VtYWtlci1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUFFSDs7O0dBR0c7QUFFSCx1REFBdUQ7QUFDdkQsMkNBQTJDO0FBQzNDLDZDQUFrRDtBQUNsRCw2REFLOEI7QUFDOUIsbUNBQW1DO0FBQ25DLG1DQUFnRTtBQUNoRSw2Q0FBd0M7QUFDeEMsMkNBQTJDO0FBQzNDLDZDQUFrQztBQUNsQyxpREFBOEQ7QUFDOUQsbUVBQTZEO0FBZ0M3RCxTQUFTLGNBQWMsQ0FBQyxJQUFjLEVBQUUsS0FBbUM7SUFDekUsNEVBQTRFO0lBQzVFLElBQUksQ0FBQyxXQUFXLENBQ2QsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1FBQ3RCLFNBQVMsRUFBRSxDQUFDLE9BQU8saUJBQUcsQ0FBQyxTQUFTLGNBQWMsaUJBQUcsQ0FBQyxNQUFNLElBQUksaUJBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQztRQUMvRSxPQUFPLEVBQUU7WUFDUCw2QkFBNkI7WUFDN0IsK0JBQStCO1lBQy9CLHVCQUF1QjtZQUN2Qix5QkFBeUI7WUFDekIsdUJBQXVCO1lBQ3ZCLDBCQUEwQjtZQUMxQixnQ0FBZ0M7WUFDaEMsNEJBQTRCO1lBQzVCLGtDQUFrQztZQUNsQywwQkFBMEI7WUFDMUIsZ0NBQWdDO1lBQ2hDLDBCQUEwQjtTQUMzQjtLQUNGLENBQUMsQ0FDSCxDQUFDO0lBRUYsdUNBQXVDO0lBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQ2QsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1FBQ3RCLFNBQVMsRUFBRSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLDZCQUE2QixDQUFDO1FBQy9HLE9BQU8sRUFBRTtZQUNQLHFCQUFxQjtZ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QUFFLHdCQUF3QixDQUFDLENBQUM7SUFFN0csT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQztBQXZCRCxzRUF1QkM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHVCQUF1QixDQUNyQyxLQUFnQixFQUNoQixrQkFBMEIsRUFDMUIsYUFBMEM7SUFFMUMsSUFBSSxrQkFBOEMsQ0FBQztJQUNuRCxJQUFJLFFBQStCLENBQUM7SUFFcEMsd0NBQXdDO0lBQ3hDLGtCQUFrQixHQUFHLHdCQUFnQixDQUFDLGtEQUE2QixDQUFDLGtCQUFrQixDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFeEcsa0NBQWtDO0lBQ2xDLFFBQVEsR0FBRyxJQUFJLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFFckYsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQWZELDBEQWVDO0FBT0QsU0FBZ0IsbUJBQW1CLENBQUMsV0FBaUM7SUFDbkUsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztJQUV2QixJQUFJLFdBQVcsQ0FBQyw0QkFBNEIsSUFBSSxXQUFXLENBQUMsYUFBYSxFQUFFO1FBQ3pFLGFBQWEsSUFBSSx1RkFBdUYsQ0FBQztRQUN6RyxVQUFVLEdBQUcsSUFBSSxDQUFDO0tBQ25CO0lBRUQsSUFBSSxVQUFVLEVBQUU7UUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQ2hDO0FBQ0gsQ0FBQztBQVpELGtEQVlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLypcbiAqICBUaGUgZnVuY3Rpb25zIGZvdW5kIGhlcmUgaW4gdGhlIGNvcmUgbGlicmFyeSBhcmUgZm9yIGludGVybmFsIHVzZSBhbmQgY2FuIGJlIGNoYW5nZWRcbiAqICBvciByZW1vdmVkIG91dHNpZGUgb2YgYSBtYWpvciByZWxlYXNlLiBXZSByZWNvbW1lbmQgYWdhaW5zdCBjYWxsaW5nIHRoZW0gZGlyZWN0bHkgZnJvbSBjbGllbnQgY29kZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBzYWdlbWFrZXIgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNhZ2VtYWtlcic7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgeyBidWlsZEVuY3J5cHRpb25LZXkgfSBmcm9tICcuL2ttcy1oZWxwZXInO1xuaW1wb3J0IHtcbiAgRGVmYXVsdFNhZ2VtYWtlck5vdGVib29rUHJvcHMsXG4gIERlZmF1bHRTYWdlbWFrZXJNb2RlbFByb3BzLFxuICBEZWZhdWx0U2FnZW1ha2VyRW5kcG9pbnRDb25maWdQcm9wcyxcbiAgRGVmYXVsdFNhZ2VtYWtlckVuZHBvaW50UHJvcHMsXG59IGZyb20gJy4vc2FnZW1ha2VyLWRlZmF1bHRzJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBhZGRDZm5TdXBwcmVzc1J1bGVzLCBjb25zb2xpZGF0ZVByb3BzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBidWlsZFZwYyB9IGZyb20gJy4vdnBjLWhlbHBlcic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBBd3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBEZWZhdWx0UHVibGljUHJpdmF0ZVZwY1Byb3BzIH0gZnJvbSAnLi92cGMtZGVmYXVsdHMnO1xuaW1wb3J0IHsgYnVpbGRTZWN1cml0eUdyb3VwIH0gZnJvbSAnLi9zZWN1cml0eS1ncm91cC1oZWxwZXInO1xuLy8gTm90ZTogVG8gZW5zdXJlIENES3YyIGNvbXBhdGliaWxpdHksIGtlZXAgdGhlIGltcG9ydCBzdGF0ZW1lbnQgZm9yIENvbnN0cnVjdCBzZXBhcmF0ZVxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRTYWdlbWFrZXJOb3RlYm9va1Byb3BzIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHVzZXIgcHJvdmlkZWQgcHJvcHMgZm9yIENmbk5vdGVib29rSW5zdGFuY2VQcm9wc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcHMgYXJlIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IHNhZ2VtYWtlck5vdGVib29rUHJvcHM/OiBzYWdlbWFrZXIuQ2ZuTm90ZWJvb2tJbnN0YW5jZVByb3BzIHwgYW55O1xuICAvKipcbiAgICogT3B0aW9uYWwgdXNlciBwcm92aWRlZCBwcm9wcyB0byBkZXBsb3kgaW5zaWRlIHZwY1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGRlcGxveUluc2lkZVZwYz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCwgRXhpc3RpbmcgaW5zdGFuY2Ugb2Ygbm90ZWJvb2sgb2JqZWN0LlxuICAgKiBJZiB0aGlzIGlzIHNldCB0aGVuIHRoZSBzYWdlbWFrZXJOb3RlYm9va1Byb3BzIGlzIGlnbm9yZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBleGlzdGluZ05vdGVib29rT2JqPzogc2FnZW1ha2VyLkNmbk5vdGVib29rSW5zdGFuY2U7XG4gIC8qKlxuICAgKiBJQU0gUm9sZSBBcm4gZm9yIFNhZ2VtYWtlciBOb3RlQm9va0luc3RhbmNlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZTogaWFtLlJvbGU7XG59XG5cbmZ1bmN0aW9uIGFkZFBlcm1pc3Npb25zKHJvbGU6IGlhbS5Sb2xlLCBwcm9wcz86IEJ1aWxkU2FnZW1ha2VyRW5kcG9pbnRQcm9wcykge1xuICAvLyBHcmFudCBwZXJtaXNzaW9ucyB0byBOb3RlQm9va0luc3RhbmNlIGZvciBjcmVhdGluZyBhbmQgdHJhaW5pbmcgdGhlIG1vZGVsXG4gIHJvbGUuYWRkVG9Qb2xpY3koXG4gICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgcmVzb3VyY2VzOiBbYGFybjoke0F3cy5QQVJUSVRJT059OnNhZ2VtYWtlcjoke0F3cy5SRUdJT059OiR7QXdzLkFDQ09VTlRfSUR9OipgXSxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ3NhZ2VtYWtlcjpDcmVhdGVUcmFpbmluZ0pvYicsXG4gICAgICAgICdzYWdlbWFrZXI6RGVzY3JpYmVUcmFpbmluZ0pvYicsXG4gICAgICAgICdzYWdlbWFrZXI6Q3JlYXRlTW9kZWwnLFxuICAgICAgICAnc2FnZW1ha2VyOkRlc2NyaWJlTW9kZWwnLFxuICAgICAgICAnc2FnZW1ha2VyOkRlbGV0ZU1vZGVsJyxcbiAgICAgICAgJ3NhZ2VtYWtlcjpDcmVhdGVFbmRwb2ludCcsXG4gICAgICAgICdzYWdlbWFrZXI6Q3JlYXRlRW5kcG9pbnRDb25maWcnLFxuICAgICAgICAnc2FnZW1ha2VyOkRlc2NyaWJlRW5kcG9pbnQnLFxuICAgICAgICAnc2FnZW1ha2VyOkRlc2NyaWJlRW5kcG9pbnRDb25maWcnLFxuICAgICAgICAnc2FnZW1ha2VyOkRlbGV0ZUVuZHBvaW50JyxcbiAgICAgICAgJ3NhZ2VtYWtlcjpEZWxldGVFbmRwb2ludENvbmZpZycsXG4gICAgICAgICdzYWdlbWFrZXI6SW52b2tlRW5kcG9pbnQnLFxuICAgICAgXSxcbiAgICB9KVxuICApO1xuXG4gIC8vIEdyYW50IENsb3VkV2F0Y2ggTG9nZ2luZyBwZXJtaXNzaW9uc1xuICByb2xlLmFkZFRvUG9saWN5KFxuICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHJlc291cmNlczogW2Bhcm46JHtjZGsuQXdzLlBBUlRJVElPTn06bG9nczoke2Nkay5Bd3MuUkVHSU9OfToke2Nkay5Bd3MuQUNDT1VOVF9JRH06bG9nLWdyb3VwOi9hd3Mvc2FnZW1ha2VyLypgXSxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ2xvZ3M6Q3JlYXRlTG9nR3JvdXAnLFxuICAgICAgICAnbG9nczpDcmVhdGVMb2dTdHJlYW0nLFxuICAgICAgICAnbG9nczpEZXNjcmliZUxvZ1N0cmVhbXMnLFxuICAgICAgICAnbG9nczpHZXRMb2dFdmVudHMnLFxuICAgICAgICAnbG9nczpQdXRMb2dFdmVudHMnLFxuICAgICAgXSxcbiAgICB9KVxuICApO1xuXG4gIC8vIFRvIHBsYWNlIHRoZSBTYWdlbWFrZXIgZW5kcG9pbnQgaW4gYSBWUENcbiAgaWYgKHByb3BzICYmIHByb3BzLnZwYykge1xuICAgIHJvbGUuYWRkVG9Qb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnZWMyOkNyZWF0ZU5ldHdvcmtJbnRlcmZhY2UnLFxuICAgICAgICAgICdlYzI6Q3JlYXRlTmV0d29ya0ludGVyZmFjZVBlcm1pc3Npb24nLFxuICAgICAgICAgICdlYzI6RGVsZXRlTmV0d29ya0ludGVyZmFjZScsXG4gICAgICAgICAgJ2VjMjpEZWxldGVOZXR3b3JrSW50ZXJmYWNlUGVybWlzc2lvbicsXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZU5ldHdvcmtJbnRlcmZhY2VzJyxcbiAgICAgICAgICAnZWMyOkFzc2lnblByaXZhdGVJcEFkZHJlc3NlcycsXG4gICAgICAgICAgJ2VjMjpVbmFzc2lnblByaXZhdGVJcEFkZHJlc3NlcycsXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZVZwY3MnLFxuICAgICAgICAgICdlYzI6RGVzY3JpYmVEaGNwT3B0aW9ucycsXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZVN1Ym5ldHMnLFxuICAgICAgICAgICdlYzI6RGVzY3JpYmVTZWN1cml0eUdyb3VwcycsXG4gICAgICAgIF0sXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvLyBUbyBjcmVhdGUgYSBTYWdlbWFrZXIgbW9kZWwgdXNpbmcgQnJpbmctWW91ci1Pd24tTW9kZWwgKEJZT00pIGFsZ29yaXRobSBpbWFnZVxuICAvLyBUaGUgaW1hZ2UgVVJMIGlzIHNwZWNpZmllZCBpbiB0aGUgbW9kZWxQcm9wc1xuICByb2xlLmFkZFRvUG9saWN5KFxuICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHJlc291cmNlczogW2Bhcm46JHtjZGsuQXdzLlBBUlRJVElPTn06ZWNyOiR7Y2RrLkF3cy5SRUdJT059OiR7Y2RrLkF3cy5BQ0NPVU5UX0lEfTpyZXBvc2l0b3J5LypgXSxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ2VjcjpCYXRjaENoZWNrTGF5ZXJBdmFpbGFiaWxpdHknLFxuICAgICAgICAnZWNyOkdldERvd25sb2FkVXJsRm9yTGF5ZXInLFxuICAgICAgICAnZWNyOkRlc2NyaWJlUmVwb3NpdG9yaWVzJyxcbiAgICAgICAgJ2VjcjpEZXNjcmliZUltYWdlcycsXG4gICAgICAgICdlY3I6QmF0Y2hHZXRJbWFnZScsXG4gICAgICBdLFxuICAgIH0pXG4gICk7XG5cbiAgLy8gQWRkIEdldEF1dGhvcml6YXRpb25Ub2tlbiAoaXQgY2FuIG5vdCBiZSBib3VuZCB0byByZXNvdXJjZXMgb3RoZXIgdGhhbiAqKVxuICByb2xlLmFkZFRvUG9saWN5KFxuICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICBhY3Rpb25zOiBbJ2VjcjpHZXRBdXRob3JpemF0aW9uVG9rZW4nXSxcbiAgICB9KVxuICApO1xuXG4gIC8vIGFkZCBwZXJtaXNzaW9uIHRvIHVzZSBFbGFzdGljIEluZmVyZW5jZSBhY2NlbGVyYXRvclxuICBpZiAocHJvcHMgJiYgcHJvcHMuZW5kcG9pbnRDb25maWdQcm9wcykge1xuICAgIC8vIEdldCB0aGUgYWNjZWxlcmF0b3JUeXBlLCBpZiBhbnlcbiAgICBjb25zdCBhY2NlbGVyYXRvclR5cGUgPSAocHJvcHMuZW5kcG9pbnRDb25maWdQcm9wc1xuICAgICAgPy5wcm9kdWN0aW9uVmFyaWFudHMgYXMgc2FnZW1ha2VyLkNmbkVuZHBvaW50Q29uZmlnLlByb2R1Y3Rpb25WYXJpYW50UHJvcGVydHlbXSlbMF0uYWNjZWxlcmF0b3JUeXBlO1xuICAgIGlmIChhY2NlbGVyYXRvclR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcm9sZS5hZGRUb1BvbGljeShcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgICAgYWN0aW9uczogWydlbGFzdGljLWluZmVyZW5jZTpDb25uZWN0J10sXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIGFkZCBrbXMgcGVybWlzc2lvbnNcbiAgcm9sZS5hZGRUb1BvbGljeShcbiAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAvLyB0aGUga21zS2V5SWQgaW4gdGhlIGVuZHBvaW50Q29uZmlnUHJvcHMgY2FuIGJlIGFueSBvZiB0aGUgZm9sbG93aW5nIGZvcm1hdHM6XG4gICAgICAvLyBLZXkgSUQ6IDEyMzRhYmNkLTEyYWItMzRjZC01NmVmLTEyMzQ1Njc4OTBhYlxuICAgICAgLy8gS2V5IEFSTjogYXJuOmF3czprbXM6PHJlZ2lvbj46PGFjY291bnRJRD46a2V5LzEyMzRhYmNkLTEyYWItMzRjZC01NmVmLTEyMzQ1Njc4OTBhYlxuICAgICAgLy8gQWxpYXMgbmFtZTogYWxpYXMvRXhhbXBsZUFsaWFzXG4gICAgICAvLyBBbGlhcyBuYW1lIEFSTjogYXJuOmF3czprbXM6PHJlZ2lvbj46PGFjY291bnRJRD46YWxpYXMvRXhhbXBsZUFsaWFzXG4gICAgICAvLyB0aGUga2V5IGlzIHVzZWQgdG8gZW5jcnlwdC9kZWNyeXB0IGRhdGEgY2FwdHVyZWQgYnkgdGhlIFNhZ2VtYWtlciBlbmRwb2ludCBhbmQgc3RvcmVkIGluIFMzIGJ1Y2tldFxuICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgIGBhcm46JHtjZGsuQXdzLlBBUlRJVElPTn06a21zOiR7Y2RrLkF3cy5SRUdJT059OiR7Y2RrLkF3cy5BQ0NPVU5UX0lEfTprZXkvKmAsXG4gICAgICAgIGBhcm46JHtjZGsuQXdzLlBBUlRJVElPTn06a21zOiR7Y2RrLkF3cy5SRUdJT059OiR7Y2RrLkF3cy5BQ0NPVU5UX0lEfTphbGlhcy8qYCxcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiBbJ2ttczpFbmNyeXB0JywgJ2ttczpEZWNyeXB0JywgJ2ttczpSZUVuY3J5cHQqJywgJ2ttczpHZW5lcmF0ZURhdGFLZXkqJywgJ2ttczpEZXNjcmliZUtleSddLFxuICAgIH0pXG4gICk7XG5cbiAgLy8gQWRkIFMzIHBlcm1pc3Npb25zIHRvIGdldCBNb2RlbCBhcnRpZmFjdCwgcHV0IGRhdGEgY2FwdHVyZSBmaWxlcywgZXRjLlxuICByb2xlLmFkZFRvUG9saWN5KFxuICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFsnczM6R2V0T2JqZWN0JywgJ3MzOlB1dE9iamVjdCcsICdzMzpEZWxldGVPYmplY3QnLCAnczM6TGlzdEJ1Y2tldCddLFxuICAgICAgcmVzb3VyY2VzOiBbJ2Fybjphd3M6czM6OjoqJ10sXG4gICAgfSlcbiAgKTtcblxuICAvLyBHcmFudCBHZXRSb2xlIHBlcm1pc3Npb25zIHRvIHRoZSBTYWdlbWFrZXIgc2VydmljZVxuICByb2xlLmFkZFRvUG9saWN5KFxuICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHJlc291cmNlczogW3JvbGUucm9sZUFybl0sXG4gICAgICBhY3Rpb25zOiBbJ2lhbTpHZXRSb2xlJ10sXG4gICAgfSlcbiAgKTtcblxuICAvLyBHcmFudCBQYXNzUm9sZSBwZXJtaXNzaW9ucyB0byB0aGUgU2FnZW1ha2VyIHNlcnZpY2VcbiAgcm9sZS5hZGRUb1BvbGljeShcbiAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICByZXNvdXJjZXM6IFtyb2xlLnJvbGVBcm5dLFxuICAgICAgYWN0aW9uczogWydpYW06UGFzc1JvbGUnXSxcbiAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgU3RyaW5nTGlrZTogeyAnaWFtOlBhc3NlZFRvU2VydmljZSc6ICdzYWdlbWFrZXIuYW1hem9uYXdzLmNvbScgfSxcbiAgICAgIH0sXG4gICAgfSlcbiAgKTtcblxuICAvLyBBZGQgQ0ZOIE5BRyB1cHByZXNzIHRvIGFsbG93IGZvciBcIlJlc291cmNlXCI6IFwiKlwiIGZvciBFTkkgYWNjZXNzIGluIFZQQyxcbiAgLy8gRUNSIGF1dGhvcml6YXRpb24gdG9rZW4gZm9yIGN1c3RvbSBtb2RlbCBpbWFnZXMsIGFuZCBlbGFzdGljIGluZmVyZW5jZVxuICAvLyBBZGQgQ0ZOIE5BRyBmb3IgQ29tcGxleCBSb2xlIGJlY2F1c2UgU2FnbWFrZXIgbmVlZHMgcGVybWlzc2lvbnMgdG8gYWNjZXNzIHNldmVyYWwgc2VydmljZXNcbiAgY29uc3Qgcm9sZURlZmF1bHRQb2xpY3kgPSByb2xlLm5vZGUudHJ5RmluZENoaWxkKCdEZWZhdWx0UG9saWN5Jyk/Lm5vZGUuZmluZENoaWxkKCdSZXNvdXJjZScpIGFzIGlhbS5DZm5Qb2xpY3k7XG4gIGFkZENmblN1cHByZXNzUnVsZXMocm9sZURlZmF1bHRQb2xpY3ksIFtcbiAgICB7XG4gICAgICBpZDogJ1cxMicsXG4gICAgICByZWFzb246IGBTYWdlbWFrZXIgbmVlZHMgdGhlIGZvbGxvd2luZyBtaW5pbXVtIHJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGFjY2VzcyBFTklzIGluIGEgVlBDLCBFQ1IgZm9yIGN1c3RvbSBtb2RlbCBpbWFnZXMsIGFuZCBlbGFzdGljIGluZmVyZW5jZS5gLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICdXNzYnLFxuICAgICAgcmVhc29uOiAnQ29tcGxleCByb2xlIGJlY3Vhc2UgU2FnZW1ha2VyIG5lZWRzIHBlcm1pc3Npb25zIHRvIGFjY2VzcyBzZXZlcmFsIHNlcnZpY2VzJyxcbiAgICB9XG4gIF0pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU2FnZW1ha2VyTm90ZWJvb2tSZXNwb25zZSB7XG4gIHJlYWRvbmx5IG5vdGVib29rOiBzYWdlbWFrZXIuQ2ZuTm90ZWJvb2tJbnN0YW5jZSxcbiAgcmVhZG9ubHkgdnBjPzogZWMyLklWcGMsXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXA/OiBlYzIuU2VjdXJpdHlHcm91cFxufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNhZ2VtYWtlck5vdGVib29rKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBwcm9wczogQnVpbGRTYWdlbWFrZXJOb3RlYm9va1Byb3BzXG4pOiBCdWlsZFNhZ2VtYWtlck5vdGVib29rUmVzcG9uc2Uge1xuICAvLyBTZXR1cCB0aGUgbm90ZWJvb2sgcHJvcGVydGllc1xuICBsZXQgc2FnZW1ha2VyTm90ZWJvb2tQcm9wcztcbiAgbGV0IHZwY0luc3RhbmNlO1xuICBsZXQgc2VjdXJpdHlHcm91cDtcbiAgbGV0IGttc0tleUlkOiBzdHJpbmc7XG4gIGxldCBzdWJuZXRJZDogc3RyaW5nO1xuXG4gIC8vIENvbmRpdGlvbmFsIFNhZ2VtYWtlciBOb3RlYm9vayBjcmVhdGlvblxuICBpZiAocHJvcHMuZXhpc3RpbmdOb3RlYm9va09iaikge1xuICAgIHJldHVybiB7IG5vdGVib29rOiBwcm9wcy5leGlzdGluZ05vdGVib29rT2JqIH07XG4gIH1cblxuICBpZiAoQ2hlY2tOb3RlYm9va1ZwY1Byb3BzKHByb3BzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBkZWZpbmUgYm90aCBzYWdlbWFrZXJOb3RlYm9va1Byb3BzLnN1Ym5ldElkIGFuZCBzYWdlbWFrZXJOb3RlYm9va1Byb3BzLnNlY3VyaXR5R3JvdXBJZHMnKTtcbiAgfVxuXG4gIGFkZFBlcm1pc3Npb25zKHByb3BzLnJvbGUpO1xuXG4gIGlmIChwcm9wcy5zYWdlbWFrZXJOb3RlYm9va1Byb3BzPy5rbXNLZXlJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAga21zS2V5SWQgPSBidWlsZEVuY3J5cHRpb25LZXkoc2NvcGUpLmtleUlkO1xuICB9IGVsc2Uge1xuICAgIGttc0tleUlkID0gcHJvcHMuc2FnZW1ha2VyTm90ZWJvb2tQcm9wcy5rbXNLZXlJZDtcbiAgfVxuXG4gIGlmIChwcm9wcy5kZXBsb3lJbnNpZGVWcGMgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5kZXBsb3lJbnNpZGVWcGMpIHtcbiAgICBpZiAoXG4gICAgICBwcm9wcy5zYWdlbWFrZXJOb3RlYm9va1Byb3BzPy5zdWJuZXRJZCA9PT0gdW5kZWZpbmVkICYmXG4gICAgICBwcm9wcy5zYWdlbWFrZXJOb3RlYm9va1Byb3BzPy5zZWN1cml0eUdyb3VwSWRzID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHZwY0luc3RhbmNlID0gYnVpbGRWcGMoc2NvcGUsIHtcbiAgICAgICAgZGVmYXVsdFZwY1Byb3BzOiBEZWZhdWx0UHVibGljUHJpdmF0ZVZwY1Byb3BzKCksXG4gICAgICB9KTtcbiAgICAgIHNlY3VyaXR5R3JvdXAgPSBidWlsZFNlY3VyaXR5R3JvdXAoXG4gICAgICAgIHNjb3BlLFxuICAgICAgICAnU2VjdXJpdHlHcm91cCcsXG4gICAgICAgIHtcbiAgICAgICAgICB2cGM6IHZwY0luc3RhbmNlLFxuICAgICAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBbXSxcbiAgICAgICAgW3sgcGVlcjogZWMyLlBlZXIuYW55SXB2NCgpLCBjb25uZWN0aW9uOiBlYzIuUG9ydC50Y3AoNDQzKSB9XVxuICAgICAgKTtcblxuICAgICAgc3VibmV0SWQgPSB2cGNJbnN0YW5jZS5wcml2YXRlU3VibmV0c1swXS5zdWJuZXRJZDtcblxuICAgICAgc2FnZW1ha2VyTm90ZWJvb2tQcm9wcyA9IERlZmF1bHRTYWdlbWFrZXJOb3RlYm9va1Byb3BzKHByb3BzLnJvbGUucm9sZUFybiwga21zS2V5SWQsIHN1Ym5ldElkLCBbXG4gICAgICAgIHNlY3VyaXR5R3JvdXAuc2VjdXJpdHlHcm91cElkLFxuICAgICAgXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNhZ2VtYWtlck5vdGVib29rUHJvcHMgPSBEZWZhdWx0U2FnZW1ha2VyTm90ZWJvb2tQcm9wcyhcbiAgICAgICAgcHJvcHMucm9sZS5yb2xlQXJuLFxuICAgICAgICBrbXNLZXlJZCxcbiAgICAgICAgcHJvcHMuc2FnZW1ha2VyTm90ZWJvb2tQcm9wcz8uc3VibmV0SWQsXG4gICAgICAgIHByb3BzLnNhZ2VtYWtlck5vdGVib29rUHJvcHM/LnNlY3VyaXR5R3JvdXBJZHNcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHNhZ2VtYWtlck5vdGVib29rUHJvcHMgPSBEZWZhdWx0U2FnZW1ha2VyTm90ZWJvb2tQcm9wcyhwcm9wcy5yb2xlLnJvbGVBcm4sIGttc0tleUlkKTtcbiAgfVxuXG4gIHNhZ2VtYWtlck5vdGVib29rUHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKHNhZ2VtYWtlck5vdGVib29rUHJvcHMsIHByb3BzLnNhZ2VtYWtlck5vdGVib29rUHJvcHMpO1xuXG4gIC8vIENyZWF0ZSB0aGUgbm90ZWJvb2tcbiAgLy8gTk9TT05BUjogKHR5cGVzY3JpcHQ6UzYzMTkpXG4gIC8vIGtleUlEIGlzIGNyZWF0ZWQgYWJvdmUgaW4gdGhlIGlmIChwcm9wcy5zYWdlbWFrZXJOb3RlYm9va1Byb3BzPy5rbXNLZXlJZCA9PT0gdW5kZWZpbmVkKVxuICAvLyBibG9jay4gSXQgaXMgdGhlbiBwYXNzZWQgdG8gRGVmYXVsdFNhZ2VtYWtlck5vdGVib29rUHJvcHMoKVxuICAvLyBUaGlzIGJlaGF2aW9yIGlzIHZhbGlkYXRlZCBpbiB1bml0IHRlc3RcbiAgY29uc3Qgc2FnZW1ha2VySW5zdGFuY2U6IHNhZ2VtYWtlci5DZm5Ob3RlYm9va0luc3RhbmNlID0gbmV3IHNhZ2VtYWtlci5DZm5Ob3RlYm9va0luc3RhbmNlKFxuICAgIHNjb3BlLFxuICAgICdTYWdlbWFrZXJOb3RlYm9vaycsXG4gICAgc2FnZW1ha2VyTm90ZWJvb2tQcm9wcyAvLyBOT1NPTkFSXG4gICk7XG4gIGlmICh2cGNJbnN0YW5jZSkge1xuICAgIHJldHVybiB7IG5vdGVib29rOiBzYWdlbWFrZXJJbnN0YW5jZSwgdnBjOiB2cGNJbnN0YW5jZSwgc2VjdXJpdHlHcm91cCB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7IG5vdGVib29rOiBzYWdlbWFrZXJJbnN0YW5jZSB9O1xuICB9XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZnVuY3Rpb24gQ2hlY2tOb3RlYm9va1ZwY1Byb3BzKHByb3BzOiBCdWlsZFNhZ2VtYWtlck5vdGVib29rUHJvcHMpOiBib29sZWFuIHtcbiAgaWYgKChwcm9wcy5zYWdlbWFrZXJOb3RlYm9va1Byb3BzPy5zdWJuZXRJZCAmJiBwcm9wcy5zYWdlbWFrZXJOb3RlYm9va1Byb3BzPy5zZWN1cml0eUdyb3VwSWRzID09PSB1bmRlZmluZWQpIHx8XG4gICAgKHByb3BzLnNhZ2VtYWtlck5vdGVib29rUHJvcHM/LnN1Ym5ldElkID09PSB1bmRlZmluZWQgJiYgcHJvcHMuc2FnZW1ha2VyTm90ZWJvb2tQcm9wcz8uc2VjdXJpdHlHcm91cElkcylcbiAgKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU2FnZW1ha2VyRW5kcG9pbnRQcm9wcyB7XG4gIC8qKlxuICAgKiBFeGlzdGluZyBTYWdlbWFrZXIgRW5kcG9pbnQgb2JqZWN0LCBpZiB0aGlzIGlzIHNldCB0aGVuIHRoZSBtb2RlbFByb3BzLCBlbmRwb2ludENvbmZpZ1Byb3BzLCBhbmQgZW5kcG9pbnRQcm9wcyBhcmUgaWdub3JlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGV4aXN0aW5nU2FnZW1ha2VyRW5kcG9pbnRPYmo/OiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnQ7XG4gIC8qKlxuICAgKiBVc2VyIHByb3ZpZGVkIHByb3BzIHRvIGNyZWF0ZSBTYWdlbWFrZXIgTW9kZWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBtb2RlbFByb3BzPzogc2FnZW1ha2VyLkNmbk1vZGVsUHJvcHMgfCBhbnk7XG4gIC8qKlxuICAgKiBVc2VyIHByb3ZpZGVkIHByb3BzIHRvIGNyZWF0ZSBTYWdlbWFrZXIgRW5kcG9pbnQgQ29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50Q29uZmlnUHJvcHM/OiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRDb25maWdQcm9wcztcbiAgLyoqXG4gICAqIFVzZXIgcHJvdmlkZWQgcHJvcHMgdG8gY3JlYXRlIFNhZ2VtYWtlciBFbmRwb2ludFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50UHJvcHM/OiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRQcm9wcztcbiAgLyoqXG4gICAqIEEgVlBDIHdoZXJlIHRoZSBTYWdlbWFrZXIgRW5kcG9pbnQgd2lsbCBiZSBwbGFjZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSB2cGM/OiBlYzIuSVZwYztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFNhZ2VtYWtlckVuZHBvaW50UmVzcG9uc2Uge1xuICByZWFkb25seSBlbmRwb2ludDogc2FnZW1ha2VyLkNmbkVuZHBvaW50LFxuICByZWFkb25seSBlbmRwb2ludENvbmZpZz86IHNhZ2VtYWtlci5DZm5FbmRwb2ludENvbmZpZyxcbiAgcmVhZG9ubHkgbW9kZWw/OiBzYWdlbWFrZXIuQ2ZuTW9kZWxcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQnVpbGRTYWdlbWFrZXJFbmRwb2ludChcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgcHJvcHM6IEJ1aWxkU2FnZW1ha2VyRW5kcG9pbnRQcm9wc1xuKTogQnVpbGRTYWdlbWFrZXJFbmRwb2ludFJlc3BvbnNlIHtcbiAgLyoqIENvbmRpdGlvbmFsIFNhZ2VtYWtlciBlbmRwb2ludCBjcmVhdGlvbiAqL1xuICBpZiAoIXByb3BzLmV4aXN0aW5nU2FnZW1ha2VyRW5kcG9pbnRPYmopIHtcbiAgICBpZiAocHJvcHMubW9kZWxQcm9wcykge1xuICAgICAgY29uc3QgZGVwbG95U2FnZW1ha2VyRW5kcG9pbnRSZXNwb25zZSA9IGRlcGxveVNhZ2VtYWtlckVuZHBvaW50KHNjb3BlLCBwcm9wcyk7XG4gICAgICByZXR1cm4geyAuLi5kZXBsb3lTYWdlbWFrZXJFbmRwb2ludFJlc3BvbnNlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IEVycm9yKCdFaXRoZXIgZXhpc3RpbmdTYWdlbWFrZXJFbmRwb2ludE9iaiBvciBhdCBsZWFzdCBtb2RlbFByb3BzIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8qKiBPdGhlcndpc2UsIHJldHVybiBbZW5kcG9pbnRdICovXG4gICAgcmV0dXJuIHsgZW5kcG9pbnQ6IHByb3BzLmV4aXN0aW5nU2FnZW1ha2VyRW5kcG9pbnRPYmogfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlcGxveVNhZ2VtYWtlckVuZHBvaW50UmVzcG9uc2Uge1xuICByZWFkb25seSBlbmRwb2ludDogc2FnZW1ha2VyLkNmbkVuZHBvaW50LFxuICByZWFkb25seSBlbmRwb2ludENvbmZpZz86IHNhZ2VtYWtlci5DZm5FbmRwb2ludENvbmZpZyxcbiAgcmVhZG9ubHkgbW9kZWw/OiBzYWdlbWFrZXIuQ2ZuTW9kZWxcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVwbG95U2FnZW1ha2VyRW5kcG9pbnQoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIHByb3BzOiBCdWlsZFNhZ2VtYWtlckVuZHBvaW50UHJvcHNcbik6IERlcGxveVNhZ2VtYWtlckVuZHBvaW50UmVzcG9uc2Uge1xuICBsZXQgbW9kZWw6IHNhZ2VtYWtlci5DZm5Nb2RlbDtcbiAgbGV0IGVuZHBvaW50Q29uZmlnOiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRDb25maWc7XG4gIGxldCBlbmRwb2ludDogc2FnZW1ha2VyLkNmbkVuZHBvaW50O1xuICBsZXQgc2FnZW1ha2VyUm9sZTogaWFtLlJvbGU7XG5cbiAgLy8gQ3JlYXRlIFNhZ2VtYWtlcidzIG1vZGVsLCBlbmRwb2ludENvbmZpZywgYW5kIGVuZHBvaW50XG4gIGlmIChwcm9wcy5tb2RlbFByb3BzKSB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIGNsaWVudCBoYXMgcHJvdmlkZWQgZXhlY3V0aW9uUm9sZUFyblxuICAgIGlmIChwcm9wcy5tb2RlbFByb3BzLmV4ZWN1dGlvblJvbGVBcm4pIHtcbiAgICAgIHNhZ2VtYWtlclJvbGUgPSBpYW0uUm9sZS5mcm9tUm9sZUFybihcbiAgICAgICAgc2NvcGUsXG4gICAgICAgICdTYWdlbWFrZXJSb2xlQ3VzdG9tZXInLFxuICAgICAgICBwcm9wcy5tb2RlbFByb3BzLmV4ZWN1dGlvblJvbGVBcm5cbiAgICAgICkgYXMgaWFtLlJvbGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENyZWF0ZSB0aGUgU2FnZW1ha2VyIFJvbGVcbiAgICAgIHNhZ2VtYWtlclJvbGUgPSBuZXcgaWFtLlJvbGUoc2NvcGUsICdTYWdlbWFrZXJSb2xlJywge1xuICAgICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnc2FnZW1ha2VyLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgIH0pO1xuICAgICAgLy8gQWRkIHJlcXVpcmVkIHBlcm1pc3Npb25zXG4gICAgICBhZGRQZXJtaXNzaW9ucyhzYWdlbWFrZXJSb2xlLCBwcm9wcyk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIFNhZ2VtYWtlciBNb2RlbFxuICAgIG1vZGVsID0gY3JlYXRlU2FnZW1ha2VyTW9kZWwoc2NvcGUsIHByb3BzLm1vZGVsUHJvcHMsIHNhZ2VtYWtlclJvbGUsIHByb3BzLnZwYyk7XG4gICAgLy8gQ3JlYXRlIFNhZ2VtYWtlciBFbmRwb2ludENvbmZpZ1xuICAgIGVuZHBvaW50Q29uZmlnID0gY3JlYXRlU2FnZW1ha2VyRW5kcG9pbnRDb25maWcoc2NvcGUsIG1vZGVsLmF0dHJNb2RlbE5hbWUsIHByb3BzLmVuZHBvaW50Q29uZmlnUHJvcHMpO1xuICAgIC8vIEFkZCBkZXBlbmRlbmN5IG9uIG1vZGVsXG4gICAgZW5kcG9pbnRDb25maWcuYWRkRGVwZW5kZW5jeShtb2RlbCk7XG4gICAgLy8gQ3JlYXRlIFNhZ2VtYWtlciBFbmRwb2ludFxuICAgIGVuZHBvaW50ID0gY3JlYXRlU2FnZW1ha2VyRW5kcG9pbnQoc2NvcGUsIGVuZHBvaW50Q29uZmlnLmF0dHJFbmRwb2ludENvbmZpZ05hbWUsIHByb3BzLmVuZHBvaW50UHJvcHMpO1xuICAgIC8vIEFkZCBkZXBlbmRlbmN5IG9uIEVuZHBvaW50Q29uZmlnXG4gICAgZW5kcG9pbnQuYWRkRGVwZW5kZW5jeShlbmRwb2ludENvbmZpZyk7XG5cbiAgICByZXR1cm4geyBlbmRwb2ludCwgZW5kcG9pbnRDb25maWcsIG1vZGVsIH07XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgRXJyb3IoJ1lvdSBuZWVkIHRvIHByb3ZpZGUgYXQgbGVhc3QgbW9kZWxQcm9wcyB0byBjcmVhdGUgU2FnZW1ha2VyIEVuZHBvaW50Jyk7XG4gIH1cbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2FnZW1ha2VyTW9kZWwoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIG1vZGVsUHJvcHM6IHNhZ2VtYWtlci5DZm5Nb2RlbFByb3BzLFxuICByb2xlOiBpYW0uUm9sZSxcbiAgdnBjPzogZWMyLklWcGNcbik6IHNhZ2VtYWtlci5DZm5Nb2RlbCB7XG4gIGxldCBmaW5hbE1vZGVsUHJvcHM6IHNhZ2VtYWtlci5DZm5Nb2RlbFByb3BzO1xuICBsZXQgcHJpbWFyeUNvbnRhaW5lcjogc2FnZW1ha2VyLkNmbk1vZGVsLkNvbnRhaW5lckRlZmluaXRpb25Qcm9wZXJ0eTtcbiAgbGV0IHZwY0NvbmZpZzogc2FnZW1ha2VyLkNmbk1vZGVsLlZwY0NvbmZpZ1Byb3BlcnR5IHwgdW5kZWZpbmVkO1xuICBsZXQgbW9kZWw6IHNhZ2VtYWtlci5DZm5Nb2RlbDtcblxuICBpZiAodnBjKSB7XG4gICAgY29uc3QgbW9kZWxEZWZhdWx0U2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cChzY29wZSwgJ1JlcGxhY2VNb2RlbERlZmF1bHRTZWN1cml0eUdyb3VwJywge1xuICAgICAgdnBjLFxuICAgICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIEFsbG93IGh0dHBzIHRyYWZmaWMgZnJvbSB3aXRoaW4gdGhlIFZQQ1xuICAgIG1vZGVsRGVmYXVsdFNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoZWMyLlBlZXIuaXB2NCh2cGMudnBjQ2lkckJsb2NrKSwgZWMyLlBvcnQudGNwKDQ0MykpO1xuXG4gICAgY29uc3QgY2ZuU2VjdXJpdHlHcm91cCA9IG1vZGVsRGVmYXVsdFNlY3VyaXR5R3JvdXAubm9kZS5maW5kQ2hpbGQoJ1Jlc291cmNlJykgYXMgZWMyLkNmblNlY3VyaXR5R3JvdXA7XG4gICAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhjZm5TZWN1cml0eUdyb3VwLCBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnVzUnLFxuICAgICAgICByZWFzb246ICdFZ3Jlc3Mgb2YgMC4wLjAuMC8wIGlzIGRlZmF1bHQgYW5kIGdlbmVyYWxseSBjb25zaWRlcmVkIE9LJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnVzQwJyxcbiAgICAgICAgcmVhc29uOiAnRWdyZXNzIElQUHJvdG9jb2wgb2YgLTEgaXMgZGVmYXVsdCBhbmQgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgT0snLFxuICAgICAgfVxuICAgIF0pO1xuXG4gICAgLy8gVGhyb3cgYW4gZXJyb3IgaWYgdGhlIFZQQyBkb2VzIG5vdCBjb250YWluIHByaXZhdGUgb3IgaXNvbGF0ZWQgc3VibmV0c1xuICAgIGlmICh2cGMucHJpdmF0ZVN1Ym5ldHMubGVuZ3RoID09PSAwICYmIHZwYy5pc29sYXRlZFN1Ym5ldHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBFcnJvcignVlBDIG11c3QgY29udGFpbiBwcml2YXRlIG9yIGlzb2xhdGVkIHN1Ym5ldHMgdG8gZGVwbG95IHRoZSBTYWdlbWFrZXIgZW5kcG9pbnQgaW4gYSB2cGMnKTtcbiAgICB9XG5cbiAgICB2cGNDb25maWcgPSB7XG4gICAgICAvLyBkZWZhdWx0IFN1Ym5ldFR5cGUuUFJJVkFURSAob3IgSVNPTEFURUQgb3IgUFVCTElDIGlmIHRoZXJlIGFyZSBubyBQUklWQVRFIHN1Ym5ldHMpXG4gICAgICAvLyBTbywgcHJpdmF0ZSBzdWJuZXRzIHdpbGwgYmUgdXNlZCBpZiBwcm92aWRlZCBieSBjdXN0b21lci4gT3RoZXJ3aXNlLCB1c2UgdGhlIGRlZmF1bHQgaXNvbGF0ZWQgc3VibmV0cyxcbiAgICAgIHN1Ym5ldHM6IHZwYy5zZWxlY3RTdWJuZXRzKHtcbiAgICAgICAgb25lUGVyQXo6IHRydWUsXG4gICAgICB9KS5zdWJuZXRJZHMsXG4gICAgICBzZWN1cml0eUdyb3VwSWRzOiBbbW9kZWxEZWZhdWx0U2VjdXJpdHlHcm91cC5zZWN1cml0eUdyb3VwSWRdLFxuICAgIH07XG4gIH1cblxuICBpZiAobW9kZWxQcm9wcy5wcmltYXJ5Q29udGFpbmVyKSB7XG4gICAgLy8gR2V0IHVzZXIgcHJvdmlkZWQgTW9kZWwncyBwcmltYXJ5IGNvbnRhaW5lclxuICAgIHByaW1hcnlDb250YWluZXIgPSBtb2RlbFByb3BzLnByaW1hcnlDb250YWluZXIgYXMgc2FnZW1ha2VyLkNmbk1vZGVsLkNvbnRhaW5lckRlZmluaXRpb25Qcm9wZXJ0eTtcbiAgICAvLyBHZXQgZGVmYXVsdCBNb2RlbCBwcm9wc1xuICAgIGZpbmFsTW9kZWxQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoRGVmYXVsdFNhZ2VtYWtlck1vZGVsUHJvcHMocm9sZS5yb2xlQXJuLCBwcmltYXJ5Q29udGFpbmVyLCB2cGNDb25maWcpLCBtb2RlbFByb3BzKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgU2FnZW1ha2VyJ3MgTW9kZWxcbiAgICBtb2RlbCA9IG5ldyBzYWdlbWFrZXIuQ2ZuTW9kZWwoc2NvcGUsICdTYWdlbWFrZXJNb2RlbCcsIGZpbmFsTW9kZWxQcm9wcyk7XG4gICAgLy8gQWRkIGRlcGVuZGVuY3kgb24gdGhlIFNhZ2VtYWtlcidzIHJvbGVcbiAgICBtb2RlbC5ub2RlLmFkZERlcGVuZGVuY3kocm9sZSk7XG5cbiAgICByZXR1cm4gbW9kZWw7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgRXJyb3IoJ1lvdSBuZWVkIHRvIHByb3ZpZGUgYXQgbGVhc3QgcHJpbWFyeUNvbnRhaW5lciB0byBjcmVhdGUgU2FnZW1ha2VyIE1vZGVsJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2FnZW1ha2VyRW5kcG9pbnRDb25maWcoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIG1vZGVsTmFtZTogc3RyaW5nLFxuICBlbmRwb2ludENvbmZpZ1Byb3BzPzogc2FnZW1ha2VyLkNmbkVuZHBvaW50Q29uZmlnUHJvcHNcbik6IHNhZ2VtYWtlci5DZm5FbmRwb2ludENvbmZpZyB7XG4gIGxldCBmaW5hbEVuZHBvaW50Q29uZmlnUHJvcHM6IHNhZ2VtYWtlci5DZm5FbmRwb2ludENvbmZpZ1Byb3BzO1xuICBsZXQga21zS2V5SWQ6IHN0cmluZztcbiAgbGV0IGVuZHBvaW50Q29uZmlnOiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRDb25maWc7XG5cbiAgLy8gQ3JlYXRlIGVuY3J5cHRpb24ga2V5IGlmIG9uZSBpcyBub3QgcHJvdmlkZWRcbiAgaWYgKGVuZHBvaW50Q29uZmlnUHJvcHMgJiYgZW5kcG9pbnRDb25maWdQcm9wcy5rbXNLZXlJZCkge1xuICAgIGttc0tleUlkID0gZW5kcG9pbnRDb25maWdQcm9wcy5rbXNLZXlJZDtcbiAgfSBlbHNlIHtcbiAgICBrbXNLZXlJZCA9IGJ1aWxkRW5jcnlwdGlvbktleShzY29wZSkua2V5SWQ7XG4gIH1cblxuICAvLyBPdmVyd3JpdGUgZGVmYXVsdCBFbmRwb2ludENvbmZpZyBwcm9wZXJ0aWVzXG4gIGZpbmFsRW5kcG9pbnRDb25maWdQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoRGVmYXVsdFNhZ2VtYWtlckVuZHBvaW50Q29uZmlnUHJvcHMobW9kZWxOYW1lLCBrbXNLZXlJZCksIGVuZHBvaW50Q29uZmlnUHJvcHMpO1xuXG4gIC8vIENyZWF0ZSB0aGUgU2FnZW1ha2VyJ3MgRW5kcG9pbnRDb25maWdcbiAgZW5kcG9pbnRDb25maWcgPSBuZXcgc2FnZW1ha2VyLkNmbkVuZHBvaW50Q29uZmlnKHNjb3BlLCAnU2FnZW1ha2VyRW5kcG9pbnRDb25maWcnLCBmaW5hbEVuZHBvaW50Q29uZmlnUHJvcHMpO1xuXG4gIHJldHVybiBlbmRwb2ludENvbmZpZztcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2FnZW1ha2VyRW5kcG9pbnQoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGVuZHBvaW50Q29uZmlnTmFtZTogc3RyaW5nLFxuICBlbmRwb2ludFByb3BzPzogc2FnZW1ha2VyLkNmbkVuZHBvaW50UHJvcHNcbik6IHNhZ2VtYWtlci5DZm5FbmRwb2ludCB7XG4gIGxldCBmaW5hbEVuZHBvaW50UHJvcHM6IHNhZ2VtYWtlci5DZm5FbmRwb2ludFByb3BzO1xuICBsZXQgZW5kcG9pbnQ6IHNhZ2VtYWtlci5DZm5FbmRwb2ludDtcblxuICAvLyBPdmVyd3JpdGUgZGVmYXVsdCBFbmRwb2ludCBwcm9wZXJ0aWVzXG4gIGZpbmFsRW5kcG9pbnRQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoRGVmYXVsdFNhZ2VtYWtlckVuZHBvaW50UHJvcHMoZW5kcG9pbnRDb25maWdOYW1lKSwgZW5kcG9pbnRQcm9wcyk7XG5cbiAgLy8gQ3JlYXRlIHRoZSBTYWdlbWFrZXIncyBFbmRwb2ludFxuICBlbmRwb2ludCA9IG5ldyBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnQoc2NvcGUsICdTYWdlbWFrZXJFbmRwb2ludCcsIGZpbmFsRW5kcG9pbnRQcm9wcyk7XG5cbiAgcmV0dXJuIGVuZHBvaW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNhZ2VtYWtlclByb3BzIHtcbiAgcmVhZG9ubHkgZXhpc3RpbmdTYWdlbWFrZXJFbmRwb2ludE9iaj86IHNhZ2VtYWtlci5DZm5FbmRwb2ludCxcbiAgcmVhZG9ubHkgZW5kcG9pbnRQcm9wcz86IHNhZ2VtYWtlci5DZm5FbmRwb2ludFByb3BzLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gQ2hlY2tTYWdlbWFrZXJQcm9wcyhwcm9wc09iamVjdDogU2FnZW1ha2VyUHJvcHMgfCBhbnkpIHtcbiAgbGV0IGVycm9yTWVzc2FnZXMgPSAnJztcbiAgbGV0IGVycm9yRm91bmQgPSBmYWxzZTtcblxuICBpZiAocHJvcHNPYmplY3QuZXhpc3RpbmdTYWdlbWFrZXJFbmRwb2ludE9iaiAmJiBwcm9wc09iamVjdC5lbmRwb2ludFByb3BzKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBFaXRoZXIgcHJvdmlkZSBlbmRwb2ludFByb3BzIG9yIGV4aXN0aW5nU2FnZW1ha2VyRW5kcG9pbnRPYmosIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGVycm9yRm91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlcyk7XG4gIH1cbn1cbiJdfQ==
388
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FnZW1ha2VyLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNhZ2VtYWtlci1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUFFSDs7O0dBR0c7QUFFSCx1REFBdUQ7QUFDdkQsMkNBQTJDO0FBQzNDLDZDQUFrRDtBQUNsRCw2REFLOEI7QUFDOUIsbUNBQW1DO0FBQ25DLG1DQUFnRTtBQUNoRSw2Q0FBd0M7QUFDeEMsMkNBQTJDO0FBQzNDLDZDQUFrQztBQUNsQyxpREFBOEQ7QUFDOUQsbUVBQTZEO0FBZ0M3RCxTQUFTLGNBQWMsQ0FBQyxJQUFjLEVBQUUsS0FBbUM7SUFDekUsNEVBQTRFO0lBQzVFLElBQUksQ0FBQyxXQUFXLENBQ2QsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1FBQ3RCLFNBQVMsRUFBRSxDQUFDLE9BQU8saUJBQUcsQ0FBQyxTQUFTLGNBQWMsaUJBQUcsQ0FBQyxNQUFNLElBQUksaUJBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQztRQUMvRSxPQUFPLEVBQUU7WUFDUCw2QkFBNkI7WUFDN0IsK0JBQStCO1lBQy9CLHVCQUF1QjtZQUN2Qix5QkFBeUI7WUFDekIsdUJBQXVCO1lBQ3ZCLDBCQUEwQjtZQUMxQixnQ0FBZ0M7WUFDaEMsNEJBQTRCO1lBQzVCLGtDQUFrQztZQUNsQywwQkFBMEI7WUFDMUIsZ0NBQWdDO1lBQ2hDLDBCQUEwQjtTQUMzQjtLQUNGLENBQUMsQ0FDSCxDQUFDO0lBRUYsdUNBQXVDO0lBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQ2QsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1FBQ3RCLFNBQVMsRUFBRSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLDZCQUE2QixDQUFDO1FBQy9HLE9BQU8sRUFBRTtZQUNQLHFCQUFxQjtZ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QkFBbUIsQ0FBQyxDQUFDO0lBRTNILHdDQUF3QztJQUN4QyxjQUFjLEdBQUcsSUFBSSxTQUFTLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLHlCQUF5QixFQUFFLHdCQUF3QixDQUFDLENBQUM7SUFFN0csT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQztBQXhCRCxzRUF3QkM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHVCQUF1QixDQUNyQyxLQUFnQixFQUNoQixrQkFBMEIsRUFDMUIsYUFBMEM7SUFFMUMsSUFBSSxrQkFBOEMsQ0FBQztJQUNuRCxJQUFJLFFBQStCLENBQUM7SUFFcEMsd0NBQXdDO0lBQ3hDLGtCQUFrQixHQUFHLHdCQUFnQixDQUFDLGtEQUE2QixDQUFDLGtCQUFrQixDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFeEcsa0NBQWtDO0lBQ2xDLFFBQVEsR0FBRyxJQUFJLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFFckYsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQWZELDBEQWVDO0FBT0QsU0FBZ0IsbUJBQW1CLENBQUMsV0FBaUM7SUFDbkUsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztJQUV2QixJQUFJLFdBQVcsQ0FBQyw0QkFBNEIsSUFBSSxXQUFXLENBQUMsYUFBYSxFQUFFO1FBQ3pFLGFBQWEsSUFBSSx1RkFBdUYsQ0FBQztRQUN6RyxVQUFVLEdBQUcsSUFBSSxDQUFDO0tBQ25CO0lBRUQsSUFBSSxVQUFVLEVBQUU7UUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQ2hDO0FBQ0gsQ0FBQztBQVpELGtEQVlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLypcbiAqICBUaGUgZnVuY3Rpb25zIGZvdW5kIGhlcmUgaW4gdGhlIGNvcmUgbGlicmFyeSBhcmUgZm9yIGludGVybmFsIHVzZSBhbmQgY2FuIGJlIGNoYW5nZWRcbiAqICBvciByZW1vdmVkIG91dHNpZGUgb2YgYSBtYWpvciByZWxlYXNlLiBXZSByZWNvbW1lbmQgYWdhaW5zdCBjYWxsaW5nIHRoZW0gZGlyZWN0bHkgZnJvbSBjbGllbnQgY29kZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBzYWdlbWFrZXIgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNhZ2VtYWtlcic7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgeyBidWlsZEVuY3J5cHRpb25LZXkgfSBmcm9tICcuL2ttcy1oZWxwZXInO1xuaW1wb3J0IHtcbiAgRGVmYXVsdFNhZ2VtYWtlck5vdGVib29rUHJvcHMsXG4gIERlZmF1bHRTYWdlbWFrZXJNb2RlbFByb3BzLFxuICBEZWZhdWx0U2FnZW1ha2VyRW5kcG9pbnRDb25maWdQcm9wcyxcbiAgRGVmYXVsdFNhZ2VtYWtlckVuZHBvaW50UHJvcHMsXG59IGZyb20gJy4vc2FnZW1ha2VyLWRlZmF1bHRzJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBhZGRDZm5TdXBwcmVzc1J1bGVzLCBjb25zb2xpZGF0ZVByb3BzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBidWlsZFZwYyB9IGZyb20gJy4vdnBjLWhlbHBlcic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBBd3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBEZWZhdWx0UHVibGljUHJpdmF0ZVZwY1Byb3BzIH0gZnJvbSAnLi92cGMtZGVmYXVsdHMnO1xuaW1wb3J0IHsgYnVpbGRTZWN1cml0eUdyb3VwIH0gZnJvbSAnLi9zZWN1cml0eS1ncm91cC1oZWxwZXInO1xuLy8gTm90ZTogVG8gZW5zdXJlIENES3YyIGNvbXBhdGliaWxpdHksIGtlZXAgdGhlIGltcG9ydCBzdGF0ZW1lbnQgZm9yIENvbnN0cnVjdCBzZXBhcmF0ZVxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRTYWdlbWFrZXJOb3RlYm9va1Byb3BzIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHVzZXIgcHJvdmlkZWQgcHJvcHMgZm9yIENmbk5vdGVib29rSW5zdGFuY2VQcm9wc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcHMgYXJlIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IHNhZ2VtYWtlck5vdGVib29rUHJvcHM/OiBzYWdlbWFrZXIuQ2ZuTm90ZWJvb2tJbnN0YW5jZVByb3BzIHwgYW55O1xuICAvKipcbiAgICogT3B0aW9uYWwgdXNlciBwcm92aWRlZCBwcm9wcyB0byBkZXBsb3kgaW5zaWRlIHZwY1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGRlcGxveUluc2lkZVZwYz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCwgRXhpc3RpbmcgaW5zdGFuY2Ugb2Ygbm90ZWJvb2sgb2JqZWN0LlxuICAgKiBJZiB0aGlzIGlzIHNldCB0aGVuIHRoZSBzYWdlbWFrZXJOb3RlYm9va1Byb3BzIGlzIGlnbm9yZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBleGlzdGluZ05vdGVib29rT2JqPzogc2FnZW1ha2VyLkNmbk5vdGVib29rSW5zdGFuY2U7XG4gIC8qKlxuICAgKiBJQU0gUm9sZSBBcm4gZm9yIFNhZ2VtYWtlciBOb3RlQm9va0luc3RhbmNlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZTogaWFtLlJvbGU7XG59XG5cbmZ1bmN0aW9uIGFkZFBlcm1pc3Npb25zKHJvbGU6IGlhbS5Sb2xlLCBwcm9wcz86IEJ1aWxkU2FnZW1ha2VyRW5kcG9pbnRQcm9wcykge1xuICAvLyBHcmFudCBwZXJtaXNzaW9ucyB0byBOb3RlQm9va0luc3RhbmNlIGZvciBjcmVhdGluZyBhbmQgdHJhaW5pbmcgdGhlIG1vZGVsXG4gIHJvbGUuYWRkVG9Qb2xpY3koXG4gICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgcmVzb3VyY2VzOiBbYGFybjoke0F3cy5QQVJUSVRJT059OnNhZ2VtYWtlcjoke0F3cy5SRUdJT059OiR7QXdzLkFDQ09VTlRfSUR9OipgXSxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ3NhZ2VtYWtlcjpDcmVhdGVUcmFpbmluZ0pvYicsXG4gICAgICAgICdzYWdlbWFrZXI6RGVzY3JpYmVUcmFpbmluZ0pvYicsXG4gICAgICAgICdzYWdlbWFrZXI6Q3JlYXRlTW9kZWwnLFxuICAgICAgICAnc2FnZW1ha2VyOkRlc2NyaWJlTW9kZWwnLFxuICAgICAgICAnc2FnZW1ha2VyOkRlbGV0ZU1vZGVsJyxcbiAgICAgICAgJ3NhZ2VtYWtlcjpDcmVhdGVFbmRwb2ludCcsXG4gICAgICAgICdzYWdlbWFrZXI6Q3JlYXRlRW5kcG9pbnRDb25maWcnLFxuICAgICAgICAnc2FnZW1ha2VyOkRlc2NyaWJlRW5kcG9pbnQnLFxuICAgICAgICAnc2FnZW1ha2VyOkRlc2NyaWJlRW5kcG9pbnRDb25maWcnLFxuICAgICAgICAnc2FnZW1ha2VyOkRlbGV0ZUVuZHBvaW50JyxcbiAgICAgICAgJ3NhZ2VtYWtlcjpEZWxldGVFbmRwb2ludENvbmZpZycsXG4gICAgICAgICdzYWdlbWFrZXI6SW52b2tlRW5kcG9pbnQnLFxuICAgICAgXSxcbiAgICB9KVxuICApO1xuXG4gIC8vIEdyYW50IENsb3VkV2F0Y2ggTG9nZ2luZyBwZXJtaXNzaW9uc1xuICByb2xlLmFkZFRvUG9saWN5KFxuICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHJlc291cmNlczogW2Bhcm46JHtjZGsuQXdzLlBBUlRJVElPTn06bG9nczoke2Nkay5Bd3MuUkVHSU9OfToke2Nkay5Bd3MuQUNDT1VOVF9JRH06bG9nLWdyb3VwOi9hd3Mvc2FnZW1ha2VyLypgXSxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ2xvZ3M6Q3JlYXRlTG9nR3JvdXAnLFxuICAgICAgICAnbG9nczpDcmVhdGVMb2dTdHJlYW0nLFxuICAgICAgICAnbG9nczpEZXNjcmliZUxvZ1N0cmVhbXMnLFxuICAgICAgICAnbG9nczpHZXRMb2dFdmVudHMnLFxuICAgICAgICAnbG9nczpQdXRMb2dFdmVudHMnLFxuICAgICAgXSxcbiAgICB9KVxuICApO1xuXG4gIC8vIFRvIHBsYWNlIHRoZSBTYWdlbWFrZXIgZW5kcG9pbnQgaW4gYSBWUENcbiAgaWYgKHByb3BzICYmIHByb3BzLnZwYykge1xuICAgIHJvbGUuYWRkVG9Qb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnZWMyOkNyZWF0ZU5ldHdvcmtJbnRlcmZhY2UnLFxuICAgICAgICAgICdlYzI6Q3JlYXRlTmV0d29ya0ludGVyZmFjZVBlcm1pc3Npb24nLFxuICAgICAgICAgICdlYzI6RGVsZXRlTmV0d29ya0ludGVyZmFjZScsXG4gICAgICAgICAgJ2VjMjpEZWxldGVOZXR3b3JrSW50ZXJmYWNlUGVybWlzc2lvbicsXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZU5ldHdvcmtJbnRlcmZhY2VzJyxcbiAgICAgICAgICAnZWMyOkFzc2lnblByaXZhdGVJcEFkZHJlc3NlcycsXG4gICAgICAgICAgJ2VjMjpVbmFzc2lnblByaXZhdGVJcEFkZHJlc3NlcycsXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZVZwY3MnLFxuICAgICAgICAgICdlYzI6RGVzY3JpYmVEaGNwT3B0aW9ucycsXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZVN1Ym5ldHMnLFxuICAgICAgICAgICdlYzI6RGVzY3JpYmVTZWN1cml0eUdyb3VwcycsXG4gICAgICAgIF0sXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvLyBUbyBjcmVhdGUgYSBTYWdlbWFrZXIgbW9kZWwgdXNpbmcgQnJpbmctWW91ci1Pd24tTW9kZWwgKEJZT00pIGFsZ29yaXRobSBpbWFnZVxuICAvLyBUaGUgaW1hZ2UgVVJMIGlzIHNwZWNpZmllZCBpbiB0aGUgbW9kZWxQcm9wc1xuICByb2xlLmFkZFRvUG9saWN5KFxuICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHJlc291cmNlczogW2Bhcm46JHtjZGsuQXdzLlBBUlRJVElPTn06ZWNyOiR7Y2RrLkF3cy5SRUdJT059OiR7Y2RrLkF3cy5BQ0NPVU5UX0lEfTpyZXBvc2l0b3J5LypgXSxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ2VjcjpCYXRjaENoZWNrTGF5ZXJBdmFpbGFiaWxpdHknLFxuICAgICAgICAnZWNyOkdldERvd25sb2FkVXJsRm9yTGF5ZXInLFxuICAgICAgICAnZWNyOkRlc2NyaWJlUmVwb3NpdG9yaWVzJyxcbiAgICAgICAgJ2VjcjpEZXNjcmliZUltYWdlcycsXG4gICAgICAgICdlY3I6QmF0Y2hHZXRJbWFnZScsXG4gICAgICBdLFxuICAgIH0pXG4gICk7XG5cbiAgLy8gQWRkIEdldEF1dGhvcml6YXRpb25Ub2tlbiAoaXQgY2FuIG5vdCBiZSBib3VuZCB0byByZXNvdXJjZXMgb3RoZXIgdGhhbiAqKVxuICByb2xlLmFkZFRvUG9saWN5KFxuICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICBhY3Rpb25zOiBbJ2VjcjpHZXRBdXRob3JpemF0aW9uVG9rZW4nXSxcbiAgICB9KVxuICApO1xuXG4gIC8vIGFkZCBwZXJtaXNzaW9uIHRvIHVzZSBFbGFzdGljIEluZmVyZW5jZSBhY2NlbGVyYXRvclxuICBpZiAocHJvcHMgJiYgcHJvcHMuZW5kcG9pbnRDb25maWdQcm9wcykge1xuICAgIC8vIEdldCB0aGUgYWNjZWxlcmF0b3JUeXBlLCBpZiBhbnlcbiAgICBjb25zdCBhY2NlbGVyYXRvclR5cGUgPSAocHJvcHMuZW5kcG9pbnRDb25maWdQcm9wc1xuICAgICAgPy5wcm9kdWN0aW9uVmFyaWFudHMgYXMgc2FnZW1ha2VyLkNmbkVuZHBvaW50Q29uZmlnLlByb2R1Y3Rpb25WYXJpYW50UHJvcGVydHlbXSlbMF0uYWNjZWxlcmF0b3JUeXBlO1xuICAgIGlmIChhY2NlbGVyYXRvclR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcm9sZS5hZGRUb1BvbGljeShcbiAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgICAgYWN0aW9uczogWydlbGFzdGljLWluZmVyZW5jZTpDb25uZWN0J10sXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIGFkZCBrbXMgcGVybWlzc2lvbnNcbiAgcm9sZS5hZGRUb1BvbGljeShcbiAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAvLyB0aGUga21zS2V5SWQgaW4gdGhlIGVuZHBvaW50Q29uZmlnUHJvcHMgY2FuIGJlIGFueSBvZiB0aGUgZm9sbG93aW5nIGZvcm1hdHM6XG4gICAgICAvLyBLZXkgSUQ6IDEyMzRhYmNkLTEyYWItMzRjZC01NmVmLTEyMzQ1Njc4OTBhYlxuICAgICAgLy8gS2V5IEFSTjogYXJuOmF3czprbXM6PHJlZ2lvbj46PGFjY291bnRJRD46a2V5LzEyMzRhYmNkLTEyYWItMzRjZC01NmVmLTEyMzQ1Njc4OTBhYlxuICAgICAgLy8gQWxpYXMgbmFtZTogYWxpYXMvRXhhbXBsZUFsaWFzXG4gICAgICAvLyBBbGlhcyBuYW1lIEFSTjogYXJuOmF3czprbXM6PHJlZ2lvbj46PGFjY291bnRJRD46YWxpYXMvRXhhbXBsZUFsaWFzXG4gICAgICAvLyB0aGUga2V5IGlzIHVzZWQgdG8gZW5jcnlwdC9kZWNyeXB0IGRhdGEgY2FwdHVyZWQgYnkgdGhlIFNhZ2VtYWtlciBlbmRwb2ludCBhbmQgc3RvcmVkIGluIFMzIGJ1Y2tldFxuICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgIGBhcm46JHtjZGsuQXdzLlBBUlRJVElPTn06a21zOiR7Y2RrLkF3cy5SRUdJT059OiR7Y2RrLkF3cy5BQ0NPVU5UX0lEfTprZXkvKmAsXG4gICAgICAgIGBhcm46JHtjZGsuQXdzLlBBUlRJVElPTn06a21zOiR7Y2RrLkF3cy5SRUdJT059OiR7Y2RrLkF3cy5BQ0NPVU5UX0lEfTphbGlhcy8qYCxcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiBbJ2ttczpFbmNyeXB0JywgJ2ttczpEZWNyeXB0JywgJ2ttczpSZUVuY3J5cHQqJywgJ2ttczpHZW5lcmF0ZURhdGFLZXkqJywgJ2ttczpEZXNjcmliZUtleSddLFxuICAgIH0pXG4gICk7XG5cbiAgLy8gQWRkIFMzIHBlcm1pc3Npb25zIHRvIGdldCBNb2RlbCBhcnRpZmFjdCwgcHV0IGRhdGEgY2FwdHVyZSBmaWxlcywgZXRjLlxuICByb2xlLmFkZFRvUG9saWN5KFxuICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFsnczM6R2V0T2JqZWN0JywgJ3MzOlB1dE9iamVjdCcsICdzMzpEZWxldGVPYmplY3QnLCAnczM6TGlzdEJ1Y2tldCddLFxuICAgICAgcmVzb3VyY2VzOiBbJ2Fybjphd3M6czM6OjoqJ10sXG4gICAgfSlcbiAgKTtcblxuICAvLyBHcmFudCBHZXRSb2xlIHBlcm1pc3Npb25zIHRvIHRoZSBTYWdlbWFrZXIgc2VydmljZVxuICByb2xlLmFkZFRvUG9saWN5KFxuICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHJlc291cmNlczogW3JvbGUucm9sZUFybl0sXG4gICAgICBhY3Rpb25zOiBbJ2lhbTpHZXRSb2xlJ10sXG4gICAgfSlcbiAgKTtcblxuICAvLyBHcmFudCBQYXNzUm9sZSBwZXJtaXNzaW9ucyB0byB0aGUgU2FnZW1ha2VyIHNlcnZpY2VcbiAgcm9sZS5hZGRUb1BvbGljeShcbiAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICByZXNvdXJjZXM6IFtyb2xlLnJvbGVBcm5dLFxuICAgICAgYWN0aW9uczogWydpYW06UGFzc1JvbGUnXSxcbiAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgU3RyaW5nTGlrZTogeyAnaWFtOlBhc3NlZFRvU2VydmljZSc6ICdzYWdlbWFrZXIuYW1hem9uYXdzLmNvbScgfSxcbiAgICAgIH0sXG4gICAgfSlcbiAgKTtcblxuICAvLyBBZGQgQ0ZOIE5BRyB1cHByZXNzIHRvIGFsbG93IGZvciBcIlJlc291cmNlXCI6IFwiKlwiIGZvciBFTkkgYWNjZXNzIGluIFZQQyxcbiAgLy8gRUNSIGF1dGhvcml6YXRpb24gdG9rZW4gZm9yIGN1c3RvbSBtb2RlbCBpbWFnZXMsIGFuZCBlbGFzdGljIGluZmVyZW5jZVxuICAvLyBBZGQgQ0ZOIE5BRyBmb3IgQ29tcGxleCBSb2xlIGJlY2F1c2UgU2FnbWFrZXIgbmVlZHMgcGVybWlzc2lvbnMgdG8gYWNjZXNzIHNldmVyYWwgc2VydmljZXNcbiAgY29uc3Qgcm9sZURlZmF1bHRQb2xpY3kgPSByb2xlLm5vZGUudHJ5RmluZENoaWxkKCdEZWZhdWx0UG9saWN5Jyk/Lm5vZGUuZmluZENoaWxkKCdSZXNvdXJjZScpIGFzIGlhbS5DZm5Qb2xpY3k7XG4gIGFkZENmblN1cHByZXNzUnVsZXMocm9sZURlZmF1bHRQb2xpY3ksIFtcbiAgICB7XG4gICAgICBpZDogJ1cxMicsXG4gICAgICByZWFzb246IGBTYWdlbWFrZXIgbmVlZHMgdGhlIGZvbGxvd2luZyBtaW5pbXVtIHJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGFjY2VzcyBFTklzIGluIGEgVlBDLCBFQ1IgZm9yIGN1c3RvbSBtb2RlbCBpbWFnZXMsIGFuZCBlbGFzdGljIGluZmVyZW5jZS5gLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6ICdXNzYnLFxuICAgICAgcmVhc29uOiAnQ29tcGxleCByb2xlIGJlY3Vhc2UgU2FnZW1ha2VyIG5lZWRzIHBlcm1pc3Npb25zIHRvIGFjY2VzcyBzZXZlcmFsIHNlcnZpY2VzJyxcbiAgICB9XG4gIF0pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU2FnZW1ha2VyTm90ZWJvb2tSZXNwb25zZSB7XG4gIHJlYWRvbmx5IG5vdGVib29rOiBzYWdlbWFrZXIuQ2ZuTm90ZWJvb2tJbnN0YW5jZSxcbiAgcmVhZG9ubHkgdnBjPzogZWMyLklWcGMsXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXA/OiBlYzIuU2VjdXJpdHlHcm91cFxufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNhZ2VtYWtlck5vdGVib29rKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBpZDogc3RyaW5nLFxuICBwcm9wczogQnVpbGRTYWdlbWFrZXJOb3RlYm9va1Byb3BzXG4pOiBCdWlsZFNhZ2VtYWtlck5vdGVib29rUmVzcG9uc2Uge1xuICAvLyBTZXR1cCB0aGUgbm90ZWJvb2sgcHJvcGVydGllc1xuICBsZXQgc2FnZW1ha2VyTm90ZWJvb2tQcm9wcztcbiAgbGV0IHZwY0luc3RhbmNlO1xuICBsZXQgc2VjdXJpdHlHcm91cDtcbiAgbGV0IGttc0tleUlkOiBzdHJpbmc7XG4gIGxldCBzdWJuZXRJZDogc3RyaW5nO1xuXG4gIC8vIENvbmRpdGlvbmFsIFNhZ2VtYWtlciBOb3RlYm9vayBjcmVhdGlvblxuICBpZiAocHJvcHMuZXhpc3RpbmdOb3RlYm9va09iaikge1xuICAgIHJldHVybiB7IG5vdGVib29rOiBwcm9wcy5leGlzdGluZ05vdGVib29rT2JqIH07XG4gIH1cblxuICBpZiAoQ2hlY2tOb3RlYm9va1ZwY1Byb3BzKHByb3BzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBkZWZpbmUgYm90aCBzYWdlbWFrZXJOb3RlYm9va1Byb3BzLnN1Ym5ldElkIGFuZCBzYWdlbWFrZXJOb3RlYm9va1Byb3BzLnNlY3VyaXR5R3JvdXBJZHMnKTtcbiAgfVxuXG4gIGFkZFBlcm1pc3Npb25zKHByb3BzLnJvbGUpO1xuXG4gIGlmIChwcm9wcy5zYWdlbWFrZXJOb3RlYm9va1Byb3BzPy5rbXNLZXlJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAga21zS2V5SWQgPSBidWlsZEVuY3J5cHRpb25LZXkoc2NvcGUsICBpZCkua2V5SWQ7XG4gIH0gZWxzZSB7XG4gICAga21zS2V5SWQgPSBwcm9wcy5zYWdlbWFrZXJOb3RlYm9va1Byb3BzLmttc0tleUlkO1xuICB9XG5cbiAgaWYgKHByb3BzLmRlcGxveUluc2lkZVZwYyA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLmRlcGxveUluc2lkZVZwYykge1xuICAgIGlmIChcbiAgICAgIHByb3BzLnNhZ2VtYWtlck5vdGVib29rUHJvcHM/LnN1Ym5ldElkID09PSB1bmRlZmluZWQgJiZcbiAgICAgIHByb3BzLnNhZ2VtYWtlck5vdGVib29rUHJvcHM/LnNlY3VyaXR5R3JvdXBJZHMgPT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgdnBjSW5zdGFuY2UgPSBidWlsZFZwYyhzY29wZSwge1xuICAgICAgICBkZWZhdWx0VnBjUHJvcHM6IERlZmF1bHRQdWJsaWNQcml2YXRlVnBjUHJvcHMoKSxcbiAgICAgIH0pO1xuICAgICAgc2VjdXJpdHlHcm91cCA9IGJ1aWxkU2VjdXJpdHlHcm91cChcbiAgICAgICAgc2NvcGUsXG4gICAgICAgICdTZWN1cml0eUdyb3VwJyxcbiAgICAgICAge1xuICAgICAgICAgIHZwYzogdnBjSW5zdGFuY2UsXG4gICAgICAgICAgYWxsb3dBbGxPdXRib3VuZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIFtdLFxuICAgICAgICBbeyBwZWVyOiBlYzIuUGVlci5hbnlJcHY0KCksIGNvbm5lY3Rpb246IGVjMi5Qb3J0LnRjcCg0NDMpIH1dXG4gICAgICApO1xuXG4gICAgICBzdWJuZXRJZCA9IHZwY0luc3RhbmNlLnByaXZhdGVTdWJuZXRzWzBdLnN1Ym5ldElkO1xuXG4gICAgICBzYWdlbWFrZXJOb3RlYm9va1Byb3BzID0gRGVmYXVsdFNhZ2VtYWtlck5vdGVib29rUHJvcHMocHJvcHMucm9sZS5yb2xlQXJuLCBrbXNLZXlJZCwgc3VibmV0SWQsIFtcbiAgICAgICAgc2VjdXJpdHlHcm91cC5zZWN1cml0eUdyb3VwSWQsXG4gICAgICBdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2FnZW1ha2VyTm90ZWJvb2tQcm9wcyA9IERlZmF1bHRTYWdlbWFrZXJOb3RlYm9va1Byb3BzKFxuICAgICAgICBwcm9wcy5yb2xlLnJvbGVBcm4sXG4gICAgICAgIGttc0tleUlkLFxuICAgICAgICBwcm9wcy5zYWdlbWFrZXJOb3RlYm9va1Byb3BzPy5zdWJuZXRJZCxcbiAgICAgICAgcHJvcHMuc2FnZW1ha2VyTm90ZWJvb2tQcm9wcz8uc2VjdXJpdHlHcm91cElkc1xuICAgICAgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc2FnZW1ha2VyTm90ZWJvb2tQcm9wcyA9IERlZmF1bHRTYWdlbWFrZXJOb3RlYm9va1Byb3BzKHByb3BzLnJvbGUucm9sZUFybiwga21zS2V5SWQpO1xuICB9XG5cbiAgc2FnZW1ha2VyTm90ZWJvb2tQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoc2FnZW1ha2VyTm90ZWJvb2tQcm9wcywgcHJvcHMuc2FnZW1ha2VyTm90ZWJvb2tQcm9wcyk7XG5cbiAgLy8gQ3JlYXRlIHRoZSBub3RlYm9va1xuICAvLyBOT1NPTkFSOiAodHlwZXNjcmlwdDpTNjMxOSlcbiAgLy8ga2V5SUQgaXMgY3JlYXRlZCBhYm92ZSBpbiB0aGUgaWYgKHByb3BzLnNhZ2VtYWtlck5vdGVib29rUHJvcHM/Lmttc0tleUlkID09PSB1bmRlZmluZWQpXG4gIC8vIGJsb2NrLiBJdCBpcyB0aGVuIHBhc3NlZCB0byBEZWZhdWx0U2FnZW1ha2VyTm90ZWJvb2tQcm9wcygpXG4gIC8vIFRoaXMgYmVoYXZpb3IgaXMgdmFsaWRhdGVkIGluIHVuaXQgdGVzdFxuICBjb25zdCBzYWdlbWFrZXJJbnN0YW5jZTogc2FnZW1ha2VyLkNmbk5vdGVib29rSW5zdGFuY2UgPSBuZXcgc2FnZW1ha2VyLkNmbk5vdGVib29rSW5zdGFuY2UoXG4gICAgc2NvcGUsXG4gICAgJ1NhZ2VtYWtlck5vdGVib29rJyxcbiAgICBzYWdlbWFrZXJOb3RlYm9va1Byb3BzIC8vIE5PU09OQVJcbiAgKTtcbiAgaWYgKHZwY0luc3RhbmNlKSB7XG4gICAgcmV0dXJuIHsgbm90ZWJvb2s6IHNhZ2VtYWtlckluc3RhbmNlLCB2cGM6IHZwY0luc3RhbmNlLCBzZWN1cml0eUdyb3VwIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHsgbm90ZWJvb2s6IHNhZ2VtYWtlckluc3RhbmNlIH07XG4gIH1cbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5mdW5jdGlvbiBDaGVja05vdGVib29rVnBjUHJvcHMocHJvcHM6IEJ1aWxkU2FnZW1ha2VyTm90ZWJvb2tQcm9wcyk6IGJvb2xlYW4ge1xuICBpZiAoKHByb3BzLnNhZ2VtYWtlck5vdGVib29rUHJvcHM/LnN1Ym5ldElkICYmIHByb3BzLnNhZ2VtYWtlck5vdGVib29rUHJvcHM/LnNlY3VyaXR5R3JvdXBJZHMgPT09IHVuZGVmaW5lZCkgfHxcbiAgICAocHJvcHMuc2FnZW1ha2VyTm90ZWJvb2tQcm9wcz8uc3VibmV0SWQgPT09IHVuZGVmaW5lZCAmJiBwcm9wcy5zYWdlbWFrZXJOb3RlYm9va1Byb3BzPy5zZWN1cml0eUdyb3VwSWRzKVxuICApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRTYWdlbWFrZXJFbmRwb2ludFByb3BzIHtcbiAgLyoqXG4gICAqIEV4aXN0aW5nIFNhZ2VtYWtlciBFbmRwb2ludCBvYmplY3QsIGlmIHRoaXMgaXMgc2V0IHRoZW4gdGhlIG1vZGVsUHJvcHMsIGVuZHBvaW50Q29uZmlnUHJvcHMsIGFuZCBlbmRwb2ludFByb3BzIGFyZSBpZ25vcmVkXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhpc3RpbmdTYWdlbWFrZXJFbmRwb2ludE9iaj86IHNhZ2VtYWtlci5DZm5FbmRwb2ludDtcbiAgLyoqXG4gICAqIFVzZXIgcHJvdmlkZWQgcHJvcHMgdG8gY3JlYXRlIFNhZ2VtYWtlciBNb2RlbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IG1vZGVsUHJvcHM/OiBzYWdlbWFrZXIuQ2ZuTW9kZWxQcm9wcyB8IGFueTtcbiAgLyoqXG4gICAqIFVzZXIgcHJvdmlkZWQgcHJvcHMgdG8gY3JlYXRlIFNhZ2VtYWtlciBFbmRwb2ludCBDb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnRDb25maWdQcm9wcz86IHNhZ2VtYWtlci5DZm5FbmRwb2ludENvbmZpZ1Byb3BzO1xuICAvKipcbiAgICogVXNlciBwcm92aWRlZCBwcm9wcyB0byBjcmVhdGUgU2FnZW1ha2VyIEVuZHBvaW50XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnRQcm9wcz86IHNhZ2VtYWtlci5DZm5FbmRwb2ludFByb3BzO1xuICAvKipcbiAgICogQSBWUEMgd2hlcmUgdGhlIFNhZ2VtYWtlciBFbmRwb2ludCB3aWxsIGJlIHBsYWNlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IGVjMi5JVnBjO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU2FnZW1ha2VyRW5kcG9pbnRSZXNwb25zZSB7XG4gIHJlYWRvbmx5IGVuZHBvaW50OiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnQsXG4gIHJlYWRvbmx5IGVuZHBvaW50Q29uZmlnPzogc2FnZW1ha2VyLkNmbkVuZHBvaW50Q29uZmlnLFxuICByZWFkb25seSBtb2RlbD86IHNhZ2VtYWtlci5DZm5Nb2RlbFxufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBCdWlsZFNhZ2VtYWtlckVuZHBvaW50KFxuICBzY29wZTogQ29uc3RydWN0LFxuICBpZDogc3RyaW5nLFxuICBwcm9wczogQnVpbGRTYWdlbWFrZXJFbmRwb2ludFByb3BzXG4pOiBCdWlsZFNhZ2VtYWtlckVuZHBvaW50UmVzcG9uc2Uge1xuICAvKiogQ29uZGl0aW9uYWwgU2FnZW1ha2VyIGVuZHBvaW50IGNyZWF0aW9uICovXG4gIGlmICghcHJvcHMuZXhpc3RpbmdTYWdlbWFrZXJFbmRwb2ludE9iaikge1xuICAgIGlmIChwcm9wcy5tb2RlbFByb3BzKSB7XG4gICAgICBjb25zdCBkZXBsb3lTYWdlbWFrZXJFbmRwb2ludFJlc3BvbnNlID0gZGVwbG95U2FnZW1ha2VyRW5kcG9pbnQoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgICByZXR1cm4geyAuLi5kZXBsb3lTYWdlbWFrZXJFbmRwb2ludFJlc3BvbnNlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IEVycm9yKCdFaXRoZXIgZXhpc3RpbmdTYWdlbWFrZXJFbmRwb2ludE9iaiBvciBhdCBsZWFzdCBtb2RlbFByb3BzIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8qKiBPdGhlcndpc2UsIHJldHVybiBbZW5kcG9pbnRdICovXG4gICAgcmV0dXJuIHsgZW5kcG9pbnQ6IHByb3BzLmV4aXN0aW5nU2FnZW1ha2VyRW5kcG9pbnRPYmogfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlcGxveVNhZ2VtYWtlckVuZHBvaW50UmVzcG9uc2Uge1xuICByZWFkb25seSBlbmRwb2ludDogc2FnZW1ha2VyLkNmbkVuZHBvaW50LFxuICByZWFkb25seSBlbmRwb2ludENvbmZpZz86IHNhZ2VtYWtlci5DZm5FbmRwb2ludENvbmZpZyxcbiAgcmVhZG9ubHkgbW9kZWw/OiBzYWdlbWFrZXIuQ2ZuTW9kZWxcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVwbG95U2FnZW1ha2VyRW5kcG9pbnQoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGlkOiBzdHJpbmcsXG4gIHByb3BzOiBCdWlsZFNhZ2VtYWtlckVuZHBvaW50UHJvcHNcbik6IERlcGxveVNhZ2VtYWtlckVuZHBvaW50UmVzcG9uc2Uge1xuICBsZXQgbW9kZWw6IHNhZ2VtYWtlci5DZm5Nb2RlbDtcbiAgbGV0IGVuZHBvaW50Q29uZmlnOiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRDb25maWc7XG4gIGxldCBlbmRwb2ludDogc2FnZW1ha2VyLkNmbkVuZHBvaW50O1xuICBsZXQgc2FnZW1ha2VyUm9sZTogaWFtLlJvbGU7XG5cbiAgLy8gQ3JlYXRlIFNhZ2VtYWtlcidzIG1vZGVsLCBlbmRwb2ludENvbmZpZywgYW5kIGVuZHBvaW50XG4gIGlmIChwcm9wcy5tb2RlbFByb3BzKSB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIGNsaWVudCBoYXMgcHJvdmlkZWQgZXhlY3V0aW9uUm9sZUFyblxuICAgIGlmIChwcm9wcy5tb2RlbFByb3BzLmV4ZWN1dGlvblJvbGVBcm4pIHtcbiAgICAgIHNhZ2VtYWtlclJvbGUgPSBpYW0uUm9sZS5mcm9tUm9sZUFybihcbiAgICAgICAgc2NvcGUsXG4gICAgICAgICdTYWdlbWFrZXJSb2xlQ3VzdG9tZXInLFxuICAgICAgICBwcm9wcy5tb2RlbFByb3BzLmV4ZWN1dGlvblJvbGVBcm5cbiAgICAgICkgYXMgaWFtLlJvbGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENyZWF0ZSB0aGUgU2FnZW1ha2VyIFJvbGVcbiAgICAgIHNhZ2VtYWtlclJvbGUgPSBuZXcgaWFtLlJvbGUoc2NvcGUsICdTYWdlbWFrZXJSb2xlJywge1xuICAgICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnc2FnZW1ha2VyLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgIH0pO1xuICAgICAgLy8gQWRkIHJlcXVpcmVkIHBlcm1pc3Npb25zXG4gICAgICBhZGRQZXJtaXNzaW9ucyhzYWdlbWFrZXJSb2xlLCBwcm9wcyk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIFNhZ2VtYWtlciBNb2RlbFxuICAgIG1vZGVsID0gY3JlYXRlU2FnZW1ha2VyTW9kZWwoc2NvcGUsIHByb3BzLm1vZGVsUHJvcHMsIHNhZ2VtYWtlclJvbGUsIHByb3BzLnZwYyk7XG4gICAgLy8gQ3JlYXRlIFNhZ2VtYWtlciBFbmRwb2ludENvbmZpZ1xuICAgIGVuZHBvaW50Q29uZmlnID0gY3JlYXRlU2FnZW1ha2VyRW5kcG9pbnRDb25maWcoc2NvcGUsIGAke2lkfWAsIG1vZGVsLmF0dHJNb2RlbE5hbWUsIHByb3BzLmVuZHBvaW50Q29uZmlnUHJvcHMpO1xuICAgIC8vIEFkZCBkZXBlbmRlbmN5IG9uIG1vZGVsXG4gICAgZW5kcG9pbnRDb25maWcuYWRkRGVwZW5kZW5jeShtb2RlbCk7XG4gICAgLy8gQ3JlYXRlIFNhZ2VtYWtlciBFbmRwb2ludFxuICAgIGVuZHBvaW50ID0gY3JlYXRlU2FnZW1ha2VyRW5kcG9pbnQoc2NvcGUsIGVuZHBvaW50Q29uZmlnLmF0dHJFbmRwb2ludENvbmZpZ05hbWUsIHByb3BzLmVuZHBvaW50UHJvcHMpO1xuICAgIC8vIEFkZCBkZXBlbmRlbmN5IG9uIEVuZHBvaW50Q29uZmlnXG4gICAgZW5kcG9pbnQuYWRkRGVwZW5kZW5jeShlbmRwb2ludENvbmZpZyk7XG5cbiAgICByZXR1cm4geyBlbmRwb2ludCwgZW5kcG9pbnRDb25maWcsIG1vZGVsIH07XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgRXJyb3IoJ1lvdSBuZWVkIHRvIHByb3ZpZGUgYXQgbGVhc3QgbW9kZWxQcm9wcyB0byBjcmVhdGUgU2FnZW1ha2VyIEVuZHBvaW50Jyk7XG4gIH1cbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2FnZW1ha2VyTW9kZWwoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIG1vZGVsUHJvcHM6IHNhZ2VtYWtlci5DZm5Nb2RlbFByb3BzLFxuICByb2xlOiBpYW0uUm9sZSxcbiAgdnBjPzogZWMyLklWcGNcbik6IHNhZ2VtYWtlci5DZm5Nb2RlbCB7XG4gIGxldCBmaW5hbE1vZGVsUHJvcHM6IHNhZ2VtYWtlci5DZm5Nb2RlbFByb3BzO1xuICBsZXQgcHJpbWFyeUNvbnRhaW5lcjogc2FnZW1ha2VyLkNmbk1vZGVsLkNvbnRhaW5lckRlZmluaXRpb25Qcm9wZXJ0eTtcbiAgbGV0IHZwY0NvbmZpZzogc2FnZW1ha2VyLkNmbk1vZGVsLlZwY0NvbmZpZ1Byb3BlcnR5IHwgdW5kZWZpbmVkO1xuICBsZXQgbW9kZWw6IHNhZ2VtYWtlci5DZm5Nb2RlbDtcblxuICBpZiAodnBjKSB7XG4gICAgY29uc3QgbW9kZWxEZWZhdWx0U2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cChzY29wZSwgJ1JlcGxhY2VNb2RlbERlZmF1bHRTZWN1cml0eUdyb3VwJywge1xuICAgICAgdnBjLFxuICAgICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIEFsbG93IGh0dHBzIHRyYWZmaWMgZnJvbSB3aXRoaW4gdGhlIFZQQ1xuICAgIG1vZGVsRGVmYXVsdFNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoZWMyLlBlZXIuaXB2NCh2cGMudnBjQ2lkckJsb2NrKSwgZWMyLlBvcnQudGNwKDQ0MykpO1xuXG4gICAgY29uc3QgY2ZuU2VjdXJpdHlHcm91cCA9IG1vZGVsRGVmYXVsdFNlY3VyaXR5R3JvdXAubm9kZS5maW5kQ2hpbGQoJ1Jlc291cmNlJykgYXMgZWMyLkNmblNlY3VyaXR5R3JvdXA7XG4gICAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhjZm5TZWN1cml0eUdyb3VwLCBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnVzUnLFxuICAgICAgICByZWFzb246ICdFZ3Jlc3Mgb2YgMC4wLjAuMC8wIGlzIGRlZmF1bHQgYW5kIGdlbmVyYWxseSBjb25zaWRlcmVkIE9LJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnVzQwJyxcbiAgICAgICAgcmVhc29uOiAnRWdyZXNzIElQUHJvdG9jb2wgb2YgLTEgaXMgZGVmYXVsdCBhbmQgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgT0snLFxuICAgICAgfVxuICAgIF0pO1xuXG4gICAgLy8gVGhyb3cgYW4gZXJyb3IgaWYgdGhlIFZQQyBkb2VzIG5vdCBjb250YWluIHByaXZhdGUgb3IgaXNvbGF0ZWQgc3VibmV0c1xuICAgIGlmICh2cGMucHJpdmF0ZVN1Ym5ldHMubGVuZ3RoID09PSAwICYmIHZwYy5pc29sYXRlZFN1Ym5ldHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBFcnJvcignVlBDIG11c3QgY29udGFpbiBwcml2YXRlIG9yIGlzb2xhdGVkIHN1Ym5ldHMgdG8gZGVwbG95IHRoZSBTYWdlbWFrZXIgZW5kcG9pbnQgaW4gYSB2cGMnKTtcbiAgICB9XG5cbiAgICB2cGNDb25maWcgPSB7XG4gICAgICAvLyBkZWZhdWx0IFN1Ym5ldFR5cGUuUFJJVkFURSAob3IgSVNPTEFURUQgb3IgUFVCTElDIGlmIHRoZXJlIGFyZSBubyBQUklWQVRFIHN1Ym5ldHMpXG4gICAgICAvLyBTbywgcHJpdmF0ZSBzdWJuZXRzIHdpbGwgYmUgdXNlZCBpZiBwcm92aWRlZCBieSBjdXN0b21lci4gT3RoZXJ3aXNlLCB1c2UgdGhlIGRlZmF1bHQgaXNvbGF0ZWQgc3VibmV0cyxcbiAgICAgIHN1Ym5ldHM6IHZwYy5zZWxlY3RTdWJuZXRzKHtcbiAgICAgICAgb25lUGVyQXo6IHRydWUsXG4gICAgICB9KS5zdWJuZXRJZHMsXG4gICAgICBzZWN1cml0eUdyb3VwSWRzOiBbbW9kZWxEZWZhdWx0U2VjdXJpdHlHcm91cC5zZWN1cml0eUdyb3VwSWRdLFxuICAgIH07XG4gIH1cblxuICBpZiAobW9kZWxQcm9wcy5wcmltYXJ5Q29udGFpbmVyKSB7XG4gICAgLy8gR2V0IHVzZXIgcHJvdmlkZWQgTW9kZWwncyBwcmltYXJ5IGNvbnRhaW5lclxuICAgIHByaW1hcnlDb250YWluZXIgPSBtb2RlbFByb3BzLnByaW1hcnlDb250YWluZXIgYXMgc2FnZW1ha2VyLkNmbk1vZGVsLkNvbnRhaW5lckRlZmluaXRpb25Qcm9wZXJ0eTtcbiAgICAvLyBHZXQgZGVmYXVsdCBNb2RlbCBwcm9wc1xuICAgIGZpbmFsTW9kZWxQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoRGVmYXVsdFNhZ2VtYWtlck1vZGVsUHJvcHMocm9sZS5yb2xlQXJuLCBwcmltYXJ5Q29udGFpbmVyLCB2cGNDb25maWcpLCBtb2RlbFByb3BzKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgU2FnZW1ha2VyJ3MgTW9kZWxcbiAgICBtb2RlbCA9IG5ldyBzYWdlbWFrZXIuQ2ZuTW9kZWwoc2NvcGUsICdTYWdlbWFrZXJNb2RlbCcsIGZpbmFsTW9kZWxQcm9wcyk7XG4gICAgLy8gQWRkIGRlcGVuZGVuY3kgb24gdGhlIFNhZ2VtYWtlcidzIHJvbGVcbiAgICBtb2RlbC5ub2RlLmFkZERlcGVuZGVuY3kocm9sZSk7XG5cbiAgICByZXR1cm4gbW9kZWw7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgRXJyb3IoJ1lvdSBuZWVkIHRvIHByb3ZpZGUgYXQgbGVhc3QgcHJpbWFyeUNvbnRhaW5lciB0byBjcmVhdGUgU2FnZW1ha2VyIE1vZGVsJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2FnZW1ha2VyRW5kcG9pbnRDb25maWcoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGlkOiBzdHJpbmcsXG4gIG1vZGVsTmFtZTogc3RyaW5nLFxuICBlbmRwb2ludENvbmZpZ1Byb3BzPzogc2FnZW1ha2VyLkNmbkVuZHBvaW50Q29uZmlnUHJvcHNcbik6IHNhZ2VtYWtlci5DZm5FbmRwb2ludENvbmZpZyB7XG4gIGxldCBmaW5hbEVuZHBvaW50Q29uZmlnUHJvcHM6IHNhZ2VtYWtlci5DZm5FbmRwb2ludENvbmZpZ1Byb3BzO1xuICBsZXQga21zS2V5SWQ6IHN0cmluZztcbiAgbGV0IGVuZHBvaW50Q29uZmlnOiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRDb25maWc7XG5cbiAgLy8gQ3JlYXRlIGVuY3J5cHRpb24ga2V5IGlmIG9uZSBpcyBub3QgcHJvdmlkZWRcbiAgaWYgKGVuZHBvaW50Q29uZmlnUHJvcHMgJiYgZW5kcG9pbnRDb25maWdQcm9wcy5rbXNLZXlJZCkge1xuICAgIGttc0tleUlkID0gZW5kcG9pbnRDb25maWdQcm9wcy5rbXNLZXlJZDtcbiAgfSBlbHNlIHtcbiAgICBrbXNLZXlJZCA9IGJ1aWxkRW5jcnlwdGlvbktleShzY29wZSwgaWQpLmtleUlkO1xuICB9XG5cbiAgLy8gT3ZlcndyaXRlIGRlZmF1bHQgRW5kcG9pbnRDb25maWcgcHJvcGVydGllc1xuICBmaW5hbEVuZHBvaW50Q29uZmlnUHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKERlZmF1bHRTYWdlbWFrZXJFbmRwb2ludENvbmZpZ1Byb3BzKG1vZGVsTmFtZSwga21zS2V5SWQpLCBlbmRwb2ludENvbmZpZ1Byb3BzKTtcblxuICAvLyBDcmVhdGUgdGhlIFNhZ2VtYWtlcidzIEVuZHBvaW50Q29uZmlnXG4gIGVuZHBvaW50Q29uZmlnID0gbmV3IHNhZ2VtYWtlci5DZm5FbmRwb2ludENvbmZpZyhzY29wZSwgJ1NhZ2VtYWtlckVuZHBvaW50Q29uZmlnJywgZmluYWxFbmRwb2ludENvbmZpZ1Byb3BzKTtcblxuICByZXR1cm4gZW5kcG9pbnRDb25maWc7XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNhZ2VtYWtlckVuZHBvaW50KFxuICBzY29wZTogQ29uc3RydWN0LFxuICBlbmRwb2ludENvbmZpZ05hbWU6IHN0cmluZyxcbiAgZW5kcG9pbnRQcm9wcz86IHNhZ2VtYWtlci5DZm5FbmRwb2ludFByb3BzXG4pOiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnQge1xuICBsZXQgZmluYWxFbmRwb2ludFByb3BzOiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRQcm9wcztcbiAgbGV0IGVuZHBvaW50OiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnQ7XG5cbiAgLy8gT3ZlcndyaXRlIGRlZmF1bHQgRW5kcG9pbnQgcHJvcGVydGllc1xuICBmaW5hbEVuZHBvaW50UHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKERlZmF1bHRTYWdlbWFrZXJFbmRwb2ludFByb3BzKGVuZHBvaW50Q29uZmlnTmFtZSksIGVuZHBvaW50UHJvcHMpO1xuXG4gIC8vIENyZWF0ZSB0aGUgU2FnZW1ha2VyJ3MgRW5kcG9pbnRcbiAgZW5kcG9pbnQgPSBuZXcgc2FnZW1ha2VyLkNmbkVuZHBvaW50KHNjb3BlLCAnU2FnZW1ha2VyRW5kcG9pbnQnLCBmaW5hbEVuZHBvaW50UHJvcHMpO1xuXG4gIHJldHVybiBlbmRwb2ludDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYWdlbWFrZXJQcm9wcyB7XG4gIHJlYWRvbmx5IGV4aXN0aW5nU2FnZW1ha2VyRW5kcG9pbnRPYmo/OiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnQsXG4gIHJlYWRvbmx5IGVuZHBvaW50UHJvcHM/OiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRQcm9wcyxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENoZWNrU2FnZW1ha2VyUHJvcHMocHJvcHNPYmplY3Q6IFNhZ2VtYWtlclByb3BzIHwgYW55KSB7XG4gIGxldCBlcnJvck1lc3NhZ2VzID0gJyc7XG4gIGxldCBlcnJvckZvdW5kID0gZmFsc2U7XG5cbiAgaWYgKHByb3BzT2JqZWN0LmV4aXN0aW5nU2FnZW1ha2VyRW5kcG9pbnRPYmogJiYgcHJvcHNPYmplY3QuZW5kcG9pbnRQcm9wcykge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgZW5kcG9pbnRQcm9wcyBvciBleGlzdGluZ1NhZ2VtYWtlckVuZHBvaW50T2JqLCBidXQgbm90IGJvdGguXFxuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChlcnJvckZvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZXMpO1xuICB9XG59XG4iXX0=
@@ -62,7 +62,7 @@ export interface BuildTopicResponse {
62
62
  /**
63
63
  * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
64
64
  */
65
- export declare function buildTopic(scope: Construct, props: BuildTopicProps): BuildTopicResponse;
65
+ export declare function buildTopic(scope: Construct, id: string, props: BuildTopicProps): BuildTopicResponse;
66
66
  export interface SnsProps {
67
67
  readonly topicProps?: sns.TopicProps;
68
68
  readonly existingTopicObj?: sns.Topic;
package/lib/sns-helper.js CHANGED
@@ -80,7 +80,7 @@ function applySecureTopicPolicy(topic) {
80
80
  /**
81
81
  * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
82
82
  */
83
- function buildTopic(scope, props) {
83
+ function buildTopic(scope, id, props) {
84
84
  if (!props.existingTopicObj) {
85
85
  // Setup the topic properties
86
86
  const snsTopicProps = utils_1.consolidateProps(sns_defaults_1.DefaultSnsTopicProps, props.topicProps);
@@ -95,7 +95,7 @@ function buildTopic(scope, props) {
95
95
  snsTopicProps.masterKey = props.encryptionKey;
96
96
  }
97
97
  else if (props.encryptionKeyProps || props.enableEncryptionWithCustomerManagedKey === true) {
98
- snsTopicProps.masterKey = kms_helper_1.buildEncryptionKey(scope, props.encryptionKeyProps);
98
+ snsTopicProps.masterKey = kms_helper_1.buildEncryptionKey(scope, id, props.encryptionKeyProps);
99
99
  }
100
100
  else {
101
101
  snsTopicProps.masterKey = kms.Alias.fromAliasName(scope, 'aws-managed-key', 'alias/aws/sns');
@@ -139,4 +139,4 @@ function CheckSnsProps(propsObject) {
139
139
  }
140
140
  }
141
141
  exports.CheckSnsProps = CheckSnsProps;
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25zLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNucy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUFFSDs7O0dBR0c7QUFFSCxVQUFVO0FBQ1YsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyxpREFBc0Q7QUFDdEQsNkNBQWtEO0FBQ2xELG1DQUF5RDtBQUN6RCxpREFBOEY7QUFDOUYsNkNBQW9DO0FBK0NwQyxTQUFTLHNCQUFzQixDQUFDLEtBQWdCO0lBRTlDLDZGQUE2RjtJQUM3RixLQUFLLENBQUMsbUJBQW1CLENBQ3ZCLElBQUkseUJBQWUsQ0FBQztRQUNsQixHQUFHLEVBQUUsc0JBQXNCO1FBQzNCLFNBQVMsRUFBRTtZQUNULEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRTtTQUNwQjtRQUNELE9BQU8sRUFBRTtZQUNQLGFBQWE7WUFDYixzQkFBc0I7WUFDdEIsd0JBQXdCO1lBQ3hCLGlCQUFpQjtZQUNqQiw4QkFBOEI7WUFDOUIsd0JBQXdCO1lBQ3hCLGFBQWE7WUFDYixtQkFBbUI7WUFDbkIsZUFBZTtTQUNoQjtRQUNELFVBQVUsRUFBRSxDQUFDLElBQUksMEJBQWdCLENBQUMsbUJBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0QsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztRQUNwQixVQUFVLEVBQ0o7WUFDRSxZQUFZLEVBQUU7Z0JBQ1osaUJBQWlCLEVBQUUsbUJBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTzthQUMzQztTQUNGO0tBQ1IsQ0FBQyxDQUNILENBQUM7SUFFRiw4REFBOEQ7SUFDOUQsS0FBSyxDQUFDLG1CQUFtQixDQUN2QixJQUFJLHlCQUFlLENBQUM7UUFDbEIsR0FBRyxFQUFFLFdBQVc7UUFDaEIsU0FBUyxFQUFFO1lBQ1QsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFO1NBQ3BC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RyxJQUFJLENBQUM7S0FDbkI7SUFFRCxJQUFJLFdBQVcsQ0FBQyxVQUFVLEVBQUUsU0FBUyxJQUFJLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRTtRQUN2RSxhQUFhLElBQUksb0ZBQW9GLENBQUM7UUFDdEcsVUFBVSxHQUFHLElBQUksQ0FBQztLQUNuQjtJQUVELElBQUksV0FBVyxDQUFDLGFBQWEsSUFBSSxXQUFXLENBQUMsa0JBQWtCLEVBQUU7UUFDL0QsYUFBYSxJQUFJLDZFQUE2RSxDQUFDO1FBQy9GLFVBQVUsR0FBRyxJQUFJLENBQUM7S0FDbkI7SUFFRCxJQUFJLFVBQVUsRUFBRTtRQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDaEM7QUFDSCxDQUFDO0FBN0JELHNDQTZCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qXG4gKiAgVGhlIGZ1bmN0aW9ucyBmb3VuZCBoZXJlIGluIHRoZSBjb3JlIGxpYnJhcnkgYXJlIGZvciBpbnRlcm5hbCB1c2UgYW5kIGNhbiBiZSBjaGFuZ2VkXG4gKiAgb3IgcmVtb3ZlZCBvdXRzaWRlIG9mIGEgbWFqb3IgcmVsZWFzZS4gV2UgcmVjb21tZW5kIGFnYWluc3QgY2FsbGluZyB0aGVtIGRpcmVjdGx5IGZyb20gY2xpZW50IGNvZGUuXG4gKi9cblxuLy8gSW1wb3J0c1xuaW1wb3J0ICogYXMgc25zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zbnMnO1xuaW1wb3J0ICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0IHsgRGVmYXVsdFNuc1RvcGljUHJvcHMgfSBmcm9tICcuL3Nucy1kZWZhdWx0cyc7XG5pbXBvcnQgeyBidWlsZEVuY3J5cHRpb25LZXkgfSBmcm9tICcuL2ttcy1oZWxwZXInO1xuaW1wb3J0IHsgY29uc29saWRhdGVQcm9wcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQsIEFueVByaW5jaXBhbCwgRWZmZWN0LCBBY2NvdW50UHJpbmNpcGFsIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbi8vIE5vdGU6IFRvIGVuc3VyZSBDREt2MiBjb21wYXRpYmlsaXR5LCBrZWVwIHRoZSBpbXBvcnQgc3RhdGVtZW50IGZvciBDb25zdHJ1Y3Qgc2VwYXJhdGVcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkVG9waWNQcm9wcyB7XG4gICAgLyoqXG4gICAgICogRXhpc3RpbmcgU05TIHRvcGljIHRvIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCB0b3BpYy4gUHJvdmlkaW5nIGJvdGggdGhpcyBhbmQgYHRvcGljUHJvcHNgIHdpbGwgY2F1c2UgYW4gZXJyb3IuXG4gICAgICogSWYgdGhlIFNOUyBUb3BpYyBpcyBlbmNyeXB0ZWQgd2l0aCBhIEN1c3RvbWVyLU1hbmFnZWQgbWFuYWdlZCBLTVMga2V5LCB0aGUga2V5IG11c3QgYmUgc3BlY2lmaWVkIGluIHRoZVxuICAgICAqIGBleGlzdGluZ1RvcGljRW5jcnlwdGlvbktleWAgcHJvcGVydHkuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcHMgYXJlIHVzZWRcbiAgICAgKi9cbiAgICByZWFkb25seSBleGlzdGluZ1RvcGljT2JqPzogc25zLlRvcGljO1xuICAgICAvKipcbiAgICAgICogSWYgYW4gZXhpc3RpbmcgdG9waWMgaXMgcHJvdmlkZWQgaW4gdGhlIGBleGlzdGluZ1RvcGljT2JqYCBwcm9wZXJ0eSwgYW5kIHRoYXQgdG9waWMgaXMgZW5jcnlwdGVkIHdpdGggYSBjdXN0b21lciBtYW5hZ2VkIEtNUyBrZXksXG4gICAgICAqIHRoaXMgcHJvcGVydHkgYWxzbyBuZWVkcyB0byBiZSBzZXQgd2l0aCBzYW1lIENNSy5cbiAgICAgICpcbiAgICAgICogQGRlZmF1bHQgLSBOb25lXG4gICAgICAqL1xuICAgIHJlYWRvbmx5IGV4aXN0aW5nVG9waWNFbmNyeXB0aW9uS2V5Pzoga21zLktleTtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbCB1c2VyIHByb3ZpZGVkIHByb3BzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BzIGZvciB0aGUgU05TIHRvcGljLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHByb3BzIGFyZSB1c2VkLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHRvcGljUHJvcHM/OiBzbnMuVG9waWNQcm9wcztcbiAgICAvKipcbiAgICAgKiBJZiBubyBrZXkgaXMgcHJvdmlkZWQsIHRoaXMgZmxhZyBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRvcGljIGlzIGVuY3J5cHRlZCB3aXRoIGEgbmV3IENNSyBvciBhbiBBV1MgbWFuYWdlZCBrZXkuXG4gICAgICogVGhpcyBmbGFnIGlzIGlnbm9yZWQgaWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZWQ6IHRvcGljUHJvcHMubWFzdGVyS2V5LCBlbmNyeXB0aW9uS2V5IG9yIGVuY3J5cHRpb25LZXlQcm9wcy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IC0gRmFsc2UgaWYgdG9waWNQcm9wcy5tYXN0ZXJLZXksIGVuY3J5cHRpb25LZXksIGFuZCBlbmNyeXB0aW9uS2V5UHJvcHMgYXJlIGFsbCB1bmRlZmluZWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZW5hYmxlRW5jcnlwdGlvbldpdGhDdXN0b21lck1hbmFnZWRLZXk/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEFuIG9wdGlvbmFsLCBpbXBvcnRlZCBlbmNyeXB0aW9uIGtleSB0byBlbmNyeXB0IHRoZSBTTlMgdG9waWMgd2l0aC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGVuY3J5cHRpb25LZXk/OiBrbXMuS2V5O1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIHVzZXIgcHJvdmlkZWQgcHJvcGVydGllcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIGZvciB0aGUgS01TIGVuY3J5cHRpb24ga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGUgU05TIHRvcGljIHdpdGguXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICAgKi9cbiAgICByZWFkb25seSBlbmNyeXB0aW9uS2V5UHJvcHM/OiBrbXMuS2V5UHJvcHM7XG59XG5cbmZ1bmN0aW9uIGFwcGx5U2VjdXJlVG9waWNQb2xpY3kodG9waWM6IHNucy5Ub3BpYyk6IHZvaWQge1xuXG4gIC8vIEFwcGx5IHRvcGljIHBvbGljeSB0byBlbmZvcmNlIG9ubHkgdGhlIHRvcGljIG93bmVyIGNhbiBwdWJsaXNoIGFuZCBzdWJzY3JpYmUgdG8gdGhpcyB0b3BpY1xuICB0b3BpYy5hZGRUb1Jlc291cmNlUG9saWN5KFxuICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgc2lkOiAnVG9waWNPd25lck9ubHlBY2Nlc3MnLFxuICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgIGAke3RvcGljLnRvcGljQXJufWBcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgIFwiU05TOlB1Ymxpc2hcIixcbiAgICAgICAgXCJTTlM6UmVtb3ZlUGVybWlzc2lvblwiLFxuICAgICAgICBcIlNOUzpTZXRUb3BpY0F0dHJpYnV0ZXNcIixcbiAgICAgICAgXCJTTlM6RGVsZXRlVG9waWNcIixcbiAgICAgICAgXCJTTlM6TGlzdFN1YnNjcmlwdGlvbnNCeVRvcGljXCIsXG4gICAgICAgIFwiU05TOkdldFRvcGljQXR0cmlidXRlc1wiLFxuICAgICAgICBcIlNOUzpSZWNlaXZlXCIsXG4gICAgICAgIFwiU05TOkFkZFBlcm1pc3Npb25cIixcbiAgICAgICAgXCJTTlM6U3Vic2NyaWJlXCJcbiAgICAgIF0sXG4gICAgICBwcmluY2lwYWxzOiBbbmV3IEFjY291bnRQcmluY2lwYWwoU3RhY2sub2YodG9waWMpLmFjY291bnQpXSxcbiAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgY29uZGl0aW9uczpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgU3RyaW5nRXF1YWxzOiB7XG4gICAgICAgICAgICAgICAgXCJBV1M6U291cmNlT3duZXJcIjogU3RhY2sub2YodG9waWMpLmFjY291bnRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIH0pXG4gICk7XG5cbiAgLy8gQXBwbHkgVG9waWMgcG9saWN5IHRvIGVuZm9yY2UgZW5jcnlwdGlvbiBvZiBkYXRhIGluIHRyYW5zaXRcbiAgdG9waWMuYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHNpZDogJ0h0dHBzT25seScsXG4gICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgYCR7dG9waWMudG9waWNBcm59YFxuICAgICAgXSxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgXCJTTlM6UHVibGlzaFwiLFxuICAgICAgICBcIlNOUzpSZW1vdmVQZXJtaXNzaW9uXCIsXG4gICAgICAgIFwiU05TOlNldFRvcGljQXR0cmlidXRlc1wiLFxuICAgICAgICBcIlNOUzpEZWxldGVUb3BpY1wiLFxuICAgICAgICBcIlNOUzpMaXN0U3Vic2NyaXB0aW9uc0J5VG9waWNcIixcbiAgICAgICAgXCJTTlM6R2V0VG9waWNBdHRyaWJ1dGVzXCIsXG4gICAgICAgIFwiU05TOlJlY2VpdmVcIixcbiAgICAgICAgXCJTTlM6QWRkUGVybWlzc2lvblwiLFxuICAgICAgICBcIlNOUzpTdWJzY3JpYmVcIlxuICAgICAgXSxcbiAgICAgIHByaW5jaXBhbHM6IFtuZXcgQW55UHJpbmNpcGFsKCldLFxuICAgICAgZWZmZWN0OiBFZmZlY3QuREVOWSxcbiAgICAgIGNvbmRpdGlvbnM6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEJvb2w6IHtcbiAgICAgICAgICAgICAgICAnYXdzOlNlY3VyZVRyYW5zcG9ydCc6ICdmYWxzZSdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIH0pXG4gICk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRUb3BpY1Jlc3BvbnNlIHtcbiAgcmVhZG9ubHkgdG9waWM6IHNucy5Ub3BpYyxcbiAgcmVhZG9ubHkga2V5Pzoga21zLktleVxufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFRvcGljKHNjb3BlOiBDb25zdHJ1Y3QsIHByb3BzOiBCdWlsZFRvcGljUHJvcHMpOiBCdWlsZFRvcGljUmVzcG9uc2Uge1xuICBpZiAoIXByb3BzLmV4aXN0aW5nVG9waWNPYmopIHtcbiAgICAvLyBTZXR1cCB0aGUgdG9waWMgcHJvcGVydGllc1xuICAgIGNvbnN0IHNuc1RvcGljUHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKERlZmF1bHRTbnNUb3BpY1Byb3BzLCBwcm9wcy50b3BpY1Byb3BzKTtcblxuICAgIGlmICgocHJvcHMudG9waWNQcm9wcz8ubWFzdGVyS2V5IHx8IHByb3BzLmVuY3J5cHRpb25LZXkgfHwgcHJvcHMuZW5jcnlwdGlvbktleVByb3BzKSAmJiBwcm9wcy5lbmFibGVFbmNyeXB0aW9uV2l0aEN1c3RvbWVyTWFuYWdlZEtleSA9PT0gdHJ1ZSkge1xuICAgICAgcHJpbnRXYXJuaW5nKFwiSWdub3JpbmcgZW5hYmxlRW5jcnlwdGlvbldpdGhDdXN0b21lck1hbmFnZWRLZXkgYmVjYXVzZSBvbmUgb2YgdG9waWNQcm9wcy5tYXN0ZXJLZXksIGVuY3J5cHRpb25LZXksIG9yIGVuY3J5cHRpb25LZXlQcm9wcyB3YXMgYWxyZWFkeSBzcGVjaWZpZWRcIik7XG4gICAgfVxuXG4gICAgLy8gU2V0IGVuY3J5cHRpb24gcHJvcGVydGllc1xuICAgIGlmIChwcm9wcy50b3BpY1Byb3BzPy5tYXN0ZXJLZXkpIHtcbiAgICAgIHNuc1RvcGljUHJvcHMubWFzdGVyS2V5ID0gcHJvcHMudG9waWNQcm9wcz8ubWFzdGVyS2V5O1xuICAgIH0gZWxzZSBpZiAocHJvcHMuZW5jcnlwdGlvbktleSkge1xuICAgICAgc25zVG9waWNQcm9wcy5tYXN0ZXJLZXkgPSBwcm9wcy5lbmNyeXB0aW9uS2V5O1xuICAgIH0gZWxzZSBpZiAocHJvcHMuZW5jcnlwdGlvbktleVByb3BzIHx8IHByb3BzLmVuYWJsZUVuY3J5cHRpb25XaXRoQ3VzdG9tZXJNYW5hZ2VkS2V5ID09PSB0cnVlKSB7XG4gICAgICBzbnNUb3BpY1Byb3BzLm1hc3RlcktleSA9IGJ1aWxkRW5jcnlwdGlvbktleShzY29wZSwgcHJvcHMuZW5jcnlwdGlvbktleVByb3BzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc25zVG9waWNQcm9wcy5tYXN0ZXJLZXkgPSBrbXMuQWxpYXMuZnJvbUFsaWFzTmFtZShzY29wZSwgJ2F3cy1tYW5hZ2VkLWtleScsICdhbGlhcy9hd3Mvc25zJyk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBTTlMgVG9waWNcbiAgICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OlM2MzI3KSAtIFRoZSBtYXN0ZXJLZXkgaXMgc2V0IGluIHRoZSBpZiBzdGF0ZW1lbnQgYWJvdmUsIFNPTkFSIGlzXG4gICAgLy8gbm90IGNhdGNoaW5nIGl0LiBCZWhhdmlvciBpcyBjb25maXJtZWQgaW4gdGhlXG4gICAgLy8gJ1Rlc3QgZGVwbG95bWVudCB3aXRoIG5vIHByb3BlcnRpZXMgdXNpbmcgQVdTIE1hbmFnZWQgS01TIEtleScgdW5pdCB0ZXN0XG4gICAgY29uc3QgdG9waWM6IHNucy5Ub3BpYyA9IG5ldyBzbnMuVG9waWMoc2NvcGUsICdTbnNUb3BpYycsIHNuc1RvcGljUHJvcHMpOyAvLyBOT1NPTkFSXG5cbiAgICBhcHBseVNlY3VyZVRvcGljUG9saWN5KHRvcGljKTtcblxuICAgIHJldHVybiB7IHRvcGljLCBrZXk6IHNuc1RvcGljUHJvcHMubWFzdGVyS2V5IH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHsgdG9waWM6IHByb3BzLmV4aXN0aW5nVG9waWNPYmosIGtleTogcHJvcHMuZXhpc3RpbmdUb3BpY0VuY3J5cHRpb25LZXkgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNuc1Byb3BzIHtcbiAgcmVhZG9ubHkgdG9waWNQcm9wcz86IHNucy5Ub3BpY1Byb3BzLFxuICByZWFkb25seSBleGlzdGluZ1RvcGljT2JqPzogc25zLlRvcGljLFxuICByZWFkb25seSBleGlzdGluZ1RvcGljT2JqZWN0Pzogc25zLlRvcGljLFxuICByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLktleSxcbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleVByb3BzPzoga21zLktleVByb3BzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDaGVja1Nuc1Byb3BzKHByb3BzT2JqZWN0OiBTbnNQcm9wcyB8IGFueSkge1xuICBsZXQgZXJyb3JNZXNzYWdlcyA9ICcnO1xuICBsZXQgZXJyb3JGb3VuZCA9IGZhbHNlO1xuXG4gIC8vIEZhcmdhdGVUb1NucyB1c2VkIFRvcGljT2JqZWN0IGluc3RlYWQgb2YgVG9waWNPYmogLSB0byBmaXggd291bGQgYmUgYSBicmVha2luZyBjaGFuZ2UsIHNvIHdlXG4gIC8vIG11c3QgbG9vayBmb3IgYm90aCBoZXJlLlxuICBpZiAocHJvcHNPYmplY3QudG9waWNQcm9wcyAmJiAocHJvcHNPYmplY3QuZXhpc3RpbmdUb3BpY09iaiB8fCBwcm9wc09iamVjdC5leGlzdGluZ1RvcGljT2JqZWN0KSkge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgdG9waWNQcm9wcyBvciBleGlzdGluZ1RvcGljT2JqLCBidXQgbm90IGJvdGguXFxuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChwcm9wc09iamVjdC50b3BpY1Byb3BzPy5tYXN0ZXJLZXkgJiYgcHJvcHNPYmplY3QuZW5jcnlwdGlvbktleSkge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgdG9waWNQcm9wcy5tYXN0ZXJLZXkgb3IgZW5jcnlwdGlvbktleSwgYnV0IG5vdCBib3RoLlxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAocHJvcHNPYmplY3QudG9waWNQcm9wcz8ubWFzdGVyS2V5ICYmIHByb3BzT2JqZWN0LmVuY3J5cHRpb25LZXlQcm9wcykge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgdG9waWNQcm9wcy5tYXN0ZXJLZXkgb3IgZW5jcnlwdGlvbktleVByb3BzLCBidXQgbm90IGJvdGguXFxuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChwcm9wc09iamVjdC5lbmNyeXB0aW9uS2V5ICYmIHByb3BzT2JqZWN0LmVuY3J5cHRpb25LZXlQcm9wcykge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgZW5jcnlwdGlvbktleSBvciBlbmNyeXB0aW9uS2V5UHJvcHMsIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGVycm9yRm91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlcyk7XG4gIH1cbn1cbiJdfQ==
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25zLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNucy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUFFSDs7O0dBR0c7QUFFSCxVQUFVO0FBQ1YsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyxpREFBc0Q7QUFDdEQsNkNBQWtEO0FBQ2xELG1DQUF5RDtBQUN6RCxpREFBOEY7QUFDOUYsNkNBQW9DO0FBK0NwQyxTQUFTLHNCQUFzQixDQUFDLEtBQWdCO0lBRTlDLDZGQUE2RjtJQUM3RixLQUFLLENBQUMsbUJBQW1CLENBQ3ZCLElBQUkseUJBQWUsQ0FBQztRQUNsQixHQUFHLEVBQUUsc0JBQXNCO1FBQzNCLFNBQVMsRUFBRTtZQUNULEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRTtTQUNwQjtRQUNELE9BQU8sRUFBRTtZQUNQLGFBQWE7WUFDYixzQkFBc0I7WUFDdEIsd0JBQXdCO1lBQ3hCLGlCQUFpQjtZQUNqQiw4QkFBOEI7WUFDOUIsd0JBQXdCO1lBQ3hCLGFBQWE7WUFDYixtQkFBbUI7WUFDbkIsZUFBZTtTQUNoQjtRQUNELFVBQVUsRUFBRSxDQUFDLElBQUksMEJBQWdCLENBQUMsbUJBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0QsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztRQUNwQixVQUFVLEVBQ0o7WUFDRSxZQUFZLEVBQUU7Z0JBQ1osaUJBQWlCLEVBQUUsbUJBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTzthQUMzQztTQUNGO0tBQ1IsQ0FBQyxDQUNILENBQUM7SUFFRiw4REFBOEQ7SUFDOUQsS0FBSyxDQUFDLG1CQUFtQixDQUN2QixJQUFJLHlCQUFlLENBQUM7UUFDbEIsR0FBRyxFQUFFLFdBQVc7UUFDaEIsU0FBUyxFQUFFO1lBQ1QsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFO1NBQ3BC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LENBQUM7UUFDakcsVUFBVSxHQUFHLElBQUksQ0FBQztLQUNuQjtJQUVELElBQUksV0FBVyxDQUFDLFVBQVUsRUFBRSxTQUFTLElBQUksV0FBVyxDQUFDLGtCQUFrQixFQUFFO1FBQ3ZFLGFBQWEsSUFBSSxvRkFBb0YsQ0FBQztRQUN0RyxVQUFVLEdBQUcsSUFBSSxDQUFDO0tBQ25CO0lBRUQsSUFBSSxXQUFXLENBQUMsYUFBYSxJQUFJLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRTtRQUMvRCxhQUFhLElBQUksNkVBQTZFLENBQUM7UUFDL0YsVUFBVSxHQUFHLElBQUksQ0FBQztLQUNuQjtJQUVELElBQUksVUFBVSxFQUFFO1FBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUNoQztBQUNILENBQUM7QUE3QkQsc0NBNkJDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLypcbiAqICBUaGUgZnVuY3Rpb25zIGZvdW5kIGhlcmUgaW4gdGhlIGNvcmUgbGlicmFyeSBhcmUgZm9yIGludGVybmFsIHVzZSBhbmQgY2FuIGJlIGNoYW5nZWRcbiAqICBvciByZW1vdmVkIG91dHNpZGUgb2YgYSBtYWpvciByZWxlYXNlLiBXZSByZWNvbW1lbmQgYWdhaW5zdCBjYWxsaW5nIHRoZW0gZGlyZWN0bHkgZnJvbSBjbGllbnQgY29kZS5cbiAqL1xuXG4vLyBJbXBvcnRzXG5pbXBvcnQgKiBhcyBzbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucyc7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgeyBEZWZhdWx0U25zVG9waWNQcm9wcyB9IGZyb20gJy4vc25zLWRlZmF1bHRzJztcbmltcG9ydCB7IGJ1aWxkRW5jcnlwdGlvbktleSB9IGZyb20gJy4va21zLWhlbHBlcic7XG5pbXBvcnQgeyBjb25zb2xpZGF0ZVByb3BzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCwgQW55UHJpbmNpcGFsLCBFZmZlY3QsIEFjY291bnRQcmluY2lwYWwgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuLy8gTm90ZTogVG8gZW5zdXJlIENES3YyIGNvbXBhdGliaWxpdHksIGtlZXAgdGhlIGltcG9ydCBzdGF0ZW1lbnQgZm9yIENvbnN0cnVjdCBzZXBhcmF0ZVxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRUb3BpY1Byb3BzIHtcbiAgICAvKipcbiAgICAgKiBFeGlzdGluZyBTTlMgdG9waWMgdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IHRvcGljLiBQcm92aWRpbmcgYm90aCB0aGlzIGFuZCBgdG9waWNQcm9wc2Agd2lsbCBjYXVzZSBhbiBlcnJvci5cbiAgICAgKiBJZiB0aGUgU05TIFRvcGljIGlzIGVuY3J5cHRlZCB3aXRoIGEgQ3VzdG9tZXItTWFuYWdlZCBtYW5hZ2VkIEtNUyBrZXksIHRoZSBrZXkgbXVzdCBiZSBzcGVjaWZpZWQgaW4gdGhlXG4gICAgICogYGV4aXN0aW5nVG9waWNFbmNyeXB0aW9uS2V5YCBwcm9wZXJ0eS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBwcm9wcyBhcmUgdXNlZFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGV4aXN0aW5nVG9waWNPYmo/OiBzbnMuVG9waWM7XG4gICAgIC8qKlxuICAgICAgKiBJZiBhbiBleGlzdGluZyB0b3BpYyBpcyBwcm92aWRlZCBpbiB0aGUgYGV4aXN0aW5nVG9waWNPYmpgIHByb3BlcnR5LCBhbmQgdGhhdCB0b3BpYyBpcyBlbmNyeXB0ZWQgd2l0aCBhIGN1c3RvbWVyIG1hbmFnZWQgS01TIGtleSxcbiAgICAgICogdGhpcyBwcm9wZXJ0eSBhbHNvIG5lZWRzIHRvIGJlIHNldCB3aXRoIHNhbWUgQ01LLlxuICAgICAgKlxuICAgICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICAgICovXG4gICAgcmVhZG9ubHkgZXhpc3RpbmdUb3BpY0VuY3J5cHRpb25LZXk/OiBrbXMuS2V5O1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIHVzZXIgcHJvdmlkZWQgcHJvcHMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJvcHMgZm9yIHRoZSBTTlMgdG9waWMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcHMgYXJlIHVzZWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgdG9waWNQcm9wcz86IHNucy5Ub3BpY1Byb3BzO1xuICAgIC8qKlxuICAgICAqIElmIG5vIGtleSBpcyBwcm92aWRlZCwgdGhpcyBmbGFnIGRldGVybWluZXMgd2hldGhlciB0aGUgdG9waWMgaXMgZW5jcnlwdGVkIHdpdGggYSBuZXcgQ01LIG9yIGFuIEFXUyBtYW5hZ2VkIGtleS5cbiAgICAgKiBUaGlzIGZsYWcgaXMgaWdub3JlZCBpZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lZDogdG9waWNQcm9wcy5tYXN0ZXJLZXksIGVuY3J5cHRpb25LZXkgb3IgZW5jcnlwdGlvbktleVByb3BzLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgLSBGYWxzZSBpZiB0b3BpY1Byb3BzLm1hc3RlcktleSwgZW5jcnlwdGlvbktleSwgYW5kIGVuY3J5cHRpb25LZXlQcm9wcyBhcmUgYWxsIHVuZGVmaW5lZC5cbiAgICAgKi9cbiAgICByZWFkb25seSBlbmFibGVFbmNyeXB0aW9uV2l0aEN1c3RvbWVyTWFuYWdlZEtleT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQW4gb3B0aW9uYWwsIGltcG9ydGVkIGVuY3J5cHRpb24ga2V5IHRvIGVuY3J5cHQgdGhlIFNOUyB0b3BpYyB3aXRoLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgLSBOb25lXG4gICAgICovXG4gICAgcmVhZG9ubHkgZW5jcnlwdGlvbktleT86IGttcy5LZXk7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWwgdXNlciBwcm92aWRlZCBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgZm9yIHRoZSBLTVMgZW5jcnlwdGlvbiBrZXkgdXNlZCB0byBlbmNyeXB0IHRoZSBTTlMgdG9waWMgd2l0aC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGVuY3J5cHRpb25LZXlQcm9wcz86IGttcy5LZXlQcm9wcztcbn1cblxuZnVuY3Rpb24gYXBwbHlTZWN1cmVUb3BpY1BvbGljeSh0b3BpYzogc25zLlRvcGljKTogdm9pZCB7XG5cbiAgLy8gQXBwbHkgdG9waWMgcG9saWN5IHRvIGVuZm9yY2Ugb25seSB0aGUgdG9waWMgb3duZXIgY2FuIHB1Ymxpc2ggYW5kIHN1YnNjcmliZSB0byB0aGlzIHRvcGljXG4gIHRvcGljLmFkZFRvUmVzb3VyY2VQb2xpY3koXG4gICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICBzaWQ6ICdUb3BpY093bmVyT25seUFjY2VzcycsXG4gICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgYCR7dG9waWMudG9waWNBcm59YFxuICAgICAgXSxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgXCJTTlM6UHVibGlzaFwiLFxuICAgICAgICBcIlNOUzpSZW1vdmVQZXJtaXNzaW9uXCIsXG4gICAgICAgIFwiU05TOlNldFRvcGljQXR0cmlidXRlc1wiLFxuICAgICAgICBcIlNOUzpEZWxldGVUb3BpY1wiLFxuICAgICAgICBcIlNOUzpMaXN0U3Vic2NyaXB0aW9uc0J5VG9waWNcIixcbiAgICAgICAgXCJTTlM6R2V0VG9waWNBdHRyaWJ1dGVzXCIsXG4gICAgICAgIFwiU05TOlJlY2VpdmVcIixcbiAgICAgICAgXCJTTlM6QWRkUGVybWlzc2lvblwiLFxuICAgICAgICBcIlNOUzpTdWJzY3JpYmVcIlxuICAgICAgXSxcbiAgICAgIHByaW5jaXBhbHM6IFtuZXcgQWNjb3VudFByaW5jaXBhbChTdGFjay5vZih0b3BpYykuYWNjb3VudCldLFxuICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICBjb25kaXRpb25zOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAgICAgICBcIkFXUzpTb3VyY2VPd25lclwiOiBTdGFjay5vZih0b3BpYykuYWNjb3VudFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgfSlcbiAgKTtcblxuICAvLyBBcHBseSBUb3BpYyBwb2xpY3kgdG8gZW5mb3JjZSBlbmNyeXB0aW9uIG9mIGRhdGEgaW4gdHJhbnNpdFxuICB0b3BpYy5hZGRUb1Jlc291cmNlUG9saWN5KFxuICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgc2lkOiAnSHR0cHNPbmx5JyxcbiAgICAgIHJlc291cmNlczogW1xuICAgICAgICBgJHt0b3BpYy50b3BpY0Fybn1gXG4gICAgICBdLFxuICAgICAgYWN0aW9uczogW1xuICAgICAgICBcIlNOUzpQdWJsaXNoXCIsXG4gICAgICAgIFwiU05TOlJlbW92ZVBlcm1pc3Npb25cIixcbiAgICAgICAgXCJTTlM6U2V0VG9waWNBdHRyaWJ1dGVzXCIsXG4gICAgICAgIFwiU05TOkRlbGV0ZVRvcGljXCIsXG4gICAgICAgIFwiU05TOkxpc3RTdWJzY3JpcHRpb25zQnlUb3BpY1wiLFxuICAgICAgICBcIlNOUzpHZXRUb3BpY0F0dHJpYnV0ZXNcIixcbiAgICAgICAgXCJTTlM6UmVjZWl2ZVwiLFxuICAgICAgICBcIlNOUzpBZGRQZXJtaXNzaW9uXCIsXG4gICAgICAgIFwiU05TOlN1YnNjcmliZVwiXG4gICAgICBdLFxuICAgICAgcHJpbmNpcGFsczogW25ldyBBbnlQcmluY2lwYWwoKV0sXG4gICAgICBlZmZlY3Q6IEVmZmVjdC5ERU5ZLFxuICAgICAgY29uZGl0aW9uczpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQm9vbDoge1xuICAgICAgICAgICAgICAgICdhd3M6U2VjdXJlVHJhbnNwb3J0JzogJ2ZhbHNlJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgfSlcbiAgKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFRvcGljUmVzcG9uc2Uge1xuICByZWFkb25seSB0b3BpYzogc25zLlRvcGljLFxuICByZWFkb25seSBrZXk/OiBrbXMuS2V5XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVG9waWMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEJ1aWxkVG9waWNQcm9wcyk6IEJ1aWxkVG9waWNSZXNwb25zZSB7XG4gIGlmICghcHJvcHMuZXhpc3RpbmdUb3BpY09iaikge1xuICAgIC8vIFNldHVwIHRoZSB0b3BpYyBwcm9wZXJ0aWVzXG4gICAgY29uc3Qgc25zVG9waWNQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoRGVmYXVsdFNuc1RvcGljUHJvcHMsIHByb3BzLnRvcGljUHJvcHMpO1xuXG4gICAgaWYgKChwcm9wcy50b3BpY1Byb3BzPy5tYXN0ZXJLZXkgfHwgcHJvcHMuZW5jcnlwdGlvbktleSB8fCBwcm9wcy5lbmNyeXB0aW9uS2V5UHJvcHMpICYmIHByb3BzLmVuYWJsZUVuY3J5cHRpb25XaXRoQ3VzdG9tZXJNYW5hZ2VkS2V5ID09PSB0cnVlKSB7XG4gICAgICBwcmludFdhcm5pbmcoXCJJZ25vcmluZyBlbmFibGVFbmNyeXB0aW9uV2l0aEN1c3RvbWVyTWFuYWdlZEtleSBiZWNhdXNlIG9uZSBvZiB0b3BpY1Byb3BzLm1hc3RlcktleSwgZW5jcnlwdGlvbktleSwgb3IgZW5jcnlwdGlvbktleVByb3BzIHdhcyBhbHJlYWR5IHNwZWNpZmllZFwiKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgZW5jcnlwdGlvbiBwcm9wZXJ0aWVzXG4gICAgaWYgKHByb3BzLnRvcGljUHJvcHM/Lm1hc3RlcktleSkge1xuICAgICAgc25zVG9waWNQcm9wcy5tYXN0ZXJLZXkgPSBwcm9wcy50b3BpY1Byb3BzPy5tYXN0ZXJLZXk7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5lbmNyeXB0aW9uS2V5KSB7XG4gICAgICBzbnNUb3BpY1Byb3BzLm1hc3RlcktleSA9IHByb3BzLmVuY3J5cHRpb25LZXk7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5lbmNyeXB0aW9uS2V5UHJvcHMgfHwgcHJvcHMuZW5hYmxlRW5jcnlwdGlvbldpdGhDdXN0b21lck1hbmFnZWRLZXkgPT09IHRydWUpIHtcbiAgICAgIHNuc1RvcGljUHJvcHMubWFzdGVyS2V5ID0gYnVpbGRFbmNyeXB0aW9uS2V5KHNjb3BlLCBpZCwgcHJvcHMuZW5jcnlwdGlvbktleVByb3BzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc25zVG9waWNQcm9wcy5tYXN0ZXJLZXkgPSBrbXMuQWxpYXMuZnJvbUFsaWFzTmFtZShzY29wZSwgJ2F3cy1tYW5hZ2VkLWtleScsICdhbGlhcy9hd3Mvc25zJyk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBTTlMgVG9waWNcbiAgICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OlM2MzI3KSAtIFRoZSBtYXN0ZXJLZXkgaXMgc2V0IGluIHRoZSBpZiBzdGF0ZW1lbnQgYWJvdmUsIFNPTkFSIGlzXG4gICAgLy8gbm90IGNhdGNoaW5nIGl0LiBCZWhhdmlvciBpcyBjb25maXJtZWQgaW4gdGhlXG4gICAgLy8gJ1Rlc3QgZGVwbG95bWVudCB3aXRoIG5vIHByb3BlcnRpZXMgdXNpbmcgQVdTIE1hbmFnZWQgS01TIEtleScgdW5pdCB0ZXN0XG4gICAgY29uc3QgdG9waWM6IHNucy5Ub3BpYyA9IG5ldyBzbnMuVG9waWMoc2NvcGUsICdTbnNUb3BpYycsIHNuc1RvcGljUHJvcHMpOyAvLyBOT1NPTkFSXG5cbiAgICBhcHBseVNlY3VyZVRvcGljUG9saWN5KHRvcGljKTtcblxuICAgIHJldHVybiB7IHRvcGljLCBrZXk6IHNuc1RvcGljUHJvcHMubWFzdGVyS2V5IH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHsgdG9waWM6IHByb3BzLmV4aXN0aW5nVG9waWNPYmosIGtleTogcHJvcHMuZXhpc3RpbmdUb3BpY0VuY3J5cHRpb25LZXkgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNuc1Byb3BzIHtcbiAgcmVhZG9ubHkgdG9waWNQcm9wcz86IHNucy5Ub3BpY1Byb3BzLFxuICByZWFkb25seSBleGlzdGluZ1RvcGljT2JqPzogc25zLlRvcGljLFxuICByZWFkb25seSBleGlzdGluZ1RvcGljT2JqZWN0Pzogc25zLlRvcGljLFxuICByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLktleSxcbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleVByb3BzPzoga21zLktleVByb3BzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDaGVja1Nuc1Byb3BzKHByb3BzT2JqZWN0OiBTbnNQcm9wcyB8IGFueSkge1xuICBsZXQgZXJyb3JNZXNzYWdlcyA9ICcnO1xuICBsZXQgZXJyb3JGb3VuZCA9IGZhbHNlO1xuXG4gIC8vIEZhcmdhdGVUb1NucyB1c2VkIFRvcGljT2JqZWN0IGluc3RlYWQgb2YgVG9waWNPYmogLSB0byBmaXggd291bGQgYmUgYSBicmVha2luZyBjaGFuZ2UsIHNvIHdlXG4gIC8vIG11c3QgbG9vayBmb3IgYm90aCBoZXJlLlxuICBpZiAocHJvcHNPYmplY3QudG9waWNQcm9wcyAmJiAocHJvcHNPYmplY3QuZXhpc3RpbmdUb3BpY09iaiB8fCBwcm9wc09iamVjdC5leGlzdGluZ1RvcGljT2JqZWN0KSkge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgdG9waWNQcm9wcyBvciBleGlzdGluZ1RvcGljT2JqLCBidXQgbm90IGJvdGguXFxuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChwcm9wc09iamVjdC50b3BpY1Byb3BzPy5tYXN0ZXJLZXkgJiYgcHJvcHNPYmplY3QuZW5jcnlwdGlvbktleSkge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgdG9waWNQcm9wcy5tYXN0ZXJLZXkgb3IgZW5jcnlwdGlvbktleSwgYnV0IG5vdCBib3RoLlxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAocHJvcHNPYmplY3QudG9waWNQcm9wcz8ubWFzdGVyS2V5ICYmIHByb3BzT2JqZWN0LmVuY3J5cHRpb25LZXlQcm9wcykge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgdG9waWNQcm9wcy5tYXN0ZXJLZXkgb3IgZW5jcnlwdGlvbktleVByb3BzLCBidXQgbm90IGJvdGguXFxuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChwcm9wc09iamVjdC5lbmNyeXB0aW9uS2V5ICYmIHByb3BzT2JqZWN0LmVuY3J5cHRpb25LZXlQcm9wcykge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgZW5jcnlwdGlvbktleSBvciBlbmNyeXB0aW9uS2V5UHJvcHMsIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGVycm9yRm91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlcyk7XG4gIH1cbn1cbiJdfQ==
package/lib/sqs-helper.js CHANGED
@@ -55,7 +55,7 @@ function buildQueue(scope, id, props) {
55
55
  queueProps.encryptionMasterKey = props.encryptionKey;
56
56
  }
57
57
  else if (props.encryptionKeyProps || props.enableEncryptionWithCustomerManagedKey === true) {
58
- queueProps.encryptionMasterKey = kms_helper_1.buildEncryptionKey(scope, props.encryptionKeyProps);
58
+ queueProps.encryptionMasterKey = kms_helper_1.buildEncryptionKey(scope, id, props.encryptionKeyProps);
59
59
  }
60
60
  // NOSONAR (typescript:S6330)
61
61
  // encryption is set to QueueEncryption.KMS_MANAGED by default in DefaultQueueProps, but
@@ -177,4 +177,4 @@ function CheckSqsProps(propsObject) {
177
177
  }
178
178
  }
179
179
  exports.CheckSqsProps = CheckSqsProps;
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FzLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNxcy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUFFSDs7O0dBR0c7QUFFSCxVQUFVO0FBQ1YsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUUzQyxtQ0FBc0Q7QUFDdEQsaURBQThGO0FBQzlGLDZDQUFvQztBQUNwQyw2Q0FBZ0Q7QUFpRGhEOztHQUVHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO0lBQzdFLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRS9CLDBDQUEwQztJQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFO1FBQzNCLGtCQUFrQjtRQUNsQixJQUFJLFVBQVUsQ0FBQztRQUNmLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUNwQix3RUFBd0U7WUFDeEUsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzNELFVBQVUsR0FBRyxxQkFBYSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQ3BHO2FBQU07WUFDTCxtRUFBbUU7WUFDbkUsVUFBVSxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzNDO1FBRUQsbURBQW1EO1FBQ25ELElBQUksS0FBSyxDQUFDLGVBQWUsRUFBRTtZQUN6QixVQUFVLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUM7U0FDcEQ7UUFFRCw2QkFBNkI7UUFDN0Isb0hBQW9IO1FBQ3BILElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxtQkFBbUIsRUFBRTtZQUN6QyxVQUFVLENB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Q0FBQztRQUMvRixVQUFVLEdBQUcsSUFBSSxDQUFDO0tBQ25CO0lBRUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxxQkFBcUIsS0FBSyxLQUFLLENBQUMsSUFBSSxXQUFXLENBQUMsb0JBQW9CLEVBQUU7UUFDdEYsYUFBYSxJQUFJLDRGQUE0RixDQUFDO1FBQzlHLFVBQVUsR0FBRyxJQUFJLENBQUM7S0FDbkI7SUFFRCxNQUFNLFdBQVcsR0FBWSxXQUFXLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQztJQUMzRCxNQUFNLHFCQUFxQixHQUFZLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLENBQUM7SUFDL0UsTUFBTSxxQkFBcUIsR0FBWSxXQUFXLENBQUMscUJBQXFCLElBQUksV0FBVyxDQUFDLHFCQUFxQixLQUFLLFNBQVMsQ0FBQztJQUU1SCxJQUFJLHFCQUFxQixJQUFJLENBQUMsV0FBVyxLQUFLLHFCQUFxQixDQUFDLEVBQUU7UUFDcEUsYUFBYSxJQUFJLDRHQUE0RztZQUMzSCw0RkFBNEYsQ0FBQztRQUMvRixVQUFVLEdBQUcsSUFBSSxDQUFDO0tBQ25CO0lBRUQsSUFBSSxVQUFVLEVBQUU7UUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQ2hDO0FBQ0gsQ0FBQztBQTFDRCxzQ0EwQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKlxuICogIFRoZSBmdW5jdGlvbnMgZm91bmQgaGVyZSBpbiB0aGUgY29yZSBsaWJyYXJ5IGFyZSBmb3IgaW50ZXJuYWwgdXNlIGFuZCBjYW4gYmUgY2hhbmdlZFxuICogIG9yIHJlbW92ZWQgb3V0c2lkZSBvZiBhIG1ham9yIHJlbGVhc2UuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IGNhbGxpbmcgdGhlbSBkaXJlY3RseSBmcm9tIGNsaWVudCBjb2RlLlxuICovXG5cbi8vIEltcG9ydHNcbmltcG9ydCAqIGFzIHNxcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3FzJztcbmltcG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gJy4vc3FzLWRlZmF1bHRzJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB7IG92ZXJyaWRlUHJvcHMsIHByaW50V2FybmluZyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQWNjb3VudFByaW5jaXBhbCwgRWZmZWN0LCBQb2xpY3lTdGF0ZW1lbnQsIEFueVByaW5jaXBhbCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge2J1aWxkRW5jcnlwdGlvbktleX0gZnJvbSBcIi4va21zLWhlbHBlclwiO1xuLy8gTm90ZTogVG8gZW5zdXJlIENES3YyIGNvbXBhdGliaWxpdHksIGtlZXAgdGhlIGltcG9ydCBzdGF0ZW1lbnQgZm9yIENvbnN0cnVjdCBzZXBhcmF0ZVxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRRdWV1ZVByb3BzIHtcbiAgICAvKipcbiAgICAgKiBFeGlzdGluZyBpbnN0YW5jZSBvZiBTUVMgcXVldWUgb2JqZWN0LCBwcm92aWRpbmcgYm90aCB0aGlzIGFuZCBxdWV1ZVByb3BzIHdpbGwgY2F1c2UgYW4gZXJyb3IuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtIE5vbmUuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZXhpc3RpbmdRdWV1ZU9iaj86IHNxcy5RdWV1ZTtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbCB1c2VyIHByb3ZpZGVkIHByb3BzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BzIGZvciB0aGUgcHJpbWFyeSBxdWV1ZS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBwcm9wcyBhcmUgdXNlZC5cbiAgICAgKi9cbiAgICByZWFkb25seSBxdWV1ZVByb3BzPzogc3FzLlF1ZXVlUHJvcHM7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWwgZGVhZCBsZXR0ZXIgcXVldWUgdG8gcGFzcyBiYWQgcmVxdWVzdHMgdG8gYWZ0ZXIgdGhlIG1heCByZWNlaXZlIGNvdW50IGlzIHJlYWNoZWQuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcHMgYXJlIHVzZWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGVhZExldHRlclF1ZXVlPzogc3FzLkRlYWRMZXR0ZXJRdWV1ZTtcbiAgICAvKipcbiAgICAgKiBJZiBubyBrZXkgaXMgcHJvdmlkZWQsIHRoaXMgZmxhZyBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHF1ZXVlIGlzIGVuY3J5cHRlZCB3aXRoIGEgbmV3IENNSyBvciBhbiBBV1MgbWFuYWdlZCBrZXkuXG4gICAgICogVGhpcyBmbGFnIGlzIGlnbm9yZWQgaWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZWQ6IHF1ZXVlUHJvcHMuZW5jcnlwdGlvbk1hc3RlcktleSwgZW5jcnlwdGlvbktleSBvciBlbmNyeXB0aW9uS2V5UHJvcHMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtIEZhbHNlIGlmIHF1ZXVlUHJvcHMuZW5jcnlwdGlvbk1hc3RlcktleSwgZW5jcnlwdGlvbktleSwgYW5kIGVuY3J5cHRpb25LZXlQcm9wcyBhcmUgYWxsIHVuZGVmaW5lZC5cbiAgICAgKi9cbiAgICByZWFkb25seSBlbmFibGVFbmNyeXB0aW9uV2l0aEN1c3RvbWVyTWFuYWdlZEtleT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQW4gb3B0aW9uYWwsIGltcG9ydGVkIGVuY3J5cHRpb24ga2V5IHRvIGVuY3J5cHQgdGhlIFNRUyBRdWV1ZSB3aXRoLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgLSBOb25lXG4gICAgICovXG4gICAgcmVhZG9ubHkgZW5jcnlwdGlvbktleT86IGttcy5LZXk7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWwgdXNlciBwcm92aWRlZCBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgZm9yIHRoZSBLTVMgZW5jcnlwdGlvbiBrZXkgdXNlZCB0byBlbmNyeXB0IHRoZSBTUVMgUXVldWUgd2l0aC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgICAqL1xuICAgICByZWFkb25seSBlbmNyeXB0aW9uS2V5UHJvcHM/OiBrbXMuS2V5UHJvcHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRRdWV1ZVJlc3BvbnNlIHtcbiAgcmVhZG9ubHkgcXVldWU6IHNxcy5RdWV1ZSxcbiAgcmVhZG9ubHkga2V5Pzoga21zLklLZXlcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRRdWV1ZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQnVpbGRRdWV1ZVByb3BzKTogQnVpbGRRdWV1ZVJlc3BvbnNlIHtcbiAgQ2hlY2tFbmNyeXB0aW9uV2FybmluZ3MocHJvcHMpO1xuXG4gIC8vIElmIGFuIGV4aXN0aW5nUXVldWVPYmogaXMgbm90IHNwZWNpZmllZFxuICBpZiAoIXByb3BzLmV4aXN0aW5nUXVldWVPYmopIHtcbiAgICAvLyBTZXR1cCB0aGUgcXVldWVcbiAgICBsZXQgcXVldWVQcm9wcztcbiAgICBpZiAocHJvcHMucXVldWVQcm9wcykge1xuICAgICAgLy8gSWYgcHJvcGVydHkgb3ZlcnJpZGVzIGhhdmUgYmVlbiBwcm92aWRlZCwgaW5jb3Jwb3JhdGUgdGhlbSBhbmQgZGVwbG95XG4gICAgICBjb25zdCBjaGVja0ZpZm8gPSBwcm9wcy5xdWV1ZVByb3BzLmZpZm8gPyB0cnVlIDogdW5kZWZpbmVkO1xuICAgICAgcXVldWVQcm9wcyA9IG92ZXJyaWRlUHJvcHMoZGVmYXVsdHMuRGVmYXVsdFF1ZXVlUHJvcHMoKSwgeyAuLi5wcm9wcy5xdWV1ZVByb3BzLCBmaWZvOiBjaGVja0ZpZm8gfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIG5vIHByb3BlcnR5IG92ZXJyaWRlcywgZGVwbG95IHVzaW5nIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICAgIHF1ZXVlUHJvcHMgPSBkZWZhdWx0cy5EZWZhdWx0UXVldWVQcm9wcygpO1xuICAgIH1cblxuICAgIC8vIERldGVybWluZSB3aGV0aGVyIGEgRExRIHByb3BlcnR5IHNob3VsZCBiZSBhZGRlZFxuICAgIGlmIChwcm9wcy5kZWFkTGV0dGVyUXVldWUpIHtcbiAgICAgIHF1ZXVlUHJvcHMuZGVhZExldHRlclF1ZXVlID0gcHJvcHMuZGVhZExldHRlclF1ZXVlO1xuICAgIH1cblxuICAgIC8vIFNldCBlbmNyeXB0aW9uIHByb3BlcnRpZXMuXG4gICAgLy8gTm90ZSB0aGF0IGRlZmF1bHRzLkRlZmF1bHRRdWV1ZVByb3BzIHNldHMgZW5jcnlwdGlvbiB0byBTZXJ2ZXItc2lkZSBLTVMgZW5jcnlwdGlvbiB3aXRoIGEgS01TIGtleSBtYW5hZ2VkIGJ5IFNRUy5cbiAgICBpZiAocHJvcHMucXVldWVQcm9wcz8uZW5jcnlwdGlvbk1hc3RlcktleSkge1xuICAgICAgcXVldWVQcm9wcy5lbmNyeXB0aW9uTWFzdGVyS2V5ID0gcHJvcHMucXVldWVQcm9wcz8uZW5jcnlwdGlvbk1hc3RlcktleTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLmVuY3J5cHRpb25LZXkpIHtcbiAgICAgIHF1ZXVlUHJvcHMuZW5jcnlwdGlvbk1hc3RlcktleSA9IHByb3BzLmVuY3J5cHRpb25LZXk7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5lbmNyeXB0aW9uS2V5UHJvcHMgfHwgcHJvcHMuZW5hYmxlRW5jcnlwdGlvbldpdGhDdXN0b21lck1hbmFnZWRLZXkgPT09IHRydWUpIHtcbiAgICAgIHF1ZXVlUHJvcHMuZW5jcnlwdGlvbk1hc3RlcktleSA9IGJ1aWxkRW5jcnlwdGlvbktleShzY29wZSwgcHJvcHMuZW5jcnlwdGlvbktleVByb3BzKTtcbiAgICB9XG5cbiAgICAvLyBOT1NPTkFSICh0eXBlc2NyaXB0OlM2MzMwKVxuICAgIC8vIGVuY3J5cHRpb24gaXMgc2V0IHRvIFF1ZXVlRW5jcnlwdGlvbi5LTVNfTUFOQUdFRCBieSBkZWZhdWx0IGluIERlZmF1bHRRdWV1ZVByb3BzLCBidXRcbiAgICAvLyBTb25hcnF1YmUgY2FuJ3QgcGFyc2UgdGhlIGNvZGUgd2VsbCBlbm91Z2ggdG8gc2VlIHRoaXMuIEVuY3J5cHRpb24gaXMgY29uZmlybWVkIGJ5XG4gICAgLy8gdGhlICdUZXN0IGRlcGxveW1lbnQgd2l0aG91dCBpbXBvcnRlZCBlbmNyeXB0aW9uIGtleScgdW5pdCB0ZXN0XG4gICAgY29uc3QgcXVldWUgPSBuZXcgc3FzLlF1ZXVlKHNjb3BlLCBpZCwgcXVldWVQcm9wcyk7IC8vIE5PU09OQVJcblxuICAgIGFwcGx5U2VjdXJlUXVldWVQb2xpY3kocXVldWUpO1xuXG4gICAgLy8gUmV0dXJuIHRoZSBxdWV1ZVxuICAgIHJldHVybiB7IHF1ZXVlLCBrZXk6IHF1ZXVlLmVuY3J5cHRpb25NYXN0ZXJLZXkgfTtcbiAgfSBlbHNlIHtcbiAgICAvLyBJZiBhbiBleGlzdGluZ1F1ZXVlT2JqIGlzIHNwZWNpZmllZCwgcmV0dXJuIHRoYXQgb2JqZWN0IGFzIHRoZSBxdWV1ZSB0byBiZSB1c2VkXG4gICAgcmV0dXJuIHsgcXVldWU6IHByb3BzLmV4aXN0aW5nUXVldWVPYmogfTtcbiAgfVxufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmZ1bmN0aW9uIENoZWNrRW5jcnlwdGlvbldhcm5pbmdzKHByb3BzOiBCdWlsZFF1ZXVlUHJvcHMpIHtcbiAgaWYgKChwcm9wcy5xdWV1ZVByb3BzPy5lbmNyeXB0aW9uTWFzdGVyS2V5IHx8IHByb3BzLmVuY3J5cHRpb25LZXkgfHwgcHJvcHMuZW5jcnlwdGlvbktleVByb3BzKVxuICAmJiBwcm9wcy5lbmFibGVFbmNyeXB0aW9uV2l0aEN1c3RvbWVyTWFuYWdlZEtleSA9PT0gdHJ1ZSkge1xuICAgIHByaW50V2FybmluZyhgSWdub3JpbmcgZW5hYmxlRW5jcnlwdGlvbldpdGhDdXN0b21lck1hbmFnZWRLZXkgYmVjYXVzZSBvbmUgb2ZcbiAgICAgcXVldWVQcm9wcy5lbmNyeXB0aW9uTWFzdGVyS2V5LCBlbmNyeXB0aW9uS2V5LCBvciBlbmNyeXB0aW9uS2V5UHJvcHMgd2FzIGFscmVhZHkgc3BlY2lmaWVkYCk7XG4gIH1cbn1cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGREZWFkTGV0dGVyUXVldWVQcm9wcyB7XG4gIC8qKlxuICAgKiBFeGlzdGluZyBpbnN0YW5jZSBvZiBTUVMgcXVldWUgb2JqZWN0LCBwcm92aWRpbmcgYm90aCB0aGlzIGFuZCBxdWV1ZVByb3BzIHdpbGwgY2F1c2UgYW4gZXJyb3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IGV4aXN0aW5nUXVldWVPYmo/OiBzcXMuUXVldWUsXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRlcGxveSBhIHNlY29uZGFyeSBxdWV1ZSB0byBiZSB1c2VkIGFzIGEgZGVhZCBsZXR0ZXIgcXVldWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcmVxdWlyZWQgZmllbGQuXG4gICAqL1xuICByZWFkb25seSBkZXBsb3lEZWFkTGV0dGVyUXVldWU/OiBib29sZWFuLFxuICAvKipcbiAgICogT3B0aW9uYWwgdXNlciBwcm92aWRlZCBwcm9wZXJ0aWVzIGZvciB0aGUgZGVhZCBsZXR0ZXIgcXVldWVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHByb3BzIGFyZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBkZWFkTGV0dGVyUXVldWVQcm9wcz86IHNxcy5RdWV1ZVByb3BzLFxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiB0aW1lcyBhIG1lc3NhZ2UgY2FuIGJlIHVuc3VjY2Vzc2Z1bGx5IGRlcXVldWVkIGJlZm9yZSBiZWluZyBtb3ZlZCB0byB0aGUgZGVhZCBsZXR0ZXIgcXVldWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBwcm9wcyBhcmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgbWF4UmVjZWl2ZUNvdW50PzogbnVtYmVyXG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRGVhZExldHRlclF1ZXVlKHNjb3BlOiBDb25zdHJ1Y3QsIHByb3BzOiBCdWlsZERlYWRMZXR0ZXJRdWV1ZVByb3BzKTogc3FzLkRlYWRMZXR0ZXJRdWV1ZSB8IHVuZGVmaW5lZCB7XG4gIGlmICghcHJvcHMuZXhpc3RpbmdRdWV1ZU9iaiAmJiAocHJvcHMuZGVwbG95RGVhZExldHRlclF1ZXVlIHx8IHByb3BzLmRlcGxveURlYWRMZXR0ZXJRdWV1ZSA9PT0gdW5kZWZpbmVkKSkge1xuICAgIC8vIENyZWF0ZSB0aGUgRGVhZCBMZXR0ZXIgUXVldWVcbiAgICBjb25zdCBidWlsZFF1ZXVlUmVzcG9uc2UgPSBidWlsZFF1ZXVlKHNjb3BlLCAnZGVhZExldHRlclF1ZXVlJywge1xuICAgICAgcXVldWVQcm9wczogcHJvcHMuZGVhZExldHRlclF1ZXVlUHJvcHNcbiAgICB9KTtcblxuICAgIGNvbnN0IG1yYyA9IChwcm9wcy5tYXhSZWNlaXZlQ291bnQpID8gcHJvcHMubWF4UmVjZWl2ZUNvdW50IDogZGVmYXVsdHMuZGVmYXVsdE1heFJlY2VpdmVDb3VudDtcblxuICAgIC8vIFNldHVwIHRoZSBEZWFkIExldHRlciBRdWV1ZSBpbnRlcmZhY2VcbiAgICBjb25zdCBkbHFJbnRlcmZhY2U6IHNxcy5EZWFkTGV0dGVyUXVldWUgPSB7XG4gICAgICBtYXhSZWNlaXZlQ291bnQ6IG1yYyxcbiAgICAgIHF1ZXVlOiBidWlsZFF1ZXVlUmVzcG9uc2UucXVldWVcbiAgICB9O1xuXG4gICAgLy8gUmV0dXJuIHRoZSBkZWFkIGxldHRlciBxdWV1ZSBpbnRlcmZhY2VcbiAgICByZXR1cm4gZGxxSW50ZXJmYWNlO1xuICB9XG4gIC8vIEVTTGludCByZXF1aXJlcyB0aGlzIHJldHVybiBzdGF0ZW1lbnQsIHNvIGRpc2FibGluZyBTb25hclF1YmUgd2FybmluZ1xuICByZXR1cm47IC8vIE5PU09OQVJcbn1cblxuZnVuY3Rpb24gYXBwbHlTZWN1cmVRdWV1ZVBvbGljeShxdWV1ZTogc3FzLlF1ZXVlKTogdm9pZCB7XG5cbiAgLy8gQXBwbHkgcXVldWUgcG9saWN5IHRvIGVuZm9yY2Ugb25seSB0aGUgcXVldWUgb3duZXIgY2FuIHBlcmZvcm0gb3BlcmF0aW9ucyBvbiBxdWV1ZVxuICBxdWV1ZS5hZGRUb1Jlc291cmNlUG9saWN5KFxuICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgc2lkOiAnUXVldWVPd25lck9ubHlBY2Nlc3MnLFxuICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgIGAke3F1ZXVlLnF1ZXVlQXJufWBcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgIFwic3FzOkRlbGV0ZU1lc3NhZ2VcIixcbiAgICAgICAgXCJzcXM6UmVjZWl2ZU1lc3NhZ2VcIixcbiAgICAgICAgXCJzcXM6U2VuZE1lc3NhZ2VcIixcbiAgICAgICAgXCJzcXM6R2V0UXVldWVBdHRyaWJ1dGVzXCIsXG4gICAgICAgIFwic3FzOlJlbW92ZVBlcm1pc3Npb25cIixcbiAgICAgICAgXCJzcXM6QWRkUGVybWlzc2lvblwiLFxuICAgICAgICBcInNxczpTZXRRdWV1ZUF0dHJpYnV0ZXNcIlxuICAgICAgXSxcbiAgICAgIHByaW5jaXBhbHM6IFtuZXcgQWNjb3VudFByaW5jaXBhbChTdGFjay5vZihxdWV1ZSkuYWNjb3VudCldLFxuICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1dcbiAgICB9KVxuICApO1xuXG4gIC8vIEFwcGx5IHF1ZXVlIHBvbGljeSB0byBlbmZvcmNlIGVuY3J5cHRpb24gb2YgZGF0YSBpbiB0cmFuc2l0XG4gIHF1ZXVlLmFkZFRvUmVzb3VyY2VQb2xpY3koXG4gICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICBzaWQ6ICdIdHRwc09ubHknLFxuICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgIGAke3F1ZXVlLnF1ZXVlQXJufWBcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgIFwiU1FTOipcIlxuICAgICAgXSxcbiAgICAgIHByaW5jaXBhbHM6IFtuZXcgQW55UHJpbmNpcGFsKCldLFxuICAgICAgZWZmZWN0OiBFZmZlY3QuREVOWSxcbiAgICAgIGNvbmRpdGlvbnM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgQm9vbDoge1xuICAgICAgICAgICAgICAnYXdzOlNlY3VyZVRyYW5zcG9ydCc6ICdmYWxzZSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgfSlcbiAgKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTcXNQcm9wcyB7XG4gIHJlYWRvbmx5IGV4aXN0aW5nUXVldWVPYmo/OiBzcXMuUXVldWUsXG4gIHJlYWRvbmx5IHF1ZXVlUHJvcHM/OiBzcXMuUXVldWVQcm9wcyxcbiAgcmVhZG9ubHkgZGVwbG95RGVhZExldHRlclF1ZXVlPzogYm9vbGVhbixcbiAgcmVhZG9ubHkgZGVhZExldHRlclF1ZXVlUHJvcHM/OiBzcXMuUXVldWVQcm9wcyxcbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleT86IGttcy5LZXksXG4gIHJlYWRvbmx5IGVuY3J5cHRpb25LZXlQcm9wcz86IGttcy5LZXlQcm9wc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ2hlY2tTcXNQcm9wcyhwcm9wc09iamVjdDogU3FzUHJvcHMgfCBhbnkpIHtcbiAgbGV0IGVycm9yTWVzc2FnZXMgPSAnJztcbiAgbGV0IGVycm9yRm91bmQgPSBmYWxzZTtcblxuICBpZiAocHJvcHNPYmplY3QuZXhpc3RpbmdRdWV1ZU9iaiAmJiBwcm9wc09iamVjdC5xdWV1ZVByb3BzKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBFaXRoZXIgcHJvdmlkZSBxdWV1ZVByb3BzIG9yIGV4aXN0aW5nUXVldWVPYmosIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHByb3BzT2JqZWN0LnF1ZXVlUHJvcHM/LmVuY3J5cHRpb25NYXN0ZXJLZXkgJiYgcHJvcHNPYmplY3QuZW5jcnlwdGlvbktleSkge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgcXVldWVQcm9wcy5lbmNyeXB0aW9uTWFzdGVyS2V5IG9yIGVuY3J5cHRpb25LZXksIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHByb3BzT2JqZWN0LnF1ZXVlUHJvcHM/LmVuY3J5cHRpb25NYXN0ZXJLZXkgJiYgcHJvcHNPYmplY3QuZW5jcnlwdGlvbktleVByb3BzKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBFaXRoZXIgcHJvdmlkZSBxdWV1ZVByb3BzLmVuY3J5cHRpb25NYXN0ZXJLZXkgb3IgZW5jcnlwdGlvbktleVByb3BzLCBidXQgbm90IGJvdGguXFxuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChwcm9wc09iamVjdC5lbmNyeXB0aW9uS2V5ICYmIHByb3BzT2JqZWN0LmVuY3J5cHRpb25LZXlQcm9wcykge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgZW5jcnlwdGlvbktleSBvciBlbmNyeXB0aW9uS2V5UHJvcHMsIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKChwcm9wc09iamVjdD8uZGVwbG95RGVhZExldHRlclF1ZXVlID09PSBmYWxzZSkgJiYgcHJvcHNPYmplY3QuZGVhZExldHRlclF1ZXVlUHJvcHMpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIElmIGRlcGxveURlYWRMZXR0ZXJRdWV1ZSBpcyBmYWxzZSB0aGVuIGRlYWRMZXR0ZXJRdWV1ZVByb3BzIGNhbm5vdCBiZSBzcGVjaWZpZWQuXFxuJztcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IGlzUXVldWVGaWZvOiBib29sZWFuID0gcHJvcHNPYmplY3Q/LnF1ZXVlUHJvcHM/LmZpZm87XG4gIGNvbnN0IGlzRGVhZExldHRlclF1ZXVlRmlmbzogYm9vbGVhbiA9IHByb3BzT2JqZWN0Py5kZWFkTGV0dGVyUXVldWVQcm9wcz8uZmlmbztcbiAgY29uc3QgZGVwbG95RGVhZExldHRlclF1ZXVlOiBib29sZWFuID0gcHJvcHNPYmplY3QuZGVwbG95RGVhZExldHRlclF1ZXVlIHx8IHByb3BzT2JqZWN0LmRlcGxveURlYWRMZXR0ZXJRdWV1ZSA9PT0gdW5kZWZpbmVkO1xuXG4gIGlmIChkZXBsb3lEZWFkTGV0dGVyUXVldWUgJiYgKGlzUXVldWVGaWZvICE9PSBpc0RlYWRMZXR0ZXJRdWV1ZUZpZm8pKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBJZiB5b3Ugc3BlY2lmeSBhIGZpZm86IHRydWUgaW4gZWl0aGVyIHF1ZXVlUHJvcHMgb3IgZGVhZExldHRlclF1ZXVlUHJvcHMsIHlvdSBtdXN0IGFsc28gc2V0IGZpZm86ICcgK1xuICAgICAgJ3RydWUgaW4gdGhlIG90aGVyIHByb3BzIG9iamVjdC4gRmlmbyBtdXN0IG1hdGNoIGZvciB0aGUgUXVldWUgYW5kIHRoZSBEZWFkIExldHRlciBRdWV1ZS5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGVycm9yRm91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlcyk7XG4gIH1cbn1cbiJdfQ==
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FzLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNxcy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUFFSDs7O0dBR0c7QUFFSCxVQUFVO0FBQ1YsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUUzQyxtQ0FBc0Q7QUFDdEQsaURBQThGO0FBQzlGLDZDQUFvQztBQUNwQyw2Q0FBZ0Q7QUFpRGhEOztHQUVHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO0lBQzdFLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRS9CLDBDQUEwQztJQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFO1FBQzNCLGtCQUFrQjtRQUNsQixJQUFJLFVBQVUsQ0FBQztRQUNmLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUNwQix3RUFBd0U7WUFDeEUsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzNELFVBQVUsR0FBRyxxQkFBYSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQ3BHO2FBQU07WUFDTCxtRUFBbUU7WUFDbkUsVUFBVSxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzNDO1FBRUQsbURBQW1EO1FBQ25ELElBQUksS0FBSyxDQUFDLGVBQWUsRUFBRTtZQUN6QixVQUFVLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUM7U0FDcEQ7UUFFRCw2QkFBNkI7UUFDN0Isb0hBQW9IO1FBQ3BILElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxtQkFBbUIsRUFBRTtZQUN6QyxVQUFVLENB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QUksNkVBQTZFLENBQUM7UUFDL0YsVUFBVSxHQUFHLElBQUksQ0FBQztLQUNuQjtJQUVELElBQUksQ0FBQyxXQUFXLEVBQUUscUJBQXFCLEtBQUssS0FBSyxDQUFDLElBQUksV0FBVyxDQUFDLG9CQUFvQixFQUFFO1FBQ3RGLGFBQWEsSUFBSSw0RkFBNEYsQ0FBQztRQUM5RyxVQUFVLEdBQUcsSUFBSSxDQUFDO0tBQ25CO0lBRUQsTUFBTSxXQUFXLEdBQVksV0FBVyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUM7SUFDM0QsTUFBTSxxQkFBcUIsR0FBWSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxDQUFDO0lBQy9FLE1BQU0scUJBQXFCLEdBQVksV0FBVyxDQUFDLHFCQUFxQixJQUFJLFdBQVcsQ0FBQyxxQkFBcUIsS0FBSyxTQUFTLENBQUM7SUFFNUgsSUFBSSxxQkFBcUIsSUFBSSxDQUFDLFdBQVcsS0FBSyxxQkFBcUIsQ0FBQyxFQUFFO1FBQ3BFLGFBQWEsSUFBSSw0R0FBNEc7WUFDM0gsNEZBQTRGLENBQUM7UUFDL0YsVUFBVSxHQUFHLElBQUksQ0FBQztLQUNuQjtJQUVELElBQUksVUFBVSxFQUFFO1FBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUNoQztBQUNILENBQUM7QUExQ0Qsc0NBMENDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLypcbiAqICBUaGUgZnVuY3Rpb25zIGZvdW5kIGhlcmUgaW4gdGhlIGNvcmUgbGlicmFyeSBhcmUgZm9yIGludGVybmFsIHVzZSBhbmQgY2FuIGJlIGNoYW5nZWRcbiAqICBvciByZW1vdmVkIG91dHNpZGUgb2YgYSBtYWpvciByZWxlYXNlLiBXZSByZWNvbW1lbmQgYWdhaW5zdCBjYWxsaW5nIHRoZW0gZGlyZWN0bHkgZnJvbSBjbGllbnQgY29kZS5cbiAqL1xuXG4vLyBJbXBvcnRzXG5pbXBvcnQgKiBhcyBzcXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNxcyc7XG5pbXBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tICcuL3Nxcy1kZWZhdWx0cyc7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgeyBvdmVycmlkZVByb3BzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEFjY291bnRQcmluY2lwYWwsIEVmZmVjdCwgUG9saWN5U3RhdGVtZW50LCBBbnlQcmluY2lwYWwgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtidWlsZEVuY3J5cHRpb25LZXl9IGZyb20gXCIuL2ttcy1oZWxwZXJcIjtcbi8vIE5vdGU6IFRvIGVuc3VyZSBDREt2MiBjb21wYXRpYmlsaXR5LCBrZWVwIHRoZSBpbXBvcnQgc3RhdGVtZW50IGZvciBDb25zdHJ1Y3Qgc2VwYXJhdGVcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkUXVldWVQcm9wcyB7XG4gICAgLyoqXG4gICAgICogRXhpc3RpbmcgaW5zdGFuY2Ugb2YgU1FTIHF1ZXVlIG9iamVjdCwgcHJvdmlkaW5nIGJvdGggdGhpcyBhbmQgcXVldWVQcm9wcyB3aWxsIGNhdXNlIGFuIGVycm9yLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgLSBOb25lLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGV4aXN0aW5nUXVldWVPYmo/OiBzcXMuUXVldWU7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWwgdXNlciBwcm92aWRlZCBwcm9wcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wcyBmb3IgdGhlIHByaW1hcnkgcXVldWUuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcHMgYXJlIHVzZWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgcXVldWVQcm9wcz86IHNxcy5RdWV1ZVByb3BzO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIGRlYWQgbGV0dGVyIHF1ZXVlIHRvIHBhc3MgYmFkIHJlcXVlc3RzIHRvIGFmdGVyIHRoZSBtYXggcmVjZWl2ZSBjb3VudCBpcyByZWFjaGVkLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHByb3BzIGFyZSB1c2VkLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGRlYWRMZXR0ZXJRdWV1ZT86IHNxcy5EZWFkTGV0dGVyUXVldWU7XG4gICAgLyoqXG4gICAgICogSWYgbm8ga2V5IGlzIHByb3ZpZGVkLCB0aGlzIGZsYWcgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBxdWV1ZSBpcyBlbmNyeXB0ZWQgd2l0aCBhIG5ldyBDTUsgb3IgYW4gQVdTIG1hbmFnZWQga2V5LlxuICAgICAqIFRoaXMgZmxhZyBpcyBpZ25vcmVkIGlmIGFueSBvZiB0aGUgZm9sbG93aW5nIGFyZSBkZWZpbmVkOiBxdWV1ZVByb3BzLmVuY3J5cHRpb25NYXN0ZXJLZXksIGVuY3J5cHRpb25LZXkgb3IgZW5jcnlwdGlvbktleVByb3BzLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgLSBGYWxzZSBpZiBxdWV1ZVByb3BzLmVuY3J5cHRpb25NYXN0ZXJLZXksIGVuY3J5cHRpb25LZXksIGFuZCBlbmNyeXB0aW9uS2V5UHJvcHMgYXJlIGFsbCB1bmRlZmluZWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZW5hYmxlRW5jcnlwdGlvbldpdGhDdXN0b21lck1hbmFnZWRLZXk/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEFuIG9wdGlvbmFsLCBpbXBvcnRlZCBlbmNyeXB0aW9uIGtleSB0byBlbmNyeXB0IHRoZSBTUVMgUXVldWUgd2l0aC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGVuY3J5cHRpb25LZXk/OiBrbXMuS2V5O1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIHVzZXIgcHJvdmlkZWQgcHJvcGVydGllcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIGZvciB0aGUgS01TIGVuY3J5cHRpb24ga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGUgU1FTIFF1ZXVlIHdpdGguXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICAgKi9cbiAgICAgcmVhZG9ubHkgZW5jcnlwdGlvbktleVByb3BzPzoga21zLktleVByb3BzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkUXVldWVSZXNwb25zZSB7XG4gIHJlYWRvbmx5IHF1ZXVlOiBzcXMuUXVldWUsXG4gIHJlYWRvbmx5IGtleT86IGttcy5JS2V5XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUXVldWUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEJ1aWxkUXVldWVQcm9wcyk6IEJ1aWxkUXVldWVSZXNwb25zZSB7XG4gIENoZWNrRW5jcnlwdGlvbldhcm5pbmdzKHByb3BzKTtcblxuICAvLyBJZiBhbiBleGlzdGluZ1F1ZXVlT2JqIGlzIG5vdCBzcGVjaWZpZWRcbiAgaWYgKCFwcm9wcy5leGlzdGluZ1F1ZXVlT2JqKSB7XG4gICAgLy8gU2V0dXAgdGhlIHF1ZXVlXG4gICAgbGV0IHF1ZXVlUHJvcHM7XG4gICAgaWYgKHByb3BzLnF1ZXVlUHJvcHMpIHtcbiAgICAgIC8vIElmIHByb3BlcnR5IG92ZXJyaWRlcyBoYXZlIGJlZW4gcHJvdmlkZWQsIGluY29ycG9yYXRlIHRoZW0gYW5kIGRlcGxveVxuICAgICAgY29uc3QgY2hlY2tGaWZvID0gcHJvcHMucXVldWVQcm9wcy5maWZvID8gdHJ1ZSA6IHVuZGVmaW5lZDtcbiAgICAgIHF1ZXVlUHJvcHMgPSBvdmVycmlkZVByb3BzKGRlZmF1bHRzLkRlZmF1bHRRdWV1ZVByb3BzKCksIHsgLi4ucHJvcHMucXVldWVQcm9wcywgZmlmbzogY2hlY2tGaWZvIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiBubyBwcm9wZXJ0eSBvdmVycmlkZXMsIGRlcGxveSB1c2luZyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAgICBxdWV1ZVByb3BzID0gZGVmYXVsdHMuRGVmYXVsdFF1ZXVlUHJvcHMoKTtcbiAgICB9XG5cbiAgICAvLyBEZXRlcm1pbmUgd2hldGhlciBhIERMUSBwcm9wZXJ0eSBzaG91bGQgYmUgYWRkZWRcbiAgICBpZiAocHJvcHMuZGVhZExldHRlclF1ZXVlKSB7XG4gICAgICBxdWV1ZVByb3BzLmRlYWRMZXR0ZXJRdWV1ZSA9IHByb3BzLmRlYWRMZXR0ZXJRdWV1ZTtcbiAgICB9XG5cbiAgICAvLyBTZXQgZW5jcnlwdGlvbiBwcm9wZXJ0aWVzLlxuICAgIC8vIE5vdGUgdGhhdCBkZWZhdWx0cy5EZWZhdWx0UXVldWVQcm9wcyBzZXRzIGVuY3J5cHRpb24gdG8gU2VydmVyLXNpZGUgS01TIGVuY3J5cHRpb24gd2l0aCBhIEtNUyBrZXkgbWFuYWdlZCBieSBTUVMuXG4gICAgaWYgKHByb3BzLnF1ZXVlUHJvcHM/LmVuY3J5cHRpb25NYXN0ZXJLZXkpIHtcbiAgICAgIHF1ZXVlUHJvcHMuZW5jcnlwdGlvbk1hc3RlcktleSA9IHByb3BzLnF1ZXVlUHJvcHM/LmVuY3J5cHRpb25NYXN0ZXJLZXk7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5lbmNyeXB0aW9uS2V5KSB7XG4gICAgICBxdWV1ZVByb3BzLmVuY3J5cHRpb25NYXN0ZXJLZXkgPSBwcm9wcy5lbmNyeXB0aW9uS2V5O1xuICAgIH0gZWxzZSBpZiAocHJvcHMuZW5jcnlwdGlvbktleVByb3BzIHx8IHByb3BzLmVuYWJsZUVuY3J5cHRpb25XaXRoQ3VzdG9tZXJNYW5hZ2VkS2V5ID09PSB0cnVlKSB7XG4gICAgICBxdWV1ZVByb3BzLmVuY3J5cHRpb25NYXN0ZXJLZXkgPSBidWlsZEVuY3J5cHRpb25LZXkoc2NvcGUsIGlkLCBwcm9wcy5lbmNyeXB0aW9uS2V5UHJvcHMpO1xuICAgIH1cblxuICAgIC8vIE5PU09OQVIgKHR5cGVzY3JpcHQ6UzYzMzApXG4gICAgLy8gZW5jcnlwdGlvbiBpcyBzZXQgdG8gUXVldWVFbmNyeXB0aW9uLktNU19NQU5BR0VEIGJ5IGRlZmF1bHQgaW4gRGVmYXVsdFF1ZXVlUHJvcHMsIGJ1dFxuICAgIC8vIFNvbmFycXViZSBjYW4ndCBwYXJzZSB0aGUgY29kZSB3ZWxsIGVub3VnaCB0byBzZWUgdGhpcy4gRW5jcnlwdGlvbiBpcyBjb25maXJtZWQgYnlcbiAgICAvLyB0aGUgJ1Rlc3QgZGVwbG95bWVudCB3aXRob3V0IGltcG9ydGVkIGVuY3J5cHRpb24ga2V5JyB1bml0IHRlc3RcbiAgICBjb25zdCBxdWV1ZSA9IG5ldyBzcXMuUXVldWUoc2NvcGUsIGlkLCBxdWV1ZVByb3BzKTsgLy8gTk9TT05BUlxuXG4gICAgYXBwbHlTZWN1cmVRdWV1ZVBvbGljeShxdWV1ZSk7XG5cbiAgICAvLyBSZXR1cm4gdGhlIHF1ZXVlXG4gICAgcmV0dXJuIHsgcXVldWUsIGtleTogcXVldWUuZW5jcnlwdGlvbk1hc3RlcktleSB9O1xuICB9IGVsc2Uge1xuICAgIC8vIElmIGFuIGV4aXN0aW5nUXVldWVPYmogaXMgc3BlY2lmaWVkLCByZXR1cm4gdGhhdCBvYmplY3QgYXMgdGhlIHF1ZXVlIHRvIGJlIHVzZWRcbiAgICByZXR1cm4geyBxdWV1ZTogcHJvcHMuZXhpc3RpbmdRdWV1ZU9iaiB9O1xuICB9XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZnVuY3Rpb24gQ2hlY2tFbmNyeXB0aW9uV2FybmluZ3MocHJvcHM6IEJ1aWxkUXVldWVQcm9wcykge1xuICBpZiAoKHByb3BzLnF1ZXVlUHJvcHM/LmVuY3J5cHRpb25NYXN0ZXJLZXkgfHwgcHJvcHMuZW5jcnlwdGlvbktleSB8fCBwcm9wcy5lbmNyeXB0aW9uS2V5UHJvcHMpXG4gICYmIHByb3BzLmVuYWJsZUVuY3J5cHRpb25XaXRoQ3VzdG9tZXJNYW5hZ2VkS2V5ID09PSB0cnVlKSB7XG4gICAgcHJpbnRXYXJuaW5nKGBJZ25vcmluZyBlbmFibGVFbmNyeXB0aW9uV2l0aEN1c3RvbWVyTWFuYWdlZEtleSBiZWNhdXNlIG9uZSBvZlxuICAgICBxdWV1ZVByb3BzLmVuY3J5cHRpb25NYXN0ZXJLZXksIGVuY3J5cHRpb25LZXksIG9yIGVuY3J5cHRpb25LZXlQcm9wcyB3YXMgYWxyZWFkeSBzcGVjaWZpZWRgKTtcbiAgfVxufVxuZXhwb3J0IGludGVyZmFjZSBCdWlsZERlYWRMZXR0ZXJRdWV1ZVByb3BzIHtcbiAgLyoqXG4gICAqIEV4aXN0aW5nIGluc3RhbmNlIG9mIFNRUyBxdWV1ZSBvYmplY3QsIHByb3ZpZGluZyBib3RoIHRoaXMgYW5kIHF1ZXVlUHJvcHMgd2lsbCBjYXVzZSBhbiBlcnJvci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhpc3RpbmdRdWV1ZU9iaj86IHNxcy5RdWV1ZSxcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGVwbG95IGEgc2Vjb25kYXJ5IHF1ZXVlIHRvIGJlIHVzZWQgYXMgYSBkZWFkIGxldHRlciBxdWV1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSByZXF1aXJlZCBmaWVsZC5cbiAgICovXG4gIHJlYWRvbmx5IGRlcGxveURlYWRMZXR0ZXJRdWV1ZT86IGJvb2xlYW4sXG4gIC8qKlxuICAgKiBPcHRpb25hbCB1c2VyIHByb3ZpZGVkIHByb3BlcnRpZXMgZm9yIHRoZSBkZWFkIGxldHRlciBxdWV1ZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcHMgYXJlIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGRlYWRMZXR0ZXJRdWV1ZVByb3BzPzogc3FzLlF1ZXVlUHJvcHMsXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHRpbWVzIGEgbWVzc2FnZSBjYW4gYmUgdW5zdWNjZXNzZnVsbHkgZGVxdWV1ZWQgYmVmb3JlIGJlaW5nIG1vdmVkIHRvIHRoZSBkZWFkIGxldHRlciBxdWV1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHByb3BzIGFyZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBtYXhSZWNlaXZlQ291bnQ/OiBudW1iZXJcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGREZWFkTGV0dGVyUXVldWUoc2NvcGU6IENvbnN0cnVjdCwgcHJvcHM6IEJ1aWxkRGVhZExldHRlclF1ZXVlUHJvcHMpOiBzcXMuRGVhZExldHRlclF1ZXVlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFwcm9wcy5leGlzdGluZ1F1ZXVlT2JqICYmIChwcm9wcy5kZXBsb3lEZWFkTGV0dGVyUXVldWUgfHwgcHJvcHMuZGVwbG95RGVhZExldHRlclF1ZXVlID09PSB1bmRlZmluZWQpKSB7XG4gICAgLy8gQ3JlYXRlIHRoZSBEZWFkIExldHRlciBRdWV1ZVxuICAgIGNvbnN0IGJ1aWxkUXVldWVSZXNwb25zZSA9IGJ1aWxkUXVldWUoc2NvcGUsICdkZWFkTGV0dGVyUXVldWUnLCB7XG4gICAgICBxdWV1ZVByb3BzOiBwcm9wcy5kZWFkTGV0dGVyUXVldWVQcm9wc1xuICAgIH0pO1xuXG4gICAgY29uc3QgbXJjID0gKHByb3BzLm1heFJlY2VpdmVDb3VudCkgPyBwcm9wcy5tYXhSZWNlaXZlQ291bnQgOiBkZWZhdWx0cy5kZWZhdWx0TWF4UmVjZWl2ZUNvdW50O1xuXG4gICAgLy8gU2V0dXAgdGhlIERlYWQgTGV0dGVyIFF1ZXVlIGludGVyZmFjZVxuICAgIGNvbnN0IGRscUludGVyZmFjZTogc3FzLkRlYWRMZXR0ZXJRdWV1ZSA9IHtcbiAgICAgIG1heFJlY2VpdmVDb3VudDogbXJjLFxuICAgICAgcXVldWU6IGJ1aWxkUXVldWVSZXNwb25zZS5xdWV1ZVxuICAgIH07XG5cbiAgICAvLyBSZXR1cm4gdGhlIGRlYWQgbGV0dGVyIHF1ZXVlIGludGVyZmFjZVxuICAgIHJldHVybiBkbHFJbnRlcmZhY2U7XG4gIH1cbiAgLy8gRVNMaW50IHJlcXVpcmVzIHRoaXMgcmV0dXJuIHN0YXRlbWVudCwgc28gZGlzYWJsaW5nIFNvbmFyUXViZSB3YXJuaW5nXG4gIHJldHVybjsgLy8gTk9TT05BUlxufVxuXG5mdW5jdGlvbiBhcHBseVNlY3VyZVF1ZXVlUG9saWN5KHF1ZXVlOiBzcXMuUXVldWUpOiB2b2lkIHtcblxuICAvLyBBcHBseSBxdWV1ZSBwb2xpY3kgdG8gZW5mb3JjZSBvbmx5IHRoZSBxdWV1ZSBvd25lciBjYW4gcGVyZm9ybSBvcGVyYXRpb25zIG9uIHF1ZXVlXG4gIHF1ZXVlLmFkZFRvUmVzb3VyY2VQb2xpY3koXG4gICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICBzaWQ6ICdRdWV1ZU93bmVyT25seUFjY2VzcycsXG4gICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgYCR7cXVldWUucXVldWVBcm59YFxuICAgICAgXSxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgXCJzcXM6RGVsZXRlTWVzc2FnZVwiLFxuICAgICAgICBcInNxczpSZWNlaXZlTWVzc2FnZVwiLFxuICAgICAgICBcInNxczpTZW5kTWVzc2FnZVwiLFxuICAgICAgICBcInNxczpHZXRRdWV1ZUF0dHJpYnV0ZXNcIixcbiAgICAgICAgXCJzcXM6UmVtb3ZlUGVybWlzc2lvblwiLFxuICAgICAgICBcInNxczpBZGRQZXJtaXNzaW9uXCIsXG4gICAgICAgIFwic3FzOlNldFF1ZXVlQXR0cmlidXRlc1wiXG4gICAgICBdLFxuICAgICAgcHJpbmNpcGFsczogW25ldyBBY2NvdW50UHJpbmNpcGFsKFN0YWNrLm9mKHF1ZXVlKS5hY2NvdW50KV0sXG4gICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPV1xuICAgIH0pXG4gICk7XG5cbiAgLy8gQXBwbHkgcXVldWUgcG9saWN5IHRvIGVuZm9yY2UgZW5jcnlwdGlvbiBvZiBkYXRhIGluIHRyYW5zaXRcbiAgcXVldWUuYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHNpZDogJ0h0dHBzT25seScsXG4gICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgYCR7cXVldWUucXVldWVBcm59YFxuICAgICAgXSxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgXCJTUVM6KlwiXG4gICAgICBdLFxuICAgICAgcHJpbmNpcGFsczogW25ldyBBbnlQcmluY2lwYWwoKV0sXG4gICAgICBlZmZlY3Q6IEVmZmVjdC5ERU5ZLFxuICAgICAgY29uZGl0aW9uczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBCb29sOiB7XG4gICAgICAgICAgICAgICdhd3M6U2VjdXJlVHJhbnNwb3J0JzogJ2ZhbHNlJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICB9KVxuICApO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNxc1Byb3BzIHtcbiAgcmVhZG9ubHkgZXhpc3RpbmdRdWV1ZU9iaj86IHNxcy5RdWV1ZSxcbiAgcmVhZG9ubHkgcXVldWVQcm9wcz86IHNxcy5RdWV1ZVByb3BzLFxuICByZWFkb25seSBkZXBsb3lEZWFkTGV0dGVyUXVldWU/OiBib29sZWFuLFxuICByZWFkb25seSBkZWFkTGV0dGVyUXVldWVQcm9wcz86IHNxcy5RdWV1ZVByb3BzLFxuICByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLktleSxcbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleVByb3BzPzoga21zLktleVByb3BzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDaGVja1Nxc1Byb3BzKHByb3BzT2JqZWN0OiBTcXNQcm9wcyB8IGFueSkge1xuICBsZXQgZXJyb3JNZXNzYWdlcyA9ICcnO1xuICBsZXQgZXJyb3JGb3VuZCA9IGZhbHNlO1xuXG4gIGlmIChwcm9wc09iamVjdC5leGlzdGluZ1F1ZXVlT2JqICYmIHByb3BzT2JqZWN0LnF1ZXVlUHJvcHMpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIEVpdGhlciBwcm92aWRlIHF1ZXVlUHJvcHMgb3IgZXhpc3RpbmdRdWV1ZU9iaiwgYnV0IG5vdCBib3RoLlxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAocHJvcHNPYmplY3QucXVldWVQcm9wcz8uZW5jcnlwdGlvbk1hc3RlcktleSAmJiBwcm9wc09iamVjdC5lbmNyeXB0aW9uS2V5KSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBFaXRoZXIgcHJvdmlkZSBxdWV1ZVByb3BzLmVuY3J5cHRpb25NYXN0ZXJLZXkgb3IgZW5jcnlwdGlvbktleSwgYnV0IG5vdCBib3RoLlxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAocHJvcHNPYmplY3QucXVldWVQcm9wcz8uZW5jcnlwdGlvbk1hc3RlcktleSAmJiBwcm9wc09iamVjdC5lbmNyeXB0aW9uS2V5UHJvcHMpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIEVpdGhlciBwcm92aWRlIHF1ZXVlUHJvcHMuZW5jcnlwdGlvbk1hc3RlcktleSBvciBlbmNyeXB0aW9uS2V5UHJvcHMsIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHByb3BzT2JqZWN0LmVuY3J5cHRpb25LZXkgJiYgcHJvcHNPYmplY3QuZW5jcnlwdGlvbktleVByb3BzKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAnRXJyb3IgLSBFaXRoZXIgcHJvdmlkZSBlbmNyeXB0aW9uS2V5IG9yIGVuY3J5cHRpb25LZXlQcm9wcywgYnV0IG5vdCBib3RoLlxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAoKHByb3BzT2JqZWN0Py5kZXBsb3lEZWFkTGV0dGVyUXVldWUgPT09IGZhbHNlKSAmJiBwcm9wc09iamVjdC5kZWFkTGV0dGVyUXVldWVQcm9wcykge1xuICAgIGVycm9yTWVzc2FnZXMgKz0gJ0Vycm9yIC0gSWYgZGVwbG95RGVhZExldHRlclF1ZXVlIGlzIGZhbHNlIHRoZW4gZGVhZExldHRlclF1ZXVlUHJvcHMgY2Fubm90IGJlIHNwZWNpZmllZC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgY29uc3QgaXNRdWV1ZUZpZm86IGJvb2xlYW4gPSBwcm9wc09iamVjdD8ucXVldWVQcm9wcz8uZmlmbztcbiAgY29uc3QgaXNEZWFkTGV0dGVyUXVldWVGaWZvOiBib29sZWFuID0gcHJvcHNPYmplY3Q/LmRlYWRMZXR0ZXJRdWV1ZVByb3BzPy5maWZvO1xuICBjb25zdCBkZXBsb3lEZWFkTGV0dGVyUXVldWU6IGJvb2xlYW4gPSBwcm9wc09iamVjdC5kZXBsb3lEZWFkTGV0dGVyUXVldWUgfHwgcHJvcHNPYmplY3QuZGVwbG95RGVhZExldHRlclF1ZXVlID09PSB1bmRlZmluZWQ7XG5cbiAgaWYgKGRlcGxveURlYWRMZXR0ZXJRdWV1ZSAmJiAoaXNRdWV1ZUZpZm8gIT09IGlzRGVhZExldHRlclF1ZXVlRmlmbykpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIElmIHlvdSBzcGVjaWZ5IGEgZmlmbzogdHJ1ZSBpbiBlaXRoZXIgcXVldWVQcm9wcyBvciBkZWFkTGV0dGVyUXVldWVQcm9wcywgeW91IG11c3QgYWxzbyBzZXQgZmlmbzogJyArXG4gICAgICAndHJ1ZSBpbiB0aGUgb3RoZXIgcHJvcHMgb2JqZWN0LiBGaWZvIG11c3QgbWF0Y2ggZm9yIHRoZSBRdWV1ZSBhbmQgdGhlIERlYWQgTGV0dGVyIFF1ZXVlLlxcbic7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAoZXJyb3JGb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2VzKTtcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-solutions-constructs/core",
3
- "version": "2.54.1",
3
+ "version": "2.56.0",
4
4
  "description": "Core CDK Construct for patterns library",
5
5
  "main": "index.js",
6
6
  "types": "index.ts",
@@ -52,7 +52,7 @@
52
52
  }
53
53
  },
54
54
  "dependencies": {
55
- "@aws-cdk/integ-tests-alpha": "2.135.0-alpha.0",
55
+ "@aws-cdk/integ-tests-alpha": "2.138.0-alpha.0",
56
56
  "deep-diff": "^1.0.2",
57
57
  "deepmerge": "^4.0.0",
58
58
  "npmlog": "^7.0.0",
@@ -65,7 +65,7 @@
65
65
  "@types/jest": "^27.4.0",
66
66
  "@types/node": "^10.3.0",
67
67
  "constructs": "^10.0.0",
68
- "aws-cdk-lib": "2.135.0"
68
+ "aws-cdk-lib": "2.138.0"
69
69
  },
70
70
  "jest": {
71
71
  "moduleFileExtensions": [
@@ -88,6 +88,6 @@
88
88
  ],
89
89
  "peerDependencies": {
90
90
  "constructs": "^10.0.0",
91
- "aws-cdk-lib": "^2.135.0"
91
+ "aws-cdk-lib": "^2.138.0"
92
92
  }
93
93
  }
@@ -35,7 +35,7 @@ test('Test deployment w/ custom properties', () => {
35
35
  // Stack
36
36
  const stack = new aws_cdk_lib_1.Stack();
37
37
  // Helper setup
38
- const encKey = defaults.buildEncryptionKey(stack);
38
+ const encKey = defaults.buildEncryptionKey(stack, 'key-test');
39
39
  // Helper declaration
40
40
  defaults.buildKinesisStream(stack, {
41
41
  kinesisStreamProps: {
@@ -96,4 +96,4 @@ test('Test fail Kinesis stream check', () => {
96
96
  // Assertion
97
97
  expect(app).toThrowError('Error - Either provide existingStreamObj or kinesisStreamProps, but not both.\n');
98
98
  });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2luZXNpcy1zdHJlYW1zLWhlbHBlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsia2luZXNpcy1zdHJlYW1zLWhlbHBlci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCxVQUFVO0FBQ1YsNkNBQThDO0FBQzlDLGdDQUFnQztBQUNoQyxtREFBbUQ7QUFDbkQsdURBQWtEO0FBRWxELElBQUksQ0FBQyw0Q0FBNEMsRUFBRSxHQUFHLEVBQUU7SUFDdEQsUUFBUTtJQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBQzFCLHFCQUFxQjtJQUNyQixRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRXZDLHFCQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRTtRQUM1RCxJQUFJLEVBQUUsc0JBQXNCO1FBQzVCLFVBQVUsRUFBRTtZQUNWLGdCQUFnQixFQUFFO2dCQUNoQixjQUFjLEVBQUUsS0FBSzthQUN0QjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO0lBQ2hELFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUMxQixlQUFlO0lBQ2YsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELHFCQUFxQjtJQUNyQixRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFO1FBQ2pDLGtCQUFrQixFQUFFO1lBQ2xCLFVBQVUsRUFBRSx1QkFBdUI7WUFDbkMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHO1lBQ3hDLGFBQWEsRUFBRSxNQUFNO1NBQ3RCO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxRQUFRLEdBQUcscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsUUFBUSxDQUFDLHFCQUFxQixDQUFDLHNCQUFzQixFQUFFO1FBQ3JELElBQUksRUFBRSx1QkFBdUI7S0FDOUIsQ0FBQyxDQUFDO0lBQ0gsY0FBYztJQUNkLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLEVBQUU7UUFDOUMsaUJBQWlCLEVBQUUsSUFBSTtLQUN4QixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxvQ0FBb0MsRUFBRSxHQUFHLEVBQUU7SUFDOUMsUUFBUTtJQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBQzFCLGVBQWU7SUFDZixNQUFNLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLGlCQUFpQixFQUFFO1FBQzFELFVBQVUsRUFBRSxDQUFDO1FBQ2IsZUFBZSxFQUFFLHNCQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUNsQyxDQUFDLENBQUM7SUFDSCxxQkFBcUI7SUFDckIsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRTtRQUNqQyxpQkFBaUIsRUFBRSxNQUFNO1FBRXpCLGlFQUFpRTtRQUNqRSxrQkFBa0IsRUFBRTtZQUNsQixVQUFVLEVBQUUsQ0FBQztZQUNiLGVBQWUsRUFBRSxzQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDbEM7S0FDRixDQUFDLENBQUM7SUFFSCxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxzQkFBc0IsRUFBRTtRQUN0RSxVQUFVLEVBQUUsQ0FBQztRQUNiLG9CQUFvQixFQUFFLEVBQUU7S0FDekIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMseUJBQXlCLEVBQUUsR0FBRyxFQUFFO0lBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBRTFCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUUxRCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMsQ0FBQztBQUVILDhCQUE4QjtBQUM5QixhQUFhO0FBQ2IsOEJBQThCO0FBQzlCLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxHQUFHLEVBQUU7SUFDMUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFFMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsRUFFdkQsQ0FBQyxDQUFDO0lBRUgsTUFBTSxLQUFLLEdBQWdDO1FBQ3pDLGlCQUFpQixFQUFFLE1BQU07UUFDekIsa0JBQWtCLEVBQUUsRUFBRTtLQUN2QixDQUFDO0lBRUYsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFO1FBQ2YsUUFBUSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUMsQ0FBQztJQUVGLFlBQVk7SUFDWixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLGlGQUFpRixDQUFDLENBQUM7QUFDOUcsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBJbXBvcnRzXG5pbXBvcnQgeyBTdGFjaywgRHVyYXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gJy4uLyc7XG5pbXBvcnQgKiBhcyBraW5lc2lzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1raW5lc2lzJztcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSAnYXdzLWNkay1saWIvYXNzZXJ0aW9ucyc7XG5cbnRlc3QoJ1Rlc3QgbWluaW1hbCBkZXBsb3ltZW50IHdpdGggbm8gcHJvcGVydGllcycsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgLy8gSGVscGVyIGRlY2xhcmF0aW9uXG4gIGRlZmF1bHRzLmJ1aWxkS2luZXNpc1N0cmVhbShzdGFjaywge30pO1xuXG4gIFRlbXBsYXRlLmZyb21TdGFjayhzdGFjaykuaGFzUmVzb3VyY2UoJ0FXUzo6S2luZXNpczo6U3RyZWFtJywge1xuICAgIFR5cGU6IFwiQVdTOjpLaW5lc2lzOjpTdHJlYW1cIixcbiAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICBTdHJlYW1FbmNyeXB0aW9uOiB7XG4gICAgICAgIEVuY3J5cHRpb25UeXBlOiBcIktNU1wiXG4gICAgICB9XG4gICAgfVxuICB9KTtcbn0pO1xuXG50ZXN0KCdUZXN0IGRlcGxveW1lbnQgdy8gY3VzdG9tIHByb3BlcnRpZXMnLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIC8vIEhlbHBlciBzZXR1cFxuICBjb25zdCBlbmNLZXkgPSBkZWZhdWx0cy5idWlsZEVuY3J5cHRpb25LZXkoc3RhY2spO1xuICAvLyBIZWxwZXIgZGVjbGFyYXRpb25cbiAgZGVmYXVsdHMuYnVpbGRLaW5lc2lzU3RyZWFtKHN0YWNrLCB7XG4gICAga2luZXNpc1N0cmVhbVByb3BzOiB7XG4gICAgICBzdHJlYW1OYW1lOiAnbXlDdXN0b21LaW5lc2lzU3RyZWFtJyxcbiAgICAgIGVuY3J5cHRpb246IGtpbmVzaXMuU3RyZWFtRW5jcnlwdGlvbi5LTVMsXG4gICAgICBlbmNyeXB0aW9uS2V5OiBlbmNLZXlcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OktpbmVzaXM6OlN0cmVhbScsIHtcbiAgICBOYW1lOiAnbXlDdXN0b21LaW5lc2lzU3RyZWFtJ1xuICB9KTtcbiAgLy8gQXNzZXJ0aW9uIDNcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OktNUzo6S2V5Jywge1xuICAgIEVuYWJsZUtleVJvdGF0aW9uOiB0cnVlXG4gIH0pO1xufSk7XG5cbnRlc3QoJ1Rlc3QgZGVwbG95bWVudCB3LyBleGlzdGluZyBzdHJlYW0nLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIC8vIEhlbHBlciBzZXR1cFxuICBjb25zdCBzdHJlYW0gPSBuZXcga2luZXNpcy5TdHJlYW0oc3RhY2ssICdleGlzdGluZy1zdHJlYW0nLCB7XG4gICAgc2hhcmRDb3VudDogMixcbiAgICByZXRlbnRpb25QZXJpb2Q6IER1cmF0aW9uLmRheXMoMylcbiAgfSk7XG4gIC8vIEhlbHBlciBkZWNsYXJhdGlvblxuICBkZWZhdWx0cy5idWlsZEtpbmVzaXNTdHJlYW0oc3RhY2ssIHtcbiAgICBleGlzdGluZ1N0cmVhbU9iajogc3RyZWFtLFxuXG4gICAgLy8gVGhlc2UgcHJvcHMgd2lsbCBiZSBpZ25vcmVkIGFzIGFuIGV4aXN0aW5nIHN0cmVhbSB3YXMgcHJvdmlkZWRcbiAgICBraW5lc2lzU3RyZWFtUHJvcHM6IHtcbiAgICAgIHNoYXJkQ291bnQ6IDEsXG4gICAgICByZXRlbnRpb25QZXJpb2Q6IER1cmF0aW9uLmRheXMoMSlcbiAgICB9XG4gIH0pO1xuXG4gIFRlbXBsYXRlLmZyb21TdGFjayhzdGFjaykuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OktpbmVzaXM6OlN0cmVhbScsIHtcbiAgICBTaGFyZENvdW50OiAyLFxuICAgIFJldGVudGlvblBlcmlvZEhvdXJzOiA3MlxuICB9KTtcbn0pO1xuXG50ZXN0KCdDb3VudCBLaW5lc2lzIENXIEFsYXJtcycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBjd0xpc3QgPSBkZWZhdWx0cy5idWlsZEtpbmVzaXNTdHJlYW1DV0FsYXJtcyhzdGFjayk7XG5cbiAgZXhwZWN0KGN3TGlzdC5sZW5ndGgpLnRvRXF1YWwoMik7XG59KTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQcm9wIFRlc3RzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnRlc3QoJ1Rlc3QgZmFpbCBLaW5lc2lzIHN0cmVhbSBjaGVjaycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBzdHJlYW0gPSBuZXcga2luZXNpcy5TdHJlYW0oc3RhY2ssICdwbGFjZWhvbGRlcicsIHtcblxuICB9KTtcblxuICBjb25zdCBwcm9wczogZGVmYXVsdHMuS2luZXNpc1N0cmVhbVByb3BzID0ge1xuICAgIGV4aXN0aW5nU3RyZWFtT2JqOiBzdHJlYW0sXG4gICAga2luZXNpc1N0cmVhbVByb3BzOiB7fVxuICB9O1xuXG4gIGNvbnN0IGFwcCA9ICgpID0+IHtcbiAgICBkZWZhdWx0cy5DaGVja0tpbmVzaXNTdHJlYW1Qcm9wcyhwcm9wcyk7XG4gIH07XG5cbiAgLy8gQXNzZXJ0aW9uXG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcignRXJyb3IgLSBFaXRoZXIgcHJvdmlkZSBleGlzdGluZ1N0cmVhbU9iaiBvciBraW5lc2lzU3RyZWFtUHJvcHMsIGJ1dCBub3QgYm90aC5cXG4nKTtcbn0pO1xuIl19
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2luZXNpcy1zdHJlYW1zLWhlbHBlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsia2luZXNpcy1zdHJlYW1zLWhlbHBlci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCxVQUFVO0FBQ1YsNkNBQThDO0FBQzlDLGdDQUFnQztBQUNoQyxtREFBbUQ7QUFDbkQsdURBQWtEO0FBRWxELElBQUksQ0FBQyw0Q0FBNEMsRUFBRSxHQUFHLEVBQUU7SUFDdEQsUUFBUTtJQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBQzFCLHFCQUFxQjtJQUNyQixRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRXZDLHFCQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRTtRQUM1RCxJQUFJLEVBQUUsc0JBQXNCO1FBQzVCLFVBQVUsRUFBRTtZQUNWLGdCQUFnQixFQUFFO2dCQUNoQixjQUFjLEVBQUUsS0FBSzthQUN0QjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO0lBQ2hELFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUMxQixlQUFlO0lBQ2YsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM5RCxxQkFBcUI7SUFDckIsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRTtRQUNqQyxrQkFBa0IsRUFBRTtZQUNsQixVQUFVLEVBQUUsdUJBQXVCO1lBQ25DLFVBQVUsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRztZQUN4QyxhQUFhLEVBQUUsTUFBTTtTQUN0QjtLQUNGLENBQUMsQ0FBQztJQUVILE1BQU0sUUFBUSxHQUFHLHFCQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxzQkFBc0IsRUFBRTtRQUNyRCxJQUFJLEVBQUUsdUJBQXVCO0tBQzlCLENBQUMsQ0FBQztJQUNILGNBQWM7SUFDZCxRQUFRLENBQUMscUJBQXFCLENBQUMsZUFBZSxFQUFFO1FBQzlDLGlCQUFpQixFQUFFLElBQUk7S0FDeEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsb0NBQW9DLEVBQUUsR0FBRyxFQUFFO0lBQzlDLFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUMxQixlQUFlO0lBQ2YsTUFBTSxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRTtRQUMxRCxVQUFVLEVBQUUsQ0FBQztRQUNiLGVBQWUsRUFBRSxzQkFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDbEMsQ0FBQyxDQUFDO0lBQ0gscUJBQXFCO0lBQ3JCLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUU7UUFDakMsaUJBQWlCLEVBQUUsTUFBTTtRQUV6QixpRUFBaUU7UUFDakUsa0JBQWtCLEVBQUU7WUFDbEIsVUFBVSxFQUFFLENBQUM7WUFDYixlQUFlLEVBQUUsc0JBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ2xDO0tBQ0YsQ0FBQyxDQUFDO0lBRUgscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMscUJBQXFCLENBQUMsc0JBQXNCLEVBQUU7UUFDdEUsVUFBVSxFQUFFLENBQUM7UUFDYixvQkFBb0IsRUFBRSxFQUFFO0tBQ3pCLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtJQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUUxQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFMUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDLENBQUM7QUFFSCw4QkFBOEI7QUFDOUIsYUFBYTtBQUNiLDhCQUE4QjtBQUM5QixJQUFJLENBQUMsZ0NBQWdDLEVBQUUsR0FBRyxFQUFFO0lBQzFDLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBRTFCLE1BQU0sTUFBTSxHQUFHLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBRXZELENBQUMsQ0FBQztJQUVILE1BQU0sS0FBSyxHQUFnQztRQUN6QyxpQkFBaUIsRUFBRSxNQUFNO1FBQ3pCLGtCQUFrQixFQUFFLEVBQUU7S0FDdkIsQ0FBQztJQUVGLE1BQU0sR0FBRyxHQUFHLEdBQUcsRUFBRTtRQUNmLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDLENBQUM7SUFFRixZQUFZO0lBQ1osTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxpRkFBaUYsQ0FBQyxDQUFDO0FBQzlHLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gSW1wb3J0c1xuaW1wb3J0IHsgU3RhY2ssIER1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tICcuLi8nO1xuaW1wb3J0ICogYXMga2luZXNpcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta2luZXNpcyc7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gJ2F3cy1jZGstbGliL2Fzc2VydGlvbnMnO1xuXG50ZXN0KCdUZXN0IG1pbmltYWwgZGVwbG95bWVudCB3aXRoIG5vIHByb3BlcnRpZXMnLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIC8vIEhlbHBlciBkZWNsYXJhdGlvblxuICBkZWZhdWx0cy5idWlsZEtpbmVzaXNTdHJlYW0oc3RhY2ssIHt9KTtcblxuICBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spLmhhc1Jlc291cmNlKCdBV1M6OktpbmVzaXM6OlN0cmVhbScsIHtcbiAgICBUeXBlOiBcIkFXUzo6S2luZXNpczo6U3RyZWFtXCIsXG4gICAgUHJvcGVydGllczoge1xuICAgICAgU3RyZWFtRW5jcnlwdGlvbjoge1xuICAgICAgICBFbmNyeXB0aW9uVHlwZTogXCJLTVNcIlxuICAgICAgfVxuICAgIH1cbiAgfSk7XG59KTtcblxudGVzdCgnVGVzdCBkZXBsb3ltZW50IHcvIGN1c3RvbSBwcm9wZXJ0aWVzJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICAvLyBIZWxwZXIgc2V0dXBcbiAgY29uc3QgZW5jS2V5ID0gZGVmYXVsdHMuYnVpbGRFbmNyeXB0aW9uS2V5KHN0YWNrLCAna2V5LXRlc3QnKTtcbiAgLy8gSGVscGVyIGRlY2xhcmF0aW9uXG4gIGRlZmF1bHRzLmJ1aWxkS2luZXNpc1N0cmVhbShzdGFjaywge1xuICAgIGtpbmVzaXNTdHJlYW1Qcm9wczoge1xuICAgICAgc3RyZWFtTmFtZTogJ215Q3VzdG9tS2luZXNpc1N0cmVhbScsXG4gICAgICBlbmNyeXB0aW9uOiBraW5lc2lzLlN0cmVhbUVuY3J5cHRpb24uS01TLFxuICAgICAgZW5jcnlwdGlvbktleTogZW5jS2V5XG4gICAgfVxuICB9KTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpLaW5lc2lzOjpTdHJlYW0nLCB7XG4gICAgTmFtZTogJ215Q3VzdG9tS2luZXNpc1N0cmVhbSdcbiAgfSk7XG4gIC8vIEFzc2VydGlvbiAzXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpLTVM6OktleScsIHtcbiAgICBFbmFibGVLZXlSb3RhdGlvbjogdHJ1ZVxuICB9KTtcbn0pO1xuXG50ZXN0KCdUZXN0IGRlcGxveW1lbnQgdy8gZXhpc3Rpbmcgc3RyZWFtJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICAvLyBIZWxwZXIgc2V0dXBcbiAgY29uc3Qgc3RyZWFtID0gbmV3IGtpbmVzaXMuU3RyZWFtKHN0YWNrLCAnZXhpc3Rpbmctc3RyZWFtJywge1xuICAgIHNoYXJkQ291bnQ6IDIsXG4gICAgcmV0ZW50aW9uUGVyaW9kOiBEdXJhdGlvbi5kYXlzKDMpXG4gIH0pO1xuICAvLyBIZWxwZXIgZGVjbGFyYXRpb25cbiAgZGVmYXVsdHMuYnVpbGRLaW5lc2lzU3RyZWFtKHN0YWNrLCB7XG4gICAgZXhpc3RpbmdTdHJlYW1PYmo6IHN0cmVhbSxcblxuICAgIC8vIFRoZXNlIHByb3BzIHdpbGwgYmUgaWdub3JlZCBhcyBhbiBleGlzdGluZyBzdHJlYW0gd2FzIHByb3ZpZGVkXG4gICAga2luZXNpc1N0cmVhbVByb3BzOiB7XG4gICAgICBzaGFyZENvdW50OiAxLFxuICAgICAgcmV0ZW50aW9uUGVyaW9kOiBEdXJhdGlvbi5kYXlzKDEpXG4gICAgfVxuICB9KTtcblxuICBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpLaW5lc2lzOjpTdHJlYW0nLCB7XG4gICAgU2hhcmRDb3VudDogMixcbiAgICBSZXRlbnRpb25QZXJpb2RIb3VyczogNzJcbiAgfSk7XG59KTtcblxudGVzdCgnQ291bnQgS2luZXNpcyBDVyBBbGFybXMnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgY3dMaXN0ID0gZGVmYXVsdHMuYnVpbGRLaW5lc2lzU3RyZWFtQ1dBbGFybXMoc3RhY2spO1xuXG4gIGV4cGVjdChjd0xpc3QubGVuZ3RoKS50b0VxdWFsKDIpO1xufSk7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUHJvcCBUZXN0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG50ZXN0KCdUZXN0IGZhaWwgS2luZXNpcyBzdHJlYW0gY2hlY2snLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3Qgc3RyZWFtID0gbmV3IGtpbmVzaXMuU3RyZWFtKHN0YWNrLCAncGxhY2Vob2xkZXInLCB7XG5cbiAgfSk7XG5cbiAgY29uc3QgcHJvcHM6IGRlZmF1bHRzLktpbmVzaXNTdHJlYW1Qcm9wcyA9IHtcbiAgICBleGlzdGluZ1N0cmVhbU9iajogc3RyZWFtLFxuICAgIGtpbmVzaXNTdHJlYW1Qcm9wczoge31cbiAgfTtcblxuICBjb25zdCBhcHAgPSAoKSA9PiB7XG4gICAgZGVmYXVsdHMuQ2hlY2tLaW5lc2lzU3RyZWFtUHJvcHMocHJvcHMpO1xuICB9O1xuXG4gIC8vIEFzc2VydGlvblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoJ0Vycm9yIC0gRWl0aGVyIHByb3ZpZGUgZXhpc3RpbmdTdHJlYW1PYmogb3Iga2luZXNpc1N0cmVhbVByb3BzLCBidXQgbm90IGJvdGguXFxuJyk7XG59KTtcbiJdfQ==
@@ -23,7 +23,7 @@ test('Test minimal deployment with no properties', () => {
23
23
  // Stack
24
24
  const stack = new aws_cdk_lib_1.Stack();
25
25
  // Helper declaration
26
- defaults.buildEncryptionKey(stack);
26
+ defaults.buildEncryptionKey(stack, 'key-test');
27
27
  assertions_1.Template.fromStack(stack).hasResource('AWS::KMS::Key', {
28
28
  Type: "AWS::KMS::Key",
29
29
  Properties: {
@@ -38,7 +38,7 @@ test('Test minimal deployment with custom properties', () => {
38
38
  // Stack
39
39
  const stack = new aws_cdk_lib_1.Stack();
40
40
  // Helper declaration
41
- defaults.buildEncryptionKey(stack, {
41
+ defaults.buildEncryptionKey(stack, 'key-test', {
42
42
  enableKeyRotation: false
43
43
  });
44
44
  assertions_1.Template.fromStack(stack).hasResource('AWS::KMS::Key', {
@@ -48,4 +48,4 @@ test('Test minimal deployment with custom properties', () => {
48
48
  }
49
49
  });
50
50
  });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia21zLWhlbHBlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsia21zLWhlbHBlci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCxVQUFVO0FBQ1YsNkNBQW9DO0FBQ3BDLGdDQUFnQztBQUNoQyx1REFBa0Q7QUFFbEQsaUVBQWlFO0FBQ2pFLDZDQUE2QztBQUM3QyxpRUFBaUU7QUFDakUsSUFBSSxDQUFDLDRDQUE0QyxFQUFFLEdBQUcsRUFBRTtJQUN0RCxRQUFRO0lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFDMUIscUJBQXFCO0lBQ3JCLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVuQyxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFO1FBQ3JELElBQUksRUFBRSxlQUFlO1FBQ3JCLFVBQVUsRUFBRTtZQUNWLGlCQUFpQixFQUFFLElBQUk7U0FDeEI7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILGlFQUFpRTtBQUNqRSx1Q0FBdUM7QUFDdkMsaUVBQWlFO0FBQ2pFLElBQUksQ0FBQyxnREFBZ0QsRUFBRSxHQUFHLEVBQUU7SUFDMUQsUUFBUTtJQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBQzFCLHFCQUFxQjtJQUNyQixRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFO1FBQ2pDLGlCQUFpQixFQUFFLEtBQUs7S0FDekIsQ0FBQyxDQUFDO0lBRUgscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRTtRQUNyRCxJQUFJLEVBQUUsZUFBZTtRQUNyQixVQUFVLEVBQUU7WUFDVixpQkFBaUIsRUFBRSxLQUFLO1NBQ3pCO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBJbXBvcnRzXG5pbXBvcnQgeyBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgZGVmYXVsdHMgZnJvbSAnLi4vJztcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSAnYXdzLWNkay1saWIvYXNzZXJ0aW9ucyc7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUZXN0IG1pbmltYWwgZGVwbG95bWVudCB3aXRoIG5vIHByb3BlcnRpZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG50ZXN0KCdUZXN0IG1pbmltYWwgZGVwbG95bWVudCB3aXRoIG5vIHByb3BlcnRpZXMnLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIC8vIEhlbHBlciBkZWNsYXJhdGlvblxuICBkZWZhdWx0cy5idWlsZEVuY3J5cHRpb25LZXkoc3RhY2spO1xuXG4gIFRlbXBsYXRlLmZyb21TdGFjayhzdGFjaykuaGFzUmVzb3VyY2UoJ0FXUzo6S01TOjpLZXknLCB7XG4gICAgVHlwZTogXCJBV1M6OktNUzo6S2V5XCIsXG4gICAgUHJvcGVydGllczoge1xuICAgICAgRW5hYmxlS2V5Um90YXRpb246IHRydWVcbiAgICB9XG4gIH0pO1xufSk7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUZXN0IGRlcGxveW1lbnQgdy8gY3VzdG9tIHByb3BlcnRpZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG50ZXN0KCdUZXN0IG1pbmltYWwgZGVwbG95bWVudCB3aXRoIGN1c3RvbSBwcm9wZXJ0aWVzJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICAvLyBIZWxwZXIgZGVjbGFyYXRpb25cbiAgZGVmYXVsdHMuYnVpbGRFbmNyeXB0aW9uS2V5KHN0YWNrLCB7XG4gICAgZW5hYmxlS2V5Um90YXRpb246IGZhbHNlXG4gIH0pO1xuXG4gIFRlbXBsYXRlLmZyb21TdGFjayhzdGFjaykuaGFzUmVzb3VyY2UoJ0FXUzo6S01TOjpLZXknLCB7XG4gICAgVHlwZTogXCJBV1M6OktNUzo6S2V5XCIsXG4gICAgUHJvcGVydGllczoge1xuICAgICAgRW5hYmxlS2V5Um90YXRpb246IGZhbHNlXG4gICAgfVxuICB9KTtcbn0pOyJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia21zLWhlbHBlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsia21zLWhlbHBlci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCxVQUFVO0FBQ1YsNkNBQW9DO0FBQ3BDLGdDQUFnQztBQUNoQyx1REFBa0Q7QUFFbEQsaUVBQWlFO0FBQ2pFLDZDQUE2QztBQUM3QyxpRUFBaUU7QUFDakUsSUFBSSxDQUFDLDRDQUE0QyxFQUFFLEdBQUcsRUFBRTtJQUN0RCxRQUFRO0lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFDMUIscUJBQXFCO0lBQ3JCLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFL0MscUJBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRTtRQUNyRCxJQUFJLEVBQUUsZUFBZTtRQUNyQixVQUFVLEVBQUU7WUFDVixpQkFBaUIsRUFBRSxJQUFJO1NBQ3hCO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxpRUFBaUU7QUFDakUsdUNBQXVDO0FBQ3ZDLGlFQUFpRTtBQUNqRSxJQUFJLENBQUMsZ0RBQWdELEVBQUUsR0FBRyxFQUFFO0lBQzFELFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUMxQixxQkFBcUI7SUFDckIsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUU7UUFDN0MsaUJBQWlCLEVBQUUsS0FBSztLQUN6QixDQUFDLENBQUM7SUFFSCxxQkFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFO1FBQ3JELElBQUksRUFBRSxlQUFlO1FBQ3JCLFVBQVUsRUFBRTtZQUNWLGlCQUFpQixFQUFFLEtBQUs7U0FDekI7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIEltcG9ydHNcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tICcuLi8nO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hc3NlcnRpb25zJztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRlc3QgbWluaW1hbCBkZXBsb3ltZW50IHdpdGggbm8gcHJvcGVydGllc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnRlc3QoJ1Rlc3QgbWluaW1hbCBkZXBsb3ltZW50IHdpdGggbm8gcHJvcGVydGllcycsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgLy8gSGVscGVyIGRlY2xhcmF0aW9uXG4gIGRlZmF1bHRzLmJ1aWxkRW5jcnlwdGlvbktleShzdGFjaywgJ2tleS10ZXN0Jyk7XG5cbiAgVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKS5oYXNSZXNvdXJjZSgnQVdTOjpLTVM6OktleScsIHtcbiAgICBUeXBlOiBcIkFXUzo6S01TOjpLZXlcIixcbiAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICBFbmFibGVLZXlSb3RhdGlvbjogdHJ1ZVxuICAgIH1cbiAgfSk7XG59KTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRlc3QgZGVwbG95bWVudCB3LyBjdXN0b20gcHJvcGVydGllc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnRlc3QoJ1Rlc3QgbWluaW1hbCBkZXBsb3ltZW50IHdpdGggY3VzdG9tIHByb3BlcnRpZXMnLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIC8vIEhlbHBlciBkZWNsYXJhdGlvblxuICBkZWZhdWx0cy5idWlsZEVuY3J5cHRpb25LZXkoc3RhY2ssICdrZXktdGVzdCcsIHtcbiAgICBlbmFibGVLZXlSb3RhdGlvbjogZmFsc2VcbiAgfSk7XG5cbiAgVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKS5oYXNSZXNvdXJjZSgnQVdTOjpLTVM6OktleScsIHtcbiAgICBUeXBlOiBcIkFXUzo6S01TOjpLZXlcIixcbiAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICBFbmFibGVLZXlSb3RhdGlvbjogZmFsc2VcbiAgICB9XG4gIH0pO1xufSk7Il19