@pepperi-addons/ngx-lib 0.4.2-beta.103 → 0.4.2-beta.104

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.
@@ -98,11 +98,10 @@ export class PepInternalPageComponent {
98
98
  // * 16 convert rem to pixel
99
99
  const cardRowsHeight = this.customizationService.calculateCardRowsHeight(maxRow) * 16;
100
100
  // maxRow * 24 + 60 - 24 for each row in card + 60 for the padding of each card.
101
- // const rowSpanToAdd = Math.floor(childrenCount * ((cardRowsHeight + 56) / formRowHeight) + rowsToAdd);
102
- // + 16 is the 1rem margin outside card.
103
- const rowSpanToAdd = (childrenCount * (cardRowsHeight + 16)) /
101
+ // const rowSpanToAdd = Math.floor(childrenCount * ((cardRowsHeight + 32) / formRowHeight) + rowsToAdd);
102
+ const rowSpanToAdd = Math.floor((childrenCount * (cardRowsHeight + 32)) /
104
103
  formRowHeight +
105
- rowsToAdd;
104
+ rowsToAdd);
106
105
  this.field.rowSpan = rowSpanToAdd;
107
106
  }
108
107
  else {
@@ -359,4 +358,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
359
358
  type: ViewChild,
360
359
  args: [PepInternalListComponent]
361
360
  }] } });
