cdk-import 0.2.1007 → 0.2.1009

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.
@@ -33,9 +33,8 @@ const aws_1 = require("./aws");
33
33
  * @returns the type definition
34
34
  */
35
35
  async function describeResourceType(name, options = {}) {
36
- var _a, _b;
37
36
  const visibility = options.private ? 'PRIVATE' : 'PUBLIC';
38
- const cfn = (_a = options.client) !== null && _a !== void 0 ? _a : new CloudFormationClient();
37
+ const cfn = options.client ?? new CloudFormationClient();
39
38
  let typeArn;
40
39
  if (name.startsWith('arn:')) {
41
40
  typeArn = name;
@@ -75,7 +74,7 @@ async function describeResourceType(name, options = {}) {
75
74
  return {
76
75
  TypeName: type.TypeName,
77
76
  Schema: type.Schema,
78
- SourceUrl: (_b = type.SourceUrl) !== null && _b !== void 0 ? _b : type.Arn,
77
+ SourceUrl: type.SourceUrl ?? type.Arn,
79
78
  };
80
79
  }
81
80
  exports.describeResourceType = describeResourceType;
@@ -90,4 +89,4 @@ class CloudFormationClient {
90
89
  return this.cfn.listTypes(input).promise();
91
90
  }
92
91
  }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZuLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Nmbi1yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQiwrQkFBd0M7QUF5QnhDOzs7OztHQUtHO0FBQ0ksS0FBSyxVQUFVLG9CQUFvQixDQUFDLElBQVksRUFBRSxVQUF1QyxFQUFFOztJQUNoRyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUMxRCxNQUFNLEdBQUcsR0FBRyxNQUFBLE9BQU8sQ0FBQyxNQUFNLG1DQUFJLElBQUksb0JBQW9CLEVBQUUsQ0FBQztJQUV6RCxJQUFJLE9BQU8sQ0FBQztJQUVaLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUMzQixPQUFPLEdBQUcsSUFBSSxDQUFDO0tBQ2hCO1NBQU07UUFDTCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxLQUFLLENBQUM7UUFDVixHQUFHO1lBQ0QsTUFBTSxHQUFHLEdBQXVDLE1BQU0sR0FBRyxDQUFDLFNBQVMsQ0FBQztnQkFDbEUsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVU7Z0JBQ3JELE9BQU8sRUFBRTtvQkFDUCxjQUFjLEVBQUUsSUFBSTtpQkFDckI7Z0JBQ0QsVUFBVSxFQUFFLFVBQVU7YUFDdkIsQ0FBQyxDQUFDO1lBRUgsSUFBSSxHQUFHLENBQUMsYUFBYSxFQUFFO2dCQUNyQixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ2xDO1lBQ0QsS0FBSyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUM7U0FDdkIsUUFBUSxLQUFLLEVBQUU7UUFFaEIsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ25FO1FBRUQsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7S0FDNUI7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsQ0FBQyxZQUFZLENBQUM7UUFDbEMsR0FBRyxFQUFFLE9BQU87UUFDWixrQkFBa0I7S0FDbkIsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLEdBQUcsMEJBQTBCLENBQUMsQ0FBQztLQUM3RTtJQUNELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxHQUFHLCtCQUErQixDQUFDLENBQUM7S0FDbEY7SUFDRCxPQUFPO1FBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1FBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtRQUNuQixTQUFTLEVBQUUsTUFBQSxJQUFJLENBQUMsU0FBUyxtQ0FBSSxJQUFJLENBQUMsR0FBSTtLQUN2QyxDQUFDO0FBQ0osQ0FBQztBQWpERCxvREFpREM7QUFFRCxNQUFNLG9CQUFvQjtJQUd4QjtRQUNFLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBQSxxQkFBZSxFQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUEyQztRQUNuRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFTSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQXdDO1FBQzdELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHsgY3JlYXRlQXdzQ2xpZW50IH0gZnJvbSAnLi9hd3MnO1xuaW1wb3J0IHsgVHlwZUluZm8gfSBmcm9tICcuL3R5cGUtaW5mbyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNsb3VkRm9ybWF0aW9uQ2xpZW50IHtcbiAgbGlzdFR5cGVzKGlucHV0OiBBV1MuQ2xvdWRGb3JtYXRpb24uTGlzdFR5cGVzSW5wdXQpOiBQcm9taXNlPEFXUy5DbG91ZEZvcm1hdGlvbi5MaXN0VHlwZXNPdXRwdXQ+O1xuICBkZXNjcmliZVR5cGUoaW5wdXQ6IEFXUy5DbG91ZEZvcm1hdGlvbi5EZXNjcmliZVR5cGVJbnB1dCk6IFByb21pc2U8QVdTLkNsb3VkRm9ybWF0aW9uLkRlc2NyaWJlVHlwZU91dHB1dD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVzY3JpYmVSZXNvdXJjZVR5cGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFF1ZXJ5IHdpdGggVklTSUJJTElUWT1QUklWQVRFIHdoaWNoIG1lYW5zIHlvdSBjYW4gb25seSBpbXBvcnQgdHlwZXMgdGhhdFxuICAgKiBhcmUgcmVnaXN0cmVkIGluIHlvdXIgYWNjb3VudCAoZWl0aGVyIHR5cGVzIHRoYXQgeW91IGNyZWF0ZWQgb3IgcHVibGljXG4gICAqIHR5cGVzIHRoYXQgeW91IGFjdGl2YXRlZCkuXG4gICAqL1xuICByZWFkb25seSBwcml2YXRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBjbGllbnQgdGhhdCBwZXJmb3JtcyBjYWxscyB0byBDbG91ZEZvcm1hdGlvbi4gWW91IGNhbiBwcm92aWRlIGEgbW9jayBoZXJlXG4gICAqIGZvciB0ZXN0aW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEEgcmVhbCBDbG91ZEZvcm1hdGlvbiBjbGllbnRcbiAgICovXG4gIHJlYWRvbmx5IGNsaWVudD86IElDbG91ZEZvcm1hdGlvbkNsaWVudDtcbn1cblxuLyoqXG4gKiBDYWxscyB0aGUgQ0ZOIHJlc291cmNlIHR5cGUgcmVnaXN0cnkgdG8gZmV0Y2ggdGhlIHR5cGUgZGVmaW5pdGlvblxuICpcbiAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIG9yIHVuaXF1ZSBwcmVmaXggb2YgdGhlIHJlc291cmNlIHR5cGVcbiAqIEByZXR1cm5zIHRoZSB0eXBlIGRlZmluaXRpb25cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlc2NyaWJlUmVzb3VyY2VUeXBlKG5hbWU6IHN0cmluZywgb3B0aW9uczogRGVzY3JpYmVSZXNvdXJjZVR5cGVPcHRpb25zID0ge30pOiBQcm9taXNlPFR5cGVJbmZvPiB7XG4gIGNvbnN0IHZpc2liaWxpdHkgPSBvcHRpb25zLnByaXZhdGUgPyAnUFJJVkFURScgOiAnUFVCTElDJztcbiAgY29uc3QgY2ZuID0gb3B0aW9ucy5jbGllbnQgPz8gbmV3IENsb3VkRm9ybWF0aW9uQ2xpZW50KCk7XG5cbiAgbGV0IHR5cGVBcm47XG5cbiAgaWYgKG5hbWUuc3RhcnRzV2l0aCgnYXJuOicpKSB7XG4gICAgdHlwZUFybiA9IG5hbWU7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdHlwZXMgPSBbXTtcbiAgICBsZXQgdG9rZW47XG4gICAgZG8ge1xuICAgICAgY29uc3QgcmVzOiBBV1MuQ2xvdWRGb3JtYXRpb24uTGlzdFR5cGVzT3V0cHV0ID0gYXdhaXQgY2ZuLmxpc3RUeXBlcyh7XG4gICAgICAgIE5leHRUb2tlbjogdG9rZW4sXG4gICAgICAgIFR5cGU6IG5hbWUuZW5kc1dpdGgoJ01PRFVMRScpID8gJ01PRFVMRScgOiAnUkVTT1VSQ0UnLFxuICAgICAgICBGaWx0ZXJzOiB7XG4gICAgICAgICAgVHlwZU5hbWVQcmVmaXg6IG5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIFZpc2liaWxpdHk6IHZpc2liaWxpdHksXG4gICAgICB9KTtcblxuICAgICAgaWYgKHJlcy5UeXBlU3VtbWFyaWVzKSB7XG4gICAgICAgIHR5cGVzLnB1c2goLi4ucmVzLlR5cGVTdW1tYXJpZXMpO1xuICAgICAgfVxuICAgICAgdG9rZW4gPSByZXMuTmV4dFRva2VuO1xuICAgIH0gd2hpbGUgKHRva2VuKTtcblxuICAgIGlmICh0eXBlcy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGZpbmQgdW5pcXVlIENsb3VkRm9ybWF0aW9uIFR5cGUgJyArIG5hbWUpO1xuICAgIH1cblxuICAgIHR5cGVBcm4gPSB0eXBlc1swXS5UeXBlQXJuO1xuICB9XG5cbiAgY29uc3QgdHlwZSA9IGF3YWl0IGNmbi5kZXNjcmliZVR5cGUoe1xuICAgIEFybjogdHlwZUFybixcbiAgICAvLyBUT0RPIHZlcnNpb25pbmdcbiAgfSk7XG4gIGlmICghdHlwZS5TY2hlbWEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nsb3VkRm9ybWF0aW9uIFR5cGUgJyArIG5hbWUgKyAnIGRvZXMgbm90IGNvbnRhaW4gc2NoZW1hJyk7XG4gIH1cbiAgaWYgKCF0eXBlLlR5cGVOYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDbG91ZEZvcm1hdGlvbiBUeXBlICcgKyBuYW1lICsgJyBkb2VzIG5vdCBjb250YWluIGEgdHlwZSBuYW1lJyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBUeXBlTmFtZTogdHlwZS5UeXBlTmFtZSxcbiAgICBTY2hlbWE6IHR5cGUuU2NoZW1hLFxuICAgIFNvdXJjZVVybDogdHlwZS5Tb3VyY2VVcmwgPz8gdHlwZS5Bcm4hLFxuICB9O1xufVxuXG5jbGFzcyBDbG91ZEZvcm1hdGlvbkNsaWVudCBpbXBsZW1lbnRzIElDbG91ZEZvcm1hdGlvbkNsaWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2ZuOiBBV1MuQ2xvdWRGb3JtYXRpb247XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jZm4gPSBjcmVhdGVBd3NDbGllbnQoQVdTLkNsb3VkRm9ybWF0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZXNjcmliZVR5cGUoaW5wdXQ6IEFXUy5DbG91ZEZvcm1hdGlvbi5EZXNjcmliZVR5cGVJbnB1dCk6IFByb21pc2U8QVdTLkNsb3VkRm9ybWF0aW9uLkRlc2NyaWJlVHlwZU91dHB1dD4ge1xuICAgIHJldHVybiB0aGlzLmNmbi5kZXNjcmliZVR5cGUoaW5wdXQpLnByb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsaXN0VHlwZXMoaW5wdXQ6IEFXUy5DbG91ZEZvcm1hdGlvbi5MaXN0VHlwZXNJbnB1dCk6IFByb21pc2U8QVdTLkNsb3VkRm9ybWF0aW9uLkxpc3RUeXBlc091dHB1dD4ge1xuICAgIHJldHVybiB0aGlzLmNmbi5saXN0VHlwZXMoaW5wdXQpLnByb21pc2UoKTtcbiAgfVxufSJdfQ==
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZuLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Nmbi1yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQiwrQkFBd0M7QUF5QnhDOzs7OztHQUtHO0FBQ0ksS0FBSyxVQUFVLG9CQUFvQixDQUFDLElBQVksRUFBRSxVQUF1QyxFQUFFO0lBQ2hHLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQzFELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxvQkFBb0IsRUFBRSxDQUFDO0lBRXpELElBQUksT0FBTyxDQUFDO0lBRVosSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQzNCLE9BQU8sR0FBRyxJQUFJLENBQUM7S0FDaEI7U0FBTTtRQUNMLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLEtBQUssQ0FBQztRQUNWLEdBQUc7WUFDRCxNQUFNLEdBQUcsR0FBdUMsTUFBTSxHQUFHLENBQUMsU0FBUyxDQUFDO2dCQUNsRSxTQUFTLEVBQUUsS0FBSztnQkFDaEIsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVTtnQkFDckQsT0FBTyxFQUFFO29CQUNQLGNBQWMsRUFBRSxJQUFJO2lCQUNyQjtnQkFDRCxVQUFVLEVBQUUsVUFBVTthQUN2QixDQUFDLENBQUM7WUFFSCxJQUFJLEdBQUcsQ0FBQyxhQUFhLEVBQUU7Z0JBQ3JCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDbEM7WUFDRCxLQUFLLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQztTQUN2QixRQUFRLEtBQUssRUFBRTtRQUVoQixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLEdBQUcsSUFBSSxDQUFDLENBQUM7U0FDbkU7UUFFRCxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztLQUM1QjtJQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sR0FBRyxDQUFDLFlBQVksQ0FBQztRQUNsQyxHQUFHLEVBQUUsT0FBTztRQUNaLGtCQUFrQjtLQUNuQixDQUFDLENBQUM7SUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixHQUFHLElBQUksR0FBRywwQkFBMEIsQ0FBQyxDQUFDO0tBQzdFO0lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLEdBQUcsK0JBQStCLENBQUMsQ0FBQztLQUNsRjtJQUNELE9BQU87UUFDTCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7UUFDdkIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1FBQ25CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxHQUFJO0tBQ3ZDLENBQUM7QUFDSixDQUFDO0FBakRELG9EQWlEQztBQUVELE1BQU0sb0JBQW9CO0lBR3hCO1FBQ0UsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFBLHFCQUFlLEVBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQTJDO1FBQ25FLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBd0M7UUFDN0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBBV1MgZnJvbSAnYXdzLXNkayc7XG5pbXBvcnQgeyBjcmVhdGVBd3NDbGllbnQgfSBmcm9tICcuL2F3cyc7XG5pbXBvcnQgeyBUeXBlSW5mbyB9IGZyb20gJy4vdHlwZS1pbmZvJztcblxuZXhwb3J0IGludGVyZmFjZSBJQ2xvdWRGb3JtYXRpb25DbGllbnQge1xuICBsaXN0VHlwZXMoaW5wdXQ6IEFXUy5DbG91ZEZvcm1hdGlvbi5MaXN0VHlwZXNJbnB1dCk6IFByb21pc2U8QVdTLkNsb3VkRm9ybWF0aW9uLkxpc3RUeXBlc091dHB1dD47XG4gIGRlc2NyaWJlVHlwZShpbnB1dDogQVdTLkNsb3VkRm9ybWF0aW9uLkRlc2NyaWJlVHlwZUlucHV0KTogUHJvbWlzZTxBV1MuQ2xvdWRGb3JtYXRpb24uRGVzY3JpYmVUeXBlT3V0cHV0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXNjcmliZVJlc291cmNlVHlwZU9wdGlvbnMge1xuICAvKipcbiAgICogUXVlcnkgd2l0aCBWSVNJQklMSVRZPVBSSVZBVEUgd2hpY2ggbWVhbnMgeW91IGNhbiBvbmx5IGltcG9ydCB0eXBlcyB0aGF0XG4gICAqIGFyZSByZWdpc3RyZWQgaW4geW91ciBhY2NvdW50IChlaXRoZXIgdHlwZXMgdGhhdCB5b3UgY3JlYXRlZCBvciBwdWJsaWNcbiAgICogdHlwZXMgdGhhdCB5b3UgYWN0aXZhdGVkKS5cbiAgICovXG4gIHJlYWRvbmx5IHByaXZhdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGNsaWVudCB0aGF0IHBlcmZvcm1zIGNhbGxzIHRvIENsb3VkRm9ybWF0aW9uLiBZb3UgY2FuIHByb3ZpZGUgYSBtb2NrIGhlcmVcbiAgICogZm9yIHRlc3RpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQSByZWFsIENsb3VkRm9ybWF0aW9uIGNsaWVudFxuICAgKi9cbiAgcmVhZG9ubHkgY2xpZW50PzogSUNsb3VkRm9ybWF0aW9uQ2xpZW50O1xufVxuXG4vKipcbiAqIENhbGxzIHRoZSBDRk4gcmVzb3VyY2UgdHlwZSByZWdpc3RyeSB0byBmZXRjaCB0aGUgdHlwZSBkZWZpbml0aW9uXG4gKlxuICogQHBhcmFtIG5hbWUgdGhlIG5hbWUgb3IgdW5pcXVlIHByZWZpeCBvZiB0aGUgcmVzb3VyY2UgdHlwZVxuICogQHJldHVybnMgdGhlIHR5cGUgZGVmaW5pdGlvblxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVzY3JpYmVSZXNvdXJjZVR5cGUobmFtZTogc3RyaW5nLCBvcHRpb25zOiBEZXNjcmliZVJlc291cmNlVHlwZU9wdGlvbnMgPSB7fSk6IFByb21pc2U8VHlwZUluZm8+IHtcbiAgY29uc3QgdmlzaWJpbGl0eSA9IG9wdGlvbnMucHJpdmF0ZSA/ICdQUklWQVRFJyA6ICdQVUJMSUMnO1xuICBjb25zdCBjZm4gPSBvcHRpb25zLmNsaWVudCA/PyBuZXcgQ2xvdWRGb3JtYXRpb25DbGllbnQoKTtcblxuICBsZXQgdHlwZUFybjtcblxuICBpZiAobmFtZS5zdGFydHNXaXRoKCdhcm46JykpIHtcbiAgICB0eXBlQXJuID0gbmFtZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB0eXBlcyA9IFtdO1xuICAgIGxldCB0b2tlbjtcbiAgICBkbyB7XG4gICAgICBjb25zdCByZXM6IEFXUy5DbG91ZEZvcm1hdGlvbi5MaXN0VHlwZXNPdXRwdXQgPSBhd2FpdCBjZm4ubGlzdFR5cGVzKHtcbiAgICAgICAgTmV4dFRva2VuOiB0b2tlbixcbiAgICAgICAgVHlwZTogbmFtZS5lbmRzV2l0aCgnTU9EVUxFJykgPyAnTU9EVUxFJyA6ICdSRVNPVVJDRScsXG4gICAgICAgIEZpbHRlcnM6IHtcbiAgICAgICAgICBUeXBlTmFtZVByZWZpeDogbmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgVmlzaWJpbGl0eTogdmlzaWJpbGl0eSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAocmVzLlR5cGVTdW1tYXJpZXMpIHtcbiAgICAgICAgdHlwZXMucHVzaCguLi5yZXMuVHlwZVN1bW1hcmllcyk7XG4gICAgICB9XG4gICAgICB0b2tlbiA9IHJlcy5OZXh0VG9rZW47XG4gICAgfSB3aGlsZSAodG9rZW4pO1xuXG4gICAgaWYgKHR5cGVzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZmluZCB1bmlxdWUgQ2xvdWRGb3JtYXRpb24gVHlwZSAnICsgbmFtZSk7XG4gICAgfVxuXG4gICAgdHlwZUFybiA9IHR5cGVzWzBdLlR5cGVBcm47XG4gIH1cblxuICBjb25zdCB0eXBlID0gYXdhaXQgY2ZuLmRlc2NyaWJlVHlwZSh7XG4gICAgQXJuOiB0eXBlQXJuLFxuICAgIC8vIFRPRE8gdmVyc2lvbmluZ1xuICB9KTtcbiAgaWYgKCF0eXBlLlNjaGVtYSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2xvdWRGb3JtYXRpb24gVHlwZSAnICsgbmFtZSArICcgZG9lcyBub3QgY29udGFpbiBzY2hlbWEnKTtcbiAgfVxuICBpZiAoIXR5cGUuVHlwZU5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nsb3VkRm9ybWF0aW9uIFR5cGUgJyArIG5hbWUgKyAnIGRvZXMgbm90IGNvbnRhaW4gYSB0eXBlIG5hbWUnKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIFR5cGVOYW1lOiB0eXBlLlR5cGVOYW1lLFxuICAgIFNjaGVtYTogdHlwZS5TY2hlbWEsXG4gICAgU291cmNlVXJsOiB0eXBlLlNvdXJjZVVybCA/PyB0eXBlLkFybiEsXG4gIH07XG59XG5cbmNsYXNzIENsb3VkRm9ybWF0aW9uQ2xpZW50IGltcGxlbWVudHMgSUNsb3VkRm9ybWF0aW9uQ2xpZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBjZm46IEFXUy5DbG91ZEZvcm1hdGlvbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmNmbiA9IGNyZWF0ZUF3c0NsaWVudChBV1MuQ2xvdWRGb3JtYXRpb24pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlc2NyaWJlVHlwZShpbnB1dDogQVdTLkNsb3VkRm9ybWF0aW9uLkRlc2NyaWJlVHlwZUlucHV0KTogUHJvbWlzZTxBV1MuQ2xvdWRGb3JtYXRpb24uRGVzY3JpYmVUeXBlT3V0cHV0PiB7XG4gICAgcmV0dXJuIHRoaXMuY2ZuLmRlc2NyaWJlVHlwZShpbnB1dCkucHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxpc3RUeXBlcyhpbnB1dDogQVdTLkNsb3VkRm9ybWF0aW9uLkxpc3RUeXBlc0lucHV0KTogUHJvbWlzZTxBV1MuQ2xvdWRGb3JtYXRpb24uTGlzdFR5cGVzT3V0cHV0PiB7XG4gICAgcmV0dXJuIHRoaXMuY2ZuLmxpc3RUeXBlcyhpbnB1dCkucHJvbWlzZSgpO1xuICB9XG59Il19
@@ -39,7 +39,6 @@ class CfnResourceGenerator {
39
39
  * @param schema the schema of the resource type for input and output properties
40
40
  */
41
41
  constructor(typeName, typeDef, schema) {
42
- var _a;
43
42
  this.typeName = typeName;
44
43
  this.typeDef = typeDef;
45
44
  this.schema = schema;
@@ -50,7 +49,7 @@ class CfnResourceGenerator {
50
49
  this.propsStructName = json2jsii_1.TypeGenerator.normalizeTypeName(`${this.constructClassName}Props`);
51
50
  this.resourceAttributes = new Array();
52
51
  this.resourceProperties = new Array();
53
- const props = (_a = this.schema.properties) !== null && _a !== void 0 ? _a : {};
52
+ const props = this.schema.properties ?? {};
54
53
  const attributeNames = this.schema.readOnlyProperties
55
54
  ? this.schema.readOnlyProperties.map((prop) => prop.replace(/^\/properties\//, ''))
56
55
  : [];
@@ -108,13 +107,12 @@ class CfnResourceGenerator {
108
107
  code.line();
109
108
  }
110
109
  emitConstructClass(code) {
111
- var _a, _b;
112
110
  code.line('/**');
113
111
  code.line(` * A CloudFormation \`${this.typeName}\``);
114
112
  code.line(' *');
115
113
  code.line(` * @cloudformationResource ${this.typeName}`);
116
114
  code.line(' * @stability external');
117
- if ((_a = this.typeDef) === null || _a === void 0 ? void 0 : _a.SourceUrl) {
115
+ if (this.typeDef?.SourceUrl) {
118
116
  code.line(` * @link ${this.typeDef.SourceUrl}`);
119
117
  }
120
118
  code.line(' */');
@@ -133,7 +131,7 @@ class CfnResourceGenerator {
133
131
  for (const prop of this.resourceAttributes) {
134
132
  code.line('/**');
135
133
  code.line(` * Attribute \`${this.typeName}.${prop}\``);
136
- if ((_b = this.typeDef) === null || _b === void 0 ? void 0 : _b.SourceUrl) {
134
+ if (this.typeDef?.SourceUrl) {
137
135
  code.line(` * @link ${this.typeDef.SourceUrl}`);
138
136
  }
139
137
  code.line(' */');
@@ -200,11 +198,11 @@ class CfnResourceGenerator {
200
198
  return 'any';
201
199
  }
202
200
  isSupportedPrimitiveType(def) {
203
- if ((def === null || def === void 0 ? void 0 : def.type) === 'array') {
204
- return this.isSupportedPrimitiveType(def === null || def === void 0 ? void 0 : def.items);
201
+ if (def?.type === 'array') {
202
+ return this.isSupportedPrimitiveType(def?.items);
205
203
  }
206
204
  return def.type && ['string', 'number', 'integer', 'boolean'].includes(def.type);
207
205
  }
208
206
  }
209
207
  exports.CfnResourceGenerator = CfnResourceGenerator;
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZuLXJlc291cmNlLWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jZm4tcmVzb3VyY2UtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQThCO0FBQzlCLCtDQUFpQztBQUNqQyx5Q0FBMEM7QUFFMUMsaUNBQTBDO0FBRTFDOztHQUVHO0FBQ0gsTUFBYSxvQkFBb0I7SUFRL0I7Ozs7O09BS0c7SUFDSCxZQUE2QixRQUFnQixFQUFtQixPQUE2QixFQUFtQixNQUFXOztRQUE5RixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQW1CLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQW1CLFdBQU0sR0FBTixNQUFNLENBQUs7UUFDekgsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUEsdUJBQWdCLEVBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEQsNkpBQTZKO1FBQzdKLDhIQUE4SDtRQUM5SCxJQUFJLENBQUMsa0JBQWtCLEdBQUcseUJBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLGVBQWUsR0FBRyx5QkFBYSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixPQUFPLENBQUMsQ0FBQztRQUUxRixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUM5QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUU5QyxNQUFNLEtBQUssR0FBRyxNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxtQ0FBSSxFQUFFLENBQUM7UUFDM0MsTUFBTSxjQUFjLEdBQWEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0I7WUFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNGLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFUCxLQUFLLE1BQU0sSUFBSSxJQUFJLGNBQWMsRUFBRTtZQUNqQyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDUixPQUFPLENBQUMsSUFBSSxDQUFDLCtDQUErQyxRQUFRLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDaEYsU0FBUzthQUNWO1lBRUQsNEVBQTRFO1lBQzVFLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3ZDLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxRQUFRLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDL0csU0FBUzthQUNWO1lBRUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwQztRQUVELEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNyQyw0REFBNEQ7WUFDNUQsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNqQyxTQUFTO2FBQ1Y7WUFFRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNO1FBQ1gsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxXQUFXLENBQUMsSUFBYztRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsMkNBQTJDLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsSUFBYztRQUN4QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUM7WUFDaEMsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVztTQUNyQyxDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdkQsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDMUMsc0VBQXNFO1lBQ3RFLCtDQUErQztZQUUvQyxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7UUFFRCxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFM0MsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsSUFBYzs7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsOEJBQThCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNwQyxJQUFJLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsU0FBUyxFQUFFO1lBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7U0FDakQ7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxrQkFBa0IsMEJBQTBCLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsa0VBQWtFLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsb0RBQW9ELElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVaLG9GQUFvRjtRQUNwRixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVaLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDO1lBQ3ZELElBQUksTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxTQUFTLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7YUFDakQ7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLElBQUEsYUFBTSxFQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDcEY7UUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFWixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxJQUFJLENBQUMsNkNBQTZDLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLCtEQUErRCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQztRQUN2RyxJQUFJLENBQUMsSUFBSSxDQUFDLDRCQUE0QixJQUFJLENBQUMsa0JBQWtCLCtDQUErQyxJQUFJLENBQUMsZUFBZSxjQUFjLENBQUMsQ0FBQztRQUNoSixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzFDLE1BQU0sWUFBWSxHQUFHLE9BQU8sSUFBQSxhQUFNLEVBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsWUFBWSxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2pFO1FBQ0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxCLHdCQUF3QjtRQUN4QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFZO1FBQy9CLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRCxNQUFNLG9CQUFvQixHQUFHLGdCQUFnQixJQUFJLElBQUksQ0FBQztRQUN0RCxJQUFJLGFBQWEsS0FBSyxRQUFRLEVBQUU7WUFDOUIsT0FBTyxzQkFBc0Isb0JBQW9CLEdBQUcsQ0FBQztTQUN0RDtRQUNELElBQUksYUFBYSxLQUFLLFVBQVUsRUFBRTtZQUNoQyxPQUFPLG9CQUFvQixvQkFBb0IsR0FBRyxDQUFDO1NBQ3BEO1FBQ0QsSUFBSSxhQUFhLEtBQUssUUFBUSxFQUFFO1lBQzlCLE9BQU8sc0JBQXNCLG9CQUFvQixHQUFHLENBQUM7U0FDdEQ7UUFDRCxPQUFPLG9CQUFvQixDQUFDO0lBQzlCLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxJQUFZO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVPLGlCQUFpQixDQUFDLElBQVM7UUFDakMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNqQixLQUFLLFFBQVE7b0JBQ1gsT0FBTyxRQUFRLENBQUM7Z0JBQ2xCLEtBQUssT0FBTztvQkFDVixPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNuRCxLQUFLLFFBQVE7b0JBQ1gsT0FBTyxRQUFRLENBQUM7Z0JBQ2xCLEtBQUssU0FBUztvQkFDWixPQUFPLFFBQVEsQ0FBQztnQkFDbEIsS0FBSyxTQUFTO29CQUNaLE9BQU8saUJBQWlCLENBQUM7Z0JBQzNCO29CQUNFLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1NBQ0Y7UUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNsRDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLHdCQUF3QixDQUFDLEdBQVE7UUFDdkMsSUFBSSxDQUFBLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxJQUFJLE1BQUssT0FBTyxFQUFFO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxLQUFLLENBQUMsQ0FBQztTQUNsRDtRQUNELE9BQU8sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkYsQ0FBQztDQUNGO0FBeE1ELG9EQXdNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhc2NhbCB9IGZyb20gJ2Nhc2UnO1xuaW1wb3J0ICogYXMgajJqIGZyb20gJ2pzb24yanNpaSc7XG5pbXBvcnQgeyBUeXBlR2VuZXJhdG9yIH0gZnJvbSAnanNvbjJqc2lpJztcbmltcG9ydCB7IFR5cGVJbmZvIH0gZnJvbSAnLi90eXBlLWluZm8nO1xuaW1wb3J0IHsgc2FuaXRpemVUeXBlTmFtZSB9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogR2VuZXJhdG9yIHRvIGVtaXQgY2xhc3NlcyBhbmQgdHlwZXMgZm9yIHRoZSBMMSBjb25zdHJ1Y3Qgb2YgdGhlIGdpdmVuIHJlc291cmNlIHR5cGVcbiAqL1xuZXhwb3J0IGNsYXNzIENmblJlc291cmNlR2VuZXJhdG9yIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplZFR5cGVOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2VBdHRyaWJ1dGVzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZVByb3BlcnRpZXM6IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbnN0cnVjdENsYXNzTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3BzU3RydWN0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gdHlwZU5hbWUgdGhlIG5hbWUgb2YgdGhlIENGTiByZXNvdXJjZSB0eXBlIChlLmcuIEFXU1FTOjpFS1M6OkNsdXN0ZXIpXG4gICAqIEBwYXJhbSB0eXBlRGVmIHRoZSB0eXBlIGluZm8gY29udGFpbmluZyB0aGUgc291cmNlIHVybFxuICAgKiBAcGFyYW0gc2NoZW1hIHRoZSBzY2hlbWEgb2YgdGhlIHJlc291cmNlIHR5cGUgZm9yIGlucHV0IGFuZCBvdXRwdXQgcHJvcGVydGllc1xuICAgKi9cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB0eXBlTmFtZTogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IHR5cGVEZWY6IFR5cGVJbmZvIHwgdW5kZWZpbmVkLCBwcml2YXRlIHJlYWRvbmx5IHNjaGVtYTogYW55KSB7XG4gICAgdGhpcy5zYW5pdGl6ZWRUeXBlTmFtZSA9IHNhbml0aXplVHlwZU5hbWUodHlwZU5hbWUpO1xuICAgIC8vIHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzID0gdGhpcy5zY2hlbWEucmVhZE9ubHlQcm9wZXJ0aWVzID8gdGhpcy5zY2hlbWEucmVhZE9ubHlQcm9wZXJ0aWVzLm1hcCgocHJvcDogc3RyaW5nKSA9PiBwcm9wLnJlcGxhY2UoL15cXC9wcm9wZXJ0aWVzXFwvLywgJycpKSA6IFtdO1xuICAgIC8vIHRoaXMucmVzb3VyY2VQcm9wZXJ0aWVzID0gT2JqZWN0LmtleXModGhpcy5zY2hlbWEucHJvcGVydGllcykuZmlsdGVyKHByb3AgPT4gdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMuaW5kZXhPZihwcm9wKSA9PT0gLTEpO1xuICAgIHRoaXMuY29uc3RydWN0Q2xhc3NOYW1lID0gVHlwZUdlbmVyYXRvci5ub3JtYWxpemVUeXBlTmFtZShgQ2ZuJHt0aGlzLnNhbml0aXplZFR5cGVOYW1lfWApO1xuICAgIHRoaXMucHJvcHNTdHJ1Y3ROYW1lID0gVHlwZUdlbmVyYXRvci5ub3JtYWxpemVUeXBlTmFtZShgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX1Qcm9wc2ApO1xuXG4gICAgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIHRoaXMucmVzb3VyY2VQcm9wZXJ0aWVzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICAgIGNvbnN0IHByb3BzID0gdGhpcy5zY2hlbWEucHJvcGVydGllcyA/PyB7fTtcbiAgICBjb25zdCBhdHRyaWJ1dGVOYW1lczogc3RyaW5nW10gPSB0aGlzLnNjaGVtYS5yZWFkT25seVByb3BlcnRpZXNcbiAgICAgID8gdGhpcy5zY2hlbWEucmVhZE9ubHlQcm9wZXJ0aWVzLm1hcCgocHJvcDogc3RyaW5nKSA9PiBwcm9wLnJlcGxhY2UoL15cXC9wcm9wZXJ0aWVzXFwvLywgJycpKVxuICAgICAgOiBbXTtcblxuICAgIGZvciAoY29uc3QgYXR0ciBvZiBhdHRyaWJ1dGVOYW1lcykge1xuICAgICAgY29uc3QgZGVmID0gcHJvcHNbYXR0cl07XG4gICAgICBpZiAoIWRlZikge1xuICAgICAgICBjb25zb2xlLndhcm4oYFVucmVzb2x2YWJsZSByZWFkLW9ubHkgcHJvcGVydHkgKGF0dHJpYnV0ZSkgJHt0eXBlTmFtZX0uJHthdHRyfWApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gdmVyaWZ5IHRoYXQgdGhlIHR5cGUgb2YgdGhlIGF0dHJpYnV0ZSBpcyBhIHByaW1pdGl2ZSBvciBhIHByaW1pdGl2ZSBhcnJheVxuICAgICAgaWYgKCF0aGlzLmlzU3VwcG9ydGVkUHJpbWl0aXZlVHlwZShkZWYpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgVW5zdXBwb3J0ZWQgdHlwZSAke0pTT04uc3RyaW5naWZ5KGRlZil9IGZvciByZWFkLW9ubHkgcHJvcGVydHkgKGF0dHJpYnV0ZSkgJHt0eXBlTmFtZX0uJHthdHRyfWApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMucHVzaChhdHRyKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LmtleXMocHJvcHMpKSB7XG4gICAgICAvLyBpZiB0aGlzIGlzIGEgcmVhZC1vbmx5IHByb3BlcnR5LCBjb25zaWRlciBpdCBhbiBhdHRyaWJ1dGVcbiAgICAgIGlmIChhdHRyaWJ1dGVOYW1lcy5pbmNsdWRlcyhwcm9wKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZXNvdXJjZVByb3BlcnRpZXMucHVzaChwcm9wKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoZSB0eXBlIGludG8gYSBUeXBlU2NyaXB0IGNsYXNzIGZpbCBkZWZpbmluZyB0aGUgcHJvcHMgYW5kIHRoZSBMMSBjb25zdHJ1Y3RcbiAgICpcbiAgICogQHJldHVybnMgdGhlIHJlbmRlcmVkIGNsYXNzIGZpbGUgY29udGVudFxuICAgKi9cbiAgcHVibGljIHJlbmRlcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvZGUgPSBuZXcgajJqLkNvZGUoKTtcbiAgICB0aGlzLmVtaXRJbXBvcnRzKGNvZGUpO1xuICAgIHRoaXMuZW1pdERlZmluaXRpb25UeXBlcyhjb2RlKTtcbiAgICB0aGlzLmVtaXRDb25zdHJ1Y3RDbGFzcyhjb2RlKTtcbiAgICByZXR1cm4gY29kZS5yZW5kZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEltcG9ydHMoY29kZTogajJqLkNvZGUpIHtcbiAgICBjb2RlLmxpbmUoJy8vIEdlbmVyYXRlZCBieSBjZGstaW1wb3J0Jyk7XG4gICAgY29kZS5saW5lKFwiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcIik7XG4gICAgY29kZS5saW5lKFwiaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcIik7XG4gICAgY29kZS5saW5lKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXREZWZpbml0aW9uVHlwZXMoY29kZTogajJqLkNvZGUpIHtcbiAgICBjb25zdCBnZW4gPSBuZXcgajJqLlR5cGVHZW5lcmF0b3Ioe1xuICAgICAgZGVmaW5pdGlvbnM6IHRoaXMuc2NoZW1hLmRlZmluaXRpb25zLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2NoZW1hID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnNjaGVtYSkpO1xuICAgIGZvciAoY29uc3QgcHJvcCBvZiB0aGlzLnJlc291cmNlQXR0cmlidXRlcykge1xuICAgICAgLy8gUmVtb3ZlIGF0dHJpYnV0ZXMgdGhhdCBjYW5ub3QgYmUgd3JpdHRlbiBidXQgYXJlIHVzZWQgYXMgYXR0cmlidXRlc1xuICAgICAgLy8gVGhlc2Ugc2hvdWxkIG5vdCBiZSBwYXJ0IG9mIHRoZSBQcm9wcyBzdHJ1Y3RcblxuICAgICAgZGVsZXRlIHNjaGVtYS5wcm9wZXJ0aWVzW3Byb3BdO1xuICAgIH1cblxuICAgIGdlbi5lbWl0VHlwZSh0aGlzLnByb3BzU3RydWN0TmFtZSwgc2NoZW1hKTtcblxuICAgIGdlbi5yZW5kZXJUb0NvZGUoY29kZSk7XG4gICAgY29kZS5saW5lKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDb25zdHJ1Y3RDbGFzcyhjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgY29kZS5saW5lKGAgKiBBIENsb3VkRm9ybWF0aW9uIFxcYCR7dGhpcy50eXBlTmFtZX1cXGBgKTtcbiAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgY29kZS5saW5lKGAgKiBAY2xvdWRmb3JtYXRpb25SZXNvdXJjZSAke3RoaXMudHlwZU5hbWV9YCk7XG4gICAgY29kZS5saW5lKCcgKiBAc3RhYmlsaXR5IGV4dGVybmFsJyk7XG4gICAgaWYgKHRoaXMudHlwZURlZj8uU291cmNlVXJsKSB7XG4gICAgICBjb2RlLmxpbmUoYCAqIEBsaW5rICR7dGhpcy50eXBlRGVmLlNvdXJjZVVybH1gKTtcbiAgICB9XG4gICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICBjb2RlLm9wZW5CbG9jayhgZXhwb3J0IGNsYXNzICR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9IGV4dGVuZHMgY2RrLkNmblJlc291cmNlYCk7XG4gICAgY29kZS5saW5lKCcvKionKTtcbiAgICBjb2RlLmxpbmUoJyogVGhlIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGUgbmFtZSBmb3IgdGhpcyByZXNvdXJjZSBjbGFzcy4nKTtcbiAgICBjb2RlLmxpbmUoJyovJyk7XG4gICAgY29kZS5saW5lKGBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENGTl9SRVNPVVJDRV9UWVBFX05BTUUgPSBcIiR7dGhpcy50eXBlTmFtZX1cIjtgKTtcbiAgICBjb2RlLmxpbmUoKTtcblxuICAgIC8vIGVtaXQgYSBcInByb3BzXCIgcHJvcGVydHkgd2hpY2ggaW5jbHVkZXMgdGhlIHNldCBvZiBwcm9wcyBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yXG4gICAgY29kZS5saW5lKCcvKionKTtcbiAgICBjb2RlLmxpbmUoJyAqIFJlc291cmNlIHByb3BzLicpO1xuICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgY29kZS5saW5lKGBwdWJsaWMgcmVhZG9ubHkgcHJvcHM6ICR7dGhpcy5wcm9wc1N0cnVjdE5hbWV9O2ApO1xuICAgIGNvZGUubGluZSgpO1xuXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzKSB7XG4gICAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgICAgY29kZS5saW5lKGAgKiBBdHRyaWJ1dGUgXFxgJHt0aGlzLnR5cGVOYW1lfS4ke3Byb3B9XFxgYCk7XG4gICAgICBpZiAodGhpcy50eXBlRGVmPy5Tb3VyY2VVcmwpIHtcbiAgICAgICAgY29kZS5saW5lKGAgKiBAbGluayAke3RoaXMudHlwZURlZi5Tb3VyY2VVcmx9YCk7XG4gICAgICB9XG4gICAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgICAgY29kZS5saW5lKGBwdWJsaWMgcmVhZG9ubHkgYXR0ciR7cGFzY2FsKHByb3ApfTogJHt0aGlzLmdldFR5cGVPZlByb3BlcnR5KHByb3ApfTtgKTtcbiAgICB9XG5cbiAgICBjb2RlLmxpbmUoKTtcblxuICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgY29kZS5saW5lKGAgKiBDcmVhdGUgYSBuZXcgXFxgJHt0aGlzLnR5cGVOYW1lfVxcYC5gKTtcbiAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgY29kZS5saW5lKCcgKiBAcGFyYW0gc2NvcGUgLSBzY29wZSBpbiB3aGljaCB0aGlzIHJlc291cmNlIGlzIGRlZmluZWQnKTtcbiAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBpZCAgICAtIHNjb3BlZCBpZCBvZiB0aGUgcmVzb3VyY2UnKTtcbiAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBwcm9wcyAtIHJlc291cmNlIHByb3BlcnRpZXMnKTtcbiAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgIGNvZGUub3BlbkJsb2NrKGBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiAke3RoaXMucHJvcHNTdHJ1Y3ROYW1lfSlgKTtcbiAgICBjb2RlLmxpbmUoYHN1cGVyKHNjb3BlLCBpZCwgeyB0eXBlOiAke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfS5DRk5fUkVTT1VSQ0VfVFlQRV9OQU1FLCBwcm9wZXJ0aWVzOiB0b0pzb25fJHt0aGlzLnByb3BzU3RydWN0TmFtZX0ocHJvcHMpISB9KTtgKTtcbiAgICBjb2RlLmxpbmUoJycpO1xuICAgIGNvZGUubGluZSgndGhpcy5wcm9wcyA9IHByb3BzOycpO1xuICAgIGNvZGUubGluZSgpO1xuICAgIGZvciAoY29uc3QgcHJvcCBvZiB0aGlzLnJlc291cmNlQXR0cmlidXRlcykge1xuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gYGF0dHIke3Bhc2NhbChwcm9wKX1gO1xuICAgICAgY29kZS5saW5lKGB0aGlzLiR7cHJvcGVydHlOYW1lfSA9ICR7dGhpcy5yZW5kZXJHZXRBdHQocHJvcCl9O2ApO1xuICAgIH1cbiAgICBjb2RlLmNsb3NlQmxvY2soKTtcblxuICAgIC8vIENsb3NlIGNvbnN0cnVjdCBjbGFzc1xuICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJHZXRBdHQocHJvcDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBhdHRyaWJ1dGVUeXBlID0gdGhpcy5nZXRUeXBlT2ZQcm9wZXJ0eShwcm9wKTtcbiAgICBjb25zdCBjb25zdHJ1Y3RvckFyZ3VtZW50cyA9IGB0aGlzLmdldEF0dCgnJHtwcm9wfScpYDtcbiAgICBpZiAoYXR0cmlidXRlVHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBgY2RrLlRva2VuLmFzU3RyaW5nKCR7Y29uc3RydWN0b3JBcmd1bWVudHN9KWA7XG4gICAgfVxuICAgIGlmIChhdHRyaWJ1dGVUeXBlID09PSAnc3RyaW5nW10nKSB7XG4gICAgICByZXR1cm4gYGNkay5Ub2tlbi5hc0xpc3QoJHtjb25zdHJ1Y3RvckFyZ3VtZW50c30pYDtcbiAgICB9XG4gICAgaWYgKGF0dHJpYnV0ZVR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gYGNkay5Ub2tlbi5hc051bWJlcigke2NvbnN0cnVjdG9yQXJndW1lbnRzfSlgO1xuICAgIH1cbiAgICByZXR1cm4gY29uc3RydWN0b3JBcmd1bWVudHM7XG4gIH1cblxuICBwcml2YXRlIGdldFR5cGVPZlByb3BlcnR5KHByb3A6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmdldFR5cGVGcm9tU2NoZW1hKHRoaXMuc2NoZW1hLnByb3BlcnRpZXNbcHJvcF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUeXBlRnJvbVNjaGVtYShwcm9wOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChwcm9wLnR5cGUpIHtcbiAgICAgIHN3aXRjaCAocHJvcC50eXBlKSB7XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgcmV0dXJuICdzdHJpbmcnO1xuICAgICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0VHlwZUZyb21TY2hlbWEocHJvcC5pdGVtcyl9W11gO1xuICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgIHJldHVybiAnbnVtYmVyJztcbiAgICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgICAgcmV0dXJuICdudW1iZXInO1xuICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICByZXR1cm4gJ2Nkay5JUmVzb2x2YWJsZSc7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuICdhbnknO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJvcC5oYXNPd25Qcm9wZXJ0eSgnJHJlZicpKSB7XG4gICAgICByZXR1cm4gcHJvcC4kcmVmLnJlcGxhY2UoLyNcXC9kZWZpbml0aW9uc1xcLy8sICcnKTtcbiAgICB9XG4gICAgcmV0dXJuICdhbnknO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1N1cHBvcnRlZFByaW1pdGl2ZVR5cGUoZGVmOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoZGVmPy50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc1N1cHBvcnRlZFByaW1pdGl2ZVR5cGUoZGVmPy5pdGVtcyk7XG4gICAgfVxuICAgIHJldHVybiBkZWYudHlwZSAmJiBbJ3N0cmluZycsICdudW1iZXInLCAnaW50ZWdlcicsICdib29sZWFuJ10uaW5jbHVkZXMoZGVmLnR5cGUpO1xuICB9XG59XG4iXX0=
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZuLXJlc291cmNlLWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jZm4tcmVzb3VyY2UtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQThCO0FBQzlCLCtDQUFpQztBQUNqQyx5Q0FBMEM7QUFFMUMsaUNBQTBDO0FBRTFDOztHQUVHO0FBQ0gsTUFBYSxvQkFBb0I7SUFRL0I7Ozs7O09BS0c7SUFDSCxZQUE2QixRQUFnQixFQUFtQixPQUE2QixFQUFtQixNQUFXO1FBQTlGLGFBQVEsR0FBUixRQUFRLENBQVE7UUFBbUIsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7UUFBbUIsV0FBTSxHQUFOLE1BQU0sQ0FBSztRQUN6SCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBQSx1QkFBZ0IsRUFBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCw2SkFBNko7UUFDN0osOEhBQThIO1FBQzlILElBQUksQ0FBQyxrQkFBa0IsR0FBRyx5QkFBYSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsZUFBZSxHQUFHLHlCQUFhLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLE9BQU8sQ0FBQyxDQUFDO1FBRTFGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBQzlDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBRTlDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztRQUMzQyxNQUFNLGNBQWMsR0FBYSxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQjtZQUM3RCxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FB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S0FBSyxRQUFRO29CQUNYLE9BQU8sUUFBUSxDQUFDO2dCQUNsQixLQUFLLE9BQU87b0JBQ1YsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDbkQsS0FBSyxRQUFRO29CQUNYLE9BQU8sUUFBUSxDQUFDO2dCQUNsQixLQUFLLFNBQVM7b0JBQ1osT0FBTyxRQUFRLENBQUM7Z0JBQ2xCLEtBQUssU0FBUztvQkFDWixPQUFPLGlCQUFpQixDQUFDO2dCQUMzQjtvQkFDRSxPQUFPLEtBQUssQ0FBQzthQUNoQjtTQUNGO1FBQ0QsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDbEQ7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxHQUFRO1FBQ3ZDLElBQUksR0FBRyxFQUFFLElBQUksS0FBSyxPQUFPLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2xEO1FBQ0QsT0FBTyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRixDQUFDO0NBQ0Y7QUF4TUQsb0RBd01DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGFzY2FsIH0gZnJvbSAnY2FzZSc7XG5pbXBvcnQgKiBhcyBqMmogZnJvbSAnanNvbjJqc2lpJztcbmltcG9ydCB7IFR5cGVHZW5lcmF0b3IgfSBmcm9tICdqc29uMmpzaWknO1xuaW1wb3J0IHsgVHlwZUluZm8gfSBmcm9tICcuL3R5cGUtaW5mbyc7XG5pbXBvcnQgeyBzYW5pdGl6ZVR5cGVOYW1lIH0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBHZW5lcmF0b3IgdG8gZW1pdCBjbGFzc2VzIGFuZCB0eXBlcyBmb3IgdGhlIEwxIGNvbnN0cnVjdCBvZiB0aGUgZ2l2ZW4gcmVzb3VyY2UgdHlwZVxuICovXG5leHBvcnQgY2xhc3MgQ2ZuUmVzb3VyY2VHZW5lcmF0b3Ige1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVkVHlwZU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZUF0dHJpYnV0ZXM6IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlUHJvcGVydGllczogc3RyaW5nW107XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uc3RydWN0Q2xhc3NOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHNTdHJ1Y3ROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB0eXBlTmFtZSB0aGUgbmFtZSBvZiB0aGUgQ0ZOIHJlc291cmNlIHR5cGUgKGUuZy4gQVdTUVM6OkVLUzo6Q2x1c3RlcilcbiAgICogQHBhcmFtIHR5cGVEZWYgdGhlIHR5cGUgaW5mbyBjb250YWluaW5nIHRoZSBzb3VyY2UgdXJsXG4gICAqIEBwYXJhbSBzY2hlbWEgdGhlIHNjaGVtYSBvZiB0aGUgcmVzb3VyY2UgdHlwZSBmb3IgaW5wdXQgYW5kIG91dHB1dCBwcm9wZXJ0aWVzXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGVOYW1lOiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkgdHlwZURlZjogVHlwZUluZm8gfCB1bmRlZmluZWQsIHByaXZhdGUgcmVhZG9ubHkgc2NoZW1hOiBhbnkpIHtcbiAgICB0aGlzLnNhbml0aXplZFR5cGVOYW1lID0gc2FuaXRpemVUeXBlTmFtZSh0eXBlTmFtZSk7XG4gICAgLy8gdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMgPSB0aGlzLnNjaGVtYS5yZWFkT25seVByb3BlcnRpZXMgPyB0aGlzLnNjaGVtYS5yZWFkT25seVByb3BlcnRpZXMubWFwKChwcm9wOiBzdHJpbmcpID0+IHByb3AucmVwbGFjZSgvXlxcL3Byb3BlcnRpZXNcXC8vLCAnJykpIDogW107XG4gICAgLy8gdGhpcy5yZXNvdXJjZVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyh0aGlzLnNjaGVtYS5wcm9wZXJ0aWVzKS5maWx0ZXIocHJvcCA9PiB0aGlzLnJlc291cmNlQXR0cmlidXRlcy5pbmRleE9mKHByb3ApID09PSAtMSk7XG4gICAgdGhpcy5jb25zdHJ1Y3RDbGFzc05hbWUgPSBUeXBlR2VuZXJhdG9yLm5vcm1hbGl6ZVR5cGVOYW1lKGBDZm4ke3RoaXMuc2FuaXRpemVkVHlwZU5hbWV9YCk7XG4gICAgdGhpcy5wcm9wc1N0cnVjdE5hbWUgPSBUeXBlR2VuZXJhdG9yLm5vcm1hbGl6ZVR5cGVOYW1lKGAke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfVByb3BzYCk7XG5cbiAgICB0aGlzLnJlc291cmNlQXR0cmlidXRlcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgdGhpcy5yZXNvdXJjZVByb3BlcnRpZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLnNjaGVtYS5wcm9wZXJ0aWVzID8/IHt9O1xuICAgIGNvbnN0IGF0dHJpYnV0ZU5hbWVzOiBzdHJpbmdbXSA9IHRoaXMuc2NoZW1hLnJlYWRPbmx5UHJvcGVydGllc1xuICAgICAgPyB0aGlzLnNjaGVtYS5yZWFkT25seVByb3BlcnRpZXMubWFwKChwcm9wOiBzdHJpbmcpID0+IHByb3AucmVwbGFjZSgvXlxcL3Byb3BlcnRpZXNcXC8vLCAnJykpXG4gICAgICA6IFtdO1xuXG4gICAgZm9yIChjb25zdCBhdHRyIG9mIGF0dHJpYnV0ZU5hbWVzKSB7XG4gICAgICBjb25zdCBkZWYgPSBwcm9wc1thdHRyXTtcbiAgICAgIGlmICghZGVmKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgVW5yZXNvbHZhYmxlIHJlYWQtb25seSBwcm9wZXJ0eSAoYXR0cmlidXRlKSAke3R5cGVOYW1lfS4ke2F0dHJ9YCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyB2ZXJpZnkgdGhhdCB0aGUgdHlwZSBvZiB0aGUgYXR0cmlidXRlIGlzIGEgcHJpbWl0aXZlIG9yIGEgcHJpbWl0aXZlIGFycmF5XG4gICAgICBpZiAoIXRoaXMuaXNTdXBwb3J0ZWRQcmltaXRpdmVUeXBlKGRlZikpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBVbnN1cHBvcnRlZCB0eXBlICR7SlNPTi5zdHJpbmdpZnkoZGVmKX0gZm9yIHJlYWQtb25seSBwcm9wZXJ0eSAoYXR0cmlidXRlKSAke3R5cGVOYW1lfS4ke2F0dHJ9YCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlc291cmNlQXR0cmlidXRlcy5wdXNoKGF0dHIpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcHJvcCBvZiBPYmplY3Qua2V5cyhwcm9wcykpIHtcbiAgICAgIC8vIGlmIHRoaXMgaXMgYSByZWFkLW9ubHkgcHJvcGVydHksIGNvbnNpZGVyIGl0IGFuIGF0dHJpYnV0ZVxuICAgICAgaWYgKGF0dHJpYnV0ZU5hbWVzLmluY2x1ZGVzKHByb3ApKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlc291cmNlUHJvcGVydGllcy5wdXNoKHByb3ApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIHR5cGUgaW50byBhIFR5cGVTY3JpcHQgY2xhc3MgZmlsIGRlZmluaW5nIHRoZSBwcm9wcyBhbmQgdGhlIEwxIGNvbnN0cnVjdFxuICAgKlxuICAgKiBAcmV0dXJucyB0aGUgcmVuZGVyZWQgY2xhc3MgZmlsZSBjb250ZW50XG4gICAqL1xuICBwdWJsaWMgcmVuZGVyKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29kZSA9IG5ldyBqMmouQ29kZSgpO1xuICAgIHRoaXMuZW1pdEltcG9ydHMoY29kZSk7XG4gICAgdGhpcy5lbWl0RGVmaW5pdGlvblR5cGVzKGNvZGUpO1xuICAgIHRoaXMuZW1pdENvbnN0cnVjdENsYXNzKGNvZGUpO1xuICAgIHJldHVybiBjb2RlLnJlbmRlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0SW1wb3J0cyhjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvZGUubGluZSgnLy8gR2VuZXJhdGVkIGJ5IGNkay1pbXBvcnQnKTtcbiAgICBjb2RlLmxpbmUoXCJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1wiKTtcbiAgICBjb2RlLmxpbmUoXCJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1wiKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdERlZmluaXRpb25UeXBlcyhjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvbnN0IGdlbiA9IG5ldyBqMmouVHlwZUdlbmVyYXRvcih7XG4gICAgICBkZWZpbml0aW9uczogdGhpcy5zY2hlbWEuZGVmaW5pdGlvbnMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzY2hlbWEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuc2NoZW1hKSk7XG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzKSB7XG4gICAgICAvLyBSZW1vdmUgYXR0cmlidXRlcyB0aGF0IGNhbm5vdCBiZSB3cml0dGVuIGJ1dCBhcmUgdXNlZCBhcyBhdHRyaWJ1dGVzXG4gICAgICAvLyBUaGVzZSBzaG91bGQgbm90IGJlIHBhcnQgb2YgdGhlIFByb3BzIHN0cnVjdFxuXG4gICAgICBkZWxldGUgc2NoZW1hLnByb3BlcnRpZXNbcHJvcF07XG4gICAgfVxuXG4gICAgZ2VuLmVtaXRUeXBlKHRoaXMucHJvcHNTdHJ1Y3ROYW1lLCBzY2hlbWEpO1xuXG4gICAgZ2VuLnJlbmRlclRvQ29kZShjb2RlKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdENvbnN0cnVjdENsYXNzKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5saW5lKCcvKionKTtcbiAgICBjb2RlLmxpbmUoYCAqIEEgQ2xvdWRGb3JtYXRpb24gXFxgJHt0aGlzLnR5cGVOYW1lfVxcYGApO1xuICAgIGNvZGUubGluZSgnIConKTtcbiAgICBjb2RlLmxpbmUoYCAqIEBjbG91ZGZvcm1hdGlvblJlc291cmNlICR7dGhpcy50eXBlTmFtZX1gKTtcbiAgICBjb2RlLmxpbmUoJyAqIEBzdGFiaWxpdHkgZXh0ZXJuYWwnKTtcbiAgICBpZiAodGhpcy50eXBlRGVmPy5Tb3VyY2VVcmwpIHtcbiAgICAgIGNvZGUubGluZShgICogQGxpbmsgJHt0aGlzLnR5cGVEZWYuU291cmNlVXJsfWApO1xuICAgIH1cbiAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgIGNvZGUub3BlbkJsb2NrKGBleHBvcnQgY2xhc3MgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX0gZXh0ZW5kcyBjZGsuQ2ZuUmVzb3VyY2VgKTtcbiAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgIGNvZGUubGluZSgnKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSBuYW1lIGZvciB0aGlzIHJlc291cmNlIGNsYXNzLicpO1xuICAgIGNvZGUubGluZSgnKi8nKTtcbiAgICBjb2RlLmxpbmUoYHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0ZOX1JFU09VUkNFX1RZUEVfTkFNRSA9IFwiJHt0aGlzLnR5cGVOYW1lfVwiO2ApO1xuICAgIGNvZGUubGluZSgpO1xuXG4gICAgLy8gZW1pdCBhIFwicHJvcHNcIiBwcm9wZXJ0eSB3aGljaCBpbmNsdWRlcyB0aGUgc2V0IG9mIHByb3BzIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3JcbiAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgIGNvZGUubGluZSgnICogUmVzb3VyY2UgcHJvcHMuJyk7XG4gICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICBjb2RlLmxpbmUoYHB1YmxpYyByZWFkb25seSBwcm9wczogJHt0aGlzLnByb3BzU3RydWN0TmFtZX07YCk7XG4gICAgY29kZS5saW5lKCk7XG5cbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgICBjb2RlLmxpbmUoYCAqIEF0dHJpYnV0ZSBcXGAke3RoaXMudHlwZU5hbWV9LiR7cHJvcH1cXGBgKTtcbiAgICAgIGlmICh0aGlzLnR5cGVEZWY/LlNvdXJjZVVybCkge1xuICAgICAgICBjb2RlLmxpbmUoYCAqIEBsaW5rICR7dGhpcy50eXBlRGVmLlNvdXJjZVVybH1gKTtcbiAgICAgIH1cbiAgICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgICBjb2RlLmxpbmUoYHB1YmxpYyByZWFkb25seSBhdHRyJHtwYXNjYWwocHJvcCl9OiAke3RoaXMuZ2V0VHlwZU9mUHJvcGVydHkocHJvcCl9O2ApO1xuICAgIH1cblxuICAgIGNvZGUubGluZSgpO1xuXG4gICAgY29kZS5saW5lKCcvKionKTtcbiAgICBjb2RlLmxpbmUoYCAqIENyZWF0ZSBhIG5ldyBcXGAke3RoaXMudHlwZU5hbWV9XFxgLmApO1xuICAgIGNvZGUubGluZSgnIConKTtcbiAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBzY29wZSAtIHNjb3BlIGluIHdoaWNoIHRoaXMgcmVzb3VyY2UgaXMgZGVmaW5lZCcpO1xuICAgIGNvZGUubGluZSgnICogQHBhcmFtIGlkICAgIC0gc2NvcGVkIGlkIG9mIHRoZSByZXNvdXJjZScpO1xuICAgIGNvZGUubGluZSgnICogQHBhcmFtIHByb3BzIC0gcmVzb3VyY2UgcHJvcGVydGllcycpO1xuICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgY29kZS5vcGVuQmxvY2soYGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6ICR7dGhpcy5wcm9wc1N0cnVjdE5hbWV9KWApO1xuICAgIGNvZGUubGluZShgc3VwZXIoc2NvcGUsIGlkLCB7IHR5cGU6ICR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9LkNGTl9SRVNPVVJDRV9UWVBFX05BTUUsIHByb3BlcnRpZXM6IHRvSnNvbl8ke3RoaXMucHJvcHNTdHJ1Y3ROYW1lfShwcm9wcykhIH0pO2ApO1xuICAgIGNvZGUubGluZSgnJyk7XG4gICAgY29kZS5saW5lKCd0aGlzLnByb3BzID0gcHJvcHM7Jyk7XG4gICAgY29kZS5saW5lKCk7XG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBgYXR0ciR7cGFzY2FsKHByb3ApfWA7XG4gICAgICBjb2RlLmxpbmUoYHRoaXMuJHtwcm9wZXJ0eU5hbWV9ID0gJHt0aGlzLnJlbmRlckdldEF0dChwcm9wKX07YCk7XG4gICAgfVxuICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuXG4gICAgLy8gQ2xvc2UgY29uc3RydWN0IGNsYXNzXG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlckdldEF0dChwcm9wOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGF0dHJpYnV0ZVR5cGUgPSB0aGlzLmdldFR5cGVPZlByb3BlcnR5KHByb3ApO1xuICAgIGNvbnN0IGNvbnN0cnVjdG9yQXJndW1lbnRzID0gYHRoaXMuZ2V0QXR0KCcke3Byb3B9JylgO1xuICAgIGlmIChhdHRyaWJ1dGVUeXBlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGBjZGsuVG9rZW4uYXNTdHJpbmcoJHtjb25zdHJ1Y3RvckFyZ3VtZW50c30pYDtcbiAgICB9XG4gICAgaWYgKGF0dHJpYnV0ZVR5cGUgPT09ICdzdHJpbmdbXScpIHtcbiAgICAgIHJldHVybiBgY2RrLlRva2VuLmFzTGlzdCgke2NvbnN0cnVjdG9yQXJndW1lbnRzfSlgO1xuICAgIH1cbiAgICBpZiAoYXR0cmlidXRlVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBgY2RrLlRva2VuLmFzTnVtYmVyKCR7Y29uc3RydWN0b3JBcmd1bWVudHN9KWA7XG4gICAgfVxuICAgIHJldHVybiBjb25zdHJ1Y3RvckFyZ3VtZW50cztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VHlwZU9mUHJvcGVydHkocHJvcDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VHlwZUZyb21TY2hlbWEodGhpcy5zY2hlbWEucHJvcGVydGllc1twcm9wXSk7XG4gIH1cblxuICBwcml2YXRlIGdldFR5cGVGcm9tU2NoZW1hKHByb3A6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKHByb3AudHlwZSkge1xuICAgICAgc3dpdGNoIChwcm9wLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICByZXR1cm4gJ3N0cmluZyc7XG4gICAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRUeXBlRnJvbVNjaGVtYShwcm9wLml0ZW1zKX1bXWA7XG4gICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgcmV0dXJuICdudW1iZXInO1xuICAgICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgICAgICByZXR1cm4gJ251bWJlcic7XG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgIHJldHVybiAnY2RrLklSZXNvbHZhYmxlJztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gJ2FueSc7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwcm9wLmhhc093blByb3BlcnR5KCckcmVmJykpIHtcbiAgICAgIHJldHVybiBwcm9wLiRyZWYucmVwbGFjZSgvI1xcL2RlZmluaXRpb25zXFwvLywgJycpO1xuICAgIH1cbiAgICByZXR1cm4gJ2FueSc7XG4gIH1cblxuICBwcml2YXRlIGlzU3VwcG9ydGVkUHJpbWl0aXZlVHlwZShkZWY6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmIChkZWY/LnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzU3VwcG9ydGVkUHJpbWl0aXZlVHlwZShkZWY/Lml0ZW1zKTtcbiAgICB9XG4gICAgcmV0dXJuIGRlZi50eXBlICYmIFsnc3RyaW5nJywgJ251bWJlcicsICdpbnRlZ2VyJywgJ2Jvb2xlYW4nXS5pbmNsdWRlcyhkZWYudHlwZSk7XG4gIH1cbn1cbiJdfQ==
package/lib/cli.js CHANGED
@@ -147,7 +147,6 @@ function showSCHelp() {
147
147
  console.log();
148
148
  }
149
149
  void (async () => {
150
- var _a, _b;
151
150
  if (args.help && subCommand === 'cfn') {
152
151
  showCfnHelp();
153
152
  process.exit(1);
@@ -192,11 +191,11 @@ void (async () => {
192
191
  await (0, languages_1.renderCode)({
193
192
  srcdir: workdir,
194
193
  language: args.language,
195
- outdir: (_a = args.outdir) !== null && _a !== void 0 ? _a : '.',
194
+ outdir: args.outdir ?? '.',
196
195
  typeName: typeName,
197
196
  goModule: args['go-module'],
198
197
  javaPackage: args['java-package'],
199
- csharpNamespace: (_b = args['csharp-namespace']) !== null && _b !== void 0 ? _b : typeName, // already AWS::Foo::Bar
198
+ csharpNamespace: args['csharp-namespace'] ?? typeName, // already AWS::Foo::Bar
200
199
  });
201
200
  }
202
201
  catch (e) {
@@ -227,16 +226,15 @@ void (async () => {
227
226
  }));
228
227
  }
229
228
  await Promise.all(products.map(async (product) => {
230
- var _a, _b, _c;
231
229
  const productDir = path.join(workdir, caseutil.header(product).toLowerCase());
232
230
  await (0, languages_1.renderCode)({
233
231
  srcdir: productDir,
234
- language: (_a = args.language) !== null && _a !== void 0 ? _a : 'typescript',
235
- outdir: (_b = args.outdir) !== null && _b !== void 0 ? _b : './sc-products',
232
+ language: args.language ?? 'typescript',
233
+ outdir: args.outdir ?? './sc-products',
236
234
  typeName: product,
237
235
  goModule: args['go-module'],
238
236
  javaPackage: args['java-package'],
239
- csharpNamespace: (_c = args['csharp-namespace']) !== null && _c !== void 0 ? _c : product,
237
+ csharpNamespace: args['csharp-namespace'] ?? product,
240
238
  });
241
239
  }));
242
240
  process.exit(0);
@@ -247,4 +245,4 @@ void (async () => {
247
245
  }
248
246
  }
249
247
  })();
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGdEQUFrQztBQUNsQyx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLCtDQUFpQztBQUNqQyx3REFBZ0M7QUFDaEMsNkRBQW9EO0FBQ3BELHdCQUEwRztBQUMxRywyQ0FBOEQ7QUFHOUQsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixRQUFRLEVBQUU7UUFDUixFQUFFLEVBQUUsSUFBSTtRQUNSLEdBQUcsRUFBRSxJQUFJO0tBQ1Y7Q0FDRixDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxJQUFBLG1DQUFhLEVBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRixNQUFNLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFckQsTUFBTSxJQUFJLEdBQUcsSUFBQSxrQkFBUSxFQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRTtJQUNoRCxNQUFNLEVBQUU7UUFDTixRQUFRO1FBQ1IsVUFBVTtRQUNWLGdCQUFnQjtRQUNoQixZQUFZO1FBQ1osMEJBQTBCO1FBQzFCLFNBQVM7UUFDVCxhQUFhO0tBQ2Q7SUFDRCxPQUFPLEVBQUU7UUFDUCxNQUFNO1FBQ04sU0FBUztLQUNWO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsUUFBUSxFQUFFLEdBQUc7UUFDYixhQUFhLEVBQUUsR0FBRztRQUNsQixNQUFNLEVBQUUsR0FBRztRQUNYLFVBQVUsRUFBRSxHQUFHO0tBQ2hCO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsU0FBUyxRQUFRO0lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RCLE9BQU8s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T0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqQjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakI7S0FDRjtBQUNILENBQUMsQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy9wcm9taXNlcyc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2FzZXV0aWwgZnJvbSAnY2FzZSc7XG5pbXBvcnQgbWluaW1pc3QgZnJvbSAnbWluaW1pc3QnO1xuaW1wb3J0IHsgcGFyc2VDb21tYW5kcyB9IGZyb20gJ21pbmltaXN0LXN1YmNvbW1hbmQnO1xuaW1wb3J0IHsgaW1wb3J0UmVzb3VyY2VUeXBlLCBpbXBvcnRQcm9kdWN0cywgaW1wb3J0UHJvZHVjdCwgcmVhZFJlc291cmNlRGVmaW5pdGlvbkZyb21SZWdpc3RyeSB9IGZyb20gJy4nO1xuaW1wb3J0IHsgcmVuZGVyQ29kZSwgU1VQUE9SVEVEX0xBTkdVQUdFUyB9IGZyb20gJy4vbGFuZ3VhZ2VzJztcbmltcG9ydCB7IFR5cGVJbmZvIH0gZnJvbSAnLi90eXBlLWluZm8nO1xuXG5jb25zdCBjb21tYW5kRGVmaW50aW9uID0ge1xuICBjb21tYW5kczoge1xuICAgIHNjOiBudWxsLFxuICAgIGNmbjogbnVsbCxcbiAgfSxcbn07XG5cbmNvbnN0IHBhcnNlZENvbW1hbmRzQW5kQXJndiA9IHBhcnNlQ29tbWFuZHMoY29tbWFuZERlZmludGlvbiwgcHJvY2Vzcy5hcmd2LnNsaWNlKDIpKTtcbmNvbnN0IHN1YkNvbW1hbmQgPSBwYXJzZWRDb21tYW5kc0FuZEFyZ3YuY29tbWFuZHNbMF07XG5cbmNvbnN0IGFyZ3MgPSBtaW5pbWlzdChwYXJzZWRDb21tYW5kc0FuZEFyZ3YuYXJndiwge1xuICBzdHJpbmc6IFtcbiAgICAnb3V0ZGlyJyxcbiAgICAnbGFuZ3VhZ2UnLFxuICAgICdnby1tb2R1bGUtbmFtZScsXG4gICAgJ3Byb2R1Y3QtaWQnLFxuICAgICdwcm92aXNpb25pbmctYXJ0aWZhY3QtaWQnLFxuICAgICdwYXRoLWlkJyxcbiAgICAnc2NoZW1hLWZpbGUnLFxuICBdLFxuICBib29sZWFuOiBbXG4gICAgJ2hlbHAnLFxuICAgICdwcml2YXRlJyxcbiAgXSxcbiAgYWxpYXM6IHtcbiAgICAnb3V0ZGlyJzogJ28nLFxuICAgICdzY2hlbWEtZmlsZSc6ICdzJyxcbiAgICAnaGVscCc6ICdoJyxcbiAgICAnbGFuZ3VhZ2UnOiAnbCcsXG4gIH0sXG59KTtcblxuZnVuY3Rpb24gc2hvd0hlbHAoKSB7XG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgY29uc29sZS5sb2coJ1VzYWdlOicpO1xuICBjb25zb2xlLmxvZygnICBjZGstaW1wb3J0IFNVQkNPTU1BTkQgKGNmbiBvciBzYykgW3BhcmFtZXRlcnNdJyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCdHZW5lcmFsIG9wdGlvbnM6Jyk7XG4gIGNvbnNvbGUubG9nKCcgIC1sLCAtLWxhbmd1YWdlICAgICBPdXRwdXQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10nKTtcbiAgY29uc29sZS5sb2coJyAgLW8sIC0tb3V0ZGlyICAgICAgIE91dHB1dCBkaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXScpO1xuICBjb25zb2xlLmxvZygnICAtcywgLS1zY2hlbWEtZmlsZSAgUmVhZCBzY2hlbWEgZnJvbSBhIGZpbGUgKGluc3RlYWQgb2YgQ0ZOIHJlZ2lzdHJ5KSAgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC0tZ28tbW9kdWxlICAgICAgICBHbyBtb2R1bGUgbmFtZSAocmVxdWlyZWQgaWYgbGFuZ3VhZ2UgaXMgXCJnb2xhbmdcIikgICAgICAgICBbc3RyaW5nXScpO1xuICBjb25zb2xlLmxvZygnICAtLWphdmEtcGFja2FnZSAgICAgSmF2YSBwYWNrYWdlIG5hbWUgKHJlcXVpcmVkIGlmIGxhbmd1YWdlIGlzIFwiamF2YVwiKSAgICAgICAgW3N0cmluZ10nKTtcbiAgY29uc29sZS5sb2coJyAgLS1jc2hhcnAtbmFtZXNwYWNlIEMjIG5hbWVzcGFjZSAob3B0aW9uYWwgaWYgbGFuZ3VhZ2UgaXMgXCJjc2hhcnBcIiwgICAgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0cyB0byByZXNvdXJjZSBuYW1lLicpO1xuICBjb25zb2xlLmxvZygnICAtaCwgLS1oZWxwICAgICAgICAgU2hvdyB1c2FnZSBpbmZvIChpbmNsdWRlIHN1YmNvbW1hbmQgdG8gc2VlIHNwZWNpZmljIGhlbHApIFtib29sZWFuXScpO1xuICBjb25zb2xlLmxvZygnJyk7XG4gIGNvbnNvbGUubG9nKCk7XG59XG5cbmZ1bmN0aW9uIHNob3dDZm5IZWxwKCkge1xuICBjb25zb2xlLmxvZygnJyk7XG4gIGNvbnNvbGUubG9nKCdVc2FnZTonKTtcbiAgY29uc29sZS5sb2coJyAgY2RrLWltcG9ydCBjZm4gLWwgTEFOR1VBR0UgUkVTT1VSQ0UtTkFNRVtAVkVSU0lPTl0nKTtcbiAgY29uc29sZS5sb2coKTtcbiAgY29uc29sZS5sb2coJ09wdGlvbnM6Jyk7XG4gIGNvbnNvbGUubG9nKCcgIC1sLCAtLWxhbmd1YWdlICAgICBPdXRwdXQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10nKTtcbiAgY29uc29sZS5sb2coJyAgLW8sIC0tb3V0ZGlyICAgICAgIE91dHB1dCBkaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXSAgW2RlZmF1bHQ6IFwiLlwiXScpO1xuICBjb25zb2xlLmxvZygnICAtcywgLS1zY2hlbWEtZmlsZSAgUmVhZCBzY2hlbWEgZnJvbSBhIGZpbGUgKGluc3RlYWQgb2YgQ0ZOIHJlZ2lzdHJ5KSAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC0tZ28tbW9kdWxlICAgICAgICBHbyBtb2R1bGUgbmFtZSAocmVxdWlyZWQgaWYgbGFuZ3VhZ2UgaXMgXCJnb2xhbmdcIikgICAgICBbc3RyaW5nXScpO1xuICBjb25zb2xlLmxvZygnICAtLWphdmEtcGFja2FnZSAgICAgSmF2YSBwYWNrYWdlIG5hbWUgKHJlcXVpcmVkIGlmIGxhbmd1YWdlIGlzIFwiamF2YVwiKSAgICAgW3N0cmluZ10nKTtcbiAgY29uc29sZS5sb2coJyAgLS1jc2hhcnAtbmFtZXNwYWNlIEMjIG5hbWVzcGFjZSAob3B0aW9uYWwgaWYgbGFuZ3VhZ2UgaXMgXCJjc2hhcnBcIiwgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0cyB0byByZXNvdXJjZSBuYW1lLicpO1xuICBjb25zb2xlLmxvZygnICAtLXByaXZhdGUgICAgICAgICAgSW1wb3J0IHR5cGVzIHJlZ2lzdGVyZWQgaW4geW91ciBBV1MgYWNjb3VudCBhbmQgcmVnaW9uIFtib29sZWFuXScpO1xuICBjb25zb2xlLmxvZygnICAtaCwgLS1oZWxwICAgICAgICAgU2hvdyB0aGlzIHVzYWdlIGluZm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXScpO1xuICBjb25zb2xlLmxvZygnJyk7XG4gIGNvbnNvbGUubG9nKCdFeGFtcGxlczonKTtcbiAgY29uc29sZS5sb2coKTtcbiAgY29uc29sZS5sb2coJyAgR2VuZXJhdGVzIGNvbnN0cnVjdHMgZm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBBV1NRUzo6RUtTOjpDbHVzdGVyIGluIFR5cGVTY3JpcHQ6Jyk7XG4gIGNvbnNvbGUubG9nKCcgICAgY2RrLWltcG9ydCBjZm4gLWwgdHlwZXNjcmlwdCBBV1NRUzo6RUtTOjpDbHVzdGVyJyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCcgIEdlbmVyYXRlcyBjb25zdHJ1Y3QgaW4gR28gZm9yIGEgc3BlY2lmaWMgcmVzb3VyY2UgdmVyc2lvbjonKTtcbiAgY29uc29sZS5sb2coJyAgICBjZGstaW1wb3J0IGNmbiAtbCBnb2xhbmcgLS1nby1tb2R1bGUgXCJnaXRodWIuY29tL2FjY291bnQvcmVwb1wiIEFXU1FTOjpFS1M6OkNsdXN0ZXJAMS4yLjAnKTtcbiAgY29uc29sZS5sb2coKTtcbiAgY29uc29sZS5sb2coJyAgR2VuZXJhdGVzIGNvbnN0cnVjdCBpbiBQeXRob24gdW5kZXIgdGhlIFwic3JjXCIgc3ViZm9sZGVyIGluc3RlYWQgb2Ygd29ya2luZyBkaXJlY3Rvcnk6Jyk7XG4gIGNvbnNvbGUubG9nKCcgICAgY2RrLWltcG9ydCBjZm4gLWwgcHl0aG9uIC1vIHNyYyBBV1NRUzo6RUtTOjpDbHVzdGVyJyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCcgIEdlbmVyYXRlcyBjb25zdHJ1Y3QgaW4gSmF2YSBhbmQgaWRlbnRpZmllcyB0aGUgcmVzb3VyY2UgdHlwZSBieSBpdHMgQVJOOicpO1xuICBjb25zb2xlLmxvZygnICAgIGNkay1pbXBvcnQgY2ZuIC1sIGphdmEgLS1qYXZhLXBhY2thZ2UgXCJjb20uYWNtZS5teXByb2plY3RcIiBhcm46YXdzOmNsb3VkZm9ybWF0aW9uOi4uLicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnICBHZW5lcmF0ZXMgY29uc3RydWN0IGZvciBhIHByaXZhdGUgdHlwZTonKTtcbiAgY29uc29sZS5sb2coJyAgICBjZGstaW1wb3J0IGNmbiAtbCB0eXBlc2NyaXB0IC0tcHJpdmF0ZSBBY21lOjpTdXBlclNlcnZpY2U6OkZyaWVuZDo6TU9EVUxFJyk7XG4gIGNvbnNvbGUubG9nKCk7XG59XG5cbmZ1bmN0aW9uIHNob3dTQ0hlbHAoKSB7XG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgY29uc29sZS5sb2coJ1VzYWdlOicpO1xuICBjb25zb2xlLmxvZygnICBjZGstaW1wb3J0IHNjIC1sIExBTkdVQUdFJyk7XG4gIGNvbnNvbGUubG9nKCcgIGNkay1pbXBvcnQgc2MgLWwgTEFOR1VBR0UgLXByIFBST0RVQ1QtSUQgLXBhIFBST1ZJU0lPTklORy1BUlRJRkFDVC1JRCAtbHAgTEFVTkNILVBBVEgtSUQnKTtcbiAgY29uc29sZS5sb2coKTtcbiAgY29uc29sZS5sb2coJ09wdGlvbnM6Jyk7XG4gIGNvbnNvbGUubG9nKCcgIC1sLCAtLWxhbmd1YWdlICAgICAgICAgICAgICAgICAgT3V0cHV0IHByb2dyYW1taW5nIGxhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC1vLCAtLW91dGRpciAgICAgICAgICAgICAgICAgICAgT3V0cHV0IGRpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC0tcHJvZHVjdC1pZCAgICAgICAgICAgICAgICAgICAgUHJvZHVjdCBJZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC0tcHJvdmlzaW9uaW5nLWFydGlmYWN0LWlkICAgICAgUHJvdmlzaW9uaW5nIGFydGlmYWN0IElkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC0tcGF0aC1pZCAgICAgICAgICAgICAgICAgICAgICAgTGF1bmNoIHBhdGggSWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC0tZ28tbW9kdWxlICAgICAgICAgICAgICAgICAgICAgR28gbW9kdWxlIG5hbWUgKHJlcXVpcmVkIGlmIGxhbmd1YWdlIGlzIFwiZ29sYW5nXCIpICAgICAgW3N0cmluZ10nKTtcbiAgY29uc29sZS5sb2coJyAgLS1qYXZhLXBhY2thZ2UgICAgICAgICAgICAgICAgICBKYXZhIHBhY2thZ2UgbmFtZSAocmVxdWlyZWQgaWYgbGFuZ3VhZ2UgaXMgXCJqYXZhXCIpICAgICBbc3RyaW5nXScpO1xuICBjb25zb2xlLmxvZygnICAtLWNzaGFycC1uYW1lc3BhY2UgICAgICAgICAgICAgIEMjIG5hbWVzcGFjZSAob3B0aW9uYWwgaWYgbGFuZ3VhZ2UgaXMgXCJjc2hhcnBcIiwgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHMgdG8gcmVzb3VyY2UgbmFtZS4nKTtcbiAgY29uc29sZS5sb2coJyAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgICAgICBTaG93IHRoaXMgdXNhZ2UgaW5mbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jvb2xlYW5dJyk7XG4gIGNvbnNvbGUubG9nKCcnKTtcbiAgY29uc29sZS5sb2coJ0V4YW1wbGVzOicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnICBHZW5lcmF0ZXMgY29uc3RydWN0cyBmb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHByb2R1Y3RzIGluIFR5cGVTY3JpcHQ6Jyk7XG4gIGNvbnNvbGUubG9nKCcgICAgY2RrLWltcG9ydCBzYyAtbCB0eXBlc2NyaXB0Jyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCcgIEdlbmVyYXRlcyBjb25zdHJ1Y3QgaW4gR28gZm9yIGEgc3BlY2lmaWMgcHJvZHVjdCB2ZXJzaW9uOicpO1xuICBjb25zb2xlLmxvZygnICAgIGNkay1pbXBvcnQgc2MgLWwgZ29sYW5nIC0tZ28tbW9kdWxlIFwiZ2l0aHViLmNvbS9hY2NvdW50L3JlcG9cIiAtcHIgcHJvZC1hYmMxMjMgLXBhIHBhLWFiYzEyMyAtbHAgbHAtYWJjMTIzJyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCcgIEdlbmVyYXRlcyBjb25zdHJ1Y3RzIGluIFB5dGhvbiB1bmRlciB0aGUgXCJzcmNcIiBzdWJmb2xkZXIgaW5zdGVhZCBvZiB3b3JraW5nIGRpcmVjdG9yeTonKTtcbiAgY29uc29sZS5sb2coJyAgICBjZGstaW1wb3J0IHNjIC1sIHB5dGhvbiAtbyAuL3NyYycpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygpO1xufVxuXG52b2lkIChhc3luYyAoKSA9PiB7XG4gIGlmIChhcmdzLmhlbHAgJiYgc3ViQ29tbWFuZCA9PT0gJ2NmbicpIHtcbiAgICBzaG93Q2ZuSGVscCgpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuICBpZiAoYXJncy5oZWxwICYmIHN1YkNvbW1hbmQgPT09ICdzYycpIHtcbiAgICBzaG93U0NIZWxwKCk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG4gIGlmIChhcmdzLmhlbHAgfHwgIXN1YkNvbW1hbmQpIHtcbiAgICBzaG93SGVscCgpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIGlmICghYXJncy5sYW5ndWFnZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyByZXF1aXJlZCBvcHRpb246IC0tbGFuZ3VhZ2UuIFN1cHBvcnRlZCBsYW5ndWFnZXM6ICR7U1VQUE9SVEVEX0xBTkdVQUdFUy5qb2luKCcsICcpfWApO1xuICB9XG5cbiAgaWYgKFNVUFBPUlRFRF9MQU5HVUFHRVMuaW5kZXhPZihhcmdzLmxhbmd1YWdlKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGxhbmd1YWdlICR7YXJncy5sYW5ndWFnZX0uIFN1cHBvcnRlZDogJHtTVVBQT1JURURfTEFOR1VBR0VTLmpvaW4oJywgJyl9YCk7XG4gIH1cblxuICBpZiAoc3ViQ29tbWFuZCA9PSAnY2ZuJykge1xuICAgIGlmIChhcmdzLl8ubGVuZ3RoICE9PSAxKSB7XG4gICAgICBzaG93Q2ZuSGVscCgpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBbcmVzb3VyY2VOYW1lLCByZXNvdXJjZVZlcnNpb25dID0gYXJncy5fWzBdLnNwbGl0KCdAJyk7XG4gICAgICBjb25zdCB3b3JrZGlyID0gYXdhaXQgZnMubWtkdGVtcChwYXRoLmpvaW4ob3MudG1wZGlyKCksICdjZGstaW1wb3J0JykpO1xuXG4gICAgICBsZXQgdHlwZUluZm86IFR5cGVJbmZvO1xuICAgICAgaWYgKGFyZ3NbJ3NjaGVtYS1maWxlJ10pIHtcbiAgICAgICAgdHlwZUluZm8gPSB7XG4gICAgICAgICAgVHlwZU5hbWU6IHJlc291cmNlTmFtZSxcbiAgICAgICAgICBTY2hlbWE6IGF3YWl0IGZzLnJlYWRGaWxlKGFyZ3NbJ3NjaGVtYS1maWxlJ10sIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSksXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0eXBlSW5mbyA9IGF3YWl0IHJlYWRSZXNvdXJjZURlZmluaXRpb25Gcm9tUmVnaXN0cnkocmVzb3VyY2VOYW1lLCByZXNvdXJjZVZlcnNpb24sIHtcbiAgICAgICAgICBwcml2YXRlOiBhcmdzLnByaXZhdGUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0eXBlTmFtZSA9IGltcG9ydFJlc291cmNlVHlwZSh0eXBlSW5mbywge1xuICAgICAgICBvdXRkaXI6IHdvcmtkaXIsXG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgcmVuZGVyQ29kZSh7XG4gICAgICAgIHNyY2Rpcjogd29ya2RpcixcbiAgICAgICAgbGFuZ3VhZ2U6IGFyZ3MubGFuZ3VhZ2UsXG4gICAgICAgIG91dGRpcjogYXJncy5vdXRkaXIgPz8gJy4nLFxuICAgICAgICB0eXBlTmFtZTogdHlwZU5hbWUsXG4gICAgICAgIGdvTW9kdWxlOiBhcmdzWydnby1tb2R1bGUnXSxcbiAgICAgICAgamF2YVBhY2thZ2U6IGFyZ3NbJ2phdmEtcGFja2FnZSddLFxuICAgICAgICBjc2hhcnBOYW1lc3BhY2U6IGFyZ3NbJ2NzaGFycC1uYW1lc3BhY2UnXSA/PyB0eXBlTmFtZSwgLy8gYWxyZWFkeSBBV1M6OkZvbzo6QmFyXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH1cblxuICBpZiAoc3ViQ29tbWFuZCA9PSAnc2MnKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHdvcmtkaXIgPSBhd2FpdCBmcy5ta2R0ZW1wKHBhdGguam9pbihvcy50bXBkaXIoKSwgJ2Nkay1pbXBvcnQnKSk7XG4gICAgICBjb25zdCBwcEFyZ3MgPSBbYXJnc1sncHJvZHVjdC1pZCddLCBhcmdzWydwcm92aXNpb25pbmctYXJ0aWZhY3QtaWQnXSwgYXJnc1sncGF0aC1pZCddXS5maWx0ZXIocGFyYW0gPT4gcGFyYW0gIT0gdW5kZWZpbmVkKTtcblxuICAgICAgaWYgKGFyZ3MuaGVscCB8fCAocHBBcmdzLmxlbmd0aCA+IDAgJiYgcHBBcmdzLmxlbmd0aCAhPSAzKSkge1xuICAgICAgICBzaG93U0NIZWxwKCk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHByb2R1Y3RzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgaWYgKHBwQXJncy5sZW5ndGggPT0gMykge1xuICAgICAgICBwcm9kdWN0cy5wdXNoKFxuICAgICAgICAgIGF3YWl0IGltcG9ydFByb2R1Y3Qoe1xuICAgICAgICAgICAgb3V0ZGlyOiB3b3JrZGlyLFxuICAgICAgICAgICAgcHJvZHVjdElkOiBhcmdzWydwcm9kdWN0LWlkJ10sXG4gICAgICAgICAgICBsYXVuY2hQYXRoSWQ6IGFyZ3NbJ3BhdGgtaWQnXSxcbiAgICAgICAgICAgIHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ6IGFyZ3NbJ3Byb3Zpc2lvbmluZy1hcnRpZmFjdC1pZCddLFxuICAgICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2R1Y3RzLnB1c2goXG4gICAgICAgICAgLi4uYXdhaXQgaW1wb3J0UHJvZHVjdHMoe1xuICAgICAgICAgICAgb3V0ZGlyOiB3b3JrZGlyLFxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9kdWN0cy5tYXAoYXN5bmMgKHByb2R1Y3QpID0+IHtcbiAgICAgICAgY29uc3QgcHJvZHVjdERpciA9IHBhdGguam9pbih3b3JrZGlyLCBjYXNldXRpbC5oZWFkZXIocHJvZHVjdCkudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIGF3YWl0IHJlbmRlckNvZGUoe1xuICAgICAgICAgIHNyY2RpcjogcHJvZHVjdERpcixcbiAgICAgICAgICBsYW5ndWFnZTogYXJncy5sYW5ndWFnZSA/PyAndHlwZXNjcmlwdCcsXG4gICAgICAgICAgb3V0ZGlyOiBhcmdzLm91dGRpciA/PyAnLi9zYy1wcm9kdWN0cycsXG4gICAgICAgICAgdHlwZU5hbWU6IHByb2R1Y3QsXG4gICAgICAgICAgZ29Nb2R1bGU6IGFyZ3NbJ2dvLW1vZHVsZSddLFxuICAgICAgICAgIGphdmFQYWNrYWdlOiBhcmdzWydqYXZhLXBhY2thZ2UnXSxcbiAgICAgICAgICBjc2hhcnBOYW1lc3BhY2U6IGFyZ3NbJ2NzaGFycC1uYW1lc3BhY2UnXSA/PyBwcm9kdWN0LFxuICAgICAgICB9KTtcbiAgICAgIH0pKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH1cbn0pKCk7XG4iXX0=
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGdEQUFrQztBQUNsQyx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLCtDQUFpQztBQUNqQyx3REFBZ0M7QUFDaEMsNkRBQW9EO0FBQ3BELHdCQUEwRztBQUMxRywyQ0FBOEQ7QUFHOUQsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixRQUFRLEVBQUU7UUFDUixFQUFFLEVBQUUsSUFBSTtRQUNSLEdBQUcsRUFBRSxJQUFJO0tBQ1Y7Q0FDRixDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxJQUFBLG1DQUFhLEVBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRixNQUFNLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFckQsTUFBTSxJQUFJLEdBQUcsSUFBQSxrQkFBUSxFQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRTtJQUNoRCxNQUFNLEVBQUU7UUFDTixRQUFRO1FBQ1IsVUFBVTtRQUNWLGdCQUFnQjtRQUNoQixZQUFZO1FBQ1osMEJBQTBCO1FBQzFCLFNBQVM7UUFDVCxhQUFhO0tBQ2Q7SUFDRCxPQUFPLEVBQUU7UUFDUCxNQUFNO1FBQ04sU0FBUztLQUNWO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsUUFBUSxFQUFFLEdBQUc7UUFDYixhQUFhLEVBQUUsR0FBRztRQUNsQixNQUFNLEVBQUUsR0FBRztRQUNYLFVBQVUsRUFBRSxHQUFHO0tBQ2hCO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsU0FBUyxRQUFRO0lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RCLE9BQU8s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QUM7U0FDakI7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pCO0tBQ0Y7QUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGNhc2V1dGlsIGZyb20gJ2Nhc2UnO1xuaW1wb3J0IG1pbmltaXN0IGZyb20gJ21pbmltaXN0JztcbmltcG9ydCB7IHBhcnNlQ29tbWFuZHMgfSBmcm9tICdtaW5pbWlzdC1zdWJjb21tYW5kJztcbmltcG9ydCB7IGltcG9ydFJlc291cmNlVHlwZSwgaW1wb3J0UHJvZHVjdHMsIGltcG9ydFByb2R1Y3QsIHJlYWRSZXNvdXJjZURlZmluaXRpb25Gcm9tUmVnaXN0cnkgfSBmcm9tICcuJztcbmltcG9ydCB7IHJlbmRlckNvZGUsIFNVUFBPUlRFRF9MQU5HVUFHRVMgfSBmcm9tICcuL2xhbmd1YWdlcyc7XG5pbXBvcnQgeyBUeXBlSW5mbyB9IGZyb20gJy4vdHlwZS1pbmZvJztcblxuY29uc3QgY29tbWFuZERlZmludGlvbiA9IHtcbiAgY29tbWFuZHM6IHtcbiAgICBzYzogbnVsbCxcbiAgICBjZm46IG51bGwsXG4gIH0sXG59O1xuXG5jb25zdCBwYXJzZWRDb21tYW5kc0FuZEFyZ3YgPSBwYXJzZUNvbW1hbmRzKGNvbW1hbmREZWZpbnRpb24sIHByb2Nlc3MuYXJndi5zbGljZSgyKSk7XG5jb25zdCBzdWJDb21tYW5kID0gcGFyc2VkQ29tbWFuZHNBbmRBcmd2LmNvbW1hbmRzWzBdO1xuXG5jb25zdCBhcmdzID0gbWluaW1pc3QocGFyc2VkQ29tbWFuZHNBbmRBcmd2LmFyZ3YsIHtcbiAgc3RyaW5nOiBbXG4gICAgJ291dGRpcicsXG4gICAgJ2xhbmd1YWdlJyxcbiAgICAnZ28tbW9kdWxlLW5hbWUnLFxuICAgICdwcm9kdWN0LWlkJyxcbiAgICAncHJvdmlzaW9uaW5nLWFydGlmYWN0LWlkJyxcbiAgICAncGF0aC1pZCcsXG4gICAgJ3NjaGVtYS1maWxlJyxcbiAgXSxcbiAgYm9vbGVhbjogW1xuICAgICdoZWxwJyxcbiAgICAncHJpdmF0ZScsXG4gIF0sXG4gIGFsaWFzOiB7XG4gICAgJ291dGRpcic6ICdvJyxcbiAgICAnc2NoZW1hLWZpbGUnOiAncycsXG4gICAgJ2hlbHAnOiAnaCcsXG4gICAgJ2xhbmd1YWdlJzogJ2wnLFxuICB9LFxufSk7XG5cbmZ1bmN0aW9uIHNob3dIZWxwKCkge1xuICBjb25zb2xlLmxvZygnJyk7XG4gIGNvbnNvbGUubG9nKCdVc2FnZTonKTtcbiAgY29uc29sZS5sb2coJyAgY2RrLWltcG9ydCBTVUJDT01NQU5EIChjZm4gb3Igc2MpIFtwYXJhbWV0ZXJzXScpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnR2VuZXJhbCBvcHRpb25zOicpO1xuICBjb25zb2xlLmxvZygnICAtbCwgLS1sYW5ndWFnZSAgICAgT3V0cHV0IHByb2dyYW1taW5nIGxhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC1vLCAtLW91dGRpciAgICAgICBPdXRwdXQgZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10nKTtcbiAgY29uc29sZS5sb2coJyAgLXMsIC0tc2NoZW1hLWZpbGUgIFJlYWQgc2NoZW1hIGZyb20gYSBmaWxlIChpbnN0ZWFkIG9mIENGTiByZWdpc3RyeSkgICAgICAgICBbc3RyaW5nXScpO1xuICBjb25zb2xlLmxvZygnICAtLWdvLW1vZHVsZSAgICAgICAgR28gbW9kdWxlIG5hbWUgKHJlcXVpcmVkIGlmIGxhbmd1YWdlIGlzIFwiZ29sYW5nXCIpICAgICAgICAgW3N0cmluZ10nKTtcbiAgY29uc29sZS5sb2coJyAgLS1qYXZhLXBhY2thZ2UgICAgIEphdmEgcGFja2FnZSBuYW1lIChyZXF1aXJlZCBpZiBsYW5ndWFnZSBpcyBcImphdmFcIikgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC0tY3NoYXJwLW5hbWVzcGFjZSBDIyBuYW1lc3BhY2UgKG9wdGlvbmFsIGlmIGxhbmd1YWdlIGlzIFwiY3NoYXJwXCIsICAgICAgICAgICBbc3RyaW5nXScpO1xuICBjb25zb2xlLmxvZygnICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHMgdG8gcmVzb3VyY2UgbmFtZS4nKTtcbiAgY29uc29sZS5sb2coJyAgLWgsIC0taGVscCAgICAgICAgIFNob3cgdXNhZ2UgaW5mbyAoaW5jbHVkZSBzdWJjb21tYW5kIHRvIHNlZSBzcGVjaWZpYyBoZWxwKSBbYm9vbGVhbl0nKTtcbiAgY29uc29sZS5sb2coJycpO1xuICBjb25zb2xlLmxvZygpO1xufVxuXG5mdW5jdGlvbiBzaG93Q2ZuSGVscCgpIHtcbiAgY29uc29sZS5sb2coJycpO1xuICBjb25zb2xlLmxvZygnVXNhZ2U6Jyk7XG4gIGNvbnNvbGUubG9nKCcgIGNkay1pbXBvcnQgY2ZuIC1sIExBTkdVQUdFIFJFU09VUkNFLU5BTUVbQFZFUlNJT05dJyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCdPcHRpb25zOicpO1xuICBjb25zb2xlLmxvZygnICAtbCwgLS1sYW5ndWFnZSAgICAgT3V0cHV0IHByb2dyYW1taW5nIGxhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC1vLCAtLW91dGRpciAgICAgICBPdXRwdXQgZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10gIFtkZWZhdWx0OiBcIi5cIl0nKTtcbiAgY29uc29sZS5sb2coJyAgLXMsIC0tc2NoZW1hLWZpbGUgIFJlYWQgc2NoZW1hIGZyb20gYSBmaWxlIChpbnN0ZWFkIG9mIENGTiByZWdpc3RyeSkgICAgICBbc3RyaW5nXScpO1xuICBjb25zb2xlLmxvZygnICAtLWdvLW1vZHVsZSAgICAgICAgR28gbW9kdWxlIG5hbWUgKHJlcXVpcmVkIGlmIGxhbmd1YWdlIGlzIFwiZ29sYW5nXCIpICAgICAgW3N0cmluZ10nKTtcbiAgY29uc29sZS5sb2coJyAgLS1qYXZhLXBhY2thZ2UgICAgIEphdmEgcGFja2FnZSBuYW1lIChyZXF1aXJlZCBpZiBsYW5ndWFnZSBpcyBcImphdmFcIikgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC0tY3NoYXJwLW5hbWVzcGFjZSBDIyBuYW1lc3BhY2UgKG9wdGlvbmFsIGlmIGxhbmd1YWdlIGlzIFwiY3NoYXJwXCIsICAgICAgICBbc3RyaW5nXScpO1xuICBjb25zb2xlLmxvZygnICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHMgdG8gcmVzb3VyY2UgbmFtZS4nKTtcbiAgY29uc29sZS5sb2coJyAgLS1wcml2YXRlICAgICAgICAgIEltcG9ydCB0eXBlcyByZWdpc3RlcmVkIGluIHlvdXIgQVdTIGFjY291bnQgYW5kIHJlZ2lvbiBbYm9vbGVhbl0nKTtcbiAgY29uc29sZS5sb2coJyAgLWgsIC0taGVscCAgICAgICAgIFNob3cgdGhpcyB1c2FnZSBpbmZvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0nKTtcbiAgY29uc29sZS5sb2coJycpO1xuICBjb25zb2xlLmxvZygnRXhhbXBsZXM6Jyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCcgIEdlbmVyYXRlcyBjb25zdHJ1Y3RzIGZvciB0aGUgbGF0ZXN0IHZlcnNpb24gQVdTUVM6OkVLUzo6Q2x1c3RlciBpbiBUeXBlU2NyaXB0OicpO1xuICBjb25zb2xlLmxvZygnICAgIGNkay1pbXBvcnQgY2ZuIC1sIHR5cGVzY3JpcHQgQVdTUVM6OkVLUzo6Q2x1c3RlcicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnICBHZW5lcmF0ZXMgY29uc3RydWN0IGluIEdvIGZvciBhIHNwZWNpZmljIHJlc291cmNlIHZlcnNpb246Jyk7XG4gIGNvbnNvbGUubG9nKCcgICAgY2RrLWltcG9ydCBjZm4gLWwgZ29sYW5nIC0tZ28tbW9kdWxlIFwiZ2l0aHViLmNvbS9hY2NvdW50L3JlcG9cIiBBV1NRUzo6RUtTOjpDbHVzdGVyQDEuMi4wJyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCcgIEdlbmVyYXRlcyBjb25zdHJ1Y3QgaW4gUHl0aG9uIHVuZGVyIHRoZSBcInNyY1wiIHN1YmZvbGRlciBpbnN0ZWFkIG9mIHdvcmtpbmcgZGlyZWN0b3J5OicpO1xuICBjb25zb2xlLmxvZygnICAgIGNkay1pbXBvcnQgY2ZuIC1sIHB5dGhvbiAtbyBzcmMgQVdTUVM6OkVLUzo6Q2x1c3RlcicpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnICBHZW5lcmF0ZXMgY29uc3RydWN0IGluIEphdmEgYW5kIGlkZW50aWZpZXMgdGhlIHJlc291cmNlIHR5cGUgYnkgaXRzIEFSTjonKTtcbiAgY29uc29sZS5sb2coJyAgICBjZGstaW1wb3J0IGNmbiAtbCBqYXZhIC0tamF2YS1wYWNrYWdlIFwiY29tLmFjbWUubXlwcm9qZWN0XCIgYXJuOmF3czpjbG91ZGZvcm1hdGlvbjouLi4nKTtcbiAgY29uc29sZS5sb2coKTtcbiAgY29uc29sZS5sb2coJyAgR2VuZXJhdGVzIGNvbnN0cnVjdCBmb3IgYSBwcml2YXRlIHR5cGU6Jyk7XG4gIGNvbnNvbGUubG9nKCcgICAgY2RrLWltcG9ydCBjZm4gLWwgdHlwZXNjcmlwdCAtLXByaXZhdGUgQWNtZTo6U3VwZXJTZXJ2aWNlOjpGcmllbmQ6Ok1PRFVMRScpO1xuICBjb25zb2xlLmxvZygpO1xufVxuXG5mdW5jdGlvbiBzaG93U0NIZWxwKCkge1xuICBjb25zb2xlLmxvZygnJyk7XG4gIGNvbnNvbGUubG9nKCdVc2FnZTonKTtcbiAgY29uc29sZS5sb2coJyAgY2RrLWltcG9ydCBzYyAtbCBMQU5HVUFHRScpO1xuICBjb25zb2xlLmxvZygnICBjZGstaW1wb3J0IHNjIC1sIExBTkdVQUdFIC1wciBQUk9EVUNULUlEIC1wYSBQUk9WSVNJT05JTkctQVJUSUZBQ1QtSUQgLWxwIExBVU5DSC1QQVRILUlEJyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCdPcHRpb25zOicpO1xuICBjb25zb2xlLmxvZygnICAtbCwgLS1sYW5ndWFnZSAgICAgICAgICAgICAgICAgIE91dHB1dCBwcm9ncmFtbWluZyBsYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXScpO1xuICBjb25zb2xlLmxvZygnICAtbywgLS1vdXRkaXIgICAgICAgICAgICAgICAgICAgIE91dHB1dCBkaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXScpO1xuICBjb25zb2xlLmxvZygnICAtLXByb2R1Y3QtaWQgICAgICAgICAgICAgICAgICAgIFByb2R1Y3QgSWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXScpO1xuICBjb25zb2xlLmxvZygnICAtLXByb3Zpc2lvbmluZy1hcnRpZmFjdC1pZCAgICAgIFByb3Zpc2lvbmluZyBhcnRpZmFjdCBJZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXScpO1xuICBjb25zb2xlLmxvZygnICAtLXBhdGgtaWQgICAgICAgICAgICAgICAgICAgICAgIExhdW5jaCBwYXRoIElkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXScpO1xuICBjb25zb2xlLmxvZygnICAtLWdvLW1vZHVsZSAgICAgICAgICAgICAgICAgICAgIEdvIG1vZHVsZSBuYW1lIChyZXF1aXJlZCBpZiBsYW5ndWFnZSBpcyBcImdvbGFuZ1wiKSAgICAgIFtzdHJpbmddJyk7XG4gIGNvbnNvbGUubG9nKCcgIC0tamF2YS1wYWNrYWdlICAgICAgICAgICAgICAgICAgSmF2YSBwYWNrYWdlIG5hbWUgKHJlcXVpcmVkIGlmIGxhbmd1YWdlIGlzIFwiamF2YVwiKSAgICAgW3N0cmluZ10nKTtcbiAgY29uc29sZS5sb2coJyAgLS1jc2hhcnAtbmFtZXNwYWNlICAgICAgICAgICAgICBDIyBuYW1lc3BhY2UgKG9wdGlvbmFsIGlmIGxhbmd1YWdlIGlzIFwiY3NoYXJwXCIsICAgICAgICBbc3RyaW5nXScpO1xuICBjb25zb2xlLmxvZygnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRzIHRvIHJlc291cmNlIG5hbWUuJyk7XG4gIGNvbnNvbGUubG9nKCcgIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgICAgICAgU2hvdyB0aGlzIHVzYWdlIGluZm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXScpO1xuICBjb25zb2xlLmxvZygnJyk7XG4gIGNvbnNvbGUubG9nKCdFeGFtcGxlczonKTtcbiAgY29uc29sZS5sb2coKTtcbiAgY29uc29sZS5sb2coJyAgR2VuZXJhdGVzIGNvbnN0cnVjdHMgZm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBwcm9kdWN0cyBpbiBUeXBlU2NyaXB0OicpO1xuICBjb25zb2xlLmxvZygnICAgIGNkay1pbXBvcnQgc2MgLWwgdHlwZXNjcmlwdCcpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnICBHZW5lcmF0ZXMgY29uc3RydWN0IGluIEdvIGZvciBhIHNwZWNpZmljIHByb2R1Y3QgdmVyc2lvbjonKTtcbiAgY29uc29sZS5sb2coJyAgICBjZGstaW1wb3J0IHNjIC1sIGdvbGFuZyAtLWdvLW1vZHVsZSBcImdpdGh1Yi5jb20vYWNjb3VudC9yZXBvXCIgLXByIHByb2QtYWJjMTIzIC1wYSBwYS1hYmMxMjMgLWxwIGxwLWFiYzEyMycpO1xuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZygnICBHZW5lcmF0ZXMgY29uc3RydWN0cyBpbiBQeXRob24gdW5kZXIgdGhlIFwic3JjXCIgc3ViZm9sZGVyIGluc3RlYWQgb2Ygd29ya2luZyBkaXJlY3Rvcnk6Jyk7XG4gIGNvbnNvbGUubG9nKCcgICAgY2RrLWltcG9ydCBzYyAtbCBweXRob24gLW8gLi9zcmMnKTtcbiAgY29uc29sZS5sb2coKTtcbiAgY29uc29sZS5sb2coKTtcbn1cblxudm9pZCAoYXN5bmMgKCkgPT4ge1xuICBpZiAoYXJncy5oZWxwICYmIHN1YkNvbW1hbmQgPT09ICdjZm4nKSB7XG4gICAgc2hvd0NmbkhlbHAoKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cbiAgaWYgKGFyZ3MuaGVscCAmJiBzdWJDb21tYW5kID09PSAnc2MnKSB7XG4gICAgc2hvd1NDSGVscCgpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuICBpZiAoYXJncy5oZWxwIHx8ICFzdWJDb21tYW5kKSB7XG4gICAgc2hvd0hlbHAoKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cblxuICBpZiAoIWFyZ3MubGFuZ3VhZ2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgcmVxdWlyZWQgb3B0aW9uOiAtLWxhbmd1YWdlLiBTdXBwb3J0ZWQgbGFuZ3VhZ2VzOiAke1NVUFBPUlRFRF9MQU5HVUFHRVMuam9pbignLCAnKX1gKTtcbiAgfVxuXG4gIGlmIChTVVBQT1JURURfTEFOR1VBR0VTLmluZGV4T2YoYXJncy5sYW5ndWFnZSkgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBsYW5ndWFnZSAke2FyZ3MubGFuZ3VhZ2V9LiBTdXBwb3J0ZWQ6ICR7U1VQUE9SVEVEX0xBTkdVQUdFUy5qb2luKCcsICcpfWApO1xuICB9XG5cbiAgaWYgKHN1YkNvbW1hbmQgPT0gJ2NmbicpIHtcbiAgICBpZiAoYXJncy5fLmxlbmd0aCAhPT0gMSkge1xuICAgICAgc2hvd0NmbkhlbHAoKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgW3Jlc291cmNlTmFtZSwgcmVzb3VyY2VWZXJzaW9uXSA9IGFyZ3MuX1swXS5zcGxpdCgnQCcpO1xuICAgICAgY29uc3Qgd29ya2RpciA9IGF3YWl0IGZzLm1rZHRlbXAocGF0aC5qb2luKG9zLnRtcGRpcigpLCAnY2RrLWltcG9ydCcpKTtcblxuICAgICAgbGV0IHR5cGVJbmZvOiBUeXBlSW5mbztcbiAgICAgIGlmIChhcmdzWydzY2hlbWEtZmlsZSddKSB7XG4gICAgICAgIHR5cGVJbmZvID0ge1xuICAgICAgICAgIFR5cGVOYW1lOiByZXNvdXJjZU5hbWUsXG4gICAgICAgICAgU2NoZW1hOiBhd2FpdCBmcy5yZWFkRmlsZShhcmdzWydzY2hlbWEtZmlsZSddLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHlwZUluZm8gPSBhd2FpdCByZWFkUmVzb3VyY2VEZWZpbml0aW9uRnJvbVJlZ2lzdHJ5KHJlc291cmNlTmFtZSwgcmVzb3VyY2VWZXJzaW9uLCB7XG4gICAgICAgICAgcHJpdmF0ZTogYXJncy5wcml2YXRlLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdHlwZU5hbWUgPSBpbXBvcnRSZXNvdXJjZVR5cGUodHlwZUluZm8sIHtcbiAgICAgICAgb3V0ZGlyOiB3b3JrZGlyLFxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHJlbmRlckNvZGUoe1xuICAgICAgICBzcmNkaXI6IHdvcmtkaXIsXG4gICAgICAgIGxhbmd1YWdlOiBhcmdzLmxhbmd1YWdlLFxuICAgICAgICBvdXRkaXI6IGFyZ3Mub3V0ZGlyID8/ICcuJyxcbiAgICAgICAgdHlwZU5hbWU6IHR5cGVOYW1lLFxuICAgICAgICBnb01vZHVsZTogYXJnc1snZ28tbW9kdWxlJ10sXG4gICAgICAgIGphdmFQYWNrYWdlOiBhcmdzWydqYXZhLXBhY2thZ2UnXSxcbiAgICAgICAgY3NoYXJwTmFtZXNwYWNlOiBhcmdzWydjc2hhcnAtbmFtZXNwYWNlJ10gPz8gdHlwZU5hbWUsIC8vIGFscmVhZHkgQVdTOjpGb286OkJhclxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1YkNvbW1hbmQgPT0gJ3NjJykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB3b3JrZGlyID0gYXdhaXQgZnMubWtkdGVtcChwYXRoLmpvaW4ob3MudG1wZGlyKCksICdjZGstaW1wb3J0JykpO1xuICAgICAgY29uc3QgcHBBcmdzID0gW2FyZ3NbJ3Byb2R1Y3QtaWQnXSwgYXJnc1sncHJvdmlzaW9uaW5nLWFydGlmYWN0LWlkJ10sIGFyZ3NbJ3BhdGgtaWQnXV0uZmlsdGVyKHBhcmFtID0+IHBhcmFtICE9IHVuZGVmaW5lZCk7XG5cbiAgICAgIGlmIChhcmdzLmhlbHAgfHwgKHBwQXJncy5sZW5ndGggPiAwICYmIHBwQXJncy5sZW5ndGggIT0gMykpIHtcbiAgICAgICAgc2hvd1NDSGVscCgpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICB9XG5cbiAgICAgIGxldCBwcm9kdWN0czogc3RyaW5nW10gPSBbXTtcbiAgICAgIGlmIChwcEFyZ3MubGVuZ3RoID09IDMpIHtcbiAgICAgICAgcHJvZHVjdHMucHVzaChcbiAgICAgICAgICBhd2FpdCBpbXBvcnRQcm9kdWN0KHtcbiAgICAgICAgICAgIG91dGRpcjogd29ya2RpcixcbiAgICAgICAgICAgIHByb2R1Y3RJZDogYXJnc1sncHJvZHVjdC1pZCddLFxuICAgICAgICAgICAgbGF1bmNoUGF0aElkOiBhcmdzWydwYXRoLWlkJ10sXG4gICAgICAgICAgICBwcm92aXNpb25pbmdBcnRpZmFjdElkOiBhcmdzWydwcm92aXNpb25pbmctYXJ0aWZhY3QtaWQnXSxcbiAgICAgICAgICB9KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9kdWN0cy5wdXNoKFxuICAgICAgICAgIC4uLmF3YWl0IGltcG9ydFByb2R1Y3RzKHtcbiAgICAgICAgICAgIG91dGRpcjogd29ya2RpcixcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvZHVjdHMubWFwKGFzeW5jIChwcm9kdWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHByb2R1Y3REaXIgPSBwYXRoLmpvaW4od29ya2RpciwgY2FzZXV0aWwuaGVhZGVyKHByb2R1Y3QpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICBhd2FpdCByZW5kZXJDb2RlKHtcbiAgICAgICAgICBzcmNkaXI6IHByb2R1Y3REaXIsXG4gICAgICAgICAgbGFuZ3VhZ2U6IGFyZ3MubGFuZ3VhZ2UgPz8gJ3R5cGVzY3JpcHQnLFxuICAgICAgICAgIG91dGRpcjogYXJncy5vdXRkaXIgPz8gJy4vc2MtcHJvZHVjdHMnLFxuICAgICAgICAgIHR5cGVOYW1lOiBwcm9kdWN0LFxuICAgICAgICAgIGdvTW9kdWxlOiBhcmdzWydnby1tb2R1bGUnXSxcbiAgICAgICAgICBqYXZhUGFja2FnZTogYXJnc1snamF2YS1wYWNrYWdlJ10sXG4gICAgICAgICAgY3NoYXJwTmFtZXNwYWNlOiBhcmdzWydjc2hhcnAtbmFtZXNwYWNlJ10gPz8gcHJvZHVjdCxcbiAgICAgICAgfSk7XG4gICAgICB9KSk7XG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICB9XG59KSgpO1xuIl19
package/lib/index.js CHANGED
@@ -51,9 +51,8 @@ exports.readResourceDefinitionFromRegistry = readResourceDefinitionFromRegistry;
51
51
  * @returns name of the resource type
52
52
  */
53
53
  function importResourceType(typeInfo, options) {
54
- var _a;
55
54
  const gen = new cfn_resource_generator_1.CfnResourceGenerator(typeInfo.TypeName, typeInfo, JSON.parse(typeInfo.Schema));
56
- const outdir = (_a = options.outdir) !== null && _a !== void 0 ? _a : '.';
55
+ const outdir = options.outdir ?? '.';
57
56
  fs.mkdirSync(outdir, { recursive: true });
58
57
  fs.writeFileSync(path.join(outdir, 'index.ts'), gen.render());
59
58
  return typeInfo.TypeName;
@@ -66,8 +65,7 @@ exports.importResourceType = importResourceType;
66
65
  * @returns name of the product version
67
66
  */
68
67
  async function importProduct(options) {
69
- var _a;
70
- const outdir = (_a = options.outdir) !== null && _a !== void 0 ? _a : '.';
68
+ const outdir = options.outdir ?? '.';
71
69
  const product = await (0, service_catalog_1.describeProductAggregate)(options);
72
70
  const gen = new sc_construct_generator_1.ServiceCatalogProvisioningConstructGenerator(product);
73
71
  fs.mkdirSync(outdir, { recursive: true });
@@ -83,8 +81,7 @@ exports.importProduct = importProduct;
83
81
  * @returns names of the product versions
84
82
  */
85
83
  async function importProducts(options) {
86
- var _a;
87
- const outdir = (_a = options.outdir) !== null && _a !== void 0 ? _a : '.';
84
+ const outdir = options.outdir ?? '.';
88
85
  let productVersions = [];
89
86
  const availableProducts = await (0, service_catalog_1.fetchAvailableProducts)();
90
87
  await Promise.all(availableProducts.map(async (product) => {
@@ -104,4 +101,4 @@ async function importProducts(options) {
104
101
  }
105
102
  exports.importProducts = importProducts;
106
103
  ;
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLCtDQUFpQztBQUNqQyxpREFBbUY7QUFDbkYscUVBQWdFO0FBQ2hFLHFFQUF3RjtBQUN4Rix1REFBc0g7QUFVdEg7O0dBRUc7QUFDSSxLQUFLLFVBQVUsa0NBQWtDLENBQ3RELFlBQW9CLEVBQ3BCLGdCQUF3QixFQUN4QixPQUFxQztJQUNyQyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsbUNBQW9CLEVBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRS9ELE9BQU87UUFDTCxRQUFRLEVBQUUsWUFBWTtRQUN0QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07UUFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO0tBQzFCLENBQUM7QUFDSixDQUFDO0FBWEQsZ0ZBV0M7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxRQUFrQixFQUFFLE9BQWtDOztJQUN2RixNQUFNLEdBQUcsR0FBRyxJQUFJLDZDQUFvQixDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFFL0YsTUFBTSxNQUFNLEdBQUcsTUFBQSxPQUFPLENBQUMsTUFBTSxtQ0FBSSxHQUFHLENBQUM7SUFDckMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxQyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRTlELE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQztBQUMzQixDQUFDO0FBUkQsZ0RBUUM7QUFBQSxDQUFDO0FBYUY7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxhQUFhLENBQUMsT0FBNkI7O0lBQy9ELE1BQU0sTUFBTSxHQUFHLE1BQUEsT0FBTyxDQUFDLE1BQU0sbUNBQUksR0FBRyxDQUFDO0lBRXJDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSwwQ0FBd0IsRUFBQyxPQUFPLENBQUMsQ0FBQztJQUV4RCxNQUFNLEdBQUcsR0FBRyxJQUFJLHFFQUE0QyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQVEsRUFBRSxVQUFVLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUVoRSxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDbEIsQ0FBQztBQVhELHNDQVdDO0FBQUEsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsY0FBYyxDQUFDLE9BQTZCOztJQUNoRSxNQUFNLE1BQU0sR0FBRyxNQUFBLE9BQU8sQ0FBQyxNQUFNLG1DQUFJLEdBQUcsQ0FBQztJQUNyQyxJQUFJLGVBQWUsR0FBYSxFQUFFLENBQUM7SUFFbkMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUEsd0NBQXNCLEdBQUUsQ0FBQztJQUV6RCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN4RCxJQUFJO1lBQ0YsTUFBTSxjQUFjLEdBQUcsTUFBTSxhQUFhLENBQUM7Z0JBQ3pDLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBVTthQUM5QixDQUFDLENBQUM7WUFDSCxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3RDO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUksQ0FBVyxDQUFDLE9BQU8sd0JBQXdCLE9BQU8sQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDO1lBQ25GLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0ZBQWdGLENBQUMsQ0FBQztTQUMvRjtJQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFSixPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDO0FBcEJELHdDQW9CQztBQUFBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2FzZXV0aWwgZnJvbSAnY2FzZSc7XG5pbXBvcnQgeyBkZXNjcmliZVJlc291cmNlVHlwZSwgRGVzY3JpYmVSZXNvdXJjZVR5cGVPcHRpb25zIH0gZnJvbSAnLi9jZm4tcmVnaXN0cnknO1xuaW1wb3J0IHsgQ2ZuUmVzb3VyY2VHZW5lcmF0b3IgfSBmcm9tICcuL2Nmbi1yZXNvdXJjZS1nZW5lcmF0b3InO1xuaW1wb3J0IHsgU2VydmljZUNhdGFsb2dQcm92aXNpb25pbmdDb25zdHJ1Y3RHZW5lcmF0b3IgfSBmcm9tICcuL3NjLWNvbnN0cnVjdC1nZW5lcmF0b3InO1xuaW1wb3J0IHsgZGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlLCBEZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGVPcHRpb25zLCBmZXRjaEF2YWlsYWJsZVByb2R1Y3RzIH0gZnJvbSAnLi9zZXJ2aWNlLWNhdGFsb2cnO1xuaW1wb3J0IHsgVHlwZUluZm8gfSBmcm9tICcuL3R5cGUtaW5mbyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0UmVzb3VyY2VUeXBlT3B0aW9ucyBleHRlbmRzIERlc2NyaWJlUmVzb3VyY2VUeXBlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBAZGVmYXVsdCBcIi5cIlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0ZGlyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIExvYWQgdGhlIHJlc291cmNlIGRlZmluaXRpb24gZnJvbSB0aGUgQ0ZOIHJlZ2lzdHJ5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUmVzb3VyY2VEZWZpbml0aW9uRnJvbVJlZ2lzdHJ5KFxuICByZXNvdXJjZU5hbWU6IHN0cmluZyxcbiAgX3Jlc291cmNlVmVyc2lvbjogc3RyaW5nLFxuICBvcHRpb25zPzogRGVzY3JpYmVSZXNvdXJjZVR5cGVPcHRpb25zKTogUHJvbWlzZTxUeXBlSW5mbz4ge1xuICBjb25zdCB0eXBlID0gYXdhaXQgZGVzY3JpYmVSZXNvdXJjZVR5cGUocmVzb3VyY2VOYW1lLCBvcHRpb25zKTtcblxuICByZXR1cm4ge1xuICAgIFR5cGVOYW1lOiByZXNvdXJjZU5hbWUsXG4gICAgU2NoZW1hOiB0eXBlLlNjaGVtYSxcbiAgICBTb3VyY2VVcmw6IHR5cGUuU291cmNlVXJsLFxuICB9O1xufVxuXG4vKipcbiAqIEVudHJ5IHBvaW50IHRvIGltcG9ydCBDRk4gcmVzb3VyY2UgdHlwZXNcbiAqXG4gKiBAcGFyYW0gdHlwZUluZm8gdGhlIHNjaGVtYSBhbmQgbWV0YWRhdGEgaW5mb3JtYXRpb24gZm9yIHRoZSB0eXBlXG4gKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zIGZvciBjb2RlIGdlbmVyYXRpb25cbiAqIEByZXR1cm5zIG5hbWUgb2YgdGhlIHJlc291cmNlIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGltcG9ydFJlc291cmNlVHlwZSh0eXBlSW5mbzogVHlwZUluZm8sIG9wdGlvbnM6IEltcG9ydFJlc291cmNlVHlwZU9wdGlvbnMpOiBzdHJpbmcge1xuICBjb25zdCBnZW4gPSBuZXcgQ2ZuUmVzb3VyY2VHZW5lcmF0b3IodHlwZUluZm8uVHlwZU5hbWUsIHR5cGVJbmZvLCBKU09OLnBhcnNlKHR5cGVJbmZvLlNjaGVtYSkpO1xuXG4gIGNvbnN0IG91dGRpciA9IG9wdGlvbnMub3V0ZGlyID8/ICcuJztcbiAgZnMubWtkaXJTeW5jKG91dGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKG91dGRpciwgJ2luZGV4LnRzJyksIGdlbi5yZW5kZXIoKSk7XG5cbiAgcmV0dXJuIHR5cGVJbmZvLlR5cGVOYW1lO1xufTtcblxuLyoqXG4gKiBDb25maWd1cmUgb3B0aW9ucyBmb3IgaW1wb3J0aW5nIHByb2R1Y3RzIGludG8geW91ciBsb2NhbCB3b3Jrc3BhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRQcm9kdWN0T3B0aW9ucyBleHRlbmRzIERlc2NyaWJlUHJvZHVjdEFnZ3JlZ2F0ZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGZvbGRlciBpbiB3aGljaCBwcm9kdWN0IGNvbnN0cnVjdHMgKGFzIHNlcGFyYXRlIGNsYXNzIGZpbGVzKSB3aWxsIGJlIG91dHB1dCB0by5cbiAgICogQGRlZmF1bHQgXCIuL3NjLXByb2R1Y3RzXCJcbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFbnRyeSBwb2ludCB0byBpbXBvcnQgU2VydmljZSBDYXRhbG9nIHByb2R1Y3QgcmVzb3VyY2UuXG4gKlxuICogQHJldHVybnMgbmFtZSBvZiB0aGUgcHJvZHVjdCB2ZXJzaW9uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbXBvcnRQcm9kdWN0KG9wdGlvbnM6IEltcG9ydFByb2R1Y3RPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgb3V0ZGlyID0gb3B0aW9ucy5vdXRkaXIgPz8gJy4nO1xuXG4gIGNvbnN0IHByb2R1Y3QgPSBhd2FpdCBkZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGUob3B0aW9ucyk7XG5cbiAgY29uc3QgZ2VuID0gbmV3IFNlcnZpY2VDYXRhbG9nUHJvdmlzaW9uaW5nQ29uc3RydWN0R2VuZXJhdG9yKHByb2R1Y3QpO1xuICBmcy5ta2RpclN5bmMob3V0ZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgY29uc3QgcHJvZERpciA9IGZzLm1rZGlyU3luYyhwYXRoLmpvaW4ob3V0ZGlyLCBjYXNldXRpbC5oZWFkZXIoZ2VuLm5hbWUpLnRvTG93ZXJDYXNlKCkpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ocHJvZERpciEsICdpbmRleC50cycpLCBnZW4ucmVuZGVyKCkpO1xuXG4gIHJldHVybiBnZW4ubmFtZTtcbn07XG5cbi8qKlxuICogRW50cnkgcG9pbnQgdG8gaW1wb3J0IGFsbCBhdmFpbGFibGUgU2VydmljZSBDYXRhbG9nIHByb2R1Y3QgcmVzb3VyY2VzIHdpdGggYERFRkFVTFRgIHBhcmFtZXRlcnMuXG4gKlxuICogQHJldHVybnMgbmFtZXMgb2YgdGhlIHByb2R1Y3QgdmVyc2lvbnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGltcG9ydFByb2R1Y3RzKG9wdGlvbnM6IEltcG9ydFByb2R1Y3RPcHRpb25zKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICBjb25zdCBvdXRkaXIgPSBvcHRpb25zLm91dGRpciA/PyAnLic7XG4gIGxldCBwcm9kdWN0VmVyc2lvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3QgYXZhaWxhYmxlUHJvZHVjdHMgPSBhd2FpdCBmZXRjaEF2YWlsYWJsZVByb2R1Y3RzKCk7XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoYXZhaWxhYmxlUHJvZHVjdHMubWFwKGFzeW5jIChwcm9kdWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByb2R1Y3RWZXJzaW9uID0gYXdhaXQgaW1wb3J0UHJvZHVjdCh7XG4gICAgICAgIG91dGRpcjogb3V0ZGlyLFxuICAgICAgICBwcm9kdWN0SWQ6IHByb2R1Y3QuUHJvZHVjdElkISxcbiAgICAgIH0pO1xuICAgICAgcHJvZHVjdFZlcnNpb25zLnB1c2gocHJvZHVjdFZlcnNpb24pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKGAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfSBTa2lwcGluZyBpbXBvcnQgZm9yICR7cHJvZHVjdC5Qcm9kdWN0SWR9Li4uYCk7XG4gICAgICBjb25zb2xlLmxvZygndHJ5IGltcG9ydGluZyBkaXJlY3RseSB2aWEgLS1wcm9kdWN0LWlkLCAtLXByb3Zpc2lvbmluZy1hcnRpZmFjdC1pZCwgLS1wYXRoLWlkJyk7XG4gICAgfVxuICB9KSk7XG5cbiAgcmV0dXJuIHByb2R1Y3RWZXJzaW9ucztcbn07XG4iXX0=
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLCtDQUFpQztBQUNqQyxpREFBbUY7QUFDbkYscUVBQWdFO0FBQ2hFLHFFQUF3RjtBQUN4Rix1REFBc0g7QUFVdEg7O0dBRUc7QUFDSSxLQUFLLFVBQVUsa0NBQWtDLENBQ3RELFlBQW9CLEVBQ3BCLGdCQUF3QixFQUN4QixPQUFxQztJQUNyQyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsbUNBQW9CLEVBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRS9ELE9BQU87UUFDTCxRQUFRLEVBQUUsWUFBWTtRQUN0QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07UUFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO0tBQzFCLENBQUM7QUFDSixDQUFDO0FBWEQsZ0ZBV0M7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxRQUFrQixFQUFFLE9BQWtDO0lBQ3ZGLE1BQU0sR0FBRyxHQUFHLElBQUksNkNBQW9CLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUUvRixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQztJQUNyQyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFFOUQsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDO0FBQzNCLENBQUM7QUFSRCxnREFRQztBQUFBLENBQUM7QUFhRjs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLGFBQWEsQ0FBQyxPQUE2QjtJQUMvRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQztJQUVyQyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUEsMENBQXdCLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFFeEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxxRUFBNEMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RSxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlHLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFRLEVBQUUsVUFBVSxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFFaEUsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDO0FBQ2xCLENBQUM7QUFYRCxzQ0FXQztBQUFBLENBQUM7QUFFRjs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLGNBQWMsQ0FBQyxPQUE2QjtJQUNoRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQztJQUNyQyxJQUFJLGVBQWUsR0FBYSxFQUFFLENBQUM7SUFFbkMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUEsd0NBQXNCLEdBQUUsQ0FBQztJQUV6RCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN4RCxJQUFJO1lBQ0YsTUFBTSxjQUFjLEdBQUcsTUFBTSxhQUFhLENBQUM7Z0JBQ3pDLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBVTthQUM5QixDQUFDLENBQUM7WUFDSCxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3RDO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUksQ0FBVyxDQUFDLE9BQU8sd0JBQXdCLE9BQU8sQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDO1lBQ25GLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0ZBQWdGLENBQUMsQ0FBQztTQUMvRjtJQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFSixPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDO0FBcEJELHdDQW9CQztBQUFBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2FzZXV0aWwgZnJvbSAnY2FzZSc7XG5pbXBvcnQgeyBkZXNjcmliZVJlc291cmNlVHlwZSwgRGVzY3JpYmVSZXNvdXJjZVR5cGVPcHRpb25zIH0gZnJvbSAnLi9jZm4tcmVnaXN0cnknO1xuaW1wb3J0IHsgQ2ZuUmVzb3VyY2VHZW5lcmF0b3IgfSBmcm9tICcuL2Nmbi1yZXNvdXJjZS1nZW5lcmF0b3InO1xuaW1wb3J0IHsgU2VydmljZUNhdGFsb2dQcm92aXNpb25pbmdDb25zdHJ1Y3RHZW5lcmF0b3IgfSBmcm9tICcuL3NjLWNvbnN0cnVjdC1nZW5lcmF0b3InO1xuaW1wb3J0IHsgZGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlLCBEZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGVPcHRpb25zLCBmZXRjaEF2YWlsYWJsZVByb2R1Y3RzIH0gZnJvbSAnLi9zZXJ2aWNlLWNhdGFsb2cnO1xuaW1wb3J0IHsgVHlwZUluZm8gfSBmcm9tICcuL3R5cGUtaW5mbyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0UmVzb3VyY2VUeXBlT3B0aW9ucyBleHRlbmRzIERlc2NyaWJlUmVzb3VyY2VUeXBlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBAZGVmYXVsdCBcIi5cIlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0ZGlyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIExvYWQgdGhlIHJlc291cmNlIGRlZmluaXRpb24gZnJvbSB0aGUgQ0ZOIHJlZ2lzdHJ5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUmVzb3VyY2VEZWZpbml0aW9uRnJvbVJlZ2lzdHJ5KFxuICByZXNvdXJjZU5hbWU6IHN0cmluZyxcbiAgX3Jlc291cmNlVmVyc2lvbjogc3RyaW5nLFxuICBvcHRpb25zPzogRGVzY3JpYmVSZXNvdXJjZVR5cGVPcHRpb25zKTogUHJvbWlzZTxUeXBlSW5mbz4ge1xuICBjb25zdCB0eXBlID0gYXdhaXQgZGVzY3JpYmVSZXNvdXJjZVR5cGUocmVzb3VyY2VOYW1lLCBvcHRpb25zKTtcblxuICByZXR1cm4ge1xuICAgIFR5cGVOYW1lOiByZXNvdXJjZU5hbWUsXG4gICAgU2NoZW1hOiB0eXBlLlNjaGVtYSxcbiAgICBTb3VyY2VVcmw6IHR5cGUuU291cmNlVXJsLFxuICB9O1xufVxuXG4vKipcbiAqIEVudHJ5IHBvaW50IHRvIGltcG9ydCBDRk4gcmVzb3VyY2UgdHlwZXNcbiAqXG4gKiBAcGFyYW0gdHlwZUluZm8gdGhlIHNjaGVtYSBhbmQgbWV0YWRhdGEgaW5mb3JtYXRpb24gZm9yIHRoZSB0eXBlXG4gKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zIGZvciBjb2RlIGdlbmVyYXRpb25cbiAqIEByZXR1cm5zIG5hbWUgb2YgdGhlIHJlc291cmNlIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGltcG9ydFJlc291cmNlVHlwZSh0eXBlSW5mbzogVHlwZUluZm8sIG9wdGlvbnM6IEltcG9ydFJlc291cmNlVHlwZU9wdGlvbnMpOiBzdHJpbmcge1xuICBjb25zdCBnZW4gPSBuZXcgQ2ZuUmVzb3VyY2VHZW5lcmF0b3IodHlwZUluZm8uVHlwZU5hbWUsIHR5cGVJbmZvLCBKU09OLnBhcnNlKHR5cGVJbmZvLlNjaGVtYSkpO1xuXG4gIGNvbnN0IG91dGRpciA9IG9wdGlvbnMub3V0ZGlyID8/ICcuJztcbiAgZnMubWtkaXJTeW5jKG91dGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKG91dGRpciwgJ2luZGV4LnRzJyksIGdlbi5yZW5kZXIoKSk7XG5cbiAgcmV0dXJuIHR5cGVJbmZvLlR5cGVOYW1lO1xufTtcblxuLyoqXG4gKiBDb25maWd1cmUgb3B0aW9ucyBmb3IgaW1wb3J0aW5nIHByb2R1Y3RzIGludG8geW91ciBsb2NhbCB3b3Jrc3BhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRQcm9kdWN0T3B0aW9ucyBleHRlbmRzIERlc2NyaWJlUHJvZHVjdEFnZ3JlZ2F0ZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGZvbGRlciBpbiB3aGljaCBwcm9kdWN0IGNvbnN0cnVjdHMgKGFzIHNlcGFyYXRlIGNsYXNzIGZpbGVzKSB3aWxsIGJlIG91dHB1dCB0by5cbiAgICogQGRlZmF1bHQgXCIuL3NjLXByb2R1Y3RzXCJcbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFbnRyeSBwb2ludCB0byBpbXBvcnQgU2VydmljZSBDYXRhbG9nIHByb2R1Y3QgcmVzb3VyY2UuXG4gKlxuICogQHJldHVybnMgbmFtZSBvZiB0aGUgcHJvZHVjdCB2ZXJzaW9uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbXBvcnRQcm9kdWN0KG9wdGlvbnM6IEltcG9ydFByb2R1Y3RPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgb3V0ZGlyID0gb3B0aW9ucy5vdXRkaXIgPz8gJy4nO1xuXG4gIGNvbnN0IHByb2R1Y3QgPSBhd2FpdCBkZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGUob3B0aW9ucyk7XG5cbiAgY29uc3QgZ2VuID0gbmV3IFNlcnZpY2VDYXRhbG9nUHJvdmlzaW9uaW5nQ29uc3RydWN0R2VuZXJhdG9yKHByb2R1Y3QpO1xuICBmcy5ta2RpclN5bmMob3V0ZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgY29uc3QgcHJvZERpciA9IGZzLm1rZGlyU3luYyhwYXRoLmpvaW4ob3V0ZGlyLCBjYXNldXRpbC5oZWFkZXIoZ2VuLm5hbWUpLnRvTG93ZXJDYXNlKCkpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ocHJvZERpciEsICdpbmRleC50cycpLCBnZW4ucmVuZGVyKCkpO1xuXG4gIHJldHVybiBnZW4ubmFtZTtcbn07XG5cbi8qKlxuICogRW50cnkgcG9pbnQgdG8gaW1wb3J0IGFsbCBhdmFpbGFibGUgU2VydmljZSBDYXRhbG9nIHByb2R1Y3QgcmVzb3VyY2VzIHdpdGggYERFRkFVTFRgIHBhcmFtZXRlcnMuXG4gKlxuICogQHJldHVybnMgbmFtZXMgb2YgdGhlIHByb2R1Y3QgdmVyc2lvbnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGltcG9ydFByb2R1Y3RzKG9wdGlvbnM6IEltcG9ydFByb2R1Y3RPcHRpb25zKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICBjb25zdCBvdXRkaXIgPSBvcHRpb25zLm91dGRpciA/PyAnLic7XG4gIGxldCBwcm9kdWN0VmVyc2lvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3QgYXZhaWxhYmxlUHJvZHVjdHMgPSBhd2FpdCBmZXRjaEF2YWlsYWJsZVByb2R1Y3RzKCk7XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoYXZhaWxhYmxlUHJvZHVjdHMubWFwKGFzeW5jIChwcm9kdWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByb2R1Y3RWZXJzaW9uID0gYXdhaXQgaW1wb3J0UHJvZHVjdCh7XG4gICAgICAgIG91dGRpcjogb3V0ZGlyLFxuICAgICAgICBwcm9kdWN0SWQ6IHByb2R1Y3QuUHJvZHVjdElkISxcbiAgICAgIH0pO1xuICAgICAgcHJvZHVjdFZlcnNpb25zLnB1c2gocHJvZHVjdFZlcnNpb24pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKGAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfSBTa2lwcGluZyBpbXBvcnQgZm9yICR7cHJvZHVjdC5Qcm9kdWN0SWR9Li4uYCk7XG4gICAgICBjb25zb2xlLmxvZygndHJ5IGltcG9ydGluZyBkaXJlY3RseSB2aWEgLS1wcm9kdWN0LWlkLCAtLXByb3Zpc2lvbmluZy1hcnRpZmFjdC1pZCwgLS1wYXRoLWlkJyk7XG4gICAgfVxuICB9KSk7XG5cbiAgcmV0dXJuIHByb2R1Y3RWZXJzaW9ucztcbn07XG4iXX0=
@@ -102,9 +102,8 @@ class ServiceCatalogProvisioningConstructGenerator {
102
102
  code.line(' }),');
103
103
  }
104
104
  emitParameterMap(code) {
105
- var _a;
106
105
  code.openBlock('enum ParameterKeys');
107
- (_a = this.parameters) === null || _a === void 0 ? void 0 : _a.forEach(p => {
106
+ this.parameters?.forEach(p => {
108
107
  code.line(`${(0, case_1.camel)(p.ParameterKey)} = '${p.ParameterKey}',`);
109
108
  });
110
109
  code.closeBlock();
@@ -123,7 +122,6 @@ class ServiceCatalogProvisioningConstructGenerator {
123
122
  emitDefinitionTypes(code) {
124
123
  code.openBlock(`export interface ${this.constructClassName}Props`);
125
124
  this.parameters.forEach(pa => {
126
- var _a, _b, _c, _d, _e, _f;
127
125
  let optional = '';
128
126
  code.line('/**');
129
127
  code.line(` * ${(0, case_1.pascal)(pa.ParameterKey)}`);
@@ -131,16 +129,16 @@ class ServiceCatalogProvisioningConstructGenerator {
131
129
  code.line(' *');
132
130
  code.line(` * ${pa.Description}`);
133
131
  }
134
- if ((_a = pa.ParameterConstraints) === null || _a === void 0 ? void 0 : _a.ConstraintDescription) {
132
+ if (pa.ParameterConstraints?.ConstraintDescription) {
135
133
  code.line(' *');
136
- code.line(` * ${(_b = pa.ParameterConstraints) === null || _b === void 0 ? void 0 : _b.ConstraintDescription}`);
134
+ code.line(` * ${pa.ParameterConstraints?.ConstraintDescription}`);
137
135
  }
138
136
  if (pa.DefaultValue) {
139
137
  optional += '?';
140
138
  code.line(' *');
141
139
  code.line(` * @default ${pa.DefaultValue}`);
142
140
  }
143
- if ((_d = (_c = pa.ParameterConstraints) === null || _c === void 0 ? void 0 : _c.AllowedValues) === null || _d === void 0 ? void 0 : _d.length) {
141
+ if (pa.ParameterConstraints?.AllowedValues?.length) {
144
142
  this.enums.push({
145
143
  name: pa.ParameterKey,
146
144
  allowedValues: pa.ParameterConstraints.AllowedValues,
@@ -148,7 +146,7 @@ class ServiceCatalogProvisioningConstructGenerator {
148
146
  }
149
147
  ;
150
148
  code.line(' */');
151
- code.line(`readonly ${(0, case_1.camel)(pa.ParameterKey)}${optional}: ${((_f = (_e = pa.ParameterConstraints) === null || _e === void 0 ? void 0 : _e.AllowedValues) === null || _f === void 0 ? void 0 : _f.length) ? this.constructClassName + '.' + pa.ParameterKey : 'string'};`);
149
+ code.line(`readonly ${(0, case_1.camel)(pa.ParameterKey)}${optional}: ${pa.ParameterConstraints?.AllowedValues?.length ? this.constructClassName + '.' + pa.ParameterKey : 'string'};`);
152
150
  code.line();
153
151
  });
154
152
  code.closeBlock();
@@ -208,7 +206,6 @@ class ServiceCatalogProvisioningConstructGenerator {
208
206
  code.line('}');
209
207
  }
210
208
  emitConstructClass(code) {
211
- var _a;
212
209
  this.emitProductDescription(code);
213
210
  code.openBlock(`export class ${this.constructClassName} extends ${this.constructClassName}Base`);
214
211
  for (const prop of this.resourceAttributes) {
@@ -264,7 +261,7 @@ class ServiceCatalogProvisioningConstructGenerator {
264
261
  code.line('this.provisionedProductId = this.provisionedProduct.ref;');
265
262
  code.line("this.cloudFormationStackArn = cdk.Token.asString(cdk.Fn.getAtt(this.provisionedProduct.logicalId, 'CloudformationStackArn'));");
266
263
  code.line("this.recordId = cdk.Token.asString(cdk.Fn.getAtt(this.provisionedProduct.logicalId, 'RecordId'));");
267
- (_a = this.outputKeys) === null || _a === void 0 ? void 0 : _a.forEach(output => {
264
+ this.outputKeys?.forEach(output => {
268
265
  code.line(`this.${(0, case_1.camel)(output.Key)} = cdk.Token.asString(cdk.Fn.getAtt(this.provisionedProduct.logicalId, 'Outputs.${output.Key}'));`);
269
266
  });
270
267
  code.closeBlock();
@@ -273,4 +270,4 @@ class ServiceCatalogProvisioningConstructGenerator {
273
270
  }
274
271
  }
275
272
  exports.ServiceCatalogProvisioningConstructGenerator = ServiceCatalogProvisioningConstructGenerator;
276
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29uc3RydWN0LWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zYy1jb25zdHJ1Y3QtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsK0JBQStDO0FBQy9DLCtDQUFpQztBQVdqQzs7R0FFRztBQUNILE1BQWEsNENBQTRDO0lBY3ZEOztPQUVHO0lBQ0gsWUFBWSxXQUFpQztRQUMzQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsV0FBVyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFBLGFBQU0sRUFBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLElBQUssQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsT0FBTyxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDbkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBa0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsOEJBQStCLENBQUM7UUFDbkYsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLDhCQUErQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDakcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENB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aXNpb25pbmdBcnRpZmFjdFBhcmFtZXRlcnMgfSBmcm9tICdhd3Mtc2RrL2NsaWVudHMvc2VydmljZWNhdGFsb2cnO1xuaW1wb3J0IHsgcGFzY2FsLCBjYW1lbCwgY29uc3RhbnQgfSBmcm9tICdjYXNlJztcbmltcG9ydCAqIGFzIGoyaiBmcm9tICdqc29uMmpzaWknO1xuaW1wb3J0IHsgUHJvZHVjdERhdGFBZ2dyZWdhdGUgfSBmcm9tICcuL3NlcnZpY2UtY2F0YWxvZyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBlbnVtIGZvciBDbG91ZEZvcm1hdGlvbiBwYXJhbWV0ZXIgaW5wdXRzIHRoYXQgaGF2ZSBwcmVkZWZpbmVkIGFsbG93ZWQgdmFsdWVzLlxuICovXG50eXBlIEVudW1EZWZpbml0aW9uID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGFsbG93ZWRWYWx1ZXM6IHN0cmluZ1tdO1xufTtcblxuLyoqXG4gKiBHZW5lcmF0b3IgdG8gZW1pdCBjbGFzc2VzIGFuZCBpbmZvcm1hdGlvbiBvbiBwcm92aXNpb25pbmcgZGV0YWlscyBmb3IgYSBwcm9kdWN0LlxuICovXG5leHBvcnQgY2xhc3MgU2VydmljZUNhdGFsb2dQcm92aXNpb25pbmdDb25zdHJ1Y3RHZW5lcmF0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3REYXRhQWdncmVnYXRlOiBQcm9kdWN0RGF0YUFnZ3JlZ2F0ZTtcbiAgcHJpdmF0ZSByZWFkb25seSBoYXNQYXJhbWV0ZXJzOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplZFR5cGVOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2VBdHRyaWJ1dGVzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25zdHJ1Y3RDbGFzc05hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBwcm9wc1N0cnVjdE5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBlbnVtczogRW51bURlZmluaXRpb25bXTtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXJhbWV0ZXJzOiBQcm92aXNpb25pbmdBcnRpZmFjdFBhcmFtZXRlcnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEF0dHJpYnV0ZXM6IFNldDxzdHJpbmc+O1xuICBwcml2YXRlIHJlYWRvbmx5IG91dHB1dEtleXM6IFByb3Zpc2lvbmluZ0FydGlmYWN0T3V0cHV0cztcbiAgcHJpdmF0ZSByZWFkb25seSBvdXRwdXREZXNjcmlwdGlvbnM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWR9O1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gcHJvZHVjdERhdGEgdGhlIGFnZ3JlZ2F0ZSBkZXRhaWxzIG9uIGEgcHJvZHVjdCB3aXRoIGluZm9ybWF0aW9uIG9uIGlucHV0cyBhbmQgb3V0cHV0cyBvZiB0aGUgdGVtcGxhdGUuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9kdWN0RGF0YTogUHJvZHVjdERhdGFBZ2dyZWdhdGUpIHtcbiAgICB0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlID0gcHJvZHVjdERhdGE7XG4gICAgdGhpcy5zYW5pdGl6ZWRUeXBlTmFtZSA9IHBhc2NhbCh0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLnByb2R1Y3QuTmFtZSEpO1xuICAgIHRoaXMuY29uc3RydWN0Q2xhc3NOYW1lID0gajJqLlR5cGVHZW5lcmF0b3Iubm9ybWFsaXplVHlwZU5hbWUodGhpcy5zYW5pdGl6ZWRUeXBlTmFtZSk7XG4gICAgdGhpcy5wcm9wc1N0cnVjdE5hbWUgPSBqMmouVHlwZUdlbmVyYXRvci5ub3JtYWxpemVUeXBlTmFtZShgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX1Qcm9wc2ApO1xuICAgIHRoaXMubmFtZSA9IHRoaXMuc2FuaXRpemVkVHlwZU5hbWU7XG4gICAgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIHRoaXMuZW51bXMgPSBuZXcgQXJyYXk8RW51bURlZmluaXRpb24+KCk7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gdGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5wYXJhbXMuUHJvdmlzaW9uaW5nQXJ0aWZhY3RQYXJhbWV0ZXJzITtcbiAgICB0aGlzLmhhc1BhcmFtZXRlcnMgPSB0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLnBhcmFtcy5Qcm92aXNpb25pbmdBcnRpZmFjdFBhcmFtZXRlcnMhLmxlbmd0aCA+IDA7XG4gICAgdGhpcy5vdXRwdXRLZXlzID0gdGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5wYXJhbXMuUHJvdmlzaW9uaW5nQXJ0aWZhY3RPdXRwdXRLZXlzITtcbiAgICB0aGlzLm91dHB1dERlc2NyaXB0aW9ucyA9IHRoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucGFyYW1zLlByb3Zpc2lvbmluZ0FydGlmYWN0T3V0cHV0S2V5cyEucmVkdWNlKChvYmosIGtleSkgPT4ge1xuICAgICAgb2JqW2NhbWVsKGtleS5LZXkhKV0gPSBrZXkuRGVzY3JpcHRpb247XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sIHt9IGFzIHtba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWR9KTtcblxuICAgIHRoaXMuZGVmYXVsdEF0dHJpYnV0ZXMgPSBuZXcgU2V0PHN0cmluZz4oWydwcm92aXNpb25lZFByb2R1Y3RJZCcsICdjbG91ZEZvcm1hdGlvblN0YWNrQXJuJywgJ3JlY29yZElkJ10pO1xuXG4gICAgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMucHVzaChcbiAgICAgIC4uLnRoaXMuZGVmYXVsdEF0dHJpYnV0ZXMsXG4gICAgICAuLi50aGlzLm91dHB1dEtleXMubWFwKGtleSA9PiBjYW1lbChrZXkuS2V5ISkpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoZSB0eXBlIGludG8gYSBUeXBlU2NyaXB0IGNsYXNzIGZpbGUgZGVmaW5pbmcgdGhlIHByb3BzIGFuZCB0aGUgd3JhcHBlZCBMMSBjb25zdHJ1Y3QgQVdTOjpTZXJ2aWNlQ2F0YWxvZzo6Q2xvdWRGb3JtYXRpb25Qcm92aXNpb25lZFByb2R1Y3QuXG4gICAqXG4gICAqIEByZXR1cm5zIHRoZSByZW5kZXJlZCBjbGFzcyBmaWxlIGNvbnRlbnRcbiAgICovXG4gIHB1YmxpYyByZW5kZXIoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2RlID0gbmV3IGoyai5Db2RlKCk7XG4gICAgdGhpcy5lbWl0SW1wb3J0cyhjb2RlKTtcbiAgICB0aGlzLmVtaXRJbnRlcmZhY2UoY29kZSk7XG4gICAgdGhpcy5lbWl0QmFzZShjb2RlKTtcbiAgICBpZiAodGhpcy5oYXNQYXJhbWV0ZXJzKSB7XG4gICAgICB0aGlzLmVtaXRQYXJhbWV0ZXJNYXAoY29kZSk7XG4gICAgICB0aGlzLmVtaXREZWZpbml0aW9uVHlwZXMoY29kZSk7XG4gICAgfVxuICAgIHRoaXMuZW1pdENvbnN0cnVjdENsYXNzKGNvZGUpO1xuICAgIHRoaXMuZW51bXMubGVuZ3RoICYmIHRoaXMuZW1pdEVudW1zKGNvZGUpO1xuICAgIHJldHVybiBjb2RlLnJlbmRlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0SW1wb3J0cyhjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvZGUubGluZSgnLy8gR2VuZXJhdGVkIGJ5IGNkay1pbXBvcnQnKTtcbiAgICBjb2RlLmxpbmUoXCJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1wiKTtcbiAgICBjb2RlLmxpbmUoXCJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1wiKTtcbiAgICBjb2RlLmxpbmUoXCJpbXBvcnQgKiBhcyBzYyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VydmljZWNhdGFsb2cnO1wiKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEludGVyZmFjZShjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvZGUub3BlbkJsb2NrKGBleHBvcnQgaW50ZXJmYWNlIEkke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfSBleHRlbmRzIGNkay5JUmVzb3VyY2VgKTtcbiAgICB0aGlzLnJlc291cmNlQXR0cmlidXRlcy5mb3JFYWNoKGF0dHIgPT4ge1xuICAgICAgY29kZS5saW5lKGByZWFkb25seSAke2F0dHJ9OiBzdHJpbmc7YCk7XG4gICAgfSk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgY29kZS5saW5lKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRCYXNlKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5vcGVuQmxvY2soYGFic3RyYWN0IGNsYXNzICR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9QmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIEkke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfWApO1xuICAgIHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzLmZvckVhY2goYXR0ciA9PiB7XG4gICAgICBjb2RlLmxpbmUoYHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSAke2F0dHJ9OiBzdHJpbmc7YCk7XG4gICAgfSk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgY29kZS5saW5lKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRQYXJhbWV0ZXJzKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5saW5lKCcgIHByb3Zpc2lvbmluZ1BhcmFtZXRlcnM6Jyk7XG4gICAgY29kZS5saW5lKCcgICAgT2JqZWN0LmVudHJpZXMocHJvcHMpLm1hcCgoW2ssIHZdKSA9PiB7Jyk7XG4gICAgY29kZS5saW5lKCcgICAgICByZXR1cm4geycpO1xuICAgIGNvZGUubGluZSgnICAgICAgICBrZXk6IFBhcmFtZXRlcktleXMudmFsdWVPZihrKSBhcyBzdHJpbmcsJyk7XG4gICAgY29kZS5saW5lKCcgICAgICAgIHZhbHVlOiB2IGFzIHN0cmluZywnKTtcbiAgICBjb2RlLmxpbmUoJyAgICAgIH0nKTtcbiAgICBjb2RlLmxpbmUoJyAgICB9KSwnKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFBhcmFtZXRlck1hcChjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvZGUub3BlbkJsb2NrKCdlbnVtIFBhcmFtZXRlcktleXMnKTtcbiAgICB0aGlzLnBhcmFtZXRlcnM/LmZvckVhY2gocCA9PiB7XG4gICAgICBjb2RlLmxpbmUoYCR7Y2FtZWwocC5QYXJhbWV0ZXJLZXkhKX0gPSAnJHtwLlBhcmFtZXRlcktleX0nLGApO1xuICAgIH0pO1xuICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgIGNvZGUubGluZSgpO1xuICAgIGNvZGUub3BlbkJsb2NrKCduYW1lc3BhY2UgUGFyYW1ldGVyS2V5cycpO1xuICAgIGNvZGUubGluZSgnY29uc3QgcmV2ZXJzZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBQYXJhbWV0ZXJLZXlzPigpOycpO1xuICAgIGNvZGUubGluZSgnT2JqZWN0LmtleXMoUGFyYW1ldGVyS2V5cykuZm9yRWFjaCgoczogc3RyaW5nKSA9PiB7Jyk7XG4gICAgY29kZS5saW5lKCcgIGNvbnN0IGUgPSAoPGFueT5QYXJhbWV0ZXJLZXlzKVtzXTsnKTtcbiAgICBjb2RlLmxpbmUoJyAgcmV2ZXJzZU1hcC5zZXQocywgZSk7Jyk7XG4gICAgY29kZS5saW5lKCd9KTsnKTtcbiAgICBjb2RlLmxpbmUoJ2V4cG9ydCBmdW5jdGlvbiB2YWx1ZU9mKHN0cjogc3RyaW5nKSB7Jyk7XG4gICAgY29kZS5saW5lKCcgIHJldHVybiByZXZlcnNlTWFwLmdldChzdHIpOycpO1xuICAgIGNvZGUubGluZSgnfScpO1xuICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RGVmaW5pdGlvblR5cGVzKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5vcGVuQmxvY2soYGV4cG9ydCBpbnRlcmZhY2UgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX1Qcm9wc2ApO1xuICAgIHRoaXMucGFyYW1ldGVycyEuZm9yRWFjaChwYSA9PiB7XG4gICAgICBsZXQgb3B0aW9uYWwgPSAnJztcbiAgICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgICBjb2RlLmxpbmUoYCAqICR7cGFzY2FsKHBhLlBhcmFtZXRlcktleSEpfWApO1xuICAgICAgaWYgKHBhLkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIGNvZGUubGluZSgnIConKTtcbiAgICAgICAgY29kZS5saW5lKGAgKiAke3BhLkRlc2NyaXB0aW9ufWApO1xuICAgICAgfVxuICAgICAgaWYgKHBhLlBhcmFtZXRlckNvbnN0cmFpbnRzPy5Db25zdHJhaW50RGVzY3JpcHRpb24pIHtcbiAgICAgICAgY29kZS5saW5lKCcgKicpO1xuICAgICAgICBjb2RlLmxpbmUoYCAqICR7cGEuUGFyYW1ldGVyQ29uc3RyYWludHM/LkNvbnN0cmFpbnREZXNjcmlwdGlvbn1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChwYS5EZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgb3B0aW9uYWwgKz0gJz8nO1xuICAgICAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgICAgIGNvZGUubGluZShgICogQGRlZmF1bHQgJHtwYS5EZWZhdWx0VmFsdWV9YCk7XG4gICAgICB9XG4gICAgICBpZiAocGEuUGFyYW1ldGVyQ29uc3RyYWludHM/LkFsbG93ZWRWYWx1ZXM/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLmVudW1zLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHBhLlBhcmFtZXRlcktleSEsXG4gICAgICAgICAgYWxsb3dlZFZhbHVlczogcGEuUGFyYW1ldGVyQ29uc3RyYWludHMuQWxsb3dlZFZhbHVlcyxcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgICAgY29kZS5saW5lKGByZWFkb25seSAke2NhbWVsKHBhLlBhcmFtZXRlcktleSEpfSR7b3B0aW9uYWx9OiAke3BhLlBhcmFtZXRlckNvbnN0cmFpbnRzPy5BbGxvd2VkVmFsdWVzPy5sZW5ndGggPyB0aGlzLmNvbnN0cnVjdENsYXNzTmFtZSArICcuJyArIHBhLlBhcmFtZXRlcktleSA6ICdzdHJpbmcnfTtgKTtcbiAgICAgIGNvZGUubGluZSgpO1xuICAgIH0pO1xuICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlRW51bVZhbHVlKHZhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoTnVtYmVyKHZhbCkpIHtcbiAgICAgIHJldHVybiBjb25zdGFudChgVkFMVUVfJHt2YWx9YCk7XG4gICAgfSBlbHNlIGlmIChOdW1iZXIodmFsLmNoYXJBdCgwKSkpIHtcbiAgICAgIHJldHVybiBgJyR7Y29uc3RhbnQodmFsKX0nYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnN0YW50KHZhbCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RW51bXMoY29kZTogajJqLkNvZGUpIHtcbiAgICBjb2RlLmxpbmUoKTtcbiAgICBjb2RlLm9wZW5CbG9jayhgZXhwb3J0IG5hbWVzcGFjZSAke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfWApO1xuICAgIHRoaXMuZW51bXMuZm9yRWFjaCggZSA9PiB7XG4gICAgICBjb2RlLmxpbmUoKTtcbiAgICAgIGNvZGUub3BlbkJsb2NrKGBleHBvcnQgZW51bSAke2UubmFtZX1gKTtcbiAgICAgIGUuYWxsb3dlZFZhbHVlcy5mb3JFYWNoKHZhbCA9PiB7XG4gICAgICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgICAgIGNvZGUubGluZShgICogJHt2YWx9YCk7XG4gICAgICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgICAgIGNvZGUubGluZShgJHt0aGlzLnJlc29sdmVFbnVtVmFsdWUodmFsKX0gPSAnJHt2YWx9JyxgKTtcbiAgICAgICAgY29kZS5saW5lKCk7XG4gICAgICB9KTtcbiAgICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICAgICAgY29kZS5saW5lKCk7XG4gICAgfSk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgY29kZS5saW5lKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRQcm9kdWN0RGVzY3JpcHRpb24oY29kZTogajJqLkNvZGUpIHtcbiAgICBjb25zdCBwcm9kdWN0ID0gdGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5wcm9kdWN0O1xuICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgY29kZS5saW5lKGAgKiAke3RoaXMuc2FuaXRpemVkVHlwZU5hbWV9YCk7XG4gICAgY29kZS5saW5lKCcgKicpO1xuICAgIGlmIChwcm9kdWN0LlNob3J0RGVzY3JpcHRpb24pIHtcbiAgICAgIGNvZGUubGluZShgICogJHtwcm9kdWN0LlNob3J0RGVzY3JpcHRpb259YCk7XG4gICAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgfVxuICAgIHByb2R1Y3QuU3VwcG9ydERlc2NyaXB0aW9uICYmIGNvZGUubGluZShgICogJHtwcm9kdWN0LlN1cHBvcnREZXNjcmlwdGlvbn1gKTtcbiAgICBwcm9kdWN0LlN1cHBvcnRFbWFpbCAmJiBjb2RlLmxpbmUoYCAqIFN1cHBvcnQgRW1haWw6ICR7cHJvZHVjdC5TdXBwb3J0RW1haWx9YCk7XG4gICAgcHJvZHVjdC5TdXBwb3J0VXJsICYmIGNvZGUubGluZShgICogU3VwcG9ydCBVcmw6ICR7cHJvZHVjdC5TdXBwb3J0VXJsfWApO1xuICAgIHByb2R1Y3QuRGlzdHJpYnV0b3IgJiYgY29kZS5saW5lKGAgKiBEaXN0cmlidXRvcjogJHtwcm9kdWN0LkRpc3RyaWJ1dG9yfWApO1xuICAgIHByb2R1Y3QuT3duZXIgJiYgY29kZS5saW5lKGAgKiBPd25lcjogJHtwcm9kdWN0Lk93bmVyfWApO1xuICAgIGNvZGUubGluZSgnICovJyk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRTeW50aGVzaXplclZhbGlkYXRpb24oY29kZTogajJqLkNvZGUpIHtcbiAgICBjb2RlLmxpbmUoJ2NvbnN0IHN5bnRoZXNpemVyOiBjZGsuSVN0YWNrU3ludGhlc2l6ZXIgPSBjZGsuU3RhY2sub2YodGhpcykuc3ludGhlc2l6ZXI7Jyk7XG4gICAgY29kZS5saW5lKCdjb25zdCBzdXBwb3J0ZWRTeW50aGVzaXplcnMgPSBbY2RrLkNsaUNyZWRlbnRpYWxzU3RhY2tTeW50aGVzaXplciwgY2RrLkxlZ2FjeVN0YWNrU3ludGhlc2l6ZXIsIGNkay5Cb290c3RyYXBsZXNzU3ludGhlc2l6ZXJdOycpO1xuICAgIGNvZGUubGluZSgpO1xuICAgIGNvZGUubGluZSgnaWYgKCFzdXBwb3J0ZWRTeW50aGVzaXplcnMuc29tZShzdXBwb3J0ZWRTeW50aGVzaXplciA9PiBzeW50aGVzaXplciBpbnN0YW5jZW9mIHN1cHBvcnRlZFN5bnRoZXNpemVyKSkgeycpO1xuICAgIGNvZGUubGluZSgnICB0aHJvdyBFcnJvcihgJHtzeW50aGVzaXplci5jb25zdHJ1Y3Rvci5uYW1lfSBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgdXNlIG9uZSBvZiB0aGUgc3VwcG9ydGVkIHN5bnRoZXNpemVyczogJHtzdXBwb3J0ZWRTeW50aGVzaXplcnMubWFwKHN5bnRoID0+IHN5bnRoLm5hbWUpfWApOycpO1xuICAgIGNvZGUubGluZSgnfScpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0Q29uc3RydWN0Q2xhc3MoY29kZTogajJqLkNvZGUpIHtcbiAgICB0aGlzLmVtaXRQcm9kdWN0RGVzY3JpcHRpb24oY29kZSk7XG4gICAgY29kZS5vcGVuQmxvY2soYGV4cG9ydCBjbGFzcyAke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfSBleHRlbmRzICR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9QmFzZWApO1xuICAgIGZvciAoY29uc3QgcHJvcCBvZiB0aGlzLnJlc291cmNlQXR0cmlidXRlcykge1xuICAgICAgaWYgKHRoaXMub3V0cHV0RGVzY3JpcHRpb25zW3Byb3BdKSB7XG4gICAgICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgICAgIGNvZGUubGluZShgICogJHt0aGlzLm91dHB1dERlc2NyaXB0aW9uc1twcm9wXX1gKTtcbiAgICAgICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICAgIH1cbiAgICAgIGNvZGUubGluZShgcHVibGljIHJlYWRvbmx5ICR7cHJvcH06IHN0cmluZztgKTtcbiAgICB9XG4gICAgY29kZS5saW5lKCdwcml2YXRlIHJlYWRvbmx5IHByb3Zpc2lvbmVkUHJvZHVjdDogc2MuQ2ZuQ2xvdWRGb3JtYXRpb25Qcm92aXNpb25lZFByb2R1Y3Q7Jyk7XG4gICAgY29kZS5saW5lKCk7XG5cbiAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgIGNvZGUubGluZShgICogQ3JlYXRlIGEgbmV3IFNlcnZpY2UgQ2F0YWxvZyBcXGAke3RoaXMuc2FuaXRpemVkVHlwZU5hbWV9XFxgIHByb2R1Y3QuYCk7XG4gICAgY29kZS5saW5lKCcgKicpO1xuICAgIGNvZGUubGluZSgnICogQHBhcmFtIHNjb3BlIC0gc2NvcGUgaW4gd2hpY2ggdGhpcyByZXNvdXJjZSBpcyBkZWZpbmVkJyk7XG4gICAgY29kZS5saW5lKCcgKiBAcGFyYW0gaWQgICAgLSBzY29wZWQgaWQgb2YgdGhlIHJlc291cmNlJyk7XG4gICAgaWYgKHRoaXMuaGFzUGFyYW1ldGVycykge1xuICAgICAgY29kZS5saW5lKCcgKiBAcGFyYW0gcHJvcHMgLSByZXNvdXJjZSBwcm9wZXJ0aWVzJyk7XG4gICAgfVxuICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgY29kZS5vcGVuQmxvY2soYGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZyR7dGhpcy5oYXNQYXJhbWV0ZXJzID8gJywgcHJvcHM6ICcgKyB0aGlzLnByb3BzU3RydWN0TmFtZSA6ICcnfSlgKTtcbiAgICBjb2RlLmxpbmUoJ3N1cGVyKHNjb3BlLCBpZCk7Jyk7XG4gICAgY29kZS5saW5lKCk7XG4gICAgdGhpcy5lbWl0U3ludGhlc2l6ZXJWYWxpZGF0aW9uKGNvZGUpO1xuICAgIGNvZGUubGluZSgpO1xuICAgIGNvZGUubGluZShcInRoaXMucHJvdmlzaW9uZWRQcm9kdWN0ID0gbmV3IHNjLkNmbkNsb3VkRm9ybWF0aW9uUHJvdmlzaW9uZWRQcm9kdWN0KHRoaXMsICdSZXNvdXJjZScsIHtcIik7XG4gICAgY29kZS5saW5lKCcgIHByb3Zpc2lvbmVkUHJvZHVjdE5hbWU6IHRoaXMubm9kZS5pZCwnKTtcblxuICAgIGlmICh0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLnByb3Zpc2lvbmluZ0FydGlmYWN0Lk5hbWUpIHtcbiAgICAgIGNvZGUubGluZShgICBwcm92aXNpb25pbmdBcnRpZmFjdE5hbWU6ICcke3RoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucHJvdmlzaW9uaW5nQXJ0aWZhY3QuTmFtZSF9JyxgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29kZS5saW5lKGAgIHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ6ICcke3RoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucHJvdmlzaW9uaW5nQXJ0aWZhY3QuSWQhfScsYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucHJvZHVjdC5OYW1lKSB7XG4gICAgICBjb2RlLmxpbmUoYCAgcHJvZHVjdE5hbWU6ICcke3RoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucHJvZHVjdC5OYW1lIX0nLGApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2RlLmxpbmUoYCAgcHJvZHVjdElkOiAnJHt0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLnByb2R1Y3QuUHJvZHVjdElkIX0nLGApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLmxhdW5jaFBhdGguTmFtZSkge1xuICAgICAgY29kZS5saW5lKGAgIHBhdGhOYW1lOiAnJHt0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLmxhdW5jaFBhdGguTmFtZSF9JyxgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29kZS5saW5lKGAgIHBhdGhJZDogJyR7dGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5sYXVuY2hQYXRoLklkIX0nLGApO1xuICAgIH1cblxuICAgIC8vIGdlbmVyYXRlIHByb3Zpc2lvbmluZyBwYXJhbWV0ZXJzIGZyb20gcHJvcHMgdG8gYXZvaWQgcmVkdW5kYW50IGRlZmF1bHRzXG4gICAgaWYgKHRoaXMuaGFzUGFyYW1ldGVycykge1xuICAgICAgdGhpcy5lbWl0UGFyYW1ldGVycyhjb2RlKTtcbiAgICB9XG5cbiAgICBjb2RlLmxpbmUoJ30pOycpO1xuICAgIGNvZGUubGluZSgpO1xuICAgIGNvZGUubGluZSgndGhpcy5wcm92aXNpb25lZFByb2R1Y3RJZCA9IHRoaXMucHJvdmlzaW9uZWRQcm9kdWN0LnJlZjsnKTtcbiAgICBjb2RlLmxpbmUoXCJ0aGlzLmNsb3VkRm9ybWF0aW9uU3RhY2tBcm4gPSBjZGsuVG9rZW4uYXNTdHJpbmcoY2RrLkZuLmdldEF0dCh0aGlzLnByb3Zpc2lvbmVkUHJvZHVjdC5sb2dpY2FsSWQsICdDbG91ZGZvcm1hdGlvblN0YWNrQXJuJykpO1wiKTtcbiAgICBjb2RlLmxpbmUoXCJ0aGlzLnJlY29yZElkID0gY2RrLlRva2VuLmFzU3RyaW5nKGNkay5Gbi5nZXRBdHQodGhpcy5wcm92aXNpb25lZFByb2R1Y3QubG9naWNhbElkLCAnUmVjb3JkSWQnKSk7XCIpO1xuICAgIHRoaXMub3V0cHV0S2V5cz8uZm9yRWFjaChvdXRwdXQgPT4ge1xuICAgICAgY29kZS5saW5lKGB0aGlzLiR7Y2FtZWwob3V0cHV0LktleSEpfSA9IGNkay5Ub2tlbi5hc1N0cmluZyhjZGsuRm4uZ2V0QXR0KHRoaXMucHJvdmlzaW9uZWRQcm9kdWN0LmxvZ2ljYWxJZCwgJ091dHB1dHMuJHtvdXRwdXQuS2V5IX0nKSk7YCk7XG4gICAgfSk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG5cbiAgICAvLyBDbG9zZSBjb25zdHJ1Y3QgY2xhc3NcbiAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgfVxufVxuIl19
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29uc3RydWN0LWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zYy1jb25zdHJ1Y3QtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsK0JBQStDO0FBQy9DLCtDQUFpQztBQVdqQzs7R0FFRztBQUNILE1BQWEsNENBQTRDO0lBY3ZEOztPQUVHO0lBQ0gsWUFBWSxXQUFpQztRQUMzQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsV0FBVyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFBLGFBQU0sRUFBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLElBQUssQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsT0FBTyxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDbkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBa0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsOEJBQStCLENBQUM7UUFDbkYsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLDhCQUErQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDakcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENB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QkFBb0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFO1lBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsSUFBSyxJQUFJLENBQUMsQ0FBQztTQUMzRTthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsRUFBRyxJQUFJLENBQUMsQ0FBQztTQUN2RTtRQUVELDBFQUEwRTtRQUMxRSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzQjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxJQUFJLENBQUMsK0hBQStILENBQUMsQ0FBQztRQUMzSSxJQUFJLENBQUMsSUFBSSxDQUFDLG1HQUFtRyxDQUFDLENBQUM7UUFDL0csSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUEsWUFBSyxFQUFDLE1BQU0sQ0FBQyxHQUFJLENBQUMsbUZBQW1GLE1BQU0sQ0FBQyxHQUFJLE1BQU0sQ0FBQyxDQUFDO1FBQzVJLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxCLHdCQUF3QjtRQUN4QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztDQUNGO0FBL1FELG9HQStRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3Zpc2lvbmluZ0FydGlmYWN0T3V0cHV0cywgUHJvdmlzaW9uaW5nQXJ0aWZhY3RQYXJhbWV0ZXJzIH0gZnJvbSAnYXdzLXNkay9jbGllbnRzL3NlcnZpY2VjYXRhbG9nJztcbmltcG9ydCB7IHBhc2NhbCwgY2FtZWwsIGNvbnN0YW50IH0gZnJvbSAnY2FzZSc7XG5pbXBvcnQgKiBhcyBqMmogZnJvbSAnanNvbjJqc2lpJztcbmltcG9ydCB7IFByb2R1Y3REYXRhQWdncmVnYXRlIH0gZnJvbSAnLi9zZXJ2aWNlLWNhdGFsb2cnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gZW51bSBmb3IgQ2xvdWRGb3JtYXRpb24gcGFyYW1ldGVyIGlucHV0cyB0aGF0IGhhdmUgcHJlZGVmaW5lZCBhbGxvd2VkIHZhbHVlcy5cbiAqL1xudHlwZSBFbnVtRGVmaW5pdGlvbiA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICBhbGxvd2VkVmFsdWVzOiBzdHJpbmdbXTtcbn07XG5cbi8qKlxuICogR2VuZXJhdG9yIHRvIGVtaXQgY2xhc3NlcyBhbmQgaW5mb3JtYXRpb24gb24gcHJvdmlzaW9uaW5nIGRldGFpbHMgZm9yIGEgcHJvZHVjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNlcnZpY2VDYXRhbG9nUHJvdmlzaW9uaW5nQ29uc3RydWN0R2VuZXJhdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0RGF0YUFnZ3JlZ2F0ZTogUHJvZHVjdERhdGFBZ2dyZWdhdGU7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGFzUGFyYW1ldGVyczogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBzYW5pdGl6ZWRUeXBlTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlQXR0cmlidXRlczogc3RyaW5nW107XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uc3RydWN0Q2xhc3NOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHNTdHJ1Y3ROYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW51bXM6IEVudW1EZWZpbml0aW9uW107XG4gIHByaXZhdGUgcmVhZG9ubHkgcGFyYW1ldGVyczogUHJvdmlzaW9uaW5nQXJ0aWZhY3RQYXJhbWV0ZXJzO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBdHRyaWJ1dGVzOiBTZXQ8c3RyaW5nPjtcbiAgcHJpdmF0ZSByZWFkb25seSBvdXRwdXRLZXlzOiBQcm92aXNpb25pbmdBcnRpZmFjdE91dHB1dHM7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3V0cHV0RGVzY3JpcHRpb25zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9O1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gcHJvZHVjdERhdGEgdGhlIGFnZ3JlZ2F0ZSBkZXRhaWxzIG9uIGEgcHJvZHVjdCB3aXRoIGluZm9ybWF0aW9uIG9uIGlucHV0cyBhbmQgb3V0cHV0cyBvZiB0aGUgdGVtcGxhdGUuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9kdWN0RGF0YTogUHJvZHVjdERhdGFBZ2dyZWdhdGUpIHtcbiAgICB0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlID0gcHJvZHVjdERhdGE7XG4gICAgdGhpcy5zYW5pdGl6ZWRUeXBlTmFtZSA9IHBhc2NhbCh0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLnByb2R1Y3QuTmFtZSEpO1xuICAgIHRoaXMuY29uc3RydWN0Q2xhc3NOYW1lID0gajJqLlR5cGVHZW5lcmF0b3Iubm9ybWFsaXplVHlwZU5hbWUodGhpcy5zYW5pdGl6ZWRUeXBlTmFtZSk7XG4gICAgdGhpcy5wcm9wc1N0cnVjdE5hbWUgPSBqMmouVHlwZUdlbmVyYXRvci5ub3JtYWxpemVUeXBlTmFtZShgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX1Qcm9wc2ApO1xuICAgIHRoaXMubmFtZSA9IHRoaXMuc2FuaXRpemVkVHlwZU5hbWU7XG4gICAgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIHRoaXMuZW51bXMgPSBuZXcgQXJyYXk8RW51bURlZmluaXRpb24+KCk7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gdGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5wYXJhbXMuUHJvdmlzaW9uaW5nQXJ0aWZhY3RQYXJhbWV0ZXJzITtcbiAgICB0aGlzLmhhc1BhcmFtZXRlcnMgPSB0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLnBhcmFtcy5Qcm92aXNpb25pbmdBcnRpZmFjdFBhcmFtZXRlcnMhLmxlbmd0aCA+IDA7XG4gICAgdGhpcy5vdXRwdXRLZXlzID0gdGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5wYXJhbXMuUHJvdmlzaW9uaW5nQXJ0aWZhY3RPdXRwdXRLZXlzITtcbiAgICB0aGlzLm91dHB1dERlc2NyaXB0aW9ucyA9IHRoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucGFyYW1zLlByb3Zpc2lvbmluZ0FydGlmYWN0T3V0cHV0S2V5cyEucmVkdWNlKChvYmosIGtleSkgPT4ge1xuICAgICAgb2JqW2NhbWVsKGtleS5LZXkhKV0gPSBrZXkuRGVzY3JpcHRpb247XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sIHt9IGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkIH0pO1xuXG4gICAgdGhpcy5kZWZhdWx0QXR0cmlidXRlcyA9IG5ldyBTZXQ8c3RyaW5nPihbJ3Byb3Zpc2lvbmVkUHJvZHVjdElkJywgJ2Nsb3VkRm9ybWF0aW9uU3RhY2tBcm4nLCAncmVjb3JkSWQnXSk7XG5cbiAgICB0aGlzLnJlc291cmNlQXR0cmlidXRlcy5wdXNoKFxuICAgICAgLi4udGhpcy5kZWZhdWx0QXR0cmlidXRlcyxcbiAgICAgIC4uLnRoaXMub3V0cHV0S2V5cy5tYXAoa2V5ID0+IGNhbWVsKGtleS5LZXkhKSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIHR5cGUgaW50byBhIFR5cGVTY3JpcHQgY2xhc3MgZmlsZSBkZWZpbmluZyB0aGUgcHJvcHMgYW5kIHRoZSB3cmFwcGVkIEwxIGNvbnN0cnVjdCBBV1M6OlNlcnZpY2VDYXRhbG9nOjpDbG91ZEZvcm1hdGlvblByb3Zpc2lvbmVkUHJvZHVjdC5cbiAgICpcbiAgICogQHJldHVybnMgdGhlIHJlbmRlcmVkIGNsYXNzIGZpbGUgY29udGVudFxuICAgKi9cbiAgcHVibGljIHJlbmRlcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvZGUgPSBuZXcgajJqLkNvZGUoKTtcbiAgICB0aGlzLmVtaXRJbXBvcnRzKGNvZGUpO1xuICAgIHRoaXMuZW1pdEludGVyZmFjZShjb2RlKTtcbiAgICB0aGlzLmVtaXRCYXNlKGNvZGUpO1xuICAgIGlmICh0aGlzLmhhc1BhcmFtZXRlcnMpIHtcbiAgICAgIHRoaXMuZW1pdFBhcmFtZXRlck1hcChjb2RlKTtcbiAgICAgIHRoaXMuZW1pdERlZmluaXRpb25UeXBlcyhjb2RlKTtcbiAgICB9XG4gICAgdGhpcy5lbWl0Q29uc3RydWN0Q2xhc3MoY29kZSk7XG4gICAgdGhpcy5lbnVtcy5sZW5ndGggJiYgdGhpcy5lbWl0RW51bXMoY29kZSk7XG4gICAgcmV0dXJuIGNvZGUucmVuZGVyKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRJbXBvcnRzKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5saW5lKCcvLyBHZW5lcmF0ZWQgYnkgY2RrLWltcG9ydCcpO1xuICAgIGNvZGUubGluZShcImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XCIpO1xuICAgIGNvZGUubGluZShcImltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XCIpO1xuICAgIGNvZGUubGluZShcImltcG9ydCAqIGFzIHNjIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zZXJ2aWNlY2F0YWxvZyc7XCIpO1xuICAgIGNvZGUubGluZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0SW50ZXJmYWNlKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5vcGVuQmxvY2soYGV4cG9ydCBpbnRlcmZhY2UgSSR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9IGV4dGVuZHMgY2RrLklSZXNvdXJjZWApO1xuICAgIHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzLmZvckVhY2goYXR0ciA9PiB7XG4gICAgICBjb2RlLmxpbmUoYHJlYWRvbmx5ICR7YXR0cn06IHN0cmluZztgKTtcbiAgICB9KTtcbiAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEJhc2UoY29kZTogajJqLkNvZGUpIHtcbiAgICBjb2RlLm9wZW5CbG9jayhgYWJzdHJhY3QgY2xhc3MgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX1CYXNlIGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSSR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9YCk7XG4gICAgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMuZm9yRWFjaChhdHRyID0+IHtcbiAgICAgIGNvZGUubGluZShgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5ICR7YXR0cn06IHN0cmluZztgKTtcbiAgICB9KTtcbiAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFBhcmFtZXRlcnMoY29kZTogajJqLkNvZGUpIHtcbiAgICBjb2RlLmxpbmUoJyAgcHJvdmlzaW9uaW5nUGFyYW1ldGVyczonKTtcbiAgICBjb2RlLmxpbmUoJyAgICBPYmplY3QuZW50cmllcyhwcm9wcykubWFwKChbaywgdl0pID0+IHsnKTtcbiAgICBjb2RlLmxpbmUoJyAgICAgIHJldHVybiB7Jyk7XG4gICAgY29kZS5saW5lKCcgICAgICAgIGtleTogUGFyYW1ldGVyS2V5cy52YWx1ZU9mKGspIGFzIHN0cmluZywnKTtcbiAgICBjb2RlLmxpbmUoJyAgICAgICAgdmFsdWU6IHYgYXMgc3RyaW5nLCcpO1xuICAgIGNvZGUubGluZSgnICAgICAgfScpO1xuICAgIGNvZGUubGluZSgnICAgIH0pLCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0UGFyYW1ldGVyTWFwKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5vcGVuQmxvY2soJ2VudW0gUGFyYW1ldGVyS2V5cycpO1xuICAgIHRoaXMucGFyYW1ldGVycz8uZm9yRWFjaChwID0+IHtcbiAgICAgIGNvZGUubGluZShgJHtjYW1lbChwLlBhcmFtZXRlcktleSEpfSA9ICcke3AuUGFyYW1ldGVyS2V5fScsYCk7XG4gICAgfSk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgY29kZS5saW5lKCk7XG4gICAgY29kZS5vcGVuQmxvY2soJ25hbWVzcGFjZSBQYXJhbWV0ZXJLZXlzJyk7XG4gICAgY29kZS5saW5lKCdjb25zdCByZXZlcnNlTWFwID0gbmV3IE1hcDxzdHJpbmcsIFBhcmFtZXRlcktleXM+KCk7Jyk7XG4gICAgY29kZS5saW5lKCdPYmplY3Qua2V5cyhQYXJhbWV0ZXJLZXlzKS5mb3JFYWNoKChzOiBzdHJpbmcpID0+IHsnKTtcbiAgICBjb2RlLmxpbmUoJyAgY29uc3QgZSA9ICg8YW55PlBhcmFtZXRlcktleXMpW3NdOycpO1xuICAgIGNvZGUubGluZSgnICByZXZlcnNlTWFwLnNldChzLCBlKTsnKTtcbiAgICBjb2RlLmxpbmUoJ30pOycpO1xuICAgIGNvZGUubGluZSgnZXhwb3J0IGZ1bmN0aW9uIHZhbHVlT2Yoc3RyOiBzdHJpbmcpIHsnKTtcbiAgICBjb2RlLmxpbmUoJyAgcmV0dXJuIHJldmVyc2VNYXAuZ2V0KHN0cik7Jyk7XG4gICAgY29kZS5saW5lKCd9Jyk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXREZWZpbml0aW9uVHlwZXMoY29kZTogajJqLkNvZGUpIHtcbiAgICBjb2RlLm9wZW5CbG9jayhgZXhwb3J0IGludGVyZmFjZSAke3RoaXMuY29uc3RydWN0Q2xhc3NOYW1lfVByb3BzYCk7XG4gICAgdGhpcy5wYXJhbWV0ZXJzIS5mb3JFYWNoKHBhID0+IHtcbiAgICAgIGxldCBvcHRpb25hbCA9ICcnO1xuICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgIGNvZGUubGluZShgICogJHtwYXNjYWwocGEuUGFyYW1ldGVyS2V5ISl9YCk7XG4gICAgICBpZiAocGEuRGVzY3JpcHRpb24pIHtcbiAgICAgICAgY29kZS5saW5lKCcgKicpO1xuICAgICAgICBjb2RlLmxpbmUoYCAqICR7cGEuRGVzY3JpcHRpb259YCk7XG4gICAgICB9XG4gICAgICBpZiAocGEuUGFyYW1ldGVyQ29uc3RyYWludHM/LkNvbnN0cmFpbnREZXNjcmlwdGlvbikge1xuICAgICAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgICAgIGNvZGUubGluZShgICogJHtwYS5QYXJhbWV0ZXJDb25zdHJhaW50cz8uQ29uc3RyYWludERlc2NyaXB0aW9ufWApO1xuICAgICAgfVxuICAgICAgaWYgKHBhLkRlZmF1bHRWYWx1ZSkge1xuICAgICAgICBvcHRpb25hbCArPSAnPyc7XG4gICAgICAgIGNvZGUubGluZSgnIConKTtcbiAgICAgICAgY29kZS5saW5lKGAgKiBAZGVmYXVsdCAke3BhLkRlZmF1bHRWYWx1ZX1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChwYS5QYXJhbWV0ZXJDb25zdHJhaW50cz8uQWxsb3dlZFZhbHVlcz8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuZW51bXMucHVzaCh7XG4gICAgICAgICAgbmFtZTogcGEuUGFyYW1ldGVyS2V5ISxcbiAgICAgICAgICBhbGxvd2VkVmFsdWVzOiBwYS5QYXJhbWV0ZXJDb25zdHJhaW50cy5BbGxvd2VkVmFsdWVzLFxuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgICBjb2RlLmxpbmUoYHJlYWRvbmx5ICR7Y2FtZWwocGEuUGFyYW1ldGVyS2V5ISl9JHtvcHRpb25hbH06ICR7cGEuUGFyYW1ldGVyQ29uc3RyYWludHM/LkFsbG93ZWRWYWx1ZXM/Lmxlbmd0aCA/IHRoaXMuY29uc3RydWN0Q2xhc3NOYW1lICsgJy4nICsgcGEuUGFyYW1ldGVyS2V5IDogJ3N0cmluZyd9O2ApO1xuICAgICAgY29kZS5saW5lKCk7XG4gICAgfSk7XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVFbnVtVmFsdWUodmFsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChOdW1iZXIodmFsKSkge1xuICAgICAgcmV0dXJuIGNvbnN0YW50KGBWQUxVRV8ke3ZhbH1gKTtcbiAgICB9IGVsc2UgaWYgKE51bWJlcih2YWwuY2hhckF0KDApKSkge1xuICAgICAgcmV0dXJuIGAnJHtjb25zdGFudCh2YWwpfSdgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY29uc3RhbnQodmFsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGVtaXRFbnVtcyhjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvZGUubGluZSgpO1xuICAgIGNvZGUub3BlbkJsb2NrKGBleHBvcnQgbmFtZXNwYWNlICR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9YCk7XG4gICAgdGhpcy5lbnVtcy5mb3JFYWNoKCBlID0+IHtcbiAgICAgIGNvZGUubGluZSgpO1xuICAgICAgY29kZS5vcGVuQmxvY2soYGV4cG9ydCBlbnVtICR7ZS5uYW1lfWApO1xuICAgICAgZS5hbGxvd2VkVmFsdWVzLmZvckVhY2godmFsID0+IHtcbiAgICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgICAgY29kZS5saW5lKGAgKiAke3ZhbH1gKTtcbiAgICAgICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICAgICAgY29kZS5saW5lKGAke3RoaXMucmVzb2x2ZUVudW1WYWx1ZSh2YWwpfSA9ICcke3ZhbH0nLGApO1xuICAgICAgICBjb2RlLmxpbmUoKTtcbiAgICAgIH0pO1xuICAgICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gICAgICBjb2RlLmxpbmUoKTtcbiAgICB9KTtcbiAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFByb2R1Y3REZXNjcmlwdGlvbihjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvbnN0IHByb2R1Y3QgPSB0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLnByb2R1Y3Q7XG4gICAgY29kZS5saW5lKCcvKionKTtcbiAgICBjb2RlLmxpbmUoYCAqICR7dGhpcy5zYW5pdGl6ZWRUeXBlTmFtZX1gKTtcbiAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgaWYgKHByb2R1Y3QuU2hvcnREZXNjcmlwdGlvbikge1xuICAgICAgY29kZS5saW5lKGAgKiAke3Byb2R1Y3QuU2hvcnREZXNjcmlwdGlvbn1gKTtcbiAgICAgIGNvZGUubGluZSgnIConKTtcbiAgICB9XG4gICAgcHJvZHVjdC5TdXBwb3J0RGVzY3JpcHRpb24gJiYgY29kZS5saW5lKGAgKiAke3Byb2R1Y3QuU3VwcG9ydERlc2NyaXB0aW9ufWApO1xuICAgIHByb2R1Y3QuU3VwcG9ydEVtYWlsICYmIGNvZGUubGluZShgICogU3VwcG9ydCBFbWFpbDogJHtwcm9kdWN0LlN1cHBvcnRFbWFpbH1gKTtcbiAgICBwcm9kdWN0LlN1cHBvcnRVcmwgJiYgY29kZS5saW5lKGAgKiBTdXBwb3J0IFVybDogJHtwcm9kdWN0LlN1cHBvcnRVcmx9YCk7XG4gICAgcHJvZHVjdC5EaXN0cmlidXRvciAmJiBjb2RlLmxpbmUoYCAqIERpc3RyaWJ1dG9yOiAke3Byb2R1Y3QuRGlzdHJpYnV0b3J9YCk7XG4gICAgcHJvZHVjdC5Pd25lciAmJiBjb2RlLmxpbmUoYCAqIE93bmVyOiAke3Byb2R1Y3QuT3duZXJ9YCk7XG4gICAgY29kZS5saW5lKCcgKi8nKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFN5bnRoZXNpemVyVmFsaWRhdGlvbihjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvZGUubGluZSgnY29uc3Qgc3ludGhlc2l6ZXI6IGNkay5JU3RhY2tTeW50aGVzaXplciA9IGNkay5TdGFjay5vZih0aGlzKS5zeW50aGVzaXplcjsnKTtcbiAgICBjb2RlLmxpbmUoJ2NvbnN0IHN1cHBvcnRlZFN5bnRoZXNpemVycyA9IFtjZGsuQ2xpQ3JlZGVudGlhbHNTdGFja1N5bnRoZXNpemVyLCBjZGsuTGVnYWN5U3RhY2tTeW50aGVzaXplciwgY2RrLkJvb3RzdHJhcGxlc3NTeW50aGVzaXplcl07Jyk7XG4gICAgY29kZS5saW5lKCk7XG4gICAgY29kZS5saW5lKCdpZiAoIXN1cHBvcnRlZFN5bnRoZXNpemVycy5zb21lKHN1cHBvcnRlZFN5bnRoZXNpemVyID0+IHN5bnRoZXNpemVyIGluc3RhbmNlb2Ygc3VwcG9ydGVkU3ludGhlc2l6ZXIpKSB7Jyk7XG4gICAgY29kZS5saW5lKCcgIHRocm93IEVycm9yKGAke3N5bnRoZXNpemVyLmNvbnN0cnVjdG9yLm5hbWV9IG5vdCBzdXBwb3J0ZWQuIFBsZWFzZSB1c2Ugb25lIG9mIHRoZSBzdXBwb3J0ZWQgc3ludGhlc2l6ZXJzOiAke3N1cHBvcnRlZFN5bnRoZXNpemVycy5tYXAoc3ludGggPT4gc3ludGgubmFtZSl9YCk7Jyk7XG4gICAgY29kZS5saW5lKCd9Jyk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDb25zdHJ1Y3RDbGFzcyhjb2RlOiBqMmouQ29kZSkge1xuICAgIHRoaXMuZW1pdFByb2R1Y3REZXNjcmlwdGlvbihjb2RlKTtcbiAgICBjb2RlLm9wZW5CbG9jayhgZXhwb3J0IGNsYXNzICR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9IGV4dGVuZHMgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX1CYXNlYCk7XG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzKSB7XG4gICAgICBpZiAodGhpcy5vdXRwdXREZXNjcmlwdGlvbnNbcHJvcF0pIHtcbiAgICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgICAgY29kZS5saW5lKGAgKiAke3RoaXMub3V0cHV0RGVzY3JpcHRpb25zW3Byb3BdfWApO1xuICAgICAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgICAgfVxuICAgICAgY29kZS5saW5lKGBwdWJsaWMgcmVhZG9ubHkgJHtwcm9wfTogc3RyaW5nO2ApO1xuICAgIH1cbiAgICBjb2RlLmxpbmUoJ3ByaXZhdGUgcmVhZG9ubHkgcHJvdmlzaW9uZWRQcm9kdWN0OiBzYy5DZm5DbG91ZEZvcm1hdGlvblByb3Zpc2lvbmVkUHJvZHVjdDsnKTtcbiAgICBjb2RlLmxpbmUoKTtcblxuICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgY29kZS5saW5lKGAgKiBDcmVhdGUgYSBuZXcgU2VydmljZSBDYXRhbG9nIFxcYCR7dGhpcy5zYW5pdGl6ZWRUeXBlTmFtZX1cXGAgcHJvZHVjdC5gKTtcbiAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgY29kZS5saW5lKCcgKiBAcGFyYW0gc2NvcGUgLSBzY29wZSBpbiB3aGljaCB0aGlzIHJlc291cmNlIGlzIGRlZmluZWQnKTtcbiAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBpZCAgICAtIHNjb3BlZCBpZCBvZiB0aGUgcmVzb3VyY2UnKTtcbiAgICBpZiAodGhpcy5oYXNQYXJhbWV0ZXJzKSB7XG4gICAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBwcm9wcyAtIHJlc291cmNlIHByb3BlcnRpZXMnKTtcbiAgICB9XG4gICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICBjb2RlLm9wZW5CbG9jayhgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nJHt0aGlzLmhhc1BhcmFtZXRlcnMgPyAnLCBwcm9wczogJyArIHRoaXMucHJvcHNTdHJ1Y3ROYW1lIDogJyd9KWApO1xuICAgIGNvZGUubGluZSgnc3VwZXIoc2NvcGUsIGlkKTsnKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgICB0aGlzLmVtaXRTeW50aGVzaXplclZhbGlkYXRpb24oY29kZSk7XG4gICAgY29kZS5saW5lKCk7XG4gICAgY29kZS5saW5lKFwidGhpcy5wcm92aXNpb25lZFByb2R1Y3QgPSBuZXcgc2MuQ2ZuQ2xvdWRGb3JtYXRpb25Qcm92aXNpb25lZFByb2R1Y3QodGhpcywgJ1Jlc291cmNlJywge1wiKTtcbiAgICBjb2RlLmxpbmUoJyAgcHJvdmlzaW9uZWRQcm9kdWN0TmFtZTogdGhpcy5ub2RlLmlkLCcpO1xuXG4gICAgaWYgKHRoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucHJvdmlzaW9uaW5nQXJ0aWZhY3QuTmFtZSkge1xuICAgICAgY29kZS5saW5lKGAgIHByb3Zpc2lvbmluZ0FydGlmYWN0TmFtZTogJyR7dGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5wcm92aXNpb25pbmdBcnRpZmFjdC5OYW1lIX0nLGApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2RlLmxpbmUoYCAgcHJvdmlzaW9uaW5nQXJ0aWZhY3RJZDogJyR7dGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5wcm92aXNpb25pbmdBcnRpZmFjdC5JZCF9JyxgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5wcm9kdWN0Lk5hbWUpIHtcbiAgICAgIGNvZGUubGluZShgICBwcm9kdWN0TmFtZTogJyR7dGhpcy5wcm9kdWN0RGF0YUFnZ3JlZ2F0ZS5wcm9kdWN0Lk5hbWUhfScsYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvZGUubGluZShgICBwcm9kdWN0SWQ6ICcke3RoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUucHJvZHVjdC5Qcm9kdWN0SWQhfScsYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUubGF1bmNoUGF0aC5OYW1lKSB7XG4gICAgICBjb2RlLmxpbmUoYCAgcGF0aE5hbWU6ICcke3RoaXMucHJvZHVjdERhdGFBZ2dyZWdhdGUubGF1bmNoUGF0aC5OYW1lIX0nLGApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2RlLmxpbmUoYCAgcGF0aElkOiAnJHt0aGlzLnByb2R1Y3REYXRhQWdncmVnYXRlLmxhdW5jaFBhdGguSWQhfScsYCk7XG4gICAgfVxuXG4gICAgLy8gZ2VuZXJhdGUgcHJvdmlzaW9uaW5nIHBhcmFtZXRlcnMgZnJvbSBwcm9wcyB0byBhdm9pZCByZWR1bmRhbnQgZGVmYXVsdHNcbiAgICBpZiAodGhpcy5oYXNQYXJhbWV0ZXJzKSB7XG4gICAgICB0aGlzLmVtaXRQYXJhbWV0ZXJzKGNvZGUpO1xuICAgIH1cblxuICAgIGNvZGUubGluZSgnfSk7Jyk7XG4gICAgY29kZS5saW5lKCk7XG4gICAgY29kZS5saW5lKCd0aGlzLnByb3Zpc2lvbmVkUHJvZHVjdElkID0gdGhpcy5wcm92aXNpb25lZFByb2R1Y3QucmVmOycpO1xuICAgIGNvZGUubGluZShcInRoaXMuY2xvdWRGb3JtYXRpb25TdGFja0FybiA9IGNkay5Ub2tlbi5hc1N0cmluZyhjZGsuRm4uZ2V0QXR0KHRoaXMucHJvdmlzaW9uZWRQcm9kdWN0LmxvZ2ljYWxJZCwgJ0Nsb3VkZm9ybWF0aW9uU3RhY2tBcm4nKSk7XCIpO1xuICAgIGNvZGUubGluZShcInRoaXMucmVjb3JkSWQgPSBjZGsuVG9rZW4uYXNTdHJpbmcoY2RrLkZuLmdldEF0dCh0aGlzLnByb3Zpc2lvbmVkUHJvZHVjdC5sb2dpY2FsSWQsICdSZWNvcmRJZCcpKTtcIik7XG4gICAgdGhpcy5vdXRwdXRLZXlzPy5mb3JFYWNoKG91dHB1dCA9PiB7XG4gICAgICBjb2RlLmxpbmUoYHRoaXMuJHtjYW1lbChvdXRwdXQuS2V5ISl9ID0gY2RrLlRva2VuLmFzU3RyaW5nKGNkay5Gbi5nZXRBdHQodGhpcy5wcm92aXNpb25lZFByb2R1Y3QubG9naWNhbElkLCAnT3V0cHV0cy4ke291dHB1dC5LZXkhfScpKTtgKTtcbiAgICB9KTtcbiAgICBjb2RlLmNsb3NlQmxvY2soKTtcblxuICAgIC8vIENsb3NlIGNvbnN0cnVjdCBjbGFzc1xuICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuICB9XG59XG4iXX0=
@@ -103,8 +103,7 @@ function resolveLaunchPath(launchPaths, launchPathId) {
103
103
  * @returns list of product view summaries
104
104
  */
105
105
  async function describeProduct(options) {
106
- var _a;
107
- const sc = (_a = options.client) !== null && _a !== void 0 ? _a : new ServiceCatalogClient();
106
+ const sc = options.client ?? new ServiceCatalogClient();
108
107
  const describeProductResponse = await sc.describeProduct({
109
108
  Id: options.productId,
110
109
  });
@@ -130,7 +129,7 @@ async function describeProduct(options) {
130
129
  * @returns list of product view summaries
131
130
  */
132
131
  async function fetchAvailableProducts(client) {
133
- const sc = client !== null && client !== void 0 ? client : new ServiceCatalogClient();
132
+ const sc = client ?? new ServiceCatalogClient();
134
133
  const products = [];
135
134
  let token;
136
135
  do {
@@ -152,8 +151,7 @@ exports.fetchAvailableProducts = fetchAvailableProducts;
152
151
  * @returns the provisoning parameters for an artifact
153
152
  */
154
153
  async function describeProvisioningParameters(options) {
155
- var _a;
156
- const sc = (_a = options.client) !== null && _a !== void 0 ? _a : new ServiceCatalogClient();
154
+ const sc = options.client ?? new ServiceCatalogClient();
157
155
  const provisioningParameters = await sc.describeProvisioningParameters({
158
156
  ProductId: options.productId,
159
157
  ProvisioningArtifactId: options.provisioningArtifactId,
@@ -169,8 +167,7 @@ exports.describeProvisioningParameters = describeProvisioningParameters;
169
167
  * @returns ProductVersionData aggregate of provisioning artifact details.
170
168
  */
171
169
  async function describeProductAggregate(options) {
172
- var _a;
173
- const sc = (_a = options.client) !== null && _a !== void 0 ? _a : new ServiceCatalogClient();
170
+ const sc = options.client ?? new ServiceCatalogClient();
174
171
  const productDataAggregate = await describeProduct({
175
172
  productId: options.productId,
176
173
  launchPathId: options.launchPathId,
@@ -191,4 +188,4 @@ function validateProductData(productId, product) {
191
188
  throw new Error(`Cannot resolve launch paths for product: ${productId}`);
192
189
  }
193
190
  }
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jYXRhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZpY2UtY2F0YWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQiwrQkFBd0M7QUFTeEMsTUFBYSxvQkFBb0I7SUFHL0I7UUFDRSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUEscUJBQWUsRUFBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBNkM7UUFDdkUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRU0sS0FBSyxDQUFDLDhCQUE4QixDQUFDLEtBQTZEO1FBRXZHLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUE4QztRQUN6RSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xELENBQUM7Q0FDRjtBQW5CRCxvREFtQkM7QUErQkQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLDJCQUEyQixDQUFDLHFCQUErRCxFQUFFLHNCQUErQjtJQUVuSSxJQUFJLHNCQUFzQixFQUFFO1FBQzFCLE1BQU0sb0JBQW9CLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2pHLElBQUksb0JBQW9CLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxzQkFBc0Is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O1FBQ2pELFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztRQUM1QixZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7UUFDbEMsc0JBQXNCLEVBQUUsT0FBTyxDQUFDLHNCQUFzQjtRQUN0RCxNQUFNLEVBQUUsRUFBRTtLQUNYLENBQUMsQ0FBQztJQUVILE9BQU8sb0JBQW9CLENBQUM7QUFDOUIsQ0FBQztBQVhELDREQVdDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxTQUFpQixFQUFFLE9BQWlEO0lBQy9GLElBQUksT0FBTyxDQUFDLGtCQUFrQixJQUFJLFNBQVMsRUFBRTtRQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0tBQ3BFO1NBQU0sSUFBSSxPQUFPLENBQUMscUJBQXFCLElBQUksU0FBUyxFQUFFO1FBQ3JELE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELFNBQVMsRUFBRSxDQUFDLENBQUM7S0FDcEY7U0FBTSxJQUFJLE9BQU8sQ0FBQyxXQUFXLElBQUksU0FBUyxFQUFFO1FBQzNDLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLFNBQVMsRUFBRSxDQUFDLENBQUM7S0FDMUU7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQVdTIGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHsgY3JlYXRlQXdzQ2xpZW50IH0gZnJvbSAnLi9hd3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTZXJ2aWNlQ2F0YWxvZ0NsaWVudCB7XG4gIHNlYXJjaFByb2R1Y3RzKGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuTGlzdFBvcnRmb2xpb3NJbnB1dCk6IFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLkxpc3RQb3J0Zm9saW9zT3V0cHV0PjtcbiAgZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzSW5wdXQpOlxuICBQcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQ+O1xuICBkZXNjcmliZVByb2R1Y3QoaW5wdXQ6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RJbnB1dCk6IFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLkRlc2NyaWJlUHJvZHVjdE91dHB1dD47XG59XG5cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlQ2F0YWxvZ0NsaWVudCBpbXBsZW1lbnRzIElTZXJ2aWNlQ2F0YWxvZ0NsaWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2M6IEFXUy5TZXJ2aWNlQ2F0YWxvZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNjID0gY3JlYXRlQXdzQ2xpZW50KEFXUy5TZXJ2aWNlQ2F0YWxvZyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2VhcmNoUHJvZHVjdHMoaW5wdXQ6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5TZWFyY2hQcm9kdWN0c0lucHV0KTogUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuU2VhcmNoUHJvZHVjdHNPdXRwdXQ+IHtcbiAgICByZXR1cm4gdGhpcy5zYy5zZWFyY2hQcm9kdWN0cyhpbnB1dCkucHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlc2NyaWJlUHJvdmlzaW9uaW5nUGFyYW1ldGVycyhpbnB1dDogQVdTLlNlcnZpY2VDYXRhbG9nLkRlc2NyaWJlUHJvdmlzaW9uaW5nUGFyYW1ldGVyc0lucHV0KTpcbiAgUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzT3V0cHV0PiB7XG4gICAgcmV0dXJuIHRoaXMuc2MuZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKGlucHV0KS5wcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVzY3JpYmVQcm9kdWN0KGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm9kdWN0SW5wdXQpOiBQcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RPdXRwdXQ+IHtcbiAgICByZXR1cm4gdGhpcy5zYy5kZXNjcmliZVByb2R1Y3QoaW5wdXQpLnByb21pc2UoKTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3ZpZGUgcXVlcnkgdmFsdWVzIGZvciBhIHNwZWNpZmljIHByb3Zpc2lvbmFibGUgcHJvZHVjdC5cbiAqIElmIG5vIHNwZWNpZmljIElEcyBhcmUgZGVjbGFyZWQgZm9yIGEgcHJvZHVjdCwgd2Ugd2lsbCB1c2UgdGhlIHNldCBgREVGQVVMVGAgdmFsdWUgZm9yIHRoZSBwcm92aXNpb25pbmcgYXJ0aWZhY3QgYW5kIGxhdW5jaCBwYXRoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc2NyaWJlUHJvZHVjdEFnZ3JlZ2F0ZU9wdGlvbnMge1xuICAvKipcbiAgICogQSBjbGllbnQgdGhhdCBwZXJmb3JtcyBjYWxscyB0byBBV1MgU2VydmljZSBDYXRhbG9nLiBZb3UgY2FuIHByb3ZpZGUgYSBtb2NrIGhlcmVcbiAgICogZm9yIHRlc3RpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQSByZWFsIFNlcnZpY2UgQ2F0YWxvZyBjbGllbnRcbiAgICovXG4gIHJlYWRvbmx5IGNsaWVudD86IElTZXJ2aWNlQ2F0YWxvZ0NsaWVudDtcblxuICAvKipcbiAgICogVGhlIHByb2R1Y3QgSWQuXG4gICAqL1xuICByZWFkb25seSBwcm9kdWN0SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm92aXNpb25pbmcgYXJ0aWZhY3QgSWQuXG4gICAqL1xuICByZWFkb25seSBwcm92aXNpb25pbmdBcnRpZmFjdElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbGF1bmNoIHBhdGggSWQuXG4gICAqL1xuICByZWFkb25seSBsYXVuY2hQYXRoSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGZyb20gbGlzdCBvZiBhdmFpbGFibGUgYXJ0aWZhY3RzLlxuICogSWYgbm8gcXVlcnkgYXJ0aWZhY3QgSWQgaXMgcHJvdmlkZWQsIHRoZSBhcnRpZmFjdCBtYXJrZWQgYERFRkFVTFRgIHdpbGwgYmUgcmV0dXJuZWQuXG4gKiBJZiBubyBgREVGQVVMVGAgYXJ0aWZhY3QgZXhpc3RzLCB0aGUgbW9zdCByZWNlbnRseSBjcmVhdGVkIGFydGlmYWN0IHdpbGwgYmUgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHByb3Zpc2lvbmluZ0FydGlmYWN0cyBsaXN0IG9mIHByb3Zpc2lvbmluZyBhcnRpZmFjdHMgZm9yIGEgcHJvZHVjdFxuICogQHBhcmFtIHByb3Zpc2lvbmluZ0FydGlmYWN0SWQgcXVlcnkgYXJ0aWZhY3QgSWRcbiAqIEByZXR1cm5zIHByb3Zpc2lvbmluZyBhcnRpZmFjdCBkZXRhaWxcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVByb3Zpc2lvbmluZ0FydGlmYWN0KHByb3Zpc2lvbmluZ0FydGlmYWN0czogQVdTLlNlcnZpY2VDYXRhbG9nLlByb3Zpc2lvbmluZ0FydGlmYWN0cywgcHJvdmlzaW9uaW5nQXJ0aWZhY3RJZD86IHN0cmluZyk6XG5BV1MuU2VydmljZUNhdGFsb2cuUHJvdmlzaW9uaW5nQXJ0aWZhY3Qge1xuICBpZiAocHJvdmlzaW9uaW5nQXJ0aWZhY3RJZCkge1xuICAgIGNvbnN0IHByb3Zpc2lvbmluZ0FydGlmYWN0ID0gcHJvdmlzaW9uaW5nQXJ0aWZhY3RzLmZpbHRlcihwYSA9PiBwYS5JZCA9PSBwcm92aXNpb25pbmdBcnRpZmFjdElkKTtcbiAgICBpZiAocHJvdmlzaW9uaW5nQXJ0aWZhY3QubGVuZ3RoID09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgc3BlY2lmaWVkIHByb3Zpc2lvbmluZyBhcnRpZmFjdCBpZDogJHtwcm92aXNpb25pbmdBcnRpZmFjdElkfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcHJvdmlzaW9uaW5nQXJ0aWZhY3QucG9wKCkhO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgaWYgKHByb3Zpc2lvbmluZ0FydGlmYWN0cy5maWx0ZXIocGEgPT4gcGEuR3VpZGFuY2UgPT0gJ0RFRkFVTFQnKS5sZW5ndGggPT0gMSkge1xuICAgICAgICByZXR1cm4gcHJvdmlzaW9uaW5nQXJ0aWZhY3RzLmZpbHRlcihwYSA9PiBwYS5HdWlkYW5jZSA9PSAnREVGQVVMVCcpLnBvcCgpITtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwcm92aXNpb25pbmdBcnRpZmFjdHMuc29ydCgoYSwgYikgPT4gYS5DcmVhdGVkVGltZSEudmFsdWVPZigpIC0gYi5DcmVhdGVkVGltZSEudmFsdWVPZigpKS5wb3AoKSE7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byByZXNvbHZlIGRlZmF1bHQgb3IgbGF0ZXN0IHByb3Zpc2lvbmluZyBhcnRpZmFjdC4nKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBxdWVyaWVkIGxhdW5jaCBwYXRoIGZyb20gbGlzdCBvZiBhdmFpbGFibGUgbGF1bmNoIHBhdGhzLlxuICogQHBhcmFtIGxhdW5jaFBhdGhzIGxpc3Qgb2YgYXZhaWxhYmxlIGxhdW5jaCBwYXRocyBmb3IgdGhlIHByb2R1Y3RcbiAqIEBwYXJhbSBsYXVuY2hQYXRoSWQgdGhlIHF1ZXJ5IGxhdW5jaCBwYXRoJ3MgSWRcbiAqIEByZXR1cm5zIHRoZSBsYXVuY2ggcGF0aCBzdW1tYXJ5IGZvciB0aGUgcXVlcnkgbGF1bmNoIHBhdGhcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUxhdW5jaFBhdGgobGF1bmNoUGF0aHM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5MYXVuY2hQYXRoU3VtbWFyaWVzLCBsYXVuY2hQYXRoSWQ/OiBzdHJpbmcpOiBBV1MuU2VydmljZUNhdGFsb2cuTGF1bmNoUGF0aFN1bW1hcnkge1xuICBpZiAobGF1bmNoUGF0aElkKSB7XG4gICAgY29uc3QgbGF1bmNoUGF0aCA9IGxhdW5jaFBhdGhzLmZpbHRlcihscCA9PiBscC5JZCA9PSBsYXVuY2hQYXRoSWQpO1xuICAgIGlmIChsYXVuY2hQYXRoLmxlbmd0aCA9PSAwICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBzcGVjaWZpZWQgbGF1bmNoIHBhdGggaWQ6ICR7bGF1bmNoUGF0aElkfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGF1bmNoUGF0aC5wb3AoKSE7XG4gICAgfVxuXG4gIH0gZWxzZSBpZiAobGF1bmNoUGF0aHMubGVuZ3RoID09IDEpIHtcbiAgICByZXR1cm4gbGF1bmNoUGF0aHMucG9wKCkhO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHJlc29sdmUgYmV0d2VlbiBtdWx0aXBsZSBsYXVuY2ggcGF0aHMuJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBGZXRjaGVzIHRoZSBhbGwgdGhlIGF2YWlsYWJsZSBvciBxdWVyaWVkIHNlcnZpY2UgY2F0YWxvZyBwcm9kdWN0KHMpIGZvciB0aGUgY2FsbGVyLlxuICpcbiAqIEByZXR1cm5zIGxpc3Qgb2YgcHJvZHVjdCB2aWV3IHN1bW1hcmllc1xuICovXG5hc3luYyBmdW5jdGlvbiBkZXNjcmliZVByb2R1Y3Qob3B0aW9uczogRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucyk6IFByb21pc2U8UHJvZHVjdERhdGFBZ2dyZWdhdGU+IHtcbiAgY29uc3Qgc2M6IElTZXJ2aWNlQ2F0YWxvZ0NsaWVudCA9IG9wdGlvbnMuY2xpZW50ID8/IG5ldyBTZXJ2aWNlQ2F0YWxvZ0NsaWVudCgpO1xuXG4gIGNvbnN0IGRlc2NyaWJlUHJvZHVjdFJlc3BvbnNlOiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm9kdWN0T3V0cHV0ID0gYXdhaXQgc2MuZGVzY3JpYmVQcm9kdWN0KHtcbiAgICBJZDogb3B0aW9ucy5wcm9kdWN0SWQsXG4gIH0pO1xuICB2YWxpZGF0ZVByb2R1Y3REYXRhKG9wdGlvbnMucHJvZHVjdElkISwgZGVzY3JpYmVQcm9kdWN0UmVzcG9uc2UpO1xuXG4gIGNvbnN0IHByb3Zpc2lvbmluZ0FydGlmYWN0OiBBV1MuU2VydmljZUNhdGFsb2cuUHJvdmlzaW9uaW5nQXJ0aWZhY3QgPSByZXNvbHZlUHJvdmlzaW9uaW5nQXJ0aWZhY3QoZGVzY3JpYmVQcm9kdWN0UmVzcG9uc2UuUHJvdmlzaW9uaW5nQXJ0aWZhY3RzISxcbiAgICBvcHRpb25zLnByb3Zpc2lvbmluZ0FydGlmYWN0SWQpO1xuXG4gIGNvbnN0IGxhdW5jaFBhdGg6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5MYXVuY2hQYXRoU3VtbWFyeSA9IHJlc29sdmVMYXVuY2hQYXRoKGRlc2NyaWJlUHJvZHVjdFJlc3BvbnNlLkxhdW5jaFBhdGhzISwgb3B0aW9ucy5sYXVuY2hQYXRoSWQpO1xuXG4gIGNvbnN0IHBhcmFtZXRlcnM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQgPSBhd2FpdCBkZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnMoe1xuICAgIHByb2R1Y3RJZDogb3B0aW9ucy5wcm9kdWN0SWQhLFxuICAgIHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ6IHByb3Zpc2lvbmluZ0FydGlmYWN0LklkISxcbiAgICBsYXVuY2hQYXRoSWQ6IGxhdW5jaFBhdGguSWQhLFxuICAgIGNsaWVudDogc2MsXG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgcHJvZHVjdDogZGVzY3JpYmVQcm9kdWN0UmVzcG9uc2UuUHJvZHVjdFZpZXdTdW1tYXJ5ISxcbiAgICBwcm92aXNpb25pbmdBcnRpZmFjdDogcHJvdmlzaW9uaW5nQXJ0aWZhY3QsXG4gICAgbGF1bmNoUGF0aDogbGF1bmNoUGF0aCxcbiAgICBwYXJhbXM6IHBhcmFtZXRlcnMsXG4gIH07XG59XG5cbi8qKlxuICogRmV0Y2hlcyBhbGwgdGhlIGF2YWlsYWJsZSBzZXJ2aWNlIGNhdGFsb2cgcHJvZHVjdChzKSBmb3IgdGhlIGNhbGxlci5cbiAqXG4gKiBAcmV0dXJucyBsaXN0IG9mIHByb2R1Y3QgdmlldyBzdW1tYXJpZXNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoQXZhaWxhYmxlUHJvZHVjdHMoY2xpZW50PzogSVNlcnZpY2VDYXRhbG9nQ2xpZW50KTogUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuUHJvZHVjdFZpZXdTdW1tYXJpZXM+IHtcbiAgY29uc3Qgc2MgPSBjbGllbnQgPz8gbmV3IFNlcnZpY2VDYXRhbG9nQ2xpZW50KCk7XG5cbiAgY29uc3QgcHJvZHVjdHM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5Qcm9kdWN0Vmlld1N1bW1hcmllcyA9IFtdO1xuICBsZXQgdG9rZW47XG5cbiAgZG8ge1xuICAgIGNvbnN0IHJlczogQVdTLlNlcnZpY2VDYXRhbG9nLlNlYXJjaFByb2R1Y3RzT3V0cHV0ID0gYXdhaXQgc2Muc2VhcmNoUHJvZHVjdHMoe1xuICAgICAgUGFnZVRva2VuOiB0b2tlbixcbiAgICB9KTtcblxuICAgIGlmIChyZXMuUHJvZHVjdFZpZXdTdW1tYXJpZXMpIHtcbiAgICAgIHByb2R1Y3RzLnB1c2goLi4ucmVzLlByb2R1Y3RWaWV3U3VtbWFyaWVzKTtcbiAgICB9XG4gICAgdG9rZW4gPSByZXMuTmV4dFBhZ2VUb2tlbjtcbiAgfSB3aGlsZSAodG9rZW4pO1xuXG4gIHJldHVybiBwcm9kdWN0cztcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBwcm92aXNpb24gYW4gYXJ0aWZhY3QuXG4gKiBJbmNsdWRlcyBpbmZvcm1hdGlvbiBvbiBpbnB1dHMgYW5kIG91dHB1dHMgb2YgdGhlIHByb2R1Y3QuXG4gKlxuICogQHJldHVybnMgdGhlIHByb3Zpc29uaW5nIHBhcmFtZXRlcnMgZm9yIGFuIGFydGlmYWN0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnMob3B0aW9uczogRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucyk6XG5Qcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQ+IHtcblxuICBjb25zdCBzYyA9IG9wdGlvbnMuY2xpZW50ID8/IG5ldyBTZXJ2aWNlQ2F0YWxvZ0NsaWVudCgpO1xuXG4gIGNvbnN0IHByb3Zpc2lvbmluZ1BhcmFtZXRlcnM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQgPSBhd2FpdCBzYy5kZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnMoe1xuICAgIFByb2R1Y3RJZDogb3B0aW9ucy5wcm9kdWN0SWQsXG4gICAgUHJvdmlzaW9uaW5nQXJ0aWZhY3RJZDogb3B0aW9ucy5wcm92aXNpb25pbmdBcnRpZmFjdElkLFxuICAgIFBhdGhJZDogb3B0aW9ucy5sYXVuY2hQYXRoSWQsXG4gIH0pO1xuXG4gIHJldHVybiBwcm92aXNpb25pbmdQYXJhbWV0ZXJzO1xufVxuXG4vKipcbiAqIEhvbGRzIGFsbCB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGdlbmVyYXRlIGEgcHJvZHVjdCBhcnRpZmFjdCB0byBwcm92aXNpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdERhdGFBZ2dyZWdhdGUge1xuICAvKipcbiAgICogQ29yZSBwcm9kdWN0IGRldGFpbHMuXG4gICAqL1xuICByZWFkb25seSBwcm9kdWN0OiBBV1MuU2VydmljZUNhdGFsb2cuUHJvZHVjdFZpZXdTdW1tYXJ5O1xuICAvKipcbiAgICogRGV0YWlscyBvbiB0aGUgc2VsZWN0ZWQgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGZvciB0aGUgcHJvZHVjdC5cbiAgICogUmVwcmVzZW50cyB0aGUgYWN0dWFsIHRlbXBsYXRlIHRoYXQgY29udGFpbnMgcmVzb3VyY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlzaW9uaW5nQXJ0aWZhY3Q6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5Qcm92aXNpb25pbmdBcnRpZmFjdDtcbiAgLyoqXG4gICAqIERldGFpbHMgb24gdGhlIHNlbGVjdGVkIGxhdW5jaCBwYXRoIGZvciB0aGUgcHJvZHVjdC5cbiAgICogUmVwcmVzZW50cyB0aGUgcGVybWlzc2lvbnMvYWJpbGl0eSBmb3IgZW5kIHVzZXIgdG8gcHJvdmlzaW9uIHRoZSBwcm9kdWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgbGF1bmNoUGF0aDogQVdTLlNlcnZpY2VDYXRhbG9nLkxhdW5jaFBhdGhTdW1tYXJ5O1xuICAvKipcbiAgICogRGV0YWlscyBvbiBwcm92aXNpb25pbmcgcmVxdWlyZW1lbnRzIGZvciB0aGUgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGFuZCBsYXVuY2ggcGF0aC5cbiAgICogSG9sZHMgaW5mb3JtYXRpb24gb24gdGhlIGlucHV0cyBhbmQgb3V0cHV0cyBmb3IgdGhlIGRvd25zdHJlYW0gdGVtcGxhdGUuXG4gICAqL1xuICByZWFkb25seSBwYXJhbXM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNPdXRwdXQ7XG59XG5cbi8qKlxuICogTWFrZXMgYSBzZXJpZXMgb2YgY2FsbHMgdG8gc2VydmljZSBjYXRhbG9nIHRvIGdldCBhbGwgaW5mb3JtYXRpb25cbiAqIHJlcXVpcmVkIHRvIHByb3Zpc2lvbiBhIHNlcnZpY2UgY2F0YWxvZyBwcm9kdWN0LlxuICpcbiAqIEByZXR1cm5zIFByb2R1Y3RWZXJzaW9uRGF0YSBhZ2dyZWdhdGUgb2YgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGRldGFpbHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGUob3B0aW9uczogRGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlT3B0aW9ucyk6IFByb21pc2U8UHJvZHVjdERhdGFBZ2dyZWdhdGU+IHtcbiAgY29uc3Qgc2MgPSBvcHRpb25zLmNsaWVudCA/PyBuZXcgU2VydmljZUNhdGFsb2dDbGllbnQoKTtcblxuICBjb25zdCBwcm9kdWN0RGF0YUFnZ3JlZ2F0ZSA9IGF3YWl0IGRlc2NyaWJlUHJvZHVjdCh7XG4gICAgcHJvZHVjdElkOiBvcHRpb25zLnByb2R1Y3RJZCxcbiAgICBsYXVuY2hQYXRoSWQ6IG9wdGlvbnMubGF1bmNoUGF0aElkLFxuICAgIHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ6IG9wdGlvbnMucHJvdmlzaW9uaW5nQXJ0aWZhY3RJZCxcbiAgICBjbGllbnQ6IHNjLFxuICB9KTtcblxuICByZXR1cm4gcHJvZHVjdERhdGFBZ2dyZWdhdGU7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvZHVjdERhdGEocHJvZHVjdElkOiBzdHJpbmcsIHByb2R1Y3Q6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RPdXRwdXQpOiB2b2lkIHtcbiAgaWYgKHByb2R1Y3QuUHJvZHVjdFZpZXdTdW1tYXJ5ID09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgcHJvZHVjdCBkZXRhaWxzIGZvciAke3Byb2R1Y3RJZH1gKTtcbiAgfSBlbHNlIGlmIChwcm9kdWN0LlByb3Zpc2lvbmluZ0FydGlmYWN0cyA9PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIHByb3Zpc2lvbmluZyBhcnRpZmFjdHMgZm9yIHByb2R1Y3Q6ICR7cHJvZHVjdElkfWApO1xuICB9IGVsc2UgaWYgKHByb2R1Y3QuTGF1bmNoUGF0aHMgPT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBsYXVuY2ggcGF0aHMgZm9yIHByb2R1Y3Q6ICR7cHJvZHVjdElkfWApO1xuICB9XG59Il19
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jYXRhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZpY2UtY2F0YWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQiwrQkFBd0M7QUFTeEMsTUFBYSxvQkFBb0I7SUFHL0I7UUFDRSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUEscUJBQWUsRUFBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBNkM7UUFDdkUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRU0sS0FBSyxDQUFDLDhCQUE4QixDQUFDLEtBQTZEO1FBRXZHLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUE4QztRQUN6RSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xELENBQUM7Q0FDRjtBQW5CRCxvREFtQkM7QUErQkQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLDJCQUEyQixDQUFDLHFCQUErRCxFQUFFLHNCQUErQjtJQUVuSSxJQUFJLHNCQUFzQixFQUFFO1FBQzFCLE1BQU0sb0JBQW9CLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2pHLElBQUksb0JBQW9CLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxzQkFBc0Is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WSxFQUFFLE9BQU8sQ0FBQyxZQUFZO1FBQ2xDLHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxzQkFBc0I7UUFDdEQsTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDLENBQUM7SUFFSCxPQUFPLG9CQUFvQixDQUFDO0FBQzlCLENBQUM7QUFYRCw0REFXQztBQUVELFNBQVMsbUJBQW1CLENBQUMsU0FBaUIsRUFBRSxPQUFpRDtJQUMvRixJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxTQUFTLEVBQUU7UUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsU0FBUyxFQUFFLENBQUMsQ0FBQztLQUNwRTtTQUFNLElBQUksT0FBTyxDQUFDLHFCQUFxQixJQUFJLFNBQVMsRUFBRTtRQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxTQUFTLEVBQUUsQ0FBQyxDQUFDO0tBQ3BGO1NBQU0sSUFBSSxPQUFPLENBQUMsV0FBVyxJQUFJLFNBQVMsRUFBRTtRQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0tBQzFFO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEFXUyBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCB7IGNyZWF0ZUF3c0NsaWVudCB9IGZyb20gJy4vYXdzJztcblxuZXhwb3J0IGludGVyZmFjZSBJU2VydmljZUNhdGFsb2dDbGllbnQge1xuICBzZWFyY2hQcm9kdWN0cyhpbnB1dDogQVdTLlNlcnZpY2VDYXRhbG9nLkxpc3RQb3J0Zm9saW9zSW5wdXQpOiBQcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5MaXN0UG9ydGZvbGlvc091dHB1dD47XG4gIGRlc2NyaWJlUHJvdmlzaW9uaW5nUGFyYW1ldGVycyhpbnB1dDogQVdTLlNlcnZpY2VDYXRhbG9nLkRlc2NyaWJlUHJvdmlzaW9uaW5nUGFyYW1ldGVyc0lucHV0KTpcbiAgUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzT3V0cHV0PjtcbiAgZGVzY3JpYmVQcm9kdWN0KGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm9kdWN0SW5wdXQpOiBQcm9taXNlPEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb2R1Y3RPdXRwdXQ+O1xufVxuXG5leHBvcnQgY2xhc3MgU2VydmljZUNhdGFsb2dDbGllbnQgaW1wbGVtZW50cyBJU2VydmljZUNhdGFsb2dDbGllbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IHNjOiBBV1MuU2VydmljZUNhdGFsb2c7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zYyA9IGNyZWF0ZUF3c0NsaWVudChBV1MuU2VydmljZUNhdGFsb2cpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNlYXJjaFByb2R1Y3RzKGlucHV0OiBBV1MuU2VydmljZUNhdGFsb2cuU2VhcmNoUHJvZHVjdHNJbnB1dCk6IFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLlNlYXJjaFByb2R1Y3RzT3V0cHV0PiB7XG4gICAgcmV0dXJuIHRoaXMuc2Muc2VhcmNoUHJvZHVjdHMoaW5wdXQpLnByb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnMoaW5wdXQ6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5EZXNjcmliZVByb3Zpc2lvbmluZ1BhcmFtZXRlcnNJbnB1dCk6XG4gIFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLkRlc2NyaWJlUHJvdmlzaW9uaW5nUGFyYW1ldGVyc091dHB1dD4ge1xuICAgIHJldHVybiB0aGlzLnNjLmRlc2NyaWJlUHJvdmlzaW9uaW5nUGFyYW1ldGVycyhpbnB1dCkucHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlc2NyaWJlUHJvZHVjdChpbnB1dDogQVdTLlNlcnZpY2VDYXRhbG9nLkRlc2NyaWJlUHJvZHVjdElucHV0KTogUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm9kdWN0T3V0cHV0PiB7XG4gICAgcmV0dXJuIHRoaXMuc2MuZGVzY3JpYmVQcm9kdWN0KGlucHV0KS5wcm9taXNlKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm92aWRlIHF1ZXJ5IHZhbHVlcyBmb3IgYSBzcGVjaWZpYyBwcm92aXNpb25hYmxlIHByb2R1Y3QuXG4gKiBJZiBubyBzcGVjaWZpYyBJRHMgYXJlIGRlY2xhcmVkIGZvciBhIHByb2R1Y3QsIHdlIHdpbGwgdXNlIHRoZSBzZXQgYERFRkFVTFRgIHZhbHVlIGZvciB0aGUgcHJvdmlzaW9uaW5nIGFydGlmYWN0IGFuZCBsYXVuY2ggcGF0aC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXNjcmliZVByb2R1Y3RBZ2dyZWdhdGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgY2xpZW50IHRoYXQgcGVyZm9ybXMgY2FsbHMgdG8gQVdTIFNlcnZpY2UgQ2F0YWxvZy4gWW91IGNhbiBwcm92aWRlIGEgbW9jayBoZXJlXG4gICAqIGZvciB0ZXN0aW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEEgcmVhbCBTZXJ2aWNlIENhdGFsb2cgY2xpZW50XG4gICAqL1xuICByZWFkb25seSBjbGllbnQ/OiBJU2VydmljZUNhdGFsb2dDbGllbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9kdWN0IElkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZHVjdElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvdmlzaW9uaW5nIGFydGlmYWN0IElkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlzaW9uaW5nQXJ0aWZhY3RJZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxhdW5jaCBwYXRoIElkLlxuICAgKi9cbiAgcmVhZG9ubHkgbGF1bmNoUGF0aElkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHByb3Zpc2lvbmluZyBhcnRpZmFjdCBmcm9tIGxpc3Qgb2YgYXZhaWxhYmxlIGFydGlmYWN0cy5cbiAqIElmIG5vIHF1ZXJ5IGFydGlmYWN0IElkIGlzIHByb3ZpZGVkLCB0aGUgYXJ0aWZhY3QgbWFya2VkIGBERUZBVUxUYCB3aWxsIGJlIHJldHVybmVkLlxuICogSWYgbm8gYERFRkFVTFRgIGFydGlmYWN0IGV4aXN0cywgdGhlIG1vc3QgcmVjZW50bHkgY3JlYXRlZCBhcnRpZmFjdCB3aWxsIGJlIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSBwcm92aXNpb25pbmdBcnRpZmFjdHMgbGlzdCBvZiBwcm92aXNpb25pbmcgYXJ0aWZhY3RzIGZvciBhIHByb2R1Y3RcbiAqIEBwYXJhbSBwcm92aXNpb25pbmdBcnRpZmFjdElkIHF1ZXJ5IGFydGlmYWN0IElkXG4gKiBAcmV0dXJucyBwcm92aXNpb25pbmcgYXJ0aWZhY3QgZGV0YWlsXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVQcm92aXNpb25pbmdBcnRpZmFjdChwcm92aXNpb25pbmdBcnRpZmFjdHM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5Qcm92aXNpb25pbmdBcnRpZmFjdHMsIHByb3Zpc2lvbmluZ0FydGlmYWN0SWQ/OiBzdHJpbmcpOlxuQVdTLlNlcnZpY2VDYXRhbG9nLlByb3Zpc2lvbmluZ0FydGlmYWN0IHtcbiAgaWYgKHByb3Zpc2lvbmluZ0FydGlmYWN0SWQpIHtcbiAgICBjb25zdCBwcm92aXNpb25pbmdBcnRpZmFjdCA9IHByb3Zpc2lvbmluZ0FydGlmYWN0cy5maWx0ZXIocGEgPT4gcGEuSWQgPT0gcHJvdmlzaW9uaW5nQXJ0aWZhY3RJZCk7XG4gICAgaWYgKHByb3Zpc2lvbmluZ0FydGlmYWN0Lmxlbmd0aCA9PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIHNwZWNpZmllZCBwcm92aXNpb25pbmcgYXJ0aWZhY3QgaWQ6ICR7cHJvdmlzaW9uaW5nQXJ0aWZhY3RJZH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHByb3Zpc2lvbmluZ0FydGlmYWN0LnBvcCgpITtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChwcm92aXNpb25pbmdBcnRpZmFjdHMuZmlsdGVyKHBhID0+IHBhLkd1aWRhbmNlID09ICdERUZBVUxUJykubGVuZ3RoID09IDEpIHtcbiAgICAgICAgcmV0dXJuIHByb3Zpc2lvbmluZ0FydGlmYWN0cy5maWx0ZXIocGEgPT4gcGEuR3VpZGFuY2UgPT0gJ0RFRkFVTFQnKS5wb3AoKSE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcHJvdmlzaW9uaW5nQXJ0aWZhY3RzLnNvcnQoKGEsIGIpID0+IGEuQ3JlYXRlZFRpbWUhLnZhbHVlT2YoKSAtIGIuQ3JlYXRlZFRpbWUhLnZhbHVlT2YoKSkucG9wKCkhO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gcmVzb2x2ZSBkZWZhdWx0IG9yIGxhdGVzdCBwcm92aXNpb25pbmcgYXJ0aWZhY3QuJyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcXVlcmllZCBsYXVuY2ggcGF0aCBmcm9tIGxpc3Qgb2YgYXZhaWxhYmxlIGxhdW5jaCBwYXRocy5cbiAqIEBwYXJhbSBsYXVuY2hQYXRocyBsaXN0IG9mIGF2YWlsYWJsZSBsYXVuY2ggcGF0aHMgZm9yIHRoZSBwcm9kdWN0XG4gKiBAcGFyYW0gbGF1bmNoUGF0aElkIHRoZSBxdWVyeSBsYXVuY2ggcGF0aCdzIElkXG4gKiBAcmV0dXJucyB0aGUgbGF1bmNoIHBhdGggc3VtbWFyeSBmb3IgdGhlIHF1ZXJ5IGxhdW5jaCBwYXRoXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVMYXVuY2hQYXRoKGxhdW5jaFBhdGhzOiBBV1MuU2VydmljZUNhdGFsb2cuTGF1bmNoUGF0aFN1bW1hcmllcywgbGF1bmNoUGF0aElkPzogc3RyaW5nKTogQVdTLlNlcnZpY2VDYXRhbG9nLkxhdW5jaFBhdGhTdW1tYXJ5IHtcbiAgaWYgKGxhdW5jaFBhdGhJZCkge1xuICAgIGNvbnN0IGxhdW5jaFBhdGggPSBsYXVuY2hQYXRocy5maWx0ZXIobHAgPT4gbHAuSWQgPT0gbGF1bmNoUGF0aElkKTtcbiAgICBpZiAobGF1bmNoUGF0aC5sZW5ndGggPT0gMCApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgc3BlY2lmaWVkIGxhdW5jaCBwYXRoIGlkOiAke2xhdW5jaFBhdGhJZH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGxhdW5jaFBhdGgucG9wKCkhO1xuICAgIH1cblxuICB9IGVsc2UgaWYgKGxhdW5jaFBhdGhzLmxlbmd0aCA9PSAxKSB7XG4gICAgcmV0dXJuIGxhdW5jaFBhdGhzLnBvcCgpITtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byByZXNvbHZlIGJldHdlZW4gbXVsdGlwbGUgbGF1bmNoIHBhdGhzLicpO1xuICB9XG59XG5cbi8qKlxuICogRmV0Y2hlcyB0aGUgYWxsIHRoZSBhdmFpbGFibGUgb3IgcXVlcmllZCBzZXJ2aWNlIGNhdGFsb2cgcHJvZHVjdChzKSBmb3IgdGhlIGNhbGxlci5cbiAqXG4gKiBAcmV0dXJucyBsaXN0IG9mIHByb2R1Y3QgdmlldyBzdW1tYXJpZXNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGVzY3JpYmVQcm9kdWN0KG9wdGlvbnM6IERlc2NyaWJlUHJvZHVjdEFnZ3JlZ2F0ZU9wdGlvbnMpOiBQcm9taXNlPFByb2R1Y3REYXRhQWdncmVnYXRlPiB7XG4gIGNvbnN0IHNjOiBJU2VydmljZUNhdGFsb2dDbGllbnQgPSBvcHRpb25zLmNsaWVudCA/PyBuZXcgU2VydmljZUNhdGFsb2dDbGllbnQoKTtcblxuICBjb25zdCBkZXNjcmliZVByb2R1Y3RSZXNwb25zZTogQVdTLlNlcnZpY2VDYXRhbG9nLkRlc2NyaWJlUHJvZHVjdE91dHB1dCA9IGF3YWl0IHNjLmRlc2NyaWJlUHJvZHVjdCh7XG4gICAgSWQ6IG9wdGlvbnMucHJvZHVjdElkLFxuICB9KTtcbiAgdmFsaWRhdGVQcm9kdWN0RGF0YShvcHRpb25zLnByb2R1Y3RJZCEsIGRlc2NyaWJlUHJvZHVjdFJlc3BvbnNlKTtcblxuICBjb25zdCBwcm92aXNpb25pbmdBcnRpZmFjdDogQVdTLlNlcnZpY2VDYXRhbG9nLlByb3Zpc2lvbmluZ0FydGlmYWN0ID0gcmVzb2x2ZVByb3Zpc2lvbmluZ0FydGlmYWN0KGRlc2NyaWJlUHJvZHVjdFJlc3BvbnNlLlByb3Zpc2lvbmluZ0FydGlmYWN0cyEsXG4gICAgb3B0aW9ucy5wcm92aXNpb25pbmdBcnRpZmFjdElkKTtcblxuICBjb25zdCBsYXVuY2hQYXRoOiBBV1MuU2VydmljZUNhdGFsb2cuTGF1bmNoUGF0aFN1bW1hcnkgPSByZXNvbHZlTGF1bmNoUGF0aChkZXNjcmliZVByb2R1Y3RSZXNwb25zZS5MYXVuY2hQYXRocyEsIG9wdGlvbnMubGF1bmNoUGF0aElkKTtcblxuICBjb25zdCBwYXJhbWV0ZXJzOiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzT3V0cHV0ID0gYXdhaXQgZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKHtcbiAgICBwcm9kdWN0SWQ6IG9wdGlvbnMucHJvZHVjdElkISxcbiAgICBwcm92aXNpb25pbmdBcnRpZmFjdElkOiBwcm92aXNpb25pbmdBcnRpZmFjdC5JZCEsXG4gICAgbGF1bmNoUGF0aElkOiBsYXVuY2hQYXRoLklkISxcbiAgICBjbGllbnQ6IHNjLFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIHByb2R1Y3Q6IGRlc2NyaWJlUHJvZHVjdFJlc3BvbnNlLlByb2R1Y3RWaWV3U3VtbWFyeSEsXG4gICAgcHJvdmlzaW9uaW5nQXJ0aWZhY3Q6IHByb3Zpc2lvbmluZ0FydGlmYWN0LFxuICAgIGxhdW5jaFBhdGg6IGxhdW5jaFBhdGgsXG4gICAgcGFyYW1zOiBwYXJhbWV0ZXJzLFxuICB9O1xufVxuXG4vKipcbiAqIEZldGNoZXMgYWxsIHRoZSBhdmFpbGFibGUgc2VydmljZSBjYXRhbG9nIHByb2R1Y3QocykgZm9yIHRoZSBjYWxsZXIuXG4gKlxuICogQHJldHVybnMgbGlzdCBvZiBwcm9kdWN0IHZpZXcgc3VtbWFyaWVzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaEF2YWlsYWJsZVByb2R1Y3RzKGNsaWVudD86IElTZXJ2aWNlQ2F0YWxvZ0NsaWVudCk6IFByb21pc2U8QVdTLlNlcnZpY2VDYXRhbG9nLlByb2R1Y3RWaWV3U3VtbWFyaWVzPiB7XG4gIGNvbnN0IHNjID0gY2xpZW50ID8/IG5ldyBTZXJ2aWNlQ2F0YWxvZ0NsaWVudCgpO1xuXG4gIGNvbnN0IHByb2R1Y3RzOiBBV1MuU2VydmljZUNhdGFsb2cuUHJvZHVjdFZpZXdTdW1tYXJpZXMgPSBbXTtcbiAgbGV0IHRva2VuO1xuXG4gIGRvIHtcbiAgICBjb25zdCByZXM6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5TZWFyY2hQcm9kdWN0c091dHB1dCA9IGF3YWl0IHNjLnNlYXJjaFByb2R1Y3RzKHtcbiAgICAgIFBhZ2VUb2tlbjogdG9rZW4sXG4gICAgfSk7XG5cbiAgICBpZiAocmVzLlByb2R1Y3RWaWV3U3VtbWFyaWVzKSB7XG4gICAgICBwcm9kdWN0cy5wdXNoKC4uLnJlcy5Qcm9kdWN0Vmlld1N1bW1hcmllcyk7XG4gICAgfVxuICAgIHRva2VuID0gcmVzLk5leHRQYWdlVG9rZW47XG4gIH0gd2hpbGUgKHRva2VuKTtcblxuICByZXR1cm4gcHJvZHVjdHM7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgaW5mb3JtYXRpb24gcmVxdWlyZWQgdG8gcHJvdmlzaW9uIGFuIGFydGlmYWN0LlxuICogSW5jbHVkZXMgaW5mb3JtYXRpb24gb24gaW5wdXRzIGFuZCBvdXRwdXRzIG9mIHRoZSBwcm9kdWN0LlxuICpcbiAqIEByZXR1cm5zIHRoZSBwcm92aXNvbmluZyBwYXJhbWV0ZXJzIGZvciBhbiBhcnRpZmFjdFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKG9wdGlvbnM6IERlc2NyaWJlUHJvZHVjdEFnZ3JlZ2F0ZU9wdGlvbnMpOlxuUHJvbWlzZTxBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzT3V0cHV0PiB7XG5cbiAgY29uc3Qgc2MgPSBvcHRpb25zLmNsaWVudCA/PyBuZXcgU2VydmljZUNhdGFsb2dDbGllbnQoKTtcblxuICBjb25zdCBwcm92aXNpb25pbmdQYXJhbWV0ZXJzOiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzT3V0cHV0ID0gYXdhaXQgc2MuZGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzKHtcbiAgICBQcm9kdWN0SWQ6IG9wdGlvbnMucHJvZHVjdElkLFxuICAgIFByb3Zpc2lvbmluZ0FydGlmYWN0SWQ6IG9wdGlvbnMucHJvdmlzaW9uaW5nQXJ0aWZhY3RJZCxcbiAgICBQYXRoSWQ6IG9wdGlvbnMubGF1bmNoUGF0aElkLFxuICB9KTtcblxuICByZXR1cm4gcHJvdmlzaW9uaW5nUGFyYW1ldGVycztcbn1cblxuLyoqXG4gKiBIb2xkcyBhbGwgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byBnZW5lcmF0ZSBhIHByb2R1Y3QgYXJ0aWZhY3QgdG8gcHJvdmlzaW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3REYXRhQWdncmVnYXRlIHtcbiAgLyoqXG4gICAqIENvcmUgcHJvZHVjdCBkZXRhaWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZHVjdDogQVdTLlNlcnZpY2VDYXRhbG9nLlByb2R1Y3RWaWV3U3VtbWFyeTtcbiAgLyoqXG4gICAqIERldGFpbHMgb24gdGhlIHNlbGVjdGVkIHByb3Zpc2lvbmluZyBhcnRpZmFjdCBmb3IgdGhlIHByb2R1Y3QuXG4gICAqIFJlcHJlc2VudHMgdGhlIGFjdHVhbCB0ZW1wbGF0ZSB0aGF0IGNvbnRhaW5zIHJlc291cmNlcy5cbiAgICovXG4gIHJlYWRvbmx5IHByb3Zpc2lvbmluZ0FydGlmYWN0OiBBV1MuU2VydmljZUNhdGFsb2cuUHJvdmlzaW9uaW5nQXJ0aWZhY3Q7XG4gIC8qKlxuICAgKiBEZXRhaWxzIG9uIHRoZSBzZWxlY3RlZCBsYXVuY2ggcGF0aCBmb3IgdGhlIHByb2R1Y3QuXG4gICAqIFJlcHJlc2VudHMgdGhlIHBlcm1pc3Npb25zL2FiaWxpdHkgZm9yIGVuZCB1c2VyIHRvIHByb3Zpc2lvbiB0aGUgcHJvZHVjdC5cbiAgICovXG4gIHJlYWRvbmx5IGxhdW5jaFBhdGg6IEFXUy5TZXJ2aWNlQ2F0YWxvZy5MYXVuY2hQYXRoU3VtbWFyeTtcbiAgLyoqXG4gICAqIERldGFpbHMgb24gcHJvdmlzaW9uaW5nIHJlcXVpcmVtZW50cyBmb3IgdGhlIHByb3Zpc2lvbmluZyBhcnRpZmFjdCBhbmQgbGF1bmNoIHBhdGguXG4gICAqIEhvbGRzIGluZm9ybWF0aW9uIG9uIHRoZSBpbnB1dHMgYW5kIG91dHB1dHMgZm9yIHRoZSBkb3duc3RyZWFtIHRlbXBsYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1zOiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm92aXNpb25pbmdQYXJhbWV0ZXJzT3V0cHV0O1xufVxuXG4vKipcbiAqIE1ha2VzIGEgc2VyaWVzIG9mIGNhbGxzIHRvIHNlcnZpY2UgY2F0YWxvZyB0byBnZXQgYWxsIGluZm9ybWF0aW9uXG4gKiByZXF1aXJlZCB0byBwcm92aXNpb24gYSBzZXJ2aWNlIGNhdGFsb2cgcHJvZHVjdC5cbiAqXG4gKiBAcmV0dXJucyBQcm9kdWN0VmVyc2lvbkRhdGEgYWdncmVnYXRlIG9mIHByb3Zpc2lvbmluZyBhcnRpZmFjdCBkZXRhaWxzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVzY3JpYmVQcm9kdWN0QWdncmVnYXRlKG9wdGlvbnM6IERlc2NyaWJlUHJvZHVjdEFnZ3JlZ2F0ZU9wdGlvbnMpOiBQcm9taXNlPFByb2R1Y3REYXRhQWdncmVnYXRlPiB7XG4gIGNvbnN0IHNjID0gb3B0aW9ucy5jbGllbnQgPz8gbmV3IFNlcnZpY2VDYXRhbG9nQ2xpZW50KCk7XG5cbiAgY29uc3QgcHJvZHVjdERhdGFBZ2dyZWdhdGUgPSBhd2FpdCBkZXNjcmliZVByb2R1Y3Qoe1xuICAgIHByb2R1Y3RJZDogb3B0aW9ucy5wcm9kdWN0SWQsXG4gICAgbGF1bmNoUGF0aElkOiBvcHRpb25zLmxhdW5jaFBhdGhJZCxcbiAgICBwcm92aXNpb25pbmdBcnRpZmFjdElkOiBvcHRpb25zLnByb3Zpc2lvbmluZ0FydGlmYWN0SWQsXG4gICAgY2xpZW50OiBzYyxcbiAgfSk7XG5cbiAgcmV0dXJuIHByb2R1Y3REYXRhQWdncmVnYXRlO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb2R1Y3REYXRhKHByb2R1Y3RJZDogc3RyaW5nLCBwcm9kdWN0OiBBV1MuU2VydmljZUNhdGFsb2cuRGVzY3JpYmVQcm9kdWN0T3V0cHV0KTogdm9pZCB7XG4gIGlmIChwcm9kdWN0LlByb2R1Y3RWaWV3U3VtbWFyeSA9PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIHByb2R1Y3QgZGV0YWlscyBmb3IgJHtwcm9kdWN0SWR9YCk7XG4gIH0gZWxzZSBpZiAocHJvZHVjdC5Qcm92aXNpb25pbmdBcnRpZmFjdHMgPT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBwcm92aXNpb25pbmcgYXJ0aWZhY3RzIGZvciBwcm9kdWN0OiAke3Byb2R1Y3RJZH1gKTtcbiAgfSBlbHNlIGlmIChwcm9kdWN0LkxhdW5jaFBhdGhzID09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgbGF1bmNoIHBhdGhzIGZvciBwcm9kdWN0OiAke3Byb2R1Y3RJZH1gKTtcbiAgfVxufSJdfQ==
package/package.json CHANGED
@@ -36,27 +36,28 @@
36
36
  "organization": true
37
37
  },
38
38
  "devDependencies": {
39
+ "@stylistic/eslint-plugin": "^2",
39
40
  "@types/jest": "^26.0.24",
40
41
  "@types/node": "^16",
41
- "@typescript-eslint/eslint-plugin": "^7",
42
- "@typescript-eslint/parser": "^7",
43
- "aws-cdk-lib": "^2.220.0",
44
- "cdklabs-projen-project-types": "^0.1.205",
42
+ "@typescript-eslint/eslint-plugin": "^8",
43
+ "@typescript-eslint/parser": "^8",
44
+ "aws-cdk-lib": "^2.221.0",
45
+ "cdklabs-projen-project-types": "^0.3.7",
45
46
  "commit-and-tag-version": "^12",
46
47
  "constructs": "^10",
47
- "eslint": "^8",
48
+ "eslint": "^9",
48
49
  "eslint-import-resolver-typescript": "^2.7.1",
49
50
  "eslint-plugin-import": "^2.32.0",
50
51
  "jest": "^27",
51
- "jest-junit": "^15",
52
+ "jest-junit": "^16",
52
53
  "jsii": "^5.9.10",
53
- "projen": "^0.88.0",
54
+ "projen": "^0.98.4",
54
55
  "ts-jest": "^27",
55
56
  "ts-node": "^10.9.2",
56
57
  "typescript": "^4.9.5"
57
58
  },
58
59
  "dependencies": {
59
- "aws-cdk-lib": "^2.220.0",
60
+ "aws-cdk-lib": "^2.221.0",
60
61
  "aws-sdk": "^2.1692.0",
61
62
  "case": "^1.6.3",
62
63
  "constructs": "^10",
@@ -78,7 +79,7 @@
78
79
  "publishConfig": {
79
80
  "access": "public"
80
81
  },
81
- "version": "0.2.1007",
82
+ "version": "0.2.1009",
82
83
  "jest": {
83
84
  "coverageProvider": "v8",
84
85
  "testMatch": [