ngx-wapp-components 2.1.11 → 2.1.12

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.
@@ -132,8 +132,13 @@ export class WMaterialServiceCardComponent {
132
132
  return this.wappingService.imageUrl;
133
133
  }
134
134
  else {
135
- this.isNoImage = true;
136
- return './../../../assets/wappIcons/image.svg';
135
+ if (this.defaultImage) {
136
+ return this.defaultImage;
137
+ }
138
+ else {
139
+ this.isNoImage = true;
140
+ return './../../../assets/wappIcons/image.svg';
141
+ }
137
142
  }
138
143
  }
139
144
  }
@@ -166,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
166
171
  }], onHoverImageTooltip: [{
167
172
  type: Input
168
173
  }] } });
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy1tYXRlcmlhbC1zZXJ2aWNlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvbWF0ZXJpYWwvdy1tYXRlcmlhbC1zZXJ2aWNlLWNhcmQvdy1tYXRlcmlhbC1zZXJ2aWNlLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvbWF0ZXJpYWwvdy1tYXRlcmlhbC1zZXJ2aWNlLWNhcmQvdy1tYXRlcmlhbC1zZXJ2aWNlLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUE2QixNQUFNLDhCQUE4QixDQUFDO0FBU3BHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7Ozs7Ozs7OztBQVM5RixNQUFNLE9BQU8sNkJBQTZCO0lBcUJ4QyxJQUFhLDJCQUEyQixDQUFDLEtBQWlDO1FBQ3hFLElBQUcsS0FBSztZQUFFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFJRCxJQUFhLGNBQWMsQ0FBQyxLQUFxQjtRQUMvQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFHLEtBQUs7WUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIs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eUI7c0JBQWpDLEtBQUs7Z0JBUUcseUJBQXlCO3NCQUFqQyxLQUFLO2dCQUNJLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFFRSxtQkFBbUI7c0JBQTNCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2FyZFN0YXR1cywgU2VuZGluZ1N0YXR1cywgV2FwcGluZ1NlcnZpY2VBcHBWaWV3VHlwZSB9IGZyb20gJy4uL3NoYXJlZC9tb2RlbHMvZW51bXMubW9kZWwnO1xyXG5pbXBvcnQgeyBXYXBwaW5nU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9tb2RlbHMvd2FwcGluZy1zZXJ2aWNlJztcclxuaW1wb3J0IHsgV2FwcGluZ1NlcnZpY2VUcmFuc2xhdGlvbnMgfSBmcm9tICcuLi9zaGFyZWQvbW9kZWxzL3dhcHBpbmctc2VydmljZS10cmFuc2xhdGlvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBXYXBwaW5nU2VydmljZUl0ZW1WaWV3IH0gZnJvbSAnLi4vc2hhcmVkL21vZGVscy93YXBwaW5nLXNlcnZpY2UtaXRlbS12aWV3JztcclxuaW1wb3J0IHsgTWF0SWNvblJlZ2lzdHJ5IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBXYXBwaW5nU2VydmljZVRlbXBsYXRlIH0gZnJvbSAnLi4vc2hhcmVkL21vZGVscy93YXBwaW5nLXNlcnZpY2UtdGVtcGxhdGUubW9kZWwnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgV0ltYWdlQ3JvcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ZpbGUvdy1pbWFnZS1jcm9wcGVyL3ctaW1hZ2UtY3JvcHBlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXRmlsZUI2NCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvdy1maWxlLWI2NC5tb2RlbCc7XHJcbmltcG9ydCB7IFdJbWFnZUNyb3BwZXJEYXRhIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy93LWltYWdlLWNyb3BwZXItZGF0YS5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3ctbWF0ZXJpYWwtc2VydmljZS1jYXJkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdy1tYXRlcmlhbC1zZXJ2aWNlLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ctbWF0ZXJpYWwtc2VydmljZS1jYXJkLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFdNYXRlcmlhbFNlcnZpY2VDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBpc0Rldk1vZGVBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1NlbmRHaWZ0Q2FyZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFsbG93U2VsZWN0U2VuZEdpZnRDYXJkOiBib29sZWFuID0gdHJ1ZTtcclxuICBcclxuICBlbnVtU2VuZGluZ1N0YXR1czogdHlwZW9mIFNlbmRpbmdTdGF0dXMgPSAgU2VuZGluZ1N0YXR1cztcclxuICBlY2FyZFN0YXR1czogdHlwZW9mIENhcmRTdGF0dXMgPSBDYXJkU3RhdHVzO1xyXG5cclxuICB3YXBwaW5nU2VydmljZVJlYWR5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgZW1wdHlUaWxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX3dhcHBpbmdUcmFuc2xhdGlvbnM6IFdhcHBpbmdTZXJ2aWNlVHJhbnNsYXRpb25zID0ge1xyXG4gICAgYWN0aXZlZFNlcnZpY2U6ICdBY3RpdmFkYScsXHJcbiAgICBkaXNhYmxlZFNlcnZpY2U6ICdEZXNhY3RpdmFkYScsXHJcbiAgICBzY2hlZHVsZWRMYWJlbDogJ1Byb2dyYW1hZGEgcGFyYSBlbnZpYXIgYSB7e25hbWV9fScsXHJcbiAgICBzZW5kTGFiZWw6ICdFbnZpYWRhIGEge3tuYW1lfX0nLFxyXG4gICAgY2FyZEdlbmVyYXRlZDogJ1R1IHRhcmpldGEgZXN0YXLDoSBkaXNwb25pYmxlIHBhcmEgZWwgZW52w61vIGVuIGJyZXZlcyBpbnN0YW50ZXMnLFxyXG4gICAgcmVjZWl2ZWRMYWJlbDogXCJFbnZpYWRhIHBvciB7e25hbWV9fVwiLFxyXG4gICAgc2hvd01vcmU6IFwiTW9zdHJhciBtw6FzXCIsXHJcbiAgfTtcclxuICBcclxuICBASW5wdXQoKSBzZXQgd2FwcGluZ1NlcnZpY2VzVHJhbnNsYXRpb25zKHZhbHVlOiBXYXBwaW5nU2VydmljZVRyYW5zbGF0aW9ucykge1xyXG4gICAgaWYodmFsdWUpIHRoaXMuX3dhcHBpbmdUcmFuc2xhdGlvbnMgPSB2YWx1ZTtcclxuICB9XHJcbiAgXHJcbiAgZ2V0IHdhcHBpbmdUcmFuc2xhdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2FwcGluZ1RyYW5zbGF0aW9ucztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3dhcHBpbmdTZXJ2aWNlITogV2FwcGluZ1NlcnZpY2U7XHJcblxyXG4gIEBJbnB1dCgpIHNldCB3YXBwaW5nU2VydmljZSh2YWx1ZTogV2FwcGluZ1NlcnZpY2UpIHtcclxuICAgIHRoaXMuX3dhcHBpbmdTZXJ2aWNlID0gdmFsdWU7XHJcbiAgICBpZih2YWx1ZSkgdGhpcy5nZXRXYXBwaW5nU2VydmljZVRpdGxlcyh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgd2FwcGluZ1NlcnZpY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2FwcGluZ1NlcnZpY2U7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCdjYXJkQ2xpY2tlZCcpIGNhcmRDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxXYXBwaW5nU2VydmljZT4oKTtcclxuXHJcbiAgQElucHV0KCkgZGVmYXVsdEltYWdlITogV0ZpbGVCNjQgfCBzdHJpbmc7XHJcbiAgQElucHV0KCkgY3JvcHBlZEltYWdlQ29uZmlndXJhdGlvbjogV0ltYWdlQ3JvcHBlckRhdGEgPSB7XHJcbiAgICByb3VuZGVkQ3JvcHBlcjogZmFsc2UsIFxyXG4gICAgY29uZmlndXJlZEFzcGVjdFJhdGlvOiA0LzMsIFxyXG4gICAgdmlld1BvcnRIZWlodFB4OiA2MDAsIFxyXG4gICAgdmlld1BvcnRXaWR0aFB4OiA4MDAsIFxyXG4gICAgbWF4RmlsZVNpemU6IDIwMDBcclxuICB9O1xyXG5cclxuICBASW5wdXQoKSBjcm9wcGVkRGlhbG9nVHJhbnNsYXRpb25zOiBhbnk7XHJcbiAgQE91dHB1dCgpIG9uRGVmYXVsdEltYWdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFdGaWxlQjY0PigpO1xyXG4gIGlzTm9JbWFnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG9uSG92ZXJJbWFnZVRvb2x0aXA6IGFueSA9ICdVcGxvYWQgaW1hZ2UnO1xyXG4gIFxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBtYXRJY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSxcclxuICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsIFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLm1hdEljb25SZWdpc3RyeS5hZGRTdmdJY29uKFwiYWN0aXZhdGVkXCIsIHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChcImFzc2V0cy93YXBwSWNvbnMvYWN0aXZhdGVkLnN2Z1wiKSk7XHJcbiAgICB0aGlzLm1hdEljb25SZWdpc3RyeS5hZGRTdmdJY29uKFwiZGVhY3RpdmF0ZWRcIiwgdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKFwiYXNzZXRzL3dhcHBJY29ucy9kZWFjdGl2YXRlZC5zdmdcIikpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYoY2hhbmdlc1snd2FwcGluZ1NlcnZpY2UnXSAmJiBjaGFuZ2VzWyd3YXBwaW5nU2VydmljZSddLmN1cnJlbnRWYWx1ZSl7XHJcbiAgICAgIHRoaXMud2FwcGluZ1NlcnZpY2UgPSBjaGFuZ2VzWyd3YXBwaW5nU2VydmljZSddLmN1cnJlbnRWYWx1ZVxyXG4gICAgfVxyXG5cclxuICAgIGlmKGNoYW5nZXNbJ2RlZmF1bHRJbWFnZSddICYmIGNoYW5nZXNbJ2RlZmF1bHRJbWFnZSddLmN1cnJlbnRWYWx1ZSl7XHJcbiAgICAgIHRoaXMuZGVmYXVsdEltYWdlID0gY2hhbmdlc1snZGVmYXVsdEltYWdlJ10uY3VycmVudFZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0V2FwcGluZ1NlcnZpY2VUaXRsZXMoc2VydmljZTogV2FwcGluZ1NlcnZpY2UpIHtcclxuICAgIGlmIChzZXJ2aWNlLndhcHBpbmdTZXJ2aWNlVGVtcGxhdGVzICE9IG51bGwpIHtcclxuICAgICAgc2VydmljZS53YXBwaW5nU2VydmljZVRlbXBsYXRlcy5mb3JFYWNoKCh3YXBwaW5nU2VydmljZVRlbXBsYXRlOiBXYXBwaW5nU2VydmljZVRlbXBsYXRlKSA9PiB7XHJcbiAgICAgICAgaWYgKHdhcHBpbmdTZXJ2aWNlVGVtcGxhdGUuc3VtbWFyeUhlYWRlciAmJiB3YXBwaW5nU2VydmljZVRlbXBsYXRlLnN1bW1hcnlIZWFkZXIudHJpbSgpICE9PSAnJyl7XHJcbiAgICAgICAgICBzZXJ2aWNlLnRpbGUxID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwod2FwcGluZ1NlcnZpY2VUZW1wbGF0ZS5zdW1tYXJ5SGVhZGVyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc2VydmljZS50aWxlMSA9ICcnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHdhcHBpbmdTZXJ2aWNlVGVtcGxhdGUuc3VtbWFyeUJvZHkgJiYgd2FwcGluZ1NlcnZpY2VUZW1wbGF0ZS5zdW1tYXJ5Qm9keS50cmltKCkgIT09ICcnKXtcclxuICAgICAgICAgIHNlcnZpY2UudGlsZTMgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh3YXBwaW5nU2VydmljZVRlbXBsYXRlLnN1bW1hcnlCb2R5KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc2VydmljZS50aWxlMyA9ICcnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLndhcHBpbmdTZXJ2aWNlUmVhZHkgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FyZE9uQ2xpY2soc2VydmljZTogV2FwcGluZ1NlcnZpY2UpIHtcclxuICAgIHRoaXMuY2FyZENsaWNrZWQuZW1pdChzZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIGhhc0h0bWwodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIC88XFwvP1thLXpdW1xcc1xcU10qPi9pLnRlc3QodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0SW1hZ2UoKXtcclxuICAgIGNvbnN0IHJlZjogRHluYW1pY0RpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKFdJbWFnZUNyb3BwZXJDb21wb25lbnQsIHtcclxuICAgICAgaGVhZGVyOiB0aGlzLmNyb3BwZWREaWFsb2dUcmFuc2xhdGlvbnM/Lm1vZGFsLmhlYWRlcixcclxuICAgICAgd2lkdGg6ICc3MHJlbScsXHJcbiAgICAgIGNvbnRlbnRTdHlsZToge1wib3ZlcmZsb3dcIjogXCJhdXRvXCIsIFwiaGVpZ2h0XCI6IFwiYXV0b1wiLCBcInBhZGRpbmctYm90dG9tXCI6IFwiOHB4XCJ9LFxyXG4gICAgICBkYXRhOiB7ZGF0YU1vZGFsOiB0aGlzLmNyb3BwZWRJbWFnZUNvbmZpZ3VyYXRpb24sIHRyYW5zbGF0aW9uczogdGhpcy5jcm9wcGVkRGlhbG9nVHJhbnNsYXRpb25zfSxcclxuICAgICAgcmVzaXphYmxlOiB0cnVlXHJcbiAgICB9KTtcclxuXHJcbiAgICByZWYub25DbG9zZS5zdWJzY3JpYmUoKGltYWdlQ3JvcHBlZDogV0ZpbGVCNjQpID0+IHtcclxuICAgICAgaWYoaW1hZ2VDcm9wcGVkKXtcclxuICAgICAgICB0aGlzLmRlZmF1bHRJbWFnZSA9IGltYWdlQ3JvcHBlZDtcclxuICAgICAgICB0aGlzLm9uRGVmYXVsdEltYWdlRXZlbnQuZW1pdCh0aGlzLmRlZmF1bHRJbWFnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXRJbWFnZSgpe1xyXG4gICAgdGhpcy5pc05vSW1hZ2UgPSBmYWxzZTtcclxuICAgIGlmKHRoaXMuaXNEZXZNb2RlQWN0aXZlID09IHRydWUpe1xyXG4gICAgICBpZih0aGlzLmRlZmF1bHRJbWFnZSl7XHJcbiAgICAgICAgaWYodGhpcy5pc1dGaWxlSW1hZ2UodGhpcy5kZWZhdWx0SW1hZ2UpKXtcclxuICAgICAgICAgIHJldHVybiAodGhpcy5kZWZhdWx0SW1hZ2UgYXMgV0ZpbGVCNjQpLmZpbGVCYXNlNjQ7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0SW1hZ2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLmlzTm9JbWFnZSA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuICcuLy4uLy4uLy4uL2Fzc2V0cy93YXBwSWNvbnMvaW1hZ2Uuc3ZnJztcclxuICAgICAgfVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIGlmKHRoaXMud2FwcGluZ1NlcnZpY2UgJiYgdGhpcy53YXBwaW5nU2VydmljZS5pbWFnZVVybCl7XHJcbiAgICAgICAgdGhpcy5vbkhvdmVySW1hZ2VUb29sdGlwID0gbnVsbDtcclxuICAgICAgICByZXR1cm4gdGhpcy53YXBwaW5nU2VydmljZS5pbWFnZVVybDtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5pc05vSW1hZ2UgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiAnLi8uLi8uLi8uLi9hc3NldHMvd2FwcEljb25zL2ltYWdlLnN2Zyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzV0ZpbGVJbWFnZShvYmo6IFdGaWxlQjY0IHwgc3RyaW5nKXtcclxuICAgIHJldHVybiAob2JqIGFzIFdGaWxlQjY0KS5iYXNlNjQgIT09IHVuZGVmaW5lZDtcclxuICB9XHJcbn1cclxuIiwiPG1hdC1jYXJkICpuZ0lmPVwid2FwcGluZ1NlcnZpY2VSZWFkeVwiIGNsYXNzPVwic2VydmljZS1jYXJkXCIgKGNsaWNrKT1cImlzRGV2TW9kZUFjdGl2ZSA/IHNldEltYWdlKCkgOiBjYXJkT25DbGljayh3YXBwaW5nU2VydmljZSlcIiBbcFRvb2x0aXBdPVwib25Ib3ZlckltYWdlVG9vbHRpcFwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPlxyXG4gIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNlcnZpY2UtY2FyZC1pbWFnZS10aXRsZVwiXHJcbiAgICAgICAgIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCI1cHhcIlxyXG4gICAgICAgICAqbmdJZj1cIndhcHBpbmdTZXJ2aWNlLnRpbGUxICYmIHdhcHBpbmdTZXJ2aWNlLnRpbGUxICE9ICcnXCI+XHJcbiAgICAgIDwhLS10aWxlMS0tPlxyXG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsndGlsZS1uby1odG1sJzogIWhhc0h0bWwod2FwcGluZ1NlcnZpY2UudGlsZTEpfVwiIGNsYXNzPVwic2VydmljZS1jYXJkLXRpbGUxXCJcclxuICAgICAgICBbaW5uZXJIdG1sXT1cIndhcHBpbmdTZXJ2aWNlLnRpbGUxXCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZXJ2aWNlLWNhcmQtaW1hZ2VcIj5cclxuICAgICAgPGltZyBtYXQtY2FyZC1pbWFnZSAgXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieydkZWZhdWx0LWltYWdlJyA6IGlzTm9JbWFnZX1cIiBcclxuICAgICAgICBbc3JjXT1cImdldEltYWdlKClcIj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxtYXQtY2FyZC1oZWFkZXIgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgPGRpdiBmeEZsZXg+PC9kaXY+XHJcbiAgICAgIDwhLS1zdGF0dXMtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyLXN0YXR1cy1jb250YWluZXJcIiAqbmdJZj1cIndhcHBpbmdTZXJ2aWNlLmFsbG93U2VsZWN0ICYmIGFsbG93U2VsZWN0U2VuZEdpZnRDYXJkXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjVweFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlci1zdGF0dXNcIiAqbmdJZj1cIndhcHBpbmdTZXJ2aWNlLmFjdGl2ZVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY2FyZC1oZWFkZXItc3RhdHVzLWljb25cIiBzdmdJY29uPVwiYWN0aXZhdGVkXCI+PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RhdHVzXCI+e3sgd2FwcGluZ1RyYW5zbGF0aW9ucy5hY3RpdmVkU2VydmljZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXItc3RhdHVzXCIgKm5nSWY9XCIhd2FwcGluZ1NlcnZpY2UuYWN0aXZlXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjYXJkLWhlYWRlci1zdGF0dXMtaWNvblwiIHN2Z0ljb249XCJkZWFjdGl2YXRlZFwiPjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXR1c1wiPnt7IHdhcHBpbmdUcmFuc2xhdGlvbnMuZGlzYWJsZWRTZXJ2aWNlIH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLXRpbGUzLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwid2FwcGluZ1NlcnZpY2UudGlsZTNcIiBjbGFzcz1cImNhcmQtaGVhZGVyLWRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgPGRpdiBbaW5uZXJIdG1sXT1cIndhcHBpbmdTZXJ2aWNlLnRpbGUzXCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1jYXJkLWhlYWRlcj5cclxuPC9tYXQtY2FyZD4iXX0=
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy1tYXRlcmlhbC1zZXJ2aWNlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvbWF0ZXJpYWwvdy1tYXRlcmlhbC1zZXJ2aWNlLWNhcmQvdy1tYXRlcmlhbC1zZXJ2aWNlLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvbWF0ZXJpYWwvdy1tYXRlcmlhbC1zZXJ2aWNlLWNhcmQvdy1tYXRlcmlhbC1zZXJ2aWNlLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUE2QixNQUFNLDhCQUE4QixDQUFDO0FBU3BHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7Ozs7Ozs7OztBQVM5RixNQUFNLE9BQU8sNkJBQTZCO0lBcUJ4QyxJQUFhLDJCQUEyQixDQUFDLEtBQWlDO1FBQ3hFLElBQUcsS0FBSztZQUFFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFJRCxJQUFhLGNBQWMsQ0FBQyxLQUFxQjtRQUMvQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFHLEtBQUs7WUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIs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YztzQkFBMUIsS0FBSztnQkFTaUIsV0FBVztzQkFBakMsTUFBTTt1QkFBQyxhQUFhO2dCQUVaLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0cseUJBQXlCO3NCQUFqQyxLQUFLO2dCQVFHLHlCQUF5QjtzQkFBakMsS0FBSztnQkFDSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBRUUsbUJBQW1CO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENhcmRTdGF0dXMsIFNlbmRpbmdTdGF0dXMsIFdhcHBpbmdTZXJ2aWNlQXBwVmlld1R5cGUgfSBmcm9tICcuLi9zaGFyZWQvbW9kZWxzL2VudW1zLm1vZGVsJztcclxuaW1wb3J0IHsgV2FwcGluZ1NlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvbW9kZWxzL3dhcHBpbmctc2VydmljZSc7XHJcbmltcG9ydCB7IFdhcHBpbmdTZXJ2aWNlVHJhbnNsYXRpb25zIH0gZnJvbSAnLi4vc2hhcmVkL21vZGVscy93YXBwaW5nLXNlcnZpY2UtdHJhbnNsYXRpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgV2FwcGluZ1NlcnZpY2VJdGVtVmlldyB9IGZyb20gJy4uL3NoYXJlZC9tb2RlbHMvd2FwcGluZy1zZXJ2aWNlLWl0ZW0tdmlldyc7XHJcbmltcG9ydCB7IE1hdEljb25SZWdpc3RyeSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgV2FwcGluZ1NlcnZpY2VUZW1wbGF0ZSB9IGZyb20gJy4uL3NoYXJlZC9tb2RlbHMvd2FwcGluZy1zZXJ2aWNlLXRlbXBsYXRlLm1vZGVsJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSwgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IFdJbWFnZUNyb3BwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9maWxlL3ctaW1hZ2UtY3JvcHBlci93LWltYWdlLWNyb3BwZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgV0ZpbGVCNjQgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL3ctZmlsZS1iNjQubW9kZWwnO1xyXG5pbXBvcnQgeyBXSW1hZ2VDcm9wcGVyRGF0YSB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvdy1pbWFnZS1jcm9wcGVyLWRhdGEubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd3LW1hdGVyaWFsLXNlcnZpY2UtY2FyZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ctbWF0ZXJpYWwtc2VydmljZS1jYXJkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93LW1hdGVyaWFsLXNlcnZpY2UtY2FyZC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXTWF0ZXJpYWxTZXJ2aWNlQ2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgaXNEZXZNb2RlQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNTZW5kR2lmdENhcmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhbGxvd1NlbGVjdFNlbmRHaWZ0Q2FyZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgXHJcbiAgZW51bVNlbmRpbmdTdGF0dXM6IHR5cGVvZiBTZW5kaW5nU3RhdHVzID0gIFNlbmRpbmdTdGF0dXM7XHJcbiAgZWNhcmRTdGF0dXM6IHR5cGVvZiBDYXJkU3RhdHVzID0gQ2FyZFN0YXR1cztcclxuXHJcbiAgd2FwcGluZ1NlcnZpY2VSZWFkeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGVtcHR5VGlsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF93YXBwaW5nVHJhbnNsYXRpb25zOiBXYXBwaW5nU2VydmljZVRyYW5zbGF0aW9ucyA9IHtcclxuICAgIGFjdGl2ZWRTZXJ2aWNlOiAnQWN0aXZhZGEnLFxyXG4gICAgZGlzYWJsZWRTZXJ2aWNlOiAnRGVzYWN0aXZhZGEnLFxyXG4gICAgc2NoZWR1bGVkTGFiZWw6ICdQcm9ncmFtYWRhIHBhcmEgZW52aWFyIGEge3tuYW1lfX0nLFxyXG4gICAgc2VuZExhYmVsOiAnRW52aWFkYSBhIHt7bmFtZX19JyxcclxuICAgIGNhcmRHZW5lcmF0ZWQ6ICdUdSB0YXJqZXRhIGVzdGFyw6EgZGlzcG9uaWJsZSBwYXJhIGVsIGVudsOtbyBlbiBicmV2ZXMgaW5zdGFudGVzJyxcclxuICAgIHJlY2VpdmVkTGFiZWw6IFwiRW52aWFkYSBwb3Ige3tuYW1lfX1cIixcclxuICAgIHNob3dNb3JlOiBcIk1vc3RyYXIgbcOhc1wiLFxyXG4gIH07XHJcbiAgXHJcbiAgQElucHV0KCkgc2V0IHdhcHBpbmdTZXJ2aWNlc1RyYW5zbGF0aW9ucyh2YWx1ZTogV2FwcGluZ1NlcnZpY2VUcmFuc2xhdGlvbnMpIHtcclxuICAgIGlmKHZhbHVlKSB0aGlzLl93YXBwaW5nVHJhbnNsYXRpb25zID0gdmFsdWU7XHJcbiAgfVxyXG4gIFxyXG4gIGdldCB3YXBwaW5nVHJhbnNsYXRpb25zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dhcHBpbmdUcmFuc2xhdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF93YXBwaW5nU2VydmljZSE6IFdhcHBpbmdTZXJ2aWNlO1xyXG5cclxuICBASW5wdXQoKSBzZXQgd2FwcGluZ1NlcnZpY2UodmFsdWU6IFdhcHBpbmdTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLl93YXBwaW5nU2VydmljZSA9IHZhbHVlO1xyXG4gICAgaWYodmFsdWUpIHRoaXMuZ2V0V2FwcGluZ1NlcnZpY2VUaXRsZXModmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHdhcHBpbmdTZXJ2aWNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dhcHBpbmdTZXJ2aWNlO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgnY2FyZENsaWNrZWQnKSBjYXJkQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8V2FwcGluZ1NlcnZpY2U+KCk7XHJcblxyXG4gIEBJbnB1dCgpIGRlZmF1bHRJbWFnZSE6IFdGaWxlQjY0IHwgc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNyb3BwZWRJbWFnZUNvbmZpZ3VyYXRpb246IFdJbWFnZUNyb3BwZXJEYXRhID0ge1xyXG4gICAgcm91bmRlZENyb3BwZXI6IGZhbHNlLCBcclxuICAgIGNvbmZpZ3VyZWRBc3BlY3RSYXRpbzogNC8zLCBcclxuICAgIHZpZXdQb3J0SGVpaHRQeDogNjAwLCBcclxuICAgIHZpZXdQb3J0V2lkdGhQeDogODAwLCBcclxuICAgIG1heEZpbGVTaXplOiAyMDAwXHJcbiAgfTtcclxuXHJcbiAgQElucHV0KCkgY3JvcHBlZERpYWxvZ1RyYW5zbGF0aW9uczogYW55O1xyXG4gIEBPdXRwdXQoKSBvbkRlZmF1bHRJbWFnZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxXRmlsZUI2ND4oKTtcclxuICBpc05vSW1hZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBvbkhvdmVySW1hZ2VUb29sdGlwOiBhbnkgPSAnVXBsb2FkIGltYWdlJztcclxuICBcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGU6IFJvdXRlcixcclxuICAgIHByaXZhdGUgbWF0SWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXHJcbiAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLCBcclxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5tYXRJY29uUmVnaXN0cnkuYWRkU3ZnSWNvbihcImFjdGl2YXRlZFwiLCB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoXCJhc3NldHMvd2FwcEljb25zL2FjdGl2YXRlZC5zdmdcIikpO1xyXG4gICAgdGhpcy5tYXRJY29uUmVnaXN0cnkuYWRkU3ZnSWNvbihcImRlYWN0aXZhdGVkXCIsIHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChcImFzc2V0cy93YXBwSWNvbnMvZGVhY3RpdmF0ZWQuc3ZnXCIpKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmKGNoYW5nZXNbJ3dhcHBpbmdTZXJ2aWNlJ10gJiYgY2hhbmdlc1snd2FwcGluZ1NlcnZpY2UnXS5jdXJyZW50VmFsdWUpe1xyXG4gICAgICB0aGlzLndhcHBpbmdTZXJ2aWNlID0gY2hhbmdlc1snd2FwcGluZ1NlcnZpY2UnXS5jdXJyZW50VmFsdWVcclxuICAgIH1cclxuXHJcbiAgICBpZihjaGFuZ2VzWydkZWZhdWx0SW1hZ2UnXSAmJiBjaGFuZ2VzWydkZWZhdWx0SW1hZ2UnXS5jdXJyZW50VmFsdWUpe1xyXG4gICAgICB0aGlzLmRlZmF1bHRJbWFnZSA9IGNoYW5nZXNbJ2RlZmF1bHRJbWFnZSddLmN1cnJlbnRWYWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFdhcHBpbmdTZXJ2aWNlVGl0bGVzKHNlcnZpY2U6IFdhcHBpbmdTZXJ2aWNlKSB7XHJcbiAgICBpZiAoc2VydmljZS53YXBwaW5nU2VydmljZVRlbXBsYXRlcyAhPSBudWxsKSB7XHJcbiAgICAgIHNlcnZpY2Uud2FwcGluZ1NlcnZpY2VUZW1wbGF0ZXMuZm9yRWFjaCgod2FwcGluZ1NlcnZpY2VUZW1wbGF0ZTogV2FwcGluZ1NlcnZpY2VUZW1wbGF0ZSkgPT4ge1xyXG4gICAgICAgIGlmICh3YXBwaW5nU2VydmljZVRlbXBsYXRlLnN1bW1hcnlIZWFkZXIgJiYgd2FwcGluZ1NlcnZpY2VUZW1wbGF0ZS5zdW1tYXJ5SGVhZGVyLnRyaW0oKSAhPT0gJycpe1xyXG4gICAgICAgICAgc2VydmljZS50aWxlMSA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHdhcHBpbmdTZXJ2aWNlVGVtcGxhdGUuc3VtbWFyeUhlYWRlcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNlcnZpY2UudGlsZTEgPSAnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh3YXBwaW5nU2VydmljZVRlbXBsYXRlLnN1bW1hcnlCb2R5ICYmIHdhcHBpbmdTZXJ2aWNlVGVtcGxhdGUuc3VtbWFyeUJvZHkudHJpbSgpICE9PSAnJyl7XHJcbiAgICAgICAgICBzZXJ2aWNlLnRpbGUzID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwod2FwcGluZ1NlcnZpY2VUZW1wbGF0ZS5zdW1tYXJ5Qm9keSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNlcnZpY2UudGlsZTMgPSAnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy53YXBwaW5nU2VydmljZVJlYWR5ID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhcmRPbkNsaWNrKHNlcnZpY2U6IFdhcHBpbmdTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmNhcmRDbGlja2VkLmVtaXQoc2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBoYXNIdG1sKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAvPFxcLz9bYS16XVtcXHNcXFNdKj4vaS50ZXN0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHNldEltYWdlKCl7XHJcbiAgICBjb25zdCByZWY6IER5bmFtaWNEaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihXSW1hZ2VDcm9wcGVyQ29tcG9uZW50LCB7XHJcbiAgICAgIGhlYWRlcjogdGhpcy5jcm9wcGVkRGlhbG9nVHJhbnNsYXRpb25zPy5tb2RhbC5oZWFkZXIsXHJcbiAgICAgIHdpZHRoOiAnNzByZW0nLFxyXG4gICAgICBjb250ZW50U3R5bGU6IHtcIm92ZXJmbG93XCI6IFwiYXV0b1wiLCBcImhlaWdodFwiOiBcImF1dG9cIiwgXCJwYWRkaW5nLWJvdHRvbVwiOiBcIjhweFwifSxcclxuICAgICAgZGF0YToge2RhdGFNb2RhbDogdGhpcy5jcm9wcGVkSW1hZ2VDb25maWd1cmF0aW9uLCB0cmFuc2xhdGlvbnM6IHRoaXMuY3JvcHBlZERpYWxvZ1RyYW5zbGF0aW9uc30sXHJcbiAgICAgIHJlc2l6YWJsZTogdHJ1ZVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKChpbWFnZUNyb3BwZWQ6IFdGaWxlQjY0KSA9PiB7XHJcbiAgICAgIGlmKGltYWdlQ3JvcHBlZCl7XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0SW1hZ2UgPSBpbWFnZUNyb3BwZWQ7XHJcbiAgICAgICAgdGhpcy5vbkRlZmF1bHRJbWFnZUV2ZW50LmVtaXQodGhpcy5kZWZhdWx0SW1hZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0SW1hZ2UoKXtcclxuICAgIHRoaXMuaXNOb0ltYWdlID0gZmFsc2U7XHJcbiAgICBpZih0aGlzLmlzRGV2TW9kZUFjdGl2ZSA9PSB0cnVlKXtcclxuICAgICAgaWYodGhpcy5kZWZhdWx0SW1hZ2Upe1xyXG4gICAgICAgIGlmKHRoaXMuaXNXRmlsZUltYWdlKHRoaXMuZGVmYXVsdEltYWdlKSl7XHJcbiAgICAgICAgICByZXR1cm4gKHRoaXMuZGVmYXVsdEltYWdlIGFzIFdGaWxlQjY0KS5maWxlQmFzZTY0O1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdEltYWdlO1xyXG4gICAgICAgIH1cclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5pc05vSW1hZ2UgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiAnLi8uLi8uLi8uLi9hc3NldHMvd2FwcEljb25zL2ltYWdlLnN2Zyc7XHJcbiAgICAgIH1cclxuICAgIH1lbHNle1xyXG4gICAgICBpZih0aGlzLndhcHBpbmdTZXJ2aWNlICYmIHRoaXMud2FwcGluZ1NlcnZpY2UuaW1hZ2VVcmwpe1xyXG4gICAgICAgIHRoaXMub25Ib3ZlckltYWdlVG9vbHRpcCA9IG51bGw7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMud2FwcGluZ1NlcnZpY2UuaW1hZ2VVcmw7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGlmKHRoaXMuZGVmYXVsdEltYWdlKXtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRJbWFnZTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMuaXNOb0ltYWdlID0gdHJ1ZTtcclxuICAgICAgICAgIHJldHVybiAnLi8uLi8uLi8uLi9hc3NldHMvd2FwcEljb25zL2ltYWdlLnN2Zyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc1dGaWxlSW1hZ2Uob2JqOiBXRmlsZUI2NCB8IHN0cmluZyl7XHJcbiAgICByZXR1cm4gKG9iaiBhcyBXRmlsZUI2NCkuYmFzZTY0ICE9PSB1bmRlZmluZWQ7XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtY2FyZCAqbmdJZj1cIndhcHBpbmdTZXJ2aWNlUmVhZHlcIiBjbGFzcz1cInNlcnZpY2UtY2FyZFwiIChjbGljayk9XCJpc0Rldk1vZGVBY3RpdmUgPyBzZXRJbWFnZSgpIDogY2FyZE9uQ2xpY2sod2FwcGluZ1NlcnZpY2UpXCIgW3BUb29sdGlwXT1cIm9uSG92ZXJJbWFnZVRvb2x0aXBcIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cclxuICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZXJ2aWNlLWNhcmQtaW1hZ2UtdGl0bGVcIlxyXG4gICAgICAgICBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiNXB4XCJcclxuICAgICAgICAgKm5nSWY9XCJ3YXBwaW5nU2VydmljZS50aWxlMSAmJiB3YXBwaW5nU2VydmljZS50aWxlMSAhPSAnJ1wiPlxyXG4gICAgICA8IS0tdGlsZTEtLT5cclxuICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J3RpbGUtbm8taHRtbCc6ICFoYXNIdG1sKHdhcHBpbmdTZXJ2aWNlLnRpbGUxKX1cIiBjbGFzcz1cInNlcnZpY2UtY2FyZC10aWxlMVwiXHJcbiAgICAgICAgW2lubmVySHRtbF09XCJ3YXBwaW5nU2VydmljZS50aWxlMVwiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VydmljZS1jYXJkLWltYWdlXCI+XHJcbiAgICAgIDxpbWcgbWF0LWNhcmQtaW1hZ2UgIFxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnZGVmYXVsdC1pbWFnZScgOiBpc05vSW1hZ2V9XCIgXHJcbiAgICAgICAgW3NyY109XCJnZXRJbWFnZSgpXCI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8bWF0LWNhcmQtaGVhZGVyIGZ4TGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCI+XHJcbiAgICAgIDxkaXYgZnhGbGV4PjwvZGl2PlxyXG4gICAgICA8IS0tc3RhdHVzLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlci1zdGF0dXMtY29udGFpbmVyXCIgKm5nSWY9XCJ3YXBwaW5nU2VydmljZS5hbGxvd1NlbGVjdCAmJiBhbGxvd1NlbGVjdFNlbmRHaWZ0Q2FyZFwiIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCI1cHhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXItc3RhdHVzXCIgKm5nSWY9XCJ3YXBwaW5nU2VydmljZS5hY3RpdmVcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNhcmQtaGVhZGVyLXN0YXR1cy1pY29uXCIgc3ZnSWNvbj1cImFjdGl2YXRlZFwiPjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXR1c1wiPnt7IHdhcHBpbmdUcmFuc2xhdGlvbnMuYWN0aXZlZFNlcnZpY2UgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyLXN0YXR1c1wiICpuZ0lmPVwiIXdhcHBpbmdTZXJ2aWNlLmFjdGl2ZVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY2FyZC1oZWFkZXItc3RhdHVzLWljb25cIiBzdmdJY29uPVwiZGVhY3RpdmF0ZWRcIj48L21hdC1pY29uPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGF0dXNcIj57eyB3YXBwaW5nVHJhbnNsYXRpb25zLmRpc2FibGVkU2VydmljZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS10aWxlMy0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIndhcHBpbmdTZXJ2aWNlLnRpbGUzXCIgY2xhc3M9XCJjYXJkLWhlYWRlci1kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgIDxkaXYgW2lubmVySHRtbF09XCJ3YXBwaW5nU2VydmljZS50aWxlM1wiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcbjwvbWF0LWNhcmQ+Il19
@@ -62,21 +62,12 @@ export class WMaterialServiceViewComponent {
62
62
  this.matIconRegistry.addSvgIcon("calendar", this.domSanitizer.bypassSecurityTrustResourceUrl("/assets/wappIcons/mat-calendar.svg"));
63
63
  }
