@worktile/theia 14.3.9 → 14.3.11

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 (109) hide show
  1. package/components/contextmenu/contextmenu.component.d.ts +3 -2
  2. package/components/contextmenu/contextmenu.component.scss +7 -0
  3. package/components/index.d.ts +11 -0
  4. package/components/index.scss +10 -0
  5. package/constants/index.d.ts +1 -0
  6. package/editor.module.d.ts +7 -5
  7. package/esm2020/components/action/prevent-default.mjs +4 -4
  8. package/esm2020/components/color-select/color-select.component.mjs +4 -4
  9. package/esm2020/components/column-resize/column-resize-notifier.mjs +4 -4
  10. package/esm2020/components/column-resize/column-resize.directive.mjs +6 -6
  11. package/esm2020/components/column-resize/column-resize.module.mjs +9 -9
  12. package/esm2020/components/column-resize/event-dispatcher.mjs +4 -4
  13. package/esm2020/components/column-resize/overlay-handle.component.mjs +4 -4
  14. package/esm2020/components/column-resize/resizing.store.mjs +4 -4
  15. package/esm2020/components/contextmenu/contextmenu.component.mjs +15 -9
  16. package/esm2020/components/conversion-hint/conversion-hint.component.mjs +4 -4
  17. package/esm2020/components/element/element.component.mjs +4 -4
  18. package/esm2020/components/index.mjs +12 -0
  19. package/esm2020/components/inline-toolbar/inline-toolbar.component.mjs +4 -4
  20. package/esm2020/components/listbox/listbox.mjs +10 -10
  21. package/esm2020/components/plugin-menu/plugin-menu.component.mjs +4 -4
  22. package/esm2020/components/table-select/table-select.component.mjs +4 -4
  23. package/esm2020/components/template/template.component.mjs +4 -4
  24. package/esm2020/components/text/text.component.mjs +4 -4
  25. package/esm2020/components/toolbar/toolbar.component.mjs +4 -4
  26. package/esm2020/components/toolbar-dropdown/toolbar-dropdown.component.mjs +4 -4
  27. package/esm2020/components/toolbar-group/toolbar-group.component.mjs +4 -4
  28. package/esm2020/components/toolbar-item/toolbar-item.component.mjs +4 -4
  29. package/esm2020/constants/index.mjs +2 -1
  30. package/esm2020/core/toolbar-item/base-toolbar-item.mjs +7 -7
  31. package/esm2020/editor.component.mjs +4 -4
  32. package/esm2020/editor.module.mjs +12 -9
  33. package/esm2020/interfaces/view-base.mjs +4 -4
  34. package/esm2020/pipes.mjs +7 -7
  35. package/esm2020/plugins/blockquote/blockquote.component.mjs +4 -4
  36. package/esm2020/plugins/code/code.component.mjs +6 -9
  37. package/esm2020/plugins/color/toolbar-item.component.mjs +4 -4
  38. package/esm2020/plugins/hr/hr.component.mjs +4 -4
  39. package/esm2020/plugins/image/image.component.mjs +4 -4
  40. package/esm2020/plugins/indent/indent.editor.mjs +10 -4
  41. package/esm2020/plugins/indent/on-keydown-indent.mjs +5 -1
  42. package/esm2020/plugins/inline-code/inline-code.component.mjs +4 -4
  43. package/esm2020/plugins/link/edit/link-edit.component.mjs +4 -4
  44. package/esm2020/plugins/link/hover/link-hover.component.mjs +4 -4
  45. package/esm2020/plugins/link/link.component.mjs +7 -7
  46. package/esm2020/plugins/list/components/bulleted-list.component.mjs +5 -5
  47. package/esm2020/plugins/list/components/list-item.component.mjs +4 -4
  48. package/esm2020/plugins/list/components/numbered-list.component.mjs +5 -5
  49. package/esm2020/plugins/mention/suggestion.component.mjs +4 -4
  50. package/esm2020/plugins/quick-insert/components/quick-insert.component.mjs +4 -4
  51. package/esm2020/plugins/table/components/insert-mark/insert-mark.component.mjs +8 -14
  52. package/esm2020/plugins/table/components/row/row.component.mjs +24 -18
  53. package/esm2020/plugins/table/components/table.component.mjs +218 -40
  54. package/esm2020/plugins/table/components/td/td.component.mjs +16 -45
  55. package/esm2020/plugins/table/components/toolbar/table-options.component.mjs +28 -13
  56. package/esm2020/plugins/table/components/toolbar/table-toolbar.component.mjs +47 -17
  57. package/esm2020/plugins/table/table.editor.mjs +79 -19
  58. package/esm2020/plugins/table/table.pipe.mjs +25 -6
  59. package/esm2020/plugins/table/table.plugin.mjs +2 -1
  60. package/esm2020/plugins/table/table.service.mjs +8 -9
  61. package/esm2020/plugins/table/table.store.mjs +71 -77
  62. package/esm2020/plugins/table/table.types.mjs +16 -4
  63. package/esm2020/plugins/table/toolbar-item.component.mjs +4 -4
  64. package/esm2020/plugins/table/transforms/index.mjs +8 -0
  65. package/esm2020/plugins/table/transforms/insert-column.mjs +11 -3
  66. package/esm2020/plugins/table/transforms/insert-row.mjs +36 -29
  67. package/esm2020/plugins/table/utils/add-columns.mjs +16 -2
  68. package/esm2020/plugins/table/utils/create-table.mjs +5 -3
  69. package/esm2020/plugins/table/utils/index.mjs +3 -2
  70. package/esm2020/plugins/table/utils/is-selection-in-table.mjs +42 -1
  71. package/esm2020/plugins/table/utils/set-menu-cell-invisibility.mjs +37 -7
  72. package/esm2020/plugins/table/utils/table-position.mjs +1 -1
  73. package/esm2020/plugins/todo-item/todo-item.component.mjs +5 -5
  74. package/esm2020/plugins/vertical-align/toolbar-item.component.mjs +4 -4
  75. package/esm2020/public-api.mjs +4 -12
  76. package/esm2020/services/color-select.service.mjs +4 -4
  77. package/esm2020/services/context.service.mjs +31 -7
  78. package/esm2020/services/table-contextmenu.service.mjs +106 -13
  79. package/esm2020/services/toolbar.service.mjs +4 -4
  80. package/esm2020/utils/copy-node.mjs +28 -13
  81. package/esm2020/utils/refocus.mjs +7 -7
  82. package/fesm2015/worktile-theia.mjs +1740 -1214
  83. package/fesm2015/worktile-theia.mjs.map +1 -1
  84. package/fesm2020/worktile-theia.mjs +1719 -1209
  85. package/fesm2020/worktile-theia.mjs.map +1 -1
  86. package/package.json +1 -1
  87. package/plugins/table/components/mixins.scss +11 -0
  88. package/plugins/table/components/row/row.component.d.ts +5 -3
  89. package/plugins/table/components/table.component.d.ts +29 -10
  90. package/plugins/table/components/table.component.scss +171 -70
  91. package/plugins/table/components/td/td.component.d.ts +3 -4
  92. package/plugins/table/components/toolbar/table-toolbar.component.d.ts +10 -3
  93. package/plugins/table/table.editor.d.ts +8 -4
  94. package/plugins/table/table.pipe.d.ts +6 -1
  95. package/plugins/table/table.service.d.ts +1 -1
  96. package/plugins/table/table.store.d.ts +10 -3
  97. package/plugins/table/table.types.d.ts +17 -3
  98. package/plugins/table/transforms/index.d.ts +7 -0
  99. package/plugins/table/utils/add-columns.d.ts +1 -1
  100. package/plugins/table/utils/index.d.ts +2 -1
  101. package/plugins/table/utils/is-selection-in-table.d.ts +8 -1
  102. package/plugins/table/utils/set-menu-cell-invisibility.d.ts +6 -1
  103. package/plugins/table/utils/table-position.d.ts +2 -2
  104. package/public-api.d.ts +3 -11
  105. package/services/context.service.d.ts +7 -2
  106. package/services/table-contextmenu.service.d.ts +16 -3
  107. package/styles/index.scss +1 -9
  108. package/utils/copy-node.d.ts +3 -1
  109. package/utils/refocus.d.ts +1 -2
@@ -1,4 +1,8 @@
1
1
  import { Component, Input } from '@angular/core';
2
+ import { Transforms } from 'slate';
3
+ import { TableOperations } from '../../table.types';
4
+ import { TheEditor } from '../../../../interfaces';
5
+ import { ELEMENT_TO_COMPONENT } from 'slate-angular';
2
6
  import * as i0 from "@angular/core";
3
7
  import * as i1 from "ngx-tethys/popover";
4
8
  import * as i2 from "@angular/common";
@@ -8,29 +12,35 @@ export class TheTableOptionsComponent {
8
12
  constructor(popoverRef) {
9
13
  this.popoverRef = popoverRef;
10
14
  this.tableDropdownList = [
11
- // {
12
- // name: '表头行',
13
- // key: 'headerRow'
14
- // },
15
15
  {
16
- name: '表头列',
17
- key: 'headerColumn'
16
+ name: '标题行',
17
+ key: TableOperations.headerRow
18
+ },
19
+ {
20
+ name: '标题列',
21
+ key: TableOperations.headerColumn
18
22
  },
19
23
  {
20
24
  name: '序号列',
21
- key: 'numberedColumn'
25
+ key: TableOperations.numberedColumn
22
26
  }
23
27
  ];
24
28
  }
25
29
  get table() {
26
- return this.tableStore && this.tableStore.getTableEntry(this.editor)[0];
30
+ return this.tableStore && this.tableStore.getTableEntry()[0];
27
31
  }
28
32
  ngOnInit() {
29
33
  this.setColumnOptions();
30
34
  }
31
35
  setColumnOptions() {
32
36
  this.tableDropdownList.forEach(item => {
33
- item.isActive = (this.table.options && this.table.options[item.key]) || false;
37
+ const tableComponent = ELEMENT_TO_COMPONENT.get(this.table);
38
+ if (item.key === TableOperations.headerRow) {
39
+ item.isActive = tableComponent.headerRow;
40
+ }
41
+ else {
42
+ item.isActive = (this.table.options && this.table.options[item.key]) || false;
43
+ }
34
44
  });
35
45
  }
36
46
  setTableOptions(event, option) {
@@ -44,10 +54,15 @@ export class TheTableOptionsComponent {
44
54
  ...this.table.options,
45
55
  ...tableOption
46
56
  });
57
+ // headerRow 兼容代码, 取消标题行的时候同时设置 row 中的 header 属性
58
+ if (option.key === TableOperations.headerRow && !tableOption[option.key] && this.table.children[0].header) {
59
+ const rowPath = TheEditor.findPath(this.editor, this.table.children[0]);
60
+ Transforms.setNodes(this.editor, { header: null }, { at: rowPath });
61
+ }
47
62
  }
48
63
  }
49
- TheTableOptionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TheTableOptionsComponent, deps: [{ token: i1.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
50
- TheTableOptionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TheTableOptionsComponent, selector: "the-table-options", inputs: { tableStore: "tableStore", editor: "editor" }, ngImport: i0, template: `
64
+ TheTableOptionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheTableOptionsComponent, deps: [{ token: i1.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
65
+ TheTableOptionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TheTableOptionsComponent, selector: "the-table-options", inputs: { tableStore: "tableStore", editor: "editor" }, ngImport: i0, template: `
51
66
  <div class="thy-dropdown-menu table-drop-menu">
52
67
  <ng-container *ngFor="let option of tableDropdownList">
53
68
  <a thyDropdownMenuItem href="javascript:;" (mousedown)="setTableOptions($event, option)">
@@ -59,7 +74,7 @@ TheTableOptionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0
59
74
  </ng-container>
60
75
  </div>
61
76
  `, isInline: true, dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i4.ThyDropdownMenuItemDirective, selector: "[thyDropdownMenuItem]", inputs: ["thyType", "thyDisabled"] }, { kind: "directive", type: i4.ThyDropdownMenuItemNameDirective, selector: "[thyDropdownMenuItemName]" }, { kind: "directive", type: i4.ThyDropdownMenuItemIconDirective, selector: "[thyDropdownMenuItemIcon]" }] });
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TheTableOptionsComponent, decorators: [{
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheTableOptionsComponent, decorators: [{
63
78
  type: Component,
64
79
  args: [{
65
80
  selector: 'the-table-options',
@@ -81,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
81
96
  }], editor: [{
82
97
  type: Input
83
98
  }] } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtb3B0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS9jb21wb25lbnRzL3Rvb2xiYXIvdGFibGUtb3B0aW9ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQWdCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFxQnZFLE1BQU0sT0FBTyx3QkFBd0I7SUF3QmpDLFlBQW9CLFVBQW1EO1FBQW5ELGVBQVUsR0FBVixVQUFVLENBQXlDO1FBZnZFLHNCQUFpQixHQUEwQjtZQUN2QyxJQUFJO1lBQ0osbUJBQW1CO1lBQ25CLHVCQUF1QjtZQUN2QixLQUFLO1lBQ0w7Z0JBQ0ksSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsR0FBRyxFQUFFLGNBQWM7YUFDdEI7WUFDRDtnQkFDSSxJQUFJLEVBQUUsS0FBSztnQkFDWCxHQUFHLEVBQUUsZ0JBQWdCO2FBQ3hCO1NBQ0osQ0FBQztJQUV3RSxDQUFDO0lBbkIzRSxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFtQkQsUUFBUTtRQUNKLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUM7UUFDbEYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWlCLEVBQUUsTUFBMkI7UUFDMUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkYsYUFBYSxDQUFDLFFBQVEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDMUMsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN6QyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTztZQUNyQixHQUFHLFdBQVc7U0FDakIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7c0hBL0NRLHdCQUF3QjswR0FBeEIsd0JBQXdCLGlIQWJ2Qjs7Ozs7Ozs7Ozs7S0FXVDs0RkFFUSx3QkFBd0I7a0JBZnBDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsUUFBUSxFQUFFOzs7Ozs7Ozs7OztLQVdUO2lCQUNKO29HQUVZLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeVBvcG92ZXJSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgVGFibGVTdG9yZSB9IGZyb20gJy4uLy4uL3RhYmxlLnN0b3JlJztcbmltcG9ydCB7IFRhYmxlRHJvcGRvd25PcHRpb24gfSBmcm9tICcuLi8uLi90YWJsZS50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLXRhYmxlLW9wdGlvbnMnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aHktZHJvcGRvd24tbWVudSB0YWJsZS1kcm9wLW1lbnVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiB0YWJsZURyb3Bkb3duTGlzdFwiPlxuICAgICAgICAgICAgICAgIDxhIHRoeURyb3Bkb3duTWVudUl0ZW0gaHJlZj1cImphdmFzY3JpcHQ6O1wiIChtb3VzZWRvd24pPVwic2V0VGFibGVPcHRpb25zKCRldmVudCwgb3B0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aHlEcm9wZG93bk1lbnVJdGVtTmFtZT57eyBvcHRpb24ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvcHRpb24uaXNBY3RpdmVcIiB0aHlEcm9wZG93bk1lbnVJdGVtSWNvbiBjbGFzcz1cInRleHQtcHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiY2hlY2tcIj48L3RoeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIGBcbn0pXG5leHBvcnQgY2xhc3MgVGhlVGFibGVPcHRpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSB0YWJsZVN0b3JlOiBUYWJsZVN0b3JlO1xuXG4gICAgQElucHV0KCkgZWRpdG9yOiBFZGl0b3I7XG5cbiAgICBnZXQgdGFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlU3RvcmUgJiYgdGhpcy50YWJsZVN0b3JlLmdldFRhYmxlRW50cnkodGhpcy5lZGl0b3IpWzBdO1xuICAgIH1cblxuICAgIHRhYmxlRHJvcGRvd25MaXN0OiBUYWJsZURyb3Bkb3duT3B0aW9uW10gPSBbXG4gICAgICAgIC8vIHtcbiAgICAgICAgLy8gICAgIG5hbWU6ICfooajlpLTooYwnLFxuICAgICAgICAvLyAgICAga2V5OiAnaGVhZGVyUm93J1xuICAgICAgICAvLyB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAn6KGo5aS05YiXJyxcbiAgICAgICAgICAgIGtleTogJ2hlYWRlckNvbHVtbidcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ+W6j+WPt+WIlycsXG4gICAgICAgICAgICBrZXk6ICdudW1iZXJlZENvbHVtbidcbiAgICAgICAgfVxuICAgIF07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8VGhlVGFibGVPcHRpb25zQ29tcG9uZW50Pikge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldENvbHVtbk9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICBzZXRDb2x1bW5PcHRpb25zKCkge1xuICAgICAgICB0aGlzLnRhYmxlRHJvcGRvd25MaXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLmlzQWN0aXZlID0gKHRoaXMudGFibGUub3B0aW9ucyAmJiB0aGlzLnRhYmxlLm9wdGlvbnNbaXRlbS5rZXldKSB8fCBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0VGFibGVPcHRpb25zKGV2ZW50OiBNb3VzZUV2ZW50LCBvcHRpb246IFRhYmxlRHJvcGRvd25PcHRpb24pIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPcHRpb24gPSB0aGlzLnRhYmxlRHJvcGRvd25MaXN0LmZpbmQoaXRlbSA9PiBpdGVtLmtleSA9PT0gb3B0aW9uLmtleSk7XG4gICAgICAgIGN1cnJlbnRPcHRpb24uaXNBY3RpdmUgPSAhb3B0aW9uLmlzQWN0aXZlO1xuICAgICAgICBjb25zdCB0YWJsZU9wdGlvbiA9IHt9O1xuICAgICAgICB0YWJsZU9wdGlvbltvcHRpb24ua2V5XSA9IGN1cnJlbnRPcHRpb24uaXNBY3RpdmUgfHwgbnVsbDtcbiAgICAgICAgdGhpcy50YWJsZVN0b3JlLnNldFRhYmxlT3B0aW9ucyh0aGlzLmVkaXRvciwge1xuICAgICAgICAgICAgLi4udGhpcy50YWJsZS5vcHRpb25zLFxuICAgICAgICAgICAgLi4udGFibGVPcHRpb25cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtb3B0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS9jb21wb25lbnRzL3Rvb2xiYXIvdGFibGUtb3B0aW9ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUUzQyxPQUFPLEVBQXVCLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQWtCckQsTUFBTSxPQUFPLHdCQUF3QjtJQXdCakMsWUFBb0IsVUFBbUQ7UUFBbkQsZUFBVSxHQUFWLFVBQVUsQ0FBeUM7UUFmdkUsc0JBQWlCLEdBQTBCO1lBQ3ZDO2dCQUNJLElBQUksRUFBRSxLQUFLO2dCQUNYLEdBQUcsRUFBRSxlQUFlLENBQUMsU0FBUzthQUNqQztZQUNEO2dCQUNJLElBQUksRUFBRSxLQUFLO2dCQUNYLEdBQUcsRUFBRSxlQUFlLENBQUMsWUFBWTthQUNwQztZQUNEO2dCQUNJLElBQUksRUFBRSxLQUFLO2dCQUNYLEdBQUcsRUFBRSxlQUFlLENBQUMsY0FBYzthQUN0QztTQUNKLENBQUM7SUFFd0UsQ0FBQztJQW5CM0UsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQW1CRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGdCQUFnQjtRQUNaLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbEMsTUFBTSxjQUFjLEdBQUcsb0JBQW9CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQXNCLENBQUM7WUFDakYsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLGVBQWUsQ0FBQyxTQUFTLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQzthQUM1QztpQkFBTTtnQkFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDO2FBQ2pGO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWlCLEVBQUUsTUFBMkI7UUFDMUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkYsYUFBYSxDQUFDLFFBQVEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDMUMsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN6QyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTztZQUNyQixHQUFHLFdBQVc7U0FDakIsQ0FBQyxDQUFDO1FBQ0gsZ0RBQWdEO1FBQ2hELElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxlQUFlLENBQUMsU0FBUyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUU7WUFDdkcsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDdkU7SUFDTCxDQUFDOztxSEF6RFEsd0JBQXdCO3lHQUF4Qix3QkFBd0IsaUhBYnZCOzs7Ozs7Ozs7OztLQVdUOzJGQUVRLHdCQUF3QjtrQkFmcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7O0tBV1Q7aUJBQ0o7b0dBRVksVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeVBvcG92ZXJSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgRWRpdG9yLCBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgVGFibGVTdG9yZSB9IGZyb20gJy4uLy4uL3RhYmxlLnN0b3JlJztcbmltcG9ydCB7IFRhYmxlRHJvcGRvd25PcHRpb24sIFRhYmxlT3BlcmF0aW9ucyB9IGZyb20gJy4uLy4uL3RhYmxlLnR5cGVzJztcbmltcG9ydCB7IFRoZUVkaXRvciB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRUxFTUVOVF9UT19DT01QT05FTlQgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IFRoZVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtdGFibGUtb3B0aW9ucycsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInRoeS1kcm9wZG93bi1tZW51IHRhYmxlLWRyb3AtbWVudVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHRhYmxlRHJvcGRvd25MaXN0XCI+XG4gICAgICAgICAgICAgICAgPGEgdGh5RHJvcGRvd25NZW51SXRlbSBocmVmPVwiamF2YXNjcmlwdDo7XCIgKG1vdXNlZG93bik9XCJzZXRUYWJsZU9wdGlvbnMoJGV2ZW50LCBvcHRpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHRoeURyb3Bkb3duTWVudUl0ZW1OYW1lPnt7IG9wdGlvbi5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9wdGlvbi5pc0FjdGl2ZVwiIHRoeURyb3Bkb3duTWVudUl0ZW1JY29uIGNsYXNzPVwidGV4dC1wcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJjaGVja1wiPjwvdGh5LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBUaGVUYWJsZU9wdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIHRhYmxlU3RvcmU6IFRhYmxlU3RvcmU7XG5cbiAgICBASW5wdXQoKSBlZGl0b3I6IEVkaXRvcjtcblxuICAgIGdldCB0YWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVTdG9yZSAmJiB0aGlzLnRhYmxlU3RvcmUuZ2V0VGFibGVFbnRyeSgpWzBdO1xuICAgIH1cblxuICAgIHRhYmxlRHJvcGRvd25MaXN0OiBUYWJsZURyb3Bkb3duT3B0aW9uW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICfmoIfpopjooYwnLFxuICAgICAgICAgICAga2V5OiBUYWJsZU9wZXJhdGlvbnMuaGVhZGVyUm93XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICfmoIfpopjliJcnLFxuICAgICAgICAgICAga2V5OiBUYWJsZU9wZXJhdGlvbnMuaGVhZGVyQ29sdW1uXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICfluo/lj7fliJcnLFxuICAgICAgICAgICAga2V5OiBUYWJsZU9wZXJhdGlvbnMubnVtYmVyZWRDb2x1bW5cbiAgICAgICAgfVxuICAgIF07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8VGhlVGFibGVPcHRpb25zQ29tcG9uZW50Pikge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldENvbHVtbk9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICBzZXRDb2x1bW5PcHRpb25zKCkge1xuICAgICAgICB0aGlzLnRhYmxlRHJvcGRvd25MaXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YWJsZUNvbXBvbmVudCA9IEVMRU1FTlRfVE9fQ09NUE9ORU5ULmdldCh0aGlzLnRhYmxlKSBhcyBUaGVUYWJsZUNvbXBvbmVudDtcbiAgICAgICAgICAgIGlmIChpdGVtLmtleSA9PT0gVGFibGVPcGVyYXRpb25zLmhlYWRlclJvdykge1xuICAgICAgICAgICAgICAgIGl0ZW0uaXNBY3RpdmUgPSB0YWJsZUNvbXBvbmVudC5oZWFkZXJSb3c7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGl0ZW0uaXNBY3RpdmUgPSAodGhpcy50YWJsZS5vcHRpb25zICYmIHRoaXMudGFibGUub3B0aW9uc1tpdGVtLmtleV0pIHx8IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRUYWJsZU9wdGlvbnMoZXZlbnQ6IE1vdXNlRXZlbnQsIG9wdGlvbjogVGFibGVEcm9wZG93bk9wdGlvbikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY29uc3QgY3VycmVudE9wdGlvbiA9IHRoaXMudGFibGVEcm9wZG93bkxpc3QuZmluZChpdGVtID0+IGl0ZW0ua2V5ID09PSBvcHRpb24ua2V5KTtcbiAgICAgICAgY3VycmVudE9wdGlvbi5pc0FjdGl2ZSA9ICFvcHRpb24uaXNBY3RpdmU7XG4gICAgICAgIGNvbnN0IHRhYmxlT3B0aW9uID0ge307XG4gICAgICAgIHRhYmxlT3B0aW9uW29wdGlvbi5rZXldID0gY3VycmVudE9wdGlvbi5pc0FjdGl2ZSB8fCBudWxsO1xuICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2V0VGFibGVPcHRpb25zKHRoaXMuZWRpdG9yLCB7XG4gICAgICAgICAgICAuLi50aGlzLnRhYmxlLm9wdGlvbnMsXG4gICAgICAgICAgICAuLi50YWJsZU9wdGlvblxuICAgICAgICB9KTtcbiAgICAgICAgLy8gaGVhZGVyUm93IOWFvOWuueS7o+eggSwg5Y+W5raI5qCH6aKY6KGM55qE5pe25YCZ5ZCM5pe26K6+572uIHJvdyDkuK3nmoQgaGVhZGVyIOWxnuaAp1xuICAgICAgICBpZiAob3B0aW9uLmtleSA9PT0gVGFibGVPcGVyYXRpb25zLmhlYWRlclJvdyAmJiAhdGFibGVPcHRpb25bb3B0aW9uLmtleV0gJiYgdGhpcy50YWJsZS5jaGlsZHJlblswXS5oZWFkZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvd1BhdGggPSBUaGVFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMudGFibGUuY2hpbGRyZW5bMF0pO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2Rlcyh0aGlzLmVkaXRvciwgeyBoZWFkZXI6IG51bGwgfSwgeyBhdDogcm93UGF0aCB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -4,22 +4,28 @@ import { splitCell } from '../../utils/split-cell';
4
4
  import { setCellMenuVisibility } from '../../utils/set-menu-cell-invisibility';
5
5
  import { TableEditor } from '../../table.editor';
6
6
  import { TheTableOptionsComponent } from './table-options.component';
7
- import { PluginKeys } from '../../../../interfaces';
7
+ import { PluginKeys, TheEditor } from '../../../../interfaces';
8
8
  import { getPluginOptions } from '../../../../core';
9
+ import { isRectangularInTableCells } from '../../utils/is-selection-in-table';
10
+ import * as TheTransforms from '../../../../transforms';
11
+ import * as TheQueries from '../../../../queries';
12
+ import { copyNode } from '../../../../utils';
9
13
  import * as i0 from "@angular/core";
10
14
  import * as i1 from "../../../../services/color-select.service";
11
15
  import * as i2 from "ngx-tethys/popover";
12
- import * as i3 from "@angular/common";
13
- import * as i4 from "ngx-tethys/icon";
14
- import * as i5 from "ngx-tethys/tooltip";
15
- import * as i6 from "ngx-tethys/action";
16
- import * as i7 from "ngx-tethys/divider";
16
+ import * as i3 from "ngx-tethys/notify";
17
+ import * as i4 from "@angular/common";
18
+ import * as i5 from "ngx-tethys/icon";
19
+ import * as i6 from "ngx-tethys/tooltip";
20
+ import * as i7 from "ngx-tethys/action";
21
+ import * as i8 from "ngx-tethys/divider";
17
22
  export class TheTableToolbarComponent {
18
- constructor(ngZone, colorSelectService, thyPopover, popoverRef) {
23
+ constructor(ngZone, colorSelectService, thyPopover, popoverRef, thyNotifyService) {
19
24
  this.ngZone = ngZone;
20
25
  this.colorSelectService = colorSelectService;
21
26
  this.thyPopover = thyPopover;
22
27
  this.popoverRef = popoverRef;
28
+ this.thyNotifyService = thyNotifyService;
23
29
  this.cellMenuList = [
24
30
  {
25
31
  key: 'merge-cells',
@@ -59,12 +65,22 @@ export class TheTableToolbarComponent {
59
65
  return getPluginOptions(this.editor, PluginKeys.table);
60
66
  }
61
67
  ngOnInit() {
62
- this.deleteIcon = DeleteIcon[this.getDeleteIcon()];
68
+ this.isColumnEqual = this.tableElement?.columns?.every(col => this.tableElement.columns[0].width === col.width) ?? true;
63
69
  this.getIconName(this.deleteIcon);
64
- setCellMenuVisibility(this.editor, this.cellMenuList, this.tableStore.selectedCells, this.isFromControls);
70
+ const { selectedCells } = this.tableStore;
71
+ const tableInfo = { selectedCells };
72
+ this.isRectangle = isRectangularInTableCells(this.editor, selectedCells);
73
+ this.deleteIcon = this.isRectangle && DeleteIcon[this.getDeleteIcon()];
74
+ setCellMenuVisibility(this.editor, this.cellMenuList, tableInfo);
65
75
  this.selectedColor = this.tableStore.getSelectedCellBackgroundColor();
76
+ const path = TheEditor.findPath(this.editor, this.tableElement);
77
+ this.tableChangeSubscriber = this.tableStore.tableChange().subscribe(() => {
78
+ const columns = TheQueries.getNode(this.editor, path).columns;
79
+ this.isColumnEqual = columns?.every(col => columns[0].width === col.width) ?? true;
80
+ });
66
81
  }
67
82
  ngOnDestroy() {
83
+ this.tableChangeSubscriber?.unsubscribe();
68
84
  this.colorSelectService.closeColorSelect();
69
85
  }
70
86
  getIconName(key) {
@@ -133,6 +149,22 @@ export class TheTableToolbarComponent {
133
149
  event.preventDefault();
134
150
  event.stopPropagation();
135
151
  }
152
+ onCopy(e) {
153
+ e?.preventDefault();
154
+ copyNode(this.editor, this.tableElement, this.thyNotifyService);
155
+ }
156
+ setEquallyColumnHandle(event) {
157
+ event.preventDefault();
158
+ event.stopPropagation();
159
+ const columns = this.tableElement.columns;
160
+ const sumWidth = columns.reduce((previousValue, currentValue) => {
161
+ return previousValue + currentValue.width;
162
+ }, 0);
163
+ const equalColumns = columns.map(() => {
164
+ return { width: sumWidth / columns.length };
165
+ });
166
+ TheTransforms.setNode(this.editor, { columns: equalColumns }, this.tableElement);
167
+ }
136
168
  openTableOptionMenu(event) {
137
169
  event.preventDefault();
138
170
  event.stopPropagation();
@@ -152,14 +184,12 @@ export class TheTableToolbarComponent {
152
184
  });
153
185
  }
154
186
  }
155
- TheTableToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TheTableToolbarComponent, deps: [{ token: i0.NgZone }, { token: i1.TheColorSelectService }, { token: i2.ThyPopover }, { token: i2.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
156
- TheTableToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: TheTableToolbarComponent, selector: "the-table-toolbar", inputs: { tableStore: "tableStore", isFromControls: "isFromControls", tableElement: "tableElement" }, ngImport: i0, template: "<thy-actions thySize=\"xxs\">\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a\n *ngIf=\"item.visibility\"\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"item.icon\"\n [thyTooltip]=\"item.name\"\n (mousedown)=\"item.actionHandle()\"\n ></a>\n </ng-container>\n <thy-divider *ngIf=\"hasDivider\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"> </thy-divider>\n <a href=\"javascript:;\" thyAction thyTooltip=\"\u5355\u5143\u683C\u80CC\u666F\" (mousedown)=\"openSelectColor($event)\">\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <a\n href=\"javascript:;\"\n *ngIf=\"tableStore.isSelectedTable && tableOptions?.showFullscreen\"\n thyAction\n thyTooltip=\"\u5168\u5C4F\"\n (mousedown)=\"setFullscreen($event)\"\n >\n <thy-icon thyIconName=\"arrows-alt\"></thy-icon>\n </a>\n\n <ng-container *ngIf=\"tableStore.isSelectedTable\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"></thy-divider>\n <a href=\"javascript:;\" class=\"link-with-down\" thyAction (mousedown)=\"mousedown($event)\" (click)=\"openTableOptionMenu($event)\">\n <span>\u8868\u683C\u9009\u9879</span>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n </ng-container>\n\n <ng-container *ngIf=\"tableStore?.isFullscreen ? deleteIcon && !tableStore.isSelectedTable : deleteIcon\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"></thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyType=\"danger\"\n [thyActionIcon]=\"deleteIcon\"\n [thyTooltip]=\"iconName\"\n (mousedown)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n </ng-container>\n</thy-actions>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i5.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i6.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i6.ThyActionsComponent, selector: "thy-actions", inputs: ["thySize"] }, { kind: "component", type: i7.ThyDividerComponent, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }] });
157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TheTableToolbarComponent, decorators: [{
187
+ TheTableToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheTableToolbarComponent, deps: [{ token: i0.NgZone }, { token: i1.TheColorSelectService }, { token: i2.ThyPopover }, { token: i2.ThyPopoverRef }, { token: i3.ThyNotifyService }], target: i0.ɵɵFactoryTarget.Component });
188
+ TheTableToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TheTableToolbarComponent, selector: "the-table-toolbar", inputs: { tableStore: "tableStore", tableElement: "tableElement" }, ngImport: i0, template: "<thy-actions thySize=\"xxs\">\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a\n *ngIf=\"item.visibility\"\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"item.icon\"\n [thyTooltip]=\"item.name\"\n (mousedown)=\"item.actionHandle()\"\n ></a>\n </ng-container>\n <thy-divider *ngIf=\"hasDivider\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"> </thy-divider>\n <a href=\"javascript:;\" thyAction thyTooltip=\"\u5355\u5143\u683C\u80CC\u666F\" (mousedown)=\"openSelectColor($event)\">\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <a\n href=\"javascript:;\"\n *ngIf=\"tableStore.isSelectedTable && !isColumnEqual\"\n thyAction\n thyTooltip=\"\u5217\u7B49\u5BBD\"\n (mousedown)=\"setEquallyColumnHandle($event)\"\n >\n <thy-icon thyIconName=\"table-column-equal-width\"></thy-icon>\n </a>\n <a\n href=\"javascript:;\"\n *ngIf=\"tableStore.isSelectedTable && tableOptions?.showFullscreen\"\n thyAction\n thyTooltip=\"\u5168\u5C4F\"\n (mousedown)=\"setFullscreen($event)\"\n >\n <thy-icon thyIconName=\"arrows-alt\"></thy-icon>\n </a>\n <a\n *ngIf=\"tableStore.isSelectedTable && !tableStore?.isFullscreen\"\n class=\"fullscreen-hidden\"\n href=\"javascript:;\"\n thyAction\n thyActionIcon=\"copy\"\n thyTooltip=\"\u590D\u5236\"\n (mousedown)=\"onCopy($event)\"\n ></a>\n <ng-container *ngIf=\"tableStore.isSelectedTable\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"></thy-divider>\n <a href=\"javascript:;\" class=\"link-with-down\" thyAction (mousedown)=\"mousedown($event)\" (click)=\"openTableOptionMenu($event)\">\n <span>\u8868\u683C\u9009\u9879</span>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n </ng-container>\n\n <ng-container *ngIf=\"tableStore?.isFullscreen ? isRectangle && deleteIcon && !tableStore.isSelectedTable : deleteIcon\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"></thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyType=\"danger\"\n [thyActionIcon]=\"deleteIcon\"\n [thyTooltip]=\"iconName\"\n (mousedown)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n </ng-container>\n</thy-actions>\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i6.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i7.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i7.ThyActionsComponent, selector: "thy-actions", inputs: ["thySize"] }, { kind: "component", type: i8.ThyDividerComponent, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }] });
189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TheTableToolbarComponent, decorators: [{
158
190
  type: Component,
159
- args: [{ selector: 'the-table-toolbar', template: "<thy-actions thySize=\"xxs\">\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a\n *ngIf=\"item.visibility\"\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"item.icon\"\n [thyTooltip]=\"item.name\"\n (mousedown)=\"item.actionHandle()\"\n ></a>\n </ng-container>\n <thy-divider *ngIf=\"hasDivider\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"> </thy-divider>\n <a href=\"javascript:;\" thyAction thyTooltip=\"\u5355\u5143\u683C\u80CC\u666F\" (mousedown)=\"openSelectColor($event)\">\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <a\n href=\"javascript:;\"\n *ngIf=\"tableStore.isSelectedTable && tableOptions?.showFullscreen\"\n thyAction\n thyTooltip=\"\u5168\u5C4F\"\n (mousedown)=\"setFullscreen($event)\"\n >\n <thy-icon thyIconName=\"arrows-alt\"></thy-icon>\n </a>\n\n <ng-container *ngIf=\"tableStore.isSelectedTable\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"></thy-divider>\n <a href=\"javascript:;\" class=\"link-with-down\" thyAction (mousedown)=\"mousedown($event)\" (click)=\"openTableOptionMenu($event)\">\n <span>\u8868\u683C\u9009\u9879</span>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n </ng-container>\n\n <ng-container *ngIf=\"tableStore?.isFullscreen ? deleteIcon && !tableStore.isSelectedTable : deleteIcon\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"></thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyType=\"danger\"\n [thyActionIcon]=\"deleteIcon\"\n [thyTooltip]=\"iconName\"\n (mousedown)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n </ng-container>\n</thy-actions>\n" }]
160
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.TheColorSelectService }, { type: i2.ThyPopover }, { type: i2.ThyPopoverRef }]; }, propDecorators: { tableStore: [{
161
- type: Input
162
- }], isFromControls: [{
191
+ args: [{ selector: 'the-table-toolbar', template: "<thy-actions thySize=\"xxs\">\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a\n *ngIf=\"item.visibility\"\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"item.icon\"\n [thyTooltip]=\"item.name\"\n (mousedown)=\"item.actionHandle()\"\n ></a>\n </ng-container>\n <thy-divider *ngIf=\"hasDivider\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"> </thy-divider>\n <a href=\"javascript:;\" thyAction thyTooltip=\"\u5355\u5143\u683C\u80CC\u666F\" (mousedown)=\"openSelectColor($event)\">\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <a\n href=\"javascript:;\"\n *ngIf=\"tableStore.isSelectedTable && !isColumnEqual\"\n thyAction\n thyTooltip=\"\u5217\u7B49\u5BBD\"\n (mousedown)=\"setEquallyColumnHandle($event)\"\n >\n <thy-icon thyIconName=\"table-column-equal-width\"></thy-icon>\n </a>\n <a\n href=\"javascript:;\"\n *ngIf=\"tableStore.isSelectedTable && tableOptions?.showFullscreen\"\n thyAction\n thyTooltip=\"\u5168\u5C4F\"\n (mousedown)=\"setFullscreen($event)\"\n >\n <thy-icon thyIconName=\"arrows-alt\"></thy-icon>\n </a>\n <a\n *ngIf=\"tableStore.isSelectedTable && !tableStore?.isFullscreen\"\n class=\"fullscreen-hidden\"\n href=\"javascript:;\"\n thyAction\n thyActionIcon=\"copy\"\n thyTooltip=\"\u590D\u5236\"\n (mousedown)=\"onCopy($event)\"\n ></a>\n <ng-container *ngIf=\"tableStore.isSelectedTable\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"></thy-divider>\n <a href=\"javascript:;\" class=\"link-with-down\" thyAction (mousedown)=\"mousedown($event)\" (click)=\"openTableOptionMenu($event)\">\n <span>\u8868\u683C\u9009\u9879</span>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n </ng-container>\n\n <ng-container *ngIf=\"tableStore?.isFullscreen ? isRectangle && deleteIcon && !tableStore.isSelectedTable : deleteIcon\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"></thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyType=\"danger\"\n [thyActionIcon]=\"deleteIcon\"\n [thyTooltip]=\"iconName\"\n (mousedown)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n </ng-container>\n</thy-actions>\n" }]
192
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.TheColorSelectService }, { type: i2.ThyPopover }, { type: i2.ThyPopoverRef }, { type: i3.ThyNotifyService }]; }, propDecorators: { tableStore: [{
163
193
  type: Input
164
194
  }], tableElement: [{
165
195
  type: Input
@@ -170,4 +200,4 @@ export var DeleteIcon;
170
200
  DeleteIcon[DeleteIcon["table-delete-columns"] = 1] = "table-delete-columns";
171
201
  DeleteIcon[DeleteIcon["trash"] = 2] = "trash";
172
202
  })(DeleteIcon || (DeleteIcon = {}));
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS9jb21wb25lbnRzL3Rvb2xiYXIvdGFibGUtdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS9jb21wb25lbnRzL3Rvb2xiYXIvdGFibGUtdG9vbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFJNUUsT0FBTyxFQUFhLGdCQUFnQixFQUFFLDBCQUEwQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFckksT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7OztBQU9wRCxNQUFNLE9BQU8sd0JBQXdCO0lBc0RqQyxZQUNZLE1BQWMsRUFDZCxrQkFBeUMsRUFDekMsVUFBc0IsRUFDdEIsVUFBbUQ7UUFIbkQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBdUI7UUFDekMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUF5QztRQXpDL0QsaUJBQVksR0FBaUI7WUFDekI7Z0JB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LEVBQUU7Z0JBQ1YsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07YUFDdEI7WUFDRCxRQUFRLEVBQUUsQ0FBQztZQUNYLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLFNBQVMsRUFBRSxZQUFZO1lBQ3ZCLGlCQUFpQixFQUFFLFFBQVE7WUFDM0IsVUFBVSxFQUFFLHNCQUFzQjtTQUNyQyxDQUFDLENBQUM7SUFDUCxDQUFDOztzSEExS1Esd0JBQXdCOzBHQUF4Qix3QkFBd0IsK0pDbkJyQyx5a0VBK0NBOzRGRDVCYSx3QkFBd0I7a0JBSnBDLFNBQVM7K0JBQ0ksbUJBQW1CO3NMQVVwQixVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSzs7QUFrS1YsTUFBTSxDQUFOLElBQVksVUFJWDtBQUpELFdBQVksVUFBVTtJQUNsQixxRUFBbUIsQ0FBQTtJQUNuQiwyRUFBc0IsQ0FBQTtJQUN0Qiw2Q0FBTyxDQUFBO0FBQ1gsQ0FBQyxFQUpXLFVBQVUsS0FBVixVQUFVLFFBSXJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vdGFibGUuc3RvcmUnO1xuaW1wb3J0IHsgQ29sb3JUeXBlLCBCYWNrZ3JvdW5kQ29sb3JzLCBUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvciwgU3BlY2lhbEJhY2tncm91bmRDb2xvciB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0YW50cy9jb2xvci1zZWxlY3QnO1xuaW1wb3J0IHsgVGhlQ29sb3JTZWxlY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvY29sb3Itc2VsZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgc3BsaXRDZWxsIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3BsaXQtY2VsbCc7XG5pbXBvcnQgeyBzZXRDZWxsTWVudVZpc2liaWxpdHkgfSBmcm9tICcuLi8uLi91dGlscy9zZXQtbWVudS1jZWxsLWludmlzaWJpbGl0eSc7XG5pbXBvcnQgeyBNZW51RW50aXR5IH0gZnJvbSAnLi4vLi4vdGFibGUudHlwZXMnO1xuaW1wb3J0IHsgVGFibGVFZGl0b3IgfSBmcm9tICcuLi8uLi90YWJsZS5lZGl0b3InO1xuaW1wb3J0IHsgVGhlVGFibGVPcHRpb25zQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1vcHRpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBUYWJsZUVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8vY3VzdG9tLXR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtdGFibGUtdG9vbGJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICd0YWJsZS10b29sYmFyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBUaGVUYWJsZVRvb2xiYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgc2VsZWN0ZWRDb2xvcjogc3RyaW5nO1xuXG4gICAgZGVsZXRlSWNvbjogc3RyaW5nO1xuXG4gICAgaWNvbk5hbWU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHRhYmxlU3RvcmU6IFRhYmxlU3RvcmU7XG5cbiAgICBASW5wdXQoKSBpc0Zyb21Db250cm9sczogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIHRhYmxlRWxlbWVudDogVGFibGVFbGVtZW50O1xuXG4gICAgZ2V0IGVkaXRvcigpOiBFZGl0b3Ige1xuICAgICAgICByZXR1cm4gdGhpcy50YWJsZVN0b3JlICYmIHRoaXMudGFibGVTdG9yZS5lZGl0b3I7XG4gICAgfVxuXG4gICAgY2VsbE1lbnVMaXN0OiBNZW51RW50aXR5W10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ21lcmdlLWNlbGxzJyxcbiAgICAgICAgICAgIG5hbWU6ICflkIjlubbljZXlhYPmoLwnLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBpY29uOiAndGFibGUtbWVyZ2UtY2VsbHMnLFxuICAgICAgICAgICAgYWN0aW9uSGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUubWVyZ2VDZWxsKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2xlYXJTZWxlY3RlZENlbGxzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ3NwbGl0LWNlbGxzJyxcbiAgICAgICAgICAgIG5hbWU6ICfmi4bliIbljZXlhYPmoLwnLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBpY29uOiAndGFibGUtdW5tZXJnZS1jZWxscycsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIHNwbGl0Q2VsbCh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyU2VsZWN0ZWRDZWxscygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXTtcblxuICAgIGdldCBoYXNEaXZpZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jZWxsTWVudUxpc3QuZmlsdGVyKGl0ZW0gPT4gaXRlbS52aXNpYmlsaXR5KS5sZW5ndGggPiAxO1xuICAgIH1cblxuICAgIGdldCB0YWJsZU9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiBnZXRQbHVnaW5PcHRpb25zKHRoaXMuZWRpdG9yLCBQbHVnaW5LZXlzLnRhYmxlKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSBjb2xvclNlbGVjdFNlcnZpY2U6IFRoZUNvbG9yU2VsZWN0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0aHlQb3BvdmVyOiBUaHlQb3BvdmVyLFxuICAgICAgICBwcml2YXRlIHBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8VGhlVGFibGVUb29sYmFyQ29tcG9uZW50PlxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmRlbGV0ZUljb24gPSBEZWxldGVJY29uW3RoaXMuZ2V0RGVsZXRlSWNvbigpXTtcbiAgICAgICAgdGhpcy5nZXRJY29uTmFtZSh0aGlzLmRlbGV0ZUljb24pO1xuICAgICAgICBzZXRDZWxsTWVudVZpc2liaWxpdHkodGhpcy5lZGl0b3IsIHRoaXMuY2VsbE1lbnVMaXN0LCB0aGlzLnRhYmxlU3RvcmUuc2VsZWN0ZWRDZWxscywgdGhpcy5pc0Zyb21Db250cm9scyk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2xvciA9IHRoaXMudGFibGVTdG9yZS5nZXRTZWxlY3RlZENlbGxCYWNrZ3JvdW5kQ29sb3IoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jb2xvclNlbGVjdFNlcnZpY2UuY2xvc2VDb2xvclNlbGVjdCgpO1xuICAgIH1cblxuICAgIGdldEljb25OYW1lKGtleTogc3RyaW5nKSB7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICd0cmFzaCc6XG4gICAgICAgICAgICAgICAgdGhpcy5pY29uTmFtZSA9ICfliKDpmaTooajmoLwnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndGFibGUtZGVsZXRlLWNvbHVtbnMnOlxuICAgICAgICAgICAgICAgIHRoaXMuaWNvbk5hbWUgPSAn5Yig6Zmk5pW05YiXJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3RhYmxlLWRlbGV0ZS1yb3dzJzpcbiAgICAgICAgICAgICAgICB0aGlzLmljb25OYW1lID0gJ+WIoOmZpOaVtOihjCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXREZWxldGVJY29uKCkge1xuICAgICAgICBpZiAodGhpcy50YWJsZVN0b3JlLmlzU2VsZWN0ZWRUYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUljb24udHJhc2g7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudGFibGVTdG9yZS5zZWxlY3RlZFJvd3NJbmRleC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gRGVsZXRlSWNvblsndGFibGUtZGVsZXRlLXJvd3MnXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50YWJsZVN0b3JlLnNlbGVjdGVkQ29sdW1uc0luZGV4Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBEZWxldGVJY29uWyd0YWJsZS1kZWxldGUtY29sdW1ucyddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMudGFibGVTdG9yZS5yZW1vdmVDb2x1bW5PclJvd3MoKTtcbiAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyRGFuZ2Vyb3VzQ2VsbHMoKTtcbiAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyU2VsZWN0ZWRDZWxscygpO1xuICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBvbkVudGVyRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMudGFibGVTdG9yZS5zZXREYW5nZXJvdXNDZWxscygpO1xuICAgIH1cblxuICAgIG9uTGVhdmVEZWxldGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyRGFuZ2Vyb3VzQ2VsbHMoKTtcbiAgICB9XG5cbiAgICBvcGVuU2VsZWN0Q29sb3IoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcudGh5LWFjdGlvbicpO1xuICAgICAgICBjb25zdCBpc0hlYWRlciA9IFRhYmxlRWRpdG9yLmlzQWN0aXZlSGVhZGVyKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29sb3JTZWxlY3RTZXJ2aWNlLnRvZ2dsZUNvbG9yU2VsZWN0KFxuICAgICAgICAgICAgICAgIGVsZW1lbnQgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbG9yLFxuICAgICAgICAgICAgICAgIEJhY2tncm91bmRDb2xvcnMsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwZXJSb3dDb2xvck51bWJlcnM6IDcsXG4gICAgICAgICAgICAgICAgICAgIHJvd09wdGlvbnM6IHsgMTogJyNiYmInLCAyOiAnI2JiYicgfSxcbiAgICAgICAgICAgICAgICAgICAgc3BlY2lhbENvbG9yOiBpc0hlYWRlciA/IFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yIDogU3BlY2lhbEJhY2tncm91bmRDb2xvclxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKG5ld0NvbG9yOiBDb2xvclR5cGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKChuZXdDb2xvciA9PT0gVGFibGVIZWFkZXJCYWNrZ3JvdW5kQ29sb3IgJiYgaXNIZWFkZXIpIHx8IChuZXdDb2xvciA9PT0gU3BlY2lhbEJhY2tncm91bmRDb2xvciAmJiAhaXNIZWFkZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2V0U2VsZWN0ZWRDZWxsc0JhY2tncm91bmRDb2xvcihudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5zZXRTZWxlY3RlZENlbGxzQmFja2dyb3VuZENvbG9yKG5ld0NvbG9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sb3IgPSBuZXdDb2xvcjtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdib3R0b21MZWZ0JyxcbiAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRGdWxsc2NyZWVuKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMudGFibGVPcHRpb25zLnNldEZ1bGxzY3JlZW4odGhpcy5lZGl0b3IsIGV2ZW50LCB0aGlzLnRhYmxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgbW91c2Vkb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIG9wZW5UYWJsZU9wdGlvbk1lbnUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnRoeVBvcG92ZXIub3BlbihUaGVUYWJsZU9wdGlvbnNDb21wb25lbnQsIHtcbiAgICAgICAgICAgIG9yaWdpbjogZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgICAgIHRhYmxlU3RvcmU6IHRoaXMudGFibGVTdG9yZSxcbiAgICAgICAgICAgICAgICBlZGl0b3I6IHRoaXMuZWRpdG9yXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWluV2lkdGg6IDAsXG4gICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIG91dHNpZGVDbG9zYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbUxlZnQnLFxuICAgICAgICAgICAgb3JpZ2luQWN0aXZlQ2xhc3M6ICdhY3RpdmUnLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ3RhYmxlLW9wdGlvbnMtcGFubmVsJ1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBlbnVtIERlbGV0ZUljb24ge1xuICAgICd0YWJsZS1kZWxldGUtcm93cycsXG4gICAgJ3RhYmxlLWRlbGV0ZS1jb2x1bW5zJyxcbiAgICAndHJhc2gnXG59XG4iLCI8dGh5LWFjdGlvbnMgdGh5U2l6ZT1cInh4c1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY2VsbE1lbnVMaXN0XCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgICAqbmdJZj1cIml0ZW0udmlzaWJpbGl0eVwiXG4gICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgICAgICAgIHRoeUFjdGlvblxuICAgICAgICAgICAgW3RoeUFjdGlvbkljb25dPVwiaXRlbS5pY29uXCJcbiAgICAgICAgICAgIFt0aHlUb29sdGlwXT1cIml0ZW0ubmFtZVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIml0ZW0uYWN0aW9uSGFuZGxlKClcIlxuICAgICAgICA+PC9hPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDx0aHktZGl2aWRlciAqbmdJZj1cImhhc0RpdmlkZXJcIiBjbGFzcz1cIm1yLTIgbWwtMSBhbGlnbi1zZWxmLWNlbnRlclwiIFt0aHlWZXJ0aWNhbF09XCJ0cnVlXCI+IDwvdGh5LWRpdmlkZXI+XG4gICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIHRoeUFjdGlvbiB0aHlUb29sdGlwPVwi5Y2V5YWD5qC86IOM5pmvXCIgKG1vdXNlZG93bik9XCJvcGVuU2VsZWN0Q29sb3IoJGV2ZW50KVwiPlxuICAgICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJiYWNrZ3JvdW5kLXR0XCIgdGh5SWNvblR5cGU9XCJ0d290b25lXCIgW3RoeVR3b3RvbmVDb2xvcl09XCJzZWxlY3RlZENvbG9yXCI+PC90aHktaWNvbj5cbiAgICA8L2E+XG4gICAgPGFcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gICAgICAgICpuZ0lmPVwidGFibGVTdG9yZS5pc1NlbGVjdGVkVGFibGUgJiYgdGFibGVPcHRpb25zPy5zaG93RnVsbHNjcmVlblwiXG4gICAgICAgIHRoeUFjdGlvblxuICAgICAgICB0aHlUb29sdGlwPVwi5YWo5bGPXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJzZXRGdWxsc2NyZWVuKCRldmVudClcIlxuICAgID5cbiAgICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYXJyb3dzLWFsdFwiPjwvdGh5LWljb24+XG4gICAgPC9hPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlU3RvcmUuaXNTZWxlY3RlZFRhYmxlXCI+XG4gICAgICAgIDx0aHktZGl2aWRlciBjbGFzcz1cIm1yLTIgbWwtMSBhbGlnbi1zZWxmLWNlbnRlclwiIFt0aHlWZXJ0aWNhbF09XCJ0cnVlXCI+PC90aHktZGl2aWRlcj5cbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIGNsYXNzPVwibGluay13aXRoLWRvd25cIiB0aHlBY3Rpb24gKG1vdXNlZG93bik9XCJtb3VzZWRvd24oJGV2ZW50KVwiIChjbGljayk9XCJvcGVuVGFibGVPcHRpb25NZW51KCRldmVudClcIj5cbiAgICAgICAgICAgIDxzcGFuPuihqOagvOmAiemhuTwvc3Bhbj5cbiAgICAgICAgICAgIDx0aHktaWNvbiBjbGFzcz1cImZvbnQtc2l6ZS1zbSB0ZXh0LWRlc2MgbWwtMVwiIHRoeUljb25OYW1lPVwiY2FyZXQtZG93blwiPjwvdGh5LWljb24+XG4gICAgICAgIDwvYT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZVN0b3JlPy5pc0Z1bGxzY3JlZW4gPyBkZWxldGVJY29uICYmICF0YWJsZVN0b3JlLmlzU2VsZWN0ZWRUYWJsZSA6IGRlbGV0ZUljb25cIj5cbiAgICAgICAgPHRoeS1kaXZpZGVyIGNsYXNzPVwibXItMiBtbC0xIGFsaWduLXNlbGYtY2VudGVyXCIgW3RoeVZlcnRpY2FsXT1cInRydWVcIj48L3RoeS1kaXZpZGVyPlxuICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gICAgICAgICAgICB0aHlBY3Rpb25cbiAgICAgICAgICAgIHRoeVR5cGU9XCJkYW5nZXJcIlxuICAgICAgICAgICAgW3RoeUFjdGlvbkljb25dPVwiZGVsZXRlSWNvblwiXG4gICAgICAgICAgICBbdGh5VG9vbHRpcF09XCJpY29uTmFtZVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uRGVsZXRlKCRldmVudClcIlxuICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwib25FbnRlckRlbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cIm9uTGVhdmVEZWxldGUoJGV2ZW50KVwiXG4gICAgICAgID48L2E+XG4gICAgPC9uZy1jb250YWluZXI+XG48L3RoeS1hY3Rpb25zPlxuIl19
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS9jb21wb25lbnRzL3Rvb2xiYXIvdGFibGUtdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS9jb21wb25lbnRzL3Rvb2xiYXIvdGFibGUtdG9vbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFJNUUsT0FBTyxFQUFhLGdCQUFnQixFQUFFLDBCQUEwQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFckksT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXBELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzlFLE9BQU8sS0FBSyxhQUFhLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUdsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7QUFNN0MsTUFBTSxPQUFPLHdCQUF3QjtJQTBEakMsWUFDWSxNQUFj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QUNyQixXQUFXLEVBQUUsS0FBSztZQUNsQixTQUFTLEVBQUUsWUFBWTtZQUN2QixpQkFBaUIsRUFBRSxRQUFRO1lBQzNCLFVBQVUsRUFBRSxzQkFBc0I7U0FDckMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7cUhBL01RLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLDZIQ3pCckMsOHFGQWdFQTsyRkR2Q2Esd0JBQXdCO2tCQUpwQyxTQUFTOytCQUNJLG1CQUFtQjtxTkFnQnBCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSzs7QUFtTVYsTUFBTSxDQUFOLElBQVksVUFJWDtBQUpELFdBQVksVUFBVTtJQUNsQixxRUFBbUIsQ0FBQTtJQUNuQiwyRUFBc0IsQ0FBQTtJQUN0Qiw2Q0FBTyxDQUFBO0FBQ1gsQ0FBQyxFQUpXLFVBQVUsS0FBVixVQUFVLFFBSXJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vdGFibGUuc3RvcmUnO1xuaW1wb3J0IHsgQ29sb3JUeXBlLCBCYWNrZ3JvdW5kQ29sb3JzLCBUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvciwgU3BlY2lhbEJhY2tncm91bmRDb2xvciB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0YW50cy9jb2xvci1zZWxlY3QnO1xuaW1wb3J0IHsgVGhlQ29sb3JTZWxlY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvY29sb3Itc2VsZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgc3BsaXRDZWxsIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3BsaXQtY2VsbCc7XG5pbXBvcnQgeyBzZXRDZWxsTWVudVZpc2liaWxpdHkgfSBmcm9tICcuLi8uLi91dGlscy9zZXQtbWVudS1jZWxsLWludmlzaWJpbGl0eSc7XG5pbXBvcnQgeyBNZW51RW50aXR5IH0gZnJvbSAnLi4vLi4vdGFibGUudHlwZXMnO1xuaW1wb3J0IHsgVGFibGVFZGl0b3IgfSBmcm9tICcuLi8uLi90YWJsZS5lZGl0b3InO1xuaW1wb3J0IHsgVGhlVGFibGVPcHRpb25zQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1vcHRpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzLCBUaGVFZGl0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlJztcbmltcG9ydCB7IFRhYmxlRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgaXNSZWN0YW5ndWxhckluVGFibGVDZWxscyB9IGZyb20gJy4uLy4uL3V0aWxzL2lzLXNlbGVjdGlvbi1pbi10YWJsZSc7XG5pbXBvcnQgKiBhcyBUaGVUcmFuc2Zvcm1zIGZyb20gJy4uLy4uLy4uLy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi8uLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGh5Tm90aWZ5U2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvbm90aWZ5JztcbmltcG9ydCB7IGNvcHlOb2RlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS10YWJsZS10b29sYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3RhYmxlLXRvb2xiYXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFRoZVRhYmxlVG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBzZWxlY3RlZENvbG9yOiBzdHJpbmc7XG5cbiAgICBkZWxldGVJY29uOiBzdHJpbmc7XG5cbiAgICBpY29uTmFtZTogc3RyaW5nO1xuXG4gICAgaXNSZWN0YW5nbGU6IGJvb2xlYW47XG5cbiAgICBpc0NvbHVtbkVxdWFsOiBib29sZWFuO1xuXG4gICAgdGFibGVDaGFuZ2VTdWJzY3JpYmVyOiBTdWJzY3JpcHRpb247XG5cbiAgICBASW5wdXQoKSB0YWJsZVN0b3JlOiBUYWJsZVN0b3JlO1xuXG4gICAgQElucHV0KCkgdGFibGVFbGVtZW50OiBUYWJsZUVsZW1lbnQ7XG5cbiAgICBnZXQgZWRpdG9yKCk6IEVkaXRvciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlU3RvcmUgJiYgdGhpcy50YWJsZVN0b3JlLmVkaXRvcjtcbiAgICB9XG5cbiAgICBjZWxsTWVudUxpc3Q6IE1lbnVFbnRpdHlbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnbWVyZ2UtY2VsbHMnLFxuICAgICAgICAgICAgbmFtZTogJ+WQiOW5tuWNleWFg+agvCcsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb246ICd0YWJsZS1tZXJnZS1jZWxscycsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5tZXJnZUNlbGwodGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVTdG9yZS5jbGVhclNlbGVjdGVkQ2VsbHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnc3BsaXQtY2VsbHMnLFxuICAgICAgICAgICAgbmFtZTogJ+aLhuWIhuWNleWFg+agvCcsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb246ICd0YWJsZS11bm1lcmdlLWNlbGxzJyxcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgc3BsaXRDZWxsKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2xlYXJTZWxlY3RlZENlbGxzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBdO1xuXG4gICAgZ2V0IGhhc0RpdmlkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNlbGxNZW51TGlzdC5maWx0ZXIoaXRlbSA9PiBpdGVtLnZpc2liaWxpdHkpLmxlbmd0aCA+IDE7XG4gICAgfVxuXG4gICAgZ2V0IHRhYmxlT3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIGdldFBsdWdpbk9wdGlvbnModGhpcy5lZGl0b3IsIFBsdWdpbktleXMudGFibGUpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGNvbG9yU2VsZWN0U2VydmljZTogVGhlQ29sb3JTZWxlY3RTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRoeVBvcG92ZXI6IFRoeVBvcG92ZXIsXG4gICAgICAgIHByaXZhdGUgcG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxUaGVUYWJsZVRvb2xiYXJDb21wb25lbnQ+LFxuICAgICAgICBwcml2YXRlIHRoeU5vdGlmeVNlcnZpY2U6IFRoeU5vdGlmeVNlcnZpY2VcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pc0NvbHVtbkVxdWFsID0gdGhpcy50YWJsZUVsZW1lbnQ/LmNvbHVtbnM/LmV2ZXJ5KGNvbCA9PiB0aGlzLnRhYmxlRWxlbWVudC5jb2x1bW5zWzBdLndpZHRoID09PSBjb2wud2lkdGgpID8/IHRydWU7XG4gICAgICAgIHRoaXMuZ2V0SWNvbk5hbWUodGhpcy5kZWxldGVJY29uKTtcbiAgICAgICAgY29uc3QgeyBzZWxlY3RlZENlbGxzIH0gPSB0aGlzLnRhYmxlU3RvcmU7XG4gICAgICAgIGNvbnN0IHRhYmxlSW5mbyA9IHsgc2VsZWN0ZWRDZWxscyB9O1xuICAgICAgICB0aGlzLmlzUmVjdGFuZ2xlID0gaXNSZWN0YW5ndWxhckluVGFibGVDZWxscyh0aGlzLmVkaXRvciwgc2VsZWN0ZWRDZWxscyk7XG4gICAgICAgIHRoaXMuZGVsZXRlSWNvbiA9IHRoaXMuaXNSZWN0YW5nbGUgJiYgRGVsZXRlSWNvblt0aGlzLmdldERlbGV0ZUljb24oKV07XG4gICAgICAgIHNldENlbGxNZW51VmlzaWJpbGl0eSh0aGlzLmVkaXRvciwgdGhpcy5jZWxsTWVudUxpc3QsIHRhYmxlSW5mbyk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2xvciA9IHRoaXMudGFibGVTdG9yZS5nZXRTZWxlY3RlZENlbGxCYWNrZ3JvdW5kQ29sb3IoKTtcblxuICAgICAgICBjb25zdCBwYXRoID0gVGhlRWRpdG9yLmZpbmRQYXRoKHRoaXMuZWRpdG9yLCB0aGlzLnRhYmxlRWxlbWVudCk7XG4gICAgICAgIHRoaXMudGFibGVDaGFuZ2VTdWJzY3JpYmVyID0gdGhpcy50YWJsZVN0b3JlLnRhYmxlQ2hhbmdlKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbnMgPSAoVGhlUXVlcmllcy5nZXROb2RlKHRoaXMuZWRpdG9yLCBwYXRoKSBhcyBUYWJsZUVsZW1lbnQpLmNvbHVtbnM7XG4gICAgICAgICAgICB0aGlzLmlzQ29sdW1uRXF1YWwgPSBjb2x1bW5zPy5ldmVyeShjb2wgPT4gY29sdW1uc1swXS53aWR0aCA9PT0gY29sLndpZHRoKSA/PyB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy50YWJsZUNoYW5nZVN1YnNjcmliZXI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuY29sb3JTZWxlY3RTZXJ2aWNlLmNsb3NlQ29sb3JTZWxlY3QoKTtcbiAgICB9XG5cbiAgICBnZXRJY29uTmFtZShrZXk6IHN0cmluZykge1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAndHJhc2gnOlxuICAgICAgICAgICAgICAgIHRoaXMuaWNvbk5hbWUgPSAn5Yig6Zmk6KGo5qC8JztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3RhYmxlLWRlbGV0ZS1jb2x1bW5zJzpcbiAgICAgICAgICAgICAgICB0aGlzLmljb25OYW1lID0gJ+WIoOmZpOaVtOWIlyc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0YWJsZS1kZWxldGUtcm93cyc6XG4gICAgICAgICAgICAgICAgdGhpcy5pY29uTmFtZSA9ICfliKDpmaTmlbTooYwnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RGVsZXRlSWNvbigpIHtcbiAgICAgICAgaWYgKHRoaXMudGFibGVTdG9yZS5pc1NlbGVjdGVkVGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybiBEZWxldGVJY29uLnRyYXNoO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnRhYmxlU3RvcmUuc2VsZWN0ZWRSb3dzSW5kZXgubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUljb25bJ3RhYmxlLWRlbGV0ZS1yb3dzJ107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudGFibGVTdG9yZS5zZWxlY3RlZENvbHVtbnNJbmRleC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gRGVsZXRlSWNvblsndGFibGUtZGVsZXRlLWNvbHVtbnMnXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBvbkRlbGV0ZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnRhYmxlU3RvcmUucmVtb3ZlQ29sdW1uT3JSb3dzKCk7XG4gICAgICAgIHRoaXMudGFibGVTdG9yZS5jbGVhckRhbmdlcm91c0NlbGxzKCk7XG4gICAgICAgIHRoaXMudGFibGVTdG9yZS5jbGVhclNlbGVjdGVkQ2VsbHMoKTtcbiAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgb25FbnRlckRlbGV0ZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2V0RGFuZ2Vyb3VzQ2VsbHMoKTtcbiAgICB9XG5cbiAgICBvbkxlYXZlRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMudGFibGVTdG9yZS5jbGVhckRhbmdlcm91c0NlbGxzKCk7XG4gICAgfVxuXG4gICAgb3BlblNlbGVjdENvbG9yKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnLnRoeS1hY3Rpb24nKTtcbiAgICAgICAgY29uc3QgaXNIZWFkZXIgPSBUYWJsZUVkaXRvci5pc0FjdGl2ZUhlYWRlcih0aGlzLmVkaXRvcik7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbG9yU2VsZWN0U2VydmljZS50b2dnbGVDb2xvclNlbGVjdChcbiAgICAgICAgICAgICAgICBlbGVtZW50IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2xvcixcbiAgICAgICAgICAgICAgICBCYWNrZ3JvdW5kQ29sb3JzLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGVyUm93Q29sb3JOdW1iZXJzOiA3LFxuICAgICAgICAgICAgICAgICAgICByb3dPcHRpb25zOiB7IDE6ICcjYmJiJywgMjogJyNiYmInIH0sXG4gICAgICAgICAgICAgICAgICAgIHNwZWNpYWxDb2xvcjogaXNIZWFkZXIgPyBUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvciA6IFNwZWNpYWxCYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChuZXdDb2xvcjogQ29sb3JUeXBlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgobmV3Q29sb3IgPT09IFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yICYmIGlzSGVhZGVyKSB8fCAobmV3Q29sb3IgPT09IFNwZWNpYWxCYWNrZ3JvdW5kQ29sb3IgJiYgIWlzSGVhZGVyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLnNldFNlbGVjdGVkQ2VsbHNCYWNrZ3JvdW5kQ29sb3IobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2V0U2VsZWN0ZWRDZWxsc0JhY2tncm91bmRDb2xvcihuZXdDb2xvcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbG9yID0gbmV3Q29sb3I7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnYm90dG9tTGVmdCcsXG4gICAgICAgICAgICAgICAgNFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0RnVsbHNjcmVlbihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLnRhYmxlT3B0aW9ucy5zZXRGdWxsc2NyZWVuKHRoaXMuZWRpdG9yLCBldmVudCwgdGhpcy50YWJsZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIG1vdXNlZG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBvbkNvcHkoZTogRXZlbnQpIHtcbiAgICAgICAgZT8ucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBjb3B5Tm9kZSh0aGlzLmVkaXRvciwgdGhpcy50YWJsZUVsZW1lbnQsIHRoaXMudGh5Tm90aWZ5U2VydmljZSk7XG4gICAgfVxuXG4gICAgc2V0RXF1YWxseUNvbHVtbkhhbmRsZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy50YWJsZUVsZW1lbnQuY29sdW1ucztcbiAgICAgICAgY29uc3Qgc3VtV2lkdGggPSBjb2x1bW5zLnJlZHVjZSgocHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcHJldmlvdXNWYWx1ZSArIGN1cnJlbnRWYWx1ZS53aWR0aDtcbiAgICAgICAgfSwgMCk7XG4gICAgICAgIGNvbnN0IGVxdWFsQ29sdW1ucyA9IGNvbHVtbnMubWFwKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IHdpZHRoOiBzdW1XaWR0aCAvIGNvbHVtbnMubGVuZ3RoIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIFRoZVRyYW5zZm9ybXMuc2V0Tm9kZSh0aGlzLmVkaXRvciwgeyBjb2x1bW5zOiBlcXVhbENvbHVtbnMgfSwgdGhpcy50YWJsZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIG9wZW5UYWJsZU9wdGlvbk1lbnUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnRoeVBvcG92ZXIub3BlbihUaGVUYWJsZU9wdGlvbnNDb21wb25lbnQsIHtcbiAgICAgICAgICAgIG9yaWdpbjogZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgICAgIHRhYmxlU3RvcmU6IHRoaXMudGFibGVTdG9yZSxcbiAgICAgICAgICAgICAgICBlZGl0b3I6IHRoaXMuZWRpdG9yXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWluV2lkdGg6IDAsXG4gICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIG91dHNpZGVDbG9zYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbUxlZnQnLFxuICAgICAgICAgICAgb3JpZ2luQWN0aXZlQ2xhc3M6ICdhY3RpdmUnLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ3RhYmxlLW9wdGlvbnMtcGFubmVsJ1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBlbnVtIERlbGV0ZUljb24ge1xuICAgICd0YWJsZS1kZWxldGUtcm93cycsXG4gICAgJ3RhYmxlLWRlbGV0ZS1jb2x1bW5zJyxcbiAgICAndHJhc2gnXG59XG4iLCI8dGh5LWFjdGlvbnMgdGh5U2l6ZT1cInh4c1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY2VsbE1lbnVMaXN0XCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgICAqbmdJZj1cIml0ZW0udmlzaWJpbGl0eVwiXG4gICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgICAgICAgIHRoeUFjdGlvblxuICAgICAgICAgICAgW3RoeUFjdGlvbkljb25dPVwiaXRlbS5pY29uXCJcbiAgICAgICAgICAgIFt0aHlUb29sdGlwXT1cIml0ZW0ubmFtZVwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIml0ZW0uYWN0aW9uSGFuZGxlKClcIlxuICAgICAgICA+PC9hPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDx0aHktZGl2aWRlciAqbmdJZj1cImhhc0RpdmlkZXJcIiBjbGFzcz1cIm1yLTIgbWwtMSBhbGlnbi1zZWxmLWNlbnRlclwiIFt0aHlWZXJ0aWNhbF09XCJ0cnVlXCI+IDwvdGh5LWRpdmlkZXI+XG4gICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIHRoeUFjdGlvbiB0aHlUb29sdGlwPVwi5Y2V5YWD5qC86IOM5pmvXCIgKG1vdXNlZG93bik9XCJvcGVuU2VsZWN0Q29sb3IoJGV2ZW50KVwiPlxuICAgICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJiYWNrZ3JvdW5kLXR0XCIgdGh5SWNvblR5cGU9XCJ0d290b25lXCIgW3RoeVR3b3RvbmVDb2xvcl09XCJzZWxlY3RlZENvbG9yXCI+PC90aHktaWNvbj5cbiAgICA8L2E+XG4gICAgPGFcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gICAgICAgICpuZ0lmPVwidGFibGVTdG9yZS5pc1NlbGVjdGVkVGFibGUgJiYgIWlzQ29sdW1uRXF1YWxcIlxuICAgICAgICB0aHlBY3Rpb25cbiAgICAgICAgdGh5VG9vbHRpcD1cIuWIl+etieWuvVwiXG4gICAgICAgIChtb3VzZWRvd24pPVwic2V0RXF1YWxseUNvbHVtbkhhbmRsZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cInRhYmxlLWNvbHVtbi1lcXVhbC13aWR0aFwiPjwvdGh5LWljb24+XG4gICAgPC9hPlxuICAgIDxhXG4gICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgICAqbmdJZj1cInRhYmxlU3RvcmUuaXNTZWxlY3RlZFRhYmxlICYmIHRhYmxlT3B0aW9ucz8uc2hvd0Z1bGxzY3JlZW5cIlxuICAgICAgICB0aHlBY3Rpb25cbiAgICAgICAgdGh5VG9vbHRpcD1cIuWFqOWxj1wiXG4gICAgICAgIChtb3VzZWRvd24pPVwic2V0RnVsbHNjcmVlbigkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImFycm93cy1hbHRcIj48L3RoeS1pY29uPlxuICAgIDwvYT5cbiAgICA8YVxuICAgICAgICAqbmdJZj1cInRhYmxlU3RvcmUuaXNTZWxlY3RlZFRhYmxlICYmICF0YWJsZVN0b3JlPy5pc0Z1bGxzY3JlZW5cIlxuICAgICAgICBjbGFzcz1cImZ1bGxzY3JlZW4taGlkZGVuXCJcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gICAgICAgIHRoeUFjdGlvblxuICAgICAgICB0aHlBY3Rpb25JY29uPVwiY29weVwiXG4gICAgICAgIHRoeVRvb2x0aXA9XCLlpI3liLZcIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uQ29weSgkZXZlbnQpXCJcbiAgICA+PC9hPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZVN0b3JlLmlzU2VsZWN0ZWRUYWJsZVwiPlxuICAgICAgICA8dGh5LWRpdmlkZXIgY2xhc3M9XCJtci0yIG1sLTEgYWxpZ24tc2VsZi1jZW50ZXJcIiBbdGh5VmVydGljYWxdPVwidHJ1ZVwiPjwvdGh5LWRpdmlkZXI+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiBjbGFzcz1cImxpbmstd2l0aC1kb3duXCIgdGh5QWN0aW9uIChtb3VzZWRvd24pPVwibW91c2Vkb3duKCRldmVudClcIiAoY2xpY2spPVwib3BlblRhYmxlT3B0aW9uTWVudSgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8c3Bhbj7ooajmoLzpgInpobk8L3NwYW4+XG4gICAgICAgICAgICA8dGh5LWljb24gY2xhc3M9XCJmb250LXNpemUtc20gdGV4dC1kZXNjIG1sLTFcIiB0aHlJY29uTmFtZT1cImNhcmV0LWRvd25cIj48L3RoeS1pY29uPlxuICAgICAgICA8L2E+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVTdG9yZT8uaXNGdWxsc2NyZWVuID8gaXNSZWN0YW5nbGUgJiYgZGVsZXRlSWNvbiAmJiAhdGFibGVTdG9yZS5pc1NlbGVjdGVkVGFibGUgOiBkZWxldGVJY29uXCI+XG4gICAgICAgIDx0aHktZGl2aWRlciBjbGFzcz1cIm1yLTIgbWwtMSBhbGlnbi1zZWxmLWNlbnRlclwiIFt0aHlWZXJ0aWNhbF09XCJ0cnVlXCI+PC90aHktZGl2aWRlcj5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgICAgICAgdGh5QWN0aW9uXG4gICAgICAgICAgICB0aHlUeXBlPVwiZGFuZ2VyXCJcbiAgICAgICAgICAgIFt0aHlBY3Rpb25JY29uXT1cImRlbGV0ZUljb25cIlxuICAgICAgICAgICAgW3RoeVRvb2x0aXBdPVwiaWNvbk5hbWVcIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbkRlbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChtb3VzZWVudGVyKT1cIm9uRW50ZXJEZWxldGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJvbkxlYXZlRGVsZXRlKCRldmVudClcIlxuICAgICAgICA+PC9hPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC90aHktYWN0aW9ucz5cbiJdfQ==