@worktile/theia 14.2.19 → 14.2.21

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.
Files changed (61) hide show
  1. package/esm2020/components/action/prevent-default.mjs +4 -4
  2. package/esm2020/components/color-select/color-select.component.mjs +4 -4
  3. package/esm2020/components/column-resize/column-resize-notifier.mjs +4 -4
  4. package/esm2020/components/column-resize/column-resize.directive.mjs +4 -4
  5. package/esm2020/components/column-resize/column-resize.module.mjs +9 -9
  6. package/esm2020/components/column-resize/event-dispatcher.mjs +4 -4
  7. package/esm2020/components/column-resize/overlay-handle.component.mjs +4 -4
  8. package/esm2020/components/column-resize/resizing.store.mjs +4 -4
  9. package/esm2020/components/contextmenu/contextmenu.component.mjs +4 -4
  10. package/esm2020/components/conversion-hint/conversion-hint.component.mjs +4 -4
  11. package/esm2020/components/element/element.component.mjs +4 -4
  12. package/esm2020/components/inline-toolbar/inline-toolbar.component.mjs +4 -4
  13. package/esm2020/components/listbox/listbox.mjs +10 -10
  14. package/esm2020/components/plugin-menu/plugin-menu.component.mjs +4 -4
  15. package/esm2020/components/table-select/table-select.component.mjs +4 -4
  16. package/esm2020/components/template/template.component.mjs +4 -4
  17. package/esm2020/components/text/text.component.mjs +4 -4
  18. package/esm2020/components/toolbar/toolbar.component.mjs +4 -4
  19. package/esm2020/components/toolbar-dropdown/toolbar-dropdown.component.mjs +4 -4
  20. package/esm2020/components/toolbar-group/toolbar-group.component.mjs +4 -4
  21. package/esm2020/components/toolbar-item/toolbar-item.component.mjs +4 -4
  22. package/esm2020/core/toolbar-item/base-toolbar-item.mjs +7 -7
  23. package/esm2020/editor.component.mjs +4 -4
  24. package/esm2020/editor.module.mjs +5 -5
  25. package/esm2020/interfaces/view-base.mjs +4 -4
  26. package/esm2020/pipes.mjs +7 -7
  27. package/esm2020/plugins/blockquote/blockquote.component.mjs +4 -4
  28. package/esm2020/plugins/code/code.component.mjs +4 -4
  29. package/esm2020/plugins/color/toolbar-item.component.mjs +4 -4
  30. package/esm2020/plugins/hr/hr.component.mjs +4 -4
  31. package/esm2020/plugins/image/image.component.mjs +4 -4
  32. package/esm2020/plugins/inline-code/inline-code.component.mjs +4 -4
  33. package/esm2020/plugins/link/edit/link-edit.component.mjs +4 -4
  34. package/esm2020/plugins/link/hover/link-hover.component.mjs +4 -4
  35. package/esm2020/plugins/link/link.component.mjs +7 -7
  36. package/esm2020/plugins/list/components/bulleted-list.component.mjs +4 -4
  37. package/esm2020/plugins/list/components/list-item.component.mjs +4 -4
  38. package/esm2020/plugins/list/components/numbered-list.component.mjs +4 -4
  39. package/esm2020/plugins/mention/mention.editor.mjs +15 -4
  40. package/esm2020/plugins/mention/suggestion.component.mjs +4 -4
  41. package/esm2020/plugins/quick-insert/components/quick-insert.component.mjs +4 -4
  42. package/esm2020/plugins/table/components/insert-mark/insert-mark.component.mjs +4 -4
  43. package/esm2020/plugins/table/components/row/row.component.mjs +4 -4
  44. package/esm2020/plugins/table/components/table.component.mjs +4 -4
  45. package/esm2020/plugins/table/components/td/td.component.mjs +4 -4
  46. package/esm2020/plugins/table/components/toolbar/table-options.component.mjs +4 -4
  47. package/esm2020/plugins/table/components/toolbar/table-toolbar.component.mjs +4 -4
  48. package/esm2020/plugins/table/table.service.mjs +4 -4
  49. package/esm2020/plugins/table/table.store.mjs +4 -4
  50. package/esm2020/plugins/table/toolbar-item.component.mjs +4 -4
  51. package/esm2020/plugins/todo-item/todo-item.component.mjs +4 -4
  52. package/esm2020/plugins/vertical-align/toolbar-item.component.mjs +4 -4
  53. package/esm2020/services/color-select.service.mjs +4 -4
  54. package/esm2020/services/context.service.mjs +4 -4
  55. package/esm2020/services/table-contextmenu.service.mjs +4 -4
  56. package/esm2020/services/toolbar.service.mjs +4 -4
  57. package/fesm2015/worktile-theia.mjs +191 -189
  58. package/fesm2015/worktile-theia.mjs.map +1 -1
  59. package/fesm2020/worktile-theia.mjs +200 -189
  60. package/fesm2020/worktile-theia.mjs.map +1 -1
  61. package/package.json +1 -1
@@ -33,9 +33,9 @@ export class TheConversionHintComponent {
33
33
  clearInterval(this.closeTimer);
34
34
  }
35
35
  }