64
64
  ngOnInit() {
65
+ this.getImage();
65
66
  }
66
67
  ngOnChanges(changes) {
67
68
  if (changes['defaultImage'] && changes['defaultImage'].currentValue) {
68
69
  this.defaultImage = changes['defaultImage'].currentValue;
69
- this.isNoImage = false;
70
- if (this.isDevModeActive == true) {
71
- if (this.defaultImage) {
72
- if (this.isWFileImage(this.defaultImage)) {
73
- this.wappingServiceImages = [{ path: this.defaultImage.fileBase64 }];
74
- }
75
- else {
76
- this.wappingServiceImages = [{ path: this.defaultImage }];
77
- }
78
- }
79
- }
70
+ this.getImage();
80
71
  }
81
72
  if (changes['defaultImage'] && !changes['defaultImage'].currentValue) {
82
73
  if (this.isDevModeActive) {
@@ -135,20 +126,7 @@ export class WMaterialServiceViewComponent {
135
126
  }
136
127
  }
137
128
  getWappingServiceImages() {
138
- this.wappingServiceImages = this.wappingService.wappingServiceImages;
139
- if (this.wappingServiceImages.length == 0) {
140
- let wappingServiceImage = {
141
- path: this.wappingService.imageUrl,
142
- };
143
- this.wappingServiceImages.unshift(wappingServiceImage);
144
- }
145
- // To Do implementar slideshow
146
- // if (this.wappingServiceImages.length > 1) {
147
- // this.showSlideshowArrows = true;
148
- // this.showSlideshowDots = true;
149
- // }
150
- // if (!this.isDesktop)
151
- // this.showSlideshowArrows = false;
129
+ this.getImage();
152
130
  }
153
131
  selectWappingService() {
154
132
  this.disabledToggle = true;
@@ -187,24 +165,36 @@ export class WMaterialServiceViewComponent {
187
165
  if (this.isDevModeActive == true) {
188
166
  if (this.defaultImage) {
189
167
  if (this.isWFileImage(this.defaultImage)) {
190
- return [{ path: this.defaultImage.fileBase64 }];
168
+ this.wappingServiceImages = [{ path: this.defaultImage.fileBase64 }];
191
169
  }
192
170
  else {
193
- return [{ path: this.defaultImage }];
171
+ this.wappingServiceImages = [{ path: this.defaultImage }];
194
172
  }
195
173
  }
196
174
  else {
197
175
  this.isNoImage = true;
198
- return [{ path: './../../../assets/wappIcons/image.svg' }];
176
+ this.wappingServiceImages = [{ path: './../../../assets/wappIcons/image.svg' }];
199
177
  }
200
178
  }
201
179
  else {
202
- if (this.wappingServiceImages.length > 0) {
203
- return this.wappingServiceImages;
204
- }
205
- else {
206
- this.isNoImage = true;
207
- return [{ path: './../../../assets/wappIcons/image.svg' }];
180
+ if (this.wappingService) {
181
+ if (this.wappingService.wappingServiceImages.length > 0) {
182
+ this.wappingServiceImages = this.wappingService.wappingServiceImages;
183
+ }
184
+ else if (this.wappingService.wappingServiceImages.length == 0 && this.wappingService.imageUrl) {
185
+ this.wappingServiceImages = [];
186
+ let wappingServiceImage = {
187
+ path: this.wappingService.imageUrl,
188
+ };
189
+ this.wappingServiceImages.unshift(wappingServiceImage);
190
+ }
191
+ else if (this.defaultImage) {
192
+ this.wappingServiceImages = [{ path: this.defaultImage }];
193
+ }
194
+ else {
195
+ this.isNoImage = true;
196
+ this.wappingServiceImages = [{ path: './../../../assets/wappIcons/image.svg' }];
197
+ }
208
198
  }
209
199
  }
210
200
  }
@@ -254,4 +244,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
254
244
  }], onHoverImageTooltip: [{
255
245
  type: Input
256
246
  }] } });
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy1tYXRlcmlhbC1zZXJ2aWNlLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvbWF0ZXJpYWwvdy1tYXRlcmlhbC1zZXJ2aWNlLXZpZXcvdy1tYXRlcmlhbC1zZXJ2aWNlLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvbWF0ZXJpYWwvdy1tYXRlcmlhbC1zZXJ2aWNlLXZpZXcvdy1tYXRlcmlhbC1zZXJ2aWNlLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBR3pHLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFzQixNQUFNLDhCQUE4QixDQUFDO0FBUTdGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7Ozs7Ozs7Ozs7O0FBTzlGLE1BQU0sT0FBTyw2QkFBNkI7SUErQnhDLElBQWEsY0FBYyxDQUFDLEtBQXFCO1FBQy9DLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUcsS0FBSztZQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBc0JELFlBQ1UsZUFBZ0MsRUFDaEMsWUFBMEIsRUFDMUIsYUFBNEI7UUFGNUIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBMUR0QyxtQkFBYyxHQUFZLEtBQUss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QUksQ0FBQyxvQkFBb0IsQ0FBQzthQUNsQztpQkFBSTtnQkFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztnQkFDdEIsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLHVDQUF1QyxFQUFFLENBQUMsQ0FBQzthQUM1RDtTQUNGO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUFzQjtRQUNqQyxPQUFRLEdBQWdCLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQztJQUNoRCxDQUFDOzsySEFwT1UsNkJBQTZCOytHQUE3Qiw2QkFBNkIsMnRCQ2xCMUMsa2dJQW9FTTs0RkRsRE8sNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLHlCQUF5Qjs2SkFnQjFCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRWdDLDJCQUEyQjtzQkFBaEUsS0FBSzt1QkFBQyw2QkFBNkI7Z0JBV0oscUJBQXFCO3NCQUFwRCxLQUFLO3VCQUFDLHVCQUF1QjtnQkFDRixpQkFBaUI7c0JBQTVDLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUNMLFVBQVU7c0JBQTlCLEtBQUs7dUJBQUMsWUFBWTtnQkFJTixjQUFjO3NCQUExQixLQUFLO2dCQVM0QixzQkFBc0I7c0JBQXZELE1BQU07dUJBQUMsd0JBQXdCO2dCQUNBLG9CQUFvQjtzQkFBbkQsTUFBTTt1QkFBQyxzQkFBc0I7Z0JBRXJCLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBUUcseUJBQXlCO3NCQUFqQyxLQUFLO2dCQUVJLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBXYXBwaW5nU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9tb2RlbHMvd2FwcGluZy1zZXJ2aWNlJztcclxuaW1wb3J0IHsgV2FwcGluZ1NlcnZpY2VJbWFnZSB9IGZyb20gJy4uL3NoYXJlZC9tb2RlbHMvd2FwcGluZy1zZXJ2aWNlLWltYWdlJztcclxuaW1wb3J0IHsgQ2FyZFN0YXR1cywgU2VuZGluZ1N0YXR1cywgV2FwcGluZ1NlcnZpY2VUeXBlIH0gZnJvbSAnLi4vc2hhcmVkL21vZGVscy9lbnVtcy5tb2RlbCc7XHJcbmltcG9ydCB7IFdhcHBpbmdTZXJ2aWNlVHJhbnNsYXRpb25zIH0gZnJvbSAnLi4vc2hhcmVkL21vZGVscy93YXBwaW5nLXNlcnZpY2UtdHJhbnNsYXRpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFdhcHBpbmdTZXJ2aWNlVGVtcGxhdGUgfSBmcm9tICcuLi9zaGFyZWQvbW9kZWxzL3dhcHBpbmctc2VydmljZS10ZW1wbGF0ZS5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdEljb25SZWdpc3RyeSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgV0ZpbGVCNjQgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL3ctZmlsZS1iNjQubW9kZWwnO1xyXG5pbXBvcnQgeyBXSW1hZ2VDcm9wcGVyRGF0YSB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvdy1pbWFnZS1jcm9wcGVyLWRhdGEubW9kZWwnO1xyXG5pbXBvcnQgeyBXSW1hZ2VDcm9wcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZmlsZS93LWltYWdlLWNyb3BwZXIvdy1pbWFnZS1jcm9wcGVyLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3ctbWF0ZXJpYWwtc2VydmljZS12aWV3JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdy1tYXRlcmlhbC1zZXJ2aWNlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ctbWF0ZXJpYWwtc2VydmljZS12aWV3LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFdNYXRlcmlhbFNlcnZpY2VWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG5cclxuICBzZXJ2aWNlSWQhOiBudW1iZXI7XHJcbiAgd2FwcGluZ1NlcnZpY2VJbWFnZXMhOiBXYXBwaW5nU2VydmljZUltYWdlW107XHJcbiAgc2VydmljZVN0YXR1cyE6IHN0cmluZztcclxuICBpc1NlbmRHaWZ0Q2FyZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRpc2FibGVkVG9nZ2xlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYWxsb3dTZWxlY3RTZW5kR2lmdENhcmQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGVudW1TZW5kaW5nU3RhdHVzOiB0eXBlb2YgU2VuZGluZ1N0YXR1cyA9IFNlbmRpbmdTdGF0dXM7XHJcbiAgZWNhcmRTdGF0dXM6IHR5cGVvZiBDYXJkU3RhdHVzID0gQ2FyZFN0YXR1c1xyXG4gIHRyYW5zbGF0aW9uczogYW55O1xyXG4gIFxyXG4gIEBJbnB1dCgpIGZvcmNlTW9iaWxlID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgnd2FwcGluZ1NlcnZpY2VzVHJhbnNsYXRpb25zJykgd2FwcGluZ1NlcnZpY2VzVHJhbnNsYXRpb25zOiBXYXBwaW5nU2VydmljZVRyYW5zbGF0aW9ucyA9IHtcclxuICAgIGFjdGl2ZWRTZXJ2aWNlOiAnQWN0aXZhZGEnLFxyXG4gICAgZGlzYWJsZWRTZXJ2aWNlOiAnRGVzYWN0aXZhZGEnLFxyXG4gICAgc2NoZWR1bGVkTGFiZWw6ICdQcm9ncmFtYWRhIHBhcmEgZW52aWFyIGEge3tuYW1lfX0nLFxyXG4gICAgc2VuZExhYmVsOiAnRW52aWFkYSBhIHt7bmFtZX19JyxcclxuICAgIGNhcmRHZW5lcmF0ZWQ6ICdUdSB0YXJqZXRhIGVzdGFyw6EgZGlzcG9uaWJsZSBwYXJhIGVsIGVudsOtbyBlbiBicmV2ZXMgaW5zdGFudGVzJyxcclxuICAgIHJlY2VpdmVkTGFiZWw6IFwiRW52aWFkYSBwb3Ige3tuYW1lfX1cIixcclxuICAgIHNob3dNb3JlOiBcIk1vc3RyYXIgbcOhc1wiLFxyXG4gICAgYnV0dG9uU2VydmljZTogXCJQYXJ0aWNpcGFyXCJcclxuICB9O1xyXG4gIFxyXG4gIEBJbnB1dCgnZGlzYWJsZWRCdXR0b25TZXJ2aWNlJykgZGlzYWJsZWRCdXR0b25TZXJ2aWNlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCdzaG93QnV0dG9uU2VydmljZScpIHNob3dCdXR0b25TZXJ2aWNlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCdzaG93VG9nZ2xlJykgc2hvd1RvZ2dsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHByaXZhdGUgX3dhcHBpbmdTZXJ2aWNlITogV2FwcGluZ1NlcnZpY2U7XHJcblxyXG4gIEBJbnB1dCgpIHNldCB3YXBwaW5nU2VydmljZSh2YWx1ZTogV2FwcGluZ1NlcnZpY2UpIHtcclxuICAgIHRoaXMuX3dhcHBpbmdTZXJ2aWNlID0gdmFsdWU7XHJcbiAgICBpZih2YWx1ZSkgdGhpcy5nZXRXYXBwaW5nU2VydmljZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgd2FwcGluZ1NlcnZpY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fd2FwcGluZ1NlcnZpY2U7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCd3YXBwaW5nU2VydmljZVNlbGVjdGVkJykgd2FwcGluZ1NlcnZpY2VTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBAT3V0cHV0KCd0cmlnZ2VyQnV0dG9uU2VydmljZScpIHRyaWdnZXJCdXR0b25TZXJ2aWNlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBASW5wdXQoKSBpc0Rldk1vZGVBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZWZhdWx0SW1hZ2UhOiBXRmlsZUI2NCB8IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgY3JvcHBlZEltYWdlQ29uZmlndXJhdGlvbjogV0ltYWdlQ3JvcHBlckRhdGEgPSB7XHJcbiAgICByb3VuZGVkQ3JvcHBlcjogZmFsc2UsIFxyXG4gICAgY29uZmlndXJlZEFzcGVjdFJhdGlvOiA0LzMsIFxyXG4gICAgdmlld1BvcnRIZWlodFB4OiA2MDAsIFxyXG4gICAgdmlld1BvcnRXaWR0aFB4OiA4MDAsIFxyXG4gICAgbWF4RmlsZVNpemU6IDIwMDBcclxuICB9O1xyXG4gIFxyXG4gIEBJbnB1dCgpIGNyb3BwZWREaWFsb2dUcmFuc2xhdGlvbnM6IGFueTtcclxuICBpbWFnZXM6IGFueVtdID0gW107XHJcbiAgQE91dHB1dCgpIG9uRGVmYXVsdEltYWdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFdGaWxlQjY0PigpO1xyXG4gIEBJbnB1dCgpIGlzTm9JbWFnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG9uSG92ZXJJbWFnZVRvb2x0aXA6IHN0cmluZyA9ICdVcGxvYWQgaW1hZ2UnO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbWF0SWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXHJcbiAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLCBcclxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSkge1xyXG4gICAgdGhpcy5tYXRJY29uUmVnaXN0cnkuYWRkU3ZnSWNvbihcImNhbGVuZGFyXCIsIHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChcIi9hc3NldHMvd2FwcEljb25zL21hdC1jYWxlbmRhci5zdmdcIikpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZihjaGFuZ2VzWydkZWZhdWx0SW1hZ2UnXSAmJiBjaGFuZ2VzWydkZWZhdWx0SW1hZ2UnXS5jdXJyZW50VmFsdWUpe1xyXG4gICAgICB0aGlzLmRlZmF1bHRJbWFnZSA9IGNoYW5nZXNbJ2RlZmF1bHRJbWFnZSddLmN1cnJlbnRWYWx1ZTtcclxuXHJcbiAgICAgIHRoaXMuaXNOb0ltYWdlID0gZmFsc2U7XHJcbiAgICAgIGlmKHRoaXMuaXNEZXZNb2RlQWN0aXZlID09IHRydWUpe1xyXG4gICAgICAgIGlmKHRoaXMuZGVmYXVsdEltYWdlKXtcclxuICAgICAgICAgIGlmKHRoaXMuaXNXRmlsZUltYWdlKHRoaXMuZGVmYXVsdEltYWdlKSl7XHJcbiAgICAgICAgICAgIHRoaXMud2FwcGluZ1NlcnZpY2VJbWFnZXMgPSBbeyBwYXRoOiAodGhpcy5kZWZhdWx0SW1hZ2UgYXMgV0ZpbGVCNjQpLmZpbGVCYXNlNjQgfV07XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdGhpcy53YXBwaW5nU2VydmljZUltYWdlcyA9IFt7IHBhdGg6ICh0aGlzLmRlZmF1bHRJbWFnZSBhcyBzdHJpbmcpfV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYoY2hhbmdlc1snZGVmYXVsdEltYWdlJ10gJiYgIWNoYW5nZXNbJ2RlZmF1bHRJbWFnZSddLmN1cnJlbnRWYWx1ZSl7XHJcbiAgICAgIGlmKHRoaXMuaXNEZXZNb2RlQWN0aXZlKXtcclxuICAgICAgICB0aGlzLmlzTm9JbWFnZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy53YXBwaW5nU2VydmljZUltYWdlcyA9IFt7IHBhdGg6ICcuLy4uLy4uLy4uL2Fzc2V0cy93YXBwSWNvbnMvaW1hZ2Uuc3ZnJyB9XVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRXYXBwaW5nU2VydmljZSh3YXBwU2VydmljZTogV2FwcGluZ1NlcnZpY2UpIHtcclxuICAgIHRoaXMuaXNTZW5kR2lmdENhcmQgPSBmYWxzZVxyXG4gICAgaWYgKHdhcHBTZXJ2aWNlLmFjdGl2ZSlcclxuICAgICAgdGhpcy5zZXJ2aWNlU3RhdHVzID0gdGhpcy53YXBwaW5nU2VydmljZXNUcmFuc2xhdGlvbnMuYWN0aXZlZFNlcnZpY2UudG9VcHBlckNhc2UoKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5zZXJ2aWNlU3RhdHVzID0gdGhpcy53YXBwaW5nU2VydmljZXNUcmFuc2xhdGlvbnMuZGlzYWJsZWRTZXJ2aWNlLnRvVXBwZXJDYXNlKCk7XHJcbiAgICBpZiAod2FwcFNlcnZpY2UuZGF0YVJlcVRvU2VuZENhcmQgJiYgd2FwcFNlcnZpY2UuZGF0YVJlcVRvU2VuZENhcmQuZGF0YVJlcVRvU2VuZENhcmRJZCAhPSAwKSB7XHJcbiAgICAgIHRoaXMuaXNTZW5kR2lmdENhcmQgPSB0cnVlXHJcbiAgICAgIGlmICh3YXBwU2VydmljZS5lbnVtVHlwZVN0YXR1c0VDYXJkSUQgPT0gdGhpcy5lY2FyZFN0YXR1cy5zZW50KSB7XHJcbiAgICAgICAgdGhpcy5hbGxvd1NlbGVjdFNlbmRHaWZ0Q2FyZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAod2FwcFNlcnZpY2UuZW51bVR5cGVTdGF0dXNFQ2FyZElEID09IHRoaXMuZWNhcmRTdGF0dXMuZ2VuZXJhdGVkKVxyXG4gICAgICB0aGlzLmFsbG93U2VsZWN0U2VuZEdpZnRDYXJkID0gZmFsc2U7XHJcblxyXG5cclxuICAgIHRoaXMuZ2V0V2FwcGluZ1NlcnZpY2VUaWxlcyh0aGlzLndhcHBpbmdTZXJ2aWNlKTtcclxuXHJcbiAgICBpZih0aGlzLmlzRGV2TW9kZUFjdGl2ZSA9PSBmYWxzZSl7XHJcbiAgICAgIHRoaXMuZ2V0V2FwcGluZ1NlcnZpY2VJbWFnZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFdhcHBpbmdTZXJ2aWNlVGlsZXMoc2VydmljZTogV2FwcGluZ1NlcnZpY2UpIHtcclxuICAgIGlmIChzZXJ2aWNlLndhcHBpbmdTZXJ2aWNlVGVtcGxhdGVzICE9IG51bGwpIHtcclxuICAgICAgc2VydmljZS53YXBwaW5nU2VydmljZVRlbXBsYXRlcy5mb3JFYWNoKCh3YXBwaW5nU2VydmljZVRpbGU6IFdhcHBpbmdTZXJ2aWNlVGVtcGxhdGUpID0+IHtcclxuICAgICAgICBpZih3YXBwaW5nU2VydmljZVRpbGUuZGV0YWlsVGl0bGUpe1xyXG4gICAgICAgICAgdGhpcy53YXBwaW5nU2VydmljZS50aWxlMyA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHdhcHBpbmdTZXJ2aWNlVGlsZS5kZXRhaWxUaXRsZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMud2FwcGluZ1NlcnZpY2UudGlsZTMgPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYod2FwcGluZ1NlcnZpY2VUaWxlLmRldGFpbEhlYWRlcil7XHJcbiAgICAgICAgICB0aGlzLndhcHBpbmdTZXJ2aWNlLnRpbGUxID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwod2FwcGluZ1NlcnZpY2VUaWxlLmRldGFpbEhlYWRlcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMud2FwcGluZ1NlcnZpY2UudGlsZTEgPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYod2FwcGluZ1NlcnZpY2VUaWxlLmRldGFpbEZvb3Qpe1xyXG4gICAgICAgICAgdGhpcy53YXBwaW5nU2VydmljZS50aWxlMiA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHdhcHBpbmdTZXJ2aWNlVGlsZS5kZXRhaWxGb290KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy53YXBwaW5nU2VydmljZS50aWxlMiA9ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih3YXBwaW5nU2VydmljZVRpbGUuZGV0YWlsQm9keSl7XHJcbiAgICAgICAgICB0aGlzLndhcHBpbmdTZXJ2aWNlLnRpbGVEZXRhaWwxID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwod2FwcGluZ1NlcnZpY2VUaWxlLmRldGFpbEJvZHkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLndhcHBpbmdTZXJ2aWNlLnRpbGVEZXRhaWwxID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFdhcHBpbmdTZXJ2aWNlSW1hZ2VzKCkge1xyXG4gICAgdGhpcy53YXBwaW5nU2VydmljZUltYWdlcyA9IHRoaXMud2FwcGluZ1NlcnZpY2Uud2FwcGluZ1NlcnZpY2VJbWFnZXM7XHJcblxyXG4gICAgaWYgKHRoaXMud2FwcGluZ1NlcnZpY2VJbWFnZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgbGV0IHdhcHBpbmdTZXJ2aWNlSW1hZ2U6IFdhcHBpbmdTZXJ2aWNlSW1hZ2UgPSB7XHJcbiAgICAgICAgcGF0aDogdGhpcy53YXBwaW5nU2VydmljZS5pbWFnZVVybCEsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMud2FwcGluZ1NlcnZpY2VJbWFnZXMudW5zaGlmdCh3YXBwaW5nU2VydmljZUltYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUbyBEbyBpbXBsZW1lbnRhciBzbGlkZXNob3dcclxuICAgIFxyXG4gICAgLy8gaWYgKHRoaXMud2FwcGluZ1NlcnZpY2VJbWFnZXMubGVuZ3RoID4gMSkge1xyXG4gICAgLy8gICB0aGlzLnNob3dTbGlkZXNob3dBcnJvd3MgPSB0cnVlO1xyXG4gICAgLy8gICB0aGlzLnNob3dTbGlkZXNob3dEb3RzID0gdHJ1ZTtcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyBpZiAoIXRoaXMuaXNEZXNrdG9wKVxyXG4gICAgLy8gICB0aGlzLnNob3dTbGlkZXNob3dBcnJvd3MgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFdhcHBpbmdTZXJ2aWNlKCkge1xyXG4gICAgdGhpcy5kaXNhYmxlZFRvZ2dsZSA9IHRydWU7XHJcbiAgICB0aGlzLndhcHBpbmdTZXJ2aWNlU2VsZWN0ZWQuZW1pdCh0aGlzLndhcHBpbmdTZXJ2aWNlLmFjdGl2ZSk7XHJcbiAgICBpZiAodGhpcy53YXBwaW5nU2VydmljZS5hY3RpdmUpXHJcbiAgICAgIHRoaXMuc2VydmljZVN0YXR1cyA9IHRoaXMud2FwcGluZ1NlcnZpY2VzVHJhbnNsYXRpb25zLmFjdGl2ZWRTZXJ2aWNlLnRvVXBwZXJDYXNlKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuc2VydmljZVN0YXR1cyA9IHRoaXMud2FwcGluZ1NlcnZpY2VzVHJhbnNsYXRpb25zLmRpc2FibGVkU2VydmljZS50b1VwcGVyQ2FzZSgpO1xyXG5cclxuICAgIHRoaXMuZGlzYWJsZWRUb2dnbGUgPSBmYWxzZVxyXG4gICAgdGhpcy5nZXRXYXBwaW5nU2VydmljZSh0aGlzLndhcHBpbmdTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIGhhc0h0bWwodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIC88XFwvP1thLXpdW1xcc1xcU10qPi9pLnRlc3QodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJlc3NCdXR0b25TZXJ2aWNlKCl7XHJcbiAgICB0aGlzLnRyaWdnZXJCdXR0b25TZXJ2aWNlLmVtaXQoKVxyXG4gIH1cclxuXHJcbiAgc2V0SW1hZ2UoKXtcclxuICAgIGNvbnN0IHJlZjogRHluYW1pY0RpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKFdJbWFnZUNyb3BwZXJDb21wb25lbnQsIHtcclxuICAgICAgaGVhZGVyOiB0aGlzLmNyb3BwZWREaWFsb2dUcmFuc2xhdGlvbnM/Lm1vZGFsLmhlYWRlcixcclxuICAgICAgd2lkdGg6ICc3MHJlbScsXHJcbiAgICAgIGNvbnRlbnRTdHlsZToge1wib3ZlcmZsb3dcIjogXCJhdXRvXCIsIFwiaGVpZ2h0XCI6IFwiYXV0b1wiLCBcInBhZGRpbmctYm90dG9tXCI6IFwiOHB4XCJ9LFxyXG4gICAgICBkYXRhOiB7ZGF0YU1vZGFsOiB0aGlzLmNyb3BwZWRJbWFnZUNvbmZpZ3VyYXRpb24sIHRyYW5zbGF0aW9uczogdGhpcy5jcm9wcGVkRGlhbG9nVHJhbnNsYXRpb25zfSxcclxuICAgICAgcmVzaXphYmxlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIFxyXG4gICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKChpbWFnZUNyb3BwZWQ6IFdGaWxlQjY0KSA9PiB7XHJcbiAgICAgIGlmKGltYWdlQ3JvcHBlZCl7XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0SW1hZ2UgPSBpbWFnZUNyb3BwZWQ7XHJcbiAgICAgICAgdGhpcy5pbWFnZXMucHVzaCh7cGF0aDogdGhpcy5kZWZhdWx0SW1hZ2UuZmlsZUJhc2U2NH0pO1xyXG4gICAgICAgIHRoaXMub25EZWZhdWx0SW1hZ2VFdmVudC5lbWl0KHRoaXMuZGVmYXVsdEltYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldEltYWdlKCl7XHJcbiAgICB0aGlzLmlzTm9JbWFnZSA9IGZhbHNlO1xyXG4gICAgaWYodGhpcy5pc0Rldk1vZGVBY3RpdmUgPT0gdHJ1ZSl7XHJcbiAgICAgIGlmKHRoaXMuZGVmYXVsdEltYWdlKXtcclxuICAgICAgICBpZih0aGlzLmlzV0ZpbGVJbWFnZSh0aGlzLmRlZmF1bHRJbWFnZSkpe1xyXG4gICAgICAgICAgcmV0dXJuIFt7IHBhdGg6ICh0aGlzLmRlZmF1bHRJbWFnZSBhcyBXRmlsZUI2NCkuZmlsZUJhc2U2NCB9XTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHJldHVybiBbeyBwYXRoOiB0aGlzLmRlZmF1bHRJbWFnZX1dO1xyXG4gICAgICAgIH1cclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5pc05vSW1hZ2UgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiBbeyBwYXRoOiAnLi8uLi8uLi8uLi9hc3NldHMvd2FwcEljb25zL2ltYWdlLnN2ZycgfV07XHJcbiAgICAgIH1cclxuICAgIH1lbHNle1xyXG4gICAgICBpZih0aGlzLndhcHBpbmdTZXJ2aWNlSW1hZ2VzLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIHJldHVybiB0aGlzLndhcHBpbmdTZXJ2aWNlSW1hZ2VzO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLmlzTm9JbWFnZSA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIFt7IHBhdGg6ICcuLy4uLy4uLy4uL2Fzc2V0cy93YXBwSWNvbnMvaW1hZ2Uuc3ZnJyB9XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNXRmlsZUltYWdlKG9iajogV0ZpbGVCNjQgfCBzdHJpbmcpe1xyXG4gICAgcmV0dXJuIChvYmogYXMgV0ZpbGVCNjQpLmJhc2U2NCAhPT0gdW5kZWZpbmVkO1xyXG4gIH1cclxufVxyXG4iLCI8d2FwcC1tYWluLXRpdGxlIFt0aXRsZV09XCJ3YXBwaW5nU2VydmljZS50aWxlM1wiICpuZ0lmPVwid2FwcGluZ1NlcnZpY2UgJiYgKCFmb3JjZU1vYmlsZSlcIiBmeEhpZGUueHM+PC93YXBwLW1haW4tdGl0bGU+XHJcbjxkaXYgY2xhc3M9XCJzZXJ2aWNlLWRldGFpbC1jZW50ZXJcIiAqbmdJZj1cIndhcHBpbmdTZXJ2aWNlXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7J2ZvcmNlLW1vYmlsZSc6IGZvcmNlTW9iaWxlfVwiXHJcbiAgICAgICAgW2Z4TGF5b3V0XT1cImZvcmNlTW9iaWxlID8gJ2NvbHVtbicgOiAncm93J1wiXHJcbiAgICAgICAgW2Z4TGF5b3V0LnhzXT1cIidjb2x1bW4nXCJcclxuICAgICAgICBbZnhMYXlvdXQuc21dPVwiJ2NvbHVtbidcIj5cclxuICAgIDwhLS1zZXJ2aWNlIGltYWdlLS0+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnc2VydmljZS12aWV3LW5vLW1hcmdpbic6IGZvcmNlTW9iaWxlLCAnc2VydmljZS12aWV3JzogIWZvcmNlTW9iaWxlfVwiIGZ4TGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICAgICAgPCEtLXRpbGUgMS0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJ3YXBwaW5nU2VydmljZS50aWxlMSAmJiB3YXBwaW5nU2VydmljZS50aWxlMSAhPSAnJ1wiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnc2VydmljZS1pbWFnZS10aWxlJyA6ICFoYXNIdG1sKHdhcHBpbmdTZXJ2aWNlLnRpbGUxKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RlbXBsYXRlLXNlcnZpY2UtaW1hZ2UtdGlsZScgOiBoYXNIdG1sKHdhcHBpbmdTZXJ2aWNlLnRpbGUxKX1cIlxyXG4gICAgICAgICAgICBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiNXB4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyd0aWxlLXZpZXctbm8taHRtbCc6ICFoYXNIdG1sKHdhcHBpbmdTZXJ2aWNlLnRpbGUxKX1cIiBjbGFzcz1cInNlcnZpY2Utdmlldy10aWxlMVwiIFxyXG4gICAgICAgICAgICAgICAgW2lubmVySHRtbF09XCJ3YXBwaW5nU2VydmljZS50aWxlMVwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1zbGlkZXNob3ctLT5cclxuICAgICAgICA8d2FwcC1jYXJvdXNlbCBbaXNEZXZNb2RlQWN0aXZlXT1cImlzRGV2TW9kZUFjdGl2ZVwiIFtmb3JjZU1vYmlsZV09XCJmb3JjZU1vYmlsZVwiIFtpbWFnZXNdPVwid2FwcGluZ1NlcnZpY2VJbWFnZXNcIiBbaXNOb0ltYWdlXT1cImlzTm9JbWFnZVwiIChvblNldEltYWdlRXZlbnQpPVwic2V0SW1hZ2UoKVwiIFtvbkhvdmVySW1hZ2VUb29sdGlwXT1cIm9uSG92ZXJJbWFnZVRvb2x0aXBcIj48L3dhcHAtY2Fyb3VzZWw+XHJcbiAgICAgICAgPCEtLXRpbGUgMi0tPlxyXG4gICAgICAgIDxkaXYgZnhGbGV4IGZ4TGF5b3V0PVwicm93XCJcclxuICAgICAgICAgICAgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIlxyXG4gICAgICAgICAgICBmeExheW91dEdhcD1cIjVweFwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnc2VydmljZS10aWxlLWJvcmRlci1ib3R0b20tcmFkaXVzJzogIXdhcHBpbmdTZXJ2aWNlLnRpbGU0LFxyXG4gICAgICAgICAgICAgICAgJ3RlbXBsYXRlLXNlcnZpY2UtdGlsZSc6IGhhc0h0bWwod2FwcGluZ1NlcnZpY2UudGlsZTIpLFxyXG4gICAgICAgICAgICAgICAgJ3NlcnZpY2UtdGlsZScgOiAhaGFzSHRtbCh3YXBwaW5nU2VydmljZS50aWxlMil9XCJcclxuICAgICAgICAgICAgW25nU3R5bGVdPVwiIWhhc0h0bWwod2FwcGluZ1NlcnZpY2UudGlsZTIpID8geyAnYmFja2dyb3VuZC1jb2xvcic6ICcjMGUwYzBjJywgJ2NvbG9yJzogJyNmZmYnIH0gOiB7J2JhY2tncm91bmQtY29sb3InOiAndHJhbnNwYXJlbnQgIWltcG9ydGFudCcsICdjb2xvcic6ICd0cmFuc3BhcmVudCAhaW1wb3J0YW50J31cIlxyXG4gICAgICAgICAgICAqbmdJZj1cIndhcHBpbmdTZXJ2aWNlLnRpbGUyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgW2lubmVySHRtbF09XCJ3YXBwaW5nU2VydmljZS50aWxlMlwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1hY3RpdmF0ZSB0b2dnbGUtLT5cclxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBjbGFzcz1cInNlcnZpY2Utc2VsZWN0LXRvZ2dsZVwiIGNvbG9yPVwiYWNjZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ3YXBwaW5nU2VydmljZS5hbGxvd1NlbGVjdCAmJiBhbGxvd1NlbGVjdFNlbmRHaWZ0Q2FyZCAmJiAhc2hvd0J1dHRvblNlcnZpY2UgJiYgc2hvd1RvZ2dsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFRvZ2dsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwid2FwcGluZ1NlcnZpY2UuYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RXYXBwaW5nU2VydmljZSgpXCI+e3sgc2VydmljZVN0YXR1cyB9fTwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiAqbmdJZj1cInNob3dCdXR0b25TZXJ2aWNlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VydmljZS1zZWxlY3QtdG9nZ2xlXCJcclxuICAgICAgICAgICAgICAgIGNvbG9yPVwiYWNjZW50XCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZEJ1dHRvblNlcnZpY2VcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXNzQnV0dG9uU2VydmljZSgpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7IHdhcHBpbmdTZXJ2aWNlc1RyYW5zbGF0aW9ucz8uYnV0dG9uU2VydmljZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICBcclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLXNlcnZpY2UgaW5mby0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInNlcnZpY2UtaW5mby1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7J3NlcnZpY2UtaW5mby1jb250YWluZXItcGFkZGluZyc6IGZvcmNlTW9iaWxlfVwiIGZ4TGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlcnZpY2UtdGlsZS1kZXRhaWwtY29udGFpbmVyXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cclxuICAgICAgICA8IS0tdGlsZSAzLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFmb3JjZU1vYmlsZVwiXHJcbiAgICAgICAgICAgICBbaW5uZXJIdG1sXT1cIndhcHBpbmdTZXJ2aWNlLnRpbGUzXCIgZnhIaWRlIGZ4U2hvdy54c1xyXG4gICAgICAgICAgICAgY2xhc3M9XCJzZXJ2aWNlLW5hbWUgbWF0LXRpdGxlXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImZvcmNlTW9iaWxlXCJcclxuICAgICAgICAgICAgIFtpbm5lckh0bWxdPVwid2FwcGluZ1NlcnZpY2UudGlsZTNcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJzZXJ2aWNlLW5hbWUgbWF0LXRpdGxlXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLXRpbGVEZXRhaWwgMS0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZXJ2aWNlLXRpbGUtZGV0YWlsXCIgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJ3YXBwaW5nU2VydmljZS50aWxlRGV0YWlsMVwiPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tbGluay0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZXJ2aWNlLWxpbmstY29udGFpbmVyXCIgKm5nSWY9XCJ3YXBwaW5nU2VydmljZS50aXRsZUxpbmtVcmwgJiYgd2FwcGluZ1NlcnZpY2UubGlua1VybFwiPlxyXG4gICAgICAgIDxhIGNsYXNzPVwic2VydmljZS1saW5rXCIgaHJlZj1cInt7d2FwcGluZ1NlcnZpY2UubGlua1VybH19XCIgdGFyZ2V0PVwiX2JsYW5rXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInNlcnZpY2UtbGluay1pY29uXCIgc3ZnSWNvbj1cInNoYXJlX3NxdWFyZVwiPjwvbWF0LWljb24+PHNwYW4+e3t3YXBwaW5nU2VydmljZS50aXRsZUxpbmtVcmx9fTwvc3Bhbj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
247
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy1tYXRlcmlhbC1zZXJ2aWNlLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvbWF0ZXJpYWwvdy1tYXRlcmlhbC1zZXJ2aWNlLXZpZXcvdy1tYXRlcmlhbC1zZXJ2aWNlLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvbWF0ZXJpYWwvdy1tYXRlcmlhbC1zZXJ2aWNlLXZpZXcvdy1tYXRlcmlhbC1zZXJ2aWNlLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBR3pHLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFzQixNQUFNLDhCQUE4QixDQUFDO0FBUTdGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7Ozs7Ozs7Ozs7O0FBTzlGLE1BQU0sT0FBTyw2QkFBNkI7SUErQnhDLElBQWEsY0FBYyxDQUFDLEtBQXFCO1FBQy9DLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUcsS0FBSztZQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBc0JELFlBQ1UsZUFBZ0MsRUFDaEMsWUFBMEIsRUFDMUIsYUFBNEI7UUFGNUIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBMUR0QyxtQkFBYyxHQUFZLEtBQUss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LENBQUMsRUFBRSxJQUFJLEVBQUUsdUNBQXVDLEVBQUUsQ0FBQyxDQUFDO2lCQUNqRjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQXNCO1FBQ2pDLE9BQVEsR0FBZ0IsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDO0lBQ2hELENBQUM7OzJIQXBOVSw2QkFBNkI7K0dBQTdCLDZCQUE2QiwydEJDbEIxQyxrZ0lBb0VNOzRGRGxETyw2QkFBNkI7a0JBTHpDLFNBQVM7K0JBQ0UseUJBQXlCOzZKQWdCMUIsV0FBVztzQkFBbkIsS0FBSztnQkFFZ0MsMkJBQTJCO3NCQUFoRSxLQUFLO3VCQUFDLDZCQUE2QjtnQkFXSixxQkFBcUI7c0JBQXBELEtBQUs7dUJBQUMsdUJBQXVCO2dCQUNGLGlCQUFpQjtzQkFBNUMsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBQ0wsVUFBVTtzQkFBOUIsS0FBSzt1QkFBQyxZQUFZO2dCQUlOLGNBQWM7c0JBQTFCLEtBQUs7Z0JBUzRCLHNCQUFzQjtzQkFBdkQsTUFBTTt1QkFBQyx3QkFBd0I7Z0JBQ0Esb0JBQW9CO3NCQUFuRCxNQUFNO3VCQUFDLHNCQUFzQjtnQkFFckIsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLHlCQUF5QjtzQkFBakMsS0FBSztnQkFRRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBRUksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNFLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFdhcHBpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL21vZGVscy93YXBwaW5nLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXYXBwaW5nU2VydmljZUltYWdlIH0gZnJvbSAnLi4vc2hhcmVkL21vZGVscy93YXBwaW5nLXNlcnZpY2UtaW1hZ2UnO1xyXG5pbXBvcnQgeyBDYXJkU3RhdHVzLCBTZW5kaW5nU3RhdHVzLCBXYXBwaW5nU2VydmljZVR5cGUgfSBmcm9tICcuLi9zaGFyZWQvbW9kZWxzL2VudW1zLm1vZGVsJztcclxuaW1wb3J0IHsgV2FwcGluZ1NlcnZpY2VUcmFuc2xhdGlvbnMgfSBmcm9tICcuLi9zaGFyZWQvbW9kZWxzL3dhcHBpbmctc2VydmljZS10cmFuc2xhdGlvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgV2FwcGluZ1NlcnZpY2VUZW1wbGF0ZSB9IGZyb20gJy4uL3NoYXJlZC9tb2RlbHMvd2FwcGluZy1zZXJ2aWNlLXRlbXBsYXRlLm1vZGVsJztcclxuaW1wb3J0IHsgTWF0SWNvblJlZ2lzdHJ5IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBXRmlsZUI2NCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvdy1maWxlLWI2NC5tb2RlbCc7XHJcbmltcG9ydCB7IFdJbWFnZUNyb3BwZXJEYXRhIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy93LWltYWdlLWNyb3BwZXItZGF0YS5tb2RlbCc7XHJcbmltcG9ydCB7IFdJbWFnZUNyb3BwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9maWxlL3ctaW1hZ2UtY3JvcHBlci93LWltYWdlLWNyb3BwZXIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndy1tYXRlcmlhbC1zZXJ2aWNlLXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93LW1hdGVyaWFsLXNlcnZpY2Utdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdy1tYXRlcmlhbC1zZXJ2aWNlLXZpZXcuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgV01hdGVyaWFsU2VydmljZVZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIHNlcnZpY2VJZCE6IG51bWJlcjtcclxuICB3YXBwaW5nU2VydmljZUltYWdlcyE6IFdhcHBpbmdTZXJ2aWNlSW1hZ2VbXTtcclxuICBzZXJ2aWNlU3RhdHVzITogc3RyaW5nO1xyXG4gIGlzU2VuZEdpZnRDYXJkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGlzYWJsZWRUb2dnbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhbGxvd1NlbGVjdFNlbmRHaWZ0Q2FyZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgZW51bVNlbmRpbmdTdGF0dXM6IHR5cGVvZiBTZW5kaW5nU3RhdHVzID0gU2VuZGluZ1N0YXR1cztcclxuICBlY2FyZFN0YXR1czogdHlwZW9mIENhcmRTdGF0dXMgPSBDYXJkU3RhdHVzXHJcbiAgdHJhbnNsYXRpb25zOiBhbnk7XHJcbiAgXHJcbiAgQElucHV0KCkgZm9yY2VNb2JpbGUgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCd3YXBwaW5nU2VydmljZXNUcmFuc2xhdGlvbnMnKSB3YXBwaW5nU2VydmljZXNUcmFuc2xhdGlvbnM6IFdhcHBpbmdTZXJ2aWNlVHJhbnNsYXRpb25zID0ge1xyXG4gICAgYWN0aXZlZFNlcnZpY2U6ICdBY3RpdmFkYScsXHJcbiAgICBkaXNhYmxlZFNlcnZpY2U6ICdEZXNhY3RpdmFkYScsXHJcbiAgICBzY2hlZHVsZWRMYWJlbDogJ1Byb2dyYW1hZGEgcGFyYSBlbnZpYXIgYSB7e25hbWV9fScsXHJcbiAgICBzZW5kTGFiZWw6ICdFbnZpYWRhIGEge3tuYW1lfX0nLFxyXG4gICAgY2FyZEdlbmVyYXRlZDogJ1R1IHRhcmpldGEgZXN0YXLDoSBkaXNwb25pYmxlIHBhcmEgZWwgZW52w61vIGVuIGJyZXZlcyBpbnN0YW50ZXMnLFxyXG4gICAgcmVjZWl2ZWRMYWJlbDogXCJFbnZpYWRhIHBvciB7e25hbWV9fVwiLFxyXG4gICAgc2hvd01vcmU6IFwiTW9zdHJhciBtw6FzXCIsXHJcbiAgICBidXR0b25TZXJ2aWNlOiBcIlBhcnRpY2lwYXJcIlxyXG4gIH07XHJcbiAgXHJcbiAgQElucHV0KCdkaXNhYmxlZEJ1dHRvblNlcnZpY2UnKSBkaXNhYmxlZEJ1dHRvblNlcnZpY2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoJ3Nob3dCdXR0b25TZXJ2aWNlJykgc2hvd0J1dHRvblNlcnZpY2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoJ3Nob3dUb2dnbGUnKSBzaG93VG9nZ2xlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHJpdmF0ZSBfd2FwcGluZ1NlcnZpY2UhOiBXYXBwaW5nU2VydmljZTtcclxuXHJcbiAgQElucHV0KCkgc2V0IHdhcHBpbmdTZXJ2aWNlKHZhbHVlOiBXYXBwaW5nU2VydmljZSkge1xyXG4gICAgdGhpcy5fd2FwcGluZ1NlcnZpY2UgPSB2YWx1ZTtcclxuICAgIGlmKHZhbHVlKSB0aGlzLmdldFdhcHBpbmdTZXJ2aWNlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldCB3YXBwaW5nU2VydmljZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl93YXBwaW5nU2VydmljZTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoJ3dhcHBpbmdTZXJ2aWNlU2VsZWN0ZWQnKSB3YXBwaW5nU2VydmljZVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBPdXRwdXQoJ3RyaWdnZXJCdXR0b25TZXJ2aWNlJykgdHJpZ2dlckJ1dHRvblNlcnZpY2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBJbnB1dCgpIGlzRGV2TW9kZUFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRJbWFnZSE6IFdGaWxlQjY0IHwgc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBjcm9wcGVkSW1hZ2VDb25maWd1cmF0aW9uOiBXSW1hZ2VDcm9wcGVyRGF0YSA9IHtcclxuICAgIHJvdW5kZWRDcm9wcGVyOiBmYWxzZSwgXHJcbiAgICBjb25maWd1cmVkQXNwZWN0UmF0aW86IDQvMywgXHJcbiAgICB2aWV3UG9ydEhlaWh0UHg6IDYwMCwgXHJcbiAgICB2aWV3UG9ydFdpZHRoUHg6IDgwMCwgXHJcbiAgICBtYXhGaWxlU2l6ZTogMjAwMFxyXG4gIH07XHJcbiAgXHJcbiAgQElucHV0KCkgY3JvcHBlZERpYWxvZ1RyYW5zbGF0aW9uczogYW55O1xyXG4gIGltYWdlczogYW55W10gPSBbXTtcclxuICBAT3V0cHV0KCkgb25EZWZhdWx0SW1hZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8V0ZpbGVCNjQ+KCk7XHJcbiAgQElucHV0KCkgaXNOb0ltYWdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgb25Ib3ZlckltYWdlVG9vbHRpcDogc3RyaW5nID0gJ1VwbG9hZCBpbWFnZSc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtYXRJY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSxcclxuICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsIFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLm1hdEljb25SZWdpc3RyeS5hZGRTdmdJY29uKFwiY2FsZW5kYXJcIiwgdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKFwiL2Fzc2V0cy93YXBwSWNvbnMvbWF0LWNhbGVuZGFyLnN2Z1wiKSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZ2V0SW1hZ2UoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmKGNoYW5nZXNbJ2RlZmF1bHRJbWFnZSddICYmIGNoYW5nZXNbJ2RlZmF1bHRJbWFnZSddLmN1cnJlbnRWYWx1ZSl7XHJcbiAgICAgIHRoaXMuZGVmYXVsdEltYWdlID0gY2hhbmdlc1snZGVmYXVsdEltYWdlJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICB0aGlzLmdldEltYWdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoY2hhbmdlc1snZGVmYXVsdEltYWdlJ10gJiYgIWNoYW5nZXNbJ2RlZmF1bHRJbWFnZSddLmN1cnJlbnRWYWx1ZSl7XHJcbiAgICAgIGlmKHRoaXMuaXNEZXZNb2RlQWN0aXZlKXtcclxuICAgICAgICB0aGlzLmlzTm9JbWFnZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy53YXBwaW5nU2VydmljZUltYWdlcyA9IFt7IHBhdGg6ICcuLy4uLy4uLy4uL2Fzc2V0cy93YXBwSWNvbnMvaW1hZ2Uuc3ZnJyB9XVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRXYXBwaW5nU2VydmljZSh3YXBwU2VydmljZTogV2FwcGluZ1NlcnZpY2UpIHtcclxuICAgIHRoaXMuaXNTZW5kR2lmdENhcmQgPSBmYWxzZVxyXG4gICAgaWYgKHdhcHBTZXJ2aWNlLmFjdGl2ZSlcclxuICAgICAgdGhpcy5zZXJ2aWNlU3RhdHVzID0gdGhpcy53YXBwaW5nU2VydmljZXNUcmFuc2xhdGlvbnMuYWN0aXZlZFNlcnZpY2UudG9VcHBlckNhc2UoKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5zZXJ2aWNlU3RhdHVzID0gdGhpcy53YXBwaW5nU2VydmljZXNUcmFuc2xhdGlvbnMuZGlzYWJsZWRTZXJ2aWNlLnRvVXBwZXJDYXNlKCk7XHJcbiAgICBpZiAod2FwcFNlcnZpY2UuZGF0YVJlcVRvU2VuZENhcmQgJiYgd2FwcFNlcnZpY2UuZGF0YVJlcVRvU2VuZENhcmQuZGF0YVJlcVRvU2VuZENhcmRJZCAhPSAwKSB7XHJcbiAgICAgIHRoaXMuaXNTZW5kR2lmdENhcmQgPSB0cnVlXHJcbiAgICAgIGlmICh3YXBwU2VydmljZS5lbnVtVHlwZVN0YXR1c0VDYXJkSUQgPT0gdGhpcy5lY2FyZFN0YXR1cy5zZW50KSB7XHJcbiAgICAgICAgdGhpcy5hbGxvd1NlbGVjdFNlbmRHaWZ0Q2FyZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAod2FwcFNlcnZpY2UuZW51bVR5cGVTdGF0dXNFQ2FyZElEID09IHRoaXMuZWNhcmRTdGF0dXMuZ2VuZXJhdGVkKVxyXG4gICAgICB0aGlzLmFsbG93U2VsZWN0U2VuZEdpZnRDYXJkID0gZmFsc2U7XHJcblxyXG5cclxuICAgIHRoaXMuZ2V0V2FwcGluZ1NlcnZpY2VUaWxlcyh0aGlzLndhcHBpbmdTZXJ2aWNlKTtcclxuXHJcbiAgICBpZih0aGlzLmlzRGV2TW9kZUFjdGl2ZSA9PSBmYWxzZSl7XHJcbiAgICAgIHRoaXMuZ2V0V2FwcGluZ1NlcnZpY2VJbWFnZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFdhcHBpbmdTZXJ2aWNlVGlsZXMoc2VydmljZTogV2FwcGluZ1NlcnZpY2UpIHtcclxuICAgIGlmIChzZXJ2aWNlLndhcHBpbmdTZXJ2aWNlVGVtcGxhdGVzICE9IG51bGwpIHtcclxuICAgICAgc2VydmljZS53YXBwaW5nU2VydmljZVRlbXBsYXRlcy5mb3JFYWNoKCh3YXBwaW5nU2VydmljZVRpbGU6IFdhcHBpbmdTZXJ2aWNlVGVtcGxhdGUpID0+IHtcclxuICAgICAgICBpZih3YXBwaW5nU2VydmljZVRpbGUuZGV0YWlsVGl0bGUpe1xyXG4gICAgICAgICAgdGhpcy53YXBwaW5nU2VydmljZS50aWxlMyA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHdhcHBpbmdTZXJ2aWNlVGlsZS5kZXRhaWxUaXRsZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMud2FwcGluZ1NlcnZpY2UudGlsZTMgPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYod2FwcGluZ1NlcnZpY2VUaWxlLmRldGFpbEhlYWRlcil7XHJcbiAgICAgICAgICB0aGlzLndhcHBpbmdTZXJ2aWNlLnRpbGUxID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwod2FwcGluZ1NlcnZpY2VUaWxlLmRldGFpbEhlYWRlcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMud2FwcGluZ1NlcnZpY2UudGlsZTEgPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYod2FwcGluZ1NlcnZpY2VUaWxlLmRldGFpbEZvb3Qpe1xyXG4gICAgICAgICAgdGhpcy53YXBwaW5nU2VydmljZS50aWxlMiA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHdhcHBpbmdTZXJ2aWNlVGlsZS5kZXRhaWxGb290KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy53YXBwaW5nU2VydmljZS50aWxlMiA9ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih3YXBwaW5nU2VydmljZVRpbGUuZGV0YWlsQm9keSl7XHJcbiAgICAgICAgICB0aGlzLndhcHBpbmdTZXJ2aWNlLnRpbGVEZXRhaWwxID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwod2FwcGluZ1NlcnZpY2VUaWxlLmRldGFpbEJvZHkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLndhcHBpbmdTZXJ2aWNlLnRpbGVEZXRhaWwxID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFdhcHBpbmdTZXJ2aWNlSW1hZ2VzKCkge1xyXG4gICAgdGhpcy5nZXRJbWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0V2FwcGluZ1NlcnZpY2UoKSB7XHJcbiAgICB0aGlzLmRpc2FibGVkVG9nZ2xlID0gdHJ1ZTtcclxuICAgIHRoaXMud2FwcGluZ1NlcnZpY2VTZWxlY3RlZC5lbWl0KHRoaXMud2FwcGluZ1NlcnZpY2UuYWN0aXZlKTtcclxuICAgIGlmICh0aGlzLndhcHBpbmdTZXJ2aWNlLmFjdGl2ZSlcclxuICAgICAgdGhpcy5zZXJ2aWNlU3RhdHVzID0gdGhpcy53YXBwaW5nU2VydmljZXNUcmFuc2xhdGlvbnMuYWN0aXZlZFNlcnZpY2UudG9VcHBlckNhc2UoKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5zZXJ2aWNlU3RhdHVzID0gdGhpcy53YXBwaW5nU2VydmljZXNUcmFuc2xhdGlvbnMuZGlzYWJsZWRTZXJ2aWNlLnRvVXBwZXJDYXNlKCk7XHJcblxyXG4gICAgdGhpcy5kaXNhYmxlZFRvZ2dsZSA9IGZhbHNlXHJcbiAgICB0aGlzLmdldFdhcHBpbmdTZXJ2aWNlKHRoaXMud2FwcGluZ1NlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgaGFzSHRtbCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gLzxcXC8/W2Etel1bXFxzXFxTXSo+L2kudGVzdCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwcmVzc0J1dHRvblNlcnZpY2UoKXtcclxuICAgIHRoaXMudHJpZ2dlckJ1dHRvblNlcnZpY2UuZW1pdCgpXHJcbiAgfVxyXG5cclxuICBzZXRJbWFnZSgpe1xyXG4gICAgY29uc3QgcmVmOiBEeW5hbWljRGlhbG9nUmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oV0ltYWdlQ3JvcHBlckNvbXBvbmVudCwge1xyXG4gICAgICBoZWFkZXI6IHRoaXMuY3JvcHBlZERpYWxvZ1RyYW5zbGF0aW9ucz8ubW9kYWwuaGVhZGVyLFxyXG4gICAgICB3aWR0aDogJzcwcmVtJyxcclxuICAgICAgY29udGVudFN0eWxlOiB7XCJvdmVyZmxvd1wiOiBcImF1dG9cIiwgXCJoZWlnaHRcIjogXCJhdXRvXCIsIFwicGFkZGluZy1ib3R0b21cIjogXCI4cHhcIn0sXHJcbiAgICAgIGRhdGE6IHtkYXRhTW9kYWw6IHRoaXMuY3JvcHBlZEltYWdlQ29uZmlndXJhdGlvbiwgdHJhbnNsYXRpb25zOiB0aGlzLmNyb3BwZWREaWFsb2dUcmFuc2xhdGlvbnN9LFxyXG4gICAgICByZXNpemFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICByZWYub25DbG9zZS5zdWJzY3JpYmUoKGltYWdlQ3JvcHBlZDogV0ZpbGVCNjQpID0+IHtcclxuICAgICAgaWYoaW1hZ2VDcm9wcGVkKXtcclxuICAgICAgICB0aGlzLmRlZmF1bHRJbWFnZSA9IGltYWdlQ3JvcHBlZDtcclxuICAgICAgICB0aGlzLmltYWdlcy5wdXNoKHtwYXRoOiB0aGlzLmRlZmF1bHRJbWFnZS5maWxlQmFzZTY0fSk7XHJcbiAgICAgICAgdGhpcy5vbkRlZmF1bHRJbWFnZUV2ZW50LmVtaXQodGhpcy5kZWZhdWx0SW1hZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0SW1hZ2UoKSB7XHJcbiAgICB0aGlzLmlzTm9JbWFnZSA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuaXNEZXZNb2RlQWN0aXZlID09IHRydWUpIHtcclxuICAgICAgaWYgKHRoaXMuZGVmYXVsdEltYWdlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNXRmlsZUltYWdlKHRoaXMuZGVmYXVsdEltYWdlKSkge1xyXG4gICAgICAgICAgdGhpcy53YXBwaW5nU2VydmljZUltYWdlcyA9IFt7IHBhdGg6ICh0aGlzLmRlZmF1bHRJbWFnZSBhcyBXRmlsZUI2NCkuZmlsZUJhc2U2NCB9XTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy53YXBwaW5nU2VydmljZUltYWdlcyA9IFt7IHBhdGg6ICh0aGlzLmRlZmF1bHRJbWFnZSBhcyBzdHJpbmcpIH1dO1xyXG4gICAgICAgIH1cclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5pc05vSW1hZ2UgPSB0cnVlOyBcclxuICAgICAgICB0aGlzLndhcHBpbmdTZXJ2aWNlSW1hZ2VzID0gW3sgcGF0aDogJy4vLi4vLi4vLi4vYXNzZXRzL3dhcHBJY29ucy9pbWFnZS5zdmcnIH1dO1xyXG4gICAgICB9XHJcbiAgICB9ZWxzZXtcclxuICAgICAgaWYodGhpcy53YXBwaW5nU2VydmljZSl7XHJcbiAgICAgICAgaWYodGhpcy53YXBwaW5nU2VydmljZS53YXBwaW5nU2VydmljZUltYWdlcy5sZW5ndGggPiAwKXtcclxuICAgICAgICAgIHRoaXMud2FwcGluZ1NlcnZpY2VJbWFnZXMgPSB0aGlzLndhcHBpbmdTZXJ2aWNlLndhcHBpbmdTZXJ2aWNlSW1hZ2VzO1xyXG4gICAgICAgIH1lbHNlIGlmKHRoaXMud2FwcGluZ1NlcnZpY2Uud2FwcGluZ1NlcnZpY2VJbWFnZXMubGVuZ3RoID09IDAgJiYgdGhpcy53YXBwaW5nU2VydmljZS5pbWFnZVVybCl7XHJcbiAgICAgICAgICB0aGlzLndhcHBpbmdTZXJ2aWNlSW1hZ2VzID0gW107XHJcbiAgICAgICAgICBsZXQgd2FwcGluZ1NlcnZpY2VJbWFnZTogV2FwcGluZ1NlcnZpY2VJbWFnZSA9IHtcclxuICAgICAgICAgICAgcGF0aDogdGhpcy53YXBwaW5nU2VydmljZS5pbWFnZVVybCEsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgdGhpcy53YXBwaW5nU2VydmljZUltYWdlcy51bnNoaWZ0KHdhcHBpbmdTZXJ2aWNlSW1hZ2UpO1xyXG4gICAgICAgIH1lbHNlIGlmKHRoaXMuZGVmYXVsdEltYWdlKXtcclxuICAgICAgICAgIHRoaXMud2FwcGluZ1NlcnZpY2VJbWFnZXMgPSBbeyBwYXRoOiAodGhpcy5kZWZhdWx0SW1hZ2UgYXMgc3RyaW5nKSB9XTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMuaXNOb0ltYWdlID0gdHJ1ZTsgXHJcbiAgICAgICAgICB0aGlzLndhcHBpbmdTZXJ2aWNlSW1hZ2VzID0gW3sgcGF0aDogJy4vLi4vLi4vLi4vYXNzZXRzL3dhcHBJY29ucy9pbWFnZS5zdmcnIH1dO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNXRmlsZUltYWdlKG9iajogV0ZpbGVCNjQgfCBzdHJpbmcpe1xyXG4gICAgcmV0dXJuIChvYmogYXMgV0ZpbGVCNjQpLmJhc2U2NCAhPT0gdW5kZWZpbmVkO1xyXG4gIH1cclxufVxyXG4iLCI8d2FwcC1tYWluLXRpdGxlIFt0aXRsZV09XCJ3YXBwaW5nU2VydmljZS50aWxlM1wiICpuZ0lmPVwid2FwcGluZ1NlcnZpY2UgJiYgKCFmb3JjZU1vYmlsZSlcIiBmeEhpZGUueHM+PC93YXBwLW1haW4tdGl0bGU+XHJcbjxkaXYgY2xhc3M9XCJzZXJ2aWNlLWRldGFpbC1jZW50ZXJcIiAqbmdJZj1cIndhcHBpbmdTZXJ2aWNlXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7J2ZvcmNlLW1vYmlsZSc6IGZvcmNlTW9iaWxlfVwiXHJcbiAgICAgICAgW2Z4TGF5b3V0XT1cImZvcmNlTW9iaWxlID8gJ2NvbHVtbicgOiAncm93J1wiXHJcbiAgICAgICAgW2Z4TGF5b3V0LnhzXT1cIidjb2x1bW4nXCJcclxuICAgICAgICBbZnhMYXlvdXQuc21dPVwiJ2NvbHVtbidcIj5cclxuICAgIDwhLS1zZXJ2aWNlIGltYWdlLS0+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnc2VydmljZS12aWV3LW5vLW1hcmdpbic6IGZvcmNlTW9iaWxlLCAnc2VydmljZS12aWV3JzogIWZvcmNlTW9iaWxlfVwiIGZ4TGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICAgICAgPCEtLXRpbGUgMS0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJ3YXBwaW5nU2VydmljZS50aWxlMSAmJiB3YXBwaW5nU2VydmljZS50aWxlMSAhPSAnJ1wiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnc2VydmljZS1pbWFnZS10aWxlJyA6ICFoYXNIdG1sKHdhcHBpbmdTZXJ2aWNlLnRpbGUxKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RlbXBsYXRlLXNlcnZpY2UtaW1hZ2UtdGlsZScgOiBoYXNIdG1sKHdhcHBpbmdTZXJ2aWNlLnRpbGUxKX1cIlxyXG4gICAgICAgICAgICBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiNXB4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyd0aWxlLXZpZXctbm8taHRtbCc6ICFoYXNIdG1sKHdhcHBpbmdTZXJ2aWNlLnRpbGUxKX1cIiBjbGFzcz1cInNlcnZpY2Utdmlldy10aWxlMVwiIFxyXG4gICAgICAgICAgICAgICAgW2lubmVySHRtbF09XCJ3YXBwaW5nU2VydmljZS50aWxlMVwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1zbGlkZXNob3ctLT5cclxuICAgICAgICA8d2FwcC1jYXJvdXNlbCBbaXNEZXZNb2RlQWN0aXZlXT1cImlzRGV2TW9kZUFjdGl2ZVwiIFtmb3JjZU1vYmlsZV09XCJmb3JjZU1vYmlsZVwiIFtpbWFnZXNdPVwid2FwcGluZ1NlcnZpY2VJbWFnZXNcIiBbaXNOb0ltYWdlXT1cImlzTm9JbWFnZVwiIChvblNldEltYWdlRXZlbnQpPVwic2V0SW1hZ2UoKVwiIFtvbkhvdmVySW1hZ2VUb29sdGlwXT1cIm9uSG92ZXJJbWFnZVRvb2x0aXBcIj48L3dhcHAtY2Fyb3VzZWw+XHJcbiAgICAgICAgPCEtLXRpbGUgMi0tPlxyXG4gICAgICAgIDxkaXYgZnhGbGV4IGZ4TGF5b3V0PVwicm93XCJcclxuICAgICAgICAgICAgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIlxyXG4gICAgICAgICAgICBmeExheW91dEdhcD1cIjVweFwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnc2VydmljZS10aWxlLWJvcmRlci1ib3R0b20tcmFkaXVzJzogIXdhcHBpbmdTZXJ2aWNlLnRpbGU0LFxyXG4gICAgICAgICAgICAgICAgJ3RlbXBsYXRlLXNlcnZpY2UtdGlsZSc6IGhhc0h0bWwod2FwcGluZ1NlcnZpY2UudGlsZTIpLFxyXG4gICAgICAgICAgICAgICAgJ3NlcnZpY2UtdGlsZScgOiAhaGFzSHRtbCh3YXBwaW5nU2VydmljZS50aWxlMil9XCJcclxuICAgICAgICAgICAgW25nU3R5bGVdPVwiIWhhc0h0bWwod2FwcGluZ1NlcnZpY2UudGlsZTIpID8geyAnYmFja2dyb3VuZC1jb2xvcic6ICcjMGUwYzBjJywgJ2NvbG9yJzogJyNmZmYnIH0gOiB7J2JhY2tncm91bmQtY29sb3InOiAndHJhbnNwYXJlbnQgIWltcG9ydGFudCcsICdjb2xvcic6ICd0cmFuc3BhcmVudCAhaW1wb3J0YW50J31cIlxyXG4gICAgICAgICAgICAqbmdJZj1cIndhcHBpbmdTZXJ2aWNlLnRpbGUyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgW2lubmVySHRtbF09XCJ3YXBwaW5nU2VydmljZS50aWxlMlwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1hY3RpdmF0ZSB0b2dnbGUtLT5cclxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBjbGFzcz1cInNlcnZpY2Utc2VsZWN0LXRvZ2dsZVwiIGNvbG9yPVwiYWNjZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ3YXBwaW5nU2VydmljZS5hbGxvd1NlbGVjdCAmJiBhbGxvd1NlbGVjdFNlbmRHaWZ0Q2FyZCAmJiAhc2hvd0J1dHRvblNlcnZpY2UgJiYgc2hvd1RvZ2dsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFRvZ2dsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwid2FwcGluZ1NlcnZpY2UuYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RXYXBwaW5nU2VydmljZSgpXCI+e3sgc2VydmljZVN0YXR1cyB9fTwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiAqbmdJZj1cInNob3dCdXR0b25TZXJ2aWNlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VydmljZS1zZWxlY3QtdG9nZ2xlXCJcclxuICAgICAgICAgICAgICAgIGNvbG9yPVwiYWNjZW50XCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZEJ1dHRvblNlcnZpY2VcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXNzQnV0dG9uU2VydmljZSgpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7IHdhcHBpbmdTZXJ2aWNlc1RyYW5zbGF0aW9ucz8uYnV0dG9uU2VydmljZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICBcclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLXNlcnZpY2UgaW5mby0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInNlcnZpY2UtaW5mby1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7J3NlcnZpY2UtaW5mby1jb250YWluZXItcGFkZGluZyc6IGZvcmNlTW9iaWxlfVwiIGZ4TGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlcnZpY2UtdGlsZS1kZXRhaWwtY29udGFpbmVyXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cclxuICAgICAgICA8IS0tdGlsZSAzLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFmb3JjZU1vYmlsZVwiXHJcbiAgICAgICAgICAgICBbaW5uZXJIdG1sXT1cIndhcHBpbmdTZXJ2aWNlLnRpbGUzXCIgZnhIaWRlIGZ4U2hvdy54c1xyXG4gICAgICAgICAgICAgY2xhc3M9XCJzZXJ2aWNlLW5hbWUgbWF0LXRpdGxlXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImZvcmNlTW9iaWxlXCJcclxuICAgICAgICAgICAgIFtpbm5lckh0bWxdPVwid2FwcGluZ1NlcnZpY2UudGlsZTNcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJzZXJ2aWNlLW5hbWUgbWF0LXRpdGxlXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLXRpbGVEZXRhaWwgMS0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZXJ2aWNlLXRpbGUtZGV0YWlsXCIgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJ3YXBwaW5nU2VydmljZS50aWxlRGV0YWlsMVwiPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tbGluay0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZXJ2aWNlLWxpbmstY29udGFpbmVyXCIgKm5nSWY9XCJ3YXBwaW5nU2VydmljZS50aXRsZUxpbmtVcmwgJiYgd2FwcGluZ1NlcnZpY2UubGlua1VybFwiPlxyXG4gICAgICAgIDxhIGNsYXNzPVwic2VydmljZS1saW5rXCIgaHJlZj1cInt7d2FwcGluZ1NlcnZpY2UubGlua1VybH19XCIgdGFyZ2V0PVwiX2JsYW5rXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInNlcnZpY2UtbGluay1pY29uXCIgc3ZnSWNvbj1cInNoYXJlX3NxdWFyZVwiPjwvbWF0LWljb24+PHNwYW4+e3t3YXBwaW5nU2VydmljZS50aXRsZUxpbmtVcmx9fTwvc3Bhbj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -126,6 +126,9 @@ export class CarouselComponent {
126
126
  }