362
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2Zvcm0vaW50ZXJuYWwtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2Zvcm0vaW50ZXJuYWwtcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUdULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFFVCxnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLHVCQUF1QixHQUUxQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRSxPQUFPLEVBT0gsVUFBVSxHQUNiLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNILHdCQUF3QixHQUUzQixNQUFNLDJCQUEyQixDQUFDO0FBTW5DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFTekYsTUFBTSxPQUFPLHdCQUF3QjtJQXVEakMsWUFDWSxhQUErQixFQUMvQixtQkFBMkMsRUFDNUMsb0JBQTZDLEVBQzVDLGlCQUFvQztRQUhwQyxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0Isd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF3QjtRQUM1Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXlCO1FBQzVDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUF2RGhELGdCQUFXLEdBQUcsY0FBYyxDQUFDO1FBR3BCLGVBQVUsR0FBa0IsTUFBTSxDQUFDO1FBRzVDLDRCQUF1QixHQUFzQixJQUFJ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LE1BQU07Z0JBR2EsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNTLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFFeUIsT0FBTztzQkFBeEQsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRWhELFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRXRCLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUUzQixvQkFBb0I7c0JBRG5CLFNBQVM7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUl4RCxVQUFVO3NCQURULFNBQVM7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIFZpZXdDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGVwSW50ZXJuYWxQYWdlU2VydmljZSB9IGZyb20gJy4vaW50ZXJuYWwtcGFnZS5zZXJ2aWNlJztcblxuaW1wb3J0IHtcbiAgICBQZXBMYXlvdXRUeXBlLFxuICAgIFVJQ29udHJvbCxcbiAgICBLZXlWYWx1ZVBhaXIsXG4gICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgVUlDb250cm9sRmllbGQsXG4gICAgT2JqZWN0c0RhdGEsXG4gICAgRklFTERfVFlQRSxcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHtcbiAgICBQZXBJbnRlcm5hbExpc3RDb21wb25lbnQsXG4gICAgUGVwTGlzdFZpZXdUeXBlLFxufSBmcm9tICcuL2ludGVybmFsLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgSVBlcEZvcm1GaWVsZENsaWNrRXZlbnQsXG4gICAgSVBlcEZvcm1GaWVsZFZhbHVlQ2hhbmdlRXZlbnQsXG59IGZyb20gJy4vZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBQZXBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZGlhbG9nJztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUGVwUXVhbnRpdHlTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3F1YW50aXR5LXNlbGVjdG9yJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtaW50ZXJuYWwtcGFnZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ludGVybmFsLXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ludGVybmFsLXBhZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtQZXBJbnRlcm5hbFBhZ2VTZXJ2aWNlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUGVwSW50ZXJuYWxQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHN0YXRpYyBDVVJSRU5UX0FERElUSU9OQUxfQVBJX05BTUUgPVxuICAgICAgICAnaXRlbV9kZXRhaWxzX2N1cnJlbnRBZGRpdGlvbmFsQXBpTmFtZSc7XG5cbiAgICBjb250cm9sVHlwZSA9ICdpbnRlcm5hbFBhZ2UnO1xuXG4gICAgQElucHV0KCkgZmllbGQ6IGFueTtcbiAgICBASW5wdXQoKSBsYXlvdXRUeXBlOiBQZXBMYXlvdXRUeXBlID0gJ2Zvcm0nO1xuXG4gICAgQE91dHB1dCgpXG4gICAgaW50ZXJuYWxGb3JtRmllbGRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpXG4gICAgaW50ZXJuYWxGb3JtRmllbGRDbGljazogRXZlbnRFbWl0dGVyPElQZXBGb3JtRmllbGRDbGlja0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcEZvcm1GaWVsZENsaWNrRXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdteTFtbScpIG15MW1tOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ21haW5WaWV3Q29udCcpIG1haW5WaWV3Q29udDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ29yZ0NvbnQnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgb3JnQ29udDogVmlld0NvbnRhaW5lclJlZjtcbiAgICBAVmlld0NoaWxkKCdkaWFsb2dDb250JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXG4gICAgZGlhbG9nQ29udDogVmlld0NvbnRhaW5lclJlZjtcbiAgICBAVmlld0NoaWxkKCdtYXRyaXhUZW1wbGF0ZScpIG1hdHJpeFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBWaWV3Q2hpbGQoJ21hdHJpeERpYWxvZ1RlbXBsYXRlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICAgIG1hdHJpeERpYWxvZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZChQZXBJbnRlcm5hbExpc3RDb21wb25lbnQpXG4gICAgY3VzdG9tTGlzdDogUGVwSW50ZXJuYWxMaXN0Q29tcG9uZW50O1xuXG4gICAgcmVzaXplOiBhbnk7XG4gICAgY2hlY2tGb3JDaGFuZ2VzOiBhbnkgPSBudWxsO1xuXG4gICAgY2hpbGREYXRhOiBhbnkgPSBudWxsO1xuXG4gICAgZW1wdHlGb3JtOiBGb3JtR3JvdXA7XG4gICAgdWlDb250cm9sOiBVSUNvbnRyb2w7XG4gICAgcm93czogYW55O1xuICAgIGxpbmVWaWV3Um93czogYW55O1xuICAgIHRvdGFsc1JvdzogYW55ID0gW107XG4gICAgYWRkaXRpb25hbEFwaU5hbWVzOiBhbnkgPSBudWxsO1xuICAgIGN1cnJlbnRBZGRpdGlvbmFsQXBpTmFtZTogYW55ID0gbnVsbDtcbiAgICBmb2N1c2VkUVMgPSBmYWxzZTtcbiAgICBmaWVsZElkV2l0aEZvY3VzID0gJyc7XG4gICAgY29sdW1uV2lkdGggPSAxMDA7XG4gICAgY292ZXJDaGlsZFRhYmxlID0gZmFsc2U7XG4gICAgY2hpbGRWaWV3VHlwZXM6IEFycmF5PEtleVZhbHVlUGFpcjxzdHJpbmc+PjtcbiAgICBjdXJyZW50Vmlld1R5cGU6IEtleVZhbHVlUGFpcjxzdHJpbmc+ID0gbnVsbDtcbiAgICBjdXJyZW50Vmlld1R5cGVUaXRsZTogc3RyaW5nO1xuICAgIHN1bU9mTWluQ29sV2lkdGggPSAwO1xuICAgIHRvdGFsUm93c1dpZHRoID0gMDtcbiAgICB2aWV3V2lkdGggPSAnMTAwJSc7XG4gICAgdmlld0hlaWdodCA9ICdhdXRvJztcbiAgICBkaXNwbGF5UVNidG5zID0gdHJ1ZTtcbiAgICBzZWxlY3RlZEFwaU5hbWUgPSAnJztcbiAgICBzaG93U29ydCA9IGZhbHNlO1xuICAgIGRlZmF1bHRSb3dTcGFuID0gLTE7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBQZXBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGludGVybmFsUGFnZVNlcnZpY2U6IFBlcEludGVybmFsUGFnZVNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBjdXN0b21pemF0aW9uU2VydmljZTogUGVwQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7IH1cblxuICAgIHByaXZhdGUgZmlsbERhdGEoaXNJbkRpYWxvZyA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLm1hdHJpeFRlbXBsYXRlLmNyZWF0ZUVtYmVkZGVkVmlldyhudWxsKTtcblxuICAgICAgICB0aGlzLmN1c3RvbUxpc3Q/LmNsZWFyKCk7XG4gICAgICAgIHRoaXMub3JnQ29udD8uY2xlYXIoKTtcblxuICAgICAgICBpZiAoaXNJbkRpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dDb250Py5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dDb250Py5pbnNlcnQodmlldyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9yZ0NvbnQ/Lmluc2VydCh2aWV3KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgdmlld1R5cGU6IFBlcExpc3RWaWV3VHlwZSA9IHRoaXMuaXNUYWJsZVZpZXcoKVxuICAgICAgICAgICAgICAgID8gJ3RhYmxlJ1xuICAgICAgICAgICAgICAgIDogJ2xpbmVzJztcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tTGlzdC5pbml0TGlzdERhdGEoXG4gICAgICAgICAgICAgICAgdGhpcy51aUNvbnRyb2wsXG4gICAgICAgICAgICAgICAgdGhpcy5jaGlsZERhdGEuVG90YWxSb3dzLFxuICAgICAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhLlJvd3MsXG4gICAgICAgICAgICAgICAgdmlld1R5cGVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnNldFRvdGFsc1JvdygpO1xuXG4gICAgICAgICAgICAvLyBpZiAoIXRoaXMuY2hpbGRNb2RhbC5pc1Nob3duKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbkNvdW50ID0gdGhpcy5jaGlsZERhdGEuUm93c1xuICAgICAgICAgICAgICAgID8gdGhpcy5jaGlsZERhdGEuUm93cy5sZW5ndGhcbiAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgICAgICBjb25zdCBpc0V2ZW4gPSBjaGlsZHJlbkNvdW50ICUgMiA9PT0gMDtcbiAgICAgICAgICAgIC8vIDMgZm9yIG1hdHJpeCAmIGZsYXQgbWF0cml4IGJlY2F1c2UgdGhlIGhlYWRlciArIHRvdGFsIGlzIDIgbW9yZSByb3dzLlxuICAgICAgICAgICAgY29uc3Qgcm93c1RvQWRkID1cbiAgICAgICAgICAgICAgICB0aGlzLmlzTWF0cml4VmlldygpIHx8IHRoaXMuaXNGbGF0TWF0cml4VmlldygpXG4gICAgICAgICAgICAgICAgICAgID8gaXNFdmVuXG4gICAgICAgICAgICAgICAgICAgICAgICA/IDNcbiAgICAgICAgICAgICAgICAgICAgICAgIDogNFxuICAgICAgICAgICAgICAgICAgICA6IDE7XG5cbiAgICAgICAgICAgIGNvbnN0IGZvcm1Sb3dIZWlnaHQgPVxuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UuY2FsY3VsYXRlRm9ybUZpZWxkSGVpZ2h0KCkgKiAxNjsgLy8gY29udmVydCByZW0gdG8gcGl4ZWxcblxuICAgICAgICAgICAgLy8gU2V0IHRoZSBkZWZhdWx0IG9ubHkgaWYgbm90IHNldCB5ZXQuXG4gICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0Um93U3BhbiA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRSb3dTcGFuID0gdGhpcy5maWVsZC5yb3dTcGFuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnN1bU9mTWluQ29sV2lkdGggPSAwO1xuICAgICAgICAgICAgdGhpcy50b3RhbFJvd3NXaWR0aCA9IDA7XG5cbiAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhLlVJQ29udHJvbC5Db250cm9sRmllbGRzLmZvckVhY2goXG4gICAgICAgICAgICAgICAgKHVpQ29udHJvbEZpZWxkOiBVSUNvbnRyb2xGaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdGFsUm93c1dpZHRoICs9IHVpQ29udHJvbEZpZWxkLkNvbHVtbldpZHRoO1xuICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xGaWVsZC5taW5GaWVsZFdpZHRoID0gdGhpcy5tbVRvUHgoMTIpOyAvLyBORUVEIFRPIEdFVCBUSElTIFBBUkFNIEZST00gQ1VTVE9NSVpBVElPTjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdW1PZk1pbkNvbFdpZHRoICs9IDEyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0Vmlld0NvdmVyKHRoaXMuY2hpbGREYXRhLlJvd3MpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jb3ZlckNoaWxkVGFibGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLnJvd1NwYW4gPSB0aGlzLmRlZmF1bHRSb3dTcGFuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBGb3IgbGluZSB2aWV3IEFkZCB0aGUgaGVpZ2h0IG9mIHRoZSBsaW5lIChmb3JtIGhlaWdodCkuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFZpZXdUeXBlLktleSA9PT0gJ09yZGVyQ2VudGVyRmxhdE1hdHJpeExpbmUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heFJvdyA9IE1hdGgubWF4KFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy51aUNvbnRyb2wuQ29udHJvbEZpZWxkcy5tYXAoKGYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZi5MYXlvdXQuWSArIGYuTGF5b3V0LkhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gKiAxNiBjb252ZXJ0IHJlbSB0byBwaXhlbFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYXJkUm93c0hlaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmNhbGN1bGF0ZUNhcmRSb3dzSGVpZ2h0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgKSAqIDE2O1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIG1heFJvdyAqIDI0ICsgNjAgLSAyNCBmb3IgZWFjaCByb3cgaW4gY2FyZCArIDYwIGZvciB0aGUgcGFkZGluZyBvZiBlYWNoIGNhcmQuXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IHJvd1NwYW5Ub0FkZCA9IE1hdGguZmxvb3IoY2hpbGRyZW5Db3VudCAqICgoY2FyZFJvd3NIZWlnaHQgKyA1NikgLyBmb3JtUm93SGVpZ2h0KSArIHJvd3NUb0FkZCk7XG4gICAgICAgICAgICAgICAgICAgIC8vICsgMTYgaXMgdGhlIDFyZW0gbWFyZ2luIG91dHNpZGUgY2FyZC5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm93U3BhblRvQWRkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGlsZHJlbkNvdW50ICogKGNhcmRSb3dzSGVpZ2h0ICsgMTYpKSAvXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtUm93SGVpZ2h0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd3NUb0FkZDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5yb3dTcGFuID0gcm93U3BhblRvQWRkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IHRhYmxlUm93c0hlaWdodCA9IHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UuY2FsY3VsYXRlVGFibGVSb3dzSGVpZ2h0KGNoaWxkcmVuQ291bnQpICogMTY7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuZmllbGQucm93U3BhbiA9IE1hdGguY2VpbCgodGFibGVSb3dzSGVpZ2h0ICsgKHJvd3NUb0FkZCAqIDQwKSkgLyBmb3JtUm93SGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gKiAxNiBjb252ZXJ0IHJlbSB0byBwaXhlbFxuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dzVG9BZGRIZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5jYWxjdWxhdGVUYWJsZVJvd3NIZWlnaHQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93c1RvQWRkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICApICogMTY7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhYmxlUm93c0hlaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmNhbGN1bGF0ZVRhYmxlUm93c0hlaWdodChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbkNvdW50XG4gICAgICAgICAgICAgICAgICAgICAgICApICogMTY7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQucm93U3BhbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAocm93c1RvQWRkSGVpZ2h0ICsgdGFibGVSb3dzSGVpZ2h0KSAvIGZvcm1Sb3dIZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmlsbENoaWxkRGF0YShyZXM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoaWxkRGF0YSA9IHJlcztcbiAgICAgICAgdGhpcy51aUNvbnRyb2wgPSByZXMuVUlDb250cm9sO1xuICAgICAgICB0aGlzLmFkZGl0aW9uYWxBcGlOYW1lcyA9IHJlcy5BZGRpdGlvbmFsQXBpTmFtZXM7XG5cbiAgICAgICAgdGhpcy5maWxsRGF0YSgpO1xuICAgIH1cblxuICAgIG1tVG9QeChtbSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMubXkxbW0ubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKG1tICogaGVpZ2h0KTsgLy8gcmV0dXJucyBzaXplcyBpbiBQWFxuICAgIH1cblxuICAgIHByaXZhdGUgaXNNYXRyaXhWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGUgJiZcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlLktleSA9PT0gJ09yZGVyQ2VudGVyTWF0cml4J1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGbGF0TWF0cml4VmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlICYmXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3VHlwZS5LZXkgPT09ICdPcmRlckNlbnRlckZsYXRNYXRyaXhHcmlkJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGlzVGFibGVWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc01hdHJpeFZpZXcoKSB8fCB0aGlzLmlzRmxhdE1hdHJpeFZpZXcoKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VDaGlsZHJlblZpZXdUeXBlKHZpZXdUeXBlS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3dzID0gW107XG4gICAgICAgIHRoaXMudWlDb250cm9sID0gbnVsbDtcblxuICAgICAgICBmb3IgKGNvbnN0IHZ0IG9mIHRoaXMuY2hpbGRWaWV3VHlwZXMpIHtcbiAgICAgICAgICAgIGlmICh2dC5LZXkgPT09IHZpZXdUeXBlS2V5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGUgPSB2dDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlVGl0bGUgPSB0aGlzLmN1cnJlbnRWaWV3VHlwZS5WYWx1ZTtcblxuICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuY2hhbmdlQ2hpbGRyZW5WaWV3VHlwZShcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlLktleSxcbiAgICAgICAgICAgIChyZXM6IE9iamVjdHNEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5Sb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsbENoaWxkRGF0YShyZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzZXRWaWV3Q292ZXIocm93cyk6IHZvaWQge1xuICAgICAgICBpZiAoIXJvd3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1hdHJpeENvbnQgPSB0aGlzLm1haW5WaWV3Q29udC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCB2aWV3V2lkdGggPSBtYXRyaXhDb250LmNsaWVudFdpZHRoO1xuXG4gICAgICAgIHRoaXMudmlld1dpZHRoID0gdmlld1dpZHRoID8gdmlld1dpZHRoLnRvU3RyaW5nKCkgOiAnMTAwJSc7XG5cbiAgICAgICAgLy8gaWYgdGhlIG1hdHJpeCBsb2NhdGVkIG9uIHRoZSBib3R0b20gLyB0aGVyZSBpcyBub3RoaW5nIHVuZGVyIHRoZSBtYXRyaXggd2UgZG9udCBuZWVkIHRvIGNoZWNrIHRoZSBoZWlnaHRcbiAgICAgICAgaWYgKHBhcnNlSW50KHZpZXdXaWR0aCwgMTApIDwgdGhpcy5tbVRvUHgodGhpcy5zdW1PZk1pbkNvbFdpZHRoKSkge1xuICAgICAgICAgICAgdGhpcy5jb3ZlckNoaWxkVGFibGUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb3ZlckNoaWxkVGFibGUgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgc2hvd01hdHJpeERpYWxvZygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldERpYWxvZ0NvbmZpZyhcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdsYXJnZSdcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbkRpYWxvZyhcbiAgICAgICAgICAgIHRoaXMubWF0cml4RGlhbG9nVGVtcGxhdGUsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIGNvbmZpZ1xuICAgICAgICApO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlck9wZW5lZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbGxEYXRhKHRydWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbGxEYXRhKGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIGxldCBmaWVsZCA9IHRoaXMuZmllbGQgYXMgUGVwSW50ZXJuYWxQYWdlRmllbGQ7XG5cbiAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmluaXREZXRhaWxzKFxuICAgICAgICAgICAgdGhpcy5maWVsZC5vYmplY3RJZCxcbiAgICAgICAgICAgIHRoaXMuZmllbGQucGFyZW50SWQsXG4gICAgICAgICAgICB0aGlzLmZpZWxkLnNlYXJjaENvZGUsXG4gICAgICAgICAgICAocmVzVmlld1R5cGVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBteSBjb2RlIERJLTcxMzRcbiAgICAgICAgICAgICAgICByZXNWaWV3VHlwZXMuUm93cyA9IHJlc1ZpZXdUeXBlcy5Sb3dzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0uS2V5ICE9PSAnT3JkZXJDZW50ZXJWaWV3MSdcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlc1ZpZXdUeXBlcy5Sb3dzICYmIHJlc1ZpZXdUeXBlcy5Sb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNWaWV3VHlwZXMuRGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzVmlld1R5cGVzLkRlZmF1bHQgPSByZXNWaWV3VHlwZXMuUm93c1swXS5LZXk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGlsZFZpZXdUeXBlcyA9IHJlc1ZpZXdUeXBlcy5Sb3dzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3VHlwZSA9IHJlc1ZpZXdUeXBlcy5Sb3dzWzBdO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzVmlld1R5cGVzLlJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB2aWV3VHlwZVJvdyBvZiByZXNWaWV3VHlwZXMuUm93cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZXdUeXBlUm93LlZhbHVlID09PSByZXNWaWV3VHlwZXMuRGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlID0gdmlld1R5cGVSb3c7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRMYXN0QWRkaXRpb25hbEFwaU5hbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VDaGlsZHJlblZpZXdUeXBlKHRoaXMuY3VycmVudFZpZXdUeXBlLktleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMucmVzaXplID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTApKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZpZXdDb3Zlcih0aGlzLnJvd3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbG9hZExhc3RBZGRpdGlvbmFsQXBpTmFtZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGFhID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcbiAgICAgICAgICAgIFBlcEludGVybmFsUGFnZUNvbXBvbmVudC5DVVJSRU5UX0FERElUSU9OQUxfQVBJX05BTUVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGRhYSAmJiBkYWEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbEFwaU5hbWUgPSBKU09OLnBhcnNlKGRhYSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBZGRpdGlvbmFsQXBpTmFtZSA9IGFkZGl0aW9uYWxBcGlOYW1lO1xuICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmFkZGl0aW9uYWxBcGlOYW1lID0gYWRkaXRpb25hbEFwaU5hbWU/LktleTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZXNpemUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGFuZ2VBZGRpdGlvbmFsQXBpTmFtZShhZGRpdGlvbmFsQXBpTmFtZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuY2hhbmdlQWRkaXRpb25hbEFwaU5hbWUoXG4gICAgICAgICAgICBhZGRpdGlvbmFsQXBpTmFtZSA/IGFkZGl0aW9uYWxBcGlOYW1lLktleSA6ICcnLFxuICAgICAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHJlcy5Sb3dzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHJlcy5Sb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhbmdlcyhyb3cpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgICAgIFBlcEludGVybmFsUGFnZUNvbXBvbmVudC5DVVJSRU5UX0FERElUSU9OQUxfQVBJX05BTUUsXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShhZGRpdGlvbmFsQXBpTmFtZSlcbiAgICAgICAgKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEFkZGl0aW9uYWxBcGlOYW1lID0gYWRkaXRpb25hbEFwaU5hbWU7XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIHNldFRvdGFsc1JvdygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50b3RhbHNSb3cgPSBbXTtcblxuICAgICAgICBpZiAodGhpcy5pc01hdHJpeFZpZXcoKSB8fCB0aGlzLmlzRmxhdE1hdHJpeFZpZXcoKSkge1xuICAgICAgICAgICAgbGV0IHRvdGFsQ29sID0gMDtcblxuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmN1c3RvbUxpc3QuaXRlbXM7XG4gICAgICAgICAgICBpZiAoaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjb2wgPSAwOyBjb2wgPCBpdGVtc1swXS5GaWVsZHMubGVuZ3RoOyBjb2wrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGl0ZW1zWzBdLkZpZWxkc1tjb2xdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09IEZJRUxEX1RZUEUuTnVtYmVySW50ZWdlckZvck1hdHJpeCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuRmllbGRUeXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgRklFTERfVFlQRS5OdW1iZXJJbnRlZ2VyUXVhbnRpdHlTZWxlY3RvciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuRmllbGRUeXBlID09PSBGSUVMRF9UWVBFLk51bWJlclJlYWxGb3JNYXRyaXggfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLkZpZWxkVHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgIEZJRUxEX1RZUEUuTnVtYmVyUmVhbFF1YW50aXR5U2VsZWN0b3IgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLkZpZWxkVHlwZSA9PT0gRklFTERfVFlQRS5DYWxjdWxhdGVkSW50IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09IEZJRUxEX1RZUEUuTnVtYmVySW50ZWdlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuRmllbGRUeXBlID09PSBGSUVMRF9UWVBFLkNhbGN1bGF0ZWRSZWFsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09IEZJRUxEX1RZUEUuTnVtYmVyUmVhbFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ29sID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbGlzdEl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtLkZpZWxkc1tjb2xdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtLkZpZWxkc1tjb2xdLlZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bSA9IHBhcnNlRmxvYXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0SXRlbS5GaWVsZHNbY29sXS5WYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvbCArPSBpc05hTihudW0pID8gMCA6IG51bTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdGFsc1Jvdy5wdXNoKHRvdGFsQ29sKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG90YWxzUm93LnB1c2goJycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlQ2hhbmdlcyhlbGVtZW50VG9VcGRhdGU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1c3RvbUxpc3QudXBkYXRlSXRlbShlbGVtZW50VG9VcGRhdGUpO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBtZW1vcnkgZGF0YVxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5jaGlsZERhdGEuUm93cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNoaWxkRGF0YS5Sb3dzW2luZGV4XS5VSUQgPT09IGVsZW1lbnRUb1VwZGF0ZS5VSUQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoaWxkRGF0YS5Sb3dzW2luZGV4XSA9IGVsZW1lbnRUb1VwZGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFZhbHVlQ2FsbGJhY2soaWQ6IGFueSwgcmVzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHJlcy5Sb3dzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSByZXMuUm93c1swXS5GaWVsZHMuZmluZCgoZikgPT4gZi5BcGlOYW1lID09PSAnT2JqZWN0TWVudScpO1xuICAgICAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgLy8gSEFDSyA6IFVudGlsIFwiRW5hYmxlZFwiIHJldHVybnMgZnJvbSB0aGUgc2VydmVyLCB3ZSBzZXQgUGVwTWVudSB0byBiZVxuICAgICAgICAgICAgICAgIC8vICAgICAgICBEaXNhYmxlZCBpbiBjYXJ0IG9uIHJlZ3VsYXIgaXRlbXMgYW5kIG5vdCBjYW1waWduIGl0ZW1zLlxuICAgICAgICAgICAgICAgIGZpZWxkLkVuYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNoYW5nZXMocmVzLlJvd3NbMF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRUb3RhbHNSb3coKTtcbiAgICAgICAgdGhpcy5jaGVja0ZvckNoYW5nZXMgPSBuZXcgRGF0ZSgpO1xuXG4gICAgICAgIC8vIERJLTE1OTg1XG4gICAgICAgIHRoaXMuaW50ZXJuYWxGb3JtRmllbGRDaGFuZ2UuZW1pdChyZXMpO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25DdXN0b21pemVPYmplY3RDaGFuZ2VkKFxuICAgICAgICBjdXN0b21pemVPYmplY3RDaGFuZ2VkRGF0YTogSVBlcEZvcm1GaWVsZFZhbHVlQ2hhbmdlRXZlbnRcbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmNoaWxkVmFsdWVDaGFuZ2VkKFxuICAgICAgICAgICAgY3VzdG9taXplT2JqZWN0Q2hhbmdlZERhdGEuaWQsXG4gICAgICAgICAgICBjdXN0b21pemVPYmplY3RDaGFuZ2VkRGF0YS5rZXksXG4gICAgICAgICAgICBjdXN0b21pemVPYmplY3RDaGFuZ2VkRGF0YS52YWx1ZSxcbiAgICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVDYWxsYmFjayhjdXN0b21pemVPYmplY3RDaGFuZ2VkRGF0YS5pZCwgcmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkN1c3RvbWl6ZUZpZWxkQ2xpY2soZmllbGRDbGlja0V2ZW50OiBJUGVwRm9ybUZpZWxkQ2xpY2tFdmVudCk6IHZvaWQge1xuICAgICAgICBsZXQgaGFuZGxlZEV2ZW50ID0gZmFsc2U7XG5cbiAgICAgICAgLy8gRm9yIHRoZSBuZXcgY3VzdG9tIGZvcm0sIHRoZSBwbHVzIGFuZCBtaW51cyBldmVudHMgdHJhbnNmb3JtIGluIHRoZSBJUGVwRm9ybUZpZWxkVmFsdWVDaGFuZ2VFdmVudFxuICAgICAgICBpZiAoZmllbGRDbGlja0V2ZW50LmNvbnRyb2xUeXBlID09PSAncXMnKSB7XG4gICAgICAgICAgICBpZiAoZmllbGRDbGlja0V2ZW50LnZhbHVlID09PSBQZXBRdWFudGl0eVNlbGVjdG9yQ29tcG9uZW50LlBMVVMpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxQYWdlU2VydmljZS5jaGlsZFBsdXNDbGljayhcbiAgICAgICAgICAgICAgICAgICAgZmllbGRDbGlja0V2ZW50LmlkLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZENsaWNrRXZlbnQua2V5LFxuICAgICAgICAgICAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVDYWxsYmFjayhmaWVsZENsaWNrRXZlbnQuaWQsIHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBmaWVsZENsaWNrRXZlbnQudmFsdWUgPT09IFBlcFF1YW50aXR5U2VsZWN0b3JDb21wb25lbnQuTUlOVVNcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmNoaWxkTWludXNDbGljayhcbiAgICAgICAgICAgICAgICAgICAgZmllbGRDbGlja0V2ZW50LmlkLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZENsaWNrRXZlbnQua2V5LFxuICAgICAgICAgICAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVDYWxsYmFjayhmaWVsZENsaWNrRXZlbnQuaWQsIHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFoYW5kbGVkRXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxGb3JtRmllbGRDbGljay5lbWl0KGZpZWxkQ2xpY2tFdmVudCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI21hdHJpeEhlYWRlclRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJtYXRyaXgtdGl0bGUtY29udGFpbmVyIHBlcC1ib3JkZXItYm90dG9tIGFsaWduLXt7XG4gICAgICAgICAgICBmaWVsZC54QWxpZ25tZW50XG4gICAgICAgIH19XCIgdGl0bGU9XCJ7eyBmaWVsZC5sYWJlbCB9fVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImJsb2NrLXdpdGgtdGV4dCBib2R5LW1kXCI+e3sgZmllbGQubGFiZWwgfX08L3NwYW4+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnMtY29udGFpbmVyIHBlcC1zcGFjaW5nLWVsZW1lbnQtbmVnYXRpdmUgcHVsbC1yaWdodCBmbGlwXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWaWV3VHlwZT8uS2V5ID09ICdPcmRlckNlbnRlck1hdHJpeCcgJiZcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEFwaU5hbWVzICYmXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxBcGlOYW1lcy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBlcC1zcGFjaW5nLWVsZW1lbnQgcGVwLWJ1dHRvbiBpY29uLWJ1dHRvbiBzbSB3ZWFrXCIgbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXG4gICAgICAgICAgICAgICAgICAgIG1lbnUtYmx1cj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwdWxsLWxlZnQgZmxpcFwiICpuZ0lmPVwiY3VycmVudEFkZGl0aW9uYWxBcGlOYW1lXCI+Jm5ic3A7e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRBZGRpdGlvbmFsQXBpTmFtZT8uVmFsdWUgfX0mbmJzcDs8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIFtuZ0NsYXNzXT1cInsncHVsbC1sZWZ0IGZsaXAnOiBjdXJyZW50QWRkaXRpb25hbEFwaU5hbWV9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGVwLWljb24gbmFtZT1cInN5c3RlbV9pbmZvXCI+PC9wZXAtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGN1cnJlbnRBZGRpdGlvbmFsQXBpTmFtZSA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiIChjbGljayk9XCJjaGFuZ2VBZGRpdGlvbmFsQXBpTmFtZShudWxsKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgXCJMSVNULk5PTkVcIiB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRBZGRpdGlvbmFsQXBpTmFtZT8uS2V5ID09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxBcGlOYW1lPy5LZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIiAqbmdGb3I9XCJsZXQgYWRkaXRpb25hbEFwaU5hbWUgb2YgYWRkaXRpb25hbEFwaU5hbWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VBZGRpdGlvbmFsQXBpTmFtZShhZGRpdGlvbmFsQXBpTmFtZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGFkZGl0aW9uYWxBcGlOYW1lLlZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGRWaWV3VHlwZXMgJiYgY2hpbGRWaWV3VHlwZXMubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwZXAtc3BhY2luZy1lbGVtZW50IHBlcC1idXR0b24gaWNvbi1idXR0b24gc20gd2Vha1wiIG1hdC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cInZpZXdzTWVudVwiIG1lbnUtYmx1cj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJ2aWV3X2NhcmRfbWRcIj48L3BlcC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPG1hdC1tZW51ICN2aWV3c01lbnU9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGN1cnJlbnRWaWV3VHlwZT8uS2V5ID09IHZpZXdUeXBlPy5LZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIiAqbmdGb3I9XCJsZXQgdmlld1R5cGUgb2YgY2hpbGRWaWV3VHlwZXNcIiAoY2xpY2spPVwiY2hhbmdlQ2hpbGRyZW5WaWV3VHlwZSh2aWV3VHlwZT8uS2V5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIFtuZ1N3aXRjaF09XCJ2aWV3VHlwZT8uS2V5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBlcC1pY29uICpuZ1N3aXRjaENhc2U9XCInT3JkZXJDZW50ZXJNYXRyaXgnXCIgbmFtZT1cInZpZXdfbWF0cml4XCI+PC9wZXAtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGVwLWljb24gKm5nU3dpdGNoQ2FzZT1cIidPcmRlckNlbnRlckZsYXRNYXRyaXhHcmlkJ1wiIG5hbWU9XCJ2aWV3X3RhYmxlXCI+PC9wZXAtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGVwLWljb24gKm5nU3dpdGNoQ2FzZT1cIidPcmRlckNlbnRlckZsYXRNYXRyaXhMaW5lJ1wiIG5hbWU9XCJ2aWV3X2xpbmVcIj48L3BlcC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHZpZXdUeXBlPy5WYWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtYXRyaXhUZW1wbGF0ZT5cbiAgICA8ZGl2ICNtYXRyaXhDb250YWluZXIgY2xhc3M9XCJtYXRyaXgtY29udGFpbmVyXCI+XG4gICAgICAgIDxwZXAtaW50ZXJuYWwtbGlzdCAodmFsdWVDaGFuZ2UpPVwib25DdXN0b21pemVPYmplY3RDaGFuZ2VkKCRldmVudClcIiBbcGFyZW50U2Nyb2xsXT1cIm1hdHJpeENvbnRhaW5lclwiXG4gICAgICAgICAgICAoZmllbGRDbGljayk9XCJvbkN1c3RvbWl6ZUZpZWxkQ2xpY2soJGV2ZW50KVwiIFt0b3RhbHNSb3ddPVwidG90YWxzUm93XCI+PC9wZXAtaW50ZXJuYWwtbGlzdD5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXYgI21haW5WaWV3Q29udCBpZD1cIm1haW5WaWV3Q29udFwiIFtuZ1N0eWxlXT1cInsgJ21heC13aWR0aCc6IHZpZXdXaWR0aCwgJ21heC1oZWlnaHQnOiB2aWV3SGVpZ2h0IH1cIj5cbiAgICA8ZGl2ICNteTFtbSBpZD1cIm15MV9tbVwiIHN0eWxlPVwiaGVpZ2h0OjFtbTt3aWR0aDoxbW07dmlzaWJpbGl0eTogaGlkZGVuO1wiPjwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb3ZlckNoaWxkVGFibGUgJiYgdWlDb250cm9sICE9IG51bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvdmVyXCI+PC9kaXY+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cInNob3dNYXRyaXhEaWFsb2coKVwiIGNsYXNzPVwicGVwLWJ1dHRvbiBzdHJvbmcgc20gdGFibGUtY292ZXItYnV0dG9uXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2xpbmV2aWV3LWJ0bic6IGN1cnJlbnRWaWV3VHlwZT8uS2V5ID09ICdPcmRlckNlbnRlckZsYXRNYXRyaXhMaW5lJ31cIj5cbiAgICAgICAgICAgIHt7IFwiSU5URVJOQUxfUEFHRS5DTElDS19UT19PUkRFUlwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdHJpeEhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAjb3JnQ29udD48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI21hdHJpeERpYWxvZ1RlbXBsYXRlPlxuXG4gICAgPGRpdiBtYXQtZGlhbG9nLXRpdGxlPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0cml4SGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgbWF0LWRpYWxvZy1jb250ZW50PlxuICAgICAgICA8bmctY29udGFpbmVyICNkaWFsb2dDb250PjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSA8ZGl2IGlkPVwiY2hpbGRHcmlkTW9kYWxcIiBic01vZGFsIChvblNob3duKT1cIm9uU2hvd24oKVwiIChvbkhpZGRlbik9XCJvbkhpZGRlbigpXCIgI2NoaWxkTW9kYWw9XCJicy1tb2RhbFwiIGNsYXNzPVwibW9kYWxcIlxuICAgIHRhYmluZGV4PVwiLTFcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZ3JpZE1vZGFsTGFiZWxcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nXCIgcm9sZT1cImRvY3VtZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBtYXRyaXgtZGlhbG9nLWJvZHlcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICNtb2RhbENvbnQ+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4gLS0+Il19
361
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2Zvcm0vaW50ZXJuYWwtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2Zvcm0vaW50ZXJuYWwtcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUdULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFFVCxnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLHVCQUF1QixHQUUxQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRSxPQUFPLEVBT0gsVUFBVSxHQUNiLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNILHdCQUF3QixHQUUzQixNQUFNLDJCQUEyQixDQUFDO0FBTW5DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFTekYsTUFBTSxPQUFPLHdCQUF3QjtJQXVEakMsWUFDWSxhQUErQixFQUMvQixtQkFBMkMsRUFDNUMsb0JBQTZDLEVBQzVDLGlCQUFvQztRQUhwQyxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0Isd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF3QjtRQUM1Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXlCO1FBQzVDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUF2RGhELGdCQUFXLEdBQUcsY0FBYyxDQUFDO1FBR3BCLGVBQVUsR0FBa0IsTUFBTSxDQUFDO1FBRzVDLDRCQUF1QixHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXJFLDJCQUFzQixHQUEwQyxJQUFJLFlBQVksRUFBMkIsQ0FBQztRQWdCNUcsb0JBQWUsR0FBUSxJQUFJLENBQUM7UUFFNUIsY0FBUyxHQUFRLElBQUksQ0FBQztRQU10QixjQUFTLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLHVCQUFrQixHQUFRLElBQUksQ0FBQztRQUMvQiw2QkFBd0IsR0FBUSxJQUFJLENBQUM7UUFDckMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsZ0JBQVcsR0FBRyxHQUFHLENBQUM7UUFDbEIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFeEIsb0JBQWUsR0FBeUIsSUFBSSxDQUFDO1FBRTdDLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUNyQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUNuQixjQUFTLEdBQUcsTUFBTSxDQUFDO1FBQ25CLGVBQVUsR0FBRyxNQUFNLENBQUM7UUFDcEIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixtQkFBYyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBT2hCLENBQUM7SUFFRyxRQUFRLENBQUMsVUFBVSxHQUFHLEtBQUs7UUFDL0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFFdEIsSUFBSSxVQUFVLEVBQUU7WUFDWixJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pDO2FBQU07WUFDSCxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5QjtRQUVELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixNQUFNLFFBQVEsR0FBb0IsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDaEQsQ0FBQyxDQUFDLE9BQU87Z0JBQ1QsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUN4QixJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFDbkIsUUFBUSxDQUNYLENBQUM7WUFDRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFFcEIsa0NBQWtDO1lBQ2xDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSTtnQkFDckMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU07Z0JBQzVCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDUixNQUFNLE1BQU0sR0FBRyxhQUFhLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2Qyx3RUFBd0U7WUFDeEUsTUFBTSxTQUFTLEdBQ1gsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDMUMsQ0FBQyxDQUFDLE1BQU07b0JBQ0osQ0FBQyxDQUFDLENBQUM7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVaLE1BQU0sYUFBYSxHQUNmLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QjtZQUV0Rix1Q0FBdUM7WUFDdkMsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO2FBQzVDO1lBRUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztZQUV4QixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUMxQyxDQUFDLGNBQThCLEVBQUUsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLGNBQWMsSUFBSSxjQUFjLENBQUMsV0FBVyxDQUFDO2dCQUNsRCxjQUFjLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw2Q0FBNkM7Z0JBQzdGLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7WUFDaEMsQ0FBQyxDQUNKLENBQUM7WUFFRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdkMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO2FBQzVDO2lCQUFNO2dCQUNILDBEQUEwRDtnQkFDMUQsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsS0FBSywyQkFBMkIsRUFBRTtvQkFDMUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDbkIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDdEMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztvQkFDeEMsQ0FBQyxDQUFDLENBQ0wsQ0FBQztvQkFFRiw0QkFBNEI7b0JBQzVCLE1BQU0sY0FBYyxHQUNoQixJQUFJLENBQUMsb0JBQW9CLENBQUMsdUJBQXVCLENBQzdDLE1BQU0sQ0FDVCxHQUFHLEVBQUUsQ0FBQztvQkFFWCxnRkFBZ0Y7b0JBQ2hGLHdHQUF3RztvQkFDeEcsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDM0IsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLENBQUM7d0JBQ3ZDLGFBQWE7d0JBQ2IsU0FBUyxDQUFDLENBQUM7b0JBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDO2lCQUNyQztxQkFBTTtvQkFDSCxrR0FBa0c7b0JBQ2xHLHdGQUF3RjtvQkFDeEYsNEJBQTRCO29CQUM1QixNQUFNLGVBQWUsR0FDakIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHdCQUF3QixDQUM5QyxTQUFTLEVBQ1QsS0FBSyxDQUNSLEdBQUcsRUFBRSxDQUFDO29CQUNYLE1BQU0sZUFBZSxHQUNqQixJQUFJLENBQUMsb0JBQW9CLENBQUMsd0JBQXdCLENBQzlDLGFBQWEsQ0FDaEIsR0FBRyxFQUFFLENBQUM7b0JBQ1gsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO3dCQUNkLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztpQkFDM0Q7YUFDSjtRQUNMLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVOLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU8sYUFBYSxDQUFDLEdBQVE7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLENBQUMsa0JBQWtCLENBQUM7UUFFakQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBRTtRQUNMLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztRQUNyRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsc0JBQXNCO0lBQzFELENBQUM7SUFFTyxZQUFZO1FBQ2hCLE9BQU8sQ0FDSCxJQUFJLENBQUMsZUFBZTtZQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsS0FBSyxtQkFBbUIsQ0FDbkQsQ0FBQztJQUNOLENBQUM7SUFFTyxnQkFBZ0I7UUFDcEIsT0FBTyxDQUNILElBQUksQ0FBQyxlQUFlO1lBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxLQUFLLDJCQUEyQixDQUMzRCxDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVc7UUFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxRCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsV0FBbUI7UUFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUV0QixLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbEMsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLFdBQVcsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7Z0JBQzFCLE1BQU07YUFDVDtTQUNKO1FBRUQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO1FBRXZELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxzQkFBc0IsQ0FDM0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQ3hCLENBQUMsR0FBZ0IsRUFBRSxFQUFFO1lBQ2pCLElBQUksR0FBRyxDQUFDLElBQUksRUFBRTtnQkFDVixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzNCO1FBQ0wsQ0FBQyxDQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQUk7UUFDYixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1AsT0FBTztTQUNWO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUM7UUFDbkQsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQztRQUV6QyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFM0QsMkdBQTJHO1FBQzNHLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQzlELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1NBQy9CO2FBQU07WUFDSCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztTQUNoQztRQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQzdDO1lBQ0ksWUFBWSxFQUFFLEtBQUs7U0FDdEIsRUFDRCxPQUFPLENBQ1YsQ0FBQztRQUVGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUMzQyxJQUFJLENBQUMsb0JBQW9CLEVBQ3pCLEVBQUUsRUFDRixNQUFNLENBQ1QsQ0FBQztRQUVGLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxRQUFRO1FBQ0osa0RBQWtEO1FBRWxELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQ3JCLENBQUMsWUFBaUIsRUFBRSxFQUFFO1lBQ2xCLGtCQUFrQjtZQUNsQixZQUFZLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUN4QyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxrQkFBa0IsQ0FDNUMsQ0FBQztZQUVGLElBQUksWUFBWSxDQUFDLElBQUksSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ25ELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFO29CQUN2QixZQUFZLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2lCQUNuRDtnQkFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFNUMsdURBQXVEO2dCQUN2RCxLQUFLLE1BQU0sV0FBVyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUU7b0JBQ3pDLElBQUksV0FBVyxDQUFDLEtBQUssS0FBSyxZQUFZLENBQUMsT0FBTyxFQUFFO3dCQUM1QyxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztxQkFDdEM7aUJBQ0o7Z0JBRUQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3pEO1FBQ0wsQ0FBQyxDQUNKLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO2FBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdEIsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQseUJBQXlCO1FBQ3JCLE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQzlCLHdCQUF3QixDQUFDLDJCQUEyQixDQUN2RCxDQUFDO1FBQ0YsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxpQkFBaUIsQ0FBQztZQUNsRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLEVBQUUsR0FBRyxDQUFDO1NBQ3ZFO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzdCO0lBQ0wsQ0FBQztJQUVELHVCQUF1QixDQUFDLGlCQUFpQjtRQUNyQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsdUJBQXVCLENBQzVDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDOUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNULDBEQUEwRDtZQUMxRCxLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDM0I7WUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUMsQ0FBQyxDQUNKLENBQUM7UUFFRixjQUFjLENBQUMsT0FBTyxDQUNsQix3QkFBd0IsQ0FBQywyQkFBMkIsRUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUNwQyxDQUFDO1FBRUYsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxpQkFBaUIsQ0FBQztRQUN0RCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBRXBCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO1lBQ2hELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztZQUVqQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUNwQyxJQUFJLEtBQUssRUFBRTtnQkFDUCxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7b0JBQ25ELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ25DLElBQ0ksS0FBSyxDQUFDLFNBQVMsS0FBSyxVQUFVLENBQUMsc0JBQXNCO3dCQUNyRCxLQUFLLENBQUMsU0FBUzs0QkFDZixVQUFVLENBQUMsNkJBQTZCO3dCQUN4QyxLQUFLLENBQUMsU0FBUyxLQUFLLFVBQVUsQ0FBQyxtQkFBbUI7d0JBQ2xELEtBQUssQ0FBQyxTQUFTOzRCQUNmLFVBQVUsQ0FBQywwQkFBMEI7d0JBQ3JDLEtBQUssQ0FBQyxTQUFTLEtBQUssVUFBVSxDQUFDLGFBQWE7d0JBQzVDLEtBQUssQ0FBQyxTQUFTLEtBQUssVUFBVSxDQUFDLGFBQWE7d0JBQzVDLEtBQUssQ0FBQyxTQUFTLEtBQUssVUFBVSxDQUFDLGNBQWM7d0JBQzdDLEtBQUssQ0FBQyxTQUFTLEtBQUssVUFBVSxDQUFDLFVBQVUsRUFDM0M7d0JBQ0UsUUFBUSxHQUFHLENBQUMsQ0FBQzt3QkFDYixLQUFLLE1BQU0sUUFBUSxJQUFJLEtBQUssRUFBRTs0QkFDMUIsSUFDSSxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztnQ0FDcEIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQzVCO2dDQUNFLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FDbEIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQzdCLENBQUM7Z0NBQ0YsUUFBUSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7NkJBQ3BDO3lCQUNKO3dCQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3FCQUNqQzt5QkFBTTt3QkFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDM0I7aUJBQ0o7YUFDSjtTQUNKO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxlQUFvQjtRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUU1QyxxQkFBcUI7UUFDckIsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM3RCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxlQUFlLENBQUMsR0FBRyxFQUFFO2dCQUN4RCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxlQUFlLENBQUM7YUFDaEQ7U0FDSjtJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPLEVBQUUsR0FBUTtRQUM5QixJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN2QixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssWUFBWSxDQUFDLENBQUM7WUFDekUsSUFBSSxLQUFLLEVBQUU7Z0JBQ1AsdUVBQXVFO2dCQUN2RSxrRUFBa0U7Z0JBQ2xFLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2FBQ3hCO1lBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbkM7UUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBRWxDLFdBQVc7UUFDWCxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsd0JBQXdCLENBQ3BCLDBCQUF5RDtRQUV6RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQ3RDLDBCQUEwQixDQUFDLEVBQUUsRUFDN0IsMEJBQTBCLENBQUMsR0FBRyxFQUM5QiwwQkFBMEIsQ0FBQyxLQUFLLEVBQ2hDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDVCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELHFCQUFxQixDQUFDLGVBQXdDO1FBQzFELElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztRQUV6QixvR0FBb0c7UUFDcEcsSUFBSSxlQUFlLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRTtZQUN0QyxJQUFJLGVBQWUsQ0FBQyxLQUFLLEtBQUssNEJBQTRCLENBQUMsSUFBSSxFQUFFO2dCQUM3RCxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUNuQyxlQUFlLENBQUMsRUFBRSxFQUNsQixlQUFlLENBQUMsR0FBRyxFQUNuQixDQUFDLEdBQVEsRUFBRSxFQUFFO29CQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNuRCxDQUFDLENBQ0osQ0FBQzthQUNMO2lCQUFNLElBQ0gsZUFBZSxDQUFDLEtBQUssS0FBSyw0QkFBNEIsQ0FBQyxLQUFLLEVBQzlEO2dCQUNFLFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQ3BDLGVBQWUsQ0FBQyxFQUFFLEVBQ2xCLGVBQWUsQ0FBQyxHQUFHLEVBQ25CLENBQUMsR0FBUSxFQUFFLEVBQUU7b0JBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ25ELENBQUMsQ0FDSixDQUFDO2FBQ0w7U0FDSjtRQUVELElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDZixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ3JEO0lBQ0wsQ0FBQzs7QUE5Y00sb0RBQTJCLEdBQzlCLHVDQUF1QyxDQUFDO3FIQUZuQyx3QkFBd0I7eUdBQXhCLHdCQUF3QixxTkFIdEIsQ0FBQyxzQkFBc0IsQ0FBQyx5UkFvQkwsZ0JBQWdCLG1HQUNiLGdCQUFnQiwwTkFHTixXQUFXLDBEQUczQyx3QkFBd0IsZ0RDdEV2Qyw0bktBd0dVOzJGRDFERyx3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0ksbUJBQW1CLGFBR2xCLENBQUMsc0JBQXNCLENBQUMsbUJBQ2xCLHVCQUF1QixDQUFDLE1BQU07a05BUXRDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdOLHVCQUF1QjtzQkFEdEIsTUFBTTtnQkFHUCxzQkFBc0I7c0JBRHJCLE1BQU07Z0JBR2EsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNTLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFFeUIsT0FBTztzQkFBeEQsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRWhELFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRXRCLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUUzQixvQkFBb0I7c0JBRG5CLFNBQVM7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUl4RCxVQUFVO3NCQURULFNBQVM7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIFZpZXdDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGVwSW50ZXJuYWxQYWdlU2VydmljZSB9IGZyb20gJy4vaW50ZXJuYWwtcGFnZS5zZXJ2aWNlJztcblxuaW1wb3J0IHtcbiAgICBQZXBMYXlvdXRUeXBlLFxuICAgIFVJQ29udHJvbCxcbiAgICBLZXlWYWx1ZVBhaXIsXG4gICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgVUlDb250cm9sRmllbGQsXG4gICAgT2JqZWN0c0RhdGEsXG4gICAgRklFTERfVFlQRSxcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHtcbiAgICBQZXBJbnRlcm5hbExpc3RDb21wb25lbnQsXG4gICAgUGVwTGlzdFZpZXdUeXBlLFxufSBmcm9tICcuL2ludGVybmFsLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgSVBlcEZvcm1GaWVsZENsaWNrRXZlbnQsXG4gICAgSVBlcEZvcm1GaWVsZFZhbHVlQ2hhbmdlRXZlbnQsXG59IGZyb20gJy4vZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBQZXBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZGlhbG9nJztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUGVwUXVhbnRpdHlTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3F1YW50aXR5LXNlbGVjdG9yJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtaW50ZXJuYWwtcGFnZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ludGVybmFsLXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ludGVybmFsLXBhZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtQZXBJbnRlcm5hbFBhZ2VTZXJ2aWNlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUGVwSW50ZXJuYWxQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHN0YXRpYyBDVVJSRU5UX0FERElUSU9OQUxfQVBJX05BTUUgPVxuICAgICAgICAnaXRlbV9kZXRhaWxzX2N1cnJlbnRBZGRpdGlvbmFsQXBpTmFtZSc7XG5cbiAgICBjb250cm9sVHlwZSA9ICdpbnRlcm5hbFBhZ2UnO1xuXG4gICAgQElucHV0KCkgZmllbGQ6IGFueTtcbiAgICBASW5wdXQoKSBsYXlvdXRUeXBlOiBQZXBMYXlvdXRUeXBlID0gJ2Zvcm0nO1xuXG4gICAgQE91dHB1dCgpXG4gICAgaW50ZXJuYWxGb3JtRmllbGRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpXG4gICAgaW50ZXJuYWxGb3JtRmllbGRDbGljazogRXZlbnRFbWl0dGVyPElQZXBGb3JtRmllbGRDbGlja0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcEZvcm1GaWVsZENsaWNrRXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdteTFtbScpIG15MW1tOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ21haW5WaWV3Q29udCcpIG1haW5WaWV3Q29udDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ29yZ0NvbnQnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgb3JnQ29udDogVmlld0NvbnRhaW5lclJlZjtcbiAgICBAVmlld0NoaWxkKCdkaWFsb2dDb250JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXG4gICAgZGlhbG9nQ29udDogVmlld0NvbnRhaW5lclJlZjtcbiAgICBAVmlld0NoaWxkKCdtYXRyaXhUZW1wbGF0ZScpIG1hdHJpeFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBWaWV3Q2hpbGQoJ21hdHJpeERpYWxvZ1RlbXBsYXRlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICAgIG1hdHJpeERpYWxvZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZChQZXBJbnRlcm5hbExpc3RDb21wb25lbnQpXG4gICAgY3VzdG9tTGlzdDogUGVwSW50ZXJuYWxMaXN0Q29tcG9uZW50O1xuXG4gICAgcmVzaXplOiBhbnk7XG4gICAgY2hlY2tGb3JDaGFuZ2VzOiBhbnkgPSBudWxsO1xuXG4gICAgY2hpbGREYXRhOiBhbnkgPSBudWxsO1xuXG4gICAgZW1wdHlGb3JtOiBGb3JtR3JvdXA7XG4gICAgdWlDb250cm9sOiBVSUNvbnRyb2w7XG4gICAgcm93czogYW55O1xuICAgIGxpbmVWaWV3Um93czogYW55O1xuICAgIHRvdGFsc1JvdzogYW55ID0gW107XG4gICAgYWRkaXRpb25hbEFwaU5hbWVzOiBhbnkgPSBudWxsO1xuICAgIGN1cnJlbnRBZGRpdGlvbmFsQXBpTmFtZTogYW55ID0gbnVsbDtcbiAgICBmb2N1c2VkUVMgPSBmYWxzZTtcbiAgICBmaWVsZElkV2l0aEZvY3VzID0gJyc7XG4gICAgY29sdW1uV2lkdGggPSAxMDA7XG4gICAgY292ZXJDaGlsZFRhYmxlID0gZmFsc2U7XG4gICAgY2hpbGRWaWV3VHlwZXM6IEFycmF5PEtleVZhbHVlUGFpcjxzdHJpbmc+PjtcbiAgICBjdXJyZW50Vmlld1R5cGU6IEtleVZhbHVlUGFpcjxzdHJpbmc+ID0gbnVsbDtcbiAgICBjdXJyZW50Vmlld1R5cGVUaXRsZTogc3RyaW5nO1xuICAgIHN1bU9mTWluQ29sV2lkdGggPSAwO1xuICAgIHRvdGFsUm93c1dpZHRoID0gMDtcbiAgICB2aWV3V2lkdGggPSAnMTAwJSc7XG4gICAgdmlld0hlaWdodCA9ICdhdXRvJztcbiAgICBkaXNwbGF5UVNidG5zID0gdHJ1ZTtcbiAgICBzZWxlY3RlZEFwaU5hbWUgPSAnJztcbiAgICBzaG93U29ydCA9IGZhbHNlO1xuICAgIGRlZmF1bHRSb3dTcGFuID0gLTE7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBQZXBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGludGVybmFsUGFnZVNlcnZpY2U6IFBlcEludGVybmFsUGFnZVNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBjdXN0b21pemF0aW9uU2VydmljZTogUGVwQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7IH1cblxuICAgIHByaXZhdGUgZmlsbERhdGEoaXNJbkRpYWxvZyA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLm1hdHJpeFRlbXBsYXRlLmNyZWF0ZUVtYmVkZGVkVmlldyhudWxsKTtcblxuICAgICAgICB0aGlzLmN1c3RvbUxpc3Q/LmNsZWFyKCk7XG4gICAgICAgIHRoaXMub3JnQ29udD8uY2xlYXIoKTtcblxuICAgICAgICBpZiAoaXNJbkRpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dDb250Py5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dDb250Py5pbnNlcnQodmlldyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9yZ0NvbnQ/Lmluc2VydCh2aWV3KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgdmlld1R5cGU6IFBlcExpc3RWaWV3VHlwZSA9IHRoaXMuaXNUYWJsZVZpZXcoKVxuICAgICAgICAgICAgICAgID8gJ3RhYmxlJ1xuICAgICAgICAgICAgICAgIDogJ2xpbmVzJztcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tTGlzdC5pbml0TGlzdERhdGEoXG4gICAgICAgICAgICAgICAgdGhpcy51aUNvbnRyb2wsXG4gICAgICAgICAgICAgICAgdGhpcy5jaGlsZERhdGEuVG90YWxSb3dzLFxuICAgICAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhLlJvd3MsXG4gICAgICAgICAgICAgICAgdmlld1R5cGVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnNldFRvdGFsc1JvdygpO1xuXG4gICAgICAgICAgICAvLyBpZiAoIXRoaXMuY2hpbGRNb2RhbC5pc1Nob3duKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbkNvdW50ID0gdGhpcy5jaGlsZERhdGEuUm93c1xuICAgICAgICAgICAgICAgID8gdGhpcy5jaGlsZERhdGEuUm93cy5sZW5ndGhcbiAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgICAgICBjb25zdCBpc0V2ZW4gPSBjaGlsZHJlbkNvdW50ICUgMiA9PT0gMDtcbiAgICAgICAgICAgIC8vIDMgZm9yIG1hdHJpeCAmIGZsYXQgbWF0cml4IGJlY2F1c2UgdGhlIGhlYWRlciArIHRvdGFsIGlzIDIgbW9yZSByb3dzLlxuICAgICAgICAgICAgY29uc3Qgcm93c1RvQWRkID1cbiAgICAgICAgICAgICAgICB0aGlzLmlzTWF0cml4VmlldygpIHx8IHRoaXMuaXNGbGF0TWF0cml4VmlldygpXG4gICAgICAgICAgICAgICAgICAgID8gaXNFdmVuXG4gICAgICAgICAgICAgICAgICAgICAgICA/IDNcbiAgICAgICAgICAgICAgICAgICAgICAgIDogNFxuICAgICAgICAgICAgICAgICAgICA6IDE7XG5cbiAgICAgICAgICAgIGNvbnN0IGZvcm1Sb3dIZWlnaHQgPVxuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UuY2FsY3VsYXRlRm9ybUZpZWxkSGVpZ2h0KCkgKiAxNjsgLy8gY29udmVydCByZW0gdG8gcGl4ZWxcblxuICAgICAgICAgICAgLy8gU2V0IHRoZSBkZWZhdWx0IG9ubHkgaWYgbm90IHNldCB5ZXQuXG4gICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0Um93U3BhbiA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRSb3dTcGFuID0gdGhpcy5maWVsZC5yb3dTcGFuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnN1bU9mTWluQ29sV2lkdGggPSAwO1xuICAgICAgICAgICAgdGhpcy50b3RhbFJvd3NXaWR0aCA9IDA7XG5cbiAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhLlVJQ29udHJvbC5Db250cm9sRmllbGRzLmZvckVhY2goXG4gICAgICAgICAgICAgICAgKHVpQ29udHJvbEZpZWxkOiBVSUNvbnRyb2xGaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdGFsUm93c1dpZHRoICs9IHVpQ29udHJvbEZpZWxkLkNvbHVtbldpZHRoO1xuICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xGaWVsZC5taW5GaWVsZFdpZHRoID0gdGhpcy5tbVRvUHgoMTIpOyAvLyBORUVEIFRPIEdFVCBUSElTIFBBUkFNIEZST00gQ1VTVE9NSVpBVElPTjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdW1PZk1pbkNvbFdpZHRoICs9IDEyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0Vmlld0NvdmVyKHRoaXMuY2hpbGREYXRhLlJvd3MpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jb3ZlckNoaWxkVGFibGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLnJvd1NwYW4gPSB0aGlzLmRlZmF1bHRSb3dTcGFuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBGb3IgbGluZSB2aWV3IEFkZCB0aGUgaGVpZ2h0IG9mIHRoZSBsaW5lIChmb3JtIGhlaWdodCkuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFZpZXdUeXBlLktleSA9PT0gJ09yZGVyQ2VudGVyRmxhdE1hdHJpeExpbmUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heFJvdyA9IE1hdGgubWF4KFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy51aUNvbnRyb2wuQ29udHJvbEZpZWxkcy5tYXAoKGYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZi5MYXlvdXQuWSArIGYuTGF5b3V0LkhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gKiAxNiBjb252ZXJ0IHJlbSB0byBwaXhlbFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYXJkUm93c0hlaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmNhbGN1bGF0ZUNhcmRSb3dzSGVpZ2h0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgKSAqIDE2O1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIG1heFJvdyAqIDI0ICsgNjAgLSAyNCBmb3IgZWFjaCByb3cgaW4gY2FyZCArIDYwIGZvciB0aGUgcGFkZGluZyBvZiBlYWNoIGNhcmQuXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IHJvd1NwYW5Ub0FkZCA9IE1hdGguZmxvb3IoY2hpbGRyZW5Db3VudCAqICgoY2FyZFJvd3NIZWlnaHQgKyAzMikgLyBmb3JtUm93SGVpZ2h0KSArIHJvd3NUb0FkZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvd1NwYW5Ub0FkZCA9IE1hdGguZmxvb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hpbGRyZW5Db3VudCAqIChjYXJkUm93c0hlaWdodCArIDMyKSkgL1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybVJvd0hlaWdodCArXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dzVG9BZGQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLnJvd1NwYW4gPSByb3dTcGFuVG9BZGQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc3QgdGFibGVSb3dzSGVpZ2h0ID0gdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5jYWxjdWxhdGVUYWJsZVJvd3NIZWlnaHQoY2hpbGRyZW5Db3VudCkgKiAxNjtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5maWVsZC5yb3dTcGFuID0gTWF0aC5jZWlsKCh0YWJsZVJvd3NIZWlnaHQgKyAocm93c1RvQWRkICogNDApKSAvIGZvcm1Sb3dIZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICAvLyAqIDE2IGNvbnZlcnQgcmVtIHRvIHBpeGVsXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvd3NUb0FkZEhlaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmNhbGN1bGF0ZVRhYmxlUm93c0hlaWdodChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzVG9BZGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICkgKiAxNjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFibGVSb3dzSGVpZ2h0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UuY2FsY3VsYXRlVGFibGVSb3dzSGVpZ2h0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuQ291bnRcbiAgICAgICAgICAgICAgICAgICAgICAgICkgKiAxNjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5yb3dTcGFuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChyb3dzVG9BZGRIZWlnaHQgKyB0YWJsZVJvd3NIZWlnaHQpIC8gZm9ybVJvd0hlaWdodDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaWxsQ2hpbGREYXRhKHJlczogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpbGREYXRhID0gcmVzO1xuICAgICAgICB0aGlzLnVpQ29udHJvbCA9IHJlcy5VSUNvbnRyb2w7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbEFwaU5hbWVzID0gcmVzLkFkZGl0aW9uYWxBcGlOYW1lcztcblxuICAgICAgICB0aGlzLmZpbGxEYXRhKCk7XG4gICAgfVxuXG4gICAgbW1Ub1B4KG1tKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5teTFtbS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobW0gKiBoZWlnaHQpOyAvLyByZXR1cm5zIHNpemVzIGluIFBYXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc01hdHJpeFZpZXcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3VHlwZSAmJlxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGUuS2V5ID09PSAnT3JkZXJDZW50ZXJNYXRyaXgnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZsYXRNYXRyaXhWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGUgJiZcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlLktleSA9PT0gJ09yZGVyQ2VudGVyRmxhdE1hdHJpeEdyaWQnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaXNUYWJsZVZpZXcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTWF0cml4VmlldygpIHx8IHRoaXMuaXNGbGF0TWF0cml4VmlldygpO1xuICAgIH1cblxuICAgIGNoYW5nZUNoaWxkcmVuVmlld1R5cGUodmlld1R5cGVLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvd3MgPSBbXTtcbiAgICAgICAgdGhpcy51aUNvbnRyb2wgPSBudWxsO1xuXG4gICAgICAgIGZvciAoY29uc3QgdnQgb2YgdGhpcy5jaGlsZFZpZXdUeXBlcykge1xuICAgICAgICAgICAgaWYgKHZ0LktleSA9PT0gdmlld1R5cGVLZXkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3VHlwZSA9IHZ0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGVUaXRsZSA9IHRoaXMuY3VycmVudFZpZXdUeXBlLlZhbHVlO1xuXG4gICAgICAgIHRoaXMuaW50ZXJuYWxQYWdlU2VydmljZS5jaGFuZ2VDaGlsZHJlblZpZXdUeXBlKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGUuS2V5LFxuICAgICAgICAgICAgKHJlczogT2JqZWN0c0RhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLlJvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxsQ2hpbGREYXRhKHJlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHNldFZpZXdDb3Zlcihyb3dzKTogdm9pZCB7XG4gICAgICAgIGlmICghcm93cykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWF0cml4Q29udCA9IHRoaXMubWFpblZpZXdDb250Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHZpZXdXaWR0aCA9IG1hdHJpeENvbnQuY2xpZW50V2lkdGg7XG5cbiAgICAgICAgdGhpcy52aWV3V2lkdGggPSB2aWV3V2lkdGggPyB2aWV3V2lkdGgudG9TdHJpbmcoKSA6ICcxMDAlJztcblxuICAgICAgICAvLyBpZiB0aGUgbWF0cml4IGxvY2F0ZWQgb24gdGhlIGJvdHRvbSAvIHRoZXJlIGlzIG5vdGhpbmcgdW5kZXIgdGhlIG1hdHJpeCB3ZSBkb250IG5lZWQgdG8gY2hlY2sgdGhlIGhlaWdodFxuICAgICAgICBpZiAocGFyc2VJbnQodmlld1dpZHRoLCAxMCkgPCB0aGlzLm1tVG9QeCh0aGlzLnN1bU9mTWluQ29sV2lkdGgpKSB7XG4gICAgICAgICAgICB0aGlzLmNvdmVyQ2hpbGRUYWJsZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvdmVyQ2hpbGRUYWJsZSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBzaG93TWF0cml4RGlhbG9nKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0RGlhbG9nQ29uZmlnKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRpc2FibGVDbG9zZTogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ2xhcmdlJ1xuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuRGlhbG9nKFxuICAgICAgICAgICAgdGhpcy5tYXRyaXhEaWFsb2dUZW1wbGF0ZSxcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgY29uZmlnXG4gICAgICAgICk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyT3BlbmVkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmlsbERhdGEodHJ1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmlsbERhdGEoZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gbGV0IGZpZWxkID0gdGhpcy5maWVsZCBhcyBQZXBJbnRlcm5hbFBhZ2VGaWVsZDtcblxuICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuaW5pdERldGFpbHMoXG4gICAgICAgICAgICB0aGlzLmZpZWxkLm9iamVjdElkLFxuICAgICAgICAgICAgdGhpcy5maWVsZC5wYXJlbnRJZCxcbiAgICAgICAgICAgIHRoaXMuZmllbGQuc2VhcmNoQ29kZSxcbiAgICAgICAgICAgIChyZXNWaWV3VHlwZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIG15IGNvZGUgREktNzEzNFxuICAgICAgICAgICAgICAgIHJlc1ZpZXdUeXBlcy5Sb3dzID0gcmVzVmlld1R5cGVzLlJvd3MuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5LZXkgIT09ICdPcmRlckNlbnRlclZpZXcxJ1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVzVmlld1R5cGVzLlJvd3MgJiYgcmVzVmlld1R5cGVzLlJvd3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc1ZpZXdUeXBlcy5EZWZhdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNWaWV3VHlwZXMuRGVmYXVsdCA9IHJlc1ZpZXdUeXBlcy5Sb3dzWzBdLktleTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoaWxkVmlld1R5cGVzID0gcmVzVmlld1R5cGVzLlJvd3M7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlID0gcmVzVmlld1R5cGVzLlJvd3NbMF07XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gZm9yICh2YXIgaSA9IDA7IGkgPCByZXNWaWV3VHlwZXMuUm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHZpZXdUeXBlUm93IG9mIHJlc1ZpZXdUeXBlcy5Sb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmlld1R5cGVSb3cuVmFsdWUgPT09IHJlc1ZpZXdUeXBlcy5EZWZhdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGUgPSB2aWV3VHlwZVJvdztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZExhc3RBZGRpdGlvbmFsQXBpTmFtZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUNoaWxkcmVuVmlld1R5cGUodGhpcy5jdXJyZW50Vmlld1R5cGUuS2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5yZXNpemUgPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Vmlld0NvdmVyKHRoaXMucm93cyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBsb2FkTGFzdEFkZGl0aW9uYWxBcGlOYW1lKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkYWEgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFxuICAgICAgICAgICAgUGVwSW50ZXJuYWxQYWdlQ29tcG9uZW50LkNVUlJFTlRfQURESVRJT05BTF9BUElfTkFNRVxuICAgICAgICApO1xuICAgICAgICBpZiAoZGFhICYmIGRhYS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsQXBpTmFtZSA9IEpTT04ucGFyc2UoZGFhKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEFkZGl0aW9uYWxBcGlOYW1lID0gYWRkaXRpb25hbEFwaU5hbWU7XG4gICAgICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuYWRkaXRpb25hbEFwaU5hbWUgPSBhZGRpdGlvbmFsQXBpTmFtZT8uS2V5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlc2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5yZXNpemUudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZUFkZGl0aW9uYWxBcGlOYW1lKGFkZGl0aW9uYWxBcGlOYW1lKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxQYWdlU2VydmljZS5jaGFuZ2VBZGRpdGlvbmFsQXBpTmFtZShcbiAgICAgICAgICAgIGFkZGl0aW9uYWxBcGlOYW1lID8gYWRkaXRpb25hbEFwaU5hbWUuS2V5IDogJycsXG4gICAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcmVzLlJvd3MubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgcmVzLlJvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDaGFuZ2VzKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgICAgICAgUGVwSW50ZXJuYWxQYWdlQ29tcG9uZW50LkNVUlJFTlRfQURESVRJT05BTF9BUElfTkFNRSxcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFkZGl0aW9uYWxBcGlOYW1lKVxuICAgICAgICApO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QWRkaXRpb25hbEFwaU5hbWUgPSBhZGRpdGlvbmFsQXBpTmFtZTtcbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgc2V0VG90YWxzUm93KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRvdGFsc1JvdyA9IFtdO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTWF0cml4VmlldygpIHx8IHRoaXMuaXNGbGF0TWF0cml4VmlldygpKSB7XG4gICAgICAgICAgICBsZXQgdG90YWxDb2wgPSAwO1xuXG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuY3VzdG9tTGlzdC5pdGVtcztcbiAgICAgICAgICAgIGlmIChpdGVtcykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGNvbCA9IDA7IGNvbCA8IGl0ZW1zWzBdLkZpZWxkcy5sZW5ndGg7IGNvbCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gaXRlbXNbMF0uRmllbGRzW2NvbF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLkZpZWxkVHlwZSA9PT0gRklFTERfVFlQRS5OdW1iZXJJbnRlZ2VyRm9yTWF0cml4IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICBGSUVMRF9UWVBFLk51bWJlckludGVnZXJRdWFudGl0eVNlbGVjdG9yIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09IEZJRUxEX1RZUEUuTnVtYmVyUmVhbEZvck1hdHJpeCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuRmllbGRUeXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgRklFTERfVFlQRS5OdW1iZXJSZWFsUXVhbnRpdHlTZWxlY3RvciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuRmllbGRUeXBlID09PSBGSUVMRF9UWVBFLkNhbGN1bGF0ZWRJbnQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLkZpZWxkVHlwZSA9PT0gRklFTERfVFlQRS5OdW1iZXJJbnRlZ2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09IEZJRUxEX1RZUEUuQ2FsY3VsYXRlZFJlYWwgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLkZpZWxkVHlwZSA9PT0gRklFTERfVFlQRS5OdW1iZXJSZWFsXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxDb2wgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBsaXN0SXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdEl0ZW0uRmllbGRzW2NvbF0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdEl0ZW0uRmllbGRzW2NvbF0uVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtID0gcGFyc2VGbG9hdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtLkZpZWxkc1tjb2xdLlZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ29sICs9IGlzTmFOKG51bSkgPyAwIDogbnVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG90YWxzUm93LnB1c2godG90YWxDb2wpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbHNSb3cucHVzaCgnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVDaGFuZ2VzKGVsZW1lbnRUb1VwZGF0ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VzdG9tTGlzdC51cGRhdGVJdGVtKGVsZW1lbnRUb1VwZGF0ZSk7XG5cbiAgICAgICAgLy8gVXBkYXRlIG1lbW9yeSBkYXRhXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmNoaWxkRGF0YS5Sb3dzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2hpbGREYXRhLlJvd3NbaW5kZXhdLlVJRCA9PT0gZWxlbWVudFRvVXBkYXRlLlVJRCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhLlJvd3NbaW5kZXhdID0gZWxlbWVudFRvVXBkYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0VmFsdWVDYWxsYmFjayhpZDogYW55LCByZXM6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAocmVzLlJvd3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZCA9IHJlcy5Sb3dzWzBdLkZpZWxkcy5maW5kKChmKSA9PiBmLkFwaU5hbWUgPT09ICdPYmplY3RNZW51Jyk7XG4gICAgICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgICAgICAvLyBIQUNLIDogVW50aWwgXCJFbmFibGVkXCIgcmV0dXJucyBmcm9tIHRoZSBzZXJ2ZXIsIHdlIHNldCBQZXBNZW51IHRvIGJlXG4gICAgICAgICAgICAgICAgLy8gICAgICAgIERpc2FibGVkIGluIGNhcnQgb24gcmVndWxhciBpdGVtcyBhbmQgbm90IGNhbXBpZ24gaXRlbXMuXG4gICAgICAgICAgICAgICAgZmllbGQuRW5hYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhbmdlcyhyZXMuUm93c1swXSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFRvdGFsc1JvdygpO1xuICAgICAgICB0aGlzLmNoZWNrRm9yQ2hhbmdlcyA9IG5ldyBEYXRlKCk7XG5cbiAgICAgICAgLy8gREktMTU5ODVcbiAgICAgICAgdGhpcy5pbnRlcm5hbEZvcm1GaWVsZENoYW5nZS5lbWl0KHJlcyk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvbkN1c3RvbWl6ZU9iamVjdENoYW5nZWQoXG4gICAgICAgIGN1c3RvbWl6ZU9iamVjdENoYW5nZWREYXRhOiBJUGVwRm9ybUZpZWxkVmFsdWVDaGFuZ2VFdmVudFxuICAgICk6IHZvaWQge1xuICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuY2hpbGRWYWx1ZUNoYW5nZWQoXG4gICAgICAgICAgICBjdXN0b21pemVPYmplY3RDaGFuZ2VkRGF0YS5pZCxcbiAgICAgICAgICAgIGN1c3RvbWl6ZU9iamVjdENoYW5nZWREYXRhLmtleSxcbiAgICAgICAgICAgIGN1c3RvbWl6ZU9iamVjdENoYW5nZWREYXRhLnZhbHVlLFxuICAgICAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUNhbGxiYWNrKGN1c3RvbWl6ZU9iamVjdENoYW5nZWREYXRhLmlkLCByZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG9uQ3VzdG9taXplRmllbGRDbGljayhmaWVsZENsaWNrRXZlbnQ6IElQZXBGb3JtRmllbGRDbGlja0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGxldCBoYW5kbGVkRXZlbnQgPSBmYWxzZTtcblxuICAgICAgICAvLyBGb3IgdGhlIG5ldyBjdXN0b20gZm9ybSwgdGhlIHBsdXMgYW5kIG1pbnVzIGV2ZW50cyB0cmFuc2Zvcm0gaW4gdGhlIElQZXBGb3JtRmllbGRWYWx1ZUNoYW5nZUV2ZW50XG4gICAgICAgIGlmIChmaWVsZENsaWNrRXZlbnQuY29udHJvbFR5cGUgPT09ICdxcycpIHtcbiAgICAgICAgICAgIGlmIChmaWVsZENsaWNrRXZlbnQudmFsdWUgPT09IFBlcFF1YW50aXR5U2VsZWN0b3JDb21wb25lbnQuUExVUykge1xuICAgICAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmNoaWxkUGx1c0NsaWNrKFxuICAgICAgICAgICAgICAgICAgICBmaWVsZENsaWNrRXZlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkQ2xpY2tFdmVudC5rZXksXG4gICAgICAgICAgICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUNhbGxiYWNrKGZpZWxkQ2xpY2tFdmVudC5pZCwgcmVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIGZpZWxkQ2xpY2tFdmVudC52YWx1ZSA9PT0gUGVwUXVhbnRpdHlTZWxlY3RvckNvbXBvbmVudC5NSU5VU1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlZEV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuY2hpbGRNaW51c0NsaWNrKFxuICAgICAgICAgICAgICAgICAgICBmaWVsZENsaWNrRXZlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkQ2xpY2tFdmVudC5rZXksXG4gICAgICAgICAgICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUNhbGxiYWNrKGZpZWxkQ2xpY2tFdmVudC5pZCwgcmVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWhhbmRsZWRFdmVudCkge1xuICAgICAgICAgICAgdGhpcy5pbnRlcm5hbEZvcm1GaWVsZENsaWNrLmVtaXQoZmllbGRDbGlja0V2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjbWF0cml4SGVhZGVyVGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cIm1hdHJpeC10aXRsZS1jb250YWluZXIgcGVwLWJvcmRlci1ib3R0b20gYWxpZ24te3tcbiAgICAgICAgICAgIGZpZWxkLnhBbGlnbm1lbnRcbiAgICAgICAgfX1cIiB0aXRsZT1cInt7IGZpZWxkLmxhYmVsIH19XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYmxvY2std2l0aC10ZXh0IGJvZHktbWRcIj57eyBmaWVsZC5sYWJlbCB9fTwvc3Bhbj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1jb250YWluZXIgcGVwLXNwYWNpbmctZWxlbWVudC1uZWdhdGl2ZSBwdWxsLXJpZ2h0IGZsaXBcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFZpZXdUeXBlPy5LZXkgPT0gJ09yZGVyQ2VudGVyTWF0cml4JyAmJlxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsQXBpTmFtZXMgJiZcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEFwaU5hbWVzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGVwLXNwYWNpbmctZWxlbWVudCBwZXAtYnV0dG9uIGljb24tYnV0dG9uIHNtIHdlYWtcIiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcbiAgICAgICAgICAgICAgICAgICAgbWVudS1ibHVyPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInB1bGwtbGVmdCBmbGlwXCIgKm5nSWY9XCJjdXJyZW50QWRkaXRpb25hbEFwaU5hbWVcIj4mbmJzcDt7e1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEFkZGl0aW9uYWxBcGlOYW1lPy5WYWx1ZSB9fSZuYnNwOzwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gW25nQ2xhc3NdPVwieydwdWxsLWxlZnQgZmxpcCc6IGN1cnJlbnRBZGRpdGlvbmFsQXBpTmFtZX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwZXAtaWNvbiBuYW1lPVwic3lzdGVtX2luZm9cIj48L3BlcC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogY3VycmVudEFkZGl0aW9uYWxBcGlOYW1lID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCIgKGNsaWNrKT1cImNoYW5nZUFkZGl0aW9uYWxBcGlOYW1lKG51bGwpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBcIkxJU1QuTk9ORVwiIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEFkZGl0aW9uYWxBcGlOYW1lPy5LZXkgPT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEFwaU5hbWU/LktleVxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiICpuZ0Zvcj1cImxldCBhZGRpdGlvbmFsQXBpTmFtZSBvZiBhZGRpdGlvbmFsQXBpTmFtZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZUFkZGl0aW9uYWxBcGlOYW1lKGFkZGl0aW9uYWxBcGlOYW1lKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYWRkaXRpb25hbEFwaU5hbWUuVmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGlsZFZpZXdUeXBlcyAmJiBjaGlsZFZpZXdUeXBlcy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBlcC1zcGFjaW5nLWVsZW1lbnQgcGVwLWJ1dHRvbiBpY29uLWJ1dHRvbiBzbSB3ZWFrXCIgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwidmlld3NNZW51XCIgbWVudS1ibHVyPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGVwLWljb24gbmFtZT1cInZpZXdfY2FyZF9tZFwiPjwvcGVwLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI3ZpZXdzTWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogY3VycmVudFZpZXdUeXBlPy5LZXkgPT0gdmlld1R5cGU/LktleVxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiICpuZ0Zvcj1cImxldCB2aWV3VHlwZSBvZiBjaGlsZFZpZXdUeXBlc1wiIChjbGljayk9XCJjaGFuZ2VDaGlsZHJlblZpZXdUeXBlKHZpZXdUeXBlPy5LZXkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gW25nU3dpdGNoXT1cInZpZXdUeXBlPy5LZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGVwLWljb24gKm5nU3dpdGNoQ2FzZT1cIidPcmRlckNlbnRlck1hdHJpeCdcIiBuYW1lPVwidmlld19tYXRyaXhcIj48L3BlcC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwZXAtaWNvbiAqbmdTd2l0Y2hDYXNlPVwiJ09yZGVyQ2VudGVyRmxhdE1hdHJpeEdyaWQnXCIgbmFtZT1cInZpZXdfdGFibGVcIj48L3BlcC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwZXAtaWNvbiAqbmdTd2l0Y2hDYXNlPVwiJ09yZGVyQ2VudGVyRmxhdE1hdHJpeExpbmUnXCIgbmFtZT1cInZpZXdfbGluZVwiPjwvcGVwLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdmlld1R5cGU/LlZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21hdHJpeFRlbXBsYXRlPlxuICAgIDxkaXYgI21hdHJpeENvbnRhaW5lciBjbGFzcz1cIm1hdHJpeC1jb250YWluZXJcIj5cbiAgICAgICAgPHBlcC1pbnRlcm5hbC1saXN0ICh2YWx1ZUNoYW5nZSk9XCJvbkN1c3RvbWl6ZU9iamVjdENoYW5nZWQoJGV2ZW50KVwiIFtwYXJlbnRTY3JvbGxdPVwibWF0cml4Q29udGFpbmVyXCJcbiAgICAgICAgICAgIChmaWVsZENsaWNrKT1cIm9uQ3VzdG9taXplRmllbGRDbGljaygkZXZlbnQpXCIgW3RvdGFsc1Jvd109XCJ0b3RhbHNSb3dcIj48L3BlcC1pbnRlcm5hbC1saXN0PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPGRpdiAjbWFpblZpZXdDb250IGlkPVwibWFpblZpZXdDb250XCIgW25nU3R5bGVdPVwieyAnbWF4LXdpZHRoJzogdmlld1dpZHRoLCAnbWF4LWhlaWdodCc6IHZpZXdIZWlnaHQgfVwiPlxuICAgIDxkaXYgI215MW1tIGlkPVwibXkxX21tXCIgc3R5bGU9XCJoZWlnaHQ6MW1tO3dpZHRoOjFtbTt2aXNpYmlsaXR5OiBoaWRkZW47XCI+PC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvdmVyQ2hpbGRUYWJsZSAmJiB1aUNvbnRyb2wgIT0gbnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY292ZXJcIj48L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic2hvd01hdHJpeERpYWxvZygpXCIgY2xhc3M9XCJwZXAtYnV0dG9uIHN0cm9uZyBzbSB0YWJsZS1jb3Zlci1idXR0b25cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnbGluZXZpZXctYnRuJzogY3VycmVudFZpZXdUeXBlPy5LZXkgPT0gJ09yZGVyQ2VudGVyRmxhdE1hdHJpeExpbmUnfVwiPlxuICAgICAgICAgICAge3sgXCJJTlRFUk5BTF9QQUdFLkNMSUNLX1RPX09SREVSXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0cml4SGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICNvcmdDb250PjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbWF0cml4RGlhbG9nVGVtcGxhdGU+XG5cbiAgICA8ZGl2IG1hdC1kaWFsb2ctdGl0bGU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRyaXhIZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAgICAgIDxuZy1jb250YWluZXIgI2RpYWxvZ0NvbnQ+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIDxkaXYgaWQ9XCJjaGlsZEdyaWRNb2RhbFwiIGJzTW9kYWwgKG9uU2hvd24pPVwib25TaG93bigpXCIgKG9uSGlkZGVuKT1cIm9uSGlkZGVuKClcIiAjY2hpbGRNb2RhbD1cImJzLW1vZGFsXCIgY2xhc3M9XCJtb2RhbFwiXG4gICAgdGFiaW5kZXg9XCItMVwiIHJvbGU9XCJkaWFsb2dcIiBhcmlhLWxhYmVsbGVkYnk9XCJncmlkTW9kYWxMYWJlbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2dcIiByb2xlPVwiZG9jdW1lbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IG1hdHJpeC1kaWFsb2ctYm9keVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgI21vZGFsQ29udD48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiAtLT4iXX0=
@@ -2339,11 +2339,10 @@ class PepInternalPageComponent {
2339
2339
  // * 16 convert rem to pixel
2340
2340
  const cardRowsHeight = this.customizationService.calculateCardRowsHeight(maxRow) * 16;
2341
2341
  // maxRow * 24 + 60 - 24 for each row in card + 60 for the padding of each card.
2342
- // const rowSpanToAdd = Math.floor(childrenCount * ((cardRowsHeight + 56) / formRowHeight) + rowsToAdd);
2343
- // + 16 is the 1rem margin outside card.
2344
- const rowSpanToAdd = (childrenCount * (cardRowsHeight + 16)) /
2342
+ // const rowSpanToAdd = Math.floor(childrenCount * ((cardRowsHeight + 32) / formRowHeight) + rowsToAdd);
2343
+ const rowSpanToAdd = Math.floor((childrenCount * (cardRowsHeight + 32)) /
2345
2344
  formRowHeight +
2346
- rowsToAdd;
2345
+ rowsToAdd);
2347
2346
  this.field.rowSpan = rowSpanToAdd;
2348
2347
  }
2349
2348
  else {