36
- TheConversionHintComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheConversionHintComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
37
- TheConversionHintComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TheConversionHintComponent, selector: "the-conversion-hint", inputs: { editor: "editor", conversion: "conversion" }, host: { listeners: { "mouseenter": "mouseenter()", "mouseleave": "mouseleave()" }, classAttribute: "the-conversion-hint" }, ngImport: i0, template: "<ng-container>\n <thy-alert thyType=\"primary-weak\" thyIcon=\"info-circle-fill\" thyCloseable=\"true\" thyMessage=\"\u68C0\u6D4B\u5230\u7C98\u8D34\u5185\u5BB9\u7B26\u5408Markdown\u8BED\u6CD5\">\n <ng-template #operation>\n <a href=\"javascript:;\" thyAlertActionItem (click)=\"conversion()\"> \u7ACB\u5373\u8F6C\u6362 </a>\n </ng-template>\n </thy-alert>\n</ng-container>\n", dependencies: [{ kind: "component", type: i1.ThyAlertComponent, selector: "thy-alert", inputs: ["thyType", "thyTheme", "thyMessage", "thyIcon", "thyCloseable"] }, { kind: "directive", type: i1.ThyAlertActionItemDirective, selector: "[thyAlertActionItem]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheConversionHintComponent, decorators: [{
36
+ TheConversionHintComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: TheConversionHintComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
37
+ TheConversionHintComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: TheConversionHintComponent, selector: "the-conversion-hint", inputs: { editor: "editor", conversion: "conversion" }, host: { listeners: { "mouseenter": "mouseenter()", "mouseleave": "mouseleave()" }, classAttribute: "the-conversion-hint" }, ngImport: i0, template: "<ng-container>\n <thy-alert thyType=\"primary-weak\" thyIcon=\"info-circle-fill\" thyCloseable=\"true\" thyMessage=\"\u68C0\u6D4B\u5230\u7C98\u8D34\u5185\u5BB9\u7B26\u5408Markdown\u8BED\u6CD5\">\n <ng-template #operation>\n <a href=\"javascript:;\" thyAlertActionItem (click)=\"conversion()\"> \u7ACB\u5373\u8F6C\u6362 </a>\n </ng-template>\n </thy-alert>\n</ng-container>\n", dependencies: [{ kind: "component", type: i1.ThyAlertComponent, selector: "thy-alert", inputs: ["thyType", "thyTheme", "thyMessage", "thyIcon", "thyCloseable"] }, { kind: "directive", type: i1.ThyAlertActionItemDirective, selector: "[thyAlertActionItem]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: TheConversionHintComponent, decorators: [{
39
39
  type: Component,
40
40
  args: [{ selector: 'the-conversion-hint', host: {
41
41
  class: 'the-conversion-hint'
@@ -51,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
51
51
  type: HostListener,
52
52
  args: ['mouseleave']
53
53
  }] } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2lvbi1oaW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9jb21wb25lbnRzL2NvbnZlcnNpb24taGludC9jb252ZXJzaW9uLWhpbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvY29udmVyc2lvbi1oaW50L2NvbnZlcnNpb24taGludC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTNHLE9BQU8sS0FBSyxhQUFhLE1BQU0sa0JBQWtCLENBQUM7OztBQVVsRCxNQUFNLE9BQU8sMEJBQTBCO0lBUnZDO1FBYUksYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixpQkFBWSxHQUFHLElBQUksQ0FBQztLQWlDdkI7SUE5QitCLFVBQVU7UUFDbEMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFFMkIsVUFBVTtRQUNsQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQixhQUFhLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELGVBQWU7UUFDWCxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7O3VIQXRDUSwwQkFBMEI7MkdBQTFCLDBCQUEwQiwrT0NadkMsdVpBT0E7MkZES2EsMEJBQTBCO2tCQVJ0QyxTQUFTOytCQUNJLHFCQUFxQixRQUV6Qjt3QkFDRixLQUFLLEVBQUUscUJBQXFCO3FCQUMvQixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTXNCLFVBQVU7c0JBQXJDLFlBQVk7dUJBQUMsWUFBWTtnQkFNRSxVQUFVO3NCQUFyQyxZQUFZO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0ICogYXMgVGhlVHJhbnNmb3JtcyBmcm9tICcuLi8uLi90cmFuc2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtY29udmVyc2lvbi1oaW50JyxcbiAgICB0ZW1wbGF0ZVVybDogJ2NvbnZlcnNpb24taGludC5jb21wb25lbnQuaHRtbCcsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoZS1jb252ZXJzaW9uLWhpbnQnXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUaGVDb252ZXJzaW9uSGludENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBlZGl0b3I6IEVkaXRvcjtcblxuICAgIEBJbnB1dCgpIGNvbnZlcnNpb246ICgpID0+IHZvaWQ7XG5cbiAgICBkdXJhdGlvbiA9IDEwMDAwO1xuICAgIHBhdXNlT25Ib3ZlciA9IHRydWU7XG4gICAgY2xvc2VUaW1lcjogYW55O1xuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpIG1vdXNlZW50ZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnBhdXNlT25Ib3Zlcikge1xuICAgICAgICAgICAgdGhpcy5jbGVhckNsb3NlVGltZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKSBtb3VzZWxlYXZlKCkge1xuICAgICAgICBpZiAodGhpcy5wYXVzZU9uSG92ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRDbG9zZVRpbWVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jcmVhdENsb3NlVGltZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jbGVhckNsb3NlVGltZXIoKTtcbiAgICB9XG5cbiAgICBjcmVhdENsb3NlVGltZXIoKSB7XG4gICAgICAgIHRoaXMuY2xvc2VUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5jbG9zZVRpbWVyKTtcbiAgICAgICAgICAgIFRoZVRyYW5zZm9ybXMuY2xvc2VDb252ZXJzaW9uSGludCh0aGlzLmVkaXRvcik7XG4gICAgICAgIH0sIHRoaXMuZHVyYXRpb24pO1xuICAgIH1cblxuICAgIGNsZWFyQ2xvc2VUaW1lcigpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmNsb3NlVGltZXIpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXI+XG4gICAgPHRoeS1hbGVydCB0aHlUeXBlPVwicHJpbWFyeS13ZWFrXCIgdGh5SWNvbj1cImluZm8tY2lyY2xlLWZpbGxcIiB0aHlDbG9zZWFibGU9XCJ0cnVlXCIgdGh5TWVzc2FnZT1cIuajgOa1i+WIsOeymOi0tOWGheWuueespuWQiE1hcmtkb3du6K+t5rOVXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjb3BlcmF0aW9uPlxuICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIHRoeUFsZXJ0QWN0aW9uSXRlbSAoY2xpY2spPVwiY29udmVyc2lvbigpXCI+IOeri+WNs+i9rOaNoiA8L2E+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC90aHktYWxlcnQ+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2lvbi1oaW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9jb21wb25lbnRzL2NvbnZlcnNpb24taGludC9jb252ZXJzaW9uLWhpbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvY29udmVyc2lvbi1oaW50L2NvbnZlcnNpb24taGludC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTNHLE9BQU8sS0FBSyxhQUFhLE1BQU0sa0JBQWtCLENBQUM7OztBQVVsRCxNQUFNLE9BQU8sMEJBQTBCO0lBUnZDO1FBYUksYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixpQkFBWSxHQUFHLElBQUksQ0FBQztLQWlDdkI7SUE5QitCLFVBQVU7UUFDbEMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFFMkIsVUFBVTtRQUNsQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQixhQUFhLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELGVBQWU7UUFDWCxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7O3dIQXRDUSwwQkFBMEI7NEdBQTFCLDBCQUEwQiwrT0NadkMsdVpBT0E7NEZES2EsMEJBQTBCO2tCQVJ0QyxTQUFTOytCQUNJLHFCQUFxQixRQUV6Qjt3QkFDRixLQUFLLEVBQUUscUJBQXFCO3FCQUMvQixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTXNCLFVBQVU7c0JBQXJDLFlBQVk7dUJBQUMsWUFBWTtnQkFNRSxVQUFVO3NCQUFyQyxZQUFZO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0ICogYXMgVGhlVHJhbnNmb3JtcyBmcm9tICcuLi8uLi90cmFuc2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtY29udmVyc2lvbi1oaW50JyxcbiAgICB0ZW1wbGF0ZVVybDogJ2NvbnZlcnNpb24taGludC5jb21wb25lbnQuaHRtbCcsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoZS1jb252ZXJzaW9uLWhpbnQnXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUaGVDb252ZXJzaW9uSGludENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBlZGl0b3I6IEVkaXRvcjtcblxuICAgIEBJbnB1dCgpIGNvbnZlcnNpb246ICgpID0+IHZvaWQ7XG5cbiAgICBkdXJhdGlvbiA9IDEwMDAwO1xuICAgIHBhdXNlT25Ib3ZlciA9IHRydWU7XG4gICAgY2xvc2VUaW1lcjogYW55O1xuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpIG1vdXNlZW50ZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnBhdXNlT25Ib3Zlcikge1xuICAgICAgICAgICAgdGhpcy5jbGVhckNsb3NlVGltZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKSBtb3VzZWxlYXZlKCkge1xuICAgICAgICBpZiAodGhpcy5wYXVzZU9uSG92ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRDbG9zZVRpbWVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jcmVhdENsb3NlVGltZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jbGVhckNsb3NlVGltZXIoKTtcbiAgICB9XG5cbiAgICBjcmVhdENsb3NlVGltZXIoKSB7XG4gICAgICAgIHRoaXMuY2xvc2VUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5jbG9zZVRpbWVyKTtcbiAgICAgICAgICAgIFRoZVRyYW5zZm9ybXMuY2xvc2VDb252ZXJzaW9uSGludCh0aGlzLmVkaXRvcik7XG4gICAgICAgIH0sIHRoaXMuZHVyYXRpb24pO1xuICAgIH1cblxuICAgIGNsZWFyQ2xvc2VUaW1lcigpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmNsb3NlVGltZXIpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXI+XG4gICAgPHRoeS1hbGVydCB0aHlUeXBlPVwicHJpbWFyeS13ZWFrXCIgdGh5SWNvbj1cImluZm8tY2lyY2xlLWZpbGxcIiB0aHlDbG9zZWFibGU9XCJ0cnVlXCIgdGh5TWVzc2FnZT1cIuajgOa1i+WIsOeymOi0tOWGheWuueespuWQiE1hcmtkb3du6K+t5rOVXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjb3BlcmF0aW9uPlxuICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIHRoeUFsZXJ0QWN0aW9uSXRlbSAoY2xpY2spPVwiY29udmVyc2lvbigpXCI+IOeri+WNs+i9rOaNoiA8L2E+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC90aHktYWxlcnQ+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -7,9 +7,9 @@ export class TheDefaultElementComponent extends TheBaseElementComponent {
7
7
  return this.element?.indent;
8
8
  }
9
9
  }
10
- TheDefaultElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheDefaultElementComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
11
- TheDefaultElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TheDefaultElementComponent, selector: "[theDefaultElement]", host: { properties: { "attr.the-indent": "this.indent" } }, usesInheritance: true, ngImport: i0, template: '<slate-children [children]="children" [context]="childrenContext" [viewContext]="viewContext"></slate-children>', isInline: true, dependencies: [{ kind: "component", type: i1.SlateChildrenComponent, selector: "slate-children", inputs: ["children", "context", "viewContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheDefaultElementComponent, decorators: [{
10
+ TheDefaultElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: TheDefaultElementComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
11
+ TheDefaultElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: TheDefaultElementComponent, selector: "[theDefaultElement]", host: { properties: { "attr.the-indent": "this.indent" } }, usesInheritance: true, ngImport: i0, template: '<slate-children [children]="children" [context]="childrenContext" [viewContext]="viewContext"></slate-children>', isInline: true, dependencies: [{ kind: "component", type: i1.SlateChildrenComponent, selector: "slate-children", inputs: ["children", "context", "viewContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: TheDefaultElementComponent, decorators: [{
13
13
  type: Component,
14
14
  args: [{
15
15
  selector: '[theDefaultElement]',
@@ -20,4 +20,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
20
20
  type: HostBinding,
21
21
  args: ['attr.the-indent']
22
22
  }] } });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy9lbGVtZW50L2VsZW1lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFPckUsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHVCQUF1QjtJQUNuRSxJQUNJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hDLENBQUM7O3VIQUpRLDBCQUEwQjsyR0FBMUIsMEJBQTBCLDhJQUh6QixpSEFBaUg7MkZBR2xILDBCQUEwQjtrQkFMdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixRQUFRLEVBQUUsaUhBQWlIO29CQUMzSCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7OEJBR08sTUFBTTtzQkFEVCxXQUFXO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaGVCYXNlRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmlldy1iYXNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdbdGhlRGVmYXVsdEVsZW1lbnRdJyxcbiAgICB0ZW1wbGF0ZTogJzxzbGF0ZS1jaGlsZHJlbiBbY2hpbGRyZW5dPVwiY2hpbGRyZW5cIiBbY29udGV4dF09XCJjaGlsZHJlbkNvbnRleHRcIiBbdmlld0NvbnRleHRdPVwidmlld0NvbnRleHRcIj48L3NsYXRlLWNoaWxkcmVuPicsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGhlRGVmYXVsdEVsZW1lbnRDb21wb25lbnQgZXh0ZW5kcyBUaGVCYXNlRWxlbWVudENvbXBvbmVudCB7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnRoZS1pbmRlbnQnKVxuICAgIGdldCBpbmRlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQ/LmluZGVudDtcbiAgICB9XG59XG4iXX0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy9lbGVtZW50L2VsZW1lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFPckUsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHVCQUF1QjtJQUNuRSxJQUNJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hDLENBQUM7O3dIQUpRLDBCQUEwQjs0R0FBMUIsMEJBQTBCLDhJQUh6QixpSEFBaUg7NEZBR2xILDBCQUEwQjtrQkFMdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixRQUFRLEVBQUUsaUhBQWlIO29CQUMzSCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7OEJBR08sTUFBTTtzQkFEVCxXQUFXO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaGVCYXNlRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmlldy1iYXNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdbdGhlRGVmYXVsdEVsZW1lbnRdJyxcbiAgICB0ZW1wbGF0ZTogJzxzbGF0ZS1jaGlsZHJlbiBbY2hpbGRyZW5dPVwiY2hpbGRyZW5cIiBbY29udGV4dF09XCJjaGlsZHJlbkNvbnRleHRcIiBbdmlld0NvbnRleHRdPVwidmlld0NvbnRleHRcIj48L3NsYXRlLWNoaWxkcmVuPicsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGhlRGVmYXVsdEVsZW1lbnRDb21wb25lbnQgZXh0ZW5kcyBUaGVCYXNlRWxlbWVudENvbXBvbmVudCB7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnRoZS1pbmRlbnQnKVxuICAgIGdldCBpbmRlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQ/LmluZGVudDtcbiAgICB9XG59XG4iXX0=
@@ -103,15 +103,15 @@ export class TheInlineToolbarComponent {
103
103
  this.destroy$.complete();
104
104
  }
105
105
  }
106
- TheInlineToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheInlineToolbarComponent, deps: [{ token: i0.ElementRef }, { token: i1.ScrollDispatcher }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i2.TheContextService }], target: i0.ɵɵFactoryTarget.Component });
107
- TheInlineToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TheInlineToolbarComponent, selector: "the-inline-toolbar", inputs: { editor: "editor", toolbarItems: "toolbarItems" }, host: { properties: { "class.hide": "toolbarItems.length === 0" } }, viewQueries: [{ propertyName: "inlineToolbar", first: true, predicate: ["inlineToolbar"], descendants: true }], ngImport: i0, template: `<the-toolbar
106
+ TheInlineToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: TheInlineToolbarComponent, deps: [{ token: i0.ElementRef }, { token: i1.ScrollDispatcher }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i2.TheContextService }], target: i0.ɵɵFactoryTarget.Component });
107
+ TheInlineToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: TheInlineToolbarComponent, selector: "the-inline-toolbar", inputs: { editor: "editor", toolbarItems: "toolbarItems" }, host: { properties: { "class.hide": "toolbarItems.length === 0" } }, viewQueries: [{ propertyName: "inlineToolbar", first: true, predicate: ["inlineToolbar"], descendants: true }], ngImport: i0, template: `<the-toolbar
108
108
  #inlineToolbar
109
109
  class="the-inline-toolbar"
110
110
  [editor]="editor"
111
111
  [toolbarItems]="toolbarItems"
112
112
  [isMore]="false"
113
113
  ></the-toolbar> `, isInline: true, dependencies: [{ kind: "component", type: i3.TheToolbarComponent, selector: "the-toolbar", inputs: ["editor", "toolbarItems", "align", "containerClass", "isMore", "afterTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheInlineToolbarComponent, decorators: [{
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: TheInlineToolbarComponent, decorators: [{
115
115
  type: Component,
116
116
  args: [{
117
117
  selector: 'the-inline-toolbar',
@@ -135,4 +135,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
135
135
  type: ViewChild,
136
136
  args: ['inlineToolbar']
137
137
  }] } });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvaW5saW5lLXRvb2xiYXIvaW5saW5lLXRvb2xiYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBSVQsS0FBSyxFQUdMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxLQUFLLElBQUksVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sS0FBSyxVQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQW1CM0QsTUFBTSxPQUFPLHlCQUF5QjtJQU9sQyxZQUNZLFVBQTJCLEVBQzNCLGdCQUFrQyxFQUNsQyxHQUFzQixFQUN0QixNQUFjLEVBQ2QsY0FBaUM7UUFKakMsZUFBVSxHQUFWLFVBQVUsQ0FBaUI7UUFDM0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBUDdDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBUXRCLENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxDQUFDLGdCQUFnQjthQUNoQixRQUFRLEVBQUU7YUFDVixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQy9CLEtBQUssQ0FDRCxTQUFTLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDOUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FDL0U7aUJBQ0ksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUNqRCxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNaLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxtQkFBbUI7UUFDZixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQztRQUV0RSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDeEIsYUFBYSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2QyxPQUFPO1NBQ1Y7UUFDRCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hDLE9BQU87U0FDVjtRQUNELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDeEIsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUU3QixJQUNJLENBQUMsU0FBUztZQUNWLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDaEMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUM7WUFDakMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUN6QztZQUNFLGFBQWEsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkMsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdEQsT0FBTztTQUNWO1FBQ0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3JDLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDeEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUM3QztJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsY0FBMkIsRUFBRSxLQUFLO1FBQzdDLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRTdDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsY0FBYyxLQUFLLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUM3RyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBUSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDbEYsUUFBUSxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUM7YUFDaEY7aUJBQU07Z0JBQ0gsUUFBUSxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMscUJBQXFCLEVBQUUsQ0FBQzthQUMzRDtTQUNKO1FBQ0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ2pFLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUM7UUFDbEQsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLFdBQVcsQ0FBQztRQUNoRCxNQUFNLGVBQWUsR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sV0FBVyxHQUFHLENBQUMsZUFBZSxDQUFDO1FBQ3JDLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQztRQUNyRCxNQUFNLFNBQVMsR0FBRyxVQUFVLEdBQUcsRUFBRSxHQUFHLGVBQWUsQ0FBQyxDQUFDLDRCQUE0QjtRQUNqRixNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsS0FBSyxHQUFHLFVBQVUsR0FBRyxRQUFRLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxlQUFlLENBQUM7UUFDMUYsTUFBTSxTQUFTLEdBQVEsRUFBRSxDQUFDO1FBRTFCLFNBQVMsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsR0FBRyxhQUFhLENBQUM7UUFDN0MsU0FBUyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDNUIsU0FBUyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBRS9CLElBQUksU0FBUyxFQUFFO1lBQ1gsU0FBUyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQztTQUNyRTtRQUVELElBQUksVUFBVSxFQUFFO1lBQ1osU0FBUyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQztTQUNsRDtRQUVELEtBQUssSUFBSSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNwQyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwRjtRQUNELGNBQWMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUN2QyxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDOztzSEFqSFEseUJBQXlCOzBHQUF6Qix5QkFBeUIsMlNBWnhCOzs7Ozs7cUJBTU87MkZBTVIseUJBQXlCO2tCQWRyQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRTs7Ozs7O3FCQU1PO29CQUNqQixJQUFJLEVBQUU7d0JBQ0YsY0FBYyxFQUFFLDJCQUEyQjtxQkFDOUM7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEO3FOQUVZLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNzQixhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIElucHV0LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgTmdab25lLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjcm9sbERpc3BhdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBtZXJnZSwgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIGZpbHRlciwgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUmFuZ2UgYXMgc2xhdGVSYW5nZSwgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IFRIRV9JTkxJTkVfVE9PTEJBUl9UWVBFUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUb29sYmFySXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVGhlVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4uL3Rvb2xiYXIvdG9vbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGhlQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS1pbmxpbmUtdG9vbGJhcicsXG4gICAgdGVtcGxhdGU6IGA8dGhlLXRvb2xiYXJcbiAgICAgICAgI2lubGluZVRvb2xiYXJcbiAgICAgICAgY2xhc3M9XCJ0aGUtaW5saW5lLXRvb2xiYXJcIlxuICAgICAgICBbZWRpdG9yXT1cImVkaXRvclwiXG4gICAgICAgIFt0b29sYmFySXRlbXNdPVwidG9vbGJhckl0ZW1zXCJcbiAgICAgICAgW2lzTW9yZV09XCJmYWxzZVwiXG4gICAgPjwvdGhlLXRvb2xiYXI+IGAsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLmhpZGVdJzogJ3Rvb2xiYXJJdGVtcy5sZW5ndGggPT09IDAnXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUaGVJbmxpbmVUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGVkaXRvcjogRWRpdG9yO1xuICAgIEBJbnB1dCgpIHRvb2xiYXJJdGVtczogVG9vbGJhckl0ZW1bXTtcbiAgICBAVmlld0NoaWxkKCdpbmxpbmVUb29sYmFyJykgaW5saW5lVG9vbGJhcjogVGhlVG9vbGJhckNvbXBvbmVudDtcblxuICAgIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8YW55PixcbiAgICAgICAgcHJpdmF0ZSBzY3JvbGxEaXNwYXRjaGVyOiBTY3JvbGxEaXNwYXRjaGVyLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IFRoZUNvbnRleHRTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsRGlzcGF0Y2hlclxuICAgICAgICAgICAgLnNjcm9sbGVkKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSW5saW5lVG9vbGJhcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBtZXJnZShcbiAgICAgICAgICAgICAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICdtb3VzZXVwJykucGlwZShmaWx0ZXIoKGU6IE1vdXNlRXZlbnQpID0+IGUuYnV0dG9uICE9PSAyKSksXG4gICAgICAgICAgICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAna2V5dXAnKS5waXBlKGZpbHRlcigoZTogS2V5Ym9hcmRFdmVudCkgPT4gIWUuc2hpZnRLZXkpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyMDApLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSW5saW5lVG9vbGJhcigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlubGluZVRvb2xiYXI/LnNlbGVjdGlvbkNoYW5nZSh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlSW5saW5lVG9vbGJhcigpIHtcbiAgICAgICAgY29uc3QgaW5saW5lVG9vbGJhciA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkO1xuXG4gICAgICAgIGlmICghdGhpcy5lZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBpbmxpbmVUb29sYmFyLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbmNob3JCbG9jayA9IFRoZVF1ZXJpZXMuYW5jaG9yQmxvY2sodGhpcy5lZGl0b3IpO1xuICAgICAgICBpZiAoIWlubGluZVRvb2xiYXIgfHwgIWFuY2hvckJsb2NrKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBlZGl0b3IgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBlZGl0b3I7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXNlbGVjdGlvbiB8fFxuICAgICAgICAgICAgIUFuZ3VsYXJFZGl0b3IuaXNGb2N1c2VkKGVkaXRvcikgfHxcbiAgICAgICAgICAgIHNsYXRlUmFuZ2UuaXNDb2xsYXBzZWQoc2VsZWN0aW9uKSB8fFxuICAgICAgICAgICAgRWRpdG9yLnN0cmluZyhlZGl0b3IsIHNlbGVjdGlvbikgPT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgICAgaW5saW5lVG9vbGJhci5yZW1vdmVBdHRyaWJ1dGUoJ3N0eWxlJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIVRIRV9JTkxJTkVfVE9PTEJBUl9UWVBFUy5pbmNsdWRlcyhhbmNob3JCbG9jay50eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5hdGl2ZSA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgaWYgKG5hdGl2ZS50eXBlICE9PSAnTm9uZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gbmF0aXZlLmdldFJhbmdlQXQoMCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKGlubGluZVRvb2xiYXIsIHJhbmdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVBvc2l0aW9uKHRvb2xiYXJFbGVtZW50OiBIVE1MRWxlbWVudCwgcmFuZ2UpIHtcbiAgICAgICAgbGV0IGJvdW5kYXJ5ID0gcmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgaWYgKCFib3VuZGFyeSB8fCAoYm91bmRhcnkuaGVpZ2h0ID09PSAwICYmIGJvdW5kYXJ5LndpZHRoID09PSAwICYmIHJhbmdlLnN0YXJ0Q29udGFpbmVyID09PSByYW5nZS5lbmRDb250YWluZXIpKSB7XG4gICAgICAgICAgICBpZiAocmFuZ2Uuc3RhcnRDb250YWluZXIubm9kZVR5cGUgPT09IDEgJiYgcmFuZ2Uuc3RhcnRDb250YWluZXIucXVlcnlTZWxlY3RvcignaW1nJykpIHtcbiAgICAgICAgICAgICAgICBib3VuZGFyeSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2ltZycpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBib3VuZGFyeSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVkaXRhYmxlRWxlbWVudCA9IHRoaXMuY29udGV4dFNlcnZpY2UuZ2V0RWRpdGFibGVFbGVtZW50KCk7XG4gICAgICAgIGNvbnN0IGVkaXRhYmxlUmVjdCA9IGVkaXRhYmxlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgdG9vbGJhckhlaWdodCA9IHRvb2xiYXJFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgY29uc3QgdG9vbGJhcldpZHRoID0gdG9vbGJhckVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGNvbnN0IGhhbGZPZmZzZXRXaWR0aCA9IHRvb2xiYXJXaWR0aCAvIDI7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRMZWZ0ID0gLWhhbGZPZmZzZXRXaWR0aDtcbiAgICAgICAgY29uc3Qgb2Zmc2V0TGVmdCA9IGJvdW5kYXJ5LmxlZnQgLSBlZGl0YWJsZVJlY3QubGVmdDtcbiAgICAgICAgY29uc3QgaXNUb3BMZWZ0ID0gb2Zmc2V0TGVmdCAtIDMwID4gaGFsZk9mZnNldFdpZHRoOyAvLyAzMDogZWRpdGFibGUgcGFkZGluZyBsZWZ0XG4gICAgICAgIGNvbnN0IGlzVG9wUmlnaHQgPSBlZGl0YWJsZVJlY3Qud2lkdGggLSBvZmZzZXRMZWZ0IC0gYm91bmRhcnkud2lkdGggLyAyIDwgaGFsZk9mZnNldFdpZHRoO1xuICAgICAgICBjb25zdCBwb3NpdGlvbnM6IGFueSA9IHt9O1xuXG4gICAgICAgIHBvc2l0aW9ucy50b3AgPSBib3VuZGFyeS50b3AgLSB0b29sYmFySGVpZ2h0O1xuICAgICAgICBwb3NpdGlvbnMucmlnaHQgPSAnaW5pdGlhbCc7XG4gICAgICAgIHBvc2l0aW9ucy5sZWZ0ID0gYm91bmRhcnkubGVmdDtcblxuICAgICAgICBpZiAoaXNUb3BMZWZ0KSB7XG4gICAgICAgICAgICBwb3NpdGlvbnMubGVmdCA9IGJvdW5kYXJ5LmxlZnQgKyBib3VuZGFyeS53aWR0aCAvIDIgKyBkZWZhdWx0TGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc1RvcFJpZ2h0KSB7XG4gICAgICAgICAgICBwb3NpdGlvbnMubGVmdCA9IGJvdW5kYXJ5LnJpZ2h0IC0gdG9vbGJhcldpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKHBvc2l0aW9ucykpIHtcbiAgICAgICAgICAgIHRvb2xiYXJFbGVtZW50LnN0eWxlW2tleV0gPSBwb3NpdGlvbnNba2V5XSArIChpc05hTihwb3NpdGlvbnNba2V5XSkgPyAnJyA6ICdweCcpO1xuICAgICAgICB9XG4gICAgICAgIHRvb2xiYXJFbGVtZW50LnN0eWxlLm9wYWNpdHkgPSAnMSc7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIl19
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvaW5saW5lLXRvb2xiYXIvaW5saW5lLXRvb2xiYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBSVQsS0FBSyxFQUdMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxLQUFLLElBQUksVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sS0FBSyxVQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQW1CM0QsTUFBTSxPQUFPLHlCQUF5QjtJQU9sQyxZQUNZLFVBQTJCLEVBQzNCLGdCQUFrQyxFQUNsQyxHQUFzQixFQUN0QixNQUFjLEVBQ2QsY0FBaUM7UUFKakMsZUFBVSxHQUFWLFVBQVUsQ0FBaUI7UUFDM0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBUDdDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBUXRCLENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxDQUFDLGdCQUFnQjthQUNoQixRQUFRLEVBQUU7YUFDVixJQUFJ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QyxTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIElucHV0LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgTmdab25lLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjcm9sbERpc3BhdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBtZXJnZSwgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIGZpbHRlciwgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUmFuZ2UgYXMgc2xhdGVSYW5nZSwgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IFRIRV9JTkxJTkVfVE9PTEJBUl9UWVBFUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUb29sYmFySXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVGhlVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4uL3Rvb2xiYXIvdG9vbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGhlQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS1pbmxpbmUtdG9vbGJhcicsXG4gICAgdGVtcGxhdGU6IGA8dGhlLXRvb2xiYXJcbiAgICAgICAgI2lubGluZVRvb2xiYXJcbiAgICAgICAgY2xhc3M9XCJ0aGUtaW5saW5lLXRvb2xiYXJcIlxuICAgICAgICBbZWRpdG9yXT1cImVkaXRvclwiXG4gICAgICAgIFt0b29sYmFySXRlbXNdPVwidG9vbGJhckl0ZW1zXCJcbiAgICAgICAgW2lzTW9yZV09XCJmYWxzZVwiXG4gICAgPjwvdGhlLXRvb2xiYXI+IGAsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLmhpZGVdJzogJ3Rvb2xiYXJJdGVtcy5sZW5ndGggPT09IDAnXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUaGVJbmxpbmVUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGVkaXRvcjogRWRpdG9yO1xuICAgIEBJbnB1dCgpIHRvb2xiYXJJdGVtczogVG9vbGJhckl0ZW1bXTtcbiAgICBAVmlld0NoaWxkKCdpbmxpbmVUb29sYmFyJykgaW5saW5lVG9vbGJhcjogVGhlVG9vbGJhckNvbXBvbmVudDtcblxuICAgIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8YW55PixcbiAgICAgICAgcHJpdmF0ZSBzY3JvbGxEaXNwYXRjaGVyOiBTY3JvbGxEaXNwYXRjaGVyLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IFRoZUNvbnRleHRTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsRGlzcGF0Y2hlclxuICAgICAgICAgICAgLnNjcm9sbGVkKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSW5saW5lVG9vbGJhcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBtZXJnZShcbiAgICAgICAgICAgICAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICdtb3VzZXVwJykucGlwZShmaWx0ZXIoKGU6IE1vdXNlRXZlbnQpID0+IGUuYnV0dG9uICE9PSAyKSksXG4gICAgICAgICAgICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAna2V5dXAnKS5waXBlKGZpbHRlcigoZTogS2V5Ym9hcmRFdmVudCkgPT4gIWUuc2hpZnRLZXkpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyMDApLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSW5saW5lVG9vbGJhcigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlubGluZVRvb2xiYXI/LnNlbGVjdGlvbkNoYW5nZSh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlSW5saW5lVG9vbGJhcigpIHtcbiAgICAgICAgY29uc3QgaW5saW5lVG9vbGJhciA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkO1xuXG4gICAgICAgIGlmICghdGhpcy5lZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBpbmxpbmVUb29sYmFyLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbmNob3JCbG9jayA9IFRoZVF1ZXJpZXMuYW5jaG9yQmxvY2sodGhpcy5lZGl0b3IpO1xuICAgICAgICBpZiAoIWlubGluZVRvb2xiYXIgfHwgIWFuY2hvckJsb2NrKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBlZGl0b3IgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBlZGl0b3I7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXNlbGVjdGlvbiB8fFxuICAgICAgICAgICAgIUFuZ3VsYXJFZGl0b3IuaXNGb2N1c2VkKGVkaXRvcikgfHxcbiAgICAgICAgICAgIHNsYXRlUmFuZ2UuaXNDb2xsYXBzZWQoc2VsZWN0aW9uKSB8fFxuICAgICAgICAgICAgRWRpdG9yLnN0cmluZyhlZGl0b3IsIHNlbGVjdGlvbikgPT09ICcnXG4gICAgICAgICkge1xuICAgICAgICAgICAgaW5saW5lVG9vbGJhci5yZW1vdmVBdHRyaWJ1dGUoJ3N0eWxlJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIVRIRV9JTkxJTkVfVE9PTEJBUl9UWVBFUy5pbmNsdWRlcyhhbmNob3JCbG9jay50eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5hdGl2ZSA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgaWYgKG5hdGl2ZS50eXBlICE9PSAnTm9uZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gbmF0aXZlLmdldFJhbmdlQXQoMCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKGlubGluZVRvb2xiYXIsIHJhbmdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVBvc2l0aW9uKHRvb2xiYXJFbGVtZW50OiBIVE1MRWxlbWVudCwgcmFuZ2UpIHtcbiAgICAgICAgbGV0IGJvdW5kYXJ5ID0gcmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgaWYgKCFib3VuZGFyeSB8fCAoYm91bmRhcnkuaGVpZ2h0ID09PSAwICYmIGJvdW5kYXJ5LndpZHRoID09PSAwICYmIHJhbmdlLnN0YXJ0Q29udGFpbmVyID09PSByYW5nZS5lbmRDb250YWluZXIpKSB7XG4gICAgICAgICAgICBpZiAocmFuZ2Uuc3RhcnRDb250YWluZXIubm9kZVR5cGUgPT09IDEgJiYgcmFuZ2Uuc3RhcnRDb250YWluZXIucXVlcnlTZWxlY3RvcignaW1nJykpIHtcbiAgICAgICAgICAgICAgICBib3VuZGFyeSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2ltZycpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBib3VuZGFyeSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVkaXRhYmxlRWxlbWVudCA9IHRoaXMuY29udGV4dFNlcnZpY2UuZ2V0RWRpdGFibGVFbGVtZW50KCk7XG4gICAgICAgIGNvbnN0IGVkaXRhYmxlUmVjdCA9IGVkaXRhYmxlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgdG9vbGJhckhlaWdodCA9IHRvb2xiYXJFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgY29uc3QgdG9vbGJhcldpZHRoID0gdG9vbGJhckVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGNvbnN0IGhhbGZPZmZzZXRXaWR0aCA9IHRvb2xiYXJXaWR0aCAvIDI7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRMZWZ0ID0gLWhhbGZPZmZzZXRXaWR0aDtcbiAgICAgICAgY29uc3Qgb2Zmc2V0TGVmdCA9IGJvdW5kYXJ5LmxlZnQgLSBlZGl0YWJsZVJlY3QubGVmdDtcbiAgICAgICAgY29uc3QgaXNUb3BMZWZ0ID0gb2Zmc2V0TGVmdCAtIDMwID4gaGFsZk9mZnNldFdpZHRoOyAvLyAzMDogZWRpdGFibGUgcGFkZGluZyBsZWZ0XG4gICAgICAgIGNvbnN0IGlzVG9wUmlnaHQgPSBlZGl0YWJsZVJlY3Qud2lkdGggLSBvZmZzZXRMZWZ0IC0gYm91bmRhcnkud2lkdGggLyAyIDwgaGFsZk9mZnNldFdpZHRoO1xuICAgICAgICBjb25zdCBwb3NpdGlvbnM6IGFueSA9IHt9O1xuXG4gICAgICAgIHBvc2l0aW9ucy50b3AgPSBib3VuZGFyeS50b3AgLSB0b29sYmFySGVpZ2h0O1xuICAgICAgICBwb3NpdGlvbnMucmlnaHQgPSAnaW5pdGlhbCc7XG4gICAgICAgIHBvc2l0aW9ucy5sZWZ0ID0gYm91bmRhcnkubGVmdDtcblxuICAgICAgICBpZiAoaXNUb3BMZWZ0KSB7XG4gICAgICAgICAgICBwb3NpdGlvbnMubGVmdCA9IGJvdW5kYXJ5LmxlZnQgKyBib3VuZGFyeS53aWR0aCAvIDIgKyBkZWZhdWx0TGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc1RvcFJpZ2h0KSB7XG4gICAgICAgICAgICBwb3NpdGlvbnMubGVmdCA9IGJvdW5kYXJ5LnJpZ2h0IC0gdG9vbGJhcldpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKHBvc2l0aW9ucykpIHtcbiAgICAgICAgICAgIHRvb2xiYXJFbGVtZW50LnN0eWxlW2tleV0gPSBwb3NpdGlvbnNba2V5XSArIChpc05hTihwb3NpdGlvbnNba2V5XSkgPyAnJyA6ICdweCcpO1xuICAgICAgICB9XG4gICAgICAgIHRvb2xiYXJFbGVtZW50LnN0eWxlLm9wYWNpdHkgPSAnMSc7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIl19
@@ -43,14 +43,14 @@ export class TheListboxOptionDirective {
43
43
  return this._active;
44
44
  }
45
45
  }
46
- TheListboxOptionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheListboxOptionDirective, deps: [{ token: THE_LISTBOX_PARENT_OPTION_TOKEN, optional: true, skipSelf: true }, { token: THE_LISTBOX_PARENT_GROUP_TOKEN }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
47
- TheListboxOptionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: TheListboxOptionDirective, selector: "[theListboxOption]", inputs: { theOptionValue: "theOptionValue", theOptionDisabled: "theOptionDisabled" }, host: { properties: { "class": "this.className" } }, providers: [
46
+ TheListboxOptionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: TheListboxOptionDirective, deps: [{ token: THE_LISTBOX_PARENT_OPTION_TOKEN, optional: true, skipSelf: true }, { token: THE_LISTBOX_PARENT_GROUP_TOKEN }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
47
+ TheListboxOptionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.10", type: TheListboxOptionDirective, selector: "[theListboxOption]", inputs: { theOptionValue: "theOptionValue", theOptionDisabled: "theOptionDisabled" }, host: { properties: { "class": "this.className" } }, providers: [
48
48
  {
49
49
  provide: THE_LISTBOX_PARENT_OPTION_TOKEN,
50
50
  useExisting: TheListboxOptionDirective
51
51
  }
52
52
  ], queries: [{ propertyName: "_options", predicate: TheListboxOptionDirective, descendants: true }], exportAs: ["theListboxOption"], ngImport: i0 });
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheListboxOptionDirective, decorators: [{
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: TheListboxOptionDirective, decorators: [{
54
54
  type: Directive,
55
55
  args: [{
56
56
  selector: '[theListboxOption]',
@@ -126,14 +126,14 @@ export class TheListboxGroupDirective {
126
126
  return this.options[this.options.length - 1];
127
127
  }
128
128
  }
129
- TheListboxGroupDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheListboxGroupDirective, deps: [{ token: THE_LISTBOX_PARENT_OPTION_TOKEN, optional: true, skipSelf: true }, { token: THE_LISTBOX_TOKEN }], target: i0.ɵɵFactoryTarget.Directive });
130
- TheListboxGroupDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: TheListboxGroupDirective, selector: "[theListboxGroup]", inputs: { horizontalColumn: "horizontalColumn" }, host: { properties: { "class": "this.className" } }, providers: [
129
+ TheListboxGroupDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: TheListboxGroupDirective, deps: [{ token: THE_LISTBOX_PARENT_OPTION_TOKEN, optional: true, skipSelf: true }, { token: THE_LISTBOX_TOKEN }], target: i0.ɵɵFactoryTarget.Directive });
130
+ TheListboxGroupDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.10", type: TheListboxGroupDirective, selector: "[theListboxGroup]", inputs: { horizontalColumn: "horizontalColumn" }, host: { properties: { "class": "this.className" } }, providers: [
131
131
  {
132
132
  provide: THE_LISTBOX_PARENT_GROUP_TOKEN,
133
133
  useExisting: TheListboxGroupDirective
134
134
  }
135
135
  ], queries: [{ propertyName: "_options", predicate: TheListboxOptionDirective, descendants: true }], exportAs: ["theListboxGroup"], ngImport: i0 });
136
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheListboxGroupDirective, decorators: [{
136
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: TheListboxGroupDirective, decorators: [{
137
137
  type: Directive,
138
138
  args: [{
139
139
  selector: '[theListboxGroup]',
@@ -332,14 +332,14 @@ export class TheListboxDirective {
332
332
  this._keyboardSubscription.unsubscribe();
333
333
  }
334
334
  }
335
- TheListboxDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheListboxDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
336
- TheListboxDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: TheListboxDirective, selector: "[theListBox]", inputs: { keyboardContainer: "keyboardContainer" }, outputs: { theListboxChange: "theListboxChange" }, host: { properties: { "class": "this.className" } }, providers: [
335
+ TheListboxDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: TheListboxDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
336
+ TheListboxDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.10", type: TheListboxDirective, selector: "[theListBox]", inputs: { keyboardContainer: "keyboardContainer" }, outputs: { theListboxChange: "theListboxChange" }, host: { properties: { "class": "this.className" } }, providers: [
337
337
  {
338
338
  provide: THE_LISTBOX_TOKEN,
339
339
  useExisting: TheListboxDirective
340
340
  }
341
341
  ], queries: [{ propertyName: "_groups", predicate: TheListboxGroupDirective, descendants: true }, { propertyName: "_options", predicate: TheListboxOptionDirective, descendants: true }], exportAs: ["theListBox"], ngImport: i0 });
342
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheListboxDirective, decorators: [{
342
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: TheListboxDirective, decorators: [{
343
343
  type: Directive,
344
344
  args: [{
345
345
  selector: '[theListBox]',
@@ -365,4 +365,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
365
365
  }], theListboxChange: [{
366
366
  type: Output
367
367
  }] } });
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9jb21wb25lbnRzL2xpc3Rib3gvbGlzdGJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBSyxNQUFNLHVCQUF1QixDQUFDO0FBQ2hHLE9BQU8sRUFBVSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFFSCxlQUFlLEVBQ2YsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUVILGlCQUFpQixFQUNqQiwrQkFBK0IsRUFDL0IsOEJBQThCLEVBQ2pDLE1BQU0sZ0JBQWdCLENBQUM7O0FBWXhCLE1BQU0sT0FBTyx5QkFBeUI7SUFtQmxDLFlBQzRFLFlBQXVDLEVBQ2hFLFdBQXFDLEVBQzdFLFVBQW1DO1FBRjhCLGlCQUFZLEdBQVosWUFBWSxDQUEyQjtRQUNoRSxnQkFBVyxHQUFYLFdBQVcsQ0FBMEI7UUFDN0UsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFyQnRDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFRixjQUFTLEdBQUcsb0JBQW9CLENBQUM7SUFvQnBELENBQUM7SUFoQkosSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQVlELFFB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OERBRXhCLHlCQUF5QjsyRkFiakMsbUJBQW1CO2tCQVYvQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxjQUFjO29CQUN4QixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcscUJBQXFCO3lCQUNuQztxQkFDSjtpQkFDSjtzSEFFeUIsU0FBUztzQkFBOUIsV0FBVzt1QkFBQyxPQUFPO2dCQVV3RCxPQUFPO3NCQUFsRixlQUFlO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFFYSxRQUFRO3NCQUFwRixlQUFlO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFFeEQsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVJLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPV05fQVJST1csIExFRlRfQVJST1csIEVOVEVSLCBSSUdIVF9BUlJPVywgVVBfQVJST1csIFQgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgTmdab25lLCBPcHRpb25hbCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMvaW50ZXJuYWwvU3Vic2NyaXB0aW9uJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgVGhlTGlzdGJveENoYW5nZUV2ZW50VHlwZSxcbiAgICBUSEVfTElTVEJPWF9UT0tFTixcbiAgICBUSEVfTElTVEJPWF9QQVJFTlRfT1BUSU9OX1RPS0VOLFxuICAgIFRIRV9MSVNUQk9YX1BBUkVOVF9HUk9VUF9UT0tFTlxufSBmcm9tICcuL2xpc3Rib3gudHlwZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3RoZUxpc3Rib3hPcHRpb25dJyxcbiAgICBleHBvcnRBczogJ3RoZUxpc3Rib3hPcHRpb24nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUSEVfTElTVEJPWF9QQVJFTlRfT1BUSU9OX1RPS0VOLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgcHJpdmF0ZSBfYWN0aXZlID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3NOYW1lID0gJ3RoZS1saXN0Ym94LW9wdGlvbic7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgcHVibGljIF9vcHRpb25zOiBRdWVyeUxpc3Q8VGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZT47XG5cbiAgICBnZXQgaGFzQ2hpbGQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgZ2V0IGZpcnN0Q2hpbGQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zLmZpcnN0O1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHRoZU9wdGlvblZhbHVlOiB1bmtub3duO1xuXG4gICAgQElucHV0KCkgdGhlT3B0aW9uRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChUSEVfTElTVEJPWF9QQVJFTlRfT1BUSU9OX1RPS0VOKSBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwdWJsaWMgcGFyZW50T3B0aW9uOiBUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlLFxuICAgICAgICBASW5qZWN0KFRIRV9MSVNUQk9YX1BBUkVOVF9HUk9VUF9UT0tFTikgcHVibGljIHBhcmVudEdyb3VwOiBUaGVMaXN0Ym94R3JvdXBEaXJlY3RpdmUsXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge31cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHt9XG5cbiAgICBnZXRHcm91cHMoKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwczogVGhlTGlzdGJveEdyb3VwRGlyZWN0aXZlW10gPSBbXTtcbiAgICAgICAgdGhpcy5fb3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9uLnBhcmVudE9wdGlvbiAmJiBvcHRpb24ucGFyZW50T3B0aW9uID09PSB0aGlzICYmICFncm91cHMuaW5jbHVkZXMob3B0aW9uLnBhcmVudEdyb3VwKSkge1xuICAgICAgICAgICAgICAgIGdyb3Vwcy5wdXNoKG9wdGlvbi5wYXJlbnRHcm91cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZ3JvdXBzO1xuICAgIH1cblxuICAgIHNldEFjdGl2ZShhY3RpdmU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlID0gYWN0aXZlO1xuICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdmb2N1cycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnZm9jdXMnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEFjdGl2ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZTtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3RoZUxpc3Rib3hHcm91cF0nLFxuICAgIGV4cG9ydEFzOiAndGhlTGlzdGJveEdyb3VwJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVEhFX0xJU1RCT1hfUEFSRU5UX0dST1VQX1RPS0VOLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFRoZUxpc3Rib3hHcm91cERpcmVjdGl2ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaGVMaXN0Ym94R3JvdXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzc05hbWUgPSAndGhlLWxpc3Rib3gtZ3JvdXAnO1xuXG4gICAgb3B0aW9uczogVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZVtdID0gW107XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgcHVibGljIF9vcHRpb25zOiBRdWVyeUxpc3Q8VGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZT47XG5cbiAgICAvKipcbiAgICAgKiDlpKfkuo4gMSDooajnpLrmsLTlubPliIbnu4TvvIzlsI/kuo7nrYnkuo4gMSDooajnpLrlnoLnm7TliIbnu4RcbiAgICAgKi9cbiAgICBASW5wdXQoKSBob3Jpem9udGFsQ29sdW1uID0gMTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFRIRV9MSVNUQk9YX1BBUkVOVF9PUFRJT05fVE9LRU4pIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHB1YmxpYyBwYXJlbnRPcHRpb246IFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmUsXG4gICAgICAgIEBJbmplY3QoVEhFX0xJU1RCT1hfVE9LRU4pIHB1YmxpYyB0aGVMaXN0Qm94OiBUaGVMaXN0Ym94RGlyZWN0aXZlXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICBmaWx0ZXJPcHRpb25zKCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLl9vcHRpb25zLmZpbHRlcihfb3B0aW9uID0+IHtcbiAgICAgICAgICAgIGlmIChfb3B0aW9uLnBhcmVudEdyb3VwICYmIF9vcHRpb24ucGFyZW50R3JvdXAgPT09IHRoaXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRTaWJsaW5nR3JvdXBzKCkge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnRPcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudE9wdGlvbi5nZXRHcm91cHMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRoZUxpc3RCb3guZ3JvdXBzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFzQ2hpbGQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBnZXRGaXJzdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc1swXTtcbiAgICB9XG5cbiAgICBnZXRMYXN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zW3RoaXMub3B0aW9ucy5sZW5ndGggLSAxXTtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3RoZUxpc3RCb3hdJyxcbiAgICBleHBvcnRBczogJ3RoZUxpc3RCb3gnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUSEVfTElTVEJPWF9UT0tFTixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBUaGVMaXN0Ym94RGlyZWN0aXZlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRoZUxpc3Rib3hEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzTmFtZSA9ICd0aGUtbGlzdGJveC1jb250YWluZXInO1xuXG4gICAgcHJpdmF0ZSBfb3B0aW9uQ2hhbmdlc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcHJpdmF0ZSBfa2V5Ym9hcmRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHB1YmxpYyBhY3RpdmVPcHRpb246IFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmU7XG5cbiAgICBwdWJsaWMgZ3JvdXBzOiBUaGVMaXN0Ym94R3JvdXBEaXJlY3RpdmVbXSA9IFtdO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihUaGVMaXN0Ym94R3JvdXBEaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgcHJvdGVjdGVkIF9ncm91cHM6IFF1ZXJ5TGlzdDxUaGVMaXN0Ym94R3JvdXBEaXJlY3RpdmU+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHByb3RlY3RlZCBfb3B0aW9uczogUXVlcnlMaXN0PFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmU+O1xuXG4gICAgQElucHV0KCkga2V5Ym9hcmRDb250YWluZXI6IEhUTUxFbGVtZW50O1xuXG4gICAgQE91dHB1dCgpIHRoZUxpc3Rib3hDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRoZUxpc3Rib3hDaGFuZ2VFdmVudD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdab25lOiBOZ1pvbmUsIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVyR3JvdXBzKCk7XG4gICAgICAgIGlmICh0aGlzLmdyb3Vwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnNldEFjdGl2ZUl0ZW0obnVsbCwgdGhpcy5ncm91cHNbMF0uZ2V0Rmlyc3QoKSwgJ2luaXQnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vcHRpb25DaGFuZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5fb3B0aW9ucy5jaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDIwKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyR3JvdXBzKCk7XG4gICAgICAgICAgICB0aGlzLnNldEFjdGl2ZUl0ZW0odGhpcy5hY3RpdmVPcHRpb24sIHRoaXMuZ3JvdXBzWzBdLmdldEZpcnN0KCksICdpbml0Jyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9rZXlib2FyZFN1YnNjcmlwdGlvbiA9IGZyb21FdmVudDxLZXlib2FyZEV2ZW50PihcbiAgICAgICAgICAgICAgICB0aGlzLmtleWJvYXJkQ29udGFpbmVyIHx8IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICdrZXlkb3duJ1xuICAgICAgICAgICAgKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlS2V5ZG93bihldmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZmlsdGVyR3JvdXBzKCkge1xuICAgICAgICB0aGlzLmdyb3VwcyA9IHRoaXMuX2dyb3Vwcy5maWx0ZXIoZ3JvdXAgPT4ge1xuICAgICAgICAgICAgZ3JvdXAuZmlsdGVyT3B0aW9ucygpO1xuICAgICAgICAgICAgaWYgKCFncm91cC5wYXJlbnRPcHRpb24gJiYgZ3JvdXAuaGFzQ2hpbGQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGhhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgeyBrZXlDb2RlIH0gPSBldmVudDtcbiAgICAgICAgc3dpdGNoIChrZXlDb2RlKSB7XG4gICAgICAgICAgICBjYXNlIERPV05fQVJST1c6XG4gICAgICAgICAgICAgICAgdGhpcy5zZXROZXh0TGluZUFjdGl2ZSgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFVQX0FSUk9XOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0UHJldmlvdXNMaW5lQWN0aXZlKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUklHSFRfQVJST1c6XG4gICAgICAgICAgICAgICAgdGhpcy5zZXROZXh0SXRlbUFjdGl2ZSgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIExFRlRfQVJST1c6XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRQcmV2aW91c0l0ZW1BY3RpdmUoKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBFTlRFUjpcbiAgICAgICAgICAgICAgICB0aGlzLnRoZUxpc3Rib3hDaGFuZ2UuZW1pdCh7IG9wdGlvbjogdGhpcy5hY3RpdmVPcHRpb24sIHR5cGU6ICdzZWxlY3QnIH0pO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDihpBcbiAgICAgKi9cbiAgICBzZXRQcmV2aW91c0l0ZW1BY3RpdmUoKSB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZU9wdGlvbi5wYXJlbnRPcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbSh0aGlzLmFjdGl2ZU9wdGlvbiwgdGhpcy5hY3RpdmVPcHRpb24ucGFyZW50T3B0aW9uLCAncGFyZW50Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBncm91cE9wdGlvbnMgPSB0aGlzLmFjdGl2ZU9wdGlvbi5wYXJlbnRHcm91cC5vcHRpb25zO1xuICAgICAgICAgICAgbGV0IG9wdGlvbkluZGV4ID0gZ3JvdXBPcHRpb25zLmluZGV4T2YodGhpcy5hY3RpdmVPcHRpb24pO1xuICAgICAgICAgICAgbGV0IG5ld09wdGlvbkluZGV4ID0gb3B0aW9uSW5kZXggLSAxO1xuICAgICAgICAgICAgaWYgKG5ld09wdGlvbkluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEFjdGl2ZUl0ZW0odGhpcy5hY3RpdmVPcHRpb24sIGdyb3VwT3B0aW9uc1tuZXdPcHRpb25JbmRleF0sICd0dXJuJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZW50ZXJQcmV2aW91c0dyb3VwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDihpMg6ZSuXG4gICAgICovXG4gICAgc2V0TmV4dExpbmVBY3RpdmUoYWN0aXZlT3B0aW9uPzogVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZSkge1xuICAgICAgICBjb25zdCBfYWN0aXZlT3B0aW9uID0gYWN0aXZlT3B0aW9uID8gYWN0aXZlT3B0aW9uIDogdGhpcy5hY3RpdmVPcHRpb247XG4gICAgICAgIGNvbnN0IGdyb3VwT3B0aW9ucyA9IF9hY3RpdmVPcHRpb24ucGFyZW50R3JvdXAub3B0aW9ucztcbiAgICAgICAgbGV0IG9wdGlvbkluZGV4ID0gZ3JvdXBPcHRpb25zLmluZGV4T2YoX2FjdGl2ZU9wdGlvbik7XG4gICAgICAgIGxldCBuZXdPcHRpb25JbmRleCA9IG9wdGlvbkluZGV4ICsgX2FjdGl2ZU9wdGlvbi5wYXJlbnRHcm91cC5ob3Jpem9udGFsQ29sdW1uO1xuICAgICAgICBjb25zdCBsYXN0TGluZUxlbmd0aCA9IGdyb3VwT3B0aW9ucy5sZW5ndGggJSBfYWN0aXZlT3B0aW9uLnBhcmVudEdyb3VwLmhvcml6b250YWxDb2x1bW47XG4gICAgICAgIGNvbnN0IGxhc3RMaW5lU3RhcnRJbmRleCA9IGdyb3VwT3B0aW9ucy5sZW5ndGggLSAobGFzdExpbmVMZW5ndGggPiAwID8gbGFzdExpbmVMZW5ndGggOiAxKTtcbiAgICAgICAgbGV0IG5ld09wdGlvbiA9IG51bGw7XG4gICAgICAgIGlmIChuZXdPcHRpb25JbmRleCA8PSBncm91cE9wdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgbmV3T3B0aW9uID0gZ3JvdXBPcHRpb25zW25ld09wdGlvbkluZGV4XTtcbiAgICAgICAgfSBlbHNlIGlmIChvcHRpb25JbmRleCA8IGxhc3RMaW5lU3RhcnRJbmRleCkge1xuICAgICAgICAgICAgbmV3T3B0aW9uSW5kZXggPSBncm91cE9wdGlvbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIG5ld09wdGlvbiA9IGdyb3VwT3B0aW9uc1tuZXdPcHRpb25JbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5ld09wdGlvbikge1xuICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVJdGVtKHRoaXMuYWN0aXZlT3B0aW9uLCBuZXdPcHRpb24sICd0dXJuJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVudGVyTmV4dEdyb3VwKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDihpIg6ZSuXG4gICAgICovXG4gICAgc2V0TmV4dEl0ZW1BY3RpdmUoKSB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZU9wdGlvbi5oYXNDaGlsZCkge1xuICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVJdGVtKHRoaXMuYWN0aXZlT3B0aW9uLCB0aGlzLmFjdGl2ZU9wdGlvbi5maXJzdENoaWxkLCAnY2hpbGQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwT3B0aW9ucyA9IHRoaXMuYWN0aXZlT3B0aW9uLnBhcmVudEdyb3VwLm9wdGlvbnM7XG4gICAgICAgICAgICBsZXQgb3B0aW9uSW5kZXggPSBncm91cE9wdGlvbnMuaW5kZXhPZih0aGlzLmFjdGl2ZU9wdGlvbik7XG4gICAgICAgICAgICBsZXQgbmV3T3B0aW9uSW5kZXggPSBvcHRpb25JbmRleCArIDE7XG4gICAgICAgICAgICBpZiAobmV3T3B0aW9uSW5kZXggPD0gZ3JvdXBPcHRpb25zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEFjdGl2ZUl0ZW0odGhpcy5hY3RpdmVPcHRpb24sIGdyb3VwT3B0aW9uc1tuZXdPcHRpb25JbmRleF0sICd0dXJuJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZW50ZXJOZXh0R3JvdXAoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOKGkSDplK5cbiAgICAgKi9cbiAgICBzZXRQcmV2aW91c0xpbmVBY3RpdmUoKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwT3B0aW9ucyA9IHRoaXMuYWN0aXZlT3B0aW9uLnBhcmVudEdyb3VwLm9wdGlvbnM7XG4gICAgICAgIGxldCBvcHRpb25JbmRleCA9IGdyb3VwT3B0aW9ucy5pbmRleE9mKHRoaXMuYWN0aXZlT3B0aW9uKTtcbiAgICAgICAgbGV0IG5ld09wdGlvbkluZGV4ID0gb3B0aW9uSW5kZXggLSB0aGlzLmFjdGl2ZU9wdGlvbi5wYXJlbnRHcm91cC5ob3Jpem9udGFsQ29sdW1uO1xuICAgICAgICBpZiAobmV3T3B0aW9uSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVJdGVtKHRoaXMuYWN0aXZlT3B0aW9uLCBncm91cE9wdGlvbnNbbmV3T3B0aW9uSW5kZXhdLCAndHVybicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbnRlclByZXZpb3VzR3JvdXAoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVudGVyTmV4dEdyb3VwKCkge1xuICAgICAgICBjb25zdCBncm91cHMgPSB0aGlzLmFjdGl2ZU9wdGlvbi5wYXJlbnRHcm91cC5nZXRTaWJsaW5nR3JvdXBzKCk7XG4gICAgICAgIGNvbnN0IGdyb3VwSW5kZXggPSBncm91cHMuaW5kZXhPZih0aGlzLmFjdGl2ZU9wdGlvbi5wYXJlbnRHcm91cCk7XG4gICAgICAgIGxldCBuZXdHcm91cEluZGV4ID0gZ3JvdXBJbmRleCArIDE7XG4gICAgICAgIGlmIChuZXdHcm91cEluZGV4ID4gZ3JvdXBzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIG5ld0dyb3VwSW5kZXggPSAwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbSh0aGlzLmFjdGl2ZU9wdGlvbiwgZ3JvdXBzW25ld0dyb3VwSW5kZXhdLmdldEZpcnN0KCksICd0dXJuJyk7XG4gICAgfVxuXG4gICAgZW50ZXJQcmV2aW91c0dyb3VwKCkge1xuICAgICAgICBjb25zdCBncm91cHMgPSB0aGlzLmFjdGl2ZU9wdGlvbi5wYXJlbnRHcm91cC5nZXRTaWJsaW5nR3JvdXBzKCk7XG4gICAgICAgIGNvbnN0IGdyb3VwSW5kZXggPSBncm91cHMuaW5kZXhPZih0aGlzLmFjdGl2ZU9wdGlvbi5wYXJlbnRHcm91cCk7XG4gICAgICAgIGxldCBuZXdHcm91cEluZGV4ID0gZ3JvdXBJbmRleCAtIDE7XG4gICAgICAgIGlmIChuZXdHcm91cEluZGV4IDwgMCkge1xuICAgICAgICAgICAgbmV3R3JvdXBJbmRleCA9IGdyb3Vwcy5sZW5ndGggLSAxO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbSh0aGlzLmFjdGl2ZU9wdGlvbiwgZ3JvdXBzW25ld0dyb3VwSW5kZXhdLmdldExhc3QoKSwgJ3R1cm4nKTtcbiAgICB9XG5cbiAgICBzZXRBY3RpdmVJdGVtKHByZXZpb3VzOiBUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlIHwgbnVsbCwgb3B0aW9uOiBUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlLCB0eXBlOiBUaGVMaXN0Ym94Q2hhbmdlRXZlbnRUeXBlKSB7XG4gICAgICAgIGlmIChwcmV2aW91cykge1xuICAgICAgICAgICAgcHJldmlvdXMuc2V0QWN0aXZlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBvcHRpb24uc2V0QWN0aXZlKHRydWUpO1xuICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IG9wdGlvbjtcbiAgICAgICAgdGhpcy50aGVMaXN0Ym94Q2hhbmdlLmVtaXQoeyBvcHRpb24sIHR5cGUgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29wdGlvbkNoYW5nZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fa2V5Ym9hcmRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGhlTGlzdGJveENoYW5nZUV2ZW50IHtcbiAgICBvcHRpb246IFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmU7XG4gICAgdHlwZTogVGhlTGlzdGJveENoYW5nZUV2ZW50VHlwZTtcbn1cbiJdfQ==
368
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9jb21wb25lbnRzL2xpc3Rib3gvbGlzdGJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBSyxNQUFNLHVCQUF1QixDQUFDO0FBQ2hHLE9BQU8sRUFBVSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFFSCxlQUFlLEVBQ2YsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFHTCxNQUFNLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUVILGlCQUFpQixFQUNqQiwrQkFBK0IsRUFDL0IsOEJBQThCLEVBQ2pDLE1BQU0sZ0JBQWdCLENBQUM7O0FBWXhCLE1BQU0sT0FBTyx5QkFBeUI7SUFtQmxDLFlBQzRFLFlBQXVDLEVBQ2hFLFdBQXFDLEVBQzdFLFVBQW1DO1FBRjhCLGlCQUFZLEdBQVosWUFBWSxDQUEyQjtRQUNoRSxnQkFBVyxHQUFYLFdBQVcsQ0FBMEI7UUFDN0UsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFyQnRDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFRixjQUFTLEdBQUcsb0JBQW9CLENBQUM7SUFvQnBELENBQUM7SUFoQkosSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQVlELFFB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QUFRLEVBQUUsY0FBYztvQkFDeEIsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLHFCQUFxQjt5QkFDbkM7cUJBQ0o7aUJBQ0o7c0hBRXlCLFNBQVM7c0JBQTlCLFdBQVc7dUJBQUMsT0FBTztnQkFVd0QsT0FBTztzQkFBbEYsZUFBZTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBRWEsUUFBUTtzQkFBcEYsZUFBZTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBRXhELGlCQUFpQjtzQkFBekIsS0FBSztnQkFFSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET1dOX0FSUk9XLCBMRUZUX0FSUk9XLCBFTlRFUiwgUklHSFRfQVJST1csIFVQX0FSUk9XLCBUIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IE5nWm9uZSwgT3B0aW9uYWwsIFNraXBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzL2ludGVybmFsL1N1YnNjcmlwdGlvbic7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIFRoZUxpc3Rib3hDaGFuZ2VFdmVudFR5cGUsXG4gICAgVEhFX0xJU1RCT1hfVE9LRU4sXG4gICAgVEhFX0xJU1RCT1hfUEFSRU5UX09QVElPTl9UT0tFTixcbiAgICBUSEVfTElTVEJPWF9QQVJFTlRfR1JPVVBfVE9LRU5cbn0gZnJvbSAnLi9saXN0Ym94LnR5cGUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t0aGVMaXN0Ym94T3B0aW9uXScsXG4gICAgZXhwb3J0QXM6ICd0aGVMaXN0Ym94T3B0aW9uJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVEhFX0xJU1RCT1hfUEFSRU5UX09QVElPTl9UT0tFTixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQge1xuICAgIHByaXZhdGUgX2FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzTmFtZSA9ICd0aGUtbGlzdGJveC1vcHRpb24nO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHB1YmxpYyBfb3B0aW9uczogUXVlcnlMaXN0PFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmU+O1xuXG4gICAgZ2V0IGhhc0NoaWxkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIGdldCBmaXJzdENoaWxkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3B0aW9ucy5maXJzdDtcbiAgICB9XG5cbiAgICBASW5wdXQoKSB0aGVPcHRpb25WYWx1ZTogdW5rbm93bjtcblxuICAgIEBJbnB1dCgpIHRoZU9wdGlvbkRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoVEhFX0xJU1RCT1hfUEFSRU5UX09QVElPTl9UT0tFTikgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHVibGljIHBhcmVudE9wdGlvbjogVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZSxcbiAgICAgICAgQEluamVjdChUSEVfTElTVEJPWF9QQVJFTlRfR1JPVVBfVE9LRU4pIHB1YmxpYyBwYXJlbnRHcm91cDogVGhlTGlzdGJveEdyb3VwRGlyZWN0aXZlLFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7fVxuXG4gICAgZ2V0R3JvdXBzKCkge1xuICAgICAgICBjb25zdCBncm91cHM6IFRoZUxpc3Rib3hHcm91cERpcmVjdGl2ZVtdID0gW107XG4gICAgICAgIHRoaXMuX29wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgICAgICAgaWYgKG9wdGlvbi5wYXJlbnRPcHRpb24gJiYgb3B0aW9uLnBhcmVudE9wdGlvbiA9PT0gdGhpcyAmJiAhZ3JvdXBzLmluY2x1ZGVzKG9wdGlvbi5wYXJlbnRHcm91cCkpIHtcbiAgICAgICAgICAgICAgICBncm91cHMucHVzaChvcHRpb24ucGFyZW50R3JvdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGdyb3VwcztcbiAgICB9XG5cbiAgICBzZXRBY3RpdmUoYWN0aXZlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZSA9IGFjdGl2ZTtcbiAgICAgICAgaWYgKGFjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZm9jdXMnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2ZvY3VzJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRBY3RpdmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmU7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t0aGVMaXN0Ym94R3JvdXBdJyxcbiAgICBleHBvcnRBczogJ3RoZUxpc3Rib3hHcm91cCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRIRV9MSVNUQk9YX1BBUkVOVF9HUk9VUF9UT0tFTixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBUaGVMaXN0Ym94R3JvdXBEaXJlY3RpdmVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGhlTGlzdGJveEdyb3VwRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3NOYW1lID0gJ3RoZS1saXN0Ym94LWdyb3VwJztcblxuICAgIG9wdGlvbnM6IFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmVbXSA9IFtdO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHB1YmxpYyBfb3B0aW9uczogUXVlcnlMaXN0PFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmU+O1xuXG4gICAgLyoqXG4gICAgICog5aSn5LqOIDEg6KGo56S65rC05bmz5YiG57uE77yM5bCP5LqO562J5LqOIDEg6KGo56S65Z6C55u05YiG57uEXG4gICAgICovXG4gICAgQElucHV0KCkgaG9yaXpvbnRhbENvbHVtbiA9IDE7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChUSEVfTElTVEJPWF9QQVJFTlRfT1BUSU9OX1RPS0VOKSBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwdWJsaWMgcGFyZW50T3B0aW9uOiBUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlLFxuICAgICAgICBASW5qZWN0KFRIRV9MSVNUQk9YX1RPS0VOKSBwdWJsaWMgdGhlTGlzdEJveDogVGhlTGlzdGJveERpcmVjdGl2ZVxuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge31cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgZmlsdGVyT3B0aW9ucygpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5fb3B0aW9ucy5maWx0ZXIoX29wdGlvbiA9PiB7XG4gICAgICAgICAgICBpZiAoX29wdGlvbi5wYXJlbnRHcm91cCAmJiBfb3B0aW9uLnBhcmVudEdyb3VwID09PSB0aGlzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0U2libGluZ0dyb3VwcygpIHtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50T3B0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnRPcHRpb24uZ2V0R3JvdXBzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aGVMaXN0Qm94Lmdyb3VwcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhc0NoaWxkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgZ2V0Rmlyc3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNbMF07XG4gICAgfVxuXG4gICAgZ2V0TGFzdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc1t0aGlzLm9wdGlvbnMubGVuZ3RoIC0gMV07XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t0aGVMaXN0Qm94XScsXG4gICAgZXhwb3J0QXM6ICd0aGVMaXN0Qm94JyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVEhFX0xJU1RCT1hfVE9LRU4sXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogVGhlTGlzdGJveERpcmVjdGl2ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaGVMaXN0Ym94RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzc05hbWUgPSAndGhlLWxpc3Rib3gtY29udGFpbmVyJztcblxuICAgIHByaXZhdGUgX29wdGlvbkNoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHByaXZhdGUgX2tleWJvYXJkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwdWJsaWMgYWN0aXZlT3B0aW9uOiBUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlO1xuXG4gICAgcHVibGljIGdyb3VwczogVGhlTGlzdGJveEdyb3VwRGlyZWN0aXZlW10gPSBbXTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oVGhlTGlzdGJveEdyb3VwRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHByb3RlY3RlZCBfZ3JvdXBzOiBRdWVyeUxpc3Q8VGhlTGlzdGJveEdyb3VwRGlyZWN0aXZlPjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBwcm90ZWN0ZWQgX29wdGlvbnM6IFF1ZXJ5TGlzdDxUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlPjtcblxuICAgIEBJbnB1dCgpIGtleWJvYXJkQ29udGFpbmVyOiBIVE1MRWxlbWVudDtcblxuICAgIEBPdXRwdXQoKSB0aGVMaXN0Ym94Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUaGVMaXN0Ym94Q2hhbmdlRXZlbnQ+KCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lLCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlckdyb3VwcygpO1xuICAgICAgICBpZiAodGhpcy5ncm91cHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVJdGVtKG51bGwsIHRoaXMuZ3JvdXBzWzBdLmdldEZpcnN0KCksICdpbml0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fb3B0aW9uQ2hhbmdlc1N1YnNjcmlwdGlvbiA9IHRoaXMuX29wdGlvbnMuY2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgyMCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckdyb3VwcygpO1xuICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVJdGVtKHRoaXMuYWN0aXZlT3B0aW9uLCB0aGlzLmdyb3Vwc1swXS5nZXRGaXJzdCgpLCAnaW5pdCcpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fa2V5Ym9hcmRTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oXG4gICAgICAgICAgICAgICAgdGhpcy5rZXlib2FyZENvbnRhaW5lciB8fCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAna2V5ZG93bidcbiAgICAgICAgICAgICkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUtleWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZpbHRlckdyb3VwcygpIHtcbiAgICAgICAgdGhpcy5ncm91cHMgPSB0aGlzLl9ncm91cHMuZmlsdGVyKGdyb3VwID0+IHtcbiAgICAgICAgICAgIGdyb3VwLmZpbHRlck9wdGlvbnMoKTtcbiAgICAgICAgICAgIGlmICghZ3JvdXAucGFyZW50T3B0aW9uICYmIGdyb3VwLmhhc0NoaWxkKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHsga2V5Q29kZSB9ID0gZXZlbnQ7XG4gICAgICAgIHN3aXRjaCAoa2V5Q29kZSkge1xuICAgICAgICAgICAgY2FzZSBET1dOX0FSUk9XOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0TmV4dExpbmVBY3RpdmUoKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBVUF9BUlJPVzpcbiAgICAgICAgICAgICAgICB0aGlzLnNldFByZXZpb3VzTGluZUFjdGl2ZSgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFJJR0hUX0FSUk9XOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0TmV4dEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBMRUZUX0FSUk9XOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0UHJldmlvdXNJdGVtQWN0aXZlKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRU5URVI6XG4gICAgICAgICAgICAgICAgdGhpcy50aGVMaXN0Ym94Q2hhbmdlLmVtaXQoeyBvcHRpb246IHRoaXMuYWN0aXZlT3B0aW9uLCB0eXBlOiAnc2VsZWN0JyB9KTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog4oaQXG4gICAgICovXG4gICAgc2V0UHJldmlvdXNJdGVtQWN0aXZlKCkge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVPcHRpb24ucGFyZW50T3B0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNldEFjdGl2ZUl0ZW0odGhpcy5hY3RpdmVPcHRpb24sIHRoaXMuYWN0aXZlT3B0aW9uLnBhcmVudE9wdGlvbiwgJ3BhcmVudCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBPcHRpb25zID0gdGhpcy5hY3RpdmVPcHRpb24ucGFyZW50R3JvdXAub3B0aW9ucztcbiAgICAgICAgICAgIGxldCBvcHRpb25JbmRleCA9IGdyb3VwT3B0aW9ucy5pbmRleE9mKHRoaXMuYWN0aXZlT3B0aW9uKTtcbiAgICAgICAgICAgIGxldCBuZXdPcHRpb25JbmRleCA9IG9wdGlvbkluZGV4IC0gMTtcbiAgICAgICAgICAgIGlmIChuZXdPcHRpb25JbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVJdGVtKHRoaXMuYWN0aXZlT3B0aW9uLCBncm91cE9wdGlvbnNbbmV3T3B0aW9uSW5kZXhdLCAndHVybicpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVudGVyUHJldmlvdXNHcm91cCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog4oaTIOmUrlxuICAgICAqL1xuICAgIHNldE5leHRMaW5lQWN0aXZlKGFjdGl2ZU9wdGlvbj86IFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmUpIHtcbiAgICAgICAgY29uc3QgX2FjdGl2ZU9wdGlvbiA9IGFjdGl2ZU9wdGlvbiA/IGFjdGl2ZU9wdGlvbiA6IHRoaXMuYWN0aXZlT3B0aW9uO1xuICAgICAgICBjb25zdCBncm91cE9wdGlvbnMgPSBfYWN0aXZlT3B0aW9uLnBhcmVudEdyb3VwLm9wdGlvbnM7XG4gICAgICAgIGxldCBvcHRpb25JbmRleCA9IGdyb3VwT3B0aW9ucy5pbmRleE9mKF9hY3RpdmVPcHRpb24pO1xuICAgICAgICBsZXQgbmV3T3B0aW9uSW5kZXggPSBvcHRpb25JbmRleCArIF9hY3RpdmVPcHRpb24ucGFyZW50R3JvdXAuaG9yaXpvbnRhbENvbHVtbjtcbiAgICAgICAgY29uc3QgbGFzdExpbmVMZW5ndGggPSBncm91cE9wdGlvbnMubGVuZ3RoICUgX2FjdGl2ZU9wdGlvbi5wYXJlbnRHcm91cC5ob3Jpem9udGFsQ29sdW1uO1xuICAgICAgICBjb25zdCBsYXN0TGluZVN0YXJ0SW5kZXggPSBncm91cE9wdGlvbnMubGVuZ3RoIC0gKGxhc3RMaW5lTGVuZ3RoID4gMCA/IGxhc3RMaW5lTGVuZ3RoIDogMSk7XG4gICAgICAgIGxldCBuZXdPcHRpb24gPSBudWxsO1xuICAgICAgICBpZiAobmV3T3B0aW9uSW5kZXggPD0gZ3JvdXBPcHRpb25zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIG5ld09wdGlvbiA9IGdyb3VwT3B0aW9uc1tuZXdPcHRpb25JbmRleF07XG4gICAgICAgIH0gZWxzZSBpZiAob3B0aW9uSW5kZXggPCBsYXN0TGluZVN0YXJ0SW5kZXgpIHtcbiAgICAgICAgICAgIG5ld09wdGlvbkluZGV4ID0gZ3JvdXBPcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBuZXdPcHRpb24gPSBncm91cE9wdGlvbnNbbmV3T3B0aW9uSW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdPcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbSh0aGlzLmFjdGl2ZU9wdGlvbiwgbmV3T3B0aW9uLCAndHVybicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbnRlck5leHRHcm91cCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog4oaSIOmUrlxuICAgICAqL1xuICAgIHNldE5leHRJdGVtQWN0aXZlKCkge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVPcHRpb24uaGFzQ2hpbGQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbSh0aGlzLmFjdGl2ZU9wdGlvbiwgdGhpcy5hY3RpdmVPcHRpb24uZmlyc3RDaGlsZCwgJ2NoaWxkJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBncm91cE9wdGlvbnMgPSB0aGlzLmFjdGl2ZU9wdGlvbi5wYXJlbnRHcm91cC5vcHRpb25zO1xuICAgICAgICAgICAgbGV0IG9wdGlvbkluZGV4ID0gZ3JvdXBPcHRpb25zLmluZGV4T2YodGhpcy5hY3RpdmVPcHRpb24pO1xuICAgICAgICAgICAgbGV0IG5ld09wdGlvbkluZGV4ID0gb3B0aW9uSW5kZXggKyAxO1xuICAgICAgICAgICAgaWYgKG5ld09wdGlvbkluZGV4IDw9IGdyb3VwT3B0aW9ucy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVJdGVtKHRoaXMuYWN0aXZlT3B0aW9uLCBncm91cE9wdGlvbnNbbmV3T3B0aW9uSW5kZXhdLCAndHVybicpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVudGVyTmV4dEdyb3VwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDihpEg6ZSuXG4gICAgICovXG4gICAgc2V0UHJldmlvdXNMaW5lQWN0aXZlKCkge1xuICAgICAgICBjb25zdCBncm91cE9wdGlvbnMgPSB0aGlzLmFjdGl2ZU9wdGlvbi5wYXJlbnRHcm91cC5vcHRpb25zO1xuICAgICAgICBsZXQgb3B0aW9uSW5kZXggPSBncm91cE9wdGlvbnMuaW5kZXhPZih0aGlzLmFjdGl2ZU9wdGlvbik7XG4gICAgICAgIGxldCBuZXdPcHRpb25JbmRleCA9IG9wdGlvbkluZGV4IC0gdGhpcy5hY3RpdmVPcHRpb24ucGFyZW50R3JvdXAuaG9yaXpvbnRhbENvbHVtbjtcbiAgICAgICAgaWYgKG5ld09wdGlvbkluZGV4ID49IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbSh0aGlzLmFjdGl2ZU9wdGlvbiwgZ3JvdXBPcHRpb25zW25ld09wdGlvbkluZGV4XSwgJ3R1cm4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW50ZXJQcmV2aW91c0dyb3VwKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlbnRlck5leHRHcm91cCgpIHtcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gdGhpcy5hY3RpdmVPcHRpb24ucGFyZW50R3JvdXAuZ2V0U2libGluZ0dyb3VwcygpO1xuICAgICAgICBjb25zdCBncm91cEluZGV4ID0gZ3JvdXBzLmluZGV4T2YodGhpcy5hY3RpdmVPcHRpb24ucGFyZW50R3JvdXApO1xuICAgICAgICBsZXQgbmV3R3JvdXBJbmRleCA9IGdyb3VwSW5kZXggKyAxO1xuICAgICAgICBpZiAobmV3R3JvdXBJbmRleCA+IGdyb3Vwcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBuZXdHcm91cEluZGV4ID0gMDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEFjdGl2ZUl0ZW0odGhpcy5hY3RpdmVPcHRpb24sIGdyb3Vwc1tuZXdHcm91cEluZGV4XS5nZXRGaXJzdCgpLCAndHVybicpO1xuICAgIH1cblxuICAgIGVudGVyUHJldmlvdXNHcm91cCgpIHtcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gdGhpcy5hY3RpdmVPcHRpb24ucGFyZW50R3JvdXAuZ2V0U2libGluZ0dyb3VwcygpO1xuICAgICAgICBjb25zdCBncm91cEluZGV4ID0gZ3JvdXBzLmluZGV4T2YodGhpcy5hY3RpdmVPcHRpb24ucGFyZW50R3JvdXApO1xuICAgICAgICBsZXQgbmV3R3JvdXBJbmRleCA9IGdyb3VwSW5kZXggLSAxO1xuICAgICAgICBpZiAobmV3R3JvdXBJbmRleCA8IDApIHtcbiAgICAgICAgICAgIG5ld0dyb3VwSW5kZXggPSBncm91cHMubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEFjdGl2ZUl0ZW0odGhpcy5hY3RpdmVPcHRpb24sIGdyb3Vwc1tuZXdHcm91cEluZGV4XS5nZXRMYXN0KCksICd0dXJuJyk7XG4gICAgfVxuXG4gICAgc2V0QWN0aXZlSXRlbShwcmV2aW91czogVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZSB8IG51bGwsIG9wdGlvbjogVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZSwgdHlwZTogVGhlTGlzdGJveENoYW5nZUV2ZW50VHlwZSkge1xuICAgICAgICBpZiAocHJldmlvdXMpIHtcbiAgICAgICAgICAgIHByZXZpb3VzLnNldEFjdGl2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgb3B0aW9uLnNldEFjdGl2ZSh0cnVlKTtcbiAgICAgICAgdGhpcy5hY3RpdmVPcHRpb24gPSBvcHRpb247XG4gICAgICAgIHRoaXMudGhlTGlzdGJveENoYW5nZS5lbWl0KHsgb3B0aW9uLCB0eXBlIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vcHRpb25DaGFuZ2VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2tleWJvYXJkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRoZUxpc3Rib3hDaGFuZ2VFdmVudCB7XG4gICAgb3B0aW9uOiBUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlO1xuICAgIHR5cGU6IFRoZUxpc3Rib3hDaGFuZ2VFdmVudFR5cGU7XG59XG4iXX0=