127
127
  }
128
128
  ngOnChanges(changes) {
129
+ if (changes['images'] && changes['images'].currentValue) {
130
+ this.images = changes['images'].currentValue;
131
+ }
129
132
  }
130
133
  ngOnDestroy() {
131
134
  if (this.allowThumbnail) {
@@ -214,7 +217,7 @@ export class CarouselComponent {
214
217
  }
215
218
  }
216
219
  CarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CarouselComponent, deps: [{ token: i1.DeviceDetectorService }], target: i0.ɵɵFactoryTarget.Component });
217
- CarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CarouselComponent, selector: "wapp-carousel", inputs: { images: "images", allowThumbnail: "allowThumbnail", infiniteCarousel: "infiniteCarousel", forceMobile: "forceMobile", height: "height", isDevModeActive: "isDevModeActive", isNoImage: "isNoImage", onHoverImageTooltip: "onHoverImageTooltip" }, outputs: { onSetImageEvent: "onSetImageEvent" }, viewQueries: [{ propertyName: "thumbnail", first: true, predicate: ["thumbnail"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"carousel-container\"\r\n [style.height.px]=\"height?height:null\"\r\n [style.margin-bottom]=\"height?'.25rem':null\"\r\n (touchstart)=\"posIni = $event.changedTouches[0].pageX\"\r\n (touchend)=\"move($event.changedTouches[0].pageX)\">\r\n <div *ngIf=\"forceMobile\" class=\"carousel-top-left-icon\">\r\n <svg width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"30\" height=\"30\" rx=\"15\" fill=\"white\" fill-opacity=\"0.63\"/>\r\n <path d=\"M20.8337 15H9.16699\" stroke=\"#1F2224\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M13.2503 19.0807L9.16699 14.9974L13.2503 10.9141\" stroke=\"#1F2224\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <!--carousel image container-->\r\n <div class=\"carousel-image-container\"\r\n [ngClass]=\"height ? 'fixed-height' : null\"\r\n *ngFor=\"let img of images; let i = index; let first = first\"\r\n [@animImageSlider]=\"slideControl[i]\" (click)=\"isDevModeActive ? onSetImage() : ''\" [pTooltip]=\"onHoverImageTooltip\" tooltipPosition=\"top\">\r\n <!--carousel image-->\r\n <img #slide (load)=\"first && onLoad(slide)\" \r\n [ngClass]=\"{'default-image' : isNoImage, 'edit-image' : isDevModeActive}\"\r\n [src]=\"img.path\"/>\r\n </div>\r\n <!--previous button-->\r\n <button type=\"button\"\r\n class=\"carousel-previous-button\"\r\n (click)=\"change('right')\"\r\n *ngIf=\"showNavigation\">\r\n <span class=\"carousel-previous-icon\"></span>\r\n </button>\r\n <!--next button-->\r\n <button type=\"button\"\r\n class=\"carousel-next-button\"\r\n (click)=\"change('left')\"\r\n *ngIf=\"showNavigation\">\r\n <span class=\"carousel-next-icon\"></span>\r\n </button>\r\n <!--button indicators-->\r\n <div class=\"carousel-indicator-container\" *ngIf=\"showIndicators\">\r\n <div class=\"carousel-indicator-buttons\">\r\n <button *ngFor=\"let img of images; let i = index\"\r\n [style.opacity]=\"i == counter ? 1 : 0.5\"\r\n (click)=\"setIndex(i)\"></button>\r\n </div>\r\n </div>\r\n</div>\r\n<!--thumbnail indicators-->\r\n<div #thumbnail class=\"carousel-thumbnail-container\" *ngIf=\"allowThumbnail\">\r\n <div class=\"carousel-thumbnails\"\r\n [@animationThumbnail]=\"{\r\n value: thumbnailAnimation,\r\n params: { margin: thumbnailMargin + 'px' }}\">\r\n <img *ngFor=\"let img of images; let i = index\"\r\n [style.width.px]=\"thumbnailWidth\"\r\n [style.margin-right.px]=\"thumbnailMarginRigth\"\r\n [style.opacity]=\"i == counter ? 1 : 0.5\"\r\n (load)=\"onLoadThumbnail()\"\r\n (click)=\"setIndex(i)\"\r\n [src]=\"img.path\" />\r\n </div>\r\n</div>\r\n", styles: [".carousel-container{position:relative;display:flex;overflow:hidden;margin-left:auto;margin-right:auto;align-items:center;width:450px}.carousel-top-left-icon{position:absolute;top:15px;left:15px;cursor:pointer;z-index:10}.carousel-image-container{width:100%;position:relative}.carousel-image-container img{width:450px}@media (min-width:600px) and (max-width: 959px){.carousel-image-container img{width:100%}.carousel-container{width:unset}}@media (max-width: 599px){.carousel-image-container img{width:100%}.carousel-container{width:unset}}.carousel-image-container img.fixed-height{position:absolute;inset:-100% 0;margin:auto}.carousel-container:after{display:block;clear:both;content:\"\"}.carousel-container div{float:left;margin-right:-100%;font-size:0}.carousel-previous-button:hover,.carousel-next-button:hover,.carousel-previous-button:focus,.carousel-next-button:focus{opacity:.9}.carousel-previous-button,.carousel-next-button{position:absolute;top:0;bottom:0;width:15%;display:flex;align-items:center;justify-content:center;background-color:transparent;border:0;color:#fff;opacity:.5;transition:opacity .15s ease;cursor:pointer}.carousel-next-button{right:0}.carousel-next-icon{background-image:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>\")}.carousel-previous-icon{background-image:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-chevron-left' viewBox='0 0 16 16'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>\")}.carousel-next-icon,.carousel-previous-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-indicator-container{width:100%;overflow:hidden}.carousel-indicator-buttons{display:flex;position:absolute;right:0;bottom:0;left:0;z-index:2;justify-content:center;padding:0;margin-right:15%!important;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicator-buttons button{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent}.carousel-indicator-buttons button:hover{opacity:1!important}.carousel-thumbnail-container{width:100%;overflow:hidden}.carousel-thumbnails{display:flex}.carousel-thumbnails img{cursor:pointer}.carousel-thumbnails img:hover{opacity:1!important}.default-image{padding:68px}.edit-image{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i4.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }], animations: [
220
+ CarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CarouselComponent, selector: "wapp-carousel", inputs: { images: "images", allowThumbnail: "allowThumbnail", infiniteCarousel: "infiniteCarousel", forceMobile: "forceMobile", height: "height", isDevModeActive: "isDevModeActive", isNoImage: "isNoImage", onHoverImageTooltip: "onHoverImageTooltip" }, outputs: { onSetImageEvent: "onSetImageEvent" }, viewQueries: [{ propertyName: "thumbnail", first: true, predicate: ["thumbnail"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"carousel-container\"\r\n [style.height.px]=\"height?height:null\"\r\n [style.margin-bottom]=\"height?'.25rem':null\"\r\n (touchstart)=\"posIni = $event.changedTouches[0].pageX\"\r\n (touchend)=\"move($event.changedTouches[0].pageX)\">\r\n <div *ngIf=\"forceMobile\" class=\"carousel-top-left-icon\">\r\n <svg width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"30\" height=\"30\" rx=\"15\" fill=\"white\" fill-opacity=\"0.63\"/>\r\n <path d=\"M20.8337 15H9.16699\" stroke=\"#1F2224\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M13.2503 19.0807L9.16699 14.9974L13.2503 10.9141\" stroke=\"#1F2224\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <!--carousel image container-->\r\n <div class=\"carousel-image-container\"\r\n [ngClass]=\"height ? 'fixed-height' : null\"\r\n *ngFor=\"let img of images; let i = index; let first = first\"\r\n [@animImageSlider]=\"slideControl[i]\" (click)=\"isDevModeActive ? onSetImage() : ''\" [pTooltip]=\"onHoverImageTooltip\" tooltipPosition=\"top\">\r\n <!--carousel image-->\r\n <img #slide (load)=\"first && onLoad(slide)\" \r\n [ngClass]=\"{'default-image' : isNoImage, 'edit-image' : isDevModeActive}\"\r\n [src]=\"img.path\"/>\r\n </div>\r\n <!--previous button-->\r\n <button type=\"button\"\r\n class=\"carousel-previous-button\"\r\n (click)=\"change('right')\"\r\n *ngIf=\"showNavigation\">\r\n <span class=\"carousel-previous-icon\"></span>\r\n </button>\r\n <!--next button-->\r\n <button type=\"button\"\r\n class=\"carousel-next-button\"\r\n (click)=\"change('left')\"\r\n *ngIf=\"showNavigation\">\r\n <span class=\"carousel-next-icon\"></span>\r\n </button>\r\n <!--button indicators-->\r\n <div class=\"carousel-indicator-container\" *ngIf=\"showIndicators\">\r\n <div class=\"carousel-indicator-buttons\">\r\n <button *ngFor=\"let img of images; let i = index\"\r\n [style.opacity]=\"i == counter ? 1 : 0.5\"\r\n (click)=\"setIndex(i)\"></button>\r\n </div>\r\n </div>\r\n</div>\r\n<!--thumbnail indicators-->\r\n<div #thumbnail class=\"carousel-thumbnail-container\" *ngIf=\"allowThumbnail\">\r\n <div class=\"carousel-thumbnails\"\r\n [@animationThumbnail]=\"{\r\n value: thumbnailAnimation,\r\n params: { margin: thumbnailMargin + 'px' }}\">\r\n <img *ngFor=\"let img of images; let i = index\"\r\n [style.width.px]=\"thumbnailWidth\"\r\n [style.margin-right.px]=\"thumbnailMarginRigth\"\r\n [style.opacity]=\"i == counter ? 1 : 0.5\"\r\n (load)=\"onLoadThumbnail()\"\r\n (click)=\"setIndex(i)\"\r\n [src]=\"img.path\" />\r\n </div>\r\n</div>\r\n", styles: [".carousel-container{position:relative;display:flex;overflow:hidden;margin-left:auto;margin-right:auto;align-items:center;width:450px}.carousel-top-left-icon{position:absolute;top:15px;left:15px;cursor:pointer;z-index:10}.carousel-image-container{width:100%;position:relative}.carousel-image-container img{max-width:450px;width:-webkit-fill-available;width:-moz-available;width:stretch}@media (min-width:600px) and (max-width: 959px){.carousel-image-container img{width:100%}.carousel-container{width:unset}}@media (max-width: 599px){.carousel-image-container img{width:100%}.carousel-container{width:unset}}.carousel-image-container img.fixed-height{position:absolute;inset:-100% 0;margin:auto}.carousel-container:after{display:block;clear:both;content:\"\"}.carousel-container div{float:left;margin-right:-100%;font-size:0}.carousel-previous-button:hover,.carousel-next-button:hover,.carousel-previous-button:focus,.carousel-next-button:focus{opacity:.9}.carousel-previous-button,.carousel-next-button{position:absolute;top:0;bottom:0;width:15%;display:flex;align-items:center;justify-content:center;background-color:transparent;border:0;color:#fff;opacity:.5;transition:opacity .15s ease;cursor:pointer}.carousel-next-button{right:0}.carousel-next-icon{background-image:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>\")}.carousel-previous-icon{background-image:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-chevron-left' viewBox='0 0 16 16'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>\")}.carousel-next-icon,.carousel-previous-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-indicator-container{width:100%;overflow:hidden}.carousel-indicator-buttons{display:flex;position:absolute;right:0;bottom:0;left:0;z-index:2;justify-content:center;padding:0;margin-right:15%!important;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicator-buttons button{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent}.carousel-indicator-buttons button:hover{opacity:1!important}.carousel-thumbnail-container{width:100%;overflow:hidden}.carousel-thumbnails{display:flex}.carousel-thumbnails img{cursor:pointer}.carousel-thumbnails img:hover{opacity:1!important}.default-image{padding:68px}.edit-image{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i4.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }], animations: [
218
221
  trigger('animImageSlider', animationCarouselFade),
219
222
  trigger('animationThumbnail', animationThumbnail),
220
223
  ] });
@@ -223,7 +226,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
223
226
  args: [{ selector: 'wapp-carousel', animations: [
224
227
  trigger('animImageSlider', animationCarouselFade),
225
228
  trigger('animationThumbnail', animationThumbnail),
226
- ], template: "<div class=\"carousel-container\"\r\n [style.height.px]=\"height?height:null\"\r\n [style.margin-bottom]=\"height?'.25rem':null\"\r\n (touchstart)=\"posIni = $event.changedTouches[0].pageX\"\r\n (touchend)=\"move($event.changedTouches[0].pageX)\">\r\n <div *ngIf=\"forceMobile\" class=\"carousel-top-left-icon\">\r\n <svg width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"30\" height=\"30\" rx=\"15\" fill=\"white\" fill-opacity=\"0.63\"/>\r\n <path d=\"M20.8337 15H9.16699\" stroke=\"#1F2224\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M13.2503 19.0807L9.16699 14.9974L13.2503 10.9141\" stroke=\"#1F2224\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <!--carousel image container-->\r\n <div class=\"carousel-image-container\"\r\n [ngClass]=\"height ? 'fixed-height' : null\"\r\n *ngFor=\"let img of images; let i = index; let first = first\"\r\n [@animImageSlider]=\"slideControl[i]\" (click)=\"isDevModeActive ? onSetImage() : ''\" [pTooltip]=\"onHoverImageTooltip\" tooltipPosition=\"top\">\r\n <!--carousel image-->\r\n <img #slide (load)=\"first && onLoad(slide)\" \r\n [ngClass]=\"{'default-image' : isNoImage, 'edit-image' : isDevModeActive}\"\r\n [src]=\"img.path\"/>\r\n </div>\r\n <!--previous button-->\r\n <button type=\"button\"\r\n class=\"carousel-previous-button\"\r\n (click)=\"change('right')\"\r\n *ngIf=\"showNavigation\">\r\n <span class=\"carousel-previous-icon\"></span>\r\n </button>\r\n <!--next button-->\r\n <button type=\"button\"\r\n class=\"carousel-next-button\"\r\n (click)=\"change('left')\"\r\n *ngIf=\"showNavigation\">\r\n <span class=\"carousel-next-icon\"></span>\r\n </button>\r\n <!--button indicators-->\r\n <div class=\"carousel-indicator-container\" *ngIf=\"showIndicators\">\r\n <div class=\"carousel-indicator-buttons\">\r\n <button *ngFor=\"let img of images; let i = index\"\r\n [style.opacity]=\"i == counter ? 1 : 0.5\"\r\n (click)=\"setIndex(i)\"></button>\r\n </div>\r\n </div>\r\n</div>\r\n<!--thumbnail indicators-->\r\n<div #thumbnail class=\"carousel-thumbnail-container\" *ngIf=\"allowThumbnail\">\r\n <div class=\"carousel-thumbnails\"\r\n [@animationThumbnail]=\"{\r\n value: thumbnailAnimation,\r\n params: { margin: thumbnailMargin + 'px' }}\">\r\n <img *ngFor=\"let img of images; let i = index\"\r\n [style.width.px]=\"thumbnailWidth\"\r\n [style.margin-right.px]=\"thumbnailMarginRigth\"\r\n [style.opacity]=\"i == counter ? 1 : 0.5\"\r\n (load)=\"onLoadThumbnail()\"\r\n (click)=\"setIndex(i)\"\r\n [src]=\"img.path\" />\r\n </div>\r\n</div>\r\n", styles: [".carousel-container{position:relative;display:flex;overflow:hidden;margin-left:auto;margin-right:auto;align-items:center;width:450px}.carousel-top-left-icon{position:absolute;top:15px;left:15px;cursor:pointer;z-index:10}.carousel-image-container{width:100%;position:relative}.carousel-image-container img{width:450px}@media (min-width:600px) and (max-width: 959px){.carousel-image-container img{width:100%}.carousel-container{width:unset}}@media (max-width: 599px){.carousel-image-container img{width:100%}.carousel-container{width:unset}}.carousel-image-container img.fixed-height{position:absolute;inset:-100% 0;margin:auto}.carousel-container:after{display:block;clear:both;content:\"\"}.carousel-container div{float:left;margin-right:-100%;font-size:0}.carousel-previous-button:hover,.carousel-next-button:hover,.carousel-previous-button:focus,.carousel-next-button:focus{opacity:.9}.carousel-previous-button,.carousel-next-button{position:absolute;top:0;bottom:0;width:15%;display:flex;align-items:center;justify-content:center;background-color:transparent;border:0;color:#fff;opacity:.5;transition:opacity .15s ease;cursor:pointer}.carousel-next-button{right:0}.carousel-next-icon{background-image:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>\")}.carousel-previous-icon{background-image:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-chevron-left' viewBox='0 0 16 16'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>\")}.carousel-next-icon,.carousel-previous-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-indicator-container{width:100%;overflow:hidden}.carousel-indicator-buttons{display:flex;position:absolute;right:0;bottom:0;left:0;z-index:2;justify-content:center;padding:0;margin-right:15%!important;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicator-buttons button{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent}.carousel-indicator-buttons button:hover{opacity:1!important}.carousel-thumbnail-container{width:100%;overflow:hidden}.carousel-thumbnails{display:flex}.carousel-thumbnails img{cursor:pointer}.carousel-thumbnails img:hover{opacity:1!important}.default-image{padding:68px}.edit-image{cursor:pointer}\n"] }]
229
+ ], template: "<div class=\"carousel-container\"\r\n [style.height.px]=\"height?height:null\"\r\n [style.margin-bottom]=\"height?'.25rem':null\"\r\n (touchstart)=\"posIni = $event.changedTouches[0].pageX\"\r\n (touchend)=\"move($event.changedTouches[0].pageX)\">\r\n <div *ngIf=\"forceMobile\" class=\"carousel-top-left-icon\">\r\n <svg width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"30\" height=\"30\" rx=\"15\" fill=\"white\" fill-opacity=\"0.63\"/>\r\n <path d=\"M20.8337 15H9.16699\" stroke=\"#1F2224\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M13.2503 19.0807L9.16699 14.9974L13.2503 10.9141\" stroke=\"#1F2224\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <!--carousel image container-->\r\n <div class=\"carousel-image-container\"\r\n [ngClass]=\"height ? 'fixed-height' : null\"\r\n *ngFor=\"let img of images; let i = index; let first = first\"\r\n [@animImageSlider]=\"slideControl[i]\" (click)=\"isDevModeActive ? onSetImage() : ''\" [pTooltip]=\"onHoverImageTooltip\" tooltipPosition=\"top\">\r\n <!--carousel image-->\r\n <img #slide (load)=\"first && onLoad(slide)\" \r\n [ngClass]=\"{'default-image' : isNoImage, 'edit-image' : isDevModeActive}\"\r\n [src]=\"img.path\"/>\r\n </div>\r\n <!--previous button-->\r\n <button type=\"button\"\r\n class=\"carousel-previous-button\"\r\n (click)=\"change('right')\"\r\n *ngIf=\"showNavigation\">\r\n <span class=\"carousel-previous-icon\"></span>\r\n </button>\r\n <!--next button-->\r\n <button type=\"button\"\r\n class=\"carousel-next-button\"\r\n (click)=\"change('left')\"\r\n *ngIf=\"showNavigation\">\r\n <span class=\"carousel-next-icon\"></span>\r\n </button>\r\n <!--button indicators-->\r\n <div class=\"carousel-indicator-container\" *ngIf=\"showIndicators\">\r\n <div class=\"carousel-indicator-buttons\">\r\n <button *ngFor=\"let img of images; let i = index\"\r\n [style.opacity]=\"i == counter ? 1 : 0.5\"\r\n (click)=\"setIndex(i)\"></button>\r\n </div>\r\n </div>\r\n</div>\r\n<!--thumbnail indicators-->\r\n<div #thumbnail class=\"carousel-thumbnail-container\" *ngIf=\"allowThumbnail\">\r\n <div class=\"carousel-thumbnails\"\r\n [@animationThumbnail]=\"{\r\n value: thumbnailAnimation,\r\n params: { margin: thumbnailMargin + 'px' }}\">\r\n <img *ngFor=\"let img of images; let i = index\"\r\n [style.width.px]=\"thumbnailWidth\"\r\n [style.margin-right.px]=\"thumbnailMarginRigth\"\r\n [style.opacity]=\"i == counter ? 1 : 0.5\"\r\n (load)=\"onLoadThumbnail()\"\r\n (click)=\"setIndex(i)\"\r\n [src]=\"img.path\" />\r\n </div>\r\n</div>\r\n", styles: [".carousel-container{position:relative;display:flex;overflow:hidden;margin-left:auto;margin-right:auto;align-items:center;width:450px}.carousel-top-left-icon{position:absolute;top:15px;left:15px;cursor:pointer;z-index:10}.carousel-image-container{width:100%;position:relative}.carousel-image-container img{max-width:450px;width:-webkit-fill-available;width:-moz-available;width:stretch}@media (min-width:600px) and (max-width: 959px){.carousel-image-container img{width:100%}.carousel-container{width:unset}}@media (max-width: 599px){.carousel-image-container img{width:100%}.carousel-container{width:unset}}.carousel-image-container img.fixed-height{position:absolute;inset:-100% 0;margin:auto}.carousel-container:after{display:block;clear:both;content:\"\"}.carousel-container div{float:left;margin-right:-100%;font-size:0}.carousel-previous-button:hover,.carousel-next-button:hover,.carousel-previous-button:focus,.carousel-next-button:focus{opacity:.9}.carousel-previous-button,.carousel-next-button{position:absolute;top:0;bottom:0;width:15%;display:flex;align-items:center;justify-content:center;background-color:transparent;border:0;color:#fff;opacity:.5;transition:opacity .15s ease;cursor:pointer}.carousel-next-button{right:0}.carousel-next-icon{background-image:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>\")}.carousel-previous-icon{background-image:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-chevron-left' viewBox='0 0 16 16'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>\")}.carousel-next-icon,.carousel-previous-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-indicator-container{width:100%;overflow:hidden}.carousel-indicator-buttons{display:flex;position:absolute;right:0;bottom:0;left:0;z-index:2;justify-content:center;padding:0;margin-right:15%!important;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicator-buttons button{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent}.carousel-indicator-buttons button:hover{opacity:1!important}.carousel-thumbnail-container{width:100%;overflow:hidden}.carousel-thumbnails{display:flex}.carousel-thumbnails img{cursor:pointer}.carousel-thumbnails img:hover{opacity:1!important}.default-image{padding:68px}.edit-image{cursor:pointer}\n"] }]
227
230
  }], ctorParameters: function () { return [{ type: i1.DeviceDetectorService }]; }, propDecorators: { thumbnail: [{
228
231
  type: ViewChild,
229
232
  args: ['thumbnail', { static: true }]
@@ -249,4 +252,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
249
252
  }], onHoverImageTooltip: [{
250
253
  type: Input
251
254
  }] } });
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvbWF0ZXJpYWwvd2FwcC1tYXRlcmlhbC1zZXJ2aWNlLXZpZXcvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvbWF0ZXJpYWwvd2FwcC1tYXRlcmlhbC1zZXJ2aWNlLXZpZXcvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBRSxZQUFZLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ2hJLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBRUwsT0FBTyxFQUNQLFVBQVUsRUFFVixLQUFLLEVBQ0wsT0FBTyxFQUVQLEtBQUssR0FDTixNQUFNLHFCQUFxQixDQUFDOzs7Ozs7QUFHN0IsTUFBTSxpQkFBaUIsR0FBRztJQUN4QixLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDM0QsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQzNELFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFVBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFeEUsVUFBVSxDQUFDLFlBQVksRUFBRTtRQUN2QixLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztRQUN6QyxPQUFPLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0tBQ2hFLENBQUM7SUFDRixVQUFVLENBQUMsV0FBVyxFQUFFO1FBQ3RCLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7S0FDaEUsQ0FBQztJQUNGLFVBQVUsQ0FBQyxZQUFZLEVBQUU7UUFDdkIsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0tBQ3BFLENBQUM7SUFDRixVQUFVLENBQUMsYUFBYSxFQUFFO1FBQ3hCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztLQUNuRSxDQUFDO0NBQ0gsQ0FBQztBQUVGLE1BQU0sMkJBQTJCLEdBQUc7SUFDbEMsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQzNELEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUMzRCxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxVQUFVLENBQUMsZUFBZSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXhFLFVBQVUsQ0FBQyxZQUFZLEVBQUU7UUFDdkIsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLENBQUM7UUFDekMsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztLQUNoRSxDQUFDO0lBQ0YsVUFBVSxDQUFDLFdBQVcsRUFBRTtRQUN0QixLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztRQUN4QyxPQUFPLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0tBQ2hFLENBQUM7SUFDRixVQUFVLENBQUMsWUFBWSxFQUFFO1FBQ3ZCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQztLQUNwRSxDQUFDO0lBQ0YsVUFBVSxDQUFDLGFBQWEsRUFBRTtRQUN4QixPQUFPLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7S0FDbkUsQ0FBQztDQUNILENBQUM7QUFFRixNQUFNLHFCQUFxQixHQUFHO0lBQzVCLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxVQUFVLENBQUMsZUFBZSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVwRCxVQUFVLENBQUMsWUFBWSxFQUFFO1FBQ3ZCLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNyQixPQUFPLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ2hELENBQUM7SUFDRixVQUFVLENBQUMsV0FBVyxFQUFFO1FBQ3RCLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNyQixPQUFPLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ2hELENBQUM7SUFDRixVQUFVLENBQUMsWUFBWSxFQUFFO1FBQ3ZCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDaEQsQ0FBQztJQUNGLFVBQVUsQ0FBQyxhQUFhLEVBQUU7UUFDeEIsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUNoRCxDQUFDO0NBQ0gsQ0FBQztBQUVGLE1BQU0sa0JBQWtCLEdBQUc7SUFDekIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyxFQUFFO1FBQzVELE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7S0FDdEIsQ0FBQztJQUNGLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLENBQUMsRUFBRTtRQUM3RCxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFO0tBQ3RCLENBQUM7SUFDRixVQUFVLENBQUMsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7Q0FDdkQsQ0FBQztBQVdGLE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsSUFBYSxNQUFNLENBQUMsS0FBSztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFLLEVBQUUsS0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFNRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDckIsQ0FBQztJQXlCRCxZQUFvQixjQUFxQztRQUFyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFoQ3pELHdEQUF3RDtRQUMvQixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUM5QixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDdkMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFNMUMsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUNwQixZQUFPLEdBQVcsQ0FBQyxDQUFDO1FBR3BCLFVBQUssR0FBVyxDQUFDLENBQUM7UUFDbEIsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFDekIsb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFDNUIseUJBQW9CLEdBQVcsQ0FBQyxDQUFDO1FBQ2pDLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBQzVCLHVCQUFrQixHQUFtQixJQUFJLENBQUM7UUFJMUMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFMUIsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMxQixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7SUFHTSxDQUFDO0lBRS9ELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSTtZQUN6QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFbkQsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUM7aUJBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3ZCLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUN0RDtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzNCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7U0FDL0I7UUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSztZQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUU5QixJQUFHLElBQUksQ0FBQyxlQUFlLElBQUksS0FBSyxFQUFDO1lBQy9CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO0lBQ2xDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLEdBQVE7UUFDWCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztZQUNqQyxJQUFJLE1BQU0sR0FBRyxDQUFDLEdBQUc7Z0JBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV4QyxJQUFJLE1BQU0sR0FBRyxHQUFHO2dCQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBRUQsK0RBQStEO0lBQy9ELE1BQU0sQ0FBQyxTQUFpQjtRQUN0QixNQUFNLElBQUksR0FBRyxTQUFTLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUMvRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLFNBQVMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUN6QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDN0M7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQU87UUFDWixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUNoRCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDMUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1NBQ3JEO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQTtTQUN0RDtJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsT0FBWSxFQUFFLElBQVMsRUFBRSxTQUFjO1FBQzdDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQztZQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxTQUFTLENBQUM7WUFFNUMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzVCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFVBQVUsQ0FBQyxPQUFZLEVBQUUsSUFBUyxFQUFFLFNBQWM7UUFDaEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNyRCxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUM7Z0JBQzVDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDM0MsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWU7UUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFDOUQsTUFBTSxZQUFZLEdBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxDQUFDO1FBRTdELElBQUksU0FBUyxHQUFXLENBQUMsQ0FBQztRQUMxQixJQUFJLFlBQVksR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO1lBQzNDLFNBQVMsR0FBRyxDQUFDLFlBQVksR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDekQ7WUFDSCxNQUFNLE1BQU0sR0FBRyxZQUFZLEdBQUcsQ0FBQyxHQUFHLEtBQUssR0FBRyxPQUFPLENBQUM7WUFDbEQsTUFBTSxHQUFHLEdBQUcsWUFBWSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUV0RCxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdEU7UUFDRCxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7K0dBcEtVLGlCQUFpQjttR0FBakIsaUJBQWlCLDZlQ3BHOUIscTNGQTREQSwrN0hEbUNjO1FBQ1YsT0FBTyxDQUFDLGlCQUFpQixFQUFFLHFCQUFxQixDQUFDO1FBQ2pELE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxrQkFBa0IsQ0FBQztLQUNsRDs0RkFFVSxpQkFBaUI7a0JBVDdCLFNBQVM7K0JBQ0UsZUFBZSxjQUdiO3dCQUNWLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxxQkFBcUIsQ0FBQzt3QkFDakQsT0FBTyxDQUFDLG9CQUFvQixFQUFFLGtCQUFrQixDQUFDO3FCQUNsRDs0R0FHdUMsU0FBUztzQkFBbEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUN6QixNQUFNO3NCQUFsQixLQUFLO2dCQUttQixjQUFjO3NCQUF0QyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFDSSxnQkFBZ0I7c0JBQTFDLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUNILFdBQVc7c0JBQWhDLEtBQUs7dUJBQUMsYUFBYTtnQkFNWCxNQUFNO3NCQUFkLEtBQUs7Z0JBa0JHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNFLG1CQUFtQjtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICBhbmltYXRpb24sXHJcbiAgdHJpZ2dlcixcclxuICB0cmFuc2l0aW9uLFxyXG4gIHF1ZXJ5LFxyXG4gIHN0eWxlLFxyXG4gIGFuaW1hdGUsXHJcbiAgZ3JvdXAsXHJcbiAgc3RhdGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IERldmljZURldGVjdG9yU2VydmljZSB9IGZyb20gJ25neC1kZXZpY2UtZGV0ZWN0b3InO1xyXG5cclxuY29uc3QgYW5pbWF0aW9uQ2Fyb3VzZWwgPSBbXHJcbiAgc3RhdGUoJ291dHJpZ2h0Jywgc3R5bGUoeyB0cmFuc2Zvcm06IGB0cmFuc2xhdGVYKDEwMCUpYCB9KSksXHJcbiAgc3RhdGUoJ291dGxlZnQnLCBzdHlsZSh7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoLTEwMCUpYCB9KSksXHJcbiAgdHJhbnNpdGlvbigndm9pZD0+aW5sZWZ0JywgW3N0eWxlKHsgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWCgwKWAgfSldKSxcclxuICB0cmFuc2l0aW9uKCd2b2lkPT5vdXRsZWZ0JywgW3N0eWxlKHsgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWCgtMTAwJSlgIH0pXSksXHJcblxyXG4gIHRyYW5zaXRpb24oJyo9PmlucmlnaHQnLCBbXHJcbiAgICBzdHlsZSh7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoLTEwMCUpYCB9KSxcclxuICAgIGFuaW1hdGUoJzI2MG1zIGVhc2UtaW4nLCBzdHlsZSh7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoMClgIH0pKSxcclxuICBdKSxcclxuICB0cmFuc2l0aW9uKCcqPT5pbmxlZnQnLCBbXHJcbiAgICBzdHlsZSh7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoMTAwJSlgIH0pLFxyXG4gICAgYW5pbWF0ZSgnMjYwbXMgZWFzZS1pbicsIHN0eWxlKHsgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWCgwKWAgfSkpLFxyXG4gIF0pLFxyXG4gIHRyYW5zaXRpb24oJyo9Pm91dGxlZnQnLCBbXHJcbiAgICBhbmltYXRlKCcyNjBtcyBlYXNlLWluJywgc3R5bGUoeyB0cmFuc2Zvcm06IGB0cmFuc2xhdGVYKC0xMDAlKWAgfSkpLFxyXG4gIF0pLFxyXG4gIHRyYW5zaXRpb24oJyo9Pm91dHJpZ2h0JywgW1xyXG4gICAgYW5pbWF0ZSgnMjYwbXMgZWFzZS1pbicsIHN0eWxlKHsgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWCgxMDAlKWAgfSkpLFxyXG4gIF0pLFxyXG5dO1xyXG5cclxuY29uc3QgYW5pbWF0aW9uQ2Fyb3VzZWxUcmFuc2xhdGVZID0gW1xyXG4gIHN0YXRlKCdvdXRyaWdodCcsIHN0eWxlKHsgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWSgxMDAlKWAgfSkpLFxyXG4gIHN0YXRlKCdvdXRsZWZ0Jywgc3R5bGUoeyB0cmFuc2Zvcm06IGB0cmFuc2xhdGVZKC0xMDAlKWAgfSkpLFxyXG4gIHRyYW5zaXRpb24oJ3ZvaWQ9PmlubGVmdCcsIFtzdHlsZSh7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVkoMClgIH0pXSksXHJcbiAgdHJhbnNpdGlvbigndm9pZD0+b3V0bGVmdCcsIFtzdHlsZSh7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVkoLTEwMCUpYCB9KV0pLFxyXG5cclxuICB0cmFuc2l0aW9uKCcqPT5pbnJpZ2h0JywgW1xyXG4gICAgc3R5bGUoeyB0cmFuc2Zvcm06IGB0cmFuc2xhdGVZKC0xMDAlKWAgfSksXHJcbiAgICBhbmltYXRlKCcyNjBtcyBlYXNlLWluJywgc3R5bGUoeyB0cmFuc2Zvcm06IGB0cmFuc2xhdGVZKDApYCB9KSksXHJcbiAgXSksXHJcbiAgdHJhbnNpdGlvbignKj0+aW5sZWZ0JywgW1xyXG4gICAgc3R5bGUoeyB0cmFuc2Zvcm06IGB0cmFuc2xhdGVZKDEwMCUpYCB9KSxcclxuICAgIGFuaW1hdGUoJzI2MG1zIGVhc2UtaW4nLCBzdHlsZSh7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVkoMClgIH0pKSxcclxuICBdKSxcclxuICB0cmFuc2l0aW9uKCcqPT5vdXRsZWZ0JywgW1xyXG4gICAgYW5pbWF0ZSgnMjYwbXMgZWFzZS1pbicsIHN0eWxlKHsgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWSgtMTAwJSlgIH0pKSxcclxuICBdKSxcclxuICB0cmFuc2l0aW9uKCcqPT5vdXRyaWdodCcsIFtcclxuICAgIGFuaW1hdGUoJzI2MG1zIGVhc2UtaW4nLCBzdHlsZSh7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVkoMTAwJSlgIH0pKSxcclxuICBdKSxcclxuXTtcclxuXHJcbmNvbnN0IGFuaW1hdGlvbkNhcm91c2VsRmFkZSA9IFtcclxuICBzdGF0ZSgnb3V0cmlnaHQnLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpLFxyXG4gIHN0YXRlKCdvdXRsZWZ0Jywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKSxcclxuICB0cmFuc2l0aW9uKCd2b2lkPT5pbmxlZnQnLCBbc3R5bGUoeyBvcGFjaXR5OiAxIH0pXSksXHJcbiAgdHJhbnNpdGlvbigndm9pZD0+b3V0bGVmdCcsIFtzdHlsZSh7IG9wYWNpdHk6IDAgfSldKSxcclxuXHJcbiAgdHJhbnNpdGlvbignKj0+aW5yaWdodCcsIFtcclxuICAgIHN0eWxlKHsgb3BhY2l0eTogMCB9KSxcclxuICAgIGFuaW1hdGUoJzE2MG1zIGVhc2UtaW4nLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpLFxyXG4gIF0pLFxyXG4gIHRyYW5zaXRpb24oJyo9PmlubGVmdCcsIFtcclxuICAgIHN0eWxlKHsgb3BhY2l0eTogMCB9KSxcclxuICAgIGFuaW1hdGUoJzE2MG1zIGVhc2UtaW4nLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpLFxyXG4gIF0pLFxyXG4gIHRyYW5zaXRpb24oJyo9Pm91dGxlZnQnLCBbXHJcbiAgICBhbmltYXRlKCcxNjBtcyBlYXNlLWluJywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKSxcclxuICBdKSxcclxuICB0cmFuc2l0aW9uKCcqPT5vdXRyaWdodCcsIFtcclxuICAgIGFuaW1hdGUoJzE2MG1zIGVhc2UtaW4nLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpLFxyXG4gIF0pLFxyXG5dO1xyXG5cclxuY29uc3QgYW5pbWF0aW9uVGh1bWJuYWlsID0gW1xyXG4gIHN0YXRlKCd0cnVlJywgc3R5bGUoeyB0cmFuc2Zvcm06IGB0cmFuc2xhdGVYKHt7bWFyZ2lufX0pYCB9KSwge1xyXG4gICAgcGFyYW1zOiB7IG1hcmdpbjogMCB9LFxyXG4gIH0pLFxyXG4gIHN0YXRlKCdmYWxzZScsIHN0eWxlKHsgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWCh7e21hcmdpbn19KWAgfSksIHtcclxuICAgIHBhcmFtczogeyBtYXJnaW46IDAgfSxcclxuICB9KSxcclxuICB0cmFuc2l0aW9uKCd0cnVlPD0+ZmFsc2UnLCBbYW5pbWF0ZSgnMjYwbXMgZWFzZS1pbicpXSksXHJcbl07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3dhcHAtY2Fyb3VzZWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJvdXNlbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2Fyb3VzZWwuY29tcG9uZW50LmNzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2FuaW1JbWFnZVNsaWRlcicsIGFuaW1hdGlvbkNhcm91c2VsRmFkZSksXHJcbiAgICB0cmlnZ2VyKCdhbmltYXRpb25UaHVtYm5haWwnLCBhbmltYXRpb25UaHVtYm5haWwpLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYXJvdXNlbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuQFZpZXdDaGlsZCgndGh1bWJuYWlsJywgeyBzdGF0aWM6IHRydWUgfSkgdGh1bWJuYWlsITogRWxlbWVudFJlZjtcclxuICBASW5wdXQoKSBzZXQgaW1hZ2VzKHZhbHVlKSB7XHJcbiAgICB0aGlzLl9pbWFnZXMgPSB2YWx1ZTtcclxuICAgIHRoaXMuc2xpZGVDb250cm9sID0gdmFsdWUubWFwKCh4OmFueSwgaW5kZXg6YW55KSA9PiAoaW5kZXggPyAnb3V0bGVmdCcgOiAnaW5sZWZ0JykpO1xyXG4gIH1cclxuICAvLyBUT0RPIHByb3Blcmx5IGltcGxlbWVudCBhbGxvdyB0aHVtYm5haWwgZnVuY3Rpb25hbGl0eVxyXG4gIEBJbnB1dChcImFsbG93VGh1bWJuYWlsXCIpIGFsbG93VGh1bWJuYWlsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KFwiaW5maW5pdGVDYXJvdXNlbFwiKSBpbmZpbml0ZUNhcm91c2VsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KFwiZm9yY2VNb2JpbGVcIikgZm9yY2VNb2JpbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZ2V0IGltYWdlcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9pbWFnZXNcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGhlaWdodCA9IDA7XHJcbiAgY291bnRlcjogbnVtYmVyID0gMDtcclxuICBfaW1hZ2VzOiBhbnk7XHJcbiAgc2xpZGVDb250cm9sITogYW55W107XHJcbiAgd2lkdGg6IG51bWJlciA9IDA7XHJcbiAgY291bnRlclRodW1iOiBudW1iZXIgPSAwO1xyXG4gIHRodW1ibmFpbE1hcmdpbjogbnVtYmVyID0gMDtcclxuICB0aHVtYm5haWxNYXJnaW5SaWd0aDogbnVtYmVyID0gMjtcclxuICB0aHVtYm5haWxXaWR0aDogbnVtYmVyID0gNjA7XHJcbiAgdGh1bWJuYWlsQW5pbWF0aW9uOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHJlc2l6ZVN1YiE6IFN1YnNjcmlwdGlvbjtcclxuICBwb3NJbmk6IGFueTtcclxuICBzaG93TmF2aWdhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dJbmRpY2F0b3JzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNEZXNrdG9wOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaGFzTXVsdGlwbGVJbWFnZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgaXNEZXZNb2RlQWN0aXZlOiBib29sZWFuID0gZmFsc2U7IFxyXG4gIEBJbnB1dCgpIGlzTm9JbWFnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBvblNldEltYWdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQElucHV0KCkgb25Ib3ZlckltYWdlVG9vbHRpcCE6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkZXZpY2VEZXRlY3RvcjogRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlLCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZGV2aWNlRGV0ZWN0b3IuaXNEZXNrdG9wKCkgIT0gbnVsbClcclxuICAgICAgdGhpcy5pc0Rlc2t0b3AgPSB0aGlzLmRldmljZURldGVjdG9yLmlzRGVza3RvcCgpO1xyXG5cclxuICAgIGlmICh0aGlzLmFsbG93VGh1bWJuYWlsKSB7XHJcbiAgICAgIHRoaXMucmVzaXplU3ViID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXHJcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDIwMCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoXykgPT4gdGhpcy5wb3NUaHVtYm5haWwodGhpcy5jb3VudGVyKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaW1hZ2VzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgdGhpcy5zaG93TmF2aWdhdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd0luZGljYXRvcnMgPSB0cnVlO1xyXG4gICAgICB0aGlzLmhhc011bHRpcGxlSW1hZ2VzID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0Rlc2t0b3AgPT0gZmFsc2UpXHJcbiAgICAgIHRoaXMuc2hvd05hdmlnYXRpb24gPSBmYWxzZTtcclxuXHJcbiAgICBpZih0aGlzLmlzRGV2TW9kZUFjdGl2ZSA9PSBmYWxzZSl7XHJcbiAgICAgIHRoaXMub25Ib3ZlckltYWdlVG9vbHRpcCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLmFsbG93VGh1bWJuYWlsKSB7XHJcbiAgICAgIHRoaXMucmVzaXplU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb3ZlKHBvczogYW55KSB7XHJcbiAgICBpZiAodGhpcy5oYXNNdWx0aXBsZUltYWdlcykge1xyXG4gICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLnBvc0luaSAtIHBvcztcclxuICAgICAgaWYgKG9mZnNldCA8IC0xMDApIHRoaXMuY2hhbmdlKCdyaWdodCcpO1xyXG5cclxuICAgICAgaWYgKG9mZnNldCA+IDEwMCkgdGhpcy5jaGFuZ2UoJ2xlZnQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGNhbGwgdGhpcyBpbnN0ZWFkIG9mIG9uTmV4dC9vblByZXZpb3VzIGZvciBpbmZpbml0ZSBjYXJvdXNlbFxyXG4gIGNoYW5nZShkaXJlY3Rpb246IHN0cmluZykge1xyXG4gICAgY29uc3QgaW5jciA9IGRpcmVjdGlvbiA9PSAncmlnaHQnID8gLTEgOiArMTtcclxuICAgIGNvbnN0IHByZXYgPSB0aGlzLmNvdW50ZXI7XHJcbiAgICB0aGlzLmNvdW50ZXIgPSAodGhpcy5jb3VudGVyICsgdGhpcy5pbWFnZXMubGVuZ3RoICsgaW5jcikgJSB0aGlzLmltYWdlcy5sZW5ndGg7XHJcbiAgICB0aGlzLm9uU2xpZGUodGhpcy5jb3VudGVyLCBwcmV2LCBkaXJlY3Rpb24pO1xyXG4gICAgdGhpcy5zbGlkZUNvbnRyb2xbcHJldl0gPSAnb3V0JyArIGRpcmVjdGlvblxyXG4gIH1cclxuXHJcbiAgc2V0SW5kZXgoaW5kZXg6IG51bWJlcikge1xyXG4gICAgaWYgKGluZGV4ICE9IHRoaXMuY291bnRlcikge1xyXG4gICAgICBjb25zdCBwcmV2ID0gdGhpcy5jb3VudGVyO1xyXG4gICAgICB0aGlzLmNvdW50ZXIgPSBpbmRleDtcclxuICAgICAgY29uc3QgZGlyZWN0aW9uID0gcHJldiA+IGluZGV4ID8gJ3JpZ2h0JyA6ICdsZWZ0JztcclxuICAgICAgdGhpcy5vblNsaWRlKHRoaXMuY291bnRlciwgcHJldiwgZGlyZWN0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uTG9hZChlbDogYW55KSB7XHJcbiAgICB0aGlzLndpZHRoID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XHJcbiAgfVxyXG5cclxuICBvbk5leHQoKSB7XHJcbiAgICBpZiAodGhpcy5jb3VudGVyICE9IHRoaXMuaW1hZ2VzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgdGhpcy5jb3VudGVyKys7XHJcbiAgICAgIHRoaXMub25TbGlkZSh0aGlzLmNvdW50ZXIsIHRoaXMuY291bnRlciAtIDEsICdsZWZ0JylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUHJldmlvdXMoKSB7XHJcbiAgICBpZiAodGhpcy5jb3VudGVyID4gMCkge1xyXG4gICAgICB0aGlzLmNvdW50ZXItLTtcclxuICAgICAgdGhpcy5vblNsaWRlKHRoaXMuY291bnRlciwgdGhpcy5jb3VudGVyICsgMSwgJ3JpZ2h0JylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2xpZGUoY3VycmVudDogYW55LCBwcmV2OiBhbnksIGRpcmVjdGlvbjogYW55KSB7XHJcbiAgICBpZiAodGhpcy5oYXNNdWx0aXBsZUltYWdlcykge1xyXG4gICAgICB0aGlzLnNsaWRlQ29udHJvbFtjdXJyZW50XSA9ICdpbicgKyBkaXJlY3Rpb247XHJcbiAgICAgIHRoaXMuc2xpZGVDb250cm9sW3ByZXZdID0gJ291dCcgKyBkaXJlY3Rpb247XHJcblxyXG4gICAgICBpZiAodGhpcy5hbGxvd1RodW1ibmFpbCkge1xyXG4gICAgICAgIHRoaXMucG9zVGh1bWJuYWlsKGN1cnJlbnQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBUT0RPIG9sZCBtZXRob2RcclxuICBvblNsaWRlT2xkKGN1cnJlbnQ6IGFueSwgcHJldjogYW55LCBkaXJlY3Rpb246IGFueSkge1xyXG4gICAgdGhpcy5zbGlkZUNvbnRyb2wgPSB0aGlzLnNsaWRlQ29udHJvbC5tYXAoKHgsIGluZGV4KSA9PiB7XHJcbiAgICAgIHJldHVybiAoaW5kZXggPT0gY3VycmVudCkgPyAnaW4nICsgZGlyZWN0aW9uIDpcclxuICAgICAgICAoaW5kZXggPT0gcHJldikgPyAnb3V0JyArIGRpcmVjdGlvbiA6IHhcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvbkxvYWRUaHVtYm5haWwoKSB7XHJcbiAgICB0aGlzLmNvdW50ZXJUaHVtYisrO1xyXG4gICAgaWYgKHRoaXMuY291bnRlclRodW1iID09IHRoaXMuaW1hZ2VzLmxlbmd0aCkgdGhpcy5wb3NUaHVtYm5haWwoMCk7XHJcbiAgfVxyXG5cclxuICBwb3NUaHVtYm5haWwoY3VycmVudDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCB3aWR0aCA9IHRoaXMudGh1bWJuYWlsV2lkdGggKyB0aGlzLnRodW1ibmFpbE1hcmdpblJpZ3RoO1xyXG4gICAgY29uc3Qgd2lkdGhXcmFwcGVyID1cclxuICAgICAgdGhpcy50aHVtYm5haWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcclxuXHJcbiAgICBsZXQgbmV3TWFyZ2luOiBudW1iZXIgPSAwO1xyXG4gICAgaWYgKHdpZHRoV3JhcHBlciA+IHdpZHRoICogdGhpcy5pbWFnZXMubGVuZ3RoKVxyXG4gICAgICBuZXdNYXJnaW4gPSAod2lkdGhXcmFwcGVyIC0gd2lkdGggKiB0aGlzLmltYWdlcy5sZW5ndGgpIC8gMjtcclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zdCBtaWRkbGUgPSB3aWR0aFdyYXBwZXIgLyAyIC0gd2lkdGggKiBjdXJyZW50O1xyXG4gICAgICBjb25zdCBtaW4gPSB3aWR0aFdyYXBwZXIgLSB3aWR0aCAqIHRoaXMuaW1hZ2VzLmxlbmd0aDtcclxuXHJcbiAgICAgIG5ld01hcmdpbiA9IE1hdGguZmxvb3IobWlkZGxlID4gMCA/IDAgOiBtaWRkbGUgPCBtaW4gPyBtaW4gOiBtaWRkbGUpO1xyXG4gICAgfVxyXG4gICAgaWYgKG5ld01hcmdpbiAhPSB0aGlzLnRodW1ibmFpbE1hcmdpbikge1xyXG4gICAgICB0aGlzLnRodW1ibmFpbE1hcmdpbiA9IG5ld01hcmdpbjtcclxuICAgICAgdGhpcy50aHVtYm5haWxBbmltYXRpb24gPSAhdGhpcy50aHVtYm5haWxBbmltYXRpb247XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNldEltYWdlKCl7XHJcbiAgICB0aGlzLm9uU2V0SW1hZ2VFdmVudC5lbWl0KHRydWUpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtY29udGFpbmVyXCJcclxuICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodD9oZWlnaHQ6bnVsbFwiXHJcbiAgICAgW3N0eWxlLm1hcmdpbi1ib3R0b21dPVwiaGVpZ2h0PycuMjVyZW0nOm51bGxcIlxyXG4gICAgICh0b3VjaHN0YXJ0KT1cInBvc0luaSA9ICRldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWFwiXHJcbiAgICAgKHRvdWNoZW5kKT1cIm1vdmUoJGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VYKVwiPlxyXG4gIDxkaXYgKm5nSWY9XCJmb3JjZU1vYmlsZVwiIGNsYXNzPVwiY2Fyb3VzZWwtdG9wLWxlZnQtaWNvblwiPlxyXG4gICAgPHN2ZyB3aWR0aD1cIjMwXCIgaGVpZ2h0PVwiMzBcIiB2aWV3Qm94PVwiMCAwIDMwIDMwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgIDxyZWN0IHdpZHRoPVwiMzBcIiBoZWlnaHQ9XCIzMFwiIHJ4PVwiMTVcIiBmaWxsPVwid2hpdGVcIiBmaWxsLW9wYWNpdHk9XCIwLjYzXCIvPlxyXG4gICAgICA8cGF0aCBkPVwiTTIwLjgzMzcgMTVIOS4xNjY5OVwiIHN0cm9rZT1cIiMxRjIyMjRcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICA8cGF0aCBkPVwiTTEzLjI1MDMgMTkuMDgwN0w5LjE2Njk5IDE0Ljk5NzRMMTMuMjUwMyAxMC45MTQxXCIgc3Ryb2tlPVwiIzFGMjIyNFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICA8L3N2Zz5cclxuICA8L2Rpdj5cclxuICA8IS0tY2Fyb3VzZWwgaW1hZ2UgY29udGFpbmVyLS0+XHJcbiAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWltYWdlLWNvbnRhaW5lclwiXHJcbiAgICAgICBbbmdDbGFzc109XCJoZWlnaHQgPyAnZml4ZWQtaGVpZ2h0JyA6IG51bGxcIlxyXG4gICAgICAgKm5nRm9yPVwibGV0IGltZyBvZiBpbWFnZXM7IGxldCBpID0gaW5kZXg7IGxldCBmaXJzdCA9IGZpcnN0XCJcclxuICAgICAgIFtAYW5pbUltYWdlU2xpZGVyXT1cInNsaWRlQ29udHJvbFtpXVwiIChjbGljayk9XCJpc0Rldk1vZGVBY3RpdmUgPyBvblNldEltYWdlKCkgOiAnJ1wiIFtwVG9vbHRpcF09XCJvbkhvdmVySW1hZ2VUb29sdGlwXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XHJcbiAgICA8IS0tY2Fyb3VzZWwgaW1hZ2UtLT5cclxuICAgIDxpbWcgI3NsaWRlIChsb2FkKT1cImZpcnN0ICYmIG9uTG9hZChzbGlkZSlcIiBcclxuICAgICAgW25nQ2xhc3NdPVwieydkZWZhdWx0LWltYWdlJyA6IGlzTm9JbWFnZSwgJ2VkaXQtaW1hZ2UnIDogaXNEZXZNb2RlQWN0aXZlfVwiXHJcbiAgICAgIFtzcmNdPVwiaW1nLnBhdGhcIi8+XHJcbiAgPC9kaXY+XHJcbiAgPCEtLXByZXZpb3VzIGJ1dHRvbi0tPlxyXG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBjbGFzcz1cImNhcm91c2VsLXByZXZpb3VzLWJ1dHRvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlKCdyaWdodCcpXCJcclxuICAgICAgICAgICpuZ0lmPVwic2hvd05hdmlnYXRpb25cIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY2Fyb3VzZWwtcHJldmlvdXMtaWNvblwiPjwvc3Bhbj5cclxuICA8L2J1dHRvbj5cclxuICA8IS0tbmV4dCBidXR0b24tLT5cclxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgY2xhc3M9XCJjYXJvdXNlbC1uZXh0LWJ1dHRvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlKCdsZWZ0JylcIlxyXG4gICAgICAgICAgKm5nSWY9XCJzaG93TmF2aWdhdGlvblwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjYXJvdXNlbC1uZXh0LWljb25cIj48L3NwYW4+XHJcbiAgPC9idXR0b24+XHJcbiAgPCEtLWJ1dHRvbiBpbmRpY2F0b3JzLS0+XHJcbiAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWluZGljYXRvci1jb250YWluZXJcIiAqbmdJZj1cInNob3dJbmRpY2F0b3JzXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaW5kaWNhdG9yLWJ1dHRvbnNcIj5cclxuICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgaW1nIG9mIGltYWdlczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLm9wYWNpdHldPVwiaSA9PSBjb3VudGVyID8gMSA6IDAuNVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEluZGV4KGkpXCI+PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjwhLS10aHVtYm5haWwgaW5kaWNhdG9ycy0tPlxyXG48ZGl2ICN0aHVtYm5haWwgY2xhc3M9XCJjYXJvdXNlbC10aHVtYm5haWwtY29udGFpbmVyXCIgKm5nSWY9XCJhbGxvd1RodW1ibmFpbFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC10aHVtYm5haWxzXCJcclxuICAgICAgIFtAYW5pbWF0aW9uVGh1bWJuYWlsXT1cIntcclxuICAgICAgICB2YWx1ZTogdGh1bWJuYWlsQW5pbWF0aW9uLFxyXG4gICAgICAgIHBhcmFtczogeyBtYXJnaW46IHRodW1ibmFpbE1hcmdpbiArICdweCcgfX1cIj5cclxuICAgIDxpbWcgKm5nRm9yPVwibGV0IGltZyBvZiBpbWFnZXM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwidGh1bWJuYWlsV2lkdGhcIlxyXG4gICAgICAgICBbc3R5bGUubWFyZ2luLXJpZ2h0LnB4XT1cInRodW1ibmFpbE1hcmdpblJpZ3RoXCJcclxuICAgICAgICAgW3N0eWxlLm9wYWNpdHldPVwiaSA9PSBjb3VudGVyID8gMSA6IDAuNVwiXHJcbiAgICAgICAgIChsb2FkKT1cIm9uTG9hZFRodW1ibmFpbCgpXCJcclxuICAgICAgICAgKGNsaWNrKT1cInNldEluZGV4KGkpXCJcclxuICAgICAgICAgW3NyY109XCJpbWcucGF0aFwiIC8+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvbWF0ZXJpYWwvd2FwcC1tYXRlcmlhbC1zZXJ2aWNlLXZpZXcvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvbWF0ZXJpYWwvd2FwcC1tYXRlcmlhbC1zZXJ2aWNlLXZpZXcvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBRSxZQUFZLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQ2hJLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBRUwsT0FBTyxFQUNQLFVBQVUsRUFFVixLQUFLLEVBQ0wsT0FBTyxFQUVQLEtBQUssR0FDTixNQUFNLHFCQUFxQixDQUFDOzs7Ozs7QUFHN0IsTUFBTSxpQkFBaUIsR0FBRztJQUN4QixLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDM0QsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQzNELFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFVBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVB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LGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0UsbUJBQW1CO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gIGFuaW1hdGlvbixcclxuICB0cmlnZ2VyLFxyXG4gIHRyYW5zaXRpb24sXHJcbiAgcXVlcnksXHJcbiAgc3R5bGUsXHJcbiAgYW5pbWF0ZSxcclxuICBncm91cCxcclxuICBzdGF0ZSxcclxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnbmd4LWRldmljZS1kZXRlY3Rvcic7XHJcblxyXG5jb25zdCBhbmltYXRpb25DYXJvdXNlbCA9IFtcclxuICBzdGF0ZSgnb3V0cmlnaHQnLCBzdHlsZSh7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoMTAwJSlgIH0pKSxcclxuICBzdGF0ZSgnb3V0bGVmdCcsIHN0eWxlKHsgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWCgtMTAwJSlgIH0pKSxcclxuICB0cmFuc2l0aW9uKCd2b2lkPT5pbmxlZnQnLCBbc3R5bGUoeyB0cmFuc2Zvcm06IGB0cmFuc2xhdGVYKDApYCB9KV0pLFxyXG4gIHRyYW5zaXRpb24oJ3ZvaWQ9Pm91dGxlZnQnLCBbc3R5bGUoeyB0cmFuc2Zvcm06IGB0cmFuc2xhdGVYKC0xMDAlKWAgfSldKSxcclxuXHJcbiAgdHJhbnNpdGlvbignKj0+aW5yaWdodCcsIFtcclxuICAgIHN0eWxlKHsgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWCgtMTAwJSlgIH0pLFxyXG4gICAgYW5pbWF0ZSgnMjYwbXMgZWFzZS1pbicsIHN0eWxlKHsgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWCgwKWAgfSkpLFxyXG4gIF0pLFxyXG4gIHRyYW5zaXRpb24oJyo9PmlubGVmdCcsIFtcclxuICAgIHN0eWxlKHsgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWCgxMDAlKWAgfSksXHJcbiAgICBhbmltYXRlKCcyNjBtcyBlYXNlLWluJywgc3R5bGUoeyB0cmFuc2Zvcm06IGB0cmFuc2xhdGVYKDApYCB9KSksXHJcbiAgXSksXHJcbiAgdHJhbnNpdGlvbignKj0+b3V0bGVmdCcsIFtcclxuICAgIGFuaW1hdGUoJzI2MG1zIGVhc2UtaW4nLCBzdHlsZSh7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoLTEwMCUpYCB9KSksXHJcbiAgXSksXHJcbiAgdHJhbnNpdGlvbignKj0+b3V0cmlnaHQnLCBbXHJcbiAgICBhbmltYXRlKCcyNjBtcyBlYXNlLWluJywgc3R5bGUoeyB0cmFuc2Zvcm06IGB0cmFuc2xhdGVYKDEwMCUpYCB9KSksXHJcbiAgXSksXHJcbl07XHJcblxyXG5jb25zdCBhbmltYXRpb25DYXJvdXNlbFRyYW5zbGF0ZVkgPSBbXHJcbiAgc3RhdGUoJ291dHJpZ2h0Jywgc3R5bGUoeyB0cmFuc2Zvcm06IGB0cmFuc2xhdGVZKDEwMCUpYCB9KSksXHJcbiAgc3RhdGUoJ291dGxlZnQnLCBzdHlsZSh7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVkoLTEwMCUpYCB9KSksXHJcbiAgdHJhbnNpdGlvbigndm9pZD0+aW5sZWZ0JywgW3N0eWxlKHsgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWSgwKWAgfSldKSxcclxuICB0cmFuc2l0aW9uKCd2b2lkPT5vdXRsZWZ0JywgW3N0eWxlKHsgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWSgtMTAwJSlgIH0pXSksXHJcblxyXG4gIHRyYW5zaXRpb24oJyo9PmlucmlnaHQnLCBbXHJcbiAgICBzdHlsZSh7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVkoLTEwMCUpYCB9KSxcclxuICAgIGFuaW1hdGUoJzI2MG1zIGVhc2UtaW4nLCBzdHlsZSh7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVkoMClgIH0pKSxcclxuICBdKSxcclxuICB0cmFuc2l0aW9uKCcqPT5pbmxlZnQnLCBbXHJcbiAgICBzdHlsZSh7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVkoMTAwJSlgIH0pLFxyXG4gICAgYW5pbWF0ZSgnMjYwbXMgZWFzZS1pbicsIHN0eWxlKHsgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWSgwKWAgfSkpLFxyXG4gIF0pLFxyXG4gIHRyYW5zaXRpb24oJyo9Pm91dGxlZnQnLCBbXHJcbiAgICBhbmltYXRlKCcyNjBtcyBlYXNlLWluJywgc3R5bGUoeyB0cmFuc2Zvcm06IGB0cmFuc2xhdGVZKC0xMDAlKWAgfSkpLFxyXG4gIF0pLFxyXG4gIHRyYW5zaXRpb24oJyo9Pm91dHJpZ2h0JywgW1xyXG4gICAgYW5pbWF0ZSgnMjYwbXMgZWFzZS1pbicsIHN0eWxlKHsgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWSgxMDAlKWAgfSkpLFxyXG4gIF0pLFxyXG5dO1xyXG5cclxuY29uc3QgYW5pbWF0aW9uQ2Fyb3VzZWxGYWRlID0gW1xyXG4gIHN0YXRlKCdvdXRyaWdodCcsIHN0eWxlKHsgb3BhY2l0eTogMCB9KSksXHJcbiAgc3RhdGUoJ291dGxlZnQnLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpLFxyXG4gIHRyYW5zaXRpb24oJ3ZvaWQ9PmlubGVmdCcsIFtzdHlsZSh7IG9wYWNpdHk6IDEgfSldKSxcclxuICB0cmFuc2l0aW9uKCd2b2lkPT5vdXRsZWZ0JywgW3N0eWxlKHsgb3BhY2l0eTogMCB9KV0pLFxyXG5cclxuICB0cmFuc2l0aW9uKCcqPT5pbnJpZ2h0JywgW1xyXG4gICAgc3R5bGUoeyBvcGFjaXR5OiAwIH0pLFxyXG4gICAgYW5pbWF0ZSgnMTYwbXMgZWFzZS1pbicsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSksXHJcbiAgXSksXHJcbiAgdHJhbnNpdGlvbignKj0+aW5sZWZ0JywgW1xyXG4gICAgc3R5bGUoeyBvcGFjaXR5OiAwIH0pLFxyXG4gICAgYW5pbWF0ZSgnMTYwbXMgZWFzZS1pbicsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSksXHJcbiAgXSksXHJcbiAgdHJhbnNpdGlvbignKj0+b3V0bGVmdCcsIFtcclxuICAgIGFuaW1hdGUoJzE2MG1zIGVhc2UtaW4nLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpLFxyXG4gIF0pLFxyXG4gIHRyYW5zaXRpb24oJyo9Pm91dHJpZ2h0JywgW1xyXG4gICAgYW5pbWF0ZSgnMTYwbXMgZWFzZS1pbicsIHN0eWxlKHsgb3BhY2l0eTogMCB9KSksXHJcbiAgXSksXHJcbl07XHJcblxyXG5jb25zdCBhbmltYXRpb25UaHVtYm5haWwgPSBbXHJcbiAgc3RhdGUoJ3RydWUnLCBzdHlsZSh7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoe3ttYXJnaW59fSlgIH0pLCB7XHJcbiAgICBwYXJhbXM6IHsgbWFyZ2luOiAwIH0sXHJcbiAgfSksXHJcbiAgc3RhdGUoJ2ZhbHNlJywgc3R5bGUoeyB0cmFuc2Zvcm06IGB0cmFuc2xhdGVYKHt7bWFyZ2lufX0pYCB9KSwge1xyXG4gICAgcGFyYW1zOiB7IG1hcmdpbjogMCB9LFxyXG4gIH0pLFxyXG4gIHRyYW5zaXRpb24oJ3RydWU8PT5mYWxzZScsIFthbmltYXRlKCcyNjBtcyBlYXNlLWluJyldKSxcclxuXTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnd2FwcC1jYXJvdXNlbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhcm91c2VsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jYXJvdXNlbC5jb21wb25lbnQuY3NzJ10sXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignYW5pbUltYWdlU2xpZGVyJywgYW5pbWF0aW9uQ2Fyb3VzZWxGYWRlKSxcclxuICAgIHRyaWdnZXIoJ2FuaW1hdGlvblRodW1ibmFpbCcsIGFuaW1hdGlvblRodW1ibmFpbCksXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENhcm91c2VsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG5AVmlld0NoaWxkKCd0aHVtYm5haWwnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0aHVtYm5haWwhOiBFbGVtZW50UmVmO1xyXG4gIEBJbnB1dCgpIHNldCBpbWFnZXModmFsdWUpIHtcclxuICAgIHRoaXMuX2ltYWdlcyA9IHZhbHVlO1xyXG4gICAgdGhpcy5zbGlkZUNvbnRyb2wgPSB2YWx1ZS5tYXAoKHg6YW55LCBpbmRleDphbnkpID0+IChpbmRleCA/ICdvdXRsZWZ0JyA6ICdpbmxlZnQnKSk7XHJcbiAgfVxyXG4gIC8vIFRPRE8gcHJvcGVybHkgaW1wbGVtZW50IGFsbG93IHRodW1ibmFpbCBmdW5jdGlvbmFsaXR5XHJcbiAgQElucHV0KFwiYWxsb3dUaHVtYm5haWxcIikgYWxsb3dUaHVtYm5haWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoXCJpbmZpbml0ZUNhcm91c2VsXCIpIGluZmluaXRlQ2Fyb3VzZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoXCJmb3JjZU1vYmlsZVwiKSBmb3JjZU1vYmlsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBnZXQgaW1hZ2VzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ltYWdlc1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgaGVpZ2h0ID0gMDtcclxuICBjb3VudGVyOiBudW1iZXIgPSAwO1xyXG4gIF9pbWFnZXM6IGFueTtcclxuICBzbGlkZUNvbnRyb2whOiBhbnlbXTtcclxuICB3aWR0aDogbnVtYmVyID0gMDtcclxuICBjb3VudGVyVGh1bWI6IG51bWJlciA9IDA7XHJcbiAgdGh1bWJuYWlsTWFyZ2luOiBudW1iZXIgPSAwO1xyXG4gIHRodW1ibmFpbE1hcmdpblJpZ3RoOiBudW1iZXIgPSAyO1xyXG4gIHRodW1ibmFpbFdpZHRoOiBudW1iZXIgPSA2MDtcclxuICB0aHVtYm5haWxBbmltYXRpb246IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcmVzaXplU3ViITogU3Vic2NyaXB0aW9uO1xyXG4gIHBvc0luaTogYW55O1xyXG4gIHNob3dOYXZpZ2F0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0luZGljYXRvcnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0Rlc2t0b3A6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBoYXNNdWx0aXBsZUltYWdlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBpc0Rldk1vZGVBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTsgXHJcbiAgQElucHV0KCkgaXNOb0ltYWdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIG9uU2V0SW1hZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBASW5wdXQoKSBvbkhvdmVySW1hZ2VUb29sdGlwITogYW55O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRldmljZURldGVjdG9yOiBEZXZpY2VEZXRlY3RvclNlcnZpY2UsKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5kZXZpY2VEZXRlY3Rvci5pc0Rlc2t0b3AoKSAhPSBudWxsKVxyXG4gICAgICB0aGlzLmlzRGVza3RvcCA9IHRoaXMuZGV2aWNlRGV0ZWN0b3IuaXNEZXNrdG9wKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuYWxsb3dUaHVtYm5haWwpIHtcclxuICAgICAgdGhpcy5yZXNpemVTdWIgPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcclxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjAwKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChfKSA9PiB0aGlzLnBvc1RodW1ibmFpbCh0aGlzLmNvdW50ZXIpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pbWFnZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICB0aGlzLnNob3dOYXZpZ2F0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zaG93SW5kaWNhdG9ycyA9IHRydWU7XHJcbiAgICAgIHRoaXMuaGFzTXVsdGlwbGVJbWFnZXMgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzRGVza3RvcCA9PSBmYWxzZSlcclxuICAgICAgdGhpcy5zaG93TmF2aWdhdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgIGlmKHRoaXMuaXNEZXZNb2RlQWN0aXZlID09IGZhbHNlKXtcclxuICAgICAgdGhpcy5vbkhvdmVySW1hZ2VUb29sdGlwID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHsgXHJcbiAgICBpZihjaGFuZ2VzWydpbWFnZXMnXSAmJiBjaGFuZ2VzWydpbWFnZXMnXS5jdXJyZW50VmFsdWUpe1xyXG4gICAgICB0aGlzLmltYWdlcyA9IGNoYW5nZXNbJ2ltYWdlcyddLmN1cnJlbnRWYWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuYWxsb3dUaHVtYm5haWwpIHtcclxuICAgICAgdGhpcy5yZXNpemVTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1vdmUocG9zOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmhhc011bHRpcGxlSW1hZ2VzKSB7XHJcbiAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMucG9zSW5pIC0gcG9zO1xyXG4gICAgICBpZiAob2Zmc2V0IDwgLTEwMCkgdGhpcy5jaGFuZ2UoJ3JpZ2h0Jyk7XHJcblxyXG4gICAgICBpZiAob2Zmc2V0ID4gMTAwKSB0aGlzLmNoYW5nZSgnbGVmdCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gY2FsbCB0aGlzIGluc3RlYWQgb2Ygb25OZXh0L29uUHJldmlvdXMgZm9yIGluZmluaXRlIGNhcm91c2VsXHJcbiAgY2hhbmdlKGRpcmVjdGlvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBpbmNyID0gZGlyZWN0aW9uID09ICdyaWdodCcgPyAtMSA6ICsxO1xyXG4gICAgY29uc3QgcHJldiA9IHRoaXMuY291bnRlcjtcclxuICAgIHRoaXMuY291bnRlciA9ICh0aGlzLmNvdW50ZXIgKyB0aGlzLmltYWdlcy5sZW5ndGggKyBpbmNyKSAlIHRoaXMuaW1hZ2VzLmxlbmd0aDtcclxuICAgIHRoaXMub25TbGlkZSh0aGlzLmNvdW50ZXIsIHByZXYsIGRpcmVjdGlvbik7XHJcbiAgICB0aGlzLnNsaWRlQ29udHJvbFtwcmV2XSA9ICdvdXQnICsgZGlyZWN0aW9uXHJcbiAgfVxyXG5cclxuICBzZXRJbmRleChpbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAoaW5kZXggIT0gdGhpcy5jb3VudGVyKSB7XHJcbiAgICAgIGNvbnN0IHByZXYgPSB0aGlzLmNvdW50ZXI7XHJcbiAgICAgIHRoaXMuY291bnRlciA9IGluZGV4O1xyXG4gICAgICBjb25zdCBkaXJlY3Rpb24gPSBwcmV2ID4gaW5kZXggPyAncmlnaHQnIDogJ2xlZnQnO1xyXG4gICAgICB0aGlzLm9uU2xpZGUodGhpcy5jb3VudGVyLCBwcmV2LCBkaXJlY3Rpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Mb2FkKGVsOiBhbnkpIHtcclxuICAgIHRoaXMud2lkdGggPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcclxuICB9XHJcblxyXG4gIG9uTmV4dCgpIHtcclxuICAgIGlmICh0aGlzLmNvdW50ZXIgIT0gdGhpcy5pbWFnZXMubGVuZ3RoIC0gMSkge1xyXG4gICAgICB0aGlzLmNvdW50ZXIrKztcclxuICAgICAgdGhpcy5vblNsaWRlKHRoaXMuY291bnRlciwgdGhpcy5jb3VudGVyIC0gMSwgJ2xlZnQnKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QcmV2aW91cygpIHtcclxuICAgIGlmICh0aGlzLmNvdW50ZXIgPiAwKSB7XHJcbiAgICAgIHRoaXMuY291bnRlci0tO1xyXG4gICAgICB0aGlzLm9uU2xpZGUodGhpcy5jb3VudGVyLCB0aGlzLmNvdW50ZXIgKyAxLCAncmlnaHQnKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TbGlkZShjdXJyZW50OiBhbnksIHByZXY6IGFueSwgZGlyZWN0aW9uOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmhhc011bHRpcGxlSW1hZ2VzKSB7XHJcbiAgICAgIHRoaXMuc2xpZGVDb250cm9sW2N1cnJlbnRdID0gJ2luJyArIGRpcmVjdGlvbjtcclxuICAgICAgdGhpcy5zbGlkZUNvbnRyb2xbcHJldl0gPSAnb3V0JyArIGRpcmVjdGlvbjtcclxuXHJcbiAgICAgIGlmICh0aGlzLmFsbG93VGh1bWJuYWlsKSB7XHJcbiAgICAgICAgdGhpcy5wb3NUaHVtYm5haWwoY3VycmVudCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFRPRE8gb2xkIG1ldGhvZFxyXG4gIG9uU2xpZGVPbGQoY3VycmVudDogYW55LCBwcmV2OiBhbnksIGRpcmVjdGlvbjogYW55KSB7XHJcbiAgICB0aGlzLnNsaWRlQ29udHJvbCA9IHRoaXMuc2xpZGVDb250cm9sLm1hcCgoeCwgaW5kZXgpID0+IHtcclxuICAgICAgcmV0dXJuIChpbmRleCA9PSBjdXJyZW50KSA/ICdpbicgKyBkaXJlY3Rpb24gOlxyXG4gICAgICAgIChpbmRleCA9PSBwcmV2KSA/ICdvdXQnICsgZGlyZWN0aW9uIDogeFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG9uTG9hZFRodW1ibmFpbCgpIHtcclxuICAgIHRoaXMuY291bnRlclRodW1iKys7XHJcbiAgICBpZiAodGhpcy5jb3VudGVyVGh1bWIgPT0gdGhpcy5pbWFnZXMubGVuZ3RoKSB0aGlzLnBvc1RodW1ibmFpbCgwKTtcclxuICB9XHJcblxyXG4gIHBvc1RodW1ibmFpbChjdXJyZW50OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHdpZHRoID0gdGhpcy50aHVtYm5haWxXaWR0aCArIHRoaXMudGh1bWJuYWlsTWFyZ2luUmlndGg7XHJcbiAgICBjb25zdCB3aWR0aFdyYXBwZXIgPVxyXG4gICAgICB0aGlzLnRodW1ibmFpbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xyXG5cclxuICAgIGxldCBuZXdNYXJnaW46IG51bWJlciA9IDA7XHJcbiAgICBpZiAod2lkdGhXcmFwcGVyID4gd2lkdGggKiB0aGlzLmltYWdlcy5sZW5ndGgpXHJcbiAgICAgIG5ld01hcmdpbiA9ICh3aWR0aFdyYXBwZXIgLSB3aWR0aCAqIHRoaXMuaW1hZ2VzLmxlbmd0aCkgLyAyO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IG1pZGRsZSA9IHdpZHRoV3JhcHBlciAvIDIgLSB3aWR0aCAqIGN1cnJlbnQ7XHJcbiAgICAgIGNvbnN0IG1pbiA9IHdpZHRoV3JhcHBlciAtIHdpZHRoICogdGhpcy5pbWFnZXMubGVuZ3RoO1xyXG5cclxuICAgICAgbmV3TWFyZ2luID0gTWF0aC5mbG9vcihtaWRkbGUgPiAwID8gMCA6IG1pZGRsZSA8IG1pbiA/IG1pbiA6IG1pZGRsZSk7XHJcbiAgICB9XHJcbiAgICBpZiAobmV3TWFyZ2luICE9IHRoaXMudGh1bWJuYWlsTWFyZ2luKSB7XHJcbiAgICAgIHRoaXMudGh1bWJuYWlsTWFyZ2luID0gbmV3TWFyZ2luO1xyXG4gICAgICB0aGlzLnRodW1ibmFpbEFuaW1hdGlvbiA9ICF0aGlzLnRodW1ibmFpbEFuaW1hdGlvbjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2V0SW1hZ2UoKXtcclxuICAgIHRoaXMub25TZXRJbWFnZUV2ZW50LmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJvdXNlbC1jb250YWluZXJcIlxyXG4gICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVpZ2h0P2hlaWdodDpudWxsXCJcclxuICAgICBbc3R5bGUubWFyZ2luLWJvdHRvbV09XCJoZWlnaHQ/Jy4yNXJlbSc6bnVsbFwiXHJcbiAgICAgKHRvdWNoc3RhcnQpPVwicG9zSW5pID0gJGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VYXCJcclxuICAgICAodG91Y2hlbmQpPVwibW92ZSgkZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0ucGFnZVgpXCI+XHJcbiAgPGRpdiAqbmdJZj1cImZvcmNlTW9iaWxlXCIgY2xhc3M9XCJjYXJvdXNlbC10b3AtbGVmdC1pY29uXCI+XHJcbiAgICA8c3ZnIHdpZHRoPVwiMzBcIiBoZWlnaHQ9XCIzMFwiIHZpZXdCb3g9XCIwIDAgMzAgMzBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgPHJlY3Qgd2lkdGg9XCIzMFwiIGhlaWdodD1cIjMwXCIgcng9XCIxNVwiIGZpbGw9XCJ3aGl0ZVwiIGZpbGwtb3BhY2l0eT1cIjAuNjNcIi8+XHJcbiAgICAgIDxwYXRoIGQ9XCJNMjAuODMzNyAxNUg5LjE2Njk5XCIgc3Ryb2tlPVwiIzFGMjIyNFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgIDxwYXRoIGQ9XCJNMTMuMjUwMyAxOS4wODA3TDkuMTY2OTkgMTQuOTk3NEwxMy4yNTAzIDEwLjkxNDFcIiBzdHJva2U9XCIjMUYyMjI0XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgIDwvc3ZnPlxyXG4gIDwvZGl2PlxyXG4gIDwhLS1jYXJvdXNlbCBpbWFnZSBjb250YWluZXItLT5cclxuICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaW1hZ2UtY29udGFpbmVyXCJcclxuICAgICAgIFtuZ0NsYXNzXT1cImhlaWdodCA/ICdmaXhlZC1oZWlnaHQnIDogbnVsbFwiXHJcbiAgICAgICAqbmdGb3I9XCJsZXQgaW1nIG9mIGltYWdlczsgbGV0IGkgPSBpbmRleDsgbGV0IGZpcnN0ID0gZmlyc3RcIlxyXG4gICAgICAgW0BhbmltSW1hZ2VTbGlkZXJdPVwic2xpZGVDb250cm9sW2ldXCIgKGNsaWNrKT1cImlzRGV2TW9kZUFjdGl2ZSA/IG9uU2V0SW1hZ2UoKSA6ICcnXCIgW3BUb29sdGlwXT1cIm9uSG92ZXJJbWFnZVRvb2x0aXBcIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cclxuICAgIDwhLS1jYXJvdXNlbCBpbWFnZS0tPlxyXG4gICAgPGltZyAjc2xpZGUgKGxvYWQpPVwiZmlyc3QgJiYgb25Mb2FkKHNsaWRlKVwiIFxyXG4gICAgICBbbmdDbGFzc109XCJ7J2RlZmF1bHQtaW1hZ2UnIDogaXNOb0ltYWdlLCAnZWRpdC1pbWFnZScgOiBpc0Rldk1vZGVBY3RpdmV9XCJcclxuICAgICAgW3NyY109XCJpbWcucGF0aFwiLz5cclxuICA8L2Rpdj5cclxuICA8IS0tcHJldmlvdXMgYnV0dG9uLS0+XHJcbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiY2Fyb3VzZWwtcHJldmlvdXMtYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJjaGFuZ2UoJ3JpZ2h0JylcIlxyXG4gICAgICAgICAgKm5nSWY9XCJzaG93TmF2aWdhdGlvblwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjYXJvdXNlbC1wcmV2aW91cy1pY29uXCI+PC9zcGFuPlxyXG4gIDwvYnV0dG9uPlxyXG4gIDwhLS1uZXh0IGJ1dHRvbi0tPlxyXG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBjbGFzcz1cImNhcm91c2VsLW5leHQtYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJjaGFuZ2UoJ2xlZnQnKVwiXHJcbiAgICAgICAgICAqbmdJZj1cInNob3dOYXZpZ2F0aW9uXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImNhcm91c2VsLW5leHQtaWNvblwiPjwvc3Bhbj5cclxuICA8L2J1dHRvbj5cclxuICA8IS0tYnV0dG9uIGluZGljYXRvcnMtLT5cclxuICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaW5kaWNhdG9yLWNvbnRhaW5lclwiICpuZ0lmPVwic2hvd0luZGljYXRvcnNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pbmRpY2F0b3ItYnV0dG9uc1wiPlxyXG4gICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBpbWcgb2YgaW1hZ2VzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICBbc3R5bGUub3BhY2l0eV09XCJpID09IGNvdW50ZXIgPyAxIDogMC41XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2V0SW5kZXgoaSlcIj48L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPCEtLXRodW1ibmFpbCBpbmRpY2F0b3JzLS0+XHJcbjxkaXYgI3RodW1ibmFpbCBjbGFzcz1cImNhcm91c2VsLXRodW1ibmFpbC1jb250YWluZXJcIiAqbmdJZj1cImFsbG93VGh1bWJuYWlsXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcm91c2VsLXRodW1ibmFpbHNcIlxyXG4gICAgICAgW0BhbmltYXRpb25UaHVtYm5haWxdPVwie1xyXG4gICAgICAgIHZhbHVlOiB0aHVtYm5haWxBbmltYXRpb24sXHJcbiAgICAgICAgcGFyYW1zOiB7IG1hcmdpbjogdGh1bWJuYWlsTWFyZ2luICsgJ3B4JyB9fVwiPlxyXG4gICAgPGltZyAqbmdGb3I9XCJsZXQgaW1nIG9mIGltYWdlczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJ0aHVtYm5haWxXaWR0aFwiXHJcbiAgICAgICAgIFtzdHlsZS5tYXJnaW4tcmlnaHQucHhdPVwidGh1bWJuYWlsTWFyZ2luUmlndGhcIlxyXG4gICAgICAgICBbc3R5bGUub3BhY2l0eV09XCJpID09IGNvdW50ZXIgPyAxIDogMC41XCJcclxuICAgICAgICAgKGxvYWQpPVwib25Mb2FkVGh1bWJuYWlsKClcIlxyXG4gICAgICAgICAoY2xpY2spPVwic2V0SW5kZXgoaSlcIlxyXG4gICAgICAgICBbc3JjXT1cImltZy5wYXRoXCIgLz5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==