@one-paragon/angular-utilities 0.2.2 → 0.3.1

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 (128) hide show
  1. package/action-state/action-state-spinner/action-state-spinner.component.d.ts +1 -1
  2. package/action-state/action-state-ui/action-state-ui.module.d.ts +1 -3
  3. package/esm2022/action-state/action-state-spinner/action-state-spinner.component.mjs +6 -5
  4. package/esm2022/action-state/action-state-ui/action-state-ui.module.mjs +4 -12
  5. package/esm2022/action-state/ngrx.mjs +4 -4
  6. package/esm2022/http-request-state/directives/http-error-state-directive.mjs +3 -3
  7. package/esm2022/http-request-state/directives/http-inProgress-state-directive.mjs +3 -3
  8. package/esm2022/http-request-state/directives/http-notStarted-state-directive.mjs +3 -3
  9. package/esm2022/http-request-state/directives/http-success-state-directive.mjs +3 -3
  10. package/esm2022/http-request-state/directives/request-state-directive.mjs +3 -3
  11. package/esm2022/http-request-state/http-state-module.mjs +3 -4
  12. package/esm2022/ngrx/actionable-selector.mjs +7 -11
  13. package/esm2022/table-builder/classes/TableBuilderConfig.mjs +13 -2
  14. package/esm2022/table-builder/classes/TableState.mjs +2 -1
  15. package/esm2022/table-builder/classes/table-store.mjs +6 -8
  16. package/esm2022/table-builder/components/array-column.component.mjs +31 -27
  17. package/esm2022/table-builder/components/column-builder/column-builder.component.mjs +19 -15
  18. package/esm2022/table-builder/components/date-filter/date-filter.component.mjs +13 -8
  19. package/esm2022/table-builder/components/date-time-filter/date-time-filter.component.mjs +9 -6
  20. package/esm2022/table-builder/components/filter/filter.component.mjs +33 -20
  21. package/esm2022/table-builder/components/filter/in-list/in-list-filter.component.mjs +24 -20
  22. package/esm2022/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +17 -10
  23. package/esm2022/table-builder/components/generic-table/generic-table.component.mjs +28 -22
  24. package/esm2022/table-builder/components/generic-table/paginator.component.mjs +22 -22
  25. package/esm2022/table-builder/components/group-by-list/group-by-list.component.mjs +18 -16
  26. package/esm2022/table-builder/components/header-menu/header-menu.component.mjs +26 -16
  27. package/esm2022/table-builder/components/in-filter/in-filter.component.mjs +10 -8
  28. package/esm2022/table-builder/components/initialization-component/initialization-component.mjs +9 -6
  29. package/esm2022/table-builder/components/link-column.component.mjs +47 -42
  30. package/esm2022/table-builder/components/number-filter/number-filter.component.mjs +11 -8
  31. package/esm2022/table-builder/components/sort-menu/sort-menu.component.mjs +17 -11
  32. package/esm2022/table-builder/components/table-container/table-container-imports.mjs +22 -0
  33. package/esm2022/table-builder/components/table-container/table-container.mjs +76 -85
  34. package/esm2022/table-builder/components/table-container-filter/filter-list/filter-list.component.mjs +29 -24
  35. package/esm2022/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.mjs +15 -9
  36. package/esm2022/table-builder/directives/custom-cell-directive.mjs +3 -2
  37. package/esm2022/table-builder/directives/multi-sort.directive.mjs +4 -3
  38. package/esm2022/table-builder/directives/resize-column.directive.mjs +3 -2
  39. package/esm2022/table-builder/directives/table-wrapper.directive.mjs +6 -5
  40. package/esm2022/table-builder/directives/tb-filter.directive.mjs +22 -15
  41. package/esm2022/table-builder/ngrx/tableBuilderStateStore.mjs +116 -0
  42. package/esm2022/table-builder/pipes/column-total.pipe.mjs +6 -3
  43. package/esm2022/table-builder/pipes/format-filter-type.pipe.mjs +3 -3
  44. package/esm2022/table-builder/pipes/format-filter-value.pipe.mjs +3 -3
  45. package/esm2022/table-builder/pipes/key-display.mjs +3 -3
  46. package/esm2022/table-builder/table-builder.module.mjs +36 -123
  47. package/esm2022/utilities/directives/auto-focus.directive.mjs +4 -3
  48. package/esm2022/utilities/directives/clickEmitterDirective.mjs +4 -3
  49. package/esm2022/utilities/directives/clickSubject.mjs +4 -3
  50. package/esm2022/utilities/directives/conditional-classes.directive.mjs +4 -3
  51. package/esm2022/utilities/directives/dialog-service.mjs +2 -4
  52. package/esm2022/utilities/directives/dialog.mjs +9 -9
  53. package/esm2022/utilities/directives/mat-toggle-group-directive.mjs +3 -2
  54. package/esm2022/utilities/directives/prevent-enter.directive.mjs +4 -3
  55. package/esm2022/utilities/directives/stop-propagation.directive.mjs +4 -3
  56. package/esm2022/utilities/directives/styler.mjs +3 -2
  57. package/esm2022/utilities/directives/trim-whitespace.directive.mjs +3 -2
  58. package/esm2022/utilities/module.mjs +3 -4
  59. package/esm2022/utilities/pipes/function.pipe.mjs +4 -3
  60. package/esm2022/utilities/pipes/phone.pipe.mjs +3 -3
  61. package/esm2022/utilities/pipes/space-case.pipes.mjs +3 -3
  62. package/fesm2022/one-paragon-angular-utilities.mjs +2195 -2379
  63. package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -1
  64. package/http-request-state/directives/http-error-state-directive.d.ts +1 -1
  65. package/http-request-state/directives/http-inProgress-state-directive.d.ts +1 -1
  66. package/http-request-state/directives/http-notStarted-state-directive.d.ts +1 -1
  67. package/http-request-state/directives/http-success-state-directive.d.ts +1 -1
  68. package/http-request-state/directives/request-state-directive.d.ts +1 -1
  69. package/http-request-state/http-state-module.d.ts +1 -1
  70. package/ngrx/actionable-selector.d.ts +1 -0
  71. package/package.json +1 -1
  72. package/table-builder/classes/TableState.d.ts +2 -1
  73. package/table-builder/classes/table-store.d.ts +3 -3
  74. package/table-builder/components/array-column.component.d.ts +1 -1
  75. package/table-builder/components/column-builder/column-builder.component.d.ts +1 -1
  76. package/table-builder/components/date-filter/date-filter.component.d.ts +1 -1
  77. package/table-builder/components/date-time-filter/date-time-filter.component.d.ts +1 -1
  78. package/table-builder/components/filter/filter.component.d.ts +5 -5
  79. package/table-builder/components/filter/in-list/in-list-filter.component.d.ts +1 -1
  80. package/table-builder/components/gen-col-displayer/gen-col-displayer.component.d.ts +1 -1
  81. package/table-builder/components/generic-table/generic-table.component.d.ts +3 -3
  82. package/table-builder/components/generic-table/paginator.component.d.ts +1 -1
  83. package/table-builder/components/group-by-list/group-by-list.component.d.ts +2 -5
  84. package/table-builder/components/header-menu/header-menu.component.d.ts +1 -1
  85. package/table-builder/components/in-filter/in-filter.component.d.ts +1 -1
  86. package/table-builder/components/initialization-component/initialization-component.d.ts +1 -1
  87. package/table-builder/components/link-column.component.d.ts +1 -1
  88. package/table-builder/components/number-filter/number-filter.component.d.ts +1 -1
  89. package/table-builder/components/sort-menu/sort-menu.component.d.ts +1 -1
  90. package/table-builder/components/table-container/table-container-imports.d.ts +11 -0
  91. package/table-builder/components/table-container/table-container.d.ts +18 -19
  92. package/table-builder/components/table-container-filter/filter-list/filter-list.component.d.ts +2 -3
  93. package/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.d.ts +1 -1
  94. package/table-builder/directives/custom-cell-directive.d.ts +1 -1
  95. package/table-builder/directives/multi-sort.directive.d.ts +1 -1
  96. package/table-builder/directives/resize-column.directive.d.ts +1 -1
  97. package/table-builder/directives/table-wrapper.directive.d.ts +2 -2
  98. package/table-builder/directives/tb-filter.directive.d.ts +7 -7
  99. package/table-builder/ngrx/tableBuilderStateStore.d.ts +62 -0
  100. package/table-builder/pipes/column-total.pipe.d.ts +1 -1
  101. package/table-builder/pipes/format-filter-type.pipe.d.ts +1 -1
  102. package/table-builder/pipes/format-filter-value.pipe.d.ts +1 -1
  103. package/table-builder/pipes/key-display.d.ts +1 -1
  104. package/table-builder/table-builder.module.d.ts +13 -38
  105. package/utilities/directives/auto-focus.directive.d.ts +1 -1
  106. package/utilities/directives/clickEmitterDirective.d.ts +1 -1
  107. package/utilities/directives/clickSubject.d.ts +1 -1
  108. package/utilities/directives/conditional-classes.directive.d.ts +1 -1
  109. package/utilities/directives/dialog.d.ts +3 -3
  110. package/utilities/directives/mat-toggle-group-directive.d.ts +1 -1
  111. package/utilities/directives/prevent-enter.directive.d.ts +1 -1
  112. package/utilities/directives/stop-propagation.directive.d.ts +1 -1
  113. package/utilities/directives/styler.d.ts +1 -1
  114. package/utilities/directives/trim-whitespace.directive.d.ts +1 -1
  115. package/utilities/module.d.ts +1 -1
  116. package/utilities/pipes/function.pipe.d.ts +1 -1
  117. package/utilities/pipes/phone.pipe.d.ts +1 -1
  118. package/utilities/pipes/space-case.pipes.d.ts +1 -1
  119. package/esm2022/table-builder/material.module.mjs +0 -208
  120. package/esm2022/table-builder/ngrx/actions.mjs +0 -5
  121. package/esm2022/table-builder/ngrx/effects.mjs +0 -49
  122. package/esm2022/table-builder/ngrx/reducer.mjs +0 -52
  123. package/esm2022/table-builder/ngrx/selectors.mjs +0 -24
  124. package/table-builder/material.module.d.ts +0 -32
  125. package/table-builder/ngrx/actions.d.ts +0 -23
  126. package/table-builder/ngrx/effects.d.ts +0 -19
  127. package/table-builder/ngrx/reducer.d.ts +0 -15
  128. package/table-builder/ngrx/selectors.d.ts +0 -22
@@ -1,23 +1,25 @@
1
- import { Component } from '@angular/core';
1
+ import { Component, inject } from '@angular/core';
2
+ import { TableStore } from '../../classes/table-store';
3
+ import { MatChipsModule } from '@angular/material/chips';
4
+ import { LetDirective } from '@ngrx/component';
5
+ import { NgFor, NgIf } from '@angular/common';
6
+ import { MatIconModule } from '@angular/material/icon';
7
+ import { SpaceCasePipe } from '../../../utilities';
2
8
  import * as i0 from "@angular/core";
3
- import * as i1 from "../../classes/table-store";
4
- import * as i2 from "@angular/common";
5
- import * as i3 from "@angular/material/icon";
6
- import * as i4 from "@angular/material/chips";
7
- import * as i5 from "@ngrx/component";
8
- import * as i6 from "../../../utilities/pipes/space-case.pipes";
9
+ import * as i1 from "@angular/material/chips";
10
+ import * as i2 from "@angular/material/icon";
9
11
  class GroupByListComponent {
10
- constructor(tableStore) {
11
- this.tableStore = tableStore;
12
+ constructor() {
13
+ this.tableStore = inject(TableStore);
12
14
  }
13
- ngOnInit() {
14
- }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: GroupByListComponent, deps: [{ token: i1.TableStore }], target: i0.ɵɵFactoryTarget.Component }); }
16
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: GroupByListComponent, selector: "group-by-list", ngImport: i0, template: "<mat-chip-set *ngrxLet=\"tableStore.groupByKeys$ as groupByKeys\">\r\n <span *ngIf=\"groupByKeys?.length\" class=\"tb-group-label\">Group By:</span>\r\n <ng-container *ngFor=\"let groupByKey of groupByKeys; let i = index;\">\r\n <mat-icon *ngIf=\"i > 0\" class=\"nested-arrow\">arrow_right</mat-icon>\r\n <mat-chip (removed)=\"tableStore.removeGroupByKey(groupByKey)\">\r\n {{groupByKey | spaceCase}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n </ng-container>\r\n</mat-chip-set>\r\n", styles: [".tb-group-label{padding-right:5px}.nested-arrow{margin-right:-8px;margin-left:-8px}\n"], 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.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "role", "id", "aria-label", "aria-description", "value", "removable", "highlighted"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "directive", type: i4.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i4.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role"] }, { kind: "directive", type: i5.LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "pipe", type: i6.SpaceCasePipe, name: "spaceCase" }] }); }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: GroupByListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: GroupByListComponent, isStandalone: true, selector: "group-by-list", ngImport: i0, template: "<mat-chip-set *ngrxLet=\"tableStore.groupByKeys$ as groupByKeys\">\r\n <span *ngIf=\"groupByKeys?.length\" class=\"tb-group-label\">Group By:</span>\r\n <ng-container *ngFor=\"let groupByKey of groupByKeys; let i = index;\">\r\n <mat-icon *ngIf=\"i > 0\" class=\"nested-arrow\">arrow_right</mat-icon>\r\n <mat-chip (removed)=\"tableStore.removeGroupByKey(groupByKey)\">\r\n {{groupByKey | spaceCase}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n </ng-container>\r\n</mat-chip-set>\r\n", styles: [".tb-group-label{padding-right:5px}.nested-arrow{margin-right:-8px;margin-left:-8px}\n"], dependencies: [{ kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i1.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "role", "id", "aria-label", "aria-description", "value", "removable", "highlighted"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "directive", type: i1.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i1.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role"] }, { kind: "directive", type: LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: SpaceCasePipe, name: "spaceCase" }] }); }
17
17
  }
18
18
  export { GroupByListComponent };
19
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: GroupByListComponent, decorators: [{
20
20
  type: Component,
21
- args: [{ selector: 'group-by-list', template: "<mat-chip-set *ngrxLet=\"tableStore.groupByKeys$ as groupByKeys\">\r\n <span *ngIf=\"groupByKeys?.length\" class=\"tb-group-label\">Group By:</span>\r\n <ng-container *ngFor=\"let groupByKey of groupByKeys; let i = index;\">\r\n <mat-icon *ngIf=\"i > 0\" class=\"nested-arrow\">arrow_right</mat-icon>\r\n <mat-chip (removed)=\"tableStore.removeGroupByKey(groupByKey)\">\r\n {{groupByKey | spaceCase}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n </ng-container>\r\n</mat-chip-set>\r\n", styles: [".tb-group-label{padding-right:5px}.nested-arrow{margin-right:-8px;margin-left:-8px}\n"] }]
22
- }], ctorParameters: function () { return [{ type: i1.TableStore }]; } });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtYnktbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2dyb3VwLWJ5LWxpc3QvZ3JvdXAtYnktbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2dyb3VwLWJ5LWxpc3QvZ3JvdXAtYnktbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQUdsRCxNQUthLG9CQUFvQjtJQUUvQixZQUFtQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQUksQ0FBQztJQUU5QyxRQUFRO0lBQ1IsQ0FBQzs4R0FMVSxvQkFBb0I7a0dBQXBCLG9CQUFvQixxRENSakMsaWhCQVVBOztTREZhLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2dyb3VwLWJ5LWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ncm91cC1ieS1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ncm91cC1ieS1saXN0LmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgR3JvdXBCeUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGFibGVTdG9yZTogVGFibGVTdG9yZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPG1hdC1jaGlwLXNldCAqbmdyeExldD1cInRhYmxlU3RvcmUuZ3JvdXBCeUtleXMkIGFzIGdyb3VwQnlLZXlzXCI+XHJcbiAgPHNwYW4gKm5nSWY9XCJncm91cEJ5S2V5cz8ubGVuZ3RoXCIgY2xhc3M9XCJ0Yi1ncm91cC1sYWJlbFwiPkdyb3VwIEJ5Ojwvc3Bhbj5cclxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cEJ5S2V5IG9mIGdyb3VwQnlLZXlzOyBsZXQgaSA9IGluZGV4O1wiPlxyXG4gICAgPG1hdC1pY29uICpuZ0lmPVwiaSA+IDBcIiBjbGFzcz1cIm5lc3RlZC1hcnJvd1wiPmFycm93X3JpZ2h0PC9tYXQtaWNvbj5cclxuICAgIDxtYXQtY2hpcCAocmVtb3ZlZCk9XCJ0YWJsZVN0b3JlLnJlbW92ZUdyb3VwQnlLZXkoZ3JvdXBCeUtleSlcIj5cclxuICAgICAge3tncm91cEJ5S2V5IHwgc3BhY2VDYXNlfX1cclxuICAgICAgPG1hdC1pY29uIG1hdENoaXBSZW1vdmU+Y2FuY2VsPC9tYXQtaWNvbj5cclxuICAgIDwvbWF0LWNoaXA+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbWF0LWNoaXAtc2V0PlxyXG4iXX0=
21
+ args: [{ selector: 'group-by-list', standalone: true, imports: [
22
+ MatChipsModule, LetDirective, NgIf, NgFor, MatIconModule, SpaceCasePipe
23
+ ], template: "<mat-chip-set *ngrxLet=\"tableStore.groupByKeys$ as groupByKeys\">\r\n <span *ngIf=\"groupByKeys?.length\" class=\"tb-group-label\">Group By:</span>\r\n <ng-container *ngFor=\"let groupByKey of groupByKeys; let i = index;\">\r\n <mat-icon *ngIf=\"i > 0\" class=\"nested-arrow\">arrow_right</mat-icon>\r\n <mat-chip (removed)=\"tableStore.removeGroupByKey(groupByKey)\">\r\n {{groupByKey | spaceCase}}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </mat-chip>\r\n </ng-container>\r\n</mat-chip-set>\r\n", styles: [".tb-group-label{padding-right:5px}.nested-arrow{margin-right:-8px;margin-left:-8px}\n"] }]
24
+ }] });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtYnktbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2dyb3VwLWJ5LWxpc3QvZ3JvdXAtYnktbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2dyb3VwLWJ5LWxpc3QvZ3JvdXAtYnktbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFFbkQsTUFTYSxvQkFBb0I7SUFUakM7UUFXRSxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ2pDOzhHQUhZLG9CQUFvQjtrR0FBcEIsb0JBQW9CLHlFQ2pCakMsaWhCQVVBLDhJRElJLGNBQWMsdWdCQUFFLFlBQVksaUdBQUUsSUFBSSw2RkFBRSxLQUFLLGtIQUFFLGFBQWEsK0tBQUUsYUFBYTs7U0FHOUQsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBVGhDLFNBQVM7K0JBQ0UsZUFBZSxjQUdiLElBQUksV0FDUDt3QkFDUCxjQUFjLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLGFBQWE7cUJBQ3hFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGFibGVTdG9yZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvdGFibGUtc3RvcmUnO1xyXG5pbXBvcnQgeyBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcclxuaW1wb3J0IHsgTGV0RGlyZWN0aXZlIH0gZnJvbSAnQG5ncngvY29tcG9uZW50JztcclxuaW1wb3J0IHsgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IFNwYWNlQ2FzZVBpcGUgfSBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdncm91cC1ieS1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JvdXAtYnktbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3JvdXAtYnktbGlzdC5jb21wb25lbnQuY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRDaGlwc01vZHVsZSwgTGV0RGlyZWN0aXZlLCBOZ0lmLCBOZ0ZvciwgTWF0SWNvbk1vZHVsZSwgU3BhY2VDYXNlUGlwZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEdyb3VwQnlMaXN0Q29tcG9uZW50IHtcclxuICBcclxuICB0YWJsZVN0b3JlID0gaW5qZWN0KFRhYmxlU3RvcmUpO1xyXG59XHJcbiIsIjxtYXQtY2hpcC1zZXQgKm5ncnhMZXQ9XCJ0YWJsZVN0b3JlLmdyb3VwQnlLZXlzJCBhcyBncm91cEJ5S2V5c1wiPlxyXG4gIDxzcGFuICpuZ0lmPVwiZ3JvdXBCeUtleXM/Lmxlbmd0aFwiIGNsYXNzPVwidGItZ3JvdXAtbGFiZWxcIj5Hcm91cCBCeTo8L3NwYW4+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXBCeUtleSBvZiBncm91cEJ5S2V5czsgbGV0IGkgPSBpbmRleDtcIj5cclxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImkgPiAwXCIgY2xhc3M9XCJuZXN0ZWQtYXJyb3dcIj5hcnJvd19yaWdodDwvbWF0LWljb24+XHJcbiAgICA8bWF0LWNoaXAgKHJlbW92ZWQpPVwidGFibGVTdG9yZS5yZW1vdmVHcm91cEJ5S2V5KGdyb3VwQnlLZXkpXCI+XHJcbiAgICAgIHt7Z3JvdXBCeUtleSB8IHNwYWNlQ2FzZX19XHJcbiAgICAgIDxtYXQtaWNvbiBtYXRDaGlwUmVtb3ZlPmNhbmNlbDwvbWF0LWljb24+XHJcbiAgICA8L21hdC1jaGlwPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L21hdC1jaGlwLXNldD5cclxuIl19
@@ -1,21 +1,28 @@
1
1
  import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';
2
2
  import { FieldType } from '../../interfaces/report-def';
3
3
  import { FilterType } from '../../enums/filterTypes';
4
- import { MatMenuTrigger } from '@angular/material/menu';
4
+ import { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';
5
+ import { MatIconModule } from '@angular/material/icon';
6
+ import { MatButtonModule } from '@angular/material/button';
7
+ import { FormsModule } from '@angular/forms';
8
+ import { NgClass, NgIf, NgSwitch, NgSwitchCase } from '@angular/common';
9
+ import { InListFilterComponent } from '../filter/in-list/in-list-filter.component';
10
+ import { MatInputModule } from '@angular/material/input';
11
+ import { MatTooltipModule } from '@angular/material/tooltip';
12
+ import { StopPropagationDirective } from '../../../utilities';
13
+ import { MatRadioModule } from '@angular/material/radio';
14
+ import { MatDatepickerModule } from '@angular/material/datepicker';
5
15
  import * as i0 from "@angular/core";
6
16
  import * as i1 from "../../classes/table-store";
7
- import * as i2 from "@angular/common";
8
- import * as i3 from "@angular/material/form-field";
9
- import * as i4 from "@angular/material/datepicker";
10
- import * as i5 from "@angular/material/radio";
11
- import * as i6 from "@angular/material/button";
12
- import * as i7 from "@angular/material/tooltip";
13
- import * as i8 from "@angular/material/input";
14
- import * as i9 from "@angular/material/menu";
15
- import * as i10 from "@angular/material/icon";
16
- import * as i11 from "@angular/forms";
17
- import * as i12 from "../../../utilities/directives/stop-propagation.directive";
18
- import * as i13 from "../filter/in-list/in-list-filter.component";
17
+ import * as i2 from "@angular/material/menu";
18
+ import * as i3 from "@angular/material/icon";
19
+ import * as i4 from "@angular/material/button";
20
+ import * as i5 from "@angular/forms";
21
+ import * as i6 from "@angular/material/input";
22
+ import * as i7 from "@angular/material/form-field";
23
+ import * as i8 from "@angular/material/tooltip";
24
+ import * as i9 from "@angular/material/radio";
25
+ import * as i10 from "@angular/material/datepicker";
19
26
  class HeaderMenuComponent {
20
27
  constructor(tableState) {
21
28
  this.tableState = tableState;
@@ -75,12 +82,15 @@ class HeaderMenuComponent {
75
82
  }
76
83
  }
77
84
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: HeaderMenuComponent, deps: [{ token: i1.TableStore }], target: i0.ɵɵFactoryTarget.Component }); }
78
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: HeaderMenuComponent, selector: "tb-header-menu", inputs: { filter: "filter", metaData: "metaData" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<button mat-icon-button class=\"open-menu-icon-button\" disableRipple [matMenuTriggerFor]=\"menu\" [matMenuTriggerRestoreFocus]=\"false\">\r\n <mat-icon class=\"menu-icon\">more_vert</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\" >\r\n <button mat-menu-item (click)=\"tableState.addGroupByKey(metaData.key)\">\r\n <mat-icon color=\"primary\">group</mat-icon>\r\n <span>Group By</span>\r\n </button>\r\n <button mat-menu-item (click)=hideField(metaData.key)>\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n <span>Hide Column</span>\r\n </button>\r\n <ng-form #myForm=\"ngForm\" [ngSwitch]=\"true\" (keydown.enter)=\"onEnter(myForm.value)\" class=\"tb-header-filter\">\r\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"'header-column-' + metaData.key\" />\r\n <input type=\"hidden\" name=\"filterType\" [ngModel]=\"myFilterType\" />\r\n <input type=\"hidden\" name=\"key\" [ngModel]=\"metaData.key\" />\r\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"metaData.fieldType\" />\r\n\r\n <ng-container *ngIf=\"(myFilterType === FilterType.Or || myFilterType === FilterType.In); else defaultFilter\">\r\n <tb-in-list-filter name='filterValue' [key]='metaData.key' [(ngModel)]='myFilterValue' >\r\n </tb-in-list-filter>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultFilter>\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Link || metaData.fieldType === FieldType.String || metaData.fieldType === FieldType.Array || metaData.fieldType === FieldType.Unknown || metaData.fieldType === FieldType.PhoneNumber\">\r\n <mat-form-field stop-propagation class=\"font auto-width\">\r\n <mat-icon matPrefix class=\"search-icon\">search</mat-icon>\r\n <mat-label>{{myFilterType === FilterType.StringDoesNotContain ? 'Does Not Contain...' : 'Contains...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matSuffix [matTooltip]=\"myFilterType === FilterType.StringDoesNotContain ? 'Contains' : 'Does Not Contain'\">\r\n <button mat-icon-button color=\"primary\" (click)=\"setStringFilterType()\" class=\"header-filter-icon-button\">\r\n <mat-icon [ngClass]=\"{'chosen-icon': myFilterType === FilterType.StringDoesNotContain }\">\r\n block\r\n </mat-icon>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Number || metaData.fieldType === FieldType.Currency\">\r\n <mat-form-field class=\"auto-width\" stop-propagation>\r\n \r\n <mat-label>{{myFilterType === FilterType.NumberEquals ? 'Equals...' : myFilterType === FilterType.NumberLessThan ? 'Less Than...' : 'More Than...'}}</mat-label>\r\n <input matInput type='number' name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberLessThan)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberLessThan }\">\r\n <mat-icon class=\"suffix-icons\"\r\n >\r\n arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberGreaterThan)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberGreaterThan }\" >\r\n <mat-icon class=\"suffix-icons\"\r\n >\r\n arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberEquals)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberEquals }\">\r\n <span class=\"suffix-icons\"\r\n >\r\n =</span>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Boolean\">\r\n <div>\r\n <label>\r\n <mat-icon class=\"search-icon\">filter_list</mat-icon>\r\n </label>\r\n <mat-radio-group stop-propagation #ctrl=\"matRadioGroup\" #boolField='ngModel' class=\"font\" name=\"filterValue\" [ngModel]=\"myFilterValue\" >\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = true;\" [value]=\"true\">True</mat-radio-button><br/>\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = false\" [value]=\"false\">False</mat-radio-button><br/>\r\n </mat-radio-group>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Date || metaData.fieldType === FieldType.DateTime\">\r\n <mat-form-field class=\"font auto-width\" stop-propagation >\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrAfter)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrAfter }\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrBefore)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrBefore }\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateIsOn)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateIsOn }\">\r\n <span class=\"suffix-icons underline\"> =</span>\r\n </button>\r\n </span>\r\n <mat-label>{{myFilterType === FilterType.DateIsOn ? 'On...' :\r\n myFilterType === FilterType.DateOnOrBefore ? 'On or Before...' : 'On or After...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" [matDatepicker]=\"calendar\"\r\n (click)=\"calendar.open()\"/>\r\n <mat-datepicker-toggle class=\"date-toggle header-filter-icon-button\" matSuffix [for]=\"calendar\" preventEnter></mat-datepicker-toggle>\r\n <mat-datepicker #calendar></mat-datepicker>\r\n </mat-form-field>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <button mat-button (click)=\"onEnter(myForm.value)\" [disabled]=\"myForm.value.filterValue == undefined\" disableRipple>\r\n Apply\r\n </button>\r\n </ng-form>\r\n</mat-menu>\r\n", styles: ["input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.menu-icon{font-size:16px;line-height:16px;vertical-align:top;height:16px;width:16px}.search-icon{margin-right:16px;vertical-align:middle;height:24px;color:#0000008a;font-size:21px;line-height:1.125}.font{font-size:14px}.filter-radio-button:first-of-type{padding-left:0}.filter-radio-button{padding:10px 40px;min-width:110px}.auto-width{width:260px;margin:5px;display:block;height:55px}.open-menu-icon-button{height:28px;width:28px;padding:6px}.header-filter-icon-button{height:18px;width:18px;font-size:18px;padding:0;margin:0 2px}.header-filter-icon-button ::ng-deep *{line-height:initial;font-size:initial;height:18px;width:18px;font-size:18px;bottom:initial}.header-filter-icon-button.chosen-icon,.header-filter-icon-button.chosen-icon ::ng-deep *{height:22px;width:22px;font-size:22px;color:green}mat-icon.mat-icon.suffix-icons.underline{height:20px;-webkit-text-decoration:underline .1px solid;text-decoration:underline .1px solid}.chosen-icon mat-icon.mat-icon.suffix-icons.underline{height:24px}::ng-deep .mat-mdc-form-field-icon-prefix:has(.tb-header-prefix),.tb-header-prefix{padding:0;flex-basis:36%}.tb-header-filter ::ng-deep .mat-mdc-form-field-subscript-wrapper{line-height:0}.tb-header-filter ::ng-deep .mat-mdc-form-field-subscript-wrapper:before{height:0}.date-toggle ::ng-deep svg{position:absolute;left:0;top:0}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i4.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i5.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i5.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i11.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i11.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i11.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i12.StopPropagationDirective, selector: "[stop-propagation]" }, { kind: "component", type: i13.InListFilterComponent, selector: "tb-in-list-filter , [tb-in-list-filter]", inputs: ["key"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
85
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: HeaderMenuComponent, isStandalone: true, selector: "tb-header-menu", inputs: { filter: "filter", metaData: "metaData" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<button mat-icon-button class=\"open-menu-icon-button\" disableRipple [matMenuTriggerFor]=\"menu\" [matMenuTriggerRestoreFocus]=\"false\">\r\n <mat-icon class=\"menu-icon\">more_vert</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\" >\r\n <button mat-menu-item (click)=\"tableState.addGroupByKey(metaData.key)\">\r\n <mat-icon color=\"primary\">group</mat-icon>\r\n <span>Group By</span>\r\n </button>\r\n <button mat-menu-item (click)=hideField(metaData.key)>\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n <span>Hide Column</span>\r\n </button>\r\n <ng-form #myForm=\"ngForm\" [ngSwitch]=\"true\" (keydown.enter)=\"onEnter(myForm.value)\" class=\"tb-header-filter\">\r\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"'header-column-' + metaData.key\" />\r\n <input type=\"hidden\" name=\"filterType\" [ngModel]=\"myFilterType\" />\r\n <input type=\"hidden\" name=\"key\" [ngModel]=\"metaData.key\" />\r\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"metaData.fieldType\" />\r\n\r\n <ng-container *ngIf=\"(myFilterType === FilterType.Or || myFilterType === FilterType.In); else defaultFilter\">\r\n <tb-in-list-filter name='filterValue' [key]='metaData.key' [(ngModel)]='myFilterValue'/>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultFilter>\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Link || metaData.fieldType === FieldType.String || metaData.fieldType === FieldType.Array || metaData.fieldType === FieldType.Unknown || metaData.fieldType === FieldType.PhoneNumber\">\r\n <mat-form-field stop-propagation class=\"font auto-width\">\r\n <mat-icon matPrefix class=\"search-icon\">search</mat-icon>\r\n <mat-label>{{myFilterType === FilterType.StringDoesNotContain ? 'Does Not Contain...' : 'Contains...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matSuffix [matTooltip]=\"myFilterType === FilterType.StringDoesNotContain ? 'Contains' : 'Does Not Contain'\">\r\n <button mat-icon-button color=\"primary\" (click)=\"setStringFilterType()\" class=\"header-filter-icon-button\">\r\n <mat-icon [ngClass]=\"{'chosen-icon': myFilterType === FilterType.StringDoesNotContain }\">\r\n block\r\n </mat-icon>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Number || metaData.fieldType === FieldType.Currency\">\r\n <mat-form-field class=\"auto-width\" stop-propagation>\r\n \r\n <mat-label>{{myFilterType === FilterType.NumberEquals ? 'Equals...' : myFilterType === FilterType.NumberLessThan ? 'Less Than...' : 'More Than...'}}</mat-label>\r\n <input matInput type='number' name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberLessThan)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberLessThan }\">\r\n <mat-icon class=\"suffix-icons\"\r\n >\r\n arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberGreaterThan)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberGreaterThan }\" >\r\n <mat-icon class=\"suffix-icons\"\r\n >\r\n arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberEquals)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberEquals }\">\r\n <span class=\"suffix-icons\"\r\n >\r\n =</span>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Boolean\">\r\n <div>\r\n <label>\r\n <mat-icon class=\"search-icon\">filter_list</mat-icon>\r\n </label>\r\n <mat-radio-group stop-propagation #ctrl=\"matRadioGroup\" #boolField='ngModel' class=\"font\" name=\"filterValue\" [ngModel]=\"myFilterValue\" >\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = true;\" [value]=\"true\">True</mat-radio-button><br/>\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = false\" [value]=\"false\">False</mat-radio-button><br/>\r\n </mat-radio-group>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Date || metaData.fieldType === FieldType.DateTime\">\r\n <mat-form-field class=\"font auto-width\" stop-propagation >\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrAfter)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrAfter }\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrBefore)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrBefore }\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateIsOn)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateIsOn }\">\r\n <span class=\"suffix-icons underline\"> =</span>\r\n </button>\r\n </span>\r\n <mat-label>{{myFilterType === FilterType.DateIsOn ? 'On...' :\r\n myFilterType === FilterType.DateOnOrBefore ? 'On or Before...' : 'On or After...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" [matDatepicker]=\"calendar\"\r\n (click)=\"calendar.open()\"/>\r\n <mat-datepicker-toggle class=\"date-toggle header-filter-icon-button\" matSuffix [for]=\"calendar\" preventEnter></mat-datepicker-toggle>\r\n <mat-datepicker #calendar></mat-datepicker>\r\n </mat-form-field>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <button mat-button (click)=\"onEnter(myForm.value)\" [disabled]=\"myForm.value.filterValue == undefined\" disableRipple>\r\n Apply\r\n </button>\r\n </ng-form>\r\n</mat-menu>\r\n", styles: ["input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.menu-icon{font-size:16px;line-height:16px;vertical-align:top;height:16px;width:16px}.search-icon{margin-right:16px;vertical-align:middle;height:24px;color:#0000008a;font-size:21px;line-height:1.125}.font{font-size:14px}.filter-radio-button:first-of-type{padding-left:0}.filter-radio-button{padding:10px 40px;min-width:110px}.auto-width{width:260px;margin:5px;display:block;height:55px}.open-menu-icon-button{height:28px;width:28px;padding:6px}.header-filter-icon-button{height:18px;width:18px;font-size:18px;padding:0;margin:0 2px}.header-filter-icon-button ::ng-deep *{line-height:initial;font-size:initial;height:18px;width:18px;font-size:18px;bottom:initial}.header-filter-icon-button.chosen-icon,.header-filter-icon-button.chosen-icon ::ng-deep *{height:22px;width:22px;font-size:22px;color:green}mat-icon.mat-icon.suffix-icons.underline{height:20px;-webkit-text-decoration:underline .1px solid;text-decoration:underline .1px solid}.chosen-icon mat-icon.mat-icon.suffix-icons.underline{height:24px}::ng-deep .mat-mdc-form-field-icon-prefix:has(.tb-header-prefix),.tb-header-prefix{padding:0;flex-basis:36%}.tb-header-filter ::ng-deep .mat-mdc-form-field-subscript-wrapper{line-height:0}.tb-header-filter ::ng-deep .mat-mdc-form-field-subscript-wrapper:before{height:0}.date-toggle ::ng-deep svg{position:absolute;left:0;top:0}\n"], dependencies: [{ kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InListFilterComponent, selector: "tb-in-list-filter , [tb-in-list-filter]", inputs: ["key"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: StopPropagationDirective, selector: "[stop-propagation]" }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i9.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i9.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i10.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i10.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i10.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
79
86
  }
80
87
  export { HeaderMenuComponent };
81
88
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: HeaderMenuComponent, decorators: [{
82
89
  type: Component,
83
- args: [{ selector: 'tb-header-menu', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button mat-icon-button class=\"open-menu-icon-button\" disableRipple [matMenuTriggerFor]=\"menu\" [matMenuTriggerRestoreFocus]=\"false\">\r\n <mat-icon class=\"menu-icon\">more_vert</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\" >\r\n <button mat-menu-item (click)=\"tableState.addGroupByKey(metaData.key)\">\r\n <mat-icon color=\"primary\">group</mat-icon>\r\n <span>Group By</span>\r\n </button>\r\n <button mat-menu-item (click)=hideField(metaData.key)>\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n <span>Hide Column</span>\r\n </button>\r\n <ng-form #myForm=\"ngForm\" [ngSwitch]=\"true\" (keydown.enter)=\"onEnter(myForm.value)\" class=\"tb-header-filter\">\r\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"'header-column-' + metaData.key\" />\r\n <input type=\"hidden\" name=\"filterType\" [ngModel]=\"myFilterType\" />\r\n <input type=\"hidden\" name=\"key\" [ngModel]=\"metaData.key\" />\r\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"metaData.fieldType\" />\r\n\r\n <ng-container *ngIf=\"(myFilterType === FilterType.Or || myFilterType === FilterType.In); else defaultFilter\">\r\n <tb-in-list-filter name='filterValue' [key]='metaData.key' [(ngModel)]='myFilterValue' >\r\n </tb-in-list-filter>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultFilter>\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Link || metaData.fieldType === FieldType.String || metaData.fieldType === FieldType.Array || metaData.fieldType === FieldType.Unknown || metaData.fieldType === FieldType.PhoneNumber\">\r\n <mat-form-field stop-propagation class=\"font auto-width\">\r\n <mat-icon matPrefix class=\"search-icon\">search</mat-icon>\r\n <mat-label>{{myFilterType === FilterType.StringDoesNotContain ? 'Does Not Contain...' : 'Contains...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matSuffix [matTooltip]=\"myFilterType === FilterType.StringDoesNotContain ? 'Contains' : 'Does Not Contain'\">\r\n <button mat-icon-button color=\"primary\" (click)=\"setStringFilterType()\" class=\"header-filter-icon-button\">\r\n <mat-icon [ngClass]=\"{'chosen-icon': myFilterType === FilterType.StringDoesNotContain }\">\r\n block\r\n </mat-icon>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Number || metaData.fieldType === FieldType.Currency\">\r\n <mat-form-field class=\"auto-width\" stop-propagation>\r\n \r\n <mat-label>{{myFilterType === FilterType.NumberEquals ? 'Equals...' : myFilterType === FilterType.NumberLessThan ? 'Less Than...' : 'More Than...'}}</mat-label>\r\n <input matInput type='number' name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberLessThan)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberLessThan }\">\r\n <mat-icon class=\"suffix-icons\"\r\n >\r\n arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberGreaterThan)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberGreaterThan }\" >\r\n <mat-icon class=\"suffix-icons\"\r\n >\r\n arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberEquals)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberEquals }\">\r\n <span class=\"suffix-icons\"\r\n >\r\n =</span>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Boolean\">\r\n <div>\r\n <label>\r\n <mat-icon class=\"search-icon\">filter_list</mat-icon>\r\n </label>\r\n <mat-radio-group stop-propagation #ctrl=\"matRadioGroup\" #boolField='ngModel' class=\"font\" name=\"filterValue\" [ngModel]=\"myFilterValue\" >\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = true;\" [value]=\"true\">True</mat-radio-button><br/>\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = false\" [value]=\"false\">False</mat-radio-button><br/>\r\n </mat-radio-group>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Date || metaData.fieldType === FieldType.DateTime\">\r\n <mat-form-field class=\"font auto-width\" stop-propagation >\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrAfter)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrAfter }\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrBefore)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrBefore }\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateIsOn)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateIsOn }\">\r\n <span class=\"suffix-icons underline\"> =</span>\r\n </button>\r\n </span>\r\n <mat-label>{{myFilterType === FilterType.DateIsOn ? 'On...' :\r\n myFilterType === FilterType.DateOnOrBefore ? 'On or Before...' : 'On or After...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" [matDatepicker]=\"calendar\"\r\n (click)=\"calendar.open()\"/>\r\n <mat-datepicker-toggle class=\"date-toggle header-filter-icon-button\" matSuffix [for]=\"calendar\" preventEnter></mat-datepicker-toggle>\r\n <mat-datepicker #calendar></mat-datepicker>\r\n </mat-form-field>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <button mat-button (click)=\"onEnter(myForm.value)\" [disabled]=\"myForm.value.filterValue == undefined\" disableRipple>\r\n Apply\r\n </button>\r\n </ng-form>\r\n</mat-menu>\r\n", styles: ["input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.menu-icon{font-size:16px;line-height:16px;vertical-align:top;height:16px;width:16px}.search-icon{margin-right:16px;vertical-align:middle;height:24px;color:#0000008a;font-size:21px;line-height:1.125}.font{font-size:14px}.filter-radio-button:first-of-type{padding-left:0}.filter-radio-button{padding:10px 40px;min-width:110px}.auto-width{width:260px;margin:5px;display:block;height:55px}.open-menu-icon-button{height:28px;width:28px;padding:6px}.header-filter-icon-button{height:18px;width:18px;font-size:18px;padding:0;margin:0 2px}.header-filter-icon-button ::ng-deep *{line-height:initial;font-size:initial;height:18px;width:18px;font-size:18px;bottom:initial}.header-filter-icon-button.chosen-icon,.header-filter-icon-button.chosen-icon ::ng-deep *{height:22px;width:22px;font-size:22px;color:green}mat-icon.mat-icon.suffix-icons.underline{height:20px;-webkit-text-decoration:underline .1px solid;text-decoration:underline .1px solid}.chosen-icon mat-icon.mat-icon.suffix-icons.underline{height:24px}::ng-deep .mat-mdc-form-field-icon-prefix:has(.tb-header-prefix),.tb-header-prefix{padding:0;flex-basis:36%}.tb-header-filter ::ng-deep .mat-mdc-form-field-subscript-wrapper{line-height:0}.tb-header-filter ::ng-deep .mat-mdc-form-field-subscript-wrapper:before{height:0}.date-toggle ::ng-deep svg{position:absolute;left:0;top:0}\n"] }]
90
+ args: [{ selector: 'tb-header-menu', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
91
+ MatMenuModule, MatIconModule, MatButtonModule, FormsModule, NgSwitchCase, NgSwitch, NgIf, InListFilterComponent,
92
+ MatInputModule, MatTooltipModule, NgClass, StopPropagationDirective, MatRadioModule, MatDatepickerModule
93
+ ], template: "<button mat-icon-button class=\"open-menu-icon-button\" disableRipple [matMenuTriggerFor]=\"menu\" [matMenuTriggerRestoreFocus]=\"false\">\r\n <mat-icon class=\"menu-icon\">more_vert</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\" >\r\n <button mat-menu-item (click)=\"tableState.addGroupByKey(metaData.key)\">\r\n <mat-icon color=\"primary\">group</mat-icon>\r\n <span>Group By</span>\r\n </button>\r\n <button mat-menu-item (click)=hideField(metaData.key)>\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n <span>Hide Column</span>\r\n </button>\r\n <ng-form #myForm=\"ngForm\" [ngSwitch]=\"true\" (keydown.enter)=\"onEnter(myForm.value)\" class=\"tb-header-filter\">\r\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"'header-column-' + metaData.key\" />\r\n <input type=\"hidden\" name=\"filterType\" [ngModel]=\"myFilterType\" />\r\n <input type=\"hidden\" name=\"key\" [ngModel]=\"metaData.key\" />\r\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"metaData.fieldType\" />\r\n\r\n <ng-container *ngIf=\"(myFilterType === FilterType.Or || myFilterType === FilterType.In); else defaultFilter\">\r\n <tb-in-list-filter name='filterValue' [key]='metaData.key' [(ngModel)]='myFilterValue'/>\r\n </ng-container>\r\n\r\n\r\n <ng-template #defaultFilter>\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Link || metaData.fieldType === FieldType.String || metaData.fieldType === FieldType.Array || metaData.fieldType === FieldType.Unknown || metaData.fieldType === FieldType.PhoneNumber\">\r\n <mat-form-field stop-propagation class=\"font auto-width\">\r\n <mat-icon matPrefix class=\"search-icon\">search</mat-icon>\r\n <mat-label>{{myFilterType === FilterType.StringDoesNotContain ? 'Does Not Contain...' : 'Contains...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matSuffix [matTooltip]=\"myFilterType === FilterType.StringDoesNotContain ? 'Contains' : 'Does Not Contain'\">\r\n <button mat-icon-button color=\"primary\" (click)=\"setStringFilterType()\" class=\"header-filter-icon-button\">\r\n <mat-icon [ngClass]=\"{'chosen-icon': myFilterType === FilterType.StringDoesNotContain }\">\r\n block\r\n </mat-icon>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Number || metaData.fieldType === FieldType.Currency\">\r\n <mat-form-field class=\"auto-width\" stop-propagation>\r\n \r\n <mat-label>{{myFilterType === FilterType.NumberEquals ? 'Equals...' : myFilterType === FilterType.NumberLessThan ? 'Less Than...' : 'More Than...'}}</mat-label>\r\n <input matInput type='number' name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberLessThan)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberLessThan }\">\r\n <mat-icon class=\"suffix-icons\"\r\n >\r\n arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberGreaterThan)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberGreaterThan }\" >\r\n <mat-icon class=\"suffix-icons\"\r\n >\r\n arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberEquals)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberEquals }\">\r\n <span class=\"suffix-icons\"\r\n >\r\n =</span>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Boolean\">\r\n <div>\r\n <label>\r\n <mat-icon class=\"search-icon\">filter_list</mat-icon>\r\n </label>\r\n <mat-radio-group stop-propagation #ctrl=\"matRadioGroup\" #boolField='ngModel' class=\"font\" name=\"filterValue\" [ngModel]=\"myFilterValue\" >\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = true;\" [value]=\"true\">True</mat-radio-button><br/>\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = false\" [value]=\"false\">False</mat-radio-button><br/>\r\n </mat-radio-group>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Date || metaData.fieldType === FieldType.DateTime\">\r\n <mat-form-field class=\"font auto-width\" stop-propagation >\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrAfter)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrAfter }\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrBefore)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrBefore }\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateIsOn)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateIsOn }\">\r\n <span class=\"suffix-icons underline\"> =</span>\r\n </button>\r\n </span>\r\n <mat-label>{{myFilterType === FilterType.DateIsOn ? 'On...' :\r\n myFilterType === FilterType.DateOnOrBefore ? 'On or Before...' : 'On or After...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" [matDatepicker]=\"calendar\"\r\n (click)=\"calendar.open()\"/>\r\n <mat-datepicker-toggle class=\"date-toggle header-filter-icon-button\" matSuffix [for]=\"calendar\" preventEnter></mat-datepicker-toggle>\r\n <mat-datepicker #calendar></mat-datepicker>\r\n </mat-form-field>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <button mat-button (click)=\"onEnter(myForm.value)\" [disabled]=\"myForm.value.filterValue == undefined\" disableRipple>\r\n Apply\r\n </button>\r\n </ng-form>\r\n</mat-menu>\r\n", styles: ["input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.menu-icon{font-size:16px;line-height:16px;vertical-align:top;height:16px;width:16px}.search-icon{margin-right:16px;vertical-align:middle;height:24px;color:#0000008a;font-size:21px;line-height:1.125}.font{font-size:14px}.filter-radio-button:first-of-type{padding-left:0}.filter-radio-button{padding:10px 40px;min-width:110px}.auto-width{width:260px;margin:5px;display:block;height:55px}.open-menu-icon-button{height:28px;width:28px;padding:6px}.header-filter-icon-button{height:18px;width:18px;font-size:18px;padding:0;margin:0 2px}.header-filter-icon-button ::ng-deep *{line-height:initial;font-size:initial;height:18px;width:18px;font-size:18px;bottom:initial}.header-filter-icon-button.chosen-icon,.header-filter-icon-button.chosen-icon ::ng-deep *{height:22px;width:22px;font-size:22px;color:green}mat-icon.mat-icon.suffix-icons.underline{height:20px;-webkit-text-decoration:underline .1px solid;text-decoration:underline .1px solid}.chosen-icon mat-icon.mat-icon.suffix-icons.underline{height:24px}::ng-deep .mat-mdc-form-field-icon-prefix:has(.tb-header-prefix),.tb-header-prefix{padding:0;flex-basis:36%}.tb-header-filter ::ng-deep .mat-mdc-form-field-subscript-wrapper{line-height:0}.tb-header-filter ::ng-deep .mat-mdc-form-field-subscript-wrapper:before{height:0}.date-toggle ::ng-deep svg{position:absolute;left:0;top:0}\n"] }]
84
94
  }], ctorParameters: function () { return [{ type: i1.TableStore }]; }, propDecorators: { filter: [{
85
95
  type: Input
86
96
  }], metaData: [{
@@ -89,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
89
99
  type: ViewChild,
90
100
  args: [MatMenuTrigger]
91
101
  }] } });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9oZWFkZXItbWVudS9oZWFkZXItbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2hlYWRlci1tZW51L2hlYWRlci1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUUsU0FBUyxFQUFZLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBRXhELE1BTWEsbUJBQW1CO0lBVTlCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFUMUMsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUN0QixlQUFVLEdBQUcsVUFBVSxDQUFDO0lBUXFCLENBQUM7SUFFOUMsU0FBUyxDQUFDLEdBQVc7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRTtZQUM1RCxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDbEMsT0FBTztTQUNSO1FBQ0QsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRTtZQUMvQixLQUFLLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDdEIsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ3BCLEtBQUssU0FBUyxDQUFDLFdBQVcsQ0FBQztZQUMzQixLQUFLLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDckIsS0FBSyxTQUFTLENBQUMsT0FBTztnQkFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDO2dCQUM5QyxNQUFNO1lBQ1IsS0FBSyxTQUFTLENBQUMsUUFBUSxDQUFDO1lBQ3hCLEtBQUssU0FBUyxDQUFDLE1BQU07Z0JBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQztnQkFDNUMsTUFBTTtZQUNSLEtBQUssU0FBUyxDQUFDLE9BQU87Z0JBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQztnQkFDN0MsTUFBTTtZQUNWLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQztZQUNwQixLQUFLLFNBQVMsQ0FBQyxRQUFRO2dCQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ3hDLE1BQU07WUFDVixLQUFLLFNBQVMsQ0FBQyxJQUFJO2dCQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU07U0FDVDtJQUNILENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxLQUFLLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQztJQUNwSSxDQUFDO0lBRUQsYUFBYSxDQUFDLFVBQXNCO1FBQ2xDLElBQUksVUFBVSxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDcEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsTUFBa0I7UUFDeEIsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLFNBQVMsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQ3hELElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDOzhHQW5FVSxtQkFBbUI7a0dBQW5CLG1CQUFtQixtSkFTbkIsY0FBYyxnREN0QjNCLHVsT0ErR0E7O1NEbEdhLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNO2lHQVF0QyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDcUIsT0FBTztzQkFBakMsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGUsIE1ldGFEYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmJztcclxuaW1wb3J0IHsgRmlsdGVyVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2ZpbHRlclR5cGVzJztcclxuaW1wb3J0IHsgRmlsdGVySW5mbyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZmlsdGVyLWluZm8nO1xyXG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XHJcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RiLWhlYWRlci1tZW51JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZGVyLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2hlYWRlci1tZW51LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIZWFkZXJNZW51Q29tcG9uZW50IHtcclxuICBGaWVsZFR5cGUgPSBGaWVsZFR5cGU7XHJcbiAgRmlsdGVyVHlwZSA9IEZpbHRlclR5cGU7XHJcbiAgbXlGaWx0ZXJUeXBlITogRmlsdGVyVHlwZTtcclxuICBteUZpbHRlclZhbHVlOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpIGZpbHRlciE6IFBhcnRpYWw8RmlsdGVySW5mbz47XHJcblxyXG4gIEBJbnB1dCgpIG1ldGFEYXRhITogTWV0YURhdGE7XHJcbiAgQFZpZXdDaGlsZChNYXRNZW51VHJpZ2dlcikgdHJpZ2dlciE6IE1hdE1lbnVUcmlnZ2VyO1xyXG4gIGNvbnN0cnVjdG9yKCBwdWJsaWMgdGFibGVTdGF0ZTogVGFibGVTdG9yZSkge31cclxuXHJcbiAgaGlkZUZpZWxkKGtleTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnRhYmxlU3RhdGUuaGlkZUNvbHVtbihrZXkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnJlc2V0RmlsdGVyVHlwZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRGaWx0ZXJUeXBlKCkge1xyXG4gICAgaWYodGhpcy5tZXRhRGF0YS5hZGRpdGlvbmFsPy5maWx0ZXJPcHRpb25zPy5maWx0ZXJhYmxlVmFsdWVzKSB7XHJcbiAgICAgIHRoaXMubXlGaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5JbjtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgc3dpdGNoICh0aGlzLm1ldGFEYXRhLmZpZWxkVHlwZSkge1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZS5TdHJpbmc6XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlLkxpbms6XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlLlBob25lTnVtYmVyOlxyXG4gICAgICBjYXNlIEZpZWxkVHlwZS5BcnJheTpcclxuICAgICAgY2FzZSBGaWVsZFR5cGUuVW5rbm93bjpcclxuICAgICAgICB0aGlzLm15RmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuU3RyaW5nQ29udGFpbnM7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlLkN1cnJlbmN5OlxyXG4gICAgICBjYXNlIEZpZWxkVHlwZS5OdW1iZXI6XHJcbiAgICAgICAgdGhpcy5teUZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLk51bWJlckVxdWFscztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWVsZFR5cGUuQm9vbGVhbjpcclxuICAgICAgICAgIHRoaXMubXlGaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5Cb29sZWFuRXF1YWxzO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlLkRhdGU6XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlLkRhdGVUaW1lOlxyXG4gICAgICAgICAgdGhpcy5teUZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLkRhdGVJc09uO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlLkVudW06XHJcbiAgICAgICAgdGhpcy5teUZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLkluO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U3RyaW5nRmlsdGVyVHlwZSgpIHtcclxuICAgIHRoaXMubXlGaWx0ZXJUeXBlID0gdGhpcy5teUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuU3RyaW5nQ29udGFpbnMgPyBGaWx0ZXJUeXBlLlN0cmluZ0RvZXNOb3RDb250YWluIDogRmlsdGVyVHlwZS5TdHJpbmdDb250YWlucztcclxuICB9XHJcblxyXG4gIHNldEZpbHRlclR5cGUoZmlsdGVyVHlwZTogRmlsdGVyVHlwZSkge1xyXG4gICAgaWYgKGZpbHRlclR5cGUgPT09IHRoaXMubXlGaWx0ZXJUeXBlKSB7XHJcbiAgICAgIHRoaXMucmVzZXRGaWx0ZXJUeXBlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm15RmlsdGVyVHlwZSA9IGZpbHRlclR5cGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkVudGVyKGZpbHRlcjogRmlsdGVySW5mbykge1xyXG4gICAgaWYgKGZpbHRlci5maWx0ZXJWYWx1ZSAhPSB1bmRlZmluZWQgJiYgZmlsdGVyLmZpbHRlclR5cGUpIHtcclxuICAgICAgdGhpcy50YWJsZVN0YXRlLmFkZEZpbHRlcihmaWx0ZXIpO1xyXG4gICAgICB0aGlzLnRyaWdnZXIuY2xvc2VNZW51KCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxidXR0b24gbWF0LWljb24tYnV0dG9uIGNsYXNzPVwib3Blbi1tZW51LWljb24tYnV0dG9uXCIgZGlzYWJsZVJpcHBsZSBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIFttYXRNZW51VHJpZ2dlclJlc3RvcmVGb2N1c109XCJmYWxzZVwiPlxyXG4gIDxtYXQtaWNvbiBjbGFzcz1cIm1lbnUtaWNvblwiPm1vcmVfdmVydDwvbWF0LWljb24+XHJcbjwvYnV0dG9uPlxyXG48bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgPlxyXG4gIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwidGFibGVTdGF0ZS5hZGRHcm91cEJ5S2V5KG1ldGFEYXRhLmtleSlcIj5cclxuICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIj5ncm91cDwvbWF0LWljb24+XHJcbiAgICA8c3Bhbj5Hcm91cCBCeTwvc3Bhbj5cclxuICA8L2J1dHRvbj5cclxuICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1oaWRlRmllbGQobWV0YURhdGEua2V5KT5cclxuICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIj52aXNpYmlsaXR5X29mZjwvbWF0LWljb24+XHJcbiAgICA8c3Bhbj5IaWRlIENvbHVtbjwvc3Bhbj5cclxuICA8L2J1dHRvbj5cclxuICA8bmctZm9ybSAjbXlGb3JtPVwibmdGb3JtXCIgW25nU3dpdGNoXT1cInRydWVcIiAoa2V5ZG93bi5lbnRlcik9XCJvbkVudGVyKG15Rm9ybS52YWx1ZSlcIiBjbGFzcz1cInRiLWhlYWRlci1maWx0ZXJcIj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiZmlsdGVySWRcIiAgW25nTW9kZWxdPVwiJ2hlYWRlci1jb2x1bW4tJyArIG1ldGFEYXRhLmtleVwiIC8+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImZpbHRlclR5cGVcIiAgW25nTW9kZWxdPVwibXlGaWx0ZXJUeXBlXCIgLz5cclxuICAgICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwia2V5XCIgIFtuZ01vZGVsXT1cIm1ldGFEYXRhLmtleVwiIC8+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImZpZWxkVHlwZVwiICBbbmdNb2RlbF09XCJtZXRhRGF0YS5maWVsZFR5cGVcIiAvPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihteUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuT3IgfHwgbXlGaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlLkluKTsgZWxzZSBkZWZhdWx0RmlsdGVyXCI+XHJcbiAgICAgICAgICA8dGItaW4tbGlzdC1maWx0ZXIgbmFtZT0nZmlsdGVyVmFsdWUnIFtrZXldPSdtZXRhRGF0YS5rZXknIFsobmdNb2RlbCldPSdteUZpbHRlclZhbHVlJyA+XHJcbiAgICAgICAgICA8L3RiLWluLWxpc3QtZmlsdGVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRGaWx0ZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwibWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuTGluayB8fCBtZXRhRGF0YS5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5TdHJpbmcgfHwgbWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQXJyYXkgfHwgbWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuVW5rbm93biB8fCBtZXRhRGF0YS5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5QaG9uZU51bWJlclwiPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0b3AtcHJvcGFnYXRpb24gY2xhc3M9XCJmb250IGF1dG8td2lkdGhcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIG1hdFByZWZpeCBjbGFzcz1cInNlYXJjaC1pY29uXCI+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD57e215RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5TdHJpbmdEb2VzTm90Q29udGFpbiA/ICdEb2VzIE5vdCBDb250YWluLi4uJyA6ICdDb250YWlucy4uLid9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgbmFtZT1cImZpbHRlclZhbHVlXCIgW25nTW9kZWxdPVwiZmlsdGVyLmZpbHRlclZhbHVlXCIgLz5cclxuICAgICAgICAgICAgPHNwYW4gbWF0U3VmZml4IFttYXRUb29sdGlwXT1cIm15RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5TdHJpbmdEb2VzTm90Q29udGFpbiA/ICdDb250YWlucycgOiAnRG9lcyBOb3QgQ29udGFpbidcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwic2V0U3RyaW5nRmlsdGVyVHlwZSgpXCIgY2xhc3M9XCJoZWFkZXItZmlsdGVyLWljb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gW25nQ2xhc3NdPVwieydjaG9zZW4taWNvbic6IG15RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5TdHJpbmdEb2VzTm90Q29udGFpbiB9XCI+XHJcbiAgICAgICAgICAgICAgICAgIGJsb2NrXHJcbiAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJtZXRhRGF0YS5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5OdW1iZXIgfHwgbWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQ3VycmVuY3lcIj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImF1dG8td2lkdGhcIiAgc3RvcC1wcm9wYWdhdGlvbj5cclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgPG1hdC1sYWJlbD57e215RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5OdW1iZXJFcXVhbHMgPyAnRXF1YWxzLi4uJyA6IG15RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5OdW1iZXJMZXNzVGhhbiA/ICdMZXNzIFRoYW4uLi4nIDogJ01vcmUgVGhhbi4uLid9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT0nbnVtYmVyJyAgbmFtZT1cImZpbHRlclZhbHVlXCIgW25nTW9kZWxdPVwiZmlsdGVyLmZpbHRlclZhbHVlXCIgLz5cclxuICAgICAgICAgICAgPHNwYW4gbWF0UHJlZml4IGNsYXNzPVwidGItaGVhZGVyLXByZWZpeFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGRpc2FibGVSaXBwbGUgY2xhc3M9XCJoZWFkZXItZmlsdGVyLWljb24tYnV0dG9uXCIgKGNsaWNrKT1cInNldEZpbHRlclR5cGUoRmlsdGVyVHlwZS5OdW1iZXJMZXNzVGhhbilcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY2hvc2VuLWljb24nOiBteUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuTnVtYmVyTGVzc1RoYW4gfVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uICBjbGFzcz1cInN1ZmZpeC1pY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgYXJyb3dfYmFja19pb3M8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGRpc2FibGVSaXBwbGUgY2xhc3M9XCJoZWFkZXItZmlsdGVyLWljb24tYnV0dG9uXCIgKGNsaWNrKT1cInNldEZpbHRlclR5cGUoRmlsdGVyVHlwZS5OdW1iZXJHcmVhdGVyVGhhbilcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY2hvc2VuLWljb24nOiBteUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuTnVtYmVyR3JlYXRlclRoYW4gfVwiID5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAgY2xhc3M9XCJzdWZmaXgtaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICBhcnJvd19mb3J3YXJkX2lvczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gZGlzYWJsZVJpcHBsZSBjbGFzcz1cImhlYWRlci1maWx0ZXItaWNvbi1idXR0b25cIiAoY2xpY2spPVwic2V0RmlsdGVyVHlwZShGaWx0ZXJUeXBlLk51bWJlckVxdWFscylcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY2hvc2VuLWljb24nOiBteUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuTnVtYmVyRXF1YWxzIH1cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VmZml4LWljb25zXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwibWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQm9vbGVhblwiPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInNlYXJjaC1pY29uXCI+ZmlsdGVyX2xpc3Q8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8bWF0LXJhZGlvLWdyb3VwIHN0b3AtcHJvcGFnYXRpb24gI2N0cmw9XCJtYXRSYWRpb0dyb3VwXCIgI2Jvb2xGaWVsZD0nbmdNb2RlbCcgY2xhc3M9XCJmb250XCIgbmFtZT1cImZpbHRlclZhbHVlXCIgW25nTW9kZWxdPVwibXlGaWx0ZXJWYWx1ZVwiID5cclxuICAgICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cImZpbHRlci1yYWRpby1idXR0b25cIiAoY2xpY2spPVwibXlGaWx0ZXJWYWx1ZSA9IHRydWU7XCIgW3ZhbHVlXT1cInRydWVcIj5UcnVlPC9tYXQtcmFkaW8tYnV0dG9uPjxici8+XHJcbiAgICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gY2xhc3M9XCJmaWx0ZXItcmFkaW8tYnV0dG9uXCIgKGNsaWNrKT1cIm15RmlsdGVyVmFsdWUgPSBmYWxzZVwiIFt2YWx1ZV09XCJmYWxzZVwiPkZhbHNlPC9tYXQtcmFkaW8tYnV0dG9uPjxici8+XHJcbiAgICAgICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIm1ldGFEYXRhLmZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkRhdGUgfHwgbWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuRGF0ZVRpbWVcIj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZvbnQgYXV0by13aWR0aFwiIHN0b3AtcHJvcGFnYXRpb24gPlxyXG4gICAgICAgICAgICA8c3BhbiBtYXRQcmVmaXggY2xhc3M9XCJ0Yi1oZWFkZXItcHJlZml4XCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gZGlzYWJsZVJpcHBsZSBjbGFzcz1cImhlYWRlci1maWx0ZXItaWNvbi1idXR0b25cIiAoY2xpY2spPVwic2V0RmlsdGVyVHlwZShGaWx0ZXJUeXBlLkRhdGVPbk9yQWZ0ZXIpXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY2hvc2VuLWljb24nOiBteUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuRGF0ZU9uT3JBZnRlciB9XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gIGNsYXNzPVwic3VmZml4LWljb25zIHVuZGVybGluZVwiPmFycm93X2ZvcndhcmRfaW9zPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBkaXNhYmxlUmlwcGxlIGNsYXNzPVwiaGVhZGVyLWZpbHRlci1pY29uLWJ1dHRvblwiIChjbGljayk9XCJzZXRGaWx0ZXJUeXBlKEZpbHRlclR5cGUuRGF0ZU9uT3JCZWZvcmUpXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY2hvc2VuLWljb24nOiBteUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuRGF0ZU9uT3JCZWZvcmUgIH1cIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAgY2xhc3M9XCJzdWZmaXgtaWNvbnMgdW5kZXJsaW5lXCI+YXJyb3dfYmFja19pb3M8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGRpc2FibGVSaXBwbGUgY2xhc3M9XCJoZWFkZXItZmlsdGVyLWljb24tYnV0dG9uXCIgKGNsaWNrKT1cInNldEZpbHRlclR5cGUoRmlsdGVyVHlwZS5EYXRlSXNPbilcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydjaG9zZW4taWNvbic6IG15RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5EYXRlSXNPbiB9XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAgY2xhc3M9XCJzdWZmaXgtaWNvbnMgdW5kZXJsaW5lXCI+ID08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD57e215RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5EYXRlSXNPbiA/ICdPbi4uLicgOlxyXG4gICAgICAgICAgICAgIG15RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5EYXRlT25PckJlZm9yZSA/ICdPbiBvciBCZWZvcmUuLi4nIDogJ09uIG9yIEFmdGVyLi4uJ319PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBuYW1lPVwiZmlsdGVyVmFsdWVcIiBbbmdNb2RlbF09XCJmaWx0ZXIuZmlsdGVyVmFsdWVcIiBbbWF0RGF0ZXBpY2tlcl09XCJjYWxlbmRhclwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbGVuZGFyLm9wZW4oKVwiLz5cclxuICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBjbGFzcz1cImRhdGUtdG9nZ2xlIGhlYWRlci1maWx0ZXItaWNvbi1idXR0b25cIiBtYXRTdWZmaXggW2Zvcl09XCJjYWxlbmRhclwiIHByZXZlbnRFbnRlcj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNjYWxlbmRhcj48L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cIm9uRW50ZXIobXlGb3JtLnZhbHVlKVwiIFtkaXNhYmxlZF09XCJteUZvcm0udmFsdWUuZmlsdGVyVmFsdWUgPT0gdW5kZWZpbmVkXCIgZGlzYWJsZVJpcHBsZT5cclxuICAgICAgQXBwbHlcclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctZm9ybT5cclxuPC9tYXQtbWVudT5cclxuIl19
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9oZWFkZXItbWVudS9oZWFkZXItbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2hlYWRlci1tZW51L2hlYWRlci1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUUsU0FBUyxFQUFZLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7Ozs7OztBQUVuRSxNQVdhLG1CQUFtQjtJQVU5QixZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBVDFDLGNBQVMsR0FBRyxTQUFTLENBQUM7UUFDdEIsZUFBVSxHQUFHLFVBQVUsQ0FBQztJQVFxQixDQUFDO0lBRTlDLFNBQVMsQ0FBQyxHQUFXO1FBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUU7WUFDNUQsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE9BQU87U0FDUjtRQUNELFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUU7WUFDL0IsS0FBSyxTQUFTLENBQUMsTUFBTSxDQUFDO1lBQ3RCLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQztZQUNwQixLQUFLLFNBQVMsQ0FBQyxXQUFXLENBQUM7WUFDM0IsS0FBSyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBQ3JCLEtBQUssU0FBUyxDQUFDLE9BQU87Z0JBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQztnQkFDOUMsTUFBTTtZQUNSLEtBQUssU0FBUyxDQUFDLFFBQVEsQ0FBQztZQUN4QixLQUFLLFNBQVMsQ0FBQyxNQUFNO2dCQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUM7Z0JBQzVDLE1BQU07WUFDUixLQUFLLFNBQVMsQ0FBQyxPQUFPO2dCQUNsQixJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUM7Z0JBQzdDLE1BQU07WUFDVixLQUFLLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDcEIsS0FBSyxTQUFTLENBQUMsUUFBUTtnQkFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUN4QyxNQUFNO1lBQ1YsS0FBSyxTQUFTLENBQUMsSUFBSTtnQkFDakIsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksS0FBSyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7SUFDcEksQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUFzQjtRQUNsQyxJQUFJLFVBQVUsS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQWtCO1FBQ3hCLElBQUksTUFBTSxDQUFDLFdBQVcsSUFBSSxTQUFTLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRTtZQUN4RCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQzs4R0FuRVUsbUJBQW1CO2tHQUFuQixtQkFBbUIsdUtBU25CLGNBQWMsZ0RDckMzQixxak9BOEdBLDIrQ0R0RkksYUFBYSwrWUFBRSxhQUFhLG1MQUFFLGVBQWUsd2FBQUUsV0FBVyxxOEJBQUMsWUFBWSxxRkFBRSxRQUFRLDZFQUFFLElBQUksNkZBQUUscUJBQXFCLG9HQUM5RyxjQUFjLHczQkFBRSxnQkFBZ0IsK0hBQUUsT0FBTyxvRkFBRSx3QkFBd0IsOERBQUUsY0FBYywwUkFBRSxtQkFBbUI7O1NBRy9GLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQVgvQixTQUFTOytCQUNFLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxhQUFhLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUscUJBQXFCO3dCQUM5RyxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGNBQWMsRUFBRSxtQkFBbUI7cUJBQ3pHO2lHQVFRLE1BQU07c0JBQWQsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNxQixPQUFPO3NCQUFqQyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpZWxkVHlwZSwgTWV0YURhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWYnO1xyXG5pbXBvcnQgeyBGaWx0ZXJUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvZmlsdGVyVHlwZXMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJJbmZvIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9maWx0ZXItaW5mbyc7XHJcbmltcG9ydCB7IFRhYmxlU3RvcmUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RhYmxlLXN0b3JlJztcclxuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSwgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdDbGFzcywgTmdJZiwgTmdTd2l0Y2gsIE5nU3dpdGNoQ2FzZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEluTGlzdEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uL2ZpbHRlci9pbi1saXN0L2luLWxpc3QtZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IFN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcyc7XHJcbmltcG9ydCB7IE1hdFJhZGlvTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xyXG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RiLWhlYWRlci1tZW51JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZGVyLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2hlYWRlci1tZW51LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRNZW51TW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIEZvcm1zTW9kdWxlLE5nU3dpdGNoQ2FzZSwgTmdTd2l0Y2gsIE5nSWYsIEluTGlzdEZpbHRlckNvbXBvbmVudCxcclxuICAgIE1hdElucHV0TW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlLCBOZ0NsYXNzLCBTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmUsIE1hdFJhZGlvTW9kdWxlLCBNYXREYXRlcGlja2VyTW9kdWxlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGVhZGVyTWVudUNvbXBvbmVudCB7XHJcbiAgRmllbGRUeXBlID0gRmllbGRUeXBlO1xyXG4gIEZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlO1xyXG4gIG15RmlsdGVyVHlwZSE6IEZpbHRlclR5cGU7XHJcbiAgbXlGaWx0ZXJWYWx1ZTogYW55O1xyXG5cclxuICBASW5wdXQoKSBmaWx0ZXIhOiBQYXJ0aWFsPEZpbHRlckluZm8+O1xyXG5cclxuICBASW5wdXQoKSBtZXRhRGF0YSE6IE1ldGFEYXRhO1xyXG4gIEBWaWV3Q2hpbGQoTWF0TWVudVRyaWdnZXIpIHRyaWdnZXIhOiBNYXRNZW51VHJpZ2dlcjtcclxuICBjb25zdHJ1Y3RvciggcHVibGljIHRhYmxlU3RhdGU6IFRhYmxlU3RvcmUpIHt9XHJcblxyXG4gIGhpZGVGaWVsZChrZXk6IHN0cmluZykge1xyXG4gICAgdGhpcy50YWJsZVN0YXRlLmhpZGVDb2x1bW4oa2V5KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5yZXNldEZpbHRlclR5cGUoKTtcclxuICB9XHJcblxyXG4gIHJlc2V0RmlsdGVyVHlwZSgpIHtcclxuICAgIGlmKHRoaXMubWV0YURhdGEuYWRkaXRpb25hbD8uZmlsdGVyT3B0aW9ucz8uZmlsdGVyYWJsZVZhbHVlcykge1xyXG4gICAgICB0aGlzLm15RmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuSW47XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHN3aXRjaCAodGhpcy5tZXRhRGF0YS5maWVsZFR5cGUpIHtcclxuICAgICAgY2FzZSBGaWVsZFR5cGUuU3RyaW5nOlxyXG4gICAgICBjYXNlIEZpZWxkVHlwZS5MaW5rOlxyXG4gICAgICBjYXNlIEZpZWxkVHlwZS5QaG9uZU51bWJlcjpcclxuICAgICAgY2FzZSBGaWVsZFR5cGUuQXJyYXk6XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlLlVua25vd246XHJcbiAgICAgICAgdGhpcy5teUZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlN0cmluZ0NvbnRhaW5zO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZS5DdXJyZW5jeTpcclxuICAgICAgY2FzZSBGaWVsZFR5cGUuTnVtYmVyOlxyXG4gICAgICAgIHRoaXMubXlGaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5OdW1iZXJFcXVhbHM7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlLkJvb2xlYW46XHJcbiAgICAgICAgICB0aGlzLm15RmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuQm9vbGVhbkVxdWFscztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlOlxyXG4gICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlVGltZTpcclxuICAgICAgICAgIHRoaXMubXlGaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5EYXRlSXNPbjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZS5FbnVtOlxyXG4gICAgICAgIHRoaXMubXlGaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5JbjtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFN0cmluZ0ZpbHRlclR5cGUoKSB7XHJcbiAgICB0aGlzLm15RmlsdGVyVHlwZSA9IHRoaXMubXlGaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlLlN0cmluZ0NvbnRhaW5zID8gRmlsdGVyVHlwZS5TdHJpbmdEb2VzTm90Q29udGFpbiA6IEZpbHRlclR5cGUuU3RyaW5nQ29udGFpbnM7XHJcbiAgfVxyXG5cclxuICBzZXRGaWx0ZXJUeXBlKGZpbHRlclR5cGU6IEZpbHRlclR5cGUpIHtcclxuICAgIGlmIChmaWx0ZXJUeXBlID09PSB0aGlzLm15RmlsdGVyVHlwZSkge1xyXG4gICAgICB0aGlzLnJlc2V0RmlsdGVyVHlwZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5teUZpbHRlclR5cGUgPSBmaWx0ZXJUeXBlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25FbnRlcihmaWx0ZXI6IEZpbHRlckluZm8pIHtcclxuICAgIGlmIChmaWx0ZXIuZmlsdGVyVmFsdWUgIT0gdW5kZWZpbmVkICYmIGZpbHRlci5maWx0ZXJUeXBlKSB7XHJcbiAgICAgIHRoaXMudGFibGVTdGF0ZS5hZGRGaWx0ZXIoZmlsdGVyKTtcclxuICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlTWVudSgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cIm9wZW4tbWVudS1pY29uLWJ1dHRvblwiIGRpc2FibGVSaXBwbGUgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBbbWF0TWVudVRyaWdnZXJSZXN0b3JlRm9jdXNdPVwiZmFsc2VcIj5cclxuICA8bWF0LWljb24gY2xhc3M9XCJtZW51LWljb25cIj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxyXG48L2J1dHRvbj5cclxuPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiID5cclxuICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInRhYmxlU3RhdGUuYWRkR3JvdXBCeUtleShtZXRhRGF0YS5rZXkpXCI+XHJcbiAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCI+Z3JvdXA8L21hdC1pY29uPlxyXG4gICAgPHNwYW4+R3JvdXAgQnk8L3NwYW4+XHJcbiAgPC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9aGlkZUZpZWxkKG1ldGFEYXRhLmtleSk+XHJcbiAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCI+dmlzaWJpbGl0eV9vZmY8L21hdC1pY29uPlxyXG4gICAgPHNwYW4+SGlkZSBDb2x1bW48L3NwYW4+XHJcbiAgPC9idXR0b24+XHJcbiAgPG5nLWZvcm0gI215Rm9ybT1cIm5nRm9ybVwiIFtuZ1N3aXRjaF09XCJ0cnVlXCIgKGtleWRvd24uZW50ZXIpPVwib25FbnRlcihteUZvcm0udmFsdWUpXCIgY2xhc3M9XCJ0Yi1oZWFkZXItZmlsdGVyXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImZpbHRlcklkXCIgIFtuZ01vZGVsXT1cIidoZWFkZXItY29sdW1uLScgKyBtZXRhRGF0YS5rZXlcIiAvPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJmaWx0ZXJUeXBlXCIgIFtuZ01vZGVsXT1cIm15RmlsdGVyVHlwZVwiIC8+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImtleVwiICBbbmdNb2RlbF09XCJtZXRhRGF0YS5rZXlcIiAvPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJmaWVsZFR5cGVcIiAgW25nTW9kZWxdPVwibWV0YURhdGEuZmllbGRUeXBlXCIgLz5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIobXlGaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlLk9yIHx8IG15RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5Jbik7IGVsc2UgZGVmYXVsdEZpbHRlclwiPlxyXG4gICAgICAgICAgPHRiLWluLWxpc3QtZmlsdGVyIG5hbWU9J2ZpbHRlclZhbHVlJyBba2V5XT0nbWV0YURhdGEua2V5JyBbKG5nTW9kZWwpXT0nbXlGaWx0ZXJWYWx1ZScvPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRGaWx0ZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwibWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuTGluayB8fCBtZXRhRGF0YS5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5TdHJpbmcgfHwgbWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQXJyYXkgfHwgbWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuVW5rbm93biB8fCBtZXRhRGF0YS5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5QaG9uZU51bWJlclwiPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0b3AtcHJvcGFnYXRpb24gY2xhc3M9XCJmb250IGF1dG8td2lkdGhcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIG1hdFByZWZpeCBjbGFzcz1cInNlYXJjaC1pY29uXCI+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD57e215RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5TdHJpbmdEb2VzTm90Q29udGFpbiA/ICdEb2VzIE5vdCBDb250YWluLi4uJyA6ICdDb250YWlucy4uLid9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgbmFtZT1cImZpbHRlclZhbHVlXCIgW25nTW9kZWxdPVwiZmlsdGVyLmZpbHRlclZhbHVlXCIgLz5cclxuICAgICAgICAgICAgPHNwYW4gbWF0U3VmZml4IFttYXRUb29sdGlwXT1cIm15RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5TdHJpbmdEb2VzTm90Q29udGFpbiA/ICdDb250YWlucycgOiAnRG9lcyBOb3QgQ29udGFpbidcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwic2V0U3RyaW5nRmlsdGVyVHlwZSgpXCIgY2xhc3M9XCJoZWFkZXItZmlsdGVyLWljb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gW25nQ2xhc3NdPVwieydjaG9zZW4taWNvbic6IG15RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5TdHJpbmdEb2VzTm90Q29udGFpbiB9XCI+XHJcbiAgICAgICAgICAgICAgICAgIGJsb2NrXHJcbiAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJtZXRhRGF0YS5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5OdW1iZXIgfHwgbWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQ3VycmVuY3lcIj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImF1dG8td2lkdGhcIiAgc3RvcC1wcm9wYWdhdGlvbj5cclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgPG1hdC1sYWJlbD57e215RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5OdW1iZXJFcXVhbHMgPyAnRXF1YWxzLi4uJyA6IG15RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5OdW1iZXJMZXNzVGhhbiA/ICdMZXNzIFRoYW4uLi4nIDogJ01vcmUgVGhhbi4uLid9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT0nbnVtYmVyJyAgbmFtZT1cImZpbHRlclZhbHVlXCIgW25nTW9kZWxdPVwiZmlsdGVyLmZpbHRlclZhbHVlXCIgLz5cclxuICAgICAgICAgICAgPHNwYW4gbWF0UHJlZml4IGNsYXNzPVwidGItaGVhZGVyLXByZWZpeFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGRpc2FibGVSaXBwbGUgY2xhc3M9XCJoZWFkZXItZmlsdGVyLWljb24tYnV0dG9uXCIgKGNsaWNrKT1cInNldEZpbHRlclR5cGUoRmlsdGVyVHlwZS5OdW1iZXJMZXNzVGhhbilcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY2hvc2VuLWljb24nOiBteUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuTnVtYmVyTGVzc1RoYW4gfVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uICBjbGFzcz1cInN1ZmZpeC1pY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgYXJyb3dfYmFja19pb3M8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGRpc2FibGVSaXBwbGUgY2xhc3M9XCJoZWFkZXItZmlsdGVyLWljb24tYnV0dG9uXCIgKGNsaWNrKT1cInNldEZpbHRlclR5cGUoRmlsdGVyVHlwZS5OdW1iZXJHcmVhdGVyVGhhbilcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY2hvc2VuLWljb24nOiBteUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuTnVtYmVyR3JlYXRlclRoYW4gfVwiID5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAgY2xhc3M9XCJzdWZmaXgtaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICBhcnJvd19mb3J3YXJkX2lvczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gZGlzYWJsZVJpcHBsZSBjbGFzcz1cImhlYWRlci1maWx0ZXItaWNvbi1idXR0b25cIiAoY2xpY2spPVwic2V0RmlsdGVyVHlwZShGaWx0ZXJUeXBlLk51bWJlckVxdWFscylcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY2hvc2VuLWljb24nOiBteUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuTnVtYmVyRXF1YWxzIH1cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VmZml4LWljb25zXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwibWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQm9vbGVhblwiPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInNlYXJjaC1pY29uXCI+ZmlsdGVyX2xpc3Q8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8bWF0LXJhZGlvLWdyb3VwIHN0b3AtcHJvcGFnYXRpb24gI2N0cmw9XCJtYXRSYWRpb0dyb3VwXCIgI2Jvb2xGaWVsZD0nbmdNb2RlbCcgY2xhc3M9XCJmb250XCIgbmFtZT1cImZpbHRlclZhbHVlXCIgW25nTW9kZWxdPVwibXlGaWx0ZXJWYWx1ZVwiID5cclxuICAgICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cImZpbHRlci1yYWRpby1idXR0b25cIiAoY2xpY2spPVwibXlGaWx0ZXJWYWx1ZSA9IHRydWU7XCIgW3ZhbHVlXT1cInRydWVcIj5UcnVlPC9tYXQtcmFkaW8tYnV0dG9uPjxici8+XHJcbiAgICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gY2xhc3M9XCJmaWx0ZXItcmFkaW8tYnV0dG9uXCIgKGNsaWNrKT1cIm15RmlsdGVyVmFsdWUgPSBmYWxzZVwiIFt2YWx1ZV09XCJmYWxzZVwiPkZhbHNlPC9tYXQtcmFkaW8tYnV0dG9uPjxici8+XHJcbiAgICAgICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIm1ldGFEYXRhLmZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkRhdGUgfHwgbWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuRGF0ZVRpbWVcIj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZvbnQgYXV0by13aWR0aFwiIHN0b3AtcHJvcGFnYXRpb24gPlxyXG4gICAgICAgICAgICA8c3BhbiBtYXRQcmVmaXggY2xhc3M9XCJ0Yi1oZWFkZXItcHJlZml4XCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gZGlzYWJsZVJpcHBsZSBjbGFzcz1cImhlYWRlci1maWx0ZXItaWNvbi1idXR0b25cIiAoY2xpY2spPVwic2V0RmlsdGVyVHlwZShGaWx0ZXJUeXBlLkRhdGVPbk9yQWZ0ZXIpXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY2hvc2VuLWljb24nOiBteUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuRGF0ZU9uT3JBZnRlciB9XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gIGNsYXNzPVwic3VmZml4LWljb25zIHVuZGVybGluZVwiPmFycm93X2ZvcndhcmRfaW9zPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBkaXNhYmxlUmlwcGxlIGNsYXNzPVwiaGVhZGVyLWZpbHRlci1pY29uLWJ1dHRvblwiIChjbGljayk9XCJzZXRGaWx0ZXJUeXBlKEZpbHRlclR5cGUuRGF0ZU9uT3JCZWZvcmUpXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY2hvc2VuLWljb24nOiBteUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuRGF0ZU9uT3JCZWZvcmUgIH1cIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAgY2xhc3M9XCJzdWZmaXgtaWNvbnMgdW5kZXJsaW5lXCI+YXJyb3dfYmFja19pb3M8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGRpc2FibGVSaXBwbGUgY2xhc3M9XCJoZWFkZXItZmlsdGVyLWljb24tYnV0dG9uXCIgKGNsaWNrKT1cInNldEZpbHRlclR5cGUoRmlsdGVyVHlwZS5EYXRlSXNPbilcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydjaG9zZW4taWNvbic6IG15RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5EYXRlSXNPbiB9XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAgY2xhc3M9XCJzdWZmaXgtaWNvbnMgdW5kZXJsaW5lXCI+ID08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD57e215RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5EYXRlSXNPbiA/ICdPbi4uLicgOlxyXG4gICAgICAgICAgICAgIG15RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5EYXRlT25PckJlZm9yZSA/ICdPbiBvciBCZWZvcmUuLi4nIDogJ09uIG9yIEFmdGVyLi4uJ319PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBuYW1lPVwiZmlsdGVyVmFsdWVcIiBbbmdNb2RlbF09XCJmaWx0ZXIuZmlsdGVyVmFsdWVcIiBbbWF0RGF0ZXBpY2tlcl09XCJjYWxlbmRhclwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbGVuZGFyLm9wZW4oKVwiLz5cclxuICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBjbGFzcz1cImRhdGUtdG9nZ2xlIGhlYWRlci1maWx0ZXItaWNvbi1idXR0b25cIiBtYXRTdWZmaXggW2Zvcl09XCJjYWxlbmRhclwiIHByZXZlbnRFbnRlcj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNjYWxlbmRhcj48L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cIm9uRW50ZXIobXlGb3JtLnZhbHVlKVwiIFtkaXNhYmxlZF09XCJteUZvcm0udmFsdWUuZmlsdGVyVmFsdWUgPT0gdW5kZWZpbmVkXCIgZGlzYWJsZVJpcHBsZT5cclxuICAgICAgQXBwbHlcclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctZm9ybT5cclxuPC9tYXQtbWVudT5cclxuIl19
@@ -1,10 +1,10 @@
1
1
  import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
2
+ import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { FieldType } from '../../interfaces/report-def';
4
+ import { NgFor, NgIf } from '@angular/common';
5
+ import { AutoFocusDirective } from '../../../utilities';
4
6
  import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "@angular/forms";
7
- import * as i3 from "../../../utilities/directives/auto-focus.directive";
7
+ import * as i1 from "@angular/forms";
8
8
  class InFilterComponent {
9
9
  constructor(ref) {
10
10
  this.ref = ref;
@@ -44,11 +44,11 @@ class InFilterComponent {
44
44
  this.onChange(this.value);
45
45
  }
46
46
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: InFilterComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
47
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: InFilterComponent, selector: "lib-in-filter", inputs: { type: "type" }, providers: [{
47
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: InFilterComponent, isStandalone: true, selector: "lib-in-filter", inputs: { type: "type" }, providers: [{
48
48
  provide: NG_VALUE_ACCESSOR,
49
49
  useExisting: InFilterComponent,
50
50
  multi: true
51
- }], ngImport: i0, template: "<div class=inline>\n <div *ngFor=\"let val of value; index as i\">\n <input *ngIf=\"type === FieldType.Number || type === FieldType.Currency\"\n [ngModel]=\"val\" (ngModelChange)=\"onValueChange(i,$event)\"\n [readonly]=\"i+1 < value.length\" type=\"number\" [ngModelOptions]=\"{standalone:true}\" [autoFocus]=\"i === value.length - 1\"/>\n <input *ngIf=\"type !== FieldType.Number && type !== FieldType.Currency\"\n [ngModel]=\"val\" (ngModelChange)=\"onValueChange(i,$event)\"\n [readonly]=\"i+1 < value.length\" type=\"string\" [ngModelOptions]=\"{standalone:true}\"\n #input [autoFocus]=\"i === value.length - 1\" />\n <button [disabled]=\"value.length <= 1\" (click)=\"removeInput(i)\">-</button>\n <button *ngIf=\"i === value.length - 1\" [disabled]=\"val == undefined || val === ''\" (click)=\"addInput()\">+</button>\n </div>\n</div>\n", styles: [".inline{display:inline-block}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.AutoFocusDirective, selector: "[autoFocus]", inputs: ["autoFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
51
+ }], ngImport: i0, template: "<div class=inline>\n <div *ngFor=\"let val of value; index as i\">\n <input *ngIf=\"type === FieldType.Number || type === FieldType.Currency\"\n [ngModel]=\"val\" (ngModelChange)=\"onValueChange(i,$event)\"\n [readonly]=\"i+1 < value.length\" type=\"number\" [ngModelOptions]=\"{standalone:true}\" [autoFocus]=\"i === value.length - 1\"/>\n <input *ngIf=\"type !== FieldType.Number && type !== FieldType.Currency\"\n [ngModel]=\"val\" (ngModelChange)=\"onValueChange(i,$event)\"\n [readonly]=\"i+1 < value.length\" type=\"string\" [ngModelOptions]=\"{standalone:true}\"\n #input [autoFocus]=\"i === value.length - 1\" />\n <button [disabled]=\"value.length <= 1\" (click)=\"removeInput(i)\">-</button>\n <button *ngIf=\"i === value.length - 1\" [disabled]=\"val == undefined || val === ''\" (click)=\"addInput()\">+</button>\n </div>\n</div>\n", styles: [".inline{display:inline-block}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: AutoFocusDirective, selector: "[autoFocus]", inputs: ["autoFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
52
52
  }
53
53
  export { InFilterComponent };
54
54
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: InFilterComponent, decorators: [{
@@ -57,8 +57,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
57
57
  provide: NG_VALUE_ACCESSOR,
58
58
  useExisting: InFilterComponent,
59
59
  multi: true
60
- }], template: "<div class=inline>\n <div *ngFor=\"let val of value; index as i\">\n <input *ngIf=\"type === FieldType.Number || type === FieldType.Currency\"\n [ngModel]=\"val\" (ngModelChange)=\"onValueChange(i,$event)\"\n [readonly]=\"i+1 < value.length\" type=\"number\" [ngModelOptions]=\"{standalone:true}\" [autoFocus]=\"i === value.length - 1\"/>\n <input *ngIf=\"type !== FieldType.Number && type !== FieldType.Currency\"\n [ngModel]=\"val\" (ngModelChange)=\"onValueChange(i,$event)\"\n [readonly]=\"i+1 < value.length\" type=\"string\" [ngModelOptions]=\"{standalone:true}\"\n #input [autoFocus]=\"i === value.length - 1\" />\n <button [disabled]=\"value.length <= 1\" (click)=\"removeInput(i)\">-</button>\n <button *ngIf=\"i === value.length - 1\" [disabled]=\"val == undefined || val === ''\" (click)=\"addInput()\">+</button>\n </div>\n</div>\n", styles: [".inline{display:inline-block}\n"] }]
60
+ }], standalone: true, imports: [
61
+ NgFor, NgIf, FormsModule, AutoFocusDirective
62
+ ], template: "<div class=inline>\n <div *ngFor=\"let val of value; index as i\">\n <input *ngIf=\"type === FieldType.Number || type === FieldType.Currency\"\n [ngModel]=\"val\" (ngModelChange)=\"onValueChange(i,$event)\"\n [readonly]=\"i+1 < value.length\" type=\"number\" [ngModelOptions]=\"{standalone:true}\" [autoFocus]=\"i === value.length - 1\"/>\n <input *ngIf=\"type !== FieldType.Number && type !== FieldType.Currency\"\n [ngModel]=\"val\" (ngModelChange)=\"onValueChange(i,$event)\"\n [readonly]=\"i+1 < value.length\" type=\"string\" [ngModelOptions]=\"{standalone:true}\"\n #input [autoFocus]=\"i === value.length - 1\" />\n <button [disabled]=\"value.length <= 1\" (click)=\"removeInput(i)\">-</button>\n <button *ngIf=\"i === value.length - 1\" [disabled]=\"val == undefined || val === ''\" (click)=\"addInput()\">+</button>\n </div>\n</div>\n", styles: [".inline{display:inline-block}\n"] }]
61
63
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { type: [{
62
64
  type: Input
63
65
  }] } });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NvbXBvbmVudHMvaW4tZmlsdGVyL2luLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2luLWZpbHRlci9pbi1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7O0FBRXhELE1BV2EsaUJBQWlCO0lBSzVCLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBSjFDLGNBQVMsR0FBRyxTQUFTLENBQUM7UUFFdEIsVUFBSyxHQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFVM0IsYUFBUSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFLM0IsY0FBUyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQVpwQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELFVBQVUsQ0FBQyxHQUFVO1FBQ25CLElBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTTtZQUFFLEdBQUcsR0FBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUdELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsYUFBYSxDQUFDLENBQVEsRUFBQyxLQUFzQjtRQUMzQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDOzhHQXpDVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixrRUFOakIsQ0FBQztnQkFDVixPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsaUJBQWlCO2dCQUM5QixLQUFLLEVBQUUsSUFBSTthQUNaLENBQUMsMEJDZEosMDRCQWFBOztTREdhLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQVg3QixTQUFTOytCQUNFLGVBQWUsbUJBR1QsdUJBQXVCLENBQUMsTUFBTSxhQUNuQyxDQUFDOzRCQUNWLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsbUJBQW1COzRCQUM5QixLQUFLLEVBQUUsSUFBSTt5QkFDWixDQUFDO3dHQUlPLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZpbHRlckluZm8gfSBmcm9tICcuLi8uLi9jbGFzc2VzL2ZpbHRlci1pbmZvJztcclxuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWluLWZpbHRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2luLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW4tZmlsdGVyLmNvbXBvbmVudC5jc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IEluRmlsdGVyQ29tcG9uZW50LFxyXG4gICAgbXVsdGk6IHRydWVcclxuICB9XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEluRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEZpZWxkVHlwZSA9IEZpZWxkVHlwZTtcclxuICBASW5wdXQoKSB0eXBlISA6IEZpZWxkVHlwZTtcclxuICB2YWx1ZTogYW55W10gPSBbdW5kZWZpbmVkXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICB0aGlzLnZhbHVlID0gW3VuZGVmaW5lZF07XHJcbiAgfVxyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgaWYoIW9iaj8ubGVuZ3RoKSBvYmogID0gW3VuZGVmaW5lZF07XHJcbiAgICB0aGlzLnZhbHVlID0gb2JqO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgb25Ub3VjaGVkID0gKCkgPT4geyB9O1xyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBhZGRJbnB1dCgpe1xyXG4gICAgdGhpcy52YWx1ZSA9IFsuLi50aGlzLnZhbHVlLCB1bmRlZmluZWRdO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlSW5wdXQoaW5kZXg6IG51bWJlcil7XHJcbiAgICB0aGlzLnZhbHVlID0gWy4uLnRoaXMudmFsdWVdO1xyXG4gICAgdGhpcy52YWx1ZS5zcGxpY2UoaW5kZXgsMSk7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvblZhbHVlQ2hhbmdlKGk6bnVtYmVyLHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpe1xyXG4gICAgdGhpcy52YWx1ZSA9IFsuLi50aGlzLnZhbHVlXTtcclxuICAgIHRoaXMudmFsdWVbaV0gPSB2YWx1ZTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9aW5saW5lPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IHZhbCBvZiB2YWx1ZTsgaW5kZXggYXMgaVwiPlxuICAgICAgPGlucHV0ICpuZ0lmPVwidHlwZSA9PT0gRmllbGRUeXBlLk51bWJlciB8fCB0eXBlID09PSBGaWVsZFR5cGUuQ3VycmVuY3lcIlxuICAgICAgICBbbmdNb2RlbF09XCJ2YWxcIiAobmdNb2RlbENoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKGksJGV2ZW50KVwiXG4gICAgICAgIFtyZWFkb25seV09XCJpKzEgPCB2YWx1ZS5sZW5ndGhcIiB0eXBlPVwibnVtYmVyXCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOnRydWV9XCIgW2F1dG9Gb2N1c109XCJpID09PSB2YWx1ZS5sZW5ndGggLSAxXCIvPlxuICAgICAgPGlucHV0ICpuZ0lmPVwidHlwZSAhPT0gRmllbGRUeXBlLk51bWJlciAmJiB0eXBlICE9PSBGaWVsZFR5cGUuQ3VycmVuY3lcIlxuICAgICAgICBbbmdNb2RlbF09XCJ2YWxcIiAobmdNb2RlbENoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKGksJGV2ZW50KVwiXG4gICAgICAgIFtyZWFkb25seV09XCJpKzEgPCB2YWx1ZS5sZW5ndGhcIiB0eXBlPVwic3RyaW5nXCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOnRydWV9XCJcbiAgICAgICAgI2lucHV0IFthdXRvRm9jdXNdPVwiaSA9PT0gdmFsdWUubGVuZ3RoIC0gMVwiIC8+XG4gICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJ2YWx1ZS5sZW5ndGggPD0gMVwiIChjbGljayk9XCJyZW1vdmVJbnB1dChpKVwiPi08L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJpID09PSB2YWx1ZS5sZW5ndGggLSAxXCIgW2Rpc2FibGVkXT1cInZhbCA9PSB1bmRlZmluZWQgfHwgdmFsID09PSAnJ1wiIChjbGljayk9XCJhZGRJbnB1dCgpXCI+KzwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NvbXBvbmVudHMvaW4tZmlsdGVyL2luLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2luLWZpbHRlci9pbi1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQUV4RCxNQWVhLGlCQUFpQjtJQUs1QixZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUoxQyxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBRXRCLFVBQUssR0FBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBVTNCLGFBQVEsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBSzNCLGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFacEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFDRCxVQUFVLENBQUMsR0FBVTtRQUNuQixJQUFHLENBQUMsR0FBRyxFQUFFLE1BQU07WUFBRSxHQUFHLEdBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFHRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELGFBQWEsQ0FBQyxDQUFRLEVBQUMsS0FBc0I7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQzs4R0F6Q1UsaUJBQWlCO2tHQUFqQixpQkFBaUIsc0ZBVmpCLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLGlCQUFpQjtnQkFDOUIsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLDBCQ2ZKLDA0QkFhQSx5RkRLSSxLQUFLLG1IQUFFLElBQUksNEZBQUUsV0FBVyxpeEJBQUUsa0JBQWtCOztTQUduQyxpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFmN0IsU0FBUzsrQkFDRSxlQUFlLG1CQUdULHVCQUF1QixDQUFDLE1BQU0sYUFDbkMsQ0FBQzs0QkFDVixPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLG1CQUFtQjs0QkFDOUIsS0FBSyxFQUFFLElBQUk7eUJBQ1osQ0FBQyxjQUNVLElBQUksV0FDUDt3QkFDUCxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxrQkFBa0I7cUJBQzdDO3dHQUlRLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWYnO1xyXG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEF1dG9Gb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1pbi1maWx0ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbi1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2luLWZpbHRlci5jb21wb25lbnQuY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOkNoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBJbkZpbHRlckNvbXBvbmVudCxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0ZvciwgTmdJZiwgRm9ybXNNb2R1bGUsIEF1dG9Gb2N1c0RpcmVjdGl2ZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEluRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEZpZWxkVHlwZSA9IEZpZWxkVHlwZTtcclxuICBASW5wdXQoKSB0eXBlISA6IEZpZWxkVHlwZTtcclxuICB2YWx1ZTogYW55W10gPSBbdW5kZWZpbmVkXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICB0aGlzLnZhbHVlID0gW3VuZGVmaW5lZF07XHJcbiAgfVxyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgaWYoIW9iaj8ubGVuZ3RoKSBvYmogID0gW3VuZGVmaW5lZF07XHJcbiAgICB0aGlzLnZhbHVlID0gb2JqO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgb25Ub3VjaGVkID0gKCkgPT4geyB9O1xyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBhZGRJbnB1dCgpe1xyXG4gICAgdGhpcy52YWx1ZSA9IFsuLi50aGlzLnZhbHVlLCB1bmRlZmluZWRdO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlSW5wdXQoaW5kZXg6IG51bWJlcil7XHJcbiAgICB0aGlzLnZhbHVlID0gWy4uLnRoaXMudmFsdWVdO1xyXG4gICAgdGhpcy52YWx1ZS5zcGxpY2UoaW5kZXgsMSk7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvblZhbHVlQ2hhbmdlKGk6bnVtYmVyLHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpe1xyXG4gICAgdGhpcy52YWx1ZSA9IFsuLi50aGlzLnZhbHVlXTtcclxuICAgIHRoaXMudmFsdWVbaV0gPSB2YWx1ZTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9aW5saW5lPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IHZhbCBvZiB2YWx1ZTsgaW5kZXggYXMgaVwiPlxuICAgICAgPGlucHV0ICpuZ0lmPVwidHlwZSA9PT0gRmllbGRUeXBlLk51bWJlciB8fCB0eXBlID09PSBGaWVsZFR5cGUuQ3VycmVuY3lcIlxuICAgICAgICBbbmdNb2RlbF09XCJ2YWxcIiAobmdNb2RlbENoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKGksJGV2ZW50KVwiXG4gICAgICAgIFtyZWFkb25seV09XCJpKzEgPCB2YWx1ZS5sZW5ndGhcIiB0eXBlPVwibnVtYmVyXCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOnRydWV9XCIgW2F1dG9Gb2N1c109XCJpID09PSB2YWx1ZS5sZW5ndGggLSAxXCIvPlxuICAgICAgPGlucHV0ICpuZ0lmPVwidHlwZSAhPT0gRmllbGRUeXBlLk51bWJlciAmJiB0eXBlICE9PSBGaWVsZFR5cGUuQ3VycmVuY3lcIlxuICAgICAgICBbbmdNb2RlbF09XCJ2YWxcIiAobmdNb2RlbENoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKGksJGV2ZW50KVwiXG4gICAgICAgIFtyZWFkb25seV09XCJpKzEgPCB2YWx1ZS5sZW5ndGhcIiB0eXBlPVwic3RyaW5nXCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOnRydWV9XCJcbiAgICAgICAgI2lucHV0IFthdXRvRm9jdXNdPVwiaSA9PT0gdmFsdWUubGVuZ3RoIC0gMVwiIC8+XG4gICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJ2YWx1ZS5sZW5ndGggPD0gMVwiIChjbGljayk9XCJyZW1vdmVJbnB1dChpKVwiPi08L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJpID09PSB2YWx1ZS5sZW5ndGggLSAxXCIgW2Rpc2FibGVkXT1cInZhbCA9PSB1bmRlZmluZWQgfHwgdmFsID09PSAnJ1wiIChjbGljayk9XCJhZGRJbnB1dCgpXCI+KzwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,17 +1,20 @@
1
1
  import { Component, ViewChild } from "@angular/core";
2
+ import { LinkColumnComponent } from "../link-column.component";
3
+ import { ArrayColumnComponent } from "../array-column.component";
4
+ import { MatIconModule } from "@angular/material/icon";
5
+ import { FunctionPipe } from "../../../utilities";
2
6
  import * as i0 from "@angular/core";
3
7
  import * as i1 from "@angular/material/icon";
4
- import * as i2 from "../array-column.component";
5
- import * as i3 from "../link-column.component";
6
- import * as i4 from "../../../utilities/pipes/function.pipe";
7
8
  class InitializationComponent {
8
9
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: InitializationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: InitializationComponent, selector: "ng-component", viewQueries: [{ propertyName: "linkTemplate", first: true, predicate: ["link"], descendants: true, static: true }, { propertyName: "imageUrlTemplate", first: true, predicate: ["imageUrl"], descendants: true, static: true }, { propertyName: "currencyTemplate", first: true, predicate: ["currency"], descendants: true, static: true }, { propertyName: "arrayTemplate", first: true, predicate: ["array"], descendants: true, static: true }, { propertyName: "defaultTemplate", first: true, predicate: ["default"], descendants: true, static: true }, { propertyName: "defaultWithIcon", first: true, predicate: ["defaultWithIcon"], descendants: true, static: true }], ngImport: i0, template: "<ng-template #link let-element='element' let-metaData='metaData' let-transform='transform'>\r\n <tb-link-column [element]=\"element\" [metaData]=\"metaData\" [transform]=\"transform\"></tb-link-column>\r\n</ng-template>\r\n\r\n<ng-template #imageUrl let-element='element' let-metaData='metaData'>\r\n <span>\r\n <img src=\"{{element[metaData.key]}}\" height=\"75px\" width=\"75px\" />\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #array let-element='element' let-metaData='metaData'>\r\n <tb-array-column [array]='element[metaData.key]' [metaData]='metaData'></tb-array-column>\r\n</ng-template>\r\n\r\n<ng-template #default let-element='element' let-metaData='metaData' let-transform='transform' >\r\n <span>{{ transform | func : element }}</span>\r\n</ng-template>\r\n\r\n<ng-template #defaultWithIcon let-element='element' let-metaData='metaData' let-transform='transform' >\r\n <mat-icon>{{ transform | func : element }}</mat-icon>\r\n</ng-template>\r\n", dependencies: [{ kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2.ArrayColumnComponent, selector: "tb-array-column", inputs: ["array", "metaData"] }, { kind: "component", type: i3.LinkColumnComponent, selector: "tb-link-column", inputs: ["metaData", "element", "transform"] }, { kind: "pipe", type: i4.FunctionPipe, name: "func" }] }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: InitializationComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "linkTemplate", first: true, predicate: ["link"], descendants: true, static: true }, { propertyName: "imageUrlTemplate", first: true, predicate: ["imageUrl"], descendants: true, static: true }, { propertyName: "currencyTemplate", first: true, predicate: ["currency"], descendants: true, static: true }, { propertyName: "arrayTemplate", first: true, predicate: ["array"], descendants: true, static: true }, { propertyName: "defaultTemplate", first: true, predicate: ["default"], descendants: true, static: true }, { propertyName: "defaultWithIcon", first: true, predicate: ["defaultWithIcon"], descendants: true, static: true }], ngImport: i0, template: "<ng-template #link let-element='element' let-metaData='metaData' let-transform='transform'>\r\n <tb-link-column [element]=\"element\" [metaData]=\"metaData\" [transform]=\"transform\"></tb-link-column>\r\n</ng-template>\r\n\r\n<ng-template #imageUrl let-element='element' let-metaData='metaData'>\r\n <span>\r\n <img src=\"{{element[metaData.key]}}\" height=\"75px\" width=\"75px\" />\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #array let-element='element' let-metaData='metaData'>\r\n <tb-array-column [array]='element[metaData.key]' [metaData]='metaData'></tb-array-column>\r\n</ng-template>\r\n\r\n<ng-template #default let-element='element' let-metaData='metaData' let-transform='transform' >\r\n <span>{{ transform | func : element }}</span>\r\n</ng-template>\r\n\r\n<ng-template #defaultWithIcon let-element='element' let-metaData='metaData' let-transform='transform' >\r\n <mat-icon>{{ transform | func : element }}</mat-icon>\r\n</ng-template>\r\n", dependencies: [{ kind: "component", type: LinkColumnComponent, selector: "tb-link-column", inputs: ["metaData", "element", "transform"] }, { kind: "component", type: ArrayColumnComponent, selector: "tb-array-column", inputs: ["array", "metaData"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: FunctionPipe, name: "func" }] }); }
10
11
  }
11
12
  export { InitializationComponent };
12
13
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: InitializationComponent, decorators: [{
13
14
  type: Component,
14
- args: [{ template: "<ng-template #link let-element='element' let-metaData='metaData' let-transform='transform'>\r\n <tb-link-column [element]=\"element\" [metaData]=\"metaData\" [transform]=\"transform\"></tb-link-column>\r\n</ng-template>\r\n\r\n<ng-template #imageUrl let-element='element' let-metaData='metaData'>\r\n <span>\r\n <img src=\"{{element[metaData.key]}}\" height=\"75px\" width=\"75px\" />\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #array let-element='element' let-metaData='metaData'>\r\n <tb-array-column [array]='element[metaData.key]' [metaData]='metaData'></tb-array-column>\r\n</ng-template>\r\n\r\n<ng-template #default let-element='element' let-metaData='metaData' let-transform='transform' >\r\n <span>{{ transform | func : element }}</span>\r\n</ng-template>\r\n\r\n<ng-template #defaultWithIcon let-element='element' let-metaData='metaData' let-transform='transform' >\r\n <mat-icon>{{ transform | func : element }}</mat-icon>\r\n</ng-template>\r\n" }]
15
+ args: [{ standalone: true, imports: [
16
+ LinkColumnComponent, ArrayColumnComponent, MatIconModule, FunctionPipe
17
+ ], template: "<ng-template #link let-element='element' let-metaData='metaData' let-transform='transform'>\r\n <tb-link-column [element]=\"element\" [metaData]=\"metaData\" [transform]=\"transform\"></tb-link-column>\r\n</ng-template>\r\n\r\n<ng-template #imageUrl let-element='element' let-metaData='metaData'>\r\n <span>\r\n <img src=\"{{element[metaData.key]}}\" height=\"75px\" width=\"75px\" />\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #array let-element='element' let-metaData='metaData'>\r\n <tb-array-column [array]='element[metaData.key]' [metaData]='metaData'></tb-array-column>\r\n</ng-template>\r\n\r\n<ng-template #default let-element='element' let-metaData='metaData' let-transform='transform' >\r\n <span>{{ transform | func : element }}</span>\r\n</ng-template>\r\n\r\n<ng-template #defaultWithIcon let-element='element' let-metaData='metaData' let-transform='transform' >\r\n <mat-icon>{{ transform | func : element }}</mat-icon>\r\n</ng-template>\r\n" }]
15
18
  }], propDecorators: { linkTemplate: [{
16
19
  type: ViewChild,
17
20
  args: ['link', { static: true }]
@@ -31,4 +34,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
31
34
  type: ViewChild,
32
35
  args: ['defaultWithIcon', { static: true }]
33
36
  }] } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6YXRpb24tY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9pbml0aWFsaXphdGlvbi1jb21wb25lbnQvaW5pdGlhbGl6YXRpb24tY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9pbml0aWFsaXphdGlvbi1jb21wb25lbnQvaW5pdGlhbGl6YXRpb24tY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQUVsRSxNQUdhLHVCQUF1Qjs4R0FBdkIsdUJBQXVCO2tHQUF2Qix1QkFBdUIsdXNCQ0xwQywrOEJBcUJBOztTRGhCYSx1QkFBdUI7MkZBQXZCLHVCQUF1QjtrQkFIbkMsU0FBUzs7OEJBSTJCLFlBQVk7c0JBQTlDLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDTSxnQkFBZ0I7c0JBQXRELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDRSxnQkFBZ0I7c0JBQXRELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDRCxhQUFhO3NCQUFoRCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBQ0ksZUFBZTtzQkFBcEQsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUNVLGVBQWU7c0JBQTVELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbml0aWFsaXphdGlvbi1jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbml0aWFsaXphdGlvbkNvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZCgnbGluaycsIHtzdGF0aWM6IHRydWV9KSBsaW5rVGVtcGxhdGUhIDogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdpbWFnZVVybCcsIHtzdGF0aWM6IHRydWV9KSBpbWFnZVVybFRlbXBsYXRlISA6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnY3VycmVuY3knLCB7c3RhdGljOiB0cnVlfSkgY3VycmVuY3lUZW1wbGF0ZSEgOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ2FycmF5Jywge3N0YXRpYzogdHJ1ZX0pIGFycmF5VGVtcGxhdGUhIDogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdkZWZhdWx0Jywge3N0YXRpYzogdHJ1ZX0pIGRlZmF1bHRUZW1wbGF0ZSEgOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ2RlZmF1bHRXaXRoSWNvbicsIHtzdGF0aWM6IHRydWV9KSBkZWZhdWx0V2l0aEljb24hIDogVGVtcGxhdGVSZWY8YW55PjtcclxufVxyXG4iLCI8bmctdGVtcGxhdGUgI2xpbmsgIGxldC1lbGVtZW50PSdlbGVtZW50JyBsZXQtbWV0YURhdGE9J21ldGFEYXRhJyBsZXQtdHJhbnNmb3JtPSd0cmFuc2Zvcm0nPlxyXG4gIDx0Yi1saW5rLWNvbHVtbiBbZWxlbWVudF09XCJlbGVtZW50XCIgW21ldGFEYXRhXT1cIm1ldGFEYXRhXCIgW3RyYW5zZm9ybV09XCJ0cmFuc2Zvcm1cIj48L3RiLWxpbmstY29sdW1uPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNpbWFnZVVybCAgbGV0LWVsZW1lbnQ9J2VsZW1lbnQnIGxldC1tZXRhRGF0YT0nbWV0YURhdGEnPlxyXG4gIDxzcGFuPlxyXG4gICAgPGltZyBzcmM9XCJ7e2VsZW1lbnRbbWV0YURhdGEua2V5XX19XCIgaGVpZ2h0PVwiNzVweFwiIHdpZHRoPVwiNzVweFwiIC8+XHJcbiAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNhcnJheSBsZXQtZWxlbWVudD0nZWxlbWVudCcgbGV0LW1ldGFEYXRhPSdtZXRhRGF0YSc+XHJcbiAgPHRiLWFycmF5LWNvbHVtbiBbYXJyYXldPSdlbGVtZW50W21ldGFEYXRhLmtleV0nIFttZXRhRGF0YV09J21ldGFEYXRhJz48L3RiLWFycmF5LWNvbHVtbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdCBsZXQtZWxlbWVudD0nZWxlbWVudCcgbGV0LW1ldGFEYXRhPSdtZXRhRGF0YScgbGV0LXRyYW5zZm9ybT0ndHJhbnNmb3JtJyA+XHJcbiAgPHNwYW4+e3sgdHJhbnNmb3JtIHwgZnVuYyA6IGVsZW1lbnQgfX08L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRXaXRoSWNvbiBsZXQtZWxlbWVudD0nZWxlbWVudCcgbGV0LW1ldGFEYXRhPSdtZXRhRGF0YScgbGV0LXRyYW5zZm9ybT0ndHJhbnNmb3JtJyA+XHJcbiAgPG1hdC1pY29uPnt7IHRyYW5zZm9ybSB8IGZ1bmMgOiBlbGVtZW50IH19PC9tYXQtaWNvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6YXRpb24tY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9pbml0aWFsaXphdGlvbi1jb21wb25lbnQvaW5pdGlhbGl6YXRpb24tY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9pbml0aWFsaXphdGlvbi1jb21wb25lbnQvaW5pdGlhbGl6YXRpb24tY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBRWxELE1BT2EsdUJBQXVCOzhHQUF2Qix1QkFBdUI7a0dBQXZCLHVCQUF1QiwydEJDYnBDLCs4QkFxQkEsNENEWEksbUJBQW1CLHlHQUFFLG9CQUFvQiwwRkFBRSxhQUFhLCtLQUFFLFlBQVk7O1NBRzdELHVCQUF1QjsyRkFBdkIsdUJBQXVCO2tCQVBuQyxTQUFTO2lDQUVJLElBQUksV0FDUDt3QkFDUCxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsWUFBWTtxQkFDdkU7OEJBR2tDLFlBQVk7c0JBQTlDLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDTSxnQkFBZ0I7c0JBQXRELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDRSxnQkFBZ0I7c0JBQXRELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDRCxhQUFhO3NCQUFoRCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBQ0ksZUFBZTtzQkFBcEQsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUNVLGVBQWU7c0JBQTVELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTGlua0NvbHVtbkNvbXBvbmVudCB9IGZyb20gXCIuLi9saW5rLWNvbHVtbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQXJyYXlDb2x1bW5Db21wb25lbnQgfSBmcm9tIFwiLi4vYXJyYXktY29sdW1uLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuaW1wb3J0IHsgRnVuY3Rpb25QaXBlIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxpdGllc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICcuL2luaXRpYWxpemF0aW9uLWNvbXBvbmVudC5odG1sJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIExpbmtDb2x1bW5Db21wb25lbnQsIEFycmF5Q29sdW1uQ29tcG9uZW50LCBNYXRJY29uTW9kdWxlLCBGdW5jdGlvblBpcGVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbml0aWFsaXphdGlvbkNvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZCgnbGluaycsIHtzdGF0aWM6IHRydWV9KSBsaW5rVGVtcGxhdGUhIDogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdpbWFnZVVybCcsIHtzdGF0aWM6IHRydWV9KSBpbWFnZVVybFRlbXBsYXRlISA6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnY3VycmVuY3knLCB7c3RhdGljOiB0cnVlfSkgY3VycmVuY3lUZW1wbGF0ZSEgOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ2FycmF5Jywge3N0YXRpYzogdHJ1ZX0pIGFycmF5VGVtcGxhdGUhIDogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdkZWZhdWx0Jywge3N0YXRpYzogdHJ1ZX0pIGRlZmF1bHRUZW1wbGF0ZSEgOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ2RlZmF1bHRXaXRoSWNvbicsIHtzdGF0aWM6IHRydWV9KSBkZWZhdWx0V2l0aEljb24hIDogVGVtcGxhdGVSZWY8YW55PjtcclxufVxyXG4iLCI8bmctdGVtcGxhdGUgI2xpbmsgIGxldC1lbGVtZW50PSdlbGVtZW50JyBsZXQtbWV0YURhdGE9J21ldGFEYXRhJyBsZXQtdHJhbnNmb3JtPSd0cmFuc2Zvcm0nPlxyXG4gIDx0Yi1saW5rLWNvbHVtbiBbZWxlbWVudF09XCJlbGVtZW50XCIgW21ldGFEYXRhXT1cIm1ldGFEYXRhXCIgW3RyYW5zZm9ybV09XCJ0cmFuc2Zvcm1cIj48L3RiLWxpbmstY29sdW1uPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNpbWFnZVVybCAgbGV0LWVsZW1lbnQ9J2VsZW1lbnQnIGxldC1tZXRhRGF0YT0nbWV0YURhdGEnPlxyXG4gIDxzcGFuPlxyXG4gICAgPGltZyBzcmM9XCJ7e2VsZW1lbnRbbWV0YURhdGEua2V5XX19XCIgaGVpZ2h0PVwiNzVweFwiIHdpZHRoPVwiNzVweFwiIC8+XHJcbiAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNhcnJheSBsZXQtZWxlbWVudD0nZWxlbWVudCcgbGV0LW1ldGFEYXRhPSdtZXRhRGF0YSc+XHJcbiAgPHRiLWFycmF5LWNvbHVtbiBbYXJyYXldPSdlbGVtZW50W21ldGFEYXRhLmtleV0nIFttZXRhRGF0YV09J21ldGFEYXRhJz48L3RiLWFycmF5LWNvbHVtbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdCBsZXQtZWxlbWVudD0nZWxlbWVudCcgbGV0LW1ldGFEYXRhPSdtZXRhRGF0YScgbGV0LXRyYW5zZm9ybT0ndHJhbnNmb3JtJyA+XHJcbiAgPHNwYW4+e3sgdHJhbnNmb3JtIHwgZnVuYyA6IGVsZW1lbnQgfX08L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRXaXRoSWNvbiBsZXQtZWxlbWVudD0nZWxlbWVudCcgbGV0LW1ldGFEYXRhPSdtZXRhRGF0YScgbGV0LXRyYW5zZm9ybT0ndHJhbnNmb3JtJyA+XHJcbiAgPG1hdC1pY29uPnt7IHRyYW5zZm9ybSB8IGZ1bmMgOiBlbGVtZW50IH19PC9tYXQtaWNvